连接FPGA和人工智能模块的系统芯片的制作方法

文档序号:18008984发布日期:2019-06-25 23:45阅读:633来源:国知局
连接FPGA和人工智能模块的系统芯片的制作方法

本发明涉及集成电路技术领域,尤其涉及一种连接系统芯片上fpga和人工智能模块的电路及系统芯片。



背景技术:

近年来,人工智能迎来一波发展浪潮。人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。

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



技术实现要素:

根据本发明实施例,提供一种系统芯片,包括:ai模块,包括排列成二维阵列的多个处理单元,各处理单元能够完成逻辑和/或乘加运算;fpga模块;绕线模块,用于提供ai模块的输入和/或输出端到fpga模块的耦合。

优选地,所述绕线模块位于fpga模块中。

优选地,在ai模块和fpga模块不相邻的情况下,所述绕线xbar模块位于ai模块的邻近区域中。

优选地,ai模块嵌入fpga模块中以便复用fpga模块的绕线资源,以便自ai模块发送数据或者接收数据,皆经由所述的复用的fpga的绕线资源。

将fpga与ai模块集成在同一芯片上时,ai模块的输出/输入信号可以很好的找到相应的fpga连接点。fpga可以高速的提供大量的数据到ai模块,配合其高带宽处理能力。

附图说明

图1是根据本发明实施例的连接fpga模块和人工智能模块的系统芯片的示意图;

图2是fpga电路的结构示意图;

图3是人工智能模块的结构示意图;

图4是处理单元的示意图。

具体实施方式

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

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

图1是根据本发明实施例的连接fpga模块和人工智能模块的系统芯片的示意图。如图1所示,系统芯片上集成有至少一个fpga模块和至少一个人工智能模块。

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

人工智能模块可实现或加速经预先选定的特定ai功能,包括人工智能(artificialintelligenceai),深度学习(deeplearningdl),机器学习(machinelearningml)等各种算法或加速算法中某一步骤的特定功能(如卷积convolution,矩阵matrix/张量运算tensoroperation等)。在一个例子中,人工智能(ai)部分包含由多个可编程功能模块(pfu)组成的阵列。

fpga模块和人工智能模块的大小并无限定,在设计时由实际应用决定。

在占用芯片布局方面,一般是安排fpga模块与人工智能模块相邻。fpga模块和ai模块可以并排放置,此时fpga模块可以为ai模块传输数据,提供控制。ai模块也可以嵌入fpga模块之中;比如,fpga模块较大,人工智能模块较小的情况时,亦可在大片的fpga模块中挖空一窗口,内置入人工智能模块;此时,ai模块需要复用fpga模块的绕线架构,以便通过复用的fpga模块的绕线架构接收和发送数据。

在实施例中,fpga模块内各资源plb、emb、mac、io相互之间的绕线都是经有绕线(例如,xbar)单元来实现。由绕线方式来看,整个阵列是相同一致,整齐排列的xbar单元形成网格,所有绕线都在这网格内由经由xbar完成。

ai模块的输出/输入连接到相邻fpga模块内的绕线资源的xbar上。ai模块在左侧的输出/输入通过fpga模块的虚拟io(virtualio)连接到左邻fpga在右侧的xbar上。ai模块在右侧的输出/输入直接连接到右侧fpga内在左侧的xbar上。

在ai模块上下皆不连fpga的情况时,可以在上方或下方的芯片区域内加入一些xbar,专供ai模块输出/输入连接之用。

在ai模块需要大量的数据输出/输入时,fpga拥有大量的xbar绕线资源,可以提供充足的互联资源。将fpga与ai模块集成在同一芯片上时,ai模块的输出/输入信号可以很好的找到相应的fpga连接点。fpga可以高速的提供大量的数据到ai模块,配合其高带宽处理能力。由此,根据本发明的系统芯片具有良好的伸缩性,不受总线带宽的限制。

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

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

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

图3是人工智能模块的结构示意图。如图3所示,人工智能ai模块是一个二维阵列并且包括,例如,4x4个处理单元pe。ai模块可分为两个维度,彼此垂直的第一维度和第二维度。以第一处理器、第二处理器和第三处理器为例,第一处理器和第二处理器沿第一维度沿第一方向排列,第一处理器的第一输出端耦合到第一处理器的第一输入端;第一处理器和第三处理器沿第二维度沿第二方向排列,第一处理器的第二输出端耦合到第三处理器的第二输入端。

数据a可以沿第一维度双向流动;例如,既可以在同一时钟下沿第一方向依次输入具有相同第二维度值的各处理单元,也可以沿第一方向的相反方向依次输入具有相同第二维度值的各处理单元;可以在第二维度双向流动,例如,既可以在同一时钟下沿第二方向依次输入具有相同第一维度值的各处理单元,也可以沿第二方向的相反方向依次输入具有相同第一维度值的各处理单元。当然,通过控制,同一个数据或者由其衍生的数据可以在不同的时钟下流经所有的pe单元。为理解方便起见,下文将以水平维度为第一维度、左向右为第一方向,以垂直维度为第二维度、上向下为第二方向。

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

在输入处理单元后,数据在处理单元中进行各种运算,例如加减乘除,逻辑运算等等。

在一个例子中,人工智能模块可以实现矩阵乘法。在另一个例子中,二维阵列可以实现卷积算法。

图4是处理单元的示意图。如图4所示,处理单元(pe)包括可编程功能单元(programmablefunctionalunit,pfu)。处理单元可以设置至少一个imux(例如,imux1和imux2),以及一个omux。imux1和imux2接收相同的输入数据,即来自第一维度和第二维度不同方向(例如,东南西北四个方向)的输入数据e、s、w、n。imux1可以选通至少一路数据,送入pfu的一个输入端;imux2可以选通至少一路数据,送入pfu的另一个输入端。当然,pfu可以有两个以上的输入端,因此imux的数量可以是多于两个,或者imux1和imux各自可以提供多于一路的数据给pfu。

pfu实现pe的功能,一般包括逻辑、乘法、加法等运算,比如乘、加、减、计数(加一、减一)、异或xor、移位shift、旋转rotate、比较等等。在pfu,对输入的数据进行运算;然后,该运算结果寄存在寄存器reg中。在下一个时钟ck时,运算结果经omux输出。omux可以有东南西北四个方向的输出。在选通信号的控制下,omux选择相应的方向输出运算结果,用以当作四个相邻pe的输入数据。

此外,imux1的输出端还耦合到omux的一个输入端。因此,可以将imux1所选通的数据直接经omux选通输出。这样的操作,实际上实现了跳线功能,用以跳过当前pe的处理功能,由选定的输入直接送到输出。跳线功能可以实现跨单元的运算,跳线功能有助于有针对性地对处理单元进行测试、也有助于将出错的处理单元进行隔离。

回到图1,xbar是fpga模块内各模块间绕线的主要资源,拥有多个输入、多个输出(譬如256输入、64输出)。通常,xbar由多个复用器(multiplexer)和选择位元组成,可以把任意一个输入端联到任意一个输出端。把ai模块的输出和/或输入信号直接连接到xbar后,继而可以耦合到fpga上的任意点,由此可以保证良好的绕通性。如此极大地增加ai模块与fpga模块的设计弹性。同时因xbar的数量大,可以很好的满足ai模块大量输出、输入信号连接的需求,有助于提升ai模块的处理带宽。

在一个例子中,在xbar垂直排列的情况下,ai模块的左、右二侧的相邻xbar垂直列可以很好的和ai模块左右侧的信号相连。在另一个例子中,由于在ai模块的上下侧的信号则没有明显的相连点,可以加入水平方向xbar,作为和ai模块在上、下侧的信号连接点。

fpga模块以阵列排列,每个xbar的绕线资源都一致。在一个实施例中,ai模块数据有多个bus。此时,这些xbar阵列可以对应每个bus中的同类信号,使得xbar阵列与ai模块的bus可以有序的互联,提升bus的性能。例如,o0-o7这一类的信号可以对应于同一个xbar或者相邻的xbar,e0-e7则对应于另一个xbar,其中o和e分别是图4中pe的e输入端和o输出端。

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

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