TMS320C54x和ADSP218x性能比较

2007-03-09 19:03:27来源: 互联网
摘要:TI(Texas Instruments)公司的TMS320C54X系列和ADI(Analog Devices Inc.)公司的ADSP218X系列是目前应用广泛的两款主流16位定点DSP芯片。以Geffe发生器和MD5算法的实现为例,通过对这两款芯片性能的详细比较,分析研究了它们各自优缺点。 关键词:DSP芯片 TMS320C54X ADSP-218X 性能比较 从1982年第一片数字信号处理器(Digital Signal Processor,DSP)TMS320C10产生以来,经过二十年的发展,DSP以其卓越的性能、独有的特点,已成为通信、计算机、消费类电子产品等领域的基础器件。业内人干预言,DSP将是未来集成电路中发展最快的电子产品,并成为电子产品更新换代的决定因素,它将彻底变革人们的作、学习和生活方式。 DSP[6][8][9]具有两种算术结构:定点和浮点。从理论上讲,虽然浮点DSP的动态范围比定点DSP大,且更适合于DSP的应用场合,但定点运算的DSP器件的成本较低,对存储器的要求也较低,而且耦电较省。定点运算的可编程DSP器件仍是市场上的主流产品。据统计,目前销售的DSP器件中的80%以上属于16位定点可编程DSP器件。其中,TI公司的TMS320C54X系列和ADI公司的ADSP-218X系列是目前广泛使用的主流定点DSP芯片。下面就以它们为研究对象,结合Geffe发生器[7]和MD5算法的实现,对其性能进行分析比较。由于TI的TMS320VC5402和ADI的ADSP-2186N是使用较多的两款,硬件性能指标又相近,有很好的可比性,所以编程实现时选择它们为具体芯片。虽然两款DSP芯片都提供C编译器,但是因为效率都不高,这里我们就不作讨论。下面的论述都是基于直接用汇编语言编程的。 1 Geffe发生器与MD5算法 先简单介绍一眄两个算法。Geffe发生器是一种密钥序列发生器,它利用线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)产生序列密码。Geffe发生器使用了三个LFSR,它们以非线性方式结合,其中两个LFSR作为复合器的输入,第三个LFSR控制复合器的输出。因为运算量很大,所以LFSR用软件实现起来比较慢,但是用汇编语言实现比用C语言实现快。 MD5(MD,即Message Digest)是一个单向散列函数,它对输入消息产生128位散列值(或消息摘要)。该算法需要进行大量的移位和逻辑操作,用DSP实现比较方便。 2 TMS320C54X系列与ADSP-218X系列性能比较 2.1 硬件结构[1][4][5] TMS320C54X系列采用改进的Harvard结构体系,有一组程序总线和三组数据总线、高度并行性的算术逻辑单元ALU、乘法/累加器MAC、桶形移位器、缓冲串口、专用硬件逻辑、片内存储器、片内外设和高度专业化的指令集等等。支持32位长操作数指令,支持并行存储和并行装入的算术指令。 ADSP-218X系列借装了TMS320X系列的优缺点,重新设计。它也是采用改进的Harvard结构体系。ALUMAC、桶形移位器这三个独立的运算部件均可以单周期操作。还有丰富的双缓冲串口、中断(分外中断和内中断)等。在TMS320C54x系列中,程序存储区和数据存储区是混在一起的,而ADSP-218X系列从物理上就将两者分开,这就使多功能指令操作显得非常方便。因此,ADSP-218X系列程序实现更有高效性。 两款芯片主要技术指标的比较如表1所示。 表1 两款DSP芯片主要技术指标比较 比较项目 MIPS Cycle Time/ns RAM/千字 TMS320C54X 30~532 33.3~1.88 5~640 ADSP-218X 33~80 30~12.5 8~104 可见,两款系列芯片性能指标的选择范围都很大,而TSM320C54X系列的选择空间更大一些。具体到本文选用的TMS320VC5400和ADSP-2186N,主要参数(MIPS/Cycle Time/RAM)为:TMS320VC5402是100/10ns/16kword,ADSP-2186N是80/12.5ns/16Kword。这两种芯片的硬件性能指标相仿,用它们实现相同的算法,具有很好的可比性。 2.2 程序编程[2][3][4][6] 下面分别用TMS320VC5402和ADSP-2186N实现Geffe发生器和MD5算法,以此来比较两款芯片在编程过程中的优劣。其中,Geffe发生器产生96字的序列,MD5处理的消息长63个字。 2.2.1 指令系统概述 ADSP-2186N指令系统使用代数符号来表示算术运算和数据传送,源代码具有较高的可读性,且不会损坏运行特性。它的指令系统很精简,程序员可以快速掌握。ADSP-2186N的编程方式和高级语言类似,如果用户有高级语言编程的经验,上手较快。 TMS320VC5402指令系统很丰富,灵活多变,虽然使用时很方便,但是完全掌握却有一定的困难,这对程序员来说是个不小的难题。它的指令系统有传统的助记符和代数符号两种方式,程序员可以根据所好任选一种。助记符方式对于习惯了汇编语言的开者易于接受,代数符号方式则表达简洁、较为直观、易于理解。但是,合作完成项目时,往往会由于不同的程序员选择不同的格式而造成麻烦。解决的方法有两个,一是使用TI提供的转换工具,另一是只将两者的obj文件链接调试,但调试时有些方便。 另外,两者的编译环境也有差别。相比较而言,ADSP-2186N的界面要友好一些,它和VC++非常相像,很方便。 2.2.2 指令的“单周期性” ADSP-2186N的每条程序语言都汇编成仅需一个执行周期的24位指令机器码。它完全在并行处理方式下工作,所有的指令都是真正的单周期指令。除了访问慢速的外部存储设备,或者外部存储器出现控制权竞争而需要附加周期的情况外,任何指令的运行一般仅需一个周期。由于它的指令系统没什么“禁忌”,所以程序员大可像编写高级语言程序一样,只需要考虑算法如何实现,至于编程过程就可以不太注意。 可是,TMS320VC5402的指令系统却不是这样。TMS320VC5402的各个单元是基于流水线方式的结构,指令按流水线方式工作。它的大多数指令在单独执行时并不能在一个周期内完成,只是在流水线方式下工作或重复操作的,才可以做到平均每一个周期执行一条指令。因此,在它的指令系统中,不仅有不少的指令需要多个执行周期,而且由于“时延”的原因,如果处理的不好,还会出现额外的附加周期。因此为了保证每条指令准确执行,有时就不得不把程序打乱,就是说,相关联的几条语句要分散插入别的地方。程序的模块化遭到损害,显得杂乱无章,大大影响了可读性。 如下面语句中的句1、句2、句3、句4(选自Geffe发生器)是我们实际应用的形式(指令用代数符号格式,下面如果不特别指出,均为这要您)。 m_seq_ll: ;标号 …… b=a %26;amp; #1 ;句1 if(aeq)goto m_seq_12 ;句2,if a=0,goto m_seq_12 a=a>>1 ;句3 if(beq)goto m_seq_11 ;句4,if b=0,goto m_seq_11 …… m_seq_12: …… 但是,它们正常语序则应该为 m_seq_11: ;标号 …… a=a>>1 ;句3(若这样,a的初始值随之改变) if(aeq)goto m_seq_12 ;句2,if a=0,goto m_seq_12 b=a %26;amp; #1 ;句1 if(beq)goto m_seq_11 ;句4,if b=0,goto m_seq_l1 …… m_seq_l2: …… 不过,若以正常语序执行if语句时,a、b的值会因为时延不够,来不及改变而导致程序出错。为避免这种情况,要么在句3和句2以及句1和句4之间分别加上若干个空操作(nop),这样就会影响速度;要么调整它们的顺序,如实际应用中的句1、句2、句3、句4.有时候,语句顺序实在无法调整,就不得不加上一些空操作。尤其是循环的主体部分,往往一条语句处理的不好,就会导致整个程序多运行成千上万条指令。因此,TMS320C54系列编程对程序员的要求较高,必须非常熟悉指令系统,才可以得到高效的程序。 2.2.3 对数组的循环操作 关于对数组进行循环操作,两者平分秋色。它们都支持寄存器地址自动加减。只不过ADSP-2186N的调试界面看上去更直观些。 2.2.4 对32位长操作数操作 ADSP-2186N不支持32位操作,如果需要的话,必须多条指令共同完成。而TMS320VC5402经过简单的设置,就可以直接进行一些32位操作。 例如,MD5算法中4轮主循环都需要大量的32位逻辑运算及加法操作。 表2示出“与”运算和加法的实例,显然,用TMS320VC-2186N实现时,必须将32位分为高16位和16位分别操作,最后再整合。这也是为什么在实现MD5算法时,用ADSP-2186N实现不如TMS320VC5402有效的主要原因。 表2 分别用TMS320VC5402和ADSP-2186N实现32位与运算和加法   实现32位与运算 实现32位加法运算 TMS320VC5402实现 a=db1(*ar2); b=b %26;amp; a; b=b+db1(*ar1); b=db1(*ar3); ADSP-2186N实现 ay0=DM(i0,m1); ar=ax0 and ay0, ay1=DM(i0,m1); sr0=ar; sr1=ar; ay0=DM(i0,m1); AR=AX0+AY0, ay1=DM(i0,m1); AR=AX1+AY1+C,AX0=AR; AR; AX1=AR; 另外,两者在编程时还有一些不同,例如,TMS320VC5402有标号必须顶格写等要求。总的来说,TMS320VC5402指令系统中有不少的“禁忌”,需要经验积累才可以发现,这就给编程者带来了不便。两款DSP芯片实现Geffe发生器和MD5算法的具体结果如表3所示。 表3 分别用两款DSP实现密码算法的结果分析(两者均在各自的最高主频下工作)   比较项目 程序大小/字 需要指令周期数 需要时间/μs Geffe发生器 TMS320VC5402 ADSP-2186N 252 188 444,816 268,299 4,448.16 3,353.74 MD5算法 TMS320VC5402 ADSP-2186N 900 436 3,400 3,009 34.00 37.61 可以看出,实现Geffe发生器时,ADSP-2186N较快,主要是因为其指令系统的单周期性;实现MD5算法时,TMS320VC5402稍快,主要原因是它支持32位操作。 2.3 其它 总而言之,从技术上看,ADSP-218X系列稍占优势。但目前的实际情况是:1999年TI占有全球DSP市场48%的份额,市场排名第一。2000年其市场占有率也是第二名的两倍多。尤其在中国,高层占有率在80%左右。主要原因如下: 第一是价格。性能相近的芯片,TI比ADI要便宜很多。如TMS320VC5402的单片价格为$5.66,ADSP-2186N的单片价格则为$8.50。从性价比看,TI占优势。从产品效益看,如果大指生产,显然TI的芯片实惠。 第二是服务。这里指的是指生产商提供的服务。TI公司有非常完善的服务体系,从产品宣传到课程培训,非常齐全。ADI公司这方面略有不足。 第三是第三方服务。市场上支持TI芯片的第三方服务要比支持ADI的多,这也是由于TI芯片的市场占有率高的缘故。反过来,大量支持TI芯片的第三方服务,又保证了TI芯片的市场占有率。两者是相辅相成的关系。 第四是继承性。DSP芯片有其特殊性,不同公司的芯片,其编程方式差异很大。因此,程序员一旦熟悉了一种芯片,就不愿意更换。在我国,TI公司的用户要远远多于ADI公司的用户。为便于交流和学习,新的用户也会倾向于选择TI公司的芯片。 第五是性能。虽然从技术性能看,TI的芯片稍稍逊色一些,但只要程序员付出一定精力,也可以得到高效的程序。 所以,TMS320C54X系列和ADSP-218X系列可以说是各有千秋,互有短长。ADSP-218X系列界面友好、TMS320C54X系列性价比高、服务体系完善、产品效益好,故公司企业多选用它。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/dsp/200703/11842.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved