為了演示MAXQ微控制器的功能,我們采用了為競爭對手的微控制器編寫的基準(zhǔn)代碼,并在MAXQ2000上運行。結(jié)果表明,MAXQ是目前最好的16位微控制器內(nèi)核之一。
介紹
MAXQ獨特的轉(zhuǎn)換觸發(fā)架構(gòu)使其成為16位微控制器市場中的佼佼者。MAXQ指令集具有單時鐘和指令周期運算,用于跳轉(zhuǎn)、調(diào)用、返回、環(huán)路控制和算術(shù)運算。因此,MAXQ使應(yīng)用能夠在比其他微控制器更短的時間內(nèi)處理更多的數(shù)據(jù)。因此,設(shè)計人員可以在其應(yīng)用中添加更多功能,或者通過快速完成所需任務(wù)并在低功耗停止模式下花費更多時間來降低功耗。
為了演示MAXQ的競爭分析能力,我們采用了為展示MSP430而編寫的基準(zhǔn)代碼,在MAXQ上運行,并監(jiān)測MAXQ的性能。競爭對手的代碼最初使MAXQ函數(shù)相對較慢且效率低下。后來,當(dāng)Rowley高度優(yōu)化的MAXQ編譯器向市場發(fā)布時,我們重新運行了基準(zhǔn)測試代碼。我們發(fā)現(xiàn)Rowley的編譯器更有效地使用了MAXQ架構(gòu)特性,并且MAXQ的性能優(yōu)于德州儀器(TI)MSP430和Atmel AVR。MAXQ在更少的時鐘周期內(nèi)執(zhí)行相同的代碼。此外,這種加速的性能并沒有因為額外的代碼大小而對用戶造成不利影響——MAXQ的代碼大小在競爭代碼大小的2%以內(nèi)。
本應(yīng)用筆記詳細(xì)介紹了我們對MAXQ、Atmel AVR和TI MSP430架構(gòu)的研究。這項研究是透明的——沒有編譯器優(yōu)化的技巧或?qū)iT的代碼來迫使一個微控制器比另一個微控制器表現(xiàn)得更好。模擬網(wǎng)站上提供了項目文件和源代碼,以便可以復(fù)制結(jié)果。
關(guān)于方法的注意事項
在本次研究的兩個編譯器IAR Embedded Workbench和Rowley CrossWorks中,我們使用Rowley的編譯器來生成MAXQ的基準(zhǔn)數(shù)據(jù),因為它充分利用了MAXQ功能。IAR 和 Rowley 編譯器結(jié)果均用于 MSP430 和 AVR 微控制器測試。
執(zhí)行時間數(shù)據(jù)是使用IAR的嵌入式工作臺和Rowley的CrossWorks工具集附帶的模擬器收集的。計算的執(zhí)行周期不包括啟動時間;計數(shù)從 main() 函數(shù)的入口點開始,以 main() 函數(shù)的 return 語句結(jié)束。
代碼大小以字節(jié)為單位,包括常量和代碼段。這是因為某些工具在 CODE 段中包含應(yīng)用程序常量,這會使設(shè)備的代碼密度錯誤地顯示為高。組合 CODE 和 CONSTANT 段的大小可確保等效比較。
通常,我們將編譯器配置為對所有設(shè)備使用其最高代碼優(yōu)化級別。這通常意味著在面向最小代碼大小時啟用所有優(yōu)化,在面向最快代碼時啟用幾乎所有優(yōu)化(因為某些編譯器優(yōu)化會犧牲速度來換取代碼大?。?。在某些情況下,高優(yōu)化設(shè)置會導(dǎo)致問題 - 生成的代碼無法正確模擬,從未到達(dá) return 語句。通常,當(dāng)優(yōu)化級別更改時,代碼開始工作。我們將指出何時需要降低優(yōu)化級別。本應(yīng)用筆記隨附的項目文件包含用于生成基準(zhǔn)數(shù)據(jù)的優(yōu)化設(shè)置。
TI 基準(zhǔn)測試
該基準(zhǔn)測試是德州儀器發(fā)布的一套測試,用于展示 MSP430。該套件包含 10 個單獨的基準(zhǔn)測試:
8 位數(shù)學(xué)例程
8 位矩陣(陣列)訪問
8 位開關(guān)語句
16 位數(shù)學(xué)例程
16 位矩陣(陣列)訪問
16 位開關(guān)語句
32 位數(shù)學(xué)例程
浮點數(shù)學(xué)例程
有限脈沖響應(yīng)算法
矩陣乘法
按照TI測試參數(shù),MAXQ表現(xiàn)不佳。它生成的代碼比大多數(shù)其他微控制器更大、更慢。當(dāng)然,TI 研究表明 MSP430 是比較中的贏家。然而,透明國際的方法存在缺陷,需要進(jìn)一步分析。因此,我們研究了MAXQ在Rowley CrossWorks編譯器上的表現(xiàn)。
TI 結(jié)果
TI 研究提供了執(zhí)行速度(以時鐘周期為單位)和代碼密度(以字節(jié)為單位)的結(jié)果,如表 1 和表 2 所示。請注意,某些器件名稱(直接取自TI應(yīng)用筆記)不清楚。例如,8051 是指 12 時鐘、6 時鐘、4 時鐘甚至 1 時鐘 8051 架構(gòu)嗎?
應(yīng)用 | MSP430F135 | ATmega8 | 圖18F242 | 8051 | H8/300L | MC68HC11 | 最大Q20 | ARM7-TDMI (拇指) |
8 位數(shù)學(xué) | 299 | 157 | 318 | 112 | 680 | 387 | 421 | 185 |
8 位矩陣 | 2899 | 5300 | 20045 | 17744 | 9098 | 15412 | 31691 | 2227 |
8 位交換機 | 50 | 131 | 109 | 84 | 388 | 214 | 58 | 146 |
16 位數(shù)學(xué) | 343 | 319 | 625 | 426 | 802 | 508 | 815 | 259 |
16 位矩陣 | 5784 | 24426 | 27021 | 29468 | 15280 | 23164 | 60214 | 2998 |
16 位交換機 | 49 | 144 | 163 | 120 | 398 | 230 | 51 | 146 |
32 位數(shù)學(xué) | 792 | 782 | 1818 | 2937 | 1756 | 1446 | 1034 | 115 |
浮點 | 1207 | 1601 | 1599 | 2487 | 2458 | 4664 | 1943 | 108 |
遠(yuǎn)紅外濾波器 | 152193 | 164793 | 248655 | 206806 | 245588 | 567139 | 464558 | 43191 |
矩陣乘法 | 6633 | 16027 | 36190 | 9454 | 26750 | 26874 | 66534 | 2918 |
總數(shù) | 170249 | 213680 | 336543 | 269638 | 303198 | 640038 | 627319 | 52293 |
應(yīng)用 | MSP430F135 | ATmega8 | 圖18F242 | 8051 | H8/300L | MC68HC11 | 最大Q20 | ARM7-TDMI (拇指) |
8 位數(shù)學(xué) | 172 | 116 | 386 | 141 | 354 | 285 | 352 | 660 |
8 位矩陣 | 118 | 364 | 676 | 615 | 356 | 380 | 378 | 408 |
8 位交換機 | 180 | 342 | 404 | 209 | 362 | 387 | 202 | 504 |
16 位數(shù)學(xué) | 172 | 174 | 598 | 361 | 564 | 315 | 286 | 676 |
16 位矩陣 | 156 | 570 | 846 | 825 | 450 | 490 | 526 | 428 |
16 位交換機 | 178 | 388 | 572 | 326 | 404 | 405 | 188 | 504 |
32 位數(shù)學(xué) | 250 | 316 | 960 | 723 | 876 | 962 | 338 | 620 |
浮點 | 662 | 1042 | 1778 | 1420 | 1450 | 1429 | 1596 | 1556 |
遠(yuǎn)紅外濾波器 | 668 | 1292 | 2146 | 1915 | 1588 | 1470 | 1828 | 1420 |
矩陣乘法 | 252 | 510 | 936 | 345 | 462 | 499 | 494 | 432 |
總數(shù) | 2808 | 5114 | 9302 | 6880 | 6866 | 6622 | 6188 | 7208 |
根據(jù)這些數(shù)據(jù),MSP430 產(chǎn)生的代碼密度最高,比 Atmel AVR 微控制器小 45%。MSP430 似乎也表現(xiàn)最佳,但 32 位 ARM 處理器除外。這些結(jié)果還表明,MAXQ相對較慢且效率低下。
TI 基準(zhǔn)研究的缺陷
透明國際制定基準(zhǔn)的方式提出了一些問題。
第一個問題是TI在他們的研究中沒有使用任何優(yōu)化。TI反對編譯器優(yōu)化,以便將編譯器從考慮范圍中移除,并使微控制器自行執(zhí)行。這個論點的問題在于工程師仍然使用編譯器來生成機器代碼。如果編譯器在未啟用優(yōu)化時未利用微控制器的架構(gòu)功能,則無法實際了解微控制器的性能。此外,基準(zhǔn)測試只有在模擬實際應(yīng)用程序時才有價值。工程師可能會在實際應(yīng)用中優(yōu)化尺寸或速度,因此這些應(yīng)作為基準(zhǔn)研究的一部分。
TI 基準(zhǔn)測試研究中的第二個缺陷是他們只考慮了一個編譯器。誠然,當(dāng)時 TI 無法使用 Rowley 編譯器。現(xiàn)在可用,Rowley 編譯器極大地更新了早期的 TI 結(jié)果。
馬克西姆的方法
如上所述,我們對 TI 基準(zhǔn)測試的重新評估主要集中在 MSP430、Atmel AVR 和 MAXQ 架構(gòu)上。我們考慮了IAR Embedded Workbench和Rowley CrossWorks工具集的執(zhí)行和代碼大小數(shù)據(jù)。所有執(zhí)行速度的結(jié)果均通過仿真得到。
本研究中的MAXQ器件是MAXQ2000微控制器。除了包括LCD控制器在內(nèi)的一系列外設(shè)外,MAXQ2000還具有16個16位累加器和一個16 x 16硬件乘法加速器。在這項研究中,我們在所有三個被測器件上都啟用了硬件乘法器——我們假設(shè)如果數(shù)學(xué)計算(如FIR濾波器)的性能很重要,設(shè)計人員會選擇帶有乘法加速器的微控制器。
對于 MSP430 器件,我們以 MSP430F149 為目標(biāo),這與他們研究中針對的 TI 器件 (MSP430F135) 不同。我們之所以選擇F149,是因為它有一個硬件乘法單元,使得與MAXQ2000的比較更加公平。
之所以選擇ATmega8進(jìn)行研究,是因為當(dāng)前的IAR編譯器可以使用該微控制器的硬件乘法器生成代碼。IAR 編譯器無法對其他 AVR 設(shè)備(如 ATmega64 或 ATmega128)執(zhí)行此操作。
從這兩個工具集中收集基準(zhǔn)測試結(jié)果非常簡單。在 IAR 中,代碼大小數(shù)據(jù)位于映射文件(確保它是在“項目選項”→“鏈接器→列表”下生成的)。向下滾動到地圖文件的底部,將顯示以下三行:
184字節(jié)代碼存儲器 80字節(jié)數(shù)據(jù)存儲器
66字節(jié)CONST存儲器
如前所述,我們將 CODE 和 CONST 內(nèi)存部分都計入總代碼大小,因為編譯器在放置常量程序數(shù)據(jù)的位置上有所不同。對于測試,比較代碼大小的唯一合法方法是包含常量大小。
若要在 IAR 中查找執(zhí)行周期,請選擇模擬器作為調(diào)試工具并開始調(diào)試。在“查看→分析”下啟動代碼分析器。單擊“激活”按鈕和“自動刷新”按鈕(請參閱圖 1)。調(diào)試器應(yīng)自動運行到 C 代碼的第一行。按 Run 鍵,(如果未設(shè)置斷點)IAR 調(diào)試器在程序退出時終止。查看代碼探查器,并在 main() 的“累積時間”下報告 周期數(shù) - 這是在主例程和 main 調(diào)用的所有子例程中花費的周期數(shù)。
圖1.IAR 代碼探查器:累計時間(周期)是指在該例程及其調(diào)用的所有子例程中花費的周期數(shù)。
在 Rowley 工具集中查找生成的代碼大小也非常容易。生成項目時,項目資源管理器會隨項目一起列出代碼大小。圖 2 顯示,對于 MSP430F149,16 位數(shù)學(xué)基準(zhǔn)測試代碼大小為 238 字節(jié)。
圖2.Rowley 項目資源管理器顯示每個項目的代碼大小詳細(xì)信息。
在 Rowley 工具中確定執(zhí)行周期數(shù)并不像使用 IAR 那么容易 - Rowley 不會在程序結(jié)束時自動停止,也不會分離周期的花費位置。您必須在進(jìn)入主程序時重置循環(huán)計數(shù)器。為此,請首先開始調(diào)試程序。當(dāng)編譯器在 main 的入口點停止時,雙擊它來重置循環(huán)計數(shù)器。
圖3.當(dāng) Rowley 模擬器在 main() 處停止時,雙擊它來重置循環(huán)計數(shù)器(帶有沙漏的圖片)。
接下來,在應(yīng)用程序末尾設(shè)置斷點。(請注意,邊距中帶有藍(lán)色三角形的線條指示可以設(shè)置斷點的位置。運行到斷點并記錄報告的周期數(shù)。
使用羅利模擬器還有其他可能的并發(fā)癥。
根據(jù)優(yōu)化的不同,您可能只能在程序集級別進(jìn)行模擬,在這種情況下,很難找到應(yīng)用程序的末尾。最好的方法是掃描代碼并在程序集代碼中找到下一個 RETURN 語句,在那里設(shè)置斷點,然后運行到該語句。
模擬器可能并不總是在主入口點停止。發(fā)生這種情況時,請嘗試按“重新啟動調(diào)試”按鈕。您可能還需要手動查找主入口點并在那里設(shè)置斷點。
編譯器設(shè)置
使用 IAR 工具集時,項目選項中的編譯器選項窗口配置為啟用所有優(yōu)化的最高優(yōu)化級別(請參閱圖 4)。若要在目標(biāo)最小代碼和最快執(zhí)行之間切換,請將所選單選按鈕從“大小”切換到“速度”。
圖4.IAR 編譯器的選項:啟用所有優(yōu)化。單選按鈕在優(yōu)化速度和大小之間切換編譯器。
Rowley的CrossWorks允許用戶創(chuàng)建除了默認(rèn)的調(diào)試和發(fā)布配置之外的構(gòu)建配置。因此,本研究的基準(zhǔn)項目還包括最快(見圖 5)和最?。▓D 6)配置選項。最快配置刪除了以犧牲指令周期為代價來評估代碼大小的任何優(yōu)化。
圖5.Rowley的CrossWorks中使用的項目選項可實現(xiàn)最快的配置。
最小配置的設(shè)置如圖 6 所示。啟用了以犧牲周期為代價的有利于代碼大小的選項,總體優(yōu)化策略是最小化大小。
圖6.Rowley的CrossWorks中用于最小配置的項目選項。
Analog 運行的每個基準(zhǔn)測試的項目和源文件可在 /en/product-category/ultra-low-power-microcontrollers.html 中找到。這些項目文件中的配置與用于基準(zhǔn)測試的配置相同。Maxim網(wǎng)站上的其他第三方工具提供了IAR和Rowley工具試用版的鏈接,因此您可以輕松重現(xiàn)這些基準(zhǔn)測試結(jié)果。
MAXQ基準(zhǔn)測試結(jié)果
表3和表4顯示了MAXQ基準(zhǔn)測試結(jié)果。執(zhí)行速度再次以時鐘周期的形式給出,代碼大小以字節(jié)為單位給出。
應(yīng)用 | MSP430F149 IAR | MSP430F149 羅利 | ATmega8 IAR | ATmega8 羅利 | MAXQ2000 羅利 | |||||
配置 | 小 | 快 | 小 | 快 | 小 | 快 | 小 | 快 | 小 | 快 |
8 位數(shù)學(xué) | 243 | 243 | 276 | 272 | 110 | 110 | 279 | 278 | 278 | 245 |
8 位矩陣 | 1629 | 963 | 6243 | 2659 | 1508 | 1074 | 7348 | 3763 | 3461 | 2947 |
8 位交換機 | 31 | 31 | 24 | 24 | 84 | 36 | 45 | 45 | 39 | 39 |
16 位數(shù)學(xué) | 219 | 219 | 250 | 250 | 275 | 266 | 348 | 330 | 194 | 191 |
16 位矩陣 | 1906 | 899 | 6755 | 3171 | 1147 | 697 | 5251 | 5250 | 3205 | 2691 |
16 位交換機 | 30 | 30 | 24 | 24 | 111 | 44 | 50 | 50 | 39 | 39 |
32 位數(shù)學(xué) | 575 | 575 | 790 | 716 | 746 | 731 | 995 | 885 | 545 | 521 |
浮點 | 784 | 784 | 1097 | 921 | 1614 | 1565 | 1491 | 919 | 763 | 744 |
遠(yuǎn)紅外濾波器 | 86042 | 82748 | 90812 | 82592 | 82779 | 82779 | 73598 | 66249 | 62280 | 59470 |
矩陣乘法 | 4254 | 2761 | 6036 | 5436 | 7799 | 2396 | 11081 | 9231 | 3704 | 3027 |
總數(shù) | 95713 | 89253 | 112307 | 96065 | 96173 | 89698 | 100486 | 87000 | 74508 | 69914 |
圖 7 繪制了執(zhí)行速度的數(shù)據(jù)圖表。僅顯示最快的結(jié)果。速度以執(zhí)行周期來衡量 - 條越小意味著性能越好。
圖7.最快配置設(shè)置的執(zhí)行速度結(jié)果。較小的MAXQ2000棒顯示出更好的性能。
應(yīng)用 | MSP430F149 IAR | MSP430F149 羅利 | ATmega8 IAR | ATmega8 羅利 | MAXQ2000 羅利 | |||||
配置 | 小 | 快 | 小 | 快 | 小 | 快 | 小 | 快 | 小 | 快 |
8 位數(shù)學(xué) | 192 | 192 | 258 | 262 | 98 | 98 | 212 | 212 | 248 | 284 |
8 位矩陣 | 152 | 180 | 240 | 232 | 318 | 304 | 220 | 250 | 202 | 222 |
8 位交換機 | 180 | 180 | 230 | 230 | 312 | 164 | 202 | 200 | 152 | 152 |
16 位數(shù)學(xué) | 140 | 140 | 220 | 220 | 162 | 154 | 222 | 238 | 162 | 164 |
16 位矩陣 | 240 | 240 | 312 | 312 | 398 | 374 | 294 | 350 | 260 | 378 |
16 位交換機 | 178 | 178 | 230 | 230 | 346 | 178 | 212 | 240 | 152 | 152 |
32 位數(shù)學(xué) | 236 | 236 | 284 | 388 | 306 | 296 | 380 | 460 | 274 | 324 |
浮點 | 1100 | 1100 | 966 | 1004 | 1026 | 1046 | 816 | 936 | 1018 | 1090 |
遠(yuǎn)紅外濾波器 | 1178 | 1174 | 924 | 966 | 1258 | 1258 | 860 | 896 | 1024 | 1044 |
矩陣乘法 | 266 | 250 | 312 | 316 | 476 | 324 | 294 | 348 | 254 | 264 |
總數(shù) | 3862 | 3870 | 4076 | 4160 | 4700 | 4196 | 3712 | 4130 | 3746 | 4074 |
下圖(圖 8)顯示了最小配置結(jié)果的代碼大小數(shù)據(jù)。代碼大小以字節(jié)數(shù)來衡量 - 條形越小意味著代碼密度越高。
圖8.最小配置設(shè)置的代碼大小結(jié)果。MAXQ2000的條形越小,代碼密度越好。
微控制器 | 編譯器 | 版本 |
最大Q2000 | 羅利 | MAXQ 交叉工作,1.0 版,Build 2 |
MSP430F149 | 羅利 | 適用于 MSP430 的 CrossWorks 版本,版本 1.3,內(nèi)部版本 3 |
MSP430F149 | IAR | IAR C/C++ 編譯器,適用于 MSP430,V3.30A/W32 (3.30.1.1) |
ATmega8 | 羅利 | AVR 的 CrossWorks 版本,版本 1.1,內(nèi)部版本 1 |
ATmega8 | IAR | IAR C/C++ AVR 編譯器,4.10B/W32 (4.10.2.3) |
裝置 | 工具 | 配置 | 基準(zhǔn) | 問題 |
ATmega8 | 羅利 | 最小 | 16 位矩陣 | 除非將代碼分解優(yōu)化設(shè)置為 NONE,否則模擬不會終止。 |
ATmega8 | IAR | 快 | 8 位矩陣、16 位矩陣 | 除非將優(yōu)化級別設(shè)置為中而不是高,否則模擬不會終止。 |
ATmega8 | IAR | 最小 | 遠(yuǎn)紅外濾波器 | 即使在最低優(yōu)化級別,仿真也不會終止。表3和表4中包含的數(shù)字適用于配置最快的FIR濾波器。 |
ATmega8 | IAR | 雙 | 矩陣乘法 | 模擬不會在ATmega8,ATmega16或ATmega32目標(biāo)上終止。該項目的目標(biāo)是ATmega64。 |
分析和總結(jié)
在不同的編譯器和啟用優(yōu)化的情況下,上述結(jié)果表明,即使運行 TI 特制的基準(zhǔn)代碼,MSP430 也不是性能最佳的微控制器。
考慮到運行整個基準(zhǔn)測試套件所需的總執(zhí)行周期數(shù),MAXQ2000的性能優(yōu)于MSP430F149和ATmega8。MAXQ2000的周期為69,914次,而MSP430F149 (IAR)和ATmega8 (Rowley)的周期分別為89,253次和87,000次。在考慮基準(zhǔn)代碼的總大小時,三個微控制器的最佳情況結(jié)果僅相差2%,因此代碼大小的任何差異都無關(guān)緊要。
由于代碼密度不是此基準(zhǔn)測試的一個因素,因此我們將更深入地研究執(zhí)行速度結(jié)果??倛?zhí)行周期結(jié)果由FIR濾波器結(jié)果加權(quán),其中MAXQ2000明顯優(yōu)于競爭產(chǎn)品。MAXQ2000是數(shù)學(xué)基準(zhǔn)測試中表現(xiàn)最好的,8位數(shù)學(xué)基準(zhǔn)測試中除了ATmega8之外。MAXQ2000的性能最差的是8位和16位矩陣基準(zhǔn),它們將項目從一個多維數(shù)組復(fù)制到另一個多維陣列。
到目前為止,我們只考慮測試微控制器在時鐘周期方面的性能。我們沒有考慮設(shè)備的運行速度。為了進(jìn)行絕對比較,我們使用每秒基準(zhǔn)測試迭代次數(shù),即整個 TI 基準(zhǔn)測試套件在一秒鐘內(nèi)可以運行的次數(shù)。表7顯示,當(dāng)所有器件以相同的時鐘速度運行時,MAXQ2000比MSP28F430快149%,比ATmega24快8%。當(dāng)器件以最大時鐘速率運行時,MAXQ2000比ATmega56快8%,比MSP218F430快149%。
裝置 | 周期 | F.max | 1MHz 時的迭代/秒 | F 處的迭代/秒.max |
MSP430F149 | 89,253 | 8 | 11.20 | 89.60 |
ATmega8 | 87,000 | 16 | 11.49 | 183.84 |
最大Q2000 | 69,914 | 20 | 14.30 | 286.00 |
圖9.以最大時鐘速率運行時每秒的基準(zhǔn)迭代次數(shù)。更高的MAXQ2000桿顯示出更好的性能。
我們應(yīng)該如何總結(jié)Maxim基準(zhǔn)研究的結(jié)果?至少,它與TI基準(zhǔn)研究的結(jié)果相悖,后者表明MAXQ微控制器架構(gòu)并不引人注目。這項更新的研究表明,MAXQ2000是一款代碼高效、快速的微控制器,對于任何受益于更高性能微控制器的新設(shè)計和重新設(shè)計,都應(yīng)考慮使用MAXQ<>。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7533瀏覽量
151285 -
控制器
+關(guān)注
關(guān)注
112文章
16297瀏覽量
177779 -
編譯器
+關(guān)注
關(guān)注
1文章
1623瀏覽量
49100
發(fā)布評論請先 登錄
相關(guān)推薦
評論