亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

圖形處理器執(zhí)行資源的動(dòng)態(tài)縮放的制作方法

文檔序號(hào):12142290閱讀:338來(lái)源:國(guó)知局
圖形處理器執(zhí)行資源的動(dòng)態(tài)縮放的制作方法與工藝

一般來(lái)說(shuō),實(shí)施例涉及集成電路中的功率管理,更具體來(lái)說(shuō),涉及圖形處理器上的執(zhí)行單元的動(dòng)態(tài)縮放。



背景技術(shù):

一般利用一個(gè)或多個(gè)圖形處理器來(lái)創(chuàng)建計(jì)算機(jī)系統(tǒng)的圖形輸出。每個(gè)圖形處理器可包括多個(gè)圖形處理器核,并且每個(gè)圖形處理器核可包括用于執(zhí)行各種類型的圖形操作的多種類型的資源。這些各種類型的圖形操作利用多種類型的圖形工作負(fù)載,每種圖形工作負(fù)載可利用圖形核內(nèi)的不同資源。對(duì)于計(jì)算密集型工作負(fù)載,廣泛使用圖形處理器執(zhí)行單元。

但是,不同圖形工作負(fù)載利用不同等級(jí)的執(zhí)行單元。并且,特定圖形工作負(fù)載可在處理圖形工作負(fù)載時(shí)隨時(shí)間使用各種等級(jí)的執(zhí)行單元。對(duì)于圖形執(zhí)行單元維持功率對(duì)計(jì)算機(jī)系統(tǒng)引入各種成本,包括增加的功率耗散和最大負(fù)載電流。因此,計(jì)算機(jī)系統(tǒng)可通過(guò)在低使用率時(shí)間期間減少活動(dòng)執(zhí)行單元的數(shù)量而得益。但是,減少活動(dòng)執(zhí)行單元的數(shù)量減少可用于圖形操作的執(zhí)行資源。因此,現(xiàn)有的縮放執(zhí)行單元的機(jī)制可損害整體系統(tǒng)性能。

附圖說(shuō)明

以下描述包括具有通過(guò)各種實(shí)施例的實(shí)現(xiàn)的舉例給出的圖示的圖的論述。這些圖應(yīng)當(dāng)舉例而非限制性地理解。

圖1是包含具有一個(gè)或多個(gè)處理器核和圖形處理器的處理器的計(jì)算機(jī)系統(tǒng)的實(shí)施例的框圖。

圖2是具有一個(gè)或多個(gè)處理器核、集成式存儲(chǔ)器控制器和集成式圖形處理器的處理器的一個(gè)實(shí)施例的框圖。

圖3是圖形處理器的一個(gè)實(shí)施例的框圖,該圖形處理器可以是離散圖形處理單元,或者可以是與多個(gè)處理核集成的圖形處理器。

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

圖5是圖形處理器的另一個(gè)實(shí)施例的框圖。

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

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

圖8是圖形處理器的另一個(gè)實(shí)施例的框圖。

圖9A是示出根據(jù)一個(gè)實(shí)施例的圖形處理器命令格式的框圖。

圖9B是示出根據(jù)一個(gè)實(shí)施例的圖形處理器命令序列的框圖。

圖10示出根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件體系結(jié)構(gòu)。

圖11是根據(jù)一個(gè)實(shí)施例包括可縮放資源和功率控制單元的圖形核的框圖。

圖12是根據(jù)一個(gè)實(shí)施例用于控制圖形核執(zhí)行單元的功率的功率控制單元的框圖。

圖13是三個(gè)示例性圖形處理器核的執(zhí)行單元(EU)的使用率的曲線圖。

圖14是突出新繪圖調(diào)用的提交的示例性3×8 GPU的使用率的曲線圖。

圖15是根據(jù)一個(gè)實(shí)施例用于管理圖形處理器執(zhí)行單元的縮放的邏輯的流程圖。

圖16是根據(jù)一個(gè)實(shí)施例用于通過(guò)功率控制器管理執(zhí)行單元的縮放的另外的邏輯的流程圖。

圖17是根據(jù)一個(gè)實(shí)施例用于確定圖形執(zhí)行資源的縮放因子的邏輯的流程圖。

圖18是示例性圖形子核使用率的曲線圖。

圖19-20是示例性圖形子核使用率的另外的曲線圖。

圖21是根據(jù)一個(gè)實(shí)施例用于管理圖形核或子核的縮放的邏輯的流程圖。

具體實(shí)施方式

公開(kāi)用于在不顯著影響性能的情況下動(dòng)態(tài)地縮放圖形處理器中的執(zhí)行單元以便減少功率耗散和最大電流消耗的系統(tǒng)和方法的各種實(shí)施例。圖形處理器可利用諸如當(dāng)前執(zhí)行單元使用率的使用率度量來(lái)動(dòng)態(tài)地啟用或禁用執(zhí)行單元。圖形處理器另外還可利用來(lái)自3D應(yīng)用的新繪圖調(diào)用的提交或圖形處理器接收到新繪圖調(diào)用作為在不久的將來(lái)可能較高的執(zhí)行單元使用率的指示。通過(guò)預(yù)期高執(zhí)行單元使用率,提出的技術(shù)可在高圖形處理器使用率期間在不影響性能的情況下對(duì)執(zhí)行單元進(jìn)行動(dòng)態(tài)的功率管理。

出于解釋的目的,闡述了眾多具體細(xì)節(jié)以便充分理解下文描述的各種實(shí)施例。但是,本領(lǐng)域技術(shù)人員將明白,沒(méi)有這些具體細(xì)節(jié)中的一些細(xì)節(jié)也可實(shí)踐這些實(shí)施例。在其它情況下,以框圖形式示出公知的結(jié)構(gòu)和裝置,以免混淆基本原理,并能更充分地理解實(shí)施例。

盡管參考處理器描述以下一些實(shí)施例,但是類似技術(shù)和教導(dǎo)可適用于其它類型的電路或半導(dǎo)體裝置,因?yàn)榻虒?dǎo)可適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機(jī)器。

概述-圖1-3

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

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

這一個(gè)或多個(gè)處理器102均包括用于處理指令的一個(gè)或多個(gè)處理器核107,指令在執(zhí)行時(shí)執(zhí)行系統(tǒng)和用戶軟件的操作。在一個(gè)實(shí)施例中,這一個(gè)或多個(gè)處理器核107中的每個(gè)處理器核107配置成處理特定指令集109。指令集109可便于復(fù)雜指令集計(jì)算(CISC)、精簡(jiǎn)指令集計(jì)算(RISC)、或經(jīng)由超長(zhǎng)指令字(VLIW)的計(jì)算。多個(gè)處理器核107可各自處理可包括用于便于其它指令集的仿真的指令的不同指令集109。處理器核107還可包括諸如數(shù)字信號(hào)處理器(DSP)的其它處理裝置。

在一個(gè)實(shí)施例中,這一個(gè)或多個(gè)處理器102中的每個(gè)處理器102均包括高速緩沖存儲(chǔ)器104。取決于體系結(jié)構(gòu),處理器102可具有單個(gè)內(nèi)部高速緩存或多個(gè)等級(jí)的內(nèi)部高速緩存。在一個(gè)實(shí)施例中,在處理器102的各個(gè)組件中共享高速緩沖存儲(chǔ)器。在一個(gè)實(shí)施例中,處理器102還使用可利用已知的緩存一致性技術(shù)在處理器核107中共享的外部高速緩存(例如,3級(jí)(L3)高速緩存或最后一級(jí)高速緩存(LLC))(未示出)。處理器102中另外還包括寄存器文件106,寄存器文件106可包括用于存儲(chǔ)不同類型的數(shù)據(jù)的不同類型的寄存器(例如,整數(shù)寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器和指令指針寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以特定于處理器102的設(shè)計(jì)。

處理器102耦合到處理器總線110,以便在處理器102與系統(tǒng)100中的其它組件之間傳送數(shù)據(jù)信號(hào)。系統(tǒng)100使用示例性‘集線器’系統(tǒng)體系結(jié)構(gòu),它包括存儲(chǔ)器控制器集線器116和輸入/輸出(I/O)控制器集線器130。存儲(chǔ)器控制器集線器116便于存儲(chǔ)器裝置與系統(tǒng)100的其它組件之間的通信,而I/O控制器集線器(ICH)130經(jīng)由本地I/O總線提供到I/O裝置的連接。

存儲(chǔ)器裝置120可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)裝置、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)裝置、閃速存儲(chǔ)器裝置、或具有適合充當(dāng)進(jìn)程存儲(chǔ)器的性能的某種其它存儲(chǔ)器裝置。存儲(chǔ)器120可存儲(chǔ)數(shù)據(jù)122和指令121以便在處理器102執(zhí)行某個(gè)進(jìn)程時(shí)使用。存儲(chǔ)器控制器集線器116還與可選的外部圖形處理器112耦合,可選的外部圖形處理器112可與處理器102中的這一個(gè)或多個(gè)圖形處理器108通信以便執(zhí)行圖形和媒體操作。

ICH 130使得外圍設(shè)備能夠經(jīng)由高速I/O總線連接到存儲(chǔ)器120和處理器102。I/O外圍設(shè)備包括音頻控制器146、固件接口128、無(wú)線收發(fā)器126(例如,Wi-Fi、藍(lán)牙)、數(shù)據(jù)存儲(chǔ)裝置124(例如,硬盤驅(qū)動(dòng)器、閃速存儲(chǔ)器等)和用于將傳統(tǒng)(例如,個(gè)人系統(tǒng)2(PS/2))裝置耦合到系統(tǒng)的傳統(tǒng)I/O控制器。一個(gè)或多個(gè)通用串行總線(USB)控制器142連接輸入裝置,例如鍵盤和鼠標(biāo)144組合。網(wǎng)絡(luò)控制器134也可耦合到ICH 130。在一個(gè)實(shí)施例中,高性能網(wǎng)絡(luò)控制器(未示出)耦合到處理器總線110。

圖2是具有一個(gè)或多個(gè)處理器核202A-N、集成式存儲(chǔ)器控制器214和集成式圖形處理器208的處理器200的一個(gè)實(shí)施例的框圖。處理器200可包括另外的核,最多并包括由虛線框表示的另外的核202N。核202A-N中的每個(gè)核包括一個(gè)或多個(gè)內(nèi)部高速緩存單元204A-N。在一個(gè)實(shí)施例中,每個(gè)核還具有對(duì)一個(gè)或多個(gè)共享緩存的單元206的訪問(wèn)。

內(nèi)部高速緩存單元204A-N和共享高速緩存單元206表示處理器200內(nèi)的高速緩沖存儲(chǔ)器層級(jí)。高速緩沖存儲(chǔ)器層級(jí)可包括每個(gè)核內(nèi)的至少一個(gè)指令和數(shù)據(jù)高速緩存級(jí)以及一個(gè)或多個(gè)共享中間級(jí)高速緩存級(jí),例如2級(jí)(L2)、3級(jí)(L3)、4級(jí)(L4)、或其它高速緩存級(jí),其中將外部存儲(chǔ)器之前的最高高速緩存級(jí)歸類為最后一級(jí)高速緩存(LLC)。在一個(gè)實(shí)施例中,高速緩存一致性邏輯維持各種高速緩存單元206和204A-N之間的一致性。

處理器200還可包括一個(gè)或多個(gè)總線控制器單元216的集合和系統(tǒng)代理210。這一個(gè)或多個(gè)總線控制器單元管理諸如一個(gè)或多個(gè)外圍組件互連總線(例如,PCI、PCI Express)的外圍總線的集合。系統(tǒng)代理210為各個(gè)處理器組件提供管理功能性。在一個(gè)實(shí)施例中,系統(tǒng)代理210包括用于管理對(duì)各個(gè)外部存儲(chǔ)器裝置(未示出)的訪問(wèn)的一個(gè)或多個(gè)集成式存儲(chǔ)器控制器214。

在一個(gè)實(shí)施例中,核202A-N中的一個(gè)或多個(gè)核包括對(duì)同步多線程化的支持。在該實(shí)施例中,系統(tǒng)代理210包括用于在多線程化處理過(guò)程中協(xié)調(diào)和操作核202A-N的組件。系統(tǒng)代理210另外還可包括功率控制單元(PCU),PCU包括用于調(diào)節(jié)核202A-N和圖形處理器208的功率狀態(tài)的邏輯和組件。

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

在一個(gè)實(shí)施例中,利用基于環(huán)的互連單元212來(lái)耦合處理器200的內(nèi)部組件,但是也可使用備選互連單元,例如點(diǎn)到點(diǎn)互連、交換式互連、或包括本領(lǐng)域中已知的技術(shù)的其它技術(shù)。在一個(gè)實(shí)施例中,圖形處理器208經(jīng)由I/O鏈路213與環(huán)互連212耦合。

示例性I/O鏈路213表示多品種I/O互連中的至少一種,包括便于各種處理器組件與高性能嵌入式存儲(chǔ)器模塊218(例如,eDRAM模塊)之間的通信的封裝上I/O互連。在一個(gè)實(shí)施例中,核202A-N中的每個(gè)核和圖形處理器208利用嵌入式存儲(chǔ)器模塊218作為共享最后一級(jí)高速緩存。

在一個(gè)實(shí)施例中,核202A-N是執(zhí)行相同指令集體系結(jié)構(gòu)的同構(gòu)核。在另一個(gè)實(shí)施例中,核202A-N在指令集體系結(jié)構(gòu)(ISA)方面是異構(gòu)的,其中核202A-N中的一個(gè)或多個(gè)核執(zhí)行第一指令集,而其它核中的至少一個(gè)核執(zhí)行第一指令集的子集或不同指令集。

處理器200可以是一個(gè)或多個(gè)襯底的一部分,或者可利用多種工藝技術(shù)中的任意技術(shù)在一個(gè)或多個(gè)襯底上實(shí)現(xiàn),這些工藝技術(shù)可以是例如互補(bǔ)金屬-氧化物-半導(dǎo)體(CMOS)、雙極/互補(bǔ)金屬-氧化物-半導(dǎo)體(BiCOMS)或N型金屬-氧化物-半導(dǎo)體邏輯(NMOS)。另外,處理器200可在一個(gè)或多個(gè)芯片上實(shí)現(xiàn),或作為除了具有所示組件外還具有其它組件的芯片上系統(tǒng)(SOC)集成電路實(shí)現(xiàn)。

圖3是圖形處理器300的一個(gè)實(shí)施例的框圖,圖形處理器300可以是離散圖形處理單元,或者可以是與多個(gè)處理核集成的圖形處理器。在一個(gè)實(shí)施例中,該圖形處理器經(jīng)由到圖形處理器上的寄存器的存儲(chǔ)器映射的I/O接口并經(jīng)由放到處理器存儲(chǔ)器中的命令通信。圖形處理器300包括用于訪問(wèn)存儲(chǔ)器的存儲(chǔ)器接口314。存儲(chǔ)器接口314可以是到本地存儲(chǔ)器、一個(gè)或多個(gè)內(nèi)部高速緩存、一個(gè)或多個(gè)共享外部高速緩存和/或到系統(tǒng)存儲(chǔ)器的接口。

圖形處理器300還包括用于將顯示器輸出數(shù)據(jù)驅(qū)動(dòng)到顯示器裝置320的顯示器控制器302。顯示器控制器302包括顯示器的一個(gè)或多個(gè)覆蓋平面和多層視頻或用戶接口元件的組成的硬件。在一個(gè)實(shí)施例中,圖形處理器300包括用于將媒體編碼為一個(gè)或多個(gè)媒體編碼格式、從一個(gè)或多個(gè)媒體編碼格式解碼媒體或在一個(gè)或多個(gè)媒體編碼格式之間轉(zhuǎn)換媒體的代碼的視頻編解碼器引擎306,這一個(gè)或多個(gè)媒體編碼格式包括但不限于移動(dòng)圖片專家組(MPEG)格式(例如,MPEG-2)、高級(jí)視頻編碼(AVC)格式(例如,H.264/MPEG-4 AVC)、以及電影和電視工程師協(xié)會(huì)(SMPTE)421M/VC-1和聯(lián)合圖像專家組(JPEG)格式(例如,JPEG和運(yùn)動(dòng)JPEG(MJPEG)格式)。

在一個(gè)實(shí)施例中,圖形處理器300包括用于執(zhí)行包括例如位-邊界塊傳輸?shù)亩S(2D)光柵化程序操作的塊圖像傳輸(BLIT)引擎304。但是,在一個(gè)實(shí)施例中,利用圖形處理引擎(GPE)310的一個(gè)或多個(gè)組件來(lái)執(zhí)行2D圖形操作。圖形處理引擎310是用于執(zhí)行包括三維(3D)圖形操作和媒體操作的圖形操作的計(jì)算引擎。

GPE 310包括用于執(zhí)行3D操作的3D管線312,3D操作可以是例如利用在3D圖元形狀(例如,矩形、三角形等)上作用的處理功能渲染三維圖像和場(chǎng)景。3D管線312包括可編程和固定功能元件,這些元件在元件內(nèi)執(zhí)行各種任務(wù)和/或?qū)?zhí)行線程派生到3D/媒體子系統(tǒng)315。雖然可利用3D管線312來(lái)執(zhí)行媒體操作,但是GPE 310的實(shí)施例還包括特定用于執(zhí)行諸如視頻后處理和圖像增強(qiáng)的媒體操作的媒體管線316。

在一個(gè)實(shí)施例中,媒體管線316包括用于代替或代表視頻編解碼器引擎306執(zhí)行諸如視頻解碼加速、視頻去交錯(cuò)和視頻編碼加速的一個(gè)或多個(gè)專門化媒體操作的固定功能或可編程邏輯單元。在一個(gè)實(shí)施例中,媒體管線316另外包括用于派生線程以便在3D/媒體子系統(tǒng)315上執(zhí)行的線程派生單元。派生的線程對(duì)于包含在3D/媒體子系統(tǒng)中的一個(gè)或多個(gè)圖形執(zhí)行單元上的媒體操作執(zhí)行計(jì)算。

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

3D/媒體處理-圖4

圖4是圖形處理器的圖形處理引擎410的實(shí)施例的框圖。在一個(gè)實(shí)施例中,圖形處理引擎(GPE)410是如圖3所示的GPE 310的版本。GPE 410包括3D管線412和媒體管線416,它們中的每一個(gè)均可與圖3的3D管線312和媒體管線316的實(shí)現(xiàn)不同或類似。

在一個(gè)實(shí)施例中,GPE 410與命令流播器403耦合,命令流播器403將命令流提供給GPE 3D和媒體管線412、416。命令流播器403耦合到存儲(chǔ)器,存儲(chǔ)器可以是系統(tǒng)存儲(chǔ)器,或者可以是內(nèi)部高速緩沖存儲(chǔ)器和共享高速緩沖存儲(chǔ)器中的一個(gè)或多個(gè)。命令流播器403從存儲(chǔ)器接收命令,并將命令發(fā)送給3D管線412和/或媒體管線416。3D和媒體管線通過(guò)經(jīng)由相應(yīng)管線內(nèi)的邏輯執(zhí)行操作或通過(guò)將一個(gè)或多個(gè)執(zhí)行線程分派給執(zhí)行單元陣列414來(lái)處理命令。在一個(gè)實(shí)施例中,執(zhí)行單元陣列414是可縮放的,從而使得基于GPE 410的目標(biāo)功率和性能等級(jí),該陣列包括可變數(shù)量的執(zhí)行單元。

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

采樣引擎430中的專門化媒體采樣邏輯包括去噪聲/去交錯(cuò)模塊432、運(yùn)動(dòng)估計(jì)模塊434以及圖像縮放和過(guò)濾模塊436。去噪聲/去交錯(cuò)模塊432包括用于對(duì)解碼的視頻數(shù)據(jù)執(zhí)行去噪聲或去交錯(cuò)算法中的一個(gè)或多個(gè)算法的邏輯。去交錯(cuò)邏輯將交錯(cuò)的視頻內(nèi)容的備選字段組合到單個(gè)視頻幀中。去噪聲邏輯從視頻和圖像數(shù)據(jù)中減少或移除數(shù)據(jù)噪聲。在一個(gè)實(shí)施例中,去噪聲邏輯和去交錯(cuò)邏輯具有運(yùn)動(dòng)適應(yīng)性,并基于在視頻數(shù)據(jù)中檢測(cè)到的運(yùn)動(dòng)量使用空間或時(shí)間過(guò)濾。在一個(gè)實(shí)施例中,去噪聲/去交錯(cuò)模塊432包括專用運(yùn)動(dòng)檢測(cè)邏輯(例如,位于運(yùn)動(dòng)估計(jì)引擎434內(nèi))。

運(yùn)動(dòng)估計(jì)引擎434通過(guò)對(duì)視頻數(shù)據(jù)執(zhí)行諸如運(yùn)動(dòng)向量估計(jì)和預(yù)測(cè)的視頻加速功能來(lái)為視頻操作提供硬件加速。運(yùn)動(dòng)估計(jì)引擎確定用于描述在連續(xù)視頻幀之間的圖像數(shù)據(jù)的變換的運(yùn)動(dòng)向量。在一個(gè)實(shí)施例中,圖形處理器媒體編解碼器利用視頻運(yùn)動(dòng)估計(jì)引擎434來(lái)以宏塊等級(jí)對(duì)視頻執(zhí)行操作,否則這在利用通用處理器執(zhí)行時(shí)在計(jì)算上是密集的。在一個(gè)實(shí)施例中,運(yùn)動(dòng)估計(jì)引擎434一般對(duì)于圖形處理器組件都是可用的,以便幫助對(duì)于視頻數(shù)據(jù)內(nèi)的運(yùn)動(dòng)的方向或幅度敏感或具適應(yīng)性的視頻解碼和處理功能。

圖像縮放和過(guò)濾模塊436執(zhí)行圖像處理操作以便增強(qiáng)生成的圖像和視頻的視覺(jué)質(zhì)量。在一個(gè)實(shí)施例中,縮放和過(guò)濾模塊436在采樣操作期間處理圖像和視頻數(shù)據(jù),然后再將數(shù)據(jù)提供給執(zhí)行單元陣列414。

在一個(gè)實(shí)施例中,圖形處理引擎410包括數(shù)據(jù)端口444,數(shù)據(jù)端口444提供用于圖形子系統(tǒng)訪問(wèn)存儲(chǔ)器的另外的機(jī)制。數(shù)據(jù)端口444便于包括渲染目標(biāo)寫(xiě)入、恒定緩沖器讀取、暫時(shí)存儲(chǔ)器空間讀取/寫(xiě)入和媒體表面訪問(wèn)的操作的存儲(chǔ)器訪問(wèn)。在一個(gè)實(shí)施例中,數(shù)據(jù)端口444包括用于緩存對(duì)存儲(chǔ)器的訪問(wèn)的高速緩沖存儲(chǔ)器空間。該高速緩沖存儲(chǔ)器可以是單個(gè)數(shù)據(jù)高速緩存,或者可以分割成多個(gè)高速緩存以用于經(jīng)由數(shù)據(jù)端口訪問(wèn)存儲(chǔ)器的多個(gè)子系統(tǒng)(例如,渲染緩沖器高速緩存、恒定緩沖器高速緩存等)。在一個(gè)實(shí)施例中,在執(zhí)行單元陣列414中的執(zhí)行單元上執(zhí)行的線程通過(guò)經(jīng)由耦合圖形處理引擎410的每個(gè)子系統(tǒng)的數(shù)據(jù)分發(fā)互連交換消息而與數(shù)據(jù)端口通信。

執(zhí)行單元-圖5-7

圖5是具有可縮放數(shù)量的圖形核的圖形處理器的另一個(gè)實(shí)施例的框圖。在一個(gè)實(shí)施例中,該圖形處理器包括環(huán)互連502、管線前端504、媒體引擎537和圖形核580A-N。環(huán)互連502將圖形處理器耦合到其它處理單元,包括其它圖形處理器或一個(gè)或多個(gè)通用處理器核。在一個(gè)實(shí)施例中,圖形處理器是集成在多核處理系統(tǒng)內(nèi)的許多處理器之一。

