>
首页 » 业界动态 » 最新8051编译器

最新8051编译器

作者:  时间:2008-10-14 20:45  来源:

今天推出一款“全知”ANSI C编译器,增加了DMIPS/MHz并降低了Silicon Labs基于8051混合信号MCU系列(包括超低功率、单节电池供电的C8051F9XX)的耗用功率。
通过大幅优化上下文大小和寄存器在C语言程序所有模块中的覆盖情况,面向Silicon Labs 8051 MCU系列的HI-TECH C® PRO减少了中断延迟、代码大小以及对SRAM的使用。这样做使代码密度提高,程序执行所需的指令周期减少。更少的指令周期意味着CPU可以更多时间处于睡眠模式,从而进一步降低低功耗Silicon Labs器件的功耗。
使用Silicon Labs的Dhrystone V1.1基准和22.11 MHz时钟,HI-TECH的OCG编译器与非OCG编译器相比,DMIPS/MHz提高了55%以上,代码大小则降低了49%。(表1)

Dhrystone V 1.1 Benchmark

 

代码大小

SRAM

DMIPS

HI-TECH PRO

2939

5527

2.91

non-OCG Compiler

5763

5540

1.87

区别

-49.0%

-0.2%

+55.4%


利用HI-TECH的C PRO编译Silicon Labs的以太网boot loader程序,可以减少30%的代码和20%的SRAM使用。(表2)

SiLabsEthernet Boot Loader (8051F340)

 

代码大小

SRAM

HI-TECH PRO

6708

955

OCG 编译器

9584

1193

区别

-30%

-20%


更快速的中断,降低20%的消耗功率-HI-TECH C PRO利用“全知代码生成(OCG)技术,全面搜集整个程序中每个寄存器、堆栈、指针、对象以及变量说明中的数据。它使用这些信息来优化整个程序中的寄存器使用、堆栈分配和指针。它还能够确保变量的一致性和模块间的对象声明,并去除无用的变量和函数。

没有OCG功能的编译器独立编译每个代码模块,对来自程序其它部分的信息一无所知。因为它们不知道整个程序会用到哪些寄存器,所以通常情况下,它们必须保留所有八个通用寄存器,以及每次中断所需的其它片上资源。这些步骤要求多达48个时钟周期。相反,OCG编译器对整个程序中的每个变量、寄存器以及指针信息都有全面的了解。因为它准确知道中断会用到哪个寄存器,所以它能够以程序编辑时的状态为基础,动态决定上下文大小。由OCG编译器产生的代码在中断程序过程中可能不需要保留所有寄存器,因此能够节省非OCG编译器中所浪费的高达48个周期。

考虑这样的一个应用:以8kHz采样一个音频输入,利用10位ADC将采样的音频转换为mu-law编码(8位,用于电话通信),然后通过RS232串行电路以115,200波特率进行传输,同时处理音频信号并驱动声量计(VU meter)显示当前的音频水平。

波特率会对CPU时钟速度产生限制。时钟速度必须是波特率(例如115,200)的整数倍,同时还必须足够快,每次采样时每秒钟都能执行800次完整的指令序列。

非OCG编译器针对Silicon Labs单电池供电C80519XXF所产生的代码,每次数据采样平均会有108个周期来执行中断服务程序和主循环。最大的时钟周期数为135,需要的时钟频率为1.08 MHz。但是,1.08 MHz并不是115,200波特率的整倍数,所以时钟频率必须增加到1.1152MHz。在这样的时钟频率下,C8051F9xx的平均消耗为248μA。

利用HI-TECH C PRO编译同样的程序,所产生的代码执行时只需要93个周期,最大周期数为110,时钟频率为880 kHz。根据整数倍原理,最接近的时钟频率为921.6 kHz。在这样的时钟频率下,C8015F9XX的平均消耗为202μA,也就是说,比非OCG编码的执行节省了22%。

去除对存储空间限制的要求-Silicon Labs的C8051微控制器具有分层存储架构,拥有6个不同但是重叠的存储空间。编译器供应商提供C语言扩展,允许程序员手动制定每个变量所需的存储空间,从而提高读取速度。但是这样的手动制定使得代码不可移植,而为了获得可能是最好的结果,这样做同时也增加了程序员的工作量。但是,随着程序开发的进展,变量到存储空间的最优化分配可能无法实现,而这样也就导致了代码整体性能的下降。

HI-TECH C PRO完全解决了这一问题。因为它了解每个变量的使用频率以及其所依靠的变量是哪个,所以它能够优化指针,并将对象安置在最为有效的存储空间内。根据它们各自的尺寸以及被引用的次数,全局和静态变量被分配到可利用的存储空间。函数参数和自动变量被分配到被编译过的栈空间内。扩展内存中读取数据所需要的多余代码被最小化或干脆去掉。编译器自动允许那些其函数在同一时间内未被激活的变量共享同一内存,从而减少了高达80%的RAM使用。这些过程中,没有手动编程或者是C扩展。

