利用规格字段指令编码的处理器的制作方法

文档序号:6415915阅读:163来源:国知局
专利名称:利用规格字段指令编码的处理器的制作方法
技术领域
本发明涉及处理器体系结构技术领域,具体地说,与可提高处理器操作效率的指令编码方法和装置有关。
在高速计算机处理器技术领域,已有各种途径来解决怎样使指令编码最好的问题。早期,Intel公司制造的处理器采用可变长度编码,不同的指令用不同的位长度编码。虽然这个途径在计算机工业中得到广泛的采纳,但这种Intel体系结构(iA)编码方法是通过精简指令集计算(RISC)机器加以改善的。
在一个RISC机器中,所有的字段均匀编码,每个指令具有固定的长度(例如32个位)。对于编码采用三个操作数的指令这些固定的指令字段的32位长度提供了足够的位置,或者说“空间”,其中每个操作数含有一个5位的寄存器标识符。因此,RISC途径对操作码位组、立即值、偏置等编码提供了的足够空间。
近来,在计算机工业中已经研究了对具有在单个机器周期内处理许多指令能力的高效率并行处理机器的要求。这些机器通常称为超长指令字(VLIW)或宽字计算机处理器,能同时处理几个指令。举例来说,在美国专利No.4,833,599中所揭示的一种VLIW多处理器每个时钟周期能处理1024位的指令。
在VLIW或宽字机器中所出现的问题之一是怎样对要访问大寄存器堆(例如有128个寄存器)的指令编码。一种方法是Hewlett-Packard公司在他们初创的宽字设计中所采用的,将指令组合在含有三个42位指令的单个128位的条目内(剩余2个位)。这128位的条目内的三个指令每个在类型上都有限制。也就是说,第一个指令限制为存储器型指令,第二个指令必需是整数型指令,而第三个指令限制为浮点型指令。
这种宽字、固定的128位格式的根本问题是大大地扩展了码字,从而导致对一些指令字节打包很不经济。例如,一个LOAD指令可能只有一、两个字节长,但是在这种现有技术的宽字格式中仍然必需占用42个位。在一些指令序列中,每个相继的128位指令条目内只使用一、两个指令,因此这种低效率就更为严重。
熟悉超标量处理器的人员可以理解,RISC机器在需要同时处理大量指令时也遇到困难。例如,一个设计成并行处理许多指令的RISC处理器需要大量的多路复用器和相关的布线,以将各种指令传送给适当的功能单元。这实际上也就限制了能予以并行处理的指令的数目。
因此,有必要开发一种处理器,这种处理器能减少过去这些指令编码方法和装置中的浪费,并提高效率。正如下面将看到的那样,本发明提供了一种能同时执行经高效率对指令编码的多个接连的指令的处理器。
这里所揭示的处理器用规格(template)字字段在长指令字格式下对一些最有用的指令序列进行编码。在一个实施例中,本发明的处理器包括一个具有128个寄存器的寄存器堆。处理器的指令组包括一些对这128个寄存器定址的指令,其中每个指令是多种不同指令类型中的一种。处理器的各执行单元同样也分为几种不同类型,其中每种指令可以用一种或几种执行单元执行。
按照本发明,指令组合到称为指令束(bundle)的长为128位的排列好的容纳槽(container)中。每个指令束包括第一、第二、第三三个指令隙(instruction slot)和一个规定这些指令隙与执行单元类型对应关系的规格字段。本发明所采用的改进的指令编码方案与现有技术的相比具有较大的灵活性和较高的效率。
下面将结合附图对本发明进行详细说明,但这只是说明性的,这些具体的实施例不应认为是对本发明的限制。在这些附图中

图1例示了按照本发明的处理器的一个实施例的一种体系结构寄存器模型;图2示出了本发明的一个实施例的指令类型与执行单元类型之间的关系;
图3为示出按照本发明的一个实施例的一种用于指令编码的指令束格式的示意图;以及图4示出了对于本发明的一个实施例的对指令隙映射进行编码的规格字段。
本发明包括利用规格字段进行指令编码的处理器。以下的说明中,设定了一些具体的细节,例如寄存器堆模型、位长度、具体编码方案等,以便清楚、透彻地了解本发明。然而熟悉数据处理技术的人员将能理解,本发明的实现并不需要符合这些细节。在其它例子中,对于众所周知的信号、器件和电路没有进行详细说明,以免反而不能突出本发明的主题。
图1例示了在本发明的处理器的一实施例中所用的体系结构寄存器模型。熟悉处理器设计领域的人员可以理解,一个处理器的体系结构状态包括各个处理器寄存器和存储器的内容。按照隐埋在处理器内的控制执行次序的一组规则,指令执行的结果在体系结构上是可以反映出来的。如图所示,体系结构寄存器模型10包括一个为所有的整数和多媒体计算提供中心资源的通用寄存器堆12。这些通用寄存器是一组共128个(64位)寄存器,编号为gr0至gr127,可为所有程序和所有特权级别所用。
应用寄存器模型10还包括一个用于所有浮点运算的浮点寄存器组14。这些浮点寄存器编号为fr0至fr127,在本发明的处理器的一种实现方式中类似地构成了一个有128个(82位)寄存器的组。图1中还示出了编号为pr0至pr63的判定寄存器15。判定寄存器15是一些用于判断和分支的单位寄存器。这些寄存器用来保持比较指令的结果,通常用于指令的条件执行。
分支寄存器堆17用来保持分支信息。例如,分支寄存器br0至br7都是64位寄存器,可以用来规定间接分支的分支目标地址。
图1中还示出了一个指令指针18,用来保持含有当前正在执行的指令的“指令束”地址。正如稍后将详细说明的那样,术语“指令束”是指组名在一个128位的字段内的三个指令和一个规格字段。
最后,寄存器模型10还包括一个应用寄存器堆19,它包括一些用于应用可视处理器功能的专用数据寄存器和控制寄存器。通常,这些寄存器由应用软件访问。可以理解,图1所示的寄存器模型可以包括其他一些类型的实现各种处理器功能的寄存器。列出本发明的处理器内所用的各种寄存器对于理解本文所揭示的新颖概念来说并不是实质性的。
现在参见图2,图中示出了表20,其列出本发明的一个实施例中的指令类型和执行指令的执行单元类型。每个指令归于六个不同类型中的一个类型。这六个不同类型的指令为整数算术逻辑单元(ALU)指令,非ALU整数指令,存储器指令,浮点指令,分支指令,以及长立即指令。可执行这些不同类型的指令的相应类型的执行单元示于表20的最右边的那一列。这些不同类型的执行单元为整数执行单元(I单元),存储器执行单元(M单元),浮点执行单元(F单元),以及分支执行单元(B单元)。
图3示出了在本发明的处理器内是怎样对指令编码的。图3例示了一个128位(排列成16个字节)指令束30,含有三个41位的指令隙、一个4位的规格字段和一个结束位(5位)。图3这种指令束30的格式示为结束位占用位位置0,规格字段占用位位置1-4,而指令隙1、2和3分别占用位位置5-45、46-86和87-127。
按照图3所示的指令格式,处理器指令集内的所有指令都是41位长。4位的规格字段允许对多种由不同类型的指令构成的指令序列进行编码。也就是说,规格字段规定各指令隙与执行单元类型的一一对应关系。规格字段还规定了指令束内的指令组边界。一个指令组是一组可同时执行的静连续指令(statically coniguous instruction)。例如,一个指令组没有读后写或写后写寄存器寄存器的相互依赖关系。一个指令组含有至少一个指令,而对最大的指令数没有体系结构上的限制。熟悉这技术的人员因此可理解,指令组的边界与指示束的边界没有固定的关系,它们直接由规格字段和S位静态地指出。
S位规定在当前指令束的最后一个指令(即指令隙2)后是否出现一个指令组边界。例如,在一种当前的实现方式中,如果S位置为“0”,就表示当前这个指令组将延伸入紧接的下个指令束的第一个指令(即指令隙0)。也就是说,在这个指令束的最后一个指令后没有指令组边界。相反,如果S位设置为“1”,就表示在指令束内的最后一个指令后出来一个指令组边界。
现在参见图4,图中示出了为本发明的处理器的一个实施例设计的规格字段编码和指令隙映射。如上面所述,规格字段规定了两个属性指令束内的指令组边界,以及指令隙至执行单元类型的映射。应注意的是,并不是这两个属性的所有组合都是允许的。在本实施例中所规定的组合方式例示于图4的表40。熟悉计算机技术的人员可以理解,表40提供了对于通常在现代计算机程序中所遇到的最有用的一些指令序列的指令编码。
表40的右边三列相应于一个指令束内的三个指令隙。右边三列的每一列内列出的是受指令隙控制的执行单元类型。例如,规格6规定在指令隙0内的指令由处理器的存储器执行单元执行,在指令隙1内的指令由浮点执行单元执行,而在指令隙2内的指令由整数执行单元执行。
注意,表40包括分别与规格1和规格5关联的分开两个指令隙的双线42和43。双线42分开规格1内的指令隙1和2,而双线43分开规格5内的指令隙0和1。这些双线表示在这一点出现一个指令组边界。基本上,双线起着一个在两个相邻指令之间的结束位的作用。这意味着,例如在规格5的情况下,指令隙0的指令允许取决于指令隙1的指令。通过对规格字段编码来规定一个指令束内的两个指令之间的结束点,使编译器可以向硬件指出在代码内哪里有依从关系。熟悉计算机体系结构的人员可以理解,除了可以规定指令束间的指令组边界(通过S位)外还可以规定指令束内的指令组边界(通过规格字段1和5)是一个极有价值的处理器功能。
在一个指令束内,执行次序是从指令隙0至指令隙2。如果S位为0,含有当前指令束内最后一个指令(指令隙2)的指令组就要延续到紧接着的下个指令束内的第一个指令(指令隙0)。但是,如果S位为1,在当前指令束的最后一个指令后就出现一个指令组边界。可以理解,使用结束位在执行一个高度连贯的代码中是很有益的。例如,一个包括一个LOAD后接一个ADD再接一个STORE操作的序贯代码可以简单地依次列出,再在这三个操作后用一个S位。过去,对于序列中的每个指令都必需占用一个完全的128位条目,即使是对这个指令的编码可能只要占用一个或两个字节。
还应理解的是,按照本发明得到的程序包括一系列指令,它们按束封装并组织成由S位静态分界各指令组并且用规格规定一个指令束内的S位。指令组和指令组内的指令排序如下。指令束按最低到最高的存储器地址的次序排列。对于指令束内的指令,较低存储器地址的排在较高存储器地址的前面。
存储器内指令束的字节次序是小的在前。这意味着规格字段和S位包含在指令束的字节0内。在一个指令束内,指令和指令组按从指令隙0至指令隙2的次序排列,如图3所示。
可以将一个普通的编译器与本发明的处理器配合使用。然而,很明显要将它加以修改,以便利用上述指令编码方案的优点。概括地说,这个编译器应设计成利用规格字段来提供尽可能紧凑的代码。
熟悉该技术领域的专业人员可以理解,在图4的表40中呈现的没有使用的规格值是在所例示的实施例中所保留的。这些未使用的规格值呈现为规格3、A、D和F的一些空行。这些空的规格可用于对处理器体系结构的进一步扩展。在处理器内规定这些未使用的规格值将引起非法操作故障。
还应指出的是,对于规格2来说,在指令隙1的列中的L单元标志表示一个长立即型指令的位置标志符。此外,对于本发明的一个实施例来说,在规格2的指令隙2的列内的I单元标志限制在这个特定指令隙内只可以编入movl、break和nop这些操作。在这个指令隙内编入其他指令会导致非法操作故障。另一个限制是,在所列举的这个实施例中,如果将一个movl指令码编入一个规格2之外的I单元指令隙,就会导致非法操作故障。
权利要求
1.一种处理器,包括一个具有多个寄存器的寄存器堆;一个包括访问这些寄存器的指令的指令集,每个指令是多个指令类型中的一个类型;以及多个执行单元,每个执行单元是多个类型中的一个类型,其中每个类型的指令在一个或多个类型的执行单元上执行;以及这些指令编码成指令束,每个指令束包括多个指令隙和一个规定指令隙与执行单元类型之间对应关系的规格字段。
2.权利要求1的处理器,其中所述规格字段还规定在指令束内的指令组的边界,一个指令组包括一组同时执行的静态接连的指令。
3.权利要求2的处理器,其中所述指令类型包括整数算术逻辑单元、存储器、浮点和分支指令。
4.权利要求3的处理器,其中所述指令类型还包括非算术逻辑单元整数和长立即指令。
5.权利要求4的处理器,其中所述执行单元类型包括整数、存储器、浮点和分支执行单元。
6.权利要求5的处理器,其中所述规格字段包括一个4位字段。
7.任何权利要求1、2、3、4、5或6的处理器,其中所述指令束包括第一、第二和第三指令隙,每个指令束有128位长。
8.权利要求7的处理器,其中所述第一、第二和第三指令隙各有41位长。
9.权利要求7的处理器,其中所述指令束还包括一个规定一个指令束间指令组边界的结束位。
10.权利要求9的处理器,其中如果所述结束位处在一个第一状态,那么当前指令束的最后一个指令后就出现一个指令组边界。
11.权利要求10的处理器,其中如果所述结束位处在一个第二状态,那么一个含有当前指令束的最后一个指令的指令组延伸入紧接的下个指令束的第一指令隙。
12.权利要求11的处理器,其中所述当前指令束的最后一个指令包括第三指令隙。
13.权利要求9的处理器,还包括;一个存储指令束的存储器,这些指令束在存储器内排列的字节次序以低地址的在前的格式,规格字段和结束位包含在指令束的第一个字节内。
14.权利要求13的处理器,其中所述指令束在存储器内按从最低到最高存储器地址的次序排列。
15.权利要求14的处理器,其中所述指令束内具有最低存储器地址的指令排在所述指令束内具有最高存储器地址的指令之前。
16.权利要求1的处理器,其中所述多个寄存器包括128个寄存器。
17.权利要求5的处理器,其中所述指令束各有128位长,包括第一、第二和第三指令隙,而所述由规格字段规定的对应关系基本上如图4所示。
18.一种处理器,包括一个具有多个寄存器的寄存器堆;一个包括访问这些寄存器的指令的指令集,每个指令是多个指令类型中的一个类型;以及多个执行单元,每个执行单元是多个类型中的一个类型,其中每个类型的指令在一个或多个类型的执行单元上执行;以及这些指令编码成指令束,每个指令束包括多个指令隙和一个规定本指令束内指令组的边界的规格字段,而一个指令组包括一组同时执行的静态接连的指令。
19.权利要求18的处理器,其中所述规格字段还规定指令隙与执行单元类型之间对应关系。
20.权利要求19的处理器,其中所述指令束各有128位长,包括第一、第二和第三指令隙。
21.权利要求18的处理器,其中所述指令类型包括整数算术逻辑单元、存储器、浮点和分支指令。
22.权利要求21的处理器,其中所述指令类型还包括非算术逻辑单元整数和长立即指令。
23.权利要求22的处理器,其中所述执行单元类型包括整数、存储器、浮点和分支执行单元。
24.权利要求18的处理器,其中每个指令束还包括一个规定一个指令束间指令组边界的结束位。
25.权利要求24的处理器,其中如果所述结束位处在一个第一状态,那么当前指令束的最后一个指令后就出现一个指令组边界。
26.权利要求25的处理器,其中如果所述结束位处在一个第二状态,那么一个含有当前指令束的最后一个指令的指令组延伸入紧接的下个指令束的第一指令隙。
27.权利要求26的处理器,其中所述当前指令束的最后一个指令包括第三指令隙。
28.权利要求24的处理器,还包括一个存储指令束的存储器,这些指令束在存储器内排列的字节次序以低地址的在前的格式,规格字段和结束位包含在指令束的第一个字节内。
29.权利要求28的处理器,其中所述指令束在存储器内按从最低到最高存储器地址的次序排列。
30.权利要求29的处理器,其中所述指令束内具有最低存储器地址的指令排在所述指令束内具有最高存储器地址的指令之前。
31.权利要求18的处理器,其中所述多个寄存器包括128个寄存器。
32.权利要求23的处理器,其中所述规格字段规定的对应关系基本上如图4所示。
全文摘要
本发明所开发的具有大寄存器堆(10)的处理器利用规格字段将一组最常用的指令序列编码成长指令字格式。处理器的指令集包括一些各自属于多个不同类型的指令。处理器的执行单元类似地也分为一些不同类型,每个类型的指令可以在一个或多个类型的执行单元上执行。这些指令组合到一些称为指令束的128位长的排列好的容纳槽中,每个指令束包括多个指令隙和一个规定指令隙与执行单元类型之间的对应关系的规格字段。
文档编号G06F9/30GK1279783SQ98811492
公开日2001年1月10日 申请日期1998年10月8日 优先权日1997年10月13日
发明者詹姆斯·M·赫尔, 肯特·菲尔登, 汉斯·穆尔德, 哈什瓦德翰·莎朗潘尼 申请人:艾迪尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1