CN104756069A - 元素选择单元及其中的方法 - Google Patents

元素选择单元及其中的方法 Download PDF

Info

Publication number
CN104756069A
CN104756069A CN201380042682.6A CN201380042682A CN104756069A CN 104756069 A CN104756069 A CN 104756069A CN 201380042682 A CN201380042682 A CN 201380042682A CN 104756069 A CN104756069 A CN 104756069A
Authority
CN
China
Prior art keywords
vector
bitmap
selector switch
input
multiplexer
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
CN201380042682.6A
Other languages
English (en)
Other versions
CN104756069B (zh
Inventor
D.范坎彭
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.)
Telefonaktiebolaget LM Ericsson AB
Ericsson AB
Original Assignee
ST Ericsson SA
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 ST Ericsson SA filed Critical ST Ericsson SA
Publication of CN104756069A publication Critical patent/CN104756069A/zh
Application granted granted Critical
Publication of CN104756069B publication Critical patent/CN104756069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • G06F15/8076Details on data register access
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/0001Arrangements for dividing the transmission path

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种用于向量元素选择的元素选择单元(200)以及其中的方法。元素选择单元包括选择器控制电路(404)和选择器数据路径电路(406),该数据路径电路包括多层的复用器。元素选择单元进一步包括配置成接收执行从输入向量选择元素的指令的接收电路(401)。选择器控制电路(404)配置成基于位图和多个相对偏移值生成每个复用器的复用器控制信号。数据路径电路配置成基于所生成的复用器控制信号通过多层的复用器朝输出向量传播输入向量中包括的元素。数据路径电路进一步配置成将传播的元素写到输出向量的启用的元素。

Description

元素选择单元及其中的方法
技术领域
本文的实施例涉及用于向量元素选择的元素选择以及其中的方法。另外的实施例涉及包括元素选择单元的加载存储单元、包括元素选择单元的内存到内存传输系统、包括元素选择单元的向量处理器以及包括向量处理器的集成电路。
背景技术
对于一些数字信号处理算法,在计算可开始之前必须聚集或组织输入数据。例如,当从线性输入向量中选择数据元素的分散集合时,所选择的数据元素可在计算能开始之前聚集成后续数据元素的新线性输出向量。这种类型的数据聚集或组织例如在3GPP长期演进(LTE)通信系统中的数据副载波的均衡处理中需要。LTE是使用正交频分复用(OFDM)的无线通信标准。基于OFDM的通信系统通过施加(逆)傅里叶变换有效地解调(或调制)某个数量的射频副载波。对于LTE,根据该模式,每秒存在12000或14000个OFDM符号。对于20MHz带宽载波,每个OFDM符号的1200个副载波中的每个副载波都包括调制符号。调制符号例如可以是用于信道估计的用户数据符号或导频符号。将各种类型信息信道和信号映射在这些副载波上可能相当复杂并且分散。在进行数据信道的均衡处理之前,从输入OFDM符号中提取一些接收器系统中的数据符号,并将数据符号级联成新向量。示例接收器系统包括在其上映射均衡处理的向量处理器。
动态存储器分配(DMA)经常用于将数据元素拷贝到嵌入系统中。通常,DMA单元传输数据元素的较粗粒度块。表述“数据的较粗粒度块”是指具有大小在范围从数十字节到数百万字节的数据块。数据块越小,即,数据突发越短,控制和配置数据传输的开销将越大。DMA单元经常具有对于分散收集操作的支持,即,对于按顺序执行DMA配置的链接列表的支持。选择LTE中的资源元素,即,选择例如32位的复杂字,对于DMA单元将是太细粒度。
经典数字信号处理器(DSP)操作在标量样本粒度上。因此,它们在从存储器加载和向存储器存储上可能是非常有选择的。进一步说,在执行计算处理时可进行数据元素的选择。从而,不需要执行将数据元素拷贝到临时数据向量。然而,应该指出,经典DSP的可选择性,即标量样本粒度,可在信号处理软件中增加复杂控制结构。
进一步说,装置一次加载和存储一个选择的标量元素需要相当长时间来聚集所有选择的数据元素。
作为示例,假定LTE类别5接收器可用。LTE类别5接收器是在20MHz频带中支持300兆位/秒的下行链路数据速率并具有多输入多输出(MIMO)接收器配置(并且因此具有4个接收天线)的接收器。进一步说,假定数据元素提取被映射到具有一个数据存储器接口的标量DSP上。此类DSP然后为了此任务对于高达每秒134百万指令进行加载。对于加载和存储操作,处理器负载被计算为4接收天线*1200数据符号/OFDM符号/天线*14000 OFDM符号/秒*2流线型处理器周期/数据元素选择。
此外,为了选择4接收器天线流的数据元素,还必须执行从16信道估计流中选择数据元素。选择模式具有与接收的符号流的数据元素选择相同的选择网格,并将导致高达670 MIPS的处理器负载,这是相当大的开销,并且具有相当长的等待时间。对于加载和存储操作,处理器负载被计算为16信道估计流*1200估计/OFDM符号/信道估计流*14000 OFDM符号/秒*2流线型处理器周期/数据元素选择。
向量DSP执行数据元素向量上的运算。重要种类的运算是所谓的单指令多数据(SIMD)运算,该运算借助于相同并行处理单元的阵列执行多个输入向量上的相同算术运算。SIMD运算要求算法是可向量化的,意味着输入数据元素应该能够作为相邻数据元素的向量进行处理。通过可用硬件并行性,即并行处理单元,向量DSP能够执行SIMD运算,其相比由经典非向量DSP提供的计算吞吐量提供了更高计算吞吐量。
通常,向量DSP具有向量存储器。从而,向量DSP可在一个指令中访问后续数据元素的向量。进一步说,向量DSP经常具有在其中存储中间结果的向量寄存器文件,由此可减少到向量存储器的通信。而且,向量DSP要求向量存储器可提供的高存储器带宽,使得加载和/或存储吞吐量可跟上计算吞吐量。
向量DSP可具有对于向量内的数据元素重新组织的一些支持。例如,混洗单元可能是可用的,该混洗单元可用于按输出数据元素选择特定输入数据元素。混洗运算函数可基于具有绝对索引或相对距离的配置模式。
能够从向量存储器加载和/或存储P数据元素向量的向量处理器或类似装置比具有标量加载接口和/或标量存储接口的装置具有更高存储器带宽。对于以与存储器系统相同的吞吐量的数据元素选择,向量处理器必须能够执行输入数据元素的混洗,并将选择的数据元素聚集成一个或多个输出向量。具有混洗单元、向量寄存器文件和对于基于掩码的元素选择的支持的向量处理器可执行这个任务。然而,因为选择模式可以是动态的,例如,如在LTE元素提取情况下,因此这些混洗和掩码模式必须动态选择或计算。
在飞行中的混洗模式和掩码模式计算给出了信号处理上的计算开销。布尔数据类型和混洗模式数据类型上的运算必须由处理器支持。
并不是所有处理器都支持模式计算。在一些向量处理器中,在编译时必须定义混洗模式。将所有可能模式硬编码是不可能的。模式可被预先存储并且查找。要指出,可能模式的总数在一般情况下是向量中数据元素的数量的函数。可能模式的总数可被计算为P*2P,即,计算为旋转偏移位置的数量(等于P)乘以可能掩码向量的数量(等于2P),其中P是向量中数据元素的数量。模式数量,因此还有所需的存储内存,随着不断增长的向量大小而激增。模式表因此必须是使用情况相关的,以使它更加成本有效。这使模式表和查找过程更复杂。
从表中计算或加载混洗和掩码模式给出了运行时间开销,其在某种程度上可在多个流之间共享。此开销例如与均衡任务的计算运算不能是软件流线型的。
WO2006/033056描述了用于混洗运算的微处理器装置和方法。微处理器装置包括向量处理器架构,向量处理器架构具有功能向量处理器单元,功能向量处理器单元包括用于存储多个索引向量的第一内存部件和处理部件。功能向量处理器单元布置成接收要处理的处理指令和至少一个输入向量。第一内存部件布置成按照处理指令给处理部件提供所述多个索引向量之一,并且处理部件布置成响应于所述指令生成至少一个输出向量,至少一个输出向量按照所提供的一个索引向量将至少一个输入向量的元素重新布置。功能向量处理器单元进一步包括预先处理部件,该预先处理部件布置成接收参数,并根据所述参数处理一个索引向量的元素,之后按照所处理的索引向量生成所述至少一个输出向量。
给向量处理器增加混洗电路以便支持数据元素选择,在所需的区域和功率方面是代价高的。进一步说,混洗电路是昂贵电路,因为在混洗电路中包括的两输入复用器的数量随着数据元素的数量P平方地缩放为(P-1)*P。然而要指出,完整混洗电路的区域受布线支配,而在当前的互补金属氧化物半导体(CMOS)技术中受标准单元支配不是那么多。
发明内容
本文实施例的目的是提供一种改进数据处理系统中的性能的办法。
根据本文实施例的第一方面,所述目的通过在元素选择单元中用于向量元素选择的方法实现。元素选择单元包括选择器控制电路和选择器数据路径电路,该选择器数据路径电路包括多层,每层包括多个复用器。
元素选择单元接收执行从包括至少一个输入向量的源向量选择数据元素的指令。指令包括与至少一个输入向量相关的信息、与至少一个输出向量相关的信息以及与位图相关的信息。
选择器控制电路基于位图和多个相对偏移值生成多个复用器中每个复用器的复用器控制信号。基于输入偏移值并基于位图对于输入向量的每个数据元素计算多个相对偏移值中的每个相对偏移值。
选择器数据路径电路基于所生成的复用器控制信号通过多层的复用器朝输出向量传播输入向量中包括的数据元素。进一步说,选择器数据路径电路将传播的数据元素写到输出向量的启用的数据元素。
根据本文实施例的第二方面,所述目的通过用于向量元素选择的元素选择单元实现。元素选择单元包括选择器控制电路和选择器数据路径电路。选择器数据路径电路包括多层,每层包括多个复用器。
元素选择单元进一步包括接收电路,接收电路配置成接收执行从包括至少一个输入向量的源向量选择数据元素的指令。指令包括与至少一个输入向量相关的信息、与至少一个输出向量相关的信息以及与位图相关的信息。
选择器控制电路配置成基于位图和多个相对偏移值生成多个复用器中每个复用器的复用器控制信号。基于输入偏移值并基于位图对于输入向量的每个数据元素计算多个相对偏移值中的每个相对偏移值。
选择器数据路径电路配置成基于所生成的复用器控制信号通过多层的复用器朝输出向量传播输入向量中包括的数据元素。进一步说,选择器数据路径电路配置成将传播的数据元素写到输出向量的启用的数据元素。
由于基于位图和多个相对偏移值对于多个复用器中的每个复用器生成复用器控制信号,并且由于在输入向量中包括的P个数据元素基于所生成的复用器控制信号通过多层的复用器朝输出向量并行传播,因此以高吞吐量实现了向量元素选择。这导致数据处理系统的改进性能。
本文实施例的优点是,相比基于混洗的系统,实现元素选择单元所需的区域和由元素选择所消耗的功率降低。
本文实施例的另外优点是,它们支持流播模式,因为对于元素选择操作,输入向量仅被加载一次,并且仅被使用一次。
本文实施例的另外优点是,它们具有低配置开销,因为元素选择单元仅需要准备布尔位图向量,其通过逐位运算来有效地执行。
本文实施例的另外优点是,它们具有用于存储布尔位图向量的低成本。该成本是每输入字一位,这小于基于混洗的系统中的成本。
根据本文实施例的第三方面,所述目的通过包括元素选择单元的加载存储单元实现。
根据本文实施例的第四方面,所述目的通过包括加载存储单元的内存到内存传输系统实现。
根据本文实施例的第五方面,所述目的通过包括元素选择单元的向量处理器实现。
根据本文实施例的第六方面,所述目的通过包括向量处理器的集成电路实现。
根据本文实施例的第七方面,所述目的通过包括集成电路的通信装置实现。
附图说明
参考附图更详细地描述本文实施例的示例,附图中:
图1a、1b示意性图示了分别具有不交叠路径和交叠路径的现有技术基本向量旋转器电路;
图2a-2d示意性图示了元素选择单元、加载和/或存储单元、内存到内存传输系统、向量处理器、集成电路和通信装置的实施例;
图3是描绘元素选择单元中方法的实施例的流程图;
图4是图示元素选择单元的实施例的示意性框图;
图5是图示选择器控制电路的实施例的示意性框图;
图6是图示选择器数据路径电路的实施例的示意性框图;以及
图7a、7b是用计算机编程语言C写的选择器控制电路的控制块的功能性的例示描述。
具体实施方式
实施例将在如下非限制描述中进行例示。
本文的实施例涉及高吞吐量低成本元素选择单元。元素选择单元能够从输入向量选择数据元素,级联选择的数据元素,给选择的数据元素集合共同的旋转,并将选择的数据元素集合与输出向量合并。
从输入向量选择数据元素基于选择位图,即,布尔值的向量。
每个数据元素对应于字,即W位的固定大小,其作为一个单元处置。字大小例如可等于8、16或32位。
元素选择单元包括具有W位宽的P-1个两输入复用器的(2log(P)+1)层,其中复用器被单独控制,参见图6,其将在下面更详细描述。P是输入向量中的数据元素的数量,并且可等于4、8、16或32个数据元素。W是复用器的宽度,并且可等于8、16或32位。复用器控制取决于选择器位图和旋转偏移。要指出,在图6中图示的电路是概念图,其中真实的产品化电路例如可通过使用三输入复用器、四输入复用器等进行优化。进一步说,选择控制单元和选择器数据路径电路(它们将在下面描述)可合并到单个单元中。
本文的实施例基于在现有技术的基本向量旋转器电路100中从输入元素到输出元素的路径观察。现有技术的基本向量旋转器电路100在图1a和1b中示意性图示,并且包括第一层的复用器 m00,...,m03 和第二层的复用器 m10, ...,m13
在图1a中,输入偏移值等于一(1),位图向量是(1,1,0,1),并且输入向量是(A,B,C,D)。对于正常旋转,例如由等于一(1)的输入偏移值定义的,包括P个数据元素的输入向量的所有输入数据元素将得到相同的相对旋转。换句话说,所有数据元素都将在输入数据元素的索引与输出数据元素的索引之间得到相同的偏移。从而,通过向量旋转器电路100的所有P个路径都将并行地良好运行,并且不通过相同复用器m00,...,m13
如果向量旋转器电路100不选择输入数据元素,如等于零(0)的位图值所定义的,则如下输入数据元素应该接收是小于要被丢弃的元素将具有的旋转偏移的一个位置的旋转偏移。如图1a中所图示的,输入向量的第三数据元素(即具有索引2和值"C"的数据元素)不应该选择,因为对应位图值等于零(0)。由于具有索引2和值"C"的数据元素如果被选择则应该具有等于一(1)的旋转偏移,因此下面的数据元素(即具有索引3和值"D"的数据元素)应该具有是小于一(1)的一个位置的旋转偏移,即,具有索引3和值"D"的数据元素应该具有等于零(0)的旋转偏移,参见图1a。从而,所有选择的数据元素朝输出的路径将总是待在它前面的所选择的数据元素的路径的右手边,并且作为结果的输出向量将是(X,A,B,D),其中X可以是之前存储的数据值或空数据元素。
因为需要将共同旋转偏移提供给级联的所选择数据元素集合之后再将它们存储到输出向量中,因此所选择的数据元素的路径可环绕在现有技术的基本向量旋转器电路100中。要指出,共同旋转偏移可在0,...,P-1的范围内,其中P是输入向量中数据元素的数量。
在现有技术的向量旋转器电路100上尝试将共同旋转偏移提供给级联的所选择数据元素集合之后再将它们存储到输出向量中将导致一些选择模式的冲突路径,如在图1b中所图示的。
图1b的现有技术的基本向量旋转器电路100包括第一层的复用器m00,...,m03和第二层的复用器m10,...,m13。在图1b中,输入偏移值等于二(2),位图向量是(1,1,0,1),并且输入向量是(A,B,C,D)。如图1b中所图示的,冲突路径将分别对于具有索引0和3的数据元素,即,分别具有值"A"和"D"的数据元素。复用器m00不能选择具有值"A"和"D"的数据元素,并且因此不能将它们传播到输出向量中的相应期望位置。
因此,本文的实施例涉及元素选择单元200,参见图2a-2d,其中对于所有的可能选择模式和可能旋转偏移,不存在冲突路径。
进一步说,在图2a-2d中,还示意性图示了涉及包括元素选择单元200的加载存储单元202、包括元素选择单元200的内存到内存传输系统204、包括元素选择单元200的向量处理器206、包括向量处理器206的集成电路208和包括集成电路208的通信装置210的实施例。
现在将参考图3描述用于向量元素选择的元素选择电路200的一些实施例中的动作。这些动作不必按下面阐述的次序执行,而是可按任何适当次序进行。进一步说,动作可被组合。
动作 301
元素选择单元200接收执行从包括至少一个输入向量vA的源向量选择数据元素的指令,其中P元素由索引i=[0,...,P-1]给出。元素选择单元200可进一步配置成对指令解码。指令包括与至少一个输入向量vA相关的信息、与至少一个输出向量vD相关的信息以及与位图bit_map相关的信息。
动作 302
为了控制在元素选择单元200中包括的多个复用器的操作,元素选择单元200生成多个复用器中每个复用器的复用器控制信号mxx_sel_left。复用器控制信号mxx_sel_left可基于位图bit_map和多个相对偏移值生成。基于输入偏移值并基于位图bit_map对于输入向量vA的每个数据元素计算多个相对偏移值中的每个相对偏移值。输入偏移值在本文有时被称为输入偏移。
在一些实施例中,每个相对偏移值rel_offset(i)被计算为:
其中i是输入向量vA中的数据元素的数量,其中bit_map (j)是位图(bit_map)的元素j的位图值,并且其中input_offset是输入偏移值。
动作 303
元素选择单元200还可基于位图bit_map生成输出向量vD的数据元素的启用信号。每个写启用信号启用到输出向量vD的数据元素之一的写,这将在下面在动作305中更详细描述。从而,当输入向量vA的选择的数据元素已经通过多层的复用器朝输出向量vD传播(这将在下面在动作304中描述)时,仅输入向量vA的选择的数据元素将更新输出向量vD的它们相应数据元素。从而,输出向量vD的剩余数据元素将不被重写,并且因此可包括一个或多个之前存储的数据元素。
动作 304
元素选择单元200基于所生成的复用器控制信号mxx_sel_left通过多层的复用器朝输出向量vD传播输入向量vA中包括的数据元素。
为了能够传播在输入向量vA中包括的数据元素,元素选择单元200可基于与在动作301中接收的指令中包括的至少一个输入向量vA相关的信息例如从向量内存中读取输入向量vA。
在一些实施例中,传播数据元素进一步包括元素选择单元200基于所生成的复用器控制信号mxx_sel_left通过多层的复用器配置数据路径。然后当通过复用器层传播数据元素时,可使用所配置的数据路径。
动作 305
元素选择单元200将传播的数据元素写到输出向量vD的启用的数据元素。
为了执行上面描述的用于向量选择的元素选择单元200中的方法动作,元素选择单元200包括在图4中描绘的如下布置。
元素选择单元200包括配置成接收信息和指令的接收电路401。例如,接收电路401可配置成接收执行从源向量选择数据元素的指令或与此类选择指令相关的信息。进一步说,接收电路401可配置成从处理器的指令提取单元(IFU)(未示出)接收信息和指令。而且,接收电路401可配置成对信息和指令解码。从而,接收电路401可被称为指令解码器电路。
源向量包括至少一个输入向量vA
选择指令包括与至少一个输入向量vA相关的信息、与至少一个输出向量vD相关的信息以及与位图bit_map相关的信息。
元素选择单元200可进一步包括选择器控制单元402。
在一些实施例中,选择器控制单元402将选择掩码作为布尔输入向量接收。选择掩码在本文也被称为位图向量或仅被称为位图bit_map。位图bit_map包括由i=[0...P-1]索引的位图元素。在一些实施例中,选择器控制单元402从包括在元素选择单元200中或连接到元素选择单元200的位图寄存器409接收位图bit_map
选择器控制单元402可进一步接收输入旋转偏移值,命名为input_offset,包括[0,...,P-1]范围内的值。选择器控制单元402可从输入偏移寄存器403接收输入旋转偏移值。
在一些实施例中,选择器控制单元402按具有索引i的输入向量的数据元素计算输出向量vD中目的地索引与输入向量vA中源索引之间的相对偏移rel_offset (i)
其中i是输入向量vA中的数据元素的数量,其中bit_map (j)是位图(bit_map)的元素j的位图值,并且其中input_offset是输入偏移值。
基于按数据元素计算的相对偏移和选择掩码,即位图bit_map,选择器控制单元402可计算复用器设置。从而,从输入向量vA的输入元素到输出向量vD中的期望位置的路径被设置。
在一些实施例中,复用器设置可借助于在动作302中描述的并由选择器控制电路404生成的复用器控制信号mxx_sel_left定义,这将在下面更详细描述。选择器控制电路404可包括在选择器控制单元402中,或者它可连接到选择器控制单元402。
进一步说,选择器控制单元402可使用输出位图bit_map out计算输出向量vD的所有P个数据元素的写启用信号。从而,仅输入向量vA的选择的数据元素将更新输出向量vD的数据元素,并且因此必须被附加的先前选择的数据元素不会被重写。
输出位图bit_map_out可由选择器控制电路404计算,其将在下面更详细描述。这将在下面描述,输出位图bit_map_out将包括来自输入位图bit_map_in的布尔表达式,其已经接收到相同选择、旋转和级联作为它们的对应选择的数据元素。
在一些实施例中,选择器控制单元402对于下一迭代,即对于从下一输入向量的数据元素的下一选择,计算输出偏移值output_offset。下一迭代的输出偏移output_offset值可基于当前迭代的输入偏移值input_offset计算,加上附加在当前迭代中的字数。输出偏移值output_offset可计算为:
其中P是输入向量vA中的数据元素的数量,其中bit_map是选择掩码;其中input_offset是当前迭代的输入偏移,并且其中%是模数运算。
应该理解,对于下一迭代,计算的输出偏移值将被用作输入偏移值。
选择器控制电路404进一步包括在元素选择单元200中。如之前所提到的,在一些实施例中,选择器控制电路404包括在选择器控制单元402中。然而,选择器控制单元402和选择器控制电路404可被组合到一个单个单元中。
选择器控制电路404配置成计算复用器设置,即,生成包括在元素选择单元200中的多个复用器m00,m01,...,m23中每个复用器的复用器控制信号mxx_sel_left。复用器控制信号mxx_sel_left可基于位图bit_map和多个相对偏移值生成。基于输入偏移值并基于位图bit_map对于输入向量vA的每个数据元素计算多个相对偏移值中的每个相对偏移值。
如之前提到的,相对偏移值可由选择器控制单元402计算。进一步说,选择器控制电路404可从选择器控制单元402接收相对偏移值。
选择器控制电路404还可基于位图bit_map和输入偏移值生成输出向量vD的数据元素的写启用信号。
在一些实施例中,写启用信号基于输出位图向量(其在图5中表示为bit_map out)生成。图5将在下面描述。输出位图向量基于输入位图向量(其在图5中表示为bit_mapin)计算。输出位图bit_map out将接收相同旋转和级联作为对应选择的数据元素。
每个生成的写启用信号启用到输出向量vD的数据元素之一的写。
在一些实施例中,选择器控制电路404具有与选择器数据路径电路406基本上相同的结构,下面将参考图6描述一些实施例。如图5中示意性图示的,选择器控制电路404的一些实施例可包括若干功能块c00,...,c04,c10,...,c16,c'20,...,c'23。进一步说,如图6中示意性图示的,选择器数据路径电路406的一些实施例可包括若干复用器m00,m01,...,m23。应该理解,图5的功能块c00,...,c04,c10,...,c16,c'20,...,c'23不表示如图6中的两输入复用器,而是这些块图示执行功能cxx和功能c'xx的功能块,这将在下面更详细描述。到图5中相应cxx或c'xx功能块的输入线对应于复合数据类型。如在图5中所进一步图示的,选择器控制电路404的输出包括每个cxx/c'xx功能层P-1个控制信号,即,图6的选择器数据路径电路406的每个复用器层P-1个控制信号。换句话说,选择器控制电路404对于包括在选择器数据路径电路406中的每个复用器m00,m01,...,m23生成一个控制信号。
从而,每个cxx/c'xx块计算其对应复用器的选择控制信号。因此,功能块cxx/c'xx在本文有时被称为复用器控制块。
进一步说,每个cxx/c'xx块基于两个输入控制信号执行计算。输入控制信号可以是复合控制信号。复合控制信号是指具有在一个组合结构中包括多个基本信号类型的复杂数据类型的信号。
到cxx/c'xx块的左输入控制信号包括左输入数据元素的位图值以及左输入数据元素仍必须跨过选择器数据路径电路406的剩余相对偏移,并且到cxx/c'xx块的右输入控制信号包括右输入数据元素的位图值以及右输入数据元素仍必须跨过选择器数据路径电路406的剩余相对偏移。如果左输入数据元素的位图值是1,即选择左输入数据元素,并且如果左输入数据元素具有奇数相对偏移,即其最后一个偏移位是1,则左输入数据元素需要跨到复用器列,并且必须被传播。因此,左输入数据元素应该被功能块选择。如果这两个条件不满足,则右输入数据元素被功能块选择。这将在下面参考例示的元素选择单元200以及图5和图6更详细例示。
在右输入数据元素被功能块选择的情况下,参见图7a的else-clause,则基于右输入数据元素的相对偏移值及其位图值计算输出位图bit_map out。例如,仅当这个右输入的相对偏移为偶数并且输入位图值在这一点仍为1时,数据元素才应该被标记为选择用于进一步传播,即,输出位图应该被设置成1。这将在下面参考例示的元素选择单元200以及图5和图6更详细例示。
图7a和7b分别给出了例示相应功能块cxx和c'xx的功能性的C风格的例示描述。注意,最后一层功能块即c'xx块的行为与其它层功能块即cxx块的行为略微不同,因为在c'xx块中只存在选择,在最后一层中没有进一步跨过。
元素选择单元200可进一步包括选择器数据路径电路406。选择器数据路径电路406包括多层,每层包括多个复用器m00,m01,...,m23。
在一些实施例中,选择器数据路径电路406的数据路径配置为2log(P)+1两输入复用器层,参见图6,其中索引l=[0,...,2log(P)]。层具有宽度W位的P-1个两输入复用器,用于选择输入向量的一个或多个数据元素,并将一个或多个选择的数据元素传播到输出向量。在图6中,选择器数据路径电路406的第一复用器层包括复用器m01、m02和m03,第二复用器层包括复用器m12、m13和m14,并且第三复用器层包括复用器m21、m22和m23。
进一步说,在概念上,选择器数据路径电路406对于前2log(P)个复用器层每个复用器层具有2l+1个节点,其中2l+1个节点使信号在两个方向分叉。在图6中,选择器数据路径电路406的第一复用器层包括使信号分叉的两(2)个节点。这两个节点分别表示为m00m04。这两个节点m00m04对应于图5的块c00 c04。进一步说,第二复用器层包括使信号分叉的四(4)个节点,这些节点分别表示为m10 m11 m15m16。这四个节点对应于图5中的块c10 c11 c15 c16。进一步说,第三复用器层即最后一个复用器层仅包括一(1)个使信号分叉的节点,该节点表示为m23。此节点m23对应于图5的块c'23
选择器数据路径电路406接收或读取输入向量vA,其中P个元素由i=[0..P-1]索引,并输出具有由i=[0..P-1]索引的P个元素的输出向量vD。为了使选择器路径电路406有效,输入向量和输出向量应该具有相同大小。然而,如果输出向量小于输入向量,则可能需要多遍将相同输入传播到输出。进一步说,如果输出向量在宽度上较大,比如说2P,则选择器路径电路406将不那么有效。
选择器数据路径电路406配置成基于所生成的复用器控制信号mxx_sel_left通过多层的复用器m00,m01...,m23朝输出向量vD传播输入向量vA中包括的数据元素。如之前所提到的,选择器控制电路404生成复用器控制信号mxx_sel_left,并且从而,选择器数据路径电路406可从选择器控制电路404接收所生成的复用器控制信号mxx_sel_left,如在图5和6中示意性图示的。
进一步说,选择器数据路径电路406配置成将传播的数据元素写到输出向量vD的启用的数据元素。
在一些实施例中,选择器数据路径电路406进一步配置成基于生成的复用器控制信号mxx_sel_left通过多层的复用器m00,m01...,m23配置数据路径。
元素选择单元200可进一步包括位图加载单元408。然而,在一些实施例中,位图加载单元408连接到元素选择单元200。位图加载单元408可配置成将位图bit_map加载到位图寄存器409中。
在一些实施例中,元素选择单元200包括向量加载单元410。然而,在其它实施例中,向量加载单元410可连接到元素选择单元200。向量加载单元410可配置成将输入向量vA加载到输入向量寄存器411中。
元素选择单元200可进一步包括向量存储单元412。然而,在一些实施例中,向量存储单元412连接到元素选择单元200。向量存储单元412可配置成存储包括在输出向量寄存器413中的向量。
应该理解到,元素选择单元200的组件可被合并到一个或多个组合单元中。例如,选择器控制单元402和选择器数据路径电路406可被组合到单个单元中。进一步说,在一些实施例中,选择器控制单元402包括选择器数据路径电路406。
例示元素选择单元 200
现在将参考图4、5、6和7描述例示元素选择单元200的控制和数据流。在该示例中,输入向量vA包括由i={0,...,3}索引并且分别包括数据值"A"、"B"、"C"和"D"的四个输入数据元素。
位图bit_map(在图5和图6中也被称为bit_mapin)被作为输入提供给选择器控制单元402。位图包括布尔值{1,1,0,1}。进一步说,提供了具有值2的输入偏移值input_offset。基于第一选择的数据元素的输入位图和输入偏移值,计算所有输入数据元素的相对偏移值rel_offsetvalues。相对偏移值被计算为:
相对偏移向量{2,2,2,1}是选择器控制电路404的输入。如之前所描述的,选择器控制电路404基于相对偏移向量和位图计算复用器控制信号mxx_sel_left,参见图5。
然后,复用器控制块cxx/c'xx相继更新复用器选择设置,从而通过选择器数据路径电路406配置恰当路径。
一般而言,2l列的跨度可在复用器层l中执行。因此,具有奇数相对偏移(即LSB=1)的所有数据元素都必须在第一层中跨过一(1)列。
如果对于数据元素,相对偏移是三(3),则在层0中跨过一(1),并且继之以在层1中跨过二(2),其将给出三(3)的组合跨度,即相对偏移。
从而,基本上采取相对偏移的二进制表示,并且对于每层,对应位确定是否跨过。
例如,假定在图5中输入向量是{A,B,C,D}。然后,复用器控制块c01作为左输入信号接收具有位图值1和相对偏移2的数据元素0的控制信号。数据元素0具有值"A"。进一步说,复用器控制块c01作为右输入信号接收具有位图值1和相对偏移2的数据元素1的控制信号。数据元素1具有值"B"。
在块c01属于的第一控制块层中,数据元素可跨过一(1)列,因此具有奇数相对偏移的所有数据元素在第一层中都将向右边移动一个位置。复用器控制块c01的左输入具有偶数相对偏移(2),即,最低有效位(LSB)等于0,并且因此左输入信号中的数据元素不认为在这个第一层中跨过一,并且m01的输出复用器控制信号mxx_sel_left相应地设置成0以选择右输入。这层中的所有cxx块的mxx_sel_left信号是mxx_sel_left_v={X,0,0,0,X},其中X指示选择器数据路径电路406中的分叉节点,并且其中0向选择器数据路径电路406的相应复用器指示对应的左输入数据元素不应该被选择在这层跨过,如图5中所图示的。复用器控制信号被传送到选择器数据路径电路406中的对应复用器层。
输出位图bit_map out基于相对偏移以及选择的数据元素的输入位图。对于c01,选择的右输入信号的相对偏移是偶数,因此如所预计的,在这层将不跨步,但应该由对应复用器m01传播,并且右输入信号的数据元素的输入位图值为1。当两个条件都满足时,c01的输出位图应该是1。
然后,通过将这个整数偏移值除以2并且丢弃最低有效位,根据选择的右输入的数据元素的输入相对偏移(即2),计算要在下一控制块层中使用的相对偏移输出信号。因此,对于第二复用器控制块层中的对应块即c11c13,相对偏移输入值是1。在第二复用器控制块层中,具有值"B"的对应数据元素2可跨过两列的所需跨度,其中控制块c13将更新并且传播其控制复合信号,并且复用器m13将传播值"B"。在第二控制块层中,将生成控制信号mxx_sel_left_v={X,X,1,1,0,X},并在选择器数据路径电路406中将它传送到对应复用器层。如之前所提到的,X指示选择器数据路径电路406中的分叉节点,0指示不应该选择对应左输入数据元素在这层跨步的选择器数据路径电路406的相应复用器,并且1指示不应该选择对应数据元素在这层跨步的选择器数据路径电路406的相应复用器。
在最后一个复用器控制块层c'20-c'23,控制块c'22作为左输入信号得到位图值设置成0(因此数据元素不应该跨步)的控制信号,并且作为右输入信号得到位图值设置成1的控制信号,其对应于具有值"A"的输入数据元素0。右输入信号必须由选择器数据路径电路406中的复用器m22传播。在最后一个控制块层中,将生成控制信号mxx_sel_left_v={1,0,0,X},并在选择器数据路径电路406中将它传送到对应复用器层。
在图5中,在c00、c04、c10、c11、c15、c16和c'23控制块以上的零意味着,相应输入的所有字段,并且特别是选择位图值,被设置成零。从而,相应输入实际上不会被选择。因此,这些控制块可用于分叉节点。
在选择器数据路径电路406中接收输入向量vA ={A,B,C,D}。可从输入寄存器411接收输入向量vA。进一步说,输入向量vA由选择器数据路径电路406根据所生成的复用器控制信号定义的复用器设置通过复用器层传播。例如,具有值"B"的数据元素2将从复用器m01经由m13传送到m23。
表1按组合的控制块和复用器/分叉节点概括了传播/计算的输出值。
表1。标记法:{offset,bitmap,mxx_sel_leff}|数据元素
现在将给出本文实施例的一些一般优点。
第一,本文一些实施例的元素选择单元200具有高吞吐量,即,每秒可处理的高数量的输入样本。高吞吐量归因于元素选择单元200从包括P个数据元素的输入向量vA中选择数据元素的能力。这与必须一个接一个加载字(即数据元素)以便执行数据元素选择的标量系统形成对比,
第二,本文一些实施例的元素选择单元200支持流播模式,因为输入向量vA仅被加载一次,并且对于选择操作仅使用一次。
第三,本文一些实施例的元素选择单元200例如比基于全混洗电路的选择系统具有更低的区域和功率消耗。
第四,本文一些实施例的元素选择单元200具有低配置开销,因为元素选择单元200仅需要准备布尔位图向量,这可通过逐位运算有效地执行。布尔位图向量可以是短布尔位图向量或长布尔位图向量。短布尔位图向量是指正好是P个布尔的向量。因而,长布尔位图向量是指n*P个布尔的向量,等于被处理的长输入数据阵列的长度。
第五,本文一些实施例的元素选择单元200具有用于存储选择位图的低成本。该成本是每个输入字一位。这少于基于混洗的系统,基于混洗的系统将存储混洗模式的可能集合,例如每个选择的字8位整数。进一步说,在本文一些实施例的元素选择单元200中,不需要存储可能变大的混洗模式的使用情况的特定表。
现在将参考第一类型、第二类型、第三类型和第四类型更详细描述一些实施例。
第一类型实施例:专用单元
在第一类型的一些实施例中,元素选择单元200是专用单元。有时,元素选择单元200例如被嵌入在包括加载和/或存储架构的向量处理器中。
在此类实施例中,元素选择是独立操作。元素选择单元200接收从输入向量vA进行数据元素选择的指令。选择模式由位图(例如短位图,诸如P个布尔的向量)配置成给选择的和级联的向量元素某个共同旋转偏移。可选地,元素选择单元200基于来自输入向量vA的选择的字数和输入偏移值输出更新的偏移值。
选择指令可具有如下标记:vselect_elementsoutput_vector_register input_vector_register bit_map_register rotation_offset_register
根据第一类型实施例执行的动作可包括如下一项或多项:
-元素选择单元200接收选择指令,例如上面提到的vselect_elements指令。元素选择单元200可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
-参见图4,选择器控制单元402从由bit_map_register指示的位图寄存器409中读取位图。这涉及上面的动作302。
-选择器控制单元402从由rotation_offset_register指示的输入偏移寄存器403中读取输入旋转偏移值。这涉及上面的动作302。
-选择器数据路径电路406从由input_vector_register指示的输入向量寄存器411中读取输入向量vA。这涉及上面的动作304。
-选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406按照所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-可选地,选择器控制单元402更新输出偏移值,并将这个值写到由rotation_offset_register指示的旋转偏移寄存器403。
除了上面提到的一般优点,第一类型的一些实施例还具有以下优点:系统可容易地集成在具有加载/存储架构的向量处理器206中即集成在具有向量寄存器文件的向量处理器中。
进一步说,由于在选择操作中不包含加载操作和/或存储操作,因此程序员可对寄存器文件中的向量操作。此类系统对于更复杂操作(例如对于顺序选择操作)或对于输入向量的再用特别感兴趣。另一示例是多流选择,这意味着从具有不同位图的相同输入数据选择。使用情况将要将输入流的偶数和奇数样本分成两个输出流,第一个具有偶数个元素,而第二个具有奇数个元素。输入数据仅必须从内存中加载一次。
第二类型实施例:具有短位图的加载和 / 或存储单元 202 中的加载 / 存储操作部分。
在第二类型的一些实施例中,元素选择单元200包括在具有短位图的加载和/或存储单元202中,例如参见图2a。短位图是指包括正好P个布尔的位图。
在一些实施例中,元素选择单元200被嵌入在加载和/或存储单元202中,该加载和/或存储单元202可以是向量处理器206的一部分。
加载和/或存储单元202接收加载和/或存储单个向量并执行数据元素选择的指令,级联它们并给作为结果的选择元素某个共同偏移。选择位图可按加载操作和/或存储操作显式提供。加载和选择数据元素的操作,例如vload_and_select_elements 操作,使用向量加载单元410,参见图4。向量加载单元410可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量加载单元410可包括元素选择单元200。然而,在一些实施例中,向量加载单元410连接到元素选择单元200。向量加载单元410配置成基于地址从向量内存加载完整输入向量vA。从输入向量vA,数据元素由元素选择单元200选择,并且在输出向量中被给予某个偏移,该偏移由偏移寄存器确定。在一些实施例中,级联来自每个部分填充的选择器输出向量的选择的数据元素必须由程序员显式进行。这与提取正好P个数据元素的一些实施例不同。在此类实施例中,P个数据元素的聚集和级联对程序员是透明的。
存储和选择数据元素的操作,例如vstore_and_select_elements 操作,使用向量存储单元412。向量存储单元412可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量存储单元412可包括元素选择单元200。然而,在一些实施例中,向量存储单元412连接到元素选择单元200。从向量寄存器文件接收完整输入向量vA。从输入向量vA,元素选择单元200选择数据元素。向量存储单元412将部分填充的输出向量vD作为不对齐向量存储进行处理。表述“向量存储单元412的不对齐向量存储”是指向量内存中的向量存储操作,对于其,写地址不需要按向量长度的倍数定位。然后,对于一个不对齐向量存储操作(部分)更新高达两个向量内存线。可应用写缓冲方案合并多个不对齐存储的数据,以能够在向量内存上进行对齐向量存储操作。向量存储单元412可包括缓冲器和写支持以执行对齐向量存储操作。可选地,向量存储单元412基于输入向量vA中的选择的字数和存储地址来更新地址指针,例如不对齐地址指针。地址指针可被用作用于如下元素选择和存储指令的写地址。
加载和选择指令可具有如下标记:vload_and_select_elementsoutput_vector_register load_address_register bit_map_register rotation_offset_register
根据第二类型实施例执行的包括加载和选择的动作可包括如下一项或多项:
-加载和/或存储单元202接收加载和选择数据元素的指令,例如上面提到的vload_and_select_elements指令。加载和/或存储单元202可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
- 选择器控制单元402从由bit_map_register指示的位图寄存器409中读取位图。这涉及上面的动作302。
-选择器控制单元402从由rotation_offset_register指示的偏移寄存器403中读取输入旋转偏移值。这涉及上面的动作302。
-向量加载单元410从由load_address_register指示的地址从内存(未示出)加载输入向量vA,并将加载的输入向量vA存储在输入向量寄存器411中。向量加载单元410可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量加载单元410可包括元素选择单元200。然而,在一些实施例中,向量加载单元410连接到元素选择单元200。输入向量寄存器411可以是内部寄存器。这涉及上面的动作304。
- 选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-可选地,选择器控制单元402更新旋转偏移值,并将它写到由rotation_offset_register指示的偏移寄存器403。
存储和选择指令可具有如下标记:vstore_and_select_elementssource_vector_register store_address_register bit_map_register
根据第二类型实施例执行的包括存储和选择的动作可包括如下一项或多项:
-加载和/或存储单元202接收存储和选择数据元素的指令,例如上面提到的vstore_and_select_elements指令。可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
- 选择器控制单元402从由bit_map_register指示的位图寄存器409中读取位图值。这涉及上面的动作302。
-选择器控制单元402从由store_address_register指示的寄存器中读取存储指针值。这涉及上面的动作302。
-选择器数据路径电路406读取由source_vector_register指示的输入向量vA。这涉及上面的动作304。
-选择器控制电路404根据位图和存储地址指针生成复用器控制信号,该存储地址指针对应于相对偏移。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-向量存储单元412进行输出向量寄存器413内容的不对齐存储。
-可选地,选择器控制单元402更新存储地址,并将值写入store_address_register中。
除了上面提到的一般优点,第二类型的一些实施例还具有如下优点:加载/存储单元202(在本文中也称为加载存储单元202或加载和/或存储单元202)中的元素选择单元200的组合启用了更复杂指令中基本操作的排序,因此存在例如来自指令解码的较少开销。
进一步说,它启用将选择器数据路径电路406再用于传统不对齐加载/存储操作,其中位图具有P个一(1)。
而且,不停地计算位图,并通过寄存器(例如从位图寄存器409)提供。它不必通过需要加载操作的内存提供,并且因此它降低了开销。这对于在短时间间隔内是周期性的位图模式可能是相关的。
更进一步说,作为具有显式短位图的存储操作的一部分的选择对于助手选择功能可能是有用的,特别是在它从向量数据进行多流选择(多个可能计算的位图)之后再将它存储到存储器的情况下。表述“助手选择功能”是指诸如软件功能的功能,其主要任务是从输入流中获取样本,并将选择的集合存储回内存。当在消费者信号处理功能中进行输入选择将是复杂或者无效时,此类助手功能被实例化。
第三类型的实施例:具有长位图的加载存储单元中的加载和 / 或存储操作的一部分
在第三类型的一些实施例中,元素选择单元200包括在具有长位图的加载和/或存储单元202中,例如参见图2a。在一些实施例中,元素选择单元200被嵌入在加载和/或存储单元202中,该加载和/或存储单元202是向量处理器206的一部分。长位图是指n*P个布尔的向量,等于被处理的长输入数据阵列的长度。
加载和/或存储单元202接收加载P个选择的向量元素的完整输入向量vA或存储选择的向量元素的完整输入向量vA的指令。选择位图bit_map由位图加载单元408隐式获得。位图加载单元408配置成像长位图向量的高速缓存或缓冲系统那样运作。进一步说,位图加载单元408包括在或连接到元素选择单元200。在背景技术中可隐式地获得选择位图bit_map。当在缓冲器/高速缓存中未发现这个集合时,从内存中加载P个布尔的向量,对应于以某个迭代处理的P个输入数据元素。缓冲器可大于P个布尔,比如说c*P,其中c可以是2、4、8等。
例如根据vload_and_select_elements_using_long_bitmap指令加载P个选择的数据元素的操作使用向量加载单元410。向量加载单元410包括在或连接到元素选择单元200。向量加载单元410基于指向长输入阵列的指针从向量内存(未示出)中一个接一个加载输入向量vA。位图加载单元408基于指向长选择位图阵列的指针加载并且可选地缓冲部分长选择位图阵列。选择器数据路径电路406从每个加载的输入向量vA中选择由长位图的对应部分指示的数据元素,并通过给选择的和级联的数据元素一个旋转偏移来将选择的数据元素附加到输出向量vD。加载输入向量vA、从这些输入向量vA中选择数据元素并将它们附加到输出向量vD的过程继续,直到单个输出向量已经被完全填充为止。在一些实施例中,处理器与此同时保持停止。
例如根据vstore_and_select_elements_using_long_bitmap指令存储选择的数据元素的操作使用向量存储单元412。向量存储单元412可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量存储单元412可包括元素选择单元200。然而,在一些实施例中,向量存储单元412连接到元素选择单元200。从向量寄存器文件接收完整输入向量vA。从输入向量vA,选择器数据路径单元406选择数据元素。位图加载单元408例如基于指向位图阵列的指针加载用于选择的位图。位图加载单元408包括在或连接到元素选择单元200,并且在指令中接收指向位图阵列的指针。向量存储单元412将部分填充的输出向量vD作为不对齐向量存储进行处理。向量存储单元412可包括缓冲器和写支持以进行对齐的向量存储操作。它基于输入向量vA中的选择的字数和输入地址针织更新不对齐的地址指针。
要指出,遵循vstore_and_select_elements_using_long_bitmap指令存储选择的数据元素的操作表现得更像遵循上面描述的第二类型实施例的vstore_and_select_elements指令存储选择的元素的操作。一个差异是,位图未被提供存储操作,但它被简单地加载。
加载和选择指令可具有如下标记:vload_and_select_elements_using_long_bitmap output_vector_register、load_address_register、bit_map_address_register。
根据第三类型实施例执行的包括加载和选择的动作可包括如下一项或多项:
-加载和/或存储单元202接收加载P个选择的数据元素的指令,例如上面提到的vload_and_select_elements_using_long_bitmap指令。可从处理器的指令提取单元(IFU)接收指令。这涉及上面的动作301。
-位图加载单元408基于由bit_map_address_register指示的位图寄存器409中的地址从存储器加载位图。这涉及上面的动作302。
-选择器控制单元402从由rotation_offset_register指示的偏移寄存器403中读取输入偏移值。偏移寄存器403可以是内部寄存器。这涉及上面的动作302。
-向量加载单元410从内存(未示出)加载输入向量vA,并将它存储在输入向量寄存器411中。这涉及上面的动作304。
-选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
- 选择器数据路径电路406在输出向量寄存器413的启用的元素中写。这涉及上面的动作303和305。
-选择器控制单元402更新和写入加载地址和位图地址,并将这些值写到规定的寄存器。
-如果输出向量寄存器413不包括完整输出向量vD,则过程可从第二动作重复上面提到的动作,否则它继续下一动作。
-输出向量寄存器413被写到处理器的向量寄存器文件。
存储和选择指令可具有如下标记:vstore_and_select_elements_using_long_bitmapinput_vector_register store_address_register bit_map_address_register
根据第三类型实施例执行的包括加载和选择的动作可包括如下一项或多项:
- 加载和/或存储单元202接收存储选择的数据元素的指令,例如上面提到的vstore_and_select_elements_using_long_bitmap指令。可从指令提取单元(IFU)接收指令。这涉及上面的动作301。
- 位图加载单元408基于由bit_map_address_register指示的位图寄存器409中的地址从内存(未示出)加载位图。这涉及上面的动作302。
-选择器控制单元402从由store_address_register指示的寄存器(未示出)中读取存储指针值。这涉及上面的动作302。选择器数据路径电路406从由input_vector_register指示的输入向量寄存器411中读取输入向量vA。这涉及上面的动作304。
-选择器控制电路404根据位图和存储地址指针生成复用器控制信号。存储地址指针对应于相对偏移。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-选择器控制单元402更新和写入存储地址指针和位图地址指针,并将这些值分别写到存储寄存器和位图寄存器409。
-向量存储单元412进行部分填充的输出向量寄存器413的不对齐存储。可选地,向量存储单元412延迟存储操作,直到已经聚集了P个选择的数据元素。
除了上面提到的一般优点,第三类型的一些实施例还具有如下优点:加载/存储单元202中的元素选择单元200的组合启用了操作的分组,因此存在来自例如指令解码的较少开销。
进一步说,第三类型的一些实施例启用将选择器数据路径电路406再用于传统不对齐的加载/存储操作,其中位图具有P个一(1)。
而且,如果复杂向量计算必须直接使用输入数据,则使用加载和选择操作是非常方便的。对于程序员,用选择操作加载总是得到完整向量,不管必须加载多少输入向量以聚集数据。不需要在软件中组合用选择的元素部分填充的向量。
第四类型实施例:内存到内存传输系统的部分
在第四类型的一些实施例中,元素选择单元200嵌入在内存到内存传输系统204中,例如参见图2b。此类系统的示例是DMA单元。
内存到内存传输系统204接收将数据阵列从源地址拷贝到目的地地址的指令,同时选择和级联由选择位图指示的数据元素。选择位图可以是长选择位图,并且它在背景技术中可由位图加载单元408隐式获得。位图加载单元408包括在或连接到元素选择单元200。
内存到内存传输系统202使用向量加载单元410,向量加载单元410基于源地址从源内存(未示出)中一个接一个加载输入向量vA。向量加载单元410包括元素选择单元200,或连接到元素选择单元200。位图加载单元408基于指向选择位图阵列的指针加载并且可选地缓冲部分选择位图阵列。选择器数据路径电路406从每个输入向量vA中选择由长位图的对应部分指示的数据元素,并通过给选择的和级联的数据元素一个旋转偏移来将它们附加到输出向量vD。加载输入向量vA、从这些输入向量vA中选择数据元素并将它们附加到输出向量vD的过程可继续,直到单个输出向量vD已经被完全填充为止。然后,向量存储单元412进行对目的地地址的对齐存储操作。如之前所提到的,向量存储单元412包括元素选择单元200,或连接到元素选择单元200。
拷贝选择的数据元素的指令可具有如下标记:copy_selected_elementsdestination_address source_address bit_map_address,block_size
根据第四类型实施例执行的包括拷贝选择的数据元素的动作可包括如下一项或多项:
-内存到内存传输系统204接收拷贝选择的数据元素的指令,例如上面提到的copy_selected_elements指令。可从处理器接收指令。可用各种方式,例如经由直接控制接口、经由内存映射的配置和/或经由寄存器映射的配置,接收指令及其配置。这涉及上面的动作301。
-位图加载单元408基于由bit_map_address指示的地址从内存(未示出)并且可能从缓冲器加载部分长位图阵列。
-位图加载单元408包括在或连接到元素选择单元200。这涉及上面的动作302。
-选择器控制单元402从偏移寄存器403中读取偏移值。旋转偏移寄存器403可以是内部寄存器。这涉及上面的动作302。
-向量加载单元410从由source_address指示的内存(未示出)加载输入向量vA,并将它存储在输入向量寄存器411中。向量加载单元410可对应于在图2a和2b中图示的加载和/或存储单元202。从而,向量加载单元410可包括元素选择单元200。然而,在一些实施例中,向量加载单元410连接到元素选择单元200。这涉及上面的动作304。
-选择器控制电路404根据位图和相对偏移生成复用器控制信号。这涉及上面的动作302。
-选择器数据路径电路406基于所生成的复用器控制信号朝输出向量寄存器413传播所选择的输入数据元素,级联所选择的输入数据元素,并给所选择的集合所需的旋转。这涉及上面的动作304。
-选择器数据路径电路406在输出向量寄存器413的启用的数据元素中写。这涉及上面的动作303和305。
-选择器控制单元402更新和写入源地址指针和位图地址指针,并将这些值写到指示的寄存器。
-如果输出向量寄存器413没有完整输出向量vD输出,则过程从加载可能还有缓冲部分长位图阵列的动作重复上面提到的动作。如果输出向量寄存器413的确具有完整输出向量vD输出,则执行如下动作。
-向量存储单元412将输出向量寄存器413写到目的地地址。
-目的地地址指针由选择器控制单元402更新。
-如果块已经被完全拷贝、从块大小配置参数中导出,则内存到内存传输系统204完成可能向另一系统(诸如控制处理器(未示出))发信号通知其完成。如果块尚未完全拷贝,则过程从加载并且可能缓冲部分长位图阵列重复上面提到的动作。
除了上面提到的一般优点,第四类型的一些实施例还具有如下优点:用于将选择的数据元素拷贝在块中的内存到内存传输系统204(例如DMA单元)的基于位图的配置具有非常低的开销。开销在配置所需的内存区域方面和为了控制配置所浪费的时间方面都是低的。
扩展
本文描述的一些实施例可包括一个或多个如下扩展。
扩展1:可配置的字大小
位图bit_map是布尔向量,指示对于输入向量vA中的每个字(即每个数据元素),是否必须选择该字(即数据元素)。对于每个输入向量vA某个数量的物理字(即具有W位字大小的P个字),设计选择器数据路径电路406。在一些实施例中,有可能通过将顺序物理字分组来将选择器控制单元402扩展成支持更大大小的逻辑字。例如,可构造物理字大小W'=2W、W"=4W等的逻辑字。位图配置选择某个大小的逻辑字,而非由选择器电路确定的大小的物理字。从而,对于更大字大小,可降低加载位图的成本(即与消耗处理器周期和内存带宽相关的性能和能量上的成本)以及位图所需的存储空间。
扩展2:固定点格式压缩和固定点格式解压
存在用于字的固定点格式的组合选择和压缩或组合选择和解压的情况。LTE的重要情况是32位字(实际上是复杂格式16+16位)到24位字(12+12位)的转换,并且反之亦然。所需的系统将具有8位字选择器电路以及在它前面/后面的解压/压缩复用器电路(图4中未示出)。选择32位输入字(它们被压缩到24位)只是意味着,选择器数据路径电路406的输入(即来自压缩电路的输出)的每个第四字节被丢弃。
扩展3:用解释进行位图预提取
如果存在属于输入向量vA的P个后续零,则位图加载单元408可配置成预提取和解释长位图部分,并将跳过长位图的部分。然后,没有必要加载输入向量vA
这个扩展对于上面描述的第三类型和第四类型实施例是相关的。
扩展4:周期性位图配置
对于周期性位图,其例如对于LTE资源元素扩展是共同的,可能与某个资源块级掩码组合,拼出整个位图可带来一些不必要开销。位图加载单元408可配置有基本位图模式(例如对于基本LTE资源块模式是12个布尔)、有关重复次数的信息(例如100个基本块的长度)可能还有块级掩码(例如有条件地选择/丢弃基本块的所有12个元素的100个布尔)。位图加载单元408可配置成对于选择器控制单元402生成加载的输入向量vA的P个字的布尔向量。
这个扩展对于上面描述的第三类型和第四类型的一些实施例可能是相关的。
如之前所提到的,本文的实施例的确还涉及上面描述的包括元素选择单元200的加载和/或存储单元202、上面描述的包括元素选择单元200的内存到内存传输系统204、上面描述的包括元素选择单元200的向量处理器206、包括向量处理器206的集成电路208以及包括集成电路208的通信装置210。
通信装置210可以是移动终端或无线终端、移动电话、计算机(诸如例如膝上型计算机)、平板计算机(诸如例如iPad™)、个人数字助理(PDA),或能够通过无线电链路在蜂窝通信网络中通信的任何其它无线电网络单元。
进一步说,本文的实施例还涉及具有用于执行本文描述的一个或多个动作和/或实现一个或多个特征的程序代码部分的计算程序产品。
尽管上面的描述含有许多特定细节,但是它们不应被视为限制,而只是提供一些目前优选实施例的图示。该技术完全涵盖对本领域技术人员可变得显而易见的其它实施例。提到“单数”的元素不意图是指“一个且仅一个”,除非如此明确声明,否则是指“一个或多个”。本领域普通技术人员已知的上述实施例的元素的所有结构和功能等同物都通过参考都明确结合于本文中,并且意图由此涵盖。此外,装置或方法不因为它由此涵盖而必定解决所描述技术要试图解决的每个问题。
当使用词语“包括”时,它将被解释为非限制性的,意思是是“至少由…组成”。
当使用词语“动作/多个动作”时,它将被广义解释,而非暗示动作必须按所提到的次序执行。而是,动作可按与所提到的次序不同的任何适当次序执行。进一步说,某个动作/某些动作可以是可选的。
本文的实施例不限于上面描述的示例。可使用各种备选、修改和等同物。因此,以上示例不应被视为限制本发明的范围,本发明的范围由所附权利要求书定义。

