一種浮點處理方法及浮點處理器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)字信號處理領(lǐng)域,尤其涉及一種浮點處理方法及浮點處理器。
【背景技術(shù)】
[0002]在無線通信與高性能計算等領(lǐng)域中,由于浮點數(shù)能夠提供較大的數(shù)據(jù)表示范圍和較高的數(shù)據(jù)計算精度,浮點運算中高速低延遲的浮點乘加器已經(jīng)成為一項關(guān)鍵技術(shù),其運算能力已經(jīng)成為衡量數(shù)字信號處理器性能指標(biāo)的一個重要特征,它對于芯片的性能、面積和功耗具有重要的影響,因此對浮點乘加器的研宄就顯得非常重要。
[0003]而現(xiàn)有的雙精度浮點乘加結(jié)構(gòu)存在以下問題:
[0004]1、只能處理一個結(jié)果判斷,無法處理兩個單精度乘法結(jié)果的例外判斷
[0005]2、只有一個161位加法器,無法滿足雙單精度指令的設(shè)計要求
[0006]3、無法處理指數(shù)的階差計算。
[0007]因此,迫切需要一種新型的雙精度浮點乘加結(jié)構(gòu)以解決上述問題。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提供一種浮點處理方法及浮點處理器,以解決上述問題。
[0009]本發(fā)明提供一種浮點處理方法。上述方法包括以下步驟:各個對階移位器接收到指數(shù)處理模塊對源操作數(shù)分離出的指數(shù)進(jìn)行處理的結(jié)果后,進(jìn)行尾數(shù)對階移位并將對階移位結(jié)果輸出至各個復(fù)合加法器;同時,乘法器將單精度乘法信息輸入尾加法器,獲取單精度乘法結(jié)果;
[0010]所述復(fù)合加法器完成浮點尾數(shù)對階后的加法計算后,輸入移位器進(jìn)行規(guī)格化移位并對規(guī)格化移位結(jié)果進(jìn)行處理后輸出,同時,乘法器根據(jù)所述單精度乘法結(jié)果,獲取浮點雙精度乘法結(jié)果后,進(jìn)行乘法結(jié)果旁路輸出。
[0011]本發(fā)明還提供一種浮點處理器,包括對階移位器、復(fù)合加法器、乘法器、指數(shù)處理器;其中,所述指數(shù)處理器通過所述對階移位器與所述復(fù)合加法器相連;所述指數(shù)處理器與所述乘法器直接相連;
[0012]所述指數(shù)處理器,用于接收源操作數(shù)分離出來的指數(shù)后,若為浮點乘法、乘加、復(fù)數(shù)或點積指令,則計算出乘法結(jié)果的指數(shù)并完成指數(shù)階差的計算;
[0013]若為浮點加法指令,則計算出結(jié)果指數(shù)值和對階移位量并將分離出的尾數(shù)值送入乘法器進(jìn)行乘法運算;
[0014]所述乘法器,用于將單精度乘法信息輸入尾加法器,通過所述尾加法器獲取單精度乘法結(jié)果;還用于根據(jù)單精度乘法結(jié)果,獲取浮點雙精度乘法結(jié)果后,進(jìn)行乘法結(jié)果旁路輸出;
[0015]所述各個對階移位器,用于接收指數(shù)處理器對源操作數(shù)分離出的指數(shù)進(jìn)行處理的結(jié)果后,進(jìn)行尾數(shù)對階移位并將對階移位結(jié)果輸出至各個復(fù)合加法器;
[0016]所述復(fù)合加法器,用于完成浮點尾數(shù)對階后的加法計算后,輸入移位器進(jìn)行規(guī)格化移位并將規(guī)格化移位結(jié)果進(jìn)行處理后輸出。
[0017]通過以下方案:各個對階移位器接收到指數(shù)處理模塊對源操作數(shù)分離出的指數(shù)進(jìn)行處理的結(jié)果后,進(jìn)行尾數(shù)對階移位并將對階移位結(jié)果輸出至各個復(fù)合加法器;同時,乘法器將單精度乘法信息輸入尾加法器,獲取單精度乘法結(jié)果;
[0018]所述復(fù)合加法器完成浮點尾數(shù)對階后的加法計算后,輸入移位器進(jìn)行規(guī)格化移位并對規(guī)格化移位結(jié)果進(jìn)行處理后輸出,同時,乘法器根據(jù)所述單精度乘法結(jié)果,獲取浮點雙精度乘法結(jié)果后,進(jìn)行乘法結(jié)果旁路輸出;不僅實現(xiàn)了同時處理兩個單精度乘法結(jié)果的例外判斷以及指數(shù)的階差計算,而且還滿足了雙單精度指令的設(shè)計要求。
[0019]通過以下方案:所述復(fù)合加法器完成浮點尾數(shù)對階后的加法計算后,輸入移位器進(jìn)行規(guī)格化移位并將規(guī)格化移位結(jié)果分別發(fā)送至尾數(shù)舍入模塊、指數(shù)修正模塊進(jìn)行處理,大大提升了浮點精度。
[0020]通過以下方案:所述復(fù)合加法器包括74位復(fù)合加法器,98位復(fù)合加法器;所述對階移位器包括32位對階移位器、74位對階移位器、98位對階移位器,提高了浮點加減法指令的執(zhí)行效率。
【附圖說明】
[0021]此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0022]圖1所示為本發(fā)明實施例1的浮點處理器整體結(jié)構(gòu)圖;
[0023]圖2所示為本發(fā)明實施例2的浮點處理方法流程圖;
[0024]圖3所示為本發(fā)明實施例3的雙單精度浮點乘加數(shù)據(jù)通路結(jié)構(gòu)圖;
[0025]圖4所示為本發(fā)明實施例4的浮點加法數(shù)據(jù)通路結(jié)構(gòu)圖;
[0026]圖5所示為本發(fā)明實施例5的復(fù)數(shù)乘法與點積數(shù)據(jù)通路結(jié)構(gòu)圖;
[0027]圖6所示為本發(fā)明實施例7的浮點處理器又一結(jié)構(gòu)圖;
[0028]圖7所示為本發(fā)明實施例7的浮點處理器又一結(jié)構(gòu)圖。
【具體實施方式】
[0029]下文中將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0030]圖1所示為本發(fā)明實施例1的浮點處理器整體結(jié)構(gòu)圖,如圖1所示主要包括六級即 E1、E2、E3、E4、E5、E6。
[0031]第一級El:主要包括源操作數(shù)例外判斷模塊、浮點控制寄存器FCR、指數(shù)處理模塊、兩個32位對階移位器、64*64位乘法器;
[0032]所示源操作數(shù)例外判斷模塊,用于對輸入的源操作數(shù)進(jìn)行例外判斷后將所述FCR中相應(yīng)標(biāo)志位置位;
[0033]所述指數(shù)處理模塊,用于接收源操作數(shù)分離出來的指數(shù)后,若為浮點乘法、乘加、復(fù)數(shù)或點積指令,則計算出乘法結(jié)果的指數(shù)并完成指數(shù)階差的計算;若為浮點加法指令,則計算出結(jié)果指數(shù)值和對階移位量并將分離出的尾數(shù)值送入乘法器進(jìn)行乘法運算。
[0034]通過指數(shù)處理模塊計算出階差之后,為提高浮點加減法指令的執(zhí)行效率,在第一級El中加入兩個32位的對階移位器,來實現(xiàn)雙精度浮點加減和雙單精度浮點加減的尾數(shù)對階移位操作。
[0035]所述64*64位乘法器是一個64*64位的定、浮點復(fù)用乘法器,既可以滿足定點64位乘法,也可以執(zhí)行53位浮點乘法,在第一級El中,64*64位乘法器結(jié)構(gòu)主要包括Booth編碼,通過Booth編碼產(chǎn)生33個部分積,然后利用CSA樹形結(jié)構(gòu)對部分積進(jìn)行第一級壓縮。
[0036]第二級E2:主要包括64*64位乘法器的部分積第2?3級壓縮、2個48位尾數(shù)加法器、粘接位Sticky計算和74位對階移位器
[0037]64*64位乘法器在第一級El中將部分積壓縮得到8個sum和8個carry,將其通過2級CSA4:2壓縮,可以得到兩個單精度乘法的sum和carry,將sum和carry輸入到2個尾數(shù)加法器中,可以計算出復(fù)數(shù)與點積指令中兩個單精度乘法結(jié)果。
[0038]第二級E2中的74位對階移位器,實現(xiàn)雙精度乘加指令中尾數(shù)對階的一部分對階操作,剩余對階移位在第三級E3中完成。
[0039]粘接位Sticky計算與對階移位并行執(zhí)行,這里計算出的粘接位是當(dāng)尾數(shù)移出移位器時預(yù)先計算出的粘接位,使得后面舍入位的計算效率大大提高。
[0040]第三級E3:主要包括64*64位乘法器的第四壓縮、一個106位加法器、一個98位對階移位器、2個復(fù)合加法器(98位復(fù)合加法器、74位復(fù)合加法器)的前半部分、前導(dǎo)零預(yù)測模塊。
[0041]在第四級壓縮中,2個定點32位乘法結(jié)果可以計算出來,浮點雙精度乘法也計算出來,106位加法器用來計算浮點乘法尾數(shù)求和。
[0042]98位對階移位器用來實現(xiàn)雙精度乘加中尾數(shù)對階的剩余部分,雙單精度乘加中單精度高位的尾數(shù)對階移位以及復(fù)數(shù)與點積指令的尾數(shù)對階操作。
[0043]復(fù)合加法器用來計算浮點尾數(shù)對階后的加法,前導(dǎo)零預(yù)測邏輯預(yù)編碼與尾數(shù)加法并行執(zhí)行,浮點加減法操作在這一級中進(jìn)行復(fù)用設(shè)計,將指數(shù),尾數(shù)等數(shù)據(jù)進(jìn)行選擇輸入,后面的加減操作均復(fù)用浮點乘加通路。
[0044]第四級E4:主要包括復(fù)合加法器后半部分邏輯、前導(dǎo)零預(yù)測編碼與修正數(shù)邏輯、乘法結(jié)果旁路輸出模塊(乘法結(jié)果選擇寫回)。
[0045]尾數(shù)加法通過復(fù)合加法器完成后,前導(dǎo)零預(yù)測結(jié)果與修正值并行計算出來,送入第五級E5準(zhǔn)備規(guī)格化移位。
[0046]根據(jù)第二級E2計算出來的單精度乘法結(jié)果與第三級E3計算的雙精度乘法結(jié)果,在第四級E4將乘法結(jié)果旁路輸出,提高乘法指令執(zhí)行性能。
[0047]在乘法結(jié)果旁路輸出模塊中,首先讀取FCR中所置的幾位結(jié)果標(biāo)志位,根據(jù)標(biāo)志位輸出符合IEEE754標(biāo)準(zhǔn)的浮點數(shù),然后根據(jù)結(jié)果尾數(shù)舍入與結(jié)果例外判斷處理。
[0048]第五級E5:主要包括2個50位移位器即108位移位器、尾數(shù)舍入計算模塊、符號檢測模塊、指數(shù)修正模塊。
[0049]在這一級中,各指令的規(guī)格化移位都通過復(fù)用108位移位器進(jìn)行規(guī)格化移位,包括雙精度浮點乘加,雙單精度浮點乘加,復(fù)數(shù)與點積運算,浮點加減運算。根據(jù)規(guī)格化移位量與移位后的結(jié)果尾數(shù),利用指數(shù)修正模塊得到正確的結(jié)果指數(shù),符號檢測模塊能根據(jù)第四級E4的尾數(shù)加法結(jié)果進(jìn)行結(jié)果符號計算。
[0050]第六級E6:主要包括舍入模塊、結(jié)果例外判斷模塊、結(jié)果選擇寫回模塊;舍入模塊根據(jù)舍入模式的不同以及粘接位的值計算出結(jié)果尾數(shù)是否進(jìn)行加I操作。結(jié)果尾數(shù)選擇寫回時,須先根據(jù)浮點控制寄存器中結(jié)果標(biāo)志位進(jìn)行判斷,溢出例外處理與第四級E4中乘法結(jié)果的溢出處理方式一致,待結(jié)果尾數(shù)確定后將結(jié)果選擇寫回。
[0051]圖2所示為本發(fā)明實施例2的浮點處理方法流程圖,包括以下步驟:
[0052]步驟201:源操作數(shù)例外判斷模塊、指數(shù)處理模塊分別獲取源操作數(shù)信息進(jìn)行處理;
[0053]進(jìn)一步地,源操作數(shù)例外判斷模塊接收源操作數(shù)進(jìn)行例外判斷后,將FCR中相應(yīng)標(biāo)志位置位;
[0054]進(jìn)一步地,指數(shù)處理模塊接收源操作數(shù)分離出來的指數(shù)后,若為浮點乘法、乘加、復(fù)數(shù)或點積指令,則計算出乘法結(jié)果的指數(shù)并完成指數(shù)階差的計算;
[0055]若為浮點加法指令,則計算出結(jié)果指數(shù)值和對階移位量并將分離出的尾數(shù)值送入乘法器進(jìn)行乘法運算,乘法器進(jìn)行第一級壓縮,獲取8個sum和8個carry,將其通過2級CSA4:2壓縮,得到兩個單精度乘法的sum和carry。
[0056]進(jìn)一步地,指數(shù)處理模塊計算出階差后,通過對階移位器進(jìn)行雙精度浮點加減和雙單精度浮點加減的尾數(shù)對階移位操作。
[0057]步驟202:各個對階移位器接收到所述指數(shù)處理模塊的處理結(jié)果后,進(jìn)行尾數(shù)對階移位并將對階移位結(jié)果輸出至各個復(fù)合加法器;