单元具有本地累加功能的人工智能模块及系统芯片的制作方法

文档序号:17994944发布日期:2019-06-22 01:07阅读:153来源:国知局
单元具有本地累加功能的人工智能模块及系统芯片的制作方法

本发明涉及集成电路技术领域,尤其涉及一种处理单元具有本地累加功能的人工智能ai模块及包括该ai模块的系统芯片。



背景技术:

脉动阵列(systolicarray),本意在于是让数据在运算单元的阵列中进行流动,减少访存的次数,并且使得结构更加规整,布线更加统一,提高频率。脉动阵列这个概念在1982年就已经提出了,最近由于人工智能芯片采用该结构作为计算的核心结构,而重新得到了关注。

随着人工智能研究的深入和应用的广泛推广,有必要推出更符合需求的ai模块。

此外,人工智能模块由处理单元通过总线来进行访问控制,而总线是有一定的带宽限制,这样的架构难以适应人工智能ai模块的大带宽需求。



技术实现要素:

根据第一方面,本发明实施例提供一种芯片电路,该芯片电路包括ai模块,所述ai模块包括:按第一维度和第二维度排列成二维阵列的多个处理单元,各处理单元能够完成乘加运算;其中,处理单元包括使能输入端,用于接收使能信号,并且根据使能信号暂停或启动处理单元的操作;处理单元在控制信号的作用下,能够对乘积进行累加;二维阵列中的各处理单元共用同一个时钟信号进行运算;第一维度和第二维度彼此垂直。

在第一方面的一种实施方式中,处理单元包括系数存储器,用于提供处理单元运算用系数数据;处理单元包括乘法器、加法器、第一寄存器(reg1)、第二寄存器和复用器;在第一维度上的第一输入数据端和第一数据输出端;在第二维度上的第二数据输入端和第二数据输出端;第一数据自第一数据输入端口输入,乘法器将第一数据和系数数据相乘;复用器从来自第二数据输入端的第二数据和第一寄存器的输出数据中选择一个数据输出,加法器将该复用器的输出数据和乘积相加,相加之后的和值寄存在第一寄存器中;和值在时钟控制下可以经第二数据输出端输出;第一数据还寄存在第二寄存器中,并且在时钟控制下可以经第一输出端输出。

在第二方面中,本发明实施例提供一种系统芯片,包括:如第一方面所述的芯片电路;fpga模块,与所述ai模块耦合,以便自ai模块发送数据或者接收数据。

在第二方面的实施方式中,ai模块包括第一处理单元、第二处理单元和第三处理单元;其中第一处理单元和第二处理单元沿第一维度相邻排列,第一处理单元的第二输出端耦合到第二处理单元的第一输入端;第一处理单元和第三处理单元沿第二维度相邻排列,第一处理单元的第一输出端耦合到第三处理单元的第二输入端。

在又一个实施方式中,ai模块嵌入fpga模块中以便复用fpga模块的绕线架构,以便自ai模块发送数据或者接收数据,皆经由所述的复用的fpga的绕线架构。

在实施例中,由于各处理单元中对历次运算结果进行累加,由此,可以有效减少ai模块的规模。

附图说明

图1是根据本发明实施例的2维ai模块的示意图;

图2是处理单元的示意图;

图3是图2的处理单元中的存储器mem的示意图;

图4是2维脉动阵列处理数据的示意图;

图5是一种集成有fpga和ai模块的系统芯片的结构示意图;

图6是fpga电路的结构示意图。

具体实施方式

为使本发明实施例的技术方案以及优点表达的更清楚,下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

在本申请的描述中,术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。

图1是根据本发明实施例的2维ai模块的示意图。在一个例子中,ai模块是脉动阵列,脉动阵列是数据流同步流过相邻的二维阵列单元的处理单元结构。如图1所示,脉动阵列包括,例如,4x4个处理单元pe。脉动阵列可分为两个维度,彼此垂直的第一维度和第二维度。以第一处理单元、第二处理单元和第三处理单元为例,第一处理单元和第二处理单元沿第一维度沿第一方向排列,第一处理单元的第一输出端耦合到第二处理单元的第一输入端;第一处理单元和第三处理单元沿第二维度沿第二方向排列,第一处理单元的第二输出端耦合到第三处理单元的第二输入端。

