CN109478199B - 分段线性逼近的系统及方法 - Google Patents

分段线性逼近的系统及方法 Download PDF

Info

Publication number
CN109478199B
CN109478199B CN201780044294.XA CN201780044294A CN109478199B CN 109478199 B CN109478199 B CN 109478199B CN 201780044294 A CN201780044294 A CN 201780044294A CN 109478199 B CN109478199 B CN 109478199B
Authority
CN
China
Prior art keywords
vector
analysis coefficients
input
segment analysis
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780044294.XA
Other languages
English (en)
Other versions
CN109478199A (zh
Inventor
D·马修
A·A·英格尔
孙玉荣
朱建明
M·霍夫曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN109478199A publication Critical patent/CN109478199A/zh
Application granted granted Critical
Publication of CN109478199B publication Critical patent/CN109478199B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • 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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/548Trigonometric functions; Co-ordinate transformations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明揭示一种设备,其包含:一或多个寄存器,其经配置以存储输入值的矢量。所述设备还包含系数确定单元,其经配置以响应于由处理器执行单个指令,选择多个分段分析系数。所述多个分段分析系数包含一或多组分段分析系数,且每一组分段分析系数对应于输入值的矢量的输入值。所述设备进一步包含算术逻辑电路,其经配置以响应于至少单个指令的执行,基于多个分段分析系数及输入值的矢量确定函数的估计输出值。

Description

分段线性逼近的系统及方法
相关申请案的交叉参考
本申请案主张在2016年7月29日提交申请的美国专利申请案第15/224,237号的优先权,其全部内容通过引用的方式并入本文中。
技术领域
本发明一般涉及使用输入值的矢量的分段线性逼近。
背景技术
技术的进步已产生较小且较强大计算装置。举例来说,当前存在各种便携式个人计算装置,包含无线电话,例如移动及智能电话、平板及膝上型计算机,其为小型、轻量且容易由用户携带。这些装置可经由无线网络传递语音及数据包。此外,许多此些装置并入有额外功能性,例如数字静态相机、数字摄像相机、数字记录仪及音频文件播放器。此外,此些装置可处理可执行指令,包含可用于接入因特网的软件应用程序,例如web浏览器应用程序。如此,这些装置可包含显著计算能力。
为了实现高级计算能力,某些函数(例如,数学计算,例如反函数、平方根函数、反平方根函数、指数函数、对数函数、三角函数等)可由处理器逼近以减少计算时间及增加计算效率。例如,可藉由生成基于多阶多项式的泰勒展开式来逼近特定函数。然而,使用从多阶多项式生成的泰勒展开式来逼近函数可使用相对大量的指令。执行并处理大量指令可使用重要的计算资源,例如相对大量的处理周期,相对大量的存储器存储空间,大量执行单元或其组合。
发明内容
在特定方面中,一种设备包含一或多个寄存器,其经配置以存储输入值的矢量。该设备还包含系数确定单元,其经配置以响应于由处理器执行单个指令,选择多个分段分析系数。多个分段分析系数包含一或多组分段分析系数,且每一组分段分析系数对应于输入值之矢量的输入值。所述设备进一步包含算术逻辑电路,其经配置以响应于至少单个指令的执行,基于多个分段分析系数及输入值的矢量确定函数的估计输出值。
在另一特定方面中,一种方法包含接收输入值的矢量。所述方法还包含执行单个指令以选择多个分段分析系数。所述多个分段分析系数包含一或多组分段分析系数,且每一组分段分析系数对应于输入值之矢量的输入值。所述方法还包含基于多个分段分析系数及输入值矢量确定函数的估计输出值。
在另一特定方面中,一种设备包含用于接收输入值之矢量的装置。所述设备还包含用于执行单个指令以选择多个分段分析系数的装置。所述多个分段分析系数包含一或多组分段分析系数,且每一组分段分析系数对应于输入值之矢量的输入值。所述设备进一步包括用于基于多个分段分析系数及输入值矢量确定函数的估计输出值的装置。
在另一特定方面中,一种非暂时性计算机可读媒体包括至少单个指令,当由处理器执行时,所述指令致使处理器基于输入值的矢量来选择多个分段分析系数。所述多个分段分析系数包含一或多组分段分析系数,且每一组分段分析系数对应于输入值之矢量的输入值。至少单个指令致使处理器基于所选择的多个分段分析系数而生成分段分析系数的矢量。
在检视申请案(包含以下章节)之后,本发明的其它方面,优点及特征将变得显而易见:“附图说明”,“具体实施方式”及“权利要求书”。
附图说明
图1为用于使用分段分析来生成函数的估计值的系统的实例的框图;
图2为执行矢量化表查找指令的说明性过程的图;
图3为执行矢量算术指令的说明性过程的图;
图4为执行矢量化表查找指令的另一说明性过程的图;
图5为执行矢量算术指令的另一说明性过程的图;
图6为执行单个分段逼近指令的说明性过程的图;
图7为执行单个分段逼近指令的另一说明性过程的图;
图8为说明生成函数的估计值的方法的实例的流程图;及
图9为可操作以生成函数的估计值的装置的特定说明性实例的框图。
具体实施方式
下文参考图式描述本发明的特定方面。在描述中,贯穿诸图式共同特征由共同参考数字指定。如本文中所使用,各种术语仅用于描述特定实施的目的,且不旨在限制实施。例如,除非上下文另有明确指示,否则单数形式“一(a)”、“一(an)”及“所述”意欲包含复数形式。可进一步理解,术语“包括(comprises)”及“包括(comprising)”可与“包含(includes)”或“包含(including)”互换使用。另外,应理解,术语“其中(wherein)”可与“其中(where)”互换使用。如本文中所使用,用于修饰元件(例如结构、组件、操作等)的序数术语(例如,“第一”、“第二”、“第三”等)本身并不指示元件相对于另一元件之任何优先顺序或次序,而仅将元件与具有相同名称(如果不使用序数术语)的另一元件区分。如本文中所使用,术语“组”是指特定元素中的一或多者,且术语“多个”是指特定多个(例如,两个或多于两个)元素。
本发明描述了通过执行减少数目的指令(例如,一个或两个指令)来使用分段线性逼近来估计函数的输出值。例如,处理器可接收输入值的矢量(对应于函数的输入值),且可选择多个分段分析系数。在一些实施方案中,处理器可生成分段分析系数的矢量,其包含多个分段分析系数。在特定实施中,函数可为非线性,且分段分析系数可基于非线性函数的一阶泰勒展开式(例如,线性逼近)。可从包含多个分段分析系数的表选择多个分段分析系数。处理器可使用置换网络来基于输入值的矢量及表来选择多个分段分析系数(或生成分段分析系数的矢量)。为了说明,可使用置换网络来基于输入值的矢量而选择表中所包含的多个分段分析系数中的一或多者并将其从第一寄存器路由到包括多个分段分析系数(例如,分段分析系数的矢量)的第二寄存器。输入值的矢量的每一输入值可对应于一组分段分析系数。此外,可经由执行单个指令来执行选择多个分段分析系数。
另外,处理器可基于多个分段分析系数及输入值的矢量来确定(例如,生成)函数的估计输出值。例如,算术逻辑电路可通过将第一分段分析系数与第一输入值相乘来生成乘积。算术逻辑电路可通过加总乘积及第二分段分析系数来生成第一估计输出值。在一些实施方案中,可通过执行另一单个指令来执行确定函数的估计输出值。在其它实施方案中,选择多个分段分析系数并确定估计输出值都可响应于相同的单个指令而执行。
如与其它逼近技术相比,通过使用线性逼近来估计非线性函数的值,可使用更少的指令来生成函数的估计输出值。与其它逼近技术相比,通过减少用于生成估计输出值的指令的数量,可实现用于生成估计输出值的计算资源的量的减少。另外,通过使用置换网络来路由分段分析系数,如与每元素或每通道查找表相比,可实现用于存储表、生成估计输出值或两者的存储器的量的减少。
参考图1,描绘用于使用分段分析以生成对应于一或多个输入值的函数的估计输出值的系统100。根据一些实施方案,分段分析可基于使用一阶泰勒展开式的函数的线性逼近(例如,y=a*x+b)。在一些实施方案中,所述函数可包含或对应于非线性函数。例如,该函数可包含或对应于反函数、平方根函数、反平方根函数、指数函数、对数函数、三角函数、反三角函数(例如,反正切函数),或其组合。
系统100包含处理器102及存储器106。存储器106可耦合到处理器102,且可经配置以存储数据,例如一或多个系数表(例如,查找表)。例如,存储器106可存储输入系数表120。输入系数表120可包含与特定函数(例如,反平方转根函数)的分段分析逼近相关联的多组分段分析系数。例如,输入系数表120可包含第一组分段分析系数a0及b0以及第二组分段分析系数a1及b1。在其它实例中,输入系数表120可包含少于两组或多于两组的分段分析系数。在一些实施方案中,存储器106可存储多个输入系数表,且每一输入系数表可对应于不同函数、不同程度的估计准确度(例如,在分段分析中所使用的段的数目)或其组合。尽管存储器106被说明为与图1中的处理器102不同,但在其它实施方案中,存储器106可包括在处理器102中。
处理器102可经配置以响应于接收到表加载指令而将一或多个系数表加载到处理器102的一或多个寄存器(例如,寄存器文件)中。为了说明,处理器102可经配置以从存储器106检索(或接收)输入系数表120且将输入系数表120存储在处理器102的一或多个寄存器中。
处理器102可经配置以接收一或多个矢量指令(图1中未展示)。一或多个矢量指令可包含或对应于参考图2至7所描述的矢量指令。在一些实施中,处理器102可在接收一或多个矢量指令之前将一或多个系数表加载到一或多个寄存器中。在执行一或多个矢量指令期间,处理器102可接收输入矢量110及输入系数表120,且处理器102可生成估计输出值矢量116。输入矢量110(例如,输入值的矢量)可以包括或对应于特定函数的一或多个输入值。估计输出值矢量116可包含或对应于具有对应于输入矢量110的输入值的特定函数的一或多个估计(例如,逼近)输出值。
处理器102可包含系数确定单元104及算术逻辑电路112。系数确定单元104可经配置以接收(或检索)输入矢量110及输入系数表120并选择多个系数140。在一些实施方案中,系数确定单元104可从处理器102的一或多个寄存器检索(或接收)输入系数表120。在其它实施方案中,系数确定单元104可从存储器106检索(或接收)输入系数表120。多个系数140可包含或对应于系数矢量,如参考图2至5所描述,或一或多个所选择组分段分析系数,如参考图6及7所描述。多个系数140可包含一或多组分段分析系数。例如,对于输入矢量110的特定输入值,处理器102的系数确定单元104可确定相应的多个位(例如,指示二进制形式的位值的多个位)。可基于与特定输入值的二进制表示相关联的有效位的数目来确定多个位。多个位可用作索引值以执行对输入系数表120的查找。在其它实施方案中,单个位值可由系数确定单元104确定且用作索引值以执行查找。基于查找,处理器102的系数确定单元104可确定对应于特定输入值的特定组分段分析系数。为了说明,对于输入矢量110的每一输入值,系数确定单元104可从输入系数表120中选择特定组,例如一对分段分析系数。多个系数140可以包括所选择组的分段分析系数。因此,多个系数140可包括用于输入矢量110的每一输入值(例如,包含在其中)的对应的一组分析系数。例如,每一选定组的分段分析系数可对应于输入矢量110的输入值。
在一些实施方案中,系数确定单元104可通过应用一或多个移位值来确定对应于输入矢量110的输入值的位值。例如,系数确定单元104可使用一或多个移位值来执行一或多个二进制移位操作。为了说明,系数确定单元104可右移(例如,划分)输入值。输入值(例如,其二进制表示)可右移移位值(例如,零的数量)以生成位值。可使用位值的特定数目个“最高有效”数字来生成索引值。在特定实施方案中,在系数确定单元104接收之前对输入值进行归一化,且将输入值右移一个移位值以确定对应于索引值的位值的数数目(例如,2、3、4、5等、)个后续数字。
在一些实施方案中,输入系数表120包含一或多个移位值。在特定的实施方案中,一或多个移位值可具有相同值。例如,可将相同的移位值应用于输入矢量110的每一输入值。在其它实施方案中,处理器102可接收或生成移位值的矢量。例如,处理器102可包含移位值生成器,如参照图9所描述。
在一些实施方案中,系数确定单元104可包含置换网络114。置换网络114可经配置以选择并路由分段分析系数以选择多个系数140。例如,置换网络114可针对输入矢量110的每一输入值从输入系数表120中选择特定一组(例如,一对)分段分析系数。置换网络114可将所选择组的分段分析系数组从存储输入系数表120的寄存器路由到另一个寄存器,从而创建多个系数140。因此,多个系数140可包括输入矢量110中包括的每一输入值的对应组的分段分析系数。尽管置换网络114经说明为包含在图1中的系数确定单元104,但在其它实施方案中,置换网络114可与系数确定单元104分离。
在一些实施中,系数确定单元104可基于多个系数140而生成分段分析系数的系数矢量(例如,如参考图2到5所描述的系数矢量)。例如,置换网络114可经配置以选择并路由分段分析系数以生成系数矢量。为了说明,置换网络114可针对输入矢量110的每一输入值,从输入系数表120中选择对应组(例如,一对)的分段分析系数。置换网络114可将所选择组的分段分析系数从存储输入系数表120的寄存器路由到另一寄存器,因此形成系数矢量。因此,系数矢量可包含多个系数140。
处理器102还可包含经配置以执行算术运算的算术逻辑电路112。算术逻辑电路112可包含一或多个加法器、减法器、乘法器、除法器或其组合。处理器102可经配置以使用算术逻辑电路112对输入矢量110及多个系数140执行一或多个算术运算。例如,算术逻辑电路112可接收输入矢量110及多个系数140,且算术逻辑电路112可对输入矢量110及多个系数140执行一或多个算术运算。为了说明,算术逻辑电路112可执行乘法运算以生成一组分段分析系数的第一分段分析系数与对应的输入值的乘积。此外,算术逻辑电路112可执行加法运算以生成乘法运算的乘积与所述组分段分析系数的第二分段分析系数的和。因此,对于包含在输入矢量110中的每一输入值,系统100可经配置以生成与特定功能相关联的对应的估计输出值。估计的输出值可存储为估计的输出值矢量116。
在一些实施方案中,处理器102(例如,系数确定单元104)可经组态以执行第一单个指令(例如,如参考图2所描述的矢量化表查找指令201)以选择多个系数140。此外,处理器102(例如,算术逻辑电路112)可经配置以执行第二单个指令(例如,矢量算术指令301,如参考图3所描述)以生成估计输出值矢量116。在其它实施方案中,处理器102可经配置以执行单个指令(例如,单个分段逼近指令601,如参考图6所描述)以选择多个系数140及估计输出值矢量116。
在一些实施方案中,处理器102可含有经配置以存储各种矢量的一或多个寄存器(未展示)。例如,处理器102可包括经配置以存储输入矢量110、输入系数表120、多个系数140及所估计输出值矢量116或其组合的寄存器。参考图3、4及6进一步详细描述寄存器。
在一些实施方案中,输入矢量110的输入值中的一或多者可经归一化到目标范围。目标范围可包含或对应于一系列标称值。可选择目标范围以减小输入系数表120的多组分段分析系数的值的位大小。作为说明性的非限制性实例,目标范围可包含大约0.5到1,或大约0到1的范围。将移位值应用于输入值可生成目标范围内的值(例如,归一化值)。
在一些实施方案中,处理器102可将特定输入值移位(例如,乘以)移位值以在系数确定单元104处接收输入值之前生成经归一化的输入值。处理器102(例如,系数确定单元104)可使特定输入值右移(例如,除以)移位值以生成索引值。在一些实施方案中,系数确定单元104可接收尚未经归一化的输入值,且系数确定单元104可在右移输入值之前对输入值进行归一化(例如,左移)以生成索引值。在特定实施方案中,可在生成索引值矢量之前将输入矢量110的输入值中的一或多者归一化到目标范围,如参考图2所描述。用于生成经归一化值的移位值(例如,多个零)可与用于生成索引值的移位值相同或可不同。在其它实施方案中,系数确定单元104可使输入值左移(例如,乘以)一或多个移位值以确定位值。
在操作期间,处理器102可接收输入矢量110。输入矢量110可存储在处理器102的第一寄存器中,如参考图2所描述。系数确定单元104及算术逻辑电路112可存取第一寄存器以接收(或检索)输入矢量110。在一些实施方案中,输入矢量110可由矢量指令的操作数指示。
处理器102可执行单个指令以生成多个系数140。处理器102的系数确定单元104可检索、接收或存取输入系数表120以选择多个系数140。输入系数表120可存储在处理器102的第二寄存器中。在一些实施方案中,对于输入矢量110的每一输入值,多个系数140可包含对应组的分段分析系数,如参考图2进一步所描述。
处理器102可基于输入矢量110及多个系数140生成估计的输出值矢量116。为了说明,算术逻辑电路112可对输入矢量110的每一输入值及多个系数140中的对应组的分段分析系数执行矢量算术运算以生成估计输出值矢量116的估计输出值。例如,算术逻辑电路112可将输入矢量110的输入值与对应组的分段分析系数的第一分段分析系数相乘以生成乘积。算术逻辑电路112可使乘积与对应组的分段分析系数的第二分段分析系数加总以生成估计的输出值矢量116的估计输出值。
通过在执行单个矢量指令期间生成多个系数140,如与在执行多个矢量指令期间选择多个系数140的其它系统相比,系统100可使用更少的存储器及功率且具有增加的速度。另外,与在执行多于两个矢量指令期间生成估计输出值矢量116的其它系统相比,通过在执行一个(或两个)矢量指令期间生成估计的输出值矢量116可进一步增加速度且进一步降低功耗。此外,如与使用每一元素或每一通道查找表(例如,每一输入值的单独查找表)的其它系统相比,执行矢量化表查找(例如,使用置换网络114来路由分段分析系数以选择多个系数140)可更简单且使用更少的存储器及处理资源。
在上文所描述的各方面中,所执行的各种功能已如由图1的系统100的某些电路或组件执行。然而,电路及组件的此划分仅用于说明。在替代实例中,由特定电路或组件执行的功能可替代地在多个电路或组件之间划分。此外,在其它替代实例中,系统100的两个或多于两个电路或组件可集成到单个电路或组件中。图1中所说明的每一电路及组件可使用硬件(例如,专用集成电路(ASIC)、例如中央处理单元(CPU)、数字信号处理器(DSP)的处理单元、控制器、另一硬件装置、固件装置,或其任一组合)来实施。
参考图2,揭示执行矢量化表查找指令201的说明性过程的图200;矢量化表查找指令201可由例如图1的处理器102的处理器执行。如图2中所说明,矢量化表查找指令201可包含指令名称203(vlut4segh)(例如,操作码)。指令名称203可包含段指示符204及字长指示符205。段指示符204的值可指示分段分析的段的数目。段指示符204的值还可指示或对应于多组分段分析系数。在图2中所说明的实例中,段指示符204指示存在分段分析的四个段(例如,其存在四组分段分析系数)。字长指示符205的值可指示输入值的位大小。在图2所说明的实例中,字长指示符205的值为“h”,且可用于表示输入值的大小为指令字的“一半”(例如,16位)。在其它实施方案中,字长指示符205可具有指示不同位大小的不同值。
矢量化表查找指令201还可包含一或多个字段(例如,操作数),例如第一字段202(Vdd)、第二字段206(Vuu)及第三字段207(Vv)。存储在第一字段202中的第一值可指示在执行矢量算术指令期间使用的系数矢量240(例如,矢量Vdd),如参考图3所描述。存储在第二字段206中的第二值可指示输入系数表220(例如,矢量Vuu),且存储在第三字段207中的第三值可指示输入矢量210(例如,矢量Vv)。尽管说明三个字段,但在其它实施方案中,矢量化表查找指令201可包含多于三个字段或少于三个字段。
处理器可经配置以在矢量化表查找指令201的执行期间执行各种操作。处理器可经配置以接收包含多个输入值的输入矢量210(Vv),例如x0、x1、x2及x3。输入矢量210(例如,输入值的矢量)可存储在处理器的第一寄存器212中。处理器可经配置以从存储器(例如图1的存储器106)接收(或检索)输入系数表220。输入系数表220可包含多组分段分析系数,例如a0及b0,a1及b1,a2及b2,以及a3及b3。多组分段分析系数的每组分段分析系数可对应于索引值,例如0、1、2及3。例如,a0及b0可对应于索引值0,且a1及b1可对应于索引值1。输入系数表220还可包含一或多个移位值,例如shiftvalue0至shiftvalue3。在特定实施中,处理器可将输入系数表220存储在处理器的第二寄存器222中。在其它实施方案中,处理器可在执行矢量化表查找指令201之前将输入系数表220加载到第二寄存器222中。处理器可在矢量化表查找指令201的执行期间从第二寄存器222检索(或接收)输入系数表220。
在另一特定实施方案中,输入系数表220可存储于处理器的多个寄存器中。例如,输入系数表220可包含第一部分及第二部分,第一部分包含一或多个移位值,第二部分包含多组分段分析系数。输入系数表220的第一部分可存储在第二寄存器222中,输入系数表220的第二部分可以存储在另一寄存器中。
处理器可使用输入系数表220处理输入矢量210以生成索引值矢量230。索引值矢量230可存储在处理器的第三寄存器232中,且可包含多个索引值,例如2、3、0及1。多个索引值的每一索引值可对应于输入矢量210的输入值。图2说明在索引值矢量230中无索引值重复(例如,出现多于一次)的实例。在其它实例中,特定索引值可在索引值矢量230中出现不止一次。另外或替代地,可能的索引值可不出现在索引值矢量230中。多个索引值的每一索引值可对应于输入系数表220的一组分段分析系数。例如,索引值0可对应于a0及b0,且索引值1可对应于a1及b1。
可基于输入矢量210的输入值及输入系数表220的一或多个移位值来生成索引值矢量230的多个索引值。例如,处理器可使用输入系数表220的一或多个移位值对输入矢量210的输入值执行一或多个二进制移位操作。为了说明,处理器可将每一输入值右移(例如,除以)对应的移位值。例如,处理器可将输入矢量210的第一输入值右移输入系数表220的第一移位值shiftvalue0以生成第一位值(例如,多数位位值)。可使用第一位值的特定数目个有效数字来生成索引值矢量230的第一索引值2。在一些实施方案中,移位值中的每一者可具有相同值。在其它实施方案中,一或多个移位值可具有不同值。
处理器可使用索引值矢量230的多个索引值来生成系数矢量240。系数矢量240可存储在第四寄存器242中。处理器可使用索引值矢量230作为置换网络(例如图1的置换网络114)的输入以生成系数矢量240。为了说明,置换网络可基于索引值矢量230从第二寄存器222(其包含输入系数表220)选择一或多组分段分析系数并将其路由到第四寄存器242以生成系数矢量240。系数矢量240可在执行矢量算术指令期间使用,如参考图3所描述。例如,置换网络可基于索引值矢量230的第一索引值2而选择第一组分段分析系数a2及b2。置换网络可基于对应的输入值(第一输入值x0)将第一组分段分析系数路由到第四寄存器242。对应于输入矢量210的第一输入值x0的第一组分段分析系数可存储在系数矢量240的第一部分中。系数矢量240的第一部分可对应于偶数输入值(例如,x0及x2)的分段分析系数。
作为另一实例,对应于第二输入值x1的第二组分段分析系数a3及b3可存储在系数矢量240的第二部分中。系数矢量240的第二部分可对应于奇数输入值(例如,x1及x3)的分段分析系数。在一些实施方案中,系数矢量240的第二部分可存储在另一寄存器中。
在操作期间,处理器可接收矢量化表查找指令201。处理器可使用输入矢量210的输入值及输入系数表220的一或多个移位值来执行矢量化表查找指令201以针对每一输入值生成索引值矢量230的索引值。处理器可接收输入矢量210并将输入矢量210存储在第一寄存器212中。在特定实施方案中,输入矢量210的输入值可在由处理器接收之前归一化到目标范围。
处理器可从存储器检索(或接收)输入系数表220。处理器可将输入系数表220存储在第二寄存器222中。在一些实施方案中,处理器可在执行矢量化表查找指令201之前将输入系数表220加载在第二寄存器222中。处理器可响应于接收表加载指令将输入系数表220加载在第二寄存器222中。在特定实施方案中,处理器102可将输入系数表220的第一部分存储在第二寄存器222中,并将输入系数表220的第二部分存储在另一寄存器中。处理器可将一或多个移位值应用于输入矢量210的输入值以生成索引值。作为实例,处理器可将输入值右移(例如,除以)移位值6(例如,将六个零添加到输入值的二进制表示的开头)以生成索引值。索引值可表示与移位输入值的二进制重新定位相关联的有效位的数目,如参考图1所描述。
矢量化表查找指令201的执行还可包含使用索引值矢量230的索引值来选择输入系数表220的一或多组分段分析系数以生成系数矢量240。因此,处理器可针对每一输入值选择对应组分段分析系数以包含在系数矢量240中。例如,置换网络可使用索引值来选择输入系数表220的一或多组分段分析系数,并将一或多组分段分析系数从第二寄存器222路由到第四寄存器242以生成系数矢量240。
系数矢量240可使用“交叉开关”配置来存储分段分析系数的一或多个所选择集合(例如,对应集合),如图2中所说明。例如,交叉开关配置可用于存储对应于系数矢量的第一部分(例如,第四寄存器242或第四寄存器242的第一部分)中的偶数输入值(例如,x0、x2等)的系数,且将对应于奇数输入值(例如,x1、x3等)的系数存储在系数矢量的第二部分(例如,第四寄存器242的第二部分或另一寄存器)中。通过根据交叉开关配置(例如,生成包含交叉开关配置的系数矢量240)来路由及存储一或多个所选择组分段分析系数,置换网络可能能够更快地路由和生成系数矢量240而不是根据数字顺序路由及存储一或多组选择的分段分析系数。另外,通过根据交叉开关配置存储数据,矢量化表查找指令201可与常规的置换网络兼容(例如,可由其执行)。
为了说明,对于输入矢量210的第一输入值x0,置换网络可以基于索引值矢量230的第一索引值来选择对应组的分段分析系数。例如,置换网络选择对应于第一索引值2的第一组分段分析系数a2及b2。置换网络可将第一组分段分析系数的第一分段分析系数a2及第二分段分析系数b2从第二寄存器222(其包含输入系数表220)路由到第四寄存器242。第一组分段分析系数的第一分段分析系数a2及第二分段分析系数b2可基于第一输入值存储在第四寄存器242中。例如,因为第一输入值x0为偶数值,因此第一组分段分析系数的第一分段分析系数a2及第二分段分析系数b2可存储在第四寄存器242的前半部分中。存储分段分析系数的第四寄存器242的前半部分中的位置可对应于输入矢量210中的对应输入值的位置。例如,第一组分段分析系数a2及b2可存储在第四寄存器242的前半部分的前两个位置中,且对应于下一偶数输入值(例如,x2)的分段系数可存储在第四寄存器242的前半部分中的下两个位置。因此,置换网络可选择(或生成)一或多组分段分析系数的第一组分段分析系数以包含系数矢量240。
对于输入矢量210的第二输入值x1,置换网络可以基于索引值矢量230的第二索引值来选择对应组的分段分析系数。例如,置换网络选择对应于第二索引值3的第二组分段分析系数a3及b3。置换网络可将第二组分段分析系数的第一分段分析系数a3及第二分段分析系数b3从第二寄存器222(其包含输入系数表220)路由到第四寄存器242。第二组分段分析系数的第一分段分析系数a3及第二分段分析系数b3可基于第二输入值存储在第四寄存器242中。例如,因为第二输入值x1为奇数值,所以第二分段分析系数的第一分段分析系数a3和第二分段分析系数b3可存储在第四寄存器242的第二半部分中(或在另一寄存器中)。如上文所描述,第四寄存器242的第二半部分中的分段分析系数的位置可对应于输入值矢量210中的对应输入值的位置。
为了进一步说明,对于输入矢量210的第三输入值x2,置换网络可基于索引值矢量230的第三独立值来选择对应组的分段分析系数。例如,置换网络选择对应于第三索引值0的第三组分段分析系数a0及b0。置换网络可将第三组分段分析系数的第一分段分析系数a0及第二分段分析系数b0从第二寄存器222(其包含输入系数表220)路由到第四寄存器242。第三组分段分析系数的第三分段分析系数a0及第二分段分析系数b0可基于第三输入值存储在第四寄存器242中。例如,因为第三输入值x2为偶数值,因此第三组分段分析系数的第一分段分析系数a0及第二分段分析系数b0可存储在第四寄存器242的第一半部分内的第二位置中。
对于输入矢量210的第四输入值x3,置换网络可以基于索引值矢量230的第四索引值来选择对应组的分段分析系数。例如,置换网络选择对应于第四索引值0的第四组分段分析系数a1及b1。置换网络可将第四组分段分析系数的第一分段分析系数a1及第二分段分析系数b1从第二寄存器222(其包含输入系数表220)路由到第四寄存器242。第四组分段分析系数的第一分段分析系数a1及第二分段分析系数b1可基于第四输入值存储在第四寄存器242中。例如,因为第四输入值x3为奇数值,所以第四分段分析系数的第一分段分析系数a1和第二分段分析系数b1可存储在第四寄存器242的第二半部分内的第二位置中(或在另一寄存器中)。因此,置换网络可通过选择一或多组分段分析系数并将其路由到第四寄存器242(或到第四寄存器242及另一寄存器)来生成系数矢量240。
系数矢量240可用作矢量算术指令的输入,如参考图3及5所描述。通过在执行单个指令期间生成系数矢量240,与执行多个指令以生成系数矢量240的系统相比,系统可使用更少的存储器及功率且具有增加的速度。通过使用置换网络来生成系数矢量240,与每通道或每元素查找表(例如,每一输入值的单独查找表)相比,系统可进一步提高速度并降低系统的复杂性。
参考图3,揭示执行矢量算术查找指令301的说明性过程的图300。矢量算术指令301可由例如图1的处理器102的处理器执行。如图3中所说明,矢量算术指令301可包含指令名称303(vmpyaddeoh)(例如,操作码)。在图3的特定实施方案在宏,指令名称指示矢量乘法运算(例如,mpy)及矢量加法运算(例如,add)。指令名称可指示矢量运算的顺序。例如,“mpy”可指示(例如,具有)第一类型的系数与输入值相乘,且“add”可指示将(例如,具有)第二类型的系数添加到第一类型的系数与输入值的乘积。指令名称303可包含配置指示符304及字长指示符305。配置指示符304(eo)的值可指示系数矢量240的顺序。配置指示符304(eo)的值可指示系数矢量240的偶奇定向。例如,偶奇定向可包含或对应于“交叉开关”配置,其中对应于偶数输入值(例如,x0、x2等)的系数可存储在系数矢量240的第一部分中且对应奇数输入值(例如,x1、x3等)的系数可存储在系数矢量240的第二部分中。字长指示符305的值可指示输入值的位大小。在图3所说明的实例中,字长指示符305值的值为“h”,且可用于表示输入值的大小为指令字的“一半”(例如,16位)。
矢量算术指令301还可包含一或多个字段(例如,操作数),例如第一字段302(Vd)、第二字段306(Vdd)及第三字段307(Vv)。存储在第一字段302中的第一值可指示结果矢量350(例如,矢量Vd)。存储在第二字段306中的第二值可指示系数矢量240(例如,矢量Vdd),且存储在第三字段307中的第三值可指示输入矢量210(例如,矢量Vv)。尽管说明三个字段,但在其它实施方案中,矢量算术指令301可包含多于三个字段或少于三个字段。
处理器可经配置以在矢量算术指令301的执行期间执行各种操作。如参考图2所描述,在矢量化表查找指令201的执行期间,输入矢量210(Vv)存储在第一寄存器212中,且系数矢量240(Vdd)存储在第四寄存器242中。处理器可处理输入矢量210及系数矢量240,且可生成结果矢量350。结果矢量350可存储在第五寄存器352中。结果矢量350可包含函数的估计输出值。在图3中,估计输出值包含y0至y3。估计的输出值可基于输入值对应于函数的逼近值。为了说明,执行矢量算术指令301可通过对输入矢量210的特定输入值及系数矢量240的对应组的分段分析系数执行一或多个算术运算来生成特定估计输出值。
在一些实施方案中,结果矢量350可由处理器的算术逻辑电路(例如图1的算术逻辑电路112)生成。算术逻辑电路可经配置以对输入矢量210及系数矢量240执行算术运算。例如,算术逻辑电路112可将输入矢量210的输入值与(例如,具有)第一类型系数因子240的分段分析系数相乘以生成乘积。算术逻辑电路可基于乘积与(例如,具有)第二类型的系数矢量240的分段分析系数来生成和以生成包含在结果矢量350中的估计输出值。为了说明,算术逻辑电路可将使第一输入值x0与第一类型的第一分段分析系数a2相乘以生成第一乘积a2*x0。算术逻辑电路可将乘积a2*x0与第二类型的第二分段分析系数b2相加以生成第一估计输出值y0=a2*x0+b2。可以类似的方式生成估计输出值y1-y3。
在运算期间,处理器可接收矢量算术指令301。处理器可使用输入矢量210的输入值及系数矢量240的分段分析系数来执行矢量算术指令301以生成结果矢量350的估计输出值。处理器的算术逻辑电路可使用输入矢量210及系数矢量240来执行一或多个算术运算以生成结果矢量350。为了说明,对于输入矢量210的每一输入值,处理器的算术逻辑电路可使输入值与对应组的分段分析系数(来自系数矢量240)的第一分段分析系数相乘以生成乘积。处理器的算术逻辑电路可基于乘积及对应组分段分析系数组的第二分段分析系数而生成和。所述和可存储为结果矢量350的估计输出值。估计输出值可表示函数的输入值的估计(或逼近)。通过在执行单个指令期间生成结果矢量350,与执行多个指令以生成结果矢量350的系统相比,系统可使用更少的存储器及功率且具有增加的速度。
尽管已描述乘法及加法运算,但矢量算术指令301不限于此。例如,矢量算术指令301可指示一或多个算术运算使用输入矢量210及系数矢量240执行。一或多个算术运算可包含加法运算、减法运算、乘法运算、除法运算或其组合。可通过指令名称303指示一或多个算术运算。在一些实施方案中,用于估计函数的输出值的一或多个算术运算可对应于函数的非线性逼近(例如,y(a,x,b))。作为说明性的非限制性实例,非线性逼近可包含使系数除以输入值(例如,a/x)。
参考图4,揭示执行矢量化表查找指令401的另一说明性过程的图400。矢量化表查找指令401可由例如图1的处理器102的处理器执行。如图4中所说明,矢量化表查找指令401可包含指令名称203(vlutNsegh)(例如,操作码)。矢量化表查找指令401可包含一或多个指示符、一或多个字段(例如,操作数)或其组合,如参考图2所描述。段指示符“N”可指示分段分析的段的数目。作为说明性非限制性实例,N可对应于值2、4、8、16、32等。
处理器可经配置以在矢量化表查找指令401的执行期间执行各种操作。处理器可接收输入矢量410。输入矢量410可包含数目M个输入值。在特定实施方案中,M为64。在其它实施方案中,M可小于64或大于64。处理器(或系数确定单元)可检索(或接收)输入系数表420。输入系数表420可包含多个移位值。包含在输入系数表420中的多个移位值可与输入值的数目(例如,M)相同。输入系数表420还可以包含多组分段分析系数。多个组分段分析系数可为与分段分析的段的数目(例如,N)相同。处理器可以参考图2所描述的方式生成索引值矢量430。索引值矢量430可包含多个索引值。包含在输入系数表420中的多个索引值可与输入值的数目(例如,M)相同。
处理器可以参考图2所描述的此方式生成系数矢量440。系数矢量440可包含多组分段分析系数。包含在系数矢量440中的多组分段分析系数可为与输入值的数目(例如,M)相同。分段分析系数组可以交叉开关配置存储在系数矢量440中,如参考图2所描述。例如,对应于偶数输入值(例如,x0、x2、…、xM-2)可存储在系数矢量440的第一部分中且对应于奇数输入值(例如,x1、x3、…、xM-1)可被存储在系数矢量440的第二部分中。另外,输入系数表420及系数矢量440可包含与输入矢量410、索引值矢量430或两者两倍多的位。例如,可为每一输入值选择两个系数,因此系数矢量440可存储与输入矢量410两倍多元素。
在一些实施方案中,处理器的寄存器可为特定大小(例如,可经配置以存储第一数目位)。输入矢量410、索引值矢量430或两者可为特定大小。输入系数表420及系数矢量440可大于特定大小。在一些实施方案中,输入系数表420及系数矢量440可为寄存器的两倍大。例如,寄存器可存储1024个位,且输入系数表420及系数矢量440可为2048个位。因此,输入系数表420及系数矢量440可各自存储在多个寄存器(例如两个寄存器)中。例如,包含对应于偶数输入值(例如,x0、x2等)的多组分段分析系数的系数矢量440的第一部分可存储在系数矢量440的第一寄存器及第二部分中,包含对应于奇数输入值(例如,x1、x3等)的多组分段分析系数的系数矢量440的第二部分可存储在第二寄存器中。
在操作期间,处理器可接收矢量化表查找指令401。处理器可使用输入矢量410的输入值及输入系数表420的一或多个移位值来执行矢量化表查找指令401以针对每一输入值生成索引值矢量430的索引值。索引值可表示与移位输入值的二进制重新定位相关联的有效位的数目,如参考图1及2所描述。
矢量化表查找指令401的执行还可包含使用索引值矢量430的索引值及输入系数表420的一或多组分段分析系数来针对每一输入值生成(或选择)系数矢量440的对应组的分段分析系数。为了说明,对于输入矢量410的第一输入值x0,置换网络可基于索引值矢量430的第一索引值2来选择对应组的分段分析系数a2及b2。系数矢量440可使用交叉开关配置来存储分段分析系数的一或多个集合(例如,对应集合),如参考图2所描述。
系数矢量440可用作矢量算术指令的输入,如参考图3及5所描述。通过在执行单个指令期间生成系数矢量440,与执行多个指令以生成系数矢量440的系统相比,系统可使用更少的存储器及功率且具有增加的速度。通过使用置换网络来生成系数矢量440,如与每通道或每元素查找表(例如,每一输入值的单独查找表)相比,系统可进一步使用更少的存储器且具有增加的速度。
参考图5,揭示执行矢量算术查找指令501的另一说明性过程的图500。矢量算术指令501可由例如图1的处理器102的处理器执行。如图5中所说明,矢量算术指令501可包含指令名称(vmpyaddeoh)(例如,操作码)。矢量算术指令501可包含一或多个指示符、一或多个字段(例如,操作数)或其组合,如参考图3所描述。
处理器可经配置以在矢量算术指令501的执行期间执行各种操作。如参考图4所描述,在矢量化表查找指令401的执行期间,接收输入矢量410(Vv),且生成系数矢量440(Vdd)。在执行矢量算术指令501期间,处理器可处理输入矢量410及系数矢量440,且可生成结果矢量550。结果矢量550可包含函数的多个估计输出值。所述函数的多个估计输出值可与输入矢量410的输入值的数目相同(例如,输入矢量410及结果矢量550可包含M个元素)。
在运算期间,处理器可接收矢量算术指令501。处理器可使用输入矢量410的输入值及系数矢量440的分段分析系数来执行矢量算术指令501以生成结果矢量550的估计输出值,如参考图3所描述。为了说明,算术逻辑电路可将使第一输入值x0与第一类型的第一分段分析系数a2相乘以生成第一乘积a2*x0。算术逻辑电路可将乘积a2*x0与第二类型的第二分段分析系数b2相加以生成第一估计输出值y0=a2*x0+b2。可以类似的方式生成估计输出值y1到yM-1。通过在执行单个指令期间生成结果矢量550,与执行多个指令以生成结果矢量550的系统相比,系统可使用更少的存储器及功率且具有增加的速度。
参考图6,揭示执行单个分段逼近指令601的特定说明性过程的图600。单个分段逼近指令601可为单个矢量指令。单个分段逼近指令601可由例如图1的处理器102的处理器执行。
如图6中所说明,单个分段逼近指令601可包含指令名称603(pwlalut2segh)(例如,操作码)。指令名称603可包含一或多个指示符,例如段指示符604及字长指示符605。段指示符604的值可指示分段分析的段的数目。段指示符604的值还可指示或对应于构成输入系数表620中的一组分段分析系数的多个分段分析系数。分段分析系数(例如,分段分析系数组)可在输入系数表620中重复一或多次。在图6中所说明的实例中,段指示符指示存在分段分析的两个段(例如,组中存在两组分段分析系数(或四个分段分析系数))。通过具有重复组的分段分析系数,当多个输入值大于由段指示符604指示的段的数目时,可在单个指令中(或通过单个运算)执行矢量运算。矢量运算可在单个指令中执行,因为多组分段分析系数可匹配多个输入值。例如,如图6中所说明,输入矢量610包含四个输入值(x0到x3)且段指示符指示两段分段逼近(两组分段分析系数a0-a1、b0-b1)。因此,通过具有第二组(组2),多组分段分析系数(例如,4(组1的a0到a1及组2的b0-b1))可匹配许多输入值(例如,4)。因此,单个分段逼近指令601可在不增加分段逼近的复杂度的情况下接收较大的输入矢量。
字长指示符605的值可指示输入值的位大小。在图6所说明的实例中,字长指示符605的值为“h”,且可用于表示输入值的大小为指令字的“一半”(例如,16位)。尽管输入系数表620经说明为具有两个组,但输入系数表620可包含更多组或更少组。输入系数表620的多个组可基于段指示符604,输入矢量610的输入值的数目,输入值的字长或其组合。
单个分段逼近指令601还可包含一或多个字段(例如,操作数),例如第一字段602(Vd)、第二字段606(Vuu)及第三字段607(Vv)。存储在第一字段602中的第一值可指示结果矢量650(例如,矢量Vd)。存储在第二字段606中的第二值可指示输入系数表620(例如,矢量Vuu),且存储在第三字段607中的第三值可指示输入矢量610(例如,矢量Vv)。尽管说明三个字段,但在其它实施方案中,单个分段逼近指令601可包含多于三个字段或少于三个字段。
处理器可经配置以在单个分段逼近指令601的执行期间执行各种操作。处理器可经配置以接收包含多个输入值的输入矢量610(Vv),例如x0、x1、x2及x3。输入矢量610(例如,输入值的矢量)可存储在处理器的第一寄存器612中。输入矢量610的多个输入值可组织成组。例如,x0及x1可为第一组输入值618(例如,组1)的部分,且x2及x3可为第二组输入值(例如,组2)的部分。这些组可对应于输入系数表620中的分段分析系数组。例如,第一组输入值618(例如,组1)可对应于输入系数表620中的第一组分段分析系数628(例如,组1)。
处理器可使用一或多个移位值来生成索引值矢量630的输入矢量610。在一些实施方案中,可使用单个移位值。例如,可将单个移位值(例如,五个零)应用于输入矢量610的每一输入值,或可将具有相同值的移位值的矢量应用于输入矢量610的输入值。在其它实施方案中,可使用不同移位值。作为说明性非限制性实例,可将第一移位值(例如,三个零)应用于第一输入值,且可将第二移位值(例如,六个零)应用于第二输入值。一或多个移位值可为固定的(例如,存储或预定)。一或多个移位值可由处理器生成或存储在存储器中且由处理器存取。在特定实施方案中,一或多个移位值可由移位值生成器生成,如参考图9所描述。处理器可使用一或多个移位值来将输入矢量610的输入值归一化到目标范围。索引值矢量630可存储在处理器的第二寄存器622中,且可包含多个索引值。多个索引值的每一索引值可对应于输入矢量610的输入值。图6说明可在每一组索引值矢量630中重复索引值(例如,出现多于一次)的实例。在其它实例中,特定索引值可在每一组索引值矢量630中出现一次。另外或替代地,可能的索引值可不出现在一或多个组索引值矢量630中。
处理器可经配置以从存储器(例如图1的存储器106)接收(或检索)输入系数表620。处理器可经配置以将输入系数表620存储在第三寄存器632中。输入系数表620可包含多组分段分析系数,例如第一组(a0及b0)以及第二组(a1及b1)。可重复输入系数表620的多组分段分析系数。例如,输入系数表620可包含多组分段分析系数。每组分段分析系数可包含来自多组分段分析系数中的每一组的分段分析系数。为在图6中说明,第一组分段分析系数628包含a0及a1且第二组包含a0及a1。在其它实施方案中,处理器可在执行单个分段逼近指令601之前将输入系数表620从存储器加载到第三寄存器632中。处理器可在单个分段逼近指令601的执行期间从第三寄存器632检索(或接收)输入系数表620。
在另一特定实施方案中,输入系数表620可存储于处理器的多个寄存器中。例如,输入系数表620可包含第一区段(或部分),其包含第一类型(a)的多个分段分析系数,及第二区段(或部分),其包含第二类型(b)的多个分段分析系数。输入系数表620的第一区段可存储在第三寄存器632中,输入系数表620的第二区段可存储在另一寄存器中。输入系数表620的每一区段可包含对应于输入矢量的组的一组分段分析系数(或其部分)。例如,输入系数表620的第一区段及第二区段可各自包含对应于第一组输入值618(例如,组1)的第一组分段分析系数628(例如,组1)的部分。输入系数表620的第一区段及第二区段还可各自包含对应于第二组输入值(例如,组2)的第二组分段分析系数的一个部分(例如,组2)。
处理器可使用索引值矢量630的多个索引值来生成结果矢量650。结果矢量650可存储在第四寄存器642中。处理器可使用索引值矢量630作为置换网络(例如图1的置换网络114)的输入以生成结果矢量650。为了说明,置换网络可基于索引值矢量630从第三寄存器632(其包含输入系数表620)选择一或多组分段分析系数并将其路由到算术逻辑电路。一或多个所选择组分段分析系数组可包含或对应于图1的多个系数140,且算术逻辑电路可包含或对应于图1的算术逻辑电路112。算术逻辑电路可经配置以对输入矢量610及来自输入系数表620的所选择组的分段分析系数执行算术运算以生成结果矢量650。结果矢量650可包含函数的估计输出值。在图6中,估计输出值包含y0至y3。估计的输出值可基于输入值对应于函数的逼近值。
在操作期间,处理器可接收单个分段逼近指令601。处理器可使用输入矢量610的输入值及一或多个位移值来执行单个分段逼近指令601以针对每一输入值生成索引值矢量630的索引值。
处理器(或系数确定单元)可将一或多个移位值应用于输入矢量610的输入值以生成索引值。作为实例,处理器可将输入值右移以生成索引值。索引值可表示与移位输入值的二进制重新定位相关联的有效位的特定数目,如参考图1所描述。在特定实施方案中,输入矢量610的输入值可在由处理器接收之前归一化到目标范围。
处理器(或系数确定单元)可从存储器检索(或接收)输入系数表620,且处理器可将输入系数表620存储在第三寄存器632中。在特定实施方案中,处理器可将输入系数表620的第一区段存储在第三寄存器632中,并将输入系数表620的第二区段存储在另一寄存器中。在一些实施方案中,处理器可在执行单个分段逼近指令601之前将输入系数表620加载到第三寄存器632中。处理器可响应于接收表加载指令将输入系数表620加载在第三寄存器632中。
单个分段逼近指令601的执行还可包含使用索引值矢量630的索引值及输入系数表620的一或多组分段分析系数来针对每一输入值选择系数矢量640的对应组的分段分析系数。在一些实施方案中,置换网络可使用索引值来选择输入系数表220的一或多组分段分析系数,并将来自第三寄存器632的一或多组分段分析系数路由到处理器的算术逻辑电路。置换网络可包含或对应于图1的置换网络114。
算术逻辑电路可将输入矢量610的多个输入值与第一类型(a)的分段分析系数相乘以生成乘积。算术逻辑电路可基于乘积(a*x)及具有第二类型(b)的分段分析系数生成和以生成结果矢量650的估计输出值。为了说明,算术逻辑电路可将第一组输入值618的第一输入值x0与第一组分段分析系数628的第一分段分析系数a1相乘以生成第一乘积a1*x0。算术逻辑电路可将乘积a1*x0与第一组分段分析系数628的第二分段分析系数b1相加以生成第一估计输出值y0=a1*x0+b1。
作为另一说明,算术逻辑电路可将第二组输入值的第二输入值x3与第二组分段分析系数的第三分段分析系数a1相乘以生成第二乘积a1*x3。算术逻辑电路可将第二乘积a1*x3与第二组分段分析系数的第四分段分析系数b1相加以生成第二估计输出值y3=a1*x3+b1。第三分段分析系数a1可具有与第一分段分析系数a1相同的值,但第三分段分析系数a1可从不同组(例如,组2)选择。可以类似的方式生成y1及y2的估计输出值。通过在执行单个指令期间生成结果矢量650,与执行多个指令以生成结果矢量650的系统相比,系统可使用更少的存储器及功率且具有增加的速度。
参考图7,揭示执行单个分段逼近指令701的另一说明性过程的图700。单个分段逼近指令701可为单个矢量指令。如图7中所说明,单个分段逼近指令701可包含指令名称(pwlalut4segh)(例如,操作码)。单个分段逼近指令701可包含一或多个指示符、一或多个字段(例如,操作数)或其组合,如参考图6所描述。在图7中所说明的实例中,单个分段逼近指令701对应于四段分段分析。组的数目(k)可对应于段的数目、输入矢量710的输入值的数目(M)、输入值的位的数目或其组合。作为说明性非限制性实例,k可具有值16。在其它实例中,k的值可小于或大于16。通过具有重复组的分段分析系数(例如,组),当输入值的数目大于分段逼近的段的数目(例如,如图7中所说明的四段(a0-a3、b0-b3))时,可在单个指令中(或通过单个运算)执行矢量运算。矢量运算可在单个指令中执行,因为多组分段分析系数可匹配多个输入值。例如,虽然图7说明四段运算,但如果存在六十四个输入值,那么可存在16组分段分析系数(各自四组分段分析系数)以匹配六十四个输入值。因此,单个分段逼近指令701可在不增加分段逼近的复杂度的情况下接收较大的输入矢量。
单个分段逼近指令701可由例如图1的处理器102的处理器执行。处理器可接收包含多个输入值的输入矢量710。处理器可处理多个输入值并同时生成结果矢量750的多个估计输出值(例如,内容),如参考图6所描述。
在操作期间,处理器可接收单个分段逼近指令701。处理器可使用输入矢量710的输入值及一或多个位移值来执行单个分段逼近指令701以针对每一输入值生成索引值矢量730的索引值。处理器可检索或接收输入系数表720。处理器可从输入系数表720确定或选择多个系数,如参考图6所描述。图7说明在每组索引值矢量730中无索引值重复(例如,出现多于一次)的实例。在其它实例中,特定索引值可在每一组索引值矢量730中出现多于一次。另外或替代地,可能的索引值可不出现在一或多个组索引值矢量730中。
处理器可使用输入矢量710的输入值及多个系数来生成结果矢量750,如参考图6所描述。为了说明,算术逻辑电路可将第一输入值x0与输入系数表720的第一组分段分析系数的第一分段分析系数a1相乘以生成第一乘积a1*x0。算术逻辑电路可将乘积a1*x0与输入系数表628的第二组分段分析系数720的第二分段分析系数b1相加以生成第一估计输出值y0=a1*x0+b1。可以类似的方式生成估计输出值y1到yM-1。通过在执行单个指令期间生成结果矢量750,与执行多个指令以生成结果矢量750的系统相比,系统可使用更少的存储器及功率且具有增加的速度。
参考图8,生成估计值的方法的特定说明性实例的流程图经描绘且通常指定为800。方法800可由处理器(例如图1的处理器102)执行。方法800包含在802处接收输入值的矢量。例如,输入值的矢量可包含或对应于图1的输入矢量110、图2及3的输入矢量210、图4及5的输入矢量410、图6的输入矢量610或图7的输入矢量710。在一些实施方案中,输入值的矢量可对应于函数的输入值。为了说明,处理器102的系数确定单元104可接收输入矢量110,如参考图1所描述。
方法800还包含在804处执行单个指令以选择多个分段分析系数。例如,选择多个分段分析系数的单个指令可包含或对应于图2的矢量化表查找指令201、图1的矢量化表查找指令401、图6的单分段逼近指令601,或图7的单个分段线性逼近指令。多个分段分析系数可包含或对应于图1的多个分段分析系数、图2及3的系数矢量240、图4及5的系数矢量340或图6及7的一或多选择组复数个分段分析系数。多个分段分析系数可包含一或多组分段分析系数,且每组分段分析系数可对应于输入值的矢量的输入值。为了说明,系数确定单元104的置换网络114可选择多个系数140,如参考图1所描述。
方法800进一步包括在806基于分段分析系数的矢量及输入值的矢量确定函数的估计输出值。函数的估计输出值可包含或对应于图1的估计输出值矢量116、图3的结果矢量350、图5的结果矢量550、图6的结果矢量650,或图7的结果矢量750。为了说明,处理器102的算术逻辑电路112可确定估计输出值矢量116,如参考图1所描述。
在一些实施方案中,方法800可包含生成包含多个分段分析系数的分段分析系数的矢量。例如,图1的处理器102的置换网络114可生成图2及3的系数矢量240,或图4及5的系数矢量440。在特定实施方案中,生成分段分析系数的矢量可包含,对于输入值的矢量的每一输入值,基于输入值从表中选择一组分段分析系数。表可包含或对应于图1的输入系数表120、图2及3的输入系数表220、图4及5的输入系数表420、图6的输入系数表620或图7的输入系数表720。表可包含多组分段分析系数。通过使用置换网络,如与使用每通道或每元素查找表(例如,每一输入值的单独查找表)的系统相比,方法800可使用较少存储器且具有增加的速度以选择用于逼近函数的系数。
在一些实施方案中,执行单个指令进一步包含确定函数的估计输出值。例如,执行图6的单个分段逼近指令601或图7的单个分段逼近指令701可分别判定结果矢量650或结果矢量750。结果矢量650及结果矢量750可包含多个估计的输出值。通过使用线性逼近(例如,一阶泰勒展开式)及矢量化表查找,单个指令的执行可确定估计输出值。通过利用单个指令确定估计输出值,处理器可使用比使用非线性逼近、每元素查找、每通道查找或其组合的处理器更少的资源及处理周期。
在一些实施方案中,执行单个指令以选择多个分段分析系数可包含基于对应于输入值的矢量的第一输入值的多个位来执行对分段分析系数表的查找。执行单个指令以选择多个分段分析系数还可包含基于查找确定对应于第一输入值的第一组分段分析系数。例如,执行矢量化表查找指令201可包含处理器基于对应于输入矢量210的第一输入值x0的多个位(例如,多数位位值)执行对输入系数表220的查找且判定对应于第一输入值x0的第一组分段分析系数a2及b2,如参考图2所描述。
在一些实施方案中,执行单个指令以选择多个分段分析系数可包含基于第一输入值及移位值而生成多个位。例如,可基于第一输入值x0及第一移位值shiftvalue0而生成多个位(例如,位值),如参考图2所描述。
在一些实施方案中,方法800可包含基于函数从多个表中选择分段分析系数表。例如,处理器102可从处理器102的一或多个寄存器中检索输入系数表120。处理器102可在接收输入矢量110之前接收(或检索)输入系数表120,如参考图1所描述。
在一些实施方式中,多组分段分析系数中的每一组包含第一类型的至少一个系数及第二类型的至少一个系数。例如,参考图1,每一组分段分析系数包含至少一个“a”系数及至少一个“b”系数。在一些实施方式中,表包含第一部分及第二部分,第一部分包含多组分段分析系数,第二部分包含一或多个移位值,如参考图2到5所描述。在其它实施方案中,表包含第一区段及第二区段,第一区段包含第一类型的多个分段分析系数且第二区段包含第二类型的多个分段分析系数,如参考图6及7所描述。
在一些实施方案中,所述表可包含多组分段分析系数。例如,图6的输入系数表620及图7的输入系数表720可包含多个组,例如组1及组2。多组分段分析系数中的至少两组的分段分析系数可为相同的。例如,图6的输入系数表620的第一区段的组1及组2各自可包含a0及a1。
在一些实施方案中,多个分段分析系数可包含多组分段分析系数,且多组分段分析系数中的每一组分段分析系数可包含两个分段分析系数。例如,图2的系数矢量240可包含由置换网络选择的多组分段分析系数,例如第一组a0及b0以及第二组a1及b1。在特定实施方案中,多组分段分析系数中的每一组可包括第一类型的至少一个系数及第二类型的至少一个系数。例如,第一类型可包含或对应于“a”类型系数,且第二类型可包含或对应于“b”类型系数。在一些实施方案中,多个分段分析系数可对应于线性分析系数。
在一些实施方案中,所述函数可包含非线性函数。例如,所述函数可包含反函数、平方根函数、指数函数、对数函数、反正切函数或其组合,如参考图1所描述。
在一些实施方案中,可通过执行第二单个指令来确定估计输出值。例如,第二单个指令可包含或对应于图3的矢量算术指令301或图5的矢量算术指令501。执行第二单个指令可包含生成多个分段分析系数的第一分段分析系数与输入值的矢量的第一输入值的乘积。执行第二单个指令还可包含基于乘积与多个分段分析系数的第二分段分析系数的和而生成第一估计输出值。
在一些实施方案中,方法800可包含基于输入值的矢量及目标范围而计算移位值。例如,图1的处理器或图9的移位值生成器990可计算移位值。方法800还可包含对于输入值的矢量的每一输入值,基于输入值及移位值而生成多个位。多个位中的多个有效位可在目标范围内。在其它实施方案中,可生成单个位。
因此,方法800可使得处理器能够使用减少数目的指令来生成函数的估计输出值。例如,处理器可执行一个或两个指令以生成估计输出值。减少数目个指令可使用较少的处理资源。通过使用较少的处理资源,方法800可使用较少的存储器及功率且具有增加的速度。
在特定方面中,图8的方法800可由场可编程门阵列(FPGA)装置(例如,ASIC、DSP、控制器、FPGA器件等)、软件(例如,可由处理器执行的指令,等)或其任何组合来实施。作为实例,图8之方法800可由执行指令之处理器执行,如关于图9所描述。为了说明,图8的方法800的部分可与图8的方法800的第二部分组合。另外,参考图8所描述的一或多个操作可为任选的,可至少部分地同时执行,可以不同于所展示或所描述的次序执行,或其组合。
参考图9,装置(例如,无线通信装置)的特定说明性实例的框图经描绘且通常指定为900。在各种实施方案中,装置900可具有比图9中所说明之更多或更少的组件。在说明性实例中,基地台900可根据图8的方法800操作。
在特定实施中,装置900包含处理器906(例如,CPU)及存储器932。装置900可包含一或多个额外处理器,例如处理器910(例如,DSP)。处理器906、处理器910或两者可包含或对应于图1的处理器102,且存储器932可包含或对应于图1的存储器106。处理器910可包含寄存器980及移位值生成器990。寄存器980可包含或对应于如参考图1到7所描述的寄存器。移位值生成器990可经配置以生成(或计算)一或多个移位值。移位值生成器990可基于输入值的范围及输入值的目标范围来生成(或计算)移位值。可将一或多个移位值应用于输入值以生成索引值,如参考图1及2所描述。另外或替代地,一或多个移位值可用于将输入值归一化到目标范围。
处理器910可包含图1的系数确定单元104、算术逻辑电路112及置换网络114。虽然寄存器980经说明为处理器910的组件,但在其它实例中,寄存器980的一或多个组件可包含在处理器906、写码器-解码器(CODEC)934、另一处理组件或其组合中。另外,图1的系数确定单元104、算术逻辑电路112及置换网络114可包含在处理器906、CODEC 934、另一处理组件或其组合中。
处理器910可包含语音及音乐CODEC 908及干扰消除器912。语音及音乐CODEC 908可包含编码器992,例如声码器编码器。虽然语音及音乐CODEC 908经说明为处理器910的组件,但在其它实例中,语音及音乐CODEC 908的一或多个组件可包含在处理器906、CODEC934、另一处理组件或其组合中。
装置900可包含存储器932及CODEC 934。CODEC 934可包含数模转换器(DAC)902及模数转换器(ADC)904。扬声器936、麦克风938或两者可耦合到CODEC 934。CODEC 934可从麦克风938接收模拟信号,使用模数转换器904将模拟信号转换为数字信号,且将数字信号提供到语音及音乐CODEC 908。语音及音乐CODEC 908可处理数字信号。在一些实施方案中,语音及音乐CODEC 908可向CODEC 934提供数字信号。CODEC 934可使用数模转换器902将数字信号转换为模拟信号,且可将模拟信号提供到扬声器936。
装置900可包含经由收发器950(例如,发射器、接收器或其组合)耦合到天线942的无线控制器940。装置900可包含存储器932,例如计算机可读媒体或计算机可读存储装置。存储器932可包含指令960,例如可由处理器906、处理器910或其组合执行的一或多个指令,以执行图8的方法800。
作为说明性实例,存储器932可存储至少单个指令,当由处理器906,处理器910或其组合执行时,所述指令致使处理器906、处理器910或其组合选择基于输入值的矢量的多个分段分析系数。多个分段分析系数可包含一或多组分段分析系数,且每组分段分析系数可对应于输入值的矢量的输入值。至少指令在被执行时可进一步致使处理器906、处理器910或其组合基于所选择的多个分段分析系数生成分段分析系数的矢量。例如,处理器906、处理器910或其组合可致使置换网络将所选择的多个分段分析系数路由到一或多个寄存器以生成分段分析系数的矢量。
在一些实施方案中,所述至少单个指令在经执行时可进一步致使处理器906、处理器910或其组合基于分段分析系数的矢量及输入值的矢量来确定函数的估计输出值。在其它实施方案中,所述至少单个指令包含第二指令,所述第二指令在经执行时可进一步致使处理器906、处理器910或其组合基于分段分析系数的矢量及输入值的矢量来确定函数的估计输出值。
在一些实施方案中,所述至少单个指令在经执行时可进一步致使所述处理器基于所述输入值的矢量的第一输入值及移位值来生成多个位以基于多个位执行对系数的查找,且基于查找确定对应于第一输入值的第一组分段分析系数。
在一些实施方案中,存储器932可包含可由处理器906、处理器910或两者执行的代码(例如,解释或编译的程序指令),以使处理器906、处理器910或两者执行以执行如参考图1的处理器102所描述的功能以执行图8的方法800的至少部分,或其组合。为了进一步说明,实例1到3描绘可编译并存储在存储器932中的说明性指令及说明性伪代码(例如,简化的C代码)。伪代码说明关于图1到8所描述的方面的可能实施方案。伪代码包含非可执行代码的部分的注释。在伪代码中,注释的开头由正斜杠及星号(例如,“/*”)指示,且注释的结尾由星号及正斜杠表示(例如,“*/”)。为了说明,注释“COMMENT”可能在伪代码中出现为/*COMMENT*/。
在所提供的实例中,“==”运算符指示相等比较,使得“A==B”当A的值等于B的值时具有值TRUE,且否则具有值FALSE。“&&”运算符指示逻辑“与”运算。“||”运算符指示逻辑“或”运算。“>”(大于)运算符表示“大于”,“>=”运算符表示“大于或等于”,且“<”运算符指示“小于”。
在所提供的实例中,“*”可表示乘法运算,“+”或“和”可表示加法运算,“-”可指示减法运算,且“/”可表示除法运算。“=”运算符表示赋值(例如,“a=1”将值1赋给变量“a”)。“>>”可表示右移操作。除了或代替实例1到3的条件组,其它实施方案式可包含一或多个条件。
实例1
Vdd=vlut32segh(Vuu,Vv)
/*Vv Contains 64 16s value x63,...,x3,x2,x1,x0,Vuu.H contains 32x(b,a)segments and Vuu.L contains splatted 16s Shift value*/
for(i=0;i<1024/32;i++){
Vdd.V16s[2*i]=Vuu.V16s[64+Vv.V16s[2*i]>>Vuu.V16s[2*i]modulo 2^5];
Vdd.V16s[2*i+1]=Vuu.V16s[64+Vv.V16s[2*i]>>Vuu.V16s[2*i]modulo 2^5+1];
Vdd.V16s[64+2*i]=Vuu.V16s[64+Vv.V16s[2*i+1]>>Vuu.V16s[2*i+1]modulo 2^5];
Vdd.V16s[64+2*i+1]=
Vuu.V16s[64+Vv.V16s[2*i+1]>>Vuu.V16s[2*i+1]modulo 2^5+1];
};
实例2
Vd=vmpyaddeoh(Vdd,Vv)
/*Vv Contains 64 16s value x63,...,x3,x2,x1,x0,Vdd.L contains(b,a)pairs for even elements and Vdd.H contains(b,a)pairs for odd elements*/
for(i=0;i<1024/32;i++){
Vd.V16s[2*i]=sat_16(Vdd.V16s[2*i+1]+(((Vdd.V16s[2*i]*
Vv.V16s[2*i])+0x4000)>>15));
Vd.V16s[2*i+1]=sat_16(Vdd.V16s[64+2*i+1]+(((Vdd.V16s[64+2*i]*
Vv.V16s[2*i+1])+0x4000)>>15));
};
实例3
Vd=pwlalut4segh(Vuu,Vv)
/*Vv Contains x3,x2,x1,x0,Vuu.L contains a3,a2,a1,a0,Vuu.H containsb3,b2,b1,b0*/
for(i=0;i<1024/16;i++){
Vd.V16s[i]=sat_16(Vuu.V16s[Vv.V16s[i]>>12&3+((64+i)>>2)<<2]+(((Vuu.V16s[Vv.V16s[i]>>12&3+(i>>2)<<2]*Vv.V16s[i])+0x4000)>>15));
};
存储器932可包含指令960,所述指令可由处理器906、处理器910、CODEC 834、装置900的另一处理单元或其组合执行以执行例如图8的方法800的本文中所揭示的方法及过程。图1的系统100的一或多种组件可经由专用硬件(例如,电路),通过处理器执行指令(例如,指令906)以执行一或多个任务,或其组合来实施。作为实例,存储器932或处理器906的一或多个组件、处理器910、CODEC 934或其组合可为存储器装置,例如随机存取存储器(RAM)、磁阻式随机存取存储器(MRAM)、自旋扭矩转移MRAM(STT-MRAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移除磁盘或光盘只读存储器(CD-ROM)。存储器装置可包含指令(例如,指令960),所述指令在由计算机(例如,CODEC 934中的处理器、处理器906、处理器910或其组合)执行时可致使计算机以执行图8的方法800的至少部分。作为实例,存储器932或处理器906、处理器910、CODEC 934的一或多个组件可为包含指令(例如,指令960)的非暂时性计算机可读媒体,所述指令在由计算机(例如,CODEC 934中的处理器、处理器906、处理器910或其组合)执行时致使计算机执行图8的方法800的至少部分。
在特定实施方案中,装置900可被包含在系统级封装或单片系统装置922中。在一些实施方案中,存储器932、处理器906、处理器910、显示控制器926、CODEC 934、无线控制器940及收发器950包含在系统级封装或单片系统装置922中。在一些实施方案中,输入装置930及电力供应器944耦合到单片系统装置922。此外,在特定实施方案中,如图9中所说明,显示器928、输入装置930、扬声器936、麦克风938、无线天线942及电力供应器944在单片系统装置922的外部。在其它实施方案中,显示器928、输入装置930、扬声器936、麦克风938、天线942及电力供应器944中之每一者可耦合到单片系统装置922的组件,例如单片系统装置922的接口或控制器。在说明性实例中,装置900对应于通信装置、移动通信装置、智能电话、蜂窝式电话、膝上型计算机、计算机、平板计算机、个人数字助理、机顶盒、显示装置、电视、游戏控制台、音乐播放器、无线电、数字视频播放器、数字视频光盘(DVD)播放器、光盘播放器、调谐器、相机、导航装置、解码器系统、编码器系统或其任何组合。
在说明性实例中,处理器910可操作以执行参考图1到8所描述的方法或操作中的全部或部分。例如,处理器910可接收输入值的矢量。输入值可包含或对应于由天线942接收的信号的样本。系数检测单元104可检索输入系数表。处理器910可执行单个指令以从输入系数表中选择多个分段分析系数。在一些实施方案中,置换网络114可生成包含多个分段分析系数的系数矢量。算术逻辑电路112可生成包含估计的输出值的结果矢量。
结合所描述的方面中,一种设备可包含用于接收输入值的矢量的装置。例如,用于接收输入值的矢量的装置可包含或对应于图1的处理器102、存储器106、系数确定单元104、置换网络114、算术逻辑电路112,图2的第一寄存器212,图4的第一寄存器412,图6的第一寄存器612,图7的第一寄存器712,图9的收发器950、无线控制器940、寄存器980、经编程以执行指令960的处理器906、910中的一或多者,用以接收输入值的矢量的一或多个其它结构、装置、电路、模块或指令,或其组合。
所述设备还可包含用于执行单个指令以选择多个分段分析系数的装置。例如,用于执行的装置可包含或对应于图1的处理器102、系数确定单元104、置换网络114,图9的经编程以执行指令960的处理器910、906中的一或多者,用以执行单个指令以选择多个分段分析系数的一或多个其它结构、装置、电路、模块或指令,或其组合。多个分段分析系数可包含一或多组分段分析系数,且每组分段分析系数可对应于输入值的矢量的输入值。
所述设备可进一步包含用于基于多个分段分析系数及输入值矢量确定函数的估计输出值的装置。例如,用于确定的装置可包含或对应于图1的处理器102、算术逻辑电路112,图9的经编程以执行指令960的处理器910、906中的一或多者,用以确定函数的估计输出值的一或多个其它结构、装置、电路、模块或指令,或其组合。
所述设备还可包含用于存储分段分析系数的矢量的装置。例如,用于存储分段分析系数的矢量的装置可包含或对应于图1的处理器102、存储器106、系数确定单元104、置换网络114、算术逻辑电路112,图2的第四寄存器242,图4的第四寄存器442,图9的寄存器980、经编程以执行指令960的处理器910、906中的一或多者,用以存储分段分析系数的矢量的一或多个其它结构、装置、电路、模块或指令,或其组合。分段分析系数的矢量可包含多个分段分析系数。
在一些实施方案中,用于接收的装置,用于执行的装置及用于确定的装置经集成到移动电话、蜂窝电话、计算机、便携式计算机、调谐器、无线电、卫星无线电、通信装置、调制解调器、便携式音乐播放器、便携式数字视频播放器、导航装置、个人数字助理(PDA)、移动位置数据单元或其组合中。
在上文所描述的各方面中,所执行的各种功能已经描述为由某些电路或组件(例如图1的系统100的某些电路或组件)、图9的装置900或其组合执行。然而,电路及组件的此划分仅用于说明。在替代实例中,由特定电路或组件执行的功能可替代地在多个电路或组件之间划分。此外,在其它替代实例中,图1到7及9的两个或多于两个电路或组件可集成到单个电路或组件中。图1到7及9中所说明的每一电路及组件可使用硬件(例如,ASIC、DSP、控制器、FPGA器件,等)、软件(例如,逻辑模块、可由处理器执行的指令,等)或其任何组合实施。
此外,所属领域的技术人员将进一步了解,结合本文中所揭示的方面所描述的各种说明性逻辑块、配置、模块、电路及算法步骤可实施为电子硬件、由处理器执行的计算机软件或两者的组合。各种说明性组件、块、配置、模块、电路及步骤已在上文大体就其功能方面加以描述。此功能性是实施为硬件还是处理器可执行指令取决于强加于整个系统的特定应用及设计约束。所属领域的技术人员可针对每一特定应用以变化方式实施所描述功能性,此些实施方案决策不应解释为导致对本发明的范围的脱离。
结合本文中的揭示方面所描述的方法或算法的步骤可直接以硬件、由处理器执行的软件模块或两者的组合包含。软件模块可驻留在RAM、快闪存储器、ROM、PROM、EPROM、EEPROM、寄存器、硬盘、可拆卸磁盘、CD-ROM或此项技术中已知的任何其它形式的非暂时性存储媒体。特定存储媒体可耦接到处理器使得所述处理器可从所述存储媒体读取信息且将信息写入到所述存储媒体。在替代方案中,所述存储媒体可与处理器成整体。处理器及存储媒体可驻存在ASIC中。ASIC可驻存于计算装置或用户终端中。在替代方案中,处理器及存储媒体可作为离散组件驻留于计算装置或用户终端中。
前述描述经提供以使得所属领域的技术人员能够制作或使用所揭示方面。在不脱离本发明的范围的情况下,对这些方面的各种修改对于所属领域的技术人员来说将易于显而易见,且本文中所定义的原理可应用于其它方面。因此,本发明并不意欲限于本文中所展示的方面,且欲赋予其与以下权利要求书所定义的原理及新颖特征相一致的最宽广范围。

Claims (30)

1.一种估计值的设备,其包括:
一或多个寄存器,其经配置以存储包括多个输入值的矢量;
系数确定器,其通信地耦合到所述一或多个寄存器,并且经配置以响应于由处理器执行单个指令,基于存储多组分段分析系数的表来选择多个分段分析系数,所述多个分段分析系数对应于所述多组分段分析系数中的一或多组分段分析系数,并且每一组分段分析系数对应于所述多个输入值中的对应输入值;及
算术逻辑电路,其耦合到所述系数确定器并且经配置以响应于至少所述单个指令的执行,基于所述多个分段分析系数、所述多个输入值中的至少一个输入值的移位操作、及所述矢量而确定函数的估计输出值。
2.根据权利要求1所述的设备,其进一步包括:置换网络,其经配置以响应于所述单个指令的执行,生成包括所述多个分段分析系数的分段系数的矢量。
3.根据权利要求1所述的设备,其中所述系数确定器经进一步配置以从存储器中检索表,其中所述函数包括非线性函数,且其中所述输入值对应于所述非线性函数的输入值。
4.根据权利要求1所述的设备,其中所述表包含第一部分及第二部分,所述第一部分包含多组分段分析系数,所述第二部分包含一或多个移位值。
5.根据权利要求1所述的设备,其中所述多组分段分析系数的每一组包含第一类型的至少一个系数及第二类型的至少一个系数。
6.根据权利要求1所述的设备,其中所述表包含第一区段及第二区段,所述第一区段包含第一类型的多个分段分析系数,所述第二区段包含第二类型的多个分段分析系数。
7.根据权利要求1所述的设备,其进一步包括:置换网络,其经配置以选择所述多个分段分析系数。
8.根据权利要求1所述的设备,其中所述算术逻辑电路经进一步配置以将所述矢量的特定输入值与所述一或多组分段分析系数的特定组分段分析系数的第一分段分析系数相乘以生成乘积。
9.根据权利要求8所述的设备,其中所述算术逻辑电路经进一步配置以基于所述乘积及所述特定组分段分析系数的第二分段分析系数生成和,且其中所述和对应于所述估计输出值的第一估计输出值。
10.根据权利要求1所述的设备,所述一或多个寄存器包含:
第一寄存器,其经配置以存储所述矢量;
第二寄存器,其经配置以存储多组分段分析系数;及
第三寄存器,其经配置以存储索引值矢量,所述索引值矢量为基于所述矢量及一或多个位移值生成。
11.根据权利要求1所述的设备,其中所述一或多个寄存器包含:
寄存器,其经配置以存储包含所述多个分段分析系数的分段分析系数的矢量;及
另一寄存器,其经配置以存储所述估计输出值,且
所述设备进一步包括置换网络,所述置换网络经配置以基于索引值矢量而将一或多组分段分析系数路由到所述寄存器以生成分段分析系数的所述矢量。
12.一种估计值的方法,所述方法包括:
接收输入值的矢量;
在电子设备的处理器处执行单个指令以选择多个分段分析系数,所述多个分段分析系数对应于一或多组分段分析系数,每一组分段分析系数对应于输入值的所述矢量的输入值;及
在所述电子设备处,基于所述多个分段分析系数、所述输入值中的至少一个输入值的移位操作、及输入值的所述矢量而确定函数的估计输出值。
13.根据权利要求12所述的方法,其进一步包括确定移位值,并且基于所述移位值生成包含所述多个分段分析系数的分段分析系数的矢量,其中生成分段分析系数的所述矢量包括,对于输入值的所述矢量的每一输入值,基于所述输入值从表选择一组分段分析系数,且其中所述表包含多组分段分析系数。
14.根据权利要求12所述的方法,其中执行所述单个指令包括:
基于对应于输入值的所述矢量的输入值的多个位而执行对分段分析系数表的查找;及
基于所述查找,确定对应于所述输入值的第一组分段分析系数。
15.根据权利要求12所述的方法,其中执行所述单个指令进一步包括基于所述输入值中的一个输入值及基于移位值而生成所述多个位。
16.根据权利要求12所述的方法,其进一步包括基于所述函数从多个表选择表。
17.根据权利要求12所述的方法,还包括执行对分段分析系数表的查找,其中所述表包含多组分段分析系数,且其中所述多组分段分析系数的至少两组的分段分析系数为相同的。
18.根据权利要求12所述的方法,其中
所述输入值中的一个或多个输入值与移位值相关联,并且
所述多个分段分析系数对应于线性分析系数。
19.根据权利要求12所述的方法,其中所述多个分段分析系数包含多组分段分析系数,且其中所述多组分段分析系数中的每一组分段分析系数包含两个分段分析系数。
20.根据权利要求12所述的方法,其中所述函数包含非线性函数,且其中输入值的所述矢量对应于所述非线性函数的输入值。
21.根据权利要求12所述的方法,其中通过执行第二单个指令来确定所述估计输出值,且其中执行所述第二单个指令包括:
生成所述多个分段分析系数的第一分段分析系数及输入值的所述矢量的输入值的乘积;及
基于所述乘积与所述多个分段分析系数的第二分段分析系数的和而生成第一估计输出值。
22.根据权利要求12所述的方法,其中执行所述单个指令进一步包含确定所述估计输出值。
23.根据权利要求12所述方法,其进一步包括:
基于输入值的所述矢量及目标范围而计算移位值;及
对于输入值的所述矢量的每一输入值,基于所述输入值及所述移位值而生成多个位,其中所述多个位的有效位的数目在所述目标范围内。
24.一种估计值的设备,其包括:
用于接收输入值的矢量的装置;
用于执行单个指令以选择多个分段分析系数的装置,所述多个分段分析系数包括一或多组分段分析系数,每一组分段分析系数对应于输入值的所述矢量的输入值、并且所述用于执行的装置被配置为移位所述输入值中的至少一个输入值;及
用于基于所述多个分段分析系数、所述输入值中的至少一个输入值的移位操作及所述矢量而确定函数的估计输出值的装置。
25.根据权利要求24所述的设备,其进一步包括用于存储分析系数的矢量的装置,所述分段分析系数包含所述多个分段分析系数。
26.根据权利要求24所述的设备,其中用于接收的所述装置、用于执行的所述装置及用于确定的所述装置经集成到移动电话、蜂窝电话、计算机、便携式计算机、调谐器、无线电、卫星无线电、通信装置、调制解调器、便携式音乐播放器、便携式数字视频播放器、导航装置、个人数字助理PDA、移动位置数据单元或其组合中。
27.一种存储介质,其包括在由设备处的处理器执行时致使所述处理器发起或执行包括以下的操作的至少单个指令:
基于数据结构中的矢量的对应的多个输入值而选择多个分段分析系数,所述多个分段分析系数包括一或多组分段分析系数,每一组分段分析系数对应于所述矢量的输入值,所述设备被配置为移位至少一个输入值;及
在所述设备处,基于所述多个分段分析系数、所述输入值中的至少一个输入值的移位操作及所述矢量而确定函数的估计输出值。
28.根据权利要求27所述的存储介质,其中所述至少单个指令在由所述处理器执行时致使所述处理器从与所述数据结构相关联的表中接收分段分析系数的所述矢量,并存储到所述处理器的一个或多个寄存器中。
29.根据权利要求27所述的存储介质,其中所述至少单个指令包含第二指令,所述第二指令在由所述处理器执行时致使所述处理器基于分段分析系数的所述矢量及所述矢量而确定函数的估计输出值。
30.根据权利要求27所述的存储介质,其中所述至少单个指令在由所述处理器执行时进一步致使所述处理器:
基于所述矢量的输入值及移位值而生成多个位;
基于所述多个位而对系数表执行查找;及
基于所述查找而确定对应于所述输入值的第一组分段分析系数。
CN201780044294.XA 2016-07-29 2017-06-02 分段线性逼近的系统及方法 Active CN109478199B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/224,237 2016-07-29
US15/224,237 US10466967B2 (en) 2016-07-29 2016-07-29 System and method for piecewise linear approximation
PCT/US2017/035803 WO2018022191A2 (en) 2016-07-29 2017-06-02 System and method for piecewise linear approximation

Publications (2)

Publication Number Publication Date
CN109478199A CN109478199A (zh) 2019-03-15
CN109478199B true CN109478199B (zh) 2023-09-29

Family

ID=59093613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780044294.XA Active CN109478199B (zh) 2016-07-29 2017-06-02 分段线性逼近的系统及方法

Country Status (7)

Country Link
US (1) US10466967B2 (zh)
EP (1) EP3491535A2 (zh)
JP (1) JP6687803B2 (zh)
KR (1) KR20190037236A (zh)
CN (1) CN109478199B (zh)
BR (1) BR112019001552A2 (zh)
WO (1) WO2018022191A2 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102529602B1 (ko) * 2021-07-19 2023-05-08 주식회사 사피온코리아 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법
WO2024009371A1 (ja) * 2022-07-04 2024-01-11 日本電信電話株式会社 データ処理装置、データ処理方法、及びデータ処理プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102160031A (zh) * 2008-09-23 2011-08-17 高通股份有限公司 用以执行线性反馈移位指令的系统及方法
CN103348300A (zh) * 2011-01-21 2013-10-09 飞思卡尔半导体公司 计算函数的函数值的装置和方法
CN103970509A (zh) * 2012-12-31 2014-08-06 英特尔公司 对条件循环进行矢量化的指令和逻辑

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170475A (en) 1989-03-06 1992-12-08 Motorola, Inc. Data processor having instructions for interpolating between memory-resident data values respectively
US6924802B2 (en) * 2002-09-12 2005-08-02 International Business Machines Corporation Efficient function interpolation using SIMD vector permute functionality
US7593851B2 (en) 2003-03-21 2009-09-22 Intel Corporation Precision piecewise polynomial approximation for Ephraim-Malah filter
US20050114134A1 (en) 2003-11-26 2005-05-26 Microsoft Corporation Method and apparatus for continuous valued vocal tract resonance tracking using piecewise linear approximations
GB0411880D0 (en) 2004-05-27 2004-06-30 Imagination Tech Ltd Method and apparatus for efficient evaluation of "table-based" mathematical functions
US8793560B2 (en) 2006-03-14 2014-07-29 Qualcomm Incorporated Log-likelihood ratio (LLR) computation using piecewise linear approximation of LLR functions
US8416719B2 (en) 2008-03-20 2013-04-09 Aquantia Corporation Generating an estimated non-linear echo signal
US20150052330A1 (en) 2013-08-14 2015-02-19 Qualcomm Incorporated Vector arithmetic reduction
US20160005499A1 (en) * 2014-07-03 2016-01-07 Ge Nuclear Energy Methods of coating a nuclear reactor component with a colloidal solution
US10261939B2 (en) 2014-08-20 2019-04-16 Nxp Usa, Inc. Performing lookup table operations on a single-instruction multiple data processor
US20170003966A1 (en) * 2015-06-30 2017-01-05 Microsoft Technology Licensing, Llc Processor with instruction for interpolating table lookup values
US9990196B2 (en) * 2016-04-01 2018-06-05 Intel Corporation Instruction, circuits, and logic for piecewise linear approximation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102160031A (zh) * 2008-09-23 2011-08-17 高通股份有限公司 用以执行线性反馈移位指令的系统及方法
CN103348300A (zh) * 2011-01-21 2013-10-09 飞思卡尔半导体公司 计算函数的函数值的装置和方法
CN103970509A (zh) * 2012-12-31 2014-08-06 英特尔公司 对条件循环进行矢量化的指令和逻辑

Also Published As

Publication number Publication date
WO2018022191A2 (en) 2018-02-01
JP2019523503A (ja) 2019-08-22
EP3491535A2 (en) 2019-06-05
BR112019001552A2 (pt) 2019-05-14
US10466967B2 (en) 2019-11-05
CN109478199A (zh) 2019-03-15
JP6687803B2 (ja) 2020-04-28
KR20190037236A (ko) 2019-04-05
US20180032311A1 (en) 2018-02-01
WO2018022191A3 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
US8078835B2 (en) Reconfigurable array processor for floating-point operations
US9015452B2 (en) Vector math instruction execution by DSP processor approximating division and complex number magnitude
EP3033670B1 (en) Vector accumulation method and apparatus
EP1320027A2 (en) Elliptic curve cryptosystem apparatus, method and program
EP2972988A2 (en) Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
CN107315564B (zh) 一种用于执行向量超越函数运算的装置和方法
CN109478199B (zh) 分段线性逼近的系统及方法
EP3516535A2 (en) Piecewise polynomial evaluation instruction
CN111445016B (zh) 加速非线性数学计算的系统及方法
US20080294875A1 (en) Parallel processor for efficient processing of mobile multimedia
CN117980897A (zh) 适用于基-3蝶形计算的指令
KR20080094812A (ko) 개선된 감소 트리 회로를 갖는 부스 곱셈기
KR20230076641A (ko) 부동-소수점 연산을 위한 장치 및 방법
KR102561619B1 (ko) 인접 메모리 어드레스에서의 데이터 저장
CN114510217A (zh) 处理数据的方法、装置和设备
CN112230993A (zh) 数据处理方法及装置、电子设备
US9336579B2 (en) System and method of performing multi-level integration
JP5305392B2 (ja) Iqデータの二乗和ルート計算手段
CN115618185A (zh) 基于fpga的矩阵特征向量求解方法、系统、存储介质及终端
CN117077734A (zh) 卷积输入变换方法、硬件加速器和加速器结构确定方法
CN117493748A (zh) 向量处理器的低位宽数据矩阵向量乘实现方法及装置
JP2015060256A (ja) データ供給回路、演算処理回路、及びデータ供給方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant