<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 利用重疊掃描方法改進(jìn)單片機乘法運算

利用重疊掃描方法改進(jìn)單片機乘法運算

作者: 時(shí)間:2012-02-08 來(lái)源:網(wǎng)絡(luò ) 收藏

引 言

本文引用地址:http://dyxdggzs.com/article/172157.htm

1946年,第一臺電子計算機的誕生開(kāi)創(chuàng )了計算機發(fā)展的新紀元。隨著(zhù)計算機科學(xué)技術(shù)的迅速發(fā)展,計算機的應用領(lǐng)域越來(lái)越廣泛,并逐漸形成科學(xué)發(fā)展中的一個(gè)新的分支。在計算機的主要工作中,處理大量的數據是其一項基本功能;因而數據是必不可少的。于是人們設法在硬件設計與數據結構方面努力進(jìn)行工作[1],使計算機的速度不斷提高。

十幾年前,單片微型機脫穎而出,逐漸應用于微型計算機的各個(gè)領(lǐng)域,它不僅適用于一般的自動(dòng)控  制,而且還可以承擔高精度的數據處理工作。誠然,在許多系統中近來(lái)采用DSP來(lái)提高微機的數據處理能力,以便完成復雜的圖像處理、音頻處理、網(wǎng)絡(luò )通訊等功能,而且是一個(gè)趨勢;但在這些系統中仍不可忽視程序的執行速度,因為好的算法可以大大提高程序的執行效率[2]。同時(shí),考慮到目前8BITMCU的主導地位及某些系統不適合配置DSP來(lái)進(jìn)行數據處理[3]。因此,這里仍有必要對高精度高速度的浮點(diǎn)多字節進(jìn)行進(jìn)一步研究。

1 浮點(diǎn)多字節標準

普通的計算機都采用標準的加法-移位技術(shù)來(lái)實(shí)現,Mowle曾經(jīng)對這些基本的算法和問(wèn)題作了詳細的描述[4]。對于二進(jìn)制數A,B來(lái)說(shuō),設其數值為AV,BV

53.jpg

由此原始矩陣乘法產(chǎn)生了標準的移位加算法[5,6]。一般的標準浮點(diǎn)乘法運算分為階碼運算與尾數運算兩部分,其主要部分為尾數運算。標準尾數相乘是采用邊乘邊相加的辦法(即加法-移位)來(lái)實(shí)現的,即乘數向左移位,產(chǎn)生中間結果,中間結果被加至積區的;在整個(gè)過(guò)程中,積也與乘數一起移位。此過(guò)程如圖1所示。上述對于兩個(gè)n位二進(jìn)制尾數的相乘結果,即乘積為2n位,也就是部分積要點(diǎn)n位,在運算過(guò)程中,這2n字節都有可能要有相加的操作,需2n個(gè)字節加法器。對于標準算法,相當于進(jìn)行了8n次2n字節的移位,還有55.jpg次2n字節的加法。其中Pj(bj)為其每個(gè)bit位的布爾取值,其為1則取1,反之則為0。

56.jpg

為了節省運算時(shí)間,標準乘法應用標準右移乘法以便減少加法器的數量,有關(guān)這方面的具體論述請參見(jiàn)文[2]。

2 乘法的基本原理

在執行乘法指令時(shí),如果每個(gè)周期所檢查的乘數位多于一位,乘法的速度便可以加快。例如,每次檢查二位,那么加法移位周期的總數就可以減半。這些逐次的位組可以是分離的,也可以是的。這里先簡(jiǎn)述一下分離的原理。對于乘數來(lái)講是以字節為單位的,其字長(cháng)按二進(jìn)制BIT來(lái)計是偶數,設被乘數A=(AX),乘數B=(MR);則在掃描了最低一對乘數位(MR1,MR0)后,有四種可能的動(dòng)作,如圖2所示。對于m=(MR1,MR0)2來(lái)說(shuō),被乘數A的倍數m×A被加到當前的部分乘積上,用來(lái)生成下一個(gè)部分積。上述原理可以推廣到任意大小的掃描位組,其具體實(shí)現方法和分析結果請參見(jiàn)文[2],這里不再敘述。

57.jpg

以上所描述的是分離掃描的情況,下面再介紹多位掃描的情況。一般在乘數中bj為0的個(gè)數越多,則程序運行的時(shí)候對為0的情況僅僅是移位越過(guò),而不用作加法的運算,在此種情況下的運算相對加快。因此希望對乘數的bj能否進(jìn)行適當的操作,使這之在bj為1的區域也能使運算時(shí)間減少。

現考慮乘數中有一串k個(gè)連續的1,如下
  列的位置…,i+k,i+k-1,i+k-2,…,i,i-1,…
  列的內容…,0,1,1,…,1,0,… (2) 

58.jpg

按常規,在移位加時(shí),被乘數A與部分積要進(jìn)行k次加法操作,但是存在
2i+k-2i=2i+k-1+2i+k-2+…+2i+1+2i  (3)

因此可以用下面的數符串來(lái)代替k個(gè)連續的1
  列的位置…,i+k,i+k-1,i+k-2,…,i,i-1,…
列的內容…,1,0,0,…,-1,0,… (4)

上面的-1表示執行一次減法。這種乘法再編碼的方法,只要在數字串開(kāi)始時(shí)作一次加法,結束時(shí)作一次減法,使這能夠代替原來(lái)的k次連續加法。顯然,當k很大時(shí),能節省大量的加法時(shí)間。

為了方便掃描,乘數位仍按二位一組分成許多組,但一次掃描三位,二位來(lái)自現在的組,第三位來(lái)自下一次高次組的低位,實(shí)際上每一組的低位被檢測了二次。為了與右移算法取得一致,假定掃描乘數從右端到左端,和非重疊兩種掃描模式表示見(jiàn)圖3。

59.jpg

設掃描組XR=[Xi+1,Xi]2;下一掃描組XR′=[Xi+3,Xi+2]2;每三位一組檢測后的動(dòng)作說(shuō)明見(jiàn)圖4。其指出了每個(gè)機器周期或執行一次單純的移位,或者執行一次加法,或者執行一次減法,這里只需要倍數2A或4A。當下一對的低次位xi+2為0時(shí),三位中最左邊的1經(jīng)常指示一串1的左端(結束)。依式(3)所描述的特性,在具有非零的乘數位時(shí)應該執行加法。另一方面,當xi+2=1 時(shí),即意味著(zhù)是一串1的右端(開(kāi)始)或中心,按照串特性需要作一次減法,在每個(gè)加法周期中,部分乘積每次要右移二位。這就使部分乘積比它應該具有的數值少了4倍被乘數(-4A)。這可以用在下一步掃描中加上所需被乘數的倍數與4倍數的差值來(lái)校正。倍數2A或4A進(jìn)入加法器的地點(diǎn)是重要的。如果一對的尾數是 0,那么所得到的部分乘積是正確的,而且下一次的操作是一次加法。如果一對的結尾是1,則所得到的部分乘積太大,所以下一次操作將是一次減法。

65.jpg

3 重疊掃描乘法運算的實(shí)現

從以上原理可知,針對二位一組的情況需要五個(gè)被乘數的倍數,其數值可取為0,±2A,±4A。由于其每移二位至多操作一次加減法,在多字節的運算中對提高執行效率有很大的益處;不過(guò)考慮到8BITMCU的移位操作并沒(méi)有二位一移的指令,對這種掃描算法有很大的障礙,必須重新考慮掃描運算如何在微型機上進(jìn)行實(shí)施。

根據文[2],MCU對字節與半字節操作的指令較強,因此可以在掃描算法的基礎上擴展其掃描位組,這樣在每個(gè)加法周期中的運算變得很復雜,因此首先必須研究清楚這種情況。

將乘數位按4BIT分成一組,一次掃描五位;設本組為BMi=[Xi+3,Xi+2,Xi+1,Xi],下一次要掃描的BMi′的低位為Xi+4;這樣在掃描過(guò)程中的情況與文[3]所介紹的情況有類(lèi)似之處,但這里進(jìn)行運算的次數不但與BMi有關(guān),同時(shí)下一次掃描的低位對本算法也有重大的影響作用。假定在運算數中0,1的概率出現機會(huì )均等,對4位一組的掃描進(jìn)行分析?! 「鶕丿B掃描算法的原理,BMi′低位為0時(shí)(如圖5所示),組中最左端的1指示一串1的左端(結束)。依據式(3),很容易得到每次掃描部分積所要加的被乘數倍數(見(jiàn)圖5),可以得到其倍數,即相加的倍數
Pj={BMi-2G[BMi/2]}A+BMi.A ?。?(BMi-G[BMi/2])A (5)

其中G[]為取整函數。Pj實(shí)質(zhì)上均與2A有關(guān),這一點(diǎn)從圖中可以看到。如果一組的結尾是零,那么所得到部分乘積是正確的,按正常操作;如果一組的結尾是1,那么所得的部分積同上一次掃描有關(guān);所以此時(shí)只是在掃描第一組時(shí)做一下記錄,在最后完成時(shí)針對它在最尾端減一次A即可。這一點(diǎn)對于BMi′低位為1時(shí)也成立。其部分積加的情況如圖6所示。

60.jpg


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>