哪種ARM Cortex內(nèi)核更適合我的應(yīng)用,?
ARM Cortex內(nèi)核系列提供非常廣泛的具有可擴(kuò)展性的性能選項(xiàng),設(shè)計(jì)人員有機(jī)會(huì)在多種選項(xiàng)中選擇最適合自身應(yīng)用的內(nèi)核,而非千篇一律的采用同一方案。Cortex系列組合大體上分為三種類別:
● Cortex-A—面向性能密集型系統(tǒng)的應(yīng)用處理器內(nèi)核
● Cortex-R—面向?qū)崟r(shí)應(yīng)用的高性能內(nèi)核
● Cortex-M—面向各類嵌入式應(yīng)用的微控制器內(nèi)核
Cortex-A處理器為利用操作系統(tǒng)(例如Linux或者Android)的設(shè)備提供了一系列解決方案,這些設(shè)備被用于各類應(yīng)用,從低成本手持設(shè)備到智能手機(jī)、平板電腦、機(jī)頂盒以及企業(yè)網(wǎng)絡(luò)設(shè)備等。早期的Cortex-A系列處理器(A5、A7、A8、A9、A12、A15和A17)基于ARMv7-A架構(gòu)。每種內(nèi)核都共享相同的功能集,例如NEON媒體處理引擎、Trustzone安全擴(kuò)展、單精度和雙精度浮點(diǎn)支持、以及對(duì)多種指令集(ARM、Thumb-2、Thumb、Jazelle和DSP)的支持。與此同時(shí),這些處理器也具有極高的設(shè)計(jì)靈活性,能夠提供所需的最佳性能和預(yù)期的功效。
盡管Cortex-A5內(nèi)核是Cortex A系列中體積和功耗都最低的成員,但它擁有支持多核性能的潛能,并且與該系列中的高級(jí)成員(A9和A15)兼容。對(duì)于那些之前采用ARM926EJ-S或ARM1176JZ-S處理器的設(shè)計(jì)人員來說,選擇A5是自然的,因?yàn)樗哂懈叩男阅芎透偷男酒杀尽?/p>
Cortex-A7在功耗和體積上與Cortex-A5相似,但其性能提升20%左右,且與Cortex-A15和Cortex-A17有完全的架構(gòu)兼容性。Cortex-A7是成本敏感型智能手機(jī)和平板電腦的理想選擇,而且它還可以與Cortex-A15或Cortex-A17組合使用,形成ARM稱為“big.LITTLE”的處理結(jié)構(gòu)。big.LITTLE結(jié)構(gòu)實(shí)質(zhì)上是一種功耗優(yōu)化技術(shù);高性能CPU(例如Cortex-A17)和高效率CPU(例如Cortex-A7)的組合配置能夠提供更高的持久性能,同時(shí)因?yàn)楦咝У膬?nèi)核很好的滿足了應(yīng)用對(duì)中低性能的需求,這種組合還顯著節(jié)省整體功耗,節(jié)省75%的CPU耗能,并且延長電池的使用壽命。智能手機(jī)和平板電腦的性能需求發(fā)展遠(yuǎn)比電池容量的增長快得多,因此這種配置帶給開發(fā)人員明顯的優(yōu)勢。諸如big.LITTLE等設(shè)計(jì)方法,作為整體系統(tǒng)設(shè)計(jì)策略的一部分,能夠顯著降低這種電池技術(shù)造成的差距。
接下來讓我們看看Cortex-A系列處理器中的高級(jí)別產(chǎn)品——Cortex-A15和Cortex-A17內(nèi)核。這兩款內(nèi)核都是高性能處理器,也可用于多種配置中。Cortex-A17是最高效的“中級(jí)”處理器,直接針對(duì)高端智能手機(jī)和平板電腦。Cortex-A9曾廣泛應(yīng)用于這個(gè)市場,但與Cortex-A9相比,Cortex-A17性能提升了60%以上(循環(huán)周期),同時(shí)也改善了整體功效。Cortex-A17能夠配置多達(dá)四個(gè)內(nèi)核,每個(gè)內(nèi)核都包含一個(gè)完整的亂序流水線。如前面提到的,Cortex-A17 可與Cortex-A7組合成高效的big.LITTLE配置,還可以搭配高端移動(dòng)圖形處理器(例如來自ARM的MALI),構(gòu)成非常高效的設(shè)計(jì)整體。
Cortex-A15是該系列處理器中性能最高的成員,是Cortex-A9性能(移動(dòng)配置模式)的兩倍。不僅完全勝任高端智能手機(jī)或平板電腦這樣的應(yīng)用,而且運(yùn)行速率可高達(dá)2.5GHz的多核Cortex-A15處理器也能夠支撐低功耗服務(wù)器或無線基礎(chǔ)設(shè)施等應(yīng)用。Cortex-A15是ARM公司第一款對(duì)虛擬軟件環(huán)境中的數(shù)據(jù)管理和仲裁提供硬件支持的處理器。這些軟件環(huán)境中的應(yīng)用能夠同時(shí)訪問系統(tǒng)資源,實(shí)現(xiàn)虛擬環(huán)境中設(shè)備的可靠運(yùn)行和相互隔離。
最新成員Cortex-A50系列將Cortex-A系列的應(yīng)用范圍擴(kuò)大至低功耗服務(wù)器領(lǐng)域。這些處理器基于ARMv8架構(gòu),支持AArch64——高效能64位運(yùn)行態(tài)且可以與現(xiàn)行32位運(yùn)行態(tài)共存。升級(jí)到64位的原因之一顯而易見是為了支持大于4GB的物理內(nèi)存,盡管Cortex-A15和Cortex-A7已經(jīng)具備此能力。在這種情況下,升級(jí)到64位其實(shí)是為服務(wù)器應(yīng)用提供更好的支持,服務(wù)器中越來越多的操作系統(tǒng)和應(yīng)用程序都采用64位,當(dāng)然,Cortex-A50系列為上述情況提供了功耗優(yōu)化的解決方案。對(duì)于臺(tái)式機(jī)市場而言,情況也大體相同,支持64位意味著Cortex-A50系列能夠更廣泛地應(yīng)用到這一細(xì)分市場,而且某種程度證明了未來64位操作系統(tǒng)最終將遷移到移動(dòng)應(yīng)用。
介紹過Cortex-A,下面介紹Cortex-R系列——衍生產(chǎn)品中體積最小的ARM處理器,這一點(diǎn)也最不為人所知。Cortex-R處理器針對(duì)高性能實(shí)時(shí)應(yīng)用,例如硬盤控制器(或固態(tài)驅(qū)動(dòng)控制器)、企業(yè)中的網(wǎng)絡(luò)設(shè)備和打印機(jī)、消費(fèi)電子設(shè)備(例如藍(lán)光播放器和媒體播放器)、以及汽車應(yīng)用(例如安全氣囊、制動(dòng)系統(tǒng)和發(fā)動(dòng)機(jī)管理)。Cortex-R系列在某些方面與高端微控制器(MCU)類似,但是,針對(duì)的是比通常使用標(biāo)準(zhǔn)MCU的系統(tǒng)還要大型的系統(tǒng)。例如,Cortex-R4就非常適合汽車應(yīng)用。Cortex-R4主頻可以高達(dá)600MHz(具有2.45DMIPS/MHz),配有8級(jí)流水線,具有雙發(fā)送、預(yù)取和分支預(yù)測功能、以及低延遲中斷系統(tǒng),可以中斷多周期操作而快速進(jìn)入中斷服務(wù)程序。Cortex-R4還可以與另外一個(gè)Cortex-R4構(gòu)成雙內(nèi)核配置,一同組成一個(gè)帶有失效檢測邏輯的冗余鎖步(lock-step)配置,從而非常適合安全攸關(guān)的系統(tǒng)。
Cortex-R5能夠很好的服務(wù)于網(wǎng)絡(luò)和數(shù)據(jù)存儲(chǔ)應(yīng)用,它擴(kuò)展了Cortex-R4的功能集,從而提高了效率和可靠性,增強(qiáng)了可靠實(shí)時(shí)系統(tǒng)中的錯(cuò)誤管理。其中的一個(gè)系統(tǒng)功能是低延遲外設(shè)端口(LLPP),可實(shí)現(xiàn)快速外設(shè)讀取和寫入(而不必對(duì)整個(gè)端口進(jìn)行“讀取-修改-寫入”操作)。Cortex-R5還可以實(shí)現(xiàn)處理器獨(dú)立運(yùn)行的“鎖步(lock-step)”雙核系統(tǒng),每個(gè)處理器都能通過自己的“總線接口和中斷”執(zhí)行自己的程序。這種雙核實(shí)現(xiàn)能夠構(gòu)建出非常強(qiáng)大和靈活的實(shí)時(shí)響應(yīng)系統(tǒng)。
Cortex-R7極大擴(kuò)展了R系列內(nèi)核的性能范圍,時(shí)鐘速度可超過1GHz,性能達(dá)到3.77DMIPS/MHz。Cortex-R7上的11級(jí)流水線現(xiàn)在增強(qiáng)了錯(cuò)誤管理功能,以及改進(jìn)的分支預(yù)測功能。多核配置也有多種不同選項(xiàng):鎖步、對(duì)稱多重處理和不對(duì)稱多重處理。Cortex-R7還配有一個(gè)完全集成的通用中斷控制器(GIC)來支持復(fù)雜的優(yōu)先級(jí)中斷處理。不過,值得注意的是,雖然Cortex-R7具有高性能,但是它并不適合運(yùn)行那些特性豐富的操作系統(tǒng)(例如Linux和Android)的應(yīng)用,Cortex-A系列才更適合這類應(yīng)用。
最后,我們來討論Cortex-M系列,特別設(shè)計(jì)針對(duì)競爭已經(jīng)非常激烈的MCU市場。Cortex-M系列基于ARMv7-M架構(gòu)(用于Cortex-M3和Cortex-M4)構(gòu)建,而較低的Cortex-M0+基于ARMv6-M架構(gòu)構(gòu)建。首款Cortex-M處理器于2004年發(fā)布,當(dāng)一些主流MCU供應(yīng)商選擇這款內(nèi)核,并開始生產(chǎn)MCU器件后,Cortex-M處理器迅速受到市場青睞。可以肯定的說,Cortex-M之于32位MCU就如同8051之于8位MCU——受到眾多供應(yīng)商支持的工業(yè)標(biāo)準(zhǔn)內(nèi)核,各家供應(yīng)商采用該內(nèi)核加之自己特別的開發(fā),在市場中提供差異化產(chǎn)品。例如,Cortex-M系列能夠?qū)崿F(xiàn)在FPGA中作為軟核來用,但更常見的用法是作為集成了存儲(chǔ)器、時(shí)鐘和外設(shè)的MCU。在該系列產(chǎn)品中,有些產(chǎn)品專注最佳能效、有些專注最高性能、而有些產(chǎn)品則專門應(yīng)用于諸如智能電表這樣的細(xì)分市場。
Cortex-M3和Cortex-M4是非常相似的內(nèi)核。二者都具有1.25DMIPS/MHz的性能,配有3級(jí)流水線、多重32位總線接口、時(shí)鐘速率可高達(dá)200MHz,并配有非常高效的調(diào)試選項(xiàng)。最大的不同是,Cortex-M4的內(nèi)核性能針對(duì)的是DSP。Cortex-M3和Cortex-M4具有相同的架構(gòu)和指令集(Thumb-2)。然而,Cortex-M4增加了一系列特別針對(duì)處理DSP算法而優(yōu)化的飽和運(yùn)算和SIMD指令。以每0.5秒運(yùn)行一次的512點(diǎn)FFT為例,如果分別在同類量產(chǎn)的Cortex-M3 MCU和Cortex-M4 MCU上運(yùn)行,完成同樣的工作,Cortex-M3所需功耗約是Cortex-M4所需功耗的三倍。此外,也有在Cortex-M4上實(shí)現(xiàn)單精度浮點(diǎn)單元(FPU)的選項(xiàng)。如果應(yīng)用涉及到浮點(diǎn)計(jì)算,那在Cortex-M4上完成比在Cortex-M3上完成要快得多。也就是說,對(duì)于不使用Cortex-M4上DSP或FPU功能的應(yīng)用而言,其性能和功耗與Cortex-M3相同。換句話說,如果使用DSP功能,那就選擇Cortex-M4。否則,就選擇Cortex-M3完成工作。
對(duì)于成本特別敏感的應(yīng)用或者正在從8位遷移到32位的應(yīng)用而言,Cortex-M系列的最低端產(chǎn)品可能是最佳選擇。雖然Cortex-M0+的性能為0.95DMIPS/MHz,比Cortex-M3和Cortex-M4的性能稍稍低一些,但仍可與同系列其他高端產(chǎn)品兼容。Cortex-M0+采用Thumb-2指令集的子集,而且這些指令大都是16位操作數(shù)(雖然所有數(shù)據(jù)運(yùn)行都是32位的),這使得它們能夠很好的適應(yīng)Cortex-M0+所提供的2級(jí)流水線服務(wù)。通過減少分支映射,系統(tǒng)就能節(jié)約一些整體功耗,而且在大多數(shù)情況下,流水線將保留接下來的四個(gè)指令。Cortex-M0+還具有專用的總線用于單周期GPIO,這意味著你能夠利用位控制的GPIO實(shí)現(xiàn)確定接口,就像8位MCU那樣,但卻以32位內(nèi)核的性能來處理該數(shù)據(jù)。
Cortex-M0+的另外一個(gè)重要的不同特點(diǎn)是增加了微型跟蹤緩沖器(MTB)。該外設(shè)可使設(shè)計(jì)人員在調(diào)試過程中使用一些片上RAM來存儲(chǔ)程序分支。這些分支隨后能夠回傳到集成開發(fā)環(huán)境中,而且可以重建程序流程。這一功能提供了一種初步的指令跟蹤能力,這對(duì)于不具備擴(kuò)展跟蹤宏單元(ETM)功能的Cortex-M3和Cortex-M4來說比較有意義。從Cortex-M0+中提取的調(diào)試信息等級(jí)顯著高于8位MCU,這就意味著那些難以解決的調(diào)試問題變得更加容易解決。
綜上所述,Cortex處理器系列產(chǎn)品為滿足你的應(yīng)用性能需求而提供了多種選項(xiàng)。無需勞神費(fèi)力,也無論針對(duì)高端平板電腦還是物聯(lián)網(wǎng)中超低成本的無線傳感器節(jié)點(diǎn),你都能夠發(fā)現(xiàn)一款適合應(yīng)用所需的處理器。