HI-TECH具有OCG功能的PRO编译器了解整个程序中所有被使用的变量和指针,以及它们被使用的频率。它为每个对C8051架构最为有效的变量指针定义了一组地址空间,无需从程序员那里获得特殊指示。它还非常准确地了解堆栈必须有多大,以及代码生成之前其应该位于何处。它将最为常用的变量分配到了最容易读取的RAM中,并将使用频率较低的数据分配到XDATA RAM。通过减少较长的movx指令的数目,这样做提高了代码密度。在去除SRAM的同时,它还获得了真正性能上的提升。

寄存器覆盖。传统的C8051编译器保留7个特殊寄存器来存储调用函数所需的参数。如果函数所用到的参数需要7个以上的寄存器,那么这些多出来的参数就被存贮,并且通过堆栈(在RAM中)传给调用函数——需要1个周期的过程,这样做降低了性能并且增加了对RAM的使用。调用函数频繁调用其它函数,而被调用的函数反过来也要调用另外的函数。例如,如果代码调用一个函数,后者又调用了第二个函数,那么第一个函数的变量将被存储在堆栈中,为第二个函数的参数腾出空间。如果第二个函数又调用了第三个函数,那么第二个函数的参数也将被存储在堆栈中,从而为第三个函数的参数腾出空间。这样一来,数据就要不断地在堆栈和寄存器中进行转移。这样的过程浪费了周期和RAM。同时这也导致了代码庞大,因为将函数参数保存在堆栈中需要额外的指令。

HI-TECH的PRO编译器中的全知代码生成器对程序中任何指针下哪个寄存器可用哪个寄存器不可用非常了解。无需任何约束,它就能够动态优化寄存器的使用。当有两个或三个深层函数调用时,OCG编译器能够根据功能将参数分配到非重叠的寄存器组中,通常能够完全消除将参数存储在内存的需求。这样做也能够更好地利用可用寄存器、减少在堆栈和寄存器间移动参数所需要的周期,并减少对RAM的使用。同时,由于消除或减少了将寄存器保存在堆栈所需要的代码,这样做还减少了代码尺寸。


最优化调试。HI-TECH面向Silicon Labs C8051的PRO编译器是目前市场上唯一支持带有编译器优化的代码调制功能。通常,经过完全优化的编译代码很难或者几乎不可能进行调试,这就加大了发现那些造成系统功能失误错误所在的难度。HI-TECH的PRO编译器能够自动保存对象代码和原始C代码之间的所有关系,从而实现对最优化代码快速且简单的调试。

与Silicon Labs集成开发环境(IDE)无缝结合。HI-TECH的C PRO编译器可以无缝集成到Silicon Labs IDE,以及多数第三方开发工具中。HI-TECH C PRO可以运行在包括Windows (2000, XP, Vista 32/64) Linux和Mac OS X等多个平台上。

包括库代码和运行时间模块。支持Silicon Labs C8051的HI-TECH的PRO编译器目前带有所有库子程序完整源代码,包括运行时间启动模块(能够根据每次编译器的运行自动定制代码)。目前,在可执行库代码的使用上,没有任何限制或约束。


价格和供货。面向Silicon Labs 8051 MCU系列的HI-TECH C PRO目前提供现货,到2008年12月31日之前的推广价为1195美元,之后该产品的零售价将上浮为1495美元。其中包括HI-TECH Priority AccessTM (HPA)12个月的免费升级和技术支持,以及30天的不满意退款保证。多用户和教学性质用户可以享有一定优惠。

免费的完整性能评估。面向Silicon Labs 8051 MCU系列的HI-TECH C PRO完整功能45天试验版,可以在HI-TECH的网站http://silabs.htsoft.com上免费下载。

需要更多有关面向Silicon Labs 8051 MCU系列HI-TECH C PRO的信息,可以登陆http://silabs.htsoft.com/products/compilers/silabs-8051.php

 

相关推荐

Microchip推出全新领先的32位MCU系列

Microchip  MCU  2013-11-21

半导体商情:集成电路整体下行 MCU大跌

集成电路  MCU  2013-11-06

集成LIN系统基础芯片功能的三通道半桥驱动控制器

艾尔默斯  LDO  MCU  2013-11-04

低功耗MCU助力智能手表电池寿命大增

MCU  智能手表  2013-10-23

新唐将举办2013 NuMicro™ Cortex™-M0 32-bit MCU研讨会

新唐  MCU  2013-09-17

MCU:变与不变的哲学

ARM  MCU  2013-09-02
在线研讨会
焦点