在单指令多数据(simd)数据处理器中提供扩展寻址模式的制作方法

文档序号:6594481阅读:247来源:国知局
专利名称:在单指令多数据(simd)数据处理器中提供扩展寻址模式的制作方法
技术领域
本公开总体上涉及数据处理器,并且更具体地,涉及在SIMD寄存器扩展中提供扩 展寻址模式。
背景技术
通过允许对向量的多个元素并行执行操作,可以实现数据处理系统的性能提高。 如今可用的一种处理器是向量处理器,该向量处理器利用向量寄存器来执行向量运算。然 而,与使用标量通用寄存器的处理器相比,向量处理器在允许更高性能的同时还具有增加 的复杂性和成本。也就是说,向量处理器内的向量寄存器文件通常包括N个向量寄存器,其 中,每个向量寄存器包括用于保持M个元素的M寄存器组。另一个公知类型的处理器是单 指令多数据(SIMD)标量处理器(也被称作“短向量机”),其在使用标量通用寄存器(GPR) 的同时允许有限向量处理。因此,尽管与向量处理器相比每次运算的元素的数目是有限的, 但是所需要的硬件减小。SIMD处理器上执行的许多不同的应用需要专用寻址,诸如循环寻址或比特反转寻 址。然而,由于例如大的位移(displacement)而导致加载和存储指令通常需要大量有限的 操作码空间来进行编码。因此,经常没有剩下的操作码空间来支持任何额外的功能。因此, 期望在不增加操作码空间的情况下进行另外的寻址控制的规范。


本发明以示例的方式示出,并且不受附图限制,在附图中,类似的附图标记表示类 似的元素。附图中的元素以简单清晰的方式进行图示,并且不必按比例绘制。图1以框图形式图示了根据本发明的一个形式的SIMD数据处理系统。图2以框图形式图示了根据本发明的形式的图1的SIMD数据处理系统的标量通 用寄存器文件。图3图示了根据本发明的一个实施例的图1的SIMD数据处理系统所执行的索引 形式加载向量指令的一个形式。图4以框图形式图示了根据本发明一个实施例的图2的标量通用寄存器文件的通
用寄存器。图5以框图形式图示了根据本发明一个实施例的图2的标量通用寄存器文件的通
用寄存器。图6以框图形式图示了图1的存储器的一部分以图示循环缓冲器寻址的示例。图7以框图形式图示了根据本发明一个实施例的图2的标量通用寄存器文件的通
用寄存器。图8图示了比特反转寻址的示例。图9图示了可以用于确定比特反转寻址增量的用于不同数据大小和数据数目的 掩码(mask)的示例值的表格。
图10以图表形式图示了根据本发明一个实施例的示例性基地址指针值、示例性 索引值、示例性掩码值和示例性比特反转寻址序列。图11以图表形式图示了存储快速傅立叶变换(FFT)缓冲器的数据元素的图1的 SIMD数据处理系统的存储器的一部分。图12图示了根据本发明一个实施例的由图1的SIMD数据处理系统执行的位移形 式加载向量指令的一个形式。图13图示了由图1的处理器执行的现有技术的非SIMD索引形式加载指令的一个 形式。
具体实施例方式在一个实施例中,提供了支持使用不同寻址模式的SIMD数据处理指令。例如,在 一个实施例中,索引形式向量加载或存储指令指定两个源通用寄存器,其中,一个源通用寄 存器(GPR)的主部分用于提供基地址,并且另一源GI^R的主部分用于提供索引值(S卩,偏移 值)。提供基地址的源GPR或提供索引值的源GPR的扩展部分用于提供额外的寻址控制信 息,该信息允许向量加载或存储指令的增加的功能。在一个实施例中,位移形式向量加载或 存储指令指定一个源GPR,其中,该一个源GPR的主部分用于提供基地址,并且该一个源的 扩展部分用于提供额外的寻址控制信息。以该方式,在不增加操作码大小的情况下,可以增 加寻址模式的功能性。如本文所使用的,术语“总线”用于表示可以用于传送一个或多个各种信息(诸 如,数据、地址、控制或状态)的多个信号或导体。可以关于作为单个导体、多个导体、单向 导体或双向导体来图示或描述本文所讨论的导体。然而,不同实施例可以改变导体实现方 式。例如,可以使用单独的单向导体而非双向导体,并且反之亦然。而且,可以用串行或者 以时分多路复用方式传送多个信号的单个导体来替代多个导体。同样,承载多个信号的单 个导体可以被分成承载这些信号子集的各种不同导体。因此,存在很多选择来传送信号。当涉及将信号、状态比特或类似装置分别呈现为其逻辑真或逻辑假状态时,这里 使用术语“断言”或“设置”和“否定”(或“取消断言”或“清除(clear)”)。如果逻辑真状 态是逻辑电平1,则逻辑假状态是逻辑电平0。而且,如果逻辑真状态是逻辑电平0,则逻辑 假状态是逻辑电平1。本文所描述的每个信号可以被设计为正逻辑或负逻辑,其中,负逻辑可以用信号 名称上面的横表明或者用名称后的星号(*)来指示。在负逻辑信号的情况下,信号是低电 平有效的,其中,逻辑真状态与逻辑电平0相对应。在正逻辑信号的情况下,信号是高电平 有效的,其中,逻辑真状态与逻辑电平1相对应。应当注意,本文描述的任何信号都可以被 设计为负逻辑信号或正逻辑信号。因此,在替代实施例中,描述为正逻辑信号的那些信号可 以被实现为负逻辑信号,并且描述为负逻辑信号的那些信号可以被实现为正逻辑信号。另外,如本文所使用的,字(W)包括4个字节,半字(h)包括2个字节,并且双字 (d)包括8个字节。然而,在替代实施例中,字可以被定义为2个字节,并且双字可以被定义 为4个字节。数字之前的符号“$”或“Ox”指示该数字是以其十六进制或基数十六形式表 示的。数字之前的符号“%”指示该数字是以其二进制或基数二形式表示的。图1以框图形式图示根据本发明一个实施例的数据处理系统10。由于数据处理系统10能够执行SIMD指令,因此系统10还可以被称作SIMD数据处理系统。数据处理系 统10包括存储器12、处理器14、输入/输出(I/O) 16、其它外围装置18和系统总线20。存 储器12经由导体22被双向耦合到系统总线20,I/O 16经由导体M被双向耦合到系统总 线20,其它外围装置18经由导体沈被双向耦合到系统总线20,并且处理器14经由导体58 被双向耦合到系统总线20。在一个实施例中,其它外围装置18可以包括一个或多个外围 装置,其中,每一个都可以是任何类型的外围装置,诸如通用异步收发机(UART)、实时时钟 (RTC)、键盘控制器、其它存储器等。一些或所有的其它外围装置18能够经由导体62传送 数据处理系统10外部的信息。I/O 16可以包括任何类型的I/O电路,该I/O电路经由例 如导体60来接收或提供数据处理系统10外部的信息。存储器12可以是任何类型的存储 器,例如,只读存储器(ROM)、随机存取存储器(RAM)、非易失性存储器(例如,闪速存储器) 等。数据处理系统10可以包括不同于所示那些的元件,或者可以包括比所示元件更多或更 少的元件。例如,数据处理系统10可以包括任何数目的存储器或处理器。处理器14可以是任何类型的处理器,例如,微处理器、微控制器、数字信号处理器 等。在一个实施例中,处理器14可以被称作处理器核心。在另一个实施例中,处理器14可 以是多处理器数据处理系统中的很多处理器中的一个。此外,虽然没有如此示出,但是处理 器14可以是流水线型处理器(pipelined processor)。应当注意,处理器14还可以被称作 SIMD处理器。在图1所示的实施例中,处理器14包括控制单元观、指令单元30、执行单元 32、标量通用寄存器(GPR)文件34、总线接口单元(BIU) 36和加载/存储单元38。控制单 元观经由导体40被双向耦合到指令单元30,经由导体42双向耦合到执行单元32,经由导 体46双向耦合到标量文件34,并且经由导体48双向耦合到加载/存储单元38。执行单元 32经由导体44被双向耦合到标量寄存器文件34,并且标量寄存器文件34经由导体50被 双向耦合到加载/存储单元38。BIU 36经由导体M被双向耦合到指令单元30,并且经由 导体52被双向耦合到加载/存储单元38。处理器14能够经由耦合到导体58的导体56与 系统总线20进行双向通信。应当注意,处理器14可以包括比所示电路更多的电路,其中, 额外的电路也可以被耦合到导体58。也就是说,导体56可以经由所有或一部分导体58与 系统总线20进行通信。还应当注意,所有或一部分处理器14可以被称作处理电路。在操作中,指令单元30经由BIU 36和系统总线20从诸如存储器12的存储器获 取指令,并且从控制单元观接收控制信息并且对控制单元观提供控制信息。指令单元30 可以是本领域中公知的任何类型的指令单元,并且如本领域公知地进行操作,并且因此将 不在本文中更详细地描述。因此,指令单元30对控制单元观提供指令,控制单元观经由 例如执行单元32和加载/存储单元38来控制接收到的这些指令的执行,执行单元32和加 载/存储单元38都能够按需要直接地或者经由控制单元观与标量寄存器文件34进行通 信。例如,控制单元观经由加载/存储单元38和BIU 36能够按需要将数据从存储器(诸 如存储器12)加载到标量寄存器文件34内的寄存器以执行指令,并且能够按需要将来自标 量寄存器文件34内寄存器的数据存储到存储器(例如,存储器12)以执行指令。例如,在 一个实施例中,加载/存储单元38可以基于经由导体48从控制单元观提供的控制信息, 经由导体50与标量寄存器文件34直接进行通信(以读取和写入数据)。执行单元32可 以使用存储在标量寄存器文件;34内的数据来执行算术运算、逻辑运算、移位运算或其它运 算,并且按需要将结果存储到标量寄存器文件;34内的寄存器,以通过控制单元观执行从指令单元30接收到的指令。执行单元32可以包括例如算术逻辑单元(ALU)、浮点单元等。标 量寄存器文件34可以经由导体46向控制单元观提供控制信息或数据,或者从控制单元观 接收控制信息或数据。除了理解本文描述的各种实施例所需的那些部分之外,在本文中将不再更详细地 描述处理器14的操作。还应当注意,将操作数存储在标量通用寄存器文件中的数据处理系 统的现有设计可以按需要被改进成执行向量加载和存储指令。图2中图示了标量通用寄存器文件34的框图。在所示实施例中,标量寄存器文件 34包括32个通用寄存器(GPR)。然而,在替代实施例中,标量寄存器文件可以包括任何数 目的GPR。如本文所使用的,标量寄存器指示寄存器具有一维映射,并且因此仅保持一行数 据。标量寄存器文件;34中的每个GPR包括主部分(包括每个GPR的N个低比特)和SIMD 扩展部分(包括每个GPR的M个高比特)。在所示实施例中,N为32个比特,并且M为32 个比特,使得每个GI5R是能够存储用于SIMD运算的64个比特量的64比特寄存器。在本文 所述的实施例中,标量寄存器文件34中的每个GPR包括8个字节,其中,当用于SIMD运算 时,每个GI^R可以存储例如2个字大小的向量元素、4个半字大小的向量元素或者8个字节 大小的向量元素。在所示实施例中,GPR文件34的主部分用于非SIMD运算,在非SIMD运算中,当执 行非SIMD指令时或者当形成用于加载和存储指令(包括向量加载和向量存储指令)的有 效地址(EA)值时,没有使用GI5R文件34的SIMD扩展部分。另外,当执行非SIMD运算时, 保持存储在GI^R的扩展部分中的任何值。在一个实施例中,通过处理器14的架构确定主部 分的比特数目N。例如,处理器14被视为N比特处理器。N比特处理器是指其原本(例如, 非扩展的)整数数据类型为N个比特。通常,N比特处理器中的指针为N个比特;因此,(存 储在GPR的主部分内)指针值能够访问2N个字节。也就是说,N比特处理器具有N比特地 址空间。因此,在一个实施例中,GPR的主部分的比特数目N由处理器的类型或处理器的指 令集架构来确定。GI^R的扩展部分的比特数目M因此扩展超过N个比特。在所示实施例中, 假设处理器14是32比特处理器(其原本非扩展的整数数据类型为32个比特并且其指针 值为32个比特)。因此,GPR的主部分是32个比特(S卩,N = 32)。在所示实施例中,GPR 的主部分与寄存器文件34的低部分(例如,较低一半)(即,每个GPR的比特32:63)相对 应。在所示实施例中,扩展部分也为32个比特(即,M = 32),并且与寄存器文件34的高部 分(例如,较高一半)(即,每个GPR的比特0:31)相对应。替代地,只要主部分包括N个比 特并且扩展部分包括M个比特(超过N个比特),使得每个GPR (或用于SIMD运算的GPR子 集)包括N+M个比特,就可以不同地组织标量GI3R文件34。例如,主部分可以与寄存器文件 34的高部分相对应,并且扩展部分可以与其低部分相对应。替代实施例的M和N可以具有 不同的值,诸如,N = 32且M = 96,其中,SIMD向量的宽度对应地大于这样的实施例的原本 的整数数据类型,并且因此支持较大的SIMD向量长度,同时保持处理器的基数N比特架构。在图2所示的实施例中,寄存器文件34的扩展部分被打了阴影,并且因为扩展部 分仅用于SIMD运算,所以被称为SIMD扩展部分。在可选实施例中,其它专用功能可以使用 扩展部分,诸如双精度浮点值。然而,在一个实施例中,扩展部分不用于处理器14内的非 SIMD整数运算。另外,应当注意,每个寄存器的扩展部分不能独立于每个寄存器的主部分 来访问或寻址。也就是说,例如,因为扩展部分只是r0的N比特主部分的M比特扩展,所以r0的扩展部分仅能通过访问rO来访问,并且不能独立于rO的主部分来寻址。对于图2中 所示的GPRrl-r31的扩展部分和主部分的每一个也是如此。图13中图示了根据现有技术的索引形式非SIMD( S卩,标量)整数加载指令 (lwz [u] χ)的一个实施例。如图13中所示,lwz[u]X是32比特指令,其指示目的寄存器rD 和两个源寄存器rA和rB。lwz [u] χ指令允许指定更新值⑶来指示要执行具有索引而不 具有更新的加载或者具有索引和更新的加载。在U =I(Iwzux)的情况下,作为指令操作 的一部分,将对rA执行更新。在U = O(Iwzx)的情况下,不对rA执行更新。lwz[U]X指令 包括用于标识指令的功能或类型的操作码字段(比特0:5)。指令内的目的地字段(比特 6:10)是标有“rD”的目的地寄存器标识符,其标识标量寄存器文件34内的寄存器D。指令 内的第一源字段(比特11:15)是标有“rA”的源寄存器标识符,其标识标量寄存器文件34 内的寄存器A,并且指令内的第二源字段(比特16:20)是标有“rB”的源寄存器标识,其标 示标量寄存器文件34内的寄存器B。指令还包括可以用于进一步指定指令功能的子操作码 (subopcode)字段(比特21:31)。应当注意,在所示实施例中,包括U作为指令的子操作码 内的比特(在所示实施例中,在比特位置25处)。lwz [U] χ指令将来自存储器的32比特整数字加载到目的寄存器的主部分。因此, 在处理器14是32比特处理器的所示实施例中,lwz[u]x指令可以用于将32比特整数字加 载到目的寄存器的主部分中。由于这是常规(非SIMD)整数加载指令,因此数据寄存器的仅 SIMD部分不受影响。指令的操作等同于没有SIMD能力的ISA兼容处理器的指令操作。在 执行lwz [u] χ指令之后,使用rA的主部分(存储基地址值)的内容和rB的主部分(存储索 引值)的内容来计算有效地址(例如,EAW:31])。然后,将位于存储器12中的由EAW:31] 指向的存储器位置处的32比特字加载到rD的主(整数)部分中。也就是说,存储器12中 由EA指向的字被加载到rD [32:63]。如果U = 0 ( S卩,Iwzx指令),则对rA不执行更新。然 而,如果U = 1(即,lwzux指令),则除了用存储器数据更新rD的加载操作之外,还要对rA 执行更新。也就是说,可以使用正常加载指令的更新形式,以便于用新的基数值来更新rA 的基数值,该新的基数值等于用于加载操作的计算的EAW:31],该计算的EAW:31]用于使 用更新的基数值的后续加载指令。因此,通过将加载操作与地址操作数更新操作组合成单 个指令,更新形式指令提供附加的并行性。应当注意,对于正常整数加载指令,既不使用也 不更新寄存器rA、rB和rD的扩展部分(仅SIMD部分)。类似地,应当注意,对应的正常(非SIMD,标量)整数存储指令(stw[U] χ rS、rA、 rB)类似于加载指令。stw[u]X指令将来自由rS指示的GPR的整数字存储在存储器中由 EA指向的位置(其中,使用存储基地址值的rA的内容和存储索引值的rB的内容来计算 EA
)o如加载指令一样,如果U = 0(即,stwx指令),则不对rA执行更新。然而,如 果U = 1 (即,stwux指令),则通过用计算的EA W 31]更新rA的主部分来对rA执行更新。 应当注意,对于整数存储指令,既不使用也不更新寄存器rA、rB和rS的扩展部分(仅SIMD 部分)。图3中图示了根据本发明一个实施例的索引形式向量(SIMD)加载指令(evldh[U] x)的一个实施例。在图示的实施例中,evldh[U]X是32比特指令,其指示目的地寄存器rD 和两个源寄存器rA和rB。evldh[u]χ指令允许指定更新值⑶以指示将执行具有索引而 不具有更新的加载还是具有索引和更新的加载。在U= l(evldhUX)的情况下,作为指令操作的一部分,将对rA执行更新,这将在以下更详细地描述。在U = 0(evldhX)的情况下,不 对rA执行更新。evldh[U]X指令包括操作码字段(比特0 5),以标识指令的功能或类型。 指令内的目的地字段(比特6:10)是标有“rD”的目的地寄存器标识符,其标识标量寄存器 文件34内的寄存器D。指令内的第一源字段(比特11:15)是标有“rA”的源寄存器标识 符,其标示标量寄存器文件;34内的寄存器A,并且指令内的第二源字段(比特16:20)是标 有“rB”的源寄存器标识符,其标示标量寄存器文件34内的寄存器B。指令还包括可以用于 进一步指定指令功能的子操作码字段(比特21:31)。应当注意,在图示的实施例中,包括U 作为指令子操作码内的比特(在所示实施例中,在比特位置25处)。然而,在替代实施例 中,是否进行更新的指示可以被设置为指令内的不同操作码或者不同比特。替代地,可以实 现其它比特长度指令,并且每个指令字段的比特大小是实现方式特定的。然而,如以上所讨 论的,应当注意,在很多指令集架构中,操作码和子操作码空间是有限的,并且因此不能得 到额外的指令比特长度。而且,在其它实施例中,可以实现额外的字段或其它字段。此外, 可以将字段rD、rA和rB的排序改变成与如图3中所示的顺序不同的顺序。evldh [u] χ指令将双字从存储器加载到目的地寄存器的四个半字。因此,在处理器 14是32比特处理器的所示实施例中,evldh[U]X指令可以用于将4个16比特向量元素加 载到SIMD目的地寄存器中。在执行evldh[U]X指令后,使用rA(存储基地址值)的内容和 rB(存储索引值)的内容来计算有效地址(例如,EAW:31])。(应当注意,如果rB中的索 引值为0,则rA中的基地址值可以直接用作EA。)然后,将位于存储器12中的由EAW:31] 指向的存储器位置的双字加载到rD的合并的扩展部分和主部分中。也就是说,存储器12中 由EA指向的半字被加载到rD
,存储器12中由EA+2指向的半字被加载到rD [16 31], 并且存储器12中由EA+4指向的半字被加载到rD[32:47]并且存储器12中由EA+6指向的 半字被加载到rD[48:63]。(应当注意,如以下将参考循环缓冲器寻址示例所讨论的,用于 将4个向量元素加载到rD中的这些EA中的任一个都可以在循环缓冲器的长度界线处回 绕。)。如果U = 0(即,evldhx指令),则对rA不执行更新。然而,如果U = 1 (即,evldhux 指令),则除了用存储器数据更新rD (主部分和扩展部分)的全部内容的加载操作之外,还 使用rA或rB的扩展部分来确定如何对rA执行更新。也就是说,可以使用rA或rB的扩展 部分来进一步提供控制信息,该控制信息定义如何对rA进行更新以实现不同的寻址方案, 诸如线性寻址、具有回绕的循环缓冲器寻址或比特反转寻址。在一个实施例中,rA的更新 值基于rA的先前值,其中,这可以通过修改基地址或EA来实现。可以选择SIMD加载指令 的更新形式,以便于用新的基址值更新rA的基址值,以使用更新的基址值用于后续的加载 指令。因此,通过将加载操作与地址操作数更新操作组合成单个SIMD指令,更新形式指令 可以提供附加的并行性。类似地,应当注意,对应的SIMD存储指令(evstdh[u]x rS、rA、rB)类似于SIMD 加载指令进行操作。eVStdh[U]x指令将来自由rS指示的GPR的4个半字存储到存储器中 由EA指向的位置(其中,使用存储基地址值的rA的内容和存储索引值的rB的内容来计算 EA
)o (应当注意,如果rB中的索引值为0,则rA中的基地址值可以直接用作EA。) 如SIMD加载指令,如果U = 0(即,evstdhx指令),则不对rA执行更新。然而,如果U = 1 (即,evstdhux指令),则使用rA或rB的扩展部分来确定如何对rA执行更新。也就是说, 可以使用rA或rB的扩展部分来进一步提供控制信息(即,修改信息),该控制信息定义如何对rA进行更新,以便于在执行SIMD加载或存储指令时实现不同的寻址技术,例如,具有 回绕的循环缓冲器寻址或比特反转寻址。因此,随后关于计算EA和使用扩展部分进一步定 义当U = 1时将如何执行更新的描述适用于索引形式SIMD加载和索引形式SIMD存储指令。 然而,为了便于说明,本文中的很多示例与对应于SIMD加载指令相对应。另外,应当注意, 除了半字,可以在SIMD加载或存储指令中定义任何元素大小。例如,本文中提供的描述还 可以类似地分别适用于从存储器加载8个字节或者将8个字节存储到存储器的evldb[U]X 或evstdb [u] χ。该描述还可以类似地适用于从存储器加载2个字或者将2个字存储到存储 器的 evldw[u]x 或 evstdw[u]x。图4图示了根据本发明一个实例的GPR的扩展部分和主部分。GPR的主部分(比 特32:63)存储地址操作数(例如,基地址或索引值)。因此,这可以与rA指定的GPR的主 部分(存储基地址作为地址操作数)或rB指定的GPR的主部分(存储索引值作为地址操 作数)相对应。扩展部分(比特0:31)包括模式字段和地址更新控制字段。在图示的实 施例中,模式字段是位于比特0 2中的3比特字段,地址更新控制字段是位于GPR的比特 3:31中的四比特字段。模式字段可以用于定义对于SIMD加载或存储指令要执行何种类型 的地址更新,并且地址更新控制字段可以提供额外的控制信息(如果需要的话)以进行更 新。在一个实施例中,如果模式字段的值为% 000,则指示如执行具有更新的正常整数加载 和存储指令时(以上参考图13讨论的)执行的正常更新操作,其中,将计算的EAW:31]存 储到rA的主部分(rA[32:63])中。如果模式字段的值为% 001,则执行循环缓冲器寻址更 新,其中,用要访问的下一循环缓冲器元素的地址值来更新rA的主部分(rA [32 63])。存储 在地址更新控制字段中的额外信息用于执行该更新,如以下将参考图5和图6更详细描述 的。如果模式字段的值为% 010,则执行比特反转地址更新,其中,用根据比特反转寻址(例 如,用于访问存储FFT数据的缓冲器)访问的下一缓冲器元素的地址值来更新rA的主部分 (rA[32:63])。使用存储在地址更新控制字段中的额外信息来执行该更新,如以下将参考图 7至图11更详细描述的。因此,如果对于SIMD加载或存储指令U= 1,则使用rA或rB的 扩展部分的模式字段值来指示将如何执行rA的主部分的更新,其中,地址更新控制字段按 需要用于执行这些更新。应当注意,如果U = 0,则不访问扩展部分。而且应当注意,对于 具有更新的正常整数加载或存储指令不访问扩展部分,不论这些指令对应的U比特的值如 何。在随后的示例中,将假设对于SIMD加载和存储指令,如果U = 1,则将访问rA的 扩展部分来确定如何执行rA的主部分的地址更新。(替代地,应当注意,如果U= 1,处理 器14被设计为使得访问rB的扩展部分而不是rA的扩展部分来确定如何执行rA的主部分 的地址更新。)应当注意,通过使用扩展部分,不需要单独寻址或访问单独的GI^R或地址位 置,来提供诸如模式或地址更新控制信息的额外信息。另外,因为指令已经指示rA用于提 供基地址值的目的,不需要指令内的额外字段。然而,由于仅需要rA的主部分来访问基地 址值,因此可以使用扩展部分来提供额外信息。应当注意,不论U或模式字段的值如何,对 向量加载或存储指令的有效地址计算保持不变。也就是说,通过将rA(rA[32:63])的内容 添加到rB (rB [32 63])的内容来计算evldh [u] χ或evstdh [u] χ的EA。也就是说,EA
= “rA的内容+rB的内容”。而且,应当注意,在其中假设处理器14是32比特处理器的图 示的示例中,EA是32比特值。由于EA提供数据将被存储在其中或将从其加载数据的存储器地址,因此EA还可以被称作存储器访问地址。图5中图示了可以用于执行evldh[U]X指令(或evstdh[u]χ指令)以实现循环 缓冲器寻址的rA的主部分和扩展部分的示例。如以上所讨论的rA的主部分包括作为存储 器操作数的基地址。rA的扩展部分内的模式字段是% 001,指示循环缓冲器寻址技术,并且 地址更新控制字段包括用于实现循环缓冲器寻址的额外信息。在所示实施例中,地址更新 控制字段包括比特3:7中的5比特模(Mod)字段、比特8:16中的8比特偏移(0)字段和比 特16:31中的16比特长度(L)字段。应当注意,替代实施例可以不同地组织rA的扩展部 分内的信息,或者可以包括其它类型的信息作为地址更新控制字段中的任何修改信息的补 充或替代。L字段提供循环缓冲器中的元素数目。0字段提供与用于更新计算的下一元素 的距离。模字段指示存储器中循环缓冲器的起始地址对准存储器中的2M°d字节界线。应当 注意,模字段还定义循环缓冲器所允许的最大长度。如以下将看到,这允许更快速的回绕计 笪弁。图6图示了存储循环缓冲器的存储器12的一部分。(应当注意,图6的循环缓冲 器可以被称作数据结构,并且可以在被访问之前在存储器12内形成。)图6中的循环缓冲 器的起始地址(即,基地址)被设置为% 10000。循环缓冲器的长度为11 (指示11个字 节),并且偏移(即,访问的元素之间的距离)为4个字节。因此,应当注意,缓冲器元素被 编号为1-11,指示将根据% 10000的基地址和4的偏移值访问这些缓冲器元素的顺序。也 就是说,首先,访问位置% 10000,之后是位置% 10100,之后是位置% 11000,之后是位置% 10001(包括回绕),之后是位置% 10101,之后是位置% 11001,之后是位置% 10010(再 次包括回绕),之后是位置% 10110,之后是位置% 11010,之后是位置% 10011(也包括回 绕),之后是位置% 10111等。因此,在执行其中模式字段为% 001,基地址为% 10000(在该实例中,假设索引值 为0)并且偏移=4的evldhux指令(U = 1)之后,rD被加载有通过% 10000寻址的存储 器位置的内容。而且,作为执行evldhux的一部分,rA的主部分将被更新为% 10100,使得 不需要单独的指令来将循环缓冲器的访问点推进至距离4个字节的下一元素。(这时,可 以使用rD中的结果来执行一个或多个额外指令。)还应当注意,仅更新rA的主部分,而rA 的扩展部分(包括模式字段和地址更新字段)保持不变。因此,在执行了后续的evldhux 指令之后,使用rA的更新版本,用通过% 10100寻址的存储器位置的内容来更新rD,并且 rA的主部分被再次从% 10100更新成% 11000。由于没有更新rA的扩展部分,因此长度仍 然被设置为11并且偏移被设置为4。在执行后续的evldhux指令之后,4加% 11000(是% 11110)将导致超过缓冲器的最后一个元素(% 11010)的地址。这可以使用地址的最低有效 4个比特来确定,因为对于该示例,已知循环缓冲器的起始地址对准% 10000 (2Mod = 24=% 10000)并且长度为11。在该情况下,可以从地址中减去缓冲器的长度来得到下一元素地 址% 10001。然而,由于已知的是缓冲器地址的起始元素为% 10000(由于模值,例如2M°d = 24=% 10000而导致其对准16字节界线),因此可以使用模值来确定起始缓冲器地址的哪 个部分将在回绕时更新。也就是说,就回绕而言,rA[ (64-模)63] = (rA[48:63]+Offset) [(64-模)63],其中,在更新时仅修改比特(64-模)63。因此,用通过% 11000寻址的存储 器位置的内容更新rD,并且将rA的主部分从% 11000更新成% 10001 (由于回绕而并非% 11110)。应当注意,模值还将缓冲器的最大索引设置为2(M°d)-l。也就是说,为了使用模值来执行回绕计算,最后循环缓冲器元素的位置不能超过% 11111。图7中图示了可以用于执行evldh[u]X指令(或eVStdh[u]x指令)以实现比特 反转寻址的rA的主部分和扩展部分的示例。如以上所讨论的rA的主部分包括作为存储器 操作数的基地址。rA的扩展部分内的模式字段是% 010,指示比特反转寻址技术,并且地址 更新控制字段包括用于实现比特反转寻址的额外信息。在图示的实施例中,地址更新控制 字段包括比特16:31中的16比特掩码字段。应当注意,替代实施例可以不同地组织rA的 扩展部分内的信息,或者可以包括其它类型的信息作为地址更新控制字段中的任何修改信 息的补充或替代。掩码字段提供用于执行比特反转递增的掩码值。很多类型的滤波算法利用缓冲器来保持输入样本和根据滤波运算集(例如,FFT 滤波器)计算的输出样本的集合。这些滤波器通常以比特反转方式来被访问,以获得数据 并且以预定顺序存储输出,该预定顺序与原本的计算顺序相对应。例如,对于具有以线性顺 序存储的元素0、1、2、3、4、5、6和7的8元素FFT缓冲器,它们需要以其访问的比特反转顺 序为元素0、4、2、6、1、5、3和7。图8图示了例如当从存储在存储器12中的缓冲器访问FFT 数据元素时,在以比特反转方式访问数据元素时可以使用的比特反转寻址的示例。在图8 的示例中,假设8个数据元素(元素0-7)以线性顺序存储。这些元素中的每一个可以通 过表示0到7的3比特二进制地址来寻址。这些二进制值,% 000、% 001、% 010、% 011、% 100, % IOU % 110和% 111,分别与元素0-7中的每一个相对应。然后,这些二 进制值被“比特反转”,得到每个3比特二进制值的镜像。在比特反转这些二进制值的每一 个之后,比特反转的元素导致以元素0、元素4、元素2、元素6、元素1、元素5、元素3和元素 7的比特反转顺序来分别寻址元素0-7。应当注意,为了便于解释,本文将描述的示例假设 以比特反转的方式访问8个数据元素的缓冲器;然而,在替代实施例中,可以以比特反转的 顺序来寻址任何数目的数据元素的缓冲器。基于缓冲器中的数据元素或样本的数目(例如,FFT中的点的数目)以及样本的数 据大小的掩码值用于确定要以比特反转方式访问的下一个元素。可以使用公知的方法,使 用掩码值来确定要以比特反转方式访问的下一元素。图9图示了基于数据样本的数目和数 据样本的大小来提供各种掩码值的表的示例。为了访问包含要通过比特反转寻址访问的η 字节大小的数据元素的缓冲器,掩码值在最低有效比特的位置中具有Iog2Ii个一(1),并且 剩余的最高有效比特位置为0。然而,如果数据大小为半字或字的倍数,则构成掩码,使得1 向左移10 (数据的字节大小),并且0被置于最低有效比特的位置。应当注意,对于表的 每行,在掩码值从字节列前进至双字节列时,掩码值每次向左移动1比特。而且,应当注意, 对于表的每列,在掩码值从8个元素的大小前进至64个元素的大小时,掩码值将额外的较 低顺序比特设置为“1”。图9的表可以被扩展为包括通常为2的幂的较大缓冲器大小,并且 也可以包括较大数据大小。图9的表可以被存储在图1的控制单元观内,或者可以被存储 在系统10中其它地方。图9的表可以被存储为值的表,或者可以用逻辑门来实现。替代实 施例可以以各种不同的方式存储或接收图9的表的信息。图10图示了可以使用evldh[U]X指令来访问图11的示例性缓冲器来实现的比特 反转寻址序列。在图11的示例中,缓冲器存储8个数据元素,其中,每个数据元素的大小为 半字。(应当注意,图11的缓冲器可以用于FFT应用,并且还可以被称作FFT样本缓冲器。 还应当注意,图11的缓冲器可以被称作数据结构,并且可以在被访问之前在存储器12内形成。)例如,图11图示了存储器12的一部分,其存储开始于地址位置OxDCAABCFO的8个 半字大小的数据元素。由于每个元素的大小为半字(例如,16比特),因此接下来的7个元 素(元素 1-元素 7)分别以按地址值 0xDCAABCF2、0xDCAABCF4、0xDCAABCF6、0xDCAABCF8、 OxDCAABCFA、OxDCAABCFC^P OxDCAABCFE的线性顺序进行顺序寻址。(应当注意,这些地址值 的每一个可以被称作指针值。)如果这些元素将以比特反转顺序来访问(如图8中所述), 则这些地址将以下述顺序来访问0xDCAABCF0 (与元素0相对应)、0xDCAABCF8 (与元素4 相对应)、0xDCAABCF4 (与元素2相对应)、0xDCAABCFC (与元素6相对应)、0xDCAABCF2 (与 元素1相对应)、0xDCAABCFA (与元素5相对应)、0xDCAABCF6 (与元素3相对应)和 OxDCAABCFE (与元素7相对应)。因此,在图10中的比特反转寻址的示例中,在执行evldh[u]X指令之前,将 OxDCAABCFO的基地址值(S卩,初始指针值)置于寄存器rA的主部分中,其中,这指向要被访 问的存储器12中的缓冲器的第一元素,元素0。将值0x00000000置于在rB中作为索引值。 而且,对于该示例,因为缓冲器包含8个半字大小的数据元素,所以掩码值(取自图9的表) 是“000. . . 00001110”。与OxOOOE相对应的该掩码值被存储在rA的扩展部分中。因此,在执 行了 evldhux指令(其中,U= 1并且模式字段为% 010)之后,EA被计算为OxDCAABCFO (基 地址+索引值),并且rD接收mem[EA]的内容,即,缓冲器的元素0。(应当注意,在该示例 中,由于rB中的索引值为0,因此可以将基地址值直接设置为EA。)而且,由于U= 1并且 模式字段为% 010,因此在执行了 evldhux指令之后,使用rA的扩展部分中的地址更新控制 字段(即,掩码值)来确定如何更新rA的主部分。使用任何公知的方法,将掩码值OxOOOE 用于以比特反转寻址序列计算下一个地址(即,与元素4相对应的OxDCAABCFS)。因此, rA的主部分被更新成OxDCAABCFS的新基地址值。应当注意,仅更新rA的主部分,使得掩 码值和模式字段值保持不变。而且,这时,在随后的数据处理操作中,可以使用rD (元素0) 中的结果来执行一个或多个额外指令。在U = 1并且使用相同的rA和rB的情况下执行 随后的evldhux指令之后,模式值仍然为% 010并且掩码值仍然为OxOOOE。在该情况下, 基址值为OxDCAABCFS,如通过前一个evldhux指令更新。再一次,使用公知方法,掩码值 OxOOOE用于以比特反转寻址序列计算OxDCAABCFS之后的下一个地址(即,与元素2相对应 的0xDCAABCF4)。因此,0xDCAABCF4的内容,元素2,被加载到rD,并且rA的主部分被更新 成0xDCAABCF4。以该方式,可以使用一系列evldhux指令以比特反转顺序来访问图11的缓 冲器的缓冲器元素,其中,rA的主部分可以被更新为按照比特反转寻址序列反映下一个地 址(由于U = 1)。应当注意,以上的循环缓冲器寻址示例和比特反转寻址示例是参考从存储器加载 元素来描述的;然而,以上方法还适用于将元素存储到存储器,其中,当在eVStdh[U]x指令 中U = 1并且模式=<% 001或% 010时,可以如上所述针对每个寻址方案更新rA的主部分, 以指向将存储数据元素的下一个地址位置。图12中图示了位移形式向量加载指令(evldh[U])的一个实施例。在图示的实施 例中,evldh[U]是32比特指令,其指示目的地寄存器(rD)、一个源寄存器(rA)和提供位移 值的中间值字段。evldh[u]指令允许指定更新值(U)来指示执行具有位移的加载还是具有 位移和更新的加载。在U= Kevldhu)的情况下,rA的更新作为指令操作的一部分来执行。 在U = O(evldh)情况下,不对rA执行更新。evldh[U]指令包括用于标识指令的功能或类
14型的操作码字段(比特0:5)。指令内的目的地字段(比特6:10)是标有“rD”的目的地寄 存器标识符,其标识标量寄存器文件34内的寄存器D。指令内的源字段(比特11:1 是标 有“rA”的源寄存器标识符,其标识标量寄存器文件34内的寄存器A。指令内的无符号中间 字段(UIMM,比特16:20)是提供位移值的中间值。指令还包括可以用于进一步指定指令功 能性的子操作码字段(比特21:31)。应当注意,在图示的实施例中,包括U作为指令子操作 码内的比特(在所示实施例中,在比特位置25处)。然而,在替代实施例中,是否进行更新 的指示可以被设置为指令内的不同操作码或者不同比特。替代地,可以实现其它比特长度 指令,并且每个指令字段的比特大小是实现方式特定的。然而,如以上所讨论的,应当注意, 在很多指令集架构中,操作码和子操作码空间是有限的,并且因此,不能得到额外的指令比 特长度。而且,在其它实施例中,可以实现额外的字段或其它字段。另外,可以将rD字段、 rA字段和中间字段的排序改变成与如图12中所示的序列不同的其它序列。evldh[u]指令(evldh[u]rD、rA、UMM)类似于 evldh[u]x 指令;然而,不同于提供 存储用于计算EA的索引值的第二源寄存器rB,evldh[u]指令在指令本身内提供直接用于 计算EA的中间值。类似于evldh[U]X指令,evldh[u]指令将来自存储器的双字加载到目 的地寄存器的四个半字中。因此,在处理器14是32比特处理器的所示实施例中,evldh[U] 指令可以用于将4个16比特向量元素加载到目的地寄存器。然而,在执行evldh[U]指令 之后,将设置在指令的中间字段内的位移值(UIMM)添加到rA(存储基地址值)的内容,以 计算有效地址(例如,EA
)o然后,将位于存储器12中的由EAW:31]指向的存储器 位置的双字加载到rD中。也就是说,将存储器12中由EA指向的半字加载到rD W: 15],将 存储器12中由EA+2指向的半字加载到rD [16 31],将存储器12中由EA+4指向的半字加载 到rD [32 47],并且将存储器12中由EA+6指向的半字加载到rD [48 63]。如果U = 0(即,evldh指令),则不对rA执行更新。然而,如果U = 1 (即,evldhu 指令),则使用rA的扩展部分来确定如何对rA执行更新。在一个实施例中,如果U = 1 (即, evldhu指令),则rA的扩展部分和UIMM都用于确定如何对rA执行更新。例如,在一个实 施例中,如果U = 1并且UIMM不是0,则不论rA的扩展部分中的模式字段值如何,以与具 有位移和更新的正常整数加载中相同的方式(类似于以上参考图13描述的针对通过索引 和更新的正常整数加载所执行的更新),执行正常更新,其中,将EA的值存储到rA的主部 分(rA[32:63])。然而,如果UIMM值=0并且U = 1,则指示更新形式,但是通常,因为将为 0的UMM值与rA的当前值相加将不会使rA的值改变,所以rA的值不会发生改变。因此, 在一个实施例中,指令的U = 0、UMM = 0以及U = 1,UMM = 0变量产生相同的结果。这 提供机会来使用这样的指令编码以指示诸如例如在rA的扩展部分中,额外更新控制值将 用于SIMD加载或存储指令。因此,如果U= 1,UIMM = 0并且rA的扩展部分中的模式字段 值为% 000,则执行正常更新,其中,将EA的值存储到rA的主部分(rA[32:63])中。然而, 如果U = 1,UMM = 0并且rA的扩展部分中的模式字段值为% 001或% 010,则对rA的主 部分执行分别如上所述的循环缓冲器寻址更新或比特反转寻址更新。也就是说,在这些情 况(其中,模式字段为% 001或% 010)下,rA的扩展部分用于进一步提供控制信息(例 如,地址更新控制字段),该控制信息定义如何对rA更新以实现不同的寻址方案,诸如具有 回绕的循环缓冲器寻址或比特反转寻址。因此,以上参考图4至图11提供的描述也适用于 evldh[u]指令,其中,rA的扩展部分用于提供关于如何更新rA的主部分的额外修改信息。
类似地,应当注意,对应的存储指令(eVStdh[u]x rS、rA、UIMM)类似于加载指令 进行操作。eVStdh[u]指令将来自由rS指示的GI5R的四个半字存储到存储器中由EA指向 的位置(其中,使用存储基地址值的rA的内容和位移值UMM来计算EAW:31])。如加载 指令,如果U = 0(即,evstdh指令),则不对rA执行更新。然而,如果U = 1(即,evstdhu 指令),则可以使用rA的扩展部分和UIMM的值来确定如何对rA执行更新。也就是说,当在 指令中指示UIMM = 0的值时,可以使用rA的扩展部分来进一步提供控制信息(即,修改信 息),该控制信息定义如何对rA执行更新,以便于实现不同的寻址技术,诸如具有回绕的循 环缓冲器寻址或比特反转寻址。因此,以上提供的关于计算EA以及当U = 1时使用UMM 和扩展部分来确定如何执行更新的描述适用于位移形式加载指令和位移形式存储指令。而 且,应当注意,除了半字,可以在加载或存储指令中定义任何元素大小。例如,本文中提供 的描述还可以分别类似地适用于从存储器加载8个字节或者将8个字节存储到存储器的 evldb[u]或eVStdb[u]。该描述还可以类似地适用于分别从存储器加载2个字或者将2个 字存储到存储器的evldw[u]或eVStdw[u]。到现在为止,应当理解,已经提供了用于数据处理系统的数据处理指令,其能够使 用其源寄存器中的一个的扩展部分来提供关于如何修改其源寄存器中的一个的主部分的 额外信息。以该方式,额外操作码空间不是必要的。此外,在一个实施例中,可以使用这些 指令内的一个或多个比特(例如,U比特)来确定是否要对源寄存器中的一个的主部分执 行更新,以及是否要在计算新的更新值时使用扩展部分中的地址更新控制信息。在另一个 实施例中,可以使用指令内的位移字段的值来确定是否要在计算新的更新值时使用扩展部 分中的地址更新控制信息。应当注意,如以上所讨论的,可以用于实现循环缓冲器寻址或比特反转寻址的处 理器14内的电路可以位于控制单元观内或者位于执行单元32内。可以使用公知电路来 实现以上关于根据循环缓冲器寻址技术或比特反转寻址技术来确定下一个地址描述的功 能性。应当注意,可以以类似于循环寻址或比特反转寻址的所示技术的方式来通过替代模 式编码指示额外的或替代的寻址模式或类型。因为实现本发明的装置主要由本领域技术人员公知的电子组件和电路构成,所以 为了理解和了解本发明的基本原理并且为了不模糊或转移本发明的教导,将不以如上所述 的被视为必要的任何更大程度来解释电路细节。如本文所使用的术语“程序”被定义为被设计用于在计算机系统上执行的指令序 列。程序或计算机程序可以包括子程序、函数、程序、对象方法、对象实现、可执行应用、小应 用程序、伺服小程序、源代码、目标代码、共享库/动态加载库和/或被设计用于在计算机系 统上执行的其它指令序列。可应用的一些以上实施例可以使用各种不同的信息处理系统来实现。例如,尽管 图1和其讨论描述了示例性信息处理架构,但是该示例性的架构仅用于在讨论本发明的各 方面中都提供实用的参考。当然,出于讨论的目的,已经简化了对架构的描述,并且这只是 可以根据本发明使用的很多不同类型的适当架构中的一个。本领域的技术人员将认识到, 逻辑框之间的界线仅是说明性的,并且替代实施例可以合并逻辑框或电路元件,或者将功 能的替代分解施加到各种逻辑块或电路元件。因此,应当理解,本文所述的架构仅是示例性的,而事实上,可以实现很多其它架构来实现相同的功能性。抽象地,但是仍然明确的意义上,用于实现相同功能的任何组件布 置都有效地“关联”,使得实现期望的功能。因此,不论架构或中间组件如何,本文中被组合 实现特定功能的任何两个组件可以被视为彼此“关联”,使得实现期望功能。同样地,如此关 联的任何两个组件还可以被视为彼此“可操作地连接”或“可操作地耦合”以实现期望的功 能。另外,例如,在一个实施例中,系统10的所示元件是位于单个集成电路上或者位 于同一设备内的电路。替代地,数据处理系统10可以包括彼此互连的任何数目的单独的集 成电路或单独的设备。例如,存储器12可以位于与处理器14相同的集成电路上,或者位于 单独的集成电路上,或者位于与数据处理系统10的其它元件分离隔开的任何外围装置或 从装置内。外围装置18和I/O电路16还可以位于单独的集成电路或设备上。还应该理解, 本文所述的所有电路可以以硅或另外的半导体材料来实现,或者通过硅或另外的半导体材 料的软件代码表现来实现。这样,可以以任何适当类型的硬件描述语言来实现系统10。软 件代码或硬件描述语言可以在任何类型的计算机可读介质上实现。另外,本领域的技术人员将认识到,上述操作的功能之间的界线仅是说明性的。在 一些示例中,可以将多个操作的功能组合成单个操作,和/或可以在另外的操作中分担单 个操作的功能。此外,替代实施例可以包括特定操作的各种实例,并且在各种其它实施例中 可以改变操作的顺序。本文所述的全部或一些软件可以是系统10的接收元件,例如,其从诸如存储器12 的计算机可读介质或者其它计算机系统上的其它介质进行接收。这样的计算机可读介质可 以永久地、可移动地或者远程地耦合到诸如系统10的信息处理系统。计算机可读介质可以 包括,例如但不限于,任何数目的以下介质磁存储介质,包括磁盘和磁带存储介质;光学 存储介质,诸如压缩盘介质(例如,CD-ROM、CD-R等)和数字视频盘存储介质;非易失性存 储器存储介质,包括基于半导体的存储器单元,诸如FLASH存储器、EEPROM、EPROM、ROM ;铁 磁数字存储器;MRAM ;易失性存储介质,包括寄存器、缓冲器或高速缓冲器存储器、主存储 器、RMA等;以及数据传输介质,包括计算机网络、点对点电信设备和载波传输介质,这只是 列举几项。在一个实施例中,数据处理系统10是诸如个人计算机系统的计算机系统。其它实 施例可以包括不同类型的计算机系统。计算机系统是信息操纵系统,其可以被设计为对一 个或多个用户提供独立的计算能力。可以发现计算机系统具有很多形式,包括但不限于,大 型机、小型计算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电子游戏、汽车和 其它嵌入式系统、手机和各种其它无线设备。典型的计算机系统包括至少一个处理单元、关 联存储器和很多输入/输出(I/O)设备。计算机系统根据程序来处理信息,并且经由I/O设备产生得到的输出信息。程序 是指令列表,诸如特定应用程序和/或操作系统。计算机程序通常被内部地存储在计算机 可读存储介质上,或者经由计算机可读传输介质传送到计算机系统。计算机处理通常包括 执行(运行)程序或部分程序、当前程序值和状态信息以及由操作系统用于管理执行处理 的资源。父进程可能引发其它子进程,以帮助执行父进程的整体功能。因为父进程特定地 引发子进程来执行父进程的整体功能中的一部分,所以子进程(和孙进程等)所执行的功 能有时可以被描述为由父进程来执行。
尽管本文中参考特定实施例描述了本发明,但是在不脱离以下权利要求中阐述的 本发明范围的情况下可以进行各种修改和改变。例如,可以使用不同于十六进制的各种计 数格式。可以使用对数据处理架构的改变。各种公知的数据存储电路中的任何一个可以用 于实现存储器和寄存器。数据总线、寄存器、向量字段和数据操作数的比特大小可以根据应 用而改变。另外,用于预定常数的值可以被改变成具有不同于本文所示值的其它值。任何 类型的半导体处理技术可以用于实现本文所述的电路。因此,说明书和附图将被视为是示 例性的而非限制含义,并且所有这样的修改旨在被包括在本发明的范围内。本文关于特定 实施例描述的任何益处、优点或问题的解决方案不意在被解释为任何或所有权利要求的关 键的、必需的或必要的特征或元素。如本文所使用的术语“耦合”不意在被限于直接耦合或机械耦合。另外,如本文所使用的术语“一”被定义为一个或多于一个。而且,在权利要求中 使用诸如“至少一个”和“一个或多个”的短语不应当被解释为意味着由不定冠词“一”引入 的另一个权利要求的元素将包含这样的引用权利要求的元素的任何特定权利要求限于仅 包含一个这样的元素的发明,即使当该权利要求包括引语“一个或多个”或“至少一个”以 及诸如“一”的不定冠词。对于使用定冠词的情况,也是如此。除非特别说明,否则诸如“第一”和“第二”的术语用于任意地区分这类术语描述 的元件。因此,这些术语不必意在指示这样的元件在时间上或其它方面的优先级。以下是本发明的各种实施例。条目1包括一种操作数据处理系统的方法,所述方法包括通过N比特处理器执行 第一指令,其中,所述第一指令是具有更新的存储器访问指令,其中,执行所述第一指令包 括访问多个寄存器中的至少一个源寄存器,其中,访问所述至少一个源寄存器包括访问所 述多个寄存器中的第一寄存器,其中,所述多个寄存器中的每个寄存器包括N比特的主寄 存器部分和M比特的扩展寄存器部分,其中,所述第一寄存器的所述主寄存器部分包括第 一地址操作数;使用所述第一地址操作数形成存储器访问地址;使用所述存储器访问地址 作为用于进行存储器访问的地址;产生更新地址操作数,其中,所述更新地址操作数基于所 述第一地址操作数;将所述更新地址操作数写入所述第一寄存器的所述主部分。所述产生 包括访问所述至少一个源寄存器中的源寄存器的扩展部分,以获得修改信息,并且在产生 所述更新地址操作数时使用所述修改信息。条目2包括条目1的方法,其中,访问所述至少一个源寄存器中的源寄存器的扩展 部分以获得修改信息包括访问所述第一寄存器的所述扩展寄存器部分以获得所述修改信 肩、ο条目3包括条目2的方法,其中,所述第一寄存器是用于所述第一指令的基址寄存 器,并且所述第一地址操作数是基地址。条目4包括条目1的方法,其中,所述至少一个源寄存器包括所述多个寄存器中的 索引寄存器,其中,访问所述至少一个源寄存器中的源寄存器的扩展部分以获得修改信息 包括访问所述索引寄存器的所述扩展寄存器部分以获得所述修改信息。条目5包括条目1的方法,其中,所述第一指令用于访问循环缓冲器中存储的存储 器操作数,并且所述修改信息包括所述循环缓冲器的缓冲器长度的指示。条目6包括条目5的方法,其中,所述修改信息包括所述循环缓冲器的模的指示。
18
条目7包括条目5的方法,其中,所述修改信息包括在访问所述循环缓冲器时使用 的偏移值的指示。条目8包括条目1的方法,其中,当第一处理器指令被执行时,所述第一处理器指 令执行比特反转递增运算,并且所述修改信息包括用于所述比特反转递增运算的掩码值的 指示。条目9包括条目1的方法,其中,执行所述第一指令包括确定所述第一指令的偏移 字段指示第一值,并且执行所述第一指令包括响应于指示所述第一值的所述偏移字段,访 问所述至少一个源寄存器中的源寄存器的扩展部分,以获得修改信息,其中,如果具有更新 的存储器访问指令的偏移字段不指示第一值,则产生用于具有更新的存储器访问指令的更 新地址操作数将不包括使用来自用于具有更新的所述存储器访问指令的源寄存器的扩展 部分的修改信息。条目10包括条目1的方法,其中,当执行标量整数指令时,不使用所述多个寄存器 的所述扩展部分。条目11包括条目1的方法,其中,所述多个寄存器的所述扩展部分被设置为用于 存储SIMD向量元素。条目12包括条目1的方法,其中,所述第一指令是SIMD指令。条目13包括条目1的方法,其中,所述至少一个源寄存器中的所述源寄存器的扩 展部分包括模式字段和控制字段;所述修改信息位于所述控制字段中;并且产生更新地址 操作数包括根据多个更新技术产生更新地址操作数,其中,所述模式字段指示在所述产生 中将使用所述多个更新技术中的哪个技术。条目14包括条目1的方法并且还包括通过所述处理器执行第二指令,其中,所述 第二指令是具有更新的存储器访问指令,并且其中,执行所述第二指令包括访问所述第一 寄存器的所述主寄存器部分以获得所述更新地址操作数;使用所述更新地址操作数形成第 二存储器访问地址;并且使用所述第二存储器访问地址作为用于进行第二存储器访问的地 址。条目15包括条目1的方法,其中,形成所述存储器访问地址包括将所述第一地址 操作数与第一值相加,以导出所述存储器访问地址,并且产生更新地址操作数包括使用所 述修改信息来修改所述存储器访问地址。条目16包括一种处理器,所述处理器包括多个寄存器,所述多个寄存器中的每 一个包括主部分和扩展部分,其中,所述主部分是N个比特,并且所述扩展部分是M个比特, 其中,所述处理器是N比特处理器;执行单元,所述执行单元用于执行指令,其中,在由所述 执行单元执行所述指令时,所述多个寄存器中的寄存器用作源寄存器和目的地寄存器;并 且其中,所述执行单元访问所述多个寄存器中的至少一个源寄存器,以执行具有更新的第 一存储器访问指令,其中,所述执行单元使用来自所述至少一个源寄存器中的源寄存器的 扩展部分的修改数据来更新来自所述至少一个源寄存器中的第一源寄存器的主部分的第 一地址操作数以产生更新地址操作数,其中,所述更新地址操作数被写入所述第一源寄存 器的所述主部分。条目17包括条目16的处理器,其中,所述执行单元使用来自所述第一源寄存器的 扩展部分的修改数据来更新所述第一地址操作数。
条目18包括条目16的处理器,其中,所述第一存储器访问指令用于访问存储在 循环缓冲器中的存储器操作数,并且所述修改信息包括所述循环缓冲器的缓冲器长度的指示。条目19包括条目16的处理器,其中,当第一存储器访问指令被执行时,所述第一 存储器访问指令执行比特反转递增运算,并且所述修改信息包括所述比特反转递增运算的 掩码值的指示。条目20包括条目16的处理器,其中,在由所述执行单元执行标量整体指令时,不 使用所述多个寄存器的所述扩展部分,并且所述多个寄存器的所述扩展部分被设置为用于 存储SIMD向量元素。条目21包括条目16的处理器,其中,M等于N。
权利要求
1.一种操作数据处理系统的方法,包括通过N比特处理器执行第一指令,其中,所述第一指令是具有更新的存储器访问指令, 其中,所述第一指令的执行包括访问多个寄存器中的至少一个源寄存器,其中,访问所述至少一个源寄存器包括访问 所述多个寄存器中的第一寄存器,其中,所述多个寄存器中的每个寄存器包括N比特的主 寄存器部分和M比特的扩展寄存器部分,其中,所述第一寄存器的所述主寄存器部分包括 第一地址操作数;使用所述第一地址操作数来形成存储器访问地址; 使用所述存储器访问地址作为用于进行存储器访问的地址; 产生更新地址操作数,其中,所述更新地址操作数基于所述第一地址操作数; 将所述更新地址操作数写入所述第一寄存器的所述主部分;其中,所述产生包括访问所述至少一个源寄存器中的源寄存器的扩展部分以获得修 改信息,并且在产生更新地址操作数时使用所述修改信息。
2.根据权利要求1所述的方法,其中,访问至少一个源寄存器中的源寄存器的扩展部 分以获得修改信息包括访问所述第一寄存器的所述扩展寄存器部分以获得所述修改信 息。
3.根据权利要求2所述的方法,其中,所述第一寄存器是用于所述第一指令的基址寄 存器,并且所述第一地址操作数是基地址。
4.根据权利要求1所述的方法,其中所述至少一个源寄存器包括所述多个寄存器中的索引寄存器,其中,所述访问至少一 个源寄存器中的源寄存器的扩展部分以获得修改信息包括访问所述索引寄存器的所述扩 展寄存器部分以获得所述修改信息。
5.根据权利要求1所述的方法,其中所述第一指令用于访问存储在循环缓冲器中的存储器操作数;并且 所述修改信息包括所述循环缓冲器的缓冲器长度的指示。
6.根据权利要求5所述的方法,其中,所述修改信息包括所述循环缓冲器的模的指示。
7.根据权利要求5所述的方法,其中,所述修改信息包括在访问所述循环缓冲器时使 用的偏移值的指示。
8.根据权利要求1所述的方法,其中当第一处理器指令被执行时,所述第一处理器指令执行比特反转递增运算; 所述修改信息包括用于所述比特反转递增运算的掩码值的指示。
9.根据权利要求1所述的方法,其中所述执行第一指令包括确定所述第一指令的偏移字段指示第一值; 所述执行所述第一指令包括响应于指示所述第一值的所述偏移字段来访问所述至少 一个源寄存器中的源寄存器的扩展部分,以获得修改信息;其中,如果具有更新的存储器访问指令的偏移字段不指示所述第一值,产生用于具有 更新的存储器访问指令的更新地址操作数将不包括使用来自具有更新的所述存储器访问 指令的源寄存器的扩展部分的修改信息。
10.根据权利要求1所述的方法,其中,当执行标量整数指令时,不使用所述多个寄存器的所述扩展部分。
11.根据权利要求1所述的方法,其中,所述多个寄存器的所述扩展部分被设置为用于 存储SIMD向量元素。
12.根据权利要求1所述的方法,其中,所述第一指令是SIMD指令。
13.根据权利要求1所述的方法,其中所述至少一个源寄存器中的所述源寄存器的扩展部分包括模式字段和控制字段; 其中,所述修改信息位于所述控制字段中;其中,所述产生更新地址操作数包括根据多个更新技术产生更新地址操作数,其中,所 述模式字段指示在所述产生中将使用所述多个更新技术中的哪一个技术。
14.根据权利要求1所述的方法,还包括通过所述处理器执行第二指令,其中,所述第二指令是具有更新的存储器访问指令,其 中,所述第二指令的执行包括访问所述第一寄存器的所述主寄存器部分,以获得所述更新地址操作数; 使用所述更新地址操作数来形成第二存储器访问地址; 使用所述第二存储器访问地址作为用于进行第二存储器访问的地址。
15.根据权利要求1所述的方法,其中所述形成所述存储器访问地址包括将所述第一地址操作数与第一值相加,以导出所 述存储器访问地址;所述产生所述更新地址操作数包括使用所述修改信息来修改所述存储器访问地址。
16.一种处理器,包括多个寄存器,所述多个寄存器中的每一个寄存器包括主部分和扩展部分,其中,所述主 部分是N个比特,并且所述扩展部分是M个比特,其中,所述处理器是N比特处理器;执行单元,所述执行单元用于执行指令,其中,在由所述执行单元执行所述指令时,所 述多个寄存器中的寄存器被用作源寄存器和目的地寄存器;其中,所述执行单元访问所述多个寄存器中的至少一个源寄存器,以执行具有更新的 第一存储器访问指令,其中,所述执行单元使用来自所述至少一个源寄存器中的源寄存器 的扩展部分的修改数据来更新来自所述至少一个源寄存器中的第一源寄存器的主部分的 第一地址操作数从而产生更新地址操作数,其中,所述更新地址操作数被写入所述第一源 寄存器的所述主部分。
17.根据权利要求16所述的处理器,其中,所述执行单元使用来自所述第一源寄存器 的扩展部分的修改数据来更新所述第一地址操作数。
18.根据权利要求16所述的处理器,其中所述第一存储器访问指令用于访问存储在循环缓冲器中的存储器操作数; 所述修改信息包括所述循环缓冲器的缓冲器长度的指示。
19.根据权利要求16所述的处理器,其中当所述第一存储器访问指令被执行时,所述第一存储器访问指令执行比特反转递增运算;所述修改信息包括所述比特反转递增运算的掩码值的指示。
20.根据权利要求16所述的处理器,其中在由所述执行单元执行标量整数指令时,不使用所述多个寄存器的所述扩展部分; 所述多个寄存器的所述扩展部分被设置为用于存储SIMD向量元素。
21.根据权利要求16所述的处理器,其中,M等于N。
全文摘要
由N比特处理器(14)执行具有更新的第一存储器访问指令包括访问多个寄存器(34)中的至少一个源寄存器,其中,所述访问包括访问第一寄存器,其中,多个寄存器中的每个寄存器包括N比特的主部分和M比特的扩展部分,其中,第一寄存器的主部分包括第一地址操作数。执行第一指令还包括使用第一地址操作数形成存储器访问地址;使用存储器访问地址作为用于进行存储器访问的地址;产生更新地址操作数;以及将更新地址操作数写入第一寄存器的主部分。产生包括访问至少一个源寄存器中的源寄存器的扩展部分以获得修改信息,并且在产生更新地址操作数时使用修改信息。
文档编号G06F15/80GK102124443SQ200980131904
公开日2011年7月13日 申请日期2009年5月28日 优先权日2008年8月15日
发明者威廉·C·莫耶 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1