專利名稱:一種低成本的單精度初等函數(shù)運(yùn)算加速器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種運(yùn)算加速器,尤其是一種可以完成多種初等函數(shù)運(yùn)算的加速器,滿足單精度浮點(diǎn)數(shù)據(jù)的精度要求。
背景技術(shù):
隨著移動設(shè)備的迅猛發(fā)展,對于移動設(shè)備的計(jì)算能力也提出了越來越高的要求。而初等函數(shù)運(yùn)算現(xiàn)如今廣泛的應(yīng)用于科學(xué)計(jì)算,數(shù)字信號處理,多媒體圖像等領(lǐng)域當(dāng)中。對于移動設(shè)備而言,在滿足速度要求的前提下,更注重對于成本的控制。通過硬件實(shí)現(xiàn)初等函數(shù)的方法主要包括循環(huán)迭代法、泰勒級數(shù)展開法、分段逼近法等。對于中等程度的精度要求來講(例如單精度),分段二次逼近法是目前最為有效的方法,且同一種結(jié)構(gòu)能夠?qū)崿F(xiàn)絕大多數(shù)的初等函數(shù)運(yùn)算。所謂分段二次逼近法,顧名思義,就是將初等函數(shù)曲線在計(jì)算范圍內(nèi)等分成η段,每一段都用一個(gè)近似的二次多項(xiàng)式曲線進(jìn)行擬合,在該段中原函數(shù)的值就用二次多項(xiàng)式的值代替,使得計(jì)算結(jié)果逼近真實(shí)值。而分段二次逼近法的硬件實(shí)現(xiàn)方式,主要由兩部分組成。第一部分是通過輸入的地址找到查找表中對應(yīng)分段的二次多項(xiàng)的各次項(xiàng)系數(shù)。第二部分則是通過運(yùn)算模塊完成二次多項(xiàng)式的運(yùn)算,得到最后逼近的結(jié)果,一般的設(shè)計(jì)會用到平方運(yùn)算器,乘法運(yùn)算器和加法器,因此具備較大的硬件開銷。
發(fā)明內(nèi)容
由于硬件設(shè)計(jì)對于面積的要求十分苛刻,本發(fā)明提出了一種低成本的單精度初等函數(shù)運(yùn)算加速器,利用結(jié)構(gòu)上的復(fù)用,有效減少用于計(jì)算的硬件面積。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案為:
一種低成本的單精度初等函數(shù)運(yùn)算加速器,誤差可以滿足單精度浮點(diǎn)數(shù)的要求,主要包含以下兩個(gè)部分:ROM存儲模塊作為進(jìn)行系數(shù)查找的查找表,運(yùn)算模塊輸出二次多項(xiàng)式的運(yùn)算結(jié)果。所使用的主要運(yùn)算模塊完成的是二次多項(xiàng)式C0+C1X+C2X2的運(yùn)算,系數(shù)CO,Cl和C2值跟據(jù)輸入的地址從三個(gè)查找表輸出,在硬件實(shí)現(xiàn)運(yùn)算電路的過程中二次多項(xiàng)式的形式變?yōu)镃0+(C1+C2X)X,省去了平方運(yùn)算模塊。進(jìn)一步,由于只需要進(jìn)行一種運(yùn)算乘加,可以利用結(jié)構(gòu)的復(fù)用來完成,該結(jié)構(gòu)由一個(gè)用于進(jìn)行乘加運(yùn)算的乘加模塊,兩個(gè)用于選擇乘加兩次運(yùn)算時(shí)不同的輸入值的選擇器,一個(gè)用于控制運(yùn)算的控制器和一個(gè)用于優(yōu)化乘法運(yùn)算結(jié)構(gòu)的Booth編碼模塊組合。更進(jìn)一步,控制邏輯需要將第一次乘加的結(jié)果回饋上去,作為下次乘加運(yùn)算的輸入。因此控制的任務(wù)分為兩步,開始時(shí),控制器發(fā)出選擇信號使得選擇器I選通C2,選擇器2選通Cl。經(jīng)過一個(gè)時(shí)鐘周期,得到第一次乘累加結(jié)果的寄存輸出之后,控制器發(fā)出選擇信號使得選擇器I選通第一次乘累加的結(jié)果,選擇器2選通CO。最核心的運(yùn)算單元乘加結(jié)構(gòu),乘法部分主要將Booth編碼后生成的部分積進(jìn)行相力口,通過華萊士樹優(yōu)化結(jié)構(gòu),縮短整個(gè)運(yùn)算的延遲。同時(shí)將乘加中的加數(shù),作為特殊的一個(gè)部分積插入到華萊士的第二層。進(jìn)一步,由于本發(fā)明是針對單精度浮點(diǎn)數(shù)據(jù),誤差只需要控制在小數(shù)點(diǎn)后23位(二進(jìn)制)。因此加速器的輸出值并不需要全精度的加運(yùn)算結(jié)果,對于華萊士樹只截取2_3°前部分的數(shù)據(jù),可以有效的減少這部分運(yùn)算電路的面積,所帶來的誤差可以通過適當(dāng)增加查找表中的存儲系數(shù)位寬彌補(bǔ),所帶來的硬件代價(jià)相對來說十分小。采用本發(fā)明的技術(shù)結(jié)構(gòu),大量的減少了完成二次多項(xiàng)式運(yùn)算部分帶來的硬件開銷,有效的節(jié)省了成本。
圖1是分段二次插值逼近原函數(shù)的原理 圖2是本發(fā)明初等函數(shù)運(yùn)算加速器的整體框 圖3是本發(fā)明加速器的原理 圖4是本發(fā)明的乘加模塊的華萊士樹結(jié)構(gòu) 圖5是本發(fā)明對部分積數(shù)據(jù)截取示意圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。參照圖f圖5,一種低成本的單精度初等函數(shù)運(yùn)算加速器,主要利用分段二次插值法,完成初等函數(shù)的逼近,達(dá)到單精度浮點(diǎn)數(shù)據(jù)的精度要求(見圖1)。主要由ROM存儲模塊與二次項(xiàng)式運(yùn)算電路兩大部分組成(見圖2)。對于完成特定函數(shù)f (X)的加速,首先需要通過輸入地址X從ROM存儲模塊中找到對應(yīng)的系數(shù)值,單精度浮點(diǎn)數(shù)輸入數(shù)據(jù)X是其浮點(diǎn)數(shù)的尾數(shù)部分,總共有23位,高7位輸入數(shù)據(jù)Xl作為分段區(qū)間標(biāo)識選擇特定分段中零次項(xiàng)的系數(shù)CO,一次項(xiàng)的系數(shù)Cl和二次項(xiàng)的系數(shù)C2。與此同時(shí),輸入數(shù)據(jù)的后16位經(jīng)過Booth編碼用以優(yōu)化乘法運(yùn)算(見圖3 )??刂破魍ㄟ^選擇器I和選擇器2分別選通數(shù)據(jù)C2和Cl,C2先與Booth編碼的數(shù)據(jù)產(chǎn)生9個(gè)部分積,并與Cl 一起構(gòu)建了簡化過的華萊士樹(為了節(jié)省面積,部分積被截取,見圖5),數(shù)據(jù)從華萊樹頂部流到華萊樹的底部,最后通過一個(gè)全加器得到最后的乘加結(jié)果(見圖4)。在完成第一次乘加運(yùn)算C1+C2X之后,控制器通過選擇器I和選擇器2分別選通第一次乘加后的數(shù)據(jù)和CO。第一次乘加后的數(shù)據(jù)和CO以及Booth編碼的數(shù)據(jù)利用相同的電路結(jié)構(gòu)再進(jìn)行一次乘加運(yùn)算C0+(C1+C2X)X,由此輸出最終的初等函數(shù)值,完成整個(gè)加速過程。最后的數(shù)據(jù)的滿足單精度浮點(diǎn)數(shù)的要求,可以精確到小數(shù)點(diǎn)后23位。上述實(shí)施例用來解釋說明本發(fā)明,而不是對本發(fā)明進(jìn)行限制,在本發(fā)明的精神和權(quán)利要求的保護(hù)范圍內(nèi),對本發(fā)明做出的任何修改和改變,都落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種低成本的單精度初等函數(shù)運(yùn)算加速器,包括ROM存儲模塊以及二次多項(xiàng)式運(yùn)算模塊,其特征在于:所述ROM存儲模塊包含三個(gè)查找表,根據(jù)輸入的地址數(shù)據(jù)得到對應(yīng)的系數(shù);所述二次多項(xiàng)式運(yùn)算模塊,根據(jù)輸入的數(shù)據(jù)輸出所要求的初等函數(shù)的值;所述的二次多項(xiàng)式運(yùn)算模塊通過結(jié)構(gòu)的復(fù)用來完成運(yùn)算,其硬件模塊包含一個(gè)Booth編碼模塊,一個(gè)乘加模塊,兩個(gè)選擇器和一個(gè)控制器。
2.如權(quán)利要求1所述的一種低成本的單精度初等函數(shù)運(yùn)算加速器,其特征在于:二次多項(xiàng)式運(yùn)算模塊中的控制器通過控制乘加模塊,將第一次乘加結(jié)果作為第二次乘加運(yùn)算的輸入,控制整個(gè)二次多項(xiàng)式運(yùn)算模塊一共完成兩次乘加運(yùn)算,并得到最后的結(jié)果。
3.如權(quán)利要求1所述的一種低成本的單精度初等函數(shù)運(yùn)算加速器,其特征在于:二次多項(xiàng)式計(jì)算模塊中的乘加模塊有三個(gè)輸入口,其中兩個(gè)來自選擇器的輸出,一個(gè)來自Booth編碼模塊的輸出;乘加模塊有一個(gè)輸出口,除了作為最后的輸出結(jié)果外,還作為第二次乘加的輸入之一與其中一個(gè)選擇器相連。
4.如權(quán)利要求1所述的一種低成本的單精度初等函數(shù)運(yùn)算加速器,其特征在于:二次多項(xiàng)式計(jì)算模塊中的乘加模塊,主要的作用是生成部分積,構(gòu)成華萊士樹,進(jìn)行乘加運(yùn)算;部分積的數(shù)據(jù)并不完整,截去了不必要的硬件邏輯,只取了一部分作為乘加運(yùn)算的硬件結(jié)構(gòu)。
全文摘要
本發(fā)明公開了一種低成本的單精度初等函數(shù)運(yùn)算加速器,它是一種能夠?qū)崿F(xiàn)倒數(shù)、均方根、均方根倒數(shù)、指數(shù)、三角函數(shù)等多種函數(shù)運(yùn)算的低成本電路結(jié)構(gòu)。加速器首先通過輸入的地址找到對應(yīng)的系數(shù),再通過二次多項(xiàng)式運(yùn)算模塊輸出最終的初等函數(shù)值,并且本發(fā)明在二次多項(xiàng)式運(yùn)算模塊中采用了復(fù)用乘累加結(jié)構(gòu),可以有效的減少運(yùn)算部分的硬件面積。
文檔編號G06F17/10GK103176948SQ20131006744
公開日2013年6月26日 申請日期2013年3月4日 優(yōu)先權(quán)日2013年3月4日
發(fā)明者沈海斌, 牛濤, 解志超 申請人:浙江大學(xué)