具有近似計算功能單元的處理器的制造方法
【專利說明】具有近似計算功能單元的處理器
[0001]相關(guān)申請的交叉引用
[0002]本發(fā)明主張申請?zhí)枮?4/522,530、申請日為2014年10月23日的美國正式申請的優(yōu)先權(quán),此美國正式申請主張臨時案號為61/937,741、申請日為2014年2月10日的美國臨時申請的優(yōu)先權(quán),此美國臨時申請名稱為可執(zhí)行近似計算指令的處理器;可從過多的近似計算誤差中恢復(fù)的處理器;具有近似計算功能單元的處理器,其全部內(nèi)容并入本申請中作參考。
技術(shù)領(lǐng)域
[0003]本發(fā)明涉及處理器技術(shù)領(lǐng)域,尤其涉及一種具有近似計算功能單元的處理器。
【背景技術(shù)】
[0004]在近似計算(approximate computing)領(lǐng)域中,已經(jīng)存在大量的理論基礎(chǔ)。近似計算嘗試以一種減少功率消耗的方式以執(zhí)行計算,而代價為可能會降低計算的精確度。雖然近似計算已成為學(xué)術(shù)界最受歡迎的題目,但幾乎沒有應(yīng)用于商業(yè)上可使用的處理器中。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種處理器,該處理器包括:一指示器,被配置以表示一第一模式或一第二模式;以及一功能單元,被配置以在該指示器表示該第一模式時以一完整精確度執(zhí)行計算,以及在該指示器表示該第二模式時以低于該完整精確度的一較低精確度執(zhí)行計算。
[0006]在另一實施例中,本發(fā)明提供一種透過具備一指示器與一功能單元的一處理器執(zhí)行的方法,該方法包括設(shè)定該指示器以表示一第一模式或一第二模式;以及透過該功能單元,在該指示器表示該第一模式時以一完整精確度執(zhí)行計算,以及在該指示器表示該第二模式時以低于該完整精確度的一較低精確度執(zhí)行計算。
[0007]在又一實施例中,本發(fā)明提供一種功能單元。該功能單元包括一輸入,被配置以表示一第一模式或一第二模式;以及計算邏輯,被配置以在一指示器表示該第一模式時以一完整精確度執(zhí)行計算,以及在該指示器表示該第二模式時以低于該完整精確度的一較低精確度執(zhí)行計算。
【附圖說明】
[0008]圖1是依據(jù)本發(fā)明一實施例的處理器的方塊圖;
[0009]圖2是圖1的近似功能單元的三種實施例的方塊圖;
[0010]圖3是依據(jù)本發(fā)明一實施例的近似指令的方塊圖;
[0011]圖4是依據(jù)本發(fā)明一實施例中,圖1的處理器的操作流程圖;
[0012]圖5是依據(jù)本發(fā)明一實施例,在一計算機系統(tǒng)中,圖1的處理器的操作流程圖;
[0013]圖6是本發(fā)明的計算系統(tǒng)的三種實施例的方塊圖;
[0014]圖7是依據(jù)本發(fā)明一實施例中,圖6的計算系統(tǒng)的系統(tǒng)操作流程圖;
[0015]圖8是依據(jù)本發(fā)明一實施例的運行于一近似計算感知處理器的軟件的開發(fā)流程圖;
[0016]圖9是依據(jù)本發(fā)明一實施例的運行于一近似計算感知處理器的軟件的另一開發(fā)流程圖;
[0017]圖10是依據(jù)本發(fā)明一實施例中,圖1的處理器用以運行一個執(zhí)行近似計算的程序的操作流程圖;
[0018]圖11是依據(jù)本發(fā)明一實施例中,圖10的步驟1014的詳細(xì)操作流程圖;
[0019]圖12是依據(jù)本發(fā)明另一實施例中,圖10的步驟1014的詳細(xì)操作流程圖。
【具體實施方式】
[0020]本發(fā)明將描述執(zhí)行近似計算的一處理器的各種實施例。近似計算的使用時機是一計算以低于一完整精確度(full accuracy)的一精確度等級來執(zhí)行時,并且可透過該處理器的指令集架構(gòu)(instruct1n set architecture)來指不。
[0021]圖1表不本發(fā)明一實施例的處理器100的方塊圖。處理器100包括一可程序化數(shù)據(jù)處理器,用以執(zhí)行已儲存的指令,例如一中央處理單元(CPU)或一圖形處理單元(GPU)。處理器100包括一指令快取102 ;—指令轉(zhuǎn)譯器104,耦接至指令快取102 ;一或多個近似功能單元106,耦接指令轉(zhuǎn)譯器104并接收源自指令轉(zhuǎn)譯器104的微指令(microinstruct1n);架構(gòu)緩存器108,親接近似功能單元106以提供指令操作數(shù)(operand) 166至近似功能單元106 ;—近似控制緩存器132,親接至近似功能單元106 ; —數(shù)據(jù)高速緩存138,親接至近似功能單元106 ;以及一決照(snapshot)儲存器134,親接至近似功能單元106。處理器100還可包括其他單元,舉例而言,一重新命名單元、指令排程器和/或保留站(reservat1n stat1n)可被使用于指令轉(zhuǎn)譯器104以及近似功能單元106之間,以及一重排序緩沖器(reorder buffer)可被使用以提供亂序指令的執(zhí)行。
[0022]指令快取102儲存架構(gòu)指令174,架構(gòu)指令174是從內(nèi)存讀取且由處理器100執(zhí)行。架構(gòu)指令174可包括近似計算指令,例如圖3的近似計算指令399。近似計算指令399控制處理器100的近似計算方針(policy),也即,近似功能單元106是以一完整精確度或小于一完整精確度來執(zhí)行計算。近似計算指令399還控制一誤差量的清除動作,該誤差量是有關(guān)于本實施例的處理器100的每個通用緩存器。在較佳實施例中,處理器100包括其他非近似的功能單元。在一實施例中,架構(gòu)指令174實質(zhì)上符合一 x86指令集架構(gòu)(ISA),該x86指令集架構(gòu)是被修改以包括本發(fā)明所述的近似計算指令399。在其他實施例中,處理器100還可使用X86指令集架構(gòu)以外的指令集架構(gòu)。
[0023]指令轉(zhuǎn)譯器104透過指令快取102接收架構(gòu)指令174。指令轉(zhuǎn)譯器104包括一指令解碼器,用以解碼架構(gòu)指令174并且轉(zhuǎn)譯成微指令。上述微指令是透過非架構(gòu)指令集的一指令集以定義,也即一微架構(gòu)的(microarchitectural)指令集。上述微指令用以實現(xiàn)架構(gòu)指令174。
[0024]在一較佳實施例中,指令轉(zhuǎn)譯器104還包括微碼(microcode) 136,微碼136包括微碼指令,上述微碼指令偏好儲存于處理器100的一只讀存儲器。在一實施例中,上述微碼指令是微指令(microinstruct1n)。在另一實施例中,上述微碼指令透過一微轉(zhuǎn)譯器以轉(zhuǎn)譯成微指令。微碼136實現(xiàn)處理器100的指令集架構(gòu)的架構(gòu)指令174的一子集(subset),該子集并非透過指令轉(zhuǎn)譯器104的一可程序化邏輯數(shù)組以直接轉(zhuǎn)譯成微指令。此外,微碼136用以處理微架構(gòu)的異常(except1n)(如異常172),例如在一實施例中,當(dāng)累積誤差界限(cumulative error bound)超出一誤差界限時所產(chǎn)生的異常,其中上述累積誤差界限是由近似計算所產(chǎn)生。
[0025]架構(gòu)緩存器108提供指令(例如微指令)操作數(shù)166至近似功能單元106且接收似功能單元106所產(chǎn)生的結(jié)果,較佳的實施方式是透過一重排序緩存器以執(zhí)行(圖中未示出)。有關(guān)于每個架構(gòu)緩存器108的誤差儲存器109,可保持儲存在架構(gòu)緩存器108的結(jié)果內(nèi)的誤差量的示值(indicat1n)。每當(dāng)一近似功能單元106產(chǎn)生一結(jié)果164 (該結(jié)果164是被寫入一架構(gòu)緩存器108),近似功能單元106還產(chǎn)生一誤差168的一示值,而誤差168是有關(guān)于結(jié)果164,且該示值是由于近似計算而產(chǎn)生累積。誤差168是被寫入與架構(gòu)緩存器108有關(guān)的誤差儲存器109。此外,每當(dāng)一架構(gòu)緩存器108提供一操作數(shù)至一近似功能單元106時,相關(guān)的誤差儲存器109提供與該操作數(shù)有關(guān)的誤差162至近似功能單元106。此一動作致使近似功能單元106同時累積該計算的指令操作數(shù)166的誤差以及近似功能單元106執(zhí)行該近似計算時所產(chǎn)生的誤差。
[0026]快照儲存器134可保存處理器100的狀態(tài)(state)的一快照。在處理器100開始執(zhí)行近似計算以前,處理器100把自身的狀態(tài)寫入快照儲存器134,以便若一近似計算的結(jié)果的累積誤差超過一誤差界限時,處理器100可透過快照儲存器134恢復(fù)自身的狀態(tài),并且以非近似計算的方式重新執(zhí)行計算,以下將透過一實施例詳細(xì)描述此動作。在一實施例中,快照儲存器134包括處理器100的一專有內(nèi)存。在一較佳實施例中,快照儲存器134包括執(zhí)行近似計算的一指令集的第一指令的一地址。在一實施例中(例如圖10),微碼136致使該指令集以非近似方法重新執(zhí)行,微碼136致使該第一指令的該地址的一分支(branch)在快照儲存器134中執(zhí)行。
[0027]數(shù)據(jù)高速緩存138儲存系統(tǒng)內(nèi)存位置的數(shù)據(jù)。在一實施例中,數(shù)據(jù)高速緩存138為高速緩存的一階層,上述高速緩存包括一第一層快取以及一第二層快取,且該第二層快取支持指令快取102以及該第一層快取。在一實施例中,若一程序參與恢復(fù)動作,采用該近似計算的該程序必須確保該程序的數(shù)據(jù)對數(shù)據(jù)高速緩存138不會造成溢位(overflow),其中該恢復(fù)動作是在處理器100發(fā)生超過該誤差界限的狀況下執(zhí)行。
[0028]在一實施例中,近似控制緩存器132保存指定處理器100的近似方針176的信息,且提供至近似功能單元106。在一較佳實施例中,近似控制緩存器132包含一近似旗標(biāo)(flag)、一近似量以及一誤差界限(error bound)(或誤差臨界值)。該近似旗標(biāo)表示由近似功能單元106所執(zhí)行的計算應(yīng)為完整精確度計算或近似計算,也即是完整精確度模式或近似計算模式(或近似模式)。該近似量指示近似功能單元106低于完整精確度的一精確程度,該精確程度可使用于執(zhí)行近似計算。該誤差界限指定誤差168的一累積量,該累積量可為一近似計算的結(jié)果164所容許,而處理器100發(fā)送該誤差界限已被超越的訊號時,該計算將偏好以非近似方法重新執(zhí)行。在一實施例中,近似功能單元106依據(jù)儲存在近似控制緩存器132的該近似方針以執(zhí)行計算。在另一實施例中,每個指令指定該近似方針至近似功能單元106,例如透過一前綴。在一實施例中,近似控制緩存器132可被處理器100的該指令集架構(gòu)的一指令所