数据处理系统内地址偏移量的产生的制作方法

文档序号:6378354阅读:173来源:国知局
专利名称:数据处理系统内地址偏移量的产生的制作方法
技术领域
本发明涉及数据处理系统领域。更具体而言,本发明涉及响应于地址偏移量产生指令而产生地址偏移量。
已知提供了附

图1所示形式的数据处理系统。该数据处理系统包括处理器核,所述处理器核心包括寄存器库4、乘法器6、移位器8、加法器10、指令流水线12和指令解码器14。本领域的技术人员应该理解的是处理器核2通常包括很多另外的电路元件,为了清楚起见在图1中省略这些元件。在操作中,处理器核2取出程序指令给指令流水线12,其中所述程序指令由指令解码器14解码来产生控制信号,所述控制信号对寄存器库4、乘法器6、移位器8和加法器10以及其它电路元件起作用来控制由解码的程序指令所指定的、期望的数据处理操作。处理器核心2配置有数据总线、地址总线和指令总线。
所需的一种处理操作类型是产生地址偏移量值。这个操作类型的一个实例是BL/BLX指令,所述BL/BLX指令存在于由英国剑桥ARM有限公司生产的允许Thumb的处理器的Thumb操作模式中。附图2示意性地说明了这些指令。可以看出这些指令可以被视为两个16位指令或者一个32位指令。前端的五个位(即11110)解码为指示存在一条BL/BLX指令,且头两个字节中剩余的11个位(包括起始符位S)是偏移量值,这是偏移量字段2。这个偏移量值之后紧接一个位组合111t1和另外11位的偏移量(即偏移量字段1)。“t”位向指令解码器14指示所述指令是BL指令还是BLX指令。BL指令是具有停留在Thumb操作模式内链接的转移。BLX指令是具有与到ARM操作模式的开关相结合的链接的转移。
应该理解图2所示的偏移量值提供了22个位。这个偏移量值按需要进行符号扩展,并且被加到所述转移指令的地址。这个偏移量值范围能支持正负4MB的跳转,以达到16位半字对齐的目标。
随着应用程序的复杂度增加,它们的尺寸也倾向于增加。期望的是如果需要的话在程序映像内可能进行端对端的转移。因此,当应用映像的大小变得越来越大超过4MB,就产生了在指令中支持的地址偏移量值没有足够范围的问题。
图3示意性地说明在程序执行流程跳转到新的点时BL指令的动作。能够控制的最大跳转受到可以指定的最大地址偏移量值限制。
应该解决的另一个问题是,需要在任何修改的指令形式中提供向后兼容。因此,虽然采用全新的BL/BLX指令编码代替旧的编码可以解决地址偏移量范围的问题,但是遇到的缺点是缺少与使用传统指令所写的现有软件的向后兼容。或者,在现有编码之外增加新的编码将不利地浪费指令编码位空间。
从一个方面来看,本发明提供用于处理数据的装置,所述装置包括指令解码器,其响应于程序指令来控制数据处理操作;以及地址偏移量产生电路,该电路由所述指令解码器来控制并且用来产生N位地址偏移量,该地址偏移量具有由包括偏移量值符号指定位S的地址偏移量产生指令所指定的值;其中当表示成二进制补码数时所述N位地址偏移量具有位值Bi,其中(N-1)≥i≥Z且(N-1)>Z≥0,所述地址偏移量产生指令包括L个高位字段位Pk,其中(N-Z)>L≥1且L>k≥0,并且所述地址偏移量产生电路是可操作的,其使得(i)如果所有所述高位字段位Pk具有各自的预定值Dk,则对于所有满足(N-1)≥j≥(N-L-1)的j值,所述N位地址偏移量的位Bj由Bj=S给出;以及(ii)如果任何所述高位字段位Pk不具有所述预定值Dk,则所述N位地址偏移量的位Bj(其中(N-1)≥j≥(N-L-1))由预定的从所述高位字段位Pk和所述偏移量值符号指定位S的值的组合到除了组合Bj=1(对于满足(N-1)≥j≥(N-L-1)的所有j值)和组合Bj=0(对于满足(N-1)≥j≥(N-L-1)的所有j值)之外Bj值的组合的一对一映射给出。
本发明认识到,现有地址偏移量产生指令内的一些位可能是冗余的,因为不需要它们来明确识别并且因此解码相关的指令(例如,一旦已经识别了BL/BLX的前16位,后面的16位就被限制为BL指令或BLX指令的第二半),因此可以使用这些位编码附加地址偏移量信息,由此扩展了地址偏移量范围。然而,为了支持对现有软件的向后兼容,用于表示地址偏移量值的额外位的编码必须使得当执行传统代码时其中所述额外位具有固定值(相应的预定值),然后以如下方式解码这些固定值产生与编写传统软件时原来想要的相同的偏移量值,即适当地符号扩展。这通过如上述指定的本技术的编码来实现。应该理解的是,利用本技术重新用来表示地址偏移量的附加位的、传统代码中的固定位可以具有预先固定的值“0”或“1。
为了提供与先前指令组的向后兼容,优选编码中所述高位字段位Pk的所述对应预定值都等于1。
在优选实施例中,所述地址偏移量产生电路可用来产生所述N位地址偏移量的位Bj的值,每个位值Bj具有由以下规则中相应的一条预定规则给出的值对于符号位直接指定的一个j值,Bj=S;Bj=S XOR Pk(j)XOR Dk(j),其中k(j)是从j值(除了所述符号位直接指定的j值)到k值的一对一索引映射。
这具有的优点是,将符号位拷贝到一个位位置以及对于其它位位置使用“异或”函数(当预定值是0时)或使用“同”函数(当预定值是1时)是一个产生满足所需条件的Bj值的特别简单的方法。
在优选实施例中,所述符号位直接指定的j值是N-1。如果可以直接地从指令编码中获得最终偏移量的符号位而不需要计算“异或”(“同”)函数,则是有利的。作为一个实例,这可能是有利地,因为最终偏移量的符号位可能需要被复制,在这种情况下将缓冲延迟与“异或”(“同”)延迟并联而不是与其串联减少了关键路径。它为何有利的另一个原因是一些转移预测方案关注的是转移指令的方向,并且因此可能想在不知道其确切的值的情况下知道偏移量的符号。
应该理解的是,因为Dk是预定值,所以可以利用单个“异或”或“同”门实现所述公式,这是由于如果预定值是0则所述公式简化为Bj=S XOR Pk(j),如果预定值是1则所述公式简化为Bj=NOT(S XORPk(j))。(如果Dk不是预定值,则将需要两个“异或”(“同”)门串联成的等效电路)。
应该理解的是,地址偏移量产生指令可具有各种不同形式并且不必局限于转移指令。然而,本发明尤其非常适合用于转移指令。
当使用转移指令时,优选实施例将转移目标的地址偏移量与当前程序地址结合以产生所述程序跳转到的转移目标地址。
虽然本发明适合各种不同大小的指令,它在K=2、N=25且Z=1或2的实施例中是尤其有用的。这些有利地平衡了分配给偏移量值说明的位空间和分配给操作码和其它参数的位空间。
新技术没有指定的地址偏移量值的位也需要在地址偏移量产生指令中被指定。可以以各种不同方法编码这些地址偏移量值的位,但是由地址偏移量产生指令内的字段直接指定这些地址偏移量值的位是简单有利的。
从另一个方面来看,本发明提供一种处理数据的方法,所述方法包括以下步骤响应于程序指令,使用指令解码器控制数据处理操作;以及使用由所述指令解码器控制的地址偏移量产生电路,产生N位地址偏移量,该地址偏移量具有由包括偏移量值符号指定位S的地址偏移量产生指令所指定的值;其中当表示成二进制补码数时所述N位地址偏移量具有位值Bi,其中(N-1)≥i≥Z且(N-1)>Z≥0,所述地址偏移量产生指令包括L个高位字段位Pk,其中(N-Z)>L≥1且L>k≥0,并且所述地址偏移量产生电路是可操作的,使得(i)如果所有所述高位字段位Pk具有相应的预定值Dk,则对于满足(N-1)≥j≥(N-L-1)的所有j值,所述N位地址偏移量的位Bj由Bj=S给出;以及(ii)如果任何所述高位字段位Pk不具有所述预定值Dk,则所述N位地址偏移量的位Bj(其中(N-1)≥j≥(N-L1))由预定的从所述高位字段位Pk和所述偏移量值符号指定位S的值的组合到除了组合Bj=1(对于满足(N-1)≥j≥(N-L-1)的所有j值)和组合Bj=0(对于满足(N-1)≥j≥(N-L-1)的所有j值)之外的Bj值的组合的一对一映射给出。
从另一个方面来看,本发明提供一种包括计算机程序的计算机程序产品,该计算机程序用于控制计算机执行以下步骤响应于程序指令,使用指令解码器控制数据处理操作;以及使用由所述指令解码器控制的地址偏移量产生电路,产生N位地址偏移量,该地址偏移量具有由包括偏移量值符号指定位S的地址偏移量产生指令所指定的值;其中当表示成二进制补码数时,所述N位地址偏移量具有位值Bi,其中(N-1)≥i≥Z且(N-1)>Z≥0,所述地址偏移量产生指令包括L个高位字段位Pk,其中(N-Z)>L≥1且L>k≥0,并且所述地址偏移量产生电路是可操作的,使得(i)如果所有所述高位字段位Pk具有各自的预定值Dk,则对于满足(N-1)≥j≥(N-L-1)的所有j值,所述N位地址偏移量的位Bj由Bj=S给出;以及(ii)如果任何所述高位字段位Pk不具有所述预定值Dk,则所述N位地址偏移量的位Bj(其中(N-1)≥j≥(N-L-1))由预定的从所述高位字段位Pk和所述偏移量值符号指定位S的值的组合到除了组合Bj=1(对于满足(N-1)≥j≥(N-L-1)的所有j值)和组合Bj=0(对于满足(N-1)≥j≥(N-L-1)的所有j值)之外的Bj值的组合的一对一映射给出。
应该理解的是,计算机程序产品可以采用广泛的各种不同形式,例如存储介质或从数据连接的下载等等。在计算机程序产品内,有关的计算机程序应该包括利用本技术的一个或多个地址偏移量产生指令。
现在参考附图将描述本发明的实施例,所述实施例仅仅作为例子,其中图1示意性地说明可以使用本技术的数据处理系统;图2示意性地说明包括地址偏移量产生能力的已知转移指令;图3说明例如图2的转移指令的转移指令的动作;图4说明要产生的地址偏移量值;图5示意性地说明用于产生图4的地址偏移量值的地址偏移量产生指令;图6示意性地说明示例性逻辑电路,其用于解码来自地址产生指令的附加位以便在所产生的地址偏移量值内提供更大数目的位;图7示意性地表示指令的符号、高位字段位和所产生的相应高位偏移量值的位之间的示例性普遍关系;以及图8示意性地说明可以执行根据当前技术的程序指令的通用计算机的体系结构。
图4示出了为N位值的地址偏移量值。这个地址偏移量值的最低有效Z位不必由地址产生指令内的字段表示,因为它们具有由有关程序的指令字长所确定的固定值。如果指令字是32位字并且在存储器内是字对齐的,则地址偏移量值的最低有效2位可以限定为“00”并且不必在地址偏移量产生指令的字段内指定。类似地,对于半字对齐的16位指令(16位半字),地址偏移量值的最低有效位可以限定为“0”并且也不必在偏移量产生指令的偏移量字段内指定。
在这个实例中,范围[BN-4B1]包括在以下之间扩展的位Bj地址偏移量值的最低有效端,其开始于需要考虑指令字长来指定的位置;以及低于最高有效端的一位位置的位置,该最高有效端是在传统指令中可以指定的最大位置。
在这个实例中为了扩展地址偏移量值的编址范围,在地址偏移量值中插入另外两个位,即位BN-2和BN-3,原先的符号位S往前移动变为BN-1。以所示方式从地址偏移量产生指令中得到这些附加位。更具体而言,当使用逻辑表达式与能够利用传统指令指定的地址值的最高有效位结合时,这些附加位由重新用来提供编码的附加位中的相应那个指定。应该理解的是,图4所示的表达式示出了所需的关系,但是这个表达式可以以许多不同形式来重写。本技术包括表示图4所示关系的所有这些可供选择的形式。
图5示意性地说明地址偏移量产生指令(ARM/Thumb型系统中的新BL/BLX指令)。相对图2比较这个指令,可以看到,已经根据图4所示的逻辑表达式重新使用与“t”相邻的两个位编码关于地址偏移量值的附加信息。因此,全部地址偏移量值由传统地址偏移量字段和如上所述解释的两个附加位值一起给出。
图6更直接地说明如何从图5的地址偏移量产生指令中得到地址偏移量值。首先,除了S位外,可以直接采用传统地址偏移量字段并且将其放在与以前相同的位置。然后,使用所示的相应逻辑门将编码附加地址偏移量信息的两个附加位值(即P1和P2)与符号位S结合以产生扩展的地址偏移量值的位BN-2和BN-3,所述符号位S是传统偏移量值的最高有效位。可以直接使用符号位S提供扩展的地址偏移量值的BN-1。如此产生的扩展的地址偏移量值是25位值(鉴于半字(在这个实例中是16位半字)对准还插入为“0”的LSB值)。该25位值被进一步符号扩展以产生将与32位地址值相结合的32位值(例如,作为转移操作的一部分)。这个结合可以通过与转移指令的PC值相加来实现,该值是其地址加上常量偏移量(在Thumb/Wrist中是4)。其它给出相同结果的处理操作和操作组合也被包括在本技术内。因此,在地址偏移量范围先前限制为正或负4MB的情况下,这可以扩展到正或负16MB,这是显著优势。这个扩展的范围可以以与现有代码向后兼容的方式实现。
图7是说明高位字段位P1和P0、偏移量符号位S和产生的偏移量值的三个最高有效位BN-1、BN-2和BN-3之间更一般的关系的表格。当P1=P0=1时,这对应于传统编码并且因此所有三个值BN-1、BN-2和BN-3都等于S。这剩下S、P1和P0的其它六种可能组合,它们一对一映射到BN-1、BN-2和BN-3的剩余可能3位组合。这样的映射的一个实例是如图4和图6所示的映射。
在下表中也示出了这个映射
图8示意性地说明可以执行根据上述技术的程序指令的通用计算机200。通用计算机200包括中央处理单元202、随机存取存储器204、只读存储器206、网络接口卡208、硬盘驱动器210、显示驱动器212和显示器214和带有键盘218和鼠标220的用户输入/输出电路216,这些部件都经由公共总线222连接。在操作中,中央处理单元202将执行计算机程序指令,所述计算机程序指令可存储在随机存取存储器204、只读存储器206和硬盘驱动器210中的一个或多个中或者经由网络接口卡208动态下载。所执行处理的结果可以经由显示驱动器212和显示器214显示给用户。可以经由用户输入输出电路216从键盘218或鼠标220接收用于控制通用计算机200的操作的用户输入。应该理解的是,可以以各种不同的计算机语言编写计算机程序。计算机程序可以存储和分布在记录介质上或者动态下载到通用计算机200。当在合适的计算机程序的控制下操作时,通用计算机200可以执行上述技术并且可以视为构成了用于执行上述技术的装置。通用计算机200的结构可以显著变化,图8仅仅是一个实例。
权利要求
1.一种用于处理数据的装置,所述装置包括指令解码器,其响应于程序指令来控制数据处理操作;以及地址偏移量产生电路,该电路由所述指令解码器来控制并且用来产生N位地址偏移量,该地址偏移量具有由包括偏移量值符号指定位S的地址偏移量产生指令所指定的值;其中当表示成二进制补码数时所述N位地址偏移量具有位值Bi,其中(N-1)≥i≥Z且(N-1)>Z≥0,所述地址偏移量产生指令包括L个高位字段位Pk,其中(N-Z)>L≥1且L>k≥0,并且所述地址偏移量产生电路是可操作的,使得(i)如果所有所述高位字段位Pk具有相应的预定值Dk,则对于所有满足(N-1)≥j≥(N-L-1)的j值,所述N位地址偏移量的位Bj由Bj=S给出;以及(ii)如果任何所述高位字段位Pk不具有所述预定值Dk,则所述N位地址偏移量的位Bj,其中(N-1)≥j≥(N-L-1),由预定的从所述高位字段位Pk和所述偏移量值符号指定位S的值的组合到除了组合Bj=1和组合Bj=0之外的Bj值的组合的一对一映射给出,其中组合Bj=1针对满足(N-1)≥j≥(N-L-1)的所有j值,且组合Bj=0针对满足(N-1)≥j≥(N-L-1)的所有j值。
2.如权利要求1所述的装置,其中所述预定值Dk都等于1。
3.如权利要求1或2所述的装置,其中所述地址偏移量产生电路用来产生所述N位地址偏移量的位Bj的值,每个位值Bj具有由以下规则中相应的预定规则给出的值对于符号位直接指定的一个j值,Bj=S;Bj=S XOR Pk(j)XOR Dk(j),其中k(j)是从除了所述符号位直接指定的j值之外的j值到k值的一对一索引映射。
4.如权利要求3所述的装置,其中所述符号位直接指定的j值是N-1。
5.如前面权利要求的任一项所述的装置,其中所述地址偏移量产生指令是转移指令并且所述N位地址偏移量是N位转移目标地址偏移量。
6.如权利要求5所述的装置,其中所述N位转移目标地址偏移量与所述转移指令的程序地址结合以产生转移目标地址。
7.如前面权利要求的任一项所述的装置,其中所述N位地址偏移量在使用之前通过所述地址偏移量产生指令进一步被符号扩展。
8.如前面权利要求的任一项所述的装置,其中L=2。
9.如前面权利要求的任一项所述的装置,其中N=25。
10.如前面权利要求的任一项所述的装置,其中Z是1和2中的一个。
11.如前面权利要求的任一项所述的装置,其中在所述地址偏移量产生指令中直接指定位值BN-2-L到BZ。
12.一种处理数据的方法,所述方法包括以下步骤响应于程序指令,使用指令解码器控制数据处理操作;以及使用由所述指令解码器控制的地址偏移量产生电路,产生N位地址偏移量,该地址偏移量具有由包括偏移量值符号指定位S的地址偏移量产生指令所指定的值;其中当表示成二进制补码数时所述N位地址偏移量具有位值Bi,其中(N-1)≥i≥Z且(N-1)>Z≥0,所述地址偏移量产生指令包括L个高位字段位Pk,其中(N-Z)>L≥1且L>k≥0,并且所述地址偏移量产生电路是可操作的,使得(i)如果所有所述高位字段位Pk具有相应预定值Dk,则对于满足(N-1)≥j≥(N-L-1)的所有j值所述N位地址偏移量的位Bj由Bj=S给出;以及(ii)如果任何所述高位字段位Pk不具有所述预定值Dk,则所述N位地址偏移量的位Bj,其中(N-1)≥j≥(N-L-1),由预定的从所述高位字段位Pk和所述偏移量值符号指定位S的值的组合到除了组合Bj=1和组合Bj=0之外的Bj值的组合的一对一映射给出,其中组合Bj=1针对满足(N-1)≥j≥(N-L-1)的所有j值,且组合Bj=0针对满足(N-1)≥j≥(N-L-1)的所有j值。
13.如权利要求12所述的方法,其中所述预定值Dk都等于1。
14.如权利要求12或13所述的方法,其中所述地址偏移量产生电路用来产生所述N位地址偏移量的位Bj的值,每个位值Bj具有由以下规则中相应预定规则给出的值对于符号位直接指定的一个j值,Bj=S;Bj=S XOR Pk(j)XOR Dk(j),其中k(j)是从除了所述符号位直接指定的j值之外的j值到k值的一对一索引映射。
15.如权利要求14所述的方法,其中所述符号位直接指定的j值是N-1。
16.如权利要求12-15的任一项所述的方法,其中所述地址偏移量产生指令是转移指令并且所述N位地址偏移量是N位转移目标地址偏移量。
17.如权利要求16所述的方法,其中所述N位转移目标地址偏移量与所述转移指令的程序地址结合以产生转移目标地址。
18.如前面权利要求12-17的任一项所述的方法,其中所述N位地址偏移量在使用之前通过所述地址偏移量产生指令进一步被符号扩展。
19.如前面权利要求12-18的任一项所述的方法,其中L=2。
20.如前面权利要求12-19的任一项所述的方法,其中N=25。
21.如前面权利要求12-20的任一项所述的方法,其中Z是1和2中的一个。
22.如前面权利要求12-21的任一项所述的方法,其中在所述地址偏移量产生指令中直接指定位值BN-2-L到BZ。
23.一种包括计算机程序的计算机程序产品,该计算机程序用于控制计算机执行以下步骤响应于程序指令,使用指令解码器控制数据处理操作;以及使用由所述指令解码器控制的地址偏移量产生电路,产生N位地址偏移量,该地址偏移量具有由包括偏移量值符号指定位S的地址偏移量产生指令所指定的值;其中当表示成二进制补码数时所述N位地址偏移量具有位值Bi,其中(N-1)≥i≥Z且(N-1)>Z≥0,所述地址偏移量产生指令包括L个高位字段位Pk,其中(N-Z)>L≥1且L>k≥0,并且所述地址偏移量产生电路是可操作的,使得(i)如果所有所述高位字段位Pk具有相应预定值Dk,则对于满足(N-1)≥j≥(N-L-1)的所有j值所述N位地址偏移量的位Bj由Bj=S给出;以及(ii)如果任何所述高位字段位Pk不具有所述预定值Dk,则所述N位地址偏移量的位Bj,其中(N-1)≥j≥(N-L-1),由预定的从所述高位字段位Pk和所述偏移量值符号指定位S的值的组合到除了组合Bj=1和组合Bj=0之外的Bj值的组合的一对一映射给出,其中组合Bj=1针对满足(N-1)≥j≥(N-L-1)的所有j值,且组合Bj=0针对满足(N-1)≥j≥(N-L-1)的所有j值。
24.如权利要求23所述的计算机程序产品,其中所述预定值Dk都等于1。
25.如权利要求23或24所述的计算机程序产品,其中所述地址偏移量产生电路用来产生所述N位地址偏移量的位Bjd的值,每个位值Bj具有由以下规则中的相应预定规则给出的值对于符号位直接指定的一个j值,Bj=S;Bj=S XOR Pk(j)XOR Dk(j),其中k(j)是从除了所述符号位直接指定的j值之外的j值到k值的一对一索引映射。
26.如权利要求25所述的计算机程序产品,其中所述符号位直接指定的j值是N-1。
27.如权利要求23-26的任一项所述的计算机程序产品,所述地址偏移量产生指令是转移指令并且所述N位地址偏移量是N位转移目标地址偏移量。
28.如权利要求27所述的计算机程序产品,所述N位转移目标地址偏移量与所述转移指令的程序地址结合以产生转移目标地址。
29.如权利要求23-28的任一项所述的计算机程序产品,其中所述N位地址偏移量在使用之前通过所述地址偏移量产生指令进一步被符号扩展。
30.如权利要求23-29的任一项所述的计算机程序产品,其中L=2。
31.如权利要求23-30的任一项所述的计算机程序产品,其中N=25。
32.如权利要求23-31的任一项所述的计算机程序产品,其中Z是1和2中的一个。
33.如权利要求23-32的任一项所述的计算机程序产品,其中在所述地址偏移量产生指令中直接指定位值BN-2-L到BZ。
全文摘要
提供了一种支持地址偏移量产生指令的数据处理系统(2),所述指令利用传统指令编码中的先前冗余位编码地址偏移量值的位,同时保持与所述传统编码的向后兼容。
文档编号G06F9/318GK1788252SQ200380110341
公开日2006年6月14日 申请日期2003年12月30日 优先权日2003年6月11日
发明者D·J·西尔 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1