欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于在處理浮點(diǎn)值時(shí)實(shí)現(xiàn)功率節(jié)省技術(shù)的裝置與方法與流程

文檔序號(hào):11635641閱讀:210來源:國知局
用于在處理浮點(diǎn)值時(shí)實(shí)現(xiàn)功率節(jié)省技術(shù)的裝置與方法與流程

背景

本發(fā)明是在由能源部授予的合同號(hào)b600738下得到政府支持而作出的。政府享有本發(fā)明的某些權(quán)利。

本發(fā)明大體涉及計(jì)算機(jī)處理器的領(lǐng)域。更具體地,本發(fā)明涉及用于在處理浮點(diǎn)值時(shí)實(shí)現(xiàn)功率節(jié)省技術(shù)的方法與裝置。



背景技術(shù):

圖形處理器是當(dāng)前芯片上系統(tǒng)(soc)架構(gòu)中最大/功率關(guān)鍵塊之一。寄存器堆(rf)與寬的總線在圖形寄存器中消耗顯著的功率。在rf中,由于返回零(rz)的多米諾類型(domino-style)的讀取操作,讀取“1”的操作比讀取“0”的操作消耗顯著更多的功率。此外,由于非返回零(nrz)寫操作中的寫入位線的大電容,每個(gè)循環(huán)將不同的值寫入rf可導(dǎo)致最糟情況的功耗。類似地,每個(gè)循環(huán)在長、寬的總線上移動(dòng)不同數(shù)據(jù)消耗了大量的功率。

附圖說明

結(jié)合以下附圖,從以下具體實(shí)施方式中可獲得對(duì)本發(fā)明更好的理解,其中:

圖1是具有處理器的計(jì)算機(jī)系統(tǒng)的實(shí)施例的框圖,所述處理器具有一個(gè)或多個(gè)處理器核以及圖形處理器;

圖2是處理器的一個(gè)實(shí)施例的框圖,所述處理器具有一個(gè)或多個(gè)處理器核、集成存儲(chǔ)器控制器以及集成圖形處理器;

圖3是圖形處理器的一個(gè)實(shí)施例的框圖,所述圖形處理器可以是分立的圖形處理單元,或可以是與多個(gè)處理核集成的圖形處理器;

圖4是用于圖形處理器的圖形處理引擎的實(shí)施例的框圖;

圖5是圖形處理器的另一實(shí)施例的框圖;

圖6是包括處理元件的陣列的線程執(zhí)行邏輯的框圖;

圖7示出根據(jù)實(shí)施例的圖形處理器執(zhí)行單元指令格式;

圖8是圖形處理器的另一實(shí)施例的框圖,所述圖形處理器包括圖形流水線、媒體流水線、顯示引擎、線程執(zhí)行邏輯以及渲染輸出流水線。

圖9a是示出根據(jù)實(shí)施例的圖形處理器命令格式的框圖;

圖9b是示出根據(jù)實(shí)施例的圖形處理器命令序列的框圖;

圖10示出根據(jù)實(shí)施例的用于數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件架構(gòu);

圖11示出了可在其上實(shí)現(xiàn)本發(fā)明的各實(shí)施例的架構(gòu)的一個(gè)實(shí)施例;

圖12a-b示出了浮點(diǎn)值的某些部分的有關(guān)特性;

圖13a-c示出了在本發(fā)明的三個(gè)不同實(shí)施例中所采用的編碼/解碼邏輯;

圖14a-b示出了展示本發(fā)明的實(shí)施例減少前一值與當(dāng)前值之間的切換(toggle)的數(shù)量的示例;

圖15示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。

具體實(shí)施方式

在下面的描述中,為了進(jìn)行解釋,闡述了眾多具體細(xì)節(jié)以便提供對(duì)以下描述的本發(fā)明的多個(gè)實(shí)施例的透徹理解。然而,對(duì)本領(lǐng)域技術(shù)人員顯而易見的是,可以在沒有這些具體細(xì)節(jié)中的一些細(xì)節(jié)的情況下實(shí)施本發(fā)明的各實(shí)施例。在其他實(shí)例中,公知的結(jié)構(gòu)和設(shè)備以框圖形式示出,以避免使本發(fā)明的多個(gè)實(shí)施例的基本原理模糊。

示例性圖形處理器架構(gòu)和數(shù)據(jù)類型

系統(tǒng)概覽

圖1是根據(jù)實(shí)施例的數(shù)據(jù)處理系統(tǒng)100的框圖。數(shù)據(jù)處理系統(tǒng)100包括一個(gè)或多個(gè)處理器102以及一個(gè)或多個(gè)圖形處理器108,并且可以是單處理器臺(tái)式系統(tǒng)、多核工作站系統(tǒng)或具有大量處理器102或處理器核107的服務(wù)器系統(tǒng)。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)100是在移動(dòng)設(shè)備、手持式設(shè)備或嵌入式設(shè)備中使用的片上系統(tǒng)集成電路(soc)。

數(shù)據(jù)處理系統(tǒng)100的實(shí)施例可包括或可并入以下各項(xiàng)內(nèi):基于服務(wù)器的游戲平臺(tái)、游戲控制臺(tái)(包括游戲和媒體控制臺(tái)、移動(dòng)游戲控制臺(tái)、手持式游戲控制臺(tái)或在線游戲控制臺(tái))。在一些實(shí)施例中,數(shù)據(jù)處理系統(tǒng)100是移動(dòng)電話、智能電話、平板計(jì)算設(shè)備或移動(dòng)互聯(lián)網(wǎng)設(shè)備。數(shù)據(jù)處理系統(tǒng)100也可包括可穿戴設(shè)備,可與可穿戴設(shè)備耦合或可集成在可穿戴設(shè)備內(nèi),所述可穿戴設(shè)備諸如,智能手表可穿戴設(shè)備、智能眼鏡設(shè)備、增強(qiáng)現(xiàn)實(shí)設(shè)備或虛擬現(xiàn)實(shí)設(shè)備。在一些實(shí)施例中,數(shù)據(jù)處理系統(tǒng)100是電視機(jī)或機(jī)頂盒設(shè)備,所述電視機(jī)或機(jī)頂盒設(shè)備具有一個(gè)或多個(gè)處理器102以及由一個(gè)或多個(gè)圖形處理器108生成的圖形界面。

在一些實(shí)施例中,該一個(gè)或多個(gè)處理器102各自都包括一個(gè)或多個(gè)處理器核107,所述一個(gè)或多個(gè)處理器核107用于處理指令,所述指令當(dāng)被執(zhí)行時(shí),執(zhí)行用于系統(tǒng)和用戶軟件的操作。在一些實(shí)施例中,一個(gè)或多個(gè)處理器核107中的每一個(gè)都配置成處理特定的指令集109。在一些實(shí)施例中,指令集109可促進(jìn)復(fù)雜指令集計(jì)算(cisc)、精簡指令集計(jì)算(risc)或經(jīng)由超長指令字(vliw)的計(jì)算。多個(gè)處理器核107各自都可處理不同的指令集109,不同的指令集109可包括用于促進(jìn)對(duì)其他指令集的仿真的指令。處理器核107也可包括其他處理設(shè)備,諸如,數(shù)字信號(hào)處理器(dsp)。

在一些實(shí)施例中,處理器102包括高速緩存存儲(chǔ)器104。取決于架構(gòu),處理器102可具有單個(gè)內(nèi)部高速緩存或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,高速緩存存儲(chǔ)器在處理器102的各種組件之間共享。在一些實(shí)施例中,處理器102也使用可利用已知的高速緩存一致性技術(shù)而在處理器核107之間共享的外部高速緩存(例如,第-3級(jí)(l3)高速緩存或末級(jí)高速緩存(llc))(未示出)。寄存器堆106附加地包括在處理器102中,寄存器堆106可包括用于存儲(chǔ)不同類型數(shù)據(jù)的不同類型的寄存器(例如,整數(shù)寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器以及指令指針寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可專用于處理器102的設(shè)計(jì)。

在一些實(shí)施例中,處理器102耦合至處理器總線110以在處理器102與系統(tǒng)100中的其他組件之間傳輸數(shù)據(jù)信號(hào)。系統(tǒng)100使用示例性“中樞”系統(tǒng)架構(gòu),所述示例性“中樞”系統(tǒng)架構(gòu)包括存儲(chǔ)器控制器中樞116和輸入輸出(i/o)控制器中樞130。存儲(chǔ)器控制器中樞116促進(jìn)存儲(chǔ)器設(shè)備與系統(tǒng)100的其他組件之間的通信,而i/o控制器中樞(ich)130提供經(jīng)由本地i/o總線至i/o設(shè)備的連接。

存儲(chǔ)器設(shè)備120可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)設(shè)備、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)設(shè)備、閃存設(shè)備或具有適當(dāng)?shù)男阅芤猿洚?dāng)進(jìn)程存儲(chǔ)器的某個(gè)其他存儲(chǔ)器設(shè)備。存儲(chǔ)器120可存儲(chǔ)用于在處理器102執(zhí)行進(jìn)程時(shí)使用的數(shù)據(jù)122和指令121。存儲(chǔ)器控制器中樞116也與任選的外部圖形處理器112耦合,所述任選的外部圖形處理器112可與處理器102中的一個(gè)或多個(gè)圖形處理器108通信以執(zhí)行圖形和媒體操作。

在一些實(shí)施例中,ich130使外圍設(shè)備能夠經(jīng)由高速i/o總線而連接至存儲(chǔ)器120和處理器102。io外圍設(shè)備包括音頻控制器146、固件接口128、無線收發(fā)機(jī)126(例如,wi-fi、藍(lán)牙)、數(shù)據(jù)存儲(chǔ)設(shè)備124(例如,硬盤驅(qū)動(dòng)器、閃存等)以及用于將舊式(legacy)(例如,個(gè)人系統(tǒng)2(ps/2))設(shè)備耦合至系統(tǒng)的舊式i/o控制器。一個(gè)或多個(gè)通用串行總線(usb)控制器142連接輸入設(shè)備(諸如,鍵盤和鼠標(biāo)144的組合)。網(wǎng)絡(luò)控制器134也可耦合至ich130。在一些實(shí)施例中,高性能網(wǎng)絡(luò)控制器(未示出)耦合至處理器總線110。

圖2是處理器200的實(shí)施例的框圖,所述處理器具有一個(gè)或多個(gè)處理器核202a-n,集成存儲(chǔ)器控制器214以及集成圖形處理器208。圖2具有與本文中的任意其他附圖的元件相同的附圖標(biāo)記(或名稱)的那些元件可以與本文中其他地方描述的方式相似的任何方式進(jìn)行操作或運(yùn)行,但不限于此。處理器200可包括附加的核,所述附加的核多至由虛線框表示的附加核202n并包括由虛線框表示的附加核202n。核202a-n中的每一個(gè)都包括一個(gè)或多個(gè)內(nèi)部高速緩存單元204a-n。在一些實(shí)施例中,每一個(gè)核都具有對(duì)一個(gè)或多個(gè)共享高速緩存單元206的訪問權(quán)。

