系統(tǒng)性能并不等價于計算能力。較低的功耗、豐富的片內(nèi)外設(shè)以及實時的信號處理能力對于大部分嵌入式應用來說是最為重要的。傳統(tǒng)的8位、16位單片機已經(jīng)很好的處理了這類問題,但是隨著當今嵌入式設(shè)計不斷增長的功能需求和特殊要求,許多微控制器廠商開始拋棄他們傳統(tǒng)的8位、16位單片機。但是選擇32位處理器對于某些任務來可能并不是最適宜的。下面我們就討論一下單片機的選型問題。
理解系統(tǒng)性能
MIPS(million instructions per second),是微控制器計算能力的表征。但是,所有的嵌入式應用不僅僅是需要計算能力,所以應用的多樣化決定了系統(tǒng)性能衡量方式的多樣化,大部分參數(shù)都同等重要并且難于用一個參數(shù)來表示,我們并不應該僅僅從MIPS就判定系統(tǒng)的好壞。也許某一應用由于成本的限制,需要一款高集成度的微控制器,該控制器需要多個定時器和多種接口。但是另一個應用需要高的精度和快速的模擬轉(zhuǎn)換能力。兩者的共同點可能僅僅是供電部分,比如采用電池供電。對于一個實時的順序處理應用來說,通信的失敗可能會導致災難性后果。這樣的場合下就需要一個靈巧的控制器。這個控制器應當能夠以正確的順序處理任務,并且響應時間必須均衡。所有上述應用的共同問題可能就是定期的現(xiàn)場升級能力。
除了與具體的產(chǎn)品要求有關(guān)外,系統(tǒng)性能的衡量也可以考慮是否有容易上手、容易使用的開發(fā)工具、應用示例、齊全的文檔和高效的支持網(wǎng)絡。
系統(tǒng)性能的相關(guān)問題
1. 傳統(tǒng)8位單片機的局限
大多數(shù)工程師十分關(guān)注系統(tǒng)性能,因為越來越多的8位和16位單片機家族已經(jīng)無法滿足當今日益增長的需求。陳舊和低效的架構(gòu)限制了處理能力、存儲器容量、外設(shè)處理和低功耗要求。8位的處理器架構(gòu),比如8051、PIC14、PIC16、PIC18、78K0和 HC08是在高級語言(比如C語言)出現(xiàn)之前開發(fā)的,其指令集僅用于匯編開發(fā)環(huán)境。并且這類架構(gòu)的中央處理單元(CPUs)缺乏一些關(guān)鍵功能,比如16位的算數(shù)運算支持、條件跳轉(zhuǎn)和存儲器指針。
許多CPU架構(gòu)執(zhí)行一條指令需要若干時鐘周期。Microchip的8位PIC家族執(zhí)行一條最簡單的指令需要4個時鐘周期,這導致使用20M的時鐘僅能達到5MIPS。對于其他CPU架構(gòu),比如8051內(nèi)核。其執(zhí)行一條指令至少需要6個時鐘周期,這就使得實際的MIPS要比給定的時鐘頻率低很多。
int max(int *array)
{
char a;
int maximum=-32768;
for (a=0;a<16;a++)
if (array[a]>maximum)
maximum=array[a];
return (maximum);
}
上述代碼是一個簡單的C語言函數(shù),表1列出了在三種不同CPU架構(gòu)上編譯這段代碼的相應結(jié)果。8051內(nèi)核的執(zhí)行時間幾乎是PIC16內(nèi)核的4倍,對于AVR架構(gòu)更是達到了28倍。
表1 不同CPU架構(gòu)的代碼容量和執(zhí)行時間
CPU架構(gòu) 代碼容量(字節(jié)) 執(zhí)行時間(周期)
8051 112 9384
PIC16 87 2492
AVR 46 335
一些半導體廠商解決了時鐘分配問題,使得微控制器實現(xiàn)了單時鐘周期指令。當時鐘頻率為100MHz時,Silicon Labs聲稱他們基于8位8051架構(gòu)的微控制器能夠達到100MIPS的峰值。但是,這里有幾個問題:
第一, 由于大部分指令需要兩個時鐘周期甚至更多,所以其實際能力接近于50MIPS;
第二, 8051是基于累加器的CPU,所有需要計算的數(shù)據(jù)必須拷貝到累加器。查看8051處理器的匯編代碼,可以發(fā)現(xiàn)65%-70%的指令用來移動數(shù)據(jù)。由于現(xiàn)代8位和16位單片機架構(gòu)中有一系列和算術(shù)邏輯單元(ALU)相連的寄存器。因此,8051內(nèi)核的50MIPS僅相當于現(xiàn)代8位和16位單片機架構(gòu)的15MIPS。
MOV A,0x82
ADD A,R1
MOV 0x82,A
MOV A,0x83
ADDC A,R2
MOV 0x83,A
MOVX A,@DPTR
MOV OxF0,A
INC DPTR
MOVX A,@DPTR
RET
第三, 較老的CPU架構(gòu)缺乏對大容量存儲器的支持。早在七十年代,很難想象需要超過64KB存儲器的嵌入式應用,這使得許多CPU設(shè)計師選擇16位的地址總線。因此,CPU、寄存器、指令集以及程序存儲器和數(shù)據(jù)存儲器的數(shù)據(jù)總線始終受此限制。
第四, 在2006年,約有9%的8位嵌入式應用使用了64KB甚至更多的程序存儲空間,這代表了8位MCU市場26%的收益。推測2009年,14%的8位嵌入式應用會代表36%的收益。而這14%的應用會使用64KB甚至更多的程序存儲空間。
從系統(tǒng)性能的角度來看,所有這些使得較舊的8位MCU逐漸失去競爭力。