圖形處理器經(jīng)由環(huán)互連502接收一批批命令。通過(guò)管線前端504中的命令流播器503解譯進(jìn)入的命令。圖形處理器包括用于經(jīng)由圖形核580A-N執(zhí)行3D幾何處理和媒體處理的可縮放執(zhí)行邏輯。對(duì)于3D幾何處理命令,命令流播器503將命令提供給幾何管線536。對(duì)于至少一些媒體處理命令,命令流播器503將命令提供給視頻前端534,視頻前端534與媒體引擎537耦合。媒體引擎537包括用于視頻和圖像后處理的視頻質(zhì)量引擎(VQE)530以及用于提供硬件加速的媒體數(shù)據(jù)編碼和解碼的多格式編碼/解碼(MFX)533引擎。幾何管線536和媒體引擎537均為由至少一個(gè)圖形核580A提供的線程執(zhí)行資源生成執(zhí)行線程。

圖形處理器包括以可縮放的線程執(zhí)行資源為特色的模塊化核580A-N(有時(shí)稱為核切片),每個(gè)核580A-N均具有多個(gè)子核550A-N、560A-N(有時(shí)稱為核子切片)。圖形處理器可具有任意數(shù)量的圖形核580A-580N。在一個(gè)實(shí)施例中,圖形處理器包括至少具有第一子核550A和第二核子核560A的圖形核580A。在另一個(gè)實(shí)施例中,圖形處理器是具有單個(gè)子核(例如,550A)的低功率處理器。在一個(gè)實(shí)施例中,圖形處理器包括多個(gè)圖形核580A-N,每個(gè)核均包括第一子核550A-N的集合和第二子核560A-N的集合。第一子核550A-N的集合中的每個(gè)子核均至少包括執(zhí)行單元552A-N和媒體/紋理采樣器554A-N的第一集合。第二子核560A-N的集合中的每個(gè)子核均至少包括執(zhí)行單元562A-N和采樣器564A-N的第二集合。在一個(gè)實(shí)施例中,每個(gè)子核550A-N、560A-N共享共享資源570A-N的集合。在一個(gè)實(shí)施例中,共享資源包括共享高速緩沖存儲(chǔ)器和像素操作邏輯。圖形處理器的各種實(shí)施例中還可包含其它共享資源。

圖6示出包括處理元件的陣列的線程執(zhí)行邏輯600的實(shí)施例。在一個(gè)實(shí)施例中,線程執(zhí)行邏輯600包括像素著色器(shader)602、線程分派器604、指令高速緩存606、包括多個(gè)執(zhí)行單元608A-N的可縮放執(zhí)行單元陣列、采樣器610、數(shù)據(jù)高速緩存612和數(shù)據(jù)端口614。在一個(gè)實(shí)施例中,包含的組件經(jīng)由鏈接到每個(gè)組件的互連結(jié)構(gòu)互連。線程執(zhí)行邏輯600包括通過(guò)指令高速緩存606、數(shù)據(jù)端口614、采樣器610和執(zhí)行單元陣列608A-N中的一個(gè)或多個(gè)到諸如系統(tǒng)存儲(chǔ)器或高速緩沖存儲(chǔ)器的存儲(chǔ)器的一個(gè)或多個(gè)連接。在一個(gè)實(shí)施例中,每個(gè)執(zhí)行單元(例如,608A)都是能夠執(zhí)行多個(gè)同步線程并且對(duì)于每個(gè)線程并行地處理多個(gè)數(shù)據(jù)元素的個(gè)別向量處理器。執(zhí)行單元陣列608A-N包括任意數(shù)量的個(gè)別執(zhí)行單元。

在一個(gè)實(shí)施例中,執(zhí)行單元陣列608A-N主要用于執(zhí)行“著色器”程序。在一個(gè)實(shí)施例中,陣列608A-N中的執(zhí)行單元執(zhí)行包括對(duì)許多標(biāo)準(zhǔn)3D圖形著色器指令的原生支持的指令集,從而使得在最少轉(zhuǎn)譯的情況下執(zhí)行來(lái)自圖形庫(kù)(例如,Direct 3D和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í)行通道是在指令內(nèi)執(zhí)行數(shù)據(jù)元素訪問(wèn)、屏蔽和流控制的邏輯單元。通道數(shù)量可以獨(dú)立于特定圖形處理器的物理算術(shù)邏輯單元(ALU)或浮點(diǎn)單元(FPU)的數(shù)量。執(zhí)行單元608A-N支持整數(shù)和浮點(diǎn)數(shù)據(jù)類型。

執(zhí)行單元指令集包括單個(gè)指令多個(gè)數(shù)據(jù)(SIMD)指令。各種數(shù)據(jù)元素可作為包裝數(shù)據(jù)類型存儲(chǔ)在寄存器中,并且執(zhí)行單元將基于元素的數(shù)據(jù)大小處理各種元素。例如,當(dāng)對(duì)256位寬的向量進(jìn)行操作時(shí),將向量的256個(gè)位存儲(chǔ)在寄存器中,并且執(zhí)行單元對(duì)該向量作為4個(gè)獨(dú)立的64位包裝數(shù)據(jù)元素(四字(QW)大小的數(shù)據(jù)元素)、8個(gè)獨(dú)立的32位包裝數(shù)據(jù)元素(雙字(DW)大小的數(shù)據(jù)元素)、16個(gè)獨(dú)立的16位包裝數(shù)據(jù)元素(字(W)大小的數(shù)據(jù)元素)或32個(gè)獨(dú)立的8位數(shù)據(jù)元素(字節(jié)(B)大小的數(shù)據(jù)元素)進(jìn)行操作。但是,不同的向量寬度和寄存器大小也是可能的。

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

在執(zhí)行期間,圖形和媒體管線經(jīng)由線程派生和分派邏輯將線程啟動(dòng)請(qǐng)求發(fā)送給線程執(zhí)行邏輯600。線程執(zhí)行邏輯600包括用于仲裁來(lái)自圖形和媒體管線的線程啟動(dòng)請(qǐng)求并在一個(gè)或多個(gè)執(zhí)行單元608A-N上實(shí)例化請(qǐng)求的線程的本地線程分派器604。例如,幾何管線(例如,圖5的536)將頂點(diǎn)處理、鑲嵌或幾何處理線程分派給線程執(zhí)行邏輯600。線程分派器604還可處理來(lái)自執(zhí)行著色器程序的運(yùn)行時(shí)線程派生請(qǐng)求。

一旦處理完一組圖形對(duì)象并將其光柵化為像素?cái)?shù)據(jù),便調(diào)用像素著色器602以便進(jìn)一步計(jì)算輸出信息并使得將結(jié)果寫(xiě)入到輸出表面(例如,顏色緩沖器、深度緩沖器、模板緩沖器等)。在一個(gè)實(shí)施例中,像素著色器602計(jì)算即將跨光柵化對(duì)象內(nèi)插的各種頂點(diǎn)屬性的值。然后,像素著色器602執(zhí)行API-提供的像素著色器程序。為了執(zhí)行像素著色器程序,像素著色器602經(jīng)由線程分派器604將線程分派給執(zhí)行單元(例如,608A)。像素著色器602利用采樣器610中的紋理采樣邏輯來(lái)訪問(wèn)存儲(chǔ)在存儲(chǔ)器中的紋理圖中的紋理數(shù)據(jù)。紋理數(shù)據(jù)和輸入幾何數(shù)據(jù)上的算術(shù)操作計(jì)算每個(gè)幾何片段的像素顏色數(shù)據(jù),或從進(jìn)一步處理中丟棄一個(gè)或多個(gè)像素。

在一個(gè)實(shí)施例中,數(shù)據(jù)端口614提供存儲(chǔ)器訪問(wèn)機(jī)制以便線程執(zhí)行邏輯600將經(jīng)過(guò)處理的數(shù)據(jù)輸出到存儲(chǔ)器以在圖形處理器輸出管線上處理。在一個(gè)實(shí)施例中,數(shù)據(jù)端口614包括或耦合到一個(gè)或多個(gè)高速緩沖存儲(chǔ)器(例如,數(shù)據(jù)高速緩存612),以便緩存數(shù)據(jù)以經(jīng)由數(shù)據(jù)端口進(jìn)行存儲(chǔ)器訪問(wèn)。

圖7是示出根據(jù)一個(gè)實(shí)施例的圖形處理器執(zhí)行單元指令格式的框圖。在一個(gè)實(shí)施例中,圖形處理器執(zhí)行單元支持具有多種格式的指令的指令集。實(shí)線框示出執(zhí)行單元指令中一般包含的組成,而虛線包括可選或者只包含在指令的子集中的組成。圖示中描述的指令格式是宏指令,因?yàn)榕c在處理指令后由指令解碼造成的微操作相比,它們是提供給執(zhí)行單元的指令。

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

對(duì)于每種格式,指令操作碼712定義執(zhí)行單元將要執(zhí)行的操作。執(zhí)行單元跨每個(gè)操作數(shù)的多個(gè)數(shù)據(jù)元素并行地執(zhí)行每個(gè)指令。例如,響應(yīng)于加法指令,執(zhí)行單元跨代表紋理元素或圖片元素的每個(gè)顏色通道執(zhí)行同步加法操作。默認(rèn)地,執(zhí)行單元跨操作數(shù)的所有數(shù)據(jù)通道執(zhí)行每個(gè)指令。指令控制字段712啟用對(duì)諸如通道選擇(例如,預(yù)測(cè))和數(shù)據(jù)通道順序(例如,調(diào)配)的某些執(zhí)行選項(xiàng)的控制。對(duì)于128位指令710,執(zhí)行大小字段716限制將并行執(zhí)行的數(shù)據(jù)通道的數(shù)量。執(zhí)行大小字段716不可在64位壓縮指令格式730中使用。

一些執(zhí)行單元指令最多具有三個(gè)操作數(shù),包括兩個(gè)源操作數(shù)src0 720、src1 722和一個(gè)目的地718。在一個(gè)實(shí)施例中,執(zhí)行單元支持雙目的地指令,其中一個(gè)目的地是隱含的。數(shù)據(jù)操縱指令可具有第三源操作數(shù)(例如,SRC2 724),其中指令操作碼712確定源操作數(shù)的數(shù)量。指令的最后一個(gè)源操作數(shù)可以是與指令一起傳遞的中間(例如,硬編碼的)值。

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

圖形管線-圖8

圖8是圖形處理器的另一個(gè)實(shí)施例的框圖,該圖形處理器包括圖形管線820、媒體管線830、顯示器引擎840、線程執(zhí)行邏輯850和渲染輸出管線870。在一個(gè)實(shí)施例中,該圖形處理器是位于包括一個(gè)或多個(gè)通用處理核的多核處理系統(tǒng)內(nèi)的圖形處理器。該圖形處理器通過(guò)到一個(gè)或多個(gè)控制寄存器(未示出)的寄存器寫(xiě)入或經(jīng)由通過(guò)環(huán)互連802發(fā)出到圖形處理器的命令進(jìn)行控制。環(huán)互連802將圖形處理器耦合到其它處理組件,例如其它圖形處理器或通用處理器。來(lái)自環(huán)互連的命令通過(guò)命令流播器803解譯,命令流播器803將指令提供給圖形管線820或媒體管線830的各個(gè)組件。

命令流播器803引導(dǎo)從存儲(chǔ)器讀取頂點(diǎn)數(shù)據(jù)并執(zhí)行由命令流播器803提供的頂點(diǎn)處理命令的頂點(diǎn)提取器805組件的操作。頂點(diǎn)提取器805將頂點(diǎn)數(shù)據(jù)提供給頂點(diǎn)著色器807,頂點(diǎn)著色器807對(duì)每個(gè)頂點(diǎn)執(zhí)行坐標(biāo)空間變換和光照操作。頂點(diǎn)提取器805和頂點(diǎn)著色器807通過(guò)經(jīng)由線程分派器831將執(zhí)行線程分派給執(zhí)行單元852A、852B來(lái)執(zhí)行頂點(diǎn)處理指令。

在一個(gè)實(shí)施例中,執(zhí)行單元852A、852B是具有用于執(zhí)行圖形和媒體操作的指令集的向量處理器的陣列。執(zhí)行單元852A、852B具有對(duì)于每個(gè)陣列特定或在陣列之間共享的附連L1高速緩存851。該高速緩存可作為數(shù)據(jù)高速緩存、指令高速緩存、或分區(qū)成在不同分區(qū)中包含數(shù)據(jù)和指令的單個(gè)高速緩存進(jìn)行配置。

在一個(gè)實(shí)施例中,圖形管線820包括用于執(zhí)行3D對(duì)象的硬件加速鑲嵌的鑲嵌組件??删幊掏鈿ぶ?11配置鑲嵌操作??删幊逃蛑?17提供鑲嵌輸出的后端評(píng)估。鑲嵌器813在外殼著色器811的方向操作,并包含用于基于作為圖形管線820的輸入提供的粗糙幾何模型生成詳細(xì)幾何對(duì)象的集合的專用邏輯。如果不使用鑲嵌,那么可繞過(guò)鑲嵌組件811、813、817。

全部幾何對(duì)象可通過(guò)幾何著色器819經(jīng)由分派給執(zhí)行單元852A、852B的一個(gè)或多個(gè)線程進(jìn)行處理,或者它們可直接進(jìn)入到裁剪器829。幾何著色器對(duì)全部幾何對(duì)象進(jìn)行操作,而不是如同圖形管線的之前階段中那樣對(duì)頂點(diǎn)或頂點(diǎn)面片進(jìn)行操作。如果禁用鑲嵌,那么幾何著色器819接收來(lái)自頂點(diǎn)著色器807的輸入。幾何著色器819可由幾何著色器程序編程以便在禁用鑲嵌單元時(shí)執(zhí)行幾何鑲嵌。

在光柵化之前,通過(guò)裁剪器829處理頂點(diǎn)數(shù)據(jù),裁剪器829是具有裁剪和幾何著色器功能的固定功能裁剪器或可編程裁剪器。在一個(gè)實(shí)施例中,渲染輸出管線870中的光柵器873分派像素著色器以便將幾何對(duì)象轉(zhuǎn)化為它們的每個(gè)像素表示。在一個(gè)實(shí)施例中,線程執(zhí)行邏輯850中包括像素著色器邏輯。

圖形引擎具有互連總線、互連結(jié)構(gòu)或允許在圖形引擎的主要組件中傳遞數(shù)據(jù)和消息的某種其它互連機(jī)制。在一個(gè)實(shí)施例中,執(zhí)行單元852A、852B和相關(guān)聯(lián)的高速緩存851、紋理和媒體采樣器854、以及紋理/采樣器高速緩存858經(jīng)由數(shù)據(jù)端口856互連以便執(zhí)行存儲(chǔ)器訪問(wèn)并與圖形引擎的渲染輸出管線組件通信。在一個(gè)實(shí)施例中,采樣器854、高速緩存851、858和執(zhí)行單元852A、852B均具有獨(dú)立的存儲(chǔ)器訪問(wèn)路徑。

在一個(gè)實(shí)施例中,渲染輸出管線870包含用于將基于頂點(diǎn)的對(duì)象轉(zhuǎn)化為它們的相關(guān)聯(lián)的基于像素的表示的光柵器和深度測(cè)試組件873。在一個(gè)實(shí)施例中,光柵器邏輯包括用于執(zhí)行固定功能三角形和線性光柵化的窗口器/屏蔽器單元。在一個(gè)實(shí)施例中,相關(guān)聯(lián)的渲染和深度緩沖器高速緩存878、879也是可用的。像素操作組件877對(duì)數(shù)據(jù)執(zhí)行基于像素的操作,但是在一些情況下,通過(guò)2D引擎841執(zhí)行與2D操作相關(guān)聯(lián)的像素操作(例如,位塊圖像傳輸和混合),或者在顯示時(shí)間通過(guò)顯示器控制器843利用覆蓋顯示器平面代替。在一個(gè)實(shí)施例中,共享L3高速緩存875對(duì)于所有圖形組件均可用,從而允許在不使用主要系統(tǒng)存儲(chǔ)器的情況下共享數(shù)據(jù)。

圖形處理器媒體管線830包括媒體引擎837和視頻前端834。在一個(gè)實(shí)施例中,視頻前端834從命令流播器803接收管線命令。但是,在一個(gè)實(shí)施例中,媒體管線830包括獨(dú)立的命令流播器。視頻前端834先對(duì)媒體命令進(jìn)行處理,然后再將命令發(fā)送給媒體引擎837。在一個(gè)實(shí)施例中,媒體引擎包括用于派生線程以便經(jīng)由線程分派器831分派給線程執(zhí)行邏輯850的線程派生功能性。

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

圖形管線820和媒體管線830可配置成基于多個(gè)圖形和媒體編程接口執(zhí)行操作,并且對(duì)于任何一個(gè)應(yīng)用編程接口(API)都不是特定的。在一個(gè)實(shí)施例中,圖形處理器的驅(qū)動(dòng)器軟件將對(duì)于特定圖形或媒體庫(kù)特定的API調(diào)用轉(zhuǎn)譯成可通過(guò)圖形處理器處理的命令。在各種實(shí)施例中,對(duì)由Khronos Group支持的開(kāi)放圖形庫(kù)(OpenGL)和開(kāi)放計(jì)算語(yǔ)言(OpenCL)、來(lái)自微軟公司的Direct3D庫(kù)、或者在一個(gè)實(shí)施例中對(duì)于OpenGL和D3D兩者提供支持。也可對(duì)開(kāi)放源計(jì)算機(jī)視覺(jué)庫(kù)(OpenCV)提供支持。如果可進(jìn)行從具有兼容的3D管線的未來(lái)API的管線到圖形處理器的管線的映射,那么還將支持該未來(lái)API。

圖形管線編程-圖9A-B

圖9A是示出根據(jù)一個(gè)實(shí)施例的圖形處理器命令格式的框圖,而圖9B是示出根據(jù)一個(gè)實(shí)施例的圖形處理器命令序列的框圖。圖9A中的實(shí)線框示出圖形命令中一般包含的組成,而虛線包括可選或者只包含在圖形命令的子集中的組成。圖9A的示例性圖形處理器命令格式900包括用于標(biāo)識(shí)命令的目標(biāo)客戶端902、命令操作代碼(操作碼)904和命令的相關(guān)數(shù)據(jù)906的數(shù)據(jù)字段。在一些命令中,還包括子操作碼905和命令大小908。

客戶端902指定處理命令數(shù)據(jù)的圖形裝置的客戶端單元。在一個(gè)實(shí)施例中,圖形處理器命令解析器檢查每個(gè)命令的客戶端字段以便調(diào)節(jié)命令的進(jìn)一步處理并將命令數(shù)據(jù)路由給合適的客戶端單元。在一個(gè)實(shí)施例中,圖形處理器客戶端單元包括存儲(chǔ)器接口單元、渲染單元、2D單元、3D單元和媒體單元。每個(gè)客戶端單元具有用于處理命令的對(duì)應(yīng)處理管線。一旦客戶端單元接收到命令,客戶端單元便讀取操作碼904和子操作碼905(如果存在的話),以便確定要執(zhí)行的操作??蛻舳藛卧妹畹臄?shù)據(jù)906字段中的信息執(zhí)行命令。對(duì)于一些命令,預(yù)期顯式命令大小908指定命令的大小。在一個(gè)實(shí)施例中,命令解析器基于命令操作碼自動(dòng)確定至少一些命令的大小。在一個(gè)實(shí)施例中,經(jīng)由多個(gè)雙字對(duì)準(zhǔn)命令。

圖9B中的流程圖示出樣本命令序列910。在一個(gè)實(shí)施例中,以圖形處理器的實(shí)施例為特色的數(shù)據(jù)處理系統(tǒng)的軟件或固件利用所示的命令序列的版本來(lái)設(shè)立、執(zhí)行和終止圖形操作的集合。雖然為了舉例的目的示出并描述樣本命令序列,但是實(shí)施例不限于這些命令或不限于該命令序列。而且,可在命令序列中按命令批發(fā)出命令,從而使得圖形處理器將按照至少部分地同步的方式處理命令序列。

樣本命令序列910可從管線刷新命令912開(kāi)始,以使得任何活動(dòng)圖形管線完成管線的當(dāng)前待決命令。在一個(gè)實(shí)施例中,3D管線922和媒體管線924并沒(méi)有同步操作。執(zhí)行管線刷新以使得活動(dòng)圖形管線完成任何待決命令。響應(yīng)于管線刷新,圖形處理器的命令解析器將暫停命令處理,直到活動(dòng)繪圖引擎完成待決操作并且相關(guān)讀取高速緩存無(wú)效為止。可選地,可將標(biāo)記為“臟”的渲染高速緩存中的任何數(shù)據(jù)刷新到存儲(chǔ)器。為了管線同步化,或者在使圖形處理器處于低功率狀態(tài)之前,可使用管線刷新命令912。

當(dāng)命令序列要求圖形處理器在管線之間明確切換時(shí),使用管線選擇命令913。除非執(zhí)行上下文是要為兩個(gè)管線發(fā)出命令,否則在發(fā)出管線命令之前,在執(zhí)行上下文內(nèi)只需管線選擇命令913一次。在一個(gè)實(shí)施例中,就在經(jīng)由管線選擇命令913進(jìn)行管線切換之前立即需要管線刷新命令912。

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

返回緩沖器狀態(tài)命令916用于為相應(yīng)管線配置返回緩沖器的集合以便寫(xiě)入數(shù)據(jù)。一些管線操作需要分配、選擇或配置一個(gè)或多個(gè)返回緩沖器,操作將處理期間的中間數(shù)據(jù)寫(xiě)入到這一個(gè)或多個(gè)返回緩沖器。圖形處理器還利用一個(gè)或多個(gè)返回緩沖器來(lái)存儲(chǔ)輸出數(shù)據(jù)并執(zhí)行交叉線程通信。返回緩沖器狀態(tài)916包括選擇用于管線操作的集合的返回緩沖器的大小和數(shù)量。

命令序列中的剩余命令基于操作的活動(dòng)管線而不同?;诠芫€確定920,從3D管線狀態(tài)930開(kāi)始對(duì)于3D管線922定制命令序列,或者從媒體管線狀態(tài)940開(kāi)始對(duì)于媒體管線924定制命令序列。

3D管線狀態(tài)930的命令包括用于頂點(diǎn)緩沖器狀態(tài)、頂點(diǎn)元素狀態(tài)、恒定顏色狀態(tài)、深度緩沖器狀態(tài)以及在處理3D圖元命令之前要配置的其它狀態(tài)變量的3D狀態(tài)設(shè)置命令。至少部分地基于使用中的特定3D API確定這些命令的值。如果將不使用某些管線元件,那么3D管線狀態(tài)930命令還能夠選擇性地禁用或繞過(guò)這些管線元件。

3D圖元932命令用于提交即將通過(guò)3D管線處理的3D圖元。將經(jīng)由3D圖元932命令傳遞給圖形處理器的命令和相關(guān)聯(lián)的參數(shù)轉(zhuǎn)發(fā)給圖形管線中的頂點(diǎn)提取功能。頂點(diǎn)提取功能利用3D圖元932命令數(shù)據(jù)生成頂點(diǎn)數(shù)據(jù)結(jié)構(gòu)。將頂點(diǎn)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在一個(gè)或多個(gè)返回緩沖器中。利用3D圖元932命令來(lái)經(jīng)由頂點(diǎn)著色器對(duì)3D圖元執(zhí)行頂點(diǎn)操作。為了處理頂點(diǎn)著色器,3D管線922將著色器執(zhí)行線程分派給圖形處理器執(zhí)行單元。

經(jīng)由執(zhí)行934命令或事件觸發(fā)3D管線922。在一個(gè)實(shí)施例中,寄存器寫(xiě)入觸發(fā)命令執(zhí)行。在一個(gè)實(shí)施例中,經(jīng)由命令序列中的‘go’或‘kick’命令觸發(fā)執(zhí)行。在一個(gè)實(shí)施例中,通過(guò)利用管線同步化命令以便通過(guò)圖形管線刷新命令序列來(lái)觸發(fā)命令執(zhí)行。3D管線將對(duì)3D圖元執(zhí)行幾何處理。一旦操作完成,便對(duì)所得幾何對(duì)象進(jìn)行光柵化,并且像素引擎對(duì)所得像素進(jìn)行上色。對(duì)于像素著色和像素后端操作,還可包括用于控制這些操作的另外的命令。

