新闻中心

EEPW首页 > 嵌入式系统 > 学习方法与实践 > 转变硬件成软件:多核心环境的高效程序写作

转变硬件成软件:多核心环境的高效程序写作

——
作者:Skip Hovsmith CriticalBlue时间:2007-12-28来源:ARM IQ杂志收藏
        透过自动化的处理器同步,我们能降低研发特殊应用协同处理器所需的成本与时间,并透过以为中心的模式来开发产品。

       的功能性建立之后,关键的工作可分担给已针对该应用进行过最佳化的协同处理器来执行。每个协同处理器都已针对效能、即时、以及空间等方面的要求进行最佳化设计,并且完全可化,因此在上市后还能进行扩充与优化功能的动作。协同处理器的简化与速度可以提供更大的机板设计空间,相同的软件也可重新设定不同的目标以因应不同的产品价位与效能需求。

        业者必须运用多核心架构来因应电子系统对于高效能与低功耗的需求。根据International Business Strategies(IBS)的研究显示,软件在90纳米领域已成为一项主流设计模式。软件如今主导SoC设计。 

       IBS的这项研究也发现,架构设计的工作投入现在出现大幅增加的趋势。而大多数的投入是为了提升处理与通讯的效率,以确保能达成嵌入式软件的效能目标。即使针对开发架构的投入越来越多,设计的昂贵成本仍然限制业者进行扩大架构开发的意愿。

       随着处理器同步技术的进步,开发特定应用处理组件的时间与成本已被大幅降低,并创造出以软件为中心的开发模式。业者现在可以直接掌控更高比率的软件研发工作,也可针对实际软件的处理负荷进行架构最佳化的调整。特定应用处理器可进行同步以满足各种功能系统的效能需求,并让系统拥有最高的可化弹性。如此一来,更多组件将可转化成软件,而不是背道而驰。

       分布式协同处理

       大多数工程师都熟悉单处理器的编程模式。但多个独立运作的核心让这种编程模式变得更加复杂。为维持较简单的编程模式,可把一个或多个处理组件指派为全域的主控制器,而其它核心则视为协同处理组件,如图一所示。

       在一个异质化架构中,系统功能被分散至各个协同处理组件以降低这些组件的耦合性。松散的耦合模式增加了平行处理的机率,但各组件的运算负荷却各有所异。每一个处理组件皆可进行最佳化来配合其处理需求。 

               

                           图一:分布式协同处理架构。

       替代的协同处理组件包括从数码讯号处理器(DSP),ㄧ直到固定功能的加速器等各种可化的核心。 

       应用协同处理器是一种为特定应用设计微架构以快速执行关键算法的可程序化处理器。这些客制化处理器具备最大化的编程效能,同时让处理作业在内部就能完成以维持较简单的编程模式。但客制化处理器昂贵的设计与验证成本,让这种模式的推广面临极大的阻力。不过如今业界出现各种自动化协同处理器合成工具,让这种模式的吸引力持续攀升。

       应用协同处理器同步 

       处理器同步工具必须针对应用作业的需求,来开发出处理器的实作方案。如图二所示,串叠式的协同处理器同步流程采用一种修改后的VLIW模式。如同客制化的硬件设计,暂存器分布在各执行单元并以客制化的连结管道来连结关键应用所需的资料流。而资料与指令快取是用来降低对外部存储器的需求,图二的范例显示了两个资料快取。由于协同处理器是针对特定应用所设计,因此合理的作法是运用多个资料快取,并依据算法的资料需求来策略性配置每个快取的容量。选择合适的指令编码模式,可以增进平行处理的效率并降低微码(microcode)的长度。

        

                             图二:协同处理器架构。

       一个或多个协同处理器可从应用程序进行同步,图三显示单一协同处理器的同步流程。 

       同步的进入点是编译过的二进工艺序码,软件开发人员运用其正常的主处理器工具链来编译其程序码。我们可用对应(profiling)与其它的效能分析工具来找出功能效能的关键点。在发现之后,这些功能将可转移给特定应用处理器来执行。  

                  

                           图三:协同处理器合成流程。

       从可执行的二进工艺序开始,任何编译语言以及其编译的程序都可进行加速。包括C语言以及经过最佳化的组译语言,而此阶段不需要原始码。

       二进工艺序码读入系统后,便可选择要分担至协同处理器的功能。此时要建立二进工艺序码的模型并进行模拟,详细追踪存储器的使用模式以及关键的执行线路。追踪信息是用来分析不同的资料快取、执行单元以及联结的组合。产生各种不同效能、空间与耗电量组态的协同处理器实作方案。随着实际的作业量的不同,规划模型的工作会耗费数分钟到数小时。 

       在选择协同处理器的组态后,会产生RTL层级的硬件描述以及在协同处理器上执行的微码指令。原始的二进工艺序码和微码与通讯的驱动程序将一起加入系统。 

       架构分析

       协同处理器同步可用来快速分析不同的系统架构。应用软件可编译至主处理器并连结各种功能,以将其处理工作分担给多个协同处理器。图四显示一个当影片、影像及音效功能都分担到各个处理器的系统范例。 

        

                         图四:加密协同处理器架构分析。

       经储存后转送的安全应用提供一个协同处理器同步的实例。应用透过网络联机会收到经过加密的文件。经过解密后加以检查并加入特定的信息,最后把修改过的文件进行加密再转传至下一个目的地。 

       本设计锁定一个Actel M7 ProASIC3/E FPGA,此款组件内含一个软型ARM7TDMI核心,其内有快闪组件的组态并嵌入额外的防护机制,以具有反制逆向工程的能力。模块图表如图五所示: 

       

              图五:储存后转送的安全架构,以AES加密标准作初始加密算法。

       一个开放原始码的程序被编译到ARM7核心处理器,此程序码经过对应并选择了想要分担的加密功能。经过同步后,协同处理器产生的协同候选方案如图六所示。 

           

                       图六:AES加密协同处理器选项组合。

       AES算法的执行速度比原始的ARM7功能加快了3.6倍。协同处理器需要45k个逻辑闸以及21k的存储器作为资料与指令的快取存储器。经常等候加密单元的处理器模块可分担协同处理器的加密运算作业,让ARM的整体处理负荷降低36%。 

       在设计AES协同处理器后,另一个需求就是加入支持额外加密的算法。Blowfish算法被直接编译至AES协同处理器以提升ARM7 4.5倍的运算速度。相较之下,针对Blowfish算法进行同步的协同处理器,则提供加快4.7倍的加速效果。 

              

                       图七:AES与Blowfish算法比较。

       客制化发展

       基本的协同处理器同步作业不需要处理器设计的专业能力。但是若想进一步加快速度则必须在协同处理器的架构中加入客制化的执行单元,而软件功能可直接对映至这些单元。在分担这些功能的运算负荷时,仅须定义单元界面以及基本的流量与延迟时序。同步的协同处理器将纳入这些客制化单元并和它们进行联结。业者可分析效能方面的利益,而若有需要也可完成这些客制化单元的硬件设计。 

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