內(nèi)部高速緩存單元204a-n和共享高速緩存單元206表示處理器200內(nèi)的高速緩存存儲(chǔ)器層次結(jié)構(gòu)。高速緩存存儲(chǔ)器層次結(jié)構(gòu)可包括每一個(gè)核內(nèi)的至少一個(gè)層級(jí)的指令和數(shù)據(jù)高速緩存以及一個(gè)或多個(gè)層級(jí)的共享的中間級(jí)高速緩存(諸如,第2級(jí)(l2)、第3級(jí)(l3)、第4級(jí)(l4)或其他層級(jí)高速緩存),其中,在外部存儲(chǔ)器之前的最高層級(jí)的高速緩存被分類為llc。在一些實(shí)施例中,高速緩存一致性邏輯維持各種高速緩存單元206與204a-n之間的一致性。

在一些實(shí)施例中,處理器200也可包括一組一個(gè)或多個(gè)總線控制器單元126和系統(tǒng)代理210。一個(gè)或多個(gè)總線控制器單元管理一組外圍總線(諸如,一個(gè)或多個(gè)外圍組件互連總線(例如,pci、pciexpress))。系統(tǒng)代理210提供用于各種處理器組件的管理功能。在一些實(shí)施例中,系統(tǒng)代理210包括用于管理對(duì)各種外部存儲(chǔ)器設(shè)備(未示出)的訪問的一個(gè)或多個(gè)集成存儲(chǔ)器控制器214。

在一些實(shí)施例中,核202a-n中的一個(gè)或多個(gè)包括對(duì)同時(shí)的多線程操作的支持。在此類實(shí)施例中,系統(tǒng)代理210包括用于在多線程處理期間協(xié)調(diào)并操作核202a-n的組件。系統(tǒng)代理210可附加地包括功率控制單元(pcu),所述pcu包括用于調(diào)節(jié)核202a-n和圖形核208的功率狀態(tài)的邏輯和組件。

在一些實(shí)施例中,處理器200附加地包括用于執(zhí)行圖形處理操作的圖形處理器208。在一些實(shí)施例中,圖形處理器208與一組共享高速緩存單元206以及系統(tǒng)代理單元210耦合,系統(tǒng)代理單元210包括一個(gè)或多個(gè)集成存儲(chǔ)器控制器214。在一些實(shí)施例中,顯示控制器211與圖形處理器208耦合,以將圖形處理器輸出驅(qū)動(dòng)至一個(gè)或多個(gè)所耦合的設(shè)備。在一些實(shí)施例中,顯示控制器211可以是經(jīng)由至少一個(gè)互連而與圖形處理器耦合的分開的模塊,或者可以集成在圖形處理器208或系統(tǒng)代理210內(nèi)。

在一些實(shí)施例中,基于環(huán)的互連單元212用于耦合處理器200的內(nèi)部部件。然而,可使用替代的互連單元,諸如,點(diǎn)對(duì)點(diǎn)互連、交換互連或其他技術(shù)(包括本領(lǐng)域中公知的技術(shù))。在一些實(shí)施例中,圖形處理器208經(jīng)由i/o鏈路213來與環(huán)形互連212耦合。

示例性i/o鏈路213表示各種各樣的i/o互連中的至少一者,所述i/o互連包括促進(jìn)各種處理器組件與高性能嵌入式存儲(chǔ)器模塊218(諸如,edram模塊)之間的通信的封裝i/o互連。在一些實(shí)施例中,核202-n和圖形處理器208中的每一者都將嵌入式存儲(chǔ)器模塊218用作共享的末級(jí)高速緩存。

在一些實(shí)施例中,核202a-n是執(zhí)行相同的指令集架構(gòu)的同構(gòu)核。在另一實(shí)施例中,核202a-n就指令集架構(gòu)(isa)方面而言是異構(gòu)的,其中,核202a-n中的一個(gè)或多個(gè)執(zhí)行第一指令集,而其他核中的至少一個(gè)執(zhí)行第一指令集的子集或不同的指令集。

在一些實(shí)施例中,處理器200是一個(gè)或多個(gè)基板的部分,或使用各種工藝技術(shù)中的任一技術(shù)而實(shí)現(xiàn)在一個(gè)或多個(gè)基板上,所述工藝技術(shù)例如,互補(bǔ)式金屬-氧化物半導(dǎo)體(cmos)、雙極結(jié)型/互補(bǔ)式金屬-氧化物半導(dǎo)體(bicmos)或n型金屬-氧化物-半導(dǎo)體邏輯(nmos)。附加地,處理器200可實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上,或可實(shí)現(xiàn)為soc集成電路,所述soc集成電路除其他組件之外還具有所示組件。

圖3是圖形處理器300的框圖,所述圖形處理器300可以是分立的圖形處理單元,或可以是與多個(gè)處理核集成的圖形處理器。在一些實(shí)施例中,圖形處理器經(jīng)由到圖形處理器上的寄存器的存儲(chǔ)器映射的i/o接口進(jìn)行通信,并且與置入處理器存儲(chǔ)器中的命令進(jìn)行通信。在一些實(shí)施例中,圖形處理器300包括用于訪問存儲(chǔ)器的存儲(chǔ)器接口314。存儲(chǔ)器接口314可以是至以下各項(xiàng)的接口:本地存儲(chǔ)器、一個(gè)或多個(gè)內(nèi)部高速緩存、一個(gè)或多個(gè)共享外部高速緩存和/或系統(tǒng)存儲(chǔ)器。

在一些實(shí)施例中,圖形處理器300也包括用于將顯示輸出數(shù)據(jù)驅(qū)動(dòng)到顯示設(shè)備320的顯示控制器302。顯示控制器302包括用于顯示的一個(gè)或多個(gè)覆蓋平面(overlayplane)以及視頻或用戶接口元件的多個(gè)層的綜合的硬件。在一些實(shí)施例中,圖形處理器300包括用于將媒體編碼至一個(gè)或多個(gè)媒體編碼格式、從一個(gè)或多個(gè)媒體編碼格式解碼或在一個(gè)或多個(gè)媒體編碼格式之間轉(zhuǎn)碼的視頻編解碼引擎306,所述媒體編碼格式包括但不限于:移動(dòng)圖片專家組(mpeg)格式(諸如,mpeg-2)、高級(jí)視頻譯碼(avc)格式(諸如,h.264/mpeg-4avc)以及電影電視工程師協(xié)會(huì)(smpte)421m/vc-1,以及聯(lián)合圖像專家組(jpeg)格式(諸如,jpeg和運(yùn)動(dòng)jpeg(mjpeg)格式)。

在一些實(shí)施例中,圖形處理器300包括用于執(zhí)行二維(2d)光柵化(rasterizer)操作(包括例如位邊界塊轉(zhuǎn)移)的塊圖像轉(zhuǎn)移(blit)引擎304。然而,在一個(gè)實(shí)施例中,使用圖形處理引擎(gpe)310的一個(gè)或多個(gè)組件來執(zhí)行2d圖形操作。在一些實(shí)施例中,圖形處理引擎310是用于執(zhí)行圖形操作(包括三維(3d)圖形操作和媒體操作)的計(jì)算引擎。

在一些實(shí)施例中,gpe310包括用于執(zhí)行3d操作的3d流水線312,所述3d操作諸如,使用作用于3d基元形狀(例如,矩形、三角形等)的處理函數(shù)來渲染三維圖像和場景。3d流水線312包括可編程和固定功能元件,所述可編程和固定功能元件執(zhí)行元件內(nèi)的各種任務(wù)和/或繁衍(spawn)執(zhí)行線程至3d/媒體子系統(tǒng)315。當(dāng)3d流水線312可用于執(zhí)行媒體操作時(shí),gpe310的實(shí)施例也包括專門用于執(zhí)行媒體操作(諸如,視頻后處理和圖像增強(qiáng))的媒體流水線316。

在一些實(shí)施例中,媒體流水線316包括用于執(zhí)行一個(gè)或多個(gè)專業(yè)媒體操作的固定功能或可編程邏輯單元,所述專業(yè)媒體操作諸如,取代或代表視頻編解碼引擎306的視頻解碼加速、視頻去隔行(de-interlacing)以及視頻編碼加速。在一些實(shí)施例中,媒體流水線316附加地包括用于繁衍供在3d/媒體子系統(tǒng)315上執(zhí)行的線程的線程繁衍單元。所繁衍的線程在3d/媒體子系統(tǒng)315中所包括的一個(gè)或多個(gè)圖形執(zhí)行單元上執(zhí)行用于媒體操作的計(jì)算。

在一些實(shí)施例中,3d/媒體子系統(tǒng)315包括用于執(zhí)行由3d流水線312和媒體流水線316繁衍的線程的邏輯。在一些實(shí)施例中,流水線將線程執(zhí)行請(qǐng)求發(fā)送至3d/媒體子系統(tǒng)315,所述3d/媒體子系統(tǒng)315包括用于仲裁各種請(qǐng)求并將各種請(qǐng)求分派至可用的線程執(zhí)行資源的線程分派邏輯。執(zhí)行資源包括用于處理3d和媒體線程的圖形執(zhí)行單元的陣列。在一些實(shí)施例中,3d/媒體子系統(tǒng)315包括用于線程指令和數(shù)據(jù)的一個(gè)或多個(gè)內(nèi)部高速緩存。在一些實(shí)施例中,子系統(tǒng)也包括用于在多個(gè)線程之間共享數(shù)據(jù)并用于存儲(chǔ)輸出數(shù)據(jù)的共享存儲(chǔ)器,所述共享存儲(chǔ)器包括寄存器和可尋址存儲(chǔ)器。

3d/媒體處理

圖4是根據(jù)一些實(shí)施例的圖形處理器的圖形處理引擎410的框圖。在一些實(shí)施例中,gpe410是圖3中示出的gpe310的某個(gè)版本。圖4中具有與本文中的任意其他附圖的元件相同的附圖標(biāo)記(或名稱)的元件可以與本文中其他地方描述方式相似的任何方式進(jìn)行操作或運(yùn)行,但不限于此。

在一些實(shí)施例中,gpe410與命令流送器403耦合,所述命令流送器403將命令流提供至gpe3d和媒體流水線412、416。在一些實(shí)施例中,命令流送器403耦合至存儲(chǔ)器,所述存儲(chǔ)器可以是系統(tǒng)存儲(chǔ)器、或者內(nèi)部高速緩存存儲(chǔ)器和共享高速緩存存儲(chǔ)器中的一個(gè)或多個(gè)。在一些實(shí)施例中,命令流送器403從存儲(chǔ)器接收命令,并且將這些命令發(fā)送至3d流水線412和/或媒體流水線416。3d和媒體流水線通過以下方式來處理命令:通過經(jīng)由相應(yīng)流水線內(nèi)的邏輯來執(zhí)行操作;或通過將一個(gè)或多個(gè)執(zhí)行線程分派至執(zhí)行單元陣列414。在一些實(shí)施例中,執(zhí)行單元陣列414是可縮放的,使得此陣列包括基于gpe410的目標(biāo)功率和性能等級(jí)的可變數(shù)量的執(zhí)行單元。

在一些實(shí)施例中,采樣引擎430與存儲(chǔ)器(例如,高速緩存存儲(chǔ)器或系統(tǒng)存儲(chǔ)器)和執(zhí)行單元陣列414耦合。在一些實(shí)施例中,采樣引擎430提供用于執(zhí)行單元陣列414的存儲(chǔ)器訪問機(jī)制,所述存儲(chǔ)器訪問機(jī)制允許執(zhí)行陣列414從存儲(chǔ)器讀取圖形和媒體數(shù)據(jù)。在一些實(shí)施例中,采樣引擎430包括用于為媒體執(zhí)行專業(yè)圖像采樣操作的邏輯。

在一些實(shí)施例中,采樣引擎430中的專業(yè)媒體采樣邏輯包括去噪/去隔行模塊432、運(yùn)動(dòng)估計(jì)模塊434以及圖像縮放和過濾模塊436。在一些實(shí)施例中,去噪/去隔行模塊432包括用于對(duì)經(jīng)解碼的視頻數(shù)據(jù)執(zhí)行去噪或去隔行中的一者或多者的邏輯。去隔行邏輯將隔行的(interlaced)視頻內(nèi)容的交替場組合為單個(gè)視頻幀。去噪邏輯降低或去除來自視頻和圖像數(shù)據(jù)的數(shù)據(jù)噪聲。在一些實(shí)施例中,去噪邏輯和去隔行邏輯是運(yùn)動(dòng)自適應(yīng)的,并且基于在視頻數(shù)據(jù)中檢測到的運(yùn)動(dòng)量來使用空間或時(shí)間上的過濾。在一些實(shí)施例中,去噪/去隔行模塊432包括專用運(yùn)動(dòng)檢測邏輯(例如,在運(yùn)動(dòng)估計(jì)引擎434內(nèi))。

在一些實(shí)施例中,運(yùn)動(dòng)估計(jì)引擎434通過對(duì)視頻數(shù)據(jù)執(zhí)行視頻加速功能(諸如,運(yùn)動(dòng)向量估計(jì)和預(yù)測)來提供對(duì)視頻操作的硬件加速。運(yùn)動(dòng)估計(jì)引擎確定運(yùn)動(dòng)向量,所述運(yùn)動(dòng)向量描述圖像數(shù)據(jù)在相繼的視頻幀之間的變換。在一些實(shí)施例中,圖形處理器媒體編解碼器使用視頻運(yùn)動(dòng)估計(jì)引擎434以在宏塊層級(jí)上執(zhí)行對(duì)視頻的操作,所述在宏塊層級(jí)上對(duì)視頻的操作原本可能是太計(jì)算密集型的以不能利用通用處理器來執(zhí)行。在一些實(shí)施例中,運(yùn)動(dòng)估計(jì)引擎434一般可用于圖形處理器組件以輔助視頻解碼和處理功能,所述視頻解碼和處理功能對(duì)視頻數(shù)據(jù)內(nèi)的運(yùn)動(dòng)的方向和幅度是敏感的或自適應(yīng)于視頻數(shù)據(jù)內(nèi)的運(yùn)動(dòng)的方向或幅度。

在一些實(shí)施例中,圖像縮放和過濾模塊436執(zhí)行圖像處理操作以增強(qiáng)所生成的圖像和視頻的視覺質(zhì)量。在一些實(shí)施例中,縮放和過濾模塊436在將數(shù)據(jù)提供至執(zhí)行單元陣列414之前的采樣操作期間處理圖像和視頻數(shù)據(jù)。

在一些實(shí)施例中,gpe410包括數(shù)據(jù)端口444,所述數(shù)據(jù)端口444為圖形子系統(tǒng)提供訪問存儲(chǔ)器的附加機(jī)制。在一些實(shí)施例中,數(shù)據(jù)端口444促進(jìn)用于操作的存儲(chǔ)器訪問,所述操作包括渲染目標(biāo)寫入、恒定緩沖器讀取、抓取存儲(chǔ)器空間讀取/寫入以及媒體表面訪問。在一些實(shí)施例中,數(shù)據(jù)端口444包括用于對(duì)存儲(chǔ)器的訪問進(jìn)行高速緩存的高速緩存存儲(chǔ)器空間。高速緩存存儲(chǔ)器可以是單個(gè)數(shù)據(jù)高速緩存,或者可分離為用于經(jīng)由數(shù)據(jù)端口來訪問存儲(chǔ)器的多個(gè)子系統(tǒng)的多個(gè)高速緩存(例如,渲染緩沖器高速緩存、恒定緩沖器高速緩存,等等)。在一些實(shí)施例中,在執(zhí)行單元陣列414中的執(zhí)行單元上執(zhí)行的線程通過經(jīng)由數(shù)據(jù)分配互連交換消息來與數(shù)據(jù)端口通信,所述數(shù)據(jù)分配互連耦合gpe410的子系統(tǒng)中的每一個(gè)。

執(zhí)行單元

圖5是圖形處理器500的另一實(shí)施例的框圖。圖5中具有與本文中的任意其他附圖的元件相同的附圖標(biāo)記(或名稱)的元件可以與本文中其他地方描述的方式相似的任何方式進(jìn)行操作或運(yùn)行,但不限于此。

在一些實(shí)施例中,圖形處理器500包括環(huán)形互連502、流水線前端504、媒體引擎537和圖形核580a-n。在一些實(shí)施例中,環(huán)形互連502將圖形處理器耦合至其他處理單元(包括其他圖形處理器或一個(gè)或多個(gè)通用處理器核)。在一些實(shí)施例中,圖形處理器是集成在多核處理系統(tǒng)內(nèi)的許多處理器中的一個(gè)。

在一些實(shí)施例中,圖形處理器500經(jīng)由環(huán)形互連502接收批量的命令。傳入的命令由流水線前端504中的命令流送器503解釋。在一些實(shí)施例中,圖形處理器500包括用于經(jīng)由(多個(gè))圖形核580a-n來執(zhí)行3d幾何處理和媒體處理的可縮放執(zhí)行邏輯。對(duì)于3d幾何處理命令,命令流送器503將命令供應(yīng)至幾何流水線536。對(duì)于至少一些媒體處理命令,命令流送器503將命令供應(yīng)至視頻前端534,所述視頻前端534與媒體引擎537耦合。在一些實(shí)施例中,媒體引擎537包括用于視頻和圖像后處理的視頻質(zhì)量引擎(vqe)530以及用于提供硬件加速的媒體數(shù)據(jù)編碼和解碼的多格式編碼/解碼(mfx)533引擎。在一些實(shí)施例中,幾何流水線536和媒體引擎537各自都生成用于由至少一個(gè)圖形核580a提供的線程執(zhí)行資源的執(zhí)行線程。

在一些實(shí)施例中,圖形處理器500包括可縮放線程執(zhí)行資源,所述可縮放線程執(zhí)行單元特征為模塊化核580a-n(有時(shí)稱為核片(coreslice)),每一個(gè)模塊化核都具有多個(gè)子核550a-n、560a-n(有時(shí)稱為核子片(coresub-slice))。在一些實(shí)施例中,圖形處理器500可具有任何數(shù)量的圖形核580a至580n。在一些實(shí)施例中,圖形處理器500包括圖形核580a,所述圖形核580a至少具有第一子核550a和第二核子核560a。在其他實(shí)施例中,圖形處理器是具有單個(gè)子核(例如,550a)的低功率處理器。在一些實(shí)施例中,圖形處理器500包括多個(gè)圖形核580a-n,每一個(gè)圖形核都包括第一子核的集合550a-n以及第二子核的集合560a-n。第一子核的集合550a-n中的每一個(gè)子核都至少包括執(zhí)行單元552a-n和媒體/紋理采樣器554a-n的第一集合。第二子核的集合560a-n中的每一個(gè)子核都至少包括執(zhí)行單元562a-n和采樣器564a-n的第二集合。在一些實(shí)施例中,每一個(gè)子核550a-n、560a-n都共享一組共享資源570a-n。在一些實(shí)施例中,共享資源包括共享高速緩存存儲(chǔ)器和像素操作邏輯。其他共享資源也可包括在圖形處理器的各種實(shí)施例中。

圖6示出線程執(zhí)行邏輯600,所述線程執(zhí)行邏輯600包括在gpe的一些實(shí)施例中采用的處理元件的陣列。圖6中具有與本文中的任意其他附圖的元件相同的附圖標(biāo)記(或名稱)的元件可以與本文中其他地方描述方式相似的任何方式進(jìn)行操作或運(yùn)行,但不限于此。

在一些實(shí)施例中,線程執(zhí)行邏輯600包括像素著色器602、線程分派器604、指令高速緩存606、包括多個(gè)執(zhí)行單元608a-n的可縮放執(zhí)行單元陣列、采樣器610、數(shù)據(jù)高速緩存612和數(shù)據(jù)端口614。在一個(gè)實(shí)施例中,所包括的組件經(jīng)由互連結(jié)構(gòu)被互連,所述互連結(jié)構(gòu)鏈接至組件中的每一個(gè)組件。在一些實(shí)施例中,線程執(zhí)行邏輯600包括通過指令高速緩存606、數(shù)據(jù)端口614、采樣器610和執(zhí)行單元陣列608a-n中的一者或多者而至存儲(chǔ)器(諸如,系統(tǒng)存儲(chǔ)器或高速緩存存儲(chǔ)器)的一個(gè)或多個(gè)連接。在一些實(shí)施例中,每一個(gè)執(zhí)行單元(例如,608a)是能夠?yàn)槊恳粋€(gè)線程并行地執(zhí)行多個(gè)同時(shí)的線程并處理多個(gè)數(shù)據(jù)元素的單獨(dú)的向量處理器。在一些實(shí)施例中,執(zhí)行單元陣列608a-n包括任何數(shù)量的單獨(dú)執(zhí)行單元。

在一些實(shí)施例中,執(zhí)行單元陣列608a-n主要用于執(zhí)行“著色器”程序。在一些實(shí)施例中,陣列608a-n中的執(zhí)行單元執(zhí)行包括對(duì)許多標(biāo)準(zhǔn)的3d圖形著色器指令的原生支持的指令集,使得以最少的轉(zhuǎn)換來執(zhí)行來自圖形庫(例如,direct3d和opengl)的著色器程序。執(zhí)行單元支持頂點(diǎn)和幾何處理(例如,頂點(diǎn)程序、幾何程序、頂點(diǎn)著色器)、像素處理(例如,像素著色器、碎片著色器)和通用處理(例如,計(jì)算和媒體著色器)。

執(zhí)行單元陣列608a-n中的每一個(gè)執(zhí)行單元對(duì)數(shù)據(jù)元素的數(shù)組進(jìn)行操作。數(shù)據(jù)元素的數(shù)量是“執(zhí)行尺寸”或用于指令的通道數(shù)量。執(zhí)行通道是用于數(shù)據(jù)元素訪問、掩碼和指令內(nèi)的流控制的執(zhí)行的邏輯單元。通道的數(shù)量可獨(dú)立于用于特定的圖形處理器的物理算術(shù)邏輯單元(alu)或浮點(diǎn)單元(fpu)的數(shù)量。在一些實(shí)施例中,執(zhí)行單元608a-n支持整數(shù)和浮點(diǎn)數(shù)據(jù)類型。

執(zhí)行單元指令集包括單指令多數(shù)據(jù)(simd)指令。各種數(shù)據(jù)元素可作為緊縮數(shù)據(jù)類型被存儲(chǔ)在寄存器中,并且執(zhí)行單元將基于元素的數(shù)據(jù)尺寸來處理各種元素。例如,當(dāng)對(duì)256位寬的向量操作時(shí),向量的256個(gè)位被存儲(chǔ)在寄存器中,并且執(zhí)行單元將此向量操作為四個(gè)單獨(dú)的64位緊縮數(shù)據(jù)元素(四字(qw)尺寸的數(shù)據(jù)元素)、八個(gè)單獨(dú)的32位緊縮數(shù)據(jù)元素(雙字(dw)尺寸的數(shù)據(jù)元素)、十六個(gè)單獨(dú)的16位緊縮數(shù)據(jù)元素(字(w)尺寸的數(shù)據(jù)元素)、或三十二個(gè)單獨(dú)的8位數(shù)據(jù)元素(字節(jié)(b)尺寸的數(shù)據(jù)元素)。然而,不同的向量寬度和寄存器尺寸是可能的。

一個(gè)或多個(gè)內(nèi)部指令高速緩存(例如,606)被包括在線程執(zhí)行邏輯600中以對(duì)用于執(zhí)行單元的線程指令進(jìn)行高速緩存。在一些實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)高速緩存(例如,612)被包括以對(duì)線程執(zhí)行期間的線程數(shù)據(jù)進(jìn)行高速緩存。在一些實(shí)施例中,采樣器610被包括在內(nèi),以便為3d操作提供紋理采樣,并為媒體操作提供媒體采樣。在一些實(shí)施例中,采樣器610包括專用紋理或媒體采樣功能,用于在將所采樣的數(shù)據(jù)提供至執(zhí)行單元之前的采樣過程期間處理紋理或媒體數(shù)據(jù)。

在執(zhí)行期間,圖形和媒體流水線經(jīng)由線程繁衍和分派邏輯而將線程發(fā)起請(qǐng)求發(fā)送至線程執(zhí)行邏輯600。在一些實(shí)施例中,線程執(zhí)行邏輯600包括本地線程分派器604,所述本地線程分派器604仲裁來自圖形和媒體流水線的線程發(fā)起請(qǐng)求,并且在一個(gè)或多個(gè)執(zhí)行單元608a-n上實(shí)例化所請(qǐng)求的線程。例如,幾何流水線(例如,圖5的536)將頂點(diǎn)處理、曲面細(xì)分(tessellation)或集合處理線程分派至線程執(zhí)行邏輯600(圖6)。在一些實(shí)施例中,線程分派器604也可處理來自執(zhí)行著色器程序的運(yùn)行時(shí)線程繁衍請(qǐng)求。

一旦一組幾何對(duì)象已被處理并光柵化為像素?cái)?shù)據(jù),就調(diào)用像素著色器602,以便進(jìn)一步計(jì)算輸出信息并使結(jié)果被寫入輸出表面(例如,顏色緩沖器、深度緩沖器、模板緩沖器等)。在一些實(shí)施例中,像素著色器602計(jì)算將跨光柵化的對(duì)象而被插值的各種頂點(diǎn)屬性的值。在一些實(shí)施例中,像素著色器602隨后執(zhí)行api供應(yīng)的像素著色器程序。為了執(zhí)行像素著色器程序,像素著色器602經(jīng)由線程分派器604而將線程分派至執(zhí)行單元(例如,608a)。在一些實(shí)施例中,像素著色器602使用采樣器610中的紋理采樣邏輯來訪問存儲(chǔ)在存儲(chǔ)器中的紋理映射中的紋理數(shù)據(jù)。對(duì)紋理數(shù)據(jù)和輸入幾何數(shù)據(jù)的算術(shù)操作計(jì)算用于每一個(gè)幾何碎片的像素顏色數(shù)據(jù),或丟棄一個(gè)或多個(gè)像素而不進(jìn)行進(jìn)一步處理。

在一些實(shí)施例中,數(shù)據(jù)端口614提供存儲(chǔ)器訪問機(jī)制,以供線程執(zhí)行邏輯600將經(jīng)處理的數(shù)據(jù)輸出到存儲(chǔ)器,從而在圖形處理器輸出流水線上進(jìn)行處理。在一些實(shí)施例中,數(shù)據(jù)端口614包括或耦合至一個(gè)或多個(gè)高速緩存存儲(chǔ)器(例如,數(shù)據(jù)高速緩存612),所述高速緩存存儲(chǔ)器用于對(duì)用于經(jīng)由數(shù)據(jù)端口進(jìn)行的存儲(chǔ)器訪問的數(shù)據(jù)進(jìn)行高速緩存。

圖7是示出根據(jù)一些實(shí)施例的圖形處理器指令格式700的框圖。在一個(gè)或多個(gè)實(shí)施例中,圖形處理器執(zhí)行單元支持具有按照多種格式的指令的指令集。實(shí)線框示出一般被包括在執(zhí)行單元指令中的組件,而虛線框包括任選的且僅被包括在指令的子集中的組件。在一些實(shí)施例中,所述和所示的指令格式700是宏指令,體現(xiàn)在它們是供應(yīng)至執(zhí)行單元的指令,這與一旦指令經(jīng)處理就由指令解碼而得到的微操作相對(duì)照。

在一些實(shí)施例中,圖形處理器執(zhí)行單元原生地支持按照128位格式710的指令?;谒x擇的指令、指令選項(xiàng)或操作數(shù)的數(shù)量,64位壓縮的指令格式730可用于一些指令。原生的128位格式710提供對(duì)所有指令選項(xiàng)的訪問,而在64位格式730中,一些選項(xiàng)和操作是受限的。在64位格式730中可用的原生指令隨實(shí)施例不同而變化。在一些實(shí)施例中,使用索引字段713中的索引值集合來部分地壓縮指令。執(zhí)行單元硬件基于索引值來引用壓縮表的集合,并且使用壓縮表輸出來重構(gòu)按照128位格式710的原生指令。

對(duì)于每一種格式,指令操作碼712定義執(zhí)行單元將執(zhí)行的操作。執(zhí)行單元遍及(across)每一個(gè)操作數(shù)的多個(gè)數(shù)據(jù)元素地并行執(zhí)行每一個(gè)指令。例如,響應(yīng)于加法指令,執(zhí)行單元遍及表示紋理元素或圖片元素的每一個(gè)顏色通道地執(zhí)行同時(shí)的加法操作。默認(rèn)地,執(zhí)行單元跨操作數(shù)的所有數(shù)據(jù)通道執(zhí)行每一條指令。在一些實(shí)施例中,指令控制字段712允許對(duì)某些執(zhí)行選項(xiàng)(諸如,通道選擇(例如,預(yù)測)和數(shù)據(jù)通道順序(例如,拌和(swizzle)))的控制。對(duì)于128位指令710,執(zhí)行尺寸(exec-size)字段716限制將被并行地執(zhí)行的數(shù)據(jù)通道的數(shù)量。在一些實(shí)施例中,執(zhí)行尺寸字段716不可用于64位緊湊的指令格式730。

一些執(zhí)行單元指令具有多達(dá)三個(gè)操作數(shù),這三個(gè)操作數(shù)包括兩個(gè)源操作數(shù)scr0722、scr1722以及一個(gè)目的地718。在一些實(shí)施例中,執(zhí)行單元支持雙目的地指令,其中目的地中的一個(gè)是隱含的。數(shù)據(jù)操縱指令可具有第三源操作數(shù)(例如,src2724),其中,指令操作碼712確定源操作數(shù)的數(shù)量。指令的最后一個(gè)源操作數(shù)可以是利用指令傳遞的立即數(shù)(例如,硬編碼的)值。

在一些實(shí)施例中,128位指令格式710包括訪問/地址模式信息726,該訪問/地址模式信息726例如指定是使用直接寄存器尋址模式還是間接寄存器尋址模式。當(dāng)使用直接寄存器尋址模式時(shí),直接由指令710中的位提供一個(gè)或多個(gè)操作數(shù)的寄存器地址。當(dāng)使用間接寄存器尋址模式時(shí),可基于字段726來計(jì)算一個(gè)或多個(gè)操作數(shù)的寄存器地址,該字段726指定指令中的地址寄存器值模式和/或地址立即數(shù)字段。在一個(gè)實(shí)施例中,訪問/地址模式信息726可確定操作數(shù)模式以限定對(duì)指令的數(shù)據(jù)訪問對(duì)齊。例如,當(dāng)處于第一模式時(shí),指令710可對(duì)源操作數(shù)與目的地操作數(shù)使用字節(jié)對(duì)齊尋址,并當(dāng)中處于第二模式時(shí),指令710可對(duì)所有源操作數(shù)與目的地操作數(shù)使用16字節(jié)對(duì)齊訪問模式與1字節(jié)對(duì)齊尋址。訪問模式,其中訪問模式的字節(jié)對(duì)齊確定指令操作數(shù)的訪問對(duì)齊。

