CN105453028A - 向量积累方法及设备 - Google Patents
向量积累方法及设备 Download PDFInfo
- Publication number
- CN105453028A CN105453028A CN201480043504.XA CN201480043504A CN105453028A CN 105453028 A CN105453028 A CN 105453028A CN 201480043504 A CN201480043504 A CN 201480043504A CN 105453028 A CN105453028 A CN 105453028A
- Authority
- CN
- China
- Prior art keywords
- output
- vector
- instruction
- input
- reduction tree
- 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
Links
- 239000013598 vector Substances 0.000 title claims abstract description 588
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000009825 accumulation Methods 0.000 title description 3
- 230000009467 reduction Effects 0.000 claims description 249
- 229920006395 saturated elastomer Polymers 0.000 claims description 27
- 230000004044 response Effects 0.000 claims description 6
- 239000013589 supplement Substances 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 2
- 230000000873 masking effect Effects 0.000 claims description 2
- 239000000654 additive Substances 0.000 description 29
- 230000000996 additive effect Effects 0.000 description 29
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 23
- 238000010586 diagram Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 18
- 238000007792 addition Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在特定实施例中,一种方法包含在处理器处执行向量指令。所述向量指令包含多个元素的向量输入。执行所述向量指令包含将所述多个元素中的第一元素提供为第一输出。执行所述向量指令进一步包含对所述多个元素中的所述第一元素及第二元素执行算术运算,以提供第二输出。执行所述向量指令进一步包含将所述第一输出及所述第二输出存储于输出向量中。
Description
对相关申请案的交叉参考
本申请案主张2013年8月14日申请的共同拥有美国非临时专利申请案第13/967,191号的优先权,所述申请案的全部内容明确地以引用方式并入本文中。
技术领域
本发明大体上是关于向量算术约简。
背景技术
技术的进步已带来较小且较强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如,便携式无线电话、个人数字助理(PDA)、平板计算机及传呼装置,其体积小、重量轻且易于由用户携带。许多这些计算装置包含并入于其中的其它装置。举例来说,无线电话也可包含数字静态相机、数字视频摄像机、数字记录器及音频档案播放器。又,这些计算装置可处理可执行指令,包含软件应用程序,例如可用于接入因特网的网页浏览器应用程序,及利用静态相机或视频摄像机并提供多媒体播放功能性的多媒体应用程序。
许多这些计算装置包含用于处理无线传输,及与大量重复计算相关联的其它活动的向量处理器。向量处理器执行指令,所述指令对可布置为一维阵列或向量的多个输入执行运算。执行向量指令使得能够对多个输入执行特定运算。举例来说,执行常规的向量加法约简指令会基于多个输入计算单一总和值。其它运算(例如,积分函数及累积式密度函数)除了使用一或多个部分总和(例如,多个输入中的不到全部输入的一或多个总和)外也可使用单一总和。为了产生并输出一或多个部分总和,执行多个向量指令。相比于执行单一向量加法约简指令以产生并输出单一总和,执行多个向量指令常规地增加存储器使用率及功率消耗。
发明内容
揭示一种执行累积式向量算术约简指令的方法。可在处理器处执行所述累积式向量算术约简指令,以使得能够对输入向量执行多个渐进式算术运算(例如,渐进式加法运算)。所述输入向量可包含以依序次序存储的多个输入元素。执行所述累积式向量算术约简指令可带来具有多个输出元素的输出向量。每一输出元素可是基于将所述算术运算应用于所述输入向量的对应输入元素及所述输入向量的任何依序先前输入元素的结果。因此,所述多个输出值可对应于所述多个输入元素的多个部分总和,以及所有所述多个输入元素的总和。可遮蔽所述输入元素或所述输出元素中的至少一者,以防止一或多个输入元素包含于所述累积式向量算术约简运算中,或防止一或多个输出元素存储累积式向量算术约简结果。
可基于分段式向量算术约简指令的区段分组大小选择性地配置约简树以执行分段式向量算术约简指令。所述约简树可包含布置成多个行的多个加法器。可基于所述区段分组大小,选择性地启用多个行中的一或多个加法器,且可由所述经选择性地启用的加法器产生多个输出值。通过对一或多个群组的输入执行算术(例如,加法)运算,可同时产生所述多个输出值。每一群组可具有由所述经选择性地启用的加法器造成的区段分组大小。因此,单一约简树可经配置以执行多个区段向量算术约简指令,其中每一指令具有不同区段分组大小。
在特定实施例中,一种方法包含在处理器处执行向量指令。所述向量指令包含包含多个元素的向量输入。执行所述向量指令包含将所述多个元素中的第一元素提供为第一输出。执行所述向量指令进一步包含对所述多个元素中的所述第一元素及第二元素执行第一算术运算,以提供第二输出。执行所述向量指令进一步包含将所述第一输出及所述第二输出存储于输出向量中。
在另一特定实施例中,一种设备包含包含约简树的处理器。在识别包含多个元素的向量输入的向量指令的执行期间,所述约简树经配置以将所述多个元素中的第一元素提供为第一输出元素。所述约简树进一步经配置以对所述多个元素中的所述第一元素及第二元素执行第一算术运算,以提供第二输出元素。所述约简树进一步经配置以将所述第一输出元素及所述第二输出元素存储于输出向量中。
在另一特定实施例中,一种设备包含用于将多个元素中的第一元素提供为第一输出的装置。向量指令指示包含所述多个元素的向量输入。所述设备进一步包含用于基于所述多个元素的所述第一元素及第二元素产生第二输出的装置。所述设备进一步包含用于将所述第一输出及所述第二输出存储于输出向量中的装置。
在另一特定实施例中,一种非暂时性计算机可读媒体包含在由处理器执行时,使得所述处理器进行如下操作的指令:将多个元素中的第一元素提供为第一输出元素;对所述多个元素中的所述第一元素及第二元素执行算术运算,以提供第二输出;及将所述第一输出及所述第二输出存储于输出向量中。所述多个元素包含于由向量指令所指示的向量输入中。
在另一特定实施例中,一种设备包含约简树,其包含多个输入、多个加法器及多个输出。处理器经配置以在包含第一区段分组大小的第一指令的执行期间,及包含第二区段分组大小的第二指令的执行期间使用所述约简树。所述约简树经配置以同时产生多个输出元素。
在另一特定实施例中,一种方法包含在处理器处接收包含区段分组大小的向量指令。所述处理器包含约简树。所述约简树包含多个输入、多个算术运算单元及多个输出。所述方法进一步包含确定所述区段分组大小。所述方法进一步包含基于所述区段分组大小,使用所述约简树执行所述向量指令,以同时产生所述多个输出。所述约简树可经选择性地配置以用于与多个不同区段分组大小一起使用。
在又一特定实施例中,一种方法包含执行包含多个输入元素的向量指令。执行所述向量指令包含分组所述多个输入元素的第一子集,以形成输入元素的第一集合。执行所述向量指令进一步包含分组所述多个输入元素的第二子集,以形成输入元素的第二集合。执行所述向量指令进一步包含对所述第一集合的输入元素执行第一算术运算,并对所述第二集合的输入元素执行第二算术运算。执行所述向量指令进一步包含旋转输出寄存器上的内容,及在旋转所述输出寄存器的所述内容之后,将所述第一算术运算的第一结果及所述第二算术运算的第二结果插入到所述输出寄存器中。
由所述所揭示实施例中的至少一者所提供的特定优势为经配置以在单一累积式向量算术约简指令的执行期间产生多个部分结果的约简树。相比于执行多个向量指令以产生类似输出,执行所述单一累积式向量算术约简指令可使用存储器中的较少空间,且可降低功率消耗。由所述所揭示实施例中的至少一者所提供的另一特定优势为可经配置以在具有第一区段分组大小的第一指令的执行期间及具有第二分组大小的第二指令的执行期间使用单一约简树的处理器。相比于在具有不同区段分组大小的多个指令的执行期间使用多个约简树,使用所述单一约简树可降低所述处理器的芯片面积及功率消耗。
本发明的其它方面、优势及特征将在审阅包含以下章节的整个申请案之后变得显而易见:【图式简单说明】、【实施方式】及【权利要求书】。
附图说明
图1为执行累积式向量算术约简指令的说明性过程的图式;
图2为用以执行向量指令的系统的说明性实施例的框图;
图3到6为约简树的说明性实施例的框图;
图7为约简树的一部分的说明性实施例的框图;
图8为约简树的另一说明性实施例的框图;
图9为执行分段式向量算术约简指令的说明性过程的图式;
图10为执行旋转分段式向量算术约简指令的说明性过程的图式;
图11A到B为执行包含屏蔽的累积式向量算术约简指令的说明性过程的图式;
图12为执行第一累积式向量算术约简指令的方法的说明性实施例的流程图;
图13为使用约简树执行向量指令的方法的说明性实施例的流程图;
图14为执行旋转分段式向量算术约简指令的方法的说明性实施例的流程图;及
图15为包含约简树的便携式装置的框图。
具体实施方式
参看图1,揭示执行向量指令的说明性过程的图式,且大体上将其指定为100。向量指令可包含累积式向量算术约简指令,例如说明性累积式向量算术约简指令101。累积式向量算术约简指令101可执行于处理器处,例如管线式向量处理器,如参考图2所描述。处理器可接收包含多个元素102的输入向量122。处理器可处理输入向量122并产生输出向量120。输出向量120(例如,存储于输出向量120中的多个输出元素)可是基于累积式向量算术约简指令101。举例来说,执行累积式向量算术约简指令101可通过将多个元素102中的特定元素加至在输入向量122的依序次序上在顺序上在特定元素之前的多个元素102中的一或多个其它元素(例如,相加可为累积的)而产生特定输出。
多个元素102(例如,输入向量122)及输出向量120可包含N个元素,其中N为大于一的整数。多个元素102可包含第一元素104(s0)、第二元素106(s1)、第三元素108(s2)及第N元素110(s(N-1))。可以依序次序存储多个元素102,例如“s0、s1、s2、……s(N-1)”,其中s0为第一依序元素且s(N-1)为按照依序次序的最后依序元素。尽管展示四个元素,但多个元素102中的元素数目(例如,N)可多于或少于四个。在特定实施例中,在执行累积式向量算术约简指令101之前,使用输入向量122执行向量置换指令,来以依序次序布置多个元素102。
执行累积式向量算术约简指令101可产生存储于输出向量120中的多个输出元素(例如,多个输出值)。输出向量120可具有与输入向量122相同数目(例如,N)的元素。执行累积式向量算术约简指令101可包含提供N个输出元素。N个输出元素可存储于输出向量120中。举例来说,第一输出元素112、第二输出元素114、第三输出元素116及第N输出元素118可存储于输出向量120中。输出元素112到118可同时存储于输出向量120中。举例来说,在处理器的执行累积式向量算术约简指令101的单一执行循环期间,第一输出元素112及第二输出元素114可存储于输出向量120中。
多个输出元素112到118(例如,N个输出元素)中的每一输出元素可是基于对多个元素102中的一或多个元素所执行的算术运算(例如,加法运算)。在使用以特定依序次序“s0、s1、s2、……s(N-1)”定序的多个元素102执行累积式向量算术约简指令101之后,第一输出元素112可等于s0、第二输出元素114可等于s0+s1、第三输出元素116可等于s0+s1+s2,且第N输出元素118可等于多个元素102中的每一元素的总和(s0+s1+……+s(N-1))。举例来说,执行累积式向量算术约简指令101可包含将第一元素104提供(例如,产生)为第一输出元素112,并将第一元素104相加到第二元素106以提供(例如,产生)第二输出元素114。第一输出元素112及第二输出元素114可存储于输出向量120的不同输出元素中。执行累积式向量算术约简指令101可进一步包含将第一元素104及第二元素106相加到第三元素108,以提供第三输出元素116,并将第三输出元素116存储于输出向量120中。执行累积式向量算术约简指令101可进一步包含将多个元素102中的元素中的每一者相加,以提供第N输出元素118,并将第N输出元素118存储于输出向量120中。
如图1中所说明,累积式向量算术约简指令101可包含指令名称180(vrcadd)(例如,作业码)。累积式向量算术约简指令101也可包含一或多个字段,例如第一字段182(Vu)、第二字段184(Vd)、第三字段186(Q)、第四字段188(Op)、第五字段190(sc32)及第六字段192(sat)。存储于第一字段182中的第一值可指示用于在累积式向量算术约简指令101的执行期间使用的输入向量122(例如,向量Vu),且存储于第二字段184中的第二值可指示用于在累积式向量算术约简指令101的执行期间使用的输出向量120(例如,向量Vd)。存储于第三字段186中的第三值可指示屏蔽(例如,屏蔽Q),例如参考图11A到B进一步详细描述;存储于第四字段188中的第四值可指示运算向量(例如,运算向量Op);存储于第五字段190中的第五值可指示输入值类型,例如参考图3到4进一步详细描述;且存储于第六字段192中的第六值可指示是否要在累积式向量算术约简期间执行饱和,如参考图7所描述。
尽管已描述加法运算,但累积式向量算术约简指令101并不限于仅执行加法运算。举例来说,累积式向量算术约简指令101可指示待对多个元素102执行的一或多个算术运算。一或多个算术运算可包含加法运算、减法运算或其组合。举例来说,可使用一或多个加法运算、使用一或多个减法运算,或使用一或多个加法运算及一或多个减法运算的组合执行算术约简。可由特定字段(例如,特定参数)(例如,第四字段188)中的值指示一或多个算术运算。举例来说,第四字段188可包含指向存储运算向量(例如,指示一或多个算术运算的向量)的存储器中的位置或指向存储运算向量的寄存器的指针。运算向量的每一元素可指示在累积式向量算术约简指令101的执行期间将要对多个元素102的对应元素执行的特定运算(例如,加法运算或减法运算)。当一或多个算术运算中的至少一者为减法运算时,可在产生多个输出元素之前对多个元素102中的一或多个元素求补。举例来说,在提供第一输出元素112及第二输出元素114之前(例如,在产生多个输出元素之前),可基于累积式向量算术约简指令101(例如,基于存储于第四字段188中的第四值)对多个元素102中的一或多个元素求补。
在运算期间,处理器可接收累积式向量算术约简指令101。处理器可使用多个元素102执行累积式向量算术约简指令,以产生多个输出元素并将其存储于输出向量120中。多个输出元素可表示累积式向量算术约简运算的多个部分结果。
相比于在多个向量指令的执行期间产生多个部分结果,累积式向量算术约简指令101可通过在单一向量指令的执行期间产生多个部分结果(例如,多个输出元素112到118)而提供存储及功率消耗益处。举例来说,相比于在多个向量指令的执行期间产生多个部分结果,在单一向量指令的执行期间产生多个部分结果可使用存储器或寄存器集中的较少存储区,且可降低处理器的功率消耗。
图2为经配置以执行向量指令的系统200的实施例的框图。系统200可包含经配置以接收向量指令220及输入向量122并提供输出向量120的处理器202。向量指令220可为图1的累积式向量算术约简指令101。替代性地,作为说明性非限制性实例,向量指令220可为分段式向量算术约简指令(例如参考图9所描述)或旋转分段式向量算术约简指令(例如参考图10所描述)。
处理器202可包含算术逻辑单元(ALU)204及控制逻辑210。ALU204可包含约简树206及旋转单元208。ALU204可经配置以接收输入向量122,并使用约简树206对输入向量122执行一或多个算术运算。约简树206可提供输出向量120。可将输出向量120提供到由向量指令220所识别的位置,例如寄存器或在存储器中的位置。举例来说,可将输出向量120提供到基于向量指令220的特定字段(例如,图1的第二字段184)的位置。
ALU204及约简树206可为执行管线的部分。举例来说,处理器202可为包含一或多个管线的管线式向量处理器。约简树206可包含于一或多个管线中。约简树206可具有基于(输入向量122的)输入元素的数目的数目个级(例如,级深度)。约简树206的级数目可对应于输入元素数目的以2为底的对数。举例来说,当输入元素数目为三十二时,约简树206可具有五级。约简树206可包含布置成一或多个行的多个算术运算单元。约简树206的每一级可对应于约简树206的一行算术运算单元。
控制逻辑210可经配置以基于向量指令220(例如,图1的累积式向量算术约简指令101)选择(例如,选择性地启用)约简树206的多个加法器中的一或多个加法器,如参考图3到7所描述。选择性地启用一或多个算术运算单元可使得约简树206提供(例如,产生)用于插入到输出向量120中的一或多个输出元素。
旋转单元208可经配置以接收旋转向量280,并基于向量指令220选择性地旋转旋转向量280,如参考图10进一步所描述。旋转单元208可经配置以在将一或多个输出元素插入(例如,存储)于输出向量120中之前,旋转旋转向量280。举例来说,旋转单元208可与约简树206基于输入向量122产生一或多个输出元素平行地旋转旋转向量280。可将经旋转旋转向量及一或多个输出元素提供到多路复用器212,以用于插入到输出向量120中(例如,产生输出向量120)。举例来说,当输入向量122及旋转向量280各自包含十六个元素,且向量指令220的执行使用约简树206产生八个输出元素时,多路复用器212可选择所述八个输出元素及来自经旋转旋转向量的八个经旋转元素以用于插入到输出向量120中。可基于具有其它大小的输入向量122及/或旋转向量280,或基于产生不同数目的输出元素的向量指令220的执行来选取其它选择。在替代性实施例中,旋转向量280可为输入向量122,且可将来自输入向量122的多个输入元素提供到旋转单元208及约简树206。
作为说明性实例,旋转单元208可为旋转器或筒向量移位器。旋转向量280可包含多个先前元素(例如,由于执行先前的向量指令所产生的多个元素)。可由向量指令220识别旋转向量280。举例来说,旋转向量280可存储于由向量指令220中的字段识别的位置(例如,寄存器或在存储器中的位置)中。在特定实施例中,与旋转向量280相关联的第一位置相同于与输出向量120相关联的第二位置。举例来说,向量指令220可将特定寄存器识别为输出向量120,且可将特定寄存器的先前所存储元素(例如,内容)用作旋转向量280。特定寄存器处的先前所存储值可为先前向量算术约简指令的结果。在另一实施例中,与旋转向量280相关联的第一位置相同于与输入向量122相关联的第三位置。在其它实施例中,可由存储于向量指令220的另一字段中的另一值(例如,由存储于不同于输出向量120的字段中的不同值)识别旋转向量280,或可基于向量指令220的指令名称(例如,作业码)预定所述旋转向量。
在运算期间,处理器202可经配置以接收并执行向量指令220,以使用约简树206对输入向量122执行向量算术约简(例如,累积式向量算术约简或分段式向量算术约简)。约简树206可对输入向量122执行向量算术约简,以同时产生多个结果(例如,在处理器202的单一执行循环期间)。在向量指令220的执行期间,由约简树206所产生的多个结果可存储于输出向量120中。
相比于在多个向量指令的执行期间产生多个部分结果的其它系统,系统200可通过在单一向量指令(例如,向量指令220)的执行期间产生多个部分结果(例如,多个结果)而提供存储及功率消耗上的改善。
参看图3,揭示约简树300的第一说明性实施例的框图。举例来说,约简树300可包含图2的约简树206。约简树300可用于执行累积式向量算术指令,例如图1的累积式向量算术指令101或图2的向量指令220。约简树300可经配置以接收存储于输入向量122中的多个输入元素(包含第一输入元素302及第二输入元素304),并提供(例如,产生)待存储于输出向量120中的多个输出元素。输出向量120可包含第一输出元素306及第二输出元素308。
多个输入元素中的每一输入元素及多个输出元素中的每一输出元素可包含一或多个子元素。举例来说,第一输入元素302可包含第一多个输入子元素330到336(s0到s3),例如第一输入子元素330(s0)、第二输入子元素332(s1)、第三输入子元素334(s2)及第四子元素336(s3)。第二输入元素304可包含第二多个输入子元素338到344(s4到s7),例如第五输入子元素338(s4)、第六输入子元素340(s5)、第七输入子元素342(s6)及第八输入子元素344(s7)。另外,第一输出元素306可包含第一多个输出子元素366到372(d0到d3),例如第一输出子元素366(d0)、第二输出子元素368(d1)、第三输出子元素370(d2)及第四输出子元素372(d3)。第二输出元素308可包含第二多个输出子元素374到380(d4到d7),例如第五输出子元素374(d4)、第六输出子元素376(d5)、第七输出子元素378(d6)及第八输出子元素380(d7)。每一输入元素及输出元素可具有相同大小(例如,相同数目个位)。另外,每一输入子元素可具有相同于每一输出子元素的大小(例如,相同数目个位)。举例来说,每一输入元素(例如,第一输入元素302)及每一输出元素可为六十四个位,且可包含四个十六位子元素(例如,输入子元素330到336)。在替代性实施例中,输入子元素330到344中的每一者为个别输入元素,且输出子元素366到380中的每一者为个别输出元素,使得输入向量122包含多个输入元素330到344,且输出向量120包含多个输出元素366到380。
约简树300可包含多个算术运算单元。在特定实施例中,多个算术运算单元可为多个加法器,包含第一加法器320及第二加法器321。在其它实施例中,多个算术运算单元可包含减法器或加法器及减法器的组合。多个加法器可包含(例如,布置成)一或多行加法器。举例来说,多个加法器可包含(例如,布置成)第一行312。尽管描绘为包含单一行,但多个加法器可包含一个以上行。
可基于所接收累积式向量算术约简指令,选择性地启用多个加法器中的一或多个加法器,如参考图7所描述。未经选择性地启用的加法器(在图3中由阴影所说明,例如第二加法器321)可经配置以输出加法器处所接收的特定输入(例如,将零值加至特定输入),如参考图7所描述。举例来说,第二加法器321可经配置以接收第一输入元素302,并输出待存储于输出向量120中的第一输入元素302。选择性地启用的加法器(在图3中由未加阴影的加法器说明,例如第一加法器320)可经配置以执行加法运算。举例来说,第一加法器320可基于第一输入元素302及第二输入元素304执行加法运算。第一加法器320可产生等于第一输入元素302与第二输入元素304的总和的加法器输出。可将加法器输出提供为待存储于输出向量120中的输出元素(例如,第二输出元素308)。经由选择性启用,多个加法器可产生(例如,提供)存储于输出向量120中的多个输出元素。
多个输入元素可具有由累积式向量算术约简指令(例如,由存储于图1的累积式向量算术约简指令101的第五字段190中的值)指示的输入类型。输入类型可识别实数、虚数或复数(例如,实数及虚数的组合),且可另外与元素大小相关联。当输入类型为实数时,多个元素中的每一子元素可表示实数值。当输入类型为虚数时,元素中的每一子元素可表示虚数值。当输入类型为复数时,对于每一元素,至少一子元素可表示实数值且至少一其它子元素可表示虚数值。因此,约简树300可支持多个不同输入类型,例如六十四位实数、六十四位虚数、三十二位实数、三十二位虚数、十六位实数、十六位虚数、三十二位复数、十六位复数、一或多个其它输入类型,或其任何组合。
举例来说,当输入类型为十六位复数时,每一输入元素302及304可为六十四个位,每一输入子元素s0、s2、s4及s6可表示十六位实数值,且每一输入子元素s1、s3、s5及s7可表示十六位虚数值。因此,每一六十四位输入元素可与两个十六位复数输入子元素(例如,第一对s0及s1,及第二对s2及s3)相关联。作为另一实例,当输入类型识别三十二位复数时,每一输入元素302及304可为六十四个位,第一对输入子元素s0及s1以及第二对输入子元素s4及s5可表示三十二位实数值,且第三对输入子元素s2及s3以及第四对输入子元素s6及s7可表示三十二位虚数值。因此,每一六十四位输入元素可与一个三十二位复数输入子元素(例如,第一对输入子元素s0及s1以及第二对输入子元素s2及s3,或第三对输入子元素s4及s5以及第四对输入子元素s6及s7)相关联。在每一实例中,多个输出元素可包含与输入元素类似类型的输出元素及输出子元素(例如,输出元素可具有由输入类型所识别的类型)。
多个加法器中的每一加法器可包含多个子加法器。举例来说,第一加法器320可包含第一子加法器322、第二子加法器324、第三子加法器326及第四子加法器328。在特定实施例中,第一加法器320为经分割以执行四个十六位加法运算的六十四位加法器(例如,每一子加法器322到328表示第一加法器320的一分割)。在替代性实施例中,每一子加法器322到328为十六位加法器,且第一加法器320表示四个十六位加法器的一个群组。多个加法器中的每一加法器可具有类似于第一加法器320的配置(例如,第二加法器321可包含四个子加法器)。尽管描述六十四位加法器及十六位子加法器,但可使用其它大小的加法器及子加法器,(例如)基于输入向量122的输入元素的大小的加法器及子加法器。
每一加法器可经配置以经由多个子加法器以交插方式执行多个加法运算。举例来说,第一加法器320可经配置以使用第一子加法器322将第一输入子元素330(s0)与第五输入子元素338(s4)相加、使用第二子加法器324将第二输入子元素332(s1)与第六输入子元素340(s5)相加、使用第三子加法器326将第三输入子元素334(s2)与第七输入子元素342(s6)相加,及使用第四子加法器328将第四输入子元素336(s3)与第八输入子元素344(s7)相加。因此,约简树300可经配置以使用第一输入元素302及第二输入元素304逐子元素地以交插方式执行累积式向量算术约简运算。逐子元素地执行交插式加法可使得约简树能够对具有不同数据类型(例如,实数、虚数或复数)的子元素执行加法运算。
可将多个加法器中的底部行(例如,第一行312)的多个加法器输出提供为输出元素(例如,输出元素306及308)并存储于输出向量120中。举例来说,可将第二加法器321的每一子加法器的每一输出提供为第一输出元素306的对应输出子元素,且可将第一加法器320的每一子加法器322到328的每一输出提供为第二输出元素308的对应输出子元素。多个输出元素306及308(例如,多个输出子元素366到380)可表示累积式向量算术约简的多个部分结果。
执行所接收的累积式向量算术约简指令可产生具有由累积式向量算术约简指令所识别的输入类型的累积式向量算术约简指令的多个部分结果。举例来说,当累积式向量算术约简指令与复数运算相关联(例如,指示复数运算),且输入类型为十六位复数(例如,输入子元素s0、s2、s4及s6表示实数值且输入子元素s1、s3、s5及s7表示虚数值)时,执行累积式向量算术约简指令可包含产生第一输出元素306的第一实数子元素(例如,第一输出子元素366(d0)),及第一输出元素306的第一虚数子元素(例如,第二输出子元素368(d1))。执行累积式向量算术约简指令可进一步包含产生第二输出元素308的第二实数子元素(例如,第五输出子元素374(d4)),及第二输出元素308的第二虚数子元素(例如,第六输出子元素376(d5))。因此,当输入类型识别输入元素302及304为复数时,输出元素306及308可为复数。
在运算期间,约简树300可用于执行所接收累积式向量算术约简指令。在执行累积式向量算术约简指令期间,可基于累积式向量算术约简指令,选择性地启用多个加法器中的一或多个加法器,以产生包含输出元素306及308(例如,包含多个输出子元素366到380(d0到d7))的多个输出元素。举例来说,可选择性地完全或至少部分启用第一加法器320(例如,可基于累积式向量算术约简指令,选择性地启用子加法器322到328中的一或多者)。在累积式向量算术约简指令的执行期间,可将多个加法器的一或多个输出提供为用于存储于输出向量120中的输出元素306及308(例如,多个输出子元素366到380(d0到d7))。
参看图4,揭示约简树400的第二说明性实施例的框图。可在执行累积式向量算术约简指令(例如,图1的累积式向量算术约简指令101或图2的向量指令220)期间使用约简树400。作为说明性非限制性实例,约简树400可包含图2的约简树206或图3的约简树300。举例来说,约简树400可说明图3的约简树300的扩展,以支持输入向量122具有四个输入元素的实施例。约简树400可包含多个加法器,包含第一加法器320、第二加法器321及加法器402到408,所述加法器经配置以基于累积式向量算术约简指令而被选择性地启用以产生输出向量120。尽管图4说明多个加法器,但约简树400可包含多个其它算术运算单元。
输入向量122可包含第一输入元素302、第二输入元素304、第三输入元素410及第四输入元素412。每一输入元素可包含多个输入子元素。举例来说,第一输入元素302可包含输入子元素s0到s3、第二输入元素304可包含输入子元素s4到s7、第三输入元素410可包含输入子元素s8到s11,且第四输入元素412可包含输入子元素s12到s15。输出向量120可包含四个输出元素。举例来说,输出向量120可包含第一输出元素306、第二输出元素308、第三输出元素422及第四输出元素424。每一输出元素可包含多个输出子元素。举例来说,第一输出元素306可包含输出子元素d0到d3、第二输出元素308可包含输出子元素d4到d7、第三输出元素422可包含输出子元素d8到d11,且第四输出元素424可包含输出子元素d12到d15。
多个加法器可包含(例如,布置成)多个行,例如第一行312及第二行414。尽管展示了两行,但在其它实施例中,(例如)基于输入向量122中的输入元素的数目,多个加法器可包含较多行或较少行。尽管将每一行312、414说明为具有四个加法器,但在其它实施例中,(例如)基于输入向量122中的输入元素的数目,每一行可具有大于四个或小于四个加法器。加法器402到408中的每一者可包含四个子加法器,如参考图3的加法器320及321所描述。
可基于所接收累积式向量算术约简指令,选择性地启用多个加法器中的一或多个加法器,如参考图7所描述。未被选择性地启用的加法器(在图4中由阴影所说明,例如第二加法器321及第三加法器402)可经配置以输出在加法器处所接收的特定输入(例如,将零值加至特定输入),如关于图7所描述。举例来说,第二加法器321可经配置以接收第一输入元素302,并将第一输入元素302输出到第二行414中的加法器。选择性地启用的加法器(在图4中由未加阴影的加法器说明,例如第一加法器320、第四加法器404、第五加法器406及第六加法器408)可经配置以执行加法运算。举例来说,第一加法器320可基于第一输入元素302及第二输入元素304执行加法运算,且第四加法器404可经配置以基于第三输入元素410及第四输入元素412执行加法运算。第五加法器406可基于第一加法器320的第一加法器输出及第三加法器402的第二加法器输出(例如,第三输入元素410的值)执行加法运算,且第六加法器408可基于第一加法器输出及第四加法器404的第三加法器输出执行加法运算。
可将用于第二行414的加法器输出提供为待存储于输出向量120中的多个输出元素(例如,输出元素306、308、422及424)。经由选择性启用,多个加法器可产生(例如,提供)存储于输出向量120中的多个输出元素。输出元素306、308、422及424(例如,输出子元素d0到d15)可表示累积式向量算术约简的一或多个部分产物。举例来说,第一输出元素306可为第一输入元素302,第二输出元素308可为第一输入元素302与第二输入元素304的总和,第三输出元素422可为第一输入元素302、第二输入元素304及第三输入元素410的总和,且第四输出元素424可为第一输入元素302、第二输入元素304、第三输入元素410及第四输入元素412的总和。可逐子元素地产生输出元素306、308、422及424,其中以交插方式执行加法运算以产生输出子元素d0到d15,如参考图3所解释。举例来说,输出子元素d8可等于输入子元素s0、s4及s8的总和,且输出子元素d12可等于输入子元素s0、s4、s8及s12的总和。可以类似方式产生每一输出子元素。
尽管图4说明单一约简树400(例如,约简网络),但在其它实施例中,约简树400可逻辑地分割成以交插方式运算的多个累积式平行约简网络。举例来说,在替代性实施例中,每一累积式约简网络可包含每一加法器的特定子加法器(例如,第一累积式约简网络可包含每一加法器的对应第一子加法器)。每一累积式约简网络可与其它累积式约简网络平行地进行运算,且来自每一累积式约简网络的结果可存储于输出向量120中。举例来说,约简树400可逻辑地分割成四个十六位累积式约简网络。在另一实例中,约简树400可逻辑地分割成两个三十二位累积式约简网络。
在运算期间,约简树400可用于执行所接收累积式向量算术约简指令。在执行累积式向量算术约简指令期间,可基于累积式向量算术约简指令选择性地启用多个加法器中的一或多个加法器,以产生多个输出元素306、308、422及424。在累积式向量算术约简指令的执行期间,多个输出元素306、308、422及424可存储于输出向量120中。
参看图5,揭示约简树500的第三说明性实施例的框图。可在累积式向量算术指令(例如,图1的累积式向量算术约简指令101或图2的向量指令220)的执行期间使用约简树500。作为说明性非限制性实例,约简树500可包含图2的约简树206、图3的约简树300或图4的约简树400。约简树500可经配置以接收存储于输入向量122中的多个输入元素502,并提供(例如,产生)待存储于输出向量120中的多个输出元素506。
约简树500可包含多个输入元素502、多个加法器504及多个输出元素506。尽管图5说明多个加法器504,但约简树500可包含多个其它算术运算单元。多个输入元素502可包含输入向量122的输入元素s0到s15。多个输出元素506可包含输出向量120的输出元素d0到d15。多个输入元素502(s0到s15)可以依序次序(例如“s0、s1、s2……s15”)定序,其中s0为按照依序次序的第一依序元素且s15为最后依序元素。多个输出元素506(d0到d15)可布置成类似依序次序“d0、d1、d2……d15”。
多个输入元素502的每一输入元素可具有相同大小。举例来说,多个输入元素502的每一输入元素可为六十四个位。多个输出元素506的每一输出元素也可具有相同大小。举例来说,多个输出元素506的每一输出元素可为六十四个位。在特定实施例中,每一输入元素可具有相同于每一输出元素的大小(例如,六十四个位)。输入元素的数目可等于输出元素的数目。举例来说,输入向量122可具有十六个输入元素,且输出向量120可具有十六个输出元素。元素的数目及大小是说明性的;输入元素及输出元素可具有不同于所说明的其它大小,且向量(例如,输入向量122及输出向量120)可具有不同于所说明的其它大小(例如,其它数目的元素)。尽管未说明,但每一输入元素可包含多个输入子元素(例如,四个输入子元素),且每一输出元素可包含四个输出子元素,如参考图3到4所描述。基于由累积式向量算术约简指令所指示的类型,每一输入元素及每一输出元素可为实数、虚数或复数,例如关于图3到4所描述。
多个加法器504可布置成多个行的加法器,包含第一行512、第二行514、第三行516及第四行518。尽管说明了四个行的加法器,但在其它实施例中,(例如)基于输入元素及输出元素的数目,约简树500可包含(例如,布置成)少于四行或四行以上。多个加法器504中的每一加法器可具有相同大小。举例来说,多个加法器504中的每一加法器可为六十四位加法器。尽管未展示,但多个加法器504中的每一加法器可包含多个子加法器,且可经配置以逐子元素地以交插方式执行加法运算,例如参考图3到4所描述。
可将每一加法器输出提供到下一行上的相同列中的加法器,且也可如图5中所展示地将其路由到其它加法器,以使得约简树500能够产生多个输出元素506(d0到d15)。举例来说,可将第一行512的第一加法器(例如,输入元素s1下方的第一行512的加法器)的输出路由到第二行514的第二加法器(例如,输入元素s2下方的第二行514的加法器),及第二行514的第三加法器(例如,输入元素s3下方的第二行514的加法器)。可将第三加法器的输出路由到第三行516的第四加法器、第三行516的第五加法器、第三行516的第六加法器及第三行516的第七加法器(例如,分别为在输入元素s4到s7下方的第三行516的加法器)。另外,可将第七加法器的输出路由到第四行518的八个加法器(例如,输入元素s8到s15下方的第四行518的加法器)。
可基于累积式向量算术约简指令,选择性地启用多个加法器504中的一或多个加法器。举例来说,可由控制逻辑(未展示)(例如,图2的控制逻辑210)选择性地启用一或多个加法器(如由图5的未加阴影加法器所说明)。未经启用的一或多个加法器(如由图5的加阴影加法器所展示)可经配置以输出所接收输入(例如,将零值加至特定输入),如参考图7所描述。
约简树500可经配置以基于多个输入元素s0到s15及累积式向量算术约简指令同时产生多个输出元素d0到d15。举例来说,约简树500可经配置以将第一输入元素s0提供为第一输出元素d0,将第一输入元素s0相加到第二输入元素s1以提供第二输出元素s1,及将第一输出元素s0及第二输出元素s1存储于输出向量120中。约简树500可经配置以将第一元素s0及第二元素s1相加到第三元素s2以提供第三输出元素d2。另外,约简树500可经配置以通过产生每一输入元素s0到s15的总和而产生输出元素d15。可以类似方式将输出元素d3到d14产生为部分累积总和。
在运算期间,约简树500可用于执行所接收的累积式向量算术约简指令。在累积式向量算术约简指令的执行期间,约简树500可从输入向量122接收多个输入元素502。在累积式向量算术约简指令的执行期间,可选择性地启用多个加法器504中的多个加法器,以提供(例如,产生)多个输出元素d0到d15,且可将多个输出元素d0到d15存储于输出向量120中。
参看图6,揭示约简树600的第四说明性实施例的框图。可在执行累积式向量算术约简指令(例如,图1的累积式向量算术约简指令101或图2的向量指令220)期间使用约简树600。约简树600可包含图2的约简树206、图3的约简树300、图4的约简树400、图5的约简树500或其组合。约简树600可经配置以基于累积式向量算术约简指令从输入向量122接收多个输入元素,并产生输出向量610的多个输出元素。尽管图6说明多个加法器,但约简树600可包含多个其它算术运算单元。
约简树600可从输入向量122接收多个输入元素,包含第一输入元素302及第二输入元素304。第一输入元素302可包含输入子元素s0到s3,且第二输入元素304可包含输入子元素s4到s7。输入元素及输入子元素可具有由累积式向量算术约简指令所指示的大小。举例来说,输入元素302及304可为六十四个位,且输入子元素s0到s7可为十六个位。输出向量610可包含第一输出元素306及第二输出元素608。第一输出元素306可包含输出元素d0到d3,且第二输出元素608可包含输出元素d4到d7。输出元素及输出子元素可具有由累积式向量算术约简指令所指示的大小。举例来说,输出元素306及608可为六十四个位,且输出子元素d0到d7可为十六个位。尽管描述为包含两个元素,但输入向量122及输出向量610可包含任何数目的元素(例如,任何数目的子元素),且可具有不同于六十四个位的其它大小。
约简树600可包含经配置以基于累积式向量算术约简指令而被选择性地启用以产生输出向量610的多个加法器,包含第一加法器320、第二加法器321、第三加法器618及第四加法器619。多个加法器可包含(例如,布置成)多个行,其包含第一行312、第二行614及第三行616。多个加法器中的每一加法器可包含多个子加法器。举例来说,多个加法器中的每一加法器可为六十四位加法器,且可包含四个十六位子加法器。可基于累积式向量算术约简指令,选择性地启用多个加法器中的一或多个加法器。举例来说,可如参考图3所描述地选择性地启用第一加法器320(例如,子加法器322到328)。
第二行614中的第三加法器618可包含经配置以将第一子加法器322的输出与第三子加法器326的输出相加的第五子加法器625。第三加法器618也可包含经配置以将第二子加法器324的输出与第四子加法器328的输出相加的第六子加法器627。通过将子加法器输出相加,第三加法器618可基于子加法器322、324、326及328的输出应用算术约简以产生子加法器625及627的两个经约简输出。类似地,第三行616的第四加法器619可基于子加法器625及627的输出,使用第七子加法器629应用算术约简以产生额外经约简值。因此,第二输出元素608可包含基于多个输入子元素s0到s7的十六位约简值,以及其它部分值。举例来说,输出子元素d4可等于输入子元素s0与输入子元素s4的总和,输出子元素d5可等于输入子元素s1与输入子元素s5的总和,输出子元素d6可等于输入子元素s0、s2、s4及s6的总和,且输出子元素d7可等于输入子元素s0到s7的总和。
在运算期间,约简树600可用于执行累积式向量算术约简指令。在累积式向量算术约简指令的执行期间,可基于累积式向量算术约简指令选择性地启用多个加法器中的一或多个加法器,以产生用于存储于输出向量610中的多个输出元素306及608(例如,多个输出子元素d0到d7)。
参看图7,揭示约简树700的一部分的说明性实施例的框图。约简树700的所述部分可为图2的约简树206、图3的约简树300、图4的约简树400、图5的约简树500或图6的约简树600的一部分。可在执行向量指令(例如,图1的累积式向量算术约简指令101、图2的向量指令220、参考图9所描述的分段式向量算术约简指令901,或参考图10所描述的旋转分段式向量算术约简指令1001)期间使用约简树700的所述部分。约简树700的所述部分可经配置以基于向量指令从输入向量接收第一输入元素702(s0),并产生用于存储于输出向量中的第一输出元素706(d0)。
约简树700的所述部分可包含第一多路复用器720,所述第一多路复用器720耦合到第一加法器712且经配置以将第一输入元素702(s0)接收为第一mux输入且将零输入(例如,具有等于逻辑零的值的输入)接收为第二mux输入。尽管说明第一加法器712,但在其它实施例中,约简树700的所述部分可包含不同算术运算单元(例如,减法单元)。第一多路复用器720可经配置以从控制逻辑(例如,图2的控制逻辑210)接收第一控制信号744。第一多路复用器720可经配置以基于第一控制信号744在第一mux输入与第二mux输入之间选择,以将mux输出提供为第一加法器712的第一加法器输入732。举例来说,当第一控制信号744为特定值时,第一多路复用器720可将第一输入元素702作为第一加法器输入732提供到第一加法器712。当第一控制值744为不同值时,第一多路复用器720可将零输入作为第一加法器输入732提供到第一加法器712。因此,控制逻辑(例如,通过设定第一控制信号744)可经配置以基于向量指令而启用多个加法器的子集以接收零输入(例如,等于逻辑零的值)。
约简树700的所述部分可包含第一饱和逻辑电路730,所述第一饱和逻辑电路730耦合到第一加法器712且经配置以使第一加法器712的输出饱和。使第一加法器712的输出饱和可防止第一加法器712的输出超过最大值或降至最小值以下。第一饱和逻辑电路730可经配置以基于第一加法器712的输出而输出经饱和输出(例如,值)。举例来说,当第一加法器712的输出介于最小值与最大值之间时,经饱和输出可具有等于第一加法器712的输出的值。当第一加法器712的输出超过最大值时,经饱和输出可具有最大值的值,且当第一加法器712的输出值小于最小值时,经饱和输出可具有最小值的值。
约简树700的部分可包含耦合到第一饱和逻辑电路730的第二多路复用器724。第二多路复用器724可经配置以将第一饱和逻辑电路730的经饱和输出接收为第三mux输入,及将第一多路复用器720的输出接收为第四mux输入。第二多路复用器724可经配置以基于第二控制信号746在第三mux输入与第四mux输入之间选择,以将mux输出提供为待存储于输出向量中的第一输出元素706。当第二控制信号746为特定值时,第二多路复用器724可略过第一加法器712(例如,将第四mux输入提供为mux输出)。当并未略过第一加法器712时,第一加法器712将第一加法器输入732与第二加法器输入734相加。第二加法器输入734可为从另一加法器的输出所接收的值、零值或某其它值。通过选择第四mux输入,第二多路复用器724可略过使用第一加法器输入732及第二加法器输入734的加法运算的执行,且可将第一多路复用器720的输出提供为mux输出。因此,控制逻辑可经配置以基于向量指令略过第一加法器712。在替代性实施例中,可通过停用频率输入(未展示)略过第一加法器712。
尽管仅展示一个输入元素,但约简树700的部分可对任何数目的输入元素进行操作。举例来说,约简树700的部分可包含额外电路(例如,多路复用器、加法器、饱和逻辑电路及连接器),以对具有一个以上输入元素的输入向量进行操作。举例来说,约简树700的部分可包含额外行的加法器,其中每一额外加法器包含对应第一多路复用器、饱和逻辑电路及第三多路复用器。可由来自控制逻辑的额外控制信号控制额外电路及加法器。因此,约简树700的部分可包含于图3到6的约简树300到600中的每一者中。
在向量指令的执行期间,约简树700的部分可经配置以接收第一输入元素702,并产生用于存储于输出向量中的第一输出元素706。第一多路复用器720可基于第一控制信号744,将零输入提供到第一加法器712。第一饱和逻辑电路730可饱和第一加法器712的输出。第二多路复用器724可基于第二控制信号746略过第一加法器712。
参看图8,揭示约简树800的第五说明性实施例的框图。约简树800可包含图2的约简树206、图3到6的约简树300到600中的一或多者(如本文中进一步所描述)、图7的约简树700的部分或其任何组合。可在执行分段式向量算术约简指令(例如,参考图9所描述的分段式向量算术约简指令901,或参考图10所描述的旋转分段式向量算术约简指令1001)期间使用约简树800。可基于包含于分段式向量算术约简指令中的区段分组大小选择性地配置约简树800以使得能够执行向量指令。区段分组大小可与多个输入元素802的一或多个群组的大小相关联。举例来说,执行分段式向量算术约简指令可包含将多个输入元素802分组成具有区段分组大小的一或多个群组,之后对一或多个群组执行一或多个分段式向量算术约简运算。约简树800可经配置以启用各自具有不同区段分组大小的多个分段式向量算术约简指令的执行。举例来说,约简树800可经配置以启用具有为二的区段分组大小的第一分段式向量算术约简指令及具有为四的区段分组大小的第二分段式向量算术约简指令的执行。尽管描述了为二及四的区段分组大小,但约简树800可支持其它区段分组大小。
约简树800可包含多个输入元素802(例如,多个输入元素s0到s15)、多个加法器804,及经配置以输出多个输出元素806(d0到d15)的多个输出(例如,底部行的多个加法器输出)。尽管图8说明多个加法器804,但在其它实施例中约简树800可包含多个其它算术运算单元。处理器(例如,图2的处理器210)可经配置以在包含第一区段分组大小的第一分段式向量算术约简指令的执行期间及包含第二区段分组大小的第二分段式向量算术约简指令的执行期间使用约简树800。约简树800可经配置以同时产生多个输出元素806(d0到d15)。举例来说,可在与第一分段式向量算术约简指令的执行相关联的单处理器执行循环期间产生多个输出元素806(d0到d15)。
约简树800可经配置以从输入向量822接收多个输入元素802(s0到s15)。约简树800可经配置以产生待存储于输出向量820中的多个输出元素806(d0到d15)。多个输入元素802(s0到s15)可以依序次序(例如“s0、s1、s2……s15”)定序,其中s0为按照依序次序的第一依序元素且s15为最后依序元素。多个输出元素806(d0到d15)可以类似依序次序(例如“d0、d1、d2……d15”)定序,其中d0为第一依序元素且d15为最后依序元素。
约简树800可具有相同于输出元素的输入元素数目,且每一输入元素可具有相同于每一输出元素的大小。举例来说,输入向量822可包含十六个六十四位输入元素,且输出向量820可包含十六个六十四位输出元素。尽管未展示,但每一输入元素可包含多个十六位输入子元素,且每一输出元素可包含多个十六位输出子元素,例如参考图3到4所描述。多个输入元素及多个输出元素可表示实数值、虚数值或其组合。在特定实施例中,当输入类型为复数时,多个输入元素中的每一输入元素可包含对应实数部分及对应虚数部分。可通过以交插方式对一或多个实数部分执行第一算术运算,并对一或多个虚数部分执行第二算术运算而产生每一输出元素,例如参考图3到4所描述。
尽管描述六十四位元素及十六位子元素,但每一输入元素及每一输出元素可具有除了六十四个位之外的大小,且每一输入子元素及每一输出子元素可具有除了十六个位之外的大小。
多个加法器804可布置成多个行的加法器,如所展示。多个加法器804可包含(例如,布置成)第一行812、第二行814、第三行816及第四行818。尽管说明四行加法器,但(例如)基于输入元素的数目及输出元素的数目,约简树800可替代地包含(例如,布置成)少于四行或多于四行。多个加法器804中的每一加法器可具有相同大小。举例来说,多个加法器804中的每一加法器可为六十四位加法器。尽管未展示,但多个加法器804中的每一加法器可包含多个子加法器,且可经配置以逐子元素地以交插方式执行加法运算,例如参考图3到4所描述。
可经由多个路径830到844(如由图8中的虚线路径所展示)选择性地路由来自一或多行加法器的一或多个加法器输出,以使得约简树800能够产生多个输出元素806(d0到d15)。举例来说,可经由第一路径830将由第一加法器850所产生的第一值提供到第二加法器852、可经由第二路径840将由第二加法器852所产生的第二值提供到第三加法器854,且可通过第三路径844将由第三加法器854所产生的第三值提供到第四加法器856。可经由路径832到836及842在一或多个加法器之间类似地提供其它值。可基于分段式向量算术约简指令的区段分组大小,选择性地启用多个路径830到844中的每一路径。举例来说,基于分段式算术约简指令(例如,基于区段分组大小),可通过将由第一加法器850所产生的第一值选择为到第二加法器852的加法器输入而启用第一路径830,且可通过将零输入选择为第二加法器852的加法器输入而停用第一路径830。多个加法器804中的一或多个加法器可具有经配置以选择加法器输入的对应多路复用器(未展示),例如,参考图7所描述的从零输入及由对应路径所提供的值中选择加法器输入的第一多路复用器720。对应多路复用器可基于控制信号启用对应路径(例如,选择由对应路径所提供的输入)或停用对应路径(例如,选择零输入),如参考图7所描述。
处理器可包含经配置以基于分段式向量算术约简指令的区段分组大小,选择性地配置约简树800的控制逻辑(例如,图2的控制逻辑210)。选择性地配置约简树800可包含基于区段分组大小选择性地启用一或多个加法器(由图8中的一或多个未加阴影加法器所说明)及选择对应加法器输入。举例来说,控制逻辑可经配置以在第一分段式向量算术约简指令的执行期间,基于第一区段分组大小选择性地启用多个加法器804的第一子集并选择加法器输入的对应第一子集(例如,约简树800可经配置为第一配置),及在第二分段式向量算术约简指令的执行期间,基于第二区段分组大小选择性地启用多个加法器804的第二子集并选择加法器输入的对应第二子集(例如,约简树800可经配置为第二配置)。约简树800的特定配置可与启用加法器的特定子集并选择加法器输入的特定子集相关联。控制逻辑可使用一或多个控制信号选择性地启用多个加法器804的特定子集并选择加法器输入的对应子集(例如,选择性地启用多个路径830到844的特定子集),如参考图7所描述。举例来说,当区段分组大小为二时,可停用多个路径830到844中的每一者(例如,对于与多个路径830到844中的每一者相关联的每一加法器输入可选择零值),且仅可启用第一行812中的未加阴影加法器。当区段分组大小为四时,仅可启用路径的第一子集(830到836)及行812到814中的未加阴影加法器。当区段分组大小为八时,仅可启用路径的第二子集(830到842)及行812到816中的未加阴影加法器。当区段分组大小为十六时,可启用所有多个路径830到844及行812到818的所有未加阴影加法器。因此,控制逻辑可经配置以基于区段分组大小选择性地启用加法器的子集及路径的子集(例如,选择对应加法器输入的子集)。
通过选择性地启用多个加法器804中的一或多个加法器,并选择一或多个对应加法器输入,约简树800可经配置以基于多个输入元素802(s0到s15)及包含于分段式向量算术约简指令(例如,第一分段式向量算术约简指令或第二分段式向量算术约简指令)中的区段分组大小而同时产生多个输出元素806(d0到d15)。举例来说,当区段分组大小为二时,约简树800可产生(例如,提供)等于s0+s1的第一输出元素d1、等于s2+s3的第二输出元素d3、等于s4+s5的第三输出元素d5、等于s6+s7的第四输出元素d7、等于s8+s9的第五输出元素d9、等于s10+s11的第六输出元素d11、等于s12+s13的第七输出元素d13及等于s14+s15的第八输出元素d15。当区段分组大小为四时,约简树800可产生等于s0+s1+s2+s3的第二输出元素d3、等于s4+s5+s6+s7的第四输出元素d7、等于s8+s9+s10+s11的第六输出元素d11及等于s12-s13+s14+s15的第八输出元素d15。当区段分组大小为八时,约简树800可产生等于s0+s1+s2+s3+s4+s5+s6+s7的第四输出元素d7,及等于s8+s9+s10+s11+s12-s13+s14+s15的第八输出元素d15。当区段分组大小为十六时,约简树800可产生等于每一输入元素s0到s15的总和的第八输出元素d15。因此,基于区段分组大小,约简树800可经配置以选择性地启用多个行812到818的一或多个加法器并选择一或多个对应加法器输入,以同时产生多个输出元素806。
在运算期间,约简树800可用于执行分段式向量算术约简指令。在分段式向量算术约简指令的执行期间,约简树800可从输入向量822接收多个输入元素802(s0到s15)。举例来说,在第一分段式向量算术约简指令的执行期间,可将多个输入元素802(s0到s15)分组成具有第一区段分组大小的一或多个第一群组,及在第二分段式向量算术约简指令的执行期间,可将所述多个输入元素分组成具有第二分组大小的一或多个第二群组。在分段式向量算术约简指令的执行期间,可使用多个输出(例如,第四行818的多个加法器输出),选择性地启用多个加法器804中的一或多个加法器以产生多个输出元素806(d0到d15),且可将多个输出元素806(d0到d15)存储于输出向量820中。
约简树800使得能够使用单一约简树执行具有第一区段分组大小的第一分段式向量算术约简指令,及具有第二区段分组大小的第二分段式向量算术约简指令。相比于包含用于在具有不同区段分组大小的多个指令的执行期间使用的多个约简树的处理器,使用单一约简树可使得能够减少装置大小及功率消耗。
参看图9,揭示执行向量指令的特定说明性过程的图式,且将其大体上指定为900。向量指令可包含一分段式向量算术约简指令,例如一说明性分段式向量算术约简指令901。分段式向量算术约简指令901可执行于处理器(例如,图2的处理器202)处,所述处理器包含约简树,例如图2的约简树206、图3到6的约简树300到600中的一或多者、图7的约简树700的部分、图8的约简树800,或其任何组合。处理器可接收包含存储于一输入寄存器910中的多个输入元素902的输入向量。处理器可处理多个输入元素902,并同时产生一输出寄存器920的多个输出元素924(例如,内容)。
多个输出元素924可是基于分段式向量算术约简指令901。举例来说,通过基于分段式向量算术约简指令901的区段分组大小将多个输入元素902中的一特定输入元素加至多个输入元素902中的一或多个其它输入元素,执行分段式向量算术约简指令901可产生一特定输出元素。
输入寄存器910可包含多个输入元素902。举例来说,多个输入元素902(例如,输入向量)可包含N个元素,其中N为大于一的整数。多个输入元素902可包含输入元素s0到s(N-1)。多个输入元素902可以依序次序(例如“s0、s1、s2……s(N-1)”)存储,其中s0为第一依序输入元素且s(N-1)为最后依序输入元素。尽管展示五个输入元素,但多个输入元素902的数目(例如,N)可包含多于五个元素或少于五个元素。
在执行分段式向量算术约简指令901之前,输出寄存器920可包含多个先前元素922。多个先前元素922可包含先前元素d0到d(N-1)。多个先前元素922可包含于另一向量(例如,图2的旋转向量280)或不同向量中。多个先前元素922可存储于由分段式向量算术约简指令901所识别的位置中,例如另一寄存器或在存储器中的一位置。多个先前元素可包含于分段式向量算术约简指令901中,或可由存储于分段式向量算术约简指令901的字段或参数中的值(例如,由指标)指示。在执行分段式向量算术约简指令之前,可按照依序次序存储多个先前元素922。举例来说,可按照特定依序次序“d0、d1、d2、d3……d(N-1)”(例如,d0为第一依序先前元素且d(N-1)为最后的依序先前元素)存储多个先前元素922。
过程900说明具有为二的说明性区段分组大小的分段式向量算术约简指令901的执行。执行分段式向量算术约简指令可包含将多个输入元素902分组成多个群组,例如第一集合的输入元素904及第二集合的输入元素906。可对第一集合的输入元素904执行第一算术(例如,加法)运算,以产生等于s0+s1的第一结果,且可对第二集合的输入元素906执行第二算术(例如,加法)运算,以产生等于s2+s3的第二结果。可将第一结果(s0+s1)插入到输出寄存器920的第一输出元素916中,且可将第二结果(s2+s3)插入到输出寄存器920的第二输出元素918中。当所产生的结果数目小于输出寄存器920中的输出元素数目时,多个先前元素922中的一或多个先前元素可保留于输出寄存器920中(例如,可未经盖写)。举例来说,当将第一输出元素916及第二输出元素918插入到输出寄存器920中时,多个输出元素可包含多个输出元素924中的先前元素d0及d2。当分段式向量算术约简指令901的区段分组大小为不同大小时,多个输入元素902可经分组成不同集合的输入元素,且可产生不同结果。
如图9中所说明,分段式向量算术约简指令901可包含描绘为名称vraddw的指令名称980(例如,作业码)。分段式向量算术约简指令901也可包含第一字段982(Vu)、第二字段984(Vd)、第三字段986(Q)、第四字段988(Op)、第五字段990(s2)、第六字段992(sc32)及第七字段994(sat)。存储于第一字段982中的第一值可指示如存储于输入寄存器910中的输入向量。在替代性实施例中,存储于第一字段982中的第一值可指示一对输入向量(例如,向量Vu及额外向量Vv),其中所述对向量的第一向量(例如,Vu)与实数相关联,且所述对向量的第二向量(例如,Vv)与虚数相关联。第二字段984中的第二值可指示用于在分段式向量算术约简指令901的执行期间使用的存储在输出寄存器920中的输出向量。存储于第三字段986中的第三值可指示屏蔽(例如,屏蔽Q),例如参考图11A到B所描述;存储于第四字段988中的第四值可指示运算向量(例如,运算向量Op);存储于第五字段990中的第五值可指示区段分组大小(例如,“s2”可指示为二的区段分组大小);存储于第六字段992中的第六值可指示输入值的类型(例如,“sc32”可指示三十二位复数输入类型);且存储于第七字段994中的第七值可指示是否将在分段式向量算术约简指令的执行期间进行饱和。尽管描述七个字段,但分段式向量算术约简指令可包含较多字段或较少字段。
尽管已描述加法运算,但分段式向量算术约简指令901并不限于仅执行加法运算。举例来说,分段式向量算术约简指令901可指示待对多个输入元素902执行的一或多个算术运算。一或多个算术运算可包含加法运算及减法运算。可由特定字段(例如,特定参数)(例如,第四字段988)中的值指示一或多个算术运算。举例来说,第四字段988可包含指向存储运算向量(例如,指示一或多个算术运算的向量)的存储器中的位置或指向存储运算向量的寄存器的指针。运算向量的每一元素可指示待在分段式向量算术约简指令901的执行期间对多个输入元素902中的对应元素执行的特定运算(例如,加法运算或减法运算)。举例来说,执行分段式向量算术约简指令可包含基于区段分组大小将多个输入元素902分组成一或多个输入群组,并对一或多个输入群组执行一或多个算术运算以产生多个输出元素924。当一或多个算术运算中的至少一者为减法运算时,可在产生多个输出元素924之前,对多个输入元素902中的一或多个元素求补。
在运算期间,处理器可接收分段式向量算术约简指令901。处理器可使用多个输入元素902执行分段式向量算术约简指令901,以产生多个输出元素924并将其存储于输出寄存器920中。多个输出元素924可表示基于将多个输入元素902分组成一或多个输入元素群组的结果,所述分组是基于分段式向量算术约简指令901的区段分组大小。
通过基于分段式向量算术约简指令901的区段分组大小产生多个输出元素924,分段式向量算术约简指令901使得能够使用单一约简树执行具有不同区段分组大小的多个分段式向量算术约简指令。相比于包含用于在具有不同区段分组大小的多个指令的执行期间使用的多个约简树的处理器,使用单一约简树可使得能够减少装置大小及功率消耗。
参看图10,揭示执行旋转分段式向量算术约简指令的特定说明性过程的图式,且将其大体上指定为1000。旋转分段式向量算术约简指令可为单一向量指令,且可包含说明性旋转分段式向量算术约简指令1001。旋转分段式向量算术约简指令1001可执行于处理器(例如,图2的处理器202)处,所述处理器包含约简树,例如图2的约简树206、图3到6的约简树300到600中的一或多者、图7的约简树700的部分、图8的约简树800或其任何组合。处理器可接收包含存储于输入寄存器910中的多个输入元素902的输入向量。处理器可处理多个输入元素902,并同时产生输出寄存器920的多个输出元素1024(例如,内容)。
旋转分段式向量算术约简指令1001可包含描绘为名称vraddw的指令名称1080(例如,作业码)。旋转分段式向量算术约简指令1001也可包含第一字段1082(Vu)、第二字段1084(Vd)、第三字段1086(Q)、第四字段1088(Op)、第五字段1090(s2)、第六字段1092(sc32)、第七字段1094(sat)及第八字段1096(rot)。尽管说明八个字段,但旋转分段式向量算术约简指令1001可包含较多字段或较少字段。字段1082到1094可对应于图9的分段式向量算术约简指令901的字段。存储于第八字段1096中的值可指示是否将发生旋转。举例来说,存储于第八字段1096中的值可指示待发生的旋转的方向及大小。旋转可具有等于一个输入元素的大小的旋转量(例如,六十四个位),且可为向左。在其它实施例中,存储于第八字段1096中的值可指示旋转的其它大小及方向。作为另一实例,存储于第八字段1096中的值可指示不发生旋转(例如,旋转分段式向量算术约简指令1001可类似于图9的分段式向量算术约简指令901进行操作)。在特定实施例中,存储于第九字段中的值(未展示)可指示在将算术运算的结果存储于输出寄存器920中之前,是否将盖写(例如,设定为等于零)输出寄存器920中的多个先前元素922(例如,内容)。在替代性实施例中,存储于不同字段(例如,第八字段1096)中的值可指示是否将盖写输出寄存器920中的多个先前元素922。
可根据分段式向量算术约简指令901的执行加上旋转步骤而进行旋转分段式向量算术约简指令1001的执行。举例来说,旋转分段式向量算术约简指令1001的执行可包含在产生算术运算的结果之前,确定是否旋转输出寄存器920中的多个先前元素922。响应于关于要旋转多个先前元素922的第一确定(例如,基于存储于第八字段1096中的值),可按由第八字段1096指示的旋转量旋转输出寄存器920中的多个先前元素922(例如,内容)。举例来说,当旋转量为六十四个位且方向为向右时,可将多个先前元素922向右旋转一个先前元素。因此,在旋转分段式向量算术约简指令1001的执行期间(例如,在产生结果并将其存储于输出寄存器910中之前),输出寄存器910的第一依序元素可存储d(N-1),输出寄存器910的第二依序元素可存储d(0),输出寄存器910的第三依序元素可存储d(1),且输出寄存器920的最后依序元素可存储d(N-2)。作为另一实例,当方向为向左时,可按旋转量将多个先前元素922向左旋转。响应于关于不要旋转多个先前元素922的第二确定(例如,基于存储于第八字段1096中的值),可将多个先前元素922维持为先前依序次序(例如,d(0)……d(N-1))。举例来说,当存储于第八字段1096中的值为零值或空值时(例如,当第八字段1096并不包含于旋转分段式向量算术约简指令1001中时),可不旋转多个先前元素922。因此,可基于旋转分段式向量算术约简指令1001,选择性地(例如,任选地)旋转多个先前元素922。
执行旋转分段式向量算术约简指令1001也可包含确定是否要盖写多个先前元素922。举例来说,可基于旋转分段式向量算术约简指令1001(例如,基于存储于第九字段中的值),将多个先前元素922中的并未由算术运算的结果替换的每一元素设定为零值(例如,盖写)。可由约简树中两输入皆接收零值的对应加法器(如由图8的第一行加法器812中的输入元素s0下方的加法器所说明)将特定先前元素设定为零值。在其它实施例中,可将多个先前元素922设定为(例如,盖写为)不同值。
在已旋转输出寄存器920中的多个先前元素922之后,可基于多个输入元素902产生算术运算结果,并将结果插入到输出寄存器920中。旋转分段式向量算术约简指令1001的执行可包含将多个输入元素902分组成多个群组,例如第一集合的输入元素904及第二集合的输入元素906。可对第一集合的输入元素904执行第一算术(例如,加法)运算以产生第一结果s0+s1,且可对第二集合的输入元素906执行第二算术(例如,加法)运算以产生第二结果s2+s3。可将第一结果(s0+s1)插入到输出寄存器920的第一输出元素1016中,且可将第二结果(s2+s3)插入到输出寄存器920的第二输出元素1018中。第一输出元素1016及第二输出元素1018可为输出寄存器920的不同输出元素。
第一集合的输入元素904中的输入元素的第一数目及第二集合的输入元素906中的输入元素的第二数目可是基于由旋转分段式向量算术约简指令1001所识别的区段分组大小。举例来说,元素的第一数目与元素的第二数目可相同。当所产生结果的数目小于输出寄存器920中的输出元素数目时,多个先前元素922中的一或多个经旋转先前元素(或当在产生结果之前盖写多个先前元素922时,为一或多个零值)可保留于输出寄存器920中(例如,可未经盖写)。举例来说,当将第一输出元素1016及第二输出元素1018插入到输出寄存器920中时,多个输出元素可包含多个输出元素1024中的经旋转先前元素d(N-1)及d1。当分段式向量算术约简指令1001的区段分组大小为不同大小时,多个输入元素902可经分组成不同集合的输入元素,且可产生不同结果。
在运算期间,处理器可接收旋转分段式向量算术约简指令1001。处理器可使用多个输入元素902执行旋转分段式向量算术约简指令1001,以产生多个输出元素1024并将其存储于输出寄存器920中。可基于旋转分段式向量算术约简指令1001,选择性地旋转输出寄存器的内容(例如,多个先前元素922),且可基于基于区段分组大小而分组成一或多个输入元素群组的多个输入元素902产生结果,且可将结果插入到输出寄存器920中。
参看图11A,揭示执行具有遮蔽的累积式向量算术约简指令的第一说明性实施例的图式,且将其大体上指定为1100。在说明性非限制性实例中,累积式向量算术约简指令可为图1的累积式向量算术约简指令101。累积式向量算术约简指令可识别屏蔽1130(例如,向量屏蔽)。如参考图1所解释,屏蔽1130可由存储于累积式向量算术约简指令101的第三字段186(Q)中的值指示。举例来说,屏蔽1130可包含于累积式向量算术约简指令中,或可由包含于指令中的指针指示,其中指标指向存储有屏蔽1130的数据结构中的位置或寄存器。可基于屏蔽1130的对应元素等于零,遮蔽多个元素102的个别值(例如,元素)(例如,作为零值提供到用于产生一或多个输出元素的约简树)。替代性地,可基于屏蔽1130的元素等于一而遮蔽所述值。
在累积式向量算术约简指令的执行期间,可在将第一元素104提供为第一输出元素112之前,将屏蔽1130应用于多个元素102。应用屏蔽1130可包含取决于屏蔽1130的对应屏蔽值,为多个元素102中的特定元素提供零值。如所展示,在将屏蔽1130应用于多个元素102之前,输入向量122包含元素s0、s1、s2及s(N-1)。在应用屏蔽1130之后,多个元素102包含s0、零(基于屏蔽1130的对应元素等于零,其被提供以代替s1)、s2及s(N-1)。在另一实施例中,将屏蔽1130应用于多个元素可包含修改输入向量122中的多个元素102中的一或多个元素的值。在将屏蔽1130应用于多个元素102之后,可如参考图1所解释地进行累积式向量算术约简指令的执行。因此,输出向量120可包含等于s0的第一输出元素112、等于0+s0(例如,s0)的第二输出元素114、等于s2+s0的第三输出元素116,及等于s0+s2+……+s(N-1)的第N输出元素118。
参看图11B,揭示执行包含遮蔽的累积式向量算术指令的第二说明性实施例的图式,且将其大体上指定为1101。执行累积式向量算术约简指令可包含将屏蔽1130应用于输出向量120。
在累积式向量算术约简指令的执行期间,可将屏蔽1130应用于输出向量120以产生经遮蔽输出向量1126。如所展示地应用屏蔽1130可带来具有元素s0、零、s0+s1+s2,及s0+s1+s2+……+s(N-1)的经遮蔽输出向量1126。尽管图11B展示在将输出元素存储于输出向量120中之后应用屏蔽1130,但可在填入输出向量120之前将屏蔽1130应用于算术运算的结果。举例来说,可基于屏蔽1130防止将一或多个输出(例如,s0+s1)存储于输出向量120中,使得并不盖写输出向量120中的先前值。在特定实施例中,输出向量120及经遮蔽输出向量1126可存储于相同位置处,例如相同寄存器处。
另外,也可将图11A到B中所展示的遮蔽以类似方式应用于图9的分段式向量算术约简指令901,或图10的旋转分段式向量算术约简指令1001。举例来说,在分段式向量算术约简指令901的执行期间,可在分组多个元素102之前将屏蔽1130应用于多个元素102。作为另一实例,在旋转分段式向量算术约简指令1001的执行期间,可在旋转存储有输出向量120的输出寄存器的内容之后(例如,在旋转输出向量120的内容之后),将屏蔽1130应用于输出向量120。
参看图12,说明执行累积式向量算术约简指令的方法1200的说明性实施例的流程图。累积式向量算术约简指令可为图1的累积式向量算术约简指令101,或图2的向量指令220。在特定实施例中,可由图2的处理器202执行方法1200。
在1202处,可在处理器处执行向量指令。向量指令可为图1的累积式向量算术约简指令101。向量指令可包含包含多个输入元素的向量输入。举例来说,向量输入可为图1到6的输入向量122。向量输入可包含图1的多个输入元素102。多个输入元素(例如,向量输入)可按依序次序存储。可由向量指令识别向量输入。举例来说,可由存储于特定字段(例如,参数)(例如图1的向量算术约简指令101的第三字段184)中的值识别向量输入。
在1204处,可将多个输入元素中的第一输入元素提供为第一输出元素。第一输入元素可为图1的第一元素104(s0),且第一输出元素可为图1的第一输出元素112(s0)。举例来说,可通过将零输入(例如,等于逻辑零的值)加至第一输入元素将第一输入元素提供(例如,产生)为第一输出元素。可基于来自包含于处理器中的控制逻辑的控制信号,加上零输入,例如参考图7所描述。
在1206处,可对多个输入元素中的第一输入元素及第二输入元素执行第一算术运算,以提供(例如,产生)第二输出元素。举例来说,第一算术运算可为加法运算。在其它实施例中,第一算术运算可为减法运算。第二输入元素可为图1的第二元素106(s1),且第二输出元素可为图1的第二输出元素114(s0+s1)。举例来说,可将等于第一输入元素与第二输入元素的总和的值产生(例如,提供)为第二输出元素。每一输入元素及每一输出元素可包含多个子元素,且可逐子元素地以交插方式执行加法,例如参考图3到4所描述。
在1208处,可将第一输出元素及第二输出元素存储于输出向量中。输出向量可为图1到6的输出向量120。举例来说,可将第一输出元素(例如,等于第一输入元素的值)及第二输出元素(例如,等于第一输入元素与第二输入元素的总和的值)存储于输出向量的不同输出元素中,如图1中所展示。
可以此方式产生额外输出元素。举例来说,可对多个输入元素中的第一输入元素、第二输入元素及第三输入元素执行第二算术运算,以产生(例如,提供)第三输出元素。因此,可通过对多个输入元素中的特定元素及多个元素中的在依序次序上在顺序上在特定输入元素之前的一或多个其它输入元素执行特定算术运算而产生特定输出元素。
根据方法1200,可产生多个输出元素(例如,第一输出元素及第二输出元素),且所述输出元素可表示累积式向量算术约简的多个部分结果。相比于在多个向量指令的执行期间产生多个部分结果,通过在单一向量指令的执行期间产生多个部分结果,方法1200可提供存储及功率消耗方面的改善。
参看图13,说明使用约简树执行向量指令的方法1300的说明性实施例的流程图。向量指令可为图2的向量指令220,或图9的分段式向量算术约简指令901。在特定实施例中,可由图2的处理器202执行方法1300。
在1302处,可在处理器处接收包含区段分组大小的向量指令。举例来说,向量指令可为具有由第五字段990所指示的区段分组大小的图9的分段式向量算术约简指令901。处理器可包含约简树。约简树可包含图2的约简树206、图3到6的约简树300到600、图7的约简树700的部分、图8的约简树800或其任何组合。约简树可包含多个输入、多个算术运算单元,及多个输出。举例来说,作为说明性实例,多个输入可为图8的多个输入元素802,或图9的多个输入元素902;多个算术运算单元可为图8的多个加法器804;且多个输出可为图8的多个输出元素806,或图9的多个输出元素924。
在1304处,可确定区段分组大小。举例来说,可基于向量指令的特定字段(例如,图9的第五字段990),确定区段分组大小。在向量指令的执行期间,区段分组大小可指示与多个输入元素相关联的一或多个群组的大小。
在1306处,可基于区段分组大小,使用约简树执行向量指令以同时产生多个输出。举例来说,执行向量指令可包含将多个输入元素分组成具有区段分组大小的一或多个群组,并对一或多个群组执行一或多个算术运算以产生多个输出。可基于向量约简指令,在处理器的单一处理循环期间产生多个输出。
约简树可是可选择性地配置的,以用于与多个不同区段分组大小一起使用。举例来说,约简树的配置可与特定区段分组大小相关联。约简树的配置可与启用算术运算单元的特定子集及选择算术运算单元输入的特定子集(例如,所启用的路径的特定子集)相关联,例如图8的多个加法器804及多个路径830到844的子集。在确定向量指令中的区段分组大小之后,处理器可确定约简树是否经配置以用于与所述区段分组大小一起使用(例如,约简树是否处于与区段分组大小相关联的特定配置)。响应于确定约简树并未经配置以用于与区段分组大小一起使用,可基于区段分组大小变更约简树的配置。举例来说,基于区段分组大小,可启用多个算术运算单元中的一或多个算术运算单元,且可选择一或多个算术运算单元输入。响应于确定约简树经配置以用于与区段分组大小一起使用,可使用约简树执行向量指令。举例来说,当约简树已经配置处于与区段分组大小相关联的特定配置时,可无需在执行向量指令之前变更约简树。
根据方法1300,约简树可是可选择性地配置的,以用于与具有不同区段分组大小的多个指令一起使用。相比于包含用于在执行具有不同区段分组大小的多个指令期间使用的多个约简树的处理器,使用单一约简树可使得能够减少装置大小及功率消耗。
参看图14,说明执行旋转分段式向量算术约简指令的方法1400的说明性实施例的流程图。旋转分段式向量算术约简指令可为图2的向量指令220,或图10的旋转分段式向量算术约简指令1001。在特定实施例中,可由图2的处理器202执行方法1400。
在1402处,可执行包含多个输入元素的向量指令。举例来说,向量指令可为旋转分段式向量算术约简指令1001,且多个输入元素可为图10的多个输入元素902。
在1404处,可分组多个输入元素的第一子集,以形成第一集合的输入元素。举例来说,第一集合的输入元素可为图10的第一集合的输入元素1004。可基于包含于旋转分段式向量算术约简指令中的区段分组大小,分组多个输入元素的第一子集,以形成第一集合的输入元素。举例来说,可由旋转分段式向量算术约简指令的特定字段(例如,参数)(例如图10的旋转分段式向量算术约简指令1001的第五字段1090)识别区段分组大小。
在1406处,可分组多个输入元素的第二子集,以形成第二集合的输入元素。举例来说,第二集合的输入元素可为图10的第二集合的输入元素1006。可基于包含于旋转分段式向量算术约简指令中的区段分组大小,分组多个输入元素的第二子集,以形成第二集合的输入元素。在特定实施例中,输入元素的第一集合的大小可与输入元素的第二集合的大小相同。在替代性实施例中,输入元素的第一集合的大小及输入元素的第二集合的大小可为不同大小。
在1408处,可对第一集合的输入元素执行第一算术运算。举例来说,可对第一集合的输入元素执行第一加法运算。在特定实施例中,可由运算向量指示第一算术运算。可由存储于旋转分段式向量算术约简指令的特定字段(例如,参数)(例如图10的旋转分段式向量算术约简指令1001的第四字段1088)中的值指示运算向量。
在1410处,可对第二集合的输入元素执行第二算术运算。举例来说,可对第二集合的输入元素执行第二加法运算。在特定实施例中,可由运算向量指示第二算术运算。
在1412处,可旋转输出寄存器的内容。举例来说,输出寄存器可为图10的输出寄存器1020,且可含有多个先前元素(例如,内容),例如图10的多个先前元素922。可由存储于旋转分段式向量算术约简指令的特定字段(例如,参数)(例如图10的旋转分段式向量算术约简指令1001的第二字段1084)中的值识别输出寄存器。作为说明性实例,多个先前元素可为由先前所执行向量指令所产生的结果,或可为多个空值。在特定实施例中,多个先前元素可为先前所执行旋转分段式向量算术约简指令的结果。旋转输出寄存器的内容可包含基于存储于旋转分段式向量算术约简指令的特定字段(例如,参数)(例如,图10的旋转分段式向量算术约简指令1001的第八字段1096(例如,旋转字段))中的值,选择性地(例如,任选地)旋转输出寄存器的内容。举例来说,存储于旋转字段中的值可指示旋转的大小及旋转的方向,且可按所述旋转的大小并在所述旋转方向上旋转输出寄存器的内容。可基于旋转分段式向量算术约简指令的特定字段,盖写(例如,设定为等于零值)输出寄存器的内容。
在1414处,在旋转输出寄存器的内容之后,可将第一算术运算的第一结果及第二算术运算的第二结果插入到输出寄存器中。举例来说,可将第一结果插入到输出寄存器的第一输出元素中,且可将第二结果插入到输出寄存器的第二输出元素中。第一输出元素可为图10的第一输出元素1016,且第二输出元素可为图10的第二输出元素1018。第一结果及第二结果可盖写先前存储于输出寄存器中(并在1412处经旋转)的值。
根据方法1400,对于多个区段分组大小,可经由使用单一约简树执行单一向量指令来执行旋转及分段式向量算术约简。相比于包含用于在执行具有不同区段分组大小的多个指令期间使用的多个约简树的处理器,使用单一约简树可使得能够减少装置大小及功率消耗。
参看图15,描绘包含约简树1580的装置(例如,通信装置)的特定说明性实施例的框图,所述约简树用于执行累积式向量算术约简指令1562及分段式向量算术约简指令1564,且将所述装置大体上指定为1500。作为说明性实例,约简树1580可包含图2的约简树206、图3到6的约简树300到600、图7的约简树700的部分,或图8的约简树800。装置1500可为无线电子装置,且可包含耦合到存储器1532的处理器,例如,数字信号处理器(DSP)1510。
处理器1510可经配置以执行存储于存储器1532(例如,计算机可读存储媒体)中的计算机可执行指令1560(例如,一或多个指令的程序)。指令1560可包含累积式向量算术约简指令1562,及/或分段式向量算术约简指令1564。累积式向量算术约简指令1562可为图1的累积式向量算术约简指令101,或图2的向量指令220。分段式向量算术约简指令1564可为图2的向量指令220,图9的分段式向量算术约简指令901,或图10的旋转分段式向量算术约简指令1001。
摄像机接口1568耦合到处理器1510,且还耦合到摄像机(例如,视频摄像机1570)。显示器控制器1526耦合到处理器1510,及显示器1528。编码器/解码器(编解码器)1534也可耦合到处理器1510。扬声器1536及麦克风1538可耦合到编解码器1534。无线接口1540可耦合到处理器1510及天线1542,使得可将经由天线1542及无线接口1540所接收的无线数据提供到处理器1510。
在特定实施例中,处理器1510可经配置以执行存储于非暂时性计算机可读媒体(例如,存储器1532)处的计算机可执行指令1560,所述指令可执行以使得计算机(例如,处理器1510)将多个元素中的第一元素提供为第一输出元素。计算机可执行指令1560可包含累积式向量算术约简指令1562。多个元素可为图1的多个元素102,且可存储于输入向量(例如图1到6的输入向量122)中。可进一步由计算机执行计算机可执行指令1560,以对多个元素中的第一元素及第二元素执行算术运算,以提供第二输出。可进一步由计算机执行计算机可执行指令1560,以将第一输出及第二输出存储于输出向量中。输出向量可为图1到6的输出向量120。
在特定实施例中,处理器1510可经配置以执行存储于非暂时性计算机可读媒体(例如,存储器1532)处的计算机可执行指令1560,可执行所述指令以使得计算机(例如,处理器1510)接收包含区段分组大小的向量指令。向量指令可为分段式向量算术约简指令1564。可进一步执行计算机可执行指令1560以确定区段分组大小。可进一步执行计算机可执行指令1560以基于区段分组大小使用约简树执行向量指令来同时产生多个输出。作为说明性实例,约简树可包含图2的约简树206、图3到6的约简树300到600、图7的约简树700的部分,或图8的约简树800。约简树可包含多个输入、多个算术运算单元,及多个输出。约简树可是可选择性地配置的,以用于与多个不同区段分组大小一起使用。
在特定实施例中,处理器1510、显示器控制器1526、存储器1532、编码解器1534、无线接口1540及摄像机接口1568包含于系统级封装或系统单芯片装置1522中。在特定实施例中,输入装置1530及电力供应器1544耦合到系统单芯片装置1522。此外,在特定实施例中,如图15中所说明,显示器1528、输入装置1530、扬声器1536、麦克风1538、天线1542、视频摄像机1570及电力供应器1544在系统单芯片装置1522外部。然而,显示器1528、输入装置1530、扬声器1536、麦克风1538、天线1542、视频摄像机1570及电力供应器1544中的每一者可耦合到系统单芯片装置1522的组件(例如,接口或控制器)。
可由现场可编程门阵列(FPGA)装置、特殊应用集成电路(ASIC)、例如中央处理单元(CPU)的处理单元、数字信号处理器(DSP)、控制器、另一硬件装置、固件装置或其任何组合实施图12到14的方法1200到1400。作为一实例,可由执行存储于存储器1532中的指令的处理器起始图12的方法1200、图13的方法1300、图14的方法1400或其任何组合,如关于图15所描述。
结合所描述实施例中的一或多者,揭示可包含用于将多个元素中的第一元素提供为第一输出的装置的设备。用于提供的装置可包含约简树的一或多个加法器,例如图2的约简树206、图3到6的约简树300到600、图7的约简树700的部分、图8的约简树800、经配置以将第一元素提供为第一输出的一或多个其它装置或电路,或其任何组合。设备可进一步包含用于基于多个元素中的第一元素及第二元素产生第二输出的装置。用于产生的装置可包含约简树的一或多个加法器,例如图2的约简树206、图3到6的约简树300到600、图7的约简树700的部分、图8的约简树800、经配置以基于第一元素及第二元素产生第二输出的一或多个其它装置或电路,或其任何组合。设备可进一步包含用于将第一输出及第二输出存储于输出向量中的装置。用于存储的装置可包含图2的约简树206、图3到6的约简树300到600、图7的约简树700的部分、图8的约简树800、经配置以将输出存储于输出向量中的一或多个其它装置或电路,或其任何组合。
设备也可包含用于饱和第二输出的装置。用于饱和第二输出的装置可包含图7的第一饱和逻辑电路730或第二饱和逻辑电路732、经配置以饱和输出的一或多个其它装置或电路,或其任何组合。
结合所描述实施例中的一或多者,揭示可包含用于基于向量指令同时产生多个输出的装置的设备。用于同时产生的装置可包含图2的约简树206、图3到6的约简树300到600、图7的约简树700的部分、图8的约简树800、经配置以基于向量指令同时产生多个输出的一或多个其它装置或电路,或其任何组合。可由处理器在包含第一区段分组大小的第一指令的执行期间及包含第二区段分组大小的第二指令的执行期间使用用于同时产生的装置。
所揭示实施例中的一或多者可实施于可包含机顶盒、娱乐单元、导航装置、通信装置、个人数字助理(PDA)、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、平板计算机、桌面计算机、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、视频播放器、数字视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器或其组合的系统或设备(例如,装置1500)中。作为另一说明性非限制性实例,系统或设备可包含远程单元,例如移动电话、手持式个人通信系统(PCS)单元、例如个人数据助理的便携式数据单元、具备全球定位系统(GPS)功能的装置、导航装置、例如仪表读取设备的固定位置数据单元,或存储或检索数据或计算机指令的任何其它装置,或其任何组合。尽管图1到15中的一或多者可说明根据本发明的教示的系统、设备及/或方法,但本发明并不限于这些所说明系统、设备及/或方法。本发明的实施例可适于用于包含集成电路(包含存储器及芯片上电路)的任何装置中。
所揭示实施例中的一或多者可实施于可包含通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、平板计算机、便携式计算机、或桌面计算机的系统或设备(例如,装置1500)中。另外,装置1500可包含机顶盒、娱乐单元、导航装置、个人数字助理(PDA)、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、视频播放器、数字视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器、存储或检索数据或计算机指令的任何其它装置,或其组合。作为另一说明性非限制性实例,系统或设备可包含远程单元,例如移动电话、手持式个人通信系统(PCS)单元、例如个人数据助理的便携式数据单元、具备全球定位系统(GPS)功能的装置、导航装置、例如仪表读取设备的固定位置数据单元,或存储或检索数据或计算机指令的任何其它装置,或其任何组合。
尽管图1到15中的一或多者可说明根据本发明的教示的系统、设备及/或方法,但本发明并不限于这些所说明系统、设备及/或方法。本发明的实施例可适于用于包含集成电路(包含存储器、处理器及芯片上电路)的任何装置中。
所属领域的技术人员将进一步了解,可将结合本文中所揭示的实施例所描述的各种说明性逻辑块、配置、模块、电路及算法步骤实施为电子硬件、由处理器所执行的计算机软件,或两者的组合。上文大体在功能性方面描述各种说明性组件、块、配置、模块、电路及步骤。此功能性是实施为硬件还是执行软件取决于特定应用及强加于整个系统上的设计约束。对于每一特定应用来说,所属领域的技术人员可以变化的方式实施所描述的功能性,但不应将这些实施决策解释为导致脱离本发明的范围。
结合本文中所揭示的实施例而描述的方法或算法的步骤可直接体现于硬件中、由处理器执行的软件模块中,或两者的组合中。软件模块可驻留于随机接入存储器(RAM)、存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可抹除可编程只读存储器(EPROM)、电可抹除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动磁盘、光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的存储媒体中。示范性非暂时性(例如,有形)存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并将信息写入到存储媒体。在替代例中,存储媒体可整合到处理器。处理器及存储媒体可驻留于特殊应用集成电路(ASIC)中。ASIC可驻留于计算装置或用户终端机中。在替代例中,处理器及存储媒体可作为离散组件驻留于计算装置或用户终端机中。
提供所揭示实施例的先前描述以使所属领域的技术人员能够制作或使用所揭示的实施例。对于所属领域的技术人员来说,这些实施例的各种修改将易于显而易见,且在不脱离本发明的范围的情况下,本文中所界定的原理可应用于其它实施例。因此,本发明并不意欲限于本文中所展示的实施例,而应符合可能与如由以下权利要求书所界定的原理及新颖特征相一致的最广泛范围。
Claims (47)
1.一种方法,其包括:
在处理器处执行向量指令,其中所述向量指令包括包含多个元素的向量输入,且其中执行所述向量指令包括:
将所述多个元素中的第一元素提供为第一输出;
对所述多个元素中的所述第一元素及第二元素执行第一算术运算,以提供第二输出;及
将所述第一输出及所述第二输出存储于输出向量中。
2.根据权利要求1所述的方法,其中执行所述向量指令进一步包括:
对所述多个元素中的所述第一元素、所述第二元素及第三元素执行第二算术运算,以提供第三输出;及
将所述第三输出存储于所述输出向量中。
3.根据权利要求1所述的方法,其中执行所述向量指令进一步包括将多个输出中的每一者存储于所述输出向量的不同输出元素中,且其中所述多个输出包含所述第一输出及所述第二输出。
4.根据权利要求1所述的方法,其中执行所述向量指令进一步包括在所述处理器的单一执行循环期间将所述第一输出及所述第二输出存储于所述输出向量中。
5.根据权利要求1所述的方法,其中以依序次序存储所述多个元素,其中执行所述向量指令进一步包括对所述多个元素中的特定元素及所述多个元素中的一或多个其它元素执行第二算术运算以产生特定输出,其中所述一或多个其它元素在所述依序次序上在顺序上在所述特定元素之前。
6.根据权利要求5所述的方法,其中所述向量输入的第一大小与所述输出向量的第二大小相同。
7.根据权利要求6所述的方法,其中N个输出中的第N输出等于所述多个元素中的每一元素的总和。
8.根据权利要求1所述的方法,其中执行所述向量指令进一步包括在将所述第一元素提供为所述第一输出之前将屏蔽应用于所述多个元素。
9.根据权利要求8所述的方法,其中执行所述向量指令包含产生包含所述第一输出及所述第二输出的多个输出,且其中应用所述屏蔽包括取决于所述屏蔽的对应屏蔽值为所述多个元素中的特定元素提供零值以用于产生所述多个输出。
10.根据权利要求8所述的方法,其中由所述向量指令识别所述屏蔽。
11.根据权利要求1所述的方法,其中执行所述向量指令进一步包括将屏蔽应用于所述输出向量。
12.根据权利要求11所述的方法,其中执行所述向量指令进一步包括基于所述屏蔽防止将一或多个输出存储于所述输出向量中。
13.根据权利要求1所述的方法,其中当所述向量指令与复数运算相关联时,执行所述向量指令进一步包括:
产生所述第一输出的第一实数子元素及所述第一输出的第一虚数子元素;及
产生所述第二输出的第二实数子元素及所述第二输出的第二虚数子元素。
14.一种设备,其包括:
处理器,其包括约简树,其中在识别包含多个元素的向量输入的向量指令的执行期间,所述约简树经配置以:
将所述多个元素中的第一元素提供为第一输出元素;
对所述多个元素中的所述第一元素及第二元素执行第一算术运算,以提供第二输出元素;及
将所述第一输出元素及所述第二输出元素存储于输出向量中。
15.根据权利要求14所述的设备,其中所述约简树包括多个算术运算单元、多个输入及多个输出,且其中所述约简树经配置以对所述多个元素中的所述第一元素、所述第二元素及第三元素执行第二算术运算单元,以提供第三输出元素。
16.根据权利要求15所述的设备,其中所述多个算术运算单元中的特定算术运算单元耦合到经配置以饱和所述特定算术运算单元的输出的饱和逻辑电路。
17.根据权利要求15所述的设备,其中所述处理器进一步包括经配置以基于所述向量指令选择性地启用所述多个算术运算单元中的一或多个算术运算单元的控制逻辑,且其中经由所述一或多个算术运算单元提供所述第一输出元素及所述第二输出元素。
18.根据权利要求17所述的设备,其中所述控制逻辑经配置以基于所述向量指令启用所述多个算术运算单元的子集以接收零输入,所述零输入具有等于逻辑零的逻辑值。
19.根据权利要求17所述的设备,其中所述控制逻辑经配置以基于所述向量指令略过所述多个算术运算单元中的至少一算术运算单元。
20.根据权利要求14所述的设备,其中所述约简树被逻辑地分割成以交插方式运算的多个累积式平行约简网络,且其中所述多个累积式平行约简网络包含两个三十二位累积式约简网络,或四个十六位累积式约简网络。
21.一种设备,其包括:
用于将多个元素中的第一元素提供为第一输出的装置,其中向量指令指示包含所述多个元素的向量输入;
用于基于所述多个元素中的所述第一元素及第二元素产生第二输出的装置;及
用于将所述第一输出及所述第二输出存储于输出向量中的装置。
22.根据权利要求21所述的设备,其进一步包括用于饱和所述第二输出的装置,所述用于饱和的装置耦合到所述用于产生的装置。
23.一种非暂时性计算机可读媒体,其包括在由处理器执行时使得所述处理器进行如下操作的指令:
将多个元素中的第一元素提供为第一输出元素,所述多个元素包含于向量指令的向量输入中;
对所述多个元素中的所述第一元素及第二元素执行算术运算,以提供第二输出;及
将所述第一输出及所述第二输出存储于输出向量中。
24.根据权利要求23所述的非暂时性计算机可读媒体,其中可进一步执行所述指令以使得处理器基于所述向量指令在使用所述多个元素中的一或多个元素来提供所述第一输出及所述第二输出之前,对所述一或多个元素求补。
25.一种设备,其包括:
约简树,其包括多个输入、多个算术运算单元及多个输出,其中处理器经配置以在包含第一区段分组大小的第一指令的执行期间及包含第二区段分组大小的第二指令的执行期间使用所述约简树,且其中所述约简树经配置以同时产生多个输出元素。
26.根据权利要求25所述的设备,其中所述多个算术运算单元包括多个加法器。
27.根据权利要求25所述的设备,其进一步包括经配置以进行如下操作的控制逻辑:
在所述第一指令的执行期间,基于所述第一区段分组大小,选择性地启用所述多个算术运算单元的第一子集;及
在所述第二指令的执行期间,基于所述第二区段分组大小,选择性地启用所述多个算术运算单元的第二子集。
28.根据权利要求25所述的设备,其中所述约简树包含于所述处理器的算术逻辑单元ALU中,且其中所述约简树具有基于所述多个输入中的输入的数目的级的数目。
29.根据权利要求28所述的设备,其中所述多个算术运算单元包含多个行的算术运算单元,且其中所述多个行的算术运算单元中的每一行与包含于所述处理器中的管线的对应级相关联。
30.根据权利要求28所述的设备,其中所述约简树的级的所述数目等于输入的所述数目的以2为底的对数。
31.根据权利要求25所述的设备,其进一步包括经配置以在将所述多个输出元素存储于所述输出向量中之前旋转输出向量的旋转单元,其中所述旋转单元包括旋转器或筒向量移位器。
32.根据权利要求25所述的设备,其进一步包括一或多个饱和电路,其中所述一或多个饱和电路中的特定饱和电路经配置以从特定算术运算单元接收特定输出,并基于所述特定输出输出经饱和值。
33.根据权利要求25所述的设备,其中所述约简树经配置以在累积式向量算术指令的执行期间,使用多个累积式算术运算同时产生所述多个输出元素。
34.一种方法,其包括:
在处理器处接收包含区段分组大小的向量指令,其中所述处理器包括约简树,且其中所述约简树包含多个输入、多个算术运算单元及多个输出;
确定所述区段分组大小;及
基于所述区段分组大小,使用所述约简树执行所述向量指令,以同时产生所述多个输出,其中所述约简树可经选择性地配置以用于与多个不同区段分组大小一起使用。
35.根据权利要求34所述的方法,其进一步包括:
确定所述约简树是否经配置以用于与所述区段分组大小一起使用;及
响应于确定所述约简树未经配置以用于与所述区段分组大小一起使用,基于所述区段分组大小变更配置。
36.根据权利要求35所述的方法,其进一步包括:
确定所述约简树是否经配置以用于与所述区段分组大小一起使用;及
响应于确定所述约简树经配置以用于与所述区段分组大小一起使用,使用所述约简树执行所述第一向量指令。
37.根据权利要求34所述的方法,其中执行所述向量指令包括:
将所述多个输入分组成具有所述区段分组大小的一或多个群组;及
对所述一或多个群组执行一或多个算术运算,以产生所述多个输出,其中所述向量指令指示所述一或多个算术运算。
38.根据权利要求37所述的方法,其中所述多个输入中的每一输入包含对应实数部分及对应虚数部分,且其中通过以交插方式对一或多个实数部分执行第一算术运算并对一或多个虚数部分执行第二算术运算,产生所述多个输出中的每一输出元素。
39.根据权利要求34所述的方法,其中所述多个输入及所述多个输出表示实数值、虚数值或其组合。
40.一种方法,其包括:
执行包含多个输入元素的向量指令,其中执行所述向量指令包括:
分组所述多个输入元素的第一子集以形成输入元素的第一集合;
分组所述多个输入元素的第二子集以形成输入元素的第二集合;
对所述第一集合的输入元素执行第一算术运算;
对所述第二集合的输入元素执行第二算术运算;
旋转输出寄存器的内容;及
在旋转所述输出寄存器的所述内容之后,将所述第一算术运算的第一结果及所述第二算术运算的第二结果插入到所述输出寄存器中。
41.根据权利要求40所述的方法,其中所述向量指令为单一向量指令,其中所述多个输入中的每一者存储于输入向量中,且其中同时产生所述第一结果及所述第二结果。
42.根据权利要求40所述的方法,其中将所述第一结果及所述第二结果插入到所述输出寄存器中包括盖写所述输出寄存器的对应内容,且其中旋转所述输出寄存器的所述内容包括基于所述向量指令而选择性地旋转所述输出寄存器的所述内容。
43.根据权利要求40所述的方法,其中所述第一集合的输入元素中的元素的第一数目及所述第二集合的输入元素中的元素的第二数目是基于由所述向量指令所识别的区段分组大小。
44.根据权利要求43所述的方法,其中元素的所述第一数目与元素的所述第二数目相同。
45.根据权利要求40所述的方法,其中将所述第一结果插入到所述输出寄存器的第一输出元素中,其中将所述第二结果插入到所述输出寄存器的第二输出元素中,且其中所述第一输出元素及所述第二输出元素为所述输出寄存器的不同输出元素。
46.根据权利要求40所述的方法,其中执行所述向量指令进一步包括在分组所述多个输入元素之前将屏蔽应用于所述多个输入元素。
47.根据权利要求40所述的方法,其中执行所述向量指令进一步包括在旋转所述内容之后将屏蔽应用于所述输出寄存器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/967,191 | 2013-08-14 | ||
US13/967,191 US20150052330A1 (en) | 2013-08-14 | 2013-08-14 | Vector arithmetic reduction |
PCT/US2014/049604 WO2015023465A1 (en) | 2013-08-14 | 2014-08-04 | Vector accumulation method and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105453028A true CN105453028A (zh) | 2016-03-30 |
CN105453028B CN105453028B (zh) | 2019-04-09 |
Family
ID=51492424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480043504.XA Active CN105453028B (zh) | 2013-08-14 | 2014-08-04 | 向量积累方法及设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20150052330A1 (zh) |
EP (1) | EP3033670B1 (zh) |
JP (1) | JP2016530631A (zh) |
CN (1) | CN105453028B (zh) |
TW (1) | TWI507982B (zh) |
WO (1) | WO2015023465A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110692038A (zh) * | 2017-05-24 | 2020-01-14 | 微软技术许可有限责任公司 | 多功能矢量处理器电路 |
CN110807521A (zh) * | 2019-10-29 | 2020-02-18 | 深圳芯英科技有限公司 | 支持向量运算的处理装置、芯片、电子设备和方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678715B2 (en) | 2014-10-30 | 2017-06-13 | Arm Limited | Multi-element comparison and multi-element addition |
US20160179530A1 (en) * | 2014-12-23 | 2016-06-23 | Elmoustapha Ould-Ahmed-Vall | Instruction and logic to perform a vector saturated doubleword/quadword add |
US10296342B2 (en) | 2016-07-02 | 2019-05-21 | Intel Corporation | Systems, apparatuses, and methods for cumulative summation |
US10466967B2 (en) | 2016-07-29 | 2019-11-05 | Qualcomm Incorporated | System and method for piecewise linear approximation |
US10108581B1 (en) | 2017-04-03 | 2018-10-23 | Google Llc | Vector reduction processor |
GB2574817B (en) * | 2018-06-18 | 2021-01-06 | Advanced Risc Mach Ltd | Data processing systems |
US11294670B2 (en) * | 2019-03-27 | 2022-04-05 | Intel Corporation | Method and apparatus for performing reduction operations on a plurality of associated data element values |
GB2601466A (en) * | 2020-02-10 | 2022-06-08 | Xmos Ltd | Rotating accumulator |
US20240004647A1 (en) * | 2022-07-01 | 2024-01-04 | Andes Technology Corporation | Vector processor with vector and element reduction method |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845112A (en) * | 1997-03-06 | 1998-12-01 | Samsung Electronics Co., Ltd. | Method for performing dead-zone quantization in a single processor instruction |
US20080016321A1 (en) * | 2006-07-11 | 2008-01-17 | Pennock James D | Interleaved hardware multithreading processor architecture |
CN101398753A (zh) * | 2007-09-27 | 2009-04-01 | 辉达公司 | 用于执行扫描运算的系统、方法及计算机程序产品 |
CN101436121A (zh) * | 2007-11-15 | 2009-05-20 | 辉达公司 | 用于使用并行处理器架构执行扫描操作的方法及设备 |
US20100049950A1 (en) * | 2008-08-15 | 2010-02-25 | Apple Inc. | Running-sum instructions for processing vectors |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4996661A (en) * | 1988-10-05 | 1991-02-26 | United Technologies Corporation | Single chip complex floating point numeric processor |
US5542074A (en) * | 1992-10-22 | 1996-07-30 | Maspar Computer Corporation | Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount |
US5717947A (en) * | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
US6058473A (en) * | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
US5727229A (en) * | 1996-02-05 | 1998-03-10 | Motorola, Inc. | Method and apparatus for moving data in a parallel processor |
US6542918B1 (en) * | 1996-06-21 | 2003-04-01 | Ramot At Tel Aviv University Ltd. | Prefix sums and an application thereof |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US7395302B2 (en) * | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US6295597B1 (en) * | 1998-08-11 | 2001-09-25 | Cray, Inc. | Apparatus and method for improved vector processing to support extended-length integer arithmetic |
US6192384B1 (en) * | 1998-09-14 | 2001-02-20 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for performing compound vector operations |
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
US7624138B2 (en) * | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US6920545B2 (en) * | 2002-01-17 | 2005-07-19 | Raytheon Company | Reconfigurable processor with alternately interconnected arithmetic and memory nodes of crossbar switched cluster |
US7376812B1 (en) * | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
US7159099B2 (en) * | 2002-06-28 | 2007-01-02 | Motorola, Inc. | Streaming vector processor with reconfigurable interconnection switch |
US7051186B2 (en) * | 2002-08-29 | 2006-05-23 | International Business Machines Corporation | Selective bypassing of a multi-port register file |
TWI221562B (en) * | 2002-12-12 | 2004-10-01 | Chung Shan Inst Of Science | C6x_VSP-C6x vector signal processor |
US7293056B2 (en) * | 2002-12-18 | 2007-11-06 | Intel Corporation | Variable width, at least six-way addition/accumulation instructions |
US20040193847A1 (en) * | 2003-03-31 | 2004-09-30 | Lee Ruby B. | Intra-register subword-add instructions |
KR101005718B1 (ko) * | 2003-05-09 | 2011-01-10 | 샌드브리지 테크놀로지스, 인코포레이티드 | 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛 |
TW200504592A (en) * | 2003-07-24 | 2005-02-01 | Ind Tech Res Inst | Reconfigurable apparatus with high hardware efficiency |
US7797363B2 (en) * | 2004-04-07 | 2010-09-14 | Sandbridge Technologies, Inc. | Processor having parallel vector multiply and reduce operations with sequential semantics |
DE102006027181B4 (de) * | 2006-06-12 | 2010-10-14 | Universität Augsburg | Prozessor mit internem Raster von Ausführungseinheiten |
US7725518B1 (en) * | 2007-08-08 | 2010-05-25 | Nvidia Corporation | Work-efficient parallel prefix sum algorithm for graphics processing units |
US7895419B2 (en) * | 2008-01-11 | 2011-02-22 | International Business Machines Corporation | Rotate then operate on selected bits facility and instructions therefore |
CN102047219A (zh) * | 2008-05-30 | 2011-05-04 | Nxp股份有限公司 | 矢量处理的方法 |
US9176735B2 (en) * | 2008-11-28 | 2015-11-03 | Intel Corporation | Digital signal processor having instruction set with one or more non-linear complex functions |
US8595467B2 (en) * | 2009-12-29 | 2013-11-26 | International Business Machines Corporation | Floating point collect and operate |
US8667042B2 (en) * | 2010-09-24 | 2014-03-04 | Intel Corporation | Functional unit for vector integer multiply add instruction |
US8868885B2 (en) * | 2010-11-18 | 2014-10-21 | Ceva D.S.P. Ltd. | On-the-fly permutation of vector elements for executing successive elemental instructions |
EP3422178B1 (en) * | 2011-04-01 | 2023-02-15 | Intel Corporation | Vector friendly instruction format and execution thereof |
US9760372B2 (en) * | 2011-09-01 | 2017-09-12 | Hewlett Packard Enterprise Development Lp | Parallel processing in plural processors with result register each performing associative operation on respective column data |
US9411583B2 (en) * | 2011-12-22 | 2016-08-09 | Intel Corporation | Vector instruction for presenting complex conjugates of respective complex numbers |
US9459865B2 (en) * | 2011-12-23 | 2016-10-04 | Intel Corporation | Systems, apparatuses, and methods for performing a butterfly horizontal and cross add or substract in response to a single instruction |
US9678751B2 (en) * | 2011-12-23 | 2017-06-13 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal partial sum in response to a single instruction |
US9823924B2 (en) * | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
JP6079433B2 (ja) * | 2013-05-23 | 2017-02-15 | 富士通株式会社 | 移動平均処理プログラム、及びプロセッサ |
-
2013
- 2013-08-14 US US13/967,191 patent/US20150052330A1/en not_active Abandoned
-
2014
- 2014-08-04 JP JP2016534602A patent/JP2016530631A/ja active Pending
- 2014-08-04 WO PCT/US2014/049604 patent/WO2015023465A1/en active Application Filing
- 2014-08-04 CN CN201480043504.XA patent/CN105453028B/zh active Active
- 2014-08-04 EP EP14759362.8A patent/EP3033670B1/en active Active
- 2014-08-07 TW TW103127139A patent/TWI507982B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845112A (en) * | 1997-03-06 | 1998-12-01 | Samsung Electronics Co., Ltd. | Method for performing dead-zone quantization in a single processor instruction |
US20080016321A1 (en) * | 2006-07-11 | 2008-01-17 | Pennock James D | Interleaved hardware multithreading processor architecture |
CN101398753A (zh) * | 2007-09-27 | 2009-04-01 | 辉达公司 | 用于执行扫描运算的系统、方法及计算机程序产品 |
CN101436121A (zh) * | 2007-11-15 | 2009-05-20 | 辉达公司 | 用于使用并行处理器架构执行扫描操作的方法及设备 |
US20100049950A1 (en) * | 2008-08-15 | 2010-02-25 | Apple Inc. | Running-sum instructions for processing vectors |
Non-Patent Citations (1)
Title |
---|
KOSTAS VITOROULIS: ""Parallel prefix adders"", 《HTTP://USERS.ENCS.CONCORDIA.CA/~ASIM/COEN_6501/LECTURE_NOTES/PARALLEL%20PREFIX%20ADDERS%20PRESENTATION.PPT》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110692038A (zh) * | 2017-05-24 | 2020-01-14 | 微软技术许可有限责任公司 | 多功能矢量处理器电路 |
CN110692038B (zh) * | 2017-05-24 | 2023-04-04 | 微软技术许可有限责任公司 | 多功能矢量处理器电路 |
CN110807521A (zh) * | 2019-10-29 | 2020-02-18 | 深圳芯英科技有限公司 | 支持向量运算的处理装置、芯片、电子设备和方法 |
CN110807521B (zh) * | 2019-10-29 | 2022-06-24 | 中昊芯英(杭州)科技有限公司 | 支持向量运算的处理装置、芯片、电子设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3033670A1 (en) | 2016-06-22 |
WO2015023465A1 (en) | 2015-02-19 |
TW201519090A (zh) | 2015-05-16 |
EP3033670B1 (en) | 2019-11-06 |
US20150052330A1 (en) | 2015-02-19 |
CN105453028B (zh) | 2019-04-09 |
TWI507982B (zh) | 2015-11-11 |
JP2016530631A (ja) | 2016-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105453028A (zh) | 向量积累方法及设备 | |
CN105027109B (zh) | 具有用于提供多模向量处理的可编程数据路径配置的向量处理引擎、以及相关向量处理器、系统和方法 | |
CN106445471A (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
CN104981771B (zh) | 基于标量寄存器数据值的向量寄存器寻址和功能 | |
CN104583938A (zh) | 向量处理器中的数据提取系统和方法 | |
CN105335331B (zh) | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 | |
CN104137053B (zh) | 用于响应于单个指令来执行蝴蝶横向和交叉加法或减法的系统、装置和方法 | |
US20100145992A1 (en) | Address Generation Unit Using Nested Loops To Scan Multi-Dimensional Data Structures | |
US20140281372A1 (en) | Vector indirect element vertical addressing mode with horizontal permute | |
US7895417B2 (en) | Select-and-insert instruction within data processing systems | |
EP2909713B1 (en) | Selective coupling of an address line to an element bank of a vector register file | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
US9003165B2 (en) | Address generation unit using end point patterns to scan multi-dimensional data structures | |
CN105960637A (zh) | 基于块的索引技术 | |
WO2008043287A1 (en) | Configurable single instruction multiple data unit | |
CN107229446A (zh) | 一种音频数据处理器 | |
JP6687803B2 (ja) | 区分線形近似のためのシステムおよび方法 | |
KR102591988B1 (ko) | 데이터 처리장치에서의 벡터 인터리빙 | |
CN113222157A (zh) | 一种量子模拟方法、装置、电子装置及存储介质 | |
CN109388427A (zh) | 向量处理方法、向量处理单元和微处理器 | |
CN107748674A (zh) | 面向比特粒度的信息处理系统 | |
CN106708467A (zh) | 一种宽位累加器电路及其设计方法、可编程逻辑器件 | |
US8359455B2 (en) | System and method for generating real addresses using a connection ID designating a buffer and an access pattern | |
Yong | Interior point algorithms and applications | |
US20230070730A1 (en) | Word based channels last ordering in memory |
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 |