用于指定指令中的立即值的方法

文档序号:6656844阅读:255来源:国知局
专利名称:用于指定指令中的立即值的方法
技术领域
本发明涉及一种数据处理系统,尤其涉及用于数据处理系统的数据处理指令格式。
背景技术
随着数据处理系统的发展,集成电路上提供的存储器数量仍旧是非常有限的系统资源。特定处理器指令的全部位数或比特数影响适合于存储该指令的系统存储器的有效容量范围内的指令数量。因此,需制定关于何种以及多少种功能性和有限数量的指令位一起使用的设计折中方案。一旦选择了一种指令格式,则执行针对该所选择格式的译码逻辑。通过译码逻辑来解析处理器指令的各个位。指令的操作码字段部分定义该指令执行的一种类型的处理器操作。该指令的地址字段部分包括具有操作数的寄存器的地址。
提供用于处理的操作数的一种可选方式是使用“立即操作数”。立即操作数是使用诸如指令地址字段的预定指令字段来存储实际的操作数。因此,立即操作数的长度由处理系统的一部分指令的宽度来限定。在固定长度的指令范围内,用于存储立即操作数的有效空间是有限的,因为立即操作数变得越宽,用于其他指令说明符的指令位就越少。
一种用于增加立即操作数大小的已知方法,如32位立即操作数,是使用两个单独的指令。例如,第一指令包括16位立即操作数,并将立即操作数装载到寄存器的高位阶部分。第二并且不同类型的指令包括其他1 6位立即操作数,并将其立即操作数加到寄存器的低位阶部分,从而从两个指令形成单个的32位立即操作数。然而这种方法要求执行消耗时间的两个截然不同的指令,并且在两个指令的每一个指令执行期间要求为这种功能提交处理器资源。


本发明通过实施例的方式示出了,但不限于附图,其中相同的附图标记表示类似的元件,其中图1以方框图形式示出了和本发明一起使用的数据处理系统;图2以图表形式示出了一种已知的数据处理指令格式;图3以图表形式示出了另一种已知的数据处理指令格式;图4以图表形式示出了图2已知指令格式的可能的有符号和无符号的立即操作数值的范围;图5以图表形式示出了图3已知指令格式的可能的有符号和无符号的立即操作数值的范围;图6以图表形式示出了根据本发明的数据处理指令;图7以图表形式示出了如图6的字节定位器指定的立即操作数字节顺序;图8以图表形式示出了字节顺序按照图6的字节定位器指定而配置的四个立即操作数;图9以图表形式示出了图6数据处理指令的有符号的立即操作数值的范围;和图10以图表形式示出了关于特定常数值的使用频率的曲线。
本领域的技术人员应当理解为了清楚且简明仅示出图中的元件,而无需按照实际的尺寸绘制。例如,图中一些元件的尺寸相对于其他元件被放大,从而有助于理解本发明的实施例。
具体实施例方式
如这里所使用的,术语“总线”通常指可以用于传输一个或多个各种类型信息(例如数据,地址,控制,或状态)的多个信号或导线。当涉及将信号、位或相似装置分别表现为逻辑真或逻辑假状态时,使用术语“断言” 和“取消”。如果逻辑真状态是逻辑电平1,则逻辑假状态是逻辑电平0。此外,这里所描述的存储器可以是任何类型的存储器,例如,只读存储器(ROM),随机存取存储器(RAM),静态随机存取存储器(SRAM),非易失存储器(例如,闪存)和MRAM等等。
图1以方框图的形式示出了通常具有由一个或多个多位线(bitconductor)连接到全局通信总线13的处理器12的数据处理系统10。处理器12可以是多种数据处理器类型的任意一种,该数据处理器包括中央处理单元(CPU)、浮点单元、数字信号处理器(DSP)等等。存储器14经由一个或多个多位线连接到全局通信总线13。存储器14可以是任何一种存储器类型,包括随机存取存储器(RAM)、只读存储器(ROM)、磁盘存储器、寄存器和存储表,等等。连接到全局通信总线13的是多个(N个)外围设备,其中N是整数。例如连接到全局通信总线13的第一外围设备16和第N个外围设备18。
在操作中,处理器12用于执行具有预定格式的多个指令。当处理器12执行指令时,存储器14被访问,从而以地址和数据的形式取回操作数,并将这种信息存储在存储器14中。外围设备,例如外围设备16,用于执行各种功能,例如直接存储器访问控制(DMAC)。存储器14还用于存储将由处理器12执行的各种数据处理指令。
图2所示的是数据处理指令的一种已知指令格式。该数据处理指令有32位,如所示的0位到31位。6位专用于操作代码,下文称为‘操作码’,其用于定义数据处理系统中指令执行的功能。第6位到第10位的5位专用于源寄存器字段。源寄存器字段用于定义源寄存器来获取执行由操作码定义的功能的信息。第11位到第15位的5位或更多位专用于目的寄存器字段。目的寄存器字段用于定义目的寄存器,从而结合执行由操作码定义的功能,对信息进行传输。第16位到第31位的剩余16位用于定义立即值。因此,图2的指令被限定为具有16位的立即值。如果希望有32位立即值,那么在两个指令周期中必须执行两个指令,其中使用并组合来自每个指令的立即值来形成32位立即值。
图3所示的是数据处理指令的另一种已知的指令格式。再一次地,这种数据处理指令有32位,如所示的0位到31位。6位也是专用于操作码,其用于定义数据处理系统中指令执行的功能。第6位到第10位的5位专用于源寄存器字段。源寄存器字段用于定义源寄存器来获取执行由操作码定义的功能的信息。第11位到第15位的5位或更多位也是专用于目的寄存器字段。该目的寄存器字段用于定义目的寄存器,从而结合执行由操作码定义的功能,对信息进行传输。第16位到第23位的8位附加位被提供作为子操作码,该子操作码是附加的操作码字段。子操作码字段,结合操作码字段,用于进一步定义指令要执行的功能。换句话说,子操作码可以用于选择指令操作的子功能。指令的剩余8位,第24位到第31位,用于定义立即值。因此,图2的指令被限定为具有8位的立即值。如果希望有32位立即值,那么在多个指令周期中必须执行多个指令,其中使用并且合并来自每个指令的立即值,以形成32位立即值。
图4以图表的形式示出了图2已知指令格式的可能的有符号和无符号的立即操作数值的范围。多个有符号值22集中在零值附近。如果指令的所有32位对于立即操作数值是有效的,则由图2指令的16位字段指定的立即操作数值在-231到(231-1)的整个范围上从从-215到(215-1)连续。如果指令的所有32位对于立即操作数值是有效的,则多个无符号值24在232值的整个范围上起始于零并延伸到(216-1)。因此,无论对于有符号还是无符号的立即操作数,图2的指令格式提供了可能的立即操作数值的连续范围,该范围跨越了可能的32位值的范围的子集。
图5以图表形式示出了图3已知指令格式的可能的有符号和无符号的立即操作数值的范围。多个有符号值40集中在零值附近。如果指令的所有32位对于立即操作数值是有效的,则由图2指令的8位字段指定的立即操作数值在-231到(231-1)的整个范围上从-27到(27-1)连续。因此,由于图3指令的立即值字段大小是图2指令的立即值字段的位数量的一半,所以多个有符号值40的值范围比图4的多个有符号值22的值范围小。如果指令的所有32位对于立即操作数值是有效的,那么多个无符号值42在232值的整个范围上起始于零并延伸到(28-1)。无论对于有符号还是无符号的立即操作数,图3的指令格式还提供了可能的立即操作数值的连续范围。
图6中以图表形式所示的是一种数据处理指令60,该指令具有根据本发明多个可能形式之一的指令字段格式。6位的第一字段是操作码字段61。5位的第二字段是源寄存器字段62。5位的第三字段是目的寄存器字段63。5位的第四字段是子操作码字段64。一位(或一位以上)的第五字段是填充位字段65。两位的第六字段是字节定位字段66。八位的第七字段是立即值字段67。
在操作中,数据处理指令60使用操作码字段61和子操作码字段64来定义指令的功能。立即值字段67在填充位字段65和字节定位字段66的协助下在单指令执行中实现32位或更多位大小的立即值的格式化。特别地,填充位字段65定义位值,1或0,从而作为所希望大小的立即值的位值来填入,希望大小的立即值不是由立即值字段指定的。字节定位字段66用于定义立即值字段67中的立即值要输入到哪个字节位置。立即值的所有其他字节位置用包含在填充位(多个)字段65中的位值填充。当在填充位(多个)字段65中实现多个位时,多个填充位的每个为立即值的预定字节指定位值。在其他形式中,除了包含来自立即值字段67的值的字节之外,多个填充位可以共同作为在立即值的每个字节中要被复制的值来使用。
图7所示的是具有四个字节的示例立即值70,每个字节具有8位。由于字节定位字段66是两位,所以四个字节(字节0,字节1,字节2和字节3)的任意一个都可以由字节定位字段66来指定。在操作中,字节定位字段66定义立即值字段67中的值要放置在哪个字节中。所有其他字节被填充位(多个)65的值填充。
图8所示的是基于被放置在不同字节字段中的立即值操作数的四个例子。当字节定位值0被字节定位字段66指定时,立即值被放置在字节72中。具有由填充位字段65定义的值的填充位被放置在字节73、字节74和字节75中。当字节定位值1被字节定位字段66指定时,立即值被放置在字节77中。具有由填充位字段65定义的值的填充位被放置在字节76、字节78和字节79中。当字节定位值2被字节定位字段66指定时,立即值被放置在字节82中。具有由填充位字段65定义的值的填充位被放置在字节80、字节81和字节83中。当字节定位值3被字节定位字段66指定时,立即值被放置在字节87中。具有由填充位字段65定义的值的填充位被放置在字节84、字节85和字节86中。
图9以图表形式示出了能够由图6指令格式指定的有符号的立即操作数值的范围90。应当注意,存在连续范围的值和该连续范围以外大范围的不连续值。立即值字段67中立即值的预定位的值确定该立即值是正数还是负数。与图7的字节排序术语一致,字节3表示最不重要的字节而字节0表示最重要的字节。当立即值字段67中的立即值按照字节定位字段66的指定被放置在字节3中时,由于立即值是用8位来表示,所以由立即值指定的值连续地从-28到28-1。在这种情况下,因为特定的填充位值被用于字节值2,1和0,因此该填充位值确定最终立即值的符号。当字节定位字段66为立即值字段67指示除过3的字节位置时,由于特定的填充位值被用于剩余的字节值,所以只有特定值由字节3,2,1和0的组合值来指定,如图9的圆点所示。因此,在字节定位值2、字节定位值1和字节定位值0内没有提供连续范围的立即值。
作为示例,数据处理指令60在字节定位值3内实现正数值0到255。数据处理指令60在字节定位值2内实现从28一直到216的255个值。这255个值分别是1到255乘以28的值。数据处理指令60在字节定位值1内实现从216到224的255个值。这255个值分别是1到255乘以216的值。数据处理指令60在字节定位值0内实现127个值。这127个值分别是1到127乘以224的值。
数据处理指令60在字节定位值3内实现负数值-1到-28。数据处理指令60在负数值的字节定位值2内实现从-28到-216范围的255个值。这255个值分别是-1到-255乘以28-1的值。数据处理指令60在负数值的字节定位值1内实现从-216到-224的255个值。这255个值分别是-1到-255乘以216-1的值。数据处理指令60在负数值的字节定位值0内实现127个值。这127个值分别是-1到-127乘以224-1的值。
因此,应当指出已经在正负28的连续值范围之外的大范围中指定了特定的立即值。对于许多应用,优选的是在更大范围的值上实现有限数量的立即值,即使更大范围的值不是连续范围的值。例如,不是只实现负216到正216之间连续范围的立即值,例如,数据处理指令60作用在于减少连续值的范围来扩展由数据处理指令指定的立即值的总范围。
图10是仅通过举例的方式示出了范例数据处理系统中关于立即常数值的使用频率的立即常数值的可能分布的图表。从图10可以看出尽管最普遍使用的立即值在零值周围的正数和负数的连续范围内,但不可忽略超出正负213以外重现的值。因此,对于延伸到这些值以外的值使用8位立即值的一些有限编码的能力是重要的。否则,需要至少两个要求两个指令周期或扩展的指令执行的指令来生成这样的值。虽然获得了当前的性能,但代价是减少了从零向外延伸的连续值的一些范围,应当指出在图10中大于正或负256的立即值的使用频率显著减少,除了接近于2的幂的某些立即常数值。
目前应当理解已经提供了一种用于数据处理系统的数据处理指令格式,该数据处理指令格式有效地指定了立即值。另外,提供了一种用于编码数据处理指令中立即值的方法。由于立即值消耗了大部分有效的操作码空间,因此这里描述的在单指令中用于编码有效值的范围的灵活机制是重要的。8位指令立即值被放置在由字节定位字段的值指示的字节位置,并且剩余字节中的所有剩余位位置填入一个或多个填充位的位值。在所示的数据处理指令60的形式中,11位操作码和子操作码被执行来定义指令的操作并且剩余的指令位置专用于执行利用一个或多个填充位(多个)字段、字节定位字段和立即值字段中的信息形成立即值所需的附加功能性。因此,有效的立即值可以通过使用有限数量的操作码位来生成。当使用有限数量的操作码时,对于数据处理指令集合改善了操作码密度并且获得增加的编程灵活性。
这里已经提供了在数据处理系统中形成立即值的方法的一种形式。数据处理指令被接收。该数据处理指令的第一字段被用作立即值的一部分。该数据处理指令的第二字段用于确定立即值内的该部分立即值的位置定位。该数据处理指令的第三字段中的位值用于确定立即值的其余部分。在一种形式中,通过利用数据处理指令的第三字段中的位值填充没有被所述部分立即值中数据处理指令的第一字段填充的立即值的所有位位置来使用该位值。在另一种形式中,该数据处理指令的第三字段的第一部分用于填充没有被该第一字段填充的立即值的所有位位置的第一部分。该数据处理指令的第三字段的第二部分用于填充没有被该第一字段填充的立即值的所有位位置的第二部分。在另一种形式中,该数据处理指令的第二字段用于确定立即值内的字节位值。在另一种形式中,该数据处理指令的第四字段被提供作为定义数据处理指令的功能的操作码字段,而数据处理指令的第五字段被提供作为执行生成立即值的操作的子操作码字段。
在其他形式中,提供了具有通信总线的的数据处理系统。处理器连接到通信总线,该处理器执行多个数据处理指令。存储器连接到通信总线连接,该存储器存储多个数据处理指令,其中多个数据处理指令的至少一个用于形成立即值。多个数据处理指令的至少一个包括具有一部分立即值的第一字段。第二字段确定立即值内的该部分立即值的位置定位。第三字段确定立即值的所有剩余位。在数据处理指令的第三字段中的位值用于填充该立即值中没有被数据处理指令的第一字段填充的所有位位置。数据处理指令的第三字段中的第一位值用于填充该立即值中没有被数据处理指令的第一字段填充的所有位位置的第一部分。数据处理指令的第三字段中的第二位值用于填充该立即值中没有被数据处理指令的第一字段填充的所有位位置的第二部分。在其他形式中,数据处理指令的第二字段确定立即值内的字节位置。然而在另一形式中,多个数据处理指令的至少一个进一步包括数据处理指令的第四字段,该第四字段作为定义数据处理指令的功能的操作码字段。在另一形式中,提供了数据处理指令的第五字段,该第五字段作为子操作码字段来执行使用立即值的操作。
应当认识到对于所公开的实施例可以进行各种修改。例如,尽管图9所示的立即值是关于0值对称的,也可以选择其他值作为对称点。尽管所讨论的指定位大小字段具有字节定位器,8位无符号立即值和填充位来定义32位立即值,但也可以实现其他的位大小,无论是更大还是更小。各种数据处理器和协处理器结构可以通过使用这里所描述的方法来执行。这里所描述的数据处理系统被定义为包括处理指令以形成立即值的任何系统。此外,存储在数据处理指令中的立即值位的顺序可以是相反的顺序或从用于生成立即值的顺序中选出的顺序。
对于具体的实施例,上述已经描述了益处,其他优点,和解决问题的方法。然而,益处,优点,解决问题的方法,和使任何益处,优点,或解决问题的方法出现或变得更加明确的任何要素(多个)都不能认为是任何或所有权利要求必要的,必须的,或主要的特征或要素。这里使用的术语“包含”或其任何其他变化意旨涵盖非排它的包括,使得包括一组要素的步骤、方法、产品或设备不仅仅包括那些要素而且包括其他没有明确列出的或这些步骤、方法、产品或设备所固有的要素。这里所使用的术语“一个”定义为一个或一个以上。这里所使用的术语“多个”定义为两个或两个以上。这里所使用的术语“另一个”定义为至少第二或者更多。这里使用的术语包括“包括”和/或“具有”被定义为包含(即,开放式语言)。这里所使用的术语“耦合”定义为连接,尽管不必是直接的,也不必是机械的。
权利要求
1.数据处理系统中一种形成立即值的方法,包括接收数据处理指令;使用该数据处理指令的第一字段作为所述立即值的一部分;使用该数据处理指令的第二字段来确定所述立即值内所述部分立即值的位置定位;和使用该数据处理指令第三字段中的位值来确定所述立即值的其余部分。
2.权利要求1所述的方法,进一步包括通过利用所述数据处理指令的第三字段中的位值填充没有被所述部分立即值中数据处理指令的第一字段填充的所述立即值的所有位位置来使用该位值。
3.权利要求1所述的方法,进一步包括使用所述数据处理指令第三字段的第一部分填充所述立即值中没有被所述第一字段填充的所有位位置的第一部分;和使用所述数据处理指令第三字段的第二部分填充所述立即值中没有被所述第一字段填充的所有位位置的第二部分。
4.权利要求1所述的方法,进一步包括使用所述数据处理指令的第二字段来确定所述立即值内的字节位置。
5.权利要求1所述的方法,进一步包括提供所述数据处理指令的第四字段作为定义所述数据处理指令的功能的操作码字段;和提供所述数据处理指令的第五字段作为执行生成所述立即值的操作的子操作码字段。
6.一种数据处理系统,包括通信总线;连接至所述通信总线的处理器,该处理器执行多个数据处理指令;和连接至所述通信总线的存储器,该存储器存储所述多个数据处理指令,其中所述多个数据处理指令的至少一个起到形成立即值的作用,所述多个数据处理指令的至少一个包括包含所述立即值的一部分的第一字段;确定所述立即值内所述部分立即值的位置定位的第二字段;和确定所述立即值的所有剩余位的第三字段。
7.权利要求6所述的数据处理系统,其中所述数据处理指令第三字段中的位值用于填充所述立即值中没有被所述数据处理指令的第一字段填充的所有位位值。
8.权利要求6所述的数据处理系统,其中所述数据处理指令的第三字段中的第一位值用于填充所述立即值中没有被所述数据处理指令的第一字段填充的所有位位置的第一部分;和其中所述数据处理指令的第三字段中的第二位值用于填充所述立即值中没有被所述数据处理指令的第一字段填充的所有位位置的第二部分。
9.权利要求6所述的数据处理系统,其中数据处理指令的第二字段确定所述立即值内的字节位置。
10.权利要求6所述的数据处理系统,其中所述多个数据处理指令的至少一个进一步包括所述数据处理指令的第四字段,作为确定所述数据处理指令功能的操作码字段;和所述数据处理指令的第五字段,作为执行使用所述立即值的操作的子操作码字段。
全文摘要
一种数据处理系统使用形成立即值(67)的数据处理指令(60)。该数据处理指令使用第一字段(67)作为立即值的一部分。数据处理指令的第二字段(66)确定该立即值内的所述部分立即值的位置定位。数据处理指令的第三字段(65)中的位值用于确定立即值的其余部分。
文档编号G06F12/00GK101023424SQ200580031542
公开日2007年8月22日 申请日期2005年8月15日 优先权日2004年9月17日
发明者威廉·C·莫耶 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1