當(dāng)執(zhí)行媒體操作時(shí),樣本命令序列910遵循媒體管線924路徑。一般來(lái)說(shuō),媒體管線924的特定使用和編程方式取決于將要執(zhí)行的媒體或計(jì)算操作。在媒體解碼期間,可將特定媒體解碼操作卸載到媒體管線。也可繞過(guò)媒體管線,并且可利用由一個(gè)或多個(gè)通用處理核提供的資源整體或部分地執(zhí)行媒體解碼。在一個(gè)實(shí)施例中,媒體管線還包括用于通用圖形處理器單元(GPGPU)操作的元件,其中圖形處理器用于利用與圖形圖元的渲染明確無(wú)關(guān)的計(jì)算著色器程序來(lái)執(zhí)行SIMD向量操作。

以與3D管線922類似的方式配置媒體管線924。在媒體對(duì)象命令942之前分派媒體管線狀態(tài)命令940的集合,或?qū)⑺鼈兎旁诿钚蛄兄械拿襟w對(duì)象命令942之前。媒體管線狀態(tài)命令940包括用于配置將用于處理媒體對(duì)象的媒體管線元件的數(shù)據(jù)。這包括用于配置媒體管線內(nèi)的視頻解碼和視頻編碼邏輯的數(shù)據(jù),例如編碼或解碼格式。媒體管線狀態(tài)命令940還支持使用到包含一批狀態(tài)設(shè)置的“間接”狀態(tài)元素的一個(gè)或多個(gè)指針。

媒體對(duì)象命令942提供到媒體對(duì)象的指針以便通過(guò)媒體管線進(jìn)行處理。媒體對(duì)象包括包含即將處理的視頻數(shù)據(jù)的存儲(chǔ)器緩沖器。在一個(gè)實(shí)施例中,在發(fā)出媒體對(duì)象命令942之前,所有媒體管線狀態(tài)都必須是有效的。一旦配置了管線狀態(tài)并將媒體對(duì)象命令942排隊(duì),便經(jīng)由執(zhí)行934命令或等效執(zhí)行事件(例如,寄存器寫(xiě)入)觸發(fā)媒體管線924。然后,可通過(guò)由3D管線922或媒體管線924提供的操作對(duì)來(lái)自媒體管線924的輸出進(jìn)行后處理。在一個(gè)實(shí)施例中,以與媒體操作類似的方式配置和執(zhí)行GPGPU操作。

圖形軟件體系結(jié)構(gòu)-圖10

圖10示出根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例性圖形軟件體系結(jié)構(gòu)。該軟件體系結(jié)構(gòu)包括3D圖形應(yīng)用1010、操作系統(tǒng)1020和至少一個(gè)處理器1030。處理器1030包括圖形處理器1032和一個(gè)或多個(gè)通用處理器核1034。圖形應(yīng)用1010和操作系統(tǒng)1020均在數(shù)據(jù)處理系統(tǒng)的系統(tǒng)存儲(chǔ)器1050中執(zhí)行。

在一個(gè)實(shí)施例中,3D圖形應(yīng)用1010包含包括著色器指令1012的一個(gè)或多個(gè)著色器程序。著色器語(yǔ)言指令可以是高級(jí)著色器語(yǔ)言,例如高級(jí)著色器語(yǔ)言(HLSL)或OpenGL著色器語(yǔ)言(GLSL)。該應(yīng)用還包括適合通過(guò)通用處理器核1034執(zhí)行的機(jī)器語(yǔ)言的可執(zhí)行指令1014。該應(yīng)用還包括由頂點(diǎn)數(shù)據(jù)定義的圖形對(duì)象1016。

操作系統(tǒng)1020可以是可從華盛頓雷德蒙德的微軟公司獲得的WINDOWSTM操作系統(tǒng)、專有UNIX操作系統(tǒng)、或利用Linux內(nèi)核的變型的開(kāi)放源UNIX類操作系統(tǒng)。當(dāng)Direct3D API在使用中時(shí),操作系統(tǒng)1020利用前端著色器編譯器1024將HLSL的任何著色器指令1012編譯為較低級(jí)著色器語(yǔ)言。編譯可以是即時(shí)編譯,或者應(yīng)用可執(zhí)行共享預(yù)編譯。在一個(gè)實(shí)施例中,在3D圖形應(yīng)用1010的編譯期間,將高級(jí)著色器編譯為低級(jí)著色器。

用戶模式圖形驅(qū)動(dòng)器1026可包含用于將著色器指令1012轉(zhuǎn)化為硬件特定表示的后端著色器編譯器1027。當(dāng)OpenGL API在使用中時(shí),將GLSL高級(jí)語(yǔ)言的著色器指令1012傳遞給用戶模式圖形驅(qū)動(dòng)器1026以用于編譯。用戶模式圖形驅(qū)動(dòng)器利用操作系統(tǒng)內(nèi)核模式功能1028與內(nèi)核模式圖形驅(qū)動(dòng)器1029通信。內(nèi)核模式圖形驅(qū)動(dòng)器1029與圖形處理器1032通信以便分派命令和指令。

就本文中描述各種操作或功能來(lái)說(shuō),可將它們描述或定義為硬件電路、軟件代碼、指令、配置和/或數(shù)據(jù)。內(nèi)容可在硬件邏輯中實(shí)施,或者可作為可直接執(zhí)行的軟件(“對(duì)象”或“可執(zhí)行”形式)、源代碼、設(shè)計(jì)成在圖形引擎上執(zhí)行的高級(jí)著色器代碼、或特定處理器或圖形核的指令集中的低級(jí)匯編語(yǔ)言代碼實(shí)施。本文中描述的實(shí)施例的軟件內(nèi)容可經(jīng)由其上存儲(chǔ)有該內(nèi)容的制品、或經(jīng)由操作通信接口以便經(jīng)由通信接口發(fā)送數(shù)據(jù)的方法提供。

非暫時(shí)性機(jī)器可讀存儲(chǔ)介質(zhì)的形式的制品可存儲(chǔ)指令以使得機(jī)器執(zhí)行描述的功能或操作,并且包括用于存儲(chǔ)可由機(jī)器(例如,計(jì)算裝置、電子系統(tǒng)等)訪問(wèn)的形式的信息的任何機(jī)制,例如可刻錄/不可刻錄介質(zhì)(例如,只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃速存儲(chǔ)器裝置等)。通信接口包括用于對(duì)接到硬接線、無(wú)線、光等介質(zhì)中的任何介質(zhì)以便通信到另一裝置的任何機(jī)制,例如存儲(chǔ)器總線接口、處理器總線接口、互聯(lián)網(wǎng)連接、盤控制器等。通信接口可經(jīng)由一個(gè)或多個(gè)命令或信號(hào)進(jìn)行訪問(wèn),并且可通過(guò)提供包括配置參數(shù)的命令或通過(guò)發(fā)送信號(hào)以便使通信接口準(zhǔn)備好提供描述軟件內(nèi)容的數(shù)據(jù)信號(hào)來(lái)進(jìn)行配置。

圖形處理器執(zhí)行資源的動(dòng)態(tài)縮放-圖11-21

在單個(gè)幀內(nèi)處理的圖形操作可包括與其它資源相比更繁重地利用一些圖形處理器資源、或者隨時(shí)間越來(lái)越繁重地利用一些資源的各種圖形工作負(fù)載。在一些情況下,例如當(dāng)圖形核執(zhí)行資源未充分使用時(shí),可‘按比例縮減’執(zhí)行資源,而沒(méi)有不利地影響性能。換句話說(shuō),可對(duì)資源的一個(gè)或多個(gè)實(shí)例進(jìn)行功率門控,從而留下較少數(shù)量的實(shí)例是活動(dòng)并可用于服務(wù)于工作負(fù)載的。當(dāng)工作負(fù)載越來(lái)越繁重地利用功率門控的資源時(shí),可在稍后的時(shí)間將所述資源再次通電。

本文中描述的圖形處理器的實(shí)施例包括用于在幀期間動(dòng)態(tài)地啟用或禁用圖形執(zhí)行資源的功率管理邏輯。在一個(gè)實(shí)施例中,功率管理邏輯縮放每個(gè)圖形核內(nèi)的圖形執(zhí)行單元。在一個(gè)實(shí)施例中,功率管理邏輯在圖形處理幀期間管理圖形核或子核(例如,核切片或子切片)的功率狀態(tài)。在一個(gè)實(shí)施例中,功率管理邏輯管理圖形子核內(nèi)的執(zhí)行單元的功率狀態(tài)。在一個(gè)實(shí)施例中,圖形執(zhí)行資源基于使用率進(jìn)行動(dòng)態(tài)縮放。在一個(gè)實(shí)施例中,圖形執(zhí)行資源響應(yīng)于諸如從圖形API接收新繪圖調(diào)用、接收新一批命令(例如,批緩沖器)或接收管線刷新命令(例如,圖9B的管線刷新912)的事件進(jìn)行縮放。

接下來(lái)的論述涉及‘按比例縮減’和‘按比例放大’資源。按比例縮減執(zhí)行資源意味著對(duì)多個(gè)執(zhí)行單元、圖形核或圖形子核進(jìn)行功率門控。按比例放大執(zhí)行資源意味著對(duì)多個(gè)執(zhí)行單元、圖形核或圖形子核通電(例如,功率去門控(ungate))。

圖11是根據(jù)一個(gè)實(shí)施例包括可縮放資源和功率控制單元(PCU)1140的圖形核1100的框圖。在一個(gè)實(shí)施例中,圖形處理器包括圖形處理器核1100的一個(gè)或多個(gè)實(shí)例,圖形處理器核1100可以是圖5的圖形核580A-N之一的版本。圖形核1100包括第一子核1150和第二子核1160,每個(gè)子核可通過(guò)PCU 1140進(jìn)行功率門控。第一子核1150包括EU 1152和采樣器1154。第二子核1160包括EU 1162和采樣器1164。在一個(gè)實(shí)施例中,每個(gè)子核1150、1160包括如圖6所示的執(zhí)行資源600的變型,它包括EU 608A-N的可縮放陣列。示例性可縮放EU陣列包括8個(gè)EU,其中在操作期間可通過(guò)PCU 1140對(duì)其中2個(gè)、4個(gè)或6個(gè)EU進(jìn)行功率門控。在一個(gè)實(shí)施例中,子核1150、1160均與共享資源1170的集合耦合,共享資源1170包括一個(gè)或多個(gè)共享高速緩存和像素處理邏輯。

功率控制單元(PCU)1140可配置成管理執(zhí)行單元的縮放、圖形核的縮放或圖形子核的縮放。盡管圖中示出PCU 1140位于圖形核1100內(nèi),但是功率控制邏輯可駐存在位于圖形核的外部的邏輯模塊中,或者完全位于GPU之外,例如位于如圖2所示的處理器系統(tǒng)代理210中。圖12中進(jìn)一步詳細(xì)示出PCU 1140的內(nèi)部。

盡管示出一個(gè)圖形處理器核和兩個(gè)子核,但是GPU也可包括兩個(gè)或兩個(gè)以上圖形核,每個(gè)圖形核包括三個(gè)或三個(gè)以上子核?;蛘撸谥圃鞛榈凸β什僮鲗S械嘏渲玫腉PU變型時(shí),可省略或禁用一個(gè)或多個(gè)子核。

圖12是根據(jù)一個(gè)實(shí)施例的功率控制單元1140的框圖。在一個(gè)實(shí)施例中,功率控制單元1140包括配置成控制圖形核1100的各種功率管理參數(shù)的調(diào)整的功率管理微控制器1200。功率管理參數(shù)包括當(dāng)前硬件狀態(tài)1210,它用于確定是否通過(guò)啟用多個(gè)EU或?qū)Χ鄠€(gè)EU進(jìn)行功率門控來(lái)按比例放大或縮減執(zhí)行資源。

