CN116893989A - 管理在处理器寄存器堆中任意定义的旋转寄存器组的系统 - Google Patents
管理在处理器寄存器堆中任意定义的旋转寄存器组的系统 Download PDFInfo
- Publication number
- CN116893989A CN116893989A CN202310318068.3A CN202310318068A CN116893989A CN 116893989 A CN116893989 A CN 116893989A CN 202310318068 A CN202310318068 A CN 202310318068A CN 116893989 A CN116893989 A CN 116893989A
- Authority
- CN
- China
- Prior art keywords
- register
- buffer
- registers
- vector
- instruction
- 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.)
- Pending
Links
- 239000000872 buffer Substances 0.000 claims abstract description 71
- 238000000034 method Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 150000002678 macrocyclic compounds Chemical class 0.000 description 1
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
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
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)
- Complex Calculations (AREA)
Abstract
本发明涉及一种处理器核心,其包括:N位系统存储器接口;寄存器堆,其包括多个容量小于N位的通用寄存器($r);N位向量寄存器($a)组;在其指令集中,寄存器操作指令(VLOAD,VALIGN)可用以下参数执行:a)定义向量寄存器组中由多个连续的向量寄存器形成的缓冲区的值(BUF),以及b)对第一通用寄存器($rV)的引用,第一通用寄存器包含标识缓冲区内的向量寄存器($a(B+idx))的索引(idx);以及执行单元(10、20),其被配置为在执行寄存器操作指令时,在一个周期中读取或写入由定义缓冲区的值和被包含在第一通用寄存器($rV)中的索引标识的向量寄存器中的N位。
Description
技术领域
本发明涉及将数据块从存储器加载到处理器的寄存器中,其中数据块可以在未与存储器的数据总线对齐的地址处开始。
背景技术
在一些数据处理应用(例如流式传输)中,一个或多个数据流可以被存储在存储器中,并由处理器读回以用于进一步的处理。在这样的应用中,检索流数据的存储器读取操作不使用高速缓存,因此,每个读取操作具有系统时钟的若干周期的延迟。读取操作通常在循环中被执行,以创建处理流水线,在该流水线中可以无延迟地链接读取指令。
这种循环的核心是将数据总线的宽度的多个位加载到由加载指令明确指定的处理器寄存器中的指令。考虑到存储器延迟,第一个难题在于目的地寄存器的管理。事实上,在循环的迭代中指定的寄存器直到若干周期之后才接收到它们的数据,因此,下一次迭代不能指定相同的寄存器。第二个难题是,只有当存储器读取地址被对齐(即,是数据总线宽度的倍数)时,存储器访问总线才以最佳性能运行。事实上,在大多数情况下,应用软件的组织不允许遵守该对齐。
为了在通用处理器架构中克服第一个难题,使用模块化变量扩展(MVE)技术。根据这种技术,设计了其中若干读取迭代被展开以使用不同的目的地寄存器的宏循环。选择展开的迭代的次数以使执行时间大于最大存储器延迟。当存储器延迟高时,这种技术很难应用,这通常是流模式的情况,因为考虑到循环的其他操作也会消耗寄存器,可用寄存器的数量可能会变得不足。
一些处理器架构具有旋转寄存器组,其允许透明地展开循环。对循环寄存器组中的相同地址的逐次(successive)写入或读取导致对寄存器组中的连续寄存器(successiveregister)的访问。当到达最后一个寄存器时,从第一个寄存器再次开始连续。然后,可以使用单一访问操作来以传统方式编写循环,该单一访问操作使用被分配给旋转寄存器组的地址作为它的目的地。专利US7594102提到这种寄存器组。Hewlett-Packard的文档“HPL-PDArchitecture Specification(HPL-PD架构规范)”(其链接为https://www.hpl.hp.com/techreports/93/HPL-93-80R1.pdf)描述了一种包括旋转寄存器组的处理器架构。
为了克服与待处理的数据在存储器中通常不对齐的事实相关的第二个难题,例如在专利US7197625B1中已经提出了将两个连续存储器读取的值加载到专用寄存器中,指令可从该专用寄存器中提取用于处理器的正确对齐的数据。
发明内容
一般地,提供一种处理器核心,其包括:N位系统存储器接口;寄存器堆(registerfile),其包括多个容量小于N位的通用寄存器;N位向量寄存器组;在其指令集中,寄存器操作指令可用以下参数执行:a)定义向量寄存器组中由多个连续的向量寄存器形成的缓冲区的值,以及b)对第一通用寄存器的引用,该第一通用寄存器包含标识缓冲区内的向量寄存器的索引;以及执行单元,其被配置为在执行寄存器操作指令时,在一个周期中读取或写入由定义缓冲区的值和被包含在第一通用寄存器中的索引标识的向量寄存器中的N位。
寄存器操作指令可以是可用以下参数执行的向量加载指令:a)定义缓冲区的值,b)对包含索引的第一通用寄存器的引用,以及c)对包含源存储器地址的第二通用寄存器的引用;并且执行单元被配置为在执行向量加载指令时,将数据从被包含在第二通用寄存器中的地址处的存储器传递到由索引标识的向量寄存器。
寄存器操作指令可以是可用以下参数执行的对齐指令:a)定义缓冲区的值,b)对包含将标识缓冲区内的向量寄存器的索引和右移位计数组合的值的第一通用寄存器的引用,以及d)定义总共具有N位容量的向量寄存器或多个连续的通用寄存器的目的地;并且执行单元被配置为在执行对齐指令时,同时读取在索引处的两个连续的向量寄存器,将两个向量寄存器的拼接的内容向右移动右移位计数,并将经移位的内容的N个最低有效位写入目的地。
定义缓冲区的值可以对缓冲区的初始向量寄存器的级(rank)和缓冲区的大小进行编码,并且执行单元可以被配置为产生索引对缓冲区的大小取模,由此以旋转方式使用缓冲区。
还提供了一种对齐从存储器读取的数据的方法,其包括在处理器核心中在低级别实施的以下步骤:提供处理器核心的多个寄存器的旋转缓冲区;执行一系列加载指令以将数据块从存储器传递到缓冲区的第一连续寄存器,系列中的指令的数量是基于存储器读取延迟来选择的;以及执行循环,该循环包括:i)加载指令,用于将存储器块传递到缓冲区的连续寄存器,ii)对齐指令,用于同时访问缓冲区的两个先前加载的连续寄存器,并提取与两个连续寄存器重叠的数据块,以及iii)处理所提取的数据块的指令。
加载指令和对齐指令每一个可以用标识缓冲区的起点和大小的第一参数和引用标识缓冲区中的位置的索引的第二参数来执行,该方法包括更新索引以指定缓冲区中的连续寄存器的步骤。
附图说明
下面结合附图描述非限制性实施例,其中:
图1示出被配置为执行处理任意寄存器组(诸如旋转寄存器组)中的写入的特殊指令的处理器核心的中央处理单元的元件的框图;
图2描绘了被配置为执行处理来自寄存器组(诸如旋转寄存器组)的两个读取的数据对齐指令的图1的中央处理单元的附加元件的框图。
具体实施方式
如前所述,传统的旋转寄存器组未被设计为接收以流模式读取的数据,也不支持在循环的每次迭代所需的重新对齐操作。这种对齐包括例如拼接(concatenate)两个连续寄存器的内容以提取与两个寄存器重叠的数据块。
附带地,应当注意,存储器经常被设计为允许以一个字节的粒度访问数据,这原则上允许在数据总线上检索正确对齐的数据。然而,这种细粒度访问要花费至少两个周期来对齐总线上的数据。因此,最好使用花费单个周期的存储器访问,其使用最粗的访问粒度。尽管涉及后续的对齐操作,但总体上性能更好。
下文提出了一种特定结构,其允许对形成可由处理器指令集的专用低级指令管理的旋转寄存器组(或更一般地,缓冲区)的任意寄存器组进行操作。特别地,这些指令中的一个指令(在一个周期中)同时对已在不同的迭代中被加载的两个旋转寄存器进行操作。
图1示出了用于执行从存储器中的数据加载向量寄存器(称为VLOAD)的特殊指令的处理器核心的中央处理单元CPU的多个元件的框图。仅图示了对于理解指令的执行有用的哪些元件;处理器核心的许多其他常规元件未被描述。
CPU通过数据总线D连接到共享存储器MEM。总线D的宽度N例如等于256位,即32字节。存储器MEM由地址总线A控制,地址总线A可以具有64位的大小,从而以一个字节的粒度访问存储器。
CPU包括通用寄存器组GPRF(通用寄存器堆),其用于存储地址、常用指令的操作数和常用指令的结果。每个寄存器由$rX表示(其中,X是寄存器级),并且具有例如64位的容量。寄存器可以被组织成四个为一个bank(体),bank中的每个寄存器通过相应的一组64条线连接到数据总线D。寄存器也被连线(未详细示出)以可由实施处理器指令集中的各种指令的硬件执行单元单独访问。
这种寄存器组织允许执行单元通过指定单独的寄存器来对64位数据进行操作,或者通过指定寄存器四元组来执行256位数据块传递。
CPU还包括向量寄存器VRF组(向量寄存器堆),其通常在SIMD(单指令多数据)模式下使用以存储待处理的若干数据。每个向量寄存器由$aX表示(其中,X是寄存器的级),并且具有256位(即它所连接的数据总线的宽度)的容量。向量寄存器$a可以是通用寄存器$r的超集,每个向量寄存器则与四个通用寄存器的bank相对应。
多个连续的向量寄存器$aB至$a(B+s-1)被VLOAD指令解释为缓冲区BUF。缓冲区可以从级B的任意向量寄存器开始,并且具有任意大小s,s通常是偶数。
执行单元10被设计为实现向量寄存器加载指令VLOAD的执行。VLOAD指令传递三个参数,即:
值BUF,其对起始级(或基数)B和缓冲区BUF的大小s编码,
对通用寄存器$rV的引用,该通用寄存器$rV包含标识缓冲区BUF中的当前向量寄存器的索引idx,以及
对包含源存储器地址@src的通用寄存器$rS的引用。
当执行VLOAD指令时,执行单元检索在所引用的寄存器$rV中包含的索引idx和在所引用的寄存器$rS中包含的源存储器地址@src。为了与稍后讨论的VALIGN指令保持一致,在寄存器$rV中存储的索引是字节数。为了获得指示缓冲器中的向量寄存器位置的索引idx,寄存器$rV的内容除以32,如图所示,这相当于将寄存器内容向右移位5个位置。
地址@src通过总线D被提供给存储器以读取256个对应位,这些位将被加载到与索引idx相对应的向量寄存器$a(B+idx)中。如图所示,向量寄存器的选择可以通过将索引idx与在VLOAD指令的第一个参数BUF中包含的基数B相加来实现。为了使缓冲区循环,索引idx被调整为对也被包含在参数BUF中的缓冲区的大小s取模。基数B和大小s可以被编码在参数BUF的两个相应字段中。在某些情况下可以用作即时值的指令参数通常具有与通用寄存器相同的大小,在此为64位。
图2示出了用于执行特殊对齐指令(被表示为VALIGN)的附加CPU元件的框图。
出于VALIGN指令的目的,奇数和偶数向量寄存器对于CPU执行单元可经由两个单独的256位总线访问,从而允许偶数寄存器(例如,$a0)和奇数寄存器(例如,$a1)同时被读取或写入。
执行单元20被设计为实现VALIGN指令的执行。VALIGN指令传递三个参数,即:
目的地D,其标识能够接收256位的资源,例如,通用寄存器的四元组,例如$r4到$r7,或者向量寄存器,
值BUF,对于VLOAD指令,其对基数B和缓冲区BUF的大小s进行编码,以及
对通用寄存器$rV的引用,其对标识缓冲区BUF中的当前向量寄存器(例如$a0)的索引idx以及右移位计数rsc进行编码。
当执行VALIGN指令时,执行单元检索所引用的寄存器$rV的内容。对于VLOAD指令,在该寄存器中编码的索引idx结合参数BUF使用,以指定缓冲区中的向量寄存器,例如$a0。此外,紧随其后的向量寄存器$a1也被隐含地指定。将所指定的向量寄存器$a0和$a1的内容拼接,其中寄存器$a0在右侧,即作为最低有效位。换句话说,权重从右向左增加。拼接的内容被同时呈现给512位输入右移位电路SHIFT-R。该电路执行将512个输入右移位取自所引用的寄存器$rV的计数rsc,并在其输出呈现经移位的拼接的内容的256个最低有效位。因此,与寄存器$a0和$a1重叠的256位有用数据块(如灰色所示)被呈现在移位器电路的256个输出位上。
移位器的输出被加载到由目的地参数D指定的寄存器中,这里是寄存器体$r4至$r7。可替代地,移位器的输出可以被加载到由D参数指定的另一个向量寄存器中。
实际上,右移位计数rsc具有存储器寻址的粒度,这里是一个字节。由于存储器总线D的宽度为32字节,因此,移位具有31x8位或31字节的最大值,该值可用5位编码。因此,计数rsc可以被编码在寄存器$rV的5个最低有效位中,而索引idx被编码在剩余位中。如图2所示,索引idx和计数rsc可以被形式化为寄存器$rV的内容除以32的商Q和余数R。
VLOAD和VALIGN指令通过在循环中联合使用它们处理一个或多个数据流来揭示它们的关注,每个流与数据缓冲器相关联。处理单个流的循环的示例在下表1中示出。该循环被设计为将被存储在存储器中的地址@src的未对齐数据块复制到同一存储器中的地址@dst。块未被对齐的事实通过地址@src反映,其5个最低有效位传递非零值,例如8。
寄存器$r0是由VALIGN指令所引用的寄存器$rV,对缓冲器索引和移位计数进行编码。
寄存器$r1是由VLOAD指令所引用的寄存器$rS,包含存储器读取地址。
寄存器$r2是由VLOAD指令所引用的寄存器$rV,包含缓冲器索引。
[表1]
在第1行,寄存器$r0接收地址@src与值31之间的逐位AND(与)。换句话说,除了5个最低有效位之外,地址@src的所有位被取消。因此,在这个例子中,寄存器$r0接收值8。
在第2行,寄存器$rl接收@src地址与值-32之间的逐位AND,其以二进制补码格式编码以表示负数。这取消了五个最低有效位,并在寄存器$r1中存储在数据总线上对齐的地址。
在第3行和第4行,寄存器$r2和$r3分别被初始化为值0和地址@dst。
在第5行,使用以下项执行第一VLOAD指令:(i)由寄存器$a0到$a3形成的缓冲区,(ii)在寄存器$r2中包含的索引(等于0),其指定寄存器$a0,以及(iii)从在寄存器$r1中包含的地址开始的32字节(256位)数据块。该地址与在有用数据块开始的位置(+8)之前的32字节边界对齐。
在第6行和第7行,每个寄存器$r2和$r1的内容被递增值32,以分别指定缓冲区的下一个寄存器$a1和要从存储器读取的下一个32字节块。
从第8行至第13行重复第5行至第7行的操作两次。结果,从存储器中对缓冲区中的前三个向量寄存器$a0至$a2加载连续的32字节块。
以下从第14行到第20行的操作在索引i的循环中执行,可以无限地迭代。
在第14行到第16行,再次重复第5行到第7行的操作。在第一次迭代中,这将下一个32字节块加载到缓冲区的最后一个寄存器$a3中。缓冲区已满。递增寄存器$r2的内容将索引值更改为4,指向缓冲区以外。实际应用的索引idx是对缓冲区的大小(这里是4)取模计算的,如图1所示,以使得idx的值返回到0。
在第17行,使用以下项执行VALIGN指令:(i)通用寄存器体$r8到$r11以接收经对齐的数据块,(ii)缓冲区$a0到$a3,以及(iii)在寄存器$r0中所包含的索引和计数。
在第一次迭代中,根据第1行的初始化,寄存器$r0包含值8。索引idx是0,右移位rsc是8。寄存器$a0和$a1的拼接的内容被右移位8个字节,并且经移位的结果被写入寄存器$r8到$r11。
假定在给定存储器延迟下,VALIGN指令在存储器数据已经有时间到达寄存器$a0和$a1的时间执行。第8行的VLOAD指令是将数据加载到第二寄存器$a1的指令,并且它在10个周期前被执行。因此,该循环允许存储器延迟高达10个周期。如果要补偿更大的延迟,则将使用更大的缓冲区大小,这增加了用于预填充缓冲区的循环“前导(preamble)”的周期数。
在第18行,寄存器$r0的内容被递增32。在第一次迭代中,寄存器$r0被更新到值40,对等于1的索引idx和仍然等于8的右移位rsc(该移位通常在循环中保持不变)编码。
在第19行,寄存器$r8至$r11的内容被写入在寄存器$r3中包含的地址,即@dst。
在第20行,寄存器$r3的内容被递增32,以更新将在下一次迭代中被写入存储器的数据块的目的地地址。
在循环的第二次迭代中,VLOAD指令将对应的存储器内容加载到索引为4对4取模的向量寄存器$a0中,覆写由VALIGN指令在前一次迭代中使用的值。第二次迭代中的VALIGN指令使用下一个向量寄存器$a1和$a2。以此类推。
应当注意,VLOAD和VALIGN指令通过具体地使用显式索引idx并在软件中处理该索引来将向量寄存器组定义和管理为旋转寄存器组。硬件适于简化旋转寄存器管理的一些细节(诸如模s运算以产生有效的索引idx),并在一个周期中实现两个连续的向量寄存器(512位)的内容的对齐(针对偶数寄存器和奇数寄存器的单独访问线)。这些指令还允许在向量寄存器组中任意地定义缓冲区(位置和大小)。
到目前为止描述的VLOAD指令读取256位块以将它完整地传递到256位寄存器中。典型的存储器结构通常还允许读取较小的块,诸如128、64、32、16或8位。因此,可以设想该VLOAD指令的扩展,其从存储器中读取较小的块以将它们传递到目的地寄存器的指定位置,例如读取可被写入在256位目的地寄存器的位置0、64、128或192的64位。目的地位置可以被编码在由VLOAD指令引用的寄存器$rV的五个最低有效位中。这种以不同的目的地位置执行多次的VLOAD指令允许存储器中的不相交的数据块被一起聚集在同一个向量寄存器中。
在由显式索引提供的灵活性不是必需的实施例中,对齐功能仍然可以基于常规的旋转缓冲器结构来实现,例如,在文件“HPL-93-80HPL-PD Architecture Specification(HPL-93-80HPL-PD架构规范)”中描述的,被称为RRB(旋转寄存器缓冲器)。这种旋转寄存器缓冲器的特点是,用于访问寄存器的地址范围是寄存器环上的槽(slot),其在每次执行迭代循环的分支时旋转一个寄存器,这暗示所有可用的旋转缓冲器以同样的方式演进。除了与现代CPU架构趋势相矛盾的在分支指令中实施的开销之外,该解决方案需要使用复杂且特定的寄存器分配技术,如在文档“HPL-92-48Register Allocation for ModuloScheduled Loops:Strategies,Algorithms and Heuristics(用于模调度循环的HPL-92-48寄存器分配:策略、算法和启发式)”中描述的。
采用这种旋转寄存器,循环前导在旋转缓冲器中执行具有相同地址(例如4)的三个VLOAD指令以及存储器中的读取地址的三个对应更新。在循环内部,执行新的VLOAD指令,地址也是4。在执行该指令后,旋转缓冲器被旋转以在地址4后面提供新寄存器,并且从存储器中读取的四个块在旋转缓冲器的地址0到3处可得。
为了执行移位,在循环中随后执行的VALIGN指令需要在4和3个周期前写入的两个块,这两个块在地址4-4=0和4-3=1处可得。对应的执行单元可以被配置为同时访问在地址0和1后面的寄存器,而不会导致寄存器的旋转。为此,可以像以前一样有线连接寄存器,以使得奇数和偶数寄存器可以被单独和同时访问。
该实施例允许编写更紧凑的代码,因为省略用于更新显式索引的指令。
Claims (6)
1.一种对齐从存储器中读取的数据的方法,包括在处理器核心中在低级别实施的以下步骤:
提供所述处理器核心的多个寄存器的旋转缓冲区;
执行一系列加载指令以将数据块从所述存储器传递到所述缓冲器的第一连续寄存器,所述系列中的指令的数量是基于存储器读取延迟来选择的;以及
执行循环,所述循环包括:
i)加载指令,其被配置为将存储块传递到所述缓冲区的连续寄存器,
ii)对齐指令,其被配置为同时访问所述缓冲区的两个先前加载的连续寄存器,并提取与所述两个连续寄存器重叠的数据块,以及
iii)处理所提取的数据块的指令。
2.根据权利要求1所述的方法,其中,所述加载指令和所述对齐指令每一个用第一参数和第二参数执行,所述第一参数定义所述缓冲器的起点和大小,所述第二参数引用标识所述缓冲器中的位置的索引,所述方法包括以下步骤:更新所述索引以指定所述缓冲器中的连续寄存器。
3.一种处理器核心,包括:
N位系统存储器接口;
寄存器堆,其包括多个容量小于N位的通用寄存器;
N位向量寄存器组;
在其指令集中,寄存器操作指令可用以下参数执行:
a)定义所述向量寄存器组中由多个连续的向量寄存器形成的缓冲区的值,以及
b)对第一通用寄存器的引用,所述第一通用寄存器包含标识所述缓冲区内的向量寄存器的索引;以及
执行单元,其被配置为在执行寄存器操作指令时,在一个周期中读取或写入由定义所述缓冲区的所述值和被包含在所述第一通用寄存器中的所述索引所标识的向量寄存器中的N位。
4.根据权利要求3所述的处理器核心,其中,所述寄存器操作指令是可用以下参数执行的对齐指令:
a)定义所述缓冲区的所述值,
b)对所述第一通用寄存器的所述引用,所述第一个通用寄存器包含将标识所述缓冲区内的所述向量寄存器的所述索引和右移位计数组合的值,以及
d)目的地,其定义总共具有N位容量的向量寄存器或者多个连续的通用寄存器;以及
所述执行单元被配置为在执行对齐指令时,同时读取在所述索引处的两个连续的向量寄存器,将所述两个向量寄存器的拼接的内容向右移动所述右移位计数,以及将经移位的内容的N个最低有效位写在所述目的地处。
5.根据权利要求3所述的处理器核心,其中,所述寄存器操作指令是可用以下参数执行的向量加载指令:
a)定义所述缓冲区的所述值,
b)对包含所述索引的所述第一通用寄存器的所述引用,以及
c)对包含源存储器地址的第二通用寄存器的引用;以及
所述执行单元被配置为在执行向量加载指令时,将数据从在被包含在所述第二通用寄存器中的所述地址处的所述存储器传递到由所述索引标识的所述向量寄存器。
6.根据权利要求3所述的处理器核心,其中,定义所述缓冲区的所述值对所述缓冲区的初始向量寄存器的级和所述缓冲区的大小进行编码,并且所述执行单元被配置为产生所述索引对所述缓冲区的大小取模,由此以旋转方式使用所述缓冲区。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2202950A FR3134206A1 (fr) | 2022-03-31 | 2022-03-31 | Système de gestion d'un groupe de registres tournants défini de façon arbitraire dans des registres de processeur |
FR2202950 | 2022-03-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116893989A true CN116893989A (zh) | 2023-10-17 |
Family
ID=82694033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310318068.3A Pending CN116893989A (zh) | 2022-03-31 | 2023-03-29 | 管理在处理器寄存器堆中任意定义的旋转寄存器组的系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230315472A1 (zh) |
EP (1) | EP4254176A1 (zh) |
CN (1) | CN116893989A (zh) |
FR (1) | FR3134206A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
EP0918290A1 (en) * | 1997-11-19 | 1999-05-26 | Interuniversitair Micro-Elektronica Centrum Vzw | Method for transferring data structures from and to vector registers of a processor |
GB2338094B (en) * | 1998-05-27 | 2003-05-28 | Advanced Risc Mach Ltd | Vector register addressing |
US20040073773A1 (en) * | 2002-02-06 | 2004-04-15 | Victor Demjanenko | Vector processor architecture and methods performed therein |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US7196708B2 (en) * | 2004-03-31 | 2007-03-27 | Sony Corporation | Parallel vector processing |
US7594102B2 (en) | 2004-12-15 | 2009-09-22 | Stmicroelectronics, Inc. | Method and apparatus for vector execution on a scalar machine |
-
2022
- 2022-03-31 FR FR2202950A patent/FR3134206A1/fr active Pending
-
2023
- 2023-03-21 EP EP23163156.5A patent/EP4254176A1/en active Pending
- 2023-03-29 CN CN202310318068.3A patent/CN116893989A/zh active Pending
- 2023-03-30 US US18/192,947 patent/US20230315472A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
FR3134206A1 (fr) | 2023-10-06 |
EP4254176A1 (en) | 2023-10-04 |
US20230315472A1 (en) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10229089B2 (en) | Efficient hardware instructions for single instruction multiple data processors | |
US9792117B2 (en) | Loading values from a value vector into subregisters of a single instruction multiple data register | |
US9342314B2 (en) | Efficient hardware instructions for single instruction multiple data processors | |
US6052766A (en) | Pointer register indirectly addressing a second register in the processor core of a digital processor | |
TWI463332B (zh) | 在單一指令多資料之資料處理器中提供擴充尋址模式 | |
EP2972788B1 (en) | Efficient hardware instructions for single instruction multiple data processors | |
TW200527203A (en) | A data processing apparatus and method for moving data between registers and memory | |
EP1939727A2 (en) | System and method for performing masked store operations in a processor | |
US20140047218A1 (en) | Multi-stage register renaming using dependency removal | |
US20060010304A1 (en) | Systems for loading unaligned words and methods of operating the same | |
EP4152146A1 (en) | Data processing method and device, and storage medium | |
US7512771B2 (en) | Mapping circuitry and method comprising first and second candidate output value producing units, an in-range value determining unit, and an output value selection unit | |
US20030159021A1 (en) | Selected register decode values for pipeline stage register addressing | |
US10567163B2 (en) | Processor with secure hash algorithm and digital signal processing method with secure hash algorithm | |
CN113924550A (zh) | 直方图运算 | |
JP4955149B2 (ja) | ビットfifoを有するディジタル信号プロセッサ | |
EP1193594B1 (en) | Register renaming apparatus and processor | |
CN106610817B (zh) | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 | |
CN116893989A (zh) | 管理在处理器寄存器堆中任意定义的旋转寄存器组的系统 | |
US8572147B2 (en) | Method for implementing a bit-reversed increment in a data processing system | |
CN111984314A (zh) | 使用位反转顺序的矢量存储 | |
US11537522B2 (en) | Determining a tag value for use in a tag-guarded memory | |
CN105404588B (zh) | 处理器和其中生成数据存储操作的一个或多个地址的方法 | |
CN118475912A (zh) | 用于处理未对准数据的处理设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |