CN100375012C - 用于在数据处理系统内产生地址偏移量的装置和方法 - Google Patents

用于在数据处理系统内产生地址偏移量的装置和方法 Download PDF

Info

Publication number
CN100375012C
CN100375012C CNB2003801103414A CN200380110341A CN100375012C CN 100375012 C CN100375012 C CN 100375012C CN B2003801103414 A CNB2003801103414 A CN B2003801103414A CN 200380110341 A CN200380110341 A CN 200380110341A CN 100375012 C CN100375012 C CN 100375012C
Authority
CN
China
Prior art keywords
value
address
bit
instruction
play amount
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CNB2003801103414A
Other languages
English (en)
Other versions
CN1788252A (zh
Inventor
D·J·西尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN1788252A publication Critical patent/CN1788252A/zh
Application granted granted Critical
Publication of CN100375012C publication Critical patent/CN100375012C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供了一种支持地址偏移量产生指令的数据处理系统(2),所述指令利用传统指令编码中的先前冗余位编码地址偏移量值的位,同时保持与所述传统编码的向后兼容。

Description

用于在数据处理系统内产生地址偏移量的装置和方法
技术领域
本发明涉及数据处理系统领域。更具体而言,本发明涉及响应于地址偏移量产生指令而产生地址偏移量。
背景技术
已知提供了附图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,则由从所述偏移扩展位Pk和所述偏移量值符号指定位S的值的组合、到除了组合Bj=1(对于满足(N-1)≥j≥(N-L-1)的所有j值)和组合Bj=0(对于满足(N-1)≥j≥(N-L-1)的所有j值)之外Bj值的组合的预定一对一映射,给出所述N位地址偏移量的位Bj(其中(N-1)≥j≥(N-L-1))。
本发明认识到,现有地址偏移量产生指令内的一些位可能是冗余的,因为不需要它们来明确识别并且因此解码相关的指令(例如,一旦已经识别了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)≥j≥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,则由从所述偏移扩展位Pk和所述偏移量值符号指定位S的值的组合、到除了组合Bj=1(对于满足(N-1)≥j≥(N-L-1)的所有j值)和组合Bj=0(对于满足(N-1)≥j≥(N-L-1)的所有j值)之外的Bj值的组合的预定一对一映射,给出所述N位地址偏移量的位Bj(其中(N-1)≥j≥(N-L-1))。
从另一个方面来看,本发明提供一种包括计算机程序的计算机程序产品,该计算机程序用于控制计算机执行以下步骤:
响应于程序指令,使用指令解码器控制数据处理操作;以及
使用由所述指令解码器控制的地址偏移量产生电路,产生N位地址偏移量,该地址偏移量具有由包括偏移量值符号指定位S的地址偏移量产生指令所指定的值;
其中
当表示成二进制补码数时,所述N位地址偏移量具有位值Bi,其中(N-1)≥j≥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,则由从所述偏移扩展位Pk和所述偏移量值符号指定位S的值的组合、到除了组合Bj=1(对于满足(N-1)≥j≥(N-L-1)的所有j值)和组合Bj=0(对于满足(N-1)≥j≥(N-L-1)的所有j值)之外的Bj值的组合的预定一对一映射,给出所述N位地址偏移量的位Bj(其中(N-1)≥j≥(N-L-1))。
应该理解的是,计算机程序产品可以采用广泛的各种不同形式,例如存储介质或从数据连接的下载等等。在计算机程序产品内,有关的计算机程序应该包括利用本技术的一个或多个地址偏移量产生指令。
附图说明
现在参考附图将描述本发明的实施例,所述实施例仅仅作为例子,其中:
图1示意性地说明可以使用本技术的数据处理系统;
图2示意性地说明包括地址偏移量产生能力的已知转移指令;
图3说明例如图2的转移指令的转移指令的动作;
图4说明要产生的地址偏移量值;
图5示意性地说明用于产生图4的地址偏移量值的地址偏移量产生指令;
图6示意性地说明示例性逻辑电路,其用于解码来自地址产生指令的附加位以便在所产生的地址偏移量值内提供更大数目的位;
图7示意性地表示指令的符号、高位字段位和所产生的相应高位偏移量值的位之间的示例性普遍关系;以及
图8示意性地说明可以执行根据当前技术的程序指令的通用计算机的体系结构。
具体实施方式
图4示出了为N位值的地址偏移量值。这个地址偏移量值的最低有效Z位不必由地址产生指令内的字段表示,因为它们具有由有关程序的指令字长所确定的固定值。如果指令字是32位字并且在存储器内是字对齐的,则地址偏移量值的最低有效2位可以限定为“00”并且不必在地址偏移量产生指令的字段内指定。类似地,对于半字对齐的16位指令(16位半字),地址偏移量值的最低有效位可以限定为“0”并且也不必在偏移量产生指令的偏移量字段内指定。
在这个实例中,范围[BN-4:B1]包括在以下之间扩展的位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所示的映射。
在下表中也示出了这个映射:
  S   P<sub>1</sub>   P<sub>0</sub>   B<sub>N-1</sub>   B<sub>N-2</sub>   B<sub>N-3</sub>
  00001111   00110011   01010101   00001111   11000011   10100101
图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仅仅是一个实例。

Claims (22)

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,则由从所述偏移扩展位Pk的值和所述偏移量值符号指定位S的值的组合,到除了组合Bj=1和组合Bj=0之外的Bj值的组合的预定一对一映射,给出所述N位地址偏移量的位Bj,其中(N-1)≥j≥(N-L-1),其中组合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.如权利要求1所述的装置,其中所述地址偏移量产生指令是转移指令,并且所述N位地址偏移量是N位转移目标地址偏移量。
6.如权利要求5所述的装置,其中所述N位转移目标地址偏移量与所述转移指令的程序地址结合以产生转移目标地址。
7.如权利要求1所述的装置,其中所述N位地址偏移量在使用之前通过所述地址偏移量产生指令进一步被符号扩展。
8.如权利要求1所述的装置,其中L=2。
9.如权利要求1所述的装置,其中N=25。
10.如权利要求1所述的装置,其中Z是1和2中的一个。
11.如权利要求1所述的装置,其中在所述地址偏移量产生指令中直接指定位值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,则由从所述偏移扩展位Pk的值和所述偏移量值符号指定位S的值的组合,到除了组合Bj=1和组合Bj=0之外的Bj值的组合的预定一对一映射,给出所述N位地址偏移量的位Bj,其中(N-1)≥j≥(N-L-1),其中组合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所述的方法,其中所述地址偏移量产生指令是转移指令,并且所述N位地址偏移量是N位转移目标地址偏移量。
17.如权利要求16所述的方法,其中所述N位转移目标地址偏移量与所述转移指令的程序地址结合以产生转移目标地址。
18.如权利要求12所述的方法,其中所述N位地址偏移量在使用之前通过所述地址偏移量产生指令进一步被符号扩展。
19.如权利要求12所述的方法,其中L=2。
20.如权利要求12所述的方法,其中N=25。
21.如权利要求12所述的方法,其中Z是1和2中的一个。
22.如权利要求12所述的方法,其中在所述地址偏移量产生指令中直接指定位值BN-2-K到BZ
CNB2003801103414A 2003-06-11 2003-12-30 用于在数据处理系统内产生地址偏移量的装置和方法 Expired - Lifetime CN100375012C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0313510A GB2402757B (en) 2003-06-11 2003-06-11 Address offset generation within a data processing system
GB0313510.0 2003-06-11

Publications (2)

Publication Number Publication Date
CN1788252A CN1788252A (zh) 2006-06-14
CN100375012C true CN100375012C (zh) 2008-03-12

Family

ID=27589902

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801103414A Expired - Lifetime CN100375012C (zh) 2003-06-11 2003-12-30 用于在数据处理系统内产生地址偏移量的装置和方法

Country Status (11)

Country Link
US (1) US7120779B2 (zh)
EP (1) EP1631903B8 (zh)
JP (1) JP3917636B2 (zh)
KR (1) KR100951331B1 (zh)
CN (1) CN100375012C (zh)
AU (1) AU2003290355A1 (zh)
GB (1) GB2402757B (zh)
MY (1) MY134215A (zh)
RU (1) RU2006100297A (zh)
TW (1) TWI290288B (zh)
WO (1) WO2004111837A2 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
GB2447427B (en) 2007-03-12 2011-05-11 Advanced Risc Mach Ltd Address calculation within data processing systems
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US20110082999A1 (en) * 2009-10-07 2011-04-07 Andes Technology Corporation Data processing engine with integrated data endianness control mechanism
GB2488980B (en) 2011-03-07 2020-02-19 Advanced Risc Mach Ltd Address generation in a data processing apparatus
WO2014203035A1 (en) * 2013-06-18 2014-12-24 Freescale Semiconductor, Inc. Signal processing device and method of performing a bit-expand operation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0594969A1 (en) * 1992-10-27 1994-05-04 Motorola, Inc. Data processing system and method for calculating the sum of a base plus offset
US5440705A (en) * 1986-03-04 1995-08-08 Advanced Micro Devices, Inc. Address modulo adjust unit for a memory management unit for monolithic digital signal processor
US20020013691A1 (en) * 2000-03-15 2002-01-31 Peter Warnes Method and apparatus for processor code optimization using code compression

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4203157A (en) * 1978-09-05 1980-05-13 Motorola, Inc. Carry anticipator circuit and method
US20010025337A1 (en) * 1996-06-10 2001-09-27 Frank Worrell Microprocessor including a mode detector for setting compression mode
US6049863A (en) 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US6237087B1 (en) * 1998-09-30 2001-05-22 Intel Corporation Method and apparatus for speeding sequential access of a set-associative cache
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
WO2003065165A2 (en) * 2002-01-31 2003-08-07 Arc International Configurable data processor with multi-length instruction set architecture
US6948053B2 (en) * 2002-02-25 2005-09-20 International Business Machines Corporation Efficiently calculating a branch target address
US20040049657A1 (en) * 2002-09-10 2004-03-11 Kling Ralph M. Extended register space apparatus and methods for processors
US20050114633A1 (en) * 2003-11-25 2005-05-26 Palat Manoj N. Method and system for executing data-relative code within a non data-relative environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440705A (en) * 1986-03-04 1995-08-08 Advanced Micro Devices, Inc. Address modulo adjust unit for a memory management unit for monolithic digital signal processor
EP0594969A1 (en) * 1992-10-27 1994-05-04 Motorola, Inc. Data processing system and method for calculating the sum of a base plus offset
US20020013691A1 (en) * 2000-03-15 2002-01-31 Peter Warnes Method and apparatus for processor code optimization using code compression

Also Published As

Publication number Publication date
TWI290288B (en) 2007-11-21
TW200428226A (en) 2004-12-16
KR100951331B1 (ko) 2010-04-08
US7120779B2 (en) 2006-10-10
MY134215A (en) 2007-11-30
KR20060021349A (ko) 2006-03-07
WO2004111837A2 (en) 2004-12-23
EP1631903A2 (en) 2006-03-08
AU2003290355A8 (en) 2005-01-04
RU2006100297A (ru) 2006-06-10
WO2004111837A3 (en) 2007-03-29
AU2003290355A1 (en) 2005-01-04
US20040255094A1 (en) 2004-12-16
GB0313510D0 (en) 2003-07-16
CN1788252A (zh) 2006-06-14
JP3917636B2 (ja) 2007-05-23
EP1631903B1 (en) 2012-12-19
JP2006527419A (ja) 2006-11-30
GB2402757A (en) 2004-12-15
EP1631903B8 (en) 2013-03-06
GB2402757B (en) 2005-11-02

Similar Documents

Publication Publication Date Title
CN100541422C (zh) 用于执行具有取整和移位的组合型高位乘法的方法和装置
CN110140109A (zh) 具有嵌入式取整规则的浮点指令格式
CN1658153B (zh) 复合式动态定点数表示法与运算法及其处理器结构
JPS6097435A (ja) 演算処理装置
CN102356378A (zh) 具有隐式混合操作数的数字信号处理引擎
US5465275A (en) Efficient utilization of present state/next state registers
CN104115114A (zh) 经改进的提取指令的装置和方法
US5619514A (en) In-place present state/next state registers
CN100375012C (zh) 用于在数据处理系统内产生地址偏移量的装置和方法
GB2308470A (en) Bit-width reduction of processor instructions
CN101211256A (zh) 一种专用双流水线risc指令系统及其操作方法
CN104081342A (zh) 经改进的插入指令的装置和方法
US7098818B1 (en) Encoder and decoder using run-length-limited code
JP3990423B2 (ja) データアクセスプログラム命令のコード化
WO2016189642A1 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US7827451B2 (en) Method, system and program product for establishing decimal floating point operands for facilitating testing of decimal floating point instructions
US6230238B1 (en) Method and apparatus for accessing misaligned data from memory in an efficient manner
JP6886927B2 (ja) 浮動小数点値の処理のための装置及び方法
CN106940684B (zh) 一种按比特写数据的方法及装置
EP0936537B1 (en) Cyclic redundancy check in a computer system
US20040024992A1 (en) Decoding method for a multi-length-mode instruction set
KR910001708B1 (ko) 중앙처리장치
US6922773B2 (en) System and method for encoding constant operands in a wide issue processor
Dandamudi Guide to Assembly Language Programming in Linux
US6516330B1 (en) Counting set bits in data words

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20080312

CX01 Expiry of patent term