在一個(gè)實(shí)施例中,硬件狀態(tài)1210包括來(lái)自用于跟蹤每個(gè)核或子核的資源使用率并在不影響性能的情況下功率門控可能時(shí)(例如,當(dāng)使用率降低至低于閾值時(shí))在給定的圖形處理幀內(nèi)標(biāo)記窗口的硬件活動(dòng)計(jì)數(shù)器的集合的數(shù)據(jù)。硬件狀態(tài)還可包括諸如下列的信息:當(dāng)前批緩沖器ID編號(hào)或管線刷新ID編號(hào),使用中的紋理類型,或在下文描述的功率門控邏輯操作期間使用的任何其它信息。

未充分使用的圖形資源的功率門控可使得能夠降低圖形處理器功率耗散(例如,泄漏功率)。降低的功率耗散使得能夠降低電池操作的裝置內(nèi)的功耗,而沒(méi)有降低系統(tǒng)性能。在一些情況下,降低的功率耗散可通過(guò)允許增加活動(dòng)圖形資源的時(shí)鐘頻率而使得性能增加成為可能,從而使得在不超過(guò)指定功率預(yù)算的情況下能夠增加性能。

跨活動(dòng)子核的執(zhí)行單元的動(dòng)態(tài)縮放

在一些實(shí)施例中,減少活動(dòng)EU的數(shù)量導(dǎo)致圖形處理器最大當(dāng)前負(fù)載(例如,ICCmax)減小。圖形處理器最大當(dāng)前負(fù)載(例如,ICCmax)的減小可使得能夠在不超過(guò)由功率預(yù)算施加的極限的情況下增加圖形處理器頻率。盡管更少EU是活動(dòng)的,但是活動(dòng)EU可以按更高頻率執(zhí)行。因此,在一些情況下,當(dāng)執(zhí)行不受執(zhí)行資源的限制的圖形工作負(fù)載時(shí),執(zhí)行單元的動(dòng)態(tài)縮放可為ICCmax受限的產(chǎn)品提供可測(cè)量的性能益處。

但是,對(duì)于廣泛利用執(zhí)行資源的圖形工作負(fù)載,可在按比例縮減的操作期間實(shí)現(xiàn)性能的顯著降低。EU縮放的試驗(yàn)結(jié)果表明,EU使用率跨EU縮放模式維持類似形狀和輪廓,但是當(dāng)按比例縮減EU時(shí),每個(gè)EU的使用率變高,并且操作要花費(fèi)更長(zhǎng)時(shí)間來(lái)完成。然而,在高EU使用率的周期期間,相對(duì)于按比例放大的配置,在按比例縮減的配置上的操作實(shí)現(xiàn)大得多的性能代價(jià),因?yàn)榘幢壤s減的GPU提供更少的計(jì)算資源來(lái)執(zhí)行操作。另外,減少執(zhí)行資源可導(dǎo)致高EU使用率的周期延長(zhǎng),這可限制由于按比例縮減執(zhí)行資源而導(dǎo)致的功率節(jié)省。

圖13是在游戲應(yīng)用的一個(gè)幀期間的三個(gè)示例性圖形處理器核的執(zhí)行單元(EU)的使用率的曲線圖。這三個(gè)圖形處理器單元(GPU)核中的每個(gè)核均包括三個(gè)子核(有時(shí)稱為核子切片)。對(duì)于總共24或18或12個(gè)EU,每個(gè)子核分別具有8或6或4個(gè)EU。示例性曲線圖中的EU使用率是基于在EU浮點(diǎn)單元上執(zhí)行的指令的數(shù)量和類型計(jì)算的,并且在10,000個(gè)時(shí)鐘上求平均,即,圖中的每條曲線的每個(gè)點(diǎn)表示10,000個(gè)時(shí)鐘上的平均EU使用率。虛線表示3×4 GPU核的使用率1304,實(shí)線表示3×6 GPU核的使用率1306,而點(diǎn)劃線表示3×8 GPU核的使用率1308。

在例如曲線圖區(qū)域1302和1310中可見(jiàn),在所有三種情況中,這三個(gè)GPU的使用率具有類似‘形狀’(高和低)。但是,具有較少執(zhí)行資源的GPU的使用率曲線相對(duì)于具有較大量執(zhí)行資源的GPU的使用率曲線在時(shí)間上有所偏移。盡管每個(gè)GPU執(zhí)行相同工作負(fù)載,但是具有較少執(zhí)行資源的GPU對(duì)于每個(gè)工作負(fù)載需要較長(zhǎng)的處理周期。此外,具有最少執(zhí)行資源的GPU的使用率曲線經(jīng)歷大得多的時(shí)間偏移,這表明在每個(gè)高使用率(例如,高于70%-80%)周期之后的持續(xù)性能代價(jià)。因此,本文中描述的圖形處理器的實(shí)施例采用配置成防止發(fā)生相對(duì)于當(dāng)前GPU工作負(fù)載GPU執(zhí)行資源顯著過(guò)小的場(chǎng)景的EU縮放系統(tǒng)。

在高EU使用率周期期間,可以按比例放大活動(dòng)EU的數(shù)量以便提供另外的執(zhí)行資源來(lái)執(zhí)行圖形應(yīng)用。這些另外的資源可提供改善的圖形性能。但是,在按比例放大的過(guò)渡時(shí)期期間執(zhí)行的圖形操作可繼續(xù)實(shí)現(xiàn)降低的性能,直到另外的EU變成活動(dòng)為止。為了解決過(guò)渡性能代價(jià),可基于即將到來(lái)的高EU使用率周期的領(lǐng)先指示符預(yù)先按比例放大EU的數(shù)量。

圖14是突出新繪圖調(diào)用的提交的示例性3×8 GPU的使用率的曲線圖。使用率1408示為是3×8 GPU的實(shí)線,它與圖13中的3×8 GPU的使用率1308相互關(guān)聯(lián)。沿3×8使用率1408的每個(gè)‘x’1418指示在過(guò)去的10,000個(gè)時(shí)鐘期間將一個(gè)或多個(gè)新繪圖調(diào)用提交給GPU。利用每個(gè)新繪圖調(diào)用,使得EU執(zhí)行處理新工作負(fù)載的操作。因此,新繪圖調(diào)用一般與EU使用率的增加有關(guān)。例如,在曲線圖區(qū)域1402內(nèi),提交了大量新繪圖調(diào)用,并觀察到高達(dá)80%-90%的使用率。這與曲線圖區(qū)域1404形成對(duì)比,在曲線圖區(qū)域1404中,GPU沒(méi)有接收到任何新繪圖調(diào)用,并且使用率保持穩(wěn)定。因此,至少一個(gè)實(shí)施例利用向GPU提交新繪圖調(diào)用作為即將發(fā)生的高EU使用率周期的指示。

圖15是根據(jù)一個(gè)實(shí)施例用于管理圖形處理器執(zhí)行單元的縮放的邏輯的流程圖。如框1502所示,功率單元(例如,圖12的PCU 1140)可配置成監(jiān)測(cè)活動(dòng)GPU。如框1504所示,功率單元監(jiān)測(cè)包括EU使用率和繪圖調(diào)用提交的參數(shù)。在一個(gè)實(shí)施例中,GPU配置成輸出關(guān)于EU使用率的性能統(tǒng)計(jì),它可基于在一段時(shí)間周期內(nèi)在EU的浮點(diǎn)單元(FPU)上執(zhí)行的指令的數(shù)量和類型計(jì)算獲得。在一個(gè)實(shí)施例中,經(jīng)由通過(guò)GPU提供的性能計(jì)數(shù)器的集合報(bào)告性能統(tǒng)計(jì)。在一個(gè)實(shí)施例中,周期是10,000個(gè)時(shí)鐘,但是周期也可隨實(shí)施例變化。峰值和平均使用率均可用于確定整體EU使用率。在一個(gè)實(shí)施例中,GPU配置成輸出用于標(biāo)記向硬件提交新繪圖調(diào)用的硬件信號(hào)。該信號(hào)可對(duì)于提交給GPU的每個(gè)新繪圖調(diào)用或?qū)τ谠诙鄠€(gè)時(shí)鐘內(nèi)提交的每組新繪圖調(diào)用斷言一次。在一個(gè)實(shí)施例中,GPU的軟件圖形驅(qū)動(dòng)器可指示即將來(lái)臨的新圖形操作的提交。

如框1506所示,功率單元周期性地確定是否提交了新繪圖調(diào)用。當(dāng)沒(méi)有檢測(cè)到新繪圖調(diào)用時(shí),功率單元基于當(dāng)前的EU使用率縮放EU,如框1510所示。但是,當(dāng)功率單元檢測(cè)到提交了新繪圖調(diào)用時(shí),將啟用所有可用EU的信號(hào)發(fā)送給GPU,如框1508所示。一旦啟用所有EU,監(jiān)測(cè)器便可在框1504返回監(jiān)測(cè)EU使用率和繪圖調(diào)用提交。

盡管向GPU提交繪圖調(diào)用一般指示即將發(fā)生的高EU使用率周期,但是繪圖調(diào)用提交也可能不導(dǎo)致高EU使用率周期。因此,如果沒(méi)有因繪圖調(diào)用提交導(dǎo)致高使用率周期,那么可隨后按比例縮減按比例放大的EU。在一個(gè)實(shí)施例中,利用監(jiān)測(cè)窗口和判定窗口的更詳細(xì)算法可基于當(dāng)前和預(yù)測(cè)的EU使用率準(zhǔn)確評(píng)估和縮放執(zhí)行資源。在每個(gè)監(jiān)測(cè)窗口期間,收集EU使用率統(tǒng)計(jì)。在判定窗口結(jié)束時(shí),諸如圖12的功率微控制器1200的狀態(tài)機(jī)或嵌入式功率管理微控制器評(píng)估收集的統(tǒng)計(jì)。然后,微控制器可確定是按比例放大還是按比例縮減EU。圖16-17中更詳細(xì)地論述微控制器算法。

圖16是根據(jù)一個(gè)實(shí)施例通過(guò)功率控制器管理執(zhí)行單元的縮放的另外的邏輯的流程圖。在一個(gè)實(shí)施例中,如框1602所示,定義X微秒(μs)的‘監(jiān)測(cè)’窗口和Y μs的‘判定窗口’。X和Y的值可預(yù)先確定或可運(yùn)行時(shí)配置。示例性監(jiān)測(cè)窗口X是50μs,而示例性判定窗口Y是500μs。但是,與監(jiān)測(cè)和判定窗口相關(guān)聯(lián)的值可以更大或更小,或者可以具有相同值。一般來(lái)說(shuō),相對(duì)于判定窗口值更小的監(jiān)測(cè)窗口值使得能夠以更高粒度收集EU使用率數(shù)據(jù),從而允許檢測(cè)使用率的短持續(xù)時(shí)間峰值。

如框1604所示,監(jiān)測(cè)和判定循環(huán)可從確定是否提交了新繪圖調(diào)用或其它相關(guān)圖形操作開(kāi)始。如框1606所示,如果提交了新繪圖調(diào)用,那么激活所有可用EU,而與當(dāng)前使用率等級(jí)無(wú)關(guān)。在接收到繪圖調(diào)用時(shí)激活所有EU可降低在按比例縮減執(zhí)行資源時(shí)出乎意料地接收到計(jì)算上密集的工作負(fù)載的風(fēng)險(xiǎn)。如果沒(méi)有新繪圖調(diào)用提交給GPU,那么計(jì)算當(dāng)前的EU使用率統(tǒng)計(jì),如框1608所示。在一個(gè)實(shí)施例中,在整個(gè)監(jiān)測(cè)窗口計(jì)算EU使用率統(tǒng)計(jì),直到監(jiān)測(cè)窗口到期,如框1610所示。如果監(jiān)測(cè)窗口到期,那么如框1612所示,存儲(chǔ)EU使用率統(tǒng)計(jì),并且如框1614所示,進(jìn)行檢查以便確定判定窗口是否到期。

