打印

dsPIC, PIC18, HCS08, V1代码密度比较

[复制链接]
3409|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JerryBJ|  楼主 | 2007-10-11 23:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天晚上做了这么一件事情,贴出来给大家讨论:

评估内容:
为了使用同一段代码在不同的平台上编译,使用了和硬件无关的代码。这里我选取了加密算法AES。这个算法中包含大量的数据搬移、查表、异或和移位等运算。程序流程上循环处理比较多。
另外,在程序中使用了标准库函数rand()和memset()。
详细代码见附件中源文件Cryp1.c。

评估平台:
1) MPLAB version 7.40 + C30 version 2.01。硬件选择dsPIC33FJ128GP706。
2) MPLAB version 7.40 + mcc18 version 3.02。硬件选择PIC18F67J10。
3) CodeWarrior version 6.0。硬件选用MC9S08QE128 (所有HCS08都具有同样的结果)。
4) CodeWarrior version 6.0。硬件选用MCF51QE128。

所有上述平台下,均使用编译器的各自默认设置,未增加任何优化措施。

评估结果:
从编译结果可以看出,相同AES代码在V1上生成的机器码尺寸约为PIC18上的一半,即使比dsPIC也要节省30%左右。当然,不同的代码的情况可能不一样,但是由此也可以证明,有赖于V1的CPU架构的优势,其代码效率还是很不错的。甚至HCS08内核的代码效率,也相当令人满意。
具体数据请参考后面的map文件摘录。
(注:此代码在HCS08和V1上验证了运行的正确性,在dsPIC和PIC18上未经验证。)


---------------------------------------------------------------------
在dsPIC33FJ128GP706上编译的结果 (dsPIC): 
Program Memory Usage

section        address   length (PC units)   length (bytes) (dec)
-------        -------   -----------------   --------------------
.reset               0                 0x4             0x6  (6)
.ivt               0x4                0xfc           0x17a  (378)
.aivt            0x104                0xfc           0x17a  (378)
.text            0x200               0x1c0           0x2a0  (672)
.const           0x3c0               0x428           0x63c  (1596)
code1            0x7e8               0xb60          0x1110  (4368)
.dinit          0x1348               0x16e           0x225  (549)
.isr            0x14b6                 0x2             0x3  (3)

         Total program memory used (bytes):         0x1f0e  (7950) 6%

Data Memory Usage

section        address      alignment gaps    total length  (dec)
-------        -------      --------------    -------------------
page1            0x800                   0           0x130  (304)
.nbss            0x930                   0            0x88  (136)
.ndata           0x9b8                   0            0x78  (120)
myData2          0xa30                   0            0x22  (34)
page             0xa52                   0            0x10  (16)
.ndata           0xa62                   0             0xa  (10)

            Total data memory used (bytes):          0x26c  (620) 3%

---------------------------------------------------------------------
在PIC18F67J10上编译的结果 (PIC18): 
        Program Memory Usage 
                               Start         End      
                           ---------   ---------      
                            0x000000    0x000005      
                            0x00002a    0x002b53      
            11056 out of 131072 program addresses used, program memory utilization is 8%

---------------------------------------------------------------------
在MC9S08QE128上编译的结果 (HCS08):
Summary of section sizes per section type:
READ_ONLY (R):        1C27 (dec:     7207)
READ_WRITE (R/W):      22E (dec:      558)
NO_INIT (N/I):          CF (dec:      207)

ExeFile:
--------
Number of blocks to be downloaded: 3
Total size of all blocks to be downloaded: 7207

---------------------------------------------------------------------
在MCF51QE128上编译的结果 (ColdFire V1):
# Memory map:
  v_addr      p_addr     size         name
  00000410 00000410 00000000 .code      code
  00000410 00000410 00001628 .text      code  (5672)
  00800000 00800000 00000000 .userram   userram
  00800000 00001A38 00000080 .data      userram
  00800080 00800080 00000278 .bss       userram
  008002F8 008002F8 00000000 .custom    userram
  008002F8 00001AB8 00000018 .romp      userram

---------------------------------------------------------------------

https://bbs.21ic.com/upfiles/img/200710/20071011231413999.rar 
相关链接:https://bbs.21ic.com/upfiles/img/200710/20071011231413999.rar

相关帖子

沙发
yewuyi| | 2007-10-12 08:55 | 只看该作者

目光对着MCP了?

没意思,MOTO需要做的不是和MCP比这个,需要和MCP比的是服务和价格。


这个服务不仅指的卖CHIP时的服务,最重要的是:技术支持

使用特权

评论回复
板凳
JerryBJ|  楼主 | 2007-10-12 11:54 | 只看该作者

增加优化选项

今天作了些优化,重新比较。可以看出,优化后V1比PIC18的代码效率也要高一些。
 
PIC18,把所有的优化选项都打开。
    Program Memory Usage 
                               Start         End      
                           ---------   ---------      
                            0x000000    0x000005      
                            0x00002a    0x00165b      
            5688 out of 131072 program addresses used, program memory utilization is 4%

 
Coldfire V1,按代码尺寸优化。
  00000410 00000410 00000000 .code      code
  00000410 00000410 000014FC .text      code (5372)
  00800000 00800000 00000000 .userram   userram
  00800000 0000190C 00000080 .data      userram
  00800080 00800080 00000278 .bss       userram
  008002F8 008002F8 00000000 .custom    userram
  008002F8 0000198C 00000018 .romp      userram
 
dsPIC和HCS08增加优化选项后变化不大。

使用特权

评论回复
地板
vr2whf| | 2007-10-12 13:31 | 只看该作者

先以同样是8位的比较

PIC18的代码效率注定比S08低. 因为PIC18是RISC, 祗得35个指令, 但S08有近百个.

使用特权

评论回复
5
ayb_ice| | 2007-10-12 15:55 | 只看该作者

PIC18肯定不止35条指令。。。

16系列都有51条指令。。。

使用特权

评论回复
6
dongshan| | 2007-10-13 22:50 | 只看该作者

5楼的

16系列算是中档系列的,只有35条指令

使用特权

评论回复
7
LPcfANS| | 2007-10-15 10:07 | 只看该作者

MOTO需要做的不是和MCP比这个,需要和MCP比的是服务和价格。

顶....

使用特权

评论回复
8
free_tech| | 2007-10-15 10:54 | 只看该作者

比的是服务和价格,我同意

FREESCALE现在已经开始改变,相信很快您提到的问题就可以改观.
需要HCS08的服务,您可以跟我们沟通,我们尽量会帮助您.
HCS08中的MC9S08QD2/QD4,MC9S08QG4/QG8,MC9S08AC/AW,MC9S08LC,MC9S08DZ
RS08中的MC9RS08KA1/KA1,MC9RS08SA4/SA12
QE系列
以上的价格绝对有竞争力.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

84

帖子

0

粉丝