本發(fā)明的各個(gè)方面總體上涉及數(shù)據(jù)處理系統(tǒng),并且具體地涉及執(zhí)行二進(jìn)制融合乘加浮點(diǎn)計(jì)算。
背景技術(shù):
2008年出版的用于二進(jìn)制浮點(diǎn)運(yùn)算的ieee-754-2008標(biāo)準(zhǔn)規(guī)定了通常在計(jì)算機(jī)硬件中實(shí)現(xiàn)的浮點(diǎn)數(shù)據(jù)架構(gòu),諸如具有乘法器的浮點(diǎn)處理器。格式包括符號(hào)、無符號(hào)偏置指數(shù)和有效位數(shù)。符號(hào)位是單個(gè)比特,并且用“s”表示。用“e”表示的無符號(hào)偏置指數(shù)例如對(duì)于單精度為8個(gè)比特長,對(duì)于雙精度為11個(gè)比特長,對(duì)于四精度為15個(gè)比特長。有效位數(shù)例如對(duì)于單精度為24個(gè)比特長,對(duì)于雙精度為53個(gè)比特長,對(duì)于四精度為113個(gè)比特長。如ieee-754-2008標(biāo)準(zhǔn)所定義的,有效位數(shù)的最高有效位——即所謂的隱含位——是從指數(shù)位中解碼的。
為了改進(jìn)浮點(diǎn)算術(shù)處理,大多數(shù)現(xiàn)代處理器使用被稱為融合乘加(以下縮寫為fma)過程的過程來將浮點(diǎn)乘法運(yùn)算(例如a*b)與浮點(diǎn)加法運(yùn)算(例如+c)組合,用于作為單個(gè)指令(例如a*b+c)來執(zhí)行,其中a、b、c是乘積a*b的操作數(shù)以及c和乘積的和的操作數(shù)。通過在單個(gè)指令中執(zhí)行兩個(gè)運(yùn)算,fma過程減少了整個(gè)執(zhí)行時(shí)間。fma過程還提供了改進(jìn)的精度,因?yàn)閮H需要在以全精度執(zhí)行乘法和加法運(yùn)算兩者之后才執(zhí)行舍入。例如,只有一個(gè)舍入誤差,而不是兩個(gè)。
在浮點(diǎn)處理器中,一個(gè)中心區(qū)域是乘法器陣列。乘法器陣列用于執(zhí)行兩個(gè)數(shù)的乘法。通常,使用具有基數(shù)4的最先進(jìn)的布思(booth)編碼,其是通常使用的快速乘法算法。這減少了需要求和直到n/2+1的乘積項(xiàng)的數(shù)量,其中n是每個(gè)操作數(shù)的位數(shù)。使用允許并行處理所有位的進(jìn)位保存加法器電路來進(jìn)行求和,而不是將較低位位置的進(jìn)位輸出鏈接到下一較高位置的常規(guī)相加,其通常通過進(jìn)位傳播加法器電路來執(zhí)行。進(jìn)行這種求和的電路在本領(lǐng)域中被稱為約減樹。在約減樹的末端,剩余兩個(gè)項(xiàng),和項(xiàng)和進(jìn)位項(xiàng),它們分別表示信息的求和部分和信息的進(jìn)位部分。這些項(xiàng)最終與對(duì)準(zhǔn)的加數(shù)一起添加。再次,在這里執(zhí)行進(jìn)位保存加法。最后,只剩下兩個(gè)項(xiàng),也是和項(xiàng)和進(jìn)位項(xiàng),并且這兩個(gè)項(xiàng)使用進(jìn)位-傳播-加法器相加以生成一個(gè)最終結(jié)果。
分析應(yīng)用、特別是在大數(shù)據(jù)量上運(yùn)行時(shí)是非常計(jì)算密集的。它們的主要數(shù)據(jù)類型是二進(jìn)制浮點(diǎn)。這包括商業(yè)可用的分析軟件,如ilog、spss、cognos、algo、以及很多專為保險(xiǎn)和銀行行業(yè)設(shè)計(jì)的分析軟件包。
很多移動(dòng)應(yīng)用需要位置檢測例程,位置檢測例程也是浮點(diǎn)密集型計(jì)算。這些例程的性能在新興領(lǐng)域、例如遠(yuǎn)程信息處理中是關(guān)鍵的,其將移動(dòng)輸入與數(shù)據(jù)庫查詢和保險(xiǎn)分析代碼組合并且具有實(shí)時(shí)要求。
對(duì)于這兩個(gè)領(lǐng)域,浮點(diǎn)單元(fpu)的等待時(shí)間和吞吐量對(duì)于應(yīng)用的性能非常重要。對(duì)于欺詐檢測,例如,fpu性能是關(guān)于檢測是否接近實(shí)時(shí)的關(guān)鍵。
ieee754-2008標(biāo)準(zhǔn)使得fma(融合乘加,即a*b+c)對(duì)于現(xiàn)代浮點(diǎn)單元是強(qiáng)制的。自從引入ieee754-2008標(biāo)準(zhǔn)以來,對(duì)于具有fma支持的最快fpu存在巨大競爭。
us2014/0188966a1和類似地us8,892,619b2(其每個(gè)通過引用整體并入本文)公開了在集成電路中實(shí)施的浮點(diǎn)融合乘加(fma)單元。fma單元包括具有浮點(diǎn)輸入a和c以及浮點(diǎn)輸出a*c的乘法器電路、以及連接到乘法器電路的輸出的加法器電路。加法器電路將浮點(diǎn)輸出a*c與浮點(diǎn)輸入b相加,以產(chǎn)生結(jié)果a*c+b。加法器電路包括與乘法器電路并行實(shí)現(xiàn)的指數(shù)差分電路、在指數(shù)差分電路之后實(shí)現(xiàn)的近路徑電路、在指數(shù)差分電路之后實(shí)現(xiàn)的遠(yuǎn)路徑電路、連接到近路徑電路和遠(yuǎn)路徑電路的輸出的2:1多路復(fù)用器(mux)電路、以及連接到2:1多路復(fù)用器電路的輸出的舍入電路。fma單元還包括累積旁路電路,累積旁路電路將2:1多路復(fù)用器電路的未舍入輸出轉(zhuǎn)發(fā)給近路徑電路和遠(yuǎn)路徑電路的輸入,并且以進(jìn)位保存格式將指數(shù)結(jié)果轉(zhuǎn)發(fā)給指數(shù)差分電路的輸入。fma單元中還包括將2:1多路復(fù)用器電路的未舍入輸出轉(zhuǎn)發(fā)給乘法器電路的浮點(diǎn)輸入a和c的乘加旁路電路。根據(jù)us2014/0188966a1和us8,892,619b2的公開內(nèi)容,需要用于b操作數(shù)(加數(shù))的舍入校正在加數(shù)進(jìn)入對(duì)準(zhǔn)移位器之前發(fā)生。累積旁路電路相對(duì)于彼此交錯(cuò),使得指數(shù)數(shù)據(jù)路徑比尾數(shù)數(shù)據(jù)路徑更早地開始,并且指數(shù)結(jié)果比進(jìn)位保存格式的尾數(shù)結(jié)果更早地計(jì)算以轉(zhuǎn)發(fā)用于下一從屬計(jì)算。遠(yuǎn)路徑電路將增量與移位和加法數(shù)據(jù)路徑組合。在被饋送給移位器或加法器之前遞增的情況下,未舍入輸出被右邊填充1,并且加法器電路中的電路使用進(jìn)位傳播,就好像未舍入結(jié)果在移位和加法之前已經(jīng)遞增。
因此,us2014/0188966a1公開了一種在級(jí)聯(lián)乘加管線上的融合乘加。fma單元需要特殊的浮點(diǎn)加法器結(jié)構(gòu),用于將2:1多路復(fù)用器的未舍入輸出轉(zhuǎn)發(fā)給浮點(diǎn)輸入a和乘法器電路。
us8,671,129b2(其全部通過引用內(nèi)容并入本文)公開了一種用于在乘加管線中執(zhí)行乘法運(yùn)算的處理單元。為了減少管線等待時(shí)間,乘加運(yùn)算的未舍入結(jié)果被旁路到乘加管線的輸入用于在后續(xù)運(yùn)算中使用。如果確定在先運(yùn)算需要舍入,則在后續(xù)運(yùn)算期間發(fā)生舍入。在后續(xù)運(yùn)算期間,未被乘法運(yùn)算使用的布思(booth)編碼器輸出舍入校正因子作為未被乘法運(yùn)算利用的布思(booth)多路復(fù)用器的選擇輸入。當(dāng)布思多路復(fù)用器接收舍入校正因子時(shí),布思多路復(fù)用器將舍入校正值輸出給進(jìn)位保存加法器(csa)樹,并且csa樹根據(jù)舍入校正值和其他部分乘積生產(chǎn)正確的和。
us8,671,129b2中公開的處理單元使用融合乘加算法工作。us8,671,129b2描述了對(duì)乘法器輸入執(zhí)行校正以及對(duì)布思(booth)結(jié)構(gòu)的必要修改。然而,它沒有描述如何對(duì)加數(shù)應(yīng)用舍入校正。
在2011年在第20屆ieee計(jì)算機(jī)算術(shù)研討會(huì)上公開的samehgalal、markhorowitz的“l(fā)atencysensitivefmadesign”的出版物中還描述了需要由遠(yuǎn)近路徑組成的特殊加法器結(jié)構(gòu)的在us2014/0188966a1中公開的fma單元設(shè)計(jì)(其通過引用整體并入本文),其應(yīng)用于級(jí)聯(lián)融合乘加管線。
us8,990,282b2(其全部內(nèi)容通過引用并入本文)公開了一種包括乘法電路和加法電路的融合乘加浮點(diǎn)單元。乘法電路將具有n位有效位數(shù)的操作數(shù)b和c相乘以生成未舍入乘積b*c。未舍入乘積b*c具有m位有效位數(shù),其中m>n。加法電路接收操作數(shù)a,操作數(shù)a在比乘法電路4接收操作數(shù)b和c的處理周期更晚的處理周期輸入。在由乘法電路4生成未舍入乘積b*c之后,加法電路8開始操作數(shù)a的處理。加法電路8將操作數(shù)a與未舍入乘積b*c相加,并且輸出舍入結(jié)果a+b*c。
因此,在us8,990,282b2中,在融合乘加運(yùn)算的情況下,乘法器將未舍入乘積轉(zhuǎn)發(fā)給加法器部分,這是級(jí)聯(lián)乘法和加法設(shè)計(jì)的特色。此外,在第二種轉(zhuǎn)發(fā)中,舍入結(jié)果被轉(zhuǎn)發(fā)回a輸入,即加數(shù)。由所公開的乘加單元提供的結(jié)果總是被完全舍入;這可以是乘法、加法、減法或乘加運(yùn)算的結(jié)果。由所公開的單元接收的操作數(shù)也被完全舍入。不存在來自在先運(yùn)算的結(jié)果到后續(xù)運(yùn)算的操作數(shù)的未舍入轉(zhuǎn)發(fā)。
us8,977,670b2(其全部內(nèi)容通過引用并入本文)公開了在融合乘加管線內(nèi)實(shí)現(xiàn)未融合乘加指令。該系統(tǒng)包括具有用于接收加法項(xiàng)的輸入的對(duì)準(zhǔn)器、具有用于接收用于乘法的第一值和第二值的兩個(gè)輸入的乘法器樹、和第一進(jìn)位保存加法器(csa),其中第一csa可以接收來自乘法樹的部分乘積和來自對(duì)準(zhǔn)器的對(duì)準(zhǔn)的相加項(xiàng)。該系統(tǒng)包括接收第一部分乘積、第二部分乘積和對(duì)準(zhǔn)的相加項(xiàng)的融合/未融合乘加(puma)塊,其中第一部分乘積和第二部分乘積沒有被截?cái)?。puma塊例如取決于操作碼或模式位,使用第一部分乘積、第二部分乘積和對(duì)準(zhǔn)的相加項(xiàng)來執(zhí)行未融合乘加運(yùn)算或者融合乘加運(yùn)算。將運(yùn)算的結(jié)果轉(zhuǎn)發(fā)回下一運(yùn)算僅可能從乘法到加法運(yùn)算的輸入。轉(zhuǎn)發(fā)的乘積是中間不規(guī)范化格式。對(duì)于未融合乘加,未舍入和非標(biāo)準(zhǔn)化的乘積在fma管線內(nèi)部傳遞(轉(zhuǎn)發(fā))給加法運(yùn)算,該乘積將需要舍入校正。然而,轉(zhuǎn)發(fā)是非常有限的:它只是從乘積到不進(jìn)行對(duì)準(zhǔn)的加法的一個(gè)操作數(shù)。沒有從加法或乘加到后續(xù)運(yùn)算的任何輸入操作數(shù)的未舍入轉(zhuǎn)發(fā),并且沒有從乘積到經(jīng)歷對(duì)準(zhǔn)移位的加法項(xiàng)的未舍入轉(zhuǎn)發(fā)。
技術(shù)實(shí)現(xiàn)要素:
通過提供一種被配置成對(duì)加數(shù)、乘數(shù)和被乘數(shù)進(jìn)行運(yùn)算并且被配置成執(zhí)行一種方法的單元,克服了現(xiàn)有技術(shù)的缺點(diǎn)并且提供了附加的優(yōu)點(diǎn)。該方法包括:經(jīng)由早期結(jié)果反饋路徑接收在單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果作為加數(shù);對(duì)未舍入指數(shù)和未舍入尾數(shù)執(zhí)行加數(shù)的對(duì)準(zhǔn)移位;以及與對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)的舍入校正,舍入校正通過向上舍入信號(hào)被啟用。
還描述了與一個(gè)或多個(gè)方面相關(guān)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品并且可以在本文中要求保護(hù)。
通過本文描述的技術(shù)實(shí)現(xiàn)了另外的特征和優(yōu)點(diǎn)。其它實(shí)施例和方面在本文中詳細(xì)描述,并且被認(rèn)為是要求保護(hù)的各個(gè)方面的一部分。
附圖說明
通過以下對(duì)實(shí)施例的詳細(xì)描述,可以最佳地理解本發(fā)明的各方面以及上述和其他目的和優(yōu)點(diǎn),但是不限于實(shí)施例,在附圖中:
圖1是根據(jù)現(xiàn)有技術(shù)的fma單元的概念;
圖2示出了根據(jù)現(xiàn)有技術(shù)的用于到乘積項(xiàng)中的未舍入轉(zhuǎn)發(fā)的數(shù)據(jù)流;
圖3是根據(jù)本發(fā)明實(shí)施例的修改的fma單元的數(shù)據(jù)流;
圖4a至圖4c示出了根據(jù)本發(fā)明實(shí)施例的用于有效添加加數(shù)的三個(gè)舍入校正情況;
圖5是根據(jù)本發(fā)明實(shí)施例的用于有效地減去加數(shù)的舍入校正情況;
圖6是根據(jù)本發(fā)明實(shí)施例的fma單元的框圖;
圖7是根據(jù)本發(fā)明實(shí)施例的具有支持校正項(xiàng)的未舍入轉(zhuǎn)發(fā)的數(shù)據(jù)流的fma單元的框圖;
圖8是根據(jù)本發(fā)明實(shí)施例的用于到浮點(diǎn)單元的操作數(shù)中的未舍入轉(zhuǎn)發(fā)的流程圖;以及
圖9是用于執(zhí)行根據(jù)本發(fā)明的一個(gè)或多個(gè)方面的方法的數(shù)據(jù)處理系統(tǒng)的示例實(shí)施例。
具體實(shí)施方式
在附圖中,相同的元件用相同的附圖標(biāo)記表示。附圖僅僅是示意性表示,而并不意圖描繪本發(fā)明的各方面的具體參數(shù)。此外,附圖旨在僅描繪本發(fā)明的各方面的典型實(shí)施例,因此,不應(yīng)當(dāng)被認(rèn)為是限制本發(fā)明的各方面的范圍。
本文中描述的說明性實(shí)施例提供了用于執(zhí)行二進(jìn)制融合乘加浮點(diǎn)計(jì)算的單元、方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。本文中有時(shí)使用特定技術(shù)來描述說明性實(shí)施例,僅作為用于描述的清楚性的示例。
參考圖1至圖9,說明性實(shí)施例可以用于二進(jìn)制融合乘加浮點(diǎn)單元10,其被配置成對(duì)加數(shù)82、乘數(shù)70和被乘數(shù)72進(jìn)行運(yùn)算。例如,fma單元包括用于經(jīng)由早期結(jié)果反饋路徑76接收在該單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果作為加數(shù)82的裝置;用于對(duì)未舍入指數(shù)和未舍入尾數(shù)88執(zhí)行未舍入加數(shù)82的對(duì)準(zhǔn)移位的裝置;以及用于與實(shí)際對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)82的舍入校正的裝置,該裝置響應(yīng)于通過向上舍入信號(hào)89的啟用。
為了解釋fma過程,圖1描繪了根據(jù)現(xiàn)有技術(shù)的fma單元10的概念。圖1示出了根據(jù)現(xiàn)有技術(shù)的基于融合乘加運(yùn)算(fma)的64b二進(jìn)制浮點(diǎn)單元(fpu)10的一部分。未詳細(xì)示出fma單元10的乘法和對(duì)準(zhǔn)階段?,F(xiàn)有技術(shù)的二進(jìn)制fpu基于fma結(jié)構(gòu)以便以高效和高性能的方式支持ieee-754-2008標(biāo)準(zhǔn)。fma運(yùn)算的基本運(yùn)算是:r=a*b+c,其中r是fma運(yùn)算的結(jié)果,a、b、c是浮點(diǎn)數(shù)。
如圖1中示意性地所示,fma運(yùn)算在以下步驟中執(zhí)行。
在將操作數(shù)從ieee-754-2008格式解包成內(nèi)部格式之后,通過53比特寬的粘滯位字段54,執(zhí)行乘法a*b以便獲得乘積80(106比特寬),并且并行地執(zhí)行在163位的可能范圍中使加數(shù)82相對(duì)于乘積80對(duì)準(zhǔn)。對(duì)準(zhǔn)移位達(dá)到飽和。粘滯位字段54被或(or)樹56壓縮成單個(gè)粘滯位58。加法器在考慮到粘滯位的情況下計(jì)算乘積80和對(duì)準(zhǔn)的加數(shù)83的和或絕對(duì)差84(163比特寬)。操作數(shù)和結(jié)果的尾數(shù)用符號(hào)量值表示。結(jié)果的指數(shù)用er引用。與加法器并行,由前導(dǎo)零預(yù)測器預(yù)期加法器結(jié)果86中的前導(dǎo)零的數(shù)目lz。歸一化器通過移出前導(dǎo)零來對(duì)尾數(shù)進(jìn)行歸一化以獲得值87,并且通過減去前導(dǎo)零的數(shù)量相應(yīng)地調(diào)整指數(shù),以便產(chǎn)生er-1z。舍入器90計(jì)算舍入決定,以得到向上舍入信號(hào)89,該向上舍入信號(hào)89基于符號(hào)、粘滯位52和58、保護(hù)位50、最低有效位42和舍入模式來指示該部分是否要增加1。舍入器90還根據(jù)需要執(zhí)行分?jǐn)?shù)88的遞增,以便獲得結(jié)果尾數(shù)94,執(zhí)行范圍檢查并且根據(jù)需要應(yīng)用后舍入校正。然后將結(jié)果94打包成ieee-754-2008格式。
在未舍入轉(zhuǎn)發(fā)的情況下,結(jié)果88在歸一化之后但是在舍入步驟之前被轉(zhuǎn)發(fā)給依賴運(yùn)算。在由向上舍入信號(hào)89表示的舍入決定指示舍入器90要執(zhí)行遞增的情況下,轉(zhuǎn)發(fā)的分?jǐn)?shù)是一個(gè)單位的最小精度(ulp)太小。因此,使用校正項(xiàng)。這也通過將向上舍入信號(hào)89轉(zhuǎn)發(fā)給新的運(yùn)算來指示。
圖2中示出了如在現(xiàn)有技術(shù)中已經(jīng)實(shí)現(xiàn)的對(duì)乘積項(xiàng)a和b執(zhí)行舍入校正,圖2中描繪了根據(jù)現(xiàn)有技術(shù)的用于到乘積項(xiàng)中的未舍入轉(zhuǎn)發(fā)的數(shù)據(jù)流。在這種情況下,對(duì)于運(yùn)算a*b+c或a*b-c,對(duì)于乘積項(xiàng)a、b的未舍入轉(zhuǎn)發(fā),舍入校正總是在固定位置處并且作為正的校正項(xiàng)來執(zhí)行:
(a+inca)*(b+incb)=a*b+a*incb+b*inca+inca*incb,其中inca和incb是乘積項(xiàng)a和b的增量值。在到乘數(shù)和/或被乘數(shù)中的未舍入轉(zhuǎn)發(fā)的情況下,增量值inca和incb可以從源、在先運(yùn)算的向上舍入信號(hào)89導(dǎo)出。
在圖2中,示出了要被添加到由布思(booth)乘法器級(jí)的乘法器樹14獲得的乘積a*b80的不同的校正項(xiàng)a*incb104、b*inca106、inca*incb108。
對(duì)于到加數(shù)c中的未舍入轉(zhuǎn)發(fā),加數(shù)相對(duì)于乘積80移位,這也導(dǎo)致校正項(xiàng)移位。加數(shù)c被相加或相減,這意味著舍入校正在culp位置是+1或-1。
在圖3中,描繪了根據(jù)本發(fā)明實(shí)施例的修改的fma單元10的數(shù)據(jù)流。與圖1所示的fma單元10相反,對(duì)包括對(duì)準(zhǔn)的加數(shù)83的粘滯位54的所有位計(jì)算和或絕對(duì)差84。為此目的,應(yīng)當(dāng)相應(yīng)地調(diào)整饋送加法器和計(jì)算粘滯位58的粘滯邏輯。
圖4a至圖4c示出了根據(jù)本發(fā)明實(shí)施例的用于有效添加加數(shù)82的三個(gè)舍入校正情況。為了有效地相加加數(shù)82,舍入校正92被加入,并且可以根據(jù)下式進(jìn)行計(jì)算:
s=p+c+rc,其中s是有效總和,p是乘積項(xiàng)80的尾數(shù),c是對(duì)準(zhǔn)的加數(shù)83的尾數(shù),rc是校正項(xiàng)92。然后,可以如下計(jì)算rc:
對(duì)于雙精度計(jì)算,rc=0或rc=1*2-52*2(ec-ep),其中ec和ep分別是加數(shù)82和乘積80的指數(shù)。舍入校正92、rc以與加數(shù)c相同的方式對(duì)準(zhǔn),這意味著它與c的最低有效位對(duì)準(zhǔn)。用于對(duì)準(zhǔn)的rc的位置可以通過對(duì)對(duì)準(zhǔn)器移位量進(jìn)行解碼來生成。
在圖4a所示的情況下,加數(shù)82的指數(shù)遠(yuǎn)大于乘積80的指數(shù);在圖4b的情況下,加數(shù)82的指數(shù)比乘積80的指數(shù)小一點(diǎn),使得乘積尾數(shù)與加數(shù)尾數(shù)完全交疊;在圖4c的情況下,加數(shù)82的指數(shù)遠(yuǎn)小于乘積80的指數(shù),使得乘積尾數(shù)至多部分地與加數(shù)尾數(shù)交疊。條102示出了用于移位校正項(xiàng)92的潛在范圍。
圖5示出了根據(jù)本發(fā)明實(shí)施例的用于有效地減去加數(shù)82的舍入校正情況。為了有效地減去加數(shù)82,加數(shù)82可以大于或小于乘積80,因此可以根據(jù)下式來計(jì)算在沒有舍入校正的情況下差值d:
d=|p-c|=p-c=p+!c+ulp,如果p>c,否則
d=-(p-c)=!(p+!c),其中!c是c的非,其中ulp是差值d的最后單位。
此外,可以根據(jù)下式來計(jì)算舍入校正92:
d=|p-(c+rc)|=p-c-rc=(p-rc)+!c+ulp,
如果p>c+rc,否則
d=-(p-c-rc)=!((p-rc)+!c)。
在圖5中,對(duì)準(zhǔn)的加數(shù)83的字段中的剩余位被填充1作為反轉(zhuǎn)整個(gè)對(duì)準(zhǔn)的加數(shù)83的一部分。如果需要舍入校正,則校正項(xiàng)92在對(duì)準(zhǔn)的加數(shù)83的ulp位置處等于-1,即,如果舍入校正rc不等于零,則等于潛在校正項(xiàng)93,用1填充的比特。因此,可以通過對(duì)解碼器移位量的半解碼來生成舍入校正92——-rc。
在圖6中,示出了根據(jù)本發(fā)明實(shí)施例的fma單元10的框圖。fma單元10被配置成對(duì)加數(shù)82、乘數(shù)70和被乘數(shù)72進(jìn)行運(yùn)算,并且包括用于經(jīng)由早期結(jié)果反饋路徑76接收在單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果作為加數(shù)82的裝置,即具有對(duì)準(zhǔn)器30的多路復(fù)用器或選擇部件;用于對(duì)未舍入指數(shù)和未舍入尾數(shù)88執(zhí)行未舍入加數(shù)82的對(duì)準(zhǔn)移位的裝置,即對(duì)準(zhǔn)器30;以及用于與實(shí)際對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)82的舍入校正的裝置,該裝置響應(yīng)于通過向上舍入信號(hào)89實(shí)現(xiàn)的啟用。
向上舍入信號(hào)89從舍入器28發(fā)送回到fma單元10作為輸入。為此目的,裝置被預(yù)計(jì)接收該向上舍入信號(hào)89以實(shí)現(xiàn)舍入校正。該啟用可以通過選擇電路、例如多路復(fù)用器來完成。
為此目的,fma單元10包括解包部件12、對(duì)準(zhǔn)器30(例如,總和尋址移位器)、乘法器14、加法單元(包括具有前導(dǎo)零預(yù)計(jì)器24的進(jìn)位保存加法器21和端回進(jìn)位加法器22)、歸一化器26以及舍入和打包部件28反饋。反饋路徑76、77將未舍入結(jié)果轉(zhuǎn)發(fā)回對(duì)準(zhǔn)器30以及乘法器14。加數(shù)82以及包括乘數(shù)70和被乘數(shù)72的乘積項(xiàng)以雙精度格式64位長度被饋送給解包單元12。加數(shù)82經(jīng)由多路復(fù)用器62被傳送給對(duì)準(zhǔn)器30,多路復(fù)用器62在解包操作數(shù)c的尾數(shù)和轉(zhuǎn)發(fā)的未舍入結(jié)果88的尾數(shù)之間進(jìn)行選擇,而乘積項(xiàng)70、72經(jīng)由多路復(fù)用器66和64被傳送給乘法器14,多路復(fù)用器66和64在解包操作數(shù)a和b的尾數(shù)以及轉(zhuǎn)發(fā)的未舍入結(jié)果88的尾數(shù)之間進(jìn)行選擇。操作數(shù)a、b和c的指數(shù)經(jīng)由多路復(fù)用器68和69被傳送給對(duì)準(zhǔn)器30的移位量計(jì)算邏輯16,多路復(fù)用器68和69在解包器12提供的指數(shù)或轉(zhuǎn)發(fā)的未舍入結(jié)果88的指數(shù)之間進(jìn)行選擇。對(duì)準(zhǔn)器30以163比特寬度工作,乘法器14以106比特寬度工作。對(duì)準(zhǔn)器30根據(jù)加數(shù)82和乘積80的指數(shù)的差來移位加數(shù)82。移位的加數(shù)82和乘積80被傳送給加法器21、22,以便被加入到fma過程的最終和中。歸一化移位器26將總和的尾數(shù)從163位歸一化為55位。因此,這個(gè)未舍入尾數(shù)88可以被轉(zhuǎn)發(fā)給對(duì)準(zhǔn)器30或乘法器14,用于分別經(jīng)由反饋路徑76或77進(jìn)一步計(jì)算另外的fma計(jì)算。在先運(yùn)算是加法或乘法中的至少一個(gè)。
在不需要轉(zhuǎn)發(fā)最終和的情況下,將和在舍入和打包部件28中舍入并且打包以獲得64位雙精度寬度的最終結(jié)果94。
圖7描繪了根據(jù)本發(fā)明實(shí)施例的具有支持到所有操作數(shù)的未舍入轉(zhuǎn)發(fā)并且應(yīng)用校正項(xiàng)的數(shù)據(jù)流的fma單元10的框圖,作為64位二進(jìn)制浮點(diǎn)單元的可能實(shí)現(xiàn)。然而,被配置成執(zhí)行fma過程的任何類型的浮點(diǎn)單元可以用于應(yīng)用本發(fā)明的各方面。圖7解釋了舍入校正可以如何集成到對(duì)準(zhǔn)器30和加法器20中。
乘積項(xiàng)70、72被饋送給布思多路復(fù)用器32,該布思多路復(fù)用器32進(jìn)一步將數(shù)據(jù)傳送給包括多個(gè)3:2進(jìn)位保存加法器34以及4:2進(jìn)位保存加法器36的乘數(shù)約減樹20。加數(shù)82被饋送給對(duì)準(zhǔn)器30以計(jì)算移位量96并且對(duì)準(zhǔn)加數(shù)82。對(duì)準(zhǔn)器例如被實(shí)現(xiàn)為總和尋址移位器。
提供用于通過應(yīng)用于乘數(shù)約減樹20的校正項(xiàng)92來執(zhí)行加數(shù)82的舍入校正的裝置。通過在有效加法的情況下將解碼函數(shù)應(yīng)用于移位量96和/或通過在有效減法的情況下將半解碼函數(shù)應(yīng)用于移位量96來獲得校正項(xiàng)92。
提供了作為用于與實(shí)際對(duì)準(zhǔn)移位并行地對(duì)加數(shù)82執(zhí)行舍入校正的裝置的基于移位量96來生成加數(shù)82的校正項(xiàng)92的電路,其中生成基于遞增在先運(yùn)算的未舍入中間結(jié)果的校正項(xiàng)92。用于加數(shù)82的校正項(xiàng)92以與加數(shù)82相同的移位量96對(duì)準(zhǔn)。
針對(duì)乘積項(xiàng)70、72的校正項(xiàng)92確定增量44、46,并且在乘數(shù)約減樹20中傳送增量44、46以獲得乘積80、以及用于加數(shù)82的增量48,其基于由對(duì)準(zhǔn)器30計(jì)算的移位量96來確定。
提供了用于支持多個(gè)浮點(diǎn)精度的裝置,其中校正項(xiàng)92的值適于支持任何所支持的精度的結(jié)果的未舍入轉(zhuǎn)發(fā)。移位量96可以是二進(jìn)制或一元或任何其它表示。
作為對(duì)準(zhǔn)器30的輸出的移位加數(shù)83然后被添加到乘積80以獲得最終和84。
計(jì)算加數(shù)82與乘數(shù)70和被乘數(shù)72的乘積80之間的和84或絕對(duì)差,其包括粘滯位54(見圖3),以便基于和84或絕對(duì)差的粘滯位54來計(jì)算校正項(xiàng)92。
在圖8中,示出了根據(jù)本發(fā)明實(shí)施例的用于到浮點(diǎn)單元的操作數(shù)的未舍入轉(zhuǎn)發(fā)的流程圖,其大致解釋了用于在在二進(jìn)制融合乘加浮點(diǎn)單元中執(zhí)行二進(jìn)制浮點(diǎn)算術(shù)計(jì)算的方法的各方面。被配置成對(duì)加數(shù)c、乘數(shù)a和被乘數(shù)b進(jìn)行運(yùn)算的方法包括例如經(jīng)由早期結(jié)果反饋路徑接收在單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果作為加數(shù)c;對(duì)未舍入指數(shù)和未舍入尾數(shù)執(zhí)行未舍入加數(shù)c的對(duì)準(zhǔn)移位;以及與實(shí)際對(duì)準(zhǔn)移位并行地對(duì)加數(shù)c執(zhí)行舍入校正,舍入校正通過向上舍入信號(hào)來被啟用。
一個(gè)或多個(gè)方面的流程開始于在步驟s200中將未舍入結(jié)果反饋給乘法器和對(duì)準(zhǔn)器,其可以對(duì)于每個(gè)操作數(shù)被配置成從先前的乘法、加法或乘加運(yùn)算或者常規(guī)操作數(shù)a、b和c中選擇未舍入結(jié)果。接下來,在步驟202中并行地執(zhí)行加數(shù)的對(duì)準(zhǔn)移位,以在步驟s204至s212中生成具有所有可能的舍入校正的乘積a*b??梢酝ㄟ^總和尋址移位器來執(zhí)行對(duì)準(zhǔn)移位。然后在步驟s214中接合并行分支步驟s202和s204至s212,其中通過將包括校正項(xiàng)的乘積a*b的值和對(duì)準(zhǔn)的加數(shù)c相加或相減,并且基于前導(dǎo)零的數(shù)量對(duì)和或差絕對(duì)差進(jìn)行歸一化來生成歸一化的未舍入結(jié)果。計(jì)算加數(shù)和乘數(shù)與被乘數(shù)之積的和或絕對(duì)差,其包括粘滯位。然后可以將在步驟s214中生成的未舍入結(jié)果轉(zhuǎn)發(fā)給后續(xù)指令的步驟s200;它也被傳遞給執(zhí)行舍入決定并且生成向上舍入信號(hào)的步驟s216。該向上舍入信號(hào)可以被轉(zhuǎn)發(fā)給后續(xù)指令的步驟s206。然后,步驟s218基于步驟s214的未舍入結(jié)果和步驟s216的向上舍入信號(hào)生成最終舍入結(jié)果。
為了生成具有所有潛在舍入校正的乘積a*b,乘法器在步驟s204中開始乘積a*b的計(jì)算,并且并行地,步驟s206針對(duì)兩個(gè)乘積項(xiàng)a、b以及針對(duì)加數(shù)c基于從在先指令接收的向上舍入信號(hào)來確定是否需要舍入校正。然后,在步驟s208中確定乘積項(xiàng)a、b的增量項(xiàng)inca和incb,以及在步驟s210中確定加數(shù)c的增量項(xiàng)incc。校正和增量項(xiàng)incc以與加數(shù)c相同的方式排列。項(xiàng)incc在有效相加的情況下可以通過將解碼函數(shù)應(yīng)用于移位量來獲得,并且在有效減法的情況下可以通過將半解碼函數(shù)應(yīng)用于移位量來獲得。在步驟s212中,增量項(xiàng)被饋送給乘數(shù)約減樹,并且具有全部舍入校正的乘法結(jié)束。
現(xiàn)在參考圖9,其中示出了數(shù)據(jù)處理系統(tǒng)210的一個(gè)示例。數(shù)據(jù)處理系統(tǒng)210僅僅是適合的數(shù)據(jù)處理系統(tǒng)的一個(gè)示例,不應(yīng)對(duì)本文中描述的本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制??傊瑪?shù)據(jù)處理系統(tǒng)210能夠?qū)崿F(xiàn)和/或執(zhí)行本文中以上所述的任何功能。
在數(shù)據(jù)處理系統(tǒng)210中,存在計(jì)算機(jī)系統(tǒng)/服務(wù)器212,其可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。適于與計(jì)算機(jī)系統(tǒng)/服務(wù)器212一起操作的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括但不限于:個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子乘積、網(wǎng)絡(luò)個(gè)人電腦、小型計(jì)算機(jī)系統(tǒng)﹑大型計(jì)算機(jī)系統(tǒng)和包括上述任意系統(tǒng)的分布式云計(jì)算技術(shù)環(huán)境,等等。
計(jì)算機(jī)系統(tǒng)/服務(wù)器212可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、目標(biāo)程序、組成、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)系統(tǒng)/服務(wù)器212可以在其中通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)的分布式云計(jì)算環(huán)境中實(shí)施。在分布式云計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地或遠(yuǎn)程計(jì)算系統(tǒng)存儲(chǔ)介質(zhì)上。
如圖9所示,數(shù)據(jù)處理系統(tǒng)210中的計(jì)算機(jī)系統(tǒng)/服務(wù)器212以通用計(jì)算設(shè)備的形式示出。計(jì)算機(jī)系統(tǒng)/服務(wù)器212的部件可以包括但不限于:一個(gè)或多個(gè)處理器或者處理單元216、系統(tǒng)存儲(chǔ)器228、和耦合不同的系統(tǒng)部件(包括系統(tǒng)存儲(chǔ)器228和處理單元216)的總線218。
總線218表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器、外圍總線、圖形加速端口以及使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的處理器或局域總線。作為示例而非限制,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(isa)總線、微通道體系結(jié)構(gòu)(mac)總線、增強(qiáng)型isa總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(vesa)局域總線以及外圍部件互連(pci)總線。
計(jì)算機(jī)系統(tǒng)/服務(wù)器212典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這樣的介質(zhì)可以是能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器212訪問的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移除的和不可移除的介質(zhì)。
系統(tǒng)存儲(chǔ)器228可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),諸如隨機(jī)存取存儲(chǔ)器(ram)230和/或高速緩存存儲(chǔ)器232。計(jì)算機(jī)系統(tǒng)/服務(wù)器212還可以包括其它可移除/不可移除的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為示例,存儲(chǔ)系統(tǒng)234可以用于讀寫不可移除的、非易失性磁介質(zhì)(圖中未示出,通常稱為“硬盤驅(qū)動(dòng)器”)。盡管圖中未示出,可以提供用于讀寫可移除非易失性磁盤(例如“軟盤”)的磁盤驅(qū)動(dòng)器、以及讀寫可移除非易失性光盤(例如cd-rom、dvd-rom或者其它光介質(zhì))的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過一個(gè)或多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。如下面進(jìn)一步描繪和描述的,存儲(chǔ)器228可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置成執(zhí)行本發(fā)明各實(shí)施例的功能。
作為示例而非限制,存儲(chǔ)器228中可以一組(至少一個(gè))程序模塊242的程序/實(shí)用工具240,也可以存儲(chǔ)操作系統(tǒng)、一個(gè)或多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù)。操作系統(tǒng)、一個(gè)或多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù)或其某種組合中的每個(gè)可以包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊242通常執(zhí)行本文中所描述的本發(fā)明實(shí)施例的功能和/或方法。
計(jì)算機(jī)系統(tǒng)/服務(wù)器212也可以與一個(gè)或多個(gè)外部設(shè)備214(諸如鍵盤、指向設(shè)備、顯示器224等)通信,還可與使得用戶能夠與計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的一個(gè)或多個(gè)設(shè)備通信,和/或與使得計(jì)算機(jī)系統(tǒng)/服務(wù)器212能夠與一個(gè)或多個(gè)其它計(jì)算設(shè)備通信的任何設(shè)備(例如網(wǎng)卡、調(diào)制解調(diào)器等等)通信。這樣的通信可以經(jīng)由輸入/輸出(i/o)接口222進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器212還可以經(jīng)由網(wǎng)絡(luò)適配器220與一個(gè)或多個(gè)網(wǎng)絡(luò)(諸如局域網(wǎng)(lan)、廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò)(例如因特網(wǎng)))通信。如圖所示,網(wǎng)絡(luò)適配器220經(jīng)由總線218與計(jì)算機(jī)系統(tǒng)/服務(wù)器212的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,其它硬件和/或軟件模塊可以與計(jì)算機(jī)系統(tǒng)/服務(wù)器212一起操作。示例包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、raid系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
現(xiàn)在參考如本文所描述的,提供了一種二進(jìn)制融合乘加浮點(diǎn)單元,其被配置成對(duì)加數(shù)、乘數(shù)和被乘數(shù)進(jìn)行運(yùn)算,該單元包括:用于經(jīng)由早期結(jié)果反饋路徑接收在單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果作為加數(shù)的裝置;用于對(duì)未舍入指數(shù)和未舍入尾數(shù)執(zhí)行未舍入加數(shù)的對(duì)準(zhǔn)移位的裝置;以及用于與實(shí)際對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)的舍入校正的裝置,該裝置響應(yīng)于通過向上舍入信號(hào)進(jìn)行的啟用。
與根據(jù)現(xiàn)有技術(shù)的fma單元相比,在一個(gè)或多個(gè)方面,二進(jìn)制融合乘加浮點(diǎn)單元(以下縮寫為fma單元)表現(xiàn)出fma單元的顯著降低的等待時(shí)間。
由于根據(jù)現(xiàn)有技術(shù)的基于乘加的fpu的結(jié)構(gòu),加數(shù)相對(duì)于乘積對(duì)準(zhǔn),并且可以相對(duì)于乘積向右或向左伸出,這取決于加數(shù)大于還是小于乘積。對(duì)準(zhǔn)器部件和乘法器部件并行工作。
一個(gè)或多個(gè)方面的二進(jìn)制融合乘加浮點(diǎn)單元避免了用于fma的常用分裂路徑概念的某些缺點(diǎn),這對(duì)于加法運(yùn)算是非常有用的。這樣的fpu具有兩個(gè)并行數(shù)據(jù)路徑——近路徑和遠(yuǎn)路徑。對(duì)于遠(yuǎn)路徑,加數(shù)遠(yuǎn)大于乘積,或者乘積遠(yuǎn)大于加數(shù)。在近路徑情況下,加數(shù)和乘積彼此非常接近。這種情況拆分允許對(duì)每個(gè)數(shù)據(jù)路徑進(jìn)行優(yōu)化。然而,與經(jīng)典方法相比,它只節(jié)省了幾個(gè)邏輯階段。這種方法的另一缺點(diǎn)是,情況拆分只適用于正規(guī)的操作數(shù)和結(jié)果。次正規(guī)的操作數(shù)和結(jié)果通常需要軟件支持。
一個(gè)或多個(gè)方面的二進(jìn)制融合乘加浮點(diǎn)單元避免了另一概念的某些缺點(diǎn),該另一概念使用積極的轉(zhuǎn)發(fā)技術(shù)已經(jīng)將中間結(jié)果反饋給相關(guān)運(yùn)算中,而不是等待最終舍入和打包的答案,例如,用于支持fma的鏈接的浮點(diǎn)乘法器和加法器。對(duì)于這種結(jié)構(gòu),實(shí)現(xiàn)了在加法器級(jí)結(jié)束處的乘積到加法運(yùn)算中的特殊的未舍入轉(zhuǎn)發(fā)。如果操作數(shù)和結(jié)果是正規(guī)的,則這個(gè)過程是成功的;未歸一化的值需要軟件支持。然而,這涉及在fma運(yùn)算內(nèi)的轉(zhuǎn)發(fā),而不涉及后續(xù)運(yùn)算。不支持從加法到乘法和從加法到另一加法的兩個(gè)操作數(shù)的快速轉(zhuǎn)發(fā),因?yàn)閺囊粋€(gè)fma過程向下一fma過程發(fā)送數(shù)據(jù)將需要快速轉(zhuǎn)發(fā)。當(dāng)乘法和加法不融合時(shí),乘法需要舍入。這樣的不對(duì)稱類型的轉(zhuǎn)發(fā)通常導(dǎo)致指令定序器更復(fù)雜。
本領(lǐng)域中已知的其他方案支持在將舍入結(jié)果舍入到ieee數(shù)據(jù)格式之前以內(nèi)部格式轉(zhuǎn)發(fā)舍入結(jié)果。這節(jié)省了在產(chǎn)生操作中的打包上的一些邏輯延遲和在接收操作中的解包的一些邏輯延遲。支持到fma運(yùn)算的所有三個(gè)操作數(shù)的該轉(zhuǎn)發(fā)。本領(lǐng)域已知的其它方案、如us8,671,129b2中公開的方案,通過在舍入之前轉(zhuǎn)發(fā)結(jié)果,甚至更積極。為了保持ieee兼容性,需要進(jìn)行一些舍入校正。
在現(xiàn)有技術(shù)中,通過基于未舍入結(jié)果計(jì)算乘積和對(duì)準(zhǔn)器移位量,以及應(yīng)用用于乘積的校正項(xiàng),來實(shí)現(xiàn)該ieee標(biāo)準(zhǔn)符合性。然而,對(duì)于加數(shù)的實(shí)際移位,需要舍入結(jié)果。因此,實(shí)際移位的開始必須被延遲,直到舍入結(jié)果可用,這成為fpu的時(shí)序關(guān)鍵路徑。因此,對(duì)準(zhǔn)移位的開始必須被延遲,因?yàn)橛糜诘郊訑?shù)中的未舍入轉(zhuǎn)發(fā)的真實(shí)解是未知的。
一個(gè)或多個(gè)方面的fma單元克服了延遲對(duì)準(zhǔn)移位直到舍入結(jié)果可用的必要性。通過為加數(shù)而不僅僅為乘積提供校正項(xiàng),fma單元允許到加數(shù)中的真正的未舍入轉(zhuǎn)發(fā)。因此,顯著減少了根據(jù)本發(fā)明的各方面的基于二進(jìn)制fma的fpu的等待時(shí)間。
作為用于接收經(jīng)由早期結(jié)果反饋路徑在單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果的作為加數(shù)的裝置,可以使用多路復(fù)用器或選擇電路,其能夠在兩個(gè)或更多個(gè)模式的輸入數(shù)據(jù)之間進(jìn)行選擇。作為用于對(duì)未舍入指數(shù)和未舍入尾數(shù)執(zhí)行未舍入加數(shù)的對(duì)準(zhǔn)移位的裝置,可以使用具有用于確定和執(zhí)行相應(yīng)移位量的功能的任何電子電路。此外,作為用于與實(shí)際對(duì)準(zhǔn)移位并行地執(zhí)行對(duì)加數(shù)的舍入校正的裝置,其中該裝置響應(yīng)于通過向上舍入信號(hào)進(jìn)行的使能,可以使用具有用于取決于對(duì)準(zhǔn)移位情況來確定加數(shù)的必要增量的功能的任何電子電路??梢酝ㄟ^對(duì)由fma單元的對(duì)準(zhǔn)器部件確定的有限移位量進(jìn)行解碼并且基于向上舍入信號(hào)啟用它來生產(chǎn)加數(shù)的舍入校正。可以由fma單元的舍入邏輯中的在先指令來生成向上舍入信號(hào)。
根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,可以執(zhí)行從任何運(yùn)算回到需要對(duì)準(zhǔn)移位的添加項(xiàng)的轉(zhuǎn)發(fā)。
可選地,fma單元還可以具有用于接收乘數(shù)和被乘數(shù)的未舍入操作數(shù)的裝置。
根據(jù)實(shí)施例,fma單元還可以包括用于通過應(yīng)用于乘數(shù)約減樹的校正項(xiàng)來對(duì)加數(shù)執(zhí)行舍入校正的裝置。因此,可以并行地對(duì)加數(shù)執(zhí)行舍入校正以執(zhí)行加數(shù)的對(duì)準(zhǔn)移位。校正項(xiàng)可以被傳送給由向上舍入信號(hào)觸發(fā)的fma單元的乘法器部件的加法器單元的輸入。這樣的加法器單元可以由進(jìn)位保存加法器單元有利地表示。
根據(jù)實(shí)施例,校正項(xiàng)還可以在有效相加的情況下通過將解碼函數(shù)應(yīng)用于移位量來獲得和/或在有效相減的情況下通過將半解碼函數(shù)應(yīng)用于移位量來獲得。
存在使加數(shù)的舍入校正比乘積的舍入校正更復(fù)雜的兩個(gè)方面。首先,加數(shù)相對(duì)于乘積被對(duì)準(zhǔn),即它被移位,并且對(duì)準(zhǔn)的加數(shù)的最低有效位(lsb)位置取決于乘積和加數(shù)的指數(shù)差。因此,舍入校正也被移位。其次,從該乘積中增加或減去加數(shù),因此也要添加或減去校正項(xiàng)。對(duì)準(zhǔn)的加數(shù)的位置可以例如由解碼器從移位量導(dǎo)出。
為了加數(shù)的有效相加,舍入校正被加入,并且可以根據(jù)下式進(jìn)行計(jì)算:
s=p+c+rc,其中s是有效總和,p是乘積項(xiàng)的尾數(shù),c是與乘積對(duì)準(zhǔn)的加數(shù)的尾數(shù),rc是校正項(xiàng)。校正項(xiàng)rc可以如下計(jì)算:
對(duì)于雙精度計(jì)算,rc=0或rc=1*2-52*2(ec-ep),其中ec是加數(shù)的指數(shù),ep是乘積項(xiàng)的指數(shù)。rc以與加數(shù)c相同的方式對(duì)準(zhǔn),這意味著它與c的最低有效位對(duì)準(zhǔn)。用于對(duì)準(zhǔn)的rc的位置可以通過解碼對(duì)準(zhǔn)器移位量來生成。
為了加數(shù)的有效相減,加數(shù)可以大于或小于乘積,因此可以根據(jù)下式來計(jì)算在沒有舍入校正的情況下的差值d:
d=|p-c|=p-c=p+!c+ulp,如果p>c,否則
d=-(p-c)=!(p+!c),其中!c是c的非,并且其中ulp是差值d的最后單位。
此外,可以根據(jù)下式來計(jì)算舍入校正:
d=|p-(c+rc)|=p-c-rc=(p-rc)+!c+ulp,如果p>c+rc,否則
d=-(p-c-rc)=!((p-rc)+!c)。
因此,可以通過對(duì)準(zhǔn)器移位量的半解碼來生成舍入校正-rc。
根據(jù)實(shí)施例,還可以由總和尋址移位器來執(zhí)行對(duì)準(zhǔn)移位。本領(lǐng)域中公知的總和尋址移位器允許組合移位量計(jì)算和實(shí)際移位。對(duì)于常規(guī)fma單元,對(duì)準(zhǔn)移位必須等待舍入結(jié)果可用。一個(gè)或多個(gè)方面的fma單元可以使用未舍入尾數(shù)進(jìn)行移位,并且因此可以充分利用總和尋址移位器的等待時(shí)間優(yōu)點(diǎn)。它在對(duì)準(zhǔn)移位已經(jīng)在進(jìn)行的同時(shí)在乘法器樹中應(yīng)用加法器校正。因此,總和尋址移位器可以有助于本發(fā)明的fma單元的優(yōu)點(diǎn)。
根據(jù)實(shí)施例,fma單元還可以包括用于支持多個(gè)浮點(diǎn)精度的裝置,其中校正項(xiàng)的值適于支持任何所支持的精度的結(jié)果的未舍入轉(zhuǎn)發(fā)。由于用于二進(jìn)制浮點(diǎn)運(yùn)算的ieee-754-2008標(biāo)準(zhǔn)涉及多個(gè)浮點(diǎn)精度,諸如單精度、雙精度或四精度,等待時(shí)間減少將用于多個(gè)精度。一個(gè)或多個(gè)方面的fma單元可以以不同的浮點(diǎn)精度實(shí)現(xiàn),并且表現(xiàn)出等待時(shí)間的有利減少。
根據(jù)實(shí)施例,在先運(yùn)算可以是加法或乘法或乘加運(yùn)算中的至少一個(gè)。要轉(zhuǎn)發(fā)給fma單元的輸入的操作數(shù)可以是在先加法和乘法的結(jié)果。在任何情況下都可以實(shí)現(xiàn)將未舍入結(jié)果轉(zhuǎn)發(fā)給涉及減少執(zhí)行fma過程中的等待時(shí)間的新計(jì)算的所有三個(gè)操作數(shù)。
根據(jù)實(shí)施例,fma單元還可以包括至少多路復(fù)用器或選擇電路作為用于接收在先運(yùn)算的未舍入結(jié)果作為加數(shù)的裝置。能夠區(qū)分至少兩種不同種類的輸入的多路復(fù)用器或其它選擇電路有利地用作乘法器或?qū)?zhǔn)器的輸入級(jí)。因此,在先運(yùn)算的未舍入結(jié)果可以被傳送給這樣的輸入級(jí)。
根據(jù)實(shí)施例,fma單元還可以包括能夠用于計(jì)算移位量并且對(duì)操作數(shù)移位的電路作為用于執(zhí)行未舍入加數(shù)的對(duì)準(zhǔn)移位的裝置??梢詫?duì)未舍入指數(shù)和未舍入尾數(shù)執(zhí)行該運(yùn)算,以充分利用一個(gè)或多個(gè)方面的fma單元,并且充分利用浮點(diǎn)運(yùn)算的等待時(shí)間的減少。
根據(jù)實(shí)施例,fma單元還可以包括基于移位量來生成用于加數(shù)的校正項(xiàng)的電路,作為與實(shí)際對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)的舍入校正的裝置??梢曰诩訑?shù)的增量項(xiàng)并且基于解碼或半解碼的移位量來計(jì)算校正項(xiàng)。然后可以與對(duì)加法器執(zhí)行實(shí)際對(duì)準(zhǔn)移位的對(duì)準(zhǔn)器并行地將校正項(xiàng)傳送給fma單元的乘法器樹的輸入級(jí)。
根據(jù)實(shí)施例,fma單元還可以包括基于遞增在先運(yùn)算的未舍入中間結(jié)果來生成校正項(xiàng)。未舍入中間結(jié)果的尾數(shù)可以增加值1,以便獲得結(jié)果尾數(shù),并且能夠在轉(zhuǎn)發(fā)結(jié)果時(shí)確定是否需要校正項(xiàng)。
根據(jù)實(shí)施例,用于加數(shù)的校正項(xiàng)還可以以與加數(shù)相同的移位量被移位。從該乘積中加上或減去加數(shù),因此,也要加上或減去校正項(xiàng)。為了有效相加,添加舍入校正。該位置例如可以通過解碼器從移位量導(dǎo)出。
根據(jù)實(shí)施例,可以計(jì)算加數(shù)和乘數(shù)與被乘數(shù)的乘積之間的和或絕對(duì)差,其包括粘滯位。作為傳統(tǒng)fma單元的修改,可以對(duì)操作數(shù)的所有位、包括粘滯位計(jì)算和或差。因此,根據(jù)fma單元的乘法器樹的加法器級(jí)的結(jié)果來計(jì)算粘滯位。因此,可以執(zhí)行傳統(tǒng)fma單元的粘滯邏輯的調(diào)整,以便充分利用該實(shí)施例。
根據(jù)實(shí)施例,可以基于和或絕對(duì)差的粘滯位來計(jì)算校正項(xiàng)??梢栽趯⒏鶕?jù)由對(duì)準(zhǔn)器電路確定的移位量移位的加數(shù)與乘積項(xiàng)相加之后計(jì)算粘滯位。然后可以通過或(or)電路將粘滯位進(jìn)一步減小到單個(gè)位用于對(duì)fma運(yùn)算的最終結(jié)果進(jìn)行舍入。
此外,提供了一種用于在二進(jìn)制融合乘加浮點(diǎn)單元中執(zhí)行二進(jìn)制浮點(diǎn)算術(shù)計(jì)算的方法,其被配置成對(duì)加數(shù)、乘數(shù)和被乘數(shù)進(jìn)行運(yùn)算。該方法包括經(jīng)由早期結(jié)果反饋路徑接收在單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果作為加數(shù);對(duì)未舍入指數(shù)和未舍入尾數(shù)執(zhí)行未舍入加數(shù)的對(duì)準(zhǔn)移位;以及與實(shí)際對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)的舍入校正,舍入校正通過向上舍入信號(hào)來被啟用。
該方法克服了延遲對(duì)準(zhǔn)移位直到fma單元的舍入結(jié)果可用的必要性。該方法通過為加數(shù)而不只是為乘積提供校正項(xiàng),允許到加數(shù)中的真正的未舍入轉(zhuǎn)發(fā)。因此,大大減少了根據(jù)本發(fā)明的各方面的二進(jìn)制fma過程的等待時(shí)間。
此外,根據(jù)實(shí)施例,可以通過應(yīng)用于單元的乘數(shù)約減樹的校正項(xiàng)來執(zhí)行加數(shù)的舍入校正。因此,可以與執(zhí)行加數(shù)的對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)的舍入校正。可以將校正項(xiàng)傳送給由向上舍入信號(hào)觸發(fā)的fma單元的乘法器部件的加法器單元的輸入。
根據(jù)實(shí)施例,此外,校正項(xiàng)可以在有效相加的情況下通過將解碼函數(shù)應(yīng)用于移位量來獲得;和/或在有效減法的情況下通過將半解碼函數(shù)應(yīng)用于移位量來獲得。
為了加數(shù)的有效加法,舍入校正被加入,并且可以根據(jù)以下公式進(jìn)行計(jì)算:
s=p+c+rc,其中s是有效總和,p是乘積項(xiàng)的尾數(shù),c是與乘積對(duì)準(zhǔn)的加數(shù)的尾數(shù),rc是校正項(xiàng)。然后,可以如下計(jì)算rc:
對(duì)于雙精度計(jì)算,rc=0或rc=1*2-52*2(ec-ep),其中ec是加數(shù)的指數(shù),ep是乘積項(xiàng)的指數(shù)。rc以與加數(shù)c相同的方式對(duì)準(zhǔn),這意味著它與c的最低有效位對(duì)準(zhǔn)。用于對(duì)準(zhǔn)的rc的位置可以通過對(duì)對(duì)準(zhǔn)器移位量進(jìn)行解碼來生成。
為了加數(shù)的有效相減,加數(shù)可以大于或小于乘積,因此可以根據(jù)下式來計(jì)算在沒有舍入校正的情況下的差值d:
d=|p-c|=p-c=p+!c+ulp,如果p>c,否則
d=-(p-c)=!(p+!c),其中!c是c的非,其中ulp是差值d的最后單位。
此外,可以根據(jù)以下來計(jì)算舍入校正:
d=|p-(c+rc)|=p-c-rc=(p-rc)+!c+ulp,如果p>c+rc,否則
d=-(p-c-rc)=!((p-rc)+!c)。
因此,可以通過對(duì)準(zhǔn)器移位量的半解碼來生成舍入校正-rc。
根據(jù)實(shí)施例,還可以由總和尋址移位器來執(zhí)行對(duì)準(zhǔn)移位??偤蛯ぶ芬莆黄髟试S組合移位量計(jì)算和實(shí)際移位。根據(jù)一個(gè)或多個(gè)方面的方法,在對(duì)準(zhǔn)移位已經(jīng)在進(jìn)行的同時(shí)在fma單元的乘法器樹中應(yīng)用加法器校正。
根據(jù)實(shí)施例,此外,可以支持多個(gè)浮點(diǎn)精度,其中針對(duì)任何所支持的精度的結(jié)果轉(zhuǎn)發(fā)適于支持未舍入校正項(xiàng)的值。根據(jù)用于二進(jìn)制浮點(diǎn)算法的ieee-754-2008標(biāo)準(zhǔn),可以支持單浮點(diǎn)精度、雙倍浮點(diǎn)精度或四倍浮點(diǎn)精度。
根據(jù)實(shí)施例,在先運(yùn)算可以是加法或乘法或乘加運(yùn)算中的至少一個(gè)。根據(jù)一個(gè)或多個(gè)方面,要轉(zhuǎn)發(fā)給fma單元的輸入的操作數(shù)可以是在先加法和乘法的結(jié)果。
根據(jù)實(shí)施例,可以基于遞增在先運(yùn)算的未舍入中間結(jié)果來生成校正項(xiàng)。未舍入中間結(jié)果的尾數(shù)可以增加值1,以便獲得結(jié)果尾數(shù),并且能夠在轉(zhuǎn)發(fā)結(jié)果時(shí)確定是否需要校正項(xiàng)。
根據(jù)實(shí)施例,可以計(jì)算加數(shù)和乘數(shù)與被乘數(shù)的乘積之間的和或絕對(duì)差,其包括粘滯位。可以對(duì)操作數(shù)的所有位、包括粘滯位計(jì)算和或差。因此,根據(jù)fma單元的乘法器樹的加法器級(jí)的結(jié)果來計(jì)算粘滯位。
根據(jù)實(shí)施例,可以基于和或絕對(duì)差的粘滯位來計(jì)算校正項(xiàng)??梢栽趯⒏鶕?jù)由對(duì)準(zhǔn)器電路確定的移位量移位的加數(shù)與乘積項(xiàng)相加之后計(jì)算粘滯位。然后可以通過或(or)電路將粘滯位進(jìn)一步減小到單個(gè)位用于對(duì)fma運(yùn)算的最終結(jié)果進(jìn)行舍入。
此外,提供了一種用于在二進(jìn)制融合乘加浮點(diǎn)單元中執(zhí)行二進(jìn)制浮點(diǎn)算術(shù)計(jì)算的計(jì)算機(jī)程序產(chǎn)品,其被配置成對(duì)加數(shù)、乘數(shù)和被乘數(shù)進(jìn)行運(yùn)算。計(jì)算機(jī)程序產(chǎn)品包括具有包含在其中的程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),程序指令由計(jì)算機(jī)系統(tǒng)可執(zhí)行以引起計(jì)算機(jī)系統(tǒng)執(zhí)行包括以下步驟的方法:經(jīng)由早期結(jié)果反饋路徑接收在單元中執(zhí)行的在先運(yùn)算的未舍入結(jié)果作為加數(shù);對(duì)未舍入指數(shù)和未舍入尾數(shù)執(zhí)行未舍入加數(shù)的對(duì)準(zhǔn)移位;以及與實(shí)際對(duì)準(zhǔn)移位并行地執(zhí)行加數(shù)的舍入校正,舍入校正通過向上舍入信號(hào)來被啟用。
此外,提供了一種用于執(zhí)行數(shù)據(jù)處理程序的數(shù)據(jù)處理系統(tǒng),其包括用于執(zhí)行上述方法的計(jì)算機(jī)可讀程序指令。
本發(fā)明的各方面可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于引起處理器實(shí)現(xiàn)本發(fā)明的各方面的計(jì)算機(jī)可讀程序指令。
計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)用于由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是――但不限于――電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的示例(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、可擦式可編程只讀存儲(chǔ)器(eprom或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、便攜式壓縮盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能盤(dvd)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘?hào)。
本文中描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(isa)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言—諸如smalltalk、c++等,以及常規(guī)的過程式編程語言—諸如“c”語言或類似的編程語言。計(jì)算機(jī)可讀程序指令可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)—包括局域網(wǎng)(lan)或廣域網(wǎng)(wan)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實(shí)施例中,通過利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(fpga)或可編程邏輯陣列(pla),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個(gè)方面。
本文中參考根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合都可以由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。
這些計(jì)算機(jī)可讀程序指令可以被提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。
也可以將計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。
附圖中的流程圖和框圖示出了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)
已經(jīng)出于說明的目的給出了本發(fā)明的各種實(shí)施例的描述,但是這些描述并不旨在窮舉或限于所公開的實(shí)施例。在不脫離所描述的實(shí)施例的范圍和精神的情況下,很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員將是顯而易見的。選擇本文中使用的術(shù)語是為了最好地解釋實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌鲋邪l(fā)現(xiàn)的技術(shù)的技術(shù)改進(jìn),或者使得本領(lǐng)域的其他普通技術(shù)人員能夠理解本文中公開的實(shí)施例。