Claims (13)

1. 一种在元素选择单元(200)中用于向量元素选择的方法,所述元素选择单元(200)包括选择器控制电路(404)和选择器数据路径电路(406),所述选择器数据路径电路(406)包括多层,所述多层中的每层包括多个复用器(m00,m01...,m23),并且其中所述方法包括:
接收(301)执行从包括至少一个输入向量(vA)的源向量选择数据元素的指令,所述指令包括与所述至少一个输入向量(vA)相关的信息、与所述至少一个输出向量(vD)相关的信息以及与位图(bit_map)相关的信息;
借助于所述选择器控制电路(404),基于所述位图(bit_map)和多个相对偏移值生成(302)所述多个复用器(m00,m01...,m23)中的每个复用器的复用器控制信号(mxx_sel_left),基于输入偏移值并基于所述位图(bit_map)对于所述输入向量(vA)的每个所述数据元素计算所述多个相对偏移值中的每个相对偏移值;
借助于所述选择器数据路径电路(406),基于所生成的复用器控制信号(mxx_sel_left)通过所述多层的复用器(m00,m01...,m23)朝所述输出向量(vD)传播(304)所述输入向量(vA)中包括的所述数据元素;以及
借助于所述选择器数据路径电路(406),将传播的数据元素写(305)到所述输出向量(vD)的启用的数据元素。
2. 如权利要求1所述的方法,其中每个相对偏移值_rel_offset(i)被计算为:
其中i是所述输入向量(vA)中的元素数量,bit_map (j)是所述位图(bit_map)的元素j的位图值,并且input_offset是所述输入偏移值。
3. 如权利要求1或2所述的方法,其中所述数据元素的传播(304)进一步包括:
借助于所述选择器数据路径电路(406),基于生成的复用器控制信号(mxx_sel_left)通过所述多层的复用器(m00,m01...,m23)配置数据路径。
4. 如权利要求1-3中任一项所述的方法,进一步包括:
借助于所述选择器控制电路(404),基于所述位图(bit_map)生成(303)所述输出向量(vD)的数据元素的写启用信号,每个所述写启用信号启用到所述输出向量(vD)的所述数据元素之一的写。
5. 一种用于向量元素选择的元素选择单元(200),所述元素选择单元(200)包括选择器控制电路(404)和选择器数据路径电路(406),所述选择器数据路径电路(406)包括多层,所述多层中的每层包括多个复用器(m00,m01...,m23),并且其中所述元素选择单元(200)进一步包括:
接收电路(401),其配置成接收执行从包括至少一个输入向量(vA)的源向量选择数据元素的指令,所述指令包括与所述至少一个输入向量(vA)相关的信息、与所述至少一个输出向量(vD)相关的信息以及与位图(bit_map)相关的信息;
其中所述选择器控制电路(404)配置成基于所述位图(bit_map)和多个相对偏移值生成所述多个复用器(m00,m01...,m23)中的每个复用器的复用器控制信号(mxx_sel_left),基于输入偏移值并基于所述位图(bit_map)对于所述输入向量(vA)的每个所述数据元素计算所述多个相对偏移值中的每个相对偏移值;
其中所述选择器数据路径电路(406)配置成基于所生成的复用器控制信号(mxx_sel_left)通过所述多层的复用器(m00,m01...,m23)朝所述输出向量(vD)传播所述输入向量(vA)中包括的所述数据元素;并且
其中所述选择器数据路径电路(406)配置成将传播的数据元素写到所述输出向量(vD)的启用的数据元素。
6. 如权利要求5所述的元素选择单元(200),其中所述选择器控制电路(404)配置成将每个相对偏移值rel_offset (i) 计算为:
其中i是所述输入向量(vD)中的元素数量,bit_map (j)是所述位图(bit_map)的元素j的位图值,并且input_offset是所述输入偏移值。
7. 如权利要求5或6所述的元素选择单元(200),其中所述选择器数据路径电路(406)进一步配置成基于生成的复用器控制信号(mxx_sel_left)通过所述多层的复用器(m00,m01...,m23)配置数据路径。
8. 如权利要求5-7中任一项所述的元素选择单元(200),其中所述选择器控制电路(404)进一步配置成基于所述位图(bit_map)生成所述输出向量(vD)的数据元素的写启用信号,每个所述写启用信号启用到所述输出向量(vD)的所述数据元素之一的写。
9. 一种加载存储单元(202),其包括如权利要求5-8中任一项所述的元素选择单元(200)。
10. 一种内存到内存传输系统(204),其包括如权利要求9所述的加载存储单元(202)。
11. 一种向量处理器(206),其包括如权利要求5-8中任一项所述的元素选择单元(200)。
12. 一种集成电路(208),其包括如权利要求11所述的向量处理器(206)。
13. 一种通信装置(210),其包括如权利要求12所述的集成电路。
CN201380042682.6A 2012-06-14 2013-06-10 元素选择单元及其中的方法 Active CN104756069B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP12171963.7A EP2674855B1 (en) 2012-06-14 2012-06-14 An element selection unit and a method therein
EP12171963.7 2012-06-14
US201261661903P 2012-06-20 2012-06-20
US61/661903 2012-06-20
PCT/EP2013/061882 WO2013186155A1 (en) 2012-06-14 2013-06-10 An element selection unit and a method therein