在一個(gè)實(shí)施例中,如果在框1614確定當(dāng)前的判定窗口到期,那么作出通過(guò)啟用(例如,功率去門控)或功率門控EU按比例放大或縮減執(zhí)行資源的判定,如框1616所示。在一個(gè)實(shí)施例中,與在框1616示出的EU縮放相關(guān)聯(lián)的硬件等待時(shí)間對(duì)與判定窗口的持續(xù)時(shí)間相關(guān)聯(lián)的Y值施加了最小極限,這如上文在框1602處所示那樣定義。在一個(gè)實(shí)施例中,允許選擇進(jìn)行功率門控的EU的執(zhí)行管線完成。另外,可將GPU頻率編程為更高或更低值以便與同啟用的EU集合相關(guān)聯(lián)的ICCmax極限匹配。因此,判定窗口的最小持續(xù)時(shí)間可受到與啟用和禁用EU相關(guān)聯(lián)的等待時(shí)間的限制。一些實(shí)施例可配置成使判定窗口通常不超過(guò)每隔幾百微秒到期。

在每個(gè)判定窗口之后,功率控制器可根據(jù)存儲(chǔ)的EU使用率統(tǒng)計(jì)縮放EU計(jì)數(shù),如框1616所示??刹捎盟惴ɑ蚩s放策略來(lái)選擇多個(gè)EU以便基于上一個(gè)判定窗口上的峰值和平均使用率在下一個(gè)判定窗口期間激活或去激活。圖17中示出示例性EU縮放算法。

圖17是根據(jù)一個(gè)實(shí)施例用于確定圖形執(zhí)行資源的縮放因子的邏輯的流程圖??s放算法可配置成考慮在由功率控制器采集的使用率統(tǒng)計(jì)內(nèi)的各種數(shù)據(jù)元素,包括峰值使用率,如框1702所示,并將期間的使用率求平均,如框1706所示。在框1702,功率控制器分析峰值使用率,并且如框1704所示,確定峰值使用率是否超過(guò)在判定窗口內(nèi)的上一個(gè)監(jiān)測(cè)窗口上確定的閾值。每個(gè)判定窗口內(nèi)可包含多個(gè)監(jiān)測(cè)窗口,并且縮放算法可配置成考慮跨這么多監(jiān)測(cè)窗口的峰值和平均使用率。在一個(gè)實(shí)施例中,如果框1702處的分析指示在例如當(dāng)前判定窗口內(nèi)的至少兩個(gè)監(jiān)測(cè)窗口內(nèi)峰值使用率超過(guò)80%,那么功率控制器可啟用所有EU,如框1710所示。

類似地,如果在框1706處的使用率統(tǒng)計(jì)指示如框1708所示平均使用率超過(guò)確定的閾值,那么如框1710所示,功率控制器可啟用所有EU。在一個(gè)實(shí)施例中,如果這一個(gè)或多個(gè)監(jiān)測(cè)窗口上的平均使用率超過(guò)60%,那么啟用所有EU。但是,峰值和平均使用率的準(zhǔn)確閾值可針對(duì)每個(gè)工作負(fù)載動(dòng)態(tài)地確定,并且按比例放大和縮減執(zhí)行資源的閾值可改變。當(dāng)使用率統(tǒng)計(jì)的分析指示為判定窗口設(shè)置的峰值和平均閾值均沒(méi)有超過(guò)時(shí),在下一個(gè)判定窗口期間,功率控制器可只啟用EU的子集,如框1712所示。

啟用的EU子集可導(dǎo)致按比例縮減EU資源并對(duì)EU的子集進(jìn)行功率門控?;蛘撸绻谥芭卸ù翱谏系腅U使用率本身較低,那么當(dāng)前EU使用率可使得按比例放大EU資源,即使只啟用EU的子集。在一個(gè)實(shí)施例中,試驗(yàn)結(jié)果表明,低于20%的使用率指示一些執(zhí)行資源在使用中(例如,不應(yīng)對(duì)整個(gè)GPU、核或子核斷電),但是按比例縮減的EU的集合足以滿足當(dāng)前執(zhí)行圖形操作的需要。然而,當(dāng)使用率一貫超過(guò)60%時(shí),啟用所有可用EU將是有益的。下表1中示出使用率和EU縮放之間的示例性映射,它對(duì)應(yīng)于具有多個(gè)子核的圖形核,其中每個(gè)子核包括8個(gè)EU的陣列。使用率和EU縮放之間的精確關(guān)系可在實(shí)施例之間改變。

表1:示例性子核EU縮放

核和子核的動(dòng)態(tài)縮放

圖形處理器內(nèi)的圖形核或子核(例如,切片或子切片)的數(shù)量可基于預(yù)期的圖形處理器工作負(fù)載靜態(tài)或半靜態(tài)地進(jìn)行調(diào)整,其中可允許需要較多計(jì)算或紋理過(guò)濾資源的工作負(fù)載利用最大數(shù)量的可用圖形核或子核,而可允許需要較少資源的工作負(fù)載對(duì)多個(gè)核或子核斷電以便減少由GPU耗散的功率。對(duì)于靜態(tài)調(diào)整,在工作負(fù)載開(kāi)始時(shí)或在工作負(fù)載的每個(gè)幀開(kāi)始時(shí)確定要使用的核或子核的數(shù)量。例如,對(duì)于輕型工作負(fù)載,例如當(dāng)執(zhí)行不需要廣泛使用圖形資源的休閑游戲時(shí),可在幀開(kāi)始時(shí)對(duì)多個(gè)核或子核進(jìn)行功率門控。

在一個(gè)實(shí)施例中,圖形處理器還配置成基于幀的變化特性動(dòng)態(tài)地縮放圖形處理幀內(nèi)的核或子核的數(shù)量,從而使得GPU能夠在每個(gè)幀的不同部分中以較高或較低數(shù)量的核或子核操作,這另外降低了功率耗散而不降低性能。以下論述的部分互換地使用術(shù)語(yǔ)“核”和“子核”,因?yàn)樵谝粋€(gè)實(shí)施例中,描述的可縮放性概念同樣適用于動(dòng)態(tài)核或子核縮放。

圖18是在處理3D圖形應(yīng)用的幀時(shí)的示例性圖形子核使用率1802的曲線圖。為每個(gè)子核示出的使用率1802包括執(zhí)行資源、紋理處理資源、像素處理資源以及由子核提供的其它資源的使用率。示出的示例性圖形子核使用率表明,圖形子核(和圖形核)使用率可在幀期間動(dòng)態(tài)地改變。例如,曲線圖區(qū)域1808、1810和1812均示出使用率一般低于50%的窗口。總之,在幀的總處理時(shí)間的大約三分之一時(shí)間期間,使用率是較低的。本文中描述的圖形處理器的實(shí)施例可在這些較低使用率窗口期間對(duì)圖形處理器內(nèi)的多個(gè)圖形子核或核的至少其中之一進(jìn)行功率門控,以便在沒(méi)有不利影響性能的情況下降低功耗。在一個(gè)實(shí)施例中,利用硬件活動(dòng)計(jì)數(shù)器來(lái)跟蹤核或子核使用率并在不影響性能的情況下功率門控是可能時(shí)(例如,當(dāng)使用率降至低于某個(gè)閾值時(shí),如同曲線圖區(qū)域1808、1810、1812)在幀內(nèi)標(biāo)記窗口。硬件活動(dòng)計(jì)數(shù)器可跟蹤執(zhí)行資源、紋理處理資源、像素處理資源或由子核提供的其它資源的使用率度量。

但是,不可能在幀期間的任意點(diǎn)對(duì)圖形核或核切片進(jìn)行功率門控或去門控。盡管可在幀內(nèi)較自由地啟用和禁用圖形處理器執(zhí)行單元(例如,EU),但是每個(gè)圖形核或子核可包括供其它核或子核使用的資源(例如,高速緩存資源、紋理采樣器等)。另外,每個(gè)核或子核可包含不應(yīng)在線程內(nèi)的操作完成之前解譯的活動(dòng)線程。

圖18的示例性曲線圖指示在幀期間圖形子核處理新的批緩沖器(例如,newBB 1804)或新的管線刷新(例如,newFlush 1806)的實(shí)例。在一個(gè)實(shí)施例中,每個(gè)新批緩沖器1804或新刷新1806表示GPU可按比例放大或縮減核或子核的實(shí)例。當(dāng)處理新批緩沖器1804時(shí),圖形子核將開(kāi)始處理即將至少部分地同步處理的一組命令,其中數(shù)個(gè)命令將并行執(zhí)行。當(dāng)處理管線刷新1806命令時(shí),任何活動(dòng)圖形管線將完成所有當(dāng)前未決的命令。因此,幀處理期間的新批緩沖器1804和新刷新1806實(shí)例表示可禁用或啟用(例如,功率門控或去門控)圖形核和子核的干凈操作邊界。因此,除了通過(guò)禁用或啟用每個(gè)圖形核或子核內(nèi)的EU來(lái)動(dòng)態(tài)地縮放執(zhí)行資源之外,本文中描述的圖形處理器的實(shí)施例還包括用于在操作邊界處禁用或啟用圖形核或子核、以便在處理圖形操作的幀時(shí)動(dòng)態(tài)地縮放圖形處理器資源的邏輯。

除了在圖形操作期間基于特定窗口內(nèi)的圖形核、子核或EU資源縮放圖形處理器資源之外,本文中描述的圖形處理器的實(shí)施例還包括用于預(yù)測(cè)即將到來(lái)的使用率周期的另外的邏輯。如上所述,即將到來(lái)的高EU使用率周期可與新繪圖調(diào)用相關(guān)。另外,圖形應(yīng)用的圖形操作的單個(gè)幀內(nèi)的圖形核使用率的模式可與相同圖形應(yīng)用的連續(xù)幀內(nèi)的圖形核使用率的模式相關(guān)。因此,實(shí)施例包括用于預(yù)期低使用率窗口并在低使用率窗口臨近開(kāi)始或結(jié)束時(shí)在合適的批緩沖器或管線刷新邊界處對(duì)資源進(jìn)行功率門控或去門控的預(yù)測(cè)邏輯。預(yù)測(cè)邏輯進(jìn)一步精煉功率管理操作以便通過(guò)減少圖形處理器對(duì)于當(dāng)前執(zhí)行的工作負(fù)載資源不足的實(shí)例防止在圖形執(zhí)行資源按比例縮減的周期期間影響整體性能。

圖19和圖20是在處理3D圖形應(yīng)用的連續(xù)幀時(shí)示例性圖形子核使用率的曲線圖。這些連續(xù)幀跟在圖18中示出的幀之后。盡管在處理圖形應(yīng)用的相應(yīng)幀的過(guò)程中圖形子核的使用率可能不相同,但是使用率模式可以類似。例如,圖19的曲線圖區(qū)域1908、1910和1912示出與圖18中示出的曲線圖區(qū)域1808、1810和1812相關(guān)的使用率。圖20的曲線圖區(qū)域2008、2010和2012示出與圖18的曲線圖區(qū)域1808、1810和1812以及圖19的曲線圖區(qū)域1908、1910和1912相關(guān)的使用率。因此,示例性曲線圖表明,在一些實(shí)施例中,在高和低活動(dòng)的類似窗口的情況下,子核使用率跨連續(xù)幀遵循類似模式。在一個(gè)實(shí)施例中,利用跨某個(gè)幀觀察的圖形處理器使用率的模式來(lái)預(yù)測(cè)連續(xù)幀內(nèi)的圖形處理器使用率或精煉連續(xù)幀內(nèi)的圖形處理器使用率的預(yù)測(cè)。

圖21是根據(jù)一個(gè)實(shí)施例用于管理圖形操作幀內(nèi)的圖形核或子核的縮放的邏輯的流程圖。所示的邏輯操作可由例如圖12的PCU 1140或結(jié)合GPU內(nèi)的一個(gè)或多個(gè)其它組件或GPU的驅(qū)動(dòng)器軟件來(lái)執(zhí)行。在一個(gè)實(shí)施例中,盡管為GPU整體確定邏輯操作,但是一個(gè)實(shí)施例在每個(gè)核或子核基礎(chǔ)上執(zhí)行所示操作。這些操作可基于諸如圖形處理器類型、執(zhí)行頻率和圖形工作負(fù)載的因素在從數(shù)百微秒到數(shù)毫秒的范圍內(nèi)的定期時(shí)間間隔內(nèi)重復(fù)。

