论文部分内容阅读
随着通信、视频等高复杂度应用的出现,通用CPU已无法满足计算密集型嵌入式应用的要求,单纯通过提高处理器主频达到性能提升,势必会引起整个嵌入式系统功耗增加;单纯使用ASIC设计,则会使系统灵活性下降。针对目标应用定制处理器,可以在性能、功耗、成本和灵活性等多个方面获得最佳的平衡。指令集扩展并精确评估其性能是定制处理器设计的关键环节,分析目标应用算法采用手工指令集扩展和等待处理器硬件设计完成再评估其性能必然会影响处理器的设计周期。自动指令集扩展技术通过自动分析目标应用程序,快速搜索程序中满足约束的结构,获得候选指令集,再在候选指令集中选择出能够有效提升处理器性能的指令,并通过结构描述语言建立精确的处理器模型,在设计之初快速精确的评估处理器性能,可以大大缩短处理器的设计周期。
本文建立了基于结构描述语言LISA的周期精确的基本处理器模型,包括:存储器子模型、资源子模型、行为子模型、指令集子模型和时序子模型。指令集子模型使用Analog Devices(ADI)公司的16位处理器ADSP2191指令集作为基本指令集,包括:ALU指令、MAC指令、Shifter指令、Multifunction指令、Data Move指令和Program Flow指令。设计了搭建虚拟原型平台需要的周期精确的EMI模型和SDRAM模型。虚拟原型平台是处理器模型优化、目标应用程序优化和自动指令集扩展的基础。
在候选指令集生成过程中,本文提出了基于关系矩阵的候选指令集生成算法,加速候选指令集的生成。关系矩阵代表了程序数据流图中各个顶点之间的关系,对于没有关系的顶点,在建立搜索二叉树时次序可以调换,因而它们对当前节点子树的影响相同。算法保证对当前节点搜索时,与其相关的节点都已搜索结束,如果与当前节点相关的两个节点中有一个不满足约束条件,并且当前节点相对于相关节点引入的两个新顶点无关,那么当前节点肯定不满足约束条件,可以忽略其子树的搜索,因此算法可以大大减少搜索不满足约束条件的节点个数。与Atasu算法相比,在MP3解码中的子带综合示例、MPEG4解码中的IDCT示例、ADPCM解码示例、MD5算法示例、FFF变换示例和YUV2RGB示例的候选指令集生成过程中,获得了相同的满足约束的节点数,在定义不同的输出约束条件下,搜索不满足约束节点的个数平均减少79%、40%、82%、41%、59%、60%。
在候选指令选择过程中,本文提出了基于空间限定算法的候选指令选择方法,加快候选指令的选择。算法建立以候选指令为顶点的搜索二叉树,通过先判断每个子树能够获得的性能上限,决定是否搜索当前子树,达到加快搜索的目的。如果当前节点的性能上限已小于或等于目前记录的最优性能,则整个子树不需要再搜索。子树性能上限的判断是通过先对候选指令按照单位面积性能参数从大到小排序,因此总能从可选指令集中先选到参数最大的候选指令,当候选指令不能选中时,则考虑部分选中,虽然不是可行的选择,但可以计算出当前子树能够获得的性能上限。与Clark启发式贪婪算法相比,本文算法是精确算法,在MP3解码中的子带综合示例、MPEG4解码中的IDCT示例、ADPCM解码示例、MD5算法示例、FFT变换示例和YUV2RGB示例的候选指令选择过程中,都搜索出了性能更优的指令扩展,并且比完全搜索所有节点平均减少搜索节点数97.76%。
本文通过在ARM ESL虚拟原型平台上处理器模型运行在66MHz频率下连续解码20帧MP3文件进行验证。相对于16位ADSP2191基本处理器模型,扩展为32位处理器模型后解码需要的周期数减少57.9%,扩展向量乘法特殊指令后,解码需要周期数减少27.5%,此时解码一帧需要22ms,满足MP3解码实时性要求。MPEG4解码应用中针对消耗CPU资源最大的IDCT模块扩展指令后,运行二维8x8的IDCT需要周期数减少20.5%。