TWI559224B - 處理器與透過處理器執行的方法 - Google Patents

處理器與透過處理器執行的方法 Download PDF

Info

Publication number
TWI559224B
TWI559224B TW104134495A TW104134495A TWI559224B TW I559224 B TWI559224 B TW I559224B TW 104134495 A TW104134495 A TW 104134495A TW 104134495 A TW104134495 A TW 104134495A TW I559224 B TWI559224 B TW I559224B
Authority
TW
Taiwan
Prior art keywords
processor
approximate
calculation
error
instruction
Prior art date
Application number
TW104134495A
Other languages
English (en)
Other versions
TW201616345A (zh
Inventor
G 葛蘭 亨利
泰瑞 派克斯
羅德尼E 虎克
Original Assignee
上海兆芯集成電路有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/522,512 external-priority patent/US9389863B2/en
Application filed by 上海兆芯集成電路有限公司 filed Critical 上海兆芯集成電路有限公司
Publication of TW201616345A publication Critical patent/TW201616345A/zh
Application granted granted Critical
Publication of TWI559224B publication Critical patent/TWI559224B/zh

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Description

處理器與透過處理器執行的方法
本發明係有關於處理器,特別係有關於可執行近似運算之處理器。
在近似運算(approximate computing)領域中,已經存在大量的理論基礎。近似運算嘗試以一種減少功率消耗的方式以執行運算,而代價為可能會降低運算的精確度。雖然近似運算已成為學術界最受歡迎的題目,但幾乎沒有應用於商業上可使用之處理器中。
本發明提供一種處理器。該處理器包括一解碼器,該解碼器被配置以解碼一指令,而該指令用以指示該處理器使用一近似方法以執行後續的計算。該處理器一包括一功能單元,該功能單元被配置以透過該近似方法來執行上述後續計算,藉此響應該指令。
在另一實施例中,本發明提供一方法,該方法透過一處理器以執行。該方法包括由該處理器解碼一指令,而該指令指示該處理器透過一近似方法以執行後續計算。該方法亦包括由該處理器以該近似方法執行上述後續計算以響應於該指令。
在又一實施例中,本發明提供一種處理器。該處理器包括一通用暫存器(general purpose register)以及一解碼器,而該解碼器被配置以解碼一指令,而該指令用以指示該處理器清除一誤差量(error amount),該誤差量係有關於儲存在該處理器之一通用暫存器的一個值。該誤差量表示有關於一計算之一結果之誤差的一量值,而該計算係由該處理器透過一近似方法所執行。該處理器被配置以清除該誤差量以響應於該指令。
在又一實施例中,本發明提供一方法,該方法透過一處理器以執行。該方法包括由該處理器解碼一指令,而該指令用以指示該處理器清除一誤差量,該誤差量係有關於儲存在該處理器之一通用暫存器的一個值。該誤差量表示有關於一計算之一結果之誤差的一量值,而該計算係由該處理器透過一近似方法所執行。該方法亦包括由該處理器清除該誤差量以響應於該指令。
在又一實施例中,本發明提供一處理器。該處理器包括一解碼器,該解碼器被配置以解碼一指令。該指令指定將執行之一計算。該指令包括一前綴(prefix),該前綴表示該處理器係以一近似方法來執行該計算。該處理器亦包括一功能單元,該功能單元被配置以透過該近似方法來執行該計算,其中該計算係被該指令所指定,且該近似方法係由該前綴所指定。
在又一實施例中,本發明提供一方法,該方法透過一處理器以執行。該方法包括由該處理器解碼一指令,其中該指令用以指定將執行之一計算,其中該指令包括一前綴,該 前綴表示該處理器係以一近似方法來執行該計算。該方法亦包括由該處理器透過該近似方法以執行該計算,而該計算係由該指令所指定,且該近似方法係由該前綴所指定。
100‧‧‧處理器
102‧‧‧指令快取
104‧‧‧指令轉譯器
106‧‧‧近似功能單元
106A‧‧‧近似浮點乘法器
106B‧‧‧近似超越函數計算單元
106C‧‧‧近似除法器
108‧‧‧架構暫存器
109‧‧‧誤差儲存器
132‧‧‧近似控制暫存器
134‧‧‧快照儲存器
136‧‧‧微碼
138‧‧‧資料快取記憶體
162、168‧‧‧誤差
164‧‧‧結果
166‧‧‧指令運算元
172‧‧‧異常
174‧‧‧架構指令
176‧‧‧近似方針
202‧‧‧最高有效位元乘法閘
204‧‧‧最低有效位元乘法閘
206‧‧‧電源控制
212A‧‧‧高次多項式
212B‧‧‧低次多項式
214‧‧‧超越計算邏輯
216‧‧‧多工器
222‧‧‧除法邏輯
224‧‧‧疊代控制邏輯
226‧‧‧精確度指示
300‧‧‧具備一近似前綴之計算指令
302‧‧‧近似前綴
304‧‧‧操作碼與其他欄
310‧‧‧近似計算指令
312‧‧‧近似計算操作碼與其他欄
320‧‧‧具備一開始近似前綴之計算指令
322‧‧‧開始近似前綴
324‧‧‧操作碼與其他欄
330‧‧‧開始近似指令
332‧‧‧開始近似操作碼
340‧‧‧具備一停止近似前綴之計算指令
342‧‧‧停止近似前綴
344‧‧‧操作碼與其他欄
350‧‧‧停止近似指令
352‧‧‧停止近似操作碼
360‧‧‧具備一清除誤差前綴之計算指令
362‧‧‧清除誤差前綴
364‧‧‧操作碼與其他欄
366‧‧‧暫存器欄
370‧‧‧清除誤差指令
372‧‧‧清除誤差操作碼
376‧‧‧暫存器欄
380‧‧‧負載暫存器與清除誤差指令
382‧‧‧負載暫存器操作碼
384‧‧‧記憶體位址運算元欄
386‧‧‧暫存器欄
399‧‧‧近似計算指令
402-458‧‧‧步驟
502-504‧‧‧步驟
602A‧‧‧桌上型電腦
602B‧‧‧筆記型電腦
602C‧‧‧手持電腦
606A~606C‧‧‧顯示器
604‧‧‧緩衝器
702-708‧‧‧步驟
802-804‧‧‧步驟
902-904‧‧‧步驟
1002-1014‧‧‧步驟
1102-1104‧‧‧步驟
1202-1204‧‧‧步驟
第1圖係依據本發明一實施例之處理器的方塊圖。
第2圖係第1圖之近似功能單元之三種實施例的方塊圖。
第3圖係依據本發明一實施例之近似指令的方塊圖。
第4A圖係依據本發明一實施例中,第1圖之處理器的操作流程圖。
第4B圖係依據本發明一實施例中,第1圖之處理器的操作流程圖。
第5圖係依據本發明一實施例,在一電腦系統中,第1圖之處理器的操作流程圖。
第6圖係本發明之計算系統之三種實施例的方塊圖。
第7圖係依據本發明一實施例中,第6圖之計算系統的系統操作流程圖。
第8圖係依據本發明一實施例之運行於一近似計算感知處理器之軟體的開發流程圖。
第9圖係依據本發明一實施例之運行於一近似計算感知處理器之軟體的另一開發流程圖。
第10圖係依據本發明一實施例中,第1圖之處理器用以運行一個執行近似計算之程式的操作流程圖。
第11圖係依據本發明一實施例中,第10圖之步驟1014的詳 細操作流程圖。
第12圖係依據本發明另一實施例中,第10圖之步驟1014的詳細操作流程圖。
本發明將描述執行近似計算之一處理器的各種實施例。近似計算的使用時機係一計算以低於一完整精確度(full accuracy)之一精確度等級來執行時,並且可透過該處理器之指令集架構(instruction set architecture)來指示。
第1圖表示本發明一實施例之處理器100的方塊圖。處理器100包括一可程式化資料處理器,用以執行已儲存之指令,例如一中央處理單元(CPU)或一圖形處理單元(GPU)。處理器100包括一指令快取102;一指令轉譯器104,耦接至指令快取102;一或多個近似功能單元106,耦接指令轉譯器104並接收源自指令轉譯器104的微指令(microinstruction);架構暫存器108,耦接近似功能單元106以提供指令運算元(operand)166至近似功能單元106;一近似控制暫存器132,耦接至近似功能單元106;一資料快取記憶體138,耦接至近似功能單元106;以及一快照(snapshot)儲存器134,耦接至近似功能單元106。處理器100亦可包括其他單元,舉例而言,一重新命名單元、指令排程器及/或保留站(reservation station)可被使用於指令轉譯器104以及近似功能單元106之間,以及一重排序緩衝器(reorder buffer)可被使用以提供亂序指令的執行。
指令快取102儲存架構指令174,架構指令174係從記憶體讀取且由處理器100執行。架構指令174可包括近似計算 指令,例如第3圖之近似計算指令399。近似計算指令399控制處理器100之近似計算方針(policy),亦即,近似功能單元106係以一完整精確度或小於一完整精確度來執行計算。近似計算指令399亦控制一誤差量的清除動作,該誤差量係有關於本實施例之處理器100之每個通用暫存器。在較佳實施例中,處理器100包括其他非近似之功能單元。在一實施例中,架構指令174實質上符合一x86指令集架構(ISA),該x86指令集架構係被修改以包括本發明所述之近似計算指令399。在其他實施例中,處理器100亦可使用x86指令集架構以外的指令集架構。
指令轉譯器104透過指令快取102接收架構指令174。指令轉譯器104包括一指令解碼器,用以解碼架構指令174並且轉譯成微指令。上述微指令係透過非架構指令集的一指令集以定義,亦即一微架構的(microarchitectural)指令集。上述微指令用以實現架構指令174。
在一較佳實施例中,指令轉譯器104亦包括微碼(microcode)136,微碼136包括微碼指令,上述微碼指令偏好儲存於處理器100之一唯讀記憶體。在一實施例中,上述微碼指令係微指令(microinstruction)。在另一實施例中,上述微碼指令透過一微轉譯器以轉譯成微指令。微碼136實現處理器100之指令集架構之架構指令174的一子集(subset),該子集並非透過指令轉譯器104之一可程式化邏輯陣列以直接轉譯成微指令。此外,微碼136用以處理微架構的異常(exception)(如異常172),例如在一實施例中,當累積誤差界限(cumulative error bound)超出一誤差界限時所產生的異常,其中上述累積誤差界 限係由近似計算所產生。
架構暫存器108提供指令(例如微指令)運算元166至近似功能單元106且接收似功能單元106所產生之結果,較佳的實施方式係透過一重排序暫存器以執行(未示於圖式中)。有關於每個架構暫存器108之誤差儲存器109,可保持儲存在架構暫存器108之結果內之誤差量的示值(indication)。每當一近似功能單元106產生一結果164(該結果164係被寫入一架構暫存器108),近似功能單元106亦產生一誤差168的一示值,而誤差168係有關於結果164,且該示值係由於近似計算而產生累積。誤差168係被寫入與架構暫存器108有關之誤差儲存器109。此外,每當一架構暫存器108提供一運算元至一近似功能單元106時,相關之誤差儲存器109提供與該運算元有關之誤差162至近似功能單元106。此一動作致使近似功能單元106同時累積該計算之指令運算元166的誤差以及近似功能單元106執行該近似計算時所產生之誤差。
快照儲存器134可保存處理器100之狀態(state)的一快照。在處理器100開始執行近似計算以前,處理器100把自身的狀態寫入快照儲存器134,以便若一近似計算之結果的累積誤差超過一誤差界限時,處理器100可透過快照儲存器134恢復自身的狀態,並且以非近似計算的方式重新執行計算,以下將透過一實施例詳細描述此動作。在一實施例中,快照儲存器134包括處理器100之一專有記憶體。在一較佳實施例中,快照儲存器134包括執行近似計算之一指令集之第一指令的一位址。在一實施例中(例如第10圖),微碼136致使該指令集以非近 似方法重新執行,微碼136致使該第一指令之該位址的一分支(branch)在快照儲存器134中執行。
資料快取記憶體138儲存系統記憶體位置的資料。在一實施例中,資料快取記憶體138為快取記憶體之一階層,上述快取記憶體包括一第一層快取以及一第二層快取,且該第二層快取支持指令快取102以及該第一層快取。在一實施例中,若一程式參與恢復動作,採用該近似計算之該程式必須確保該程式之資料對資料快取記憶體138不會造成溢位(overflow),其中該恢復動作係在處理器100發生超過該誤差界限的狀況下執行。
在一實施例中,近似控制暫存器132保存指定處理器100之近似方針176的資訊,且提供至近似功能單元106。在一較佳實施例中,近似控制暫存器132包含一近似旗標(flag)、一近似量以及一誤差界限(error bound)(或誤差臨界值)。該近似旗標表示由近似功能單元106所執行之計算應為完整精確度計算或近似計算,亦即係完整精確度模式或近似計算模式(或近似模式)。該近似量指示近似功能單元106低於完整精確度之一精確程度,該精確程度可使用於執行近似計算。該誤差界限指定誤差168之一累積量,該累積量可為一近似計算之結果164所容許,而處理器100發送該誤差界限已被超越的訊號時,該計算將偏好以非近似方法重新執行。在一實施例中,似功能單元106依據儲存在近似控制暫存器132之該近似方針以執行計算。在另一實施例中,每個指令指定該近似方針至似功能單元106,例如透過一前綴。在一實施例中,近似控制暫存器132可 被處理器100之該指令集架構的一指令所寫入。
似功能單元106可選擇性地執行正常計算(例如以該指令集架構指定之完整精確度以執行)或近似計算(例如以該指令集架構指定之低於該完整精確度之精確度以執行)。每個似功能單元106係一硬體或硬體與處理器100之微碼的一組合,且執行有關於一指令之處理的一功能。更加具體而言,該硬體或硬體與微碼之該組合執行一計算以產生一結果。功能單元之實施例可包括但不限於執行單元,例如一整數(integer)單元;一單指令多資料(SIMD)單元;一多媒體單元;以及一浮點單元,例如一浮點乘法器、浮點除法器以及浮點加法器。近似功能單元106在執行近似計算時比執行正常計算時消耗較少的功率。似功能單元106的實施例將會透過第2圖而更加詳細地描述。
第2圖係第1圖之近似功能單元106之三種實施例的方塊圖。分別為一近似浮點乘法器106A、一近似超越函數(transcendental function)計算單元106B以及一近似除法器106C。
近似浮點乘法器106A接收架構暫存器108之指令運算元166且產生第1圖之結果164。近似浮點乘法器106A包括最高有效位元乘法閘202,用以執行指令運算元166之最高有效位元之乘法;以及最低有效位元乘法閘204,用以執行指令運算元166之最低有效位元之乘法。近似浮點乘法器106A亦包括電源控制206,用以根據近似方針176以控制選擇性電源供應至最低有效位元乘法閘204。例如,若所使用之近似模式係使用 完整精確度,電源控制206致使電源供應至最低有效位元乘法閘204之電晶體;若該近似模式係使用低於該完整精確度之精確度,電源控制206致使電源不被提供至最低有效位元乘法閘204之電晶體。在一實施例中,該等最低有效位元乘法閘204被編組,且電源供應206根據近似方針176之該近似量以關閉相關的部分最低有效位元乘法閘。在一較佳實施例中,近似浮點乘法器106A被配置以提供最低有效位元乘法閘204之中間結果(intermediate results)至最高有效位元乘法閘202(例如進位),且當最低有效位元乘法閘204於近似計算模式中關閉時,預設值(例如零)將以該中間結果的形式提供至最高有效位元乘法閘202。
一般而言,近似浮點乘法器106A可執行兩個N位元之指令運算元166的乘法,其中N位元係該指令集架構指定之完整精確度。而近似浮點乘法器106A亦可執行兩個低於N位元之指令運算元166的乘法以產生精確度低於完整精確度的結果164。在一較佳實施例中,當執行乘法時,近似浮點乘法器106A排除指令運算元166之M位元的最低有效位元,其中M的數值小於N。舉例而言,當指令運算元166之尾數(mantissas)為53位元時,近似浮點乘法器106A之最低有效位元乘法閘204之複數電晶體會被關閉,其中該等電晶體通常會使用於指令運算元166之53位元之較低M位元的乘法中。該等電晶體之關閉使得指令運算元166之較低M位元並未包含於該近似乘法中,其中該M位元數係由該近似方針所指定,例如近似控制暫存器132中。在此操作下,近似浮點乘法器106A之近似模式潛在地比完整精確 度模式消耗較少的功率,因為近似模式可關閉通常使用於執行被排除之位元之乘法的電晶體。在一較佳實施例中,被排除之M位元的數量會被量化(quantized),藉此使得只有一受限制之數量之M的值可透過該近似方針而被指定,進而減少電源供應206的複雜度。
近似超越函數計算單元106B接收架構暫存器108之指令運算元166且產生第1圖之結果164。近似超越函數計算單元106B包括超越計算邏輯214,用以對指令運算元166執行超越函數,以基於一多項式產生結果164。該多項式係透過多工器216所選擇,多工器216可基於近似方針176之一選擇控制輸入選擇一高次多項式212A或一低次多項式212B,例如該近似模式。也就是說,當該近似模式係使用完整精確度時,多工器216選擇高次多項式212A;當該近似模式係使用低於該完整精確度之精確度時,多工器216選擇低次多項式212B。一般而言,近似超越函數計算單元106B使用一N次多項式以執行完整精確度之超越函數,且使用一M次多項式(其中M的數值小於N)以執行低於完整精確度之超越函數,其中M係由該近似方針所指定。藉由在近似模式採用一較低次多項式以執行該超越函數計算,近似超越函數計算單元106B可相較於在完整精確度執行下消耗較少功率且更佳地執行。上述優勢是因為採用一較低次多項式,可相較於一高次多項式而要求較少乘法器與加法器。
近似除法器106C接收架構暫存器108之指令運算元166且產生第1圖之結果164。近似除法器106C包括除法邏輯222以及疊代(iteration)控制邏輯224。除法邏輯222對指令運算 元166執行一除法計算以產生結果164以及產生在第一次疊代期間之結果164之一精確度指示226。結果164以除法邏輯222之輸入的形式回授至除法邏輯222,且精確度指示226被提供至疊代控制邏輯224。在後續的疊代動作中,除法邏輯222對指令運算元166以及前一次疊代之結果164執行一除法計算以產生另一個結果164以及目前疊代動作之結果164之疊代精確度指示226,而結果164以除法邏輯222之輸入的形式回授至除法邏輯222,且精確度指示226被提供至疊代控制邏輯224。疊代控制邏輯224監測精確度指示226,並且當精確度指示226達到近似方針176之一可接受程度時停止上述疊代動作。當該近似方針指示近似模式時,藉由執行較少次疊代以換取低於完整精確度之精確度,近似除法器106C可藉此達成降低功率消耗的目的。
在一實施例中,每個近似功能單元106包括一查找表,以輸出關於結果164之誤差168的量值,其中結果164係透過近似功能單元106基於誤差162以及該近似方針之誤差量而產生。由該查找表輸出之誤差168的量值係一近似值,該近似值係指定有關於結果164之一最大誤差量值。
在一實施例中近似功能單元106包括一指令解碼器,用以解碼指令轉譯器104在轉譯近似計算指令399時所產生之微指令,藉以判定所有或一部分除了近似控制暫存器132所提供之外的近似方針。在另一實施例中,該指令解碼器用以解碼近似計算指令399本身,例如,在一實施例中指令轉譯器104單純地解碼架構指令174以安排至合適的近似功能單元106的路線,且近似功能單元106解碼架構指令174以判別該近似方 針。
第3圖係依據本發明一實施例之近似計算指令399的方塊圖。更加具體而言,該近似計算指令399包括具備一近似前墜之計算指令300;一近似計算指令310;一具備一開始近似前綴之計算指令320;一開始近似指令330;一具備一停止近似前綴之計算指令340;一停止近似指令350;一具備一清除誤差前綴之計算指令360;一清除誤差指令370;以及一負載暫存器與清除誤差指令380。
具備一近似前墜之計算指令300包括一操作碼(opcode)與其他欄(field)304,例如一般處理器100之指令集的內容。操作碼與其他欄304可指定任何不同的計算,該等計算可由近似功能單元106來執行,例如加法、減法、乘法、除法、融合的加法與乘法(fused multiply add)、平方根、倒數、倒數平方根以及超越函數,舉例而言,透過可執行該計算之近似功能單元106以產生一低於完整精確度之一結果係可能執行的,亦即依據該完整精確度模式。具備一近似前墜之計算指令300亦包括一近似前綴302。在一實施例中,近似前綴302包括一預定值,該預定值存在於指令之位元組流且位於操作碼與其他欄304之前,用以指示處理器100以一近似方法執行所指定之計算。在一實施例中,該預定值係尚未被使用如指令集架構之一前綴值的一個值,例如x86指令集架構。在一實施例中,近似前綴302之一部分用以指定該近似方針或至少該近似方針之一部分(例如該近似量及/或誤差界限)以被採用於操作碼與其他欄304所指定之計算。在另一實施例中,近似前綴302單純表示 操作碼與其他欄304所指定之該計算須以近似方法執行,而該近似方針係從處理器100於先前通信之整體近似方針中所採取,且可被儲存,例如在一暫存器中(例如近似控制暫存器132)。其他實施例預期具備一近似前墜之計算指令300之該近似方針係衍生自近似前綴302與該整體近似方針。
在另一實施例中,近似計算指令310包括一近似計算操作碼與其他欄312。近似計算操作碼與其他欄312之近似計算操作碼的值係與其他處理器100之指令集的操作碼的值不同。亦即,該近似計算操作碼的值與其他一般(例如不具備如近似前綴302之前綴)用以指示處理器100以完整精確度執行一計算之操作碼的值不同。該指令集包括複數近似計算指令310,且各自執行一種類型的計算,例如,一近似計算指令310具備本身不同之操作碼以執行加法;以及一近似計算指令310具備本身不同之操作碼以執行減法等。
具備一開始近似前綴之計算指令320包括一操作碼與其他欄324,例如一般處理器100之指令集的內容。操作碼與其他欄324之操作碼可指定任何不同的計算,或者該操作碼可為一非計算之指令。具備一開始近似前綴之計算指令320亦包括一開始近似前綴322。在一實施例中,開始近似前綴322包括一預定值,該預定值存在於指令之位元組流且位於操作碼與其他欄324之前,用以指示處理器100以一近似方法執行後續之計算(包括具備一開始近似前綴之計算指令320所指定之計算),直到被指示以停止由一近似方法執行計算(例如透過下文之具備一停止近似前綴之計算指令340以及停止近似指令 350)。在一實施例中,該預定值係尚未被使用如指令集架構之一前綴值的一個值,例如x86指令集架構,且不同於其他本文所述之前綴(例如近似前綴302、停止近似前綴342以及清除誤差前綴362)。開始近似前綴322之各實施例係相似於近似前綴302,其相似處在於開始近似前綴322之一部份可指定該近似方針,或單純表示後續計算應透過該整體近似方針以近似方法執行,或透過上述特徵之組合以執行。
在另一實施例中,開始近似指令330包括一開始近似操作碼332。開始近似指令330指示處理器100以一近似方法執行後續計算,直到被指示停止以一近似方法執行計算。開始近似操作碼332之各種實施例係相似於近似前綴302,其相似處在於該近似方針之指定。近似操作碼332的值係不同於其他處理器100之指令集之操作碼的值。
具備一停止近似前綴之計算指令340具備一操作碼與其他欄344,例如一般處理器100之指令集的內容。操作碼與其他欄344之操作碼可指定任何不同的計算,或者該操作碼可為一非計算之指令。具備一停止近似前綴之計算指令340亦包括一停止近似前綴342。在一實施例中,停止近似前綴342包括一預定值,該預定值存在於指令之位元組流且位於操作碼與其他欄344之前,用以指示處理器100停止(直到被指示以一近似方法執行計算,如具備一近似前墜之計算指令300、近似計算指令310、具備一開始近似前綴之計算指令320或開始近似指令330)以一近似方法執行計算(包括具備一停止近似前綴之計算指令340所指定之計算)。在一實施例中,該預定值係尚未被 使用如指令集架構之一前綴值的一個值,例如x86指令集架構,且不同於其他本文所述之前綴。
在另一實施例中,停止近似指令350包括一停止近似操作碼352。停止近似指令350指示處理器100停止以一近似方法執行計算(直到被指示以一近似方法執行計算)。停止近似操作碼352的值係不同於其他處理器100之指令集之操作碼的值。在一實施例中,處理器100之一異常的產生亦會指示處理器100停止以一近似方法執行計算,亦即致使該近似模式被設定成完整精確度。
具備一清除誤差前綴之計算指令360具備一操作碼與其他欄364,例如一般處理器100之指令集的內容。操作碼與其他欄364之操作碼可指定任何不同的計算。具備一清除誤差前綴之計算指令360亦包括一暫存器欄366,用以指定處理器100寫入該計算之該結果的目的暫存器。具備一清除誤差前綴之計算指令360亦包括一清除誤差前綴362。在一實施例中,清除誤差前綴362包括一預定值,該預定值存在於指令之位元組流且位於操作碼與其他欄364之前,用以指示處理器100清除有關於架構暫存器108之誤差儲存器109,其中構暫存器108係由暫存器欄366所指定。在一實施例中,該預定值係尚未被使用如指令集架構之一前綴值的一個值,例如x86指令集架構,且不同於其他本文所述之前綴。
在另一實施例中,清除誤差指令370包括一清除誤差操作碼372以及一暫存器欄376。清除誤差指令370指示處理器100清除有關於架構暫存器108之誤差儲存器109,其中構暫 存器108係由暫存器欄376所指定。清除誤差操作碼372的值係不同於其他處理器100之指令集之操作碼的值。
負載暫存器與清除誤差指令380包括一負載暫存器操作碼382、記憶體位址運算元欄384以及一暫存器欄386。負載暫存器操作碼382指示處理器100將記憶體位址運算元欄384所指定之一記憶體位址的資料,載入暫存器欄386所指定之目的暫存器。負載暫存器操作碼382亦指示處理器100清除有關於架構暫存器108之誤差儲存器109,其中構暫存器108係由暫存器欄386所指定。
在一實施例中,清除誤差指令370為了所有架構暫存器108而清除誤差儲存器109,而非單一架構暫存器108。舉例而言,暫存器欄376的值可為一預設值以指示進行清除所有架構暫存器108。一相似的實施例係有關於含有具備一清除誤差前綴之計算指令360、負載暫存器以及負載暫存器與清除誤差指令380之計算指令。
在一實施例中,指令轉譯器104維持一旗標,該旗標表示處理器100係在近似計算模式或完整精確度模式。舉例而言,指令轉譯器104可設定該旗標以響應於開始近似指令330或具備一開始近似前綴之計算指令320,以及可清除該旗標以響應於停止近似指令350或具備一停止近似前綴之計算指令340。每個微指令包括一指示器(indicator),用以表示該微指令所指定之該計算應以完整精確度或一近似方法來執行。當指令轉譯器104轉譯指令運算元166為一或多個微指令時,指令轉譯器104將基於目前該旗標的值填入該指示器。另一方面,在一 架構近似計算指令下,例如具備一近似前墜之計算指令300或近似計算指令310,指令轉譯器104填入根據近似前綴302或近似計算操作碼與其他欄312之微指令的指示器。在又一實施例中,該微指令之該指示器包括一微指令操作碼(不同於微架構指令集之內容),該微指令操作碼指定一近似計算。
第4A圖與第4B圖係依據本發明一實施例中,第1圖之處理器100的操作流程圖。流程開始於步驟402。
在步驟402中,處理器100解碼指令運算元166,流程進入步驟404。
在步驟404中,處理器100判別指令運算元166是否為一開始近似指令,例如第3圖之具備一開始近似前綴之計算指令320或開始近似指令330。若是,流程進入步驟406;若不是,流程進入步驟414。
在步驟406中,處理器100依據該近似方針(例如由開始近似指令所指定之近似方針、近似控制暫存器132所指定之近似方針,或上述的組合)以執行後續運算,直到遇到一停止近似指令,例如第3圖之具備一停止近似前綴之計算指令340或停止近似指令350。流程結束於步驟406。
在步驟414中,處理器100判別指令運算元166是否為一停止近似指令,例如第3圖之具備一停止近似前綴之計算指令340或停止近似指令350。若是,流程進入步驟416;若不是,流程進入步驟424。
在步驟416中,處理器100停止以一近似方法執行計算,而係以完整精確度執行該等計算(直到遇到一開始近似 指令如第3圖之具備一開始近似前綴之計算指令320或開始近似指令330,或近似計算指令如第3圖之具備一近似前墜之計算指令300或近似計算指令310),流程結束於步驟416。
在步驟424中,處理器100判別指令運算元166是否為一清除誤差指令,例如第3圖之具備一清除誤差前綴之計算指令360或清除誤差指令370或負載暫存器與清除誤差指令380。若是,流程進入步驟426;若不是,流程進入步驟434。
在步驟426中,處理器100清除有關於架構暫存器108之誤差儲存器109,其中構暫存器108係由暫存器欄366或376或386所指定。流程停止於步驟426。
在步驟434中,處理器100判別指令運算元166是否為一計算指令。若是,流程進入步驟452;若不是,流程進入步驟446。
在步驟446中,處理器100執行其他指令運算元166,亦即近似計算指令399以外之指令集架構的指令。流程結束於步驟446。
在步驟452中,相對應之近似功能單元106接收指令運算元166且進行解碼。流程進入步驟454。
在步驟454中,近似功能單元106判別該近似方針係近似或完整精確度。若為近似,流程進入步驟456;若為完整精確度,流程進入步驟458。
在步驟456中,近似功能單元106以一近似方法執行該計算,如前文之第2圖所述。流程結束於步驟456。
在步驟458中,近似功能單元106以一非近似方法 執行該計算,亦即近似功能單元106係以完整精確度執行該計算。流程結束於步驟458。
第5圖係一電腦系統中,第1圖之處理器100的操作流程圖。流程開始於步驟502。
在步驟502中,處理器100所執行之一程式(例如作業系統或其他程式)判別處理器100所使用之一近似方針,以使處理器100執行計算。在一些較佳實施例中,該近似方針指定可容許之誤差界限,以及上述計算之近似量(亦即每個近似功能單元106在每次近似計算應採用之近似量)。該程式基於目前系統配置以判別該近似方針(至少一部分)。舉例而言,該程式可偵測該電腦系統係使用電池的電力或係一實際上無限之電力來源,如壁掛電源(wall power)之交流電。此外,該程式可偵測該電腦系統之硬體配置,例如顯示尺寸以及喇叭品質。該程式可考量上述因素,藉以判別透過近似地而非完整精確地執行特定計算的可取性(desirability)及/或可接受性,例如有關音訊/視訊之計算。流程進入步驟504。
在步驟504中,該程式提供該近似方針至處理器100。在一實施例中,該程式將該近似方針寫入至近似控制暫存器132。在一實施例中,該程式執行一x86 WRMSR指令以提供處理器100新的近似方針。流程結束於步驟504。
在一些較佳實施例中,當系統配置改變時(例如系統被插入一牆上的插座(wall socket)或從該牆上的插座被拔除,或插入不同尺寸的一外部螢幕),該程式偵測該配置之改變且在步驟502變更該近似方針,以及在步驟504給予處理器 100新的近似方針。
第6圖係本發明之計算系統之三種實施例的方塊圖。每個計算系統包括第1圖之可近似計算的處理器100、一顯示器606(606A~606C)以及一緩衝器604,緩衝器604包含處理器100執行像素渲染(render pixels)計算並顯示於顯示器606之資料,且使用如第3圖之近似計算指令399。
第一個系統為一桌上型電腦602A,包括一大型之顯示器606A(例如24吋或更大尺寸),並且從一實際上無限之電力來源接收電力,例如牆上的插座。第二個系統為一筆記型電腦602B,包括一中型之顯示器606B(例如15吋),並且從牆上的插座或一電池以接收電力,端視使用者的選擇而定。第三個系統為一手持電腦602C(例如智慧型手機或平板電腦),包括一相對小型(例如4.8吋)之螢幕606C,並且主要從一電池以接收電力來源。在上述實施例中,係假設上述各顯示器具備大致相同之解析度,而可容許/可接受之近似量主要係基於顯示器的尺寸,雖然該近似量計算亦可依據上述顯示器之解析度變化而改變。上述三種實施例在此統稱為系統602,而系統602係用以代表包括可近似計算之處理器100的系統,以及提供各種用以比較的特徵以說明本發明近似計算之各種應用的實施例。然而,可以預期其他實施例亦可存在,且可近似計算之處理器100的應用並不受限於上述實施例。
桌上型電腦602A傾向不能容忍近似而係要求高精確度,因為像素渲染之近似所造成的視覺變形(visual distortion)在大型顯示器606A中可能會相當明顯,且電源可能因為非必要 的近似計算而提出省電需求。
筆記型電腦602B傾向要求一適量之精確度且容許一適量之近似,特別係在使用電池的電力運作時,因為適量之近似所造成的視覺變形可能係顯而易見的(雖然少於在相似解析度之大型顯示器),但在基於改善電池壽命的權衡之下,上述操作為可接受的一種作法。另一方面,當筆記型電腦602B插入一壁掛電源時,較佳的近似方針可與桌上型電腦602A相似。
手持電腦602C傾向要求最低精確度,因為近似所造成之視覺變形在小型顯示器606C之正常顯示中係非顯而易見地,或相當不明顯地,且手持電腦602C對於節省電池之電力的需求係相對較大的。
第7圖係第6圖之系統602的系統操作流程圖。流程開始於步驟702。
在步驟702中,一程式偵測系統602之顯示器606(即606A~606C)的類型,例如在系統602啟動或重置時。另外,該程式可偵測顯示器606的變化,例如在一外部顯示器插入或拔出筆記型電腦602B時。此外,該程式可偵測電源之變化,例如插入牆上的插座或從牆上的插座拔出。流程進入步驟502。
在步驟502中,該程式基於系統配置以判別近似方針,如前述第5圖所記載之內容。流程進入步驟504。
在步驟504中,該程式提供該近似方針至處理器100,如前述第5圖所記載之內容。流程進入步驟708。
在步驟708中,處理器100基於所接收之該近似方 針以執行計算,例如第4圖以及下文之第10圖至第12圖。流程結束於步驟708。
另外,處理器100所運行之軟體(例如圖形軟體)包括不同代碼的例程(routine)(包括近似計算指令399),上述例程係有關於不同的近似方針(例如與第6圖之每個不同系統配置有關之不同的近似方針),且該軟體基於目前之系統配置以開拓(branch)至適合的例程。
第8圖係運行於一近似計算感知(computing-aware)之處理器100之軟體的開發流程圖。流程開始於步驟802。
在步驟802中,一程式設計器(programmer)透過一習知程式語言開發一程式(例如一圖形程式),例如C語言,且使用一近似指示(directive)以應用一近似感知(approximation-aware)編譯器。該近似感知編譯器知道處理器100之近似計算能力,更加具體而言,處理器100支援該等近似計算指令399。該近似指示可為一命令行(command-line)選項或其他與編譯器通信之方法,而編譯器所產生之目標代碼(object code)應包括近似計算指令399以執行近似計算。在較佳的實施例中,該近似感知編譯器應用該近似指示,且僅編譯計算之例程,而該等計算係由容許近似計算之程式語言所指定;其中,其他不容許近似計算之例程不透過該近似指示進行編譯;而上述方法產生之目標檔案係一起鏈接(link)至一可執行程式。近似容許例程(approximation-tolerant routine)傾向為相對特別例程。舉例而言,像素渲染例程可包括浮點資料計算,浮點資料計算可為近似計算,用於該近似感知編譯器產生近似計算指令 399;其中,舉例而言,迴圈控制變數(loop control variable)可為整數資料,且該近似感知編譯器不會產生近似計算指令399以執行更新該迴圈控制變數的計算。流程進入步驟804。
在步驟804中,該近似感知編譯器編譯該程式且產生機械語言指令,該等機器語言指令包括近似計算指令399,近似計算指令399指示處理器100執行近似計算以為目標代碼。在一實施例中,該近似感知編譯器產生之該機械語言係相似於其他不使用該近似指示所產生之機械語言,但在一些上述指令中係在指令前端設置一近似相關前綴,例如地3圖之近似前綴302、開始近似前綴322、停止近似前綴342或清除誤差前綴362。在一實施例中,該近似感知編譯器產生近似計算指令310以代替正常計算指令,而該正常計算指令在沒有該近似指示下產生。在一實施例中,該近似感知編譯器產生正常指令序列,該正常指令序列透過開始/停止近似指令330/350及/或開始/停止近似前綴322/342以進行中斷。在一實施例中,該近似感知編譯器產生多個代碼例程,每個代碼例程採用一不同近似方針(如前文所述)以及該近似感知編譯器基於目前系統配置以產生呼叫適合之子程序(subroutine)的代碼,而該程式可由本身進行判別或可從作業系統獲得。流程結束於步驟804。
第9圖係運行於一近似計算感知之處理器100之軟體的另一開發流程圖。流程開始於步驟902。
在步驟902中,一程式設計器開發一程式,過程相似於上述步驟802且應用一近似感知編譯器。然而,所用之程式語言以及該近似感知編譯器支援近似指示及/或近似容許資 料類型。舉例而言,C語言之一語法(dialect)可支援上述指示及/或資料類型。該近似指示可包括編譯指示(例如近似於C語言之#include或#define指示),且程式設計器可包含於原始碼(source code)以標示可選擇程式變數如近似容許資料。相似地,該程式設計器可包含於原始碼程式變數中,該原始碼程式變數被宣告如近似容許資料類型變數,用於使該近似感知編譯器知道以產生近似計算指令399,近似計算指令399致使近似計算透過上述變數以執行。流程進入步驟904。
在步驟904中,該近似感知編譯器編譯該程式以產生目標代碼,上述操作相似於步驟804所描述的方法,但響應包含於已編譯之原始碼中的該近似指示及/或近似容許資料類型。流程結束於步驟904。
第10圖係第1圖之處理器100運行一程式的操作流程圖,該程式係執行近似計算之程式。流程開始於步驟1002。
在步驟1002中,相似於前文所述之內容,該程式提供一近似方針至處理器100。另外,該程式本身提供該近似方針(並且在退離(exit)後恢復目前的近似方針)。此外,另一代碼路徑用以被指定不執行近似計算,上述情況係在超出誤差界限時執行,如下文所述。流程進入步驟1004。
在步驟1004中,處理器100針對目前本身之狀態執行一快照並將本身狀態寫入第1圖之快照儲存器134。在一實施例中,處理器100執行該快照以響應於遇到該程式所執行之一指令。在一實施例中,該指令包括一x86 WRMSR指令。在一實施例中,執行該快照包括寫回至記憶體未清除快取行(memory dirty cache line),該記憶體未清除快取行將被該程式之該等近似計算所修飾以清除資料快取記憶體138之該快取行的複製,進而特別標示該快取行可為近似計算的目標。由於該快取行被特別標示(表示該等快取行被近似計算之結果所修飾),該等快取行不會被寫回記憶體,至少直到證實該程式可在不超過誤差界限下完成。所以,若處理器100判別該誤差界限已被超越(例如步驟1012),則該特別表示之快取行被設為無效(invalidated)且標示為非特別(non-special),而該等快取之預先近似(pre-approximate)計算狀態設可為記憶體所使用,且用於後續非近似(non-approximate)之計算(例如步驟1014)。在一實施例中,該程式設計器須注意有關該等特殊標示的快取行必須不能溢出(spill out of)資料快取記憶體138;否則處理器100視上述情況為超出誤差界限。在一較佳實施例中,在一多核處理器中,資料快取記憶體138必須設置於執行該等近似計算之核心。流程進入步驟1006。
在步驟1006中,處理器100、特別係功能近似單元106,執行透過基於該近似方針之一程式指令以執行一近似計算,藉以產生一結果164。功能近似單元106亦將結果164之誤差168近似於輸入運算元之誤差162以及該近似計算所產生的誤差,如前文所述。流程進入步驟1008。
在步驟1008中,功能近似單元106將累積之誤差168寫至有關於架構暫存器108之誤差儲存器109,其中架構暫存器108接收近似之結果164。流程進入步驟1012。
在步驟1012中,處理器100判別步驟1008中產生之 誤差168是否超過該近似方針之誤差界限。若是,流程進入步驟1014;若不是,流程返回步驟1006以執行該程式之另一近似計算。
在步驟1014中,處理器100恢復處理器100的狀態至該快照,而該快照係儲存於快照儲存器134,且處理器100以非近似方法重新執行該程式,或至少一部分以非近似方法重新執行,上述動作係在步驟1004中執行該快照後執行,而該步驟1004係涉及超過該誤差界限之以近似方法執行的計算。步驟1014之操作實施例將透過第11圖以及第12圖於下文描述。流程結束於步驟1014。
第11圖係依據本發明一實施例中,第10圖之步驟1014的詳細操作流程圖。流程開始於步驟1102。
在步驟1102中,透過響應於偵測到該誤差界限已被超越的狀況(在步驟1012中)而產生之一微異常(micro-exception)(即依非架構異常(non-architectural exception)),控制方式轉換為處理器100之微碼136。微碼136恢復處理器100之狀態至該快照,如上述第10圖所描述之內容。此外,微碼136產生一架構異常(architectural exception)。流程進入步驟1104。
在步驟1104中,架構異常處理器(handler)將控制轉換至第10圖之步驟1002所指定的其他代碼路徑,因此該等近似計算係以完整精確度執行。在一實施例中,該架構異常處理器設定該近似方針為關閉近似功能(亦即設定該近似方針為完整精確度)並且跳至一代碼,該代碼亦為在先前近似開啟時所執 行且現在以近似關閉狀態執行的代碼。流程結束於步驟1104。
第12圖係依據本發明另一實施例中,第10圖之步驟1014的詳細操作流程圖。流程開始於步驟1202。
在步驟1202中,透過響應於偵測到該誤差界限已被超越的狀況而產生之一微異常,控制方式轉換為處理器100之微碼136。微碼136恢復處理器100之狀態至該快照。流程進入步驟1204。
在步驟1204中,微碼136設定該近似方針(例如寫入近似控制暫存器132)至完整精確度。微碼136亦清除有關於所有架構暫存器108之誤差儲存器109。微碼136亦致使該程式之重新執行,例如在步驟1004之該快照之後執行。在一實施例中,微碼136從儲存在快照儲存器134中之一指令位址以重新執行該程式。流程結束於步驟1204。
雖然本發明之各實施例已闡述近似計算可執行音訊與視訊的應用,然而其他近似計算之實施例亦可能執行其他領域之應用,例如電腦遊戲之物理計算的感應器計算。舉例而言,類比至數位轉換器用以計算之值的解析度,可能只有16位元的準確度,而上述遊戲之物理計算分析所使用之53位元精確度,實際上是非必要的。
本發明已透過各種實施例描述於此,上述實施例應理解為本發明所呈現之範例,而不應對本發明產生任何限制。任何所屬技術領域中具有通常知識者應明顯的瞭解到,在不偏離本發明之精神和範圍內,當可進行任何形式上或細節的改變或潤飾。舉例而言,可用軟體實現,如本文所述之裝置與 方法之功能、製造、建模、模擬、描述及/或測試。上述可透過使用一般程式語言(例如C、C++)、包括Verilog HDL、VHDL等的硬體描述語言(HDL)或其他可用之程式而加以實現。上述軟體可被設置於任何習知的電腦可用媒體,例如磁帶(magnetic tape)、半導體、磁碟或光碟(例如CD-ROM、DVD-ROM等)、一網路、有線或無線或其他通訊媒體。本文所述之裝置與方法的各種實施例可包括一半導體智慧財產核心(semiconductor intellectual property core),例如一處理器核心(例如透過HDL實現或指定)以及透過積體電路製造而轉換為硬體。此外,本文所述之裝置與方法可透過硬體與軟體的組合而加以實現。因此,本發明之範圍不應受限於本文之任何示範性實施例,而只應以本發明之申請專利範圍與其等效範圍為準。應特別注意,本發明可實現於處理器裝置中,而該處理器可使用於一般電腦之中。最後,任何所屬技術領域中具有通常知識者應理解,基於本文所揭露之概念與實施例,任何設計或修飾其他架構以具備與本發明相同目的之應用,皆已包含於本發明之範圍且皆已定義於本發明之申請專利範圍中。
100‧‧‧處理器
102‧‧‧指令快取
104‧‧‧指令轉譯器
106‧‧‧近似功能單元
108‧‧‧架構暫存器
109‧‧‧誤差儲存器
132‧‧‧近似控制暫存器
134‧‧‧快照儲存器
136‧‧‧微碼
138‧‧‧資料快取記憶體
162、168‧‧‧誤差
164‧‧‧結果
166‧‧‧指令運算元
172‧‧‧異常
174‧‧‧架構指令
176‧‧‧近似方針

Claims (29)

  1. 一種處理器,包括:一解碼器,被配置以解碼一第一指令,該第一指令指示該處理器以一近似方法執行第一後續計算;複數架構暫存器,被配置以提供複數運算元,每一個架構暫存器對應之誤差儲存器係被配置以指示儲存在上述架構暫存器之一結果內之一誤差量;一功能單元,被配置以從上述架構暫存器接收一或多個運算元以及從上述架構暫存器對應之誤差儲存器接收上述誤差量,該功能單元被配置以對上述一或多個運算元以該近似方法執行一後續計算以響應已解碼的該第一指令,該功能單元被配置以將上述一或多個運算元在執行基於該近似方法之該後續計算之前的誤差量以及基於該近似方法之該後續計算所產生的誤差量累積起來,該功能單元被配置以將該後續計算之結果以及所累積之誤差量儲存於一目的架構暫存器以及該目的架構暫存器所對應之誤差儲存器。
  2. 如申請專利範圍第1項所述之處理器,其中該第一指令包括一第一前綴(prefix),該第一前綴指示該處理器以該近似方法執行該等第一後續計算。
  3. 如申請專利範圍第2項所述之處理器,其中該第一前綴指定低於一完整精確度之一精確度,該處理器以低於該完整精確度之該精確度執行該等第一後續計算。
  4. 如申請專利範圍第1項所述之處理器,其中該解碼器更被配置以解碼一第二指令,該第二指令指示該處理器以一完整精 確度執行第二後續計算;以及其中該功能單元被配置以一完整精確度執行該等第二後續計算以響應該第二指令。
  5. 如申請專利範圍第4項所述之處理器,其中該第二指令包括一第二前綴,該第二前綴指示該處理器以該完整精確度執行該等第二後續計算。
  6. 如申請專利範圍第1項所述之處理器,更包括:一近似控制暫存器,被配置以保存指定該處理器之一近似方針的資訊,其中該近似方針包括對於複數個指令之執行的一最大可容忍誤差累積量的一規範;其中,當儲存在該誤差儲存器的上述誤差量超過該最大可容忍誤差累積量的該規範時,該處理器被配置以產生一異常。
  7. 如申請專利範圍第6項所述之處理器,其中,該近似方針更指定一近似量,該近似量係該功能單元在每次近似計算應採用之近似量;其中該功能單元被配置以基於上述近似量調整近似計算的執行,藉此該功能單元之計算皆可符合該近似量以及該最大可容忍誤差累積量。
  8. 如申請專利範圍第6項所述之處理器,其中,該處理器被配置以判別一目前系統配置,並且基於該目前系統配置設定一近似方針。
  9. 如申請專利範圍第8項所述之處理器,其中,該目前系統配置包括一螢幕解析度,且該處理器被配置以設定一近似方針,該近似方針在一低解析度螢幕中,相較於一高解析度 螢幕,容忍關於影像相關計算的一較大量的誤差。
  10. 如申請專利範圍第8項所述之處理器,其中,該目前系統配置包括一喇叭品質,且該處理器被配置以設定一近似方針,該近似方針在一較低品質喇叭中,相較於一較高品質喇叭,容忍關於音質相關計算的一較大量的誤差。
  11. 如申請專利範圍第8項所述之處理器,其中,該處理器被配置以偵測該目前系統配置的變更,並且調整該近似方針。
  12. 如申請專利範圍第1項所述之處理器,其中,該功能單元被配置以對輸入運算元執行超越函數以產生基於一多項式的一結果,其中,若該功能單元被指示以執行一完整精確度計算時,該功能單元被配置以選擇一第一多項式,若該功能單元被指示以執行一近似計算時,該功能單元被配置以選擇相對低次的一第二多項式。
  13. 如申請專利範圍第1項所述之處理器,其中,該功能單元係一除法器,該除法器包括除法邏輯以及疊代控制邏輯;其中,上述除法邏輯被配置以對輸入運算元執行一疊代除法計算,藉以產生一結果以及產生在每一次疊代期間之該結果之一精確度指示,並且將該結果以上述除法邏輯之輸入的形式回授至上述除法邏輯;以及上述疊代控制邏輯被配置以在一精確度已達到一近似方針所指定的等級時停止疊代。
  14. 一種透過一處理器執行的方法,該方法包括:透過該處理器解碼一第一指令,該第一指令指示該處理器以一近似方法執行第一後續計算; 透過該處理器之複數架構暫存器儲存複數運算元;提供一或多個運算元以及與上述一或多個運算元之個別運算元有關的誤差量至該處理器之一功能單元,其中上述誤差量係被儲存在與個別上述架構暫存器有關之誤差儲存器;透過該功能單元以該近似方法執行該等第一後續計算以響應已解碼的該第一指令;將上述一或多個運算元在執行基於該近似方法之該等第一後續計算之前的誤差量以及基於該近似方法之該等第一後續計算所產生的誤差量累積起來;以及將該等第一後續計算之結果以及所累積之誤差量儲存於一目的架構暫存器以及該目的架構暫存器所對應之誤差儲存器。
  15. 如申請專利範圍第14項所述之方法,其中該指令包括一第一前綴,該第一前綴指示該處理器以該近似方法執行該等第一後續計算。
  16. 如申請專利範圍第15項所述之方法,其中該第一前綴指定低於一完整精確度之一精確度,該處理器以低於該完整精確度之該精確度執行該等第一後續計算。
  17. 如申請專利範圍第14項所述之方法,更包括:透過該處理器解碼一第二指令,該第二指令指示該處理器以一完整精確度執行第二後續計算;以及透過該處理器以該完整精確度執行該等第二後續計算以響應上述解碼該第二指令。
  18. 如申請專利範圍第17項所述之方法,其中該第二指令包括一第二前綴,該第二前綴指示該處理器以該完整精確度執行該等第二後續計算。
  19. 如申請專利範圍第14項所述之方法,更包括:將指定該處理器之一近似方針的資訊儲存在一近似控制暫存器,其中該近似方針包括對於複數個指令之執行的一最大可容忍誤差累積量的一規範;當該儲存在該誤差儲存器的上述誤差量超過該最大可容忍誤差累積量的該規範時,產生一異常。
  20. 如申請專利範圍第19項所述之方法,更包括判別一目前系統配置,並且基於該目前系統配置設定一近似方針。
  21. 如申請專利範圍第20項所述之方法,其中,該目前系統配置包括一螢幕解析度,且該方法更包括設定一近似方針,該近似方針在一低解析度螢幕中,相較於一高解析度螢幕,容忍關於影像相關計算的一較大量的誤差。
  22. 如申請專利範圍第20項所述之方法,其中,該目前系統配置包括一喇叭品質,且該方法更包括設定一近似方針,該近似方針在一較低品質喇叭中,相較於一較高品質喇叭,容忍關於音質相關計算的一較大量的誤差。
  23. 如申請專利範圍第20項所述之方法,更包括偵測該目前系統配置的變更,並且調整該近似方針。
  24. 如申請專利範圍第14項所述之方法,更包括:透過該功能單元,對輸入運算元執行超越函數以產生基於一多項式的一結果;以及 若被指示以執行一完整精確度計算時,選擇一第一多項式;若被指示以執行一近似計算時,選擇相對低次的一第二多項式。
  25. 如申請專利範圍第14項所述之方法,更包括:透過該功能單元,對輸入運算元執行一疊代除法計算,藉以產生一結果以及產生在每一次疊代期間之該結果之一精確度指示,並且將該結果以該功能單元之除法邏輯之輸入的形式回授至上述除法邏輯;以及當一精確度已達到一近似方針所指定的等級時停止疊代。
  26. 一種處理器,包括:一解碼器,被配置以解碼一指令,其中該指令指定執行一計算,其中該指令包括一前綴(prefix),該前綴表示該處理器係以一近似方法執行該計算;複數架構暫存器,被配置以提供複數運算元,每一個架構暫存器對應之誤差儲存器係被配置以指示儲存在上述架構暫存器之一結果內之一誤差量;一功能單元,被配置以從上述架構暫存器接收一或多個運算元以及從上述架構暫存器對應之誤差儲存器接收上述誤差量,該功能單元被配置以對上述一或多個運算元以該近似方法執行該指令所指定之該計算,該近似方法係透過該前綴所指定;其中,該功能單元被配置以將上述一或多個運算元在執行基於該近似方法之該計算之前的誤差量以及基於該近似方法之該計算所產生的誤差量累積起來; 其中,該功能單元被配置以將該計算之結果以及所累積之誤差量儲存於一目的架構暫存器以及該目的架構暫存器所對應之誤差儲存器。
  27. 如申請專利範圍第26項所述之處理器,其中該近似方法指定低於一完整精確度之一精確度,該處理器以低於該完整精確度之該精確度執行該計算。
  28. 一種透過一處理器執行的方法,該方法包括:透過該處理器解碼一指令,其中該指令指定執行一計算,其中該指令包括一前綴,該前綴表示該處理器係以一近似方法執行該計算;透過該處理器之複數架構暫存器儲存複數運算元;提供一或多個運算元以及與上述一或多個運算元之個別運算元有關的誤差量至該處理器之一功能單元,其中上述誤差量係被儲存在與個別上述架構暫存器有關之誤差儲存器;透過該功能單元以該近似方法執行該指令所指定之該計算,該近似方法係透過該前綴所指定;將上述一或多個運算元在執行基於該近似方法之該計算之前的誤差量以及基於該近似方法之該計算所產生的誤差量累積起來;以及將該計算之結果以及所累積之誤差量儲存於一目的架構暫存器以及該目的架構暫存器所對應之誤差儲存器。
  29. 如申請專利範圍第28項所述之方法,其中該近似方法指定低於一完整精確度之一精確度,該處理器以低於該完整精 確度之該精確度執行該計算。
TW104134495A 2014-10-23 2015-10-21 處理器與透過處理器執行的方法 TWI559224B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/522,512 US9389863B2 (en) 2014-02-10 2014-10-23 Processor that performs approximate computing instructions

Publications (2)

Publication Number Publication Date
TW201616345A TW201616345A (zh) 2016-05-01
TWI559224B true TWI559224B (zh) 2016-11-21

Family

ID=56508582

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104134495A TWI559224B (zh) 2014-10-23 2015-10-21 處理器與透過處理器執行的方法

Country Status (1)

Country Link
TW (1) TWI559224B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040073773A1 (en) * 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US20080209188A1 (en) * 2007-02-22 2008-08-28 Samsung Electronics Co. Ltd. Processor and method of performing speculative load operations of the processor
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040073773A1 (en) * 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US20080209188A1 (en) * 2007-02-22 2008-08-28 Samsung Electronics Co. Ltd. Processor and method of performing speculative load operations of the processor
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Swagath Venkataramani,Vinay K. Chippa,Srimat T. Chakradhar,Kaushik Roy and Anand Raghunathan;"Quality programmable vector processors for approximate computing";MICRO'46,Dec 7-11,2013 *

Also Published As

Publication number Publication date
TW201616345A (zh) 2016-05-01

Similar Documents

Publication Publication Date Title
EP2905699B1 (en) Processor that performs approximate computing instructions
JP6586435B2 (ja) 過度の近似計算誤差から回復するプロセッサ
US20210357216A1 (en) Enabling removal and reconstruction of flag operations in a processor
US20160179542A1 (en) Instruction and logic to perform a fused single cycle increment-compare-jump
US10191748B2 (en) Instruction and logic for in-order handling in an out-of-order processor
US9921832B2 (en) Instruction to reduce elements in a vector register with strided access pattern
TWI588740B (zh) 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法
US20200097291A1 (en) Apparatus and method for tile gather and tile scatter
US20180004526A1 (en) System and Method for Tracing Data Addresses
EP2908241B1 (en) Processor with approximate computing functional unit
TWI559224B (zh) 處理器與透過處理器執行的方法
TWI543077B (zh) 處理器與透過處理器執行的方法
TWI627585B (zh) 處理器與透過處理器執行的方法