在一些實(shí)施例中,基于操作碼位字段對(duì)指令分組以簡化操作碼解碼740。對(duì)于8位操作碼,位4、5和6允許執(zhí)行單元確定操作碼的類型。示出的精確的操作碼分組是示例。在一些實(shí)施例中,移動(dòng)和邏輯操作碼組742包括數(shù)據(jù)移動(dòng)和邏輯指令(例如,移動(dòng)(mov),比較(cmp))。在一些實(shí)施例中,移動(dòng)和邏輯組742共享五個(gè)最高有效位(msb),其中,移動(dòng)(mov)指令是0000xxxxb(例如,0x0x)形式的,并且邏輯指令是0001xxxxb(例如,0x01)形式的。流控制指令組744(例如,call,跳轉(zhuǎn)(jmp))包括0010xxxxb(例如,0x20)形式的指令?;祀s的指令組746包括指令的拌和,包括0011xxxxb(e.g.,0x30)形式的同步指令(例如,wait,send)。并行的數(shù)學(xué)指令組748包括0100xxxxb(e.g.,0x40)形式的逐成分的算術(shù)指令(例如,add,乘法(mul))。并行的數(shù)學(xué)組748跨數(shù)據(jù)通道并行地執(zhí)行算術(shù)操作。向量數(shù)學(xué)組750包括0101xxxxb(e.g.,0x50)形式的算術(shù)指令(例如,dp4)。向量數(shù)學(xué)組對(duì)向量操作數(shù)執(zhí)行算術(shù)(諸如,點(diǎn)積計(jì)算)。

圖形流水線

圖8是圖形處理器800的另一實(shí)施例的框圖。圖8中具有與本文中的任意其他附圖的元件相同的附圖標(biāo)記(或名稱)的元件可以與本文中其他地方描述方式類似的任何方式進(jìn)行操作或運(yùn)行,但不限于此。

在一些實(shí)施例中,圖形處理器800包括圖形流水線820、媒體流水線830、顯示引擎840、線程執(zhí)行邏輯850、以及渲染輸出流水線870。在一些實(shí)施例中,圖形處理器800是包括一個(gè)或多個(gè)通用處理核的多核處理系統(tǒng)內(nèi)的圖形處理器。圖形處理器通過對(duì)一個(gè)或多個(gè)控制寄存器(未示出)的寄存器寫入或經(jīng)由通過環(huán)形互連802而發(fā)布至圖形處理器800的命令而受控。在一些實(shí)施例中,環(huán)形互連820將圖形處理器800耦合至其他處理組件(諸如,其他圖形處理器或通用處理器)。由命令流送器803解釋來自環(huán)形互連802的命令,所述命令流送器803將指令供應(yīng)至圖形流水線820或媒體流水線830的各個(gè)組件。

在一些實(shí)施例中,命令流送器803指導(dǎo)頂點(diǎn)取出器805的操作,所述頂點(diǎn)取出器805從存儲(chǔ)器讀取頂點(diǎn)數(shù)據(jù),并且執(zhí)行由命令流送器803提供的頂點(diǎn)處理命令。在一些實(shí)施例中,頂點(diǎn)取出器805將頂點(diǎn)數(shù)據(jù)提供給頂點(diǎn)著色器807,所述頂點(diǎn)著色器807對(duì)每一個(gè)頂點(diǎn)執(zhí)行坐標(biāo)空間變換和照明操作。在一些實(shí)施例中,頂點(diǎn)取出器805和頂點(diǎn)著色器807通過經(jīng)由線程分派器831將執(zhí)行線程分派至執(zhí)行單元852a、852b來執(zhí)行頂點(diǎn)處理指令。

在一些實(shí)施例中,執(zhí)行單元852a、852b是具有用于執(zhí)行圖形和媒體操作的指令集的向量處理器的陣列。在一些實(shí)施例中,執(zhí)行單元852a、852b具有附連的l1高速緩存851,所述附連的l1高速緩存專用于每一個(gè)陣列或在多個(gè)陣列之間被共享。高速緩存可配置為數(shù)據(jù)高速緩存、指令高速緩存、或經(jīng)分區(qū)以在不同的分區(qū)中包含數(shù)據(jù)和指令的單個(gè)高速緩存。

在一些實(shí)施例中,圖形流水線820包括曲面細(xì)分組件,用于執(zhí)行對(duì)3d對(duì)象的硬件加速的曲面細(xì)分。在一些實(shí)施例中,可編程殼體(hull)著色器811配置曲面細(xì)分操作。可編程域著色器817提供對(duì)曲面細(xì)分輸出的后端評(píng)估。曲面細(xì)分器813在殼體著色器811的指示下操作,并且包含專用邏輯,所述專用邏輯用于基于作為輸入而被提供至圖形流水線820的粗糙的幾何模型來生成精細(xì)的幾何對(duì)象的集合。在一些實(shí)施例中,如果不使用曲面細(xì)分,則可繞過曲面細(xì)分組件811、813、817。

在一些實(shí)施例中,可由幾何著色器819經(jīng)由分派至執(zhí)行單元852a、852b的一個(gè)或多個(gè)線程來處理完整的幾何對(duì)象,或完整的幾何對(duì)象可直接繼續(xù)到裁剪器829。在一些實(shí)施例中,幾何著色器對(duì)整個(gè)幾何對(duì)象操作,而不是像在圖形流水線的先前的級(jí)中那樣對(duì)頂點(diǎn)或頂點(diǎn)微片處理。如果禁用曲面細(xì)分,則幾何著色器819從頂點(diǎn)著色器807接收輸入。在一些實(shí)施例中,幾何著色器819是可由幾何著色器程序編程的,以便在禁用曲面細(xì)分單元時(shí)執(zhí)行幾何曲面細(xì)分。

在光柵化之前,裁剪器829處理頂點(diǎn)數(shù)據(jù)。裁剪器829可以是固定功能的裁剪器或具有裁剪與幾何著色器功能的可編程裁剪器。在一些實(shí)施例中,渲染輸出流水線870中的光柵化器873分派像素著色器以將幾何對(duì)象轉(zhuǎn)換為它們各自的像素表示。在一些實(shí)施例中,像素著色器邏輯被包括在線程執(zhí)行邏輯850中。在一些實(shí)施例中,應(yīng)用可繞過光柵化器873并經(jīng)由流出單元823訪問未光柵化的頂點(diǎn)數(shù)據(jù)。

圖形處理器800具有允許數(shù)據(jù)和消息在處理器的主要組件之間傳送的互連總線、互連結(jié)構(gòu)或某個(gè)其他互連機(jī)制。在一些實(shí)施例中,執(zhí)行單元852a、852b和相關(guān)聯(lián)的(多個(gè))高速緩存851、紋理和媒體采樣器854、以及紋理/采樣器高速緩存858經(jīng)由數(shù)據(jù)端口856互連,以執(zhí)行與處理器的渲染輸出流水線組件的存儲(chǔ)器訪問和通信。在一些實(shí)施例中,采樣器854、高速緩存851、858和執(zhí)行單元852a、852b各自都具有分開的存儲(chǔ)器訪問路徑。

在一些實(shí)施例中,渲染輸出流水線870包含將基于頂點(diǎn)的對(duì)象轉(zhuǎn)換為相關(guān)聯(lián)的基于像素的表示的光柵化器和深度測試組件873。在一些實(shí)施例中,光柵化邏輯包括用于執(zhí)行固定功能三角和直線光柵化的窗口器/掩碼器單元。在一些實(shí)施例中,相關(guān)聯(lián)的渲染和深度緩沖器高速緩存878、879也是可用的。像素操作組件877對(duì)數(shù)據(jù)執(zhí)行基于像素的操作,但是在一些實(shí)例中,與2d操作相關(guān)聯(lián)的像素操作(例如,利用混合(blend)進(jìn)行的位塊圖像轉(zhuǎn)移)由2d引擎841執(zhí)行,或在顯示時(shí)由顯示控制器843使用上層的顯示平面來替代。在一些實(shí)施例中,共享的l3高速緩存875可用于所有的圖形組件,從而允許在不使用主系統(tǒng)存儲(chǔ)器的情況下共享數(shù)據(jù)。

在一些實(shí)施例中,圖形處理器媒體流水線830包括媒體引擎837和視頻前端834。在一些實(shí)施例中,視頻前端834從命令流送器803接收流水線命令。然而,在一些實(shí)施例中,媒體流水線830包括分開的命令流送器。在一些實(shí)施例中,視頻前端834在將命令發(fā)送至媒體引擎837之前處理媒體命令。在一些實(shí)施例中,媒體引擎337包括線程繁衍功能,以便繁衍用于經(jīng)由線程分派器831而分派至線程執(zhí)行邏輯850的線程。

在一些實(shí)施例中,圖形處理器800包括顯示引擎840。在一些實(shí)施例中,顯示引擎840在處理器800外部,并且經(jīng)由環(huán)形互連802或某個(gè)其他互連總線或結(jié)構(gòu)而與圖形處理器耦合。在一些實(shí)施例中,顯示引擎840包括2d引擎841和顯示控制器843。在一些實(shí)施例中,顯示引擎840包含能夠獨(dú)立于3d流水線操作的專用邏輯。在一些實(shí)施例中,顯示控制器843與顯示設(shè)備(未示出)耦合,所述顯示設(shè)備可以是如在膝上型計(jì)算機(jī)中的系統(tǒng)集成的顯示設(shè)備或經(jīng)由顯示設(shè)備連接器而附連的外部顯示設(shè)備。

在一些實(shí)施例中,圖形流水線820和媒體流水線830可配置以基于多個(gè)圖形和媒體編程接口來執(zhí)行操作,并且不專用于任何一個(gè)應(yīng)用編程接口(api)。在一些實(shí)施例中,用于圖形處理器的驅(qū)動(dòng)器軟件將專用于特定圖形或媒體庫的api調(diào)用轉(zhuǎn)化為可由圖形處理器處理的命令。在一些實(shí)施例中,為來自khronosgroup的開放圖形庫(opengl)和開放計(jì)算語言(opencl)、來自微軟公司的direct3d庫提供支持,或者可為opengl和d3d兩者提供支持。也可為開放源計(jì)算機(jī)視覺庫(opencv)提供支持。如果可完成從未來api的流水線至圖形處理器的流水線的映射,則也將支持兼容3d流水線的未來api。

圖形流水線編程

圖9a是示出根據(jù)一些實(shí)施例的圖形處理器命令格式900的框圖;圖9b是示出根據(jù)實(shí)施例的圖形處理器命令序列910的框圖。圖9a中的實(shí)線框示出一般被包括在圖形命令中的組件,而虛線包括任選的且僅被包括在圖形命令的子集中的組件。圖9a的示例性圖形處理器命令格式900包括用于標(biāo)識(shí)該命令的目標(biāo)客戶的數(shù)據(jù)字段902、命令操作碼(操作碼)904以及用于命令的相關(guān)數(shù)據(jù)906。子操作碼905和命令尺寸908也包括在一些命令中。

