CN107851019B - 用于执行叠接操作的设备和方法 - Google Patents

用于执行叠接操作的设备和方法 Download PDF

Info

Publication number
CN107851019B
CN107851019B CN201680043378.7A CN201680043378A CN107851019B CN 107851019 B CN107851019 B CN 107851019B CN 201680043378 A CN201680043378 A CN 201680043378A CN 107851019 B CN107851019 B CN 107851019B
Authority
CN
China
Prior art keywords
vector
data
data elements
register
control
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
Application number
CN201680043378.7A
Other languages
English (en)
Other versions
CN107851019A (zh
Inventor
奈杰尔·约翰·斯蒂芬斯
雅各布·伊彭
姆布·埃约勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN107851019A publication Critical patent/CN107851019A/zh
Application granted granted Critical
Publication of CN107851019B publication Critical patent/CN107851019B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Abstract

提供了用以执行叠接操作的设备及方法,该设备具有一组向量寄存器及一个或多个控制寄存器。处理电路被布置以执行指令序列,该指令序列包括标识至少第一向量寄存器及至少一个控制寄存器的叠接指令。第一向量寄存器储存具有一定向量长度的第一向量的数据元素,至少一个控制寄存器储存标识第一向量的数据元素内占据连续数据元素位置的一个或多个数据元素的控制数据。处理电路响应于叠接指令的执行以从第一向量中提取由至少一个控制寄存器中的控制数据标识的每一数据元素,以及将所提取的数据元素在结果向量内从该结果向量的第一端起的连续数据元素位置输出,来自第二向量的数据元素被输出到未被来自第一向量的所提取的数据元素占据的剩余结果向量数据元素位置。

Description

用于执行叠接操作的设备和方法
技术领域
本技术涉及执行叠接操作的设备及方法。
背景技术
在现代数据处理系统中,能够执行叠接操作以便提取第一向量内一定数目的连续数据元素并然后将所提取的数据元素与来自第二向量的数据元素一起在结果向量中输出是十分实用的。希望提供执行这些叠接操作的高效并且灵活的方式。
发明内容
在第一示例配置中,提供一种设备,该设备包括:一组向量寄存器;一个或多个控制寄存器;及处理电路,用以执行指令序列,指令序列包括叠接指令,叠接指令标识至少第一向量寄存器及至少一个控制寄存器,第一向量寄存器储存具有一定向量长度的第一向量的数据元素,至少一个控制寄存器储存独立于所述向量长度而标识第一向量的数据元素内占据连续数据元素位置的一个或多个数据元素的控制数据;处理电路响应于叠接指令的执行以从第一向量中提取由至少一个控制寄存器中的控制数据标识的每一数据元素,以及将所提取的数据元素在结果向量的数据元素内输出,结果向量也包含来自第二向量的数据元素。
在又一示例配置中,提供一种用以在具有一组向量寄存器及一个或多个控制寄存器的设备内执行叠接操作的方法,该方法包括:执行叠接指令,该叠接指令标识至少第一向量寄存器及至少一个控制寄存器,第一向量寄存器储存具有一定向量长度的第一向量的数据元素,至少一个控制寄存器储存控制数据,该控制数据独立于所述向量长度而标识第一向量的数据元素中占据连续数据元素位置的一个或多个数据元素;叠接指令的执行包括以下步骤:从第一向量提取由至少一个控制寄存器中的控制数据标识的每一数据元素;及将所提取的数据元素在结果向量的数据元素中输出,结果向量还包含来自第二向量的数据元素。
在另一示例配置中,提供一种设备,包括:一组向量寄存器装置;一个或多个控制寄存器装置;及处理装置,用以执行指令序列,该指令序列包括叠接指令,叠接指令标识至少第一向量寄存器装置及至少一个控制寄存器装置,第一向量寄存器装置用于储存具有一定向量长度的第一向量的数据元素,至少一个控制寄存器装置用于储存控制数据,该控制数据独立于所述向量长度而标识占据第一向量的数据元素内的连续数据元素位置的一个或多个数据元素;处理装置响应于叠接指令的执行以从第一向量中提取由至少一个控制寄存器装置中的控制数据标识的每一数据元素,并且将所提取的数据元素在结果向量的数据元素中输出,结果向量还包含来自第二向量的数据元素。
附图说明
现在通过仅示例的方式并参考附图所示的实施例来描述本发明的技术,在附图中:
图1是依据一个实施例的设备的框图;
图2至图4示意地图示依据示例实施例的由叠接指令执行的操作;
图5是一图表,该图表图示依据一个实施例的图1的向量置换单元;
图6是一图表,该图表图示依据一个实施例的图5的向量置换单元如何用以执行图2中概述的操作;
图7是一图表,该图表图示依据一替代实施例的图1的向量置换单元;
图8是一图表,该图表示意地图示依据一个实施例的如何执行叠接指令序列以便执行滑动窗操作;
图9A至图9D图示依据多个不同实施例的控制寄存器的示例布置,这些布置可由叠接指令指定,以便独立于向量长度而标识将要从第一向量的数据元素中提取的、占据连续数据元素位置的数据元素;及
图10图示可用于一个实施例中的虚拟机实现方式。
具体实施方式
在参考附图论述实施例之前,提供下列对实施例的描述。
在一个实施例中,提供一种设备,该设备包括一组向量寄存器及一个或多个控制寄存器。设备中的处理电路被配置以执行指令序列,该指令序列包括叠接指令,叠接指令标识至少第一向量寄存器及至少一个控制寄存器。第一向量寄存器储存具有一定向量长度的第一向量的数据元素,并且至少一个控制寄存器储存独立于所述向量长度而标识第一向量的数据元素内占据连续数据元素位置的一个或多个数据元素的控制数据。当执行叠接指令时,处理电路从第一向量中提取由至少一个控制寄存器中的控制数据标识的每一数据元素,以及将所提取的数据元素在结果向量的数据元素内输出,结果向量也包含来自第二向量的数据元素。第二向量可以是预定的,或者可以由叠接指令指定。
本文中,短语“有效数据元素”也将用指代由控制数据标识为是将要从第一向量提取的数据元素的数据元素。
由于至少一个控制寄存器中的控制数据不参考向量长度而标识有效数据元素,因此此举提供了可在第一向量内选择有效数据元素的方式的较大灵活性。具体而言,在执行叠接指令所定义的叠接操作时,可选择第一向量内占据连续数据元素位置的任意有效数据元素序列。
藉由此种方法,可指定有效数据元素的边界,而无需依靠对向量长度的任何认知。因而,叠接指令可用于各种不同设备内,即使这样一个设备所操作的向量的长度不同于由另一设备操作的向量时也如此。因而可见,上述实施例的叠接指令是向量长度不可知的,因此允许程序员使用这种叠接指令以将来自第一向量的部分及第二向量的部分以向量长度不可知的方式叠接在一起。
在一个实施例中,数据元素的大小可能是隐含的。然而,在替代实施例中,这种信息可编码在叠接指令内,由此仅举例而言可标识数据元素大小为8、16、32或64位。
在一个实施例中,处理电路被布置以将所提取的数据元素在结果向量的从该结果向量的第一端起的连续数据元素位置内输出。在这种布置中,来自第二向量的数据元素将随后占据未被从第一向量提取的数据元素占据的剩余数据元素位置。
在一个实施例中,叠接指令还标识储存第二向量的数据元素的第二向量寄存器。处理电路随后可响应于叠接指令的执行以在结果向量中未被所提取的数据元素占据的每一数据元素位置处包括来自第二向量的数据元素中的数据元素。
可以多种方式选择来自第二向量的要被选定以包括在结果向量内的数据元素。然而,在一个实施例中,处理电路被布置以在结果向量内包括从第二向量的数据元素的第一端起的连续数据元素。
设备内一个或多个控制寄存器可采取多种形式,但在一个实施例中则包括至少一个断言寄存器,每一断言寄存器用以储存针对数据元素向量内的每一数据元素位置的断言数据。断言寄存器内的断言数据因此指定布尔向量(即真/假)条件,其中相关联数据元素向量内的每一数据元素与这些布尔条件中的一者相关联。尽管在一个实施例中,断言数据内的断言条件的项数与由该断言数据控制的相关联向量中的数据元素的数目之间可能存在1:1关系,但此并非必需,并且在替代实施例中,断言数据的单个项可提供应用于多个数据元素的条件。此外,尽管在一个实施例中,断言数据内的每一断言项采用单个位的形式,但不要求每一断言项都仅由单个位来指定。
在控制寄存器包括至少一个断言寄存器的这种实施例中,叠接指令中标识的至少一个控制寄存器可包括一个这种断言寄存器,处理电路可响应于叠接指令的执行以根据断言数据确定将要从第一向量提取的每一数据元素。
藉由使用此种断言寄存器,能够仅藉由使用单个寄存器便可指定每一有效数据元素。此举由此针对标识有效数据元素而提供了尤其高效的编码。也常出现此情况:系统内提供的断言寄存器少于标量寄存器(标量寄存器可替代地用以指定用于标识有效数据元素的控制数据),此举进一步改善了指令内的编码效率,因为需要指令内的较少位来识别断言寄存器。另外,由于断言数据的性质,可确保所识别出的有效数据元素绝不能跨过向量端部,由此自动地避免需要检查诸如范围外索引的条件。
断言数据可以各种方式布置,但在一个实施例中则提供用以确定将要从第一向量的数据元素提取的数据元素的位置及长度信息。由于可藉由使用断言数据而指定有效数据元素的灵活方式,故有可能将有效数据元素的开始位置识别为向量寄存器内的任何数据元素位置,此外,有效数据元素数目可为向量内任何所需数目。
在本文中,当执行叠接操作时识别出的有效数据元素序列将称为叠接部分。藉由使用叠接指令指定的断言来控制叠接操作,叠接指令可用于向量长度不可知码中,同时保证叠接部分绝不能跨过向量端部。
有若干方式可用以由断言数据指定位置及长度信息。在一个实施例中,断言数据标识第一提取数据元素位置及最末提取数据元素位置,并且处理电路将第一提取数据元素位置与最末提取数据元素位置之间的数据元素序列确定为待提取的数据元素。考虑一示例实施例,其中断言数据内每一断言项都是单个位,则第一提取数据元素位置可藉由设定为第一值(例如逻辑1值)的第一断言位标识,而最末提取数据元素位置可藉由设定为所述第一值的最末断言位标识。可忽略任何中间断言位的值。
尽管在一个实施例中,在叠接指令执行期间识别有效数据元素所需的控制数据可参考断言寄存器来指定,但在替代实施例中,可使用不同的控制寄存器。具体而言,在一个实施例中,一个或多个控制寄存器可包括用于储存数据值的一个或多个标量寄存器。在这种实施例中,叠接指令中标识的至少一个控制寄存器可包括至少一个标量寄存器,并且处理电路可响应于叠接指令的执行而在确定将要从第一向量提取每一数据元素时,使用每一标识的标量寄存器中的数据值。
有若干方式可用以使这些标量寄存器可用以提供所需控制数据。在一个实施例中,叠接指令标识第一及第二标量寄存器,这些标量寄存器储存的数据值提供用以确定将要从第一向量的数据元素提取的一个或多个数据元素的位置及长度信息。
例如,在一个实施例中,第一及第二标量寄存器中储存的数据值标识第一提取数据元素位置及最末提取数据元素位置,并且处理电路将第一提取数据元素位置与最末提取数据元素位置之间的数据元素序列确定为待提取的数据元素。在一替代实施例中,标量寄存器中的一者可用以标识开始位置,而另一标量寄存器可提供标量值,该标量值标识将从开始位置起被包括作为有效数据元素的数据元素的数目。
在又一替代实施例中,叠接指令中标识的至少一个控制寄存器可包括断言寄存器及标量寄存器,所标识的标量寄存器中的数据值与所标识的断言寄存器中的断言数据结合使用,以确定将要从第一向量的数据元素提取的一个或多个数据元素。例如,标量寄存器或断言寄存器中任一者可用以标识开始位置,而另一者随后用以指示结束位置或提供可指示将从所标识的开始位置起被包括的有效数据元素的数目的长度。
在叠接指令指定了第一向量寄存器及第二向量寄存器的实施例中,第一向量寄存器及第二向量寄存器有可能在一个实施例中皆被标识为同一向量寄存器。藉由这种方法,能够使用叠接指令以执行旋转操作,以便改变数据元素在向量内出现的次序。
在一个实施例中,由叠接指令指定的第一向量寄存器(如果第二向量寄存器被指定的话,确实还有第二向量寄存器)自身可为断言寄存器,该断言寄存器用以储存针对定位在数据元素向量内的每一数据元素的断言数据。因此,这些叠接指令可能并非仅用以对数据元素的向量操作数进行操作,而也对断言向量进行操作,在此情况下,所指定的控制寄存器(自身可为断言寄存器)就指定的(一个或多个)断言向量内的断言数据项而执行的叠接。在由叠接指令标识的第一向量寄存器自身是断言寄存器的一个这种实施例中,第一向量寄存器内的每一数据元素可包括单个位,该单个位代表断言数据的一个项。
在一个示例用例情况下,处理电路可被布置以在多次迭代中的每次迭代中执行叠接指令,在每次迭代中,由叠接指令标识的至少一个控制寄存器中的控制数据标识将要从第一向量的数据元素提取的一个或多个数据元素,这些数据元素不同于在先前迭代期间被标识以用于提取的一个或多个数据元素。藉由这种方法,能够使用一系列叠接指令对指定的断言操作数高效地实施滑动窗操作。
用以执行叠接指令的处理电路可采取多种形式,但在一个实施例中则包括向量置换电路。
向量置换电路可采取多种形式,但在一个实施例中则包括第一移位电路以对第一向量的数据元素执行第一移位操作,并且包括第二移位电路以对第二向量的数据元素执行第二移位操作,并且包括组合电路以利用由第一及第二移位电路输出的向量产生结果向量。另外,分析电路用以分析至少一个控制寄存器中的控制数据以便确定将要从第一向量的数据元素提取的一个或多个数据元素,并依据该分析发布控制信号以控制第一及第二移位电路的操作。由此,可依据指定的(一个或多个)控制寄存器提供的控制数据而控制第一及第二移位电路的操作,以便对第一及第二向量执行适当移位操作,从而产生随后可由组合电路组合的修正向量。在一个实施例中,对第一向量执行的移位将与对第二向量执行的移位方向相反。
组合电路可采取多种形式,但在一个实施例中则被布置以对两个提供的输入向量执行逻辑或操作,这些输入向量来源于第一及第二移位电路的输出。
在一个实施例中,向量置换电路还包括:第一掩码电路,以对由第一移位电路输出的向量执行第一掩码操作以便产生第一掩码的向量;第二掩码电路,以对由第二移位电路输出的向量执行第二掩码操作以便产生第二掩码的向量;以及组合电路,被布置以藉由组合第一及第二掩码的向量而产生结果向量。
由此,可见在一个实施例中,实施叠接指令所定义的叠接操作所需的操作可藉由使用移位及或操作而轻松执行(视情况按需利用额外的掩码操作),并且移位操作可并行执行。
尽管如此,并非必须以此方式构造向量置换电路,实际上可为向量置换电路提供多种其他配置。在一个示例布置中,向量置换电路可包括:可编程纵横电路,用以从第一向量的数据元素及第二向量的数据元素产生结果向量;以及分析电路,用以分析至少一个控制寄存器以便确定将要第一向量的数据元素提取的一个或多个数据元素,并依据该分析而发布控制信号以控制可编程纵横电路的操作。因此,在这种实施例中,纵横电路可在分析电路控制下按需配置,以便执行来自第一向量的已识别出的有效数据元素与来自第二向量的所需数目的数据元素的所需叠接。在一些实施例中,能够重新使用设备内已提供的纵横电路用于其他用途。
现将藉由参考附图来描述具体实施例。
图1是一系统框图,在该系统中可使用所述实施例的技术。在图1图示实例中,系统采用管线式处理器形式。指令由撷取电路10撷取自指令缓存15(该指令缓存通常经由一个或多个另外级别的缓存(如2级缓存50)耦接至存储器55),指令从撷取电路10传递通过译码电路20,该译码电路译码每一指令以便产生适当的控制信号,以用于控制管线式处理器内的下游执行资源,从而执行指令所需操作。形成译码指令的控制信号被传递至发布阶段电路25,以发布至管线式处理器内的一个或多个执行管线30、35、40、80。
发布阶段电路25可访问寄存器60,在该寄存器中可储存操作所需的数据值。具体而言,用于向量操作的源操作数可储存在向量寄存器65内,而用于标量操作的源操作数可储存在标量寄存器75中。另外,一个或多个断言可储存在断言寄存器70中,以用作针对在执行某些向量操作时被处理的向量操作数的数据元素的控制信息。此外,如后文中参考图9A至图9D所论述,标量寄存器中一者或更多者也可用以储存数据值,这些数据值用以导出这种控制信息,以供某些向量操作的实施期间使用。
这些源操作数及任何相关联的控制信息可经由路径47被路由至发布阶段电路,以便其可随同标识待执行的用以实施每一译码指令操作的控制信息而被分发至适当的执行单元。图1中图示的多个执行单元30、35、40、80假定为用于对断言操作数执行操作的向量处理单元,但如若希望则可提供独立执行单元(未图示)来处理由设备支持的任何标量操作。
考虑各种向量操作,算术操作例如可连同所需源操作数(及任何控制信息,如断言)被发送至算术逻辑单元(arithmetic logic unit;ALU)30,以便使得能够对那些源操作数执行算术逻辑操作,结果值通常输出作为目的操作数以用于在向量寄存器库65中的指定寄存器储存。
除ALU 30之外,可提供其他执行单元35,例如浮点单元(floating point unit;FPU),该单元响应于译码浮点指令而用于执行浮点操作,及向量置换单元80,该单元用于对断言操作数执行某些置换操作。此外,加载/储存单元(load/store unit;LSU)40用于执行加载操作,以便将来自存储器55(经由数据缓存45及任何中间的其他级别缓存,如2级缓存)的数据值加载到寄存器组60内的指定寄存器,及用于执行储存操作以便将来自那些寄存器的数据值储存回存储器55。
图1所示系统可为依序处理系统,在该系统中依照程序次序执行指令序列,或者替代地,该系统可为无序系统,从而允许多个指令的执行顺序得以重新定序,以便设法改善效能。本领域技术人员将理解,在无序系统中,将提供额外结构(图1中未明确图示),例如寄存器重命名电路,以将指令所指定的架构寄存器映射至来自寄存器库45内的实体寄存器池中的实体寄存器(该实体寄存器池通常大于架构寄存器的数目),由此使某些危害能够被移除,从而有利于无序处理的更多使用。另外,通常将提供重新定序缓冲器以跟踪无序执行,及允许各种指令的执行结果以原始程序次序提交。
在所述实施例中,图1的电路被布置以对储存在向量寄存器65中的向量操作数执行向量操作,其中向量操作数包括多个数据元素。对于对该向量操作数执行的某些向量操作而言(如算术操作),可同时(或迭代地)向向量操作数内多个数据元素应用所需操作。断言信息可用以辨识向量内哪些数据元素是针对特定向量操作的有效数据元素,并因此即为应被应用该操作的数据元素。
在一个实施例中,由图1的电路执行的指令序列可包括至少一个叠接指令。每一叠接指令将辨识向量寄存器库65的至少第一向量寄存器及至少一个控制寄存器。控制寄存器可采取断言寄存器70中的一者的形式,或如下文将论述,可改为由标量寄存器75中的一者或更多者指定,或由断言寄存器与标量寄存器的组合来指定。当这种叠接指令被译码电路20译码时,发布阶段电路25将随后向向量置换单元80发布适当的控制信号,以使得所需操作得以执行,从而实施该叠接指令所需的叠接操作。具体而言,至少一个控制寄存器指定的控制数据用以辨识第一向量的数据元素内由叠接指令指定的占据连续数据元素位置的一个或多个有效数据元素。控制数据以该控制数据独立于向量长度而辨识有效数据元素的方式组织,并由此可不参考向量长度而辨识那些有效数据元素。辨识出第一向量内的有效数据元素之后,向量置换单元从第一向量提取那些有效数据元素,并将其在结果向量内输出,结果向量中剩余的数据元素位置由来自第二向量的数据元素充填。第二向量可以是预先确定的或可由叠接指令指定。
图2图示叠接指令的一示例形式及执行的操作。具体而言,叠接指令指定向量寄存器库65内的两个向量源寄存器100、105,并指定断言寄存器70内的断言寄存器110。此断言寄存器被称为Psp寄存器以表示该断言寄存器内容包含叠接控制数据。断言数据的一示例形式在图2中图示。具体而言,在此实施例中,断言数据内第一逻辑1值与最末逻辑1值的出现用以辨识叠接部分115。在一个实施例中,两个逻辑1值之间的中间断言值并不重要,并且可为逻辑1或逻辑0值。
第一逻辑1值和最末逻辑1值能由此被视作辨识相关联的第一源向量100内的第一有效数据元素位置和最末有效数据元素位置。因此,在此实例中,自右侧起为数据元素位置编号,可见,图2中断言寄存器110内断言的特定实例将数据元素位置2与4辨识为第一及最末有效数据元素的数据元素位置。因此,向量置换单元将从第一向量100中的位置2、3及4提取数据元素,并在指定目的向量寄存器120内的预定位置处将其输出。在此实施例中,假定所提取值用以占据目的向量120中最低有效数据元素位置起的数据元素位置125,但将理解,这些提取值可替代地占据不同位置,例如在一替代实施例中,目的向量内的某些数目的最高有效位位置。目的寄存器120内的剩余数据元素位置130随后由向量置换单元充填来自第二源向量寄存器105的、自第二源向量寄存器中的数据元素位置0开始的数据元素。因此如图2图示,来自向量置换单元80的输出结果向量120采取形式“mlkjiedc”。
从图2将可见,辨识有效数据元素所需的位置及长度信息独立于向量长度而被指定,因此可从断言被确定,无需了解向量长度。可从源向量寄存器中的任何位置起及以任何长度执行叠接,具体而言,叠接无需对齐至向量一端。
在一个实施例中,向量长度(即每一向量中的数据元素的数目)及数据元素大小可为隐式的。然而,在一替代实施例中,这种信息可编码在指令内。例如,指令编码可包括辨识数据元素大小(例如8、16、32或64位)的信息,随后向量长度利用指令中提到的向量寄存器的大小及指定的数据元素大小来确定。
此外,在图2的实例中,范围外索引条件的边界情况得以自动处理,因为断言寄存器及源向量寄存器具有相同数目的元素,由此,在此形式中,指令无法产生范围外索引异常。
此外,这种叠接指令可以一般库代码来使用,因为断言可根据可访问的向量长度或根据程序员或算法需要而动态构造。在断言由此指定的情况下,叠接指令可用以以向量长度不可知的方式提取并连接不同的向量寄存器部分,这两个部分的位置及长度由指定断言寄存器中的断言数据控制。
尽管在图2的实例中,第一及第二源向量包含保存在向量寄存器65内的数据元素向量,但在一替代实施例中,第一及第二向量寄存器可实际上指定断言寄存器组70内的断言寄存器,如图3中示意地图示。在此实例中,每一源向量代表断言项向量,如两个源断言寄存器140、145所示。随后,叠接断言寄存器150如先前一样提供断言,该断言用以辨识叠接部分155,该部分辨识第一源寄存器140内的有效数据元素。因而,那些辨识的有效数据元素(在此实例中,每一数据元素是单个位值)在目的断言寄存器160中的部分165中输出,剩余部分170充填来自第二源寄存器145的、自第二源寄存器的数据元素位置0开始的数据元素。
也如图4所示,叠接指令可用于藉由指定与第一向量寄存器及第二向量寄存器相同的寄存器175而执行旋转。在此实例中,叠接断言180辨识叠接部分,该部分包含源寄存器175内的一定数量的最高有效数据元素位置。这些数据元素由此移至结果寄存器185中的最低有效数据元素位置,剩余的数据元素位置充填源寄存器的、自最低有效数据元素位置开始的内容。
在叠接指令执行期间用以执行上述叠接操作的向量置换单元80可采取多种形式。一个示例配置在图5中图示,其中向量置换单元包括:两个移位/旋转电路块215、220,每一电路块与向量源寄存器200、205中的一者相关联;相关联的掩码电路225、230;以及组合电路235,其组合来自两个掩码电路的输出,在此实例中,组合电路采取逻辑或电路235的形式。来自或电路235的输出随后保存在目的寄存器245中。向量置换单元80也包括断言分析电路240,该电路接收由叠接断言寄存器210指定的断言数据。具体而言,断言数据经分析以便辨识叠接部分,此举用以产生针对移位/旋转电路220的适当的控制信号。具体而言,使得移位/旋转电路220执行充足右移,以将由叠接部分辨识的有效数据元素移入自最低有效数据元素位置起的数个数据元素位置。相反,移位/旋转电路215被布置以执行充足左移,以将第二源寄存器中一定数目的最低有效数据元素移至结果向量的剩余数据元素位置中。
断言分析电路240也产生针对两个两个掩码电路225、230的控制信号,以便保证来自两个移位/旋转电路250、220的输出中任何非所需数据元素被设定为预定值,例如在图5所示实施例中全部设定为零,其中组合电路采取或电路235的形式。然后,或电路对掩码电路的输出执行逻辑或操作,以便产生要储存在结果向量寄存器245中的结果向量。
图6图示图5的电路如何用以执行上文参考图2论述的操作。具体而言,断言分析电路240使得移位/旋转电路220执行右移两个数据元素位置,这是根据叠接断言寄存器210中指定的断言中的前导零数目而确定的。相反,移位/旋转电路215执行左移三个位置,这是根据断言中叠接部分的长度而确定的。来自移位/旋转电路215、220的输出在图6中图示。字母“x”指示位于那些数据元素位置的数据元素的“不关心”状态。具体而言,不管那些数据元素值为何,那些数据元素值将由相关联的掩码电路225、230进行掩码处理。
断言分析电路240向掩码电路230发送控制信号,以使得设定右侧三个掩码位,由此使数据元素“edc”从掩码电路输出,其他所有数据元素设定为逻辑0值。应注意,图6中掩码电路的输出处指示的0值不是单个位值,但每一0指示对应数据元素的全部零值,此通常可超过单个位。例如,在一个实施例中,向量内每一数据元素的长度是一个字节。利用叠接部分大小确定呈向掩码电路230的控制信号,该大小由断言分析电路240利用断言寄存器210中的断言数据而确定,在此实例中,叠接部分具有三个数据元素的长度。
产生掩码电路230的掩码控制信号后,断言分析电路随后产生针对掩码电路225的适当控制信号,以使得由掩码电路225应用的掩码与掩码电路230应用的掩码相逆。因而,来自掩码电路225的输出如图6所示。或(OR)电路235随后对两个输入向量执行逻辑或操作,以便产生图6中目的寄存器245内显示的输出向量“mlkjiedc”。
藉由上述内容,将理解,所需向量置换电路可藉由使用移位、掩码及或(OR)电路块而高效地构造,并且可并行执行移位操作(实际上掩码操作也可)。然而,向量置换单元可改为采用数个替代方式。图7中图示一个特定实例,其中向量置换单元80包括可编程网络,也称为纵横260,其操作由断言分析电路270基于对断言寄存器210所提供的断言数据的分析来控制。基于由断言数据辨识的叠接部分的辨识,断言分析电路270能随后配置可编程纵横以使得来自源寄存器200、205的适当数据元素提供至储存在结果向量寄存器245中的结果向量内的所需输出数据元素位置。
图8图示上述叠接指令可如何用以实施滑动窗操作,具体而言,如何藉由叠接指令利用每一迭代上的不同断言数据而执行迭代,以实施滑动窗操作。首先,两个源寄存器300、305载有源向量,在此实例中,每一源向量包括八个数据元素。然后,假定在此实例中,需要从那些源寄存器中一次提取三个数据元素。在第一迭代期间,利用全部设定为1的叠接断言执行叠接指令,从而使得源寄存器300的内容储存在目的寄存器310内。因此可对寄存器中占据了三个最低有效数据元素位置的三个数据元素执行后续操作,剩余数据元素被忽略。
在下一迭代期间,利用断言“11111000”执行叠接指令,使得目的寄存器315充填图8中图示的数据元素。具体而言,三个最低有效数据元素位置目前包含数据元素“fed”,并且因此这些数据元素可经受后续操作,寄存器315中的剩余数据元素被忽略。
在第三迭代期间,利用叠接断言“11000000”执行叠接指令。这使得仅有数据元素“g”及“h”从第一源寄存器300中被提取,随后从第二源寄存器305提供目的寄存器320中的剩余数据元素。目前情况是目的寄存器320内的三个较低数据元素位置包含数据元素“ihg”,在后续操作中可因此对这些数据元素执行操作,寄存器320的剩余内容被忽略。因此,可见,使用这些叠接指令提供尤其高效的实施方式,以用于执行滑动窗型操作,在此情况下,该窗辨识三个数据元素的区块。
在图8中图示的第三迭代之后,如若滑动窗操作需要继续,则将必需更新两个源寄存器300、305的内容。具体而言,在一个实例中,第二源寄存器305的原始内容可移至第一源寄存器300,更多向量数据随后加载至第二源寄存器。在下一迭代期间,可随后利用叠接断言“11111110”执行叠接指令,从而使得结果向量中的三个最低有效数据元素位置被数据元素“lkj”占据。
在上述实例中,根据图9A中参考断言寄存器350而图示的实例,已假定用于叠接指令的所需叠接控制信息由单个断言寄存器指定。在图9A实例中,假定断言采取与上文参考图2论述的同一形式。然而,在替代实施例中,叠接指令可以若干不同方式指定所需叠接控制信息。例如,如图9B所示,能够藉由使用两个标量寄存器355、360的内容来指定所需叠接控制信息。在图9B中图示的实例中,每一标量寄存器储存一标量值,第一标量寄存器辨识开始数据元素位置及第二标量寄存器辨识结束数据元素位置。为与图9A实例一致,第一标量寄存器辨识数据元素位置2,而第二标量寄存器辨识数据元素位置4。将理解,在一替代实施例中,第二标量寄存器可被布置以指定长度,而非末端位置。
在一替代实施例中,如图9C所示,断言寄存器与源寄存器的组合可用以指定所需叠接控制信息。在图9C图示实例中,源寄存器365辨识开始数据元素位置,在此实例中即数据元素位置2。叠接断言寄存器370可由此辨识末端数据元素位置,在此实例中即4(如图9C中所示),或可指定长度,该长度在此实例中为三个位置长度。安排断言寄存器370以辨识长度(标量寄存器365随后辨识开始位置)在一些实施例中十分实用,例如在图8的滑动窗布置中。具体而言,对于叠接指令的每一迭代,无须更新断言寄存器内容,因为每一迭代中的长度都将为三。相反,标量寄存器可仅针对每一迭代更新,以的辨识新开始数据元素位置。
图9D图示又一替代实例,其中标量寄存器375定义长度(在此实例中为三),并且断言380辨识开始元素位置(在此实例中即位置2)。
当使用图9B至图9D中任何形式的控制寄存器时,将理解,图5或图7的分析电路240、270将不再执行(或仅执行)断言分析,而是分析提供所需控制数据的任何标量寄存器。
根据上述实施例可见,藉由布置设备以执行所述叠接指令,此举提供如何在第一向量内选择有效数据元素的较大灵活性,因为指定的控制数据不参考向量长度而辨识有效数据元素,从而允许在执行叠接操作时选定占据连续数据元素位置的任意的有效数据元素序列。可不依据对向量长度的任何了解而指定有效数据元素边界,由此,叠接指令可用于多个不同设备,无论每一设备是否对具有相同长度的向量执行操作,或某些设备是否对某些向量执行操作,而这些向量的长度不同于由某些其他设备操作的向量长度。这因此有助于将这些叠接指令用于一般库代码,因为所产生的叠接操作可以向量长度不可知的方式执行。所述叠接指令可用于众多情形,例如在使用滑动窗操作的算法中,这些操作如过滤、字符串处理、稀疏数组处理,等等。该指令也可明确替代在指令集中含有向量元素旋转/移位指令的需求。
图10示出了可使用的虚拟机实现方式。虽然前面描述的实施例从装置和方法的方面实现本发明以操作支持所涉及的技术的特定处理硬件,但还有可能提供硬件设备的所谓的虚拟机实现方式。这些虚拟机实现方式在运行支持虚拟机程序405的主机运算系统410的主机处理器415上运行。通常,需要强大的处理器来提供以合理的速度执行的虚拟机实现方式,但这种方法可能在某些情况下是合理的,例如,当出于兼容或再利用的原因希望运行来自另一处理器的代码时。虚拟机程序405提供至应用程序400的应用程序接口,与应用程序接口相同,应用程序400将由实际硬件(由虚拟机程序405建模的设备)提供。因此,包括对上述存储器访问的控制的程序指令可以在应用程序400内通过使用虚拟机程序405来执行以建立其与虚拟机硬件的交互。
在本申请中,词语“被配置为...”被用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件互连的布置或方式。例如,该装置可具有提供所定义的操作的专用硬件、或可以被编程以执行功能的处理器或其它处理设备。“被配置为”并不暗示需要以任何方式改变装置元件以便提供所定义的操作。
虽然本文参照附图详细描述了本发明的说明性实施例,但是应当理解,本发明不限于那些精确的实施例,并且本领域的技术人员在不脱离如所附权利要求所限定的本发明的范围和精神的情况下,可以对其进行各种改变、增加和修改。例如,可以做出从属权利要求的特征与独立权利要求的特征的各种组合,而不脱离本发明的范围。

Claims (21)

1.一种设备,包括:
一组向量寄存器;
一个或多个控制寄存器;及
处理电路,用以执行指令序列,所述指令序列包括叠接指令,所述叠接指令标识至少第一向量寄存器及至少一个控制寄存器,所述第一向量寄存器储存具有一定向量长度的第一向量的数据元素,所述一定向量长度取决于所述第一向量中的数据元素的数目和所述数据元素的大小,所述至少一个控制寄存器储存控制数据,所述控制数据独立于所述数据元素的大小而标识所述第一向量的数据元素内占据连续数据元素位置的一个或多个数据元素,所述控制数据包括位置数据和不同于所述位置数据的长度数据,所述位置数据标识所述第一向量寄存器内的第一数据元素的位置,所述长度数据标识将要从所述第一向量的数据元素提取的数据元素的数目;
所述处理电路响应于所述叠接指令的执行以从所述第一向量中提取由所述至少一个控制寄存器中的所述控制数据标识的每一数据元素,以及将所提取的数据元素在结果向量的数据元素内输出,所述结果向量也包含来自第二向量的数据元素;
其中所述处理电路被布置以在所述结果向量内从该结果向量的第一端起的连续数据元素位置内输出所提取的数据元素。
2.如权利要求1所述的设备,其中所述叠接指令还标识第二向量寄存器,所述第二向量寄存器储存第二向量的数据元素,并且所述处理电路响应于所述叠接指令的执行以在所述结果向量中未被所提取的数据元素占据的每一数据元素位置处包括来自所述第二向量的数据元素的数据元素。
3.如权利要求2所述的设备,其中所述处理电路被布置以在所述结果向量内包括从所述第二向量的数据元素的第一端起的连续数据元素。
4.如权利要求1述的设备,其中:
所述一个或多个控制寄存器包括至少一个断言寄存器,每一断言寄存器用以针对数据元素向量内每一数据元素位置储存断言数据;及
在所述叠接指令中标识的所述至少一个控制寄存器包括所述至少一个断言寄存器之一,所述处理电路响应于所述叠接指令的执行以根据所述断言数据确定将要从所述第一向量提取的每一数据元素。
5.如权利要求4所述的设备,其中所述断言数据提供所述位置数据及所述长度数据,所述位置数据及所述长度数据用以确定将要从所述第一向量的数据元素提取的一个或多个数据元素。
6.如权利要求5所述的设备,其中所述断言数据标识第一提取数据元素位置及最末提取数据元素位置,并且所述处理电路将所述第一提取数据元素位置与所述最末提取数据元素位置之间的数据元素序列确定为将要提取的数据元素。
7.如权利要求1所述的设备,其中:
所述一个或多个控制寄存器包括一个或多个标量寄存器以用于储存数据值;并且
所述叠接指令中标识的至少一个控制寄存器包括至少一个标量寄存器,并且所述处理电路响应于所述叠接指令的执行以在确定将要从所述第一向量提取每一数据元素时使用每一标识的标量寄存器中的数据值。
8.如权利要求7所述的设备,其中所述叠接指令标识第一标量寄存器及第二标量寄存器,这些标量寄存器储存的数据值提供所述位置数据和所述长度数据,所述位置数据及所述长度数据用以确定将要从所述第一向量的数据元素提取的一个或多个数据元素。
9.如权利要求8所述的设备,其中所述第一标量寄存器及第二标量寄存器中储存的数据值标识第一提取数据元素位置及最末提取数据元素位置,并且所述处理电路将所述第一提取数据元素位置与所述最末提取数据元素位置之间的数据元素序列确定为将要提取的数据元素。
10.如权利要求7所述的设备,其中:
所述一个或多个控制寄存器包括至少一个断言寄存器,每一断言寄存器用以针对数据元素向量内每一数据元素位置储存断言数据;
在所述叠接指令中标识的所述至少一个控制寄存器包括所述至少一个断言寄存器之一,所述处理电路响应于所述叠接指令的执行以根据所述断言数据确定将要从所述第一向量提取的每一数据元素;并且
所述叠接指令中标识的一个或多个控制寄存器包括所述至少一个断言寄存器之一以及所述标量寄存器之一,所标识的标量寄存器中的数据值与所标识的断言寄存器中的断言数据组合用于确定将要从所述第一向量的数据元素提取的一个或多个数据元素。
11.如权利要求2所述的设备,其中所述第一向量寄存器和所述第二向量寄存器是相同的向量寄存器。
12.如权利要求1所述的设备,其中所述第一向量寄存器是一断言寄存器,该断言寄存器用以储存针对数据元素向量内的每一数据元素位置的断言数据。
13.如权利要求12所述的设备,其中每一数据元素包括单个位。
14.如权利要求1所述的设备,其中所述处理电路被布置以在多次迭代的每次迭代中执行所述叠接指令,由所述叠接指令标识的所述至少一个控制寄存器中的每一迭代控制数据标识将要从所述第一向量的数据元素提取的一个或多个数据元素,这些数据元素不同于在先前迭代期间所标识的用于提取的一个或多个数据元素。
15.如权利要求1所述的设备,其中所述处理电路包括向量置换电路。
16.如权利要求15所述的设备,其中:
所述叠接指令还标识第二向量寄存器,所述第二向量寄存器储存第二向量的数据元素,并且所述处理电路响应于所述叠接指令的执行以在所述结果向量中未被所提取的数据元素占据的每一数据元素位置处包括来自所述第二向量的数据元素的数据元素;并且
所述向量置换电路包括:
第一移位电路,用以对所述第一向量的数据元素执行第一移位操作,及第二移位电路,用以对所述第二向量的数据元素执行第二移位操作;
组合电路,用以从由所述第一移位电路和所述第二移位电路输出的向量生成结果向量;以及
分析电路,用以分析所述至少一个控制寄存器中的控制数据,以便确定将要从所述第一向量的数据元素提取的一个或多个数据元素,并且依据该分析发布控制信号以控制所述第一移位电路和所述第二移位电路的操作。
17.如权利要求16所述的设备,其中所述向量置换电路还包括:
第一掩码电路,用以对由所述第一移位电路输出的向量执行第一掩码操作以便产生第一掩码的向量,和第二掩码电路,用以对由所述第二移位电路输出的向量执行第二掩码操作以便产生第二掩码的向量;
所述组合电路被布置以藉由组合所述第一掩码的向量和所述第二掩码的向量来产生所述结果向量。
18.如权利要求15所述的设备,其中:
所述叠接指令还标识第二向量寄存器,所述第二向量寄存器储存第二向量的数据元素,并且所述处理电路响应于所述叠接指令的执行以在所述结果向量中未被所提取的数据元素占据的每一数据元素位置处包括来自所述第二向量的数据元素的数据元素;并且
所述向量置换电路包括:
可编程纵横电路,用以从所述第一向量的数据元素和所述第二向量的数据元素产生所述结果向量;以及
分析电路,用以分析所述至少一个控制寄存器,以便确定将要从所述第一向量的数据元素提取的一个或多个数据元素,并且依据该分析发布控制信号以控制所述可编程纵横电路的操作。
19.一种用以在具有一组向量寄存器及一个或多个控制寄存器的设备内执行叠接操作的方法,该方法包括:
执行叠接指令,该叠接指令标识至少第一向量寄存器及至少一个控制寄存器,所述第一向量寄存器储存具有一定向量长度的第一向量的数据元素,所述一定向量长度取决于所述第一向量中的数据元素的数目和所述数据元素的大小,所述至少一个控制寄存器储存控制数据,该控制数据独立于所述数据元素的大小而标识所述第一向量的数据元素中占据连续数据元素位置的一个或多个数据元素,其中所述控制数据包括位置数据和不同于所述位置数据的长度数据,所述位置数据标识所述第一向量寄存器内的第一数据元素的位置,所述长度数据标识将要从所述第一向量的数据元素提取的数据元素的数目;
所述叠接指令的执行包括以下步骤:
从所述第一向量提取由所述至少一个控制寄存器中的控制数据标识的每一数据元素;及
将所提取的数据元素在结果向量的数据元素中输出,所述结果向量还包含来自第二向量的数据元素,
其中所述方法包括:在所述结果向量的从所述结果向量的第一端起的连续数据元素位置内输出每个所提取的数据元素。
20.一种设备,包括:
一组向量寄存器装置;
一个或多个控制寄存器装置;及
处理装置,用以执行指令序列,该指令序列包括叠接指令,所述叠接指令标识至少第一向量寄存器装置及至少一个控制寄存器装置,所述第一向量寄存器装置用于储存具有一定向量长度的第一向量的数据元素,所述一定向量长度取决于所述第一向量中的数据元素的数目和所述数据元素的大小,所述至少一个控制寄存器装置用于储存控制数据,该控制数据独立于所述数据元素的大小而标识占据所述第一向量的数据元素内的连续数据元素位置的一个或多个数据元素,其中所述控制数据包括位置数据和不同于所述位置数据的长度数据,所述位置数据标识所述第一向量寄存器装置内的第一数据元素的位置,所述长度数据标识将要从所述第一向量的数据元素提取的数据元素的数目;
所述处理装置响应于所述叠接指令的执行以从所述第一向量中提取由所述至少一个控制寄存器装置中的控制数据标识的每一数据元素,并且将所提取的数据元素在结果向量的数据元素中输出,所述结果向量还包含来自第二向量的数据元素,
其中所述处理装置在所述结果向量的从所述结果向量的第一端起的连续数据元素位置内输出每个所提取的数据元素。
21.一种非暂态计算机可读取储存介质,存储有计算机程序,该计算机程序在被数据处理设备执行时提供一虚拟机,该虚拟机提供对应于权利要求1所述的设备的指令执行环境。
CN201680043378.7A 2015-07-31 2016-06-15 用于执行叠接操作的设备和方法 Active CN107851019B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1513497.6 2015-07-31
GB1513497.6A GB2540939B (en) 2015-07-31 2015-07-31 An apparatus and method for performing a splice operation
PCT/GB2016/051772 WO2017021677A1 (en) 2015-07-31 2016-06-15 An apparatus and method for performing a splice operation

Publications (2)

Publication Number Publication Date
CN107851019A CN107851019A (zh) 2018-03-27
CN107851019B true CN107851019B (zh) 2022-06-28

Family

ID=54062946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680043378.7A Active CN107851019B (zh) 2015-07-31 2016-06-15 用于执行叠接操作的设备和方法

Country Status (9)

Country Link
US (1) US20180210733A1 (zh)
EP (1) EP3314395B1 (zh)
JP (1) JP6971220B2 (zh)
KR (1) KR102584035B1 (zh)
CN (1) CN107851019B (zh)
GB (1) GB2540939B (zh)
IL (1) IL256554B (zh)
TW (1) TWI716425B (zh)
WO (1) WO2017021677A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182200B2 (en) * 2017-06-29 2021-11-23 Texas Instruments Incorporated Streaming engine with short cut start instructions
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
WO2019229538A2 (zh) * 2018-05-30 2019-12-05 赛灵思公司 数据转换结构、方法及其片上实现
GB2580068B (en) 2018-12-20 2021-02-24 Advanced Risc Mach Ltd Generating a vector predicate summary
CN111538817A (zh) * 2019-01-18 2020-08-14 北京京东尚科信息技术有限公司 人机交互方法和装置
CN111813447B (zh) * 2019-04-12 2022-11-08 杭州中天微系统有限公司 一种数据拼接指令的处理方法和处理装置
CN111814093A (zh) 2019-04-12 2020-10-23 杭州中天微系统有限公司 一种乘累加指令的处理方法和处理装置
CN111813446A (zh) * 2019-04-12 2020-10-23 杭州中天微系统有限公司 一种数据加载和存储指令的处理方法和处理装置
CN112446497B (zh) * 2019-09-02 2024-02-27 中科寒武纪科技股份有限公司 数据块拼接方法、相关设备及计算机可读介质
US11086625B2 (en) * 2019-09-10 2021-08-10 Apple Inc. Compression assist instructions
CN111443948B (zh) * 2020-03-30 2022-09-09 龙芯中科技术股份有限公司 指令执行方法、处理器和电子设备
CN114296798A (zh) * 2021-12-10 2022-04-08 龙芯中科技术股份有限公司 向量移位方法、处理器及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
CN1926511A (zh) * 2004-03-10 2007-03-07 Arm有限公司 在数据字内插入比特

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
US5751614A (en) * 1994-03-08 1998-05-12 Exponential Technology, Inc. Sign-extension merge/mask, rotate/shift, and boolean operations executed in a vectored mux on an ALU
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6308253B1 (en) * 1999-03-31 2001-10-23 Sony Corporation RISC CPU instructions particularly suited for decoding digital signal processing applications
US7340495B2 (en) * 2001-10-29 2008-03-04 Intel Corporation Superior misaligned memory load and copy using merge hardware
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US20130212355A1 (en) * 2002-02-04 2013-08-15 Tibet MIMAR Conditional vector mapping in a SIMD processor
JP3958662B2 (ja) * 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ
US9557994B2 (en) * 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US20070106883A1 (en) * 2005-11-07 2007-05-10 Choquette Jack H Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction
US8078836B2 (en) * 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US20090182982A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Rotate Then Insert Selected Bits Facility and Instructions Therefore
US8356160B2 (en) * 2008-01-15 2013-01-15 International Business Machines Corporation Pipelined multiple operand minimum and maximum function
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
CN106406817B (zh) * 2011-04-01 2019-06-14 英特尔公司 向量友好指令格式及其执行
TWI636362B (zh) * 2011-06-24 2018-09-21 林正浩 高性能快取方法和裝置
CN104303141A (zh) * 2011-12-22 2015-01-21 英特尔公司 用于从寄存器提取写掩码的系统、装置和方法
CN104025039B (zh) * 2011-12-22 2018-05-08 英特尔公司 打包数据操作掩码串接处理器、方法、系统及指令
US9342479B2 (en) * 2012-08-23 2016-05-17 Qualcomm Incorporated Systems and methods of data extraction in a vector processor
CN102857235B (zh) * 2012-09-27 2015-03-25 中国传媒大学 基于共享寄存器的dtmb中ldpc编码器和编码方法
CN102843147B (zh) * 2012-09-27 2016-06-22 中国传媒大学 循环右移累加基的dtmb中ldpc编码器和编码方法
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
US9639503B2 (en) * 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
CN1926511A (zh) * 2004-03-10 2007-03-07 Arm有限公司 在数据字内插入比特

Also Published As

Publication number Publication date
IL256554B (en) 2020-03-31
EP3314395A1 (en) 2018-05-02
KR20180033526A (ko) 2018-04-03
GB2540939B (en) 2019-01-23
GB201513497D0 (en) 2015-09-16
EP3314395B1 (en) 2022-02-23
GB2540939A (en) 2017-02-08
US20180210733A1 (en) 2018-07-26
CN107851019A (zh) 2018-03-27
JP2018521426A (ja) 2018-08-02
KR102584035B1 (ko) 2023-10-04
TW201721410A (zh) 2017-06-16
WO2017021677A1 (en) 2017-02-09
IL256554A (en) 2018-02-28
TWI716425B (zh) 2021-01-21
JP6971220B2 (ja) 2021-11-24

Similar Documents

Publication Publication Date Title
CN107851019B (zh) 用于执行叠接操作的设备和方法
EP2569694B1 (en) Conditional compare instruction
US10776124B2 (en) Handling exceptional conditions for vector arithmetic instruction
CN101965554B (zh) 选择性地提交已执行指令的结果的系统和方法
US7458069B2 (en) System and method for fusing instructions
US5710902A (en) Instruction dependency chain indentifier
KR102256188B1 (ko) 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법
TWI512617B (zh) 用於改良向量分割迴圈之效能的方法、處理器及系統
US9081564B2 (en) Converting scalar operation to specific type of vector operation using modifier instruction
US9483438B2 (en) Apparatus and method for controlling the number of vector elements written to a data store while performing speculative vector write operations
CN108140011B (zh) 向量加载指令
US20170031682A1 (en) Element size increasing instruction
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
KR100316710B1 (ko) 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치

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