MIPS指令集的处理器扩展指令及其编码方法和部件 【技术领域】
本发明涉及MIPS指令集,更具体的说,本发明涉及MIPS指令集的处理器扩展指令及其编码方法和执行部件。
背景技术
MIPS指令集是一种精简指令集,具有每条指令定长32位的特性。MIPS指令集一般要包括浮点指令、定点指令和多媒体指令等类型地指令,以实现不同类型的操作。
在传统的对MIPS指令集的实现中,不同的指令类型由不同的执行部件来执行。例如,通常在对MIPS指令集的实现中,至少要包括浮点部件、定点部件和多媒体部件。而且,不同的执行部件除了其指令执行模块之外,还需要为该执行部件设计专用的数据通路和寄存器堆,例如多媒体部件和定点部件分别都有自己专用的数据通路和寄存器堆。
在MIPS指令集中,浮点指令格式(见图1)中的第25位到第21位(指令的最右边一位即最低位为第0位)是浮点指令的格式(fmt)域,通过这个域来决定浮点操作类型和操作的对象类型,例如fmt等于16表示操作的对象是单精度浮点数,fmt等于17表示操作的对象是双精度浮点数等。五位的fmt域可以表示0到31共32个不同的值,MIPS指令集中已经使用了0、1、2、4、5、6、8、16、17、20、21等十一个值,其它的值作为保留值。
【发明内容】
本发明的目的在于利用MIPS指令集中浮点指令的fmt域的保留值为MIPS指令集提供一种扩展指令及其的编码方法,该扩展指令包括实现多媒体操作的扩展多媒体指令和/或实现定点操作的扩展定点指令。本发明的另一个目的为该扩展指令提供一种执行部件,该部件为功能增强的浮点部件。
为了实现上述目的,本发明提供一种处理器扩展指令,所述扩展指令的格式与MIPS指令集中浮点指令的格式相同;所述扩展指令包括一格式域;所述扩展指令的格式域取值为现有的MIPS指令集中的浮点指令的格式域的保留值。
所述扩展指令包括实现多媒体运算的扩展多媒体指令。所述扩展多媒体指令实现现有的MIPS指令集中部分或全部的多媒体指令的功能。
所述扩展指令包括实现定点运算的扩展定点指令。所述扩展定点指令实现现有的MIPS指令集中部分的定点指令的功能。
本发明还提供一种处理器扩展指令的编码方法,用于为现有的MIPS指令集提供扩展指令,所述扩展指令编码成MIPS指令集中浮点指令的格式,该格式中包括一格式域;所述扩展指令的格式域取值为现有的MIPS指令集中的浮点指令的格式域的保留值。
所述扩展指令包括用于实现多媒体运算的扩展多媒体指令和/或用于实现定点运算的扩展定点指令。
为了执行上述扩展指令,本发明还提供一种功能增强的浮点部件,包括数据通路、输入寄存器、输出寄存器和执行浮点操作的浮点指令执行模块,还包括:
一个与所述浮点指令执行模块并联的扩展指令执行模块,用于执行扩展指令;
一个选择模块,用于根据指令中格式域的取值判断指令是浮点指令还是扩展指令。
所述扩展指令执行模块包括执行多媒体操作的多媒体指令执行模块和/或执行定点操作的定点指令执行模块。
本发明的优点主要是避免引入新的指令格式而增加指令译码的复杂度,保持MIPS指令集原有的指令风格,使得指令译码和原来一致。同时只有fmt域不同,使得新的扩展指令也被当作一种新的浮点指令,复用原有的浮点指令的数据通路以及寄存器资源,避免了芯片复杂度的扩大,大大节省了芯片的面积。进一步的,本发明提供的扩展的多媒体指令可以完全代替原有的MIPS指令集中的多媒体指令,从而在处理器实现时省去了多媒体部件及其数据通路和向量寄存器堆,可以大大简化处理器芯片的复杂度和芯片面积。
【附图说明】
图1是MIPS指令集的浮点指令格式示意图;
图2是本发明利用MIPS浮点指令fmt域扩展指令以及复用浮点部件执行扩展指令的流程图;
图3是现有技术中的浮点部件示意图;
图4是本发明的功能增强的浮点部件一个实施例的示意图;
图5是本发明的功能增强的浮点部件另一个实施例的示意图;
图6是按照本发明扩展的多媒体指令PADDB的编码;
图7是按照本发明扩展的定点指令Dsub的编码;
图8是现有的MIPS指令集中的多媒体指令的指令格式。
【具体实施方式】
下面结合附图和具体实施方式对本发明作进一步详细描述。
如图1所示的MIPS指令集的浮点指令,其长度为32位,包括六个域:
第31~26位的操作码域(opcode域),对于浮点指令,opcode域的值固定为010001,以区别定点指令等其它指令;
第25~21位的格式域(fmt域),fmt域用来表示运算结果是单精度浮点数、双精度浮点数、32位整数、64位整数或者表示是浮点转移指令等;
第20~16位的源浮点寄存器2域(ft域),表示第二个源浮点寄存器号;
第15~11位的源浮点寄存器1域(fs域),表示第一个源浮点寄存器号;
第10~6位的结果浮点寄存器域(fd域),表示结果浮点寄存器号;
第5~0位的域功能域(function),表示运算的功能,例如加减乘除等。
其中,五位的fmt域可以表示0到31共32个不同的值,MIPS指令集中已经使用了0、1、2、4、5、6、8、16、17、20、21等十一个值,其它的值作为保留值。
本发明就是利用浮点指令中的保留值来实现扩展指令,该扩展指令包括实现多媒体操作的扩展多媒体指令和/或实现定点操作的扩展定点指令。当需要给MIPS指令集扩展新的指令时,首先要确定新的指令的编码,本发明所采用的方法就是套用MIPS指令集的浮点指令的格式,只对浮点指令中的fmt域进行修改。下面结合图2的流程图进行解释具体的实施过程。
如图2所示,步骤101中,首先选择一条现有的MIPS指令集中的浮点指令。
步骤102中,改变所选的浮点指令的fmt域的值,成为新的扩展指令的编码。新的扩展指令的fmt域取值为现有的浮点指令的fmt域的保留值,通过fmt域取值的不同以表示和原来的指令不同。在新的扩展指令编码中,除fmt域外的其它域表示的意义和原有的浮点指令相同。这样,对于本发明提供的扩展指令,其格式与图1所示的浮点指令的格式相同,不同之处在于该扩展指令的fmt域采用了现有的浮点指令中不使用的保留值。进一步的,虽然在该扩展指令中的opcode域取值为010001,但是该指令并不因此而一定作为浮点指令。事实上,该扩展指令的指令类型(如浮点指令、定点指令或多媒体指令等类型)并不是通过指令中的opcode域来判断,而是通过fmt域的取值来判断。在该扩展指令中,将opcode域置为表示浮点的010001,只是为了在执行该扩展指令时复用现有的浮点部件中的资源,这一点将在下文的描述中更清楚的了解。
步骤103,在处理器实现扩展指令的时候,增强处理器中浮点部件的处理能力或者说功能,使得新的扩展指令可在功能增强的浮点部件中执行。这里所说的功能增强的浮点部件可以通过fmt域的值辨别出新的扩展指令,并能正确执行该扩展指令对应的扩展操作。通过后文的描述将会清楚,这里所说的扩展操作将包括扩展的多媒体操作、扩展的定点操作或其它操作。
特别是在图2中的步骤103中,由于本发明的扩展指令是对原有的浮点指令修改而成的,使得扩展指令具有和浮点指令相同的指令格式,因此本发明提供的扩展指令就可能在原有的用于执行浮点指令的浮点部件中执行。这样,就不需要为新的扩展指令专门提供相应的执行部件,也不需要为该部件提供专门的数据通路和寄存器堆,这样就避免了芯片复杂度的扩大,大大节省了芯片的面积。
采用本发明的扩展指令编码后,在指令译码的时候,由于新的扩展指令的opcode域的值还是表示浮点指令的010001,利用原来的将opcode域的值是010001的指令译为浮点指令的译码机制,因此还是将扩展指令译码成一种浮点指令。这样,处理器中的的译码部件就不用修改,与现有技术中的译码部件相同。然后通过原来的浮点指令的数据通路,将新的指令送到浮点部件,因此涉及数据通路的这部分处理器实现也不用修改。在本发明中,仅需要增强浮点部件的处理能力,使其可以判断指令类型,以便执行不同的操作。
图3示出了现有的浮点部件的组成示意图,包括用箭头表示的数据通路10、包括浮点部件的输入寄存器11和输出寄存器12,以及一个用于执行浮点操作的浮点指令执行模块13。浮点指令通过输入寄存器11送入浮点部件后,在浮点指令执行模块13中处理完,最后将结果通过输出寄存器12送出浮点部件写回浮点寄存器堆(图3中未示出)。这样的浮点部件仅能执行现有的浮点指令。
为了增强浮点部件的处理功能,本发明提供了如图4所示的功能增强的浮点部件。该功能增强的浮点部件仍然复用现有的浮点部件中的数据通路10,包括浮点部件的输入寄存器11和输出寄存器12,以及执行浮点操作的浮点指令执行模块13。同时,该浮点部件在其数据通路10上提供了一个与浮点指令执行模块13相并联的扩展指令执行模块14,以便执行相应的扩展指令。该浮点部件还包括了一个选择模块15,用于根据指令的fmt域的值判断指令的类型,以便将指令送入浮点指令执行模块13或扩展指令执行模块14处理。一条指令进入输入寄存器11后,由选择模块15根据其fmt域的值判断该指令是浮点指令还是具有浮点指令格式的扩展指令。当该指令为浮点指令时,将其送入浮点指令执行模块13中处理,然后通过输出寄存器12送出该功能增强的浮点部件,写回浮点寄存器堆(图4中未示出);当该指令为具有浮点指令格式的扩展指令时,将其送入扩展指令执行模块14中处理,然后通过输出寄存器12送出该功能增强的浮点部件,写回浮点寄存器堆(图4中未示出)。当扩展指令是执行多媒体操作的指令时,图4中的扩展指令执行模块14则为多媒体指令执行模块;当扩展指令是执行定点操作的指令时,图4中的扩展指令执行模块14则为定点指令执行模块,以此类推。
功能增强的浮点部件的另一个实施例如图5所示,其基本组成和图4相同,不同之处在于,浮点指令送入浮点部件后,同时在浮点指令执行模块13和扩展指令执行模块14中处理,然后选择模块15根据fmt域的值选择正确的结果送出浮点部件。
接下来将列举两个具体的实施例,一条扩展的多媒体指令和一条扩展的定点指令来具体说明如何通过本发明提到的方法来对扩展指令编码以及复用浮点部件执行。
例1:增加一条多媒体的向量加指令PADDB,这条指令是将两个源操作数中的八个8位数分别相加。首先选择一条现有的一条浮点加法指令,然后将其中的fmt域的值置为一个保留值,在本例中将fmt域设置为11110,将其形成新的编码,如图6所示。也就是说,在图6所示的指令中,该指令的fmt域的值11110表示多媒体的向量加指令PADDB。其它域的意义和原来的浮点加法指令相同,opcode域的值为010001表示是浮点指令;fs域表示第一个源浮点寄存器号;ft域表示第二个源浮点寄存器号;fd域表示结果浮点寄存器号;function域的值为000000表示加法运算。在处理器实现时,图4或者图5所示的功能增强的浮点部件中的扩展指令执行模块14为多媒体指令执行模块,其中的选择模块15根据fmt域的值11110判断出其为扩展的多媒体指令,浮点部件输出的是多媒体执行模块处理该指令的结果。
例2:增加一条定点减法指令Dsub,这条指令就是将两个64位整数相减。首先选择一条现有的浮点减法指令,然后其中的fmt域的值置为一个保留值,形成新的编码,在本例中将fmt域设置为01111,将其形成新的编码,如图7所示。也就是说,在图7所示的指令中,该指令的fmt域的值01111表示定点减法指令Dsub。其它域的意义和原来的浮点减法指令相同,opcode域的值为010001表示是浮点指令;fs域表示第一个源浮点寄存器号;ft域表示第二个源浮点寄存器号;fd域表示结果浮点寄存器号;function域的值为000001表示减法运算。在处理器实现时,图4或者图5所示的功能增强的浮点部件中的扩展指令执行模块14为定点指令执行模块,其中的选择模块15根据fmt域的值01111判断出其为扩展的定点指令,浮点部件输出的是定点指令执行模块处理该指令的结果。
在现有的MIPS指令集中,MIPS的多媒体指令使用和浮点指令完全不同的编码,如图8所示。传统的实现是用一个新的多媒体部件来执行多媒体指令,这种实现的不足之处是需要给多媒体部件设计专用的数据通路和向量寄存器堆,这会大幅度增加芯片设计的复杂度和芯片面积。通过分析如图8所示的现有的多媒体指令,可见其格式比较规整,与图1所示的现有的浮点指令非常相似,不同之处在于:opcode域为010010表示是多媒体指令;sel域表示操作数是8位、16位、32位或64位的向量;vs域表示第一个源向量寄存器号;vt域表示第二个源向量寄存器号;vd域表示结果向量寄存器号;function域表示不同的向量运算。根据图8所示现有的多媒体指令的格式特征,可以发现,采用如下措施后即可用扩展的多媒体指令来代替MIPS指令集中原有的多媒体指令:
(1)将多媒体指令的opcode域的取值更改,置为表示浮点指令的010001;
(2)将多媒体指令中的sel域的对应为浮点指令中的fmt域,并将其取值为fmt域的保留值。
前文中例1所描述的扩展的多媒体的向量加指令PADDB(图6)即是用扩展的多媒指令代替现有的MIPS指令集中的多媒体指令的一个实例。
这样,在处理器实现时,就可以将原有的多媒体指令译码为浮点指令,并在如图4或图5所示的功能增强的浮点部件中执行,并由功能增强的浮点部件中的选择模块15根据fmt域(或者说原多媒体指令中的sel域)的取值判断出其指令类型并交于多媒体执行模块执行。这样多媒体指令在处理器实现时就省去了处理器中原有的多媒体部件及其数据通路和寄存器资源,而用扩展的多媒体指令和功能增强的浮点部件实现多媒体操作,从而减小了芯片设计的复杂度和芯片面积。