《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM Cortex-M3核的SoC架構(gòu)設(shè)計(jì)及性能分析
基于ARM Cortex-M3核的SoC架構(gòu)設(shè)計(jì)及性能分析
來(lái)源:電子技術(shù)應(yīng)用2012年第8期
陶友龍,趙安璞,陳海波
東南大學(xué) 國(guó)家ASIC系統(tǒng)工程技術(shù)研究中心(無(wú)錫),江蘇 無(wú)錫214135
摘要: 主要研究了基于ARM Cortex-M3核的SoC設(shè)計(jì)方法及不同架構(gòu)對(duì)芯片整體性能的影響。首先從Cortex-M3的結(jié)構(gòu)特點(diǎn)尤其是總線結(jié)構(gòu)特點(diǎn)出發(fā),分析了基于該核的SoC架構(gòu)設(shè)計(jì)的要點(diǎn)。然后通過(guò)EEMBC的CoreMark程序,對(duì)實(shí)際流片的一款Cortex-M3核芯片進(jìn)行了性能測(cè)試,并與STM32F103 MCU的測(cè)試結(jié)果進(jìn)行了對(duì)比,通過(guò)實(shí)例說(shuō)明了不同芯片架構(gòu)對(duì)性能的影響。最后,對(duì)影響SoC芯片性能的因素,包括芯片架構(gòu)、存儲(chǔ)器速度、工藝、主頻等進(jìn)行了分析和總結(jié)。
中圖分類(lèi)號(hào): TN403
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)08-0053-03
Design and performance analysis of SoC architecture based on ARM Cortex-M3
Tao Youlong,Zhao Anpu,Chen Haibo
National ASIC System Engineering Research Center(Wuxi), Southeast University, Wuxi 214135,China
Abstract: The method of how to design SoC with ARM Cortex-M3 core is carefully studied, and the relationship between chip architecture and performance is also analyzed. Firstly, the essentials of SoC design with Cortex-M3 are presented based on the core′s structural features, especially the bus structure feature. Then, with the help of CoreMark program from EEMBC, the performance of a chip with Cortex-M3 core is tested after tape-out, and also compared with the test results of STM32F103 MCU in order to illustrate different architectures′ effects on chips′ performance. At last, the factors which affect the performance of SoC, including chip architecture, memory speed, process and frequency, are analyzed and summarized.
Key words : chip architecture;System on Chip(SoC);Cortex-M3;CoreMark

    ARM Cortex系列是ARM公司推出的基于ARMv7架構(gòu)、使用高性能的Thumb-2指令集的32位嵌入式微處理器核。主要有三種款式,分別是Cortex-A、Cortex-R和Cortex-M。其中Cortex-M系列主要用于低功耗、低成本的嵌入式應(yīng)用。本文用于SoC(System on Chip)設(shè)計(jì)的Cortex-M3核便屬于該系列。該處理器核憑借其高性能、低功耗、低成本和開(kāi)發(fā)方便等特點(diǎn),受到了各廠商的青睞。STMicroelectronics、NXP Semiconductors、ATMEL等都競(jìng)相推出各自基于Cortex-M3核的SoC。由于Cortex-M3核的結(jié)構(gòu)與傳統(tǒng)ARM核有很大區(qū)別,因此基于Cortex-M3的SoC架構(gòu)設(shè)計(jì)也有與以往不同的特點(diǎn)。不同的架構(gòu)對(duì)芯片整體性能影響很大。本文使用CoreMark對(duì)實(shí)際芯片作了性能測(cè)試,其結(jié)果證明了SoC架構(gòu)對(duì)芯片性能的影響。

1 Cortex-M3核SoC架構(gòu)設(shè)計(jì)
1.1 總線接口

    處理器核對(duì)SoC架構(gòu)最大的影響是其總線接口。傳統(tǒng)的ARM處理器使用單一總線接口。如ARM7處理器采用馮諾依曼結(jié)構(gòu),指令和數(shù)據(jù)共用一條總線,從而核外部為單總線接口[1];ARM9雖然使用了哈佛結(jié)構(gòu),核內(nèi)部指令總線和數(shù)據(jù)總線分開(kāi),但這兩條總線共用同一存儲(chǔ)空間,且在核外共用同一總線接口[2]。使用單一總線接口的弊端是取指和取數(shù)據(jù)無(wú)法并行執(zhí)行,效率相對(duì)較低。
    Cortex-M3的結(jié)構(gòu)如圖1所示。Cortex-M3采用了多總線結(jié)構(gòu),在核外有ICode、DCode、System三個(gè)總線接口[3]。其中,ICode和DCode總線接口使得在地址空間Code區(qū)中的取指和取數(shù)據(jù)分開(kāi)并行執(zhí)行,而System總線使得在地址空間SRAM區(qū)中的取指和取數(shù)據(jù)使用同一總線接口,無(wú)法并行執(zhí)行。

1.2 SoC架構(gòu)設(shè)計(jì)
    由Cortex-M3的結(jié)構(gòu)特點(diǎn)可以看出,Cortex-M3不適合像傳統(tǒng)ARM處理器那樣將代碼由Flash搬移到RAM來(lái)提高效率,那樣反而可能會(huì)降低效率(由于SRAM區(qū)中的取指和取數(shù)據(jù)使用同一總線接口)。而Cortex-M3是將代碼和只讀數(shù)據(jù)放在Flash中,程序執(zhí)行時(shí)將可讀寫(xiě)數(shù)據(jù)放在RAM中,從而獲得最高效率。
    基于以上考慮,設(shè)計(jì)Cortex-M3核的SoC時(shí),最好將片上Flash掛接在ICode和DCode總線上,即0x00000000~0x20000000地址空間,如圖2所示,將片上SRAM掛接在System總線上,即0x20000000~0x40000000地址空間。這樣從Flash中取指和取只讀數(shù)據(jù)可以分別通過(guò)ICode和DCode總線并行執(zhí)行,提高了Flash的讀取效率。而對(duì)SRAM中的數(shù)據(jù)讀寫(xiě)通過(guò)System總線進(jìn)行。三條總線各自分工,使得SoC性能大大提高。

1.3 自主設(shè)計(jì)的Cortex-M3核SoC
    實(shí)驗(yàn)室自主設(shè)計(jì)了一款基于Cortex-M3核的SoC,并采用0.18 ?滋m CMOS工藝流片成功。如圖3所示,芯片的片上Flash從0x20000000開(kāi)始,共256 KB;片上SRAM從0x30000000開(kāi)始,共96 KB。其架構(gòu)特點(diǎn)是片上Flash和片上SRAM均處于0x20000000~0x40000000地址空間,即掛接在System總線上,但兩者均可再映射Remap到0地址,即可掛接到ICode和DCode總線上。

    默認(rèn)情況下片上SRAM可Remap到0地址,這意味著SRAM默認(rèn)擁有0x00000000和0x30000000兩個(gè)起始地址。因此,將代碼放在SRAM中時(shí),若從0x00000000地址開(kāi)始執(zhí)行,則處理器通過(guò)ICode和DCode總線來(lái)訪問(wèn)SRAM;若從0x30000000地址開(kāi)始執(zhí)行,則處理器通過(guò)System總線來(lái)訪問(wèn)SRAM。下面將利用這特一點(diǎn)來(lái)進(jìn)行性能分析。
2 性能測(cè)試及分析
2.1 CoreMark簡(jiǎn)介

    傳統(tǒng)的嵌入式微處理器性能測(cè)試普遍采用Dhrystone程序,WEICKER R P通過(guò)統(tǒng)計(jì)程序中常用的操作及其所占比例,構(gòu)建了一個(gè)測(cè)試基準(zhǔn),并經(jīng)過(guò)多次完善,才得到了Dhrystone程序[4]。但Dhrystone程序本身過(guò)于簡(jiǎn)單,并不能準(zhǔn)確反映處理器運(yùn)行實(shí)際應(yīng)用程序時(shí)的性能。
    EEMBC組織自成立之初就打算制定一種能夠代替Dhrystone并能更好地測(cè)量嵌入式微處理器性能的標(biāo)準(zhǔn)。但由于EEMBC的程序和認(rèn)證一般都是收費(fèi)的,所以其發(fā)布的測(cè)試程序一直沒(méi)能得到很好的普及。直到其發(fā)布了完全公開(kāi)和免費(fèi)的CoreMark程序,才逐漸改變這一局面,并有取代Dhrystone的趨勢(shì)。CoreMark是一個(gè)雖代碼量小但很復(fù)雜的測(cè)試程序,通過(guò)執(zhí)行應(yīng)用程序中常用的數(shù)據(jù)結(jié)構(gòu)和算法來(lái)測(cè)試處理器性能,其內(nèi)容包括鏈表操作、矩陣運(yùn)算和CRC校驗(yàn)等,可以更好地反映處理器運(yùn)行實(shí)際應(yīng)用程序時(shí)的性能。本文采用CoreMark來(lái)測(cè)試SoC的性能。
2.2 自主設(shè)計(jì)SoC的性能測(cè)試
    使用Keil開(kāi)發(fā)環(huán)境:將CoreMark程序放在芯片的片上SRAM中,分別設(shè)置從片上SRAM的兩個(gè)起始地址執(zhí)行,其在72 MHz主頻時(shí)的測(cè)試結(jié)果如表1所示。


    可見(jiàn),對(duì)于同一片上SRAM存儲(chǔ)器,從0x00000000地址訪問(wèn)執(zhí)行比從0x30000000地址訪問(wèn)執(zhí)行時(shí)的處理器性能要高出約20%。因此,使用ICode和DCode總線取指和取只讀數(shù)據(jù)比使用System總線性能要高。在今后的設(shè)計(jì)中將取消Remap,直接將片上Flash放在從0x00000000開(kāi)始的空間,將片上SRAM放在從0x30000000開(kāi)始的空間,實(shí)現(xiàn)取指、取只讀數(shù)據(jù)、取可讀寫(xiě)數(shù)據(jù)并行執(zhí)行,從而達(dá)到最佳性能。
2.3 STM32F103性能測(cè)試
    意法半導(dǎo)體的STM32系列MCU是目前市場(chǎng)上最常見(jiàn)的Cortex-M3核SoC之一,該系列中的STM32F103架構(gòu)如圖4所示[5]。該芯片的片上Flash掛接在ICode和DCode總線上,片上SRAM掛接在System總線上。其中ICode總線直通Flash,而DCode總線和System總線通過(guò)一個(gè)總線矩陣分別連接到片上Flash和片上SRAM及其余外設(shè)。此外,STM32采用了一個(gè)64 bit的Flash,并使用了一個(gè)2×64 bit的緩沖器,一次可緩存128 bit數(shù)據(jù),從而大大降低了Flash的訪問(wèn)頻率,彌補(bǔ)了Flash速度較慢的缺陷,使得取指和取只讀數(shù)據(jù)的速度大大提高。該架構(gòu)與前述分析基本一致,故可以保證最佳性能。

 

 

    可見(jiàn),STM32F103在片上Flash中執(zhí)行代碼的性能超過(guò)了在片上SRAM中的性能。主要原因是在片上Flash中執(zhí)行時(shí),三條總線合作分工,加之Flash本身位寬較大(64 bit),且外部有2×64 bit緩沖器,因此效率很高,代碼在片上Flash中執(zhí)行的性能可以與在片上SRAM中執(zhí)行時(shí)相當(dāng)。
    與實(shí)驗(yàn)室自主設(shè)計(jì)的SoC相比,兩芯片在片上SRAM中執(zhí)行代碼的性能幾乎相同。這是因?yàn)閮烧呔皇褂肧ystem總線對(duì)SRAM進(jìn)行訪問(wèn),且兩芯片的SRAM存取速度均跟得上Cortex-M3核對(duì)其訪問(wèn)的速度。但如表1所示,自主設(shè)計(jì)的SoC在片上Flash中執(zhí)行代碼的性能還不到STM32F103的一半,原因是所使用的Flash本身速度較低、位寬較低(2×16 bit),且沒(méi)有采用外部高位寬緩沖器等手段減少訪存頻率,再加上測(cè)試時(shí)Flash掛接在System總線上,因此Flash的性能成為了所設(shè)計(jì)SoC的性能瓶頸。
3 影響SoC性能因素
    (1)芯片架構(gòu):由以上分析可見(jiàn),芯片架構(gòu)對(duì)SoC性能有很大的影響。要想獲得最佳性能,關(guān)鍵是要深入了解所用處理器核的結(jié)構(gòu)特點(diǎn),再據(jù)其采用合適的芯片架構(gòu)。
    (2)存儲(chǔ)器速度:存儲(chǔ)器速度尤其是Flash速度也是限制SoC性能的一個(gè)關(guān)鍵因素。存儲(chǔ)器速度越慢,CPU需要插入的等待周期就越多,效率就越低。這一點(diǎn)在上述自主設(shè)計(jì)的SoC中就不夠好,需要在Flash部分作大的改進(jìn)。而STM32在這方面做得很好,通過(guò)加大存儲(chǔ)器位寬和增加緩沖器使Flash不會(huì)成為芯片性能的瓶頸。
    (3)工藝:工藝對(duì)存儲(chǔ)器速度及芯片整體性能的影響是顯而易見(jiàn)的,更先進(jìn)的工藝意味著更高的性能。但提升工藝同時(shí)意味著增加流片成本,故需根據(jù)實(shí)際情況考慮。
    (4)主頻:主頻越高,意味著同一段時(shí)間內(nèi)可以執(zhí)行更多的指令,即測(cè)試結(jié)果CoreMark總分提升,但CoreMark/MHz沒(méi)變。此外,若Flash速度跟不上,則會(huì)將最高性能限制住,提升主頻不但不會(huì)提高整體性能,反而還會(huì)降低效率,即測(cè)試結(jié)果CoreMark總分不變,CoreMark/MHz反而降低。
    本文主要研究了基于ARM Cortex-M3核的SoC架構(gòu)設(shè)計(jì),重點(diǎn)分析了處理器核的總線接口對(duì)芯片架構(gòu)設(shè)計(jì)的影響。采用CoreMark程序,對(duì)實(shí)驗(yàn)室自主設(shè)計(jì)的一款Cortex-M3核SoC以及意法半導(dǎo)體的STM32F103 MCU進(jìn)行了性能測(cè)試及分析,說(shuō)明了芯片架構(gòu)對(duì)性能的影響。最后,對(duì)影響SoC性能的因素作了總結(jié)。對(duì)高性能的Cortex-M3核SoC設(shè)計(jì)有著指導(dǎo)作用,對(duì)一般的SoC設(shè)計(jì)也有借鑒意義。
參考文獻(xiàn)
[1] ARM Ltd..ARM7TDMI Technical Reference Manual  Revision:r4p1,2004.
[2] ARM Ltd..ARM920T Technical Reference Manual Rev 1,2001.
[3] ARM Ltd..Cortex-M3 Technical Reference Manual  Revision:r2p1,2010.
[4] WEICKER R P.Dhrystone:A synthetic systems programming  benchmark[J].Communications of the ACM,1984,27(10):1013-1030.
[5] ST Microelectronics Ltd..STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx and STM32F107xx advanced  ARM-based 32-bit MCUs Reference manual Rev 11,2010.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。