XScale体系结构分析及相应优化策略

来源 :计算机时代 | 被引量 : 0次 | 上传用户:cheng1129
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:XScale体系结构以高性价比、低功耗等特点已被广泛应用到智能手机、PDA和网络产品中。文章着重分析了XScale体系结构的特性,并针对该体系结构详细介绍了在开发过程中可能使用到的与运算、处理器以及编程相关的优化策略。
  关键词:嵌入式处理器;XScale;超级流水线;优化策略
  
  0 引言
  
  随着计算机多媒体技术及无线通信技术的发展,嵌入式系统的应用已成为生活中不可或缺的部分。不同于PC机处理器的是,嵌入式处理器除了将计算速度作为性能评价指标外,还要将系统集成度和整体功耗考虑进去。这些技术参数既相互配合、又相互制约。如何取得性能间的平衡,现已成为嵌入式处理器的重要衡量指标。XScale体系结构是采用Intel技术并同ARM v5TE架构相兼容的嵌入式微处理器的构架,它对ARM体系结构进行了增强,具有低功耗、高性价比等特点。基于XScale体系结构的嵌入式技术已被应用于消费类电子产品、实时数据采集和网络通信等广泛的领域中。XScale虽然引入了一系列高性能微处理器的设计技术,但要有效地发挥XScale体系结构的处理能力尚需高效的编译系统和支持多任务的实时操作系统的支持。本文对XScale体系结构进行了分析,并提出了性能优化的策略。
  
  1 XScale体系结构分析
  
  XScale运用先进的Intel设计技术,采用PBGA封装的形式,实现了ARM V5TE架构,可以在很高的主频下运行。它在数据处理、存储器系统和分支预测等方面进行了扩展和增强,在保持ARM体系结构简洁、体积小、成本低和功耗小的基础上,性能得到显著提高。
  
  1.1 XScale超流水线技术


  超级流水线结构是由整型管道、存储器管道和MAC管道构成。整型管道包括7级流水线结构,取指令1(分支目标缓冲器)→取指令2→译码→寄存/移位→ALU实现→状态执行→回复;存储器管道除包括整型管道的前5级外,后接3个高速缓存,数据Cache1、数据Cache2和数据回复Cache,共8级流水线结构;MAC管道是6~9级的流水线结构,包括整型管道的前4级和4级MAC段,以及一个数据回复Cache,其中MAC2—4的选通由数据决定。流水线结构级数越多越能提高指令的执行速度。使用分支目标缓冲器的目的在于成功地预知分支指令的结果。128个入口的分支目标缓冲器的每个入口都包含了分支指令的地址、与分支指令相联系的目标地址以及该分支的执行情况,它由协处理器15使能。分支目标缓冲器的使用旨在避免超级流水线结构中的分支延迟。
  
  1.2 XScale存储体系
  处理器的运算能力的提高要求访存带宽和速度也相应提高。为了保证内核能周期地存取指令和数据,XScale拥有32KB的数据Cache和32KB的指令Cache,以提高存储器的访问性能。拥有2KB Mini Data Cache,可以避免数据Cache内数据流存取的频繁变化。Cache和TLB都支持锁定功能,可以减少Cache和TLB替换的次数。指令和数据Cache都是具有32个入口和32路相联的Cache,每路均包含1个标志地址,32字节的高速缓存队列和1个有效位,采用循环方式进行刷新存储。微小数据Cache是1个具有32个入口和2路相联的Cache,同样采用循环方式进行刷新存储。
  
  1.3 XScale的判断预测与条件指令


  XScale采用了基于统计分析的分支预测功能组件。使用该组件可以对分支程序流程进行分析和记忆,将最可能转向的指令优先填充到流水线中,提高了流水线的利用率。在指令方面,XScale具有条件指令的功能,可根据标志位有选择地执行指令,可以将判断和跳转两个步骤放在同一条功能语句中完成,从而加快了运行速度,并节省了空间。
  
  1.4 XSeale指令结构
  针对ARM指令在某些方面数据处理能力的不足,XScale对ARM的乘/加逻辑进行了增强,同时提供了具有SIMD(单指令多数据流)特性的DSP指令,以提高多媒体的应用能力。XScale处理器还可集成Flash闪存和Wireless MMX逻辑功能,提高XScale数据处理能力。
  
  2 性能优化策略
  随着编译技术的成熟,很多编译器都实现了在编译过程中自动对应用程序进行优化,改进一些不合理的结构,生成效率较高的目标代码。但XScale体系结构的特点却给编译器的开发带来了很大的挑战。在实际的程序设计过程中,程序优化的两个目标(运行速度和代码长度)通常是互相矛盾的。为了提高程序运行效率,往往要以牺牲存储空间、增加代码数量为代价;而为了减少程序代码量、压缩存储器空间,可能又要以降低程序运行效率为代价。因此,在对程序实施优化之前,应根据实际需求确定相应的策略。在处理资源紧张的情况下,应着重考虑运行速度优化;而在存储资源使用受限的情况下,则应优先考虑代码规模的优化。
  
  2.1 运算优化
  运算优化的主要目的是通过简单的数学运算来替代较为复杂的数学运算以达到减少运算强度的目的,我们可以利用以下方式来实现:
  (1)利用左/右移位操作代替乘/除2运算:通常需要乘以或除以2的幂次方都可以通过左移或右移n位来完成。实际上乘以任何一个整数都可以用移位和加法来实现。在XScale中加法和移位可以通过一条指令来完成,且执行时间少于乘法指令。
  (2)利用乘法代替乘方运算:XScfle核中内建有32×8个乘法器,因此可以通过乘法运算来代替乘方运算以节约乘方函数调用的开销。
  (3)利用“与”运算代替求余运算:可以通过用与(AND)指令代替求余操作(%)来提高效率。
  (4)如果系统对精度要求不是很高,可以采用在DSP设计中常用的定点数模拟浮点数的方法。使用定点数模拟法,可以利用XScale的整数单元高效地实现浮点运算,但会带来一定的精度损失。如果系统对精度要求较严格,则需要根据XScale构架的特点,编写效率更高的浮点运算函数库。
  (5)XScale指令集中没有整数除法指令以及除法组件,除法是通过调用C库函数实现的。实现一个32位的除法通常需要20~140个时钟周期。因此,除法成了一个程序效率的瓶颈,应尽量避免使用。有些除法可用乘法代替,例如:if((x/y)>z)可变成为if(x>(y×z))。在能满足精度,且存储器空间冗余的情况下,也可考虑使用查表法代替除法。当除数为2的幂次方时,可应用移位操作代替除法。
  
  2.2 处理器相关优化
  超级流水线的优化主要集中在对流水线延迟/阻断的处理上,随着数据吞吐量的增加,流水线延迟/阻断会对系统的性能造成影响。在优化过程中,可以采用分而治之的策略来处理延迟。对于数据冲突和资源冲突引发的延迟,可以通过调整指令 执行的先后次序,消除发生冲突的条件;对于分支转移引发的延迟,应充分利用XScale微架构提供的条件执行语句,减少由于程序跳转执行而引起的流水线停滞。流水线阻断的情况则可通过循环拆解的方法加以改善。减小跳转指令在循环指令中所占的比重,能提高代码效率。
  存储器访问的优化主要集中在对Cache的优化上:提高Cache的利用率,减少访问内存的次数,使得处理器尽可能从Cache获得存储器数据,因为CPU对寄存器的存取要比对内存的存取快很多。因此为变量分配一个寄存器,将有助于代码的优化和运行效率的提高。整型、指针、浮点等类型的变量都可以分配寄存器;一个结构的部分或者全部也可以分配寄存器;对循环体中需要频繁访问的变量分配寄存器也能在一定程度上提高程序的效率。尽量将栈空间、视频缓冲区和媒体流等存储器数据加载到Mini Data Cache中,可防止Cache的频繁变化。在处理器资源紧张而存储器资源相对富裕的情况下,也可以用牺牲存储空间换取运行速度的办法。
  
  2.3 编程优化
  使用inline函数 支持Xscale体系结构的大多数编译器都支持inline关键字,如果函数被定义为一个inline函数,那么在调用它的地方将会用函数体来替代函数调用语句,这样将彻底省去函数调用的开销。使用inline的最大缺点是函数在被频繁调用时,代码量将增大。
  变量定义优化 在变量定义的时候,需要考虑怎样最佳地控制存储器布局(如图2所示)。当然,编译器在一定程度上能够优化这类问题,但是最好的方法还是在编程的时候,把所有相同类型的变量放在一起定义。在定义局部变量时,一般情况下人们总是设法使用short或char来定义变量以节省存储器空间,但是,在函数局部变量的数目有限的情况下,编译器会把局部变量分配给内部寄存器,每个变量占用一个寄存器,这样,使用short和char型变量非但起不到节省空间的作用,还会增加开销。增加局部变量可以减少CPU对存储器的访问频度。
  参数传递优化 根据ARM统一的函数过程调用标准,寄存器组中的(R0~R3)作为参数传递和结果返回寄存器;如果参数数目超过4个,则使用堆栈进行传递。显然,通过堆栈传送参数的开销较大。我们知道内部寄存器的访问速度是远远大于存储器的,所以要使参数传递在寄存器里进行,应尽量控制函数参数在4个以下,以降低函数调用的开销。
  循环条件优化 在一个循环结构中,累加法比递减法多用了一条指令,当循环次数比较大的时候,相应的两段代码就会在性能上产生出明显的差异来。其中的原因在于,当进行一个非零常数比较时,必须用专门的CMP指令来执行;而当一个变量与零进行比较时,ARM指令可以直接利用条件执行的特性(NE)来判别。循环的终止条件会影响循环的效率,再加上ARM指令的条件执行特性,所以在写循环的终止条件时应尽量使用count-down-to-zero结构。编译器可以用一条BNE(若非零则跳转)指令代码代替CMP(比较)和BLE(若小于则跳转)两条指令,既减小代码尺寸,又加快了运行速度。
  条件执行优化 条件执行优化既可以缩短代码长度,又可以优化流程控制。在充分利用条件执行情况下,可以从一次比较判断得到多个跳转分支。在ARM指令集中,其中一个重要特征就是所有的指令均可包含一个可选的条件码。当程序状态寄存器(PSR)中的条件码标志满足指定条件时,带条件码的指令才能执行。可以发现,利用条件执行通常可以省去单独的判断指令;然而如果条件执行语句太多,性能上会有所降低。如果一个条件执行指令组的数目超过3条,则可以考虑用跳转指令来进行条件分支,以提高条件判决的速度。
  
  3 结束语
  
  在嵌入式技术飞速发展的今天,XScale处理器以其高性价比、低功耗被广泛应用。本文通过对XScale体系结构的详细分析,针对该体系的特点进行了运算优化、处理器相关的优化以及编程优化。这些优化能够有效地提高程序的性能。希望本文能够对使用XScale体系结构的开发者提供帮助。
