具体实施方式
图1是示出根据本发明的实施例的系统1的配置的图。参照图1,所述系统1可以包括主机装置101和运算装置102。所述主机装置101可以向所述运算装置102提供数据,并且可以接收从所述运算装置102输出的数据。所述主机装置101可以通过系统总线103与所述运算装置连接。所述主机装置101可以通过所述系统总线103向所述运算装置102传送输入数据IND1、IND2。所述主机装置101可以通过所述系统总线接收所述运算装置102对所述输入数据IND1、IND2执行运算操作而生成的输出数据OD。另外,所述主机装置101可以通过所述系统总线103向所述运算装置102提供各种控制信号以使所述运算装置102执行运算操作。所述输入数据可以包括第一输入数据IND1和第二输入数据IND2。例如,所述第一输入数据IND1可以包括与输入特征组(set of input feature)相关的信息。所述第二输入数据IND2可以包括与权重(weight)数据相关的信息。
所述运算装置102可以通过所述系统总线103与所述主机装置101连接。所述运算装置102可以通过所述系统总线103接收从所述主机装置101传送的输入数据IND1、IND2。所述运算装置102可以接收所述输入数据IND1、IND2并对所述输入数据IND1、IND2执行运算操作。所述运算装置102可以通过所述系统总线103将通过执行所述运算操作而生成的输出数据OD传送到所述主机装置101。所述运算装置102可以是神经网络(neural network)运算装置。所述运算装置102从所述主机装置101接收第一输入数据IND1和第二输入数据IND2,并且可以对输入特征组和权重信号执行运算操作。所述运算操作可以是对所述输入特征组和所述权重信号的卷积(convolution)运算,也可以是乘加(Multiply and Accumulation,MAC)运算。
所述运算装置102可以包括主机接口110、缓冲电路120、存储器130和运算单元140。所述主机接口110可以与所述系统总线103连接以接收从所述主机装置101传送的所述输入数据IND1、IND2,并且可以将接收的输入数据IND1、IND2提供到所述运算装置102的内部电路。另外,所述主机接口110可以通过所述系统总线103将由所述运算装置102生成的所述输出数据OD传送到所述主机装置101。所述主机接口110可以通过所述系统总线103接收所述第一输入数据IND1和所述第二输入数据IND2。所述主机接口110可以将接收的第一输入数据IND1提供给所述缓冲电路120,并且可以将接收的第二输入数据IND2提供给所述存储器130。所述主机接口110可以通过所述缓冲电路120接收从所述总线运算单元140输出的运算数据CRD。所述主机接口110可以基于由所述运算单元140生成的运算数据CRD驱动所述系统总线103以向所述主机装置101传送所述输出数据OD。
所述缓冲电路120可以从所述主机接口110接收第一输入数据IND1。所述缓冲电路120可以将所述第一输入数据IND1分类为多个输入特征组FD并存储。多个输入特征组FD的每个输入特征组可以包括多个特征(feature)。所述特征可以是可包括任意的位(bit)数的输入特征组FD的单元数据。所述系统总线103的数据带宽(data bandwidth)可以与一个特征的大小不同。所述系统总线103的数据带宽可以大于一个特征的大小。所述第一输入数据IND1可以与时钟信号同步地通过所述系统总线103传送,通过所述系统总线103一次传送的第一输入数据IND1的位数可以多于一个特征的位数,通过所述系统总线103的一次传送的第一输入数据IND1可以包括多个特征的信息。因此,所述缓冲电路120可以将所述第一输入数据IND1分类为多个输入特征组FD,并可以存储分类的各个输入特征组FD。所述缓冲电路120可以将所述多个输入特征组FD提供给所述运算单元140。所述缓冲电路120可以执行能够同时向所述运算单元140提供所述多个输入特征组FD的批处理(batch)操作以提高所述运算单元140的运算效率。所述缓冲电路120可以接收由所述运算单元140执行运算操作而生成的所述运算数据CRD,并且可以将所述运算数据CRD提供给所述主机接口110。
所述存储器130可以从所述主机接口110接收第二输入数据IND2。所述存储器130可以将所述第二输入数据IND2分类为多个权重数据WD并存储。所述存储器130可以将所述第二输入数据IND2分类为多个权重数据WD,并且可以存储分类的各个权重数据WD。所述存储器130可以将所述多个权重数据WD提供给所述运算单元140。一个权重数据WD可以包括多个权重信号。所述权重信号可以是可包括任意的位数的权重数据WD的单元数据。在一个实施例中,所述存储器可以是同步随机存取存储器(Synchronous Random Access Memory,SRAM)或者动态随机存取存储器(Dynamic Random Access Memory,DRAM)。
所述运算单元140可以接收从所述缓冲电路120输出的所述多个输入特征组FD作为输入信号。所述运算单元140可以接收从所述动态存储器130输出的多个权重数据WD。所述运算单元140可以对所述输入特征组FD和所述权重数据WD执行运算操作。例如,所述运算单元140可以对所述输入特征组FD和所述权重数据WD执行卷积运算。所述运算单元140可以包括多个运算电路141、142、…、14n。所述多个运算电路141、142、…、14n可以是具有相同的结构的MAC运算电路。所述多个运算电路141、142、…、14n分别对所述输入特征组FD和所述权重数据WD执行运算操作,并且可以将运算操作结果输出到所述主机接口110。所述运算电路141、142、…、14n中的每一个可以包括多个处理器(processing element),所述处理器可以与时钟信号同步地接收所述输入特征组FD和所述权重数据WD,并且可以对接收的所述输入特征组FD和所述权重数据WD执行MAC运算。所述多个运算电路141、142、…、14n中的每一个可以包括对所述输入特征组FD和权重数据WD执行MAC运算的脉动阵列(systolicarray)。
图2a和图2b是示出根据本发明的实施例的运算电路200的配置和运算操作的图。参照图2a,所述运算电路200可以是包括多个处理器(processing element,PE)的脉动阵列。所述运算电路200可以分别应用图1中示出的所述多个运算电路141、142、…、14n。图2a中,所述运算电路200可以接收包括三个特征的三个输入特征组作为输入信号,并且可以接收包括三个权重信号的三个权重数据。所述运算电路200被例示为包括九个处理器以能够对包括三个特征的三个输入特征组和包括三个权重信号的三个权重数据执行MAC运算。但是,输入特征组和数量、一个输入特征组所包括的特征的数量、权重数据的数量和一个权重数据所包括的权重信号的数量可以小于三个或者可以大于三个,并由此所述运算电路200中包括的所述处理器的数量也可以减少或者增加。
所述运算电路200可以包括第一至第九单元处理器PE1至PE9。每个处理器可以与定义单位周期的时钟信号CLK同步地依次接收所述输入特征组和所述权重数据中包括的特征和权重信号,并且可以对接收的特征和权重信号执行MAC运算。所述第一至第九单元处理器PE1至PE9中的每一个可以包括乘法逻辑(multiply logic)、加法逻辑(accumulationlogic)和寄存器。所述第一至第九单元处理器PE1至PE9可以并行执行通过所述乘法逻辑的乘法和通过所述加法逻辑的加法。图2b以矩阵表示输入特征组FD和权重数据WD,并示出所述输入特征组FD和所述权重数据WD的卷积运算的结果FD×WD。下面将参照图2a和图2b描述所述运算电路200的操作。
当第一时钟信号CLK1在第一单位周期中被切换(toggle)时,所述第一单元处理器PE1可以接收所述第一输入特征组的第一特征F11和所述第一权重数据的第一权重信号W11。所述第一单元处理器PE1可以将所述第一输入特征组的第一特征F11和所述第一权重数据的第一权重信号W11相乘以生成F11W11。
当第二时钟信号CLK2在第二单位周期中被切换时,所述第一单元处理器PE1可以将先前运算的F11W11和0相加并存储运算结果。所述第一单元处理器PE1可以接收所述第一输入特征组的第二特征F12,并且可以接收所述第二权重数据的第一权重信号W21。所述第一单元处理器PE1可以将所述第一输入特征组的第一特征F11输出到第二单元处理器PE2,并且可以将所述第一权重数据的第一权重信号W11输出到第三单元处理器PE3。所述第一单元处理器PE1可以将所述第一输入特征组的第二特征F12和所述第二权重数据的第一权重信号W21相乘以生成F12W21。所述第二单元处理器PE2可以与所述第二时钟信号CLK2同步地接收所述第一权重数据的第二权重信号W12,并且可以从所述第一单元处理器PE1接收所述第一输入特征组的第一特征F11。所述第二单元处理器PE2可以将所述第一输入特征组的第一特征F11和所述第一权重数据的第二权重信号W12相乘以生成F11W12。所述第三单元处理器PE3可以与所述第二时钟信号CLK2同步地接收所述第二输入特征组的第一特征F21,并且可以从所述第一单元处理器PE1接收所述第一权重数据的第一权重信号W11。所述第三单元处理器PE3可以将所述第二输入特征组的第一特征F21和所述第一权重数据的第一权重信号W11相乘以生成F21W11。
当第三时钟信号CLK3在第三单位周期中被切换时,所述第一单元处理器PE1可以将先前运算的F11W11和F12W21相加并存储运算结果F11W11+F12W21。所述第一单元处理器PE1可以接收所述第一输入特征组的第三特征F13,并且可以接收所述第三权重数据的第一权重信号W31。所述第一单元处理器PE1可以将所述第一输入特征组的第二特征F12输出到第二单元处理器PE2,并且可以将所述第二权重数据的第一权重信号W21输出到第三单元处理器PE3。所述第一单元处理器PE1可以将所述第一输入特征组的第三特征F13和所述第三权重数据的第一权重信号W31相乘以生成F13W31。所述第二单元处理器PE2可以将先前运算的F11W12和0相加并存储运算结果。所述第二单元处理器PE2可以接收所述第二权重数据的第二权重信号W22,并且可以从所述第一单元处理器PE1接收所述第一输入特征组的第二特征F12。所述第二单元处理器PE2可以将所述第一输入特征组的第一特征F11输出到第四单元处理器PE4,并且可以将所述第一权重数据的第二权重信号W12输出到第五单元处理器PE5。所述第二单元处理器PE2可以将所述第一输入特征组的第二特征F12和所述第二权重数据的第二权重信号W22相乘以生成F12W22。所述第三单元处理器PE3可以将先前运算的F21W11和0相加并存储运算结果。所述第三单元处理器PE3可以接收所述第二输入特征组的第二特征F22,并且可以从所述第一单元处理器PE1接收所述第二权重数据的第一权重信号W21。所述第三单元处理器PE3可以将所述第二输入特征组的第一特征F21输出到所述第五单元处理器PE5,并且可以将所述第一权重数据的第一权重信号W11输出到第六单元处理器PE6。所述第三单元处理器PE3可以将所述第二输入特征组的第二特征F22和所述第二权重数据的第一权重信号W21相乘以生成F22W21。所述第四单元处理器PE4可以与所述第三时钟信号CLK3同步地接收所述第一权重数据的第三权重信号W13,并且可以从所述第二单元处理器PE2接收第一输入特征组的第一特征F11。所述第四单元处理器PE4可以将所述第一输入特征组的第一特征F11和所述第一权重数据的第三权重信号W13相乘以生成F11W13。所述第五单元处理器PE5可以从所述第二单元处理器PE2接收所述第一权重数据的第二权重信号W12,并且可以从所述第三单元处理器PE3接收第二输入特征组的第一特征F21。所述第五单元处理器PE5可以将所述第二输入特征组的第一特征F21和所述第一权重数据的第二权重信号W12相乘以生成F21W12。所述第六单元处理器PE6可以与所述第三时钟信号CLK6同步地接收所述第三输入特征组的第一特征F31,并且可以从所述第三单元处理器PE3接收所述第一权重数据的第一权重信号W11。所述第六单元处理器PE6可以将所述第三输入特征组的第一特征F31和所述第一权重数据的第一权重信号W11相乘以生成F31W11。
当第四时钟信号CLK4在第四单位周期中被切换时,所述第一单元处理器PE1可以将先前运算的F11W11+F12W21和F13W31相加并存储运算结果F11W11+F12W21+F13W31。所述第一单元处理器PE1可以将所述第一输入特征组的第三特征F13输出到所述第二单元处理器PE2,并且可以将所述第三权重数据的第一权重信号W31输出到所述第三处理器PE3。所述第二单元处理器PE2可以将先前运算的F11W12和F12W22相加并存储运算结果F11W12+F12W22。所述第二单元处理器PE2可以接收第三权重数据的第二权重信号W32,并且可以从所述第一单元处理器PE1接收所述第一输入特征组的第三特征F13。所述第二单元处理器PE2可以将所述第一输入特征组的第二特征F12输出到所述第四单元处理器PE4,并且可以将所述第二权重数据的第二权重信号W22输出到所述第五单元处理器PE5。所述第二单元处理器PE2可以将所述第一输入特征组的第三特征F13和所述第三权重数据的第二权重信号W32相乘以生成F13W32。所述第三单元处理器PE3可以将先前运算的F21W11和F22W21相加并存储运算结果F21W11+F22W21。所述第三单元处理器PE3可以接收所述第二输入特征组的第三特征F23,并且可以从第一单元处理器PE1接收所述第三权重数据的第一权重信号W31。所述第三单元处理器PE3可以将所述第二输入特征组的第二特征F22输出到所述第五单元处理器PE5,并且可以将所述第二权重数据的第一权重信号W21输出到所述第六单元处理器PE6。所述第三单元处理器PE3可以将所述第二输入特征组的第三特征F23和所述第三权重数据的第一权重信号W31相乘以生成F23W31。所述第四单元处理器PE4可以与所述第四时钟信号CLK4同步地接收所述第二权重数据的第三权重信号W23,并且可以从所述第二单元处理器PE2接收所述第一输入特征组的第二特征F12。所述第四单元处理器PE4可以将先前运算的F11W13和0相加并存储运算结果。所述第四单元处理器PE4可以将所述第一权重数据的第三权重信号W13输出到第七单元处理器PE7。所述第四单元处理器PE4可以将所述第一输入特征组的第二特征F12和所述第二权重数据的第三权重信号W23相乘以生成F12W23。所述第五单元处理器PE5可以将先前运算的F21W12和0相加并存储运算结果。所述第五单元处理器PE5可以从所述第二单元处理器PE2接收第二权重数据的第二权重信号W22,并且可以从所述第三单元处理器PE3接收第二输入特征组的第二特征F22。所述第五单元处理器PE5可以将所述第二输入特征组的第一特征F21输出到所述第七单元处理器PE7,并且可以将所述第一权重数据的第二权重信号W12输出到第八单元处理器PE8。所述第五单元处理器PE5可以将所述第二输入特征组的第二特征F22和所述第二权重数据的第二权重信号W22相乘以生成F22W22。所述第六单元处理器PE6可以将先前运算的F31W11和0相加并存储运算结果。所述第六单元处理器PE6可以接收所述第三输入特征组的第二特征F32,并且可以从所述第三单元处理器PE3接收第二权重数据的第一权重信号W21。所述第六单元处理器PE6可以将所述第三输入特征组的第一特征F31输出到所述第八单元处理器PE8。所述第六单元处理器PE6可以将所述第三输入特征组的第二特征F32和所述第二权重数据的第一权重信号W21相乘以生成F31W21。所述第七单元处理器PE7可以从所述第四单元处理器PE4接收所述第一权重数据的第三权重信号W13,并且可以从所述第五单元处理器PE5接收第二输入特征组的第一特征F21。所述第七单元处理器PE7可以将所述第二输入特征组的第一特征F21和所述第一权重数据的第三权重信号W13相乘以生成F21W13。所述第八单元处理器PE8可以从所述第五单元处理器PE5接收第一权重数据的第二权重信号W12,并且可以从第六单元处理器PE6接收第三输入特征组的第一特征F31。所述第八单元处理器PE8可以将所述第三输入特征组的第一特征F31和所述第一权重数据的第二权重信号W12相乘以生成F31W12。
当第五时钟信号CLK5在第五单位周期中被切换时,所述第二单元处理器PE2可以将先前运算的F11W12+F12W22和F13W32相加并存储运算结果F11W12+F12W22+F13W32。所述第二单元处理器PE2可以将所述第一输入特征组的第三特征F13输出到所述第四单元处理器PE4,并且可以将所述第三权重数据的第二权重信号W32输出到第五单元处理器PE5。所述第三单元处理器PE3可以将先前运算的F21W11+F22W21和F23W31相加并存储运算结果F21W11+F22W21+F23W31。所述第三单元处理器PE3可以将所述第二输入特征组的第三特征F23输出到所述第五单元处理器PE5,并且可以将所述第三权重数据的第一权重信号W31输出到第六单元处理器PE6。所述第四单元处理器PE4可以将先前运算的F11W13和F12W23相加并存储运算结果F11W13+F12W23。所述第四单元处理器PE4可以接收所述第三权重数据的第三权重信号W33,并且可以从所述第二单元处理器PE2接收所述第一输入特征组的第三特征F13。所述第四单元处理器PE4可以将所述第二权重数据的第三权重信号W23输出到所述第七单元处理器PE7。所述第四单元处理器PE4可以将所述第一输入特征组的第三特征F13和所述第三权重数据的第三权重信号W33相乘以生成F13W33。所述第五单元处理器PE5可以将先前运算的F21W12和F22W22相加并存储运算结果F21W12+F22W22。所述第五单元处理器PE5可以从所述第二单元处理器PE2接收所述第三权重数据的第二权重信号W32,并且可以从所述第三单元处理器PE3接收第二输入特征组的第三特征F23。所述第五单元处理器PE5可以向所述第七单元处理器PE7输出第二输入特征组的第二特征F22,并且可以向所述第八单元处理器PE8输出第二权重数据的第二权重信号W22。所述第五单元处理器PE5可以将所述第二输入特征组的第三特征F23和所述第三权重数据的第二权重信号W32相乘以生成F23W32。所述第六单元处理器PE6可以将先前运算的F31W11和F32W21相加并存储运算结果F31W11+F32W21。所述第六单元处理器PE6可以接收所述第三输入特征组的第三特征F33,并且可以从所述第三单元处理器PE3接收第三权重数据的第一权重信号W31。所述第六单元处理器PE6可以将所述第三输入特征组的第二特征F32输出到所述第八单元处理器PE8。所述第六单元处理器PE6可以将所述第三输入特征组的第三特征F33和所述第三权重数据的第一权重信号W31相乘以生成F33W31。所述第七单元处理器PE7可以将先前运算的F21W13和0相加并存储运算结果。所述第七单元处理器PE7可以从所述第四单元处理器PE4接收第二权重数据的第三权重信号W23,并且可以从所述第五单元处理器PE5接收第二输入特征组的第二特征F22。所述第七单元处理器PE7可以将所述第一权重数据的第三权重信号W13输出到所述第九单元处理器PE9。所述第七单元处理器PE7可以将所述第二输入特征组的第二特征F22和所述第二权重数据的第三权重信号W23相乘以生成F22W23。所述第八单元处理器PE8可以将先前运算的F31W12和0相加并存储运算结果。所述第八单元处理器PE8可以从所述第五单元处理器接收第二权重数据的第二权重信号W22,并且可以从所述第六单元处理器PE6接收第三输入特征组的第二特征F32。所述第八单元处理器PE8可以将所述第三输入特征组的第一特征F31输出到所述第九单元处理器PE9。所述第八单元处理器PE8可以将所述第三输入特征组的第二特征F32和所述第二权重数据的第二权重信号W22相乘以生成F32W22。所述第九单元处理器PE9可以从所述第七单元处理器PE7接收第一权重数据的第三权重信号W13,并且可以从所述第八单元处理器PE8接收第三输入特征组的第一特征F31。所述第九单元处理器PE9可以将所述第三输入特征组的第一特征F31和所述第一权重数据的第三权重信号W13相乘以生成F31W13。
当第六时钟信号CLK6在第六单位周期中被切换时,所述第四单元处理器PE4可以将先前运算的F11W13+F12W23和F13W33相加并存储运算结果F11W13+F12W23+F13W33。所述第四单元处理器PE4可以将所述第三权重数据的第三权重信号W33输出到所述第七单元处理器PE7。所述第五单元处理器PE5可以将先前运算的F21W12+F22W22和F23W32相加并存储运算结果F21W12+F22W22+F23W32。所述第五单元处理器PE5可以将所述第二输入特征组的第三特征F23输出到第七单元处理器PE7,并且可以将第三权重数据的第二权重信号W32输出到所述第八单元处理器PE8。所述第六单元处理器PE6可以将先前运算的F31W11+F32W21和F33W31相加并存储运算结果F31W11+F32W21+F33W31。所述第六单元处理器PE6可以将所述第三输入特征组的第三特征F33输出到所述第八单元处理器PE8。所述第七单元处理器PE7可以将先前运算的F21W13和F22W23相加并存储运算结果F21W13+F22W23。所述第七单元处理器PE7可以从所述第四单元处理器PE4接收第三权重数据的第三权重信号W33,并且可以从所述第五单元处理器PE5接收第二输入特征组的第三特征F23。所述第七单元处理器PE7可以将所述第二权重数据的第三权重信号W23输出到所述第九单元处理器PE9。所述第七单元处理器PE7可以将所述第二输入特征组的第三特征F23和所述第三权重数据的第三权重信号W33相乘以生成F23W33。所述第八单元处理器PE8可以将先前运算的F31W12和F32W22相加并存储运算结果F31W12+F32W22。所述第八单元处理器PE8可以从所述第五单元处理器PE5接收所述第三权重数据的第二权重信号W32,并且可以从所述第六单元处理器PE6接收第三输入特征组的第三特征F33。所述第八单元处理器PE8可以将所述第三输入特征组的第二特征F32输出到所述第九单元处理器PE9。所述第八单元处理器PE8可以将所述第三输入特征组的第三特征F33和所述第三权重数据的第二权重信号W32相乘以生成F33W32。所述第九单元处理器PE9可以将先前运算的F31W13和0相加并存储运算结果。所述第九单元处理器PE9可以从所述第七单元处理器PE7接收所述第二权重数据的第三权重信号W23,并且可以从所述第八单元处理器PE8接收第三输入特征组的第二特征F32。所述第九单元处理器PE9可以将所述第三输入特征组的第二特征F32和所述第二权重数据的第三权重信号W23相乘以生成F32W23。
当第七时钟信号CLK7在第七单位周期中被切换时,所述第七单元处理器PE7可以将先前运算的F21W13+F22W23和F23W33相加并存储运算结果F21W13+F22W23+F23W33。所述第七单元处理器PE7可以将所述第三权重数据的第三权重信号W33输出到所述第九单元处理器PE9,并且所述第八单元处理器PE8可以将先前运算的F31W12+F32W22和F33W32相加并存储运算结果31W12+F32W22+F33W32。所述第八单元处理器PE8可以将第三输入特征组的第三特征F33输出到所述第九单元处理器PE9。所述第九单元处理器PE9可以将先前运算的F31W13和F32W23相加并存储运算结果F31W13+F32W23。所述第九单元处理器PE9可以将所述第三输入特征组的第三特征F33和所述第三权重数据的第三权重信号W33相乘以生成F33W33。
当第八时钟信号CLK8在第八单位周期中被切换时,所述第九单元处理器PE9可以将先前运算的F31W13+F32W23和F33W33相加并存储运算结果F31W13+F32W23+F33W33。当第九时钟信号CLK9在第九单位周期中被切换时,可以输出所述第一至第九单元处理器PE1至PE9中分别存储的运算结果,如图2b所示,可以从所述第一至第九单元处理器PE1至PE9输出第一至第三输入特征组FD和第一至第三权重数据WD的卷积运算的结果FD×WD。
图3是简要示出根据本发明的实施例的处理器300的配置的框图。图3中,所述处理器300可以执行MAC运算。所述处理器300被配置成可以接收至少两个输入信号,并且可以在每单位周期接收至少两个输入信号中的至少一个和权重信号。所述处理器300可以分别应用图2a中示出的处理器PE1至PE9。在一个实施例中,所述至少两个输入信号可以包括第一输入信号INA和第二输入信号INB。所述第一输入信号INA和所述第二输入信号INB可以分别对应于输入特征组中的一个特征。所述第一输入信号INA和所述第二输入信号INB可以具有任意的位数。虽然不限定,但是例如所述第一输入信号INA和所述第二输入信号INB可以分别是包括8位、16位或32位的信号。所述权重信号W可以具有任意的位数。虽然不限定,但是例如所述权重信号W可以是包括4位、8位或16位的信号。所述处理器300可以接收具有多个精度(Precision)的输入信号。例如,所述第一输入信号INA可以具有第一精度和第二精度中的一个。所述第一精度可以是高精度(high precision),所述第二精度可以是低精度(low precision)。所述第二输入信号INB可以具有第二精度。具有所述第一精度的所述第一输入信号INA可以具有第一位数。具有所述第二精度的所述第一输入信号INA和所述第二输入信号INB可以分别具有第二位数。所述第一位数可以大于所述第二位数。在一个实施例中,所述输入信号的数量可以是三个以上。所述第一位数可以是(2X-1)*N以上。其中,X是输入信号的数量,并且可以是2以上的整数,N可以是所述第二位数。当所述输入信号的数量为两个时,所述第一位数可以是所述第二位数的三倍以上。
所述处理器300可以在第一运算操作中接收具有所述第一精度的第一输入信号INA和所述权重信号W,并且可以对所述第一输入信号INA和所述权重信号W执行MAC运算。在所述第一运算操作中所述第二输入信号INB可以不被输入到所述处理器300中。所述处理器300可以在第二运算操作中接收具有所述第二精度的所述第一输入信号INA,并且可以与所述第一输入信号INA一同接收具有所述第二精度的所述第二输入信号INB。所述处理器300可以对所述第一输入信号INA和所述权重信号W执行MAC运算,并且可以对所述第二输入信号INB和所述权重信号W执行MAC运算。所述处理器300可以同时接收具有第二精度的所述第一输入信号INA和所述第二输入信号INB,并且可以同时对所述第一输入信号INA和所述第二输入信号INB执行运算,从而可以增加包括所述处理器300的运算电路的运算效率和性能。
所述处理器300可以包括输入寄存器310、权重寄存器320、乘法器330、加法器340和输出寄存器350。所述输入寄存器310可以接收所述第一输入信号INA和所述第二输入信号INB,并且可以存储所述第一输入信号INA和所述第二输入信号INB。所述输入寄存器310可以包括至少能够存储所述第一位数的最大值的存储空间。当同时接收所述第一输入信号INA和所述第二输入信号INB时,所述输入寄存器310能够将所述第一输入信号INA和所述第二输入信号INB存储在所述存储空间中彼此远离的位置。例如,所述输入寄存器310可以将所述第二输入信号INB存储在所述存储空间的从最低位依次增加的序列的位。假设所述第二输入信号INB的位数是N(N是任意整数),所述输入寄存器310可以将所述第二输入信号INB存储在所述存储空间的第一至第N位,并且可以将所述第一输入信号INA存储在所述存储空间的第2N至第3N位。所述权重寄存器320可以接收所述权重信号W,并且可以存储所述权重信号W。所述权重寄存器320可以包括能够存储所述权重信号W的存储空间。
所述乘法器330可以从所述输入寄存器310接收所述第一输入信号INA和所述第二输入信号INB中的至少一个,并且可以从所述权重寄存器320接收权重信号W。所述乘法器330可以将所述第一输入信号INA和所述第二输入信号INB中的至少一个和所述权重信号W相乘。当从所述输入寄存器310仅接收所述第一输入信号INA时,所述乘法器330可以将所述第一输入信号INA和所述权重信号W相乘并输出第一输入信号INA的相乘值MA。当从所述输入寄存器310接收所述第一输入信号INA和所述第二输入信号INB时,所述乘法器330可以将所述第一输入信号INA和所述第二输入信号INB分别和所述权重信号W相乘以生成第一输入信号INA的相乘值MA和第二输入信号INB的相乘值MB。
所述加法器340可以从所述乘法器330接收所述相乘值MA、MB。所述输出寄存器350可以存储所述处理器300的运算值OA、OB,并且可以输出存储的所述运算值OA、OB。所述输出寄存器350可以包括能够存储所述第一输入信号INA的运算值OA和所述第二输入信号INB的运算值OB的存储空间。所述输出寄存器350可以分开存储所述第一输入信号INA的运算值OA和所述第二输入信号INB的运算值OB。所述加法器340可以分别将存储在所述输出寄存器350中的第一输入信号INA和第二输入信号INB的运算值与新输入的第一输入信号INA的相乘值MA和第二输入信号INB的相乘值MB相加,并且分别更新所述第一输入信号INA的运算值OA和所述第二输入信号INB的运算值OB。所述加法器340可以将所述第一输入信号INA的先前运算值OA和当前输入的第一输入信号INA的相乘值MA相加以更新所述第一输入信号INA的运算值OA。所述加法器340可以将所述第二输入信号INB的先前运算值OB和当前输入的第二输入信号INB的相乘值MB相加以更新所述第二输入信号INB的运算值OB。
图4是示例性地示出图3中示出的处理器400的配置和操作的图。参照图4,所述处理器400可以包括输入寄存器410、权重寄存器420、乘法器430、加法器440和输出寄存器450。图4中示出了所述权重信号W包括8位并且具有第二精度的两个输入信号分别包括8位的情况。参照图3,所述输入寄存器410可以包括能够存储所述第一输入信号INA和所述第二输入信号INB的存储空间。所述输入寄存器410可以接收具有所述第一精度的第一输入信号INA或者可以接收具有第二精度的第一输入信号INA和第二输入信号INB。具有所述第一精度的第一输入信号INA可以包括16位或32位,具有所述第二精度的所述第一输入信号INA和所述第二输入信号INB可以分别包括8位。此时,为了防止所述第二输入信号INB的相乘值影响所述第一输入信号INA的相乘值,所述输入寄存器410可以包括能够存储至少24位的存储空间以用于存储包括8位的第一输入信号INA和第二输入信号INB。当接收具有所述第一精度的所述第一输入信号INA时,所述输入寄存器410可以将所述第一输入信号INA的第1至第16位分别依次存储在所述存储空间的第1至第16位。当接收所述第一输入信号INA和所述第二输入信号INB时,所述输入寄存器410可以将所述第一输入信号INA的第1至第8位(A)存储在所述存储空间的第17至第24位,并且可以将所述第二输入信号INB的第1至第8位(B)存储在第1至第8位。可以在所述存储空间的第9至第16位不存储任何信息。例如,可以在所述存储空间的第9至第16位存储0。所述权重寄存器420可以将所述权重信号W存储在存储空间中。所述权重寄存器420可以包括能够存储8位的存储空间,并且可以将所述权重信号W的第1至第8位存储在所述存储空间的第1至第8位。虽然未示出,但是所述输入寄存器410可以包括附加存储空间,所述附加存储空间包括第25至第32位,并且当接收包括32位的所述第一输入信号INA时,可以将所述第一输入信号INA的第25至第32位存储在附加存储空间中。
所述乘法器430可以将存储在所述输入寄存器410中的第一输入信号INA和第二输入信号INB分别和存储在所述权重寄存器420中的权重信号W相乘。在所述乘法器430中相乘的值可以通过所述加法器440存储在所述输出寄存器450中。所述加法器440可以将在所述乘法器430相乘的值和存储在所述输出寄存器450中的运算值相加。所述输出寄存器450可以包括能够存储至少32位的存储空间。虽然未示出,但是所述输出寄存器可以包括附加存储空间以用于存储包括第32位的第一输入信号的运算值。所述输出寄存器450可以将所述第二输入信号INB的运算值BW存储在所述存储空间的第1至第16位,并且可以将所述第一输入信号INB的运算值AW存储在所述存储空间的第17至第32位。此时,所述输出寄存器450存在当所述第一输入信号INA和所述第二输入信号INB和所述权重信号W具有最大值的最坏情况(worst case)时只能存储一次运算结果的问题。这是因为,当将存储在所述输出寄存器450中的先前运算值和新输入的输入信号的相乘值相加时,所述第二输入信号INB的运算值BW可以改变存储第一输入信号INA的运算值AW的所述存储空间的第17位的值。因此,包括图4中示出的处理器400的运算电路可以如图5所示配置。
图5是示出根据本发明的实施例的运算电路500的配置的图。参照图5,所述运算电路500可以包括多个处理器和多个辅助累加器。所述运算电路500可以是多个处理器以矩阵形式配置以执行MAC运算的脉动阵列(systolic array)。为了便于说明,图5中示出在列方向上配置的多个处理器,而没有示出在行方向上配置的多个处理器。所述多个处理器可以包括第一至第三处理器PE1、PE2、PE3。所述第一处理器PE1可以对每单位周期接收的所述第一输入信号INA1和所述第二输入信号INB1中的至少一个执行MAC运算。所述第二处理器PE2可以对每单位周期接收的所述第三输入信号INA2和所述第四输入信号INB2中的至少一个执行MAC运算。所述第三处理器PE3可以对每单位周期接收的所述第五输入信号INA3和所述第六输入信号INB3中的至少一个执行MAC运算。
当所述第一至第三处理器PE1、PE2、PE3具有与图4中示出的处理器400相同的配置时,所述第一至第三处理器PE1、PE2、PE3可以分别需要辅助累加器以同时对两个输入信号执行MAC运算。第一辅助累加器511与所述第一处理器PE1连接,可以存储从所述第一处理器PE1输出的运算值,并且可以每单位周期更新存储的运算值。参照图3,所述第一处理器PE1可以将所述第一输入信号INA1和所述第二输入信号INB1分别和权重信号W相乘,并将相乘的值存储在所述输出寄存器350中,所述第一辅助累加器511可以替代执行所述第一处理器PE1的相加。即,所述第一处理器PE1可以每单位周期向所述第一辅助累加器511输出存储在所述输出寄存器350中的运算值,并且可以将接收的第一输入信号INA1和第二输入信号INB1与权重信号W的所述相乘的值存储在输出寄存器350中。所述第一辅助累加器511可以每单位周期将从所述第一处理器PE1输出的运算值相加并存储。第二辅助累加器512与所述第二处理器PE2连接,可以存储从所述第二处理器PE2输出的运算值,并且可以每单位周期更新存储的运算值。第三辅助累加器513与所述第三处理器PE3连接,可以存储从所述第三处理器PE3输出的运算值,并且可以每单位周期更新存储的运算值。如上所述,所述运算电路500包括连接到每个处理器的辅助累加器以用于同时对两个输入信号执行MAC运算时,为了同时对两个输入信号执行MAC运算而使用两个运算逻辑,因此运算操作的效率和效果降低。
图6是示例性地示出根据本发明的实施例的处理器600的配置和操作的图。参照图6,所述处理器600可以包括输入寄存器610、权重寄存器620、乘法器630、加法器640和输出寄存器650。通过与图4比较来进行说明,所述输入寄存器610可以包括比所述输入寄存器410更大的存储空间。例如,所述输入寄存器610可以包括能够存储至少26位的存储空间。所述输入寄存器610可以将第二输入信号INB的第1至第8位(B)存储在所述存储空间的第1至第8位,并且可以将所述第一输入信号INA的第1至第8位存储在所述存储空间的第19至第26位。可以在所述存储空间的第9至第18位不存储任何信息,可以存储0。所述存储空间的第9至第16位可以是用于防止所述第一输入信号INA和所述第二输入信号INB的运算值彼此影响的最小的位,所述第17至第18位可以是保护位。因此,当所述第一输入信号和所述第二输入信号包括N个位,并且保护位的数量为G时,所述输入寄存器可以将所述第二输入信号存储在所述存储空间的第1至第N位,并且可以将所述第一输入信号存储在所述存储空间的第N至第2N+G位。其中,N和G可以是任意整数。虽然未示出,但是所述输入寄存器610可以进一步包括附加存储空间以用于存储包括32位的第一输入信号INA。
所述权重寄存器620可以存储所述权重信号W。所述乘法器630可以将存储在所述输入寄存器610中的第一输入信号INA和第二输入信号INB分别和存储在所述权重寄存器620中的权重信号W相乘。所述加法器640可以将存储在所述输出寄存器650中的先前运算值和在所述乘法器相乘的值相加以更新存储在所述输出寄存器650中的运算值。所述输出寄存器650可以包括比所述输出寄存器450更大的存储空间。例如,所述输出寄存器650可以包括能够存储至少34位的存储空间。所述输出寄存器可以将所述第二输入信号INB的运算值BW存储在所述存储空间的第1至第18位。所述输出寄存器650可以将所述第一输入信号INA的运算值AW存储在所述存储空间的第19至第34位。虽然未示出,但是所述输出寄存器650可以进一步包括附加存储空间以存储所述第一输入信号INA的运算值AW。因此,所述输出寄存器650可以将所述第二输入信号INB的运算值BW存储在所述存储空间的第1至第M+G位,并且可以将所述第一输入信号INA的运算值AW存储在所述存储空间的第M+G+1至第2M+2G位。其中,M可以是所述第一输入信号INA或所述第二输入信号INB的位数和所述权重信号W的位数之和。所述输出寄存器650可以在用于存储所述第一输入信号INA的运算值AW的位和用于存储所述第二输入信号INB的运算值BW的最小的位之间包括保护位。图6中示出了所述保护位是2个,但是所述保护位的数量可以通过以下式来定义。
K·22(N-1)≤22N+G-1-1
其中,N可以是所述第一输入信号INA和所述第二输入信号INB分别包括的位数,所述G可以是保护位的数量。所述K表示当第一输入信号INA和第二输入信号INB的值和所述保护位的数量G被定义时,一个处理器能够执行相加的次数(即,能够更新运算值的次数),所述K可以是不发生溢出(overflow)的阈值。所述第一输入信号INA和所述第二输入信号INB的值可以是-2N-1与2N-1-1之间的整数。例如,当所述N为8、所述G为2时,所述第一输入信号INA和所述第二输入信号INB的范围可以是-128与127之间的整数,K的最大值可以是7。因此,即使一个处理器执行7次相加,第二输入信号INB的运算值BW可以不影响所述第一输入信号INA的运算值AW。即,即使一个处理器执行7次相加,也可以不发生溢出,所述第二输入信号INB的运算值BW可以存储在所述输出寄存器的存储空间的最低位至所述保护位。所述保护位的数量可以任意确定,并且K可以随着保护位的数量增加而增加。但是,当保护位的数量过多时,寄存器的存储空间增加,从而一个处理器的电路面积可能增加。因此,优选地,所述保护位的数量可以被适当地确定为能够优化具有权衡(trade-off)关系的运算电路的效率和面积的水平。
当第一输入信号INA和第二输入信号INB的范围中不包括最小值时,可以增加所述K。
K·(22(N-1)-2N+1)≤22N+G-1-1
第一输入信号INA和第二输入信号INB的值可以是-2N-1+1与2N-1-1之间的整数。所述第一输入信号INA和所述第二输入信号INB的范围可以是-127与127之间的整数,并且K的最大值可以是8。因此,即使一个处理器执行8次相加,第二输入信号INB的运算值BW可以不影响所述第一输入信号INA的运算值AW。即,即使一个处理器执行8次相加,也可以不发生溢出,所述第二输入信号INB的运算值BW可以存储在所述输出寄存器的存储空间的最低位至所述保护位。
图7是示出根据本发明的实施例的运算电路700的配置的图。参照图7,所述运算电路700可以包括多个处理器和共用累加器710。所述运算电路700可以是多个处理器以矩阵形式配置以执行MAC运算的脉动阵列(systolic array)。为了便于说明,图7中示出在列方向上配置的多个处理器,而没有示出在行方向上配置的多个处理器。所述多个处理器可以依次串联连接。所述共用累加器710可以与所述多个处理器中的K个处理连接。所述共用累加器710可以每单位周期依次与所述K个处理器循环连接。所述共用累加器710可以在所述K个处理器溢出之前的每单位周期分别与所述K个处理器连接。所述共用累加器710可以基于所述K个处理器的相加次数是否达到所述阈值来分别与所述K个处理器连接。例如,所述共用累加器可以从第K+1单位周期依次与K个处理器循环连接。下面,将所述K为7的情况作为示例进行描述。所述多个处理器可以包括8个以上的处理器,图7示出其中的7个处理器。
所述多个处理器可以包括第一至第七处理器PE1、PE2、PE3、...、PE7。所述第一至第七处理器PE1、PE2、PE3、…、PE7可以依次串联连接。所述第一处理器PE1可以从第一单位周期每单位周期接收第一输入信号INA1和第二输入信号INB1中的至少一个和权重信号W,并且可以将所述第一输入信号INA1和所述第二输入信号INB1中的至少一个和权重信号W相乘。所述第一处理器PE1可以将所述第一输入信号INA和权重信号W相乘,并且可以将所述第二输入信号INB1和所述权重信号W相乘。所述第一处理器PE1可以从第二单位周期每单位周期将所述第一输入信号INA1的相乘值和所述第二输入信号INB1的相乘值和先前的运算值相加,以更新所述第一输入信号INA1的运算值OA1和所述第二输入信号INB1的运算值OB1。所述第二处理器PE2可以从第二单位周期每单位周期接收第三输入信号INA2和第四输入信号INB2中的至少一个和从所述第一处理器PE1传送的权重信号W,并且可以将所述第三输入信号INA2和所述第四输入信号INB2中的至少一个和权重信号W相乘。所述第二处理器PE2可以将所述第三输入信号INA2和所述权重信号W相乘,并且可以将所述第四输入信号INB2和所述权重信号W相乘。所述第二处理器PE2可以从第三单位周期每单位周期将所述第三输入信号INA2的相乘值和所述第四输入信号INB2的相乘值和先前的运算值相加,以更新所述第三输入信号INA2的运算值OA2和所述第四输入信号INB2的运算值OB2。所述第三处理器3可以从第三单位周期每单位周期接收第五输入信号INA3和第六输入信号INB3中的至少一个和从所述第二处理器PE2传送的权重信号W,并且可以将所述第五输入信号INA3和所述第六输入信号INB3中的至少一个和权重信号W相乘。所述第三处理器PE3可以将所述第五输入信号INA3和所述权重信号W相乘,并且可以将所述第六输入信号INB3和所述权重信号W相乘。所述第三处理器PE3可以从第四单位周期每单位周期将所述第五输入信号INA3的相乘值和所述第六输入信号INB3的相乘值和先前的运算值相加,以更新所述第五输入信号的运算值OA3和所述第六输入信号的运算值OB3。所述第七处理器PE7可以从第七单位周期每单位周期接收第十三输入信号INA7和第十四输入信号INB7中的至少一个和从第六处理器(未示出)传送的权重信号W,并且可以将所述第十三输入信号INA7和所述第十四输入信号INB7中的至少一个和所述权重信号相乘。所述第七处理器PE7可以将所述第十三输入信号INA7和所述权重信号W相乘,并且可以将所述第十四输入信号INB7和所述权重信号W相乘。所述第七处理器PE7可以从第八单位周期每单位周期将所述第十三输入信号INA7的相乘值和所述第十四输入信号INB7的相乘值和先前的运算值相加,以更新存储在所述第十三输入信号INA7的运算值OA7和存储在所述第十四输入信号INB7中的运算值OB7。
所述共用累加器710可以依次与所述第一至第七处理器PE1、PE2、PE3、…、PE7循环连接。所述共用累加器710可以在所述第一至第七处理器PE1、PE2、PE3、…、PE7溢出之前的每单位周期分别与所述第一至第七处理器PE1、PE2、PE3、…、PE7连接。所述共用累加器710可以在所述第一至第七处理器PE1、PE2、PE3、…、PE7的相加次数达到所述阈值的每单位周期分别与所述第一至第七处理器PE1、PE2、PE3、…、PE7连接。例如,所述共用累加器710可以在所述第一处理器PE1执行7次相加而溢出之前的第八单位周期中与所述第一处理器PE1连接,并且可以在所述第二处理器PE2执行7次相加而溢出之前的第九单位周期中与所述第二处理器PE2连接,并且可以在第三至第七处理器分别执行7次相加而溢出之前的第十至第十四单位周期中依次分别与第三至第七处理器PE3、…、PE7连接。所述共用累加器710可以在第十五单位周期中重新与所述第一处理器PE1连接,并且可以在第十六至第二十二单位周期中重新分别与所述第二至第七处理器PE2、PE3、…、PE7连接。所述共用累加器710可以存储从所述多个处理器输出的运算值作为运算信息。所述共用累加器710每当与所述多个处理器中的一个连接时可以接收从连接的处理器输出的新运算值,并且可以将对应于先前存储的所述运算信息的值和新运算值相加来更新所述运算信息。
所述共用累加器710可以包括用于存储与所述第一至第七处理器PE1、PE2、PE3、…、PE7相关的运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7的存储空间。所述共用累加器710可以包括第一至第七存储空间711、712、713、…、717。所述共用累加器710可以将与所述第一处理器PE1相关的第一运算信息SA1/SB1存储在所述第一存储空间711中。所述第一运算信息SA1可以是与所述第一处理器PE1接收的第一输入信号INA1相关的运算信息。所述第一运算信息SB1可以是与所述第一处理器PE1接收的第二输入信号INB1相关的运算信息。所述共用累加器710可以接收从所述第一处理器PE1输出的运算值OA1、OB1,并且可以将对应于存储在第一存储空间711中的运算信息SA1/SB1的值和所述运算值OA1、OB1分别相加来更新所述运算信息SA1/SB1。所述共用累加器710可以将与所述第二处理器PE2相关的第二运算信息SA2/SB2存储在所述第二存储空间712中。所述第二运算信息SA2可以是与所述第二处理器PE2接收的第三输入信号INA2相关的运算信息。所述第二运算信息SB2可以是与所述第二处理器PE2接收的第四输入信号INB2相关的运算信息。所述共用累加器710可以接收从所述第二处理器PE2输出的运算值OA2、OB2,并且可以将对应于存储在第二存储空间712中的运算信息SA2/SB2的值和所述运算值OA2、OB2分别相加来更新所述运算信息SA2/SB2。所述共用累加器710可以将与所述第三处理器PE3相关的第三运算信息SA3/SB3存储在所述第三存储空间713中。所述第三运算信息SA3可以是与所述第三处理器PE3接收的第五输入信号INA3相关的运算信息。所述第三运算信息SB3可以是与所述第三处理器PE3接收的第六输入信号INB3相关的运算信息。所述共用累加器710可以接收从所述第三处理器PE3输出的运算值OA3、OB3,并且可以将对应于存储在第三存储空间713中的运算信息SA3/SB3的值和所述运算值OA3、OB3分别相加来更新所述运算信息SA3/SB3。所述共用累加器710可以将与所述第七处理器PE7相关的第七运算信息SA7/SB7存储在所述第七存储空间717中。所述第七运算信息SA7可以是与所述第七处理器PE7接收的第十三输入信号INA7相关的运算信息。所述第七运算信息SB7可以是与所述第七处理器PE7接收的第十四输入信号INB7相关的运算信息。所述共用累加器710可以接收从所述第七处理器PE7输出的运算值OA7、OB7,并且可以将对应于存储在第七存储空间717中的运算信息SA7/SB7的值和所述运算值OA7、OB7分别相加来更新所述运算信息SA7/SB7。
图8是示出根据本发明的实施例的处理器800的配置的图。参照图8,所述处理器800可以分别应用图7中示出的第一至第七处理器PE1、PE2、PE3、…、PE7。所述处理器800可以包括输入寄存器810、权重寄存器820、乘法器830、加法器840、输出寄存器850和溢出控制器860。所述输入寄存器810可以每单位周期接收第一输入信号INA和第二输入信号INB中的至少一个。图6中示出的输入寄存器610可以应用于所述输入寄存器810。所述输入寄存器810可以每单位周期向与所述处理器800连接的行方向的处理器输出存储的第一输入信号INA和第二输入信号INB。所述权重寄存器820可以每单位周期接收权重信号W。所述权重寄存器820可以每单位周期向与所述处理器800连接的列方向的处理器输出存储的权重信号W。所述乘法器830可以将存储在所述输入寄存器810中的所述第一输入信号INA和所述第二输入信号INB分别和存储在所述权重寄存器820中的所述权重信号W相乘。所述输出寄存器850可以存储所述处理器800的运算值OA、OB。图6中示出的输出寄存器650可以应用于所述输出寄存器850。所述加法器840可以将所述溢出控制器860的输出和所述乘法器830的相乘值相加,并且可以将相加的值作为所述运算值OA、OB存储在所述输出寄存器850中。
所述溢出控制器860可以基于权重信号W将存储在所述输出寄存器850中的运算值和0中的一个输出到所述加法器840。所述溢出控制器860可以基于所述权重信号W的输入次数感知所述处理器800的溢出。所述溢出控制器860可以对每单位周期输入到所述处理器800的所述权重信号进行计数,并且可以根据计数值CNT感知所述处理器800的溢出。每当所述计数值CNT达到预定值时所述溢出控制器860可以输出存储在所述输出寄存器850中的运算值OA、OB,并且当所述计数值不是所述预定值时所述溢出控制器860可以输出0。所述预定值可以是n*K+2。其中,n可以是1以上的整数。例如,当所述计数值CNT为K+2时所述溢出控制器860可以输出所述0,其余情况下可以输出存储在所述输出寄存器850中的运算值OA、OB。所述溢出控制器860可以使对应于阈值的次数的相加的运算值OA、OB存储在所述输出寄存器850中。当所述相加次数大于阈值时,所述溢出控制器860可以使所述输出寄存器850仅存储从所述乘法器830输出的新运算值OA、OB。
所述溢出控制器860可以包括计数器861、计数寄存器862和选择器863。所述计数器861可以对所述权重信号W的输入次数进行计数。所述计数器861的计数值CNT可以存储在所述计数寄存器862中。所述选择器863可以从所述计数寄存器862接收所述计数值CNT,并且可以接收0和存储在所述输出寄存器850中的运算值OA、OB。所述选择器863可以基于所述计数值CNT输出0和所述运算值OA、OB中的一个。当所述计数值CNT不是所述预定值时,所述选择器863可以输出存储在所述输出寄存器850中的运算值OA、OB,并且当所述计数值CNT达到预定值时,所述选择器863可以输出0而不是存储在所述输出寄存器850中的运算值OA、OB。
在一个实施例中,图7中示出的所述第一处理器PE1的溢出控制器可以全部包括图8中示出的计数器861、计数寄存器862和选择器863,并且所述第二至第七处理器PE2、PE3、…、PE7的溢出控制器可以仅包括图8中示出的溢出控制器860的配置中的选择器863。所述第二至第七处理器PE2、PE3、…、PE7的选择器可以被配置成从所述第一处理器PE1的计数寄存器分别或者依次接收计数值,并且可以根据所述计数值分别输出存储在输出存储器中的运算值和0中的一个。
图9是示出根据本发明的实施例的共用累加器900的配置的图。参照图9,所述共用累加器900可以应用图7中示出的共用累加器710。所述共用累加器900可以包括控制器910、选择器920、存储器930和加法器940。所述控制器910可以基于与所述共用累加器900连接的多个处理器的相加次数是否达到所述阈值来生成选择信号SEL<0:6>、命令信号CMD和地址信号ADD。所述选择信号SEL<0:6>可以包括多个位,并且所述选择信号SEL<0:6>的位数可以对应于所述共用累加器900所连接的处理器的数量。参照图7,将所述共用累加器900与7个处理器连接的情况作为示例进行描述。所述控制器910可以基于第一至第七处理器PE1、PE2、PE3、…、PE7的相加次数是否达到所述阈值来使能(enable)所述选择信号SEL<0:6>的特定位。例如,在所述第一处理器PE1的相加次数达到阈值的单位周期中,所述控制器910可以使能所述选择信号的第一位SEL<0>。在所述第二处理器PE2的相加次数达到阈值的单位周期中,所述控制器910止能(disable)所述选择信号的第一位SEL<0>,并且可以使能所述选择信号的第二位SEL<1>。在所述第三至第七处理器PE3、…、PE7的相加次数依次达到阈值的周期中,所述控制器910止能所述选择信号SEL<0:6的位中先前被使能的位,并且可以分别使能第三至第七位SEL<2:6>。在所述第一处理器PE1重新溢出的单位周期中,所述控制器910止能所述选择信号的第七位SEL<6>,并且可以重新使能所述选择信号的第一位SEL<0>。所述控制器910可以基于所述第一至第七处理器PE1、PE2、PE3、…、PE7的相加次数是否达到所述阈值来生成用于访问(access)所述存储器930的命令信号CMD和地址信号ADD。详细内容将在后面描述。所述控制器910可以接收存储在图8中示出的溢出控制器860的计数寄存器863中的计数值CNT,并判断与所述共用累加器900连接的多个处理器是否溢出,其中所述溢出控制器860可以分别包括在所述第一至第七处理器PE1、PE2、PE3、…、PE7中或可以包括在所述第一处理器PE1中。
所述选择器920可以与所述第一至第七处理器PE1、PE2、PE3、…、PE7连接并接收从所述第一至第七处理器PE1、PE2、PE3、…、PE7输出的运算值OA1/OB1、OA2/OB2、OA3/OB3、…、OA7/OB7。所述选择器920可以接收所述选择信号SEL<0:6>并基于上述选择信号SEL<0:6>来选择从所述第一至第七处理器PE1、PE2、PE3、…、PE7输出的运算值OA1/OB1、OA2/OB2、OA3/OB3、…、OA7/OB7中的一个。当所述选择信号的第一位SEL<0>被使能时,所述选择器920可以接收从所述第一处理器PE1输出的运算值OA1/OB1。当所述选择信号的第二位SEL<1>被使能时,所述选择器920可以接收从所述第二处理器PE2输出的运算值OA2/OB2。当所述选择信号的第三至第七位SEL<2:6>分别被使能时,所述选择器920可以分别接收从所述第三至第七处理器PE3、…、PE7输出的运算值OA3/OB3、…、OA7/OB7。
所述存储器930可以从所述控制器910接收所述命令信号CMD和所述地址信号ADD,并且可以基于上述命令信号CMD和所述地址信号ADD来存储所述第一至第七运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7。所述命令信号CMD可以包括读命令信号RD和写命令信号WT。所述存储器930可以包括用于存储所述第一至第七运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7的第一至第七存储空间931、932、933、…、937,并且所述第一至第七存储空间931、932、933、…、937可以基于彼此不同的地址信号来被访问。每当所述第一至第七处理器PE1、PE2、PE3、…、PE7溢出时,所述控制器910可以依次生成所述读命令信号RD和所述写命令信号WT,并且可以生成用于分别访问所述第一至第七存储空间931、932、933、…、937的彼此不同的地址信号。所述存储器930可以基于所述读命令信号RD和所述地址信号ADD输出存储在所述第一至第七存储空间931、932、933、…、937中的第一至第七运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7中的一个。
所述加法器940可以将从所述选择器920输出的运算值和对应于从所述存储器930读取的运算信息的值相加。所述加法器940可以将通过所述选择器920接收的从溢出的处理器输出的运算值和对应于从与所述处理器对应的存储空间读取的运算信息的值相加。所述加法器940可以将所述第一至第七处理器PE1、PE2、PE3、…、PE7的第一输入信号(即,第一处理器PE1的第一输入信号INA1、第二处理器PE2的第三输入信号INA2、第三处理器PE3的第五输入信号INA3、第七处理器PE7的第十三输入信号INA7)的运算值OA1、OA2、OA3、…、OA7和对应于读取的所述运算信息中的与所述第一输入信号相关的运算信息SA1、SA2、SA3、…、SA7的值分别相加。所述加法器940可以将所述第一至第七处理器PE1、PE2、PE3、…、PE7的第二输入信号(即,第一处理器PE1的第二输入信号INB1、第二处理器PE2的第四输入信号INB2、第三处理器PE3的第六输入信号INB3、第七处理器PE7的第十四输入信号INB7)的运算值OB1、OB2、OB3、…、OB7和对应于读取的所述运算信息中的与所述第二输入信号相关的运算信息SB1、SB2、SB3、…、SB7的值分别相加。所述存储器930可以基于所述写命令信号WT将所述加法器940的输出存储在对应于所述地址信号ADD的存储空间中,从而可以更新存储在所述第一至第七存储空间931、932、933、…、937中的第一至第七运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7。
当所述运算电路的运算操作结束时,所述控制器910可以多次生成所述读命令信号RD,并且可以依次生成用于访问所述第一至第七存储空间931、932、933、…、937的地址信号ADD。所述存储器930可以基于多个所述读命令信号RD和用于访问所述第一至第七存储空间931、932、933、…、937的地址信号ADD依次输出存储在第一至第七存储空间931、932、933、…、937中的第一至第七运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7。所述第一至第七运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7中的与第一至第七处理器PE1、PE2、PE3、…、PE7的第一输入信号相关的运算信息SA1、SA2、SA3、…、SA7可以作为第一输出信号OUTA输出,所述第一至第七运算信息SA1/SB1、SA2/SB2、SA3/SB3、…、SA7/SB7中的与第一至第七处理器PE1、PE2、PE3、…、PE7的第二输入信号相关的运算信息SB1、SB2、SB3、…、SB7可以作为第二输出信号OUTB输出。
图10是示出根据本发明的实施例的运算电路的操作的时序图。下面将参照图6至图10描述根据本发明的实施例的运算电路的操作。构成所述运算电路的多个处理器可以接收具有第二精度的两个输入信号,并且可以同时对两个输入信号执行MAC运算。输入到各个处理器的输入信号的位数为8,保护位的数量为2,当所述输入信号是-128与127之间的整数时,一个处理器可以执行7次MAC运算,直到所述处理器溢出,并且七个处理器可以与一个共用累加器连接以执行MAC运算。下面,如图7所示,将第一至第七处理器PE1、PE2、PE3、…、PE7与共用累加器710或900连接的运算电路的操作作为示例进行说明。
当第一时钟信号CLK1在第一单位周期中被切换(toggle)时,所述第一处理器PE1可以接收第一输入信号INA1、第二输入信号INB1和权重信号W。所述第一处理器PE1可以将所述第一输入信号INA1和所述权重信号W相乘,并且可以将所述第二输入信号INB1和所述权重信号W相乘。
当第二时钟信号CLK2在第二单位周期中被切换时,所述第一处理器PE1可以新接收所述第一输入信号INA1、所述第二输入信号INB1和所述权重信号W,并且可以将在所述第一单位周期中输入的权重信号W传送到所述第二处理器PE2。所述第二处理器PE2可以接收第三输入信号INA2、第四输入信号INB2和从所述第一处理器PE1传送的权重信号W。所述第一处理器PE1可以存储在第一单位周期中相乘的运算值。所述第一处理器PE1可以将在第一单位周期中相乘的运算值和先前存储的运算值即0相加,并且可以将相加的运算值ACC11存储在输出寄存器中。所述第一处理器PE1可以将所述第一输入信号INA1和所述权重信号W相乘,并且可以将所述第二输入信号INB1和所述权重信号W相乘。所述第二处理器PE2可以将所述第三输入信号INA2和所述权重信号W相乘,并且可以将所述第四输入信号INB2和所述权重信号W相乘。
当第三时钟信号CLK3在第三单位周期中被切换时,所述第一处理器PE1可以新接收所述第一输入信号INA1、所述第二输入信号INB1和所述权重信号W,并且可以将在所述第二单位周期中输入的权重信号W传送到所述第二处理器PE2。所述第二处理器PE2可以新接收所述第三输入信号INA2、所述第四输入信号INB2,并且可以将在所述第二单位周期中输入的权重信号W传送到所述第三处理器PE3。所述第三处理器PE3可以接收第五输入信号INA3、第六输入信号INB3和从所述第二处理器PE2传送的权重信号W。所述第一处理器PE1可以将在第二单位周期中相加的运算值ACC11和在第三单位周期中相乘的运算值相加,并且可以将相加的运算值ACC12存储在输出寄存器中。所述第一处理器PE1可以将所述第一输入信号INA1和所述权重信号W相乘,并且可以将所述第二输入信号INB1和所述权重信号W相乘。所述第二处理器PE2可以存储在第二单位周期中相乘的运算值。所述第二处理器PE2可以将在第二单位周期中相乘的运算值和先前存储的运算值即0相加,并且可以将相加的运算值ACC21存储在输出寄存器中。所述第二处理器PE2可以将所述第三输入信号INA2和所述权重信号W相乘,并且可以将所述第四输入信号INB2和所述权重信号W相乘。所述第三处理器PE3可以将所述第五输入信号INA3和所述权重信号W相乘,并且可以将所述第六输入信号INB3和所述权重信号W相乘。
当第四至第八时钟信号CLK4、CLK5、CLK6、CLK7、CLK8在第四至第八单位周期中被切换时,所述第一至第七处理器PE1、PE2、PE3、…、PE7可以分别对接收的输入信号和接收的权重信号执行MAC运算以更新运算值。存储在所述第一处理器PE1的输出寄存器中的运算值可以依次被更新为ACC13、ACC14、ACC15、ACC16、ACC17,存储在所述第二处理器PE2的输出寄存器中的运算值可以依次被更新为ACC22、ACC23、ACC24、ACC25、ACC26,存储在所述第三处理器PE3的输出寄存器中的运算值可以依次被更新为ACC31、ACC32、ACC33、ACC34、ACC35。在所述第八单位周期中,所述第七处理器PE7可以接收第十三输入信号INA7、第十四输入信号INB7和从所述第六处理器传送的权重信号W。所述第七处理器PE7可以将所述第十三输入信号INA7和所述权重信号W相乘,并且可以将所述第十四输入信号INB7和所述权重信号W相乘。在所述第八单位周期中存储在所述第一处理器PE1的输出寄存器中的运算值ACC17可以被输出到所述共用累加器900。所述共用累加器900的控制器910可以基于从所述第一处理器PE1的计数寄存器传送的计数值使能所述选择信号的第一位SEL<0>,依次生成读命令信号RD和写命令信号WT,并生成用于访问所述第一存储空间931的地址信号ADD。所述选择器920可以与所述第一处理器PE1连接以接收从所述第一处理器PE1的输出寄存器输出的运算值ACC17。所述存储器930可以基于所述读命令信号RD和所述地址信号ADD输出存储在第一存储空间931中的第一运算信息SA1/SB1。所述第一运算信息SA1/SB1可以对应于0,并且所述加法器940可以将0和接收的所述运算值ACC17相加。所述存储器930可以基于所述写命令信号WT和所述地址信号ADD将所述加法器940的输出作为第一运算信息SA1/SB1存储在所述第一存储空间931中。
当第九时钟信号CLK9在所述第九单位周期中被切换时,所述第一处理器PE1可以新接收第一输入信号INA1、第二输入信号INB1和所述权重信号W。存储在所述第一处理器PE1的计数寄存器中的计数值可以变为9,并且所述第一处理器PE1的选择器可以输出0而不是存储在输出寄存器中的先前运算值ACC17。所述第一处理器PE1可以将所述第一输入信号INA1和所述权重信号W相乘,并且可以将所述第二输入信号INB1和所述权重信号W相乘。所述第一处理器PE1的加法器可以将在第八单位周期中相乘的运算值和从所述选择器输出的0相加,并且可以将相加的运算值ACC11’存储在所述第一处理器PE1的输出寄存器中。在所述第九单位周期中存储在所述第二处理器PE2的输出寄存器中的先前运算值ACC27可以被输出到所述共用累加器900。所述共用累加器900的控制器910可以基于从所述第一处理器PE1或所述第二处理器PE2的计数寄存器传送的计数值使能所述选择信号的第二位SEL<1>,依次生成读命令信号RD和写命令信号WT,并生成用于访问所述第二存储空间932的地址信号ADD。所述选择器920可以与所述第二处理器PE2连接以接收从所述第二处理器PE2的输出寄存器输出的运算值ACC27。所述存储器930可以基于所述读命令信号RD和所述地址信号ADD输出存储在第二存储空间932中的第二运算信息SA2/SB2。所述第二运算信息SA2/SB2可以对应于0,并且所述加法器940可以将0和接收的所述运算值ACC27相加。所述存储器930可以基于所述写命令信号WT和所述地址信号ADD将所述加法器940的输出作为第二运算信息SA2/SB2存储在所述第二存储空间932中。
当第十时钟信号CLK10在第十单位周期中被切换时,所述第二处理器PE2可以新接收第三输入信号INA2、第四输入信号INB2并且从所述第一处理器PE1新接收所述权重信号W。存储在所述第二处理器PE2的计数寄存器中的计数值可以变为9,并且所述第二处理器PE2的选择器可以输出0而不是存储在输出寄存器中的先前运算值ACC27。所述第二处理器PE2可以将所述第三输入信号INA2和所述权重信号W相乘,并且可以将所述第四输入信号INB2和所述权重信号W相乘。所述第二处理器PE2的加法器可以将在所述第九单位周期中相乘的运算值和从所述选择器输出的0相加,并且可以将相加的运算值ACC21’存储在所述第二处理器PE2的输出寄存器中。在所述第十单位周期中存储在所述第三处理器PE3的输出寄存器中的先前运算值ACC37可以被输出到所述共用累加器900。所述共用累加器900的控制器910可以基于从所述第一处理器PE1或所述第三处理器PE3的计数寄存器传送的计数值使能所述选择信号的第三位SEL<2>,依次生成读命令信号RD和写命令信号WT,并生成用于访问所述第三存储空间933的地址信号ADD。所述选择器920可以与所述第三处理器PE3连接以接收从所述第三处理器PE3的输出寄存器输出的运算值ACC37。所述存储器930可以基于所述读命令信号RD和所述地址信号ADD输出存储在第三存储空间933中的第三运算信息SA3/SB3。所述第三运算信息SA3/SB3可以对应于0,并且所述加法器940可以将0和接收的所述运算值ACC37相加。所述存储器930可以基于所述写命令信号WT和所述地址信号ADD将所述加法器940的输出作为第三运算信息SA3/SB3存储在所述第三存储空间933中。
当第十一时钟信号CLK11在第十一单位周期中被切换时,所述第三处理器PE3可以新接收第五输入信号INA3、第六输入信号INB3并且从所述第二处理器PE2新接收所述权重信号W。存储在所述第三处理器PE3的计数寄存器中的计数值可以变为9,并且所述第三处理器PE3的选择器可以输出0而不是存储在输出寄存器中的先前运算值ACC37。所述第三处理器PE2可以将所述第五输入信号INA3和所述权重信号W相乘,并且可以将所述第六输入信号INB3和所述权重信号W相乘。所述第三处理器PE3的加法器可以将在所述第十单位周期中相乘的运算值和从所述选择器输出的0相加,并且可以将相加的运算值ACC31’存储在所述第三处理器PE3的输出寄存器中。
当第十四时钟信号CLK14在第十四单位周期中被切换时,从所述第七处理器PE7输出的运算值ACC77可以作为所述共用累加器的第七运算信息SA7/SB7存储在第七存储空间937中。
当第十五时钟信号CLK15在第十五单位周期中被切换时,可以将存储在所述第一处理器PE1的输出寄存器中的先前运算值ACC17’输出到所述共用累加器900。所述共用累加器900的控制器910可以基于从所述第一处理器PE1的计数寄存器传送的计数值使能所述选择信号的第一位SEL<0>,依次生成读命令信号RD和写命令信号WT,并生成用于访问所述第一存储空间931的地址信号ADD。所述选择器920可以与所述第一处理器PE1连接以接收从所述第一处理器PE1的输出寄存器输出的运算值ACC17’。所述存储器930可以基于所述读命令信号RD和所述地址信号ADD输出存储在第一存储空间931中的第一运算信息SA1/SB1。所述加法器940可以将对应于存储在所述第一存储空间931中的所述第一运算信息SA1/SB1的值ACC17和接收的所述运算值ACC17’相加。所述存储器930可以基于所述写命令信号WT和所述地址信号ADD将相加的值ACC17+ACC17’作为新的第一运算信息SA1/SB1存储在所述第一存储空间931中。
在第十六单位周期中,存储在所述第一处理器PE1的计数寄存器中的计数值可以变为16,并且所述第一处理器PE1的选择器可以输出0而不是存储在输出寄存器中的先前运算值ACC17’。所述第一处理器PE1可以对所述第一输入信号INA1和所述权重信号W执行MAC运算,并且可以对所述第二输入信号INB1和所述权重信号W执行MAC运算。所述第一处理器PE1的加法器可以将通过执行所述MAC运算而生成的运算值和从所述选择器输出的0相加,并且可以将相加的运算值ACC11”存储在所述第一处理器PE1的输出寄存器中。在所述第十六单位周期中,所述共用累加器900可以将从所述第二处理器PE2输出的运算值ACC27’和对应于存储在所述第二存储空间932中的所述第二运算信息ACC27的值相加,并且可以用相加的值ACC27+ACC27’更新所述第二运算信息SA2/SB2。
所述第一至第七处理器PE1、PE2、PE3、…、PE7可以执行对应于阈值的次数的相加后将运算值输出到共用累加器900。所述共用累加器900可以依次与所述第一至第七处理器PE1、PE2、PE3、…、PE7连接,并且可以从所述第一至第七处理器PE1、PE2、PE3、…、PE7接收运算值以更新对应于各个处理器的运算信息。因此,本发明的实施例中一个处理器可以对具有低精度的多个输入信号执行MAC运算,从而可以增加运算电路的效率和性能。各个处理器的输出寄存器包括保护位,从而可以防止在所述输出寄存器的存储空间中各个处理器的第二输入信号的运算值影响第一输入信号的运算值。可通过调节所述保护位的数量来调节与一个共用累加器连接的处理器的数量,因此可以构成具有有效面积的运算电路。同时,可以降低处理相同的数据量所需的时间和电力。
本领域技术人员将理解,由于本发明在不改变其技术思想和必要特征的情况下可以以其他具体形式实施,因此上述的实施例在所有方面仅仅是示例性的而非限制性的。本发明的范围由权利要求书而不是说明书的描述来限定,并且权利要求书的含义和范围以及从其等同概念导出的所有改变或变形形式均包括在本发明的范围。