集成FPGA和人工智能模块的系统芯片及设计方法与流程

文档序号:17925772发布日期:2019-06-15 00:24阅读:165来源:国知局
集成FPGA和人工智能模块的系统芯片及设计方法与流程

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



背景技术:

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

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



技术实现要素:

根据第一方面,提供一种系统芯片,包括:ai模块,包括排列成二维阵列的多个处理单元,各处理单元能够完成逻辑和/或乘加运算;fpga模块;接口模块,用于将fpga模块和ai模块连通;其中,ai模块和fpga模块具有各自的绕线资源。

优选地,ai模块嵌入fpga模块中并且采用fpga模块的部分绕线结构作为自身的绕线结构。

优选地,ai模块包括设置在输入侧/方的输入复用器,用于将相对侧/方的第二边缘处理单元的输出耦合到输入侧/方的第一边缘处理单元。

优选地,第一边缘处理单元和第二边缘处理单元位于同一行/列。

优选地,第一边缘处理单元和第二边缘处理单元分别属于相邻的行/列。

优选地,接口模块包括绕线(xbar)模块,用于提供ai模块的输入和/或输出端到fpga模块的耦合。

优选地,接口模块包括fifo模块,用于将ai模块的输入和/或输出端耦合到fpga模块的绕线模块(xbar)上;fifo模块的写、读时钟各自对应于fpga模块与ai模块。

优选地,接口模块包括同步器,用于将ai模块的输入端和/或输出端与fpga模块的绕线模块耦合在一起。

优选地,接口模块是fpga内带的接口模块。

优选地,处理单元包括:第一输入复用器和第二输入复用器,用于各自接收沿第一维度和第二维度不同方向的输入数据,并且第一输入复用器选通至少一个数据,送入可编程功能单元的输入端,第二输入复用器选通至少一个数据,送入可编程功能单元的另一个输入端;可编程功能单元,用于对第一输入复用器和第二输入复用器分别选通的数据进行逻辑和/或算法运算;然后,该运算结果寄存在寄存器中;输出复用器,用于对寄存器中寄存的运算结果和第一输入复用器所选通的输入数据进行选通输出,该输出可以沿第一维度和第二维度不同方向输出。

优选地,fpga模块为输入和/或输出ai模块的数据提供流水线寄存器、数据信号的对齐,数据排列,数据复用功能。

根据第二方面,提供一种fpga系统芯片的设计方法,该方法包括:设计fpga模块并且进行布局布线;所述fpga模块包括多个绕线模块;设计ai模块并且进行综合优化;确定ai模块嵌入在fpga模块中的位置并且保留在所述位置处的fpga模块原有的绕线模块,去除所述位置处的fpga模块的功能单元;利用标准单元库经由自动布局布线实现ai模块的布局布线。

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

附图说明

图1是根据本发明实施例的系统芯片的结构示意图;

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

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

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

图5是另一种人工智能模块的结构示意图;

图6是又一种人工智能模块的结构示意图;

图7示意了一种在fpga阵列中嵌入ai模块的方法的示意图。

具体实施方式

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

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

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

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

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

fpga模块和ai模块通过接口模块连通,以便交换信号或数据。接口模块可以是额外的电路模块,也可以是fpga内带的接口模块,或者同时有两者。

接口模块可以是xbar模块,xbar模块例如由多个选择器(multiplexer)和选择位元组成。

接口模块也可以是fifo(先进先出)。fpga模块与人工智能模块可以由不同步的时钟clk1,clk2分别驱动,俩者分属不同时钟域。信号穿越时钟域时需要经过同步。人工智能模块的输出/输入端经由fifo(先进先出)连接到相邻fpga模块内的绕线资源的xbar上。

接口模块也可以是同步器。在一个例子中,同步器由2个触发器(flip-flop或ff)串连而成;在从fpga到ai模块的数据流动的情况下,数据从fpga模块的工作在clk1下的某个寄存器输出,然后经工作在与ai模块相同工作时钟clk2下的两个触发器输出到ai模块;在从相反方向的从ai到fpga模块的数据流动的情况下,数据从ai模块的工作在clk2下的某个寄存器输出,然后经工作在与fpga模块相同工作时钟clk1下的两个触发器输出到fpga模块。

fpga模块可以为ai模块传输数据,提供控制。