Publications (2)

Publication Number Publication Date
CN104756069A true CN104756069A (zh) 2015-07-01
CN104756069B CN104756069B (zh) 2017-08-04

Family

ID=46516525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380042682.6A Active CN104756069B (zh) 2012-06-14 2013-06-10 元素选择单元及其中的方法

Country Status (5)

Country Link
US (1) US9350584B2 (zh)
EP (1) EP2674855B1 (zh)
CN (1) CN104756069B (zh)
WO (1) WO2013186155A1 (zh)
ZA (1) ZA201409107B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260162A (zh) * 2015-09-30 2016-01-20 华为技术有限公司 一种矢量排列电路及矢量处理器
CN111078920A (zh) * 2019-11-22 2020-04-28 北京云宽志业网络技术有限公司 数据处理方法、装置、设备和计算机可读存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10459723B2 (en) 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US10019262B2 (en) * 2015-12-22 2018-07-10 Intel Corporation Vector store/load instructions for array of structures
JP2022117853A (ja) * 2021-02-01 2022-08-12 パナソニックIpマネジメント株式会社 診断回路、電子デバイス及び診断方法
CN117195989B (zh) * 2023-11-06 2024-06-04 深圳市九天睿芯科技有限公司 向量处理器、神经网络加速器、芯片及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832288A (en) * 1996-10-18 1998-11-03 Samsung Electronics Co., Ltd. Element-select mechanism for a vector processor
US5848286A (en) * 1994-03-29 1998-12-08 Cray Research, Inc. Vector word shift by vo shift count in vector supercomputer processor
CN1519704A (zh) * 2003-01-29 2004-08-11 ��ʢ���ӹɷ����޹�˾ 包括纯量算术逻辑单元的单指令多数据处理机
US20040172517A1 (en) * 2003-01-29 2004-09-02 Boris Prokopenko Synchronous periodical orthogonal data converter
US20080282034A1 (en) * 2005-09-19 2008-11-13 Via Technologies, Inc. Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor
CN101986264A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101061460B (zh) 2004-09-21 2011-03-30 Nxp股份有限公司 用于混移运算的微处理器设备和方法
EP1825433A4 (en) 2004-11-23 2010-01-06 Efficient Memory Technology METHOD AND APPARATUS FOR MULTIPLE INTERLAYING ADDRESSING INTERLACES OF PAGINATED MEMORIES AND INTELLIGENT MEMORY BANKS
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
US20090254736A1 (en) * 2008-04-07 2009-10-08 Arm Limited Data processing system for performing data rearrangement operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848286A (en) * 1994-03-29 1998-12-08 Cray Research, Inc. Vector word shift by vo shift count in vector supercomputer processor
US5832288A (en) * 1996-10-18 1998-11-03 Samsung Electronics Co., Ltd. Element-select mechanism for a vector processor
CN1519704A (zh) * 2003-01-29 2004-08-11 ��ʢ���ӹɷ����޹�˾ 包括纯量算术逻辑单元的单指令多数据处理机
US20040172517A1 (en) * 2003-01-29 2004-09-02 Boris Prokopenko Synchronous periodical orthogonal data converter
US20080282034A1 (en) * 2005-09-19 2008-11-13 Via Technologies, Inc. Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor
CN101986264A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260162A (zh) * 2015-09-30 2016-01-20 华为技术有限公司 一种矢量排列电路及矢量处理器
CN105260162B (zh) * 2015-09-30 2017-12-22 华为技术有限公司 一种矢量排列电路及矢量处理器
US10303473B2 (en) 2015-09-30 2019-05-28 Huawei Technologies Co., Ltd Vector permutation circuit and vector processor
CN111078920A (zh) * 2019-11-22 2020-04-28 北京云宽志业网络技术有限公司 数据处理方法、装置、设备和计算机可读存储介质