一维数据a可以沿第一维度沿第一方向在同一时钟下依次输入相同第二维度值的各处理单元;数据在各处理单元中和存储在单元中的另一维数据(系数)w相乘;乘积沿第二维度沿第二方向的各处理单元传输,并且彼此相加。为理解方便起见,下文将以水平维度为第一维度、左向右为第一方向,以垂直维度为第二维度、上向下为第二方向。

需要注意,图1中的每条数据线既可代表单比特的信号,也可代表8(或16,32)比特的信号。

处理单元配置有使能信号en输入端,用于接收使能信号en,并且根据该使能信号en,启动或暂停处理单元的处理进程。二维阵列中的各处理单元共用同一个时钟信号进行运算。

处理单元在控制信号的作用下,能够对乘积进行累加。控制信号可以包括使能信号en、复用器的选择控制信号等等。由于可以在各单元中对历次运算结果进行累加,故此可以有效减少ai模块的规模。

在一个例子中,二维阵列可以实现矩阵乘法。在另一个例子中,二维阵列可以实现卷积算法。

图2是处理单元的示意图。如图2所示,处理单元包括乘法器mul,加法器add。数据自第一数据输入端口di输入,在mul和存储在系数存储器mem中的系数w相乘,然后,该乘积在加法器add和来自第二数据输入端口pi的数据p相加,相加之后的和值寄存在寄存器reg1中。在下一个时钟时,和值s经第一输出端po输出。和值s经第一输出端po输出后可以经输入端口pi输入位于下方的另一个pe。第一输入数据端di和第一数据输出端do沿第一方向分布在第一维度上;第二数据输入端pi和第二数据输出端po沿第二方向分布在第二维度上。

在一个例子中,处理单元还包括复用器mux,该mux根据控制信号从第二数据输入端pi的数据p和reg1的输出信号中选择一个,以便送入加法器add。处理单元在控制信号的作用下,能够对乘积进行累加。基于这样的内部反馈机制,可以在同一个处理单元中进行乘积累加,由此实施各种类型的ai运算。

当然,数据a还可以寄存在寄存器reg2中,并且在时钟控制下经第二输出端do输出到在右侧的处理单元pe。

时钟ck用于控制处理单元的处理进程。

使能信号en用于启动或暂停处理单元的处理进程。

图3是图2的处理单元中的存储器mem的示意图。如图3所示,存储器包括8比特的d触发器,系数数据从d输入端输入触发器,然后经输出端q输出为q0-q7。时钟ck控制触发器的节奏。使能信号en用于确定d触发器是否启动或暂停。

图4是2维脉动阵列处理数据的示意图。如图4所示,4x4脉动阵列的左列包括4个处理单元,每个处理单元中存储的系数分别为w11,w12,w13,w14。可以暂以系数的标号指代处理单元。首先,假设处理单元的mux仅选通pi的输入数据。

数据从左侧输入。在第一个时钟,a11输入单元11,处理得到乘积p11=a11*w11。如果来自上方处理单元的p10不为0的话,则还需要计入p10的数值。

在第二个时钟,a11*w11自单元11下移至单元12;a21输入单元11,a12输入单元12;则单元11得到乘积a21*w11(或许还有这个时刻来自p10的乘积),单元12得到乘积a12*w12,并且输出a12*w12+a11*w11。

在第三个时钟,a21*w11自单元11下移至单元12、a12*w12+a11*w11自单元12下移至单元13;a31输入单元11,a22输入单元12,a13输入单元13;则单元11得到乘积a31*w11(或许还有这个时刻来自p10的乘积),单元12得到乘积a22*w12,并且输出a22*w12+a21*w11;单元13得到乘积a13*w13,并且输出a13*w13+a12*w12+a11*w11。

在第四个时钟,a31*w11自单元11下移至单元12,a12*w12+a11*w11自单元12下移至单元13,a13*w13+a12*w12+a11*w11自单元13下移至单元14;a41输入单元11,a32输入单元12,a23输入单元13,a14输入单元14;则单元11得到乘积a41*w11(或许还有这个时刻来自p10的乘积),单元12得到乘积a32*w12,并且输出a32*w12+a31*w11;单元13得到乘积a23*w13,并且输出a23*w13+a22*w12+a31*w11;单元14得到乘积a14*w14,并且输出a14*w14+a13*w13+a12*w12+a11*w11。

同理,单元24在第五个时钟的输出为a14*w24+a13*w23+a12*w22+a11*w21;单元34在第六个时钟的输出为a14*w34+a13*w33+a12*w32+a11*w31;单元44在第七个时钟的输出为a14*w44+a13*w43+a12*w42+a11*w41。

可以看出,单元14、24、34和44分别在第4、5、6、7时钟的输出可以看做为分别以aij为元素的a矩阵和wij为元素的w矩阵的矩阵乘积。

如果调整输入数据或者存储器中的系数数据,比如将aij置换为a[n-i][m-j],在置换后的数据的基础上进行矩阵乘积,所得乘积结果便是卷积。

结合图2所示的mux功能可知,在一个例子中,可以如下配置各处理单元的mux,即在前n个循环周期中,mux仅选通reg1的输出数值,在第n+1的循环周期中,mux仅选通pi的输入。那么,处理单元可以将前n个循环周期的运算结果进行累加,然后在后续的循环周期中将累加结果输出ai模块。如此,可以有效减少ai模块的规模。

图5是一种集成有fpga和ai模块的系统芯片的结构示意图。如图5所示,系统芯片上集成有至少一个fpga电路和至少一个ai模块。至少一个ai模块中,各ai模块可以是图1所示的ai模块。

至少一个fpga电路中,各fpga电路可实现逻辑、计算、控制等各种功能。fpga模块可实现逻辑、计算、控制等各种功能。fpga利用小型查找表(例如,16×1ram)来实现组合逻辑,每个查找表连接到一个d触发器的输入端,触发器再来驱动其他逻辑电路或驱动i/o,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到i/o模块。fpga的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与i/o间的联接方式,并最终决定了fpga所能实现的功能。

系统芯片上还设置有与二维卷积阵列相对应的接口,fpga模块和ai模块通过接口模块连通。接口模块可以是xbar模块,xbar模块例如由多个选择器(multiplexer)和选择位元组成。接口模块也可以是fifo(先进先出)。接口模块还可以是同步器(synchronizer),同步器例如由2个触发器(flip-flop或ff)串连而成。fpga模块可以为ai模块传输数据,提供控制。

fpga模块和ai模块可以并排放置,此时fpga模块可以为ai模块传输数据,提供控制;ai模块也可以嵌入fpga模块之中,此时ai模块需要复用fpga模块的绕线架构,以便通过复用的fpga模块的绕线架构接收和发送数据。

图6是fpga电路的结构示意图。如图6所示,fpga电路可包含有多个可编程逻辑模块(logic)、嵌入式存储块(emb)、乘累加器(mac)等模块和相应的绕线(xbar)。当然,fpga电路还设有时钟/配置模块(主干spine/支干seam)等相关资源。若需要emb或mac模块时,因其面积比plb大许多,故以此emb/mac模块取代若干plb模块。

绕线资源xbar是各模块间互联的接点,均匀地分布在fpga模块内。fpga模块内所有的资源,plb、emb、mac、io相互之间的绕线都是经有一个相同的接口-绕线xbar单元来实现。由绕线方式来看,整个阵列是相同一致,整齐排列的xbar单元形成网格,将fpga内所有模块相连。

logic模块可以包含,例如,8个6输入查照表,18个寄存器。emb模块可以是,例如,36k比特或2个18k比特的存储单元。mac模块可以是,例如,25x18乘法器,或2个18x18乘法器。fpga阵列中logic、mac、emb各模块数量的占比并无限制,阵列的大小也根据需要,在设计时由实际应用决定。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1