在每個(gè)循環(huán)開(kāi)始時(shí),在框2102,讀取使用率計(jì)數(shù)器以便確定在上一個(gè)時(shí)間間隔內(nèi)的圖形核或子核使用率。在一個(gè)實(shí)施例中,在該幀期間記錄使用率信息,并標(biāo)識(shí)較高和較低使用率的窗口以用于預(yù)測(cè)隨后幀內(nèi)的使用率。當(dāng)讀取使用率計(jì)數(shù)器時(shí),可讀取狀態(tài)信息以便確定幀的操作集合內(nèi)的當(dāng)前位置。假設(shè)連續(xù)幀通常執(zhí)行類似任務(wù),諸如當(dāng)前批緩沖器ID編號(hào)或在之前幀期間記錄的管線刷新ID編號(hào)的狀態(tài)信息可與高或低使用率周期相關(guān),然后該狀態(tài)信息可用于預(yù)測(cè)連續(xù)幀的使用率。

增加記錄的狀態(tài)信息的細(xì)節(jié)可增加跨連續(xù)幀的使用率預(yù)測(cè)的精度。但是,增加記錄的狀態(tài)的細(xì)節(jié)也增加了采集、維持和分析記錄的狀態(tài)所需的開(kāi)銷量。在一個(gè)實(shí)施例中,通過(guò)在主機(jī)系統(tǒng)上執(zhí)行的圖形驅(qū)動(dòng)器軟件利用一個(gè)或多個(gè)主機(jī)處理器記錄狀態(tài)信息。在該實(shí)施例中,記錄少量狀態(tài)信息,從而在得益于圖形處理器的減小的制造成本的情況下產(chǎn)生降低的預(yù)測(cè)精度。在一個(gè)實(shí)施例中,包含專用功率管理微控制器(例如,圖12的功率微控制器1200)以便讀取和分析更大量的狀態(tài)信息,而不在系統(tǒng)內(nèi)的其它處理器上施加增大的開(kāi)銷。

在框2014,利用狀態(tài)信息來(lái)確定GPU是否在幀內(nèi)的低使用率窗口內(nèi)以及是否在諸如新批緩沖器或管線刷新操作的功率門控操作邊界處。如果兩個(gè)條件都為真,那么GPU可對(duì)一個(gè)或多個(gè)圖形子核或圖形核進(jìn)行功率門控,如框2016所示。如果一個(gè)或兩個(gè)條件都不為真,那么邏輯操作繼續(xù)進(jìn)行到框2108,在框2108,確定GPU是否在低使用率周期結(jié)束附近以及是否在功率去門控邊界處。如果確定GPU在低使用率窗口結(jié)束附近以及在可對(duì)圖形處理器核或子核進(jìn)行去門控的操作邊界上,那么該邏輯配置成繼續(xù)進(jìn)行到框2110,在框2110,對(duì)目前功率門控的核或子核中的一個(gè)或多個(gè)核或子核進(jìn)行去門控。在一個(gè)實(shí)施例中,即使在框2104處確定GPU位于低使用率窗口內(nèi)以及在功率門控邊界處,該邏輯仍可嘗試確定GPU是否正接近低使用率窗口的結(jié)束。在這種情況下,可繞過(guò)框2106處示出的功率門控操作。

在框2112,該邏輯執(zhí)行操作以便確定GPU、核或子核是否在圖形操作的幀結(jié)束時(shí)。如果該幀不完整,那么該邏輯返回到框2102處所示的操作以便開(kāi)始另外的循環(huán)。在一個(gè)實(shí)施例中,該邏輯繼續(xù)進(jìn)行到框2114以便記錄將用于預(yù)測(cè)下一個(gè)幀或幀集合的使用率的完整幀的使用率和狀態(tài)概況,然后如框2116所指示,移動(dòng)到下一個(gè)幀??稍诿總€(gè)幀結(jié)束時(shí)記錄使用率和狀態(tài)概況,并利用它來(lái)預(yù)測(cè)下一個(gè)幀或下一組連續(xù)幀的使用率。在一個(gè)實(shí)施例中,每隔一定幀間隔記錄使用率和狀態(tài)概況,并利用它來(lái)預(yù)測(cè)跨下一個(gè)幀間隔的使用率。

因此,所示邏輯可配置成在需要足夠的執(zhí)行資源之前啟用這些資源??砂凑债?dāng)前使用率計(jì)數(shù)器分析GPU狀態(tài)信息,并可將GPU狀態(tài)信息與基于在之前幀期間采集的信息預(yù)測(cè)當(dāng)前幀內(nèi)的高和低使用率窗口的信息進(jìn)行組合。因此,在進(jìn)入高使用率周期之前,可重新啟用任何功率門控的圖形核或子核。

如本文中所使用,提到一個(gè)或多個(gè)“實(shí)施例”時(shí)應(yīng)理解為描述包含在至少一個(gè)實(shí)現(xiàn)中的特定特征、結(jié)構(gòu)或特性。因此,出現(xiàn)在其中的諸如“在一個(gè)實(shí)施例中”或“在備選實(shí)施例中”的短語(yǔ)均描述各種實(shí)施例和實(shí)現(xiàn),并且不一定都指相同實(shí)施例。但是,它們也不一定相互排斥。

上文公開(kāi)的涉及動(dòng)態(tài)縮放包括執(zhí)行單元和圖形子核的圖形處理器資源的各種實(shí)施例可在集成電路中找到一般用途。在一個(gè)實(shí)施例中,基于諸如執(zhí)行單元的當(dāng)前使用率和來(lái)自圖形API(包括3D圖形API,例如OpenGL或Direct 3D)的新繪圖調(diào)用的提交的度量按比例放大或縮減可用EU。諸如圖形處理器的集成電路設(shè)備可在低使用率期間禁用EU的一部分,并基于諸如提交圖形API調(diào)用(例如,繪圖調(diào)用)的進(jìn)入事件啟用EU的這部分。盡管禁用了EU的子集,但是可增加啟用的EU的頻率,而不增加功率耗散和最大當(dāng)前負(fù)載。在一個(gè)實(shí)施例中,功率控制單元(PCU)耦合到該設(shè)備或集成在該設(shè)備內(nèi),并且包括用于確定何時(shí)對(duì)執(zhí)行單元進(jìn)行功率門控的邏輯。在一個(gè)實(shí)施例中,PCU可對(duì)圖形子核或圖形核進(jìn)行功率門控或功率去門控以便禁用或啟用該子核或核內(nèi)的資源。在一個(gè)實(shí)施例中,對(duì)子核或核進(jìn)行功率門控發(fā)生在諸如新批緩沖器或管線刷新操作的干凈操作邊界上。可通過(guò)GPU硬件或GPU的圖形驅(qū)動(dòng)器來(lái)確定操作邊界??稍趯⒉僮魈峤唤oGPU時(shí)或在GPU接收到操作時(shí)確定操作邊界。

一個(gè)實(shí)施例包括包含圖形處理單元(GPU)的系統(tǒng)。GPU包括一個(gè)或多個(gè)圖形核,其中每個(gè)圖形核包括執(zhí)行單元的陣列。該系統(tǒng)還包括耦合到GPU的PCU。PCU包括用于在執(zhí)行單元的使用率低于第一閾值時(shí)對(duì)每個(gè)圖形核中的執(zhí)行單元陣列中的一個(gè)或多個(gè)執(zhí)行單元進(jìn)行功率門控的邏輯。PCU還可包括用于在GPU接收到新的圖形操作時(shí)啟用每個(gè)圖形核中的所有執(zhí)行單元的邏輯。PCU另外還可包括用于在使用率大于第一閾值時(shí)啟用受到功率門控的執(zhí)行單元中的一個(gè)或多個(gè)執(zhí)行單元并在使用率大于第二閾值時(shí)啟用每個(gè)圖形核中的所有執(zhí)行單元的邏輯。在一個(gè)實(shí)施例中,第一閾值是20%,并且第二閾值是60%。在一個(gè)實(shí)施例中,閾值可動(dòng)態(tài)調(diào)整。

在一個(gè)實(shí)施例中,GPU包括用于報(bào)告執(zhí)行單元的使用率的邏輯,或者GPU以其它方式配置成報(bào)告執(zhí)行單元的使用率。在一個(gè)實(shí)施例中,PCU配置成監(jiān)測(cè)GPU以便確定執(zhí)行單元的使用率。在一個(gè)實(shí)施例中,GPU包括用于啟用指示接收到新的圖形操作的信號(hào)的邏輯。每次接收到操作時(shí)或者當(dāng)在一段時(shí)間內(nèi)接收到多個(gè)操作時(shí),可啟用該信號(hào)。

在一個(gè)實(shí)施例中,配置成監(jiān)測(cè)GPU的邏輯包括通過(guò)以下方法確定EU縮放:定義監(jiān)測(cè)窗口,計(jì)算在監(jiān)測(cè)窗口期間執(zhí)行單元的集合的使用率統(tǒng)計(jì),并在監(jiān)測(cè)窗口到期時(shí)存儲(chǔ)使用率統(tǒng)計(jì)。在一個(gè)實(shí)施例中,用于對(duì)EU的子集進(jìn)行功率門控的邏輯包括:定義判定窗口,當(dāng)判定窗口到期時(shí)檢索存儲(chǔ)的使用率統(tǒng)計(jì),并在存儲(chǔ)的使用率統(tǒng)計(jì)指示使用率低于第一閾值時(shí)對(duì)EU的子集進(jìn)行功率門控。在一個(gè)實(shí)施例中,當(dāng)使用率統(tǒng)計(jì)指示使用率大于第一閾值時(shí),啟用受到功率門控的EU的一部分。在一個(gè)實(shí)施例中,當(dāng)使用率大于第二閾值時(shí),啟用所有EU。每個(gè)EU的EU使用率可由EU內(nèi)的浮點(diǎn)單元(FPU)的使用率確定。

在一個(gè)實(shí)施例中,一種用于縮放GPU中的圖形資源的方法包括:讀取GPU的使用率度量,其中這些度量包括GPU的圖形核或子核的使用率數(shù)據(jù);以及讀取圖形狀態(tài)信息以便確定圖形操作幀內(nèi)的當(dāng)前圖形操作的位置。該方法還包括對(duì)GPU的圖形核或子核進(jìn)行功率門控或功率去門控,其中當(dāng)前圖形操作在該核或子核的低使用率窗口中,并且在允許啟用或禁用圖形核或子核的操作邊界上。在一個(gè)實(shí)施例中,操作邊界包括圖形操作的新批緩沖器中的操作或管線刷新操作。在一個(gè)實(shí)施例中,該方法還包括在低使用率窗口臨近結(jié)束時(shí)對(duì)圖形核或子核進(jìn)行功率去門控。低使用率窗口的結(jié)束可基于當(dāng)前圖形操作在圖形操作幀內(nèi)的位置以及圖形操作的前一個(gè)幀的使用率度量來(lái)預(yù)測(cè)。在一個(gè)實(shí)施例中,該方法還包括:完成圖形操作的幀;存儲(chǔ)該幀的度量和狀態(tài)信息;以及基于存儲(chǔ)的度量和狀態(tài)信息預(yù)測(cè)隨后幀的使用率窗口的集合。

本描述和權(quán)利要求書(shū)中的“第一”、“第二”、“第三”、“第四”等術(shù)語(yǔ)(如果有的話)用于區(qū)分類似元素,并且不一定用于描述特定順序或時(shí)間次序。將了解,如此使用的術(shù)語(yǔ)在合適情況下可互換使用,以使得本文中描述的實(shí)施例能夠例如進(jìn)行在本文中圖示或以其它方式描述的序列以外的序列中的操作。

各種組件可以是用于執(zhí)行描述的操作或功能的部件。本文中描述的每個(gè)組件包括軟件、硬件或它們的組合。這些組件可作為軟件模塊、硬件模塊、專用硬件(例如,應(yīng)用特有硬件、專用集成電路(ASIC)、DSP等)、嵌入式控制器、硬接線電路等實(shí)現(xiàn)。除了本文中的描述以外,在不偏離本發(fā)明的范圍的情況下,可對(duì)公開(kāi)的實(shí)施例和實(shí)現(xiàn)進(jìn)行各種修改。因此,本文中的圖示和示例應(yīng)理解為是說(shuō)明性的而不是限制性意義。本發(fā)明的范圍和精神應(yīng)當(dāng)僅僅參考隨附權(quán)利要求來(lái)估量。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1