CN102124443B - 在单指令多数据(simd)数据处理器中提供扩展寻址模式 - Google Patents
在单指令多数据(simd)数据处理器中提供扩展寻址模式 Download PDFInfo
- Publication number
- CN102124443B CN102124443B CN200980131904.5A CN200980131904A CN102124443B CN 102124443 B CN102124443 B CN 102124443B CN 200980131904 A CN200980131904 A CN 200980131904A CN 102124443 B CN102124443 B CN 102124443B
- Authority
- CN
- China
- Prior art keywords
- register
- instruction
- address
- source
- bit
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 55
- 125000004122 cyclic group Chemical group 0.000 claims description 41
- 230000004048 modification Effects 0.000 claims description 37
- 238000012986 modification Methods 0.000 claims description 37
- 239000013598 vector Substances 0.000 claims description 36
- 238000005516 engineering process Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 9
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 239000004020 conductor Substances 0.000 description 35
- 230000006870 function Effects 0.000 description 21
- 238000006073 displacement reaction Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 239000000523 sample Substances 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000012723 sample buffer Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
由N比特处理器(14)执行具有更新的第一存储器访问指令包括:访问多个寄存器(34)中的至少一个源寄存器,其中,所述访问包括访问第一寄存器,其中,多个寄存器中的每个寄存器包括N比特的主部分和M比特的扩展部分,其中,第一寄存器的主部分包括第一地址操作数。执行第一指令还包括:使用第一地址操作数形成存储器访问地址;使用存储器访问地址作为用于进行存储器访问的地址;产生更新地址操作数;以及将更新地址操作数写入第一寄存器的主部分。产生包括:访问至少一个源寄存器中的源寄存器的扩展部分以获得修改信息,并且在产生更新地址操作数时使用修改信息。
Description
技术领域
本公开总体上涉及数据处理器,并且更具体地,涉及在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)的主部分用于提供基地址,并且另一源GPR的主部分用于提供索引值(即,偏移值)。提供基地址的源GPR或提供索引值的源GPR的扩展部分用于提供额外的寻址控制信息,该信息允许向量加载或存储指令的增加的功能。在一个实施例中,位移形式向量加载或存储指令指定一个源GPR,其中,该一个源GPR的主部分用于提供基地址,并且该一个源的扩展部分用于提供额外的寻址控制信息。以该方式,在不增加操作码大小的情况下,可以增加寻址模式的功能性。
如本文所使用的,术语“总线”用于表示可以用于传送一个或多个各种信息(诸如,数据、地址、控制或状态)的多个信号或导体。可以关于作为单个导体、多个导体、单向导体或双向导体来图示或描述本文所讨论的导体。然而,不同实施例可以改变导体实现方式。例如,可以使用单独的单向导体而非双向导体,并且反之亦然。而且,可以用串行或者以时分多路复用方式传送多个信号的单个导体来替代多个导体。同样,承载多个信号的单个导体可以被分成承载这些信号子集的各种不同导体。因此,存在很多选择来传送信号。
当涉及将信号、状态比特或类似装置分别呈现为其逻辑真或逻辑假状态时,这里使用术语“断言”或“设置”和“否定”(或“取消断言”或“清除(clear)”)。如果逻辑真状态是逻辑电平1,则逻辑假状态是逻辑电平0。而且,如果逻辑真状态是逻辑电平0,则逻辑假状态是逻辑电平1。
本文所描述的每个信号可以被设计为正逻辑或负逻辑,其中,负逻辑可以用信号名称上面的横表明或者用名称后的星号(*)来指示。在负逻辑信号的情况下,信号是低电平有效的,其中,逻辑真状态与逻辑电平0相对应。在正逻辑信号的情况下,信号是高电平有效的,其中,逻辑真状态与逻辑电平1相对应。应当注意,本文描述的任何信号都可以被设计为负逻辑信号或正逻辑信号。因此,在替代实施例中,描述为正逻辑信号的那些信号可以被实现为负逻辑信号,并且描述为负逻辑信号的那些信号可以被实现为正逻辑信号。
另外,如本文所使用的,字(w)包括4个字节,半字(h)包括2个字节,并且双字(d)包括8个字节。然而,在替代实施例中,字可以被定义为2个字节,并且双字可以被定义为4个字节。数字之前的符号“$”或“0x”指示该数字是以其十六进制或基数十六形式表示的。数字之前的符号“%”指示该数字是以其二进制或基数二形式表示的。
图1以框图形式图示根据本发明一个实施例的数据处理系统10。由于数据处理系统10能够执行SIMD指令,因此系统10还可以被称作SIMD数据处理系统。数据处理系统10包括存储器12、处理器14、输入/输出(I/O)16、其它外围装置18和系统总线20。存储器12经由导体22被双向耦合到系统总线20,I/O 16经由导体24被双向耦合到系统总线20,其它外围装置18经由导体26被双向耦合到系统总线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包括控制单元28、指令单元30、执行单元32、标量通用寄存器(GPR)文件34、总线接口单元(BIU)36和加载/存储单元38。控制单元28经由导体40被双向耦合到指令单元30,经由导体42双向耦合到执行单元32,经由导体46双向耦合到标量文件34,并且经由导体48双向耦合到加载/存储单元38。执行单元32经由导体44被双向耦合到标量寄存器文件34,并且标量寄存器文件34经由导体50被双向耦合到加载/存储单元38。BIU 36经由导体54被双向耦合到指令单元30,并且经由导体52被双向耦合到加载/存储单元38。处理器14能够经由耦合到导体58的导体56与系统总线20进行双向通信。应当注意,处理器14可以包括比所示电路更多的电路,其中,额外的电路也可以被耦合到导体58。也就是说,导体56可以经由所有或一部分导体58与系统总线20进行通信。还应当注意,所有或一部分处理器14可以被称作处理电路。
在操作中,指令单元30经由BIU 36和系统总线20从诸如存储器12的存储器获取指令,并且从控制单元28接收控制信息并且对控制单元28提供控制信息。指令单元30可以是本领域中公知的任何类型的指令单元,并且如本领域公知地进行操作,并且因此将不在本文中更详细地描述。因此,指令单元30对控制单元28提供指令,控制单元28经由例如执行单元32和加载/存储单元38来控制接收到的这些指令的执行,执行单元32和加载/存储单元38都能够按需要直接地或者经由控制单元28与标量寄存器文件34进行通信。例如,控制单元28经由加载/存储单元38和BIU 36能够按需要将数据从存储器(诸如存储器12)加载到标量寄存器文件34内的寄存器以执行指令,并且能够按需要将来自标量寄存器文件34内寄存器的数据存储到存储器(例如,存储器12)以执行指令。例如,在一个实施例中,加载/存储单元38可以基于经由导体48从控制单元28提供的控制信息,经由导体50与标量寄存器文件34直接进行通信(以读取和写入数据)。执行单元32可以使用存储在标量寄存器文件34内的数据来执行算术运算、逻辑运算、移位运算或其它运算,并且按需要将结果存储到标量寄存器文件34内的寄存器,以通过控制单元28执行从指令单元30接收到的指令。执行单元32可以包括例如算术逻辑单元(ALU)、浮点单元等。标量寄存器文件34可以经由导体46向控制单元28提供控制信息或数据,或者从控制单元28接收控制信息或数据。
除了理解本文描述的各种实施例所需的那些部分之外,在本文中将不再更详细地描述处理器14的操作。还应当注意,将操作数存储在标量通用寄存器文件中的数据处理系统的现有设计可以按需要被改进成执行向量加载和存储指令。
图2中图示了标量通用寄存器文件34的框图。在所示实施例中,标量寄存器文件34包括32个通用寄存器(GPR)。然而,在替代实施例中,标量寄存器文件可以包括任何数目的GPR。如本文所使用的,标量寄存器指示寄存器具有一维映射,并且因此仅保持一行数据。标量寄存器文件34中的每个GPR包括主部分(包括每个GPR的N个低比特)和SIMD扩展部分(包括每个GPR的M个高比特)。在所示实施例中,N为32个比特,并且M为32个比特,使得每个GPR是能够存储用于SIMD运算的64个比特量的64比特寄存器。在本文所述的实施例中,标量寄存器文件34中的每个GPR包括8个字节,其中,当用于SIMD运算时,每个GPR可以存储例如2个字大小的向量元素、4个半字大小的向量元素或者8个字节大小的向量元素。
在所示实施例中,GPR文件34的主部分用于非SIMD运算,在非SIMD运算中,当执行非SIMD指令时或者当形成用于加载和存储指令(包括向量加载和向量存储指令)的有效地址(EA)值时,没有使用GPR文件34的SIMD扩展部分。另外,当执行非SIMD运算时,保持存储在GPR的扩展部分中的任何值。在一个实施例中,通过处理器14的架构确定主部分的比特数目N。例如,处理器14被视为N比特处理器。N比特处理器是指其原本(例如,非扩展的)整数数据类型为N个比特。通常,N比特处理器中的指针为N个比特;因此,(存储在GPR的主部分内)指针值能够访问2N个字节。也就是说,N比特处理器具有N比特地址空间。因此,在一个实施例中,GPR的主部分的比特数目N由处理器的类型或处理器的指令集架构来确定。GPR的扩展部分的比特数目M因此扩展超过N个比特。在所示实施例中,假设处理器14是32比特处理器(其原本非扩展的整数数据类型为32个比特并且其指针值为32个比特)。因此,GPR的主部分是32个比特(即,N=32)。在所示实施例中,GPR的主部分与寄存器文件34的低部分(例如,较低一半)(即,每个GPR的比特32:63)相对应。在所示实施例中,扩展部分也为32个比特(即,M=32),并且与寄存器文件34的高部分(例如,较高一半)(即,每个GPR的比特0:31)相对应。替代地,只要主部分包括N个比特并且扩展部分包括M个比特(超过N个比特),使得每个GPR(或用于SIMD运算的GPR子集)包括N+M个比特,就可以不同地组织标量GPR文件34。例如,主部分可以与寄存器文件34的高部分相对应,并且扩展部分可以与其低部分相对应。替代实施例的M和N可以具有不同的值,诸如,N=32且M=96,其中,SIMD向量的宽度对应地大于这样的实施例的原本的整数数据类型,并且因此支持较大的SIMD向量长度,同时保持处理器的基数N比特架构。
在图2所示的实施例中,寄存器文件34的扩展部分被打了阴影,并且因为扩展部分仅用于SIMD运算,所以被称为SIMD扩展部分。在可选实施例中,其它专用功能可以使用扩展部分,诸如双精度浮点值。然而,在一个实施例中,扩展部分不用于处理器14内的非SIMD整数运算。另外,应当注意,每个寄存器的扩展部分不能独立于每个寄存器的主部分来访问或寻址。也就是说,例如,因为扩展部分只是r0的N比特主部分的M比特扩展,所以r0的扩展部分仅能通过访问r0来访问,并且不能独立于r0的主部分来寻址。对于图2中所示的GPRr1-r31的扩展部分和主部分的每一个也是如此。
图13中图示了根据现有技术的索引形式非SIMD(即,标量)整数加载指令(lwz[u]x)的一个实施例。如图13中所示,lwz[u]x是32比特指令,其指示目的寄存器rD和两个源寄存器rA和rB。lwz[u]x指令允许指定更新值(U)来指示要执行具有索引而不具有更新的加载或者具有索引和更新的加载。在U=1(lwzux)的情况下,作为指令操作的一部分,将对rA执行更新。在U=0(lwzx)的情况下,不对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]x指令将来自存储器的32比特整数字加载到目的寄存器的主部分。因此,在处理器14是32比特处理器的所示实施例中,lwz[u]x指令可以用于将32比特整数字加载到目的寄存器的主部分中。由于这是常规(非SIMD)整数加载指令,因此数据寄存器的仅SIMD部分不受影响。指令的操作等同于没有SIMD能力的ISA兼容处理器的指令操作。在执行lwz[u]x指令之后,使用rA的主部分(存储基地址值)的内容和rB的主部分(存储索引值)的内容来计算有效地址(例如,EA[0:31])。然后,将位于存储器12中的由EA[0:31]指向的存储器位置处的32比特字加载到rD的主(整数)部分中。也就是说,存储器12中由EA指向的字被加载到rD[32:63]。如果U=0(即,lwzx指令),则对rA不执行更新。然而,如果U=1(即,lwzux指令),则除了用存储器数据更新rD的加载操作之外,还要对rA执行更新。也就是说,可以使用正常加载指令的更新形式,以便于用新的基数值来更新rA的基数值,该新的基数值等于用于加载操作的计算的EA[0:31],该计算的EA[0:31]用于使用更新的基数值的后续加载指令。因此,通过将加载操作与地址操作数更新操作组合成单个指令,更新形式指令提供附加的并行性。应当注意,对于正常整数加载指令,既不使用也不更新寄存器rA、rB和rD的扩展部分(仅SIMD部分)。
类似地,应当注意,对应的正常(非SIMD,标量)整数存储指令(stw[u]x rS、rA、rB)类似于加载指令。stw[u]x指令将来自由rS指示的GPR的整数字存储在存储器中由EA指向的位置(其中,使用存储基地址值的rA的内容和存储索引值的rB的内容来计算EA[0:31])。如加载指令一样,如果U=0(即,stwx指令),则不对rA执行更新。然而,如果U=1(即,stwux指令),则通过用计算的EA[0:31]更新rA的主部分来对rA执行更新。应当注意,对于整数存储指令,既不使用也不更新寄存器rA、rB和rS的扩展部分(仅SIMD部分)。
图3中图示了根据本发明一个实施例的索引形式向量(SIMD)加载指令(evldh[u]x)的一个实施例。在图示的实施例中,evldh[u]x是32比特指令,其指示目的地寄存器rD和两个源寄存器rA和rB。evldh[u]x指令允许指定更新值(U)以指示将执行具有索引而不具有更新的加载还是具有索引和更新的加载。在U=1(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]x指令将双字从存储器加载到目的地寄存器的四个半字。因此,在处理器14是32比特处理器的所示实施例中,evldh[u]x指令可以用于将4个16比特向量元素加载到SIMD目的地寄存器中。在执行evldh[u]x指令后,使用rA(存储基地址值)的内容和rB(存储索引值)的内容来计算有效地址(例如,EA[0:31])。(应当注意,如果rB中的索引值为0,则rA中的基地址值可以直接用作EA。)然后,将位于存储器12中的由EA[0:31]指向的存储器位置的双字加载到rD的合并的扩展部分和主部分中。也就是说,存储器12中由EA指向的半字被加载到rD[0:15],存储器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[0:31])。(应当注意,如果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]x。该描述还可以类似地适用于从存储器加载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中的29比特字段。模式字段可以用于定义对于SIMD加载或存储指令要执行何种类型的地址更新,并且地址更新控制字段可以提供额外的控制信息(如果需要的话)以进行更新。在一个实施例中,如果模式字段的值为%000,则指示如执行具有更新的正常整数加载和存储指令时(以上参考图13讨论的)执行的正常更新操作,其中,将计算的EA[0: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的主部分的地址更新。)应当注意,通过使用扩展部分,不需要单独寻址或访问单独的GPR或地址位置,来提供诸如模式或地址更新控制信息的额外信息。另外,因为指令已经指示rA用于提供基地址值的目的,不需要指令内的额外字段。然而,由于仅需要rA的主部分来访问基地址值,因此可以使用扩展部分来提供额外信息。应当注意,不论U或模式字段的值如何,对向量加载或存储指令的有效地址计算保持不变。也就是说,通过将rA(rA[32:63])的内容添加到rB(rB[32:63])的内容来计算evldh[u]x或evstdh[u]x的EA。也就是说,EA[0:31]=“rA的内容+rB的内容”。而且,应当注意,在其中假设处理器14是32比特处理器的图示的示例中,EA是32比特值。由于EA提供数据将被存储在其中或将从其加载数据的存储器地址,因此EA还可以被称作存储器访问地址。
图5中图示了可以用于执行evldh[u]x指令(或evstdh[u]x指令)以实现循环缓冲器寻址的rA的主部分和扩展部分的示例。如以上所讨论的rA的主部分包括作为存储器操作数的基地址。rA的扩展部分内的模式字段是%001,指示循环缓冲器寻址技术,并且地址更新控制字段包括用于实现循环缓冲器寻址的额外信息。在所示实施例中,地址更新控制字段包括比特3:7中的5比特模(Mod)字段、比特8:16中的8比特偏移(O)字段和比特16:31中的16比特长度(L)字段。应当注意,替代实施例可以不同地组织rA的扩展部分内的信息,或者可以包括其它类型的信息作为地址更新控制字段中的任何修改信息的补充或替代。L字段提供循环缓冲器中的元素数目。O字段提供与用于更新计算的下一元素的距离。模字段指示存储器中循环缓冲器的起始地址对准存储器中的2Mod字节界线。应当注意,模字段还定义循环缓冲器所允许的最大长度。如以下将看到,这允许更快速的回绕计算。
图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(由于模值,例如2Mod=24=%10000而导致其对准16字节界线),因此可以使用模值来确定起始缓冲器地址的哪个部分将在回绕时更新。也就是说,就回绕而言,rA[(64-模):63]=(rA[48:63]+Offset)[(64-模):63],其中,在更新时仅修改比特(64-模):63。因此,用通过%11000寻址的存储器位置的内容更新rD,并且将rA的主部分从%11000更新成%10001(由于回绕而并非%11110)。应当注意,模值还将缓冲器的最大索引设置为2(Mod)-1。也就是说,为了使用模值来执行回绕计算,最后循环缓冲器元素的位置不能超过%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、%101、%110和%111,分别与元素0-7中的每一个相对应。然后,这些二进制值被“比特反转”,得到每个3比特二进制值的镜像。在比特反转这些二进制值的每一个之后,比特反转的元素导致以元素0、元素4、元素2、元素6、元素1、元素5、元素3和元素7的比特反转顺序来分别寻址元素0-7。应当注意,为了便于解释,本文将描述的示例假设以比特反转的方式访问8个数据元素的缓冲器;然而,在替代实施例中,可以以比特反转的顺序来寻址任何数目的数据元素的缓冲器。
基于缓冲器中的数据元素或样本的数目(例如,FFT中的点的数目)以及样本的数据大小的掩码值用于确定要以比特反转方式访问的下一个元素。可以使用公知的方法,使用掩码值来确定要以比特反转方式访问的下一元素。图9图示了基于数据样本的数目和数据样本的大小来提供各种掩码值的表的示例。为了访问包含要通过比特反转寻址访问的n字节大小的数据元素的缓冲器,掩码值在最低有效比特的位置中具有log2n个一(1),并且剩余的最高有效比特位置为0。然而,如果数据大小为半字或字的倍数,则构成掩码,使得1向左移log2(数据的字节大小),并且0被置于最低有效比特的位置。应当注意,对于表的每行,在掩码值从字节列前进至双字节列时,掩码值每次向左移动1比特。而且,应当注意,对于表的每列,在掩码值从8个元素的大小前进至64个元素的大小时,掩码值将额外的较低顺序比特设置为“1”。图9的表可以被扩展为包括通常为2的幂的较大缓冲器大小,并且也可以包括较大数据大小。图9的表可以被存储在图1的控制单元28内,或者可以被存储在系统10中其它地方。图9的表可以被存储为值的表,或者可以用逻辑门来实现。替代实施例可以以各种不同的方式存储或接收图9的表的信息。
图10图示了可以使用evldh[u]x指令来访问图11的示例性缓冲器来实现的比特反转寻址序列。在图11的示例中,缓冲器存储8个数据元素,其中,每个数据元素的大小为半字。(应当注意,图11的缓冲器可以用于FFT应用,并且还可以被称作FFT样本缓冲器。还应当注意,图11的缓冲器可以被称作数据结构,并且可以在被访问之前在存储器12内形成。)例如,图11图示了存储器12的一部分,其存储开始于地址位置0xDCAABCF0的8个半字大小的数据元素。由于每个元素的大小为半字(例如,16比特),因此接下来的7个元素(元素1-元素7)分别以按地址值0xDCAABCF2、0xDCAABCF4、0xDCAABCF6、0xDCAABCF8、0xDCAABCFA、0xDCAABCFC和0xDCAABCFE的线性顺序进行顺序寻址。(应当注意,这些地址值的每一个可以被称作指针值。)如果这些元素将以比特反转顺序来访问(如图8中所述),则这些地址将以下述顺序来访问:0xDCAABCF0(与元素0相对应)、0xDCAABCF8(与元素4相对应)、0xDCAABCF4(与元素2相对应)、0xDCAABCFC(与元素6相对应)、0xDCAABCF2(与元素1相对应)、0xDCAABCFA(与元素5相对应)、0xDCAABCF6(与元素3相对应)和0xDCAABCFE(与元素7相对应)。
因此,在图10中的比特反转寻址的示例中,在执行evldh[u]x指令之前,将0xDCAABCF0的基地址值(即,初始指针值)置于寄存器rA的主部分中,其中,这指向要被访问的存储器12中的缓冲器的第一元素,元素0。将值0x00000000置于在rB中作为索引值。而且,对于该示例,因为缓冲器包含8个半字大小的数据元素,所以掩码值(取自图9的表)是“000...00001110”。与0x000E相对应的该掩码值被存储在rA的扩展部分中。因此,在执行了evldhux指令(其中,U=1并且模式字段为%010)之后,EA被计算为0xDCAABCF0(基地址+索引值),并且rD接收mem[EA]的内容,即,缓冲器的元素0。(应当注意,在该示例中,由于rB中的索引值为0,因此可以将基地址值直接设置为EA。)而且,由于U=1并且模式字段为%010,因此在执行了evldhux指令之后,使用rA的扩展部分中的地址更新控制字段(即,掩码值)来确定如何更新rA的主部分。使用任何公知的方法,将掩码值0x000E用于以比特反转寻址序列计算下一个地址(即,与元素4相对应的0xDCAABCF8)。因此,rA的主部分被更新成0xDCAABCF8的新基地址值。应当注意,仅更新rA的主部分,使得掩码值和模式字段值保持不变。而且,这时,在随后的数据处理操作中,可以使用rD(元素0)中的结果来执行一个或多个额外指令。在U=1并且使用相同的rA和rB的情况下执行随后的evldhux指令之后,模式值仍然为%010并且掩码值仍然为0x000E。在该情况下,基址值为0xDCAABCF8,如通过前一个evldhux指令更新。再一次,使用公知方法,掩码值0x000E用于以比特反转寻址序列计算0xDCAABCF8之后的下一个地址(即,与元素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=1(evldhu)的情况下,rA的更新作为指令操作的一部分来执行。在U=0(evldh)情况下,不对rA执行更新。evldh[u]指令包括用于标识指令的功能或类型的操作码字段(比特0:5)。指令内的目的地字段(比特6:10)是标有“rD”的目的地寄存器标识符,其标识标量寄存器文件34内的寄存器D。指令内的源字段(比特11:15)是标有“rA”的源寄存器标识符,其标识标量寄存器文件34内的寄存器A。指令内的无符号中间字段(UIMM,比特16:20)是提供位移值的中间值。指令还包括可以用于进一步指定指令功能性的子操作码字段(比特21:31)。应当注意,在图示的实施例中,包括U作为指令子操作码内的比特(在所示实施例中,在比特位置25处)。然而,在替代实施例中,是否进行更新的指示可以被设置为指令内的不同操作码或者不同比特。替代地,可以实现其它比特长度指令,并且每个指令字段的比特大小是实现方式特定的。然而,如以上所讨论的,应当注意,在很多指令集架构中,操作码和子操作码空间是有限的,并且因此,不能得到额外的指令比特长度。而且,在其它实施例中,可以实现额外的字段或其它字段。另外,可以将rD字段、rA字段和中间字段的排序改变成与如图12中所示的序列不同的其它序列。
evldh[u]指令(evldh[u]rD、rA、UIMM)类似于evldh[u]x指令;然而,不同于提供存储用于计算EA的索引值的第二源寄存器rB,evldh[u]指令在指令本身内提供直接用于计算EA的中间值。类似于evldh[u]x指令,evldh[u]指令将来自存储器的双字加载到目的地寄存器的四个半字中。因此,在处理器14是32比特处理器的所示实施例中,evldh[u]指令可以用于将4个16比特向量元素加载到目的地寄存器。然而,在执行evldh[u]指令之后,将设置在指令的中间字段内的位移值(UIMM)添加到rA(存储基地址值)的内容,以计算有效地址(例如,EA[0:31])。然后,将位于存储器12中的由EA[0:31]指向的存储器位置的双字加载到rD中。也就是说,将存储器12中由EA指向的半字加载到rD[0: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的UIMM值与rA的当前值相加将不会使rA的值改变,所以rA的值不会发生改变。因此,在一个实施例中,指令的U=0、UIMM=0以及U=1,UIMM=0变量产生相同的结果。这提供机会来使用这样的指令编码以指示诸如例如在rA的扩展部分中,额外更新控制值将用于SIMD加载或存储指令。因此,如果U=1,UIMM=0并且rA的扩展部分中的模式字段值为%000,则执行正常更新,其中,将EA的值存储到rA的主部分(rA[32:63])中。然而,如果U=1,UIMM=0并且rA的扩展部分中的模式字段值为%001或%010,则对rA的主部分执行分别如上所述的循环缓冲器寻址更新或比特反转寻址更新。也就是说,在这些情况(其中,模式字段为%001或%010)下,rA的扩展部分用于进一步提供控制信息(例如,地址更新控制字段),该控制信息定义如何对rA更新以实现不同的寻址方案,诸如具有回绕的循环缓冲器寻址或比特反转寻址。因此,以上参考图4至图11提供的描述也适用于evldh[u]指令,其中,rA的扩展部分用于提供关于如何更新rA的主部分的额外修改信息。
类似地,应当注意,对应的存储指令(evstdh[u]x rS、rA、UIMM)类似于加载指令进行操作。evstdh[u]指令将来自由rS指示的GPR的四个半字存储到存储器中由EA指向的位置(其中,使用存储基地址值的rA的内容和位移值UIMM来计算EA[0:31])。如加载指令,如果U=0(即,evstdh指令),则不对rA执行更新。然而,如果U=1(即,evstdhu指令),则可以使用rA的扩展部分和UIMM的值来确定如何对rA执行更新。也就是说,当在指令中指示UIMM=0的值时,可以使用rA的扩展部分来进一步提供控制信息(即,修改信息),该控制信息定义如何对rA执行更新,以便于实现不同的寻址技术,诸如具有回绕的循环缓冲器寻址或比特反转寻址。因此,以上提供的关于计算EA以及当U=1时使用UIMM和扩展部分来确定如何执行更新的描述适用于位移形式加载指令和位移形式存储指令。而且,应当注意,除了半字,可以在加载或存储指令中定义任何元素大小。例如,本文中提供的描述还可以分别类似地适用于从存储器加载8个字节或者将8个字节存储到存储器的evldb[u]或evstdb[u]。该描述还可以类似地适用于分别从存储器加载2个字或者将2个字存储到存储器的evldw[u]或evstdw[u]。
到现在为止,应当理解,已经提供了用于数据处理系统的数据处理指令,其能够使用其源寄存器中的一个的扩展部分来提供关于如何修改其源寄存器中的一个的主部分的额外信息。以该方式,额外操作码空间不是必要的。此外,在一个实施例中,可以使用这些指令内的一个或多个比特(例如,U比特)来确定是否要对源寄存器中的一个的主部分执行更新,以及是否要在计算新的更新值时使用扩展部分中的地址更新控制信息。在另一个实施例中,可以使用指令内的位移字段的值来确定是否要在计算新的更新值时使用扩展部分中的地址更新控制信息。
应当注意,如以上所讨论的,可以用于实现循环缓冲器寻址或比特反转寻址的处理器14内的电路可以位于控制单元28内或者位于执行单元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的方法,其中,所述修改信息包括所述循环缓冲器的模的指示。
条目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。
Claims (21)
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。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/192,513 US8060724B2 (en) | 2008-08-15 | 2008-08-15 | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
US12/192,513 | 2008-08-15 | ||
PCT/US2009/045379 WO2010019304A1 (en) | 2008-08-15 | 2009-05-28 | Provision of extended addressing modes in a single instruction multiple data (simd) data processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102124443A CN102124443A (zh) | 2011-07-13 |
CN102124443B true CN102124443B (zh) | 2014-05-07 |
Family
ID=41669168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980131904.5A Expired - Fee Related CN102124443B (zh) | 2008-08-15 | 2009-05-28 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8060724B2 (zh) |
KR (1) | KR101581177B1 (zh) |
CN (1) | CN102124443B (zh) |
TW (1) | TWI463332B (zh) |
WO (1) | WO2010019304A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8635415B2 (en) * | 2009-09-30 | 2014-01-21 | Intel Corporation | Managing and implementing metadata in central processing unit using register extensions |
US9595074B2 (en) | 2011-09-16 | 2017-03-14 | Imagination Technologies Limited | Multistage collector for outputs in multiprocessor systems |
US9665371B2 (en) * | 2011-11-30 | 2017-05-30 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
CN103946797B (zh) * | 2011-12-06 | 2017-07-04 | 英特尔公司 | 用于转换矢量指令的系统、装置和方法 |
CN104011649B (zh) | 2011-12-23 | 2018-10-09 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
KR101975534B1 (ko) | 2012-09-11 | 2019-05-07 | 삼성전자주식회사 | 연산기능을 갖는 반도체 메모리 장치 |
CN103019972B (zh) * | 2012-11-23 | 2016-05-25 | 广东威创视讯科技股份有限公司 | 一种利用总线进行通讯的方法和装置 |
US20140181427A1 (en) * | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Compound Memory Operations in a Logic Layer of a Stacked Memory |
KR102102166B1 (ko) | 2013-04-22 | 2020-04-21 | 삼성전자 주식회사 | 심드 구조 기반의 쓰레드 분기 관리 장치 및 방법 |
US9424034B2 (en) * | 2013-06-28 | 2016-08-23 | Intel Corporation | Multiple register memory access instructions, processors, methods, and systems |
WO2015089314A1 (en) | 2013-12-11 | 2015-06-18 | Mill Computing, Inc. | Computer processor employing operand data with associated meta-data |
US9396056B2 (en) * | 2014-03-15 | 2016-07-19 | Intel Corporation | Conditional memory fault assist suppression |
CN105283855B (zh) * | 2014-04-25 | 2018-01-23 | 华为技术有限公司 | 一种寻址方法及装置 |
US9830151B2 (en) * | 2014-12-23 | 2017-11-28 | Intel Corporation | Method and apparatus for vector index load and store |
US20170046156A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Table lookup using simd instructions |
US10620957B2 (en) * | 2015-10-22 | 2020-04-14 | Texas Instruments Incorporated | Method for forming constant extensions in the same execute packet in a VLIW processor |
US20170371657A1 (en) * | 2016-06-24 | 2017-12-28 | Qualcomm Incorporated | Scatter to gather operation |
US10691691B2 (en) * | 2016-09-10 | 2020-06-23 | Sap Se | Iterative evaluation of data through SIMD processor registers |
US10318433B2 (en) * | 2016-12-20 | 2019-06-11 | Texas Instruments Incorporated | Streaming engine with multi dimensional circular addressing selectable at each dimension |
GB2558220B (en) * | 2016-12-22 | 2019-05-15 | Advanced Risc Mach Ltd | Vector generating instruction |
US11029956B2 (en) * | 2017-08-24 | 2021-06-08 | Sony Semiconductor Solutions Corporation | Processor and information processing system for instructions that designate a circular buffer as an operand |
US10983795B2 (en) * | 2019-03-27 | 2021-04-20 | Micron Technology, Inc. | Extended memory operations |
CN112764810B (zh) * | 2021-01-20 | 2022-09-20 | 重庆邮电大学 | 一种应用于处理器的寄存器控制simd指令扩展方法 |
WO2022220835A1 (en) * | 2021-04-15 | 2022-10-20 | Zeku, Inc. | Shared register for vector register file and scalar register file |
US11886877B1 (en) * | 2021-09-24 | 2024-01-30 | Apple Inc. | Memory select register to simplify operand mapping in subroutines |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431585A (zh) * | 2002-08-22 | 2003-07-23 | 智慧第一公司 | 延伸微处理器地址模式的装置及方法 |
CN1446332A (zh) * | 2000-08-09 | 2003-10-01 | 先进微装置公司 | 用以在扩充寄存器模式下存取扩充寄存器集的中央处理单元及其方法 |
CN1601462A (zh) * | 2003-09-27 | 2005-03-30 | 英特尔公司 | 处理器的扩展寄存器空间装置和方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5975365A (ja) * | 1982-10-22 | 1984-04-28 | Hitachi Ltd | ベクトル処理装置 |
JPS60134974A (ja) * | 1983-12-23 | 1985-07-18 | Hitachi Ltd | ベクトル処理装置 |
US6052766A (en) * | 1998-07-07 | 2000-04-18 | Lucent Technologies Inc. | Pointer register indirectly addressing a second register in the processor core of a digital processor |
US6898691B2 (en) * | 2001-06-06 | 2005-05-24 | Intrinsity, Inc. | Rearranging data between vector and matrix forms in a SIMD matrix processor |
US7853778B2 (en) * | 2001-12-20 | 2010-12-14 | Intel Corporation | Load/move and duplicate instructions for a processor |
US7380109B2 (en) * | 2002-04-15 | 2008-05-27 | Ip-First, Llc | Apparatus and method for providing extended address modes in an existing instruction set for a microprocessor |
US7203820B2 (en) * | 2002-06-28 | 2007-04-10 | Sun Microsystems, Inc. | Extending a register file utilizing stack and queue techniques |
US20040049657A1 (en) * | 2002-09-10 | 2004-03-11 | Kling Ralph M. | Extended register space apparatus and methods for processors |
US7610466B2 (en) * | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
US7315932B2 (en) * | 2003-09-08 | 2008-01-01 | Moyer William C | Data processing system having instruction specifiers for SIMD register operands and method thereof |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
WO2005037326A2 (en) | 2003-10-13 | 2005-04-28 | Clearspeed Technology Plc | Unified simd processor |
GB2409067B (en) * | 2003-12-09 | 2006-12-13 | Advanced Risc Mach Ltd | Endianess compensation within a SIMD data processing system |
US7360063B2 (en) * | 2006-03-02 | 2008-04-15 | International Business Machines Corporation | Method for SIMD-oriented management of register maps for map-based indirect register-file access |
-
2008
- 2008-08-15 US US12/192,513 patent/US8060724B2/en active Active
-
2009
- 2009-05-28 CN CN200980131904.5A patent/CN102124443B/zh not_active Expired - Fee Related
- 2009-05-28 WO PCT/US2009/045379 patent/WO2010019304A1/en active Application Filing
- 2009-05-28 KR KR1020117005826A patent/KR101581177B1/ko active IP Right Grant
- 2009-06-08 TW TW098119101A patent/TWI463332B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1446332A (zh) * | 2000-08-09 | 2003-10-01 | 先进微装置公司 | 用以在扩充寄存器模式下存取扩充寄存器集的中央处理单元及其方法 |
CN1431585A (zh) * | 2002-08-22 | 2003-07-23 | 智慧第一公司 | 延伸微处理器地址模式的装置及方法 |
CN1601462A (zh) * | 2003-09-27 | 2005-03-30 | 英特尔公司 | 处理器的扩展寄存器空间装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2010019304A1 (en) | 2010-02-18 |
TWI463332B (zh) | 2014-12-01 |
US8060724B2 (en) | 2011-11-15 |
CN102124443A (zh) | 2011-07-13 |
TW201007472A (en) | 2010-02-16 |
KR101581177B1 (ko) | 2016-01-11 |
US20100042808A1 (en) | 2010-02-18 |
KR20110055629A (ko) | 2011-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102124443B (zh) | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 | |
EP4002105B1 (en) | Systems and methods for performing 16-bit floating-point matrix dot product instructions | |
KR102449616B1 (ko) | 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치 | |
CN113050990A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
CN109478139A (zh) | 用于共享存储器中的访问同步的装置、方法和系统 | |
EP2579164B1 (en) | Multiprocessor system, execution control method, execution control program | |
CN108369511A (zh) | 用于基于通道的跨步存储操作的指令和逻辑 | |
CN109992559A (zh) | 多插槽系统中的远程原子操作 | |
US10579514B2 (en) | Alignment based block concurrency for accessing memory | |
KR101624786B1 (ko) | 기입마스크 레지스터의 트레일링 최하위 마스킹 비트를 결정하는 시스템, 장치, 및 방법 | |
CN110909882A (zh) | 用于执行水平铺块操作的系统和方法 | |
CN107924307A (zh) | 按索引分散至寄存器以及数据元素重布置处理器、方法、系统和指令 | |
JP6807073B2 (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
CN112148251A (zh) | 跳过无意义的矩阵运算的系统和方法 | |
CN109992305A (zh) | 用于将片寄存器对归零的系统和方法 | |
CN108292217A (zh) | 用于结构阵列的向量存储/加载指令 | |
CN108241509B (zh) | 用于高效地处理存储器排序缓冲器的分配的方法和装置 | |
CN109643235A (zh) | 用于多源混合操作的装置、方法和系统 | |
CN108292269A (zh) | 用于监视地址冲突的计数器 | |
CN108292223A (zh) | 用于得到偶数数据元素和奇数数据元素的系统、设备和方法 | |
TW201732574A (zh) | 用於改善向量通量的系統、方法及設備 | |
CN108255520A (zh) | N路监测器 | |
CN109992303A (zh) | 用于将片寄存器对存储到存储器的系统和方法 | |
CN101484875A (zh) | 微处理器以及用于寄存器在其中进行寻址的方法 |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: Texas in the United States Patentee after: NXP America Co Ltd Address before: Texas in the United States Patentee before: Fisical Semiconductor Inc. |
|
CP01 | Change in the name or title of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140507 Termination date: 20210528 |
|
CF01 | Termination of patent right due to non-payment of annual fee |