专利名称:一种并行指令集的实现方法
技术领域:
本发明属于计算机技术领域,涉及到微处理器指令集中的一种并行指令实现方法。
背景技术:
高性能处理器通常需要具有一个可以满足以下要求的指令集紧凑代码(以便存储处理器程序所需的存储器数量足够小),以及丰富的操作和操作数。实际上,一个程序内有90%或更多的指令很少被执行以至其只占用10%或者更少的执行时间,剩余的10%的指令自然占用90%的执行时间,而且经常出现这样的情况,即一个程序中很少执行的部分不能够有效使用处理器去同时提交两个或者更多指令,如果使用VLIW指令集对这样的程序部分进行编码,由于一个指令的结果被下一个指令用到,当连续指令不能出现在相同的 VLIff包中时,大部分指令将被编译器插入程序中以填充VLIW包的“无操作”(NOP)指令,因而对于不能有效利用并行提交指令的能力或这种能力的性能提高未产生较大的影响的程序部分,期望对程序进行编码以实现最大的代码密度。然而由于紧凑代码导致对各个最经常的操作进行最小编码(从指令集中消除不经常使用的操作)并且丰富的操作和操作数需要正交32位精简指令集,这样的多发射指令集在TMS320C3000系列DSP芯片和TMS320C6000系列DSP芯片中得以应用,但是这两个要求往往彼此冲突并且难以在单独的统一指令集中实现,无法提高处理器的处理效率。
发明内容
为了克服现有技术的不足,本发明提供一种单发射并行操作的指令集,可实现乘法,加法和装载指令的并行执行,满足高性能处理器对指令集的要求,即紧凑代码和多操作。本发明解决其技术问题所采用的技术方案包括以下步骤步骤一,列出需要并行执行的单操作指令,找出这些指令的源寄存器地址位号、目的寄存器地址位号、偏移量、偏移方向和操作类型相同的相关指令信息;步骤二,将需要并行执行的单操作指令的操作类型进行统一编码后放置于所要产生的并行指令中的任一位段,该位段称为并行操作类型域,所述的编码确保需要并行执行的单操作指令的操作类型信息没有重合;步骤三,将需要并行执行的单操作指令的源寄存器地址位号、目的寄存器地址位号、偏移量和偏移方向分别放置于所要产生的并行指令的其他位段处,该位段称为并行指令操作数域,确保需要并行执行的单操作指令的源寄存器地址位号、目的寄存器地址位号、偏移量、偏移方向没有重合;步骤四,将并行操作类型域与并行指令操作数域合并产生的一条新的指令,即为单发射多指令的并行指令集。本发明的有益效果是通过对指令结构有针对性的并行性设计,提高了专用微处理器的执行效率和微处理器内部模块的利用率。本发明提供了一种针对不同结构的微处理器及微处理器中的译码单元的指令集中并行指令字段划分的方法,有着广泛的应用前景。
图I为本发明的方法流程图;图2为专用算法处理器结构图;图3寄存器传输并行指令结构图;图4存储器访问并行指令结构图;图5乘加运算并行指令结构图。
具体实施方式
本发明包括以下步骤步骤一,列出需要并行执行的单操作指令,分别找出这些指令的源寄存器地址位号、目的寄存器地址位号、偏移量、偏移方向、操作类型等功能相同或者相近的相关指令信
肩、O步骤二,将需要并行执行的单操作指令的操作类型信息进行统一编码后放置于所要产生的并行指令中的某一位段处,但该编码方法所生成的编码不能使需要并行执行的单操作指令的操作类型信息有部分重合或者完全重合的情况,不需要并行执行的单操作指令的操作类型信息在该位段可以有不重合或者部分重合或者完全重合的情况,并通过不同编码使其区分。约定该位段称为并行操作类型域。步骤三,将需要并行执行的两条或者多条单操作指令的源寄存器地址位号、目的寄存器地址位号、偏移量、偏移方向等相关信息分别放置于所要产生的并行指令的其他位段处,但该放置方法不能使需要并行执行的单操作指令的源寄存器地址位号、目的寄存器地址位号、偏移量、偏移方向等相关对应信息有部分重合或者完全重合的情况,不需要并行执行的单操作指令的操作类型信息在该位段可以有不重合或者部分重合或者完全重合的情况,并通过不同编码区分。约定该位段称为并行指令操作数域。步骤四,将并行操作类型域与并行指令操作数域以某种方式合并而产生的一条新的指令即为一种单发射多指令的并行指令集的发明。该单发射多指令的一类并行指令包含并行操作类型域和并行指令操作数域。并行操作类型域可以包含一条、两条或者多条需要并行执行的指令。并行指令操作数域可以包含并行指令所需的源操作数寄存器和目的操作数寄存器等相关信息。下面结合附图和实施例对本发明进一步说明。一条单发射并行指令中的包含三类可并行执行的指令,即乘法指令,加减法指令和装载指令。其中乘法指令分为定点小数寄存器乘和定点整数寄存器乘。装载指令分为寄存器读写和存储器存取。这条并行指令的并行操作类型域包括操作类型字段、乘加字段,并行指令操作数域包括装载字段和无关字段。这条并行指令从程序存储器取出到程序的运行,需要经过如下四个步骤步骤一取指。指将并行指令从程序存储器中取出。步骤二 译码。指将并行指令划分为三个域,对每个域从高位到低位进行译码,并将译码的结果输出。步骤三执行。指根据并行指令译码的结果,启动相应的加法器,乘法器或者数据传输进行相应的操作。步骤四写回。将并行指令执行的结果写回寄存器或者数据存储器。具体实施例操作类型字段为32位并行指令的高4位,即31位到28位,该域包括指示该并行指令是否执行加减法操作(第31位),乘法操作(第30位)或者装载操作(第29、28位)。当第31位为‘I’时,表示该并行指令中包含加减法操作;当第30位为‘I’,且第29到第14位全为‘0’,第13位为‘I’时,表示该并行指令中包含定点整数寄存器乘法操作,当第30位为‘I’时,表示该并行指令中包含定点小数寄存器乘法操作;当第29位、第28位为“01”时,表示该并行指令中包含寄存器读写操作,为“00”时,表示该并行指令不执行寄存器赋值和 存储器操作,为“10”时,表示该并行指令中包含存储器存取操作。装载字段或者无关字段为32位并行指令的第27位到13位,当为装载字段,且第29,28位为“01”时,表示该并行指令中包含寄存器读写操作,当第27位为‘0’时,表示启动无条件寄存器赋值。此时,当第25,24位为“00”时,表示为无条件通用寄存器间赋值,第23,22,21位为目的寄存器号,第17,16,15位为源寄存器号,其他位保留;当第25,24位为“OI”时,表示为无条件地址/索引/循环/其他寄存器向通用寄存器赋值,第23,22,21位为目的寄存器号,第19,18位为源类型,第17,16,15位为源寄存器号,其他位保留;当第25,24位为“ 10”时,表示为无条件通用寄存器向地址/索引/循环/其他寄存器赋值,第23,22,21位为目的寄存器号,第19,18位为目的类型,第17,16,15位为源寄存器号,其他位保留;当第27,26,25,24位为“1000”时,表示启动条件通用寄存器赋值,第23,22,21位表示目的寄存器号,第20,19,18位表示条件位,第17,16,15位表示源寄存器号,其他位保留。当第27位到13位为装载字段,且第29,28位为“ 10”时,表示该并行指令中包含存储器存取操作。当第21位为‘0’时,表示存储器加载至寄存器,第27,26,25为目的寄存器号,第24,23,22位为源地址寄存器号,第20位为偏移源,第19位为偏移方向,第18,17位为复合位,第16,15,14位为偏移量,第13位为单寄存器/并行存储;当第21位为‘I’时,表示寄存器保存至存储器,第27,26,25为源寄存器号,第24,23,22位为目的地址寄存器号,第20位为偏移源,第19位为偏移方向,第18,17位为复合位,第16,15,14位为偏移量,第13位为单寄存器/并行存储。当并行指令中包含定点整数寄存器乘法操作时,第27位到13位为无关字段。乘加字段为32位指令的低十三位,即第12位到第O位。当32位指令的第31位为‘I’,即执行寄存器加/减操作时,第12位表示是加法操作还是减法操作,第11,10,9位表示源寄存器号,第8,7,6位表示目的寄存器号。当32位指令的第30位为‘ I’,即执行寄存器乘法操作时,第5,4, 3位表不源寄存器号,第2,1,0位表不目的寄存器号。并行指令X “C0003053”执行如下步骤一取指。指令X “C0003053”从程序存储器中取出。步骤二 译码。指令X “C0003053”译码如下首先对操作类型域进行译码,即第31,30,29,28位为“1100”,同时,对指令第13位,第12位进行译码操作,可知并行指令执行的操作模式为乘加并行操作。
其次,根据操作模式对并行指令的第12位到第6位,第5位到第O位进行译码操作,加法操作的源寄存器位为“000”,目的寄存器位为“001” ;乘法操作的源寄存器位为“010”,目的寄存器位为“011”。译码完成后,将操作数送至相应的执行单元。步骤三执行。根据译码操作的结果,将操作 数送至乘法器和加法器进行乘加运
笪步骤四写回。将乘法和加法的执行结果写回相应的目的寄存器,从而完成该并行指令的执行。
权利要求
1. 一种并行指令集的实现方法,其特征在于包括下述步骤 步骤一,列出需要并行执行的单操作指令,找出这些指令的源寄存器地址位号、目的寄存器地址位号、偏移量、偏移方向和操作类型相同的相关指令信息; 步骤二,将需要并行执行的单操作指令的操作类型进行统一编码后放置于所要产生的并行指令中的任一位段,该位段称为并行操作类型域,所述的编码确保需要并行执行的单操作指令的操作类型信息没有重合; 步骤三,将需要并行执行的单操作指令的源寄存器地址位号、目的寄存器地址位号、偏移量和偏移方向分别放置于所要产生的并行指令的其他位段处,该位段称为并行指令操作数域,确保需要并行执行的单操作指令的源寄存器地址位号、目的寄存器地址位号、偏移·量、偏移方向没有重合; 步骤四,将并行操作类型域与并行指令操作数域合并产生的一条新的指令,即为单发射多指令的并行指令集。
全文摘要
本发明提供了一种并行指令集的实现方法,找出需要并行执行的单操作指令相同的相关指令信息;将需要并行执行的单操作指令的操作类型进行统一编码后放置于所要产生的并行指令中的并行操作类型域;将需要并行执行的单操作指令的源寄存器地址位号、目的寄存器地址位号、偏移量和偏移方向分别放置于所要产生的并行指令的并行指令操作数域;将并行操作类型域与并行指令操作数域合并产生的一条新的指令,即为单发射多指令的并行指令集。本发明提高了专用微处理器的执行效率和微处理器内部模块的利用率,有着广泛的应用前景。
文档编号G06F9/38GK102945148SQ20121036451
公开日2013年2月27日 申请日期2012年9月26日 优先权日2012年9月26日
发明者杨靓, 闫鑫, 陈上, 曹辉 申请人:中国航天科技集团公司第九研究院第七七一研究所