当前位置: 首页 > 专利查询>浙江大学专利>正文

超长指令字处理器的指令压缩方法技术

技术编号:2867255 阅读:178 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种超长指令字处理器,包括指令级、指令解压缩单元、指令分配及译码单元、若干个数据通道,每个数据通道包括若干个功能单元和一个端口寄存器文件;此种超长指令字处理器的指令压缩方法,由水平方向压缩和竖直方向压缩组成。采用此种处理器及其指令压缩方法,能减少指令带宽,提高指令带宽的利用率,减少片上程序存储器空间的大小,真正达到减少硬件开销的目的。

【技术实现步骤摘要】

本专利技术涉及一种指令处理器及其指令压缩方法。
技术介绍
超长指令字(VLIW)结构在很多领域的最新、高性能的处理器设计中已经被广泛使用,比如TI公司的TMS320C6x,Agere公司的StarCore等DSP处理器,TriMedia Technologies公司的Trimedia媒体处理器,以及Intel公司的通用处理器等。VLIW结构就是把很多标准的指令捆绑到一条长的指令字中,这个指令字包含了可以在不同的片上或者同一片上的不同功能单元里同时执行的指令。然而,一条如此长的指令字需要很宽的程序存储器带宽以及较大的程序空间。随着功能单元数目的增长,指令带宽和存储器空间资源将更为紧张。在嵌入式系统应用中,系统功耗和芯片面积是最重要的因素,程序存储器和指令带宽越大,芯片的面积也就越大。所以减小指令带宽以及程序存储器对于降低系统的开销是非常关键的。通常采用压缩指令而减少指令带宽,而指令压缩方法我们把它主要分为两类。一类采用无损失数据压缩方法,即基于Huffman编码的方式而压缩指令。另外一大类方法我们把它们称为基于单条指令形式的模式的指令压缩方法。只是针对单条指令的压缩有利于实现一个更为简单的解压缩单元。这两大类方法都有自己的优缺点,但是基于Huffman编码的压缩方法实现比较困难。而且虽然VLIW处理器近年来已经获得的极大的青睐,但是针对VLIW结构的指令压缩方法并没有像其他结构那样研究的很广泛。一般VLIW处理器都存在以下的问题或弱点1)、指令带宽过于宽,2)、指令带宽利用率低下,3)、片上程序器空间占用量大。
技术实现思路
针对现有技术中存在的技术问题,本专利技术提供一种基于单条指令的、模式新颖的、能减少指令带宽的。本专利技术为达到以上目的,是通过这样的技术方案来实现的提供一种超长指令字处理器,包括指令级、指令解压缩单元、指令分配及译码单元、若干个数据通道,每个数据通道包括若干个功能单元和一个端口寄存器文件;由指令级将信息传递给指令解压缩单元后,再传递给指令分配及译码单元,由指令分配及译码单元将信息传递给功能单元,每个数据通道内的功能单元和多端口寄存器文件之间信息能来回传递,多端口寄存器文件之间信息能来回传递。此种超长指令字处理器的指令压缩方法,由水平方向压缩和竖直方向压缩组成。水平方向压缩是对指令内部结构的压缩,由寄存器地址压缩和操作码压缩组成;寄存器地址压缩是将指令中的一个寄存器地址作为基地址,指令中的其余寄存器地址表示为基地址加偏移地址;操作码压缩是将指令拆分为子虚拟指令A和子虚拟指令B,将指令中常用的操作码放入A,将剩余的操作码放入B,A中操作码的位数小于B中操作码的位数。竖直方向压缩是对指令间的压缩,指令包分为取指包和执行包,将若干个需要一起执行的指令放入取指包,由执行包来提取实际需要执行的指令。用本专利技术的,能对指令进行有效地压缩。水平方向压缩能减少一定数量的位数,竖直方向压缩可以过滤掉空操作指令。采用这种方法的好处就是不用修改指令集,不用修改编译器,不用修改硬件软核,而只要在汇编的时候进行处理和片上译码的时候插入一个解压缩模块就可以了。能减少指令带宽,提高指令带宽的利用率,减少片上程序存储器空间的大小,真正达到减少硬件开销的目的。附图说明图1是本专利技术的超长指令字处理器的结构示意图;图2是本专利技术的超长指令字处理器的软件流程图;图3是一般VLIW的指令结构图;图4是指令操作码压缩的原理图;图5是指令竖直方向压缩的原理图;图6是仅采用水平方向压缩方法,指令压缩前后比较图;图7是新的取指包的结构示意图。具体实施例方式实施例1结合上述附图,对本专利技术的进行详细说明。图1给出了一种本专利技术的超长指令字处理器的结构,此种处理器包括指令级、指令解压缩单元、指令分配及译码单元、若干个数据通道,每个数据通道包括若干个功能单元和一个端口寄存器文件;由指令级将信息传递给指令解压缩单元后,再传递给指令分配及译码单元,由指令分配及译码单元将信息传递给功能单元,每个数据通道内的功能单元和多端口寄存器文件之间信息能来回传递,多端口寄存器文件之间信息能来回传递。此种处理器的指令压缩方法,由水平方向压缩和竖直方向压缩组成。水平方向压缩是对指令内部结构的压缩,由寄存器地址压缩和操作码压缩组成;寄存器地址压缩是将指令中的一个寄存器地址作为基地址,指令中的其余寄存器地址表示为基地址加偏移地址;操作码压缩是将指令拆分为子虚拟指令A和子虚拟指令B,将指令中常用的操作码放入A,将剩余的操作码放入B,A中操作码的位数小于B中操作码的位数。竖直方向压缩是对指令间的压缩,指令包分为取指包和执行包,将若干个需要一起执行的指令放入取指包,由执行包来提取实际需要执行的指令。对于VLIW标准指令,由于其模型结构的的特点,决定了其寄存器地址的使用的频繁性。如图3所示,几乎每一种运算指令结构都包含有三个寄存器地址两个源操作数寄存器地址和一个目的操作数寄存器地址,以及一个操作字段。三个寄存器地址占去了指令中的大量的位数,但是如果这三种寄存器地址相差很近,就不需要这么多的位数来表示这三种寄存器地址了。统计表明大多数时候编译产生的指令代码的三个寄存器地址相近的,就完全可以采用减少指令位的方法。所以对于三个同时出现寄存器地址的指令,我们可以把其中一个作为基地址,另外两个只用偏移地址来表示的方法来表示这三个寄存器地址。也就是说,间接寻址的方法可以在这里采用。这样就可以减少一定数量的位数。其次就是对于一般指令中的操作码的处理了。可以进行大量应用程序的统计分析,把操作码使用的分布率计算出来,然后在此基础上进行操作码的减少。图4给出了操作码部分压缩的原理图。可以采用把原指令分开的方法,把一条指令在汇编的时候分为子虚拟指令送入到指令取指包来执行。在图中,原指令经过统计和分离,分离工作可以在汇编的时候进行,一条指令的所有操作码分成两个虚拟子指令。其中A,B子指令都是虚拟指令。把常用的操作码给在A指令中,把剩下的放到B指令中,这两类的操作码位数分别是m和n位,m小于n。所以对于常用的指令操作码可以减少,但是对于不是很常见的指令就直接把原来的操作码长送过去。这样就克服了一般根据统计情况减少操作码而丢失指令的缺点。一般可能最大的节约指令长度的就是减少立即数的表示位。可以采用使用限定的位数来表示立即数的高位数,然后可以在汇编的时候加虚拟扩展指令,在扩展指令中把剩下没有给出的立即数就可以给出了。VLIW处理的特点之一就是多条指令的并行执行。从图1可以看出多个功能单元可以同时执行。但是由于应用的限制和资源限制;以及由于在一个数据通道中,上下指令操作寄存器应用的相关性;还有编译器的能力使得VLIW处理器在很多情况下不能达到理想的状态。所以说并不一定就是需要同时执行的指令数就要一定等于功能单元的数目。图5给出了竖直方向指令压缩的原理图。由于编译器并不是每次都能产生与功能单元对应的指令,所以很有可能在送出的指令包的包括空白指令。考虑这种情况,可以把几个一起执行的指令与后面的一起执行的指令放在一个指令包里,这样就可以把指令包分为取指包、和执行包,一个取指包可以有多个执行包,执行包中的指令就是包含了并行执行的指令。这样就可以把一些空操作指令从中过滤。本专利技术的处理器软件流程如图2所示C代码经过C编译器本文档来自技高网...

【技术保护点】
一种超长指令字处理器,其特征在于:包括指令级、指令解压缩单元、指令分配及译码单元、若干个数据通道,每个数据通道包括若干个功能单元和一个端口寄存器文件,由指令级将信息传递给指令解压缩单元后,再传递给指令分配及译码单元,由指令分配及译码单元将信息传递给功能单元,每个数据通道内的功能单元和多端口寄存器文件之间信息能来回传递,多端口寄存器文件之间信息能来回传递。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘鹏姚庆栋洪享
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1