关闭

关闭

关闭

封号提示

内容

首页 基于C6x平台的GCC编译器移植.pdf

基于C6x平台的GCC编译器移植.pdf

基于C6x平台的GCC编译器移植.pdf

上传者: tianwx 2012-07-05 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《基于C6x平台的GCC编译器移植pdf》,可适用于IT/计算机领域,主题内容包含科技信息年第期SCIENCETECHNOLOGYINFORMATION基于Cx平台的GCC编译器移植刘飞,孙永节孙海燕(中国人民解放军国防科技大学计符等。

科技信息年第期SCIENCETECHNOLOGYINFORMATION基于Cx平台的GCC编译器移植刘飞,孙永节孙海燕(中国人民解放军国防科技大学计算机学院湖南长沙武警南京指挥学院训练部江苏南京)【摘要】本文从GCC提供的移植到新目标机的结构机制出发讨论了Cx平台的GCC编译器移植实现方法。在分析GCC编译器的实现原理的基础上通过移植GCC的后端实现了一个基于Cx平台的编译器。在简要介绍Cx系列芯片体系结构以及GCC后端架构之后对GCC移植所遇到的问题及其对应的解决方法进行了阐述并对实现的过程加以描述。最后对后续研究工作做出规划。【关键词】GCCCx超长指令字移植【Abstract】ThispaperdiscussestheimplementationofportingGCCtotheCxplatform,whichisachievedbyusingthemechanismprovidedbyGCCforportingtonewtargetplatformsBasedonstudyofGCCcompiler’sworkingprinciples,GCCisportedtoCxarchitectureAftersimplyintroducesthearchitectureofCxandtheframeofGCC,wedescribestheproblemswemetintheportingworkAndwealsoprovidetheimplementprocessoftheportionFinally,wediscussthefutureworkoftheresearch【Keywords】GCCCxVLIWPort绪论TMSC(Cx)系列DSP是TI公司推出的一种高性能的数字信号处理器。它的处理内核采用超长指令字结构一个指令周期最多能并行执行条指令。片内集成了大容量存储器并采用二级存储器的结构。强大的处理性能和丰富的片上资源使Cx系列DSP在处理性能上高于其他传统DSP。其目前主要应用于G、G移动通讯数字电视广播医疗以及工业图像处理等领域。为了更好的体现出Cx系列DSP的优异性能必须搭配与之相合的C编译器。TI公司自身提供的Cx系列C编译器虽然具备很多优点但是其商业性限制了自身的发展也给我们的使用带来了不少麻烦。这时候我们将目光转向了由免费软件基金会(FreeSoftwareFoundationFSF)倡导的开源编译器GCC(GNUCompilerCollection)期望通过GCC的后端移植找到一个能够较好的支持Cx平台的开源编译器。本文将对Cx的体系结构和GCC的编译流程进行介绍并对移植方法的实现加以阐述。x体系结构分析TMSCxCxCx是Cx系列最常用的DSP芯片其核心采用先进的超长指令字(VeryLongInstructionWord,VLIW)体系结构。虽然VLIW采用多个独立的功能单元但它并不是将多条指令流出到各个功能单元而是将多条指令的操作组装成固定格式的指令包形成一条非常长的指令。指令可以同时流出的最大数目越大VLIW的性能优势就越明显这是因为VLIW体系结构中对于同时可流出的多条指令的调度及其相关的处理任务都是由编译器完成的。程序中所包含的指令级并行(InstructionLevelParallelism,ILP)在编译阶段就能够被发现和利用通过对软件的设定可以在更大范围内搜索可以利用的ILP这样比由硬件在运行时进行检查和调度更为有效。同时VLIW中指令的并行操作由编译器显式指定这样就可以确保同一时间并行执行的操作不会超过机器提供的并行资源限度简化了指令译码和控制逻辑使得VLIW支持更高的ILP具有更好的并行性能。Cx系列DSP体系结构如图所示。图中的阴影部分是Cx系列芯片的CPU其组成包括:程序取指单元指令分配单元高级指令打包指令译码单元条数据通路(A和B)每条包括个功能单元(L、S、M、D各功能单元的对应指令如表所示)两组各个位寄存器控制寄存器控制逻辑、测试、仿真和中断逻辑。前三个单元可以传送高达每时钟周期个位指令到功能单元。而功能单元则对获取的指令进行处理。过程中需要用到两条从存储器读取的数据通路(LD、LD)两条存储到存储器的数据通路(ST、ST)两条数据寻址通路(DA、DA)以及两条寄存器数据交叉通路(X、X)。从表中可以看出四个功能单元分别具备特别的功能:L单元主要负责定点数和浮点数的算术逻辑运算以及定点与浮点之间的转换S单元主要完成移位运算、位字段运算以及分支M单元主要完成乘法运算D单元主要完成位加、减、线性和循环寻址计算带有位常数偏移量的双字装载与存储等。图Cx系列DSP体系结构框图表Cx系列DSP功能单元对应指令IT论坛科技信息SCIENCETECHNOLOGYINFORMATION年第期为了使Cx芯片各个功能单元能够协调配合充分发挥其高超的性能我们必须让GCC能够很好的对程序进行编译这就依赖于以下的工作。GCC编译器结构分析GCC最初只是RichardStallman于年编写的一个C的编译器当时也叫做GCC不过表示的是GNUCCompiler。从本质上来说整个GCC编译器工具链就像是一个大型的流水线如图所示。它将由某种编程语言写成的代码转换成另外一种二进制可执行文件后输出。构造一个GCC编译器同时生成可执行文件需要经过以下几个步骤(模块):预处理器(Preprocessor)负责处理预处理指令函数定义库文件以及其它存放在源文件中的一些文件。C预编译器被称为cpp其生成的结果是经过预处理的C源文件。编译器(Compiler)负责处理预处理器传递给它的中间文件并生成汇编源文件。C编译器本身是GCC生成的cc可执行文件。汇编器(GNUAssembler,gas)负责处理汇编源文件并把它们翻译成二进制对象代码存入对象文件此对象文件可以直接在目标处理器上运行。除了指令以外对象文件一般还包含部分调试信息。连接器(GNULinker,ld)负责将一个或多个对象文件连接成一个可执行文件。最终生成的可执行文件能够在Cx系列芯片上运行。图GCC编译工作流程在了解了GCC编译器工具链的结构之后不难看出对于GCC在Cx平台上的移植我们所要完成的重点就是在“cc”、汇编器中添加对Cx的支持以及在二进制格式描述符库(BinaryFormatDescriptorlibrary,BFDlibrary这是“binutils”工具集中的一部分)中添加对所选择的二进制对象格式的支持。GCC移植实现移植关键点及过程阐述由于GCC是一个结构庞大的编译器其后端使用了寄存器传输语言(RegisterTransferLanguage,RTL)、机器描述(MachineDescription,MD)、目标机函数(TargetMachineFunction,TMF)、目标机宏(TargetMachineMacro,TMM)的方式来设计。也正因为如此GCC才能够依靠读入不同的硬件描述在不同的平台之间执行同样的程序代码从而实现多平台的移植。而移植关键也就在于这些机器相关部分的改造。其中MD描述的是在什么样的情况下以什么样的方式来对应到适当的RTL表达式中。包括两个部分:一是md文件即描述指令格式的文件二是C头文件。TMF与TMM是用于定义GCC移植所对应目标平台的函数及宏的所在。GCC的每一段代码都会预先设计好很多空位以便进行移植设计时候的进行代换填充。这样所有机器相关的部分都被独立出来留作后面的使用。移植时首先需要在MD及TMM与TMF中完成对目标机的各项属性的指定。诸如寄存器指定、寄存器类名定义等等。通用机器属性。目标机所具有的所有特殊属性都必须在GCC后端的目标机宏中加以定义并存放在目标目录下的configcxcxh文件中。GCC需要精确的知道Cx上各种不同数据类型的宽度、可用性甚至其最小可用功能单元每字的位数。#defineBITSPERUNIT#defineBITSPERWORD#defineBIGGESTALIGNMENT#defineMAXFIXEDMODESIZE#defineINTTYPESIZE#defineSHORTTYPESIZE#defineLONGTYPESIZE#defineLONGLONGTYPESIZE寄存器属性。某些具备特殊用途的指针寄存器由于需要在函数执行的全过程中保留其值因此就要用宏定义命令“FIXEDREGISTERS”将其从寄存器分配中剔除以避免在存入其它值的时候遭到变更。*定义特定寄存器**特定寄存器置否则置**B作为堆栈指针A作为栈顶指针*#defineFIXEDREGISTERS{*AREGS*,,,,,,,,**,,,,,,,,***BREGS*,,,,,,,,**,,,,,,,,**寄存器类属性。Cx的VLIW体系结构用有若干种类型的寄存器用于表示整型、浮点型或者单指令多数据类型的操作。GCC为了正确区分不同类型的寄存器而定义了不同的寄存器类。Cx中的寄存器类名的初始化定义:#defineREGCLASSNAMES{“NOREGS”,“CONDITIONAREGS”,“CONDITIONBREGS”,“AREGS”,“BREGS”,“ALLREGS”,RTL是一种以虚拟寄存器的方式来描述计算机所要做的事情的语言。它在GCC中所扮演的角色是所有语言前端都能够转换成的语言这是一种通用的格式可以套用到不同目标机的机器描述语言上这样就可以根据不同的平台而产生对应的各种不同汇编源码。RTL使用类似LISPlist的方式对文件进行表示例如:指令inta=转换为RTL表示方式就变成:(insn(set(memf:SI(plus:SI(regf:SIvirtualstackvars)(constintxfffffffffffffffc))aSA)(constintxa))(nil)(nil))以上指令表示通过set命令将常数存入变量a的寄存器地址中相当于汇编指令中的mv操作。最后GCC按照TMF与TMM中的函数定义将MD中的RTL模板以匹配的方式填入所要产生的目标代码中就可以以相对简便的方法得到目标平台编译器。直观的来看就是在配置过程中根据Cx平台的需要建立tmph和tmh这两个文件。然后在make的时候将GCC中一些Gen***这样的工具进行编译。编译后的工具会把cxhcxccxmd三个文件中对应的MD以及TMMTMF填入正确的源文件的相应位置生成部分insn开头的文件这样原有的编译器就转化成所需的Cx编译器从而完成移植工作。移植中遇到的问题和大多数DSP遇到的情况一样Cx同样遇到了当前通用处理器面临的缺少硬件支持的问题。这就给GCC的移植带来了很大困难。Cx不支持堆栈操作。其指令中没有指定堆栈指针和结构指针的寄存器相应的也没有进出栈的操作。因此我们需要从通用寄存器组中分别占用一组作为栈指针和结构指针寄存器。Cx本身不支持递归调用算法。这就意味着执行顺序离栈只能是用分支指令或者中断来实现。而在有了以上两种指针之后我们可以模拟的实现我们所想要的递归操作。相应的我们需要在程序编写的过程中自行加入对进出栈的描述。Cx既不提供多位条件码寄存器也不提供通用比较指令。取而代之的是其自身的特有比较指令如CMPEQ和CMPGT。同时Cx仅仅提供一位用于真值的表示这就要求在条件表达式(下转第页)IT论坛科技信息SCIENCETECHNOLOGYINFORMATION年第期每年到企业考察、培训或交流及时了解企业最新生产技术、工艺标准、管理方法及其发展趋势防止相关专业实务能力和素质退化另一方面将企业专家请进校园对教师进行有计划地培训。四是实训基地培训。实训基地具有成本低、易组织、方式灵活、接触最新生产技术、生产与教学对接紧密等优势通过参加实训基地的专业实践和业务培训能明显提高教师的实训能力。五是重视专业带头人和骨干教师的选拔和培养。从基础知识扎实、实践经验丰富、教学效果好、学术水平高的教师中选拔出优秀人才重点扶持在教学、科研上压担子提高中青年骨干教师业务水平充分发挥其教学改革领头人、专业发展领航人、教学团队领军人、专业领域领引人的积极作用。另外师资培训只有通过合理的人才激励和人才使用才能体现其实际效果。学院应制定相关的政策诸如对培训取得的成果给予奖励作为教师评优、晋升晋级的基本依据在骨干教师的培养、学科带头人、科研项目立项等方面给予优先。.加快“双师型”教师队伍的建设“双师型”教师队伍建设的程度如何直接关系到高职院校教育教学质量是决定高职高专院校能否实现可持续发展的关键因素。“双师型”教师是高职师资队伍的特色其资格标准一般包括三个方面:一是学历标准二是实践经验三是“师范”资格。高职院校应结合学院的实际情况加快“双师型”教师队伍的建设和拓宽来源渠道。第一要打破师资来源以高校毕业生为主的传统观念学校应出台相应的政策鼓励并帮助社会上各行业中的优秀人才到学校任教充实教师队伍。第二加强对在职教师的培养和训练。对理论课教师在不断提高他们学历层次和理论水平的同时要让他们到生产、建设、管理、服务第一线专业实践和考察一段时间或到学校实训基地和产学研基地进行锻炼或工作一定时间包括动手能力训练提高他们的实践能力和动手能力通过努力取得相应的专业技术职称。第三聘请行业、企业内优秀人才到学院做兼职教师。聘任实践经验丰富具有工程师、高级工程师职称的或退休工程技术人员担任专业教师聘请具有高级技工、技师资格的在职或退休工人作为生产实践指导教师。学院要对兼职教师进行培训让他们掌握教育的一些基本理论和方法。学院对于成绩优秀的“双师型”教师以及积极进行专业实习实践、取得“专业技术职务资格证书”的教师在课时津贴、年度考核等方面的政策上应给予倾斜在待遇上给予提高在职称、职务晋升上可以优先等以提高教师的积极性。提高高职教师科研素质的对策提高教师科研素质是提高高职院校科研整体水平的需要也是提高教学质量、综合人才培养水平的需要。第一制定切实有效的科研激励机制。如根据发表学术论文的期刊级别和课题级别给与不同的奖励。第二搭建科研平台。科学预算、科学规划保证每年拿出一定数量的经费作为学院的科研专项经费建设科研实验中心可与企业合作解决自身实验资源不足问题与其他大学、科研院所建立好关系采用付费方式租用仪器设备完成科研任务。第三做好科研骨干的培养工作。选派中青年教师到高校做访问学者促进其科研素质的提高支持教师参加各级各类学术活动使教师增长见识开阔视野引进高学历或有较强科研能力的人才促进院校科研水平的提高。第四提高学院科技处的服务意识。对新建高职院校来说教师科研能力的提高还需要很长时间的学习与实践科研部门要创造条件请这方面的专家做讲座引导教师如何查阅文献、如何选题、如何写科研申请书并帮助教师提供实验场所等。.提高高职教师待遇吸引优秀人才加入教师队伍国外高职教师普遍有着较为优越的社会地位和丰厚的待遇。在日本教师的报酬比一般的公务员高工资原则上一年提升一次德国高职学校的教师属于国家公务员其工资每两年增加一次。正因为有着优厚的待遇才吸引、稳定高素质的教师队伍从而产生高水平、高效率的高职教育。政府要提高公共教育经费在国民生产总值中的比例构建科学合理的高职院校成本投入体系[]。政府加大对高等职业教育投资力度并给予高职教育一定的政策扶持使得学校有能力提高教师待遇设立教师奖励基金提高教师科研及进修经费选派青年教师参加生产实践、管理和进修。.高职教师也要不断努力提高自己综合水平适应高职教育的需要一是要积极参加各类相关专业证书培训。利用寒暑假时间到相关培训机构接受短期培训或自学以获取相应的职业能力等级证书。二是要深入企业、工厂等一线学习和调查研究掌握最新技术和管理信息把行业和技术领域的最新成果引入课堂教学。三是要提高自学能力和科研能力。当今时代专业知识加速老化要想提高个人的专业核心能力教师必须具有自学能力以不断获取新知识、不断更新知识结构体系。只有活到老学到老才可能成为教育艺术的大师、培育英才的巨匠。教育科研能力是优秀教师所不可缺少的一种能力是教师创造优异成绩的重要条件。教师要把教学实践、教学改革与课题研究结合起来提高教学质量和教育水平。【参考文献】[]阎锐.高职院校师资队伍建设激励机制创新研究J.中国经贸导刊().[]刘楚佳李志雄.高职教师专业化的现状调查与分析J.教育与职业().[]刘楚佳李志雄.高职教师的现状、问题及对策J.中国大学教学().[]朱晓慧于润伟.高职教师素质现状及对策J.职教论坛().[]王碗.中专升格高职后“双师型”教师队伍建设现状的调查J.职教论坛().[]常永翔.“双师型”教师队伍建设的探索与构想J.科技情报开发与经济().[]付菊.他山之石可以攻玉J.世界职业技术教育().[]陈尚唐斌.我国高等职业教育经费投入现状及对策J.职业教育研究().作者简介:陈尚()男江苏泗阳人硕士苏州卫生职业技术学院讲师。※基金项目:本文系江苏省职业技术教育学会年度职业教育研究课题《加强高职院校师资队伍建设的实践与研究》(课题编号)的阶段性成果主持人:陈尚。[责任编辑:王静]科(上接第页)的代码生成阶段循环执行。小结移植GCC编译器到Cx系列DSP的工作在GCC核心组成员们的努力下已经变得越来越简化但这仍是一项浩大的工程需要大量的背景知识和坚持不懈的努力。本文只是提纲挈领的阐述了其中比较重要的几个环节。今后的工作将侧重于编译器的代码优化以期获得更高的编译效率和更好的编译效果。【参考文献】[]http:wwwticomcn[]JFisherVeryLongInstructionWordArchitectureandtheELI,ProceedingsofthethSymposiumoncomputerArchitecture,June:[]TMSCxCPUandInstructionSetReferenceGuide(spru)http:wwwticom[]GNUCompilerCollectionInternalsManualEBOLhttp:wwwgnuorgonlinedocsgccint[]DiegoNovilloGCCAnArchitecturalOverview,CurrentStatusandFutureDirectionsRedHatCanada作者简介:刘飞()男硕士研究生研究方向计算机体系结构与编译技术。[责任编辑:翟成梁]科本刊重稿

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/3
2下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部