CN105009075A - 具有水平置换的向量间接元素垂直寻址模式 - Google Patents

具有水平置换的向量间接元素垂直寻址模式 Download PDF

Info

Publication number
CN105009075A
CN105009075A CN201480012924.1A CN201480012924A CN105009075A CN 105009075 A CN105009075 A CN 105009075A CN 201480012924 A CN201480012924 A CN 201480012924A CN 105009075 A CN105009075 A CN 105009075A
Authority
CN
China
Prior art keywords
vector
data values
control vector
element data
multiple element
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.)
Granted
Application number
CN201480012924.1A
Other languages
English (en)
Other versions
CN105009075B (zh
Inventor
阿贾伊·阿南塔·英格尔
戴维·J·霍伊尔
马克·M·霍夫曼
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105009075A publication Critical patent/CN105009075A/zh
Application granted granted Critical
Publication of CN105009075B publication Critical patent/CN105009075B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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/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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register

Abstract

一种用于将一或多个元素数据值放置到输出向量中的实例方法包含识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址。所述方法还包含对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址。所述方法进一步包含基于所述寄存器地址而检索多个元素数据值。所述方法还包含识别包含对应于输出向量的一组地址的水平置换控制向量。所述方法进一步包含基于所述水平置换控制向量中的所述组地址而将所述多个元素数据值中的所述所检索元素数据值中的至少一些放置到所述输出向量中。

Description

具有水平置换的向量间接元素垂直寻址模式
优先权申请案
本申请案主张2013年3月15日申请的标题为“具有水平置换的向量间接元素垂直寻址模式(VECTOR INDIRECT ELEMENT VERTICAL ADDRESSING MODE WITHHORIZONTAL PERMUTE)”的第13/834,785号美国专利申请案的优先权,所述美国专利申请案以全文引用的方式并入本文中。
技术领域
本发明大体上涉及处理器,且更确切地说,涉及在处理器中处理元素。
背景技术
处理器可接收数据流且将数据存储在寄存器中。数据流可横跨多个寄存器,且包含处理器所关注的数据的子组。在一实例中,用户可使用包含处理器的手持机。信号可包含与用户相关联的数据,且参考信号可从信号塔发送到手持机。参考信号可与用户的数据连同其它数据交错。举例来说,信号可包含参考信号及与其它用户相关联的数据。信号可包含用户的数据连同其它用户的数据,因为如果数据包丢失,则与包含用户数据的整个数据包相比,丢失的用户数据的量较小。此可减轻在每使用者基础上丢失封包的效应。
可能需要处理器高效地检索例如所关注的数据(例如,参考信号)且对在数据流中交错的所关注数据进行组织。
发明内容
本发明涉及处理器。提供用于在处理器中处理元素的方法、系统及技术。
根据一实施例,一种用于将一或多个元素数据值放置到输出向量中的方法包含识别包含多个元素的垂直置换控制向量。所述多个元素中的每一元素包含寄存器地址。所述方法还包含对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址。所述方法进一步包含基于所述寄存器地址而检索多个元素数据值。所述方法还包含识别包含对应于输出向量的一组地址的水平置换控制向量。所述方法进一步包含基于所述水平置换控制向量中的所述组地址而将所述多个元素数据值中的所述所检索元素数据值中的至少一些放置到所述输出向量中。
根据另一实施例,一种设备包含处理器,所述处理器可操作以识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址。所述处理器还可操作以对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址。所述处理器还可操作以基于所述寄存器地址而检索多个元素数据值。所述处理器还可操作以识别包含对应于输出向量的一组地址的水平置换控制向量。所述处理器还可操作以基于所述水平置换控制向量中的所述组地址而将所述所检索元素数据值中的至少一些放置到所述输出向量中。
根据另一实施例,一种计算机可读媒体具有存储于其上的用于执行操作的计算机可执行指令,所述操作包含:识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址;对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址;基于读取所述一或多个寄存器地址而检索多个元素数据值;识别包含对应于输出向量的一组地址的水平置换控制向量;以及基于所述水平置换控制向量中的所述组地址而将所述多个元素数据值中的所述所检索元素数据值中的至少一些放置到所述输出向量中。
根据另一实施例,一种用于将一或多个元素数据值放置到输出向量中的设备包含:用于识别包含多个元素的垂直置换控制向量的装置,所述多个元素中的每一元素包含寄存器地址;用于对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址的装置;用于基于读取所述一或多个寄存器地址而检索多个元素数据值的装置;用于识别包含对应于输出向量的一组地址的水平置换控制向量的装置;以及用于基于所述水平置换控制向量中的所述组地址而将所述多个元素数据值中的所述所检索元素数据值中的至少一些放置到所述输出向量中的装置。
根据另一实施例,一种用于将元素数据值写入到输出向量中的方法包含读取包含多个元素数据值的输入向量。所述方法还包含识别包含一组地址的水平置换控制向量。所述方法进一步包含基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述多个元素数据值中的所述元素数据值中的至少一些。所述方法还包含将所述经重排的多个元素数据值放置到暂时性向量中。所述方法进一步包含识别包含多个元素的垂直置换控制向量。所述多个元素中的每一元素包含寄存器地址。所述方法还包含基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中。
根据另一实施例,一种设备包含处理器,所述处理器可操作以读取包含多个元素数据值的输入向量。所述处理器还可操作以识别包含一组地址的水平置换控制向量。所述处理器还可操作以基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述元素数据值中的至少一些。所述处理器还可操作以将所述经重排的多个元素数据值放置到暂时性向量中。所述处理器还可操作以识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址。所述处理器还可操作以基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中。
根据另一实施例,一种计算机可读媒体具有存储于其上的用于执行操作的计算机可执行指令,所述操作包含:读取包含多个元素数据值的输入向量;识别包含一组地址的水平置换控制向量;基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述多个元素数据值中的所述元素数据值中的至少一些;将所述经重排的多个元素数据值放置到暂时性向量中;识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址;以及基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中。
根据另一实施例,一种用于将元素数据值写入到输出向量中的设备包含:用于读取包含多个元素数据值的输入向量的装置;用于识别包含一组地址的水平置换控制向量的装置;用于基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述多个元素数据值中的所述元素数据值中的至少一些的装置;用于将所述经重排的多个元素数据值放置到暂时性向量中的装置;用于识别包含多个元素的垂直置换控制向量的装置,所述多个元素中的每一元素包含寄存器地址;以及用于基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中的装置。
附图说明
形成本说明书的一部分的随附图式说明本发明的实施例,且连同描述一起进一步用来解释实施例的原理。在图式中,相同参考数字可指示相同或功能上类似的元件。元件第一次出现于其中的图式通常由对应参考数字中的最左边数字指示。
图1是说明根据一实施例的包含向量寄存器堆的处理器的框图。
图2是说明根据一实施例的放置到输出向量中的一或多个元素数据值的框图。
图3是说明根据一实施例的写入到至少一个输出向量中的元素数据值的框图。
图4是说明根据一实施例的向量寄存器堆的框图。
图5是说明根据一实施例的用于将一或多个元素数据值放置到输出向量中的方法的流程图。
图6是说明根据一实施例的用于将元素数据值写入到至少一个输出向量中的方法的流程图。
图7是说明根据一实施例的包含数字信号处理器的无线装置的框图。
具体实施方式
I.概述
II.实例指令
A.实例读取指令
B.实例写入指令
C.标量值
III.实例寄存器堆
IV.实例方法
V.实例无线装置
I.概述
应理解,以下揭示内容提供用于实施本发明的不同特征的许多不同实施例或实例。可在没有这些特定细节中的一些或全部的情况下实践一些实施例。下文描述组件、模块及布置的特定实例以简化本发明。当然,这些组件以及布置仅为实例且并不意欲为限制性的。
处理器可包含包括多个向量寄存器的向量寄存器堆。向量寄存器可存储元素数据值,且与元素数据值相关联的数据的子组可为所关注的。可能需要从所述多个向量寄存器读取元素数据值的所述子组(例如,与用户数据交错的参考信号),并将元素数据值的所述子组分布到输出向量中。
在一实例中,可使用两组控制项来检索元素数据值的子组,并将元素数据值的子组中的一或多者放置到输出向量中。第一组控制项可为垂直置换控制向量,其包含寄存器地址以确定将读出所述多个向量寄存器中的向量寄存器中的哪列元素。举例来说,垂直置换控制向量可包含从其读取元素数据值的垂直地址。第二组控制项可为包含对应于输出向量的一组地址的水平置换控制向量。水平置换控制向量可确定元素数据值的所检索子组在输出向量中的水平分布。元素数据值的所检索子组中的至少一些可基于水平置换控制向量中的所述组地址而放置到输出向量中。
在另一实例中,两组控制项可用于将元素数据值写入到至少一个输出向量中。在一实例中,可读取包含多个元素数据值的输入向量。输入向量中的所述多个元素数据值中的元素数据值中的至少一些可基于水平置换控制向量中的所述组地址而重排,且经重排的元素数据值可放置在暂时性向量中。暂时性向量中的元素数据值可基于垂直置换控制向量而放置到至少一个输出向量中。垂直置换控制向量可包含多个元素,所述多个元素中的每一元素包含向量寄存器堆中的向量寄存器的寄存器地址。
图1是说明根据一实施例的包含向量寄存器堆120的处理器110的框图。
向量寄存器堆120可包含N个通用向量寄存器,其中N为大于零的整数。每一向量寄存器可填充有具有M个元素的向量,其中M为大于零的整数。元素可指可从向量寄存器读取的最小数据粒度。在每一向量寄存器内,数据可例如作为字节(8位)、短字(16位)、字(32位)或双字(64位)来写入或读取。在一实例中,向量寄存器堆120包含32个向量寄存器(N=32)及32个32位元素(M=32),每一向量寄存器为1024位宽(32元素×32位)。
在图1中,向量寄存器堆120包含向量寄存器V0(122)、V1(124)、V2(126)、V3(127)、V4(128)、V5(130)、V6(132)及V7(134)。尽管向量寄存器堆120在图1中说明为包含八个向量寄存器,但在向量寄存器堆120中具有少于八个或大于八个向量寄存器的其它实施例在本发明的范围内。在一实例中,向量寄存器堆120包含32个向量寄存器V0至V31。
处理器110可将元素加载到向量寄存器中且从向量寄存器读取值。在一实例中,可基于垂直及水平置换控制向量而处理与向量寄存器V4、V5、V6及V7相关联的元素的子组。
III.实例指令
A.实例读取指令
处理器110可接收将一或多个元素数据值放置到输出向量中的读取指令。
图2是说明根据一实施例的放置到输出向量中的一或多个元素数据值的框图200。
图200包含包括Vd=vidx(Vu,Vv)的实例读取指令201。指令201包含读取两个输入向量寄存器(例如,Vu及Vv)及将输出写入到输出向量寄存器(例如,Vd)。向量寄存器Vu、Vv及Vd可为来自向量寄存器堆120的向量寄存器V0至V7中的任一者,其中u、v及d可为从零到七的任何值。所述指令可转换成指明用于Vu、Vv及Vd的特定值的操作码。在一实例中,Vu=V0、Vv=V1且Vv=V3。Vu可包含垂直置换控制向量,Vv可包含水平置换控制向量,且Vd可包含输出向量。及向量寄存器中的每一者。Vu、Vx及Vv中的每一者可为向量寄存器堆120中的向量寄存器中的任一者。
处理器110可接收及执行指令201。执行指令201可包含识别垂直置换控制向量、从垂直置换控制向量读取一或多个存储地址,及基于所读取的存储地址检索多个元素数据值。执行指令201还可包含识别水平置换控制向量及基于所述水平置换控制向量而将所检索元素数据值中的至少一些放置到输出向量中。
图200包含可包含于向量寄存器堆120中的多个向量寄存器。所述多个向量寄存器包含向量寄存器V4、V5、V6及V7,且每一向量寄存器可包含元素数据值。可能需要检索存储于所述多个向量寄存器中的元素数据值的子组。
处理器110可识别包含多个元素的垂直置换控制向量202。在一个实施例中,处理器110接收与指令相关联的数据,且将所接收数据分裂成多个元素。多个元素可放置到垂直置换控制向量中,所述多个元素中的每一元素包含寄存器地址。
在图2中,垂直置换控制向量202可存储于来自向量寄存器堆120的向量寄存器Vu 122中。因此,在处理器110识别垂直置换控制向量时,处理器110可识别向量寄存器堆120中的向量寄存器Vu。向量寄存器堆120中的向量寄存器可为编程者所见,且可用以从向量寄存器堆120中的向量寄存器间接读取。参考以上实例,向量寄存器V4、V5、V6及V7中的元素数据值的仅子组可存储参考信号,且其余元素数据值可能包含不关注的其它数据。所关注的元素数据值的所述子组可横跨多个向量寄存器。为检索所述特定元素数据值,编程者可将此模式编程到Vu中以提取存储在适当寄存器地址处的所关注元素数据值。
向量寄存器Vu可包含32个元素,且每一元素可包含32位寄存器地址。举例来说,Vu[0]=4且包含用于向量寄存器V4[0]的寄存器地址,Vu[1]=5且包含用于向量寄存器V5[1]的寄存器地址,Vu[2]=6且包含用于向量寄存器V6[2]的寄存器地址,且Vu[3]=7且包含用于向量寄存器V7[3]的寄存器地址。
可基于读取寄存器地址而检索多个元素数据值。明确地说,垂直置换控制向量中的寄存器地址可用作间接地址来从向量寄存器堆检索适当元素数据值。以此方式,存储于垂直置换控制向量202中的一或多个寄存器地址可用作对存储在对应寄存器地址处的元素数据值的间接存取。与直接读取相比,间接读取可指定元素数据值而非寄存器地址。对于间接读取,寄存器地址可经读取且用以检索所关注的元素数据值。
在一实例中,在从Vu[0]读取用于向量寄存器V4的寄存器地址之后,处理器110可检索元素数据值“i0”,其为存储在向量寄存器V4[0]处的元素数据值。类似地,在从Vu[1]读取用于向量寄存器V5的寄存器地址之后,处理器110可检索元素数据值“j1”,其为存储在向量寄存器V5[1]处的元素数据值。类似地,在从Vu[2]读取用于向量寄存器V6的寄存器地址之后,处理器110可检索元素数据值“k2”,其为存储在向量寄存器V6[2]处的元素数据值。类似地,在从Vu[3]读取用于向量寄存器V7的寄存器地址之后,处理器110可检索元素数据值“l3”,其为存储在向量寄存器V7[3]处的元素数据值。处理器110可对于存储于Vu中的其他寄存器地址执行类似动作。在一个实施例中,处理器110为单指令多数据(SIMD)处理器,且并行地执行本发明中描述的指令。举例来说,处理器110可并行地读取Vv中的寄存器地址且基于所读取寄存器地址并行地检索元素数据值。
处理器110可将所检索的多个元素数据值放置在暂时性向量寄存器中。图200包含向量寄存器Vtmp 204。处理器110可为管线化处理器,且Vtmp 204可为用以存储中间结果的暂时性管线向量寄存器。在另一实例中,Vtmp 204可为向量寄存器堆120中的向量寄存器。基于Vu中的寄存器地址而检索到的元素数据值可放置到Vtmp 204中。
举例来说,在图2中,从向量寄存器V4[0]读取的“i0”放置到Vtmp[0]中,从向量寄存器V5[1]读取的“j1”放置到Vtmp[1]中,从向量寄存器V6[2]读取的“k2”放置到Vtmp[2]中,且从向量寄存器V7[3]读取的“l3”放置到Vtmp[3]中。处理器110可基于垂直置换控制向量中的寄存器地址而对所有其它所检索元素数据值执行类似动作。
在一实施例中,处理器110识别包含对应于输出向量的一组地址的水平置换控制向量206。水平置换控制向量206具有确定所检索数据值元素在输出向量中的放置的一组控制项。处理器110可基于水平置换控制向量中的所述组地址而将所述多个元素数据值中的所检索元素数据值中的至少一些放置到输出向量中。举例来说,Vtmp 204中的元素数据值可经置换且放置到输出向量中。在一实例中,使用纵横线(crossbar)实施水平置换。在此实例中,所检索元素数据值中的至少一些可使用纵横线而放置到输出向量中。
在图2中,水平置换控制向量可存储于向量寄存器Vv(124)中,且输出向量可为来自向量寄存器堆120的Vd(126)。
在一实例中,Vv[0]=3,指示对应于Vtmp[3]的元素数据值属于Vd[0]。因此,对应于Vtmp[3]的元素数据值“l3”放置到输出向量Vd[0]中。类似地,Vv[1]=1,指示对应于Vtmp[1]的元素数据值属于Vd[1]。因此,对应于Vtmp[1]的元素数据值“j1”放置到输出向量Vd[1]中。类似地,Vv[2]=0,指示对应于Vtmp[0]的元素数据值属于Vd[2]。因此,对应于Vtmp[0]的元素数据值“i0”放置到输出向量Vd[2]中。类似地,Vv[3]=28,指示对应于Vtmp[28]的元素数据值属于Vd[3]。因此,对应于Vtmp[28]的元素数据值“i28”放置到输出向量Vd[3]中。处理器110可执行类似动作以将Vtmp 204中的其它元素数据值放置到输出向量Vd 126中。
向量寄存器120可具有被给出地址的读取端口。在一实例中,在第一循环中,处理器110读取来自垂直置换控制向量的寄存器地址(例如,图1之向量寄存器堆120中的向量寄存器Vu)。处理器110可在相同类型的一个指令中执行32个不同操作。举例来说,如果向量寄存器Vu包含垂直置换控制向量,则处理器110可对Vu[0]到Vu[31]执行读取操作,使得处理器110同时从向量寄存器Vu读取32个寄存器地址。在下一循环内,处理器110可再次基于所读取寄存器地址而从向量寄存器堆120读取以检索适当元素数据值。处理器110可执行检索操作。使得处理器110基于从向量寄存器Vu读取的寄存器地址同时检索32个元素数据值。处理器110可同时将32个所检索元素数据值放置到Vtmp中。
存储于Vtmp中的32个所检索元素数据值可使用水平置换控制向量而水平地分布于输出向量中。水平置换控制向量可包含对应于输出向量的所述组地址。处理器110可识别水平置换控制向量且基于水平置换控制向量中的所述组地址而将所述多个元素数据值中的所检索元素数据值中的至少一些放置到输出向量中。处理器110可基于水平置换控制向量中的所述组地址而同时将32个所检索元素数据值放置到输出向量中。输出向量可由此包含所关注的元素数据值。
B.实例写入指令
处理器110还可能接收将元素数据值写入到至少一个向量寄存器中的写入指令。处理器110可使用垂直置换控制向量及水平置换控制向量以将元素数据值写入到至少一个向量寄存器中。写入指令可为上文所论述的读取指令的写入版本类似物。
图3是说明根据一实施例的写入到至少一个向量寄存器中的元素数据值的框图300。
图300包含包括Vidx(Vd,Vv)=Vu的实例写入指令301。指令301包含读取输入向量寄存器(例如,向量寄存器Vu)及基于垂直置换控制向量(例如,向量寄存器Vd)及水平置换控制向量(例如,向量寄存器Vv)而将元素数据值从输入向量寄存器写入到至少一个向量寄存器(例如,向量寄存器V4、V5、V6及V7)。
向量寄存器Vu、Vv及Vd可为来自向量寄存器堆120的向量寄存器V0到V7中的任一者,其中u、v及d可为从零到七的任何值。指令可转换为指定用于Vu、Vv及Vd的特定值的操作码。在一实例中,Vu=V0,Vv=V1且Vv=V3。Vu可包含输入向量寄存器,Vv可包含水平置换控制向量,且Vd可包含垂直置换控制向量。
处理器110可接收且执行指令301。执行指令301可包含读取包含多个元素数据值的输入向量Vu(122)。举例来说,Vu[0]=u0,Vu[1]=u1,Vu[2]=u2且Vu[3]=u3。在一实例中,输入向量包含写入到至少一个输出向量的实际元素数据值。
可读取Vu中的元素数据值,且基于水平置换控制向量对其进行置换。处理器110可识别包含一组地址的水平置换控制向量206。水平置换控制向量206可存储于来自向量寄存器堆120的向量寄存器Vv(124)中。因此,在处理器110识别水平置换控制向量时,处理器110可识别向量寄存器堆120中的向量寄存器Vv。可基于水平置换控制向量206中的所述组地址而重排输入向量Vu中的多个元素数据值中的元素数据值中的至少一些。所述多个经重排的元素数据值可放置在暂时性向量Vtmp 204中。
在一实例中,来自Vv[0]的寄存器地址=3,且处理器110可检索存储在Vu[3]处的元素数据值“u3”并将所检索元素数据值放置到Vtmp[0]中。类似地,来自Vv[1]的寄存器地址=1,且处理器110可检索存储在Vu[1]处的元素数据值“u1”并将所检索元素数据值放置到Vtmp[1]中。类似地,来自Vv[2]的寄存器地址=0,且处理器110可检索存储在Vu[0]处的元素数据值“u0”并将所检索元素数据值放置到Vtmp[2]中。处理器110可执行类似动作以将Vu中的其它元素数据值放置到暂时性向量Vtmp中。
执行指令301还可包含识别包含多个元素的垂直置换控制向量202,所述多个元素中的每一元素包含寄存器地址。垂直置换控制向量202可从向量寄存器堆120存储于向量寄存器Vd(126)中。Vtmp中的元素数据值可基于垂直置换控制向量中的寄存器地址而放置到至少一个向量寄存器中。明确地说,Vd中的寄存器地址可用以按垂直方式将Vtmp中的元素数据值写入到至少一个向量寄存器。
举例来说,在图3中,Vd[0]=4,指示对应于Vtmp[0]的元素数据值属于V4[0]。因此,对应于Vtmp[0]的元素数据值“i0”放置到向量寄存器V4[0]中。类似地,Vd[1]=5,指示对应于Vtmp[1]的元素数据值属于V5[1]。因此,对应于Vtmp[1]的元素数据值“j1”放置到向量寄存器V5[1]中。类似地,Vd[2]=6,指示对应于Vtmp[2]的元素数据值属于V6[2]。因此,对应于Vtmp[2]的元素数据值放置到向量寄存器V6[2]中。类似地,Vd[3]=7,指示对应于Vtmp[3]的元素数据值属于V7[3]。因此,对应于Vtmp[3]的元素数据值“l3”放置到向量寄存器V7[3]中。处理器110可执行类似动作以将Vtmp 204中的其它元素数据值放置到一或多个向量寄存器(例如,向量寄存器V4、V5、V6及V7)中。向量寄存器可接着在适当地方存储来自输入向量的元素数据值。
如上文所论述且进一步在此处强调,图1到3仅为实例,其不应不恰当地限制权利要求书的范围。
如上文所说明,置换控制向量(例如,垂直置换控制向量及/或水平置换控制向量)可存储于在由处理器110接收到数据时进行更新的动态寄存器中。举例来说,在图1中,垂直置换控制向量包含于向量寄存器(例如,Vu)中,且水平置换控制向量也包含于来自向量寄存器堆的向量寄存器(例如,Vv)中。此不意欲为限制性的,且可以多种方式检索置换控制向量。
举例来说,置换控制向量中说明的模式可不同于图2及3中所说明的模式。举例来说,图2中的垂直置换控制向量具有指定从向量寄存器V4、V5、V6、V7、V4、V5、V6、V7等读取元素数据值的模式。此不意欲为限制性的,且可使用任何模式。举例来说,编程者可将任何模式编程到置换控制向量中。
另外,在图3中,输入向量Vu中的所有值写入到至少一个输出向量中。此不意欲为限制性的。举例来说,在另一实施例中,输入向量Vu中的一或多个元素数据值不写入到输出向量中。另外,输入向量Vu中的元素数据值可写入到单个向量寄存器或一个以上向量寄存器。在一实例中,如果垂直置换控制项包含相同寄存器地址,则Vtmp中的所有元素数据值可写入到相同向量寄存器(例如,向量寄存器V4)。
C.标量值
另外,置换控制向量(例如,垂直置换控制向量或水平置换控制向量)可存储于不同于向量寄存器的存储器位置中。在一个实例中,置换控制向量可存储于只读存储器(ROM)中且从ROM读取。在一实例读取指令中,处理器110可接收例如Vd=Vidx(R,Vv)等指令,其中R为参考ROM中的数据结构的标量值。垂直置换控制向量可存储于ROM中的数据结构(例如,表)中。因此,为识别垂直置换控制向量,处理器110可使用标量值识别ROM中的数据结构中的垂直置换控制向量。
在另一实例读取指令中,处理器110可接收例如Vd=Vidx(Vu,R)等指令,其中R为参考ROM中的数据结构的标量值。水平置换控制向量可存储于ROM中的数据结构(例如,表)中。因此,为识别水平置换控制向量,处理器110可使用所述标量值识别ROM中的数据结构中的水平置换控制向量。
在另一读取实例中,处理器110可接收例如Vd=Vidx(R1,R2)等指令,其中R1为参考ROM中的第一数据结构的标量标量值,且R2为参考物ROM中的第二数据结构的第二标量值。垂直置换控制向量可存储于ROM中的第一数据结构(例如,表)中,且水平置换控制向量可存储于ROM中的第二数据结构(例如,表)中。因此,为识别垂直置换控制向量,处理器110可使用第一标量值识别ROM中的第一数据结构中的垂直置换控制向量,且为识别水平置换控制向量,处理器110可使用第二标量值识别ROM中的第二数据结构中的水平置换控制向量。
类似地,写入指令也可包含标量值。举例来说,处理器110可接收例如Vidx(R,Vv)=Vu等指令,其中R为参考ROM中的数据结构的标量值。垂直置换控制向量可存储于ROM中的数据结构(例如,表)中。因此,为识别垂直置换控制向量,处理器110可使用所述标量值识别ROM中的数据结构中的垂直置换控制向量。
在另一实例写入指令中,处理器110可接收例如Vidx(Vd,R)=Vu等指令,其中R为参考ROM中的数据结构的标量值。水平置换控制向量可存储于ROM中的数据结构(例如,表)中。因此,为识别水平置换控制向量,处理器110可使用所述标量值识别ROM中的数据结构中的水平置换控制向量。
在另一写入实例中,处理器110可接收例如Vidx(R1,R2)=Vu等指令,其中R1为参考ROM中的第一数据结构的标量标量值,且R2为参考物ROM中的第二数据结构的第二标量值。垂直置换控制向量可存储于ROM中的第一数据结构(例如,表)中,且水平置换控制向量可存储于ROM中的第二数据结构(例如,表)中。因此,为识别垂直置换控制向量,处理器110可使用第一标量值识别ROM中的第一数据结构中的垂直置换控制向量,且为识别水平置换控制向量,处理器110可使用第二标量值识别ROM中的第二数据结构中的水平置换控制向量。
在一些实施例中,此可为有利的,因为可能不必使用向量寄存器来存储置换控制向量。因此,可释放向量寄存器以存储其它数据。另外,置换控制向量的值可为预先存储的值,使得可能不必消耗计算循环来将模式编程到置换控制向量中。
标量值可在指令中指定。在一实施例中,处理器110为协处理器,且从另一处理器接收标量值。在一实施例中,处理器110可从主存储器或ROM检索标量值。此外,处理器110可从其它处理器接收垂直置换控制向量及/或水平置换控制向量。
III.实例寄存器堆
图4是说明根据一实施例的向量寄存器堆的框图。
在一实施例中,处理器110为从向量寄存器堆120中的向量寄存器读取且写入到向量寄存器的SIMD处理器。在一实例中,向量寄存器堆120中的每一向量寄存器可包含为P位宽的字0(W0)122、为P位宽的字1(W1)124,…,一直到为P位宽的字31(W31)。P可为大于零的整数。向量寄存器可从最小字节粒度建构而成。在一实例中,向量寄存器堆120包含32个向量寄存器,且每一向量寄存器为1024位宽。每一向量寄存器可包含32个字,每一字包含32位。
在一实例中,P可为8的任何倍数(例如,8、16、32、64,等等)。即使P=32,置换控制项也可能邻近于彼此,使得可使用大于32位数据的构造。举例来说,如果字为32位宽且需要处置64位宽的数据,则可邻近地放置32位信息块中的相同控制项,使得系统可处置且置换64位的数据。
IV.实例方法
图5是说明根据一实施例的用于将一或多个元素数据值放置到输出向量中的方法500的流程图。方法500不意欲为限制性的,且可用于其它应用。
方法500包含步骤510到550。在步骤510中,识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址。在一实例中,处理器110识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址。存储于垂直置换控制向量中的寄存器地址可用以从向量寄存器堆中的一或多个向量寄存器读取元素数据值。垂直置换控制向量可存储于动态寄存器或静态存储器中。举例来说,在图2中的读取指令中,处理器110可将来自向量寄存器堆的Vu识别为垂直置换控制向量。在另一实例中,处理器从ROM检索垂直置换控制向量。
在步骤520中,对于所述多个元素中的每一元素,读取来自垂直置换控制向量的寄存器地址。在一实例中,对于所述多个元素中的每一元素,处理器110读取来自垂直置换控制向量的寄存器地址。垂直置换控制向量中的寄存器地址可用以以垂直方式从一或多个向量寄存器读取。为处理器所关注的元素数据值可位于寄存器地址处。
在步骤530中,基于所读取寄存器地址检索多个元素数据值。在一实例中,处理器110基于所读取寄存器地址检索多个元素数据值。所检索多个元素数据值可放置到暂时性向量中。举例来说,在图2中,向量寄存器V4[0]的位址在Vu[0]处存储于垂直置换控制向量中。向量寄存器V4[0]处的元素数据值可接着放置到暂时性向量中。所检索元素数据值可为处理器所关注。
在步骤540中,识别包含对应于输出向量的一组地址的水平置换控制向量。在一实例中,处理器110识别包含对应于输出向量的一组地址的水平置换控制向量。存储于水平置换控制向量中的所述组地址可用以水平方式将所检索的多个元素数据值(例如,存储于暂时性向量寄存器中)布置于输出向量中。水平置换控制向量可存储于动态寄存器或静态存储器中。举例来说,在图2中的读取指令中,处理器110可将来自向量寄存器堆的Vv识别为水平置换控制向量。在另一实例中,处理器从ROM检索水平置换控制向量。
在步骤550中,基于水平置换控制向量中的所述组地址而将所述多个元素数据值中的所检索元素数据值中的至少一些放置到输出向量中。在一实例中,处理器110基于水平置换控制向量中的所述组地址而将多个元素数据值中的所检索元素数据值中的至少一些放置到输出向量中。所关注的元素数据值可最初横跨多个寄存器,其它数据分散于其间。输出向量可接着仅存储所关注的元素数据值。
还应理解,可在上文所论述的步骤510到550之前、期间或之后执行额外方法步骤。举例来说,方法500可包含将元素数据值写入到至少一个输出向量中的步骤。还应理解,可按需要省略、组合或以不同顺序执行本文所述的方法500的步骤中的一或多者。
图6是说明根据一实施例的用于将元素数据值写入到向量寄存器中的方法600的流程图。方法600不意欲为限制性的,且可用于其它应用。
方法600包含步骤610到660。在步骤610中,读取包含多个元素数据值的输入向量。在一实例中,处理器110读取包含多个元素数据值的输入向量。举例来说,在图3中,处理器110可将来自向量寄存器堆的Vu识别为输入向量。在另一实例中,处理器从ROM检索输入向量。可基于水平置换控制向量及垂直置换控制向量而将存储于输入向量中的元素数据值中的一或多者写入到至少一个向量寄存器。
在步骤620中,识别包含一组地址的水平置换控制向量。在一实例中,处理器110识别包含一组地址的水平置换控制向量。水平置换控制向量可存储于动态寄存器或静态存储器中。举例来说,在图3中的写入指令中,处理器110可将来自向量寄存器堆的向量寄存器Vv识别为水平置换控制向量。在另一实例中,处理器从ROM检索水平置换控制向量。
在步骤630中,基于水平置换控制向量中的所述组地址而重排所述输入向量中的多个元素数据值中的元素数据值中的至少一些。在一实例中,处理器110基于水平置换控制向量中的所述组地址而重排所述输入向量中的所述多个元素数据值中的所述元素数据值中的至少一些。明确地说,存储于水平置换控制向量中的所述组地址可用以按水平方式重排输入向量中的多个元素数据值。
在步骤640中,将经重排的多个元素数据值放置在暂时性向量中。在一实例中,处理器110将经重排的多个元素数据值放置在暂时性向量中。举例来说,在图3中,Vtmp204可为储存存储经重排的多个元素数据值的暂时性向量。
在步骤650中,识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址。在一实例中,处理器110识别包含多个元素的垂直置换控制向量,所述多个元素中的每一元素包含寄存器地址。存储于垂直置换控制向量中的寄存器地址可用以按垂直方式将来自暂时性向量的元素数据值写入到至少一个向量寄存器。垂直置换控制向量可存储于动态寄存器或静态存储器中。举例来说,在图3中的写入指令中,处理器110可将来自向量寄存器堆的向量寄存器Vd识别为垂直置换控制向量。在另一实例中,处理器从ROM检索垂直置换控制向量。
在步骤660中,基于垂直置换控制向量中的寄存器地址而将暂时性向量中的元素数据值放置到至少一个向量寄存器中。在一实例中,处理器110基于垂直置换控制向量中的寄存器地址而将暂时性向量中的元素数据值放置到至少一个向量寄存器中。举例来说,在图3中,基于向量寄存器Vd中的寄存器地址而将暂时性向量中的元素数据值放置到向量寄存器V4、V5、V6及/或V7中。存储于输入向量Vu中的数据元素值可接着适当地写入到一或多个向量寄存器。
还应理解,可在上文所论述的步骤610到660之前、期间或之后执行额外方法步骤。举例来说,方法600可包含将一或多个元素数据值放置到向量寄存器中的步骤。还应理解,可按需要省略、组合或以不同顺序执行本文所述的方法600的步骤中的一或多者。
V.实例无线装置
图7是说明根据一实施例的包含数字信号处理器的无线装置700的框图。装置700包含处理器,例如数字信号处理器(DSP)701。指令201及/或指令301可存储于存储器750中,且VRF 120可包含于DSP 701中。在一实例中,DSP 701及VFR 129可根据图1到4中的一或多者及/或根据图5及6的方法中的一或多者或其任何组合而处理指令201及/或指令301。
图7还展示耦合到DSP 701及显示器732的显示器控制器730。译码器/解码器(编解码器)734也可耦合到DSP 701。扬声器736及麦克风738可耦合到编解码器734。另外,无线控制器740可耦合到DSP 701及无线天线748。在一实施例中,DSP 701、显示器控制器730、存储器750、编解码器734及无线控制器740包含于系统级封装或芯片上系统装置756中。
在一实施例中,输入装置730及电力供应器760耦合到芯片上系统装置756。此外,在一实施例中,如图7中所说明,显示器732、输入装置730、扬声器736、麦克风738、无线天线748及电力供应器760在芯片上系统装置756外部。显示器732、输入装置730、扬声器736、麦克风738、无线天线748及电力供应器760中的每一者可耦合到芯片上系统装置756的组件,例如接口或控制器。
所属领域的技术人员将进一步了解,可将结合本文所揭示的实施例而描述的各种说明性逻辑块、配置、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。为清晰说明硬件与软件的此可互换性,上文已大致就其功能性而描述了各种说明性组件、块、配置、模块、电路及步骤。所述功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述功能性,但所述实施决策不应被解释为导致偏离本发明的范围。
结合本文所揭示的实施例而描述的方法的步骤可直接体现在硬件、由处理器执行的软件模块或所述两者的组合中。软件模块可驻留在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移除式磁盘、压缩光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的非暂时性储存媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息和将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器及存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。或者,处理器及存储媒体可作为离散组件驻留在计算装置或用户终端中。
提供所揭示实施例的先前描述以使所属领域的任何技术人员能够制作或使用所揭示的实施例。对于所属领域的技术人员来说,对这些实施例的各种修改将为显而易见的,且可在不偏离本发明的范围的情况下将本文中所定义的原理应用于其它实施例。因此,本发明无意限于本文中所展示的实施例,而将符合与如由所附权利要求书界定的原理和新颖特征一致的可能的最广范围。因此,本发明仅受权利要求书限制。

Claims (26)

1.一种用于将一或多个元素数据值放置到输出向量中的方法,其包括:
识别包括多个元素的垂直置换控制向量,所述多个元素中的每一元素包括寄存器地址;
对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址;
基于所述寄存器地址而检索多个元素数据值;
识别包括对应于输出向量的一组地址的水平置换控制向量;以及
基于所述水平置换控制向量中的所述组地址而将所述多个元素数据值中的所述所检索元素数据值中的至少一些放置到所述输出向量中。
2.根据权利要求1所述的方法,其进一步包括:
接收与指令相关联的数据;以及
将所述所接收数据分裂为所述多个元素;以及
将所述多个元素放置到所述垂直置换控制向量中。
3.根据权利要求1所述的方法,其中所述检索多个元素数据值包括使用所述垂直置换控制向量中的读取存储器地址作为间接地址以检索相应元素数据值。
4.根据权利要求1所述的方法,其中所述将所述所检索元素数据值中的至少一些放置到所述输出向量中包括使用纵横线将所述所检索元素数据值中的至少一些放置到所述输出向量中。
5.根据权利要求1所述的方法,其中所述识别垂直置换控制向量包括识别向量寄存器堆中的向量寄存器。
6.根据权利要求1所述的方法,其中所述识别水平置换控制向量包括识别向量寄存器堆中的向量寄存器。
7.根据权利要求1所述的方法,其进一步包括:
接收参考数据结构的标量值,其中所述识别垂直置换控制向量包括使用所述标量值识别所述数据结构中的所述垂直置换控制向量。
8.根据权利要求1所述的方法,其进一步包括:
接收参考数据结构的标量值,其中所述识别水平置换控制向量包括使用所述标量值识别所述数据结构中的所述水平置换控制向量。
9.根据权利要求1所述的方法,其进一步包括:
将所述所检索的多个元素数据值放置在暂时性向量寄存器中,其中所述将所述所检索的元素数据值中的至少一些放置到所述输出向量中包括使用所述水平置换控制向量置换所述暂时性向量。
10.根据权利要求1所述的方法,其进一步包括:
读取包括第二多个元素的输入向量;
识别包括第二组地址的第二水平置换控制向量;
基于所述第二水平置换控制向量中的所述第二组地址而重排所述输入向量中的第二多个元素数据值中的元素数据值中的至少一些;
基于所述重排而将所述第二多个元素数据值放置在暂时性向量中;
识别包括第二多个元素的第二垂直置换控制向量,所述第二多个元素中的每一元素包括寄存器地址;以及
基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个输出向量中。
11.一种设备,其包括:
处理器,其可操作以:
识别包括多个元素的垂直置换控制向量,所述多个元素中的每一元素包括寄存器地址;
对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址;
基于所述寄存器地址而检索多个元素数据值;
识别包括对应于输出向量的一组地址的水平置换控制向量;以及
基于所述水平置换控制向量中的所述组地址而将所述所检索元素数据值中的至少一些放置到所述输出向量中。
12.根据权利要求11所述的设备,其中所述处理器进一步可操作以:
读取包括第二多个元素的输入向量;
识别包括第二组地址的第二水平置换控制向量;
基于所述第二水平置换控制向量中的所述第二组地址而重排所述输入向量中的第二多个元素数据值中的元素数据值中的至少一些;
基于所述重排而将所述第二多个元素数据值放置在暂时性向量中;
识别包括第二多个元素的第二垂直置换控制向量,所述第二多个元素中的每一元素包括寄存器地址;以及
基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个输出向量中。
13.根据权利要求11所述的设备,其中所述处理器进一步可操作以识别向量寄存器堆中的向量寄存器,且所述所识别向量寄存器为所述垂直置换控制向量。
14.根据权利要求11所述的设备,其中所述处理器进一步可操作以识别向量寄存器堆中的向量寄存器,且所述所识别向量寄存器为所述水平置换控制向量。
15.根据权利要求11所述的设备,其中所述处理器进一步可操作以接收参考数据结构的标量值,且所述垂直置换控制向量存储于所述数据结构中。
16.根据权利要求11所述的设备,其中所述处理器进一步可操作以接收参考数据结构的标量值,且所述水平置换控制向量存储于所述数据结构中。
17.一种上面存储有用于执行操作的计算机可执行指令的计算机可读媒体,所述操作包括:
识别包括多个元素的垂直置换控制向量,所述多个元素中的每一元素包括寄存器地址;
对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址;
基于所述读取而检索多个元素数据值;
识别包括对应于输出向量的一组地址的水平置换控制向量;以及
基于所述水平置换控制向量中的所述组地址而将所述多个元素数据值中的所述所检索元素数据值中的至少一些放置到所述输出向量中。
18.一种用于将一或多个元素数据值放置到输出向量中的设备,其包括:
用于识别包括多个元素的垂直置换控制向量的装置,所述多个元素中的每一元素包括寄存器地址;
用于对于所述多个元素中的每一元素,从所述垂直置换控制向量读取寄存器地址的装置;
用于基于所述读取而检索多个元素数据值的装置;
用于识别包括对应于输出向量的一组地址的水平置换控制向量的装置;以及
用于基于所述水平置换控制向量中的所述组地址而将所述多个元素数据值中的所述所检索元素数据值中的至少一些放置到所述输出向量中的装置。
19.一种用于将元素数据值写入到输出向量中的方法,其包括:
读取包括多个元素数据值的输入向量;
识别包括一组地址的水平置换控制向量;
基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述多个元素数据值中的所述元素数据值中的至少一些;
将所述经重排的多个元素数据值放置到暂时性向量中;
识别包括多个元素的垂直置换控制向量,所述多个元素中的每一元素包括寄存器地址;以及
基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中。
20.根据权利要求19所述的方法,其中所述识别水平置换控制向量包括识别向量寄存器堆中的向量寄存器。
21.根据权利要求19所述的方法,其中所述识别垂直置换控制向量包括识别向量寄存器堆中的向量寄存器。
22.根据权利要求19所述的方法,其进一步包括:
接收参考数据结构的标量值,其中所述识别水平置换控制向量包括使用所述标量值识别所述数据结构中的所述水平置换控制向量。
23.根据权利要求19所述的方法,其进一步包括:
接收参考数据结构的标量值,其中所述识别垂直置换控制向量包括使用所述标量值识别所述数据结构中的所述垂直置换控制向量。
24.一种设备,其包括:
处理器,其可操作以:
读取包括多个元素数据值的输入向量;
识别包括一组地址的水平置换控制向量;
基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述元素数据值中的至少一些;
将所述经重排的多个元素数据值放置到暂时性向量中;
识别包括多个元素的垂直置换控制向量,所述多个元素中的每一元素包括寄存器地址;以及
基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中。
25.一种上面存储有用于执行操作的计算机可执行指令的计算机可读媒体,所述操作包括:
读取包括多个元素数据值的输入向量;
识别包括一组地址的水平置换控制向量;
基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述多个元素数据值中的所述元素数据值中的至少一些;
将所述经重排的多个元素数据值放置到暂时性向量中;
识别包括多个元素的垂直置换控制向量,所述多个元素中的每一元素包括寄存器地址;以及
基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中。
26.一种用于将元素数据值写入到输出向量中的设备,其包括:
用于读取包括多个元素数据值的输入向量的装置;
用于识别包括一组地址的水平置换控制向量的装置;
用于基于所述水平置换控制向量中的所述组地址而重排所述输入向量中的所述多个元素数据值中的所述元素数据值中的至少一些的装置;
用于将所述经重排的多个元素数据值放置到暂时性向量中的装置;
用于识别包括多个元素的垂直置换控制向量的装置,所述多个元素中的每一元素包括寄存器地址;以及
用于基于所述垂直置换控制向量中的所述寄存器地址而将所述暂时性向量中的所述元素数据值放置到至少一个向量寄存器中的装置。
CN201480012924.1A 2013-03-15 2014-03-12 具有水平置换的向量间接元素垂直寻址模式 Active CN105009075B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/834,785 US9639503B2 (en) 2013-03-15 2013-03-15 Vector indirect element vertical addressing mode with horizontal permute
US13/834,785 2013-03-15
PCT/US2014/023849 WO2014150636A1 (en) 2013-03-15 2014-03-12 Vector indirect element vertical addressing mode with horizontal permute

Publications (2)

Publication Number Publication Date
CN105009075A true CN105009075A (zh) 2015-10-28
CN105009075B CN105009075B (zh) 2018-04-03

Family

ID=50942769

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480012924.1A Active CN105009075B (zh) 2013-03-15 2014-03-12 具有水平置换的向量间接元素垂直寻址模式

Country Status (8)

Country Link
US (1) US9639503B2 (zh)
EP (1) EP2972792B1 (zh)
JP (1) JP6577450B2 (zh)
KR (1) KR101778175B1 (zh)
CN (1) CN105009075B (zh)
ES (1) ES2688878T3 (zh)
HU (1) HUE040269T2 (zh)
WO (1) WO2014150636A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017107124A1 (en) * 2015-12-24 2017-06-29 Intel Corporation Scatter reduction instruction
CN106990940A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种向量计算装置
US11734383B2 (en) 2016-01-20 2023-08-22 Cambricon Technologies Corporation Limited Vector and matrix computing device

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US10445092B2 (en) * 2014-12-27 2019-10-15 Intel Corporation Method and apparatus for performing a vector permute with an index and an immediate
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
GB2540939B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd An apparatus and method for performing a splice operation
TWI724066B (zh) * 2015-12-24 2021-04-11 美商英特爾股份有限公司 分散縮減指令
WO2018158603A1 (en) * 2017-02-28 2018-09-07 Intel Corporation Strideshift instruction for transposing bits inside vector register
US11169809B2 (en) 2017-03-31 2021-11-09 Intel Corporation Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements
US11900111B2 (en) 2021-09-24 2024-02-13 Qualcomm Incorporated Permutation instruction

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US20040054879A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for parallel table lookup using SIMD instructions
CN101978350A (zh) * 2008-03-28 2011-02-16 英特尔公司 用于实现高效同步和并行归约操作的向量指令
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
US20120260062A1 (en) * 2011-04-07 2012-10-11 International Business Machines Corporation System and method for providing dynamic addressability of data elements in a register file with subword parallelism

Family Cites Families (16)

* Cited by examiner, † Cited by third party
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
US6233671B1 (en) * 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
US5996057A (en) * 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6446198B1 (en) * 1999-09-30 2002-09-03 Apple Computer, Inc. Vectorized table lookup
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
JP3845711B2 (ja) 2001-11-08 2006-11-15 独立行政法人 日本原子力研究開発機構 ベクトル計算機上での間接アドレス参照を含む加算の高速処理方法、プログラム及びそれを用いたベクトル計算機
WO2006033056A2 (en) 2004-09-21 2006-03-30 Koninklijke Philips Electronics N.V. Micro processor device and method for shuffle operations
US8161271B2 (en) 2007-07-11 2012-04-17 International Business Machines Corporation Store misaligned vector with permute
US8140932B2 (en) 2007-11-26 2012-03-20 Motorola Mobility, Inc. Data interleaving circuit and method for vectorized turbo decoder
GB2456775B (en) 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
JP5633122B2 (ja) 2009-06-16 2014-12-03 富士通セミコンダクター株式会社 プロセッサ及び情報処理システム
US20120047344A1 (en) 2010-08-17 2012-02-23 Sheaffer Gad S Methods and apparatuses for re-ordering data
US9766887B2 (en) * 2011-12-23 2017-09-19 Intel Corporation Multi-register gather instruction
CN104137059B (zh) * 2011-12-23 2018-10-09 英特尔公司 多寄存器分散指令
CN107562444B (zh) * 2012-12-26 2020-12-18 英特尔公司 合并相邻的聚集/分散操作

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054879A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for parallel table lookup using SIMD instructions
US20030167460A1 (en) * 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
CN101978350A (zh) * 2008-03-28 2011-02-16 英特尔公司 用于实现高效同步和并行归约操作的向量指令
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
US20120260062A1 (en) * 2011-04-07 2012-10-11 International Business Machines Corporation System and method for providing dynamic addressability of data elements in a register file with subword parallelism

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017107124A1 (en) * 2015-12-24 2017-06-29 Intel Corporation Scatter reduction instruction
US10191749B2 (en) 2015-12-24 2019-01-29 Intel Corporation Scatter reduction instruction
US10635447B2 (en) 2015-12-24 2020-04-28 Intel Corporation Scatter reduction instruction
CN106990940A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种向量计算装置
CN106990940B (zh) * 2016-01-20 2020-05-22 中科寒武纪科技股份有限公司 一种向量计算装置及运算方法
US11734383B2 (en) 2016-01-20 2023-08-22 Cambricon Technologies Corporation Limited Vector and matrix computing device

Also Published As

Publication number Publication date
JP6577450B2 (ja) 2019-09-18
JP2016511491A (ja) 2016-04-14
KR101778175B1 (ko) 2017-09-13
US20140281372A1 (en) 2014-09-18
ES2688878T3 (es) 2018-11-07
EP2972792A1 (en) 2016-01-20
CN105009075B (zh) 2018-04-03
US9639503B2 (en) 2017-05-02
KR20150132364A (ko) 2015-11-25
WO2014150636A1 (en) 2014-09-25
EP2972792B1 (en) 2018-07-25
HUE040269T2 (hu) 2019-02-28

Similar Documents

Publication Publication Date Title
CN105009075A (zh) 具有水平置换的向量间接元素垂直寻址模式
KR101834174B1 (ko) 데이터 처리장치 및 방법
CN103168289A (zh) 转置运算装置及其集成电路、以及转置处理方法
CN103222003B (zh) 用于根据配置信息执行原子存储器操作的存储器及方法
US20040088518A1 (en) Memory access system
US7162617B2 (en) Data processor with changeable architecture
TWI325571B (en) Systems and methods of indexed load and store operations in a dual-mode computer processor
US8880871B2 (en) Hash table organization
CN103988212A (zh) 用于在状态机中路由的方法及系统
CN103154883B (zh) 对来自多个指令集的指令进行译码
CN102023843B (zh) 函数的调用方法、装置及智能卡
US7624107B1 (en) Radix sort algorithm for graphics processing units
CN112035857B (zh) 数据保护方法、装置、设备及介质
JP2001005675A (ja) プログラム変換装置及びプロセッサ
CN111563281A (zh) 一种支持多种加解密算法的处理器及其实现方法
JP2003084751A5 (zh)
CN110050259B (zh) 矢量处理器及其控制方法
US20160232950A1 (en) Memory device and operating method of same
CN104636119A (zh) 用于处理混编指令的方法和设备
CN107851022B (zh) 向量长度查询指令
US20140281421A1 (en) Arbitrary size table lookup and permutes with crossbar
JP6924741B2 (ja) データ統計用回路モジュールおよびデータ統計用装置
CN112380810A (zh) 一种兑换码生成方法及系统
CN109471809B (zh) 一种芯片的flash加密保护方法、装置、flash控制器及芯片
CN103777922B (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
GR01 Patent grant
GR01 Patent grant