在一些實(shí)施例中,客戶機(jī)902指定圖形設(shè)備的處理命令數(shù)據(jù)的客戶機(jī)單元。在一些實(shí)施例中,圖形處理器命令解析器檢查每一個(gè)命令的客戶機(jī)字段以調(diào)整對(duì)命令的未來處理,并且將命令數(shù)據(jù)路由至適當(dāng)?shù)目蛻魴C(jī)單元。在一些實(shí)施例中,圖形處理器客戶機(jī)單元包括存儲(chǔ)器接口單元、渲染單元、2d單元、3d單元和媒體單元。每一個(gè)客戶機(jī)單元都具有處理命令的對(duì)應(yīng)的處理流水線。一旦由客戶機(jī)單元接收到命令,此客戶機(jī)單元就讀取操作碼904以及子操作碼905(如果存在),以便確定將執(zhí)行的操作??蛻魡卧褂脭?shù)據(jù)字段906中的信息來執(zhí)行命令。對(duì)于一些命令,預(yù)期有顯式的命令尺寸908來指定命令的尺寸。在一些實(shí)施例中,命令解析器基于命令操作碼自動(dòng)地確定命令中的至少一些命令的尺寸。在一些實(shí)施例中,命令經(jīng)由雙字的倍數(shù)而對(duì)齊。

圖9b中的流程圖示出示例性命令序列910。在一些實(shí)施例中,以圖形處理器的實(shí)施例為特征的數(shù)據(jù)處理系統(tǒng)的軟件或固件使用所示的命令序列的某個(gè)版本來建立、執(zhí)行并終止圖形操作的集合。僅出于示例的目示出并描述采樣命令序列,因?yàn)楦鲗?shí)施例不限于這些特定命令或此命令序列。此外,命令能以命令序列中的批量命令被發(fā)布,使得圖形處理器將以至少部分地并發(fā)來處理命令序列。

在一些實(shí)施例中,取樣命令序列910能以流水線轉(zhuǎn)儲(chǔ)清除(flush)命令912開始,以使任何活動(dòng)的流水線完成用于流水線的當(dāng)前待定的命令。在一些實(shí)施例中,3d流水線922和媒體流水線924不并發(fā)地操作。執(zhí)行流水線轉(zhuǎn)儲(chǔ)清除以使活動(dòng)的圖形流水線完成任何待定的命令。響應(yīng)于流水線轉(zhuǎn)儲(chǔ)清除,用于圖形處理器的命令解析器將暫停命令處理,直到活動(dòng)的繪制引擎完成待定的操作且相關(guān)讀取高速緩存被無效為止。任選地,渲染高速緩存中被標(biāo)記為“臟”(dirty)的任何數(shù)據(jù)可轉(zhuǎn)儲(chǔ)清除至存儲(chǔ)器在一些實(shí)施例中,流水線轉(zhuǎn)儲(chǔ)清除命令912可用于流水線同步,或可在將圖形處理器置于低功率狀態(tài)之前使用。

在一些實(shí)施例中,當(dāng)命令序列要求圖形處理器在多個(gè)流水線之間顯式地切換時(shí),使用流水線選擇命令913。在一些實(shí)施例中,除非上下文將為兩個(gè)流水線發(fā)布命令,否則在發(fā)布流水線命令之前,在執(zhí)行上下文內(nèi),流水線選擇命令913僅需要一次。在一些實(shí)施例中,緊接著經(jīng)由流水線選擇命令913進(jìn)行的流水線切換之前,需要流水線轉(zhuǎn)儲(chǔ)清除命令912。

在一些實(shí)施例中,流水線控制命令914配置用于操作的圖形流水線,并且用于對(duì)3d流水線922和媒體流水線924編程。在一些實(shí)施例中,流水線控制命令914為活動(dòng)的流水線配置流水線狀態(tài)。在一個(gè)實(shí)施例中,流水線控制命令914用于流水線同步,并且用于在處理批量命令之前,清除來自活動(dòng)的流水線內(nèi)的一個(gè)或多個(gè)高速緩存存儲(chǔ)器的數(shù)據(jù)。

在一些實(shí)施例中,返回緩沖器狀態(tài)命令916用于配置供相應(yīng)的流水線用于寫入數(shù)據(jù)的返回緩沖器的集合。一些流水線操作需要對(duì)一個(gè)或多個(gè)返回緩沖器的分配、選擇或配置,在處理期間,操作將中間數(shù)據(jù)寫入到所述一個(gè)或多個(gè)返回緩沖器中。在一些實(shí)施例中,圖形處理器也使用一個(gè)或多個(gè)返回緩沖器以存儲(chǔ)輸出數(shù)據(jù)并執(zhí)行跨線程通信。在一些實(shí)施例中,返回緩沖器狀態(tài)916包括選擇用于流水線操作集合的返回緩沖器的尺寸和數(shù)量。

命令序列中的其余命令基于用于操作的活動(dòng)的流水線而有所不同?;诹魉€確定920,命令序列被定制至以3d流水線狀態(tài)930開始的3d流水線922或以媒體流水線狀態(tài)940開始的媒體流水線924。

用于3d流水線狀態(tài)930的命令包括用于以下狀態(tài)的3d狀態(tài)設(shè)置命令:頂點(diǎn)緩沖器狀態(tài)、頂點(diǎn)元素狀態(tài)、恒定顏色狀態(tài)、深度緩沖器狀態(tài)以及在處理3d基元命令之前將配置的其他狀態(tài)變量。至少部分地基于使用中的特定的3dapi來確定這些命令的值。在一些實(shí)施例中,3d流水線狀態(tài)930命令也能夠在如果不使用某些流水線元件時(shí)選擇性地禁用或繞過那些元件。

在一些實(shí)施例中,3d基元932命令用于提交將由3d流水線處理的3d基元。經(jīng)由3d基元932命令而被傳遞至圖形處理器的命令和相關(guān)聯(lián)的參數(shù)被轉(zhuǎn)發(fā)至圖形流水線中的頂點(diǎn)取出函數(shù)。頂點(diǎn)取出函數(shù)使用3d基元932命令數(shù)據(jù)來生成頂點(diǎn)數(shù)據(jù)結(jié)構(gòu)。頂點(diǎn)數(shù)據(jù)結(jié)構(gòu)被存儲(chǔ)在一個(gè)或多個(gè)返回緩沖器中。在一些實(shí)施例中,3d基元932命令用于經(jīng)由頂點(diǎn)著色器對(duì)3d基元執(zhí)行頂點(diǎn)操作。為了處理頂點(diǎn)著色器,3d流水線922將著色器執(zhí)行線程分派至圖形處理器執(zhí)行單元。

在一些實(shí)施例中,3d流水線922經(jīng)由執(zhí)行934命令或事件來觸發(fā)。在一些實(shí)施例中,寄存器寫入觸發(fā)命令執(zhí)行。在一些實(shí)施例中,經(jīng)由命令序列中的“go”(“走”)或“kick(“踢除”)命令來觸發(fā)執(zhí)行。在一個(gè)實(shí)施例中,使用流水線同步命令以通過圖形流水線來轉(zhuǎn)儲(chǔ)清除命令序列來觸發(fā)命令執(zhí)行。3d流水線將為3d基元執(zhí)行幾何處理。一旦操作完成,得到的幾何對(duì)象被光柵化,并且像素引擎對(duì)得到的像素上色。用于控制像素著色和像素后端操作的附加命令也可被包括以用于那些操作。

在一些實(shí)施例中,當(dāng)執(zhí)行媒體操作時(shí),采樣命令序列910跟隨媒體流水線924路徑。一般而言,用于媒體流水線924的編程的特定使用和方式取決于將執(zhí)行的媒體或計(jì)算操作。在媒體解碼期間,特定的媒體解碼操作可卸載至媒體流水線。在一些實(shí)施例中,也可繞過媒體流水線,并且可使用由一個(gè)或多個(gè)通用處理核提供的資源完全地或部分地執(zhí)行媒體解碼。在一個(gè)實(shí)施例中,媒體流水線也包括用于通用圖形處理器單元(gpgpu)操作的元件,其中,圖形處理器用于使用與圖形基元的渲染不是顯式相關(guān)的計(jì)算著色器程序來執(zhí)行simd向量操作。

在一些實(shí)施例中,以與3d流水線922類似的方式來配置媒體流水線924。媒體流水線狀態(tài)命令940的集合被分派或置入到命令序列中并在媒體對(duì)象命令942之前。在一些實(shí)施例中,媒體流水線狀態(tài)命令940包括用于配置將用于處理媒體對(duì)象的媒體流水線元件的數(shù)據(jù)。這包括用于配置媒體流水線內(nèi)的視頻解碼和視頻編碼邏輯的數(shù)據(jù),諸如,編碼或解碼格式。在一些實(shí)施例中,媒體流水線狀態(tài)命令940也支持使用指向包含批量狀態(tài)設(shè)置的“間接”狀態(tài)元素的一個(gè)或多個(gè)指針。

在一些實(shí)施例中,媒體對(duì)象命令942提供指向用于由媒體流水線處理的媒體對(duì)象的指針。媒體對(duì)象包括包含待處理的視頻數(shù)據(jù)的存儲(chǔ)器緩沖器。在一些實(shí)施例中,在發(fā)布媒體對(duì)象命令942之前,所有媒體流水線狀態(tài)都必須是有效的。一旦流水線狀態(tài)經(jīng)配置,并且媒體對(duì)象命令942經(jīng)排隊(duì)列,媒體流水線924就經(jīng)由執(zhí)行944命令或等效的執(zhí)行事件(例如,寄存器寫入)來觸發(fā)。隨后,可通過由3d流水線922或媒體流水線924提供的操作對(duì)來自媒體流水線924的輸出進(jìn)行后處理。在一些實(shí)施例中,以與媒體操作類似的方式來配置和執(zhí)行g(shù)pgpu操作。

圖形軟件架構(gòu)

圖10示出根據(jù)一些實(shí)施例的用于數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件架構(gòu)1000。在一些實(shí)施例中,軟件架構(gòu)包括3d圖形應(yīng)用1010、操作系統(tǒng)1020以及至少一個(gè)處理器1030。在一些實(shí)施例中,處理器1030包括圖形處理器1032以及一個(gè)或多個(gè)通用處理器核1034。圖形應(yīng)用1010和操作系統(tǒng)1020各自都在數(shù)據(jù)處理系統(tǒng)的系統(tǒng)存儲(chǔ)器1050中執(zhí)行。

在一些實(shí)施例中,3d圖形應(yīng)用1010包含一個(gè)或多個(gè)著色器程序,所述著色器程序包括著色器指令1012。著色器語言指令可以是高級(jí)著色器語言(諸如,高級(jí)著色器語言(hlsl)或opengl著色器語言(glsl))中的。應(yīng)用也包括適用于由通用處理器核1034執(zhí)行的機(jī)器語言中的可執(zhí)行指令1014。應(yīng)用也包括由頂點(diǎn)數(shù)據(jù)定義的圖形對(duì)象1016。

在一些實(shí)施例中,操作系統(tǒng)1020是來自微軟公司的操作系統(tǒng)、專屬的類unix操作系統(tǒng)、或使用linux內(nèi)核的變體的開放源類unix操作系統(tǒng)。當(dāng)direct3dapi在使用中時(shí),操作系統(tǒng)1020使用前端著色器編譯器1024以將hlsl中的任何著色器指令1012編譯為低級(jí)著色器語言。編譯可以是即時(shí)(just-in-time)(jit)編譯,或應(yīng)用可執(zhí)行著色器預(yù)編譯。在一些實(shí)施例中,在3d圖形應(yīng)用1010的編譯期間,高級(jí)著色器被編譯為低級(jí)著色器。

在一些實(shí)施例中,用戶模式圖形驅(qū)動(dòng)器1026包含后端著色器編譯器1027以將著色器指令1012編譯為硬件專用表示。當(dāng)openglapi在使用中時(shí),glsl高級(jí)語言中的著色器指令1012被傳遞至用戶模式圖形驅(qū)動(dòng)器1026以進(jìn)行編譯。在一些實(shí)施例中,用戶模式圖形驅(qū)動(dòng)器1026使用操作系統(tǒng)內(nèi)核模式函數(shù)1028來與內(nèi)核模式圖形驅(qū)動(dòng)器1029通信。在一些實(shí)施例中,內(nèi)核模式圖形驅(qū)動(dòng)器1029與圖形處理器1032通信以分派命令和指令。

用于在處理浮點(diǎn)值時(shí)實(shí)現(xiàn)功率節(jié)省技術(shù)的的方法與裝置

本文中所描述的本發(fā)明的各實(shí)施例包括用于寄存器堆(rf)和寬總線的低功率操作的技術(shù)。在一個(gè)實(shí)施例中,通過采用對(duì)返回零(rz)操作的“1”減少以及對(duì)非返回零(nrz)操作的切換減少來實(shí)現(xiàn)低功率操作。通過利用圖形應(yīng)用特定的數(shù)據(jù)特性,所提出的技術(shù)能夠以可忽略的硬件開銷(overhead)對(duì)rf實(shí)現(xiàn)10-20%且對(duì)寬總線實(shí)現(xiàn)5-10%的相當(dāng)大的功率節(jié)省。

在圖形工作負(fù)荷中,大多數(shù)值在紅綠藍(lán)α(rgba)空間中,其中每個(gè)值被標(biāo)準(zhǔn)化成從0到1范圍的的32位單精度浮點(diǎn)值。在ieee75432位浮點(diǎn)格式中,指數(shù)具有偏移127。這導(dǎo)致圖形工作負(fù)荷中使用的值的兩個(gè)統(tǒng)計(jì)特性。首先,32位值中的位25到位29處的五個(gè)指數(shù)位是高度相關(guān)的。如果那五個(gè)位(位25到位29)中的任一單個(gè)位是一,則很有可能五個(gè)位全都是1。其次,五個(gè)位全都是1的可能性非常高。通過利用這兩個(gè)特性,所提出的技術(shù)將位數(shù)據(jù)極性以及數(shù)據(jù)轉(zhuǎn)換可能性偏斜至使得硬件能夠執(zhí)行低功率操作的方向。在某些實(shí)現(xiàn)中,總線、與存儲(chǔ)器塊、0與1的操作、以及從0->1和1->0的不同切換可對(duì)不同的情況顯示偏斜的功率/能量消耗。使用本文中所描述的技術(shù)可降低系統(tǒng)的操作功率。

注意到,當(dāng)本發(fā)明的各實(shí)施例如上所述以32位值進(jìn)行操作時(shí),本公開的基本原理可應(yīng)用于其他類型的值,包括但不限于,16位半精度浮點(diǎn)數(shù)的組、或64位雙精度浮點(diǎn)數(shù)的組。

如圖11中所示,其中可實(shí)現(xiàn)本發(fā)明的各實(shí)施例的架構(gòu)包括圖形處理單元1112,該圖形處理單元具有執(zhí)行邏輯1130,該執(zhí)行邏輯用于執(zhí)行需要浮點(diǎn)操作的線程1110,該需要浮點(diǎn)操作的線程1110經(jīng)由線程分派單元1120被分派至執(zhí)行邏輯1130。雖然為了簡單起見,在圖11中示出執(zhí)行邏輯1130的單個(gè)實(shí)例,但是應(yīng)當(dāng)理解,gpu1112可包括執(zhí)行邏輯1130的多個(gè)實(shí)例,以用于并發(fā)地執(zhí)行來自多個(gè)線程的程序代碼(例如,圖6中所示的gpu600包括多個(gè)執(zhí)行單元608a-n)。然而,本發(fā)明的基本原理不限于任何特定的圖形處理器架構(gòu)。

圖11中的實(shí)施例中的浮點(diǎn)值被存儲(chǔ)在一組寄存器1140中,該一組寄存器可以是通用寄存器堆(grf)。在一個(gè)實(shí)施例中,多個(gè)浮點(diǎn)值可被緊縮到寄存器堆的每個(gè)寄存器內(nèi)。在圖11中所示的特定實(shí)施例中,八個(gè)浮點(diǎn)值(fpv)1100-1107被緊縮到每個(gè)寄存器內(nèi)。作為示例,每個(gè)通用寄存器可以是256位寬,且每個(gè)浮點(diǎn)值可以是32位、單精度浮點(diǎn)值。當(dāng)然,本發(fā)明的基本原理不限于任何特定的寄存器大小或浮點(diǎn)格式。因此,雖然該詳細(xì)描述的剩余部分將采取32位的浮點(diǎn)格式,但是本發(fā)明的基本原理可被延伸至其他格式。

如圖11中所示,在一個(gè)實(shí)施例中,當(dāng)將浮點(diǎn)值寫入寄存器堆1140和從寄存器堆1140讀取浮點(diǎn)值時(shí),執(zhí)行邏輯1130分別利用編碼/解碼邏輯1135來實(shí)現(xiàn)本文中所描述的功率減少技術(shù)。雖然在圖11中將編碼/解碼邏輯1135示作分開的實(shí)體,但是其可被直接集成在執(zhí)行邏輯1130和/或寄存器堆1140內(nèi),同時(shí)仍然符合本發(fā)明的基本原理。

圖12a示出32位單精度浮點(diǎn)格式1200定義,包括1位符號(hào)1201、8位指數(shù)1202、以及23位分?jǐn)?shù)1203。圖12b示出值0.125(行1)、0.25(行2),0.5(行3)以及1(行4)的表示示例。對(duì)于0.125與1之間的任何值,按照定義,位25到位29處的五個(gè)位應(yīng)同時(shí)都為1。作為結(jié)果,在廣泛使用0到1的范圍內(nèi)的數(shù)據(jù)的圖形系統(tǒng)中,b25-b29處的五個(gè)指數(shù)位是高度相關(guān)的。如果那五個(gè)位(b25到b29)中的任一單個(gè)位是一,則很有可能所有的那五個(gè)位全都是1。此外,五個(gè)位全都是1的可能性非常高。

圖13a-c示出編碼/解碼邏輯1135包括利用前述特性來減少能量消耗的電路的一個(gè)實(shí)施例。由該電路實(shí)現(xiàn)的技術(shù)減少了從寄存器1140讀取1的操作以用于讀取功率節(jié)省。對(duì)于每個(gè)技術(shù),相同的實(shí)現(xiàn)用于編碼(當(dāng)寫入到寄存器堆1140中)和解碼數(shù)據(jù)(當(dāng)從寄存器堆1140讀取)兩者。

在圖13a(32位單元xor)中,xor邏輯1301-1303用于利用每個(gè)32位值中的位29對(duì)四個(gè)位(位28到位25)中的每一個(gè)進(jìn)行異或運(yùn)算(xor)。為簡單起見,僅示出值0、6和7。在圖13b中,(256位單元xor),值7的位29(8個(gè)值中的一個(gè)32位值)用于遍及(across)所有8個(gè)32位值(值7到值0)都進(jìn)行異或運(yùn)算。在此實(shí)施例中,五個(gè)xor門用于值6到值0,并且四個(gè)xor門用于值7。例如,五個(gè)xor門1304用于對(duì)值7的位29與值6的位25-29中的每個(gè)進(jìn)行異或運(yùn)算,并且五個(gè)xor門1305用于對(duì)值7的位29與值0的位25-29中的每一個(gè)進(jìn)行異或運(yùn)算。如所示,xor門的數(shù)量對(duì)于值7是四個(gè)。

雖然圖13a與圖13b示出具有32位數(shù)的特定示例,但本發(fā)明的基本原理實(shí)際上可應(yīng)用到任何數(shù)粒度。例如,這些技術(shù)可應(yīng)用于32位單精度浮點(diǎn)數(shù)的組、16位半精度浮點(diǎn)數(shù)的組、或64位雙精度浮點(diǎn)數(shù)的組,僅舉幾例。

因?yàn)槊總€(gè)值中從b29到b25的所有位的都是1的可能性高,所以簡單反轉(zhuǎn)(simpleinversion)也可在減少寄存器堆數(shù)據(jù)中的1的計(jì)數(shù)方面是有效的。圖13c示出其中多個(gè)反相器1310-1312對(duì)每個(gè)浮點(diǎn)值(為簡單起見僅示出值0、6和7)的位25-29的輸出進(jìn)行反轉(zhuǎn)。最終結(jié)果是,來自這些位值的1被反相器1310-1312反轉(zhuǎn)成0。

假設(shè)對(duì)于具有各自為32位的8個(gè)值的256位條目,如在圖13a-c中所示的每個(gè)值中的位29到位25的五個(gè)位都為1,并且其他位都為0。在對(duì)條目的寄存器堆讀取操作期間,有40個(gè)讀取1的操作,因?yàn)?的總計(jì)數(shù)是40(8個(gè)值x5個(gè)位)。圖13a、13b與13c中所示的技術(shù)分別將條目中的1的總計(jì)數(shù)減少到8、1和0。因此,讀取1的操作相應(yīng)地減少。圖13b中所示的技術(shù)(256位單元xor)與圖13a中所示的技術(shù)相比可需要更多的xor門以及路由資源,因?yàn)橹?中的位29被饋送到所有8個(gè)值的所有異或運(yùn)算。注意,基于xor的技術(shù)不增加1的計(jì)數(shù),即使當(dāng)輸入數(shù)據(jù)模式一律是隨機(jī)的。圖13中的反轉(zhuǎn)技術(shù)在實(shí)現(xiàn)中幾乎不具有開銷,因?yàn)榉崔D(zhuǎn)信號(hào)可能已經(jīng)可用,或者對(duì)信號(hào)的反轉(zhuǎn)可在下游邏輯中容易地被優(yōu)化。簡單反轉(zhuǎn)對(duì)于一些情況(例如,位29到位25全都為0)可能不是有益的。然而,平均而言,它仍然可得到顯著的功率節(jié)省,因?yàn)閳D形工作負(fù)荷中的五個(gè)位顯著地傾向于全為1。

