在浮點(diǎn)操作中功率降低的方法
【專利摘要】提供用于使能在浮點(diǎn)操作中功率降低的方法。在一個(gè)示例中,系統(tǒng)接收混合乘加指令的浮點(diǎn)數(shù)。系統(tǒng)確定混合乘加指令針對(duì)浮點(diǎn)數(shù)不要求遵從精度標(biāo)準(zhǔn)。系統(tǒng)生成選通信號(hào)用于配置為實(shí)施混合乘加指令的操作的集成電路。系統(tǒng)隨后將選通信號(hào)發(fā)送到集成電路以關(guān)閉包括在集成電路中的多個(gè)邏輯門。
【專利說(shuō)明】:于任何位置。在浮點(diǎn)數(shù)的內(nèi)部表示中該位學(xué)計(jì)數(shù)法的計(jì)算機(jī)實(shí)現(xiàn)。若干年來(lái),計(jì)算機(jī)990年以來(lái),最常見(jiàn)的表示法是由電氣和電
從1222754標(biāo)準(zhǔn)中的標(biāo)準(zhǔn)。在高性能計(jì)算育的是,這類支持在集成電路上的面積和功:準(zhǔn)所闡述的精度和舍入遵從時(shí)該成本尤其
機(jī)系統(tǒng)中實(shí)施浮點(diǎn)操作的更高效的方法。
5浮點(diǎn)操作中功率降低的方法。方法包括接)指令的操作數(shù)八、操作數(shù)8和操作數(shù) ?:,其)口上操作數(shù) ;確定混合乘加指令針對(duì)浮點(diǎn)81811211)用于集成電路,集成電路配置為通I操作數(shù)8的積的低階位來(lái)實(shí)施混合乘加指`具有其他等效的實(shí)現(xiàn)方案。
[0009]圖1是示出配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖。
[0010]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示出并行處理子系統(tǒng)的框圖。
[0011]圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示范性浮點(diǎn)數(shù)的示圖。
[0012]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示范性混合乘加(FMA)指令的示意圖。
[0013]圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、另一示范性FMA指令的示意圖。
[0014]圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、又一示范性FMA指令的示意圖。
[0015]圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示范性乘法器陣列的示意圖。
[0016]圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的運(yùn)算子系統(tǒng)的示意圖。
[0017]圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于使能在浮點(diǎn)操作中降低功率的方法步驟的流程圖。
【具體實(shí)施方式】
[0018]在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒(méi)有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí)施。在其他實(shí)例中,未描述公知特征以避免對(duì)本發(fā)明造成混淆。
[0019]系統(tǒng)概述
[0020]圖1是示出配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括中央處理單元(CPU) 102和包括設(shè)備驅(qū)動(dòng)程序103的系統(tǒng)存儲(chǔ)器104。CPU102和系統(tǒng)存儲(chǔ)器104經(jīng)由可以包括存儲(chǔ)器橋105的互連路徑進(jìn)行通信。存儲(chǔ)器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路等)連接到輸入/輸出(I/O)橋107。I/O橋107,其可以是例如南橋芯片,從一個(gè)或多個(gè)用戶輸入設(shè)備108 (例如鍵盤、鼠標(biāo)等)接收用戶輸入并且經(jīng)由路徑106和存儲(chǔ)器橋105將該輸入轉(zhuǎn)發(fā)到CPU102。并行處理子系統(tǒng)112經(jīng)由總線或其他通信路徑113 (例如高速外圍部件互連(PCI)express、加速圖形端口(AGP)和/或超傳輸鏈路等)耦連到存儲(chǔ)器橋105。在一個(gè)實(shí)現(xiàn)方案中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110(例如常規(guī)的基于陰極射線管(CRT)和/或液晶顯示器(IXD)的監(jiān)視器等)的圖形子系統(tǒng)。系統(tǒng)盤114也連接到I/O橋107。交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)和/或其他端口連接、壓縮光盤(CD)驅(qū)動(dòng)器、數(shù)字視頻光盤(DVD)驅(qū)動(dòng)器、膠片錄制設(shè)備及類似部件,也可以連接到I/O橋107??墒褂萌魏魏线m的協(xié)議,諸如PC1、高速PCI Express (PCIe)、AGP、超傳輸和/或任何其他總線或點(diǎn)對(duì)點(diǎn)通信協(xié)議來(lái)實(shí)現(xiàn)圖1中將各部件互連的通信路徑,并且不同設(shè)備之間的可使用不同協(xié)議的連接在本領(lǐng)域中是已知的。設(shè)備是硬件或硬件和軟件的組合。
[0021]如下文結(jié)合圖3-9更詳細(xì)描述的,并行處理子系統(tǒng)112包括并行處理單元(PTO),其配置為通過(guò)使用使能浮點(diǎn)操作中的功率降低的電路來(lái)執(zhí)行軟件應(yīng)用(例如設(shè)備驅(qū)動(dòng)程序103)。那些分組類型通過(guò)由通信路徑113所使用的通信協(xié)議來(lái)指定。在新分組類型被引入到通信協(xié)議中的情況下(例如由于通信協(xié)議的增強(qiáng)),并行處理子系統(tǒng)112可配置為基于新分組類型生成分組并使用新分組類型來(lái)跨通信路徑113與CPU102 (或其他處理單元)交換數(shù)據(jù)。
[0022]在一個(gè)實(shí)現(xiàn)方案中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成圖形處理單元(⑶們。在另一實(shí)現(xiàn)方案中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用處理的電路,同時(shí)保留本文更詳細(xì)描述的底層(皿(161171叩)的計(jì)算架構(gòu)。在又一實(shí)現(xiàn)方案中,可以將并行處理子系統(tǒng)112與一個(gè)或多個(gè)其他系統(tǒng)元件集成,諸如存儲(chǔ)器橋105、0^102以及1/0橋107,以形成片上系統(tǒng)(^…)。
[0023]應(yīng)該理解,本文所示系統(tǒng)是示意性的,并且變化和修改都是可能的。連接拓?fù)?,包括橋的?shù)目和布置、0^102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例如,在一些實(shí)現(xiàn)方案中,系統(tǒng)存儲(chǔ)器104直接連接到0^102而不是通過(guò)橋,并且其他設(shè)備經(jīng)由存儲(chǔ)器橋105和0^102與系統(tǒng)存儲(chǔ)器104通信。在其他替代性拓?fù)渲校⑿刑幚碜酉到y(tǒng)112連接到1/0橋107或直接連接到0^102,而不是連接到存儲(chǔ)器橋105。而在其他實(shí)現(xiàn)方案中,1/0橋107和存儲(chǔ)器橋105可能被集成到單個(gè)芯片上。大型實(shí)現(xiàn)方案可以包括兩個(gè)或兩個(gè)以上的0^102以及兩個(gè)或兩個(gè)以上的并行處理系統(tǒng)112。本文所示的特定部件是可選的;例如,任意數(shù)目的插卡或外圍設(shè)備都可能得到支持。在一些實(shí)現(xiàn)方案中,交換器116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到1/0橋107。
[0024]圖2是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、并行處理子系統(tǒng)112的框圖。如所示的,并行處理子系統(tǒng)112包括一個(gè)或多個(gè)并行處理單元〔??們202,每個(gè)并行處理單元202都耦連到本地并行處理(^?)存儲(chǔ)器204。通常,并行處理子系統(tǒng)包括V個(gè)其中0 1。(本文中,類似對(duì)象的多個(gè)實(shí)例需要時(shí)以標(biāo)識(shí)對(duì)象的參考數(shù)字和標(biāo)識(shí)實(shí)例的括號(hào)中的數(shù)字來(lái)表示。)^^^202和并行處理存儲(chǔ)器204可使用一個(gè)或多個(gè)集成電路設(shè)備來(lái)實(shí)現(xiàn),諸如可編程處理器、專用集成電路(八310或存儲(chǔ)器設(shè)備,或者以任何其他技術(shù)可行的方式來(lái)實(shí)現(xiàn)。
[0025]再參考圖1,在一些實(shí)現(xiàn)方案中,并行處理子系統(tǒng)112中的一些或所有??口202是具有渲染管線的圖形處理器,其可以配置為實(shí)施與下述相關(guān)的各種任務(wù):經(jīng)由存儲(chǔ)器橋105和總線113從0^102和/或系統(tǒng)存儲(chǔ)器104所供應(yīng)的圖形數(shù)據(jù)生成像素?cái)?shù)據(jù),與本地并行處理存儲(chǔ)器204 (可被用作圖形存儲(chǔ)器,包括例如常規(guī)幀緩沖區(qū)打虹))交互以存儲(chǔ)和更新像素?cái)?shù)據(jù),傳遞像素?cái)?shù)據(jù)到顯示設(shè)備110等等。在一些實(shí)現(xiàn)方案中,并行處理子系統(tǒng)112可包括一個(gè)或多個(gè)作為圖形處理器而操作的??口202以及一個(gè)或多個(gè)用于通用計(jì)算的其他??口202。這些??口可以是同樣的或不同的,并且每個(gè)??口可具有其自身專用并行處理存儲(chǔ)器設(shè)備或不具有專用并行處理存儲(chǔ)器設(shè)備。一個(gè)或多個(gè)??似02可輸出數(shù)據(jù)到顯示設(shè)備110,或者每個(gè)??似02可輸出數(shù)據(jù)到一個(gè)或多個(gè)顯示設(shè)備110。
[0026]在操作中,0^102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,0^102發(fā)出控制??口202的操作的命令。在一些實(shí)現(xiàn)方案中,0^102寫入用于每個(gè)??口202的命令流到入棧緩沖區(qū)(叩也―打虹)中(在圖1或圖2中未明確示出),該數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲(chǔ)器104、并行處理存儲(chǔ)器204、或0^102和??似02都可訪問(wèn)的另一存儲(chǔ)位置中。?叩202從入棧緩沖區(qū)讀取命令流,然后相對(duì)于0^102的操作異步地執(zhí)行命令。
[0027]現(xiàn)在返回參考圖2,每個(gè)??口202包括經(jīng)由連接到存儲(chǔ)器橋105 (或者,在一個(gè)替代性實(shí)現(xiàn)方案中,直接連接到0^102)的通信路徑113與計(jì)算機(jī)系統(tǒng)100的其余部分通信的1/0單元205。??^202到計(jì)算機(jī)系統(tǒng)100的其余部分的連接也可以變化。在一些實(shí)現(xiàn)方案中,并行處理子系統(tǒng)112可實(shí)現(xiàn)為可插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展槽中的插卡。在其他實(shí)現(xiàn)方案中,?叩202可以和諸如存儲(chǔ)器橋105或1/0橋107的總線橋集成在單個(gè)芯片上。而在其他實(shí)現(xiàn)方案中,?叩202的一些或所有元件可以和0^102集成在單個(gè)芯片上。
[0028]在一個(gè)實(shí)現(xiàn)方案中,通信路徑113是鏈路,如本領(lǐng)域所知的,其中專用通道被分配到每個(gè)??口202。也可以使用其他通信路徑。如上文所述,還可使用逆流互連以實(shí)現(xiàn)通信路徑113以及計(jì)算機(jī)系統(tǒng)100、0^102、或??口202內(nèi)的任何其他通信路徑。1/0單元205生成用于在通信路徑113上傳送的包(或其他信號(hào)),并且還從通信路徑113接收所有傳入包(或其他信號(hào)),將傳入包引導(dǎo)到??似02的適當(dāng)部件。例如,可將與處理任務(wù)相關(guān)的命令引導(dǎo)到主機(jī)接口 206,而將與存儲(chǔ)器操作相關(guān)的命令(例如,對(duì)并行處理存儲(chǔ)器204的讀取或?qū)懭?引導(dǎo)到存儲(chǔ)器交叉開(kāi)關(guān)單元210。主機(jī)接口 206讀取每個(gè)入棧緩沖區(qū),并且將由入棧緩沖區(qū)所指定的工作輸出到前端212。
[0029]有利地,每個(gè)??[202都實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,??似02 (0)包括運(yùn)算子系統(tǒng)230,其包括個(gè)通用處理集群1。每個(gè)0^208能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個(gè)線程是程序的實(shí)例在各種應(yīng)用中,可分配不同的⑶0208用于處理不同類型的程序或用于實(shí)施不同類型的計(jì)算。⑶(:208的分配可以取決于因每種類型的程序或計(jì)算所產(chǎn)生的工作量而變化。[0030]6?0208經(jīng)由工作分布單元200接收要執(zhí)行的處理任務(wù),該工作分布單元200從前端單元212接收定義處理任務(wù)的命令。處理任務(wù)可包括浮點(diǎn)操作,諸如^8+(:的混合乘加⑶嫩)指令。工作分布單元200可配置為獲取與任務(wù)相對(duì)應(yīng)的操作數(shù)(例如八、8和0,或者工作分布單元200可從前端212接收操作數(shù)(例如八、8和0。前端212確保0^208在由入棧緩沖區(qū)所指定的處理被發(fā)起之前配置為有效狀態(tài)。
[0031]當(dāng)??似02用于圖形處理時(shí),例如,用于每個(gè)浮點(diǎn)操作的處理工作量可分成近似相等大小的任務(wù)以使操作能夠分布到多個(gè)⑶0208。工作分布單元200可配置為以能夠?qū)⑷蝿?wù)提供到多個(gè)61^208用于處理的頻率產(chǎn)生任務(wù)。在一個(gè)實(shí)現(xiàn)方案中,工作分布單元200可以足夠快地產(chǎn)生任務(wù)以同時(shí)維護(hù)忙碌的多個(gè)⑶0208。相反,在常規(guī)系統(tǒng)中,處理典型地由單個(gè)處理引擎來(lái)實(shí)施,而其他處理引擎保持空閑,在開(kāi)始它們的處理任務(wù)之前等待該單個(gè)處理引擎完成其任務(wù)。在本發(fā)明的一些實(shí)現(xiàn)方案中,⑶0208的各部分配置為實(shí)施不同類型的處理。例如,第一部分可配置為實(shí)施頂點(diǎn)著色和拓?fù)渖?。第二部分可配置為?shí)施曲面細(xì)分“688611社1011)和幾何體著色。第三部分可配置為在屏幕空間中實(shí)施像素著色以產(chǎn)生被渲染的圖像。由⑶0208所產(chǎn)生的中間數(shù)據(jù)可存儲(chǔ)在緩沖區(qū)中以允許中間數(shù)據(jù)在⑶(:208之間傳送用于進(jìn)一步處理。
[0032]存儲(chǔ)器接口 214包括0個(gè)分區(qū)單元215,每個(gè)分區(qū)單元215直接耦連到并行處理存儲(chǔ)器204的一部分,其中0≥1。如所示的,分區(qū)單元215的數(shù)目一般等于0狀1220的數(shù)目。在其他實(shí)現(xiàn)方案中,分區(qū)單元215的數(shù)目也可以不等于存儲(chǔ)器設(shè)備的數(shù)目。動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(0狀1)220可以由其他合適的存儲(chǔ)設(shè)備來(lái)替代并且可以是一般常規(guī)的設(shè)計(jì)。諸如幀緩沖區(qū)或紋理映射圖的渲染目標(biāo)可以跨0狀1220加以存儲(chǔ),這允許分區(qū)單元215并行寫入每個(gè)渲染目標(biāo)的各部分以有效地使用并行處理存儲(chǔ)器204的可用帶寬。
[0033]任何一個(gè)0^208都可以處理要被寫到并行處理存儲(chǔ)器204內(nèi)的任何0狀1220的數(shù)據(jù)。交叉開(kāi)關(guān)單元210配置為路由每個(gè)⑶(:208的輸出到任何分區(qū)單元215的輸入或到另一個(gè)0^208用于進(jìn)一步處理。⑶(:208通過(guò)交叉開(kāi)關(guān)單元210與存儲(chǔ)器接口 214通信,以對(duì)各種外部存儲(chǔ)器設(shè)備進(jìn)行讀取或?qū)懭?。在一個(gè)實(shí)現(xiàn)方案中,交叉開(kāi)關(guān)單元210具有到存儲(chǔ)器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲(chǔ)器204的連接,從而使得在不同GPC208內(nèi)的處理核心能夠與系統(tǒng)存儲(chǔ)器104或?qū)τ赑PU202而言非本地的其他存儲(chǔ)器通信。在圖2所示的實(shí)現(xiàn)方案中,交叉開(kāi)關(guān)單元210直接與I/O單元205連接。交叉開(kāi)關(guān)單元210可使用虛擬信道來(lái)分開(kāi)GPC208與分區(qū)單元215之間的業(yè)務(wù)流。
[0034]另外,GPC208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過(guò)濾、建模操作(例如,應(yīng)用物理定律以確定對(duì)象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分著色器、頂點(diǎn)著色器、幾何著色器、和/或像素著色器程序)等等。PPU202可將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204轉(zhuǎn)移到內(nèi)部(片上)存儲(chǔ)器中,處理該數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204,其中這樣的數(shù)據(jù)可以由其他系統(tǒng)部件訪問(wèn),所述其他系統(tǒng)部件包括CPU102或另一個(gè)并行處理子系統(tǒng)112。
[0035]PPU202可配備有任何容量(amount)的本地并行處理存儲(chǔ)器204,包括沒(méi)有本地存儲(chǔ)器,并且可以以任何組合方式使用本地存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。例如,在統(tǒng)一存儲(chǔ)器架構(gòu)(UMA)實(shí)現(xiàn)方案中,PPU202可以是圖形處理器。在這樣的實(shí)現(xiàn)方案中,將不提供或幾乎不提供專用的圖形(并行處理)存儲(chǔ)器,并且PPU202會(huì)以排他或幾乎排他的方式使用系統(tǒng)存儲(chǔ)器。在UMA實(shí)現(xiàn)方案中,PPU202可集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PCIe)的分立芯片提供,所述高速鏈路經(jīng)由橋式芯片或其他通信手段將PPU202連接到系統(tǒng)存儲(chǔ)器。
[0036]如上所示,在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個(gè)插卡上提供多個(gè)PPU202、或可將多個(gè)插卡連接到通信路徑113、或可將一個(gè)或多個(gè)PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數(shù)目的處理核心、不同容量的本地并行處理存儲(chǔ)器等等。在存在多個(gè)PPU202的情況下,可并行操作那些PI3U從而以高于單個(gè)PPU202所可能達(dá)到的吞吐量來(lái)處理數(shù)據(jù)。包含一個(gè)或多個(gè)PPU202的系統(tǒng)可以以各種配置和形式因素來(lái)實(shí)現(xiàn),包括臺(tái)式電腦、筆記本電腦或手持式個(gè)人計(jì)算機(jī)、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng)等等。
[0037]本發(fā)明的一個(gè)實(shí)施例可被實(shí)現(xiàn)為用于在諸如例如圖1的計(jì)算機(jī)系統(tǒng)100的計(jì)算機(jī)系統(tǒng)上使用的程序產(chǎn)品。該程序產(chǎn)品的一個(gè)或多個(gè)程序定義實(shí)施例的各功能(包括本文中描述的方法)并且可以被包含在各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。示例性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于:(i)不可寫的存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)內(nèi)的只讀存儲(chǔ)器設(shè)備,諸如可由CD-ROM驅(qū)動(dòng)器讀取的CD-ROM盤、閃存存儲(chǔ)器、ROM芯片或任何類型的固態(tài)非易失性半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)永久性信息;和(ii)可寫的存儲(chǔ)介質(zhì)(例如,磁盤驅(qū)動(dòng)器或硬盤驅(qū)動(dòng)器內(nèi)的軟盤或者任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)可更改的信息。
[0038]使能浮點(diǎn)操作中的功率降低
[0039]本技術(shù)用精度換取在浮點(diǎn)密集應(yīng)用中的功率節(jié)約,其中節(jié)能被視為最重要的目標(biāo),排名在對(duì)遵從IEEE標(biāo)準(zhǔn)的需求之上。為浮點(diǎn)數(shù)提供規(guī)則的示范性標(biāo)準(zhǔn)包括但不限于IEEE754、IEEE754-1985、IEEE854-1987 和 IEEE754-2008,以及其他標(biāo)準(zhǔn)。
[0040]在一些應(yīng)用中,嚴(yán)格遵從IEEE標(biāo)準(zhǔn)是不必要的。例如,在計(jì)算機(jī)圖形中,存在一些情況,在其中稍微低一些的精度和/或較少理想數(shù)位的舍入操作是可接受的。例如,在一些圖形應(yīng)用中,首要目標(biāo)是亮化正確的像素,這典型地不要求以高精度進(jìn)行處理。配置為處置這些任務(wù)的集成電路消耗動(dòng)態(tài)功率。動(dòng)態(tài)功率消耗與電路的切換部件和翻轉(zhuǎn)(toggle)觸發(fā)器的部分是成比例的。如果集成電路的較少部件正在切換和/或翻轉(zhuǎn),那么集成電路可能消耗較少功率。本技術(shù)利用在舍入保真度中的可允許降低以提供動(dòng)態(tài)功率耗散的節(jié)省。[0041 ] 本技術(shù)可實(shí)現(xiàn)在GPU上,在該GPU中有用于渲染圖形的專用電路,所有操作不嚴(yán)格要求IEEE遵從。然而,如下文參考圖8所進(jìn)一步描述的,模式選擇器設(shè)備815使運(yùn)算電路能夠是模態(tài)的(modal)并支持IEEE舍入遵從模式和非遵從的功率耗散降低模式二者。該靈活性(例如模態(tài)操作)在需要適當(dāng)舍入的那些情況中使能功率節(jié)省的伺機(jī)使用而不用犧牲生成適當(dāng)舍入的能力。為進(jìn)一步支持該效用引數(shù)(argument),注意許多迭代計(jì)算,諸如牛頓-拉弗森方法,針對(duì)中間操作均不要求完全的遵從IEEE的計(jì)算。下文的描述包括浮點(diǎn)數(shù)的簡(jiǎn)要說(shuō)明,隨后是用于降低集成電路中的切換量、從而降低動(dòng)態(tài)功率消耗的技術(shù)的更多細(xì)節(jié)。
[0042]圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示范性浮點(diǎn)數(shù)300的示圖。IEEE754格式中的浮點(diǎn)數(shù)包括三個(gè)字段:符號(hào)位、偏置指數(shù)和小數(shù)。下面的示例示出每一個(gè)的意義。十進(jìn)制數(shù)0.1562500在二進(jìn)制中的表示是以2為基的0.00101 (也就是說(shuō),十進(jìn)制形式中的1/8+1/32)。類推到其中數(shù)被寫為在十進(jìn)制小數(shù)點(diǎn)左邊具有單個(gè)非零數(shù)位的科學(xué)計(jì)數(shù)法,重新寫該數(shù)使得數(shù)在“二進(jìn)制小數(shù)點(diǎn)”左邊具有單個(gè)位I。數(shù)隨后乘以適當(dāng)?shù)?的冪以對(duì)將位左移三個(gè)位置加以補(bǔ)償,如下面的公式I所示:
[0043]0.0OlOl2=1.012X2-3等式 1
[0044]在公式I中,小數(shù)是.0l2并且指數(shù)是-3。在圖3的示例中,該數(shù)的IEEE754表示法中的三個(gè)字段如下。符號(hào)=0,因?yàn)閿?shù)是正的。(I指示負(fù))。偏置指數(shù)=-3加“偏置值(bias)”。在單精度中,偏置值是127,所以在該示例中偏置指數(shù)是124。在雙精度中,偏置值是1023,所以在該示例中偏置指數(shù)是1020。小數(shù)是以2為基的.01000...。
[0045]IEEE754標(biāo)準(zhǔn)將偏置值加到指數(shù)使得數(shù)在許多情況中可由對(duì)有符號(hào)的二補(bǔ)數(shù)的整數(shù)加以比較的相同硬件來(lái)常規(guī)地加以比較。使用偏置指數(shù),兩個(gè)正浮點(diǎn)數(shù)中的較小者將顯出“小于”遵循對(duì)符號(hào)和量級(jí)整數(shù)的相同排序的較大者。如果兩個(gè)浮點(diǎn)數(shù)具有不同符號(hào),那么符號(hào)和量級(jí)比較也采用偏置指數(shù)來(lái)起作用。然而,如果兩個(gè)偏置指數(shù)浮點(diǎn)數(shù)均是負(fù)的,那么排序必須反過(guò)來(lái)。如果指數(shù)被表示為例如二補(bǔ)數(shù)的數(shù),那么對(duì)為了查看兩個(gè)數(shù)中的哪一個(gè)較大的比較將不是很方便。在圖3的該示例中,有效數(shù)(signficand)是23位,其中省略前導(dǎo)(leading)位I。由于除了零的所有數(shù)均采用前導(dǎo)I開(kāi)始,所以前導(dǎo)I是固有的并且不需要被存儲(chǔ),從而“空閑”提供精度的額外位。在另一實(shí)現(xiàn)方案中,有效數(shù)包括24位。
[0046]在典型的浮點(diǎn)數(shù)據(jù)路徑中,存在對(duì)操作A*B+C的支持,其中每個(gè)操作數(shù)A、B和C是混合乘加(FMA)指令中的浮點(diǎn)數(shù)。注意字母和“C”在此用作標(biāo)識(shí)操作數(shù)的標(biāo)志;本技術(shù)不限于使用這些特定標(biāo)志A、B和C。該構(gòu)造塊還經(jīng)由下面的等式2和3提供混合加(Fadd)和混合乘(Fmul)指令:
[0047]Fadd=A*1.0+C。等式 2
[0048]Fmul=A*B+0.0。等式 3
[0049]在遵從IEEE的場(chǎng)景中,A*B積的內(nèi)部精度可以其整體被維護(hù)而與C操作數(shù)的相對(duì)量級(jí)無(wú)關(guān)以確保適當(dāng)舍入。如下文參考圖7和8所描述的,這類遵從導(dǎo)致相對(duì)大的乘法器陣列和非常寬的移位器陣列用于積或C加數(shù)這二者之一,或二者全部(取決于特定實(shí)現(xiàn)方案)。
[0050]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示范性混合乘加(FMA)指令的示意圖。在該示例中,A*B積的有效數(shù)410包括47位,其中省略前導(dǎo)位I。C加數(shù)的有效數(shù)412。加數(shù)412包括23位加固有的I。系統(tǒng)通過(guò)首先檢查傳入操作數(shù)的指數(shù)來(lái)評(píng)估FMA。在一個(gè)實(shí)現(xiàn)方案中,系統(tǒng)可調(diào)整指數(shù)以對(duì)非規(guī)格化(denormalized)的輸入負(fù)責(zé)。系統(tǒng)基于A*B積的指數(shù)(未示出)和C加數(shù)的指數(shù)(未示出)之間的差將這些有效數(shù)(410、412)移位。系統(tǒng)配置為在指數(shù)的相對(duì)大小的數(shù)個(gè)情況之間加以區(qū)分,數(shù)個(gè)情況諸如當(dāng)兩個(gè)指數(shù)可比較時(shí)、當(dāng)加數(shù)的指數(shù)比積的指數(shù)大得多和/或極大于(>>)積的指數(shù)時(shí)、以及當(dāng)積的指數(shù)比加數(shù)的指數(shù)大得多和/或極大于(>>)加數(shù)的指數(shù)時(shí)。
[0051]在圖4的示例中,A*B積的指數(shù)(未示出)可與C加數(shù)的指數(shù)(未示出)相比較。這些指數(shù)之間的小的差暗示積A*B和加數(shù)C的量級(jí)是類似的。在這類情況中,系統(tǒng)使能不同的中間權(quán)衡點(diǎn),其每個(gè)提供在精度、舍入和功率節(jié)省之間的可接受的折衷。系統(tǒng)可將權(quán)衡點(diǎn)402以下的位指派為低階位406,并將權(quán)衡點(diǎn)402以上的位指派為高階位404。權(quán)衡點(diǎn)基于浮點(diǎn)數(shù)的輸入指數(shù)中的相對(duì)差。權(quán)衡點(diǎn)基于為了節(jié)省將被支出以針對(duì)輸入的給定場(chǎng)景計(jì)算低階位的能量而低階位可被忽略的程度。注意,系統(tǒng)不是被簡(jiǎn)單地設(shè)計(jì)為不采用相關(guān)聯(lián)的較低位邏輯。這類極端的設(shè)計(jì)將使系統(tǒng)不靈活。而是,在各實(shí)施例中,系統(tǒng)配置為采用模態(tài)選通邏輯,其在一些情況下使能精準(zhǔn)的舍入,并且在其他情況下使能該邏輯的時(shí)鐘選通。例如,系統(tǒng)可對(duì)將另外處理低階位406的邏輯(例如觸發(fā)器)時(shí)鐘選通。同時(shí),系統(tǒng)使能處理高階位404的邏輯。進(jìn)行時(shí)鐘選通針對(duì)非遵從IEEE的操作使能功率降低模式。功率被降低,因?yàn)樯蓪?shí)際和并不需要生成適當(dāng)舍入的結(jié)果所需的大部分硬件(例如,邏輯被時(shí)鐘選通,如上文所述)。因此,系統(tǒng)可從A*B+C的最終結(jié)果的全體生成中移除A*B積和/或C加數(shù)的低階位的某部分。
[0052]圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、另一示范性FM指令場(chǎng)景的示意圖。在該示例中,加數(shù)C的指數(shù)(未示出)比積A*B的指數(shù)(未示出)大得多和/或極大于(>>)積A*B的指數(shù)(未示出)。A*B積的有效數(shù)510包括48位。C加數(shù)的有效數(shù)512包括23位小數(shù),其中加前導(dǎo)位I以形成24位。在另一實(shí)現(xiàn)方案中,加數(shù)512可包括24位。再一次地,系統(tǒng)通過(guò)首先檢查傳入操作數(shù)的指數(shù)來(lái)評(píng)估FMA。系統(tǒng)可將權(quán)衡點(diǎn)502以下的位指派為低階位506,并將權(quán)衡點(diǎn)502以上的位指派為高階位504。因此,在該情況中,系統(tǒng)可從A*B+C的最終結(jié)果的全體生成中移除整個(gè)A*B積。
[0053]圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、又一示范性FMA指令場(chǎng)景的示意圖。在該示例中,加數(shù)C的指數(shù)(未示出)比積A*B的指數(shù)(未示出)小得多和/或極小于(〈O積A*B的指數(shù)(未示出)。A*B積的有效數(shù)610包括48位。C加數(shù)的有效數(shù)612包括24位,其中包括前導(dǎo)位I。再一次地,系統(tǒng)通過(guò)首先檢查傳入操作數(shù)的指數(shù)來(lái)評(píng)估FMA。系統(tǒng)可將權(quán)衡點(diǎn)602以下的位指派為低階位606,并將權(quán)衡點(diǎn)602以上的位指派為高階位604。因此,在該情況中,系統(tǒng)可從A*B+C的最終結(jié)果的全體生成中移除加數(shù)C和全體積的一部分。
[0054]圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、示范性乘法器陣列700的示意圖。乘法器陣列700是系統(tǒng)用來(lái)將兩個(gè)二進(jìn)制數(shù)相乘(例如A*B)的電子電路。乘法器陣列700可通過(guò)使用二進(jìn)制加法器來(lái)建立。系統(tǒng)可實(shí)現(xiàn)多種計(jì)算機(jī)運(yùn)算技術(shù)以生成乘法器陣列700。大多數(shù)技術(shù)涉及計(jì)算一組部分積(partial product),并隨后對(duì)部分積一起求和。如下文進(jìn)一步描述的,用于將以2為基的整數(shù)(例如二進(jìn)制整數(shù))相乘的技術(shù)類似于用于在以10為基的整數(shù)(例如十進(jìn)制整數(shù))上進(jìn)行長(zhǎng)乘法的技術(shù)。
[0055]乘法器陣列700被描繪為常見(jiàn)的向右傾的不規(guī)則四邊形。操作數(shù)八由第一數(shù)八
八。來(lái)描繪。操作數(shù)8由第二數(shù)8^-8。來(lái)描繪。在二進(jìn)制編碼中,第一數(shù)化…八。乘以第二數(shù)8^-8。的一個(gè)數(shù)位(0或0。結(jié)果是部分積1^-1。的陣列,其中每個(gè)部分積是適當(dāng)移位的行。使用部分積的該乘法比在十進(jìn)制中容易的多,因?yàn)槌艘?或1只等于0或第一數(shù)八八。。因此,兩個(gè)二進(jìn)制數(shù)的乘法降低為計(jì)算部分積1^-1。(其是0或第一數(shù)?、將部分積左移并隨后將部分積加在一起(當(dāng)然,是二進(jìn)制加X(jué)
[0056]二進(jìn)制中的乘法比在十進(jìn)制系統(tǒng)中簡(jiǎn)單得多,因?yàn)椴淮嬖谝涀〉某朔ū?,只有移位和加操作。該技術(shù)具有小型0^可通過(guò)使用0^運(yùn)算邏輯單元的移位和加的特征、而非使用專用電路來(lái)實(shí)施乘法的優(yōu)點(diǎn)。然而該技術(shù)是緩慢的,因?yàn)樵摷夹g(shù)要求數(shù)個(gè)中間加法操作,其每個(gè)均花費(fèi)時(shí)間。較舊的乘法器架構(gòu)采用移位器和累加器以對(duì)每個(gè)部分積求和,通常每循環(huán)一個(gè)部分積,這針對(duì)裸片面積權(quán)衡速度??稍O(shè)計(jì)較快的乘法器以進(jìn)行較少的加法。現(xiàn)代乘法器架構(gòu)使用8311811 ~ 100167算法、華萊士樹(shù)、或達(dá)達(dá)(0^1(1(121)乘法器以在單個(gè)循環(huán)中將部分積加在一起。有時(shí)通過(guò)對(duì)兩個(gè)被乘數(shù)中的一個(gè)進(jìn)行經(jīng)修改的布斯(800訪)編碼來(lái)改進(jìn)華萊士樹(shù)實(shí)現(xiàn)方案的性能,該布斯編碼降低必須被求和的部分積的數(shù)目。
[0057]如上文參考圖3-6所描述的,系統(tǒng)(例如運(yùn)算子系統(tǒng)230)可將權(quán)衡點(diǎn)702以下的位指派為低階位706,并將權(quán)衡點(diǎn)702以上的位指派為高階位704。系統(tǒng)可使用門控電路708來(lái)對(duì)將另外處理低階位706的邏輯(例如觸發(fā)器)進(jìn)行時(shí)鐘選通。同時(shí),系統(tǒng)使能處理高階位704的邏輯。因此,進(jìn)行時(shí)鐘選通針對(duì)非遵從12現(xiàn)的操作使能功率降低的模式。圖2的運(yùn)算子系統(tǒng)230的功率降低的模式在下文參考圖8進(jìn)行進(jìn)一步的描述。
`[0058]作為通過(guò)使用部分精度(例如不遵從巧現(xiàn))進(jìn)行處理的示例,在例如需要僅32位的精度的情況下系統(tǒng)可寫入像素值。假定系統(tǒng)正進(jìn)行^8+(:操作并將結(jié)果作為32位顏色(或深度)值寫在幀緩沖區(qū)中。假定用于八、8和中的每一個(gè)的有效數(shù)是24位。假定32位顏色或深度值被視為是八$8+(:計(jì)算的整數(shù)部分。因此,系統(tǒng)可忽視二進(jìn)制小數(shù)點(diǎn)右邊的有效位。在一個(gè)實(shí)現(xiàn)方案中,系統(tǒng)可斷開(kāi)(職丨6 0?;012位組塊(011111110中的乘或加法的部分,而其他配置是可能的。
[0059]作為4*8相乘的示例,由下面的公式定義操作:
[0060]4=1.1*210等式 4
[0061]8=1.01*2 — 2等式 5
[0062]4*8=1.111*212等式 6
[0063]遵從1222 (例如完全精度)的計(jì)算將產(chǎn)生完全48位有效數(shù)。相反,本系統(tǒng)配置為選擇性地或模態(tài)地使用部分精度,如下文參考圖8所進(jìn)一步描述的。檢查指數(shù),系統(tǒng)可確定結(jié)果的少于24位是重要的。有效數(shù)的最右24位在權(quán)衡點(diǎn)右邊。系統(tǒng)可斷開(kāi)乘法器陣列700的低階位(例如較低的24位)的觸發(fā)器并僅讓高階位(例如較高的24位)的觸發(fā)器進(jìn)行乘操作。例如,在加操作中僅涉及部分積的高階位704。
[0064]隨后,系統(tǒng)可將操作數(shù)加到積4*8。下文的等式是操作數(shù)的示例:
[0065]0=1.101010101*2^10等式 7[0066]當(dāng)系統(tǒng)將C加到A*B時(shí),顯而易見(jiàn),需要少于12位。C的較低的12位在二進(jìn)制小數(shù)點(diǎn)的右邊。因此,系統(tǒng)可斷開(kāi)加操作的右邊12位。
[0067]圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的運(yùn)算子系統(tǒng)230的示意圖。運(yùn)算子系統(tǒng)230配置為針對(duì)浮點(diǎn)數(shù)實(shí)行混合乘加(FMA)指令。如上文所述,F(xiàn)MA指令可由A*B+C來(lái)表示,其中A、B和C是浮點(diǎn)數(shù)。運(yùn)算子系統(tǒng)230包括但不限于操作數(shù)設(shè)備810、模式選擇器設(shè)備815、檢查器設(shè)備820和FMA設(shè)備832。
[0068]操作數(shù)設(shè)備810配置為接收操作數(shù)A、操作數(shù)B和操作數(shù)C。每個(gè)操作數(shù)(A、B、或C)是浮點(diǎn)數(shù)。操作數(shù)A包括但不限于指數(shù)Ae和有效數(shù)As。操作數(shù)B包括指數(shù)和有效數(shù)Bso操作數(shù)C包括指數(shù)(;和有效數(shù)Cs。操作數(shù)設(shè)備810通過(guò)將指數(shù)(Ae、Be、(;)發(fā)送到檢查器設(shè)備820并將有效數(shù)(As、Bs, Cs)發(fā)送到FM設(shè)備832來(lái)過(guò)濾操作數(shù)。
[0069]檢查器設(shè)備820包括邏輯設(shè)備,其配置為檢查操作數(shù)(A、B、C)的指數(shù)(Ae、Be、Ce)和對(duì)位en加以使能。檢查器設(shè)備820策略性地置于運(yùn)算子系統(tǒng)230中,使得檢查器設(shè)備820不對(duì)運(yùn)算子系統(tǒng)230施加大量時(shí)序壓力。因此,運(yùn)算子系統(tǒng)230不必要必須采用功率較高的部件來(lái)配置,該功率較高的部件將是較快的并因此喪失運(yùn)算子系統(tǒng)230可提供的功率節(jié)省。進(jìn)一步地,在一個(gè)實(shí)現(xiàn)方案中,檢查器設(shè)備820不獨(dú)立選通每個(gè)單個(gè)觸發(fā)器。針對(duì)確定何時(shí)選通每個(gè)觸發(fā)器還有觸發(fā)器的實(shí)際選通這二者,存在與邏輯和電路相關(guān)聯(lián)的非零成本。因此,檢查器設(shè)備820配置為將一個(gè)或多個(gè)選通信號(hào)發(fā)送到FMA設(shè)備832以在FMA設(shè)備832處使能觸發(fā)器的選通的較寬泛的協(xié)作。
[0070]在一個(gè)實(shí)現(xiàn)方案中,設(shè)計(jì)者(例如程序員和/或代碼作者)指定針對(duì)FMA設(shè)備832進(jìn)行選通的粒度程度,并將粒度程度輸入到具有運(yùn)算子系統(tǒng)230的計(jì)算機(jī)中。粒度程度可基于例如對(duì)特定FM操作所要求的精度的確定。檢查器設(shè)備820配置為接收設(shè)計(jì)者指定的粒度程度。檢查器設(shè)備820配置為使用粒度程度和邏輯分析用于確定選通信號(hào)以發(fā)送到FM設(shè)備832。
[0071]在第一邏輯檢查中,檢查器設(shè)備820確定運(yùn)算子系統(tǒng)230是否需要操作在遵從IEEE模式中用于操作數(shù)的處理。因此,模式選擇器設(shè)備815配置為基于使能位(UK、CE, Pe)設(shè)置操作的適當(dāng)模式(例如遵從IEEE或不遵從IEEE)。模式選擇器815基于模式選擇器815可能接收的模式請(qǐng)求來(lái)為操作確定模式。模式選擇器設(shè)備815可接收用戶請(qǐng)求UK、編譯器請(qǐng)求Ck、或應(yīng)用請(qǐng)求Ρκ,以及其他類型的請(qǐng)求。用戶請(qǐng)求Uk可與從用戶輸入設(shè)備所接收的手動(dòng)超控(override)相關(guān)聯(lián)。例如,移動(dòng)設(shè)備(例如蜂窩電話、智能電話、或平板電腦)的用戶出于其他考慮(例如圖形渲染的保真度)可能期望功率節(jié)省。編譯器請(qǐng)求Ck可針對(duì)在編譯時(shí)間處所已知的操作來(lái)配置檢查器設(shè)備820,其針對(duì)浮點(diǎn)數(shù)可以或可以不要求完全的遵從IEEE的精度。應(yīng)用請(qǐng)求Pk可針對(duì)特定應(yīng)用量身定制。例如,應(yīng)用的作者可將應(yīng)用指派為針對(duì)浮點(diǎn)數(shù)要求或不要求完全的遵從IEEE的精度。例如,特定應(yīng)用可要求小于高保真度的圖形渲染。因此,在該情況下,模式選擇器設(shè)備815可確定操作在非遵從IEEE的模式中是可接受的。模式選擇器815隨后將由使能位en所表示的模式發(fā)送到檢查器設(shè)備820。
[0072]在第二邏輯檢查中,檢查器設(shè)備820檢查輸入A、B和C的指數(shù)(Ae、Be、Ce)。例如,檢查器設(shè)備820可將指數(shù)(Ae、Be)求和用于積A*B的操作數(shù)。檢查器設(shè)備820可隨后將該和與加數(shù)C的指數(shù)Ce相比較。如上文參考圖4所解釋的,如果兩個(gè)指數(shù)是可比較的(例如K加Be的和與Ce相比較),那么系統(tǒng)可從A*B+C的最終結(jié)果的全體生成中移除A*B積和/或0加數(shù)的低階位的某部分。檢查器設(shè)備820配置為相應(yīng)地設(shè)置選通信號(hào),以便設(shè)備832可實(shí)施適當(dāng)選通。如上文參考圖5所解釋的,如果加數(shù)的指數(shù)比積的指數(shù)大得多和/或極大于(^)積的指數(shù),那么系統(tǒng)可從八$8+(:的最終結(jié)果的全體生成中移除八#8積。檢查器設(shè)備820配置為相應(yīng)地設(shè)置選通信號(hào)。如上文參考圖6所解釋的,如果加數(shù)的指數(shù)比積的指數(shù)小得多和/或極小于的最終結(jié)果的全體生成中移除加數(shù)積。
[0073]因此,基于使能位6。和指數(shù)(^、^、匕),檢查器設(shè)備820配置為生成一個(gè)或多個(gè)控制選通信號(hào)。檢查器設(shè)備820將選通信號(hào)發(fā)送到設(shè)備832。此外,設(shè)備832配置為接收來(lái)自檢查器設(shè)備820的選通信號(hào),以及接收有效數(shù)…為乂)。設(shè)備832使用選通信號(hào)以斷電(例如斷開(kāi))一個(gè)或多個(gè)乘法器或加法器陣列中的所指派的電路,如上文參考圖4-7所描述的。離設(shè)備832可生成完全精度的運(yùn)算操作(例如遵從1現(xiàn)幻或部分精度的運(yùn)算操作(例如不遵從巧現(xiàn))。部分精度的運(yùn)算操作一般是耗電較小的。因此,檢查器設(shè)備820配置設(shè)備832用于更節(jié)能的操作。設(shè)備832因此配置為采用乘法器和加法器陣列實(shí)施實(shí)際的節(jié)能操作。如上所述,所接收的輸入(例如選通信號(hào)和有效數(shù))基于以下各項(xiàng)的組合:軟件考量、編譯時(shí)間、代碼寫入時(shí)間、代碼執(zhí)行時(shí)間和用戶時(shí)間以及實(shí)際實(shí)時(shí)操作數(shù),以及其他因素。
[0074]如圖8中所示,設(shè)備832包括乘法器陣列800,相似于上文參考圖7所描述的乘法器陣列700。在一個(gè)實(shí)現(xiàn)方案中,圖8中的乘法器陣列800是典型的根據(jù)常見(jiàn)接受標(biāo)準(zhǔn)所配置的乘法器陣列。離設(shè)備832配置為使用乘法器陣列800的較低部分以生成4*8積的低階位和指向乘法器的較高部分的實(shí)行信號(hào)1-。
[0075]當(dāng)來(lái)自檢查器設(shè)備820的選通信號(hào)配置設(shè)備832以操作在功率節(jié)省模式(即非遵從1222的模式)中時(shí),設(shè)備832可關(guān)閉乘法器陣列800的被標(biāo)明為門控電路808的較低部分。例如,設(shè)備832可使用時(shí)鐘門、功率軌或用于關(guān)閉電路的任何其他合適的機(jī)制來(lái)關(guān)閉較低部分,以便降低由離設(shè)備832所消耗的總功率??梢砸灶愃朴谑褂猛耆某朔ㄆ麝嚵?00的方式來(lái)進(jìn)行操作。然而,在功率節(jié)省模式中,實(shí)行信號(hào)被指派為零或指示較低位未正被使用的任`何其他值。該指派最后可導(dǎo)致近似于一個(gè)最小精度單位⑶⑶)的不正確的值,其在操作的所選擇的功率節(jié)省模式中是可接受的。
[0076]設(shè)備832進(jìn)一步配置為在涉及操作數(shù)0到積4*8的加法的操作中斷開(kāi)較多電路,如上文參考圖4-6所描述的。離設(shè)備832可在功率節(jié)省模式中將操作數(shù)加到積八祁以生成仏8+(:的結(jié)果。隨后,?嫩設(shè)備832配置為輸出仏8+(:的結(jié)果。
[0077]因此,假定在功率降低的情況中對(duì)邏輯電路的一部分加以選通,系統(tǒng)配置為特別注意以確保結(jié)果八$8+(:不依賴恰好在時(shí)鐘選通之前所接收的最近操作數(shù)輸入。如果情況不是如此,那么結(jié)果八$8+(:將不只是取決于目前的輸入。隨后,邏輯電路的使用將難以檢驗(yàn)和調(diào)試,并且對(duì)于基于狀態(tài)的系統(tǒng)將沒(méi)有明顯的益處。
[0078]系統(tǒng)的一部分取決于能夠標(biāo)識(shí)與^8+(:計(jì)算的特定部分(例如計(jì)算)相關(guān)聯(lián)的浮點(diǎn)操作并對(duì)圖8的離設(shè)備832的觸發(fā)器應(yīng)用時(shí)鐘選通信號(hào)。在所有邏輯被手動(dòng)地指定、并因此被手動(dòng)地管線化的情況下,這類選通可以由設(shè)計(jì)者指定的時(shí)間完成。然而,考慮到這些設(shè)計(jì)的復(fù)雜性,在一個(gè)實(shí)現(xiàn)方案中,可通過(guò)使用市場(chǎng)上可買到的用于生成門級(jí)網(wǎng)表的合成包來(lái)配置系統(tǒng)。系統(tǒng)可隨后實(shí)行后處理步驟以提取這些適合用于選通的觸發(fā)器并添加用于無(wú)障礙選通所必要的鎖存器。
[0079]有利地,系統(tǒng)使能在精度(例如舍入)和功率節(jié)省之間做出的數(shù)個(gè)不同的中間權(quán)衡點(diǎn)。權(quán)衡點(diǎn)還基于為了節(jié)省能量而低階位可被忽略的程度,否則該能量將被支出以針對(duì)浮點(diǎn)數(shù)的給定場(chǎng)景完全地計(jì)算低階位。在一個(gè)實(shí)現(xiàn)方案中,權(quán)衡點(diǎn)基于混合乘加⑶嫩)指令的操作數(shù)的指數(shù)中的相對(duì)差。權(quán)衡點(diǎn)的示例在上文參考圖4-6進(jìn)行描述。
[0080]雖然本技術(shù)是可針對(duì)單精度運(yùn)算和雙精度運(yùn)算來(lái)工作的,但系統(tǒng)特別適合于單精度。不常存在使用雙精度寬度的操作數(shù)還不期望精準(zhǔn)舍入的場(chǎng)景??赡艿睦馐鞘褂玫惴ǖ那闆r,諸如其中中間值不需要被舍入的用于計(jì)算倒數(shù)或平方根的情況。
[0081]方法概述
[0082]圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于使能在浮點(diǎn)操作中降低功率的方法步驟的流程圖。雖然結(jié)合圖1-8的系統(tǒng)描述了方法步驟,但本領(lǐng)域技術(shù)人員將理解的是,配置為以任何次序?qū)崿F(xiàn)方法步驟的任何系統(tǒng)落在本發(fā)明的范圍內(nèi)。在一個(gè)實(shí)施例中,可由圖2和8的運(yùn)算子系統(tǒng)230實(shí)行方法步驟。運(yùn)算子系統(tǒng)230包括檢查器設(shè)備820和設(shè)備832,以及其他設(shè)備。由于系統(tǒng)操作的細(xì)節(jié)被參考其他示圖描述,所以在此以概括方式呈現(xiàn)圖9的方法900。
[0083]如所示,方法900開(kāi)始于動(dòng)作910,在該處運(yùn)算子系統(tǒng)230 (例如檢查器設(shè)備820)接收指令的浮點(diǎn)數(shù)和/或接收用于指令的操作模式。例如,浮點(diǎn)數(shù)可包括混合乘加⑶嫩)操作的操作數(shù)八、操作數(shù)8和操作數(shù) 可以以數(shù)學(xué)術(shù)語(yǔ)將?嫩操作表示為八祁+1:。如上文參考圖8所述,檢查器設(shè)備820可從模式選擇器設(shè)備接收操作模式(例如,使能位),該模式選擇器設(shè)備標(biāo)識(shí)指令的處理是否是遵從1現(xiàn)2的(例如全精度
[0084]在決策操作915處,如果運(yùn)算子系統(tǒng)230 (例如檢查器設(shè)備820)確定指令針對(duì)浮點(diǎn)數(shù)要求遵從全精度的標(biāo)準(zhǔn),那么方法900移動(dòng)到動(dòng)作920,在該處運(yùn)算子系統(tǒng)230 (例如離設(shè)備832)實(shí)施遵從標(biāo)準(zhǔn)的用于指令的操作。
[0085]然而,如果在決策操作915中運(yùn)算子系統(tǒng)230確定指令不要求遵從標(biāo)準(zhǔn),那么方法900移動(dòng)到動(dòng)作925,在該處運(yùn)算子系統(tǒng)230生成選通信號(hào)用于集成電路的一部分。例如,如上文參考圖8所描述的,檢查器設(shè)備820可通過(guò)檢查操作數(shù)八、8和的指數(shù)來(lái)生成選通信號(hào)。檢查器設(shè)備820可確定要實(shí)施混合乘加指令而不使用操作數(shù)的低階位和/或不使用八#8的積的低階位。檢查器設(shè)備可隨后生成適當(dāng)?shù)倪x通信號(hào)用于集成電路。
[0086]在動(dòng)作930中,運(yùn)算子系統(tǒng)230 (例如檢查器設(shè)備820)將選通信號(hào)發(fā)送到集成電路的該部分。例如,檢查器設(shè)備820將選通信號(hào)發(fā)送到集成電路的要被斷開(kāi)的觸發(fā)器。
[0087]在動(dòng)作935中,運(yùn)算子系統(tǒng)230 (例如設(shè)備832)通過(guò)使用選通信號(hào)來(lái)斷開(kāi)集成電路的該部分。例如,設(shè)備832斷開(kāi)(例如斷電)集成電路的觸發(fā)器,否則觸發(fā)器將在低階位上實(shí)施乘和/或加操作。在動(dòng)作940中,運(yùn)算子系統(tǒng)230實(shí)施指令的操作而不考慮遵從標(biāo)準(zhǔn)。例如,?嫩設(shè)備通過(guò)使用本技術(shù)的部分精度,離設(shè)備832在集成電路中的觸發(fā)器當(dāng)中經(jīng)歷較少切換并因此以降低的功率進(jìn)行操作。
[0088]在決策操作945中,如果運(yùn)算子系統(tǒng)230確定針對(duì)另一指令要實(shí)施更多操作,那么方法900隨后再次移動(dòng)到動(dòng)作910,在該處運(yùn)算子系統(tǒng)230接收其他浮點(diǎn)數(shù)和/或接收操作的另一模式。然而,如果運(yùn)算子系統(tǒng)230確定針對(duì)另一指令不實(shí)施操作,那么方法900結(jié)束。
[0089]該方法900可包括該方法概述中未討論的其他動(dòng)作和/或細(xì)節(jié)。其他動(dòng)作和/或細(xì)節(jié)參考其他示圖加以討論并可以是方法900的一部分,這取決于實(shí)現(xiàn)方案。
[0090]上文已參考具體實(shí)現(xiàn)方案描述本發(fā)明。然而,本領(lǐng)域技術(shù)人員將理解的是,可對(duì)其進(jìn)行各種修改和改變而不脫離本發(fā)明如所附權(quán)利要求中所闡述的寬泛精神和范圍。因此,前述描述和示圖被視為是示例性的而非限制性的意義。
【權(quán)利要求】
1.一種用于使能在浮點(diǎn)操作中功率降低的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括: 接收浮點(diǎn)數(shù),包括混合乘加指令的操作數(shù)A、操作數(shù)B和操作數(shù)C,其中所述混合乘加指令表示為所述操作數(shù)A乘以所述操作數(shù)B加上所述操作數(shù)C ; 確定所述混合乘加指令針對(duì)浮點(diǎn)數(shù)不要求遵從精度標(biāo)準(zhǔn); 生成選通信號(hào)用于集成電路,所述集成電路配置為通過(guò)標(biāo)識(shí)所述操作數(shù)C的低階位并且標(biāo)識(shí)所述操作數(shù)A乘以所述操作數(shù)B的積的低階位來(lái)實(shí)施所述混合乘加指令的操作;以及 將所述選通信號(hào)發(fā)送到所述集成電路以關(guān)閉包括在所述集成電路中的多個(gè)邏輯門。
2.一種用于使能在浮點(diǎn)操作中功率降低的運(yùn)算子系統(tǒng),所述運(yùn)算子系統(tǒng)包括檢查器設(shè)備,所述檢查器設(shè)備配置為實(shí)施動(dòng)作: 接收浮點(diǎn)數(shù),包括混合乘加指令的操作數(shù)A、操作數(shù)B和操作數(shù)C,其中所述混合乘加指令表示為所述操作數(shù)A乘以所述操作數(shù)B加上所述操作數(shù)C ; 確定所述混合乘加指令針對(duì)浮點(diǎn)數(shù)不要求遵從精度標(biāo)準(zhǔn); 生成選通信號(hào)用于集成電路,所述集成電路配置為通過(guò)標(biāo)識(shí)所述操作數(shù)C的低階位并且標(biāo)識(shí)所述操作數(shù)A乘以所述操作數(shù)B的積的低階位來(lái)實(shí)施所述混合乘加指令的操作;以及 將所述選通信號(hào)發(fā)送到所述集成電路以關(guān)閉包括在所述集成電路中的多個(gè)邏輯門。
3.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),其中所述檢查器設(shè)備進(jìn)一步配置為通過(guò)檢查操作數(shù)的指數(shù)生成所述選通信號(hào),所述檢查操作數(shù)的指數(shù)通過(guò): 接收所述操作數(shù)A的指數(shù)、所述操作數(shù)B的指數(shù)和所述操作數(shù)C的指數(shù); 計(jì)算所述操作數(shù)A的所述指數(shù)與所述操作數(shù)B的所述指數(shù)的和;以及將所述操作數(shù)C的所述指數(shù)與所述操作數(shù)A的所述指數(shù)與所述操作數(shù)B的所述指數(shù)的所述和相比較。
4.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),進(jìn)一步包括混合乘加設(shè)備,其配置為實(shí)施動(dòng)作: 經(jīng)由所述選通信號(hào)關(guān)閉包括在所述集成電路中的所述多個(gè)邏輯門;以及 實(shí)施與所述指令相關(guān)聯(lián)的一個(gè)或多個(gè)操作而不考慮遵從所述精度標(biāo)準(zhǔn)。
5.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),其中所述精度標(biāo)準(zhǔn)包括電氣和電子工程師協(xié)會(huì)(IEEE) 754、IEEE754-1985、IEEE854-1987 和 IEEE754-2008 中的至少一個(gè)。
6.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),其中確定所述混合乘加指令不要求遵從所述精度標(biāo)準(zhǔn)包括接收用于所述混合乘加指令的操作模式,所述操作模式與以下各項(xiàng)中的至少一個(gè)相關(guān)聯(lián): 接收自用戶輸入設(shè)備的手動(dòng)超控; 指示所述混合乘加指令不要求遵從所述精度標(biāo)準(zhǔn)的編譯器通信;以及 指示所述應(yīng)用不要求遵從所述精度標(biāo)準(zhǔn)的應(yīng)用通信。
7.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),其中確定所述混合乘加指令不要求遵從所述精度標(biāo)準(zhǔn)與要求小于高保真度的圖形渲染的特定應(yīng)用相關(guān)聯(lián)。
8.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),進(jìn)一步包括混合乘加設(shè)備,所述混合乘加設(shè)備配置為通過(guò)使用基于一個(gè)或多個(gè)部分積的乘法器陣列將所述操作數(shù)A乘以所述操作數(shù)B,并且其中所述操作數(shù)設(shè)備進(jìn)一步配置為標(biāo)識(shí)所述部分積的低階位和所述部分積的高階位,并且其中所述混合乘加設(shè)備進(jìn)一步配置為斷開(kāi)所述部分積的所述低階位的觸發(fā)器。
9.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),其中所述檢查器設(shè)備進(jìn)一步配置為通過(guò)由確定所述操作數(shù)(6:的指數(shù)極大于所述操作數(shù)八的指數(shù)和所述操作數(shù)8的指數(shù)的和來(lái)檢查操作數(shù)的指數(shù)而生成所述選通信號(hào),并且其中所述運(yùn)算子系統(tǒng)進(jìn)一步包括混合乘加設(shè)備,所述混合乘加設(shè)備配置為斷開(kāi)所述集成電路的配置為將所述操作數(shù)八乘以所述操作數(shù)8的觸發(fā)器。
10.根據(jù)權(quán)利要求2所述的運(yùn)算子系統(tǒng),其中所述檢查器設(shè)備進(jìn)一步配置為通過(guò)檢查操作數(shù)的指數(shù)生成所述選通信號(hào),并且其中檢查操作數(shù)的指數(shù)包括確定操作數(shù)的指數(shù)極小于操作數(shù)六的指數(shù)加上操作數(shù)8的指數(shù)的和,并且其中所述運(yùn)算子系統(tǒng)進(jìn)一步包括混合乘加設(shè)備,所述混合乘加設(shè)備配置為斷開(kāi)所述集成電路的配置為加上所述操作數(shù)的觸發(fā)器。
【文檔編號(hào)】G06F9/302GK103838549SQ201310596158
【公開(kāi)日】2014年6月4日 申請(qǐng)日期:2013年11月21日 優(yōu)先權(quán)日:2012年11月21日
【發(fā)明者】戴維·孔拉爾·坦倫包姆, 科林·斯普林克爾, 斯圖爾特·F·奧伯曼, 蕭耀明, 斯里尼瓦?!ひ疇? 恩池·顏·孔 申請(qǐng)人:輝達(dá)公司