fpga模块可以包含有可配置的输出、输入管脚(可配置输入/输出,conf.io),根据需要配置成系统所需的输出或输入。

ai模块可以含有固定功能的输出(或输入)固定输入/输出(fixio)。另,也可包含可配置的输入输出(configurableio)。

fpga模块与ai模块亦可共享片上的其它资源,如处理器、存储、接口、时钟、特殊io、各种片上外设、配置和测试电路。

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

ai模块一般需要大量的数据输入/输出信号来满足其高带宽的数据处理能力。fpga模块在其四周边界拥有非常大量的绕线点,可以当做fpga的输出/输入点。将fpga与ai模块集成在同一芯片上时,ai模块的输出/输入信号可以很好的找到相应的fpga连接点。fpga可以高速提供大量的数据到ai模块,配合其高带宽处理能力。

虽然图中示意了一个fpga模块和一个ai模块,但是这仅是示例。系统芯片可以包括不止一个fpga模块和/或不止一个人工智能模块。

图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内所有模块相连。

fpga模块可实现逻辑、计算、控制等各种功能。

可以利用fpga内自带的emb模块或lram(localram)模块来实现图1所示的fifo。

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

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

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

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

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

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

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

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

pe内部的信号宽度为32。亦可根据系统设计需要而选8或16。

将fpga和ai模块整合在同一芯片上,可以降低成本,减少功耗,减少系统体积。此外,尚有如下优点。

首先,ai模块一般需要大量的数据输入/输出信号来满足其高带宽的数据处理能力。fpga模块在其四周边界拥有非常大量的绕线点,可以当fpga模块的输出/输入点。将fpga与ai模块集成在同一芯片上时,ai模块的输出/输入信号可以很好的找到相应的fpga连接点。fpga可以高速的提供大量的数据到ai模块,配合其高带宽处理能力。

同时,fpga模块亦可提供一些配合ai模块功能的操作,如加入流水线寄存器,数据信号的对齐(dataalignment),数据排列(dataqueuing),数据的复用器(datamultiplexer)等功能都可以在fpga内实现,保障ai模块的数据处理能力。

图5是另一种人工智能模块的结构示意图。图5不同于图3的地方在于,在图5中,ai模块具有绕回能力(wrap-around)。具体地说,ai模块在输入侧添加了输入复用器。在一个例子中,在阵列的上方的各边缘pe处添加输入复用器,使得最下方的位于同一列的各边缘pe的输出(即图4中的o)直接耦合到上方的各边缘pe的输入端(即图4中的n)。如此,ai模块的运算结果可以重新输入到同一个ai模块中继续进行运算,由此扩充了阵列的计算能力。

同样,在阵列的左侧的各边缘pe处添加输入复用器,使得最右侧的位于同一行的各边缘pe的输出(即图4中的o)直接耦合到左侧的各边缘pe的输入端(即图4中的w)。

同样,可以在阵列的下方和/或右侧的各边缘pe处设置输入复用器,使得ai模块的计算能力得以扩充。

在一个例子中,可以配置fpga模块,使得在fpga模块中实现上述输入复用器。

图6是又一种人工智能模块的结构示意图。图6不同于图5的地方在于,边缘pe的输出不是返回相反侧/方的同一行/列的边缘pe的输入端,而是返回相反侧/方的相邻行/列的边缘pe的输入端。例如,第一列下方的边缘pe的输出耦合到第二列上方的边缘pe的输入端。

图7示意了一种在fpga阵列中嵌入ai模块的方法的示意图。如图7所示,fpga模块的结构如图2,不同的仅在于在fpga模块的中心处仅保留了绕线(xbar)部分,其它的部分如logic功能被pe模块所取代。fpga与ai阵列的绕线结构xbar保持不变。每个pe范围内可有多个xbar,pe实现不影响xbar结构。换句话说,ai模块和fpga模块有相同的绕线结构,并且共享绕线资源。

在一个实施例中,提供一种fpga系统芯片的设计方法,其特征在于,设计fpga模块并且进行布局布线;所述fpga模块包括多个绕线模块;设计ai模块并且进行综合优化;确定ai模块嵌入在fpga模块中的位置并且保留在所述位置处的fpga模块原有的绕线模块,去除所述位置处的fpga模块的功能单元;利用标准单元库经由自动布局布线实现ai模块的布局布线。

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

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