雖然以上描述的實(shí)施例對(duì)位29與位25-28進(jìn)行異或運(yùn)算,但可選擇其他位來與剩余的位值進(jìn)行異或運(yùn)算,同時(shí)符合本發(fā)明的基本原則。參考位可以是那些指定的一組的比特位置(位29-位25)中的任何值。例如,位25-28中的任一個(gè)可與來自位25-29中的剩余位進(jìn)行異或運(yùn)算,來實(shí)現(xiàn)相同的結(jié)果。

如圖13a與圖13b中所示的相同技術(shù)還減少了前一值與當(dāng)前值之間的切換。切換減少導(dǎo)致了對(duì)于rf寫操作與長/寬總線中的數(shù)據(jù)移動(dòng)的功率節(jié)省。圖14a-b示出了示例,其中使用基于xor的技術(shù),切換的數(shù)量從10(圖14a)減少到2(圖14b)。具體地,在沒有實(shí)現(xiàn)本發(fā)明的實(shí)施例的情況下,從次數(shù)n-1到次數(shù)n+1產(chǎn)生10次切換,而使用本發(fā)明的實(shí)施例,在相同的次數(shù)增量期間產(chǎn)生2次切換。注意到,圖13c中的反轉(zhuǎn)技術(shù)不像圖13a-b中的xor技術(shù)那樣減少轉(zhuǎn)換的數(shù)量。

在當(dāng)前英特爾圖形架構(gòu)中,存在其長度在大概幾千微米范圍內(nèi)的若干總線且每個(gè)總線的寬度為數(shù)百微米。給定這些參數(shù),本發(fā)明的各實(shí)施例可用于減少這些總線類型上的功率。

圖15示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。該方法可在上述架構(gòu)的情境內(nèi)實(shí)現(xiàn),但并不限于任何特定架構(gòu)。

在1501處,圖形數(shù)據(jù)內(nèi)已知具有高度相關(guān)性的指定一組的比特位置被標(biāo)識(shí)。相關(guān)性可基于被進(jìn)行處理的圖形數(shù)據(jù)的類型。例如,如上所述,在圖形工作負(fù)荷中,大多數(shù)的值在紅藍(lán)綠α(rgba)空間中,其中,每個(gè)值是從0到1范圍的標(biāo)準(zhǔn)化的32位單精度浮點(diǎn)值,且其中,32位值中的位25到位29處的五個(gè)指數(shù)位是高度相關(guān)的(例如,如果這些五個(gè)位中的任一單個(gè)位是一,則很有可能五個(gè)位全都為1)。此外,五個(gè)位全都是1的可能性非常高。

在1502處,使用具有比原始數(shù)據(jù)格式更大數(shù)量的0的格式來編碼圖形數(shù)據(jù),并將經(jīng)編碼的數(shù)據(jù)存儲(chǔ)在寄存器內(nèi)。如所述,在一個(gè)實(shí)施例中,一組8個(gè)32位浮點(diǎn)值可被緊縮到單個(gè)256位寄存器中。當(dāng)然,本發(fā)明的基本原理不限于任何特定的浮點(diǎn)格式或寄存器大小。

在1503,當(dāng)讀取圖形數(shù)據(jù)時(shí),本發(fā)明的一個(gè)實(shí)施例使得來自指定的一組比特位置的數(shù)據(jù)被從寄存器中讀取成為一組0,而不是一組1,藉此來節(jié)省功率。如上所述,這可通過對(duì)指定的一組比特位置中的值進(jìn)行異或運(yùn)算和/或通過簡單地反轉(zhuǎn)各值來實(shí)現(xiàn)(參見,例如,圖13a-c)。如果隨后數(shù)據(jù)被解碼回其原始格式,則數(shù)據(jù)讀出。

一個(gè)重要的觀察是,在圖形處理設(shè)計(jì)中,存在以rgba的形式存儲(chǔ)以及移動(dòng)數(shù)據(jù)的許多rf和總線。因此,本文中所描述的本發(fā)明的實(shí)施例具有用于減少圖形核的許多不同部分中的功率消耗的的高潛力。

雖然數(shù)據(jù)總線反轉(zhuǎn)(dbi)可用于與本發(fā)明的實(shí)施例相同的目的,但是dbi技術(shù)與本發(fā)明的實(shí)施例相比具有若干顯著的缺點(diǎn)。例如,dbi在位或線路的數(shù)量方面需要顯著的開銷,并因此對(duì)于rf來說是不現(xiàn)實(shí)的。例如,8位dbi(目前在ddr4和gddr5中所使用的)每8個(gè)位需要一個(gè)附加的位。如果8位用于256位寄存器堆或總線,則需要32個(gè)附加位或線路。此外,dbi需要通常以加法器樹(addertrees)形式構(gòu)建的多數(shù)表決器模塊(majorityvoterblock)。在硬件中表決器的實(shí)現(xiàn)在功率/計(jì)時(shí)/面積方面引發(fā)了顯著的開銷。最終,對(duì)于dbi交流(ac),前一值需要被保存在緩沖器中并與當(dāng)前值進(jìn)行比較。該緩沖器與比較邏輯是當(dāng)前dbi實(shí)現(xiàn)中的開銷。

相比之下,本文中所描述的本發(fā)明的實(shí)施例具有極低的開銷,因?yàn)樗鼈儾恍枰S持?jǐn)?shù)據(jù)的歷史和/或選舉機(jī)制。因此,不需要附加的位或信號(hào),不需要多數(shù)表決器模塊,并且不需要存儲(chǔ)器寄存器或比較邏輯。同時(shí),這些實(shí)施例通過利用圖形數(shù)據(jù)的唯一特性可實(shí)現(xiàn)與dbi技術(shù)可比擬的功率節(jié)省。

在上述說明書中,已經(jīng)參考特定示例性實(shí)施例描述了本發(fā)明。然而,顯然可對(duì)這些實(shí)施例作出各種修改和改變,而不背離如所附權(quán)利要求所述的本發(fā)明的更寬泛精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性而非限制性意義。

本發(fā)明的多個(gè)實(shí)施例可包括上述各個(gè)步驟。可在可用于使通用或?qū)S锰幚砥鲌?zhí)行這些步驟的機(jī)器可執(zhí)行指令中具體化這些步驟?;蛘?,可由包含用于執(zhí)行這些步驟的硬連線邏輯的專用硬件組件,或可由被編程的計(jì)算機(jī)組件和自定義硬件組件的任何組合來執(zhí)行這些步驟。

如本文中所描述的,指令可以指硬件的具體配置,例如,配置成用于執(zhí)行某些操作或具有預(yù)定功能的專用集成電路(asic),或者被存儲(chǔ)在被具體化在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)中的存儲(chǔ)器中的軟件指令。因而,附圖中示出的技術(shù)可以使用存儲(chǔ)在一個(gè)或多個(gè)電子設(shè)備(例如,終端站、網(wǎng)絡(luò)元件等等)并在其上執(zhí)行的代碼和數(shù)據(jù)來實(shí)現(xiàn)。此類電子設(shè)備使用諸如非瞬態(tài)計(jì)算機(jī)機(jī)器可讀存儲(chǔ)介質(zhì)(例如,磁盤;光盤;隨機(jī)存取存儲(chǔ)器;只讀存儲(chǔ)器;閃存設(shè)備;相變存儲(chǔ)器)之類的計(jì)算機(jī)機(jī)器可讀介質(zhì)和瞬態(tài)計(jì)算機(jī)機(jī)器可讀通信介質(zhì)(例如,電、光、聲或其他形式的傳播信號(hào)——諸如載波、紅外信號(hào)、數(shù)字信號(hào)等)來(內(nèi)部地和/或在網(wǎng)絡(luò)上與其他電子設(shè)備之間進(jìn)行)存儲(chǔ)和傳遞代碼和數(shù)據(jù)。另外,此類電子設(shè)備一般包括耦合至一個(gè)或多個(gè)其他組件的一個(gè)或多個(gè)處理器的集合,所述一個(gè)或多個(gè)其他組件例如是一個(gè)或多個(gè)存儲(chǔ)設(shè)備(非暫態(tài)機(jī)器可讀存儲(chǔ)介質(zhì))、用戶輸入/輸出設(shè)備(例如,鍵盤、觸摸屏和/或顯示器)以及網(wǎng)絡(luò)連接。該組處理器和其他組件的耦合一般是通過一個(gè)或多個(gè)總線和橋(也稱為總線控制器)實(shí)現(xiàn)的。存儲(chǔ)設(shè)備和攜帶網(wǎng)絡(luò)話務(wù)的信號(hào)分別表示一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)和機(jī)器可讀通信介質(zhì)。因此,給定電子設(shè)備的存儲(chǔ)設(shè)備通常存儲(chǔ)用于在該電子設(shè)備的一個(gè)或多個(gè)處理器的集合上執(zhí)行的代碼和/或數(shù)據(jù)。當(dāng)然,本發(fā)明的實(shí)施例的一個(gè)或多個(gè)部分可使用軟件、固件和/或硬件的不同組合來實(shí)現(xiàn)。貫穿此具體實(shí)施方式,為了進(jìn)行解釋,陳述了眾多具體細(xì)節(jié)以提供對(duì)本發(fā)明的透徹理解。然而,對(duì)本領(lǐng)域技術(shù)人員顯而易見的是,沒有這些具體細(xì)節(jié)中的一些細(xì)節(jié)也可實(shí)施本發(fā)明。在某些實(shí)例中,并不詳細(xì)描述公知的結(jié)構(gòu)和功能,以免使本發(fā)明的主題模糊。因此,本發(fā)明的范圍和精神應(yīng)根據(jù)所附權(quán)利要求書來判斷。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大埔区| 兴和县| 庆安县| 五大连池市| 冕宁县| 和平区| 锦州市| 榆社县| 天柱县| 玉门市| 津南区| 福泉市| 汕头市| 扎赉特旗| 凤凰县| 阿尔山市| 兴安县| 扶沟县| 塔河县| 桐城市| 延长县| 边坝县| 昭平县| 芮城县| 泗水县| 清丰县| 丽江市| 谢通门县| 高要市| 车致| 新疆| 灵武市| 华安县| 嘉兴市| 云和县| 平原县| 漯河市| 建始县| 蒙山县| 兰州市| 永仁县|