淺談Cortex-M3內(nèi)核浮點型運算的研究與實現(xiàn)
出處:梅靜靜,王申良 發(fā)布于:2011-08-28 10:54:18
摘要:通過分析Cortex-M3內(nèi)核的結(jié)構(gòu)與浮點型格式,充分利用Cortex-M3內(nèi)核中的分支預(yù)測、單周期乘法、硬件除法等眾多功能強大的特性,使用Thumb-2指令集實現(xiàn)了單浮點型的加、減、乘、除與比較運算,并給出了加減法運算的流程圖和除法運算的源程序。
引言
在一些較為復(fù)雜的運算中,經(jīng)常需要處理取值范圍大、高的浮點型數(shù)據(jù)。但一般的低端嵌入式內(nèi)核中沒有浮點型硬件運算器,因此處理語音信號等數(shù)據(jù)比較困難。本文提出了一種基于Cortex-M3內(nèi)核的浮點型運算的處理方法。
1 Thumb-2指令集與COrtex-M3內(nèi)核結(jié)構(gòu)
Thumb-2是一個突破性的指令集。它強大,它易用,它輕佻,它高效。 Thumb-2是16位Thumb指令集的一個超集,在Thumb-2中,16位指令首次與32位指令并存,結(jié)果在Thumb狀態(tài)下可以做的事情一下子豐富了許多,同樣工作需要的指令周期數(shù)也明顯下降。
Cortex-M3是一個32位的核,在傳統(tǒng)的單片機領(lǐng)域中,有一些不同于通用32位CPU應(yīng)用的要求。譚軍舉例說,在工控領(lǐng)域,用戶要求具有更快的中斷速度,Cortex-M3采用了Tail-Chaining中斷技術(shù),完全基于硬件進行中斷處理,多可減少12個時鐘周期數(shù),在實際應(yīng)用中可減少70%中斷。Cortex-M3采用了新型的單線調(diào)試(Single Wire)技術(shù),專門拿出一個引腳來做調(diào)試,從而節(jié)約了大筆的調(diào)試工具費用。同時,Cortex-M3中還集成了大部分存儲器控制器,這樣工程師可以直接在MCU外連接Flash,降低了設(shè)計難度和應(yīng)用障礙。 ARM Cortex-M3處理器結(jié)合了多種突破性技術(shù),令芯片供應(yīng)商提供超低費用的芯片,僅33000門的內(nèi)核性能可達1.2DMIPS/MHz。該處理器還集成了許多緊耦合系統(tǒng)外設(shè),令系統(tǒng)能滿足下一代產(chǎn)品的控制需求。ARM公司希望Cortex-M3核的推出,能幫助單片機廠商。
2 浮點數(shù)的格式
IEEE被國際標準化組織授權(quán)為可以制定標準的組織,設(shè)有專門的標準工作委員會,有30000義務(wù)工作者參與標準的研究和制定工作,每年制定和修訂800多個技術(shù)準。IEEE的標準制定內(nèi)容有:電氣與電子設(shè)備、試驗方法、原器件、符號、定義以及測試方法等。
IEEE的浮點型數(shù)據(jù)標準規(guī)定,浮點數(shù)具有單(4字節(jié))、雙(8字節(jié))和擴展(10字節(jié))三種浮點型格式。在實際的應(yīng)用中,使用多的是單浮點數(shù),格式如下:
![]()
浮點數(shù)表示為:X=MsEsEm-1…E1E0 M-1M-2…M-n。IEEE標準規(guī)定:階碼用移碼;尾數(shù)的符號位用1表示負數(shù),0表示正數(shù);尾數(shù)的數(shù)據(jù)位用原碼表示,并且隱藏了第24位(即M-1),M-1為1,所以尾數(shù)是大于等于0.5小于1的小數(shù)。
階碼用移碼表示、尾數(shù)用原碼表示浮點數(shù)的好處:
?、俑↑c數(shù)據(jù)零的所有位均為零。
?、?個浮點數(shù)比較大小時,可不必區(qū)分階碼位和數(shù)據(jù)位,視為有符號32位整型數(shù)據(jù)比較。
3 浮點型運算的具體實現(xiàn)
3.1 加減運算
Cortex-M3是32位的內(nèi)核,可以把單浮點數(shù)存儲為32位的有符號整數(shù),這樣便于比較運算。加減運算的流程如圖1所示。

3.2 乘法運算
對于浮點型乘法運算,因為Cortex-M3內(nèi)核支持單周期乘法指令,所以運算速度比較快。運算流程與加減運算相似,不同之處有:階碼相加位取反得結(jié)果的階碼;尾數(shù)不用正負號調(diào)整,直接相乘,而尾數(shù)的符號位異或即可得結(jié)果的符號位;兩個24位尾數(shù)相乘的結(jié)果為48位,尾數(shù)規(guī)格化的時候,判斷第48位是否為1,如果為1則階碼加1,如果為O則第47位一定為1,階碼不必調(diào)整。
3.3 除法運算
除法運算中,提取階碼、重現(xiàn)尾數(shù)、提取尾數(shù)以及尾數(shù)符號位的操作與乘法運算相同,因此除法運算過程與乘法運算過程的基本相似,只是計算X、Y尾數(shù)的商有所不同。
計算商的方法為:先把X的尾數(shù)左移8位,與Y的尾數(shù)相除得結(jié)果Z1,并計算出余數(shù)W1=X-Z1*Y;W1先左移8位,與Y的尾數(shù)相除得結(jié)果Z2,并計算出余數(shù)W2=W1-Z2*Y;W2左移8位,與Y的尾數(shù)相除得結(jié)果Z3。調(diào)整Z1、Z2、Z3并組裝成24位或25位尾數(shù)。除法運算的源程序如下:


3.4 浮點型數(shù)據(jù)比較
從浮點型數(shù)據(jù)存儲的格式來看,可以把浮點數(shù)按照有符號整型數(shù)據(jù)來比較大小。比較的結(jié)果:相等輸出O,大于輸出1,小于輸出-1。
4 測試結(jié)果
利用基于Cortex-M3內(nèi)核的STM32F103VET6處理器測試浮點型運算的速度,處理器的工作頻率為72 MHz,測試的方法為:每完成浮點型運算,處理器的一引腳變化電平。經(jīng)測試,變化電平耗時153ns。圖2、圖3是對乘法運算和除法運算的測試結(jié)果。從圖中可以看出,乘法的運算速率約為0.717μs/次,除法的運算速率約為0.957μs/次??梢?,運算速率比較高,較高,可以滿足實際應(yīng)用要求。


結(jié)語
測試結(jié)果表明,在Cortex-M3內(nèi)核上實現(xiàn)浮點型運算,可以達到所要求的,運算速度較快,具有較高的實時性。本文提出的浮點型運算的處理方法在基于Cortex-M3內(nèi)核的處理器上有著較高的應(yīng)用價值。希望對從事這方面的人員有所幫助。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52