Also Published As

Publication number Publication date
US9350584B2 (en) 2016-05-24
WO2013186155A1 (en) 2013-12-19
EP2674855A1 (en) 2013-12-18
ZA201409107B (en) 2016-03-30
EP2674855B1 (en) 2016-11-23
CN104756069B (zh) 2017-08-04
US20150124910A1 (en) 2015-05-07

Similar Documents

Publication Publication Date Title
CN104756069A (zh) 元素选择单元及其中的方法
US9760373B2 (en) Functional unit having tree structure to support vector sorting algorithm and other algorithms
CN105335331B (zh) 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统
CN110678840A (zh) 张量寄存器文件
CN105912501B (zh) 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统
US10007605B2 (en) Hardware-based array compression
US20140325181A1 (en) Hierarchical reconfigurable computer architecture
Feldmann et al. F1: A fast and programmable accelerator for fully homomorphic encryption (extended version)
KR102118836B1 (ko) Simd 아키텍처에서 레인 셔플을 위한 셔플러 회로
WO2021026489A1 (en) Compiler flow logic for reconfigurable architectures
CN107851010B (zh) 针对宽数据元素使用寄存器对的具有偶数元素和奇数元素运算的混合宽度simd运算
KR20100092805A (ko) 재구성 가능한 구조의 프로세서
CN115151898A (zh) 基于用户规范的可重配置架构上的操作单元图的高效执行
CN118035618B (zh) 数据处理器、数据处理方法、电子设备、存储介质
JP2014164667A (ja) リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置
CN106021171A (zh) 一种基于大规模粗粒度可重构处理器的sm4-128的密钥扩展实现方法及系统
CN102629238A (zh) 支持向量条件访存的方法和装置
JP2011034190A (ja) データ処理装置
Agosta et al. Fast disk encryption through GPGPU acceleration
CN116635841A (zh) 寄存器的近存储器确定
JP5659772B2 (ja) 演算処理装置
Chiu et al. A multi-streaming SIMD multimedia computing engine
CN105593809A (zh) 灵活配置硬件流传输单元
CN102004672B (zh) 一种可配置归约目标自增间隔的归约装置
EP3304283B1 (en) System, apparatus, and method for temporary load instruction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160718

Address after: Stockholm

Applicant after: Telefonaktiebolaget LM Ericsson (publ)

Address before: Stockholm

Applicant before: ERICSSON AB

Effective date of registration: 20160718

Address after: Stockholm

Applicant after: ERICSSON AB

Address before: The Swiss Dasa hole, neck

Applicant before: ST-ERICSSON S.A.

GR01 Patent grant
GR01 Patent grant