定點(diǎn)處理器及其防溢方法
【專利摘要】本發(fā)明涉及定點(diǎn)處理器及其防溢方法,定點(diǎn)處理器包括用于定點(diǎn)數(shù)加、減、乘、除單元、移位單元的運(yùn)算模塊;本發(fā)明的不定長(zhǎng)浮點(diǎn)數(shù)用指數(shù)部分和尾數(shù)部分兩個(gè)定點(diǎn)數(shù)表示,數(shù)據(jù)范圍較定點(diǎn)數(shù)大大增加,若指數(shù)部分用32位表示,其范圍遠(yuǎn)大于雙精度浮點(diǎn)數(shù),定點(diǎn)處理器處理時(shí)不用考慮乘法運(yùn)算數(shù)據(jù)溢出問題;尾數(shù)部分長(zhǎng)度不確定,定點(diǎn)數(shù)據(jù)可以快速轉(zhuǎn)化為不定長(zhǎng)浮點(diǎn)數(shù);乘數(shù)和除數(shù)保持定點(diǎn)格式無需轉(zhuǎn)換,提高了運(yùn)算效率;基于模型設(shè)計(jì)時(shí),只需增加不定長(zhǎng)浮點(diǎn)數(shù)與定點(diǎn)數(shù)之間轉(zhuǎn)換及不定長(zhǎng)浮點(diǎn)數(shù)的加減乘除運(yùn)算模塊即可實(shí)現(xiàn)無溢出、無需定標(biāo)的模型。
【專利說明】定點(diǎn)處理器及其防溢方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)【技術(shù)領(lǐng)域】,涉及一種定點(diǎn)處理器及其防溢方法。
【背景技術(shù)】
[0002]單片機(jī)具有體積小、控制功能強(qiáng)、功耗低、環(huán)境適應(yīng)能力強(qiáng)、擴(kuò)展靈活和使用方便等優(yōu)點(diǎn),在工業(yè)控制、家用電器、汽車電子等領(lǐng)域均有應(yīng)用。其中定點(diǎn)單片機(jī)由于成本優(yōu)勢(shì),應(yīng)用更為廣泛。一般定點(diǎn)數(shù)最大為32位,表示數(shù)據(jù)范圍為O?Oxffffffff,且不能表示小數(shù),定點(diǎn)處理器進(jìn)行運(yùn)算時(shí)容易產(chǎn)生數(shù)據(jù)溢出問題,需要設(shè)計(jì)人員根據(jù)經(jīng)驗(yàn)調(diào)整數(shù)據(jù)類型及運(yùn)算順序,工作量大且容易出錯(cuò);尤其是基于模型的設(shè)計(jì),建模人員一般不了解底層運(yùn)算,創(chuàng)建定點(diǎn)模型存在很大困難。一般定點(diǎn)處理器只能表示32位以內(nèi)的數(shù),32位數(shù)再乘以大于I的數(shù)即溢出,被除數(shù)小于除數(shù)時(shí)結(jié)果為0,再乘以任意數(shù)結(jié)果均為零,不定長(zhǎng)浮點(diǎn)數(shù)可以有效解決類似問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是提供一種定點(diǎn)處理器及其防溢方法,以解決現(xiàn)有定點(diǎn)處理器進(jìn)行運(yùn)算時(shí)容易產(chǎn)生數(shù)據(jù)溢出的問題。
[0004]為實(shí)現(xiàn)上述目的,本發(fā)明的定點(diǎn)處理器包括:
[0005]轉(zhuǎn)換模塊,包括定點(diǎn)數(shù)轉(zhuǎn)不定長(zhǎng)浮點(diǎn)數(shù)和不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)定點(diǎn)數(shù)單元,所述不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)部分采用不定長(zhǎng)格式;
[0006]運(yùn)算模塊,包括加、減、乘、除法單元和移位單元,所述乘法單元進(jìn)行處理時(shí)先將被乘數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),該不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)與乘數(shù)相乘;所述除法單元進(jìn)行處理時(shí)先將被除數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),尾數(shù)左移12位再除;所述移位單元對(duì)加、減、乘、除法單元的運(yùn)算結(jié)果的位數(shù)進(jìn)行相應(yīng)的移位,移位完成后將結(jié)果輸入給轉(zhuǎn)換模塊將不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù)。
[0007]所述移位單元進(jìn)行相應(yīng)的移位是指運(yùn)算結(jié)果大于28位時(shí)則右移12位,大于24位則右移8位,大于20位則右移4位,20位及以下不用處理。
[0008]本發(fā)明的定點(diǎn)處理器的防溢方法技術(shù)方案如下:當(dāng)輸入定點(diǎn)處理器的兩定點(diǎn)數(shù)進(jìn)行乘法運(yùn)算時(shí),先將被乘數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),該不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)與乘數(shù)相乘;當(dāng)兩定點(diǎn)數(shù)進(jìn)行除法運(yùn)算時(shí),先將被除數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),然后將尾數(shù)左移12位再除;以上乘、除運(yùn)算結(jié)果大于28位時(shí)則右移12位,大于24位則右移8位,大于20位則右移4位,20位及以下不用處理,移位數(shù)在指數(shù)部分做相應(yīng)調(diào)整,運(yùn)算結(jié)束后將不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù);所述不定長(zhǎng)浮點(diǎn)數(shù)由偏置指數(shù)、小于等于20位的二進(jìn)制尾數(shù)和I位符號(hào)位三部分組成,指數(shù)部分定義同IEEE單精度浮點(diǎn)數(shù)格式,尾數(shù)部分占用20位,有效位長(zhǎng)度從I到20可變。
[0009]本發(fā)明的定點(diǎn)處理器及其防溢方法中不定長(zhǎng)浮點(diǎn)數(shù)用指數(shù)部分和尾數(shù)部分兩個(gè)定點(diǎn)數(shù)表示,數(shù)據(jù)范圍較定點(diǎn)數(shù)大大增加,若指數(shù)部分用32位表示,其范圍遠(yuǎn)大于雙精度浮點(diǎn)數(shù),定點(diǎn)處理器處理時(shí)不用考慮乘法運(yùn)算數(shù)據(jù)溢出問題;尾數(shù)部分長(zhǎng)度不確定,定點(diǎn)數(shù)據(jù)可以快速轉(zhuǎn)化為不定長(zhǎng)浮點(diǎn)數(shù);乘數(shù)和除數(shù)保持定點(diǎn)格式無需轉(zhuǎn)換,提高了運(yùn)算效率;基于模型設(shè)計(jì)時(shí),只需增加不定長(zhǎng)浮點(diǎn)數(shù)與定點(diǎn)數(shù)之間轉(zhuǎn)換及不定長(zhǎng)浮點(diǎn)數(shù)的加減乘除運(yùn)算模塊即可實(shí)現(xiàn)無溢出、無需定標(biāo)的模型。
【專利附圖】
【附圖說明】
[0010]圖1是本發(fā)明方法實(shí)施例的定點(diǎn)數(shù)轉(zhuǎn)不定長(zhǎng)浮點(diǎn)數(shù)流程圖;
[0011]圖2是本發(fā)明方法實(shí)施例的不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)定點(diǎn)數(shù)流程圖;
[0012]圖3是本發(fā)明方法實(shí)施例的不定長(zhǎng)浮點(diǎn)數(shù)乘法流程圖;
[0013]圖4是本發(fā)明方法實(shí)施例的不定長(zhǎng)浮點(diǎn)數(shù)除法流程圖。
【具體實(shí)施方式】
[0014]定點(diǎn)處理器包括轉(zhuǎn)換模塊和運(yùn)算模塊。轉(zhuǎn)換模塊包括定點(diǎn)數(shù)轉(zhuǎn)不定長(zhǎng)浮點(diǎn)數(shù)和不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)定點(diǎn)數(shù)單元,不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)部分采用不定長(zhǎng)格式。運(yùn)算模塊包括加、減、乘、除法單元和移位單元,乘法單元進(jìn)行處理時(shí)先將被乘數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),該不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)與乘數(shù)相乘;除法單元進(jìn)行處理時(shí)先將被除數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),尾數(shù)先左移12位再除;移位單元對(duì)加、減、乘、除法單元的運(yùn)算結(jié)果的位數(shù)進(jìn)行相應(yīng)的移位,移位完成后將結(jié)果輸入給轉(zhuǎn)換模塊將不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù);移位單元進(jìn)行相應(yīng)的移位是指運(yùn)算結(jié)果大于28位時(shí)則右移12位,大于24位則右移8位,大于20位則右移4位,20位及以下不用處理。
[0015]不定長(zhǎng)浮點(diǎn)數(shù)數(shù)據(jù)由三部分組成:20位(二進(jìn)制)尾數(shù)M、8位偏置指數(shù)E和I位符號(hào)位,這些字段可以分開存放。實(shí)際工程計(jì)算中物理量一般為正值,因此以下默認(rèn)為正,并且為適應(yīng)定點(diǎn)處理器運(yùn)算,下文不再考慮符號(hào)位,指數(shù)部分用獨(dú)立的數(shù)據(jù)表示并且不局限于8位,最聞可達(dá)32位。
[0016]該浮點(diǎn)數(shù)指數(shù)部分定義同IEEE單精度浮點(diǎn)數(shù)格式;不同于單精度浮點(diǎn)數(shù),不定長(zhǎng)浮點(diǎn)數(shù)尾數(shù)部分占用20位,并且有效位長(zhǎng)度從I到20可變;不定長(zhǎng)浮點(diǎn)數(shù)只作為被乘數(shù)或被除數(shù),可與定點(diǎn)數(shù)直接進(jìn)行計(jì)算。乘法時(shí)尾數(shù)部分與乘數(shù)相乘,除法運(yùn)算時(shí),尾數(shù)先左移12位再除,以上乘、除法運(yùn)算后有效值大于28位則右移12位,大于24位則右移8位,大于20位則右移4位,20位及以下不用處理,移動(dòng)位數(shù)在指數(shù)部分做相應(yīng)調(diào)整,乘數(shù)和除數(shù)應(yīng)小于4096。加減運(yùn)算時(shí)可以轉(zhuǎn)為定點(diǎn)數(shù)后進(jìn)行。
[0017]如圖1所示為定點(diǎn)數(shù)據(jù)a轉(zhuǎn)換為尾數(shù)為m指數(shù)為e的不定長(zhǎng)浮點(diǎn)數(shù)流程,圖2所示為尾數(shù)為m指數(shù)為e的不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)化為定點(diǎn)數(shù)的流程;圖3所示為尾數(shù)為m指數(shù)為e的不定長(zhǎng)浮點(diǎn)數(shù)乘以定點(diǎn)數(shù)據(jù)a的流程;圖4所示為尾數(shù)為m指數(shù)為e的不定長(zhǎng)浮點(diǎn)數(shù)除以定點(diǎn)數(shù)據(jù)a的流程。
[0018]以0xl000000*0xfff/0xl0000為例,正確結(jié)果應(yīng)為OxfffOO,若直接用定點(diǎn)計(jì)算0xl000000*0xfff則高位溢出,運(yùn)算結(jié)果為OxffOO,若先計(jì)算0xfff/0xl0000則最終為0,以上均不正確。采用不定長(zhǎng)浮點(diǎn)格式時(shí)0x1000000可用尾數(shù)0x10000和指數(shù)8表示,乘以O(shè)xfff后尾數(shù)為OxfffOOOO指數(shù)為8,再除以0x10000尾數(shù)為Oxfff指數(shù)為8,轉(zhuǎn)換為定點(diǎn)數(shù)即OxfffOO,結(jié)果正確,避免了定點(diǎn)乘法高位溢出或被除數(shù)不夠除造成的運(yùn)算錯(cuò)誤。
[0019]最后所應(yīng)說明的是:以上實(shí)施例僅用以說明而非限定本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解;依然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
【權(quán)利要求】
1.一種定點(diǎn)處理器,其特征在于,包括: 轉(zhuǎn)換模塊,包括定點(diǎn)數(shù)轉(zhuǎn)不定長(zhǎng)浮點(diǎn)數(shù)和不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)定點(diǎn)數(shù)單元,所述不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)部分采用不定長(zhǎng)格式; 運(yùn)算模塊,包括加、減、乘、除法單元和移位單元,所述乘法單元進(jìn)行處理時(shí)先將被乘數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),該不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)與乘數(shù)相乘;所述除法單元進(jìn)行處理時(shí)先將被除數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),尾數(shù)左移12位再除;所述移位單元對(duì)加、減、乘、除法單元的運(yùn)算結(jié)果的位數(shù)進(jìn)行相應(yīng)的移位,移位完成后將結(jié)果輸入給轉(zhuǎn)換模塊將不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù)。
2.根據(jù)權(quán)利要求1所述的定點(diǎn)處理器,其特征在于,所述移位單元進(jìn)行相應(yīng)的移位是指運(yùn)算結(jié)果大于28位時(shí)則右移12位,大于24位則右移8位,大于20位則右移4位,20位及以下不用處理。
3.一種定點(diǎn)處理器的防溢方法,其特征在于,當(dāng)輸入定點(diǎn)處理器的兩定點(diǎn)數(shù)進(jìn)行乘法運(yùn)算時(shí),先將被乘數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),該不定長(zhǎng)浮點(diǎn)數(shù)的尾數(shù)與乘數(shù)相乘;當(dāng)兩定點(diǎn)數(shù)進(jìn)行除法運(yùn)算時(shí),先將被除數(shù)轉(zhuǎn)換為不定長(zhǎng)浮點(diǎn)數(shù),然后將尾數(shù)左移12位再除;以上乘、除運(yùn)算結(jié)果大于28位時(shí)則右移12位,大于24位則右移8位,大于20位則右移4位,20位及以下不用處理,移位數(shù)在指數(shù)部分做相應(yīng)調(diào)整,運(yùn)算結(jié)束后將不定長(zhǎng)浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù);所述不定長(zhǎng)浮點(diǎn)數(shù)由偏置指數(shù)、小于等于20位的二進(jìn)制尾數(shù)和I位符號(hào)位三部分組成,指數(shù)部分定義同IEEE單精度浮點(diǎn)數(shù)格式,尾數(shù)部分占用20位,有效位長(zhǎng)度從I到20可變。
【文檔編號(hào)】G06F7/48GK104166535SQ201310307138
【公開日】2014年11月26日 申請(qǐng)日期:2013年7月19日 優(yōu)先權(quán)日:2013年7月19日
【發(fā)明者】王永秋, 郭鑫, 李鈺瑞, 岳淑彪, 蘇常軍, 李瑞苛 申請(qǐng)人:鄭州宇通客車股份有限公司