其他文献
摘要:远程教育中,很多学生由于缺少交流产生孤独感,从而导致辍学。网络化班级管理系统主要是为远程教育学生提供感情归属的目的而设计的。系统分前台和后台两部分,前台为学生提供温馨的网上班级环境和协同学习环境,并提供人性化的管理和服务功能;后台为班主任提供班级事务管理平台,使班主任工作从手工化转向信息化、自动化。  关键词:班级管理;远程教育;虚拟集体;网络化管理    0 引言    在远程教育中,对学
期刊
摘要:使用ETL过程将数据源数据装载到数据仓库,大多数时候是向数据仓库中追加数据,但有时也需要删除一些数据,以维持数据仓库中数据的正确性。文章结合Oracle ETL工具的装载特点提出了一种对增量数据进行预处理的方法,以实现有删除数据的ETL装载,并给出了具体的设计。  关键词:增量ETL;增量数据;数据仓库;增量维护算法    0 引言    数据仓库中的ETL(Extract,Transfor
期刊
摘要:研究了在SAP(System,Applications and Products in Data Processing)R/3表单开发过程中实现自定义结构数据传递的问题。提出了一种高效实用的方法,并给出了简单的程序范例。使用该方法,可以避免采用常规方法需要在ABAPDictionary中创建大量结构的问题,减轻了后期维护的工作量,也提高了开发的效率。  关键词:SAP;表单;自定义结构数据;
期刊
摘要:阐述了Oracle10g中最新推出的Flashback在实际环境中的应用与实践。通过闪回特性工作原理的基本描述以及闪回查询、表闪回、删除闪回、数据库闪回这四种闪回功能的实际应用,使读者对Oracle10g中的Flashback特性有更深入的了解。  关键词:数据库:Oracle10g;Flashback;闪回    0 引言    Flashback是Oracle10g最新推出的新特性,通过
期刊
摘要:分析了目前中小企业信息化需求,在此基础上,设计了适应中小企业个性需求的信息化解决方案。应用文中所提出的平台架构,可以快速构建出相应的应用系统。  关键词:中小企业;信息化;Web服务;.NET    0 引言    信息技术的广泛应用,使得信息在以计算机技术为主导的自动化、网络化管理中成为生产与交换的重要资源。虽然,新的信息服务企业不断出现,还产生了一些新的服务模式和形态,但由于自身特点的限
期刊
摘要:通过论述制造网格资源管理和计算经济的特点,指出计算经济可以适应制造网格资源管理的特征和需求:提出了一种基于计算经济的制造网格资源管理框架,强调以经济为基础合理分配有限的资源,为不同服务质量需求的应用提供服务,提高资源的使用效率。此管理框架采用层次模型。文章详细论述了各层的功能,并讨论了该框架中的资源发现模式和交易模式。  关键词:制造网格;资源管理;计算经济;层次模型    0 引言    
期刊
摘要:计算机系统的补丁管理已经成为计算机系统安全的一个重要组成部分。在现有技术下,如何完整、规范地为需要严格与Internet隔离的内联网计算机用户分发和安装补丁是一个较为突出的问题。文章在微软免费的WSUS(Windows Server Update Services)服务基础上,开发出一套基于Windows平台的内联网补丁管理系统,弥补了WSUS系统的不足,提出了一种解决该问题的方案,并已经在
期刊
摘要:简要介绍了农村劳动力技能培训系统的UML分析设计,给出了系统的用例图、总体结构图和类图,并对部分系统的动态行为用顺序图和状态图进行了描述。该系统已投入实际运行,效果良好,对同类软件的开发具有参考价值。  关键词:农村劳动力技能培训系统;UML;用例图;类图    0 引言    农村劳动力技能培训是将农村部分富余劳动力通过培训和岗前培训转移到非农领域就业,该工作主要是以政府推动、学校主办、部
期刊
摘要:服务器控件是ASP.NET的一个重要组成部分,它为用户快速开发Web应用程序提供了支持。文章介绍了服务器控件数据绑定组件的创建及获取数据的过程,详细阐述了通过执行SQL语句将数据绑定到服务器控件的三种方法及它们在Code-behind页面中的调用方式。这种基于组件的开发方式使编程模块化,提高了开发效率,保证了应用程序的质量和可维护性。  关键词:ASP.NET;服务器控件;数据绑定;组件  
期刊
摘要:CommonKADS是支持结构化知识工程的方法。它为开发一个基于知识的系统提供了一套完整的方法框架。文章介绍了CommonKADS知识工程方法,并应用该理论方法研究了知识工程的需求分析过程和知识模型建模技术。结合对当前大学外语教学现状的分析和运用网络教育来支持大学外语教学的设想,建立了相关的学习评价系统模型,为网络外语教学系统的进一步开发做出了积极的探索。  关键词:知识工程;CommonK
期刊