新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 8位還是32位,微處理器怎么選?

8位還是32位,微處理器怎么選?

作者: 時間:2018-07-24 來源:網(wǎng)絡(luò) 收藏

另一個原因是ARM處理器比8051核心具有更多的自由使用堆疊。通常情況下,8051裝置針對每次函式呼叫僅在堆疊上儲存返回位址(2位元組),透過通常分配給堆疊的靜態(tài)變數(shù)處理大量的任務(wù)。在某些情況下,這會產(chǎn)生問題,因為這會造成函數(shù)預(yù)設(shè)不可重入。然而,這也意味著必須保留的堆疊空間很小,且完全可預(yù)測,這在RAM容量有限的MCU中至關(guān)重要。

本文引用地址:http://2s4d.com/article/201807/383693.htm

舉個簡單的例子,試驗者設(shè)計了以下程式,然后測量funcB內(nèi)部的堆疊深度,發(fā)現(xiàn)M0+核心的堆疊用了四十八個位元組,而8051核心的堆疊僅用了十六個位元組。當(dāng)然,8051核心還靜態(tài)配置了八個位元組的RAM,總共用了二十四個位元組。在較大的系統(tǒng)中,這個差異顯得微不足道,但是在僅有256位元組的ARM的系統(tǒng)中,這就變得很重要。

架構(gòu)細(xì)節(jié)之考量

假設(shè)有基于ARM和基于8051的MCU各一個,配有所需的周邊,那么對于較大的系統(tǒng)或需要重點考慮易用性的應(yīng)用來說,ARM裝置是更好的選擇。如果首要考量的是低成本/小尺寸,那么8051裝置將是更好的選擇。本文以下對于每種架構(gòu)更擅長的應(yīng)用進行更詳細(xì)的分析,同時也劃分出一般原則。

影響延時因素

兩種架構(gòu)的中斷和函式呼叫延時存在很大差異,8051比ARM Cortex-M核心更快。

此外,高階周邊匯流排(APB)配備的周邊也會影響延時,這是因為資料必須透過APB和AMBA高性能匯流排(AHB)傳輸。最后,當(dāng)使用高頻核心時脈時,許多基于Cortex-M的MCU需要分配APB時脈,這也增加了周邊延時。

試驗者做了個簡單的實驗,實驗中的中斷是透過I/O引腳觸發(fā)的。該中斷對引腳發(fā)出一些訊號,并根據(jù)引發(fā)中斷的引腳更新標(biāo)志,之后再量測其部分參數(shù)的變化。

8051核心在中斷服務(wù)程式(ISR)進入和退出時顯示出優(yōu)勢。但是,隨著中斷服務(wù)程式(ISR)越來越大和執(zhí)行時間的增加,這些延遲將變得微不足道。和既有原則一致,系統(tǒng)越大,8051的優(yōu)勢越小。此外,如果中斷服務(wù)程式(ISR)涉及到大量資料移轉(zhuǎn)或大于元的整數(shù)資料運算,中斷服務(wù)程式(ISR)執(zhí)行時間的優(yōu)勢將轉(zhuǎn)向ARM核心。例如,一個采用新樣本更新16位元或元轉(zhuǎn)動平均(Rolling Average)的ADC ISR可能在ARM裝置上執(zhí)行的更快。

8051核心的基本功能是控制代碼,其中對于變數(shù)的存取是分散的,并且使用了許多控制邏輯(If、Case等)。8051核心在處理元資料時也是非常有效的,而ARM Cortex-M核心擅長資料處理和元運算。此外,元資料通道使得ARM MCU復(fù)制大的資料更加有效,因為它每次可以移動四個位元組,而8051每次僅能夠移動一個位元組。因此,那些主要把資料從一個地方移到另一個地方(例如UART到CRC或者到USB)的資料流處理應(yīng)用更適合選擇基于ARM處理器的系統(tǒng)。

來做個簡單的實驗。試驗者編譯以下兩種架構(gòu)的函數(shù)(公式1),變數(shù)大小為uint8_t、uint16_t和uint32_t。

隨著資料量的增加,8051核心需要越來越多的代碼來完成這項工作,最終超過了ARM函數(shù)的大小。在16位元的情況下,代碼大小幾乎類似,在執(zhí)行速度上稍優(yōu)于32位元核心,因為相同代碼通常需要更少周期。還有一點很重要:只有采用最佳化的ARM編譯代碼時,這種比較才有效。未最佳化的代碼需要花費幾倍長的時間。

這并不意味著有大量資料移動或32位元運算的應(yīng)用不應(yīng)該選擇8051核心完成。

在許多情況下,其它方面的考量將超過ARM核心的效率優(yōu)勢,或者說這種優(yōu)勢是無關(guān)緊要的。舉例來說,考慮使用UART到SPI橋接器時,該應(yīng)用花費大部分時間在周邊之間復(fù)制資料,而ARM核心會更高效地完成該任務(wù)。然而,這也是一個非常小的應(yīng)用,可能放入到一個僅有2KB儲存容量的晶片就足夠了。

盡管8051核心效率較低,但它仍然有足夠的處理能力去處理該應(yīng)用中的高資料速率。對于ARM裝置來說,可用的額外周期可能處于空閑回圈或“等待中斷”(WFI),等待下一個可用的資料到來。在這種情況下,8051核心仍然最有意義,因為額外的CPU周期是微不足道的,而較小的Flash封裝會節(jié)約成本。如果使用者要利用額外的周期去做些有意義的工作,那么額外的效率將是至關(guān)重要的,且效率越高越可能越有利于ARM核心。這個例子說明,清楚被開發(fā)系統(tǒng)所關(guān)注的環(huán)境中的各種架構(gòu)優(yōu)勢是何等重要,而作出這個最佳的決定是簡單但卻重要的一步。

指標(biāo)為8051特殊優(yōu)勢

8051裝置不像ARM裝置般統(tǒng)一的儲存映射,而是對存取碼(Flash)、IDATA(內(nèi)部RAM)和XDATA(外部RAM)有不同的指令。為了產(chǎn)生高效的代碼,8051代碼的指標(biāo)會說明它指向什么空間。然而,在某些情況下,使用通用指標(biāo),可以指向任何空間,但是這種類型的指標(biāo)是低效的存取。例如,將指標(biāo)指向緩沖區(qū)并將該緩沖區(qū)資料輸出到UART的函數(shù)。如果指標(biāo)是XDATA指標(biāo),那么XDATA陣列能被發(fā)送到UART,但在代碼空間中的陣列,首先需要被復(fù)制到XDATA。通用指標(biāo)能同時指向代碼和XDATA空間,但速度較慢,并且需要更多的代碼來存取。

專用區(qū)域指標(biāo)在大多情況下能發(fā)揮作用,但是通用指標(biāo)在編寫使用情況未知的可重用代碼時非常靈活。如果這種情況在應(yīng)用中很常見,那么8051就失去了其效率優(yōu)勢。

仔細(xì)評估了解MCU使用優(yōu)勢

本文已經(jīng)多次注意到,運算傾向于選擇ARM,而控制傾向于選擇8051,但沒有應(yīng)用僅僅著眼于計算或控制,該怎樣才能定義各種應(yīng)用,并計算出它的合適范圍呢?

本文考量一個由10%的32位元計算、25%的控制代碼和65%的一般代碼構(gòu)成的假定應(yīng)用時,其不能明確的歸成8或32位元類別。這個應(yīng)用也更注重代碼空間而不是執(zhí)行速度,因為其并不需要所有可用的運算效能,并且必須為成本進行最佳化。

成本比應(yīng)用速度更為重要的事實在一般代碼情形下將為8051核心帶來些微優(yōu)勢。此外,8051核心在控制代碼中有中間等級的優(yōu)勢。ARM核心在32位元計算方面占上風(fēng),但是這并非是很多應(yīng)用所重視的??剂康剿羞@些因素,這個特殊的應(yīng)用選擇8051核心更加合適。

如果做一個細(xì)微的改變,假設(shè)該應(yīng)用更關(guān)心執(zhí)行速度而非成本,那么通用代碼不會傾向于哪種架構(gòu),并且ARM核心在計算代碼中全面占有優(yōu)勢。在這種情況下,雖然有比計算更多的控制代碼,但是最后結(jié)果將相當(dāng)均衡。顯然,在這個過程中有很多的評估,但是分解應(yīng)用,然后評估每一元件的技術(shù)將能確保使用者了解,在哪種情況下哪種架構(gòu)有更顯著的優(yōu)勢。



關(guān)鍵詞: 8位 32位 微處理器

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