CN117940896A - 排列指令 - Google Patents

排列指令 Download PDF

Info

Publication number
CN117940896A
CN117940896A CN202280061738.1A CN202280061738A CN117940896A CN 117940896 A CN117940896 A CN 117940896A CN 202280061738 A CN202280061738 A CN 202280061738A CN 117940896 A CN117940896 A CN 117940896A
Authority
CN
China
Prior art keywords
register
permutation
instruction
vector
elements
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
Application number
CN202280061738.1A
Other languages
English (en)
Inventor
S·苏达萨南
D·马修
M·霍夫曼
G·斯维尼
S·R·巴拉苏布拉玛尼安
H·董
孙玉荣
S·萨德格扎德
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 CN117940896A publication Critical patent/CN117940896A/zh
Pending legal-status Critical Current

Links

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/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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • 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/3012Organisation of register space, e.g. banked or distributed register file

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)
  • Advance Control (AREA)

Abstract

一种设备包括向量寄存器堆、存储器和处理器。该向量寄存器堆包括多个向量寄存器。该存储器被配置为存储排列指令。该处理器被配置为访问该排列指令的周期性参数。该周期性参数指示包含该排列指令的源数据的多个数据源的计数。该处理器还被配置为执行该排列指令以针对该多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:至少部分地基于该多个数据源的该计数来选择该多个数据源中的数据源;以及基于所选择的数据源的对应元素中的值来填充该特定元素。

Description

