-----注:以下文章純手打原創(chuàng),評(píng)測(cè)數(shù)據(jù)從第三方應(yīng)用角度測(cè)評(píng),如您是以下IC原廠,有專業(yè)性的偏頗建議請(qǐng)及時(shí)聯(lián)系小編。
說(shuō)起評(píng)測(cè),大家往往想起手機(jī),電腦,汽車等等,相信大家經(jīng)常在數(shù)碼IT網(wǎng)站看到各種各樣的數(shù)碼產(chǎn)品白電家電等功能性能評(píng)測(cè),也經(jīng)常被各種產(chǎn)品發(fā)布會(huì),新媒體的手機(jī)跑分大賽,電腦跑分?jǐn)?shù)值刷屏。------ 今天 我們來(lái)個(gè)中國(guó)通用32位MCU芯片 跑分大戰(zhàn)
說(shuō)起MCU,在物聯(lián)網(wǎng),智能硬件興起的當(dāng)下,萬(wàn)物智能,萬(wàn)物互聯(lián),小到插座,開(kāi)關(guān),燈泡都是智能的時(shí)代。MCU便是其中不可缺少的大腦核心。
小編對(duì)當(dāng)下幾款國(guó)內(nèi)外熱門的32位MCU進(jìn)行橫向PK評(píng)測(cè)。挑選了目前市場(chǎng)常見(jiàn)的幾家軟硬件兼容32位ARM MCU如下:
STM32F103VET6
GD32F103VET6
HK32F103VET6
AT32F413RCT7
CKS32F103RC
眾所周知,衡量MCU處理器的一個(gè)重要指標(biāo)就是性能,另外一個(gè)重要指標(biāo)便是功耗。本期我們先從性能開(kāi)始,跑分大賽。本次跑分我們把以上所有MCU都運(yùn)行在同一主頻,去評(píng)測(cè)同一主頻下的各個(gè)MCU性能跑分?jǐn)?shù)據(jù)。
在MCU處理器領(lǐng)域評(píng)分的 Benchmarks 非常眾多,有某些個(gè)人開(kāi)發(fā)的程序,也有某些標(biāo)準(zhǔn)組織,或者商業(yè)公司開(kāi)發(fā)的Benchmarks, 在此就不以一一列舉。今天我們選用在嵌入式處理器領(lǐng)域最為知名和常見(jiàn)的 Benchmarks 就是CoreMark。
CoreMark是用來(lái)衡量嵌入式系統(tǒng)中中心處理單元(CPU,或叫做微控制器MCU)性能的標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)于2009年由EEMBC組織的Shay Gla-On提出,并且試圖將其發(fā)展成為工業(yè)標(biāo)準(zhǔn),從而代替陳舊的Dhrystone標(biāo)準(zhǔn)。代碼使用C語(yǔ)言寫成,包含如下的運(yùn)算法則:列舉(尋找并排序),數(shù)學(xué)矩陣操作(普通矩陣運(yùn)算)和狀態(tài)機(jī)(用來(lái)確定輸入流中是否包含有效數(shù)字),最后還包括CRC(循環(huán)冗余校驗(yàn))。
CoreMark是一個(gè)綜合基準(zhǔn),用于測(cè)量嵌入式系統(tǒng)中使用的中央處理器(CPU)的性能。CoreMark也是STM32每次發(fā)布新品芯片必然要秀的跑分?jǐn)?shù)據(jù)。
測(cè)試環(huán)境:
硬件:統(tǒng)一STM32F103開(kāi)發(fā)板,換上各廠商的測(cè)試芯片。
軟件:統(tǒng)一同一主頻下, 同一COREMARK程序,同時(shí)運(yùn)行并打印跑分測(cè)試結(jié)果。
由于STM32F103自帶Prefetchbuff ,所以以下會(huì)有開(kāi)和不開(kāi)的兩個(gè)跑分。
測(cè)試項(xiàng)目及文件函數(shù)解讀:
---注:花一點(diǎn)篇幅介紹下測(cè)試代碼,普通讀者可以略去直接跳到后面測(cè)試結(jié)果,測(cè)試程序,可以聯(lián)系官網(wǎng)下載。
1、鏈接列表
(1)概要
core_list_join.c
函數(shù):
(2)描述
此Benchmark所做的項(xiàng)目 1.將一個(gè)項(xiàng)目插入列表2.從列表中刪除一個(gè)項(xiàng)目。3.撤銷刪除操作。4.在列表中找到一個(gè)項(xiàng)目5.反轉(zhuǎn)一個(gè)列表6.在不遞歸的情況下對(duì)列表進(jìn)行排序。
雖然增加了間接訪問(wèn)數(shù)據(jù)的級(jí)別,但這種結(jié)構(gòu)是現(xiàn)實(shí)的,可用于許多用于中小型列表的嵌入式應(yīng)用程序。
列表本身將在將被傳遞給初始化函數(shù)的一塊內(nèi)存上初始化。盡管通常鏈表使用malloc作為新節(jié)點(diǎn),但嵌入式應(yīng)用程序有時(shí)會(huì)直接控制小數(shù)據(jù)結(jié)構(gòu)(如數(shù)組和列表)的內(nèi)存以避免系統(tǒng)調(diào)用的開(kāi)銷,因此這種方法是現(xiàn)實(shí)的。
鏈表將被初始化,以使得列表指針的四分之一指向存儲(chǔ)器中的順序區(qū)域,并且列表指針的三分之一以非順序方式分布。這樣做是為了模擬一個(gè)鏈接列表,其中添加/刪除操作會(huì)暫時(shí)中斷整齊的順序,然后一系列可能來(lái)自連續(xù)內(nèi)存位置的添加。
對(duì)于基準(zhǔn)本身:
將執(zhí)行多個(gè)查找操作。這些查找操作可能會(huì)導(dǎo)致整個(gè)列表被遍歷。每次查找的結(jié)果將成為輸出鏈的一部分。列表將使用基于data16值的合并排序進(jìn)行排序,然后根據(jù)列表的一部分導(dǎo)出data16項(xiàng)目的CRC。CRC將成為產(chǎn)品鏈的一部分。
列表將使用基于idx值的合并排序再次排序。這種排序?qū)⒈WC列表在離開(kāi)函數(shù)之前返回到主狀態(tài),這樣函數(shù)的多次迭代將具有相同的結(jié)果。列表部分的data16的CRC將再次被計(jì)算并成為輸出鏈的一部分。
每個(gè)單元中的實(shí)際數(shù)據(jù)16將根據(jù)單個(gè)16b輸入進(jìn)行偽隨機(jī)編碼,這些輸入在編譯時(shí)無(wú)法確定。此外,用于CRC的列表部分也將傳遞給該函數(shù),并根據(jù)在運(yùn)行時(shí)無(wú)法確定的輸入來(lái)確定。
使用鏈接列表的基準(zhǔn)。鏈接列表是許多應(yīng)用程序中使用的常見(jiàn)數(shù)據(jù)結(jié)構(gòu)。就我們的目的而言,這將鍛煉處理器的內(nèi)存單元。特別是使用列表指針來(lái)查找和更改數(shù)據(jù)。
相反,被傳入的內(nèi)存塊用于創(chuàng)建一個(gè)列表,并且該基準(zhǔn)會(huì)小心不要添加更多項(xiàng)目,然后可以通過(guò)內(nèi)存塊調(diào)整。移植層將確保我們有一個(gè)有效的內(nèi)存塊。
所有操作均已完成,無(wú)需使用任何額外內(nèi)存。
2、矩陣操縱基準(zhǔn)
(1)概要
(2)描述
Matrixmanipulation benchmark,這個(gè)非常簡(jiǎn)單的算法構(gòu)成了許多更復(fù)雜算法的基礎(chǔ)。緊密的內(nèi)部循環(huán)是許多優(yōu)化(編譯器以及基于硬件)的重點(diǎn),因此與嵌入式處理相關(guān)。
它所做的測(cè)試包含1.用一個(gè)常數(shù)乘以一個(gè)矩陣。2.為矩陣的所有元素添加一個(gè)常量值。3.用一個(gè)矢量乘一個(gè)矩陣。4.用矩陣乘以一個(gè)矩陣。5.將矩陣乘以矩陣。6.并從結(jié)果中提取一些bits。
總可用數(shù)據(jù)空間將被分為3部分
NxN矩陣A 用較小的值初始化(上部3/4位全部為零)。
NxN矩陣B 初始化為中等值(上半部分全部為零)。
NxN矩陣C 用于結(jié)果。
A和B的實(shí)際值必須根據(jù)編譯時(shí)不可用的輸入來(lái)派生。
1、狀態(tài)機(jī)基準(zhǔn)
(1)概要
core_state.c
函數(shù):
(2)描述
許多嵌入式產(chǎn)品都使用這種簡(jiǎn)單的狀態(tài)機(jī)。對(duì)于更復(fù)雜的狀態(tài)機(jī),有時(shí)會(huì)使用狀態(tài)轉(zhuǎn)換表實(shí)現(xiàn),而直接編碼的交易速度易于維護(hù)。由于在CoreMark中使用狀態(tài)機(jī)的主要目的是為了鍛煉switch/if的運(yùn)轉(zhuǎn)情況,我們使用的是小型moore機(jī)器。特別是,這臺(tái)機(jī)器測(cè)試字符串輸入的類型,試圖確定輸入是數(shù)字還是別的東西。
測(cè)試結(jié)果:
前三名CoreMark分?jǐn)?shù)
HK32F103VET6 238 分
AT32F413RCT7 215 分
GD32F103VET6 209 分
是不是跟小編一樣很是意外,我們一一來(lái)看后面的數(shù)據(jù)。
STM32F103的跑分結(jié)果,沒(méi)什么好說(shuō),直接上圖。 開(kāi)了Prefetchbuff 跑分多了近50分。
兆易創(chuàng)新GD32 MCU是中國(guó)高性能通用微控制器領(lǐng)域的先期領(lǐng)跑者,國(guó)內(nèi)第一個(gè)推出的Arm Cortex-M3及Cortex-M4 內(nèi)核通用MCU產(chǎn)品系列,19個(gè)系列300余款產(chǎn)品,當(dāng)之無(wú)愧的ST以外的市場(chǎng)佼佼者。這次橫向評(píng)測(cè)的型號(hào)GD32F103 采用的雙DIE設(shè)計(jì)。(2019最新的E系是單DIE,但代碼不兼容)GD的FLASH跟MCU合封,這個(gè)設(shè)計(jì)最直接的劣勢(shì)就是效率低,功耗大。因?yàn)閮深wDIE, MCU跟FLASH分開(kāi),取址效率,程序執(zhí)行效率低,功耗變大。但GD每顆型號(hào)都多加了32K 甚至更大的RAM,上電就把FLASH里的程序放到 RAM里面,這也是GD宣傳主打的所謂的 Flash零等待技術(shù),沒(méi)有了提取指令的時(shí)間,通過(guò)這個(gè)設(shè)計(jì)來(lái)彌補(bǔ)硬件架構(gòu)上的硬傷。但弊端也很明顯,成本高,且超出RAM的部分程序,代碼執(zhí)行效率就非常非常低了。此次測(cè)試程序代碼大小應(yīng)該完全是在RAM能提取的部分內(nèi)。測(cè)試之前,猜測(cè)GD應(yīng)該跑分最高。果然GD跑分209分,至于排名第三,是不是因?yàn)槌绦蚝蛿?shù)據(jù)共用一個(gè)RAM?
雅特力是位于重慶的一家微控制器芯片(MCU)設(shè)計(jì)公司,專攻32位 ARM Cortex?-M4 MCU產(chǎn)品, 也是***UMC旗下投資的公司,這次橫向評(píng)測(cè)采用的雅特力芯片AT32F413 也是本次所有測(cè)試芯片MCU里面唯一一個(gè)M4核的芯片。雅特力采用M4高性能 高主頻 先進(jìn)工藝制程 ,用M4降維兼容ST的 M3系列。主打就是高性能路線。M4的優(yōu)勢(shì)就不過(guò)多介紹,內(nèi)核帶單精度浮點(diǎn)運(yùn)算單元(FPU),支持所有ARM ? 單精度數(shù)據(jù)處理指令和數(shù)據(jù)類型,更快的處理速度,浮點(diǎn)運(yùn)算能力,綜合效率M4遠(yuǎn)超M3。測(cè)試之前,小編猜測(cè)應(yīng)該雅特力是最高跑分的競(jìng)爭(zhēng)者之一,果然跑分215分 排名第二。
航順芯片,說(shuō)實(shí)話在2018年之前開(kāi)發(fā)布會(huì),沙龍,展覽因?yàn)闃I(yè)界看不懂褒貶不一,2019年在深圳國(guó)際嵌入式展會(huì)廣場(chǎng)巨大廣告牌“打出通用/專用32位MCU/SOC孵化100+MCU原廠”血紅的“中國(guó)科學(xué)院 深圳市產(chǎn)業(yè)基金 中國(guó)航空工業(yè)集團(tuán)聯(lián)合打造”被吸引。對(duì)于國(guó)人很多夸張的宣傳,什么最牛,第一,最穩(wěn)定,功耗最低,小編其實(shí)是不感冒的,但是航順這幾年逐步占領(lǐng)市場(chǎng)越來(lái)越多的得到客戶好評(píng)而好奇產(chǎn)生沖動(dòng)一探究竟。說(shuō)太多吹太多沒(méi)有用,不服來(lái)干。小編一直是這種事實(shí)說(shuō)話的態(tài)度。在展會(huì)上向航順芯片申請(qǐng)樣品,航順接待人員非常熱情,大方提供各種M0 M3 M4樣品,此次測(cè)試前基本完全不太看好,但跑分卻是本次最大的黑馬,238分第一,確實(shí)大跌眼鏡,大大超乎意料。怪不得國(guó)企央企國(guó)資都聯(lián)合背書站臺(tái),估計(jì)他們看中的就是航順的核心技術(shù)能力,此前業(yè)界各種褒貶和友商互相抬高自己打壓同行航順依然一邊營(yíng)銷建立品牌一邊地推得到很多客戶認(rèn)可,航順核心技術(shù)能力他們應(yīng)該胸有成竹。但有意打探航順幾位創(chuàng)始人,他們都表示不太方便透露,跑分 性能穩(wěn)定性 兼容性 功耗低 抗干擾等綜合水平好不好其實(shí)非常簡(jiǎn)單,應(yīng)用客戶一測(cè)試就知道。翻閱了下HK的芯片手冊(cè),新加入的cache 可以提升指令效率,但cache也才1K。至于跑分這么高的原因,小編也只能猜測(cè)是不是采用了什么黑科技,CPU跟MEMORY的架構(gòu)優(yōu)化做到了很極致。
中微愛(ài)芯是中科芯控股旗下的,中字頭,中規(guī)中矩,跑分也中規(guī)中矩。此次跑分是國(guó)產(chǎn)唯一家開(kāi)Prefetchbuff和不開(kāi) Prefetchbuff分?jǐn)?shù)有差異的。各項(xiàng)分?jǐn)?shù)也是跟ST差不多。開(kāi)Prefetchbuff居然還比ST低了幾分 171分。從純模仿的角度,是比較完全按照ST的方式。其余幾家國(guó)產(chǎn)基本都擯棄了prefetchbuff的做法。我有更快的速度,有cache,有M4,開(kāi)不開(kāi)都已經(jīng)從跑分碾壓上完全體現(xiàn)了,完全的模仿有沒(méi)有必要?當(dāng)然這只是芯片眾多細(xì)節(jié)的一點(diǎn)。
最后, 國(guó)內(nèi)芯片Coremark跑分都超過(guò)了ST,這點(diǎn)很欣慰 (中微愛(ài)芯開(kāi)prefetchbuff 的跑分比ST差一點(diǎn)點(diǎn))。但這完全得益于后發(fā)優(yōu)勢(shì),新的架構(gòu)和新的工藝。有喜有憂,畢竟STM32F103已是十年前的芯片了,國(guó)產(chǎn)芯片仍然任重道遠(yuǎn)。
2007年STM32首發(fā), 中途歷經(jīng).18, .13的工藝,改了幾版到現(xiàn)在的版本也是十年前的事了。STM32之父、意法半導(dǎo)體微控制器事業(yè)部Daniel Colonna曾說(shuō)過(guò),“十年前我們選擇了蝴蝶作為STM32的代表Logo,意味著我們要利用STM32,為工程師、開(kāi)發(fā)者們釋放更多創(chuàng)造力?!?如今這只蝴蝶扇動(dòng)了STM32芯片占據(jù)全球市場(chǎng)半壁江山的份額,這幾年國(guó)產(chǎn)芯片把STM32作為模仿對(duì)標(biāo)學(xué)習(xí)的對(duì)象當(dāng)之無(wú)愧。
記得曾和一個(gè)朋友聊天,這么多家仿STM32的芯片。哪家做的最好?國(guó)產(chǎn)芯片和國(guó)外芯片的差距,到底在哪里?仿STM32,軟硬件完全兼容,市場(chǎng)替換快?客戶接受度高? 小編的看法確是,模仿或許只是一個(gè)切入口。明星模仿秀,比如模仿張學(xué)友,一個(gè)活生生的自然人硬要做到一模一樣,甚至連吃飯走路都刻意要做成一樣,最后把自身很多優(yōu)點(diǎn)習(xí)慣都丟掉,甚至走路說(shuō)話都不正常,這到底是好還是不好?從模仿的角度切入,方便客戶替換,便于開(kāi)發(fā)者上手這點(diǎn)很好,但不同的設(shè)計(jì)架構(gòu)電路IP理念,不同時(shí)期的工藝,純粹為了模仿而模仿,甚至降維降級(jí)去做兼容,有時(shí)候討好的不一定是終端使用者,反而是芯片設(shè)計(jì)本身的一種浪費(fèi)和冗雜。模仿卻不全仿,抄襲但可以逆襲。同樣作為終端應(yīng)用者的我們也要給與國(guó)產(chǎn)芯片更多的耐心與包容,國(guó)產(chǎn)替換的過(guò)程,一行代碼不兼容,一個(gè)配置設(shè)定不同,就質(zhì)疑芯片本身,或許使用者本身完全也不全會(huì)測(cè)試和應(yīng)用,甚至是外行,過(guò)多的關(guān)注產(chǎn)品銷售和客戶本身,卻忽略了芯片和方案應(yīng)用的源本。就像航順,中微等等國(guó)產(chǎn)剛出來(lái)的時(shí)候被質(zhì)疑被互損詆毀一樣,或許有時(shí)候不是芯片不好,是你應(yīng)用不好。這次跑分的結(jié)果或許也能說(shuō)明某些。中國(guó)芯不僅僅是一種情懷,也更需要更包容和更理解的土壤,需要更多的應(yīng)用者使用者去嘗試去參與去等待去共同進(jìn)步。
創(chuàng)新,革新,做好自己,做更好的自己。從模仿到創(chuàng)新,從抄襲到逆襲。此次的測(cè)評(píng)跑分國(guó)產(chǎn)芯片全面超越ST,除了后發(fā)優(yōu)勢(shì),國(guó)產(chǎn)芯片的創(chuàng)新,加入cache,M4,程序RAM,跑分全面超越國(guó)外芯片。但愿我們能看到一個(gè)新的芯時(shí)代的開(kāi)啟。
跑分是衡量MCU芯片性能的一個(gè)非常非常重要標(biāo)準(zhǔn),但不是唯一標(biāo)準(zhǔn),下期將從另外維度評(píng)測(cè)。由于測(cè)試的環(huán)境外設(shè),軟件硬件的不兼容性,為了確保測(cè)試公平一致性,某些代碼不兼容的國(guó)產(chǎn)芯片(靈動(dòng) 華大等等)此期暫時(shí)不在本文列出。(類似華為手機(jī)小米手機(jī)跑分比賽,都是安卓平臺(tái),有較強(qiáng)的可比性。蘋果自建生態(tài)跑分的參考性就會(huì)有換算的條件)
評(píng)論