您当前的位置:五五电子网电子知识单片机-工控设备综合-其它SOPC中自定义外设和自定义指令性能分析 正文
SOPC中自定义外设和自定义指令性能分析

SOPC中自定义外设和自定义指令性能分析

点击数:7820 次   录入时间:03-04 11:35:59   整理:http://www.55dianzi.com   综合-其它

       2.2  CRC32定制指令的实现

       在前面开发的CRC自定义外设的基础上,按照定制指令所要求的设计方式,把前面开发的自定义外设改写成一条指令。本设计中,CRC自定义指令是作为多周期指令来实现的,在多周期指令要求中必须包括信号clk、clk_en、reset,其他的信号不是必需的。

       由于在SOPC系统中自定义外设的接口类型与自定义指令的接口类型要求不一样,因此要求在自定义外设的基础上必须加上一个接口文件。这个接口文件的作用是为了与多周期指令的端口信号类型对应。接口文件端口信号和自定义外设端口的对应关系如表2所列。

自定义指令与自定义外设端口对应关系

       开发完成后,把自定义指令加到NiosII CPU中。生成系统后,在生成的system.h文件中,关于CRC自定义指令的宏如下:
        #define   ALT_CI_CRC_CUSTOM_INSTRUCTION_N 0x00000000
        #define ALT_CI_CRC_CUSTOM_INSTRUCTION(A,B)__
        builtin_custom_inii
        (ALT_CI_CRC_CUSTOM_INSTRUCTION_N,(A),(B))

       其中,“ALT_”是宏定义的前缀,表示为ALTEra公司;CI是用户定制指令的意思;CI_CRC_CUSTOM_INSTRUCTION是用户指令的逻辑模块名称;N表示指令操作码。

       3  自定义外设和自定义指令在SOPC系统中的运行和验证

      
前面已经分别用自定义外设和自定义指令的方式实现了CRC32。那么自定义外设和自定义指令执行性能如何?在实现相同功能的情况下,何种方式在执行过程中更有优势?它们之间的差异有多大?在这一部分将通过测试给予充足的验证。

       3.1  验证平台的硬件系统

      
采用以CycloneII系列EP2C35为核心芯片的SOPC开发系统,来搭建实验所需要的硬件平台。在这个硬件平台中,需要添加系统工作需要的外设,包括NiosII CPU、Timer、Avalon三态桥,外部RAM接口和Flash等。在该硬件系统中,首先要加入自己定制的外设逻辑,同时在NiosII CPU中加入开发的自定义指令。在同一系统中同时加入实现相同功能的自定义外设和自定义指令是为了得到对比结果。系统时钟设置在50MHz。在本设计中,有大量的数据从SSRAM传输到CRC处理模块中,这些数据在传输过程中不需要进行算术逻辑运算,如果通过CPU来操作,会消耗大量的CPU时间。为了提高CPU的工作效率,采用DMA(直接存储器访问)来完成。利用DMA控制器方式,在CRC自定义外设和SSRAM存储器之间建立一条DMA传输通道,让硬件自动读取数据信息。在DMA传输过程中,首先通过中断由CPU对DMA进行初始化设置,打开DMA传输 通道,使DMA在CPU干预的情况下进行传输。然后DMA直接将SSRAM存储器中的数据传输到CRC处理模块中,直到数据传输完成。所添加的DMA通道,读端口通过Avalon三态桥连接到了SSRAM,写端口连接到了自定义外设CRC,如图3所示。

CRC验证硬件平台

       特别注意的是,在该硬件平台中,要加入一个时间标记服务定时器high_res_timer(也就是经常说的“时间戳”)。该服务可以帮助设计人员查找出耗时最长的功能函数,定位优化目标,检测某个功能部件的运行情况。在这里,主要是利用该“时间戳”来测量CRC32不同方式的执行时间,为分析各种方式的性能差异奠定基础。



www.55dianzi.com
       3.2  软件开发

      
在NiosII IDE开发环境中,分别使用自定义外设、自定义 指令 和软件的方式来实现CRC32。

       ①  软件实现方式:数据的读取、处理、保存等全部由软件来实现。
       ②  用户自定义指令方式:处理过程使用CRC32自定义指令来完成。
       ③  用户自定义外设方式:使用DMA通道完成数据的读取、保存,NiosII处理器控制外设完成CRC32的处理。

       完成上面的工作后,编译工程,下载到SOPC开发板中。从NiosII控制台中,可以看到如下输出信息,如图4所示。

NiosII IDE控制台输出信息

       4  性能对比和分析

       在NiosII IDE上面可以观察到用软件、自定义指令、自定义外设实现CRC32的各种情况。这几种方式的运行结果是相同的,但用软件实现的时间是12 381.33ms,采用优化的软件设计时间是8 393.02 ms,采用自定义指令的时间是164.69 ms,而采用自定义外部设备时则用了12.08ms。从结果可以分析出,纯用软件来执行,运行速度最低;如果把标准指令序列实现的核心功能由一条用户自定义指令来实现,可以明显提高系统的执行效率;如果采用自定义外设,即将软件实现的功能全部由硬件来实现,则速度又大大提高。从图5中可以更清楚地看到这种对比:从左到右依次是软件方式、改进软件方式、自定义指令方式、自定义外设方式。由此可知,自定义外设执行效率最高,其次是自定义指令。

各种方式执行时间和效率对比图

       从实现机理上来讲,自定义外设可以看作是和NiosII并行运行的一个硬件加速逻辑,中间CPU参与过程很少,这就为系统“全面加速”提供了坚实的基础;而自定义指令由于硬件逻辑连接到NiosII处理器的算术逻辑单元上,只能实现“局部”加速。从实现结果来说,实现同样的功能,自定义外设的执行效率是自定义指令的十几倍以上;而随着系统频率的升高,这个差距会越来越大。如果系统在120MHz,差距会在50倍左右。


       结语
 
      
本文对SOPC系统中自定义外设和自定义指令的性能进行了详细对比,并且给出了对比的详细参数。在SOPC系统中,如果实时性要求非常高,那么采取自定义外设加DMA来完成系统中的关键处理模块无疑是最佳选择。


参考文献:
[1]  ALTEra Corporation. Nios II SOFtware Developer's Handbook,2006.
[2]  Altera Corporation. QUARTusII Verision 6.0 Handbook,2006.
[3]  潘松,黄继业. SOPC技术实用教材[M]. 北京:清华大学出版社,2005.
[4]  彭澄廉,等. 挑战 SOC ——基于Nios的 SOPC设计与实现[M]. 北京:清华大学出版社,2004.



上一页  [1] [2] 


本文关键字:外设  综合-其它单片机-工控设备 - 综合-其它