本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,尤其涉及一種低功耗自由指數(shù)域浮點(diǎn)數(shù)處理裝置。
背景技術(shù):
近年來,在各領(lǐng)域的應(yīng)用中對高動(dòng)態(tài)范圍的要求逐漸成為重要的一環(huán),相對于定點(diǎn)數(shù)而言,等同數(shù)據(jù)位寬的浮點(diǎn)數(shù)具有更高的動(dòng)態(tài)范圍,所以浮點(diǎn)數(shù)越發(fā)受到重視。因此,強(qiáng)大計(jì)算系統(tǒng)通常采用浮點(diǎn)數(shù)處理器作為主處理器的一部分或者作為協(xié)處理器。
浮點(diǎn)數(shù)用于近似表示某個(gè)實(shí)數(shù),其格式通常包括符號(hào)位s、指數(shù)位e和尾數(shù)位m,可表示為{s,e,m},在計(jì)算機(jī)中為了便于存儲(chǔ),浮點(diǎn)數(shù)的冪的基數(shù)為2,即浮點(diǎn)數(shù){s,e,m}=(-1)s×(1+m)×2e。
浮點(diǎn)數(shù)的精度由用于表示尾數(shù)的數(shù)據(jù)位寬界定。尾數(shù)數(shù)據(jù)位寬越大,浮點(diǎn)數(shù)的精度越高?,F(xiàn)有的通用處理器中,大多采用ieee754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)進(jìn)行加、減、乘、除運(yùn)算。在ieee754標(biāo)準(zhǔn)的32位浮點(diǎn)格式中,其具有1位符號(hào)位、8位指數(shù)位、23位尾數(shù),其中,尾數(shù)二進(jìn)制小數(shù)點(diǎn)左方的整數(shù)位是隱含的。ieee754同時(shí)還有一種更高精度、更高動(dòng)態(tài)范圍的64位格式。
然而,無論采用何種浮點(diǎn)格式,由于浮點(diǎn)數(shù)自身的特點(diǎn),決定了浮點(diǎn)數(shù)的運(yùn)算更加復(fù)雜,因此如何提高浮點(diǎn)數(shù)運(yùn)算速度并降低運(yùn)算功耗成為現(xiàn)如今硬件設(shè)計(jì)的核心問題之一。
通用處理器通常局限于單一的浮點(diǎn)數(shù)格式,固然這種格式能滿足一些應(yīng)用的精度以及動(dòng)態(tài)范圍的需求,然而其他應(yīng)用可能不需要。例如神經(jīng)網(wǎng)絡(luò)算法中,對于指數(shù)較大的浮點(diǎn)數(shù)(局部誘導(dǎo)域)所需的精度較低;而指數(shù)較小的浮點(diǎn)數(shù)(權(quán)重或者方向傳播算法中的權(quán)重變化量和梯度)則需要較高精度。因?yàn)樵谏窠?jīng)網(wǎng)絡(luò)算法中的激活函數(shù)是非線性的,如sigmoid、tanh 函數(shù),不同精度局部誘導(dǎo)域經(jīng)過激活函數(shù)作用后結(jié)果的準(zhǔn)確度差別不大,高精度的局部誘導(dǎo)域浮點(diǎn)表示將造成不必要的功耗浪費(fèi)。同樣,權(quán)重、方向傳播算法中的權(quán)重變化量和梯度則需要較高的精度,但是這類數(shù)據(jù)的是比較小,所需的動(dòng)態(tài)范圍較小,即指數(shù)較小。
cn200810216631所述的提供的浮動(dòng)精度的浮點(diǎn)數(shù)格式及其運(yùn)算方法中,浮點(diǎn)數(shù)的精度是可變的,但是其指數(shù)部分是固定不變。而且此種浮點(diǎn)數(shù)格式的數(shù)據(jù)結(jié)構(gòu)較為復(fù)雜,不利于提高浮點(diǎn)運(yùn)算速率。
cn200780006490所述的可選次精度的浮點(diǎn)數(shù)運(yùn)算器,其中,浮點(diǎn)數(shù)的格式是固定不變,提供一個(gè)過剩位移除高精度尾數(shù)部分功率,從而降低浮點(diǎn)運(yùn)算功率。然而此種方法中浮點(diǎn)數(shù)依然是采用上述的單一浮點(diǎn)數(shù)格式表示,將造成一定程度的存儲(chǔ)空間及功耗的浪費(fèi)。
技術(shù)實(shí)現(xiàn)要素:
(一)要解決的技術(shù)問題
本發(fā)明的目的在于,提供一種浮點(diǎn)數(shù)處理裝置,能夠?qū)?biāo)準(zhǔn)格式的浮點(diǎn)數(shù)的位寬進(jìn)行壓縮,生成低位寬的浮點(diǎn)數(shù),從而節(jié)省存儲(chǔ)空間,還可以降低浮點(diǎn)數(shù)運(yùn)算功耗。
(二)技術(shù)方案
本發(fā)明提供一種浮點(diǎn)數(shù)處理裝置,包括:
轉(zhuǎn)換單元,用于接收至少一個(gè)第一浮點(diǎn)數(shù),并將至少一個(gè)第一浮點(diǎn)數(shù)轉(zhuǎn)換為對應(yīng)數(shù)量的第二浮點(diǎn)數(shù),其中,每個(gè)第二浮點(diǎn)數(shù)包括1位符號(hào)位、n位指數(shù)位和c-n-1位尾數(shù)位,c、n為大于等于1的整數(shù),c為第二浮點(diǎn)數(shù)的總位數(shù),n的數(shù)值是由至少一個(gè)第一浮點(diǎn)數(shù)確定的;
運(yùn)算單元,用于對第二浮點(diǎn)數(shù)進(jìn)行運(yùn)算,得到運(yùn)算結(jié)果。
(三)有益效果
本發(fā)明對標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的位寬進(jìn)行壓縮,生成低位寬浮點(diǎn)數(shù),其中,針對不同的標(biāo)準(zhǔn)格式浮點(diǎn)數(shù),其對應(yīng)的低位寬浮點(diǎn)數(shù)中的指數(shù)位寬和尾數(shù)位寬是可變的,從而使該低位寬浮點(diǎn)數(shù)的精度和動(dòng)態(tài)范圍是可變的,該低位寬浮點(diǎn)數(shù)能夠滿足神經(jīng)網(wǎng)絡(luò)算法、圖像處理等算法的數(shù)據(jù)精度要求的同時(shí),避免了浮點(diǎn)數(shù)運(yùn)算功率的浪費(fèi)。
附圖說明
圖1是本發(fā)明實(shí)施例提供的浮點(diǎn)數(shù)處理裝器的示意圖。
圖2是本發(fā)明實(shí)施例中標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)與低位寬浮點(diǎn)數(shù)的示意圖。
具體實(shí)施方式
本發(fā)明提供一種浮點(diǎn)數(shù)處理裝置,包括轉(zhuǎn)換單元和運(yùn)算單元,轉(zhuǎn)換單元接收標(biāo)準(zhǔn)格式浮點(diǎn)數(shù),并將標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的位寬進(jìn)行壓縮,生成低位寬浮點(diǎn)數(shù),運(yùn)算單元對低位寬浮點(diǎn)數(shù)進(jìn)行運(yùn)算,得到運(yùn)算結(jié)果。本發(fā)明能根據(jù)不同的標(biāo)準(zhǔn)格式浮點(diǎn)數(shù),得到不同指數(shù)位寬的低位寬浮點(diǎn)數(shù),該低位寬浮點(diǎn)數(shù)能夠滿足神經(jīng)網(wǎng)絡(luò)算法、圖像處理等算法的數(shù)據(jù)精度要求的同時(shí),避免了浮點(diǎn)數(shù)運(yùn)算功率的浪費(fèi)。
根據(jù)本發(fā)明的一種實(shí)施方式,浮點(diǎn)數(shù)處理裝置包括:
轉(zhuǎn)換單元,用于接收一組第一浮點(diǎn)數(shù),并將該組第一浮點(diǎn)數(shù)轉(zhuǎn)換為對應(yīng)數(shù)量的第二浮點(diǎn)數(shù),其中,一組第一浮點(diǎn)數(shù)中可包括一個(gè)或一個(gè)以上的第一浮點(diǎn)數(shù),轉(zhuǎn)換后得到相同數(shù)量的第二浮點(diǎn)數(shù),每個(gè)第一浮點(diǎn)數(shù)與每個(gè)第二浮點(diǎn)數(shù)一一對應(yīng),每個(gè)所述第二浮點(diǎn)數(shù)包括1位符號(hào)位、n位指數(shù)位和c-n-1位尾數(shù)位,c、n為大于等于1的整數(shù),c為第二浮點(diǎn)數(shù)的總位數(shù),n的數(shù)值是由這組第一浮點(diǎn)數(shù)確定的;第一浮點(diǎn)數(shù)是標(biāo)準(zhǔn)格式浮點(diǎn)數(shù),第二浮點(diǎn)數(shù)是由對標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)進(jìn)行位寬壓縮后的低位寬浮點(diǎn)數(shù)。
運(yùn)算單元,用于對第二浮點(diǎn)數(shù)進(jìn)行運(yùn)算,得到運(yùn)算結(jié)果。
標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)包括1位符號(hào)位、k1位指數(shù)位和k2位尾數(shù)位,例如ieee754定義的32位標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)中,包括1位符號(hào)位、8位指數(shù)位和23位尾數(shù)位;標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的數(shù)值v1表達(dá)式為:
v1=(-1)s×(1+m)×2e,
其中,s為標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的符號(hào)位的值、e為標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的k1位指數(shù)位的值,m為標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的k2位尾數(shù)位的值;
低位寬浮點(diǎn)數(shù)中的n的數(shù)值為:
n=log2(emax-emin)/2,
其中,emax為一組標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)中e的最大值,emin為一組標(biāo)準(zhǔn) 格式浮點(diǎn)數(shù)中e的最小值;本發(fā)明浮點(diǎn)數(shù)轉(zhuǎn)換的原理是,針對一組標(biāo)準(zhǔn)格式浮點(diǎn)數(shù),其指數(shù)位的位寬是固定的,但是指數(shù)位所對應(yīng)的數(shù)值不盡相同,通過對一組標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)中指數(shù)位所對應(yīng)的數(shù)值進(jìn)行分析,得到一個(gè)相對平均的指數(shù)位數(shù)值,根據(jù)該數(shù)值至少所需的位數(shù),確定低位寬浮點(diǎn)數(shù)中指數(shù)位的位數(shù)n,根據(jù)設(shè)定的低位寬浮點(diǎn)數(shù)的總位數(shù)c和1位符號(hào)位,可知低位寬浮點(diǎn)數(shù)的尾數(shù)位為c-n-1位。
以上是對低位寬浮點(diǎn)數(shù)中指數(shù)位、尾數(shù)位的位數(shù)的劃分,然后需要確定低位寬浮點(diǎn)數(shù)中指數(shù)位、尾數(shù)位的數(shù)值。
根據(jù)本發(fā)明的一種實(shí)施方式,低位寬浮點(diǎn)數(shù)的符號(hào)位等于標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的符號(hào)位;低位寬浮點(diǎn)數(shù)的c-n-1位尾數(shù)位等于標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)k2位尾數(shù)位中的前c-n-1位;n位指數(shù)位的數(shù)值e′為:
e′=e-b+a,
其中,b為標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的指數(shù)位的偏移量,例如,ieee754標(biāo)準(zhǔn)中32位浮點(diǎn)數(shù)的偏移量為127。a為低位寬浮點(diǎn)數(shù)的指數(shù)基數(shù),其表達(dá)式為:
a=(emax+emin)/2。
根據(jù)本發(fā)明的一種實(shí)施方式,轉(zhuǎn)換單元還用于接收低位寬浮點(diǎn)數(shù),并將低位寬浮點(diǎn)數(shù)轉(zhuǎn)換為標(biāo)準(zhǔn)格式浮點(diǎn)數(shù),其中:標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的符號(hào)位等于低位寬浮點(diǎn)數(shù)的符號(hào)位;標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)k2位尾數(shù)位中的前c-n-1位等于低位寬浮點(diǎn)數(shù)的c-n-1位尾數(shù)位,后k2+1+n-c位為0;n位指數(shù)位的數(shù)值e′為:
e′=e-b+a。
根據(jù)本發(fā)明的一種實(shí)施方式,轉(zhuǎn)換單元包括第一寄存器和第二寄存器,第一寄存器用于存儲(chǔ)n的數(shù)值,第一寄存器用于存儲(chǔ)低位寬浮點(diǎn)數(shù)的指數(shù)基數(shù)a的數(shù)值。
根據(jù)本發(fā)明的一種實(shí)施方式,浮點(diǎn)數(shù)處理裝置還包括:存儲(chǔ)單元,用于存儲(chǔ)標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)和低位寬浮點(diǎn)數(shù)。其中,存儲(chǔ)單元、轉(zhuǎn)換單元、運(yùn)算單元兩兩連接,各部件中的浮點(diǎn)數(shù)均可雙向流通,需要注意的是,運(yùn)算單元只能對低位寬浮點(diǎn)數(shù)進(jìn)行運(yùn)算,故其輸入輸出的數(shù)據(jù)均是低位寬浮點(diǎn)數(shù)。
根據(jù)本發(fā)明的一種實(shí)施方式,浮點(diǎn)數(shù)處理裝置可以作為一個(gè)主處理器或協(xié)處理器,其利用一總線可與外部的其他的處理器進(jìn)行數(shù)據(jù)交互。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。
圖1是本發(fā)明實(shí)施例提供的浮點(diǎn)數(shù)處理器的示意圖,如圖1所示,浮點(diǎn)數(shù)處理器1包括編解碼組件2、浮點(diǎn)運(yùn)算邏輯3和存儲(chǔ)器(ram)4,在本實(shí)施例中,采用編解碼組件2作為轉(zhuǎn)換單元進(jìn)行浮點(diǎn)數(shù)轉(zhuǎn)換,采用浮點(diǎn)運(yùn)算邏輯3作為運(yùn)算單元進(jìn)行浮點(diǎn)數(shù)運(yùn)算,采用存儲(chǔ)器4作為存儲(chǔ)單元進(jìn)行浮點(diǎn)數(shù)存儲(chǔ)。浮點(diǎn)數(shù)處理器外部連接有一外部輸入設(shè)備5(鼠標(biāo)/鍵盤)和總線6,輸入設(shè)備5可直接向編解碼組件2輸入標(biāo)準(zhǔn)格式浮點(diǎn)數(shù),浮點(diǎn)數(shù)處理器通過總線6可以作為一個(gè)主處理器或協(xié)處理器,其利用一總線可與外部的其他的處理器進(jìn)行數(shù)據(jù)交互。
編解碼組件2包含一組配置寄存器(cfg)和一組指數(shù)基址寄存器(base)。配置寄存器(cfg)存儲(chǔ)有低位寬浮點(diǎn)數(shù)的指數(shù)位的位數(shù)n,用于界定低位寬浮點(diǎn)數(shù)的指數(shù)和尾數(shù),指數(shù)基址寄存器(base)存儲(chǔ)有低位寬浮點(diǎn)數(shù)的指數(shù)基數(shù)a的數(shù)值,編解碼組件2利用兩個(gè)寄存器中的數(shù)值,實(shí)現(xiàn)標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)和低位寬浮點(diǎn)數(shù)的編碼(標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)到低位寬浮點(diǎn)數(shù)的轉(zhuǎn)換)和解碼(低位寬浮點(diǎn)數(shù)到標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的轉(zhuǎn)換)。
浮點(diǎn)運(yùn)算邏輯3耦合到數(shù)據(jù)存儲(chǔ)器4和編解碼組件2,處理所請求的 低位寬浮點(diǎn)數(shù)。浮點(diǎn)運(yùn)算邏輯3將運(yùn)算結(jié)果輸出到編解碼組件2,編解碼組件根據(jù)所執(zhí)行的浮點(diǎn)運(yùn)算請求將結(jié)果輸出到存儲(chǔ)單元4。
本實(shí)施例在神經(jīng)網(wǎng)絡(luò)算法中將標(biāo)準(zhǔn)的32位浮點(diǎn)數(shù)轉(zhuǎn)換為16位的低位寬浮點(diǎn)數(shù)。如圖2所示,ieee754浮點(diǎn)數(shù)標(biāo)準(zhǔn)浮點(diǎn)數(shù)格式和16位寬自由指數(shù)域浮點(diǎn)數(shù)格式的對比,低位寬浮點(diǎn)數(shù)對應(yīng)的配置寄存器值為n,則該浮點(diǎn)數(shù)中指數(shù)域位寬為n,尾數(shù)位寬為15-n。
神經(jīng)網(wǎng)絡(luò)算法中,數(shù)據(jù)計(jì)算是按照不同層執(zhí)行的。在神經(jīng)網(wǎng)絡(luò)的一層中,同一類數(shù)據(jù)的動(dòng)態(tài)范圍差別不大。同時(shí),動(dòng)態(tài)范圍需求較高的數(shù)據(jù)對數(shù)據(jù)精度的要求相對較低,而精度需求較高的數(shù)據(jù)的動(dòng)態(tài)范圍需求較低。因此,采用兩組寄存器控制低位寬浮點(diǎn)數(shù)的精度和動(dòng)態(tài)范圍。例如,一組標(biāo)準(zhǔn)格式浮點(diǎn)數(shù)的指數(shù)值在[emin,emax]區(qū)間內(nèi),利用公式:n=log2(emax-emin)/2,a=(emax+emin)/2,可得到配置寄存器(cfg)的值置為n(即分割位在第15-n位),其對應(yīng)的指數(shù)基數(shù)寄存器(base)置為a。編碼時(shí),將ieee754浮點(diǎn)數(shù)的指數(shù)(減去偏移量127)加上a賦值給所述自由指數(shù)域浮點(diǎn)數(shù)的[14:15-n]位,并截取ieee754浮點(diǎn)數(shù)尾數(shù)的前15-n位賦值給低位寬浮點(diǎn)數(shù)的低15-n位,實(shí)現(xiàn)ieee754浮點(diǎn)數(shù)指數(shù)以及尾數(shù)到低位寬浮點(diǎn)數(shù)的編碼。解碼時(shí),將ieee754浮點(diǎn)數(shù)的[14:15-n]減去a再加上127作為ieee754浮點(diǎn)數(shù)的指數(shù),并在低位寬浮點(diǎn)數(shù)的低15-n位后補(bǔ)充n+7個(gè)0賦值給ieee754浮點(diǎn)數(shù)的尾數(shù),實(shí)現(xiàn)低位寬浮點(diǎn)數(shù)到ieee754浮點(diǎn)數(shù)的解碼。
以上所述的具體實(shí)施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。