找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于ARM Cortex-M3核的SoC架构设计及性能分析

[复制链接]
admin 发表于 2013-3-26 19:11:01 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 关键词: 芯片架构;片上系统;Cortex-M3;CoreMark
       ARM Cortex系列是ARM公司推出的基于ARMv7架构、使用高性能的Thumb-2指令集的32位嵌入式微处理器核。主要有三种款式,分别是Cortex-A、Cortex-R和Cortex-M。其中Cortex-M系列主要用于低功耗、低成本的嵌入式应用。本文用于SoC(System on Chip)设计的Cortex-M3核便属于该系列。该处理器核凭借其高性能、低功耗、低成本和开发方便等特点,受到了各厂商的青睐。STMicroelectronics、NXP Semiconductors、ATMEL等都竞相推出各自基于Cortex-M3核的SoC。由于Cortex-M3核的结构与传统ARM核有很大区别,因此基于Cortex-M3的SoC架构设计也有与以往不同的特点。不同的架构对芯片整体性能影响很大。本文使用CoreMark对实际芯片作了性能测试,其结果证明了SoC架构对芯片性能的影响。
1 Cortex-M3核SoC架构设计
1.1 总线接口

     处理器核对SoC架构最大的影响是其总线接口。传统的ARM处理器使用单一总线接口。如ARM7处理器采用冯诺依曼结构,指令和数据共用一条总线,从而核外部为单总线接口[1];ARM9虽然使用了哈佛结构,核内部指令总线和数据总线分开,但这两条总线共用同一存储空间,且在核外共用同一总线接口[2]。使用单一总线接口的弊端是取指和取数据无法并行执行,效率相对较低。
     Cortex-M3的结构如图1所示。Cortex-M3采用了多总线结构,在核外有ICode、DCode、System三个总线接口[3]。其中,ICode和DCode总线接口使得在地址空间Code区中的取指和取数据分开并行执行,而System总线使得在地址空间SRAM区中的取指和取数据使用同一总线接口,无法并行执行。
    20121107045231589413844.gif
   1.2 SoC架构设计
     由Cortex-M3的结构特点可以看出,Cortex-M3不适合像传统ARM处理器那样将代码由Flash搬移到RAM来提高效率,那样反而可能会降低效率(由于SRAM区中的取指和取数据使用同一总线接口)。而Cortex-M3是将代码和只读数据放在Flash中,程序执行时将可读写数据放在RAM中,从而获得最高效率。
     基于以上考虑,设计Cortex-M3核的SoC时,最好将片上Flash挂接在ICode和DCode总线上,即0x00000000~0x20000000地址空间,如图2所示,将片上SRAM挂接在System总线上,即0x20000000~0x40000000地址空间。这样从Flash中取指和取只读数据可以分别通过ICode和DCode总线并行执行,提高了Flash的读取效率。而对SRAM中的数据读写通过System总线进行。三条总线各自分工,使得SoC性能大大提高。
    20121107045231651913845.gif
   1.3 自主设计的Cortex-M3核SoC
     实验室自主设计了一款基于Cortex-M3核的SoC,并采用0.18 ?滋m CMOS工艺流片成功。如图3所示,芯片的片上Flash从0x20000000开始,共256 KB;片上SRAM从0x30000000开始,共96 KB。其架构特点是片上Flash和片上SRAM均处于0x20000000~0x40000000地址空间,即挂接在System总线上,但两者均可再映射Remap到0地址,即可挂接到ICode和DCode总线上。
    20121107045231745663846.gif
       默认情况下片上SRAM可Remap到0地址,这意味着SRAM默认拥有0x00000000和0x30000000两个起始地址。因此,将代码放在SRAM中时,若从0x00000000地址开始执行,则处理器通过ICode和DCode总线来访问SRAM;若从0x30000000地址开始执行,则处理器通过System总线来访问SRAM。下面将利用这特一点来进行性能分析。
2 性能测试及分析
2.1 CoreMark简介

     传统的嵌入式微处理器性能测试普遍采用Dhrystone程序,WEICKER R P通过统计程序中常用的操作及其所占比例,构建了一个测试基准,并经过多次完善,才得到了Dhrystone程序[4]。但Dhrystone程序本身过于简单,并不能准确反映处理器运行实际应用程序时的性能。
     EEMBC组织自成立之初就打算制定一种能够代替Dhrystone并能更好地测量嵌入式微处理器性能的标准。但由于EEMBC的程序和认证一般都是收费的,所以其发布的测试程序一直没能得到很好的普及。直到其发布了完全公开和免费的CoreMark程序,才逐渐改变这一局面,并有取代Dhrystone的趋势。CoreMark是一个虽代码量小但很复杂的测试程序,通过执行应用程序中常用的数据结构和算法来测试处理器性能,其内容包括链表操作、矩阵运算和CRC校验等,可以更好地反映处理器运行实际应用程序时的性能。本文采用CoreMark来测试SoC的性能。
2.2 自主设计SoC的性能测试
     使用Keil开发环境:将CoreMark程序放在芯片的片上SRAM中,分别设置从片上SRAM的两个起始地址执行,其在72 MHz主频时的测试结果如表1所示。
    20121107045231776913847.gif
   
     可见,对于同一片上SRAM存储器,从0x00000000地址访问执行比从0x30000000地址访问执行时的处理器性能要高出约20%。因此,使用ICode和DCode总线取指和取只读数据比使用System总线性能要高。在今后的设计中将取消Remap,直接将片上Flash放在从0x00000000开始的空间,将片上SRAM放在从0x30000000开始的空间,实现取指、取只读数据、取可读写数据并行执行,从而达到最佳性能。
2.3 STM32F103性能测试
     意法半导体的STM32系列MCU是目前市场上最常见的Cortex-M3核SoC之一,该系列中的STM32F103架构如图4所示[5]。该芯片的片上Flash挂接在ICode和DCode总线上,片上SRAM挂接在System总线上。其中ICode总线直通Flash,而DCode总线和System总线通过一个总线矩阵分别连接到片上Flash和片上SRAM及其余外设。此外,STM32采用了一个64 bit的Flash,并使用了一个2×64 bit的缓冲器,一次可缓存128 bit数据,从而大大降低了Flash的访问频率,弥补了Flash速度较慢的缺陷,使得取指和取只读数据的速度大大提高。该架构与前述分析基本一致,故可以保证最佳性能。
20121107045231808163848.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-29 11:34 , Processed in 0.058449 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表