排列指令
I.相关申请的交叉引用
本申请要求来自2021年9月24日提交的共同拥有的美国非临时专利申请17/448,816号的优先权的权益,该美国非临时专利申请的内容全文以引用方式明确地并入本文中。
II.技术领域
本公开整体涉及排列指令。
III.相关领域的描述
技术进步已导致更小且更强大的计算设备。例如,当前存在各种各样的便携式个人计算设备,包括小型、轻量级且易于用户携带的无线电话(诸如移动和智能电话、平板设备和膝上型计算机)。这些设备可以通过无线网络传送语音和数据分组。此外,许多此类设备并入了额外的功能,诸如,数字相机、数字摄像机、数字记录器和音频文件播放器。此外,此类设备可以处理可执行指令,包括软件应用,诸如网络浏览器应用,其可以用于访问互联网。照此,这些设备可以包括关键的计算能力。
此类计算设备通常并入用于对多个数据值(诸如在各种时间捕获的传感器数据)执行相同操作(例如,过滤)的功能。从存储器顺序地检索每个数据值以执行操作是耗时的并且可使得一些实时应用不切实际。
IV.发明内容
根据本公开的一个具体实施,一种设备包括向量寄存器堆、存储器和处理器。该向量寄存器堆包括多个向量寄存器。该存储器被配置为存储排列指令。该处理器被配置为访问该排列指令的周期性参数。该周期性参数指示包含该排列指令的源数据的多个数据源的计数。该处理器还被配置为执行该排列指令以针对该多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:至少部分地基于该多个数据源的该计数来选择该多个数据源中的数据源;以及基于所选择的数据源的对应元素中的值来填充该特定元素。
根据本公开的另一个具体实施,一种方法包括在设备处访问排列指令。该方法还包括在该设备处访问该排列指令的周期性参数。该周期性参数指示包含该排列指令的源数据的多个向量寄存器中的向量寄存器的计数。该方法还包括执行该排列指令以针对该多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:至少部分地基于该向量寄存器的计数来选择该多个向量寄存器中的向量寄存器;以及基于所选择的向量寄存器的对应元素中的值来填充该特定元素。
根据本公开的另一个具体实施,一种非暂态计算机可读介质存储指令,该指令在由处理器执行时致使该处理器访问排列指令的周期性参数。该周期性参数指示包含该排列指令的源数据的多个向量寄存器中的向量寄存器的计数。该指令在由该处理器执行时还致使该处理器执行该排列指令以针对该多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:至少部分地基于该向量寄存器的计数来选择该多个向量寄存器中的向量寄存器;以及基于所选择的向量寄存器的对应元素中的值来填充该特定元素。
根据本公开的另一个具体实施,一种装置包括用于访问排列指令的周期性参数的构件。该周期性参数指示包含该排列指令的源数据的多个向量寄存器中的向量寄存器的计数。装置还包括用于执行排列指令以针对多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素进行以下操作的构件:至少部分基于向量寄存器的计数来选择多个向量寄存器中的向量寄存器并且基于所选择的向量寄存器的对应元素中的值来填充特定元素。
本公开内容的其它方面、优点和特征将在审阅包括以下部分的整个申请后变得显而易见:附图说明、具体实施方式和权利要求书。
V.附图说明
图1是根据本公开的一些示例的可操作以执行排列指令的设备的特定例示性方面的框图。
图2是根据本公开的一些示例的由图1的设备执行排列指令的示例的例示性方面的示图。
图3是根据本公开的一些示例的可操作以执行另一个排列指令的图1的设备的例示性方面的框图。
图4是根据本公开的一些示例的由图1和图3的设备执行排列指令的另一个示例的例示性方面的示图。
图5是根据本公开的一些示例的在由图1和图3的设备执行排列指令期间使用的寄存器选择数据的示例的例示性方面的示图。
图6是根据本公开的一些示例的由图1的设备执行排列指令的示例的例示性方面的示图。
图7是根据本公开的一些示例的在由图1的设备执行排列指令之前的旋转指令的执行的示例的例示性方面的示图。
图8是根据本公开的一些示例的由图1的设备执行排列指令以执行矩阵转置的示例的例示性方面的示图。
图9是根据本公开的一些示例的由图1的设备执行排列指令以执行矩阵转置的另一个示例的例示性方面的示图。
图10是根据本公开的一些示例的可由图1的设备执行的执行排列指令的方法的特定具体实施的示图。
图11是根据本公开的一些示例的可操作以执行排列指令的设备的特定例示性示例的框图。
VI.具体实施方式
从存储器顺序地检索多个数据值中的每一者(诸如在各种时间捕获的传感器数据)并且对每个所检索的数据值执行相同操作(例如,过滤)可为耗时的并且可导致处理器处的不令人满意的操作的执行速度。公开了使用向量寄存器来执行排列指令的系统和方法。在一些系统中,经由使用可用于同时从存储器加载多个数据值的向量寄存器(例如,源向量寄存器)来获得改进的速度,并且可对源向量寄存器的元素并行地执行操作(例如,过滤操作)。例如,传感器数据的每第三个数据值将被选择(例如,过滤)以用于后续处理。在特定示例中,将传感器数据的第0个至第31个数据值加载到第一源向量寄存器中,将传感器数据的第32个至第63个数据值加载到第二源向量寄存器中,并且将传感器数据的第64个至第95个数据值加载到第三源向量寄存器中。
在一些情况下,与对源数据执行操作相关联的复杂性可通过在对数据值执行计算之前、在对数据值执行计算之后或两者过滤和重新排序源数据的数据值来显著减小。可使用排列指令来执行源数据的此类过滤和重新排序。例如,可在下采样操作、矩阵转置或快速傅里叶核操作期间或在其准备中执行排列指令。可结合寄存器顺序向量寄存器和元素顺序向量寄存器使用排列指令,以基于由寄存器顺序向量寄存器指示的寄存器选择顺序将所选择的元素从源向量寄存器复制到第一结果向量寄存器(例如,将数据值从源向量寄存器的所选择的元素复制到第一结果向量寄存器),并且基于由元素顺序向量寄存器指示的元素选择顺序将元素从第一结果向量寄存器复制到第二结果向量寄存器(例如,将数据值从第一结果向量寄存器的元素复制到第二结果向量寄存器)。
在一些方面中,寄存器顺序向量寄存器的每个元素存储指示特定源向量寄存器的值。在一个示例中,寄存器顺序向量寄存器存储值0、1、2、0、1、2、0、1、2……,使得寄存器顺序向量寄存器的第0个、第3个、第6个等元素中的每一者存储指示第一源向量寄存器的值(例如,0),寄存器顺序向量寄存器的第1个、第4个、第7个等元素中的每一者存储指示第二源向量寄存器的值(例如,1),并且寄存器顺序向量寄存器的第2个、第5个、第8个等元素中的每一者存储指示第三源向量寄存器的值(例如,2)。存储在所指示的源寄存器的对应元素中的数据值被复制到第一结果向量寄存器的对应元素。例如,存储在寄存器顺序向量寄存器的第0个、第1个和第2个元素中的值(例如,012、0、1、2、0、1、2……)分别指示第一源向量寄存器、第二源向量寄存器和第三源向量寄存器。(应当注意,强调(粗体和下划线)应用于一些元素的值;这种强调仅为了引起读者对此类元素的注意而提供,并且不表示此类元素的任何特定属性或要对此类元素执行的任何操作)。
基于寄存器顺序向量寄存器,将存储在第一源向量寄存器的第0个元素中的值(例如,传感器数据的第0个数据值)、第二源向量寄存器的第1个元素(例如,传感器数据的第33个数据值)和第三源向量寄存器的第2个元素(例如,传感器数据的第66个数据值)分别复制到第一结果向量寄存器的第0个元素、第1个元素和第2个元素。
类似地,存储在寄存器顺序向量寄存器的第3个、第4个和第5个元素中的值(例如,0、1、2、012、0、1、2……)分别指示第一源向量寄存器、第二源向量寄存器和第三源向量寄存器。将存储在第一源向量寄存器的第3个元素中的值(例如,传感器数据的第3个数据值)、第二源向量寄存器的第4个元素(例如,传感器数据的第36个数据值)和第三源向量寄存器的第5个元素(例如,传感器数据的第69个数据值)分别复制到第一结果向量寄存器的第3个元素、第4个元素和第5个元素。以这种方式,存储在源向量寄存器中的所有感兴趣的数据值在第一结果向量寄存器中交织。例如,第一结果向量寄存器包括传感器数据的第0个、第33个、第66个、第3个、第36个、第69个等数据值。
元素顺序向量寄存器的每个元素指示第一结果向量寄存器的特定索引。将数据值从第一结果向量寄存器的所指示的元素复制到第二结果向量寄存器的对应元素。作为示例,基于元素顺序向量寄存器存储值036、9、12、15、18、21、24、27、1、4、7、10、13、16……,将存储在第一结果向量寄存器的第0个元素中的值(例如,传感器数据的第0个数据值)复制到第二结果向量寄存器的第0个元素,将存储在第一结果向量寄存器的第3个元素中的值(例如,传感器数据的第3个数据值)复制到第二结果向量寄存器的第1个元素,将存储在第一结果向量寄存器的第6个元素中的值(例如,传感器数据的第6个数据值)复制到第二结果向量寄存器的第2个元素等。例如,将来自第一源向量寄存器的第一结果向量寄存器的所有数据值按顺序复制到第二结果向量寄存器。类似地,以从第一结果向量寄存器到第二结果向量寄存器的顺序复制来自第二源向量寄存器的所有数据值,接着复制来自第三源向量寄存器的所有数据值。第二结果向量寄存器以从传感器数据的较早数据值到传感器数据的较晚数据值的顺序包括感兴趣的数据值。
存储在源向量寄存器的元素中的数据值可被并行地复制到第一结果向量寄存器,并且随后被并行地从第一结果向量寄存器复制到第二结果向量寄存器。寄存器顺序向量寄存器和元素顺序向量寄存器中的每一者包括与源向量寄存器一样多的元素。
公开了包括周期性参数(例如,标量参数)的排列指令,在一些情况下,该周期性参数可用于指示寄存器选择顺序和元素选择顺序。使用标量周期性参数来指示寄存器选择顺序和元素选择顺序的技术效果与其中使用寄存器顺序向量寄存器和元素顺序向量寄存器的上述具体实施相比减小存储器使用。
在一些示例中,排列指令还包括寄存器起始参数。寄存器起始参数指示将用于填充第一结果向量寄存器的初始元素的起始源向量寄存器(例如,第一源向量寄存器)。周期性参数指示包含源数据(例如,传感器数据)的源向量寄存器的计数(例如,3个源向量寄存器)。
在一些示例中,指令管理器基于起始源向量寄存器(例如,向量寄存器0)和源向量寄存器的计数(例如,3)来确定寄存器选择顺序。例如,寄存器选择顺序从起始源向量寄存器(例如,向量寄存器0)开始并且包括后续源向量寄存器直到已达到源向量寄存器的计数(例如,向量寄存器1和向量寄存器2),并且然后重复,诸如寄存器选择顺序:0、1、2、0、1、2、0、1、2等。因此,可使用周期性参数(而不是寄存器顺序向量寄存器)来指示顺序和重复的寄存器选择顺序。在其他示例中,指令管理器基于将源向量寄存器的计数映射到寄存器选择顺序的寄存器选择数据来确定寄存器选择顺序。
在一些示例中,排列指令包括截取参数、步进参数或两者。截取参数指示将用于填充第二结果向量寄存器的初始元素(例如,第0个元素)的第一结果向量寄存器的起始元素(例如,第0个元素)。步进参数指示将被包括在到第一结果向量寄存器的下一元素的步进(也称为“步长”)中以用于填充第二结果向量寄存器的后续元素的元素的计数(例如,3个元素)。步进在到达第一结果向量寄存器的结束时绕回,直到已经填充了第二结果向量寄存器的元素。
指令管理器基于起始元素(例如,元素0)和将被包括在每个步进中的元素的计数(例如,3个元素)来确定元素选择顺序。例如,元素选择顺序从起始元素(例如,元素0)开始并且在每个步进中包括后续元素(例如,0、3、6、9、12、15、18、21、24、27、30、1、4、7、10、13、16……)。因此,可使用截取参数、步进参数或两者(而不是元素顺序向量寄存器)来指示均匀步进的元素选择顺序。
在一些方面中,寄存器起始参数、周期性参数、截取参数和步进参数中的每一者对应于可存储在标量寄存器中的标量值。与使用可存储大得多计数(例如,32个)的标量值的向量寄存器(例如,寄存器顺序向量寄存器)相比,存储多至两个标量值(例如,起始参数、周期性参数或两者)以指示寄存器选择顺序使用了更少的存储器。类似地,与使用可存储大得多计数(例如,32个)的标量值的向量寄存器(例如,元素顺序向量寄存器)相比,存储多至两个标量值(例如,截取参数、步进参数或两者)以指示元素选择顺序使用了更少的存储器。
下面参考附图描述本公开内容的特定方面。在本说明书中,共用的特征由共用的参考标号来指定。如本文所使用的,各种术语仅用于描述特定具体实施的目的,而并不旨在对具体实施进行限制。例如,单数形式“一(a)”、“一(an)”和“该(the)”旨在也包括复数形式,除非上下文另外明确指示。此外,本文所描述的一些特征在一些具体实施中是单数,而在其他具体实施中是复数。为了例示,图11描绘了包括一个或多个麦克风(图11的“麦克风”1190)的设备1100,其指示在一些具体实施中设备1100包括单个麦克风1190,而在其他具体实施中设备1100包括多个麦克风1190。
如本文所使用的,术语“包括(comprise)”可以与“包含(include)”可互换地使用。此外,术语“其中(wherein)”可以与“其中(where)”可互换地使用。如本文所使用的,“示例性的”指示示例、具体实施和/或方面,而不应被解释为限制的或指示偏好或优选的具体实施。如本文所使用的,用于修饰元素(诸如,结构、组件、操作等)的序数术语(例如,
“第一”、“第二”、“第三”等)本身并不指示该元素相对于另一元素的任何优先级或顺序,而只是将该元素与具有相同名称(但使用序数术语)的另一元素相区分。如本文所使用的,术语“集合”是指一个或多个特定元素,而术语“多个”是指多个(例如,两个或更多个)特定元素。
如本文所使用的,“耦合”可以包括“通信地耦合”、“电耦合”或“物理地耦合”,以及还可以(或另选地)包括它们的任何组合。两个设备(或组件)可经由一个或多个其他设备、组件、导线、总线、网络(例如,有线网络、无线网络或它们的组合)等直接或间接耦合(例如,通信地耦合、电耦合或物理地耦合)。作为例示性、非限制性示例,电耦合的两个设备(或组件)可包括在相同的设备中,也可包括在不同的设备中,并且可经由电子器件、一个或多个连接器或电感耦合来连接。在一些具体实施中,通信地耦合(诸如电连通)的两个设备(或组件)可经由一个或多个导线、总线、网络等直接或间接地发送和接收信号(例如,数字信号或模拟信号)。如本文所使用的,“直接耦合”可包括在没有中间组件的情况下耦合(例如,通信地耦合、电耦合或物理地耦合)的两个设备。
在本公开内容中,诸如“确定”、“计算”、“估计”、“移位”、“调整”等术语可以用于描述如何执行一个或多个操作。应当注意,此类术语不应被解释为限制的,并且可以利用其他技术来执行类似的操作。此外,如本文所提及的,“生成”、“计算”、“估计”、“使用”、“选择”、“访问”和“确定”可以可互换地使用。例如,“生成”、“计算”、“估计”或“确定”参数(或信号)可以是指主动生成、估计、计算或确定该参数(或信号),或者可以是指使用、选择或访问(诸如,由另一组件或设备)已经生成的参数(或信号)。
参照图1,示出了设备102的特定例示性方面的示图100。设备102包括耦合到存储器132的处理器190。在特定方面中,存储器132被配置为存储排列指令134。在一些具体实施中,可将排列指令134添加到指令集架构(ISA)。在一些具体实施中,处理器190对应于实现ISA的向量处理器。例如,处理器190被配置为高效地对向量进行操作。在特定方面中,处理器190被配置为有效地将向量(例如,大型一维数据阵列)从存储器132复制到向量寄存器,反之亦然,并且以单指令多数据(SIMD)配置执行对来自向量寄存器的多个数据值的并行处理(诸如使用多个并行计算通路)。
设备102还包括耦合到处理器190的向量寄存器堆138。在一些具体实施中,向量寄存器堆138集成在处理器190中。向量寄存器堆138包括多个向量寄存器142。在一些示例中,多个向量寄存器142中的每个向量寄存器包括相同计数的元素(例如,每个向量寄存器的大小被设定成包括32个元素以保持32个数据值)。虽然多个向量寄存器142中的每一者在本文的示例中被描述为包括32个元素,但在其他示例中,多个向量寄存器142中的一者或多者可包括少于32个元素或多于32个元素。
多个向量寄存器142包括多个源向量寄存器146,该多个源向量寄存器被配置为存储待由排列指令134处理的源数据(例如,从存储器132检索或从另一个设备接收)。在特定方面中,多个源向量寄存器146包括源向量寄存器146A和一个或多个附加源向量寄存器146(包括源向量寄存器146N)。
多个向量寄存器142包括多个排列结果寄存器148,该多个排列结果寄存器被配置为存储排列指令134的执行的中间结果或最终结果。例如,多个排列结果寄存器148中的排列结果寄存器148A被配置为存储排列指令134的中间结果,并且多个排列结果寄存器148中的排列结果寄存器148B被配置为存储排列指令134的最终结果。提供包括两个向量寄存器的多个排列结果寄存器148作为例示性示例;在其他示例中,多个排列结果寄存器148可包括多于两个向量寄存器。
排列指令134包括操作码135以及寄存器起始参数152、周期性参数154、截取参数156或步进参数158中的一者或多者。操作码135(例如,操作码)对应于排列指令134的标识符。寄存器起始参数152被配置为指示多个源向量寄存器146中的一者(例如,源向量寄存器146A)被指定为起始寄存器162。起始寄存器162(例如,源向量寄存器146A)将用于填充排列结果寄存器148A的初始元素。例如,寄存器起始参数152指示被指定为起始寄存器162的源向量寄存器146(例如,源向量寄存器146A)的索引。周期性参数154被配置为指示多个向量寄存器142中包含待由排列指令134处理的源数据(例如,传感器数据)的源向量寄存器146的计数(例如,向量寄存器计数164)。
截取参数156被配置为指示排列结果寄存器148A的一个元素被指定为起始元素166。起始元素166将用于填充排列结果寄存器148B的初始元素(例如,第0个元素)。例如,截取参数156指示被指定为起始元素166的排列结果寄存器148A的元素的索引。步进参数158被配置为指示对应于将被包括在到排列结果寄存器148A的下一元素的步进中以用于填充排列结果寄存器148B的后续元素的排列结果寄存器148A的元素的计数的步进元素计数168。
存储器132被配置为存储将多个向量寄存器计数172映射到多个寄存器选择顺序174的寄存器选择数据176,如参考图5进一步描述。例如,向量寄存器计数172A映射到寄存器选择顺序174A,一个或多个附加向量寄存器计数172映射到一个或多个附加寄存器选择顺序,向量寄存器计数172N映射到寄存器选择顺序174N,或它们的组合。在特定具体实施中,向量寄存器堆138的任何向量寄存器可用作源向量寄存器,并且寄存器选择数据176可包括针对任何数量的向量寄存器计数到寄存器选择顺序的映射。寄存器选择数据176中包括的映射的数量(例如,计数)可匹配或可不匹配向量寄存器堆138中的源向量寄存器的数量(例如,计数)。例如,源向量寄存器146N的“N”可指与向量寄存器计数172N的“N”相同的数字或不同的数字。在例示性示例中,向量寄存器计数164指示向量寄存器堆138的三个向量寄存器将用作源向量寄存器,并且寄存器选择数据176包括针对无限数量的向量寄存器计数的映射。为了例示,寄存器选择数据176包括针对特定向量寄存器计数(诸如针对1、2、3、4、5、8等)的映射以及针对“任何其他”向量寄存器计数的映射。提供三个源向量寄存器和针对无限数量的向量寄存器计数的映射作为例示性示例,在其他示例中,向量寄存器堆138的任何数量的向量寄存器可用作源向量寄存器,并且寄存器选择数据176可包括针对任何数量的向量寄存器计数的映射。
处理器190包括被配置为执行排列指令134的指令管理器140。在特定方面中,指令管理器140被配置为执行以下中的一者或多者:提取排列指令134;对排列指令134进行解码以确定起始寄存器162、向量寄存器计数164、起始元素166、步进元素计数168或它们的组合;从存储器132或另一个设备向多个源向量寄存器146加载排列指令134的源数据;基于起始寄存器162、向量寄存器计数164、起始元素166、步进元素计数168或它们的组合执行排列指令134;或将结果从排列结果寄存器148B输出到存储器132或另一个设备。
指令管理器140被配置为将值从源向量寄存器146的对应于特定元素索引的单个元素复制到排列结果寄存器148A。换句话说,来自多个源向量寄存器的对应于相同元素索引的元素的值不被复制到排列结果寄存器148A。为了例示,在一些具体实施中,源向量寄存器146被对准以使得源数据的第一“列”由存储在源向量寄存器146的第0个元素中的值形成,源数据的第二列由存储在源向量寄存器146的第1个元素中的值形成等。源数据的每个列可包括用于执行排列指令134的感兴趣的单个数据值。
在一些情况下,多个源向量寄存器在对应于相同索引(例如,“0”)的元素中包括“感兴趣的值”(例如,将被包括在结果中的值)。例如,多个感兴趣的值被包括在源数据的相同“列”中。为了例示,感兴趣的第一数据值被包括在源向量寄存器146A的对应于特定索引(例如,“0”)的元素(例如,第0个元素)中,并且感兴趣的第N数据值被包括在源向量寄存器146N的对应于特定索引(例如,“0”)的元素(例如,第0个元素)中。
在一些具体实施中,指令管理器140被配置为在执行排列指令134之前预处理存储在多个源向量寄存器146中的源数据的值。预处理可包括改变存储在多个源向量寄存器146中的源数据的值的位置,使得感兴趣的每个数据值被存储在对应于不同索引的元素中。例如,指令管理器140被配置为在执行排列指令134之前执行旋转指令136以旋转存储在多个源向量寄存器146中的一者或多者中的值的位置,如参考图7进一步描述。为了例示,在执行旋转指令136之后,将感兴趣的第N个数据值存储在源向量寄存器146N的对应于索引(例如,“N”)的元素(例如,第N个元素)中,该索引不同于多个源向量寄存器146的存储感兴趣的剩余值的元素的索引。
在排列指令134的执行期间,指令管理器140可从源向量寄存器146的对应于不同索引的元素复制感兴趣的值中的每一者。在一些具体实施中,旋转指令136和排列指令134被存储在指令队列中。响应于确定相对于排列指令134在指令队列中的位置的旋转指令136位置指示将在执行排列指令134之前执行旋转指令136,指令管理器140在执行排列指令134之前执行旋转指令136。
执行排列指令134包括基于起始寄存器162(例如,由寄存器起始参数152指示)、向量寄存器计数164(例如,由周期性参数154指示)、寄存器选择数据176或它们的组合来确定寄存器选择顺序184,以及基于寄存器选择顺序184将数据值从多个源向量寄存器146的元素复制到排列结果寄存器148A的元素。执行排列指令134还包括基于起始元素166(例如,由截取参数156指示)、步进元素计数168(例如,由步进参数158指示)或两者来确定元素选择顺序186,以及基于元素选择顺序186将数据值从排列结果寄存器148A的元素复制到排列结果寄存器148B的元素。
在一些具体实施中,设备102对应于或被包括在各种类型的设备中的一者中。在例示性示例中,设备102的一个或多个组件(例如,处理器190、存储器132、向量寄存器堆138或它们的组合)被集成在头戴式耳机设备、移动电话、平板计算机设备、可穿戴电子设备、语音控制扬声器系统、相机设备、虚拟现实头戴式耳机、混合现实头戴式耳机、增强现实头戴式耳机或交通工具中的至少一者中。
在操作期间,指令管理器140确定起始寄存器162。在一些示例中,排列指令134包括寄存器起始参数152,并且指令管理器140访问寄存器起始参数152以确定起始寄存器162。为了例示,指令管理器140响应于确定寄存器起始参数152指示源向量寄存器146A的第一源寄存器索引(例如,0)而确定寄存器起始参数152指示源向量寄存器146A被指定为起始寄存器162。在其他示例中,排列指令134中不存在寄存器起始参数152,并且指令管理器140响应于确定排列指令134中不存在寄存器起始参数152而确定对应于默认源寄存器索引(例如,0)的默认向量寄存器(例如,源向量寄存器146A)将用作起始寄存器162。起始寄存器162将用于填充排列结果寄存器148A的初始元素(例如,第0个元素)。
指令管理器140确定向量寄存器计数164。例如,指令管理器140访问排列指令134的周期性参数154以确定存储排列指令134的源数据的多个源向量寄存器146的向量寄存器计数164。
指令管理器140确定起始元素166。在特定方面中,多个向量寄存器142中的每一者包括多个元素(例如,32个元素)。向量寄存器142的每个元素具有元素索引(例如,0与31之间的值)(例如,能够基于元素索引来标识)。在一些示例中,排列指令134包括截取参数156,并且指令管理器140访问截取参数156以确定起始元素166。为了例示,响应于确定截取参数156包括特定元素索引(例如,0),指令管理器140确定截取参数156指示排列结果寄存器148A的具有特定元素索引的特定元素被指定为起始元素166。在其他示例中,在排列指令134中不存在截取参数156,并且指令管理器140响应于确定在排列指令134中不存在截取参数156而确定排列结果寄存器148A的对应于默认元素索引(例如,0)的默认元素(例如,第0个元素)将用作起始元素166。起始元素166将用于填充排列结果寄存器148B的初始元素(例如,第0个元素)。
指令管理器140确定步进元素计数168。在一些示例中,排列指令134包括步进参数158,并且指令管理器140访问步进参数158以确定步进元素计数168。步进元素计数168指示将被包括在到排列结果寄存器148A的下一元素的步进中以用于填充排列结果寄存器148B的后续元素的元素的计数。例如,如果起始寄存器162对应于排列结果寄存器148A的第0个元素以填充排列结果寄存器148B的第0个元素,则排列结果寄存器148A的下一元素对应于排列结果寄存器148A的第0个+步进元素计数168个元素以填充排列结果寄存器148B的第1个元素。在一些具体实施中,周期性参数154和步进参数158被过载。例如,由排列指令134指示的单个值对应于周期性参数154和步进参数158两者。为了例示,步进参数158具有与周期性参数154相同的值。在一些具体实施中,响应于确定排列指令134中不存在步进参数158,排列指令134基于周期性参数154来确定步进元素计数168。在特定示例中,步进元素计数168基于向量寄存器计数164(例如,与其相同)。
在一些方面中,具有与向量寄存器计数164相同的值的步进元素计数168对应于将存储在排列结果寄存器148A中的特定源向量寄存器146的所有值复制到排列结果寄存器148B的一组连续元素,如参考图2、图4和图6进一步描述。为了例示,存储在排列结果寄存器148B中的值对应于存储在排列结果寄存器148A中的值的排列。在一些方面中,具有与向量寄存器计数164不同的值的步进元素计数168对应于从存储在排列结果寄存器148B的非连续元素中的特定源向量146复制的至少一些元素,如参考图8到图9进一步描述。在一些示例中,具有特定值(例如,1)的步进元素计数168对应于在不进行排列的情况下将元素从排列结果寄存器148A复制到排列结果寄存器148B,如参考图8进一步描述。
指令管理器140基于寄存器选择数据176来确定对应于向量寄存器计数164的寄存器选择顺序184,如参考图5进一步描述。寄存器选择顺序184指示排列结果寄存器148A的元素的寄存器索引。例如,排列结果寄存器148A的元素“i”的寄存器索引由寄存器选择顺序184依据起始寄存器162(例如,如寄存器起始参数152所指示)、向量寄存器计数164(例如,如周期性参数154所指示)或两者给出,如参考图2进一步描述。寄存器选择顺序184指示对应于排列结果寄存器148A的每个元素的特定源向量寄存器146。
指令管理器140基于起始元素166和步进元素计数168来确定元素选择顺序186。元素选择顺序186指示排列结果寄存器148A的起始元素166和排列结果寄存器148A的对应于被添加到排列结果寄存器148A的先前指示的元素的步进元素计数168的下面元素。元素选择顺序186在到达排列结果寄存器148A的元素的结束之后绕回,直到排列结果寄存器148A的每个元素由元素选择顺序186指示,如参考图2进一步描述。例如,元素选择顺序186指示排列结果寄存器148B的元素的元素索引,其中“i”对应于排列结果寄存器148B的元素的索引,并且排列结果寄存器148B的元素i的元素索引依据起始元素166(例如,如由截取参数156所指示)、步进元素计数168(例如,如由步进参数158所指示)或两者给出,如参考图2所描述。元素选择顺序186指示对应于排列结果寄存器148B的每个元素的特定元素索引。
指令管理器140执行排列指令134以基于寄存器选择顺序184来填充排列结果寄存器148A,如参考图2进一步描述。例如,针对排列结果寄存器148A的每个特定元素,指令管理器140基于寄存器选择顺序184来选择多个源向量寄存器146中的源向量寄存器,并且基于源向量寄存器的对应元素来填充特定元素,如参考图2进一步描述。
在排列指令134的执行期间,指令管理器140基于元素选择顺序186来填充排列结果寄存器148B的元素,如参考图2进一步描述。例如,指令管理器140针对排列结果寄存器148B的特定元素(例如,i)并且基于元素选择顺序186来选择排列结果寄存器148A的元素,并且基于排列结果寄存器148A的所选择的元素来填充排列结果寄存器148B的特定元素,如参考图2进一步描述。
排列指令134使得能够在不使用向量寄存器的情况下对源数据执行操作以指定寄存器选择顺序184和元素选择顺序186。在特定方面中,指令管理器140将来自存储器132(或另一个设备)的源数据并行地加载到多个源向量寄存器146中的一者或多者。在一些具体实施中,在排列指令134的执行期间,指令管理器140基于多个源向量寄存器146的元素并行地填充排列结果寄存器148A的元素,并且基于排列结果寄存器148A的元素的值的排列并行地填充排列结果寄存器148B的元素。
作为例示性示例,提供从源向量寄存器146复制数据以填充排列结果寄存器148的排列指令134。在一些具体实施中,排列指令134可用于执行类似操作(如关于从源向量寄存器146复制数据所描述)以从多个数据源复制数据以便填充排列结果寄存器148。例如,起始参数(类似于寄存器起始参数152)指示起始数据源,周期性参数154指示数据源计数,或两者。指令管理器140可访问将数据源计数映射到选择顺序的选择数据(例如,类似于寄存器选择数据176)。选择顺序指示用于填充排列结果寄存器148A的数据源的选择顺序。数据源可包括源向量寄存器146、设备102的另一个组件、另一个设备、另一个系统或它们的组合。
参照图2,示出了排列指令134的执行的示例200。例如,图1的指令管理器140针对存储在源向量寄存器146A-146C中的源数据执行排列指令134。执行排列指令134包括基于起始寄存器162(例如,由寄存器起始参数152指示)和向量寄存器计数164(例如,由周期性参数154指示)来填充排列结果寄存器148A,接着基于起始元素166(例如,由截取参数156指示)和步进元素计数168(例如,由步进参数158指示)来填充排列结果寄存器148B,如下文更详细描述。
在示例200中,源向量寄存器146A、源向量寄存器146B和源向量寄存器146C分别存储数据值i0-i31、j0-j31和k0-k31。源向量寄存器146A、源向量寄存器146B和源向量寄存器146C分别对应于第一源寄存器索引(例如,0)、第二源寄存器索引(例如,1)和第三源寄存器索引(例如,2)(例如,能够基于其来唯一标识)。周期性参数154指示向量寄存器计数164为3。例如,周期性参数154指示三个源向量寄存器存储排列指令134的源数据。尽管提供存储源数据的三个源向量寄存器作为例示性非限制性示例,但在其他示例中,少于三个或多于三个源向量寄存器可存储排列指令134的源数据。
指令管理器140基于寄存器选择数据176来确定对应于向量寄存器计数164的寄存器选择顺序184,如参考图5进一步描述。寄存器选择顺序184指示排列结果寄存器148A的元素的寄存器索引,其中“i”对应于排列结果寄存器148A的元素的索引,并且排列结果寄存器148A的元素i的寄存器索引由以下给出:((寄存器起始参数152+i)%3),其对应于向量寄存器计数164为3,其中“%”对应于模运算符。
在示例200中,寄存器起始参数152具有值0,其指示对应于寄存器索引0的起始寄存器162。寄存器选择顺序184指示对应于排列结果寄存器148A的每个元素的特定源向量寄存器146。在一些示例中,寄存器选择顺序184(例如,0、1、2、0、1、2、0、1、2……)从起始寄存器162开始,指示多个源向量寄存器146中的每个连续源向量寄存器直到满足向量寄存器计数164(例如,3个源向量寄存器),并且重复。在其他示例中,寄存器选择顺序184(例如,0、2、4、1、3、0、2、4、1、3……)从起始寄存器162开始,并且包括对应于向量寄存器计数164(例如,5个源向量寄存器)的多个源向量寄存器146的重复无序序列,如参考图6进一步描述。
在一些示例中,指令管理器140计算对应于排列结果寄存器148A的每个元素的寄存器选择顺序184的值(例如,0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0、1、2、0、1),并且将寄存器选择顺序184的值存储在寄存器顺序向量寄存器中。在这些示例中,可基于存储在寄存器顺序向量寄存器中的寄存器选择顺序184的值来并行填充排列结果寄存器148A的元素。在其他示例中,指令管理器140将寄存器选择顺序184(例如,i%3)存储为可用于针对排列结果寄存器148A的每个元素一次一个地确定对应源向量寄存器并且一次将寄存器选择顺序184的一个值存储为标量值的公式或函数。在这些示例中,可基于寄存器选择顺序184的所存储标量值而一次一个元素地顺序地填充排列结果寄存器148A的元素。
在示例200中,截取参数156具有指示起始元素166为0的值0,并且步进参数158具有指示步进元素计数168为3的值3。指令管理器140基于起始元素166(由截取参数156指示)和步进元素计数168(由步进参数158指示)来确定元素选择顺序186。例如,元素选择顺序186指示排列结果寄存器148B的元素的元素索引,其中“i”对应于排列结果寄存器148B的元素的索引,并且排列结果寄存器148B的元素i的元素索引由以下给出:
((截取参数156+步进参数158*i)%32)或(3i%32)。
元素选择顺序186指示对应于排列结果寄存器148B的每个元素的特定元素索引。在一些示例中,元素选择顺序186(例如,0、3、6、9、12、15、18、21、24、27、30、1、4、7、10、13、16、19、22、25、28、31、2、5、8、11、14、17、20、23、26、29)从起始元素166(例如,0)开始,接着是3的倍数直到排列结果寄存器148A的第30个元素,并且绕回以基于步进元素计数168继续步进通过排列结果寄存器148A的元素。
在一些示例中,指令管理器140计算对应于排列结果寄存器148B的每个元素的元素选择顺序186的值(例如,0、3、6、9、12、15、18、21、24、27、30、1、4、7、10、13、16、18、22、25、28、31、2、5、8、11、14、17、19、23、26、29),并且将元素选择顺序186的值存储在元素顺序向量寄存器中。在这些示例中,可基于存储在元素顺序向量寄存器中的元素选择顺序186的值来并行填充排列结果寄存器148B的元素。在其他示例中,指令管理器140将元素选择顺序186(例如,3i%32)存储为可用于针对排列结果寄存器148B的每个元素一次一个地确定排列结果寄存器148A的对应元素并且一次将元素选择顺序186的一个值存储为标量值的公式或函数。在这些示例中,可基于元素选择顺序186的所存储标量值而一次一个地顺序地填充排列结果寄存器148B的元素。
指令管理器140执行排列指令134以基于寄存器选择顺序184来填充排列结果寄存器148A。例如,针对排列结果寄存器148A的每个特定元素,指令管理器140基于寄存器选择顺序184(例如,i%3)来选择多个源向量寄存器146中的源向量寄存器,并且基于源向量寄存器的对应元素来填充特定元素。为了例示,指令管理器140确定寄存器选择顺序184指示特定寄存器索引(例如,i%3)对应于排列结果寄存器148A的特定元素(例如,具有索引i)。指令管理器140选择与特定寄存器索引(例如,i%3)相关联的源向量寄存器146,并且将值从所选择的源向量寄存器146的对应元素(例如,具有索引i)复制到排列结果寄存器148A的特定元素(例如,具有索引i)。
在示例200中,指令管理器140确定寄存器选择顺序184指示第一寄存器索引(例如,0)对应于排列结果寄存器148A的第0个元素(例如,i=0,i%3=0%3=0)。指令管理器140选择具有第一寄存器索引(例如,0)的源向量寄存器146A,并且将数据值(例如,i0)从源向量寄存器146A的第0个元素复制到排列结果寄存器148A的第0个元素。作为另一个示例,指令管理器140确定寄存器选择顺序184指示第二寄存器索引(例如,1)对应于排列结果寄存器148A的第1个元素(例如,i=1,i%3=1)。指令管理器140选择具有第二寄存器索引(例如,1)的源向量寄存器146B,并且将数据值(例如,j1)从源向量寄存器146B的第1个元素复制到排列结果寄存器148A的第1个元素。类似地,指令管理器140将数据值(例如,k2)从源向量寄存器146C的具有第三寄存器索引(例如,2%3=2)的第2个元素复制到排列结果寄存器148A的第2个元素。指令管理器140将数据值(例如,i3)从源向量寄存器146A的具有第一寄存器索引(例如,3%3=0)的第3个元素复制到排列结果寄存器148A的第3个元素,依此类推,直到排列结果寄存器148A的所有元素被填充。尽管为了便于理解而依据顺序地填充排列结果寄存器148A的每个元素进行描述,但是应当理解,在一些具体实施中,可并行地而不是顺序地将一些或所有数据值从源向量寄存器146A-146C复制到排列结果寄存器148A中。
在排列指令134的执行期间,指令管理器140基于元素选择顺序186来填充排列结果寄存器148B的元素。在一些方面中,元素选择顺序186对应于存储在排列结果寄存器148A的元素中的数据值的排列。例如,指令管理器140针对排列结果寄存器148B的特定元素(例如,i)并且基于元素选择顺序186来选择排列结果寄存器148A的元素(例如,3i%32),并且基于排列结果寄存器148A的所选择的元素来填充排列结果寄存器148B的特定元素。为了例示,指令管理器140确定元素选择顺序186指示特定元素索引(例如,3i%32)对应于排列结果寄存器148B的特定元素(例如,具有索引i)。指令管理器140选择排列结果寄存器148A的与特定元素索引(例如,3i%32)相关联的特定元素,并且将数据值从排列结果寄存器148A的所选择的元素(例如,具有索引3i%32)复制到排列结果寄存器148B的特定元素(例如,具有索引i)。
指令管理器140确定元素选择顺序186(例如,i=0,3i%32=0%32=0)指示第一元素索引(例如,0)对应于排列结果寄存器148B的第0个元素。指令管理器140选择排列结果寄存器148A的具有第一元素索引(例如,0)的第0个元素并且将数据值(例如,i0)从排列结果寄存器148A的第0个元素复制到排列结果寄存器148B的第0个元素。作为另一个示例,指令管理器140确定元素选择顺序186(例如,i=1,3i%32=3%32=3)指示第二寄存器索引(例如,3)对应于排列结果寄存器148B的第1个元素。指令管理器140选择排列结果寄存器148A的具有第二寄存器索引(例如,3)的第3个元素,并且将数据值(例如,i3)从排列结果寄存器148A的第3个元素复制到排列结果寄存器148B的第1个元素,依此类推,直到排列结果寄存器148B的所有元素被填充。尽管为了便于理解而依据顺序地填充排列结果寄存器148B的每个元素进行描述,但是应当理解,在一些具体实施中,可并行地而不是顺序地将一些或所有数据值从排列结果寄存器148A复制到排列结果寄存器148B。排列结果寄存器148B因此包括按顺序的已过滤数据值(例如,每第三个源数据值)。
在示例200中,寄存器起始参数152(例如,0)、周期性参数154(例如,3)、截取参数156(例如,0)和步进参数158(例如,3)对应于对源数据执行过滤操作,诸如选择x[3n],其中“x”对应于源数据并且“n”为大于或等于0的整数。例如,选择x[3n]对应于选择x[0]、x[3]、x[6]等,或选择从第0个数据值起始的每第三个源数据值来填充排列结果寄存器148B。在例示性示例中,对于整数n>=0,resultdata[n]=x[3n],其中“resultdata”对应于排列结果寄存器148B(例如,最终结果)。排列结果寄存器148B的特定元素“n”用于存储源数据中的具有索引“3n”的数据值。例如,resultdata[0]=x[0]、resultdata[1]=x[3]、resultdata[2]=x[6]等。
尽管作为例示性示例将寄存器选择顺序184描述为基于寄存器起始参数152和周期性参数154(例如,寄存器选择顺序184=(寄存器起始参数152+i)%(周期性参数154)),但在更一般示例中,可将寄存器选择顺序184描述为基于起始寄存器162和向量寄存器计数164,诸如:寄存器选择顺序184=(起始寄存器162+i)%(向量寄存器计数164)。类似地,尽管元素选择顺序186被描述为基于截取参数156和步进参数158(例如,元素选择顺序186=(截取参数156+步进参数158*i)%32),但在更一般的示例中,元素选择顺序186可被描述为基于起始元素166和步进元素计数168,诸如:元素选择顺序186=(起始元素166+步进元素计数168*i)%32。
排列指令134使得能够在不使用向量寄存器的情况下对源数据执行操作以指定寄存器选择顺序184和元素选择顺序186。在特定方面中,指令管理器140将来自存储器132(或另一个设备)的源数据并行地加载到多个源向量寄存器146中的一者或多者。在一些具体实施中,在排列指令134的执行期间,指令管理器140基于多个源向量寄存器146的元素并行地填充排列结果寄存器148A的元素,并且基于排列结果寄存器148A的元素的值的排列并行地填充排列结果寄存器148B的元素。
在一些具体实施中,在排列指令134的执行期间,指令管理器140基于多个源向量寄存器146的元素来连续地填充排列结果寄存器148A的元素。例如,在排列指令134的执行期间,指令管理器140基于寄存器选择顺序184选择源向量寄存器146A并且基于源向量寄存器146A填充排列结果寄存器148A的第一元素。在填充排列结果寄存器148A的第一元素之后,指令管理器140基于寄存器选择顺序184来选择源向量寄存器146B,并且基于源向量寄存器146B填充排列结果寄存器148A的第二元素等。在这些具体实施中,可一次一个地确定由寄存器选择顺序184(例如,函数或公式)指示为对应于排列结果寄存器148A的下一元素的源向量寄存器以选择下一源向量寄存器。下一所选择的源向量寄存器的索引可被存储为标量值(例如,指示0、1或2中的一者),而不是使用向量寄存器来存储对应于排列结果寄存器148A的每个元素的每个源向量寄存器的索引(例如,指示32个值,诸如0、1、2、0、1、2、0、1、2……)。
在一些具体实施中,在排列指令134的执行期间,指令管理器140基于排列结果寄存器148A的元素的值的排列来连续地填充排列结果寄存器148B的元素。例如,在排列指令134的执行期间,指令管理器140基于元素选择顺序186来选择排列结果寄存器148A的第一元素(例如,第0个元素)并且将值(例如,i0)从排列结果寄存器148A的第一元素复制到排列结果寄存器148B的第一元素(例如,第0个元素)。在填充排列结果寄存器148B的第一元素之后,指令管理器140基于元素选择顺序186来选择排列结果寄存器148A的第二元素(例如,第3个元素),并且将值(例如,i3)从排列结果寄存器148A的第二元素(例如,第3个元素)复制到排列结果寄存器148B的第二元素(例如,第1个元素)等。在这些具体实施中,可一次一个地确定由元素选择顺序186(例如,函数或公式)指示为对应于排列结果寄存器148B的下一元素的下一元素索引以选择排列结果寄存器148A的下一元素。下一所选择的元素的索引可被存储为标量值(例如,指示0至31中的一者),而不是使用向量寄存器来存储对应于排列结果寄存器148B的每个元素的排列结果寄存器148A的每个元素的索引(例如,指示32个值,诸如0、3、6、9、12、15、18、21、24……)。
参照图3,示出了设备102的特定例示性方面的示图300。指令管理器140被配置为执行排列指令334。与图1至图2的排列指令134的单个参数集相比,排列指令334包括多个参数集。排列指令334还包括操作码335。操作码335对应于排列指令334的标识符。
在一些具体实施中,排列指令334包括第一个参数集(例如,寄存器起始参数152A、周期性参数154A、截取参数156A、步进参数158A或它们的组合)和第二个参数集(例如,寄存器起始参数152B、周期性参数154B、截取参数156B、步进参数158B或它们的组合)。
图4描绘了指令管理器140的操作的示例400,其例示了针对存储在源向量寄存器146A-146C中的源数据执行排列指令334的方面,并且包括基于寄存器起始参数152A和周期性参数154A来填充排列结果寄存器148A并且基于寄存器起始参数152B和周期性参数154B来填充排列结果寄存器148C,接着基于截取参数156A和步进参数158A来填充排列结果寄存器148B并且基于截取参数156B和步进参数158B来填充排列结果寄存器148D,如下文更详细描述。
在示例400中,寄存器起始参数152A(例如,0)、周期性参数154A(例如,3)、截取参数156A(例如,0)和步进参数158A(例如,3)对应于对源数据的第一过滤操作,诸如选择x[3n]或从第0个数据值起始选择每第三个源数据值。寄存器起始参数152B(例如,2)、周期性参数154B(例如,3)、截取参数156B(例如,1)和步进参数158B(例如,3)对应于对源数据执行第二过滤操作,诸如选择x[3n+1],其中“x”对应于源数据并且“n”为大于或等于0的整数。例如,选择x[3n+1]对应于选择x[1]、x[4]、x[7]等或从第1个数据值起始选择每第三个源数据值。
返回到图3,指令管理器140被配置为执行排列指令334以对存储在多个源向量寄存器146中的源数据执行两个操作(例如,第一过滤操作和第二过滤操作)。例如,指令管理器140被配置为执行排列指令334以基于第一个参数集通过执行如参考图1所描述的类似操作而在排列结果寄存器148B中生成第一过滤操作的第一最终结果。为了例示,指令管理器140被配置为确定起始寄存器162A(例如,由寄存器起始参数152A或默认值指示)并且确定向量寄存器计数164A(例如,由周期性参数154A指示)。指令管理器140被配置为基于寄存器选择数据176、起始寄存器162A和向量寄存器计数164A来确定寄存器选择顺序184A,如参考图1所描述。指令管理器140被配置为在排列指令334的执行期间通过基于寄存器选择顺序184A填充排列结果寄存器148A来生成第一中间结果,如参考图1所描述。例如,如图4的示例400中所示,排列结果寄存器148A包括无序的每个感兴趣的数据值(例如,从第0个数据值起始的每第三个源数据值)。
指令管理器140被配置为确定起始元素166A(例如,如截取参数156A或默认值所指示)并且确定步进元素计数168A(例如,如步进参数158A、周期性参数154A或默认值所指示)。指令管理器140被配置为基于起始元素166A和步进元素计数168A来确定元素选择顺序186A,如参考图1所描述。指令管理器140被配置为在排列指令334的执行期间通过基于元素选择顺序186A填充排列结果寄存器148B来生成第一最终结果,如参考图1所描述。例如,如图4的示例400中所示,排列结果寄存器148B包括按顺序的每个感兴趣的数据值(例如,从第0个数据值起始的每第三个源数据值)。
在特定示例中,指令管理器140被配置为执行排列指令334以基于第二参数集通过执行如参考图1所描述的类似操作而在排列结果寄存器148D中生成第二过滤操作的第二最终结果。为了例示,指令管理器140被配置为确定起始寄存器162B(例如,由寄存器起始参数152B或默认值指示)并且确定向量寄存器计数164B(例如,由周期性参数154B指示)。指令管理器140被配置为基于寄存器选择数据176、起始寄存器162B和向量寄存器计数164B来确定寄存器选择顺序184B,如参考图1所描述。指令管理器140被配置为在排列指令334的执行期间通过基于寄存器选择顺序184B填充排列结果寄存器148C来生成第二中间结果,如参考图1所描述。例如,如图4的示例400中所示,排列结果寄存器148C包括无序的每个感兴趣的数据值(例如,从第1个数据值起始的每第三个源数据值)。
指令管理器140被配置为确定起始元素166B(例如,如截取参数156B或默认值所指示)并且确定步进元素计数168B(例如,如步进参数158B、周期性参数154B或默认值所指示)。指令管理器140被配置为基于起始元素166B和步进元素计数168B来确定元素选择顺序186B,如参考图1所描述。指令管理器140被配置为在排列指令334的执行期间通过基于元素选择顺序186B填充排列结果寄存器148D来生成第二最终结果,如参考图1所描述。例如,如图4的示例400中所示,排列结果寄存器148D包括按顺序的每个感兴趣的数据值(例如,从第1个数据值起始的每第三个源数据值)。
提供包括两个参数集的排列指令334作为例示性非限制性示例。在其他示例中,排列指令可包括多于两个参数集以生成对源数据执行多于两个操作的最终结果。
在示例400中,周期性参数154B指示与周期性参数154A相同的值,因此寄存器选择顺序184B遵循与寄存器选择顺序184A类似的模式(例如,(寄存器起始参数+i)%周期性参数)。寄存器选择顺序184B指示与寄存器选择顺序184A不同的值,因为寄存器起始参数152B指示与由寄存器起始参数152A指示的值(例如,0)不同的值(例如,2)。在一些示例中,寄存器选择顺序可遵循不同模式(例如,而不是(寄存器起始参数+i)%周期性参数),如参考图5进一步描述。
参照图5,示出了寄存器选择数据176的示例500。寄存器选择数据176将多个向量寄存器计数172映射到多个寄存器选择顺序174。
寄存器选择数据176指示向量寄存器计数172A(例如,5)对应于寄存器选择顺序174A,诸如((寄存器起始参数152+2i)%(周期性参数154))或((寄存器起始参数152+2i)%5),其中“i”对应于元素索引,并且寄存器选择顺序174A指示对应于元素索引i的源寄存器索引。
在一些示例中,多个向量寄存器计数172可对应于寄存器选择顺序174,其对应于相同模式但指示针对相同寄存器起始参数152的不同源寄存器索引值。例如,向量寄存器计数172B(例如,9)对应于寄存器选择顺序174B(例如,(寄存器起始参数152+7i)%9)并且向量寄存器计数172C(例如,15)对应于寄存器选择顺序174C(例如,(寄存器起始参数152+7i)%15)。寄存器选择顺序174B和寄存器选择顺序174C中的每一者对应于相同寄存器选择顺序模式(例如,(寄存器起始参数152+7i)%周期性参数154)。寄存器选择顺序174B和寄存器选择顺序174C针对相同寄存器起始参数152指示不同源寄存器索引值,因为寄存器选择顺序174B和寄存器选择顺序174C基于由周期性参数154指示的不同值。
在一些示例中,多个向量寄存器计数172可对应于寄存器选择顺序174,其对应于相同模式并且指示针对相同寄存器起始参数152的相同源寄存器索引值。例如,向量寄存器计数172N中的每一者(例如,6、7、10-14,以及大于或等于17)对应于寄存器选择顺序174N(例如,(寄存器起始参数152+i)%32)。寄存器选择顺序174N针对相同寄存器起始参数152指示针对向量寄存器计数172N中的每一者的相同源寄存器索引值,因为寄存器选择顺序174N独立于周期性参数154。
作为例示性示例,依据寄存器起始参数152、周期性参数154或两者来描述多个寄存器选择顺序174。在更一般的情况下,可依据起始寄存器162、向量寄存器计数164或两者来描述多个寄存器选择顺序174。
在特定方面中,基于以下等式来确定寄存器选择数据176。源向量寄存器146中的每一者包括32个元素。存储在多个源向量寄存器146中的源数据的数据值的源数据索引对应于:32v+i,其中“v”对应于源寄存器索引并且“i”对应于其中存储数据值的元素索引。例如,具有源数据索引35的数据值(例如,第35个源数据值)被存储在具有源寄存器索引“1”的源向量寄存器146的具有元素索引“3”的元素中(例如,v=1,i=3,32v+i=32+3=35)。过滤操作“x[mn]”的每个感兴趣的数据值对应于:
32v + i = mn 等式1
其中“m”对应于向量寄存器计数164并且“n”对应于大于或等于0的整数值。等式1可被重新布置为:mn–32v=i。对于为9的向量寄存器计数164,过滤操作对应于:
9n – 32v = i 等式2
对于为9的向量寄存器计数164和对应于元素索引i为1的多个源向量寄存器146中的源数据的第1列,过滤操作对应于:
9n – 32v = 1 等式3
对于为9的向量寄存器计数164,感兴趣的第0个数据值被存储在源向量寄存器146A的元素0中,感兴趣的第1个数据值被存储在源向量寄存器146A的元素9中等。针对n=25和v=7满足等式3。例如,对于为9的向量寄存器计数164,具有元素索引1的感兴趣的数据值是感兴趣的第25个源数据值(对应于n=25)并且在对应于源寄存器索引7(对应于v=7)的源向量寄存器中。等式3可被重写为:
其中和/>将等式4乘以i对应于:
针对从0到31的所有i值都满足等式5。对于为9的向量寄存器计数164、为0的寄存器起始参数152、以及从0到31的i的所有值,寄存器选择顺序174B对应于其中/>为了例示,寄存器选择顺序174B对应于:
(7i)%9等式6
可以类似方式确定针对向量寄存器计数164的其他值的寄存器选择顺序174。
参照图6,示出了图1的排列指令134的执行的示例600。例如,图1的指令管理器140在排列指令134的执行期间执行示例600中所例示的一个或多个操作。在一些示例中,可在图3的排列指令334的执行期间执行类似操作。在示例600中,寄存器起始参数152(例如,0)、周期性参数154(例如,5)、截取参数156(例如,0)和步进参数158(例如,5)对应于对源数据执行过滤操作,诸如选择x[5n],其中“x”对应于源数据并且“n”为大于或等于0的整数。例如,选择x[5n]对应于选择x[0]、x[5]、x[10]等,或者从第0个数据值起始选择每第五个源数据值。
源数据被存储在源向量寄存器146A、源向量寄存器146B、源向量寄存器146C、源向量寄存器146D和源向量寄存器146E中。源向量寄存器146A、源向量寄存器146B、源向量寄存器146C、源向量寄存器146D和源向量寄存器146E分别对应于第一源寄存器索引(例如,0)、第二源寄存器索引(例如,1)、第三源寄存器索引(例如,2)、第四源寄存器索引(例如,3)和第五源寄存器索引(例如,4)。
通过从对应于非连续源寄存器索引值的源向量寄存器复制元素的值来填充排列结果寄存器148A。例如,基于寄存器选择顺序184,图1的指令管理器140将源向量寄存器146A的对应于第一源寄存器索引(例如,0)的第0个元素的值(例如,i0)复制到排列结果寄存器148A的第0个元素,并且将源向量寄存器146C的对应于第三源寄存器索引(例如,2)的第1个元素的值(例如,k1)复制到排列结果寄存器148A的第1个元素。
截取参数156指示起始元素166(例如,0)并且步进参数158指示步进元素计数168(例如,5)。通过从排列结果寄存器148A复制值来填充排列结果寄存器148B,这从起始元素166(例如,第0个元素)开始,接着是具有为步进元素计数168(例如,5)的倍数的元素索引的元素,并且绕回,以基于步进元素计数168(例如,5)继续步进通过排列结果寄存器148A的元素。因此,排列结果寄存器148A存储从第0个源数据值起始的每第5个源数据值的有序序列。
参照图7,示出了在执行排列指令134之前执行旋转指令136的示例700。在特定方面中,图1的指令管理器140执行旋转指令136以在执行排列指令134之前旋转多个源向量寄存器146中的一者或多者的值的位置。在一些示例中,指令管理器140可在执行图3的排列指令334之前执行旋转指令136。
在示例700中,具有寄存器起始参数152(例如,0)、周期性参数154(例如,4)、截取参数156(例如,0)和步进参数158(例如,4)的排列指令134对应于对源数据执行过滤操作,诸如选择x[4n],其中“x”对应于源数据并且“n”为大于或等于0的整数。例如,选择x[4n]对应于选择x[0]、x[4]、x[8]等,或者从第0个数据值起始选择每第四个源数据值。
源数据的每个列包括针对排列指令134的多个感兴趣的数据值。如本文所使用,“感兴趣的数据值”对应于将被包括在执行排列指令的最终结果中的数据值。例如,对应于相同元素索引(例如,0、4、8、12、16、20、24或28)的多个源向量寄存器146的元素包括感兴趣的数据值。为了例示,源向量寄存器146A、源向量寄存器146B、源向量寄存器146C和源向量寄存器146D中的每一者的第0个元素包括感兴趣的数据值。
指令管理器140执行旋转指令136以将存储在源向量寄存器146B、源向量寄存器146C和源向量寄存器146D中的值的位置分别旋转1、2和3。在执行旋转指令136之后,多个源向量寄存器146中的源数据的每个列包括单个感兴趣的数据值。例如,对应于相同元素索引(例如,0-31)的多个源向量寄存器146的元素中的单个元素包括感兴趣的数据值。为了例示,源向量寄存器146A、源向量寄存器146B、源向量寄存器146C和源向量寄存器146D中的单个源向量寄存器的第0个元素包括感兴趣的数据值。指令管理器140执行排列指令134以基于多个源向量寄存器146中的源数据来填充排列结果寄存器148A,并且基于排列结果寄存器148A的值的排列来填充排列结果寄存器148B,如参考图1所描述。
图8至图9例示了对应于矩阵转置的排列指令134的多个执行的示例。
图8描绘了排列指令134的第一执行在排列结果寄存器148B中生成输出。
图9描绘了排列指令134的第二执行在排列结果寄存器148D中生成输出。在图9的示例中,排列结果寄存器148B、排列结果寄存器148D、排列结果寄存器148F和排列结果寄存器148G的组合对应于存储在源向量寄存器146A-D中的矩阵的转置。
参照图8,示出了排列指令134的执行的示例800。在特定方面中,图1的指令管理器140执行排列指令134以执行多个源向量寄存器146中的一者或多者的值的矩阵转置。
在排列指令134的第一执行中,第一列(例如,第0列)对应于感兴趣的列,并且在源数据的先前感兴趣的列之后的每第四列(例如,对应于向量寄存器计数164)对应于感兴趣的列。感兴趣的列中的每个值对应于感兴趣的数据值。类似地,对于排列指令134的第二执行,第二列(例如,第1列)对应于感兴趣的列,并且在先前感兴趣的列之后的每第四列(例如,对应于向量寄存器计数164)对应于感兴趣的列,如参考图9进一步描述。
指令管理器140在执行排列指令134之前执行旋转指令136,如参考图7所描述。例如,指令管理器140执行旋转指令136以将存储在源向量寄存器146B、源向量寄存器146C和源向量寄存器146D中的值的位置分别旋转1、2和3。在执行旋转指令136之后,多个源向量寄存器146中的源数据的每个列包括针对排列指令134的特定执行的单个感兴趣的数据值。
在排列指令134的第一执行期间,指令管理器140基于寄存器起始参数152(例如,0)和周期性参数154(例如,4)来填充排列结果寄存器148A,如参考图1所描述。例如,针对排列指令134的第一执行的每个感兴趣的列被包括在排列结果寄存器148A中。在排列指令134的第一执行期间,指令管理器140基于截取参数156(例如,0)和步进参数158(例如,1)来填充排列结果寄存器148B,如参考图1所描述。例如,截取参数156的特定值(例如,0)和步进参数158的特定值(例如,1)对应于在不进行排列的情况下将排列结果寄存器148A的元素的值复制到排列结果寄存器148B。排列结果寄存器148B对应于针对排列指令134的第一执行的源数据的每个感兴趣的列的转置。例如,排列结果寄存器148B表示包括针对排列指令134的第一执行的源数据的每个感兴趣的列的行。
参照图9,示出了排列指令134的执行的示例900。为了例示,示例900对应于由指令管理器140进行的排列指令134的第二执行,其用于执行多个源向量寄存器146中的一者或多者的值的矩阵转置。
在执行旋转指令136之后,如参考图8所描述,多个源向量寄存器146中的源数据的每个列包括针对排列指令134的第二执行的单个感兴趣的数据值。
在排列指令134的第二执行期间,指令管理器140基于寄存器起始参数152(例如,3)和周期性参数154(例如,4)来填充排列结果寄存器148C,如参考图1所描述。例如,针对排列指令134的第二执行的每个感兴趣的列被包括在排列结果寄存器148C中。在排列指令134的第二执行期间,指令管理器140基于截取参数156(例如,1)和步进参数158(例如,1)来填充排列结果寄存器148D,如参考图1所描述。排列结果寄存器148D对应于针对排列指令134的第二执行的源数据的每个感兴趣的列的转置。为了例示,排列结果寄存器148D表示包括针对排列指令134的第二执行的源数据的每个感兴趣的列的行。
在图9的示例950中,在排列指令134的多个执行之后,排列结果寄存器148B表示包括针对排列指令134的第一执行的源数据的每个感兴趣的列的第一行,排列结果寄存器148D表示包括针对排列指令134的第二执行的源数据的每个感兴趣的列的第二行,排列结果寄存器148F表示包括针对排列指令134的第三执行的源数据的每个感兴趣的列的第三行,并且排列结果寄存器148G表示包括针对排列指令134的第四执行的源数据的每个感兴趣的列的第四行。第一行、第二行、第三行和第四行的组合对应于源向量寄存器146A-D的源数据的矩阵转置(预旋转)。在一些方面中,与排列指令134的四个调用相比,可通过排列指令334的两个调用来执行矩阵转置。
作为例示性示例,提供使用排列指令(例如,一个排列指令134或多个排列指令334)来执行矩阵转置。可在执行其他操作(诸如下采样操作、快速傅里叶核操作或各种其他操作)期间或在其准备中使用排列指令。例如,排列指令可用于执行过滤,如参考图2所描述,作为下采样操作(例如,以1/3下采样)的一部分。作为另一个示例,作为执行快速傅里叶核操作的一部分,可使用排列指令来将偶数数据值过滤到一个或多个第一排列结果寄存器并且将奇数数据值过滤到一个或多个第二排列结果寄存器。
参照图10,示出了执行排列指令的方法1000的特定具体实施。在特定方面中,由图1的指令管理器140、处理器190、设备102或它们的组合中的至少一者执行方法1000的一个或多个操作。
方法1000包括在1002处访问排列指令。例如,指令管理器140从指令队列接收排列指令134,如参考图1所描述。
方法1000包括在1004处访问排列指令的周期性参数。例如,指令管理器140访问排列指令134的周期性参数154,如参考图1所描述。周期性参数154指示包含排列指令134的源数据的多个源向量寄存器146的向量寄存器计数164。作为另一个示例,指令管理器140访问排列指令334的周期性参数154A和周期性参数154B,如参考图3所描述。周期性参数154A指示包含用于在排列指令334的执行期间填充排列结果寄存器148A和排列结果寄存器148B的源数据的多个源向量寄存器146的向量寄存器计数164A。周期性参数154B指示包含用于在排列指令334的执行期间填充排列结果寄存器148C和排列结果寄存器148D的源数据的多个源向量寄存器146的向量寄存器计数164B。
方法1000还包括在1006处执行排列指令以针对多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素,至少部分基于向量寄存器的计数来选择多个向量寄存器中的向量寄存器并且基于所选择的向量寄存器的对应元素中的值来填充特定元素。例如,指令管理器140执行排列指令134以针对排列结果寄存器148A的每个元素,至少部分地基于向量寄存器计数164来选择多个源向量寄存器146中的一者,并且基于多个源向量寄存器146中的所选择的源向量寄存器的对应元素中的值来填充排列结果寄存器148A的特定元素,如参考图1所描述。作为另一个示例,指令管理器140执行排列指令334以针对排列结果寄存器148A的每个元素,至少部分地基于向量寄存器计数164A来选择多个源向量寄存器146中的一者,并且基于多个源向量寄存器146中的所选择的源向量寄存器的对应元素中的值来填充排列结果寄存器148A的特定元素。指令管理器140执行排列指令334以针对排列结果寄存器148C的每个元素,至少部分地基于向量寄存器计数164B来选择多个源向量寄存器146中的一者,并且基于多个源向量寄存器146中的所选择的源向量寄存器的对应元素中的值来填充排列结果寄存器148C的特定元素。
方法1000使得能够至少部分地基于向量寄存器计数164来为排列结果寄存器148A的元素选择多个源向量寄存器146中的一者。与基于指示针对排列结果寄存器148A的每个元素的源向量寄存器的向量寄存器来选择源向量寄存器相比,基于可被存储为标量值的向量寄存器计数164来选择源向量寄存器减小了存储器使用。
图10的方法1000可由现场可编程门阵列(FPGA)设备、专用集成电路(ASIC)、处理单元(诸如中央处理单元(CPU))、数字信号处理器(DSP)、图形处理单元(GPU)、控制器、另一个硬件设备、固件设备、或它们的任何组合实现。作为示例,图10的方法1000可由执行指令的处理器来执行,诸如参考图11所描述的。
参照图11,描绘了设备的特定例示性具体实施的框图,并且总体上将其指定为1100。在各种具体实施中,设备1100可具有比在图11中所示的更多或更少的组件。在例示性具体实施中,设备1100可对应于设备102。在例示性具体实施中,设备1100可执行参考图1至图10描述的一个或多个操作。
在特定具体实施中,设备1100包括处理器1106(例如,CPU)。设备1100可包括一个或多个附加处理器1110(例如,一个或多个DSP、一个或多个GPU或它们的组合)。在特定方面中,图1的处理器190对应于处理器1106、处理器1110或它们的组合。在特定方面中,处理器1110包括指令管理器140。处理器1110还可包括语音和音乐编码器-解码器(CODEC)1108,其包括语音译码器(“声码器”)编码器1136、声码器解码器1138或两者。
设备1100可包括向量寄存器堆138、存储器132和CODEC 1134。存储器132可包括指令1156,该指令可由一个或多个附加处理器1110(或处理器1106)执行以实现参考指令管理器140描述的功能。设备1100可包括经由收发器1150耦合到天线1152的调制解调器1148。
设备1100可包括耦合到显示控制器1126的显示器1128。一个或多个扬声器1192、一个或多个麦克风1190或它们的组合可耦合到CODEC 1134。CODEC 1134可包括数模转换器(DAC)1102、模数转换器(ADC)1104或两者。在特定具体实施中,CODEC 1134可从一个或多个麦克风1190接收模拟信号,使用模数转换器1104来将模拟信号转换为数字信号,并且将数字信号提供给语音和音乐编解码器1108。语音和音乐编解码器1108可处理数字信号。在特定具体实施中,语音和音乐编解码器1108可将数字信号提供给CODEC 1134。CODEC 1134可使用数模转换器1102将数字信号转换为模拟信号并且可将模拟信号提供给一个或多个扬声器1192。
在特定具体实施中,设备1100可被包括在系统级封装或片上系统设备1122中。在特定具体实施中,存储器132、向量寄存器堆138、处理器1106、处理器1110、显示控制器1126、CODEC 1134和调制解调器1148被包括在系统级封装或片上系统设备1122中。在特定具体实施中,输入设备1130和电源1144耦合到片上系统设备1122。此外,在特定具体实施中,如图11中所示,显示器1128、输入设备1130、一个或多个扬声器1192、一个或多个麦克风1190、天线1152和电源1144位于片上系统设备1122的外部。在特定具体实施中,显示器1128、输入设备1130、一个或多个扬声器1192、一个或多个麦克风1190、天线1152和电源1144中的每一者都可耦合到片上系统设备1122的组件,诸如接口或控制器。
设备1100可包括智能扬声器、扬声器条、移动通信设备、智能电话、蜂窝电话、膝上型计算机、计算机、平板设备、个人数字助理、显示设备、电视、游戏控制台、音乐播放器、收音机、数字视频播放器、数字视频光盘(DVD)播放器、调谐器、相机、导航设备、交通工具、头戴式设备,增强现实头戴式设备、混合现实头戴式设备、虚拟现实头戴式设备、飞行器、家庭自动化系统、语音激活设备、无线扬声器和语音激活设备、便携式电子设备、汽车、计算设备、通信设备、物联网(IoT)设备、虚拟现实(VR)设备、基站、移动设备或它们的任何组合。
结合所描述的具体实施,一种装置包括用于访问排列指令的周期性参数的构件,该周期性参数指示包含排列指令的源数据的多个向量寄存器中的向量寄存器的计数。例如,用于访问的构件可对应于以下中的一个或多个组件:图1的指令管理器140、处理器190、设备102、处理器1106、处理器1110、设备1100、被配置为访问排列指令的周期性参数的一个或多个其他电路或组件或它们的任何组合。
装置还包括用于执行排列指令以针对多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素进行以下操作的构件:至少部分基于计数来选择多个向量寄存器中的向量寄存器并且基于所选择的向量寄存器的对应元素中的值来填充特定元素。例如,用于执行的构件可对应于以下中的一个或多个组件:图1的指令管理器140、处理器190、设备102、处理器1106、处理器1110、设备1100、被配置为访问排列指令的周期性参数的一个或多个其他电路或组件或它们的任何组合。
在一些具体实施中,非暂态计算机可读介质(例如,计算机可读存储设备,诸如存储器132)包括指令(例如,指令1156),该指令在由一个或多个处理器(例如,处理器190、一个或多个处理器1110、处理器1106或它们的组合)执行时致使一个或多个处理器访问排列指令(例如,排列指令134、排列指令334或两者)的周期性参数(例如,周期性参数154、周期性参数154A、周期性参数154B或它们的组合)。周期性参数指示包含排列指令的源数据的多个向量寄存器(例如,多个源向量寄存器146)的向量寄存器的计数(例如,向量寄存器计数164、向量寄存器计数164A、向量寄存器计数164B或它们的组合)。指令在由一个或多个处理器执行时还致使一个或多个处理器执行排列指令以针对多个向量寄存器的第一排列结果寄存器(例如,排列结果寄存器148A、排列结果寄存器148C或两者)的多个元素中的每个特定元素,至少部分基于计数来选择多个向量寄存器中的向量寄存器并且基于所选择的向量寄存器的对应元素中的值来填充特定元素。
下面在相关条款集中描述了本公开的特定方面:
根据条款1,一种设备包括:向量寄存器堆,所述向量寄存器堆包括多个向量寄存器;存储器,所述存储器被配置为存储排列指令;和处理器,所述处理器被配置为:访问所述排列指令的周期性参数,所述周期性参数指示包含所述排列指令的源数据的多个数据源的计数;以及执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:至少部分地基于所述多个数据源的所述计数来选择所述多个数据源中的数据源;以及基于所选择的数据源的对应元素中的值来填充所述特定元素。
条款2包括根据条款1所述的设备,其中所述多个数据源包括所述多个向量寄存器中的多个向量寄存器。
条款3包括根据条款1或条款2所述的设备,其中在下采样操作、矩阵转置或快速傅里叶核操作期间或在其准备中执行所述排列指令。
条款4包括根据条款1至条款3中任一项所述的设备,其中所述处理器被进一步配置为:访问所述排列指令的起始参数以填充所述第一排列结果寄存器的初始元素,所述起始参数指示包含源数据的所述多个数据源中的特定数据源;以及至少部分地基于所述起始参数,选择包含源数据的所述多个数据源的元素以填充所述第一排列结果寄存器的剩余元素。
条款5包括根据条款1至条款4中任一项所述的设备,其中所述处理器被进一步配置为:基于所述多个数据源的所述计数来确定选择顺序;以及至少部分地基于所述选择顺序,选择包含源数据的所述多个数据源的元素以填充所述第一排列结果寄存器的所述元素。
条款6包括根据条款5所述的设备,其中所述存储器被配置为存储指示与数据源的计数相对应的数据源选择的顺序的选择数据,并且其中所述处理器被配置为基于所述选择数据来确定与所述多个数据源的所述计数相对应的所述选择顺序。
条款7包括根据条款1至条款6中任一项所述的设备,其中所述处理器被进一步配置为执行所述排列指令以基于所述第一排列结果寄存器的所述元素中的值的排列来填充第二排列结果寄存器的元素。
条款8包括根据条款7所述的设备,其中所述处理器被进一步配置为:访问截取参数,所述截取参数指示所述第一排列结果寄存器的特定元素以填充所述第二排列结果寄存器的初始元素;以及至少部分地基于所述截取参数,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款9包括根据条款7或条款8所述的设备,其中所述处理器被进一步配置为:访问所述排列指令的步进参数,所述步进参数指示元素选择顺序;以及至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款10包括根据条款7至条款9中任一项所述的设备,其中所述处理器被进一步配置为:基于所述多个数据源的所述计数来确定元素选择顺序;以及至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款11包括根据条款1至条款10中任一项所述的设备,其中所述处理器被配置为在执行所述排列指令之前,预处理包含源数据的所述多个数据源中的至少一者的元素中的值。
条款12包括根据条款1至条款11中任一项所述的设备,其中所述处理器被配置为在执行所述排列指令之前,执行旋转指令以旋转包含源数据的所述多个数据源中的至少一者中的值的位置。
条款13包括根据条款1至条款12中任一项所述的设备,其中所述排列指令包括第二周期性参数,其中所述第二周期性参数指示包含所述排列指令的源数据的第二多个数据源的第二计数,并且其中执行所述排列指令包括基于所述第二多个数据源的所述第二计数,基于所述多个数据源的元素中的值来填充所述多个向量寄存器中的特定排列结果寄存器的元素。
根据条款14,一种方法包括:在设备处访问排列指令;在所述设备处访问所述排列指令的周期性参数,所述周期性参数指示包含所述排列指令的源数据的多个向量寄存器中的向量寄存器的计数;以及在所述设备处执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:至少部分地基于所述向量寄存器的计数来选择所述多个向量寄存器中的向量寄存器;以及基于所选择的向量寄存器的对应元素中的值来填充所述特定元素。
条款15包括根据条款14所述的方法,还包括:在所述设备处访问所述排列指令的寄存器起始参数以填充所述第一排列结果寄存器的初始元素,所述寄存器起始参数指示包含源数据的所述向量寄存器的特定向量寄存器;以及至少部分地基于所述寄存器起始参数,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的剩余元素。
条款16包括根据条款14或条款15所述的方法,还包括:在所述设备处基于所述向量寄存器的计数来确定寄存器选择顺序;以及至少部分地基于所述寄存器选择顺序,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的所述元素。
条款17包括根据条款16所述的方法,还包括基于寄存器选择数据来确定与所述向量寄存器的计数相对应的所述寄存器选择顺序,所述寄存器选择数据指示与向量寄存器的计数相对应的寄存器选择的顺序。
条款18包括根据条款14至条款17中任一项所述的方法,其中执行所述排列指令包括基于所述第一排列结果寄存器的所述元素中的值的排列来填充第二排列结果寄存器的元素。
条款19包括根据条款18所述的方法,还包括:访问截取参数,所述截取参数指示所述第一排列结果寄存器的特定元素以填充所述第二排列结果寄存器的初始元素;以及至少部分地基于所述截取参数,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款20包括根据条款18或条款19所述的方法,还包括:访问所述排列指令的步进参数,所述步进参数指示元素选择顺序;以及至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款21包括根据条款18至条款20中任一项所述的方法,还包括:在所述设备处基于所述向量寄存器的计数来确定元素选择顺序;以及至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款22包括根据条款14至条款21中任一项所述的方法,还包括,在执行所述排列指令之前,预处理包含源数据的所述向量寄存器中的至少一者的元素中的值。
条款23包括根据条款14至条款22中任一项所述的方法,还包括,在执行所述排列指令之前,执行旋转指令以旋转包含源数据的所述向量寄存器中的至少一者中的值的位置。
根据条款24,一种设备包括:存储器,所述存储器被配置为存储指令;和处理器,所述处理器被配置为执行所述指令以执行根据条款14至23中任一项所述的方法。
根据条款25,一种非暂态计算机可读介质存储指令,所述指令在由处理器执行时致使所述处理器执行根据条款14至条款23中任一项所述的方法。
根据条款26,一种装置包括用于执行根据条款14至条款23中任一项所述的方法的构件。
根据条款27,一种非暂态计算机可读介质存储指令,所述指令在由处理器执行时致使所述处理器进行以下操作:访问排列指令的周期性参数,所述周期性参数指示包含所述排列指令的源数据的多个向量寄存器中的向量寄存器的计数;以及执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:至少部分地基于所述向量寄存器的计数来选择所述多个向量寄存器中的向量寄存器;以及基于所选择的向量寄存器的对应元素中的值来填充所述特定元素。
条款28包括根据条款27所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:访问所述排列指令的寄存器起始参数以填充所述第一排列结果寄存器的初始元素,所述寄存器起始参数指示包含源数据的所述向量寄存器的特定向量寄存器;以及至少部分地基于所述寄存器起始参数,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的剩余元素。
条款29包括根据条款27或条款28所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:基于所述向量寄存器的计数来确定寄存器选择顺序;以及至少部分地基于所述寄存器选择顺序,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的所述元素。
条款30包括根据条款29所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器基于寄存器选择数据来确定与所述向量寄存器的计数相对应的所述寄存器选择顺序,其中所述寄存器选择数据指示与向量寄存器的计数相对应的寄存器选择的顺序。
条款31包括根据条款27至条款30中任一项所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器执行所述排列指令以基于所述第一排列结果寄存器的所述元素中的值的排列来填充第二排列结果寄存器的元素。
条款32包括根据条款31所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:访问截取参数,所述截取参数指示所述第一排列结果寄存器的特定元素以填充所述第二排列结果寄存器的初始元素;以及至少部分地基于所述截取参数,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款33包括根据条款31或条款32所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:访问所述排列指令的步进参数,所述步进参数指示元素选择顺序;以及至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款34包括根据条款31至条款33中任一项所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器:基于所述向量寄存器的计数来确定元素选择顺序;以及至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
条款35包括一种装置,所述装置包括:用于访问排列指令的周期性参数的构件,所述周期性参数指示包含所述排列指令的源数据的多个向量寄存器中的向量寄存器的计数;和用于执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素进行以下操作的构件:至少部分地基于所述向量寄存器的计数来选择所述多个向量寄存器中的向量寄存器;以及基于所选择的向量寄存器的对应元素中的值来填充所述特定元素。
条款36包括根据条款35所述的装置,其中用于访问的所述构件或用于执行的所述构件中的至少一者被集成到以下中的至少一者中:通信设备、计算机、显示设备、电视、游戏控制台、数字视频播放器、相机、导航设备、交通工具、头戴式耳机、增强现实头戴式耳机、混合现实头戴式耳机、虚拟现实头戴式耳机、飞行器、家庭自动化系统、语音激活设备、物联网(IoT)设备、虚拟现实(VR)设备、基站或移动设备。
技术人员还将明白的是,结合本文所公开的具体实施来描述的各个例示性逻辑框、配置、模块、电路和算法步骤可以被实现为电子硬件、由处理器执行的计算机软件、或这两者的组合。各种说明性的组件、框、配置、模块、电路和步骤已在上文围绕其功能进行了一般性描述。此类功能性是被实现为硬件还是处理器可执行指令取决于具体应用和施加于整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能,此类具体实施决策将不被理解为致使脱离本公开内容的范围。
结合本文中所公开的具体实施所描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中实施。软件模块可以驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动盘、压缩光盘只读存储器(CD-ROM)、或本领域中已知的任何其它形式的非暂时性存储介质。示例性的存储介质耦合到处理器,使得处理器可以从该存储介质读取信息以及向该存储介质写入信息。在另选方案中,存储介质可与处理器集成在一起。处理器和存储介质可以位于专用集成电路(ASIC)中。该ASIC可以位于计算设备或者用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在计算设备或用户终端中。
提供对所公开各方面的先前描述是为使本领域技术人员皆能够制作或使用所公开各方面。对这些方面的各种修改对于本领域技术人员而言将是显而易见的,并且本文中定义的原理可被应用于其他方面而不会脱离本公开内容的范围。由此,本公开内容并非旨在限定于本文中示出的各方面,而是应被授予可能与如由所附权利要求所定义的原理和新颖性特征一致的最广义的范围。

Claims (30)

1.一种设备,包括:
向量寄存器堆,所述向量寄存器堆包括多个向量寄存器;
存储器,所述存储器被配置为存储排列指令;和
处理器,所述处理器被配置为:
访问所述排列指令的周期性参数,所述周期性参数指示包含所述排列指令的源数据的多个数据源的计数;以及
执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:
至少部分地基于所述多个数据源的所述计数来选择所述多个数据源中的数据源;以及
基于所选择的数据源的对应元素中的值来填充所述特定元素。
2.根据权利要求1所述的设备,其中所述多个数据源包括所述多个向量寄存器中的多个向量寄存器。
3.根据权利要求1所述的设备,其中在下采样操作、矩阵转置或快速傅里叶核操作期间或在其准备中执行所述排列指令。
4.根据权利要求1所述的设备,其中所述处理器被进一步配置为:
访问所述排列指令的起始参数以填充所述第一排列结果寄存器的初始元素,所述起始参数指示包含源数据的所述多个数据源中的特定数据源;以及
至少部分地基于所述起始参数,选择包含源数据的所述多个数据源的元素以填充所述第一排列结果寄存器的剩余元素。
5.根据权利要求1所述的设备,其中所述处理器被进一步配置为:
基于所述多个数据源的所述计数来确定选择顺序;以及
至少部分地基于所述选择顺序,选择包含源数据的所述多个数据源的元素以填充所述第一排列结果寄存器的所述元素。
6.根据权利要求5所述的设备,其中所述存储器被配置为存储指示与数据源的计数相对应的数据源选择的顺序的选择数据,并且其中所述处理器被配置为基于所述选择数据来确定与所述多个数据源的所述计数相对应的所述选择顺序。
7.根据权利要求1所述的设备,其中所述处理器被进一步配置为执行所述排列指令以基于所述第一排列结果寄存器的所述元素中的值的排列来填充第二排列结果寄存器的元素。
8.根据权利要求7所述的设备,其中所述处理器被进一步配置为:
访问截取参数,所述截取参数指示所述第一排列结果寄存器的特定元素以填充所述第二排列结果寄存器的初始元素;以及
至少部分地基于所述截取参数,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
9.根据权利要求7所述的设备,其中所述处理器被进一步配置为:
访问所述排列指令的步进参数,所述步进参数指示元素选择顺序;以及
至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
10.根据权利要求7所述的设备,其中所述处理器被进一步配置为:
基于所述多个数据源的所述计数来确定元素选择顺序;以及
至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
11.根据权利要求1所述的设备,其中所述处理器被配置为在执行所述排列指令之前,预处理包含源数据的所述多个数据源中的至少一者的元素中的值。
12.根据权利要求1所述的设备,其中所述处理器被配置为在执行所述排列指令之前,执行旋转指令以旋转包含源数据的所述多个数据源中的至少一者中的值的位置。
13.根据权利要求1所述的设备,其中所述排列指令包括第二周期性参数,其中所述第二周期性参数指示包含所述排列指令的源数据的第二多个数据源的第二计数,并且其中执行所述排列指令包括基于所述第二多个数据源的所述第二计数,基于所述第二多个数据源的元素中的值来填充所述多个向量寄存器中的特定排列结果寄存器的元素。
14.一种方法,包括:
在设备处访问排列指令;
在所述设备处访问所述排列指令的周期性参数,所述周期性参数指示包含所述排列指令的源数据的多个向量寄存器中的向量寄存器的计数;以及
在所述设备处执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:
至少部分地基于所述向量寄存器的计数来选择所述多个向量寄存器中的向量寄存器;以及
基于所选择的向量寄存器的对应元素中的值来填充所述特定元素。
15.根据权利要求14所述的方法,还包括:
在所述设备处访问所述排列指令的寄存器起始参数以填充所述第一排列结果寄存器的初始元素,所述寄存器起始参数指示包含源数据的所述向量寄存器的特定向量寄存器;以及
至少部分地基于所述寄存器起始参数,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的剩余元素。
16.根据权利要求14所述的方法,还包括:
在所述设备处基于所述向量寄存器的计数来确定寄存器选择顺序;以及
至少部分地基于所述寄存器选择顺序,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的所述元素。
17.根据权利要求16所述的方法,还包括基于寄存器选择数据来确定与所述向量寄存器的计数相对应的所述寄存器选择顺序,所述寄存器选择数据指示与向量寄存器的计数相对应的寄存器选择的顺序。
18.根据权利要求14所述的方法,其中执行所述排列指令包括基于所述第一排列结果寄存器的所述元素中的值的排列来填充第二排列结果寄存器的元素。
19.根据权利要求18所述的方法,还包括:
访问截取参数,所述截取参数指示所述第一排列结果寄存器的特定元素以填充所述第二排列结果寄存器的初始元素;以及
至少部分地基于所述截取参数,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
20.根据权利要求18所述的方法,还包括:
访问所述排列指令的步进参数,所述步进参数指示元素选择顺序;以及
至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
21.一种存储指令的非暂态计算机可读介质,所述指令在由处理器执行时致使所述处理器进行以下操作:
访问排列指令的周期性参数,所述周期性参数指示包含所述排列指令的源数据的多个向量寄存器中的向量寄存器的计数;以及
执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素:
至少部分地基于所述向量寄存器的计数来选择所述多个向量寄存器中的向量寄存器;以及
基于所选择的向量寄存器的对应元素中的值来填充所述特定元素。
22.根据权利要求21所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:
访问所述排列指令的寄存器起始参数以填充所述第一排列结果寄存器的初始元素,所述寄存器起始参数指示包含源数据的所述向量寄存器的特定向量寄存器;以及
至少部分地基于所述寄存器起始参数,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的剩余元素。
23.根据权利要求21所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:
基于所述向量寄存器的计数来确定寄存器选择顺序;以及
至少部分地基于所述寄存器选择顺序,选择包含源数据的所述向量寄存器的元素以填充所述第一排列结果寄存器的所述元素。
24.根据权利要求23所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器基于寄存器选择数据来确定与所述向量寄存器的计数相对应的所述寄存器选择顺序,其中所述寄存器选择数据指示与向量寄存器的计数相对应的寄存器选择的顺序。
25.根据权利要求21所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器执行所述排列指令以基于所述第一排列结果寄存器的所述元素中的值的排列来填充第二排列结果寄存器的元素。
26.根据权利要求25所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:
访问截取参数,所述截取参数指示所述第一排列结果寄存器的特定元素以填充所述第二排列结果寄存器的初始元素;以及
至少部分地基于所述截取参数,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
27.根据权利要求25所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:
访问所述排列指令的步进参数,所述步进参数指示元素选择顺序;以及
至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
28.根据权利要求25所述的非暂态计算机可读介质,其中所述指令在由所述处理器执行时致使所述处理器进行以下操作:
基于所述向量寄存器的计数来确定元素选择顺序;以及
至少部分地基于所述元素选择顺序,基于所述第一排列结果寄存器的所述元素中的所述值来填充所述第二排列结果寄存器的所述元素。
29.一种装置,包括:
用于访问排列指令的周期性参数的构件,所述周期性参数指示包含所述排列指令的源数据的多个向量寄存器中的向量寄存器的计数;和
用于执行所述排列指令以针对所述多个向量寄存器的第一排列结果寄存器的多个元素中的每个特定元素进行以下操作的构件:
至少部分地基于所述向量寄存器的计数来选择所述多个向量寄存器中的向量寄存器;以及
基于所选择的向量寄存器的对应元素中的值来填充所述特定元素。
30.根据权利要求29所述的装置,其中用于访问的所述构件或用于执行的所述构件中的至少一者被集成到以下中的至少一者中:通信设备、计算机、显示设备、电视、游戏控制台、数字视频播放器、相机、导航设备、交通工具、头戴式耳机、增强现实头戴式耳机、混合现实头戴式耳机、虚拟现实头戴式耳机、飞行器、家庭自动化系统、语音激活设备、物联网(IoT)设备、虚拟现实(VR)设备、基站或移动设备。
CN202280061738.1A 2021-09-24 2022-08-24 排列指令 Pending CN117940896A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/448,816 US11900111B2 (en) 2021-09-24 2021-09-24 Permutation instruction
US17/448,816 2021-09-24
PCT/US2022/075406 WO2023049593A1 (en) 2021-09-24 2022-08-24 Permutation instruction

Publications (1)

Publication Number Publication Date
CN117940896A true CN117940896A (zh) 2024-04-26

Family

ID=83438622

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280061738.1A Pending CN117940896A (zh) 2021-09-24 2022-08-24 排列指令

Country Status (5)

Country Link
US (1) US11900111B2 (zh)
KR (1) KR20240065083A (zh)
CN (1) CN117940896A (zh)
TW (1) TW202318182A (zh)
WO (1) WO2023049593A1 (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US9529571B2 (en) 2011-10-05 2016-12-27 Telefonaktiebolaget Lm Ericsson (Publ) SIMD memory circuit and methodology to support upsampling, downsampling and transposition
US9639503B2 (en) 2013-03-15 2017-05-02 Qualcomm Incorporated Vector indirect element vertical addressing mode with horizontal permute
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
US10467006B2 (en) * 2015-12-20 2019-11-05 Intel Corporation Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor
US10863199B2 (en) * 2018-03-26 2020-12-08 Qualcomm Incorporated Minimization of transform memory and latency via parallel factorizations
US11392378B2 (en) * 2019-07-25 2022-07-19 Arm Limited Executing a set of load operations for a gather-load instruction and controlling handling of another instruction that depends on completion of the gather-load instruction

Also Published As

Publication number Publication date
TW202318182A (zh) 2023-05-01
US20230102564A1 (en) 2023-03-30
KR20240065083A (ko) 2024-05-14
US11900111B2 (en) 2024-02-13
WO2023049593A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
EP3026549B1 (en) Systems and methods of data extraction in a vector processor
CN107862378B (zh) 基于多核的卷积神经网络加速方法及系统、存储介质及终端
EP3033670B1 (en) Vector accumulation method and apparatus
CN111656367A (zh) 神经网络加速器的系统和体系结构
US8989242B2 (en) Encoding/decoding processor and wireless communication apparatus
CN110780921A (zh) 数据处理方法和装置、存储介质及电子装置
JP7387017B2 (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
CN111814957B (zh) 神经网络运算方法及相关设备
CN115039121A (zh) 混合卷积运算
CN117940896A (zh) 排列指令
EP3367575A1 (en) Removal of dummy bits prior to bit collection for 3gpp lte circular buffer rate matching
CN111158757A (zh) 并行存取装置和方法以及芯片
CN117980897A (zh) 适用于基-3蝶形计算的指令
JP6687803B2 (ja) 区分線形近似のためのシステムおよび方法
US6789097B2 (en) Real-time method for bit-reversal of large size arrays
JP2005117582A5 (zh)
US11669273B2 (en) Memory access management
US20230350640A1 (en) System and method of rotating vector input
CN110263797B (zh) 骨架的关键点估计方法、装置、设备及可读存储介质
CN117940918A (zh) 使用相量表的快速傅里叶变换
CN117321590A (zh) 多项式处理系统和方法
JP2003005952A (ja) 情報処理装置、レジスタ
CN116258185A (zh) 一种处理器、可变精度的卷积网络计算方法和计算设备
CN111209041A (zh) 神经网络处理器、片上系统及电子设备
CN115563443A (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