CN117631751B - 人工智能芯片、特殊函数计算方法和计算机可读存储介质 - Google Patents
人工智能芯片、特殊函数计算方法和计算机可读存储介质 Download PDFInfo
- Publication number
- CN117631751B CN117631751B CN202410101171.7A CN202410101171A CN117631751B CN 117631751 B CN117631751 B CN 117631751B CN 202410101171 A CN202410101171 A CN 202410101171A CN 117631751 B CN117631751 B CN 117631751B
- Authority
- CN
- China
- Prior art keywords
- special function
- memory
- unit
- calculation
- artificial intelligence
- 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
Links
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 title claims description 7
- 230000006870 function Effects 0.000 claims abstract description 257
- 238000004364 calculation method Methods 0.000 claims abstract description 129
- 238000007781 pre-processing Methods 0.000 claims description 27
- 101100021996 Arabidopsis thaliana CYP97C1 gene Proteins 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 239000004065 semiconductor Substances 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Advance Control (AREA)
Abstract
一种人工智能芯片、特殊函数计算方法和计算机可读存储介质。该人工智能芯片包括内存以及多个特殊函数单元。内存被配置为存放共享查找表;多个特殊函数单元与内存耦接,且被配置为共享共享查找表以各自进行特殊函数计算;多个特殊函数单元中的一个当前特殊函数单元被配置为基于一个对应特殊函数的计算任务向内存发出查找请求;内存还被配置为基于查找请求从共享查找表取出一个对应近似函数的系数组提供给当前特殊函数单元;当前特殊函数单元还被配置为使用系数组计算对应近似函数的数值解,其中,数值解作为对应特殊函数的近似解值。
Description
技术领域
本公开的实施例涉及一种人工智能芯片、特殊函数计算方法和计算机可读存储介质。
背景技术
人工智能芯片可以提供巨大算力,人工智能芯片的巨大算力源于内部大量的运算单元。运算单元为支持不同数据类型和不同函数运算,需要建立本地私用的查找表。然而布置本地私用的查找表,会造成芯片面积浪费。另外查找表以固化参数形式实现,固化参数对某些场景计算精度要求的支持性较差。
发明内容
本公开是针对一种人工智能芯片、特殊函数计算方法和计算机可读存储介质。
本公开至少一个实施例提供一种人工智能芯片,包括:内存,被配置为存放共享查找表;多个特殊函数单元与所述内存耦接,且被配置为共享所述共享查找表以各自进行特殊函数计算;所述多个特殊函数单元中的一个当前特殊函数单元,被配置为基于一个对应特殊函数的计算任务向所述内存发出查找请求;所述内存,还被配置为基于所述查找请求从所述共享查找表取出一个对应近似函数的系数组提供给所述当前特殊函数单元;以及所述当前特殊函数单元,还被配置为使用所述系数组计算所述对应近似函数的数值解,其中,所述数值解作为所述对应特殊函数的近似解值。
本公开至少一个实施例提供一种人工智能芯片的特殊函数计算方法,包括:由所述人工智能芯片的内存预加载共享查找表,其中,所述人工智能芯片的多个特殊函数单元共享所述共享查找表以各自进行特殊函数计算;由所述多个特殊函数单元中的一个当前特殊函数单元基于一个对应特殊函数的计算任务向所述内存发出查找请求;由所述内存基于所述查找请求从所述共享查找表取出一个对应近似函数的系数组给所述当前特殊函数单元;以及由所述当前特殊函数单元使用所述系数组计算所述对应近似函数的数值解,其中,所述数值解作为所述对应特殊函数的近似解值。
本公开至少一个实施例提供一种计算机可读存储介质,用于存储非暂时性计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时可以实现本公开的任一实施例提供的特殊函数计算方法。
在本公开的一些实施例中,多个系数组可以被预加载在内存的共享查找表。任何一个(或多个)特殊函数单元(例如当前特殊函数单元)可以请求内存从共享查找表取出对应近似函数的系数组,然后计算对应近似函数的数值解作为对应特殊函数的近似数值解。基此,在每一个特殊函数单元中不需要建立本地私用的查找表,避免芯片面积的浪费。另外,通过灵活配置内存的共享查找表的内容,人工智能芯片可以满足不同应用场景对特殊函数单元的计算精度的要求。在某些极端场景下若计算精度不足,可通过重新加载共享查找表以调整内容(系数组),使人工智能芯片可以满足计算精度的需求。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了本公开至少一个实施例提供的一种人工智能芯片的电路方块示意图;
图2示出了本公开至少一个实施例提供的一种特殊函数计算方法的流程示意图;
图3示出了本公开至少一个实施例提供的另一种特殊函数计算方法的流程示意图;
图4示出了本公开至少一个实施例提供的另一种人工智能芯片的电路方块示意图;
图5示出了本公开至少一个实施例提供的一种特殊函数单元的电路方块示意图;以及
图6示出了本公开至少一个实施例提供的另一种人工智能芯片的电路方块示意图。
附图标记说明:
100、400、600:人工智能芯片;
410_1、410_2、410_m、610_1、610_2、610_m:执行单元;
420、620:加载存储单元;
510、630_1、630_2、630_m:预处理电路;
520、640_1、640_2、640_m:计算电路;
C1_1、C1_2、C1_m、C4_1、C6_1:系数组;
CD4_1、CD6_1:计算调度单元;
FP4_1、FP4_2、FP4_m、FP6_1、FP6_2、FP6_m:浮点数计算单元;
GSM4、GSM6:群组共享内存;
INT4_1、INT4_2、INT4_m、INT6_1、INT6_2、INT6_m:整数计算单元;
LUT1、LUT4、LUT6:共享查找表;
M1、M4、M6:内存;
MUX4、MUX6:输出多任务器;
R1_1、R1_2、R1_m、R4_1、R6_1:查找请求;
RF4_1、RF6_1:寄存器堆;
S210、S220、S230、S240、S310、S320、S330、S340:步骤;
SFU1_1、SFU1_2、SFU1_m、SFU4_1、SFU4_2、SFU4_m、SFU6_1、SFU6_2、SFU6_m:特殊函数单元;以及
TASK1_1、TASK1_2、TASK1_m、TASK4_1、TASK4_2、TASK4_m、TASK6_1、TASK6_2、TASK6_m:计算任务。
具体实施方式
现将详细地参考本公开的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同元件符号在图式和描述中用来表示相同或相似部分。
在本案说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以透过其他装置或某种连接手段而间接地连接至该第二装置。本案说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名组件(element)的名称,或区别不同实施例或范围,而并非用来限制组件数量的上限或下限,亦非用来限制组件的次序。另外,凡可能之处,在附图及实施方式中使用相同标号的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的组件/构件/步骤可以相互参照相关说明。
图1示出了本公开至少一个实施例提供的一种人工智能芯片的电路方块(circuitblock)示意图。图1所示人工智能(artificial intelligence,AI)芯片100包括内存M1以及多个特殊函数单元(special function unit,SFU),例如图1所示特殊函数单元SFU1_1、SFU1_2、…、SFU1_m。特殊函数单元SFU1_1至SFU1_m的数量m可以是依照实际设计所决定的任意整数。特殊函数单元SFU1_1至SFU1_m耦接至内存M1。内存M1可以存放共享查找表(shared lookup table)LUT1。依照不同的设计,在一些实施例中,特殊函数单元SFU1_1至SFU1_m以及(或是)内存M1的实现方式可以是硬件(hardware)电路。在另一些实施例中,特殊函数单元SFU1_1至SFU1_m以及(或是)内存M1的实现方式可以是硬件、固件(firmware)、软件(software,即程序)中的多者的组合形式。
以硬件形式而言,上述特殊函数单元SFU1_1至SFU1_m以及(或是)内存M1可以实现于集成电路(integrated circuit)上的逻辑电路。举例来说,特殊函数单元SFU1_1至SFU1_n以及(或是)内存M1的相关功能可以被实现于一或多个硬件控制器、微控制器(Microcontroller)、硬件处理器(hardware processor)、微处理器(Microprocessor)、特殊应用集成电路(Application-specific integrated circuit,ASIC)、数字信号处理器(digital signal processor,DSP)、场可程序逻辑门阵列(Field Programmable GateArray,FPGA)、中央处理器(Central Processing Unit,CPU)及/或其他处理单元中的各种逻辑区块、模块和电路。特殊函数单元SFU1_1至SFU1_m以及(或是)内存M1的相关功能可以利用硬件描述语言(hardware description languages,例如Verilog HDL或VHDL)或其他合适的编程语言来实现为硬件电路,例如集成电路中的各种逻辑区块、模块和电路。
以软件形式及/或固件形式而言,上述特殊函数单元SFU1_1至SFU1_m以及(或是)内存M1的相关功能可以被实现为编程码(programming codes)。例如,利用一般的编程语言(programming languages,例如C、C++或汇编语言)或其他合适的编程语言来实现特殊函数单元SFU1_1至SFU1_m以及(或是)内存M1。编程码可以被记录/存放在“非临时的计算机可读存储介质(non-transitory machine-readable storage medium)”中。在一些实施例中,非临时的计算机可读存储介质例如包括半导体内存以及(或是)存储装置。半导体内存包括记忆卡、只读存储器(Read Only Memory,ROM)、闪存(FLASH memory)、可程序设计的逻辑电路或是其他半导体内存。存储装置包括硬盘(hard disk drive,HDD)、固态硬盘(Solid-statedrive,SSD)或是其他存储装置。电子设备(例如CPU、硬件控制器、微控制器、硬件处理器或微处理器)可以从非临时的计算机可读存储介质中读取并执行编程码,从而实现特殊函数单元SFU1_1至SFU1_m以及(或是)内存M1的相关功能。
特殊函数单元SFU1_1至SFU1_m的每一个可以支持多种特殊函数f1(x)的运算。举例来说,特殊函数f1(x)可以包括倒数(reciprocal)函数“1/x”、正弦(sine)函数“sin x”、余弦(cosine)函数“cos x”、平方根倒数(reciprocal square-root)函数“1/√x”、对数(Logarithmic)函数“log x”、指数(exponential)函数、S型函数(sigmoid function)“1/(1+ e^-x)”或其他函数。S型函数或称乙状函数,是因其函数图像形状像字母S得名。S型函数的曲线至少有2个焦点,因此也叫“二焦点曲线函数”。
通过适应性地设定对应近似函数的系数,对应近似函数的数值解可以作为对应特殊函数的近似解值。不同特殊函数的对应近似函数的不同系数组可以被记录于共享查找表LUT1。基于实际设计,对应近似函数包括泰勒多项式。泰勒级数(Taylor series)可以展开为泰勒多项式(如下述等式A所示)。等式A所示泰勒多项式f2(x)具有n+1项。泰勒多项式f2(x)的项数量n+1可以是依照实际设计所决定的任意整数。其中,b0、b1、b2、b3、…、bn是泰勒多项式f2(x)的系数,Δx = x-a,自变量a为泰勒多项式f2(x)所支持(所近似)的一个对应特殊函数f1(x)所对应的一个标准数值(基于实际应用来决定)。
f2(x) = b0 + b1×Δx + b2×Δx^2 + b3×Δx^3 + … + bn×Δx^n (等式A)
对应于不同特殊函数f1(x)的不同系数组可以被记录于共享查找表LUT1。任何一个(或多个)特殊函数单元(例如当前特殊函数单元)可以请求内存M1从共享查找表LUT1取出对应近似函数的系数组,然后计算泰勒多项式f2(x)(对应近似函数)的数值解作为对应特殊函数f1(x)的近似解值。基此,在每一个特殊函数单元中不需要建立本地私用的查找表,避免芯片面积的浪费。另外,通过灵活配置内存M1的共享查找表LUT1的内容,人工智能芯片可以满足不同应用场景对特殊函数单元SFU1_1至SFU1_m的计算精度的要求。在某些极端场景下若计算精度不足,可通过重新加载共享查找表LUT1以调整内容(系数组),使人工智能芯片100可以满足计算精度的需求。
图2示出了本公开至少一个实施例提供的一种特殊函数计算方法的流程示意图。在一些实施例中,图2所示特殊函数计算方法可以实现于固件或软件(即程序)。例如,图2所示特殊函数计算方法的相关操作可以被实现为非暂时性计算机可读指令(编程码或程序),而非暂时性计算机可读指令可以被存储在计算机可读存储介质。当非暂时性计算机可读指令由计算机执行时可以实现图2所示特殊函数计算方法。在另一些实施例中,图2所示特殊函数计算方法可以实现于硬件,例如实现于图1所示人工智能芯片100。
请参照图1与图2,在步骤S210中,内存M1预加载共享查找表LUT1,其中共享查找表LUT1可被多个特殊函数单元SFU1_1至SFU1_m共同访问。特殊函数单元SFU1_1至SFU1_m可以共享在内存M1中的共享查找表LUT1以各自进行特殊函数计算。共享查找表LUT1可以记录近似函数的一或多个系数组。特殊函数单元SFU1_1至SFU1_m中的任何一个(或多个)特殊函数单元可以基于对应特殊函数的计算任务向内存M1发出查找请求。在此以特殊函数单元SFU1_1作为说明例,亦即以特殊函数单元SFU1_1作为特殊函数单元SFU1_1至SFU1_m中的一个当前特殊函数单元。在步骤S220中,特殊函数单元SFU1_1基于对应特殊函数f1(x)的计算任务TASK1_1向内存M1发出查找请求R1_1。在步骤S230中,内存M1基于查找请求R1_1从共享查找表LUT1取出系数组C1_1,亦即泰勒多项式f2(x)(对应近似函数)的系数组“b0至bn”,给特殊函数单元SFU1_1。在步骤S240中,特殊函数单元SFU1_1使用系数组C1_1计算泰勒多项式f2(x)(对应近似函数)的数值解,其中数值解可以作为对应特殊函数f1(x)的近似解值。
同理可推,特殊函数单元SFU1_2基于另一个对应特殊函数f1(x)的计算任务TASK1_2向内存M1发出查找请求R1_2。内存M1基于查找请求R1_2从共享查找表LUT1取出系数组C1_2给特殊函数单元SFU1_2。特殊函数单元SFU1_2使用系数组C1_2计算泰勒多项式f2(x)的数值解作为对应特殊函数f1(x)的近似解值。特殊函数单元SFU1_m基于又一个对应特殊函数f1(x)的计算任务TASK1_m向内存M1发出查找请求R1_m。内存M1基于查找请求R1_m从共享查找表LUT1取出系数组C1_m给特殊函数单元SFU1_m。特殊函数单元SFU1_m使用系数组C1_m计算泰勒多项式f2(x)的数值解作为对应特殊函数f1(x)的近似解值。
图3示出了本公开至少一个实施例提供的另一种特殊函数计算方法的流程示意图。请参照图1与图3,在步骤S310中,当前特殊函数单元(例如特殊函数单元SFU1_1)对对应特殊函数f1(x)的计算任务TASK1_1进行预处理。举例来说,特殊函数单元SFU1_1对对应特殊函数f1(x)的计算任务TASK1_1的操作数opcode与自变数x进行预处理,以获得系数组所对应的索引,以及获得自变数x与标准数值a的差值Δx(即x-a),其中差值Δx作为泰勒多项式f2(x)(对应近似函数)的自变数。当前特殊函数单元SFU1_1将索引随着查找请求R1_1发给内存M1。在步骤S320中,内存M1基于查找请求R1_1从共享查找表LUT1取出系数组C1_1,亦即泰勒多项式f2(x)(对应近似函数)的系数组“b0至bn”,给特殊函数单元SFU1_1。
在步骤S330中,当前特殊函数单元SFU1_1对差值Δx进行乘方计算以生成幂。例如,当前特殊函数单元SFU1_1对差值Δx进行二次乘方计算以生成幂值Δx^2。同理可推,当前特殊函数单元SFU1_1对差值Δx进行n次乘方计算以生成幂值Δx^n。在步骤S340中,当前特殊函数单元SFU1_1对泰勒多项式f2(x)的每一项进行乘算,然后对这些乘算结果进行加总,以获得泰勒多项式f2(x)(对应近似函数)的数值解,并以此数值解作为对应特殊函数f1(x)的近似解值。
图4示出了本公开至少一个实施例提供的另一种人工智能芯片的电路方块示意图。图4所示人工智能芯片400包括加载存储单元(Load/Store Unit,LSU)420以及多个执行单元(Execution Unit,EU),例如图4所示执行单元410_1、410_2、…、410_m。加载存储单元420可被多个执行单元410_1至410_m共同访问,接收多个执行单元410_1至410_m的读查找表请求,进行并行处理。读出查找表参数后,根据执行单元的识别号将已读取数据返回到相应执行单元的特殊函数单元,然后继续进行特殊函数计算。执行单元410_1包括浮点数(floating point,FP)计算单元FP4_1、整数(Integer,INT)计算单元INT4_1和特殊函数单元SFU4_1。相类似地,执行单元410_2包括浮点数计算单元FP4_2、整数(Integer,INT)计算单元INT4_2和特殊函数单元SFU4_2,而执行单元410_m包括浮点数计算单元FP4_m、整数计算单元INT4_m和特殊函数单元SFU4_m。图4所示特殊函数单元SFU4_1至SFU4_m可以作为图1所示特殊函数单元SFU1_1至SFU1_m的诸多应用实施例之一。
执行单元410_1可以执行计算任务TASK4_1。以此类推,执行单元410_2可以执行计算任务TASK4_2,以及执行单元410_m可以执行计算任务TASK4_m。图4所示计算任务TASK4_1至TASK4_m可以参照图1所示计算任务TASK1_1至TASK1_m的相关说明并且加以类推。以下将以执行单元410_1作为说明范例。图4所示执行单元410_2至410_m可以参照执行单元410_1的相关说明并且加以类推。执行单元410_1包括计算调度(compute dispatch)单元CD4_1、浮点数计算单元FP4_1、整数计算单元INT4_1、特殊函数单元SFU4_1和寄存器堆(registerfiles)RF4_1。计算调度单元CD4_1可以基于计算任务TASK4_1的计算类型(操作数类型)而决定将计算任务TASK4_1分派给浮点数计算单元FP4_1、整数计算单元INT4_1、特殊函数单元SFU4_1或是其他计算单元(图中未示出)。当计算任务TASK4_1为浮点数计算时,浮点数计算单元FP4_1可以执行计算调度单元CD4_1所提供的计算任务TASK4_1,然后将计算结果存放在寄存器堆RF4_1。当计算任务TASK4_1为整数计算时,整数计算单元INT4_1可以执行计算调度单元CD4_1所提供的计算任务TASK4_1,然后将计算结果存放在寄存器堆RF4_1。当计算任务TASK4_1为特殊函数f1(x)计算时,特殊函数单元SFU4_1可以执行计算调度单元CD4_1所提供的计算任务TASK4_1,然后将计算结果存放在寄存器堆RF4_1。寄存器堆RF4_1的计算结果可以被提供给加载存储单元420。
当前特殊函数单元(例如特殊函数单元SFU4_1)预处理对应特殊函数f1(x)的计算任务TASK4_1。举例来说,特殊函数单元SFU4_1预处理对应特殊函数f1(x)的计算任务TASK4_1的操作数opcode与自变数x,以获得索引以及自变数x所对应的差值Δx(即x-a)。差值Δx作为泰勒多项式f2(x)(对应近似函数)的自变数。当前特殊函数单元SFU4_1将索引随着查找请求R4_1发给内存M4。内存M4基于查找请求R4_1从共享查找表LUT4取出系数组C4_1,亦即泰勒多项式f2(x)(对应近似函数)的系数组“b0至bn”,给特殊函数单元SFU4_1。
在图4所示实施例中,内存M4被布置在加载存储单元420中,作为群组共享内存(Group Shared Memory,GSM)。图4所示内存M4可以作为图1所示内存M1的诸多实施范例之一。图4所示内存M4包括群组共享内存GSM4以及输出多任务器MUX4。群组共享内存GSM4可以存放共享查找表LUT4。图4所示共享查找表LUT4可以参照图1所示共享查找表LUT1的相关说明,故在此不再赘述。群组共享内存GSM4可以基于查找请求R4_1从共享查找表LUT4取出系数组C4_1。输出多任务器MUX4耦接至群组共享内存GSM4以接收系数组C4_1。输出多任务器MUX4基于查找请求R4_1将系数组C4_1发给当前特殊函数单元SFU4_1。当前特殊函数单元SFU4_1对差值Δx与系数组C4_1进行泰勒多项式f2(x)的计算,以获得泰勒多项式f2(x)(对应近似函数)的数值解。特殊函数单元SFU4_1以泰勒多项式f2(x)的数值解作为对应特殊函数f1(x)的近似解值,然后将此数值解存放在寄存器堆RF4_1。
图5示出了本公开至少一个实施例提供的一种特殊函数单元的电路方块示意图。图5所示特殊函数单元SFU4_1可以作为图4所示特殊函数单元SFU4_1的诸多实施例之一。在图5所示实施例中,特殊函数单元SFU4_1包括预处理电路510以及计算电路520。预处理电路510和计算电路520被布置在同一个执行单元410_1中。预处理电路510预处理对应特殊函数f1(x)的计算任务TASK4_1的操作数opcode与自变数x,以获得系数组所对应的索引以及自变数x与标准数值a的差值Δx。预处理电路510将索引随着查找请求R4_1发给内存M4。内存M4基于查找请求R4_1从共享查找表LUT4取出系数组C4_1给计算电路520。
计算电路520耦接至预处理电路510,以接收差值Δx。计算电路520将差值Δx作为泰勒多项式f2(x)(对应近似函数)的自变数。计算电路520还从内存M4取得系数组C4_1。计算电路520使用系数组C4_1和差值Δx计算泰勒多项式f2(x)的数值解。计算电路520以泰勒多项式f2(x)的数值解作为对应特殊函数f1(x)的近似解值,然后将此数值解存放在寄存器堆RF4_1。
综上所述,对应于不同特殊函数f1(x)的多个系数组可以被预加载在内存M4的共享查找表LUT4。因为共享查找表LUT4被存储在加载存储单元420的群组共享内存GSM4,所以人工智能芯片400可以实现查找表的可配置化。通过灵活配置内存M4的共享查找表LUT4的内容,人工智能芯片400可以满足不同应用场景对特殊函数f1(x)的计算精度的要求。例如针对不同的应用场景,通过软件程序将对应的一个或多个系数组预先加载到共享查找表LUT4,使得特殊函数单元SFU4_1至SFU4_m可以满足不同场景的计算精度需求。另外,任何一个(或多个)特殊函数单元可以请求内存M4从共享查找表LUT4取出泰勒多项式f2(x)(对应近似函数)的系数组“b0至bn”,然后计算泰勒多项式f2(x)的数值解作为对应特殊函数f1(x)的近似解值。基此,提高了查找表的利用率。在每一个特殊函数单元SFU4_1至SFU4_m中不需要建立本地私用的查找表,节省了大量的硬件资源,避免芯片面积的浪费。
图6示出了本公开至少一个实施例提供的另一种人工智能芯片的电路方块示意图。图6所示人工智能芯片600包括加载存储单元620以及多个执行单元,例如图6所示执行单元610_1、610_2、…、610_m。在图6所示实施例中,预处理电路630_1、630_2、…、630_m被布置在执行单元610_1至610_m中,以及计算电路640_1、640_2、…、640_m被布置在加载存储单元620中。预处理电路630_1至630_m可以参照图5所示预处理电路510的相关说明并且加以类推,以及计算电路640_1至640_m可以参照图5所示计算电路520的相关说明并且加以类推。
执行单元610_1包括浮点数计算单元FP6_1、整数计算单元INT6_1和预处理电路630_1。相类似地,执行单元610_2包括浮点数计算单元FP6_2、整数计算单元INT6_2和预处理电路630_2,而执行单元610_m包括浮点数计算单元FP6_m、整数计算单元INT6_m和预处理电路630_m。图6所示特殊函数单元SFU6_1至SFU6_m可以作为图1所示特殊函数单元SFU1_1至SFU1_m的诸多应用范例之一。图6所示浮点数计算单元FP6_1至FP6_m和整数计算单元INT6_1至INT6_m可以参照图4所示浮点数计算单元FP4_1至FP4_m和整数计算单元INT4_1至INT4_m的相关说明并且加以类推。
执行单元610_1可以执行计算任务TASK6_1。以此类推,执行单元610_2可以执行计算任务TASK6_2,以及执行单元610_m可以执行计算任务TASK6_m。图6所示计算任务TASK6_1至TASK6_m可以参照图1所示计算任务TASK1_1至TASK1_m的相关说明并且加以类推。以下将以执行单元610_1作为说明范例。图6所示执行单元610_2至610_m可以参照执行单元610_1的相关说明并且加以类推。执行单元610_1包括计算调度单元CD6_1、浮点数计算单元FP6_1、整数计算单元INT6_1、预处理电路630_1和寄存器堆RF6_1。图6所示执行单元610_1、计算调度单元CD6_1、浮点数计算单元FP6_1、整数计算单元INT6_1和寄存器堆RF6_1可以参照图4所示执行单元410_1、计算调度单元CD4_1、浮点数计算单元FP4_1、整数计算单元INT4_1和寄存器堆RF4_1的相关说明并且加以类推,故不再赘述。
预处理电路630_1预处理对应特殊函数f1(x)的计算任务TASK6_1。举例来说,预处理电路630_1预处理对应特殊函数f1(x)的计算任务TASK6_1的操作数opcode与自变数x,以获得索引以及自变数x所对应的差值Δx(即x-a)。差值Δx作为泰勒多项式f2(x)(对应近似函数)的自变数。预处理电路630_1将索引随着查找请求R6_1发给内存M6。内存M6基于查找请求R6_1从共享查找表LUT6取出系数组C6_1,亦即泰勒多项式f2(x)(对应近似函数)的系数组“b0至bn”,给计算电路640_1。
在图6所示实施例中,内存M6被布置在加载存储单元620中,作为群组共享内存。图6所示内存M6可以作为图1所示内存M1的诸多实施范例之一。图6所示内存M6包括群组共享内存GSM6以及输出多任务器MUX6。群组共享内存GSM6可以存放共享查找表LUT6。图6所示共享查找表LUT6可以参照图1所示共享查找表LUT1的相关说明,故在此不再赘述。群组共享内存GSM6可以基于查找请求R6_1从共享查找表LUT6取出系数组C6_1。输出多任务器MUX6耦接至群组共享内存GSM6以接收系数组C6_1。输出多任务器MUX6基于查找请求R6_1将系数组C6_1发给计算电路640_1。预处理电路630_1将差值Δx发给计算电路640_1。计算电路640_1对差值Δx与系数组C6_1进行泰勒多项式f2(x)的计算,以获得泰勒多项式f2(x)(对应近似函数)的数值解。计算电路640_1以泰勒多项式f2(x)的数值解作为对应特殊函数f1(x)的近似解值,然后将此数值解存放在寄存器堆RF6_1。
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
Claims (19)
1.一种人工智能芯片,包括:
内存,被配置为存放共享查找表;
多个特殊函数单元与所述内存耦接,且被配置为共享所述共享查找表以各自进行特殊函数计算;
所述多个特殊函数单元中的一个当前特殊函数单元,被配置为基于一个对应特殊函数的计算任务向所述内存发出查找请求;
所述内存,还被配置为基于所述查找请求从所述共享查找表取出一个对应近似函数的系数组提供给所述当前特殊函数单元;以及
所述当前特殊函数单元,还被配置为使用所述系数组计算所述对应近似函数的数值解,其中,所述数值解作为所述对应特殊函数的近似解值。
2.根据权利要求1所述的人工智能芯片,其中,所述内存被布置在所述人工智能芯片的加载存储单元,作为群组共享内存。
3.根据权利要求1所述的人工智能芯片,其中,所述内存包括:
群组共享内存,被配置为存放所述共享查找表,基于所述查找请求从所述共享查找表取出所述系数组;
输出多任务器与所述群组共享内存耦接,且被配置为接收所述系数组,基于所述查找请求将所述系数组发给所述当前特殊函数单元。
4.根据权利要求1所述的人工智能芯片,其中,所述对应特殊函数包括:倒数函数、正弦函数、余弦函数、平方根倒数函数、对数函数、指数函数或S型函数。
5.根据权利要求1所述的人工智能芯片,其中,所述对应近似函数包括:泰勒多项式。
6.根据权利要求1所述的人工智能芯片,其中,所述当前特殊函数单元还被配置为,对所述对应特殊函数的计算任务进行预处理,以获得所述系数组所对应的索引;以及将所述索引随着所述查找请求发给所述内存。
7.根据权利要求1所述的人工智能芯片,其中,所述当前特殊函数单元还被配置为,对所述对应特殊函数的计算任务的自变数进行预处理,以获得所述对应特殊函数的计算任务的自变数与所述对应特殊函数所对应的标准数值的差值,其中,所述差值作为所述对应近似函数的自变数。
8.根据权利要求1所述的人工智能芯片,其中,所述当前特殊函数单元包括:
预处理电路,被配置为对所述对应特殊函数的计算任务的操作数与自变数进行预处理,以获得所述系数组所对应的索引以及所述对应特殊函数的计算任务的自变数与所述对应特殊函数所对应的标准数值的差值;以及将所述索引随着所述查找请求发给所述内存;
计算电路与所述预处理电路耦接,且被配置为接收所述差值,将所述差值作为所述对应近似函数的自变数;
所述计算电路还被配置为从所述内存取得所述系数组,使用所述系数组和所述差值计算所述对应近似函数的所述数值解。
9.根据权利要求8所述的人工智能芯片,其中,所述预处理电路和所述计算电路被布置在所述人工智能芯片的同一个执行单元中。
10.根据权利要求8所述的人工智能芯片,其中,所述预处理电路被布置在所述人工智能芯片的一个执行单元中,以及所述计算电路被布置在所述人工智能芯片的加载存储单元中。
11.一种特殊函数计算方法,应用于人工智能芯片,包括:
由所述人工智能芯片的内存预加载共享查找表,其中,所述人工智能芯片的多个特殊函数单元共享所述共享查找表以各自进行特殊函数计算;
由所述多个特殊函数单元中的一个当前特殊函数单元基于一个对应特殊函数的计算任务向所述内存发出查找请求;
由所述内存基于所述查找请求从所述共享查找表取出一个对应近似函数的系数组给所述当前特殊函数单元;以及
由所述当前特殊函数单元使用所述系数组计算所述对应近似函数的数值解,其中,所述数值解作为所述对应特殊函数的近似解值。
12.根据权利要求11所述的特殊函数计算方法,其中,所述内存被布置在所述人工智能芯片的加载存储单元,作为群组共享内存。
13.根据权利要求11所述的特殊函数计算方法,还包括:
由所述内存的群组共享内存存放所述共享查找表;
由所述群组共享内存基于所述查找请求从所述共享查找表取出所述系数组;
由所述内存的输出多任务器基于所述查找请求将所述系数组发给所述当前特殊函数单元。
14.根据权利要求11所述的特殊函数计算方法,其中,所述对应特殊函数包括:倒数函数、正弦函数、余弦函数、平方根倒数函数、对数函数、指数函数或S型函数。
15.根据权利要求11所述的特殊函数计算方法,其中,所述对应近似函数包括:泰勒多项式。
16.根据权利要求11所述的特殊函数计算方法,还包括:
由所述当前特殊函数单元对所述对应特殊函数的计算任务进行预处理,以获得所述系数组所对应的索引;
由所述当前特殊函数单元将所述索引随着所述查找请求发给所述内存。
17.根据权利要求11所述的特殊函数计算方法,还包括:
由所述当前特殊函数单元对所述对应特殊函数的计算任务的自变数进行预处理,以获得所述对应特殊函数的计算任务的自变数与所述对应特殊函数所对应的标准数值的差值,其中,所述差值作为所述对应近似函数的自变数。
18.根据权利要求11所述的特殊函数计算方法,还包括:
由所述当前特殊函数单元的预处理电路对所述对应特殊函数的计算任务的操作数与自变数进行预处理,以获得所述系数组所对应的索引,以及所述对应特殊函数的计算任务的自变数与所述对应特殊函数所对应的标准数值的差值,其中,所述差值作为所述对应近似函数的自变数;
由所述预处理电路将所述索引随着所述查找请求发给所述内存;
由所述当前特殊函数单元的计算电路使用所述系数组和所述差值计算所述对应近似函数的所述数值解。
19.一种计算机可读存储介质,用于存储非暂时性计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时可以实现权利要求11至18任一项所述的特殊函数计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410101171.7A CN117631751B (zh) | 2024-01-25 | 2024-01-25 | 人工智能芯片、特殊函数计算方法和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410101171.7A CN117631751B (zh) | 2024-01-25 | 2024-01-25 | 人工智能芯片、特殊函数计算方法和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117631751A CN117631751A (zh) | 2024-03-01 |
CN117631751B true CN117631751B (zh) | 2024-05-03 |
Family
ID=90021876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410101171.7A Active CN117631751B (zh) | 2024-01-25 | 2024-01-25 | 人工智能芯片、特殊函数计算方法和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117631751B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103959192A (zh) * | 2011-12-21 | 2014-07-30 | 英特尔公司 | 用于估算超越函数的数学电路 |
CN108898216A (zh) * | 2018-05-04 | 2018-11-27 | 中国科学院计算技术研究所 | 应用于神经网络的激活处理装置 |
CN113537451A (zh) * | 2020-04-22 | 2021-10-22 | 爱思开海力士有限公司 | 激活函数处理方法、激活函数处理电路及神经网络系统 |
CN115829820A (zh) * | 2022-10-31 | 2023-03-21 | 阿里巴巴(中国)有限公司 | 插值方法、图像处理方法、gpu及芯片 |
CN115936965A (zh) * | 2022-11-07 | 2023-04-07 | 格兰菲智能科技有限公司 | 应用于gpu的函数计算系统、方法和装置 |
CN116126399A (zh) * | 2023-01-13 | 2023-05-16 | 中科芯磁科技(珠海)有限责任公司 | 双模式查找表结构及基于双模式查找表结构的查找方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230316060A1 (en) * | 2022-03-31 | 2023-10-05 | International Business Machines Corporation | Two-dimensional mesh for compute-in-memory accelerator architecture |
-
2024
- 2024-01-25 CN CN202410101171.7A patent/CN117631751B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103959192A (zh) * | 2011-12-21 | 2014-07-30 | 英特尔公司 | 用于估算超越函数的数学电路 |
CN108898216A (zh) * | 2018-05-04 | 2018-11-27 | 中国科学院计算技术研究所 | 应用于神经网络的激活处理装置 |
CN113537451A (zh) * | 2020-04-22 | 2021-10-22 | 爱思开海力士有限公司 | 激活函数处理方法、激活函数处理电路及神经网络系统 |
CN115829820A (zh) * | 2022-10-31 | 2023-03-21 | 阿里巴巴(中国)有限公司 | 插值方法、图像处理方法、gpu及芯片 |
CN115936965A (zh) * | 2022-11-07 | 2023-04-07 | 格兰菲智能科技有限公司 | 应用于gpu的函数计算系统、方法和装置 |
CN116126399A (zh) * | 2023-01-13 | 2023-05-16 | 中科芯磁科技(珠海)有限责任公司 | 双模式查找表结构及基于双模式查找表结构的查找方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117631751A (zh) | 2024-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200201932A1 (en) | Apparatuses, methods, and systems for instructions of a matrix operations accelerator | |
EP3398113B1 (en) | Loop code processor optimizations | |
US11275561B2 (en) | Mixed precision floating-point multiply-add operation | |
US10353670B2 (en) | Floating point unit with support for variable length numbers | |
EP4020209A1 (en) | Hardware offload circuitry | |
US10732929B2 (en) | Computing accelerator using a lookup table | |
WO2010051298A2 (en) | Instruction and logic for performing range detection | |
US10180819B2 (en) | Processing fixed and variable length numbers | |
Ouyang et al. | Active SSD design for energy-efficiency improvement of web-scale data analysis | |
JP2843750B2 (ja) | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム | |
US20220405598A1 (en) | Concatenated input/output tensors for use in recurrent neural networks | |
CN117631751B (zh) | 人工智能芯片、特殊函数计算方法和计算机可读存储介质 | |
Atoofian et al. | Reducing energy in GPGPUs through approximate trivial bypassing | |
TW202223633A (zh) | 用於實施16位元浮點矩陣點積指令的裝置、方法及系統 | |
Kim et al. | Value similarity extensions for approximate computing in general-purpose processors | |
EP0363174A2 (en) | Branch on bit processing | |
CN113407154A (zh) | 一种向量计算装置及方法 | |
CN112084071A (zh) | 一种计算单元运算加固方法、并行处理器及电子设备 | |
US20150378726A1 (en) | Implementation for a high performance bcd divider | |
Breuer | Adaptive computers | |
CN114020476B (zh) | 一种作业的处理方法、设备及介质 | |
US20220405552A1 (en) | Recurrent neural network cell activation to perform a plurality of operations in a single invocation | |
US20230051855A1 (en) | Call and return instructions for configurable register context save and restore | |
Joshua | Review of Patents Issued to Computer Architecture Companies in 2021—Part II | |
Jain et al. | Cpsa: Compute precisely store approximately |
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 |