CN109766293A - 连接芯片上fpga和人工智能模块的电路和系统芯片 - Google Patents
连接芯片上fpga和人工智能模块的电路和系统芯片 Download PDFInfo
- Publication number
- CN109766293A CN109766293A CN201910103656.9A CN201910103656A CN109766293A CN 109766293 A CN109766293 A CN 109766293A CN 201910103656 A CN201910103656 A CN 201910103656A CN 109766293 A CN109766293 A CN 109766293A
- Authority
- CN
- China
- Prior art keywords
- module
- fpga
- fifo
- chip
- data
- 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.)
- Granted
Links
Landscapes
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种连接芯片上FPGA和人工智能AI模块的电路及系统芯片。在实施例中,系统芯片包括:AI模块,包括排列成二维阵列的多个处理单元,各处理单元能够完成逻辑和/或乘加运算;FPGA模块,经配置提供用于AI模块的数据或者接收来自AI模块的运算结果;FIFO模块,用于将AI模块的输入和/或输出端耦合到FPGA模块的绕线单元上;FIFO模块的写、读时钟各自对应于FPGA模块与AI模块。将FPGA与AI模块集成在同一芯片上时,AI模块的输出/输入信号可以很好的找到相应的FPGA连接点。FPGA可以高速提供大量的数据到AI模块,配合其高带宽处理能力。
Description
技术领域
本发明涉及集成电路技术领域,尤其涉及一种连接芯片上FPGA和人工智能模块的电路及系统芯片。
背景技术
近年来,人工智能迎来一波发展浪潮。人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。
当前,人工智能AI模块由处理器通过总线来进行访问控制,而总线是有一定的带宽限制,这样的架构难以适应AI模块的大带宽需求。
发明内容
根据本发明实施例,提供一种系统芯片,包括:AI模块,包括排列成二维阵列的多个处理单元,各处理单元能够完成逻辑和/或乘加运算;FPGA模块,经配置提供用于AI模块的数据或者接收来自AI模块的运算结果;FIFO模块,用于将AI模块的输入和/或输出端耦合到FPGA模块的绕线单元上;FIFO模块的写、读时钟各自对应于FPGA模块与AI模块。
优选地,所述FIFO模块由FPGA内自带的存储器模块模块实现。
优选地,FIFO包括使能功能,用于调整数据由FPGA输出到AI模块的打拍延时,或由AI模块输出到FPGA的打拍延时。
优选地,FIFO包括满或空标记,用于对FPGA模块和AI模块之间的数据进行缓冲控制。
优选地,AI模块嵌入FPGA模块中并且复用FPGA模块的绕线资源,以便自AI模块发送数据或者接收数据,皆经由所述的复用的FPGA的绕线资源。
优选地,FIFO写与读的时钟不同步。
优选地,所述FIFO写基于第一时钟频率,所述FIFO读基于第二时钟频率,第一时钟频率不等于第二时钟频率。
优选地,FIFO写基于第一位宽,FIFO读基于第二位宽,第一位宽不等于第二位宽。
使用FIFO可以有效地匹配人工智能模块的输入和FPGA模块输出数据流的速度,也可以匹配FPGA模块和人工智能模块的不同处理速度。
AI模块一般需要大量的数据输入/输出信号来满足其高带宽的数据处理能力。FPGA模块在其四周边界拥有非常大量的绕线点,可以当做FPGA的输出/输入点。将FPGA与AI模块集成在同一芯片上时,AI模块的输出/输入信号可以很好的找到相应的FPGA连接点。FPGA可以高速提供大量的数据到AI模块,配合其高带宽处理能力。
附图说明
图1是根据本发明实施例的连接FPGA和人工智能模块的系统芯片的示意图;
图2是FPGA电路的结构示意图;
图3是人工智能模块的结构示意图;
图4是处理单元的示意图。
具体实施方式
为使本发明实施例的技术方案以及优点表达的更清楚,下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
在本申请的描述中,术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“东”、“南”、“西”、“北”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
图1是根据本发明实施例的连接FPGA和人工智能模块的系统芯片的示意图。如图1所示,系统芯片上集成有至少一个FPGA模块和至少一个人工智能模块。
至少一个FPGA模块中各FPGA模块可实现逻辑、计算、控制等各种功能。FPGA利用小型查找表(例如,16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能。
至少一个人工智能模块中各人工智能模块可实现或加速经预先选定的特定AI功能,包括人工智能(Artificial Intelligence AI),深度学习(Deep Learning DL),机器学习(Machine Learning ML)等各种算法或加速算法中某一步骤的特定功能(如卷积Convolution,矩阵Matrix/张量运算Tensor Operation等)。人工智能(AI)部分包含由多个功能模块(FU)组成的阵列。
FPGA模块和人工智能模块的大小并无限定,在设计时由实际应用决定。
在占用芯片布局方面,一般是安排FPGA模块与人工智能模块相邻。FPGA模块和AI模块可以并排放置,此时FPGA模块可以为AI模块传输数据,提供控制。AI模块也可以嵌入FPGA模块之中;比如,FPGA模块较大,人工智能模块较小的情况时,亦可在大片的FPGA模块中挖空一窗口,内置入人工智能模块;此时,AI模块需要复用FPGA模块的绕线架构,以便通过复用的FPGA模块的绕线架构接收和发送数据。
在实施例中,人工智能模块的输出/输入端经由FIFO(先进先出)连接到相邻FPGA模块内的绕线资源的绕线单元(例如,XBAR)上。人工智能模块在左侧的输出/输入经由FIFO连接到左邻FPGA的右侧XBAR上。人工智能模块在右侧的输出/输入经由FIFO连接到右侧FPGA内左侧的XBAR上。FIFO模块的写、读时钟各自对应FPGA模块与AI模块。
在一个例子中,FIFO写、读的时钟不同步。FIFO写基于第一时钟频率,所述FIFO读基于第二时钟频率,第一时钟频率不等于第二时钟频率。
在一个例子中,FIFO写基于第一位宽,FIFO读基于第二位宽,第一位宽不等于第二位宽,以此调和AI模块和FPGA模块之间不同的操作速度。
FIFO可以用FPGA模块内的资源实现,所述资源例如是逻辑块内的小块存储(本地local RAM,分布式distributed RAM)或嵌入存储块EMB。亦可以在FPGA外,另外采用资源作FIFO。
使用FIFO可以有效地匹配人工智能模块的输入和FPGA模块输出数据流的速度,也可以匹配FPGA模块和人工智能模块的不同处理速度。此外,在异步FIFO的情况下,还可以匹配人工智能模块和FPGA模块俩者时钟域的相位。
当FPGA数据输入到FIFO太快,而AI模块处理不及,导致FIFO满溢时,可以暂停由FPGA来的数据,等AI模块处理好;FIFO不满时,再开始FPGA数据的输入到FIFO。反之,当FPGA模块的数据输入到FIFO太慢时,跟不上AI模块的处理速度,导致FIFO清空时,可以暂停AI模块的运算,待FPGA输入到FIFO数据跟上;当FIFO不空时,再重启AI模块的运算。
在另一个方向,由AI模块输出运算结果到FPGA模块的操作亦同上。当AI模块输出太快,导致FIFO满溢时,暂停AI模块运算;当FIFO有空位时,AI模块再重续工作。当FIFO输出到FPGA模块太快时导致FIFO清空,此时暂停输出到FPGA模块,等FIFO不空时,再输出到FPGA。
虽然图中示意了两个FPGA模块,但是这仅是示例。这两个FPGA模块可能属于同一个FPGA模块的两个部分。或者,系统芯片可以包括不止一个FPGA模块和/或不止一个人工智能模块。
图2是FPGA电路的结构示意图。如图2所示,FPGA电路可包含有多个可编程逻辑模块(LOGIC)、嵌入式存储块(EMB)、乘累加器(MAC)等模块和相应的绕线(XBAR)。当然,FPGA电路还设有时钟/配置模块(支干seam/主干spine)等相关资源。若需要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各模块数量的占比并无限制,阵列的大小也根据需要,在设计时由实际应用决定。
可以利用FPGA内自带的EMB模块或LRAM(local RAM)模块来实现图1所示的FIFO。
图3是人工智能模块的结构示意图。如图3所示,人工智能AI模块是一个二维阵列并且包括,例如,4X4个处理单元PE。AI模块可分为两个维度,彼此垂直的第一维度和第二维度。以第一处理器、第二处理器和第三处理器为例,第一处理器和第二处理器沿第一维度沿第一方向排列,第一处理器的第一输出端耦合到第一处理器的第一输入端;第一处理器和第三处理器沿第二维度沿第二方向排列,第一处理器的第二输出端耦合到第三处理器的第二输入端。
数据a可以沿第一维度双向流动;例如,既可以在同一时钟下沿第一方向依次输入具有相同第二维度值的各处理单元,也可以沿第一方向的相反方向依次输入具有相同第二维度值的各处理单元;可以在第二维度双向流动,既可以在同一时钟下沿第二方向依次输入具有相同第一维度值的各处理单元,也可以沿第二方向的相反方向依次输入具有相同第一维度值的各处理单元。当然,通过控制,同一个数据或者由其衍生的数据可以在不同的时钟下流经所有的PE单元。为理解方便起见,下文将以水平维度为第一维度、左向右为第一方向,以垂直维度为第二维度、上向下为第二方向。
需要注意,图3中的每条数据线既可代表单比特的信号,也可代表8(或16,32)比特的信号。
在输入处理单元后,数据在处理单元中进行各种运算,例如加减乘除,逻辑运算等等。
在一个例子中,人工智能模块可以实现矩阵乘法。在另一个例子中,二维阵列可以实现卷积算法。
图4是处理单元的示意图。如图4所示,处理单元包括可编程功能单元(programmable functional unit,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的处理功能,由选定的输入直接送到输出。跳线功能可以实现跨单元的运算,跳线功能有助于有针对性地对处理单元进行测试、也有助于将出错的处理单元进行隔离。
FPGA与AI模块之间的连接采用FIFO,有如下优点:
首先,利用FIFO双端不同步读写的功能,可以把FPGA的数据传给处于不同时钟域的AI模块,也能正常工作。反之,也可把AI模块数据传给FPGA。
其次,可以利用FIFO所提供的满或空标记实现缓冲性能,来解决FPGA和AI模块连接时输出端和输入端数据产生/消耗速度不匹配的问题。
第三,可以利用FIFO的使能ENABLE功能,来调整数据由FPGA输出到AI模块数据的打拍延时,或由AI模块输出到FPGA数据的打拍延时,可以根据需求排列输出/输入的数据。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种系统芯片,包括:
人工智能AI模块,包括排列成二维阵列的多个处理单元(PE),各处理单元能够完成逻辑和/或乘加运算;
FPGA模块,经配置提供用于AI模块的数据或者接收来自AI模块的运算结果;
先进先出FIFO模块,用于将AI模块的输入和/或输出端耦合到FPGA模块的绕线单元(XBAR)上;FIFO模块的写、读时钟各自对应于FPGA模块与AI模块。
2.根据权利要求1所述的系统芯片,其特征在于,所述FIFO模块由FPGA内自带的存储器模块(EMB或LRAM)模块实现。
3.根据权利要求1所述的系统芯片,其特征在于,FIFO包括使能(ENABLE)功能,用于调整数据由FPGA输出到AI模块的打拍延时,或由AI模块输出到FPGA的打拍延时。
4.根据权利要求1所述的系统芯片,其特征在于,FIFO包括满或空标记,用于对FPGA模块和AI模块之间的数据进行缓冲控制。
5.如权利要求1所述的系统芯片,其特征在于,AI模块嵌入FPGA模块中并且复用FPGA模块的绕线资源,以便自AI模块发送数据或者接收数据,皆经由所述的复用的FPGA的绕线资源。
6.根据权利要求1所述的系统芯片,其特征在于,FIFO写与读的时钟不同步。
7.根据权利要求1所述的系统芯片,其特征在于,所述FIFO写基于第一时钟频率,所述FIFO读基于第二时钟频率,第一时钟频率不等于第二时钟频率。
8.根据权利要求1所述的系统芯片,其特征在于,FIFO写基于第一位宽,FIFO读基于第二位宽,第一位宽不等于第二位宽。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910103656.9A CN109766293B (zh) | 2019-02-01 | 2019-02-01 | 连接芯片上fpga和人工智能模块的电路和系统芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910103656.9A CN109766293B (zh) | 2019-02-01 | 2019-02-01 | 连接芯片上fpga和人工智能模块的电路和系统芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766293A true CN109766293A (zh) | 2019-05-17 |
CN109766293B CN109766293B (zh) | 2021-05-18 |
Family
ID=66454667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910103656.9A Active CN109766293B (zh) | 2019-02-01 | 2019-02-01 | 连接芯片上fpga和人工智能模块的电路和系统芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766293B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115147840A (zh) * | 2021-03-31 | 2022-10-04 | 广东高云半导体科技股份有限公司 | 进行字符识别的人工智能系统及方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794268A (zh) * | 2010-03-16 | 2010-08-04 | 中国电子科技集团公司第十四研究所 | 基于vpx总线、可重构信号处理模块 |
CN102761396A (zh) * | 2012-07-30 | 2012-10-31 | 哈尔滨工业大学 | 基于fpga的高速串行接口 |
US20130232097A1 (en) * | 2012-03-02 | 2013-09-05 | California Institute Of Technology | Continuous-weight neural networks |
CN104899167A (zh) * | 2014-03-05 | 2015-09-09 | 鞍钢股份有限公司 | 一种基于fpga的便携式高速数据采集方法 |
CN105071928A (zh) * | 2015-07-08 | 2015-11-18 | 路博超 | 一种基于fpga的大素数暨大素数族的快速生成方法 |
CN107292342A (zh) * | 2017-06-21 | 2017-10-24 | 广东欧珀移动通信有限公司 | 数据处理方法及相关产品 |
CN107509127A (zh) * | 2017-07-27 | 2017-12-22 | 中国船舶重工集团公司第七二四研究所 | 一种多光纤输入队列的自适应轮询调度方法 |
WO2018125466A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Time-based flexible packet scheduling |
CN108415331A (zh) * | 2018-03-13 | 2018-08-17 | 算丰科技(北京)有限公司 | Ai深度学习板卡及其电源供电方法 |
-
2019
- 2019-02-01 CN CN201910103656.9A patent/CN109766293B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794268A (zh) * | 2010-03-16 | 2010-08-04 | 中国电子科技集团公司第十四研究所 | 基于vpx总线、可重构信号处理模块 |
US20130232097A1 (en) * | 2012-03-02 | 2013-09-05 | California Institute Of Technology | Continuous-weight neural networks |
CN102761396A (zh) * | 2012-07-30 | 2012-10-31 | 哈尔滨工业大学 | 基于fpga的高速串行接口 |
CN104899167A (zh) * | 2014-03-05 | 2015-09-09 | 鞍钢股份有限公司 | 一种基于fpga的便携式高速数据采集方法 |
CN105071928A (zh) * | 2015-07-08 | 2015-11-18 | 路博超 | 一种基于fpga的大素数暨大素数族的快速生成方法 |
WO2018125466A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Time-based flexible packet scheduling |
CN107292342A (zh) * | 2017-06-21 | 2017-10-24 | 广东欧珀移动通信有限公司 | 数据处理方法及相关产品 |
CN107509127A (zh) * | 2017-07-27 | 2017-12-22 | 中国船舶重工集团公司第七二四研究所 | 一种多光纤输入队列的自适应轮询调度方法 |
CN108415331A (zh) * | 2018-03-13 | 2018-08-17 | 算丰科技(北京)有限公司 | Ai深度学习板卡及其电源供电方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115147840A (zh) * | 2021-03-31 | 2022-10-04 | 广东高云半导体科技股份有限公司 | 进行字符识别的人工智能系统及方法 |
CN115147840B (zh) * | 2021-03-31 | 2024-05-17 | 广东高云半导体科技股份有限公司 | 进行字符识别的人工智能系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109766293B (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210160177A1 (en) | Fpga-efficient directional two-dimensional router | |
US5648732A (en) | Field programmable pipeline array | |
KR101058468B1 (ko) | 집적 회로용의 재구성 가능한 로직 패브릭과, 재구성 가능한 로직 패브릭을 구성하기 위한 시스템 및 방법 | |
US5136188A (en) | Input/output macrocell for programmable logic device | |
CN107852379A (zh) | 用于现场可编程门阵列的定向二维路由器和互连网络、以及所述路由器和网络的其他电路和应用 | |
US7944236B2 (en) | High-bandwidth interconnect network for an integrated circuit | |
WO1996013902A1 (en) | Programmable multiplexing input/output port | |
US4524428A (en) | Modular input-programmable logic circuits for use in a modular array processor | |
CN109902063B (zh) | 一种集成有二维卷积阵列的系统芯片 | |
CN103123658A (zh) | 一种可编程逻辑阵列ip核及其系统集成方法 | |
CN109766293A (zh) | 连接芯片上fpga和人工智能模块的电路和系统芯片 | |
CN109902040A (zh) | 一种集成fpga和人工智能模块的系统芯片 | |
CN109902835A (zh) | 处理单元设置有通用算法单元的人工智能模块及系统芯片 | |
CN109857024A (zh) | 人工智能模块的单元性能测试方法和系统芯片 | |
CN109919322A (zh) | 一种测试系统芯片上的人工智能模块的方法和系统芯片 | |
CN109886416A (zh) | 集成人工智能模块的系统芯片及机器学习方法 | |
Benedetti et al. | A novel system architecture for real-time low-level vision | |
CN109933369B (zh) | 集成单指令多数据流架构人工智能模块的系统芯片 | |
CN109902836A (zh) | 人工智能模块的故障容错方法及系统芯片 | |
CN109933370A (zh) | 连接fpga和人工智能模块的系统芯片 | |
Jackson et al. | Asynchronous embryonics | |
CN109902037A (zh) | 连接不同时钟域下的fpga和人工智能模块的系统芯片 | |
CN109828948A (zh) | 一种集成人工智能模块的系统芯片 | |
CN109919321A (zh) | 单元具有本地累加功能的人工智能模块及系统芯片 | |
CN109885512A (zh) | 集成fpga和人工智能模块的系统芯片及设计方法 |
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 |