CN114090079B - 串操作方法、串操作装置以及存储介质 - Google Patents
串操作方法、串操作装置以及存储介质 Download PDFInfo
- Publication number
- CN114090079B CN114090079B CN202111356679.4A CN202111356679A CN114090079B CN 114090079 B CN114090079 B CN 114090079B CN 202111356679 A CN202111356679 A CN 202111356679A CN 114090079 B CN114090079 B CN 114090079B
- Authority
- CN
- China
- Prior art keywords
- address
- value
- string
- source address
- register
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000012546 transfer Methods 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000003247 decreasing effect Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000010977 unit operation Methods 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
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种串操作方法、串操作装置以及存储介质,该串操作方法包括:获取源地址以及地址偏移值;将源地址与地址偏移值相加得到目的地址;加载源地址指向的数据;将源地址指向的数据存至目的地址。该串操作方法使得串操作方法的执行过程中寄存器的占用时间缩短,从而缓解了寄存器资源紧张的问题。
Description
技术领域
本公开的实施例涉及一种串操作方法、串操作装置以及存储介质。
背景技术
当前,随着信息技术的发展,越来越多的数据需要有效而快速的计算处理。数据的计算处理对处理器的性能要求越来越高,设计生成高性能的处理器成为亟待解决的问题。处理器的性能优化需要对处理器本身的结构做出有效改进,例如改进指令的执行方式、改进处理器的功耗、改进处理器的并行计算能力等等。
发明内容
本公开一些实施例提供了一种串操作方法,该方法包括:获取源地址以及地址偏移值;将所述源地址与所述地址偏移值相加得到目的地址;加载所述源地址指向的数据;将所述源地址指向的数据存至所述目的地址。
例如,本公开一些实施例提供的一种串操作方法还包括:获取计数器寄存器的值,响应于所述计数器寄存器的值大于0,修改所述源地址并将所述计数器寄存器的值减1,并进入下一个操作循环。
例如,在本公开一些实施例提供的一种串操作方法中,所述修改所述源地址包括:获取方向标志寄存器的值;响应于所述方向标志寄存器的值为第一值,将所述源地址增加一个步长,或者,响应于所述方向标志寄存器的值为第二值,将所述源地址减少一个步长。
例如,本公开一些实施例提供的一种串操作方法还包括:获取所述串操作的类型,根据所述串操作的类型确定所述步长。
例如,在本公开一些实施例提供的一种串操作方法中,所述串操作的类型包括:字节型、字型、双字型或四字型。
例如,在本公开一些实施例提供的一种串操作方法中,所述加载所述源地址指向的数据包括:获取源地址指向的数据;将所述源地址指向的数据暂存至选择的寄存器。
例如,本公开一些实施例提供的一种串操作方法还包括:释放暂存所述源地址指向的数据的所述选择的寄存器。
例如,在本公开一些实施例提供的一种串操作方法中,所述串操作包括流水线宽度循环,所述流水线宽度循环由多个串操作宽度循环合并。
例如,在本公开一些实施例提供的一种串操作方法中,所述获取地址偏移值包括:根据所述目的地址与所述源地址的差得到所述地址偏移值。
本公开一些实施例提供还了一种串操作装置,该串操作装置包括:获取模块,配置为获取地址偏移值以及获取源地址;目的地址确定模块,配置为将所述源地址与所述地址偏移值相加得到目的地址;操作处理模块,配置为加载所述源地址指向的数据,并将所述源地址指向的数据存至所述目的地址。
例如,本公开一些实施例提供的一种串操作装置还包括:循环控制模块,配置为获取计数器寄存器的值,响应于所述计数器寄存器的值大于0,修改所述源地址并将所述计数器寄存器的值减1,以进入下一个操作循环。
例如,在本公开一些实施例提供的一种串操作装置中,所述循环控制模块还被配置为:获取方向标志寄存器的值;响应于所述方向标志寄存器的值为第一值,将所述源地址增加一个步长,或者响应于所述方向标志寄存器的值为第二值,将所述源地址减少一个步长。
例如,在本公开一些实施例提供的一种串操作装置中,所述循环控制模块还被配置为:获取所述串操作的类型,根据所述串操作的类型确定所述步长。
例如,在本公开一些实施例提供的一种串操作装置中,所述操作处理模块还被配置为:获取源地址指向的数据;将所述源地址指向的数据暂存至选择的寄存器。
例如,在本公开一些实施例提供的一种串操作装置中,所述操作处理模块还被配置为:在所述将所述源地址指向的数据存至所述目的地址之后,释放暂存所述源地址指向的数据的所述选择的寄存器。
例如,在本公开一些实施例提供的一种串操作装置中,所述获取模块还被配置为:根据所述目的地址与所述源地址的差得到所述地址偏移值。
本公开一些实施例提供还了一种串操作装置,包括:存储器,用于非暂时性存储计算机可执行指令;以及处理器,用于运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理器运行时执行上述任一实施例所述的串操作方法。
本公开一些实施例提供还了一种非暂时性存储介质,非暂时性地存储计算机可执行指令,其中,当所述计算机可执行指令由计算机执行时,执行根据上述任一实施例所述的串操作方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1是一种串传送指令的执行过程的示意图;
图2是一种串传送指令的执行过程的流程图;
图3是本公开至少一实施例提出的一种串操作方法的流程图;
图4是图3中串操作方法的修改源地址的操作方法的流程图;
图5是本公开至少一实施例提出的一种示例性的串操作装置的示意图;以及
图6为本公开至少一实施例提出的一种串操作处理装置的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部(元)件的详细说明。当本公开实施例的任一部(元)件在一个以上的附图中出现时,该部(元)件在每个附图中由相同或类似的参考标号表示。
存储器中地址连续的若干单元的字符或数据称为字符串或数据串。串操作指令就是用来对数据串中每个字符或数据进行操作的指令,该数据串为串操作指令的目标数据。串操作指令既可处理字节(byte)串,也可处理字(word)串,并在每完成一个字节(或字)的操作后能够自动修改指针,以便执行下一个字节(或字)的操作。
例如,串操作指令可以包括串传送指令(MOVS)。例如,串传送指令可以把由源变址(Source Index,SI)寄存器指向的数据段(Data Segment,DS)中的一个字(Word)或字节(Byte)传送到由目的变址(Destination Index,DI)寄存器指向的附加段(Extra Segment,ES)中的一个字或字节中去,同时根据方向标志(DF)寄存器的值以及数据格式(字或字节)对SI寄存器和DI寄存器的值进行修改。当该串传送指令与前缀REP联用时,通过多次执行该串传送指令可将数据段中的整串数据传送到附加段中去。例如源串在数据段中,目的串在附加段中,但源串允许使用段跨越前缀来修改。在与重复执行前缀REP联用时先把数据串的长度送到计数器(Count,CX)寄存器中,以便控制串传送指令执行到结束,其中,根据不同的处理器的位宽,计数器寄存器可以是扩展计数器寄存器,例如处理器位宽为64位时,计数器寄存器可以是扩展计数器寄存器(RCX)。
串传送指令的程序结构如下:
设置源串指针;
设置目的串指针;
设置重复操作次数(仅执行1次时可省略);
设置操作方向(Direction Flag,DF);
重复前缀(REP(repeat)/REPZ(repeat on zero)/REPNZ(repeat on non-zero)),仅执行1次时可省略。
图1是一种串传送指令的执行过程的示意图。如图1所示,串传送指令的执行可以先做好以下准备工作:将存放于数据段中的源串首地址(例如对应于DF的值表示为反向传送时,则为末地址)放入SI寄存器中;将要存放数据串的附加段中的目的串首地址(例如对应于DF的值表示为反向传送时,则为末地址)放入DI寄存器中;将数据串长度放入CX寄存器,使得数据串的长度为计数器寄存器的值以及建立方向标志,以表明数据串的传送方向。串传送指令的执行准备工作完成后便开始执行串传送指令,串传送指令在执行过程中可以根据数据段的段地址和源变址寄存器的值,以及参考基地址计算出数据串中对应的数据在内存中的地址,同理,也可以根据附加段的段地址和目的变址寄存器的值,并参考基地址计算出数据串中对应的数据要被传送到的内存中的地址。串传送指令每次会将指定宽度的数据由SI指向的地址向DI指向的地址传输,其中指定宽度可以是***的流水线宽度,例如16字节、32字节或者64字节等。串传送指令执行的总次数为数据串长度,即CX寄存器的值。
图2是一种串传送指令的执行过程的流程图。图1中的串传送指令执行过程可以通过图2所示的流程图进行说明。
如图2所示,当串传送指令在执行时进入串传送操作循环后,根据源变址寄存器的值加载源变址寄存器指向的内存地址中的数据,并将该数据暂时存放在寄存器中;之后将该寄存器中暂时存放的数据存入到目的变址寄存器指向的内存地址中;将源变址寄存器和目的变址寄存器按照方向标志寄存器指定的方向移动,例如对应于DF的值表示为正向传送时,源变址寄存器和目的变址寄存器的值各自增加一个单位,DF的值表示为反向传送时则各自减少一个单位;减小扩展计数器寄存器的值,直到扩展计数器寄存器的值为零,即数据串传送完毕,从而结束整个串传送操作循环。
每条串操作指令可以按照指令给定的数据宽度加载或存储的数据,这种按照指令给定的数据宽度进行的串操作指令的循环为慢速循环(slow loop)。由于每条指令加载或存储的数据宽度最大可以是流水线宽度,因此为了最大化利用流水线,可以将多个串操作指令合并为数据宽度为流水线宽度的一个串操作指令,从而使得串操作指令单次执行时能够传送更多的数据,减少了总传送次数,使得串操作指令执行的速度更快,这种将多个串操作指令合并为流水线宽度的循环为快速循环(fast loop)。
但是,不论串操作指令处于慢速循环模式还是快速循环模式,每次循环都会执行上述图1和图2所示的过程,也即都会有四条微指令(micro-operation,Uop):
(1)加载源变址寄存器指向的数据,
(2)将数据存储到目的变址寄存器指向的内存地址,
(3)减小计数器寄存器的值,
(4)增加或减少源变址寄存器和目的变址寄存器的值。
上述的串操作指令在执行过程中加载和存储数据均需要用到寄存器来临时存放数据,进入快速循环后,由于数据宽度较大,例如,加载和存储数据均需要用到长度更大的浮点寄存器来临时存放数据。
上述的串操作指令在每次操作循环中需要两次使用寄存器,从而需要较长时间占用寄存器,在一些情况下会造成寄存器资源的紧张,尤其是在快速循环模式下会造成浮点寄存器资源的紧张。
本公开至少一实施例提出了一种串操作方法,该串操作方法用于处理器。该串操作方法包括:获取源地址以及地址偏移值;将源地址与地址偏移值相加得到目的地址;加载源地址指向的数据;将源地址指向的数据存至目的地址。
本公开的至少一个实施例可以将串操作指令的加载和存储两步微操作合并为一条微操作,使得串操作指令的执行过程中寄存器的占用时间缩短,从而缓解了寄存器资源紧张的问题,并且在至少一个实施例中,可以减少串操作指令的微操作数量,减少乱序窗口展开的浪费,加快串操作指令的执行速度。
图3是本公开至少一实施例提出的一种串操作方法的流程图。如图3所示,该串操作方法至少包括如下四个步骤S101~S104:
步骤S101,获取源地址以及地址偏移值;
步骤S102,将源地址与地址偏移值相加得到目的地址;
步骤S103,加载源地址指向的数据;
步骤S104,将源地址指向的数据存至目的地址。
在本公开的至少一个实施例中,除了上述四个步骤S101~S104之外,在一些情况下,上述串操作方法还可以包括如下所述步骤S105~S107:
步骤S105,获取计数器寄存器的值。
步骤S106,响应于计数器寄存器的值大于1,修改源地址并将计数器寄存器的值减1,并进入下一个操作循环。该下一个操作循环包括再针对剩余而未***作部分的数据重复步骤S101~步骤S104,由此直到数据都***作。
步骤S107,在将源地址指向的数据存至目的地址之后,释放暂存源地址指向的数据的选择的寄存器。
例如,步骤S101的源地址可以是源变址寄存器的值,获取地址偏移值可以根据目的地址与源地址的差得到地址偏移值。
例如,步骤S102中,可以提前根据源地址和地址偏移值通过相加计算出目的地址,从而不必专门获取目的地址(例如通过目的变址寄存器获取目的地址)。
例如,步骤S103可以包括获取源地址指向的数据,获取源地址指向的数据可以通过获取源变址寄存器的值获取源地址,进而根据源地址在存储器(例如RAM)中读取源地址对应的数据。在一些实施例中,步骤S103还可以包括将源地址指向的数据暂存至选择的寄存器,其中,该选择的寄存器可以是用于临时存放数据的数据段,在数据宽度较宽(例如快速循环对应的流水线宽度)时也可以是浮点寄存器,本公开对此不做限定。
例如,上述四个步骤S101~S104是串操作方法进行一次操作的循环,当串操作方法进行多次操作循环时(例如串操作的对象数据量较大时),可以将串操作的对象数据的长度存入计数器寄存器,并通过更新计数器寄存器的值的方式控制多次循环操作。
例如,步骤S105中,在进行下一个操作循环之前,先检查对象数据是否全部***作完毕,例如可以通过获取计数器寄存器的值来判断对象数据是否全部***作完毕。
例如,步骤S106中,若计数器寄存器的值大于0,则说明对象数据未操作完毕,可以进行下一次循环操作。在进入下一次循环操作之前,可以修改源地址以便将源地址指针指向下一次循环对应的数据,并将计数器寄存器的值减1,以表示即将进入下一个循环。之后,可以进入下一个操作循环,完成之后可以再次重复步骤S105以及步骤S106,直到所有的对象数据均***作完毕。
例如,步骤S107在将源地址指向的数据存至目的地址之后,可以释放暂存源地址指向的数据的选择的寄存器。由于已经将数据存放至目的地址指向的存储器中的对应位置,暂时(临时)存放在选择的寄存器中的数据可以清除掉,以便腾出处理器上寄存器的资源。
例如,图3所示的串操作方法可以包括流水线宽度循环(例如快速循环),流水线宽度循环由多个串操作宽度循环合并,该串操作的单次操作中的数据宽度可以是对应的串操作(串操作指令)的每次操作中不可分割的数据大小。
例如,上述串操作方法可以是串传送指令。
图4是图3中串操作方法的修改源地址的操作方法的流程图。图4所示的串操作方法可以用于图3所示的步骤S106中进行“修改源地址”的操作。如图4所示,该修改源地址的操作方法包括如下三个步骤S201~S203:
步骤S201,获取方向标志寄存器的值;
步骤S202,响应于方向标志寄存器的值为第一值,将源地址增加一个步长,或者,响应于方向标志寄存器的值为第二值,将源地址减少一个步长;
步骤S203,获取串操作的类型,根据串操作的类型确定步长。
例如,步骤S201中方向标志寄存器的值可以是正向值和反向值两个状态,其中正向值对应于本公开中的方向标志寄存器值的第一值;反向值对应于本公开中的方向标志寄存器值的第二值。
例如,步骤S202中的步长可以是快速循环中的流水线宽度,也可以是慢速循环中的串操作指令的每次操作中不可分割的数据大小。例如,串传送指令也可以根据每次操作中不可分割的数据大小进一步分为字节(byte)型、字(word)型、双字(double word)型或四字(quartered word)型。例如,串传送指令可以包括字节串传送指令(MOVSB)、字串传送指令(MOVSW)、双字串传送指令(MOVSD)以及四字串传送指令(MOVSQ)等不同数据类型的串操作指令,这四种串操作指令每次操作时对应的数据大小可以分别是1字节、2字节、4字节和8字节,例如可以根据字节串传送指令每次操作时对应的数据大小1字节确定单位操作宽度也为1字节。
下面将结合一个具体但非限制性的示例说明本公开至少一实施例提出的一种串操作方法、用于执行该串操作方法的串操作装置。
例如,本公开一些实施例提出的串操作方法可以是串传送指令。串传送指令进入快速循环模式后,在加载源变址寄存器指向的数据时,由于多个串传送指令合并后的数据宽度较大,会先将源变址寄存器指向的数据暂存在浮点寄存器中,之后再将浮点寄存器中的数据存入到目的变址寄存器指向的地址中。但这样做会长时间占用浮点寄存器的资源,由于处理器同时处理的指令数目较多,在某些情况下会造成浮点资源的紧张,造成处理器整体性能下降。为缓解这种情况,可以考虑将串传送指令的加载源变址寄存器指向的数据和将浮点寄存器中的数据存入到目的变址寄存器指向的地址合并为一条微操作。根据串传送指令的特性,源变址寄存器指向的地址(例如源变址寄存器的值)与目的变址寄存器指向的地址(例如目的变址寄存器的值)之间的偏移值为固定值,即源变址寄存器-目的变址寄存器=N,其中N为固定值。因此可以在串传送指令执行之前(例如进入快速循环之前)将该偏移值计算出来并存储到寄存器中。在执行该串传送指令时,该串传送指令首先会将源变址寄存器指向的地址加上执行之前计算出的偏移值即可得到目的变址寄存器指向的地址,之后该串传送指令会将源变址寄存器指向的地址中的数据读取出来,最后该串传送指令会将源变址寄存器指向的地址加上偏移值计算出目的变址寄存器指向的地址,并将数据存到目的变址寄存器指向的地址中,从而实现将两条指令合并成一条指令。在串传送指令的快速循环中,将串传送指令的加载源变址寄存器指向的数据和将浮点寄存器中的数据存入到目的变址寄存器指向的地址两条微操作合并为一条微操作后,可不再长时间使用浮点寄存器临时存储数据,减少了浮点寄存器的使用,从而降低了例如浮点资源紧张的出现频率。
例如,本公开一些实施例提出的串操作方法还可以用于串传送指令的慢速循环,串传送指令进入慢速循环模式的操作过程与上述的快速操作过程相似,区别在于加载源变址寄存器指向的数据的微操作使用的寄存器不是浮点寄存器,但可以实现不再长时间使用寄存器临时存储数据,减少了寄存器的使用。
图5是本公开至少一实施例提出的一种示例性的串操作装置的示意图,该串操作装置可以用于执行图3所示的串操作方法。
如图5所示,串操作装置10至少包括获取模块110、目的地址确定模块120、以及操作处理模块130。
例如,在一些情况下,串操作装置10还可以包括循环控制模块140。
例如,获取模块110配置为可以根据串传送指令本身的性质,通过目的地址与源地址之间的差值获取的地址偏移值;获取模块110可以通过读取源变址寄存器的值获取源地址。
例如,目的地址确定模块120配置为通过将源地址与目地址偏移值相加得到目的地址,从而不必专门获取目的地址。
例如,在一些示例中,操作处理模块130配置为可以加载源地址指向的数据,并将源地址指向的数据存至上述通过源地址与目地址偏移值相加得到的目的地址。
例如,在一些示例中,操作处理模块130还配置为可以获取源地址指向的数据,并将源地址指向的数据暂存至选择的寄存器,其中选择的寄存器可以是数据段寄存器,也可以是浮点寄存器。
例如,在一些示例中,操作处理模块130还配置为可以在将源地址指向的数据存至目的地址之后,释放暂存源地址指向的数据的选择的寄存器,由于已经将数据存放至目的地址指向的存储器中的对应位置,暂时(临时)存放在选择的寄存器中的数据可以清除掉,以便腾出处理器上寄存器的资源。
例如,在一些示例中,循环控制模块140配置为可以获取计数器寄存器的值,响应于计数器寄存器的值大于0,修改源地址并将计数器寄存器的值减1,以进入下一个操作循环。
例如,在一些示例中,循环控制模块140还配置为可以获取方向标志寄存器的值,当方向标志寄存器的值为正向值时,将源地址增加一个步长,或者当方向标志寄存器的值为反向值时,将源地址减少一个步长。
例如,在一些示例中,循环控制模块140还配置为可以获取串操作的类型(例如字节型、字型、双字型或四字型等),根据串操作的类型确定步长。
本公开实施例的串操作装置的技术效果与例如图3所示的串操作方法的技术效果相同,此处不再赘述。
本公开至少一实施例还提出了一种串操作处理装置,包括存储器和处理器,其中,存储器用于非暂时性存储计算机可执行指令,处理器用于运行计算机可执行指令,其中,计算机可执行指令被处理器运行时执行本公开至少一实施例提出的串操作方法。
图6为本公开至少一实施例提出的一种串操作处理装置的结构示意图。该串操作处理装置可以用于执行图3所示的串操作方法。
如图6所示,串操作处理装置20包括用于非暂时性存储计算机可执行指令的存储器210以及用于运行计算机可执行指令的处理器220。例如,处理器220可以实现为CPU、SoC、FPGA、ASIC等硬件或固件,或硬件或固件与软件的任何组合,本公开的实施例对此不作限制。处理器220运行计算机可执行指令时,执行以下串操作方法:获取源地址以及地址偏移值;将源地址与地址偏移值相加得到目的地址;加载源地址指向的数据;将源地址指向的数据存至目的地址。
图6所示的串操作处理装置的技术效果与上述串操作方法的技术效果相同,此处不再赘述。
本公开至少一实施例还提出了一种非暂时性存储介质,非暂时性地存储计算机可执行指令。例如,该非暂时性存储介质可以是但不限于磁带、光盘、磁盘、闪存等非暂时性存储介质。其中,当计算机可执行指令由计算机执行时,执行本公开至少一实施例提出的串操作方法。该非暂时性存储介质的技术效果与上述串操作方法的技术效果相同。
对于本公开,还有以下几点需要说明:
(1)本公开实施例的附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种串操作方法,包括:
获取串传送指令的源地址以及地址偏移值;
将所述源地址与所述地址偏移值相加得到目的地址;
加载所述源地址指向的数据;
将所述源地址指向的数据存至所述目的地址,
所述获取所述地址偏移值包括:
在所述串传送指令执行之前,计算源变址寄存器指向的地址和目的变址寄存器指向的地址的偏移值;以及将所述偏移值作为所述地址偏移值。
2.如权利要求1所述的方法,还包括:
获取计数器寄存器的值,
响应于所述计数器寄存器的值大于1,修改所述源地址并将所述计数器寄存器的值减1,并进入下一个操作循环。
3.如权利要求2所述的方法,其中所述修改所述源地址包括:
获取方向标志寄存器的值;
响应于所述方向标志寄存器的值为第一值,将所述源地址增加一个步长,或者,响应于所述方向标志寄存器的值为第二值,将所述源地址减少一个步长。
4.如权利要求3所述的方法,还包括:
获取所述串操作的类型,
根据所述串操作的类型确定所述步长。
5.如权利要求4所述的方法,其中,所述串操作的类型包括:
字节型、字型、双字型或四字型。
6.如权利要求1-5任一项所述的方法,其中,所述加载所述源地址指向的数据包括:
获取源地址指向的数据;
将所述源地址指向的数据暂存至选择的寄存器。
7.如权利要求6所述的方法,在所述将所述源地址指向的数据存至所述目的地址之后,还包括:
释放暂存所述源地址指向的数据的所述选择的寄存器。
8.如权利要求1-5任一项所述的方法,其中,所述串操作包括流水线宽度循环,所述流水线宽度循环由多个串操作宽度循环合并。
9.一种串操作装置,包括:
获取模块,配置为获取地址偏移值以及获取串传送指令的源地址;
目的地址确定模块,配置为将所述源地址与所述地址偏移值相加得到目的地址;
操作处理模块,配置为加载所述源地址指向的数据,并将所述源地址指向的数据存至所述目的地址,
所述获取所述地址偏移值包括:
在所述串传送指令执行之前,计算源变址寄存器指向的地址和目的变址寄存器指向的地址的偏移值;以及将所述偏移值作为所述地址偏移值。
10.如权利要求9所述的装置,还包括:
循环控制模块,配置为获取计数器寄存器的值,响应于所述计数器寄存器的值大于1,修改所述源地址并将所述计数器寄存器的值减1,以进入下一个操作循环。
11.如权利要求10所述的装置,其中,所述循环控制模块还被配置为:
获取方向标志寄存器的值;
响应于所述方向标志寄存器的值为第一值,将所述源地址增加一个步长,或者响应于所述方向标志寄存器的值为第二值,将所述源地址减少一个步长。
12.如权利要求11所述的装置,其中,所述循环控制模块还被配置为:
获取所述串操作的类型,
根据所述串操作的类型确定所述步长。
13.如权利要求9-12任一项所述的装置,其中,所述操作处理模块还被配置为:
获取源地址指向的数据;
将所述源地址指向的数据暂存至选择的寄存器。
14.如权利要求13所述的装置,其中,所述操作处理模块还被配置为:
在将所述源地址指向的数据存至所述目的地址之后,释放暂存所述源地址指向的数据的所述选择的寄存器。
15.一种串操作处理装置,包括:
存储器,用于非暂时性存储计算机可执行指令;以及
处理器,用于运行所述计算机可执行指令,
其中,所述计算机可执行指令被所述处理器运行时执行根据权利要求1-8任一项所述的串操作的方法。
16.一种非暂时性存储介质,非暂时性地存储计算机可执行指令,其中,当所述计算机可执行指令由计算机执行时,执行根据权利要求1-8任一项所述的串操作的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111356679.4A CN114090079B (zh) | 2021-11-16 | 2021-11-16 | 串操作方法、串操作装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111356679.4A CN114090079B (zh) | 2021-11-16 | 2021-11-16 | 串操作方法、串操作装置以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114090079A CN114090079A (zh) | 2022-02-25 |
CN114090079B true CN114090079B (zh) | 2023-04-21 |
Family
ID=80300997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111356679.4A Active CN114090079B (zh) | 2021-11-16 | 2021-11-16 | 串操作方法、串操作装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090079B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699833A (zh) * | 2010-05-25 | 2014-04-02 | 威盛电子股份有限公司 | 微处理器以及相关的操作方法 |
CN108139907A (zh) * | 2015-10-14 | 2018-06-08 | Arm有限公司 | 向量数据传送指令 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
CN101040484A (zh) * | 2004-05-24 | 2007-09-19 | 美商内数位科技公司 | 支持密码运算而具多个寄存器的数据移动器控制器 |
JP2009134391A (ja) * | 2007-11-29 | 2009-06-18 | Renesas Technology Corp | ストリーム処理装置、ストリーム処理方法及びデータ処理システム |
US9411584B2 (en) * | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
CN103984637A (zh) * | 2013-02-07 | 2014-08-13 | 上海芯豪微电子有限公司 | 一种指令处理***及方法 |
EP3803573B1 (en) * | 2018-05-29 | 2024-06-26 | Nordic Semiconductor ASA | Delta file with reversing data |
CN109298884B (zh) * | 2018-08-29 | 2021-05-25 | 北京中科睿芯科技集团有限公司 | 一种通用字符操作加速处理硬件装置及控制方法 |
CN111381876B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | move指令译码方法、数据移动方法、译码器及数据存取装置 |
GB2584268B (en) * | 2018-12-31 | 2021-06-30 | Graphcore Ltd | Load-Store Instruction |
CN111813446A (zh) * | 2019-04-12 | 2020-10-23 | 杭州中天微***有限公司 | 一种数据加载和存储指令的处理方法和处理装置 |
CN113391842A (zh) * | 2020-03-13 | 2021-09-14 | 华为技术有限公司 | 一种单指令多数据simd指令的生成、处理方法以及相关设备 |
-
2021
- 2021-11-16 CN CN202111356679.4A patent/CN114090079B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699833A (zh) * | 2010-05-25 | 2014-04-02 | 威盛电子股份有限公司 | 微处理器以及相关的操作方法 |
CN108139907A (zh) * | 2015-10-14 | 2018-06-08 | Arm有限公司 | 向量数据传送指令 |
Also Published As
Publication number | Publication date |
---|---|
CN114090079A (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101581177B1 (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
KR101755541B1 (ko) | 단일 데이터 버퍼의 병렬 처리 | |
KR101817034B1 (ko) | 반복 종속 조건을 갖는 반복들의 벡터 루프들을 구현하기 위한 명령어 | |
US6502187B1 (en) | Pipeline computer dividing a variable-length data-handling instruction into fixed-length data-handling instructions | |
KR101794802B1 (ko) | 히스토그램을 결정하기 위한 명령어 | |
KR102449616B1 (ko) | 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치 | |
EP2972836B1 (en) | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture | |
TWI395135B (zh) | 微處理器、微處理器方法及用於計算裝置的計算機程式產品 | |
CN107273095B (zh) | 用于对齐寄存器的***、装置和方法 | |
TWI713594B (zh) | 向量資料轉換指令 | |
CN111208933B (zh) | 数据访问的方法、装置、设备和存储介质 | |
JPH03218523A (ja) | データプロセッサ | |
KR101976296B1 (ko) | 정렬되지 않은 주소에서 메모리 내의 데이터를 접근하기 위한 방법 | |
CN114090079B (zh) | 串操作方法、串操作装置以及存储介质 | |
TWI490781B (zh) | 用於選擇向量運算之元素的裝置及方法 | |
US9182960B2 (en) | Loop distribution detection program and loop distribution detection method | |
TW201712534A (zh) | 關於包括指令組的大小之指令組的資訊解碼 | |
EP3770756B1 (en) | Method executed by computing device, apparatus, device and computer-readable storage medium | |
TW202223633A (zh) | 用於實施16位元浮點矩陣點積指令的裝置、方法及系統 | |
CN114064126A (zh) | 串操作方法、串操作装置以及存储介质 | |
US20230176867A1 (en) | Multibit shift instruction | |
US20240184574A1 (en) | Stateful Vector Group Permutation with Storage Reuse | |
WO2023101828A1 (en) | Multibit shift instruction | |
JP2015201026A (ja) | 演算処理装置および演算処理装置の制御方法 | |
CN116893989A (zh) | 管理在处理器寄存器堆中任意定义的旋转寄存器组的*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |