CN109933369B - 集成单指令多数据流架构人工智能模块的系统芯片 - Google Patents
集成单指令多数据流架构人工智能模块的系统芯片 Download PDFInfo
- Publication number
- CN109933369B CN109933369B CN201910103584.8A CN201910103584A CN109933369B CN 109933369 B CN109933369 B CN 109933369B CN 201910103584 A CN201910103584 A CN 201910103584A CN 109933369 B CN109933369 B CN 109933369B
- Authority
- CN
- China
- Prior art keywords
- module
- fpga
- data
- chip
- artificial intelligence
- 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.)
- Active
Links
Images
Landscapes
- Logic Circuits (AREA)
- Advance Control (AREA)
Abstract
一种集成FPGA和单指令多数据流架构的人工智能模块的FPGA系统芯片。系统芯片包括:至少一个FPGA模块;至少一个人工智能AI模块,采用单指令多数据流SIMD的架构;接口模块,用于将至少一个FPGA模块和至少一个AI模块连通,以便至少一个FPGA模块向至少一个AI模块发送指令并且相互交换数据;其中,FPGA模块则为AI模块提供单指令多数据流所用的指令和AI模块所需的数据;AI模块对所述数据执行和指令有关的运算。在芯片上同时集成FPGA模块和具有SIMD架构的AI模块的系统芯片可以用同一个框架胜任不同的应用需求。
Description
技术领域
本发明涉及集成电路技术领域,尤其涉及一种集成FPGA和单指令多数据流架构的人工智能模块的系统芯片。
背景技术
近年来,人工智能迎来一波发展浪潮。人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。
当前,人工智能模块由处理器通过总线来进行访问控制,而总线是有一定的带宽限制,这样的架构难以适应AI模块的大带宽需求。
发明内容
根据本发明实施例,提供一种系统芯片,包括:至少一个FPGA模块;至少一个人工智能AI模块,采用单指令多数据流SIMD的架构;接口模块,用于将至少一个FPGA模块和至少一个AI模块连通,以便至少一个FPGA模块向至少一个AI模块发送指令并且相互交换数据;其中,FPGA模块则为AI模块提供单指令多数据流所用的指令和AI模块所需的数据;AI模块对所述数据执行和指令有关的运算。
优选地,所述指令由FPGA内的存储模块提供。
优选地,AI模块包括多个执行单元,各执行单元的输入数据由FPGA模块内的存储单元经接口模块提供;执行单元的输出数据经接口模块传送到FPGA模块内的存储单元。
优选地,所述执行单元包括至少两个输入寄存器,用于接收输入数据;功能子模块,用于根据来自至少两个输入寄存器的输入数据执行由指令输入端输入的指令所选定的计算或逻辑运算;输出寄存器,用于暂存功能子模块的运算结果。
优选地,FPGA模块内的控制子模块经接口模块给AI模块提供控制信号,以便AI模块在控制信号的控制下进行操作。
优选地,AI模块的状态信号经接口模块提供给FPGA模块内的控制子模块。
在芯片上同时集成FPGA模块和具有SIMD架构的AI模块的系统芯片可以用同一个框架胜任不同的应用需求。
附图说明
图1是根据本发明实施例的系统芯片的电路结构示意图;
图2是单指令多数据流SIMD的架构实现示意图;
图3是FPGA电路的结构示意图;
图4是人工智能模块的结构示意图;
图5是执行单元EU的示意图。
具体实施方式
为使本发明实施例的技术方案以及优点表达的更清楚,下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
在本申请的描述中,术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“东”、“南”、“西”、“北”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
图1是根据本发明实施例的系统芯片的电路结构示意图。如图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模块的绕线架构接收和发送数据。
FPGA模块和AI模块通过接口模块连通,以便交换信号或数据。接口模块可以是额外的电路模块,也可以是FPGA内带的接口模块,或者同时有两者。
接口模块可以是绕线(XBAR)模块,XBAR模块例如由多个选择器(Multiplexer)和选择位元组成。接口模块也可以是FIFO(先进先出);FPGA模块与人工智能模块可以由不同步的时钟CLK1、CLK2分别驱动,两者分属不同时钟域;信号穿越时钟域时需要经过同步;人工智能模块的输出/输入端经由FIFO(先进先出)连接到相邻FPGA模块内的绕线资源的XBAR上。接口模块也可以是同步器;在一个例子中,同步器由2个触发器(Flip-Flop或FF)串连而成。
在实施例中,人工智能模块(AI Block)以单指令多数据流SIMD的架构实现。在该架构中,相似的模块对不同的多个数据流执行相同的指令。该架构提供极大的并行处理能力,适合以数据流为主的运算方法。FPGA模块则为AI模块提供控制指令、数据和其它控制功能。
图2是单指令多数据流SIMD的架构实现示意图。如图2所示,AI模块具有多个相同的组成子模块,即执行单元(Execution Unit,EU)。这些单元具有多样的功能,具体执行哪个功能则是由INS确定。INS是一种指令存储器,被其选中的指令能同时提供给各执行单元EU,使得各EU执行相同的功能(故此,称为单指令多数据流架构,简称为SIMD)。
各执行单元EU的输入数据由FPGA内的相应EMB存储提供,如图2中的EMB1、EMB2、EMB3、EMB4。各执行单元EU的输出也传送到FPGA内的相应EMB,如图3中的EMB5、EMB6、EMB7、EMB8。
AI模块内的INS指令存储块的内容由FPGA内的一个存储模块EMB9提供。
AI模块的整体操作由控制信号及状态信号来实现。该控制信号及状态信号亦由FPGA模块内的控制子模块来提供或控制。此控制模块可由FPGA内若干的逻辑LOGIC模块组合而成。
图3是FPGA电路的结构示意图。如图3所示,FPGA电路可包含有多个可编程逻辑模块(LOGIC)、嵌入式存储块(EMB)、乘累加器(MAC)等模块和相应的绕线单元(XBAR)。当然,FPGA电路还设有时钟/配置模块(支干seam/主干spine)等相关资源。若需要EMB或MAC模块时,因其面积比PLB大许多,故以此EMB/MAC模块取代若干PLB模块。
LOGIC模块可以包含,例如,8个6输入查照表、18个寄存器。EMB模块可以是,例如,36k比特或2个18k比特的存储单元。MAC模块可以是,例如,25x18乘法器,或2个18x18乘法器。FPGA阵列中,LOGIC、MAC、EMB各模块数量的占比并无限制,阵列的大小也根据需要,在设计时由实际应用决定。
绕线资源XBAR是各模块间互联的接点,均匀地分布在FPGA模块内。FPGA模块内所有的资源,PLB、EMB、MAC、IO相互之间的绕线都是经有一个相同的界面XBAR单元来实现。由绕线方式来看,整个阵列是相同一致,整齐排列的XBAR单元形成网格,将FPGA内所有模块相连。
图4是人工智能模块的结构示意图。如图4所示,人工智能AI模块是一个二维阵列,例如包括4X4个执行单元EU。AI模块可分为两个维度,彼此垂直的第一维度和第二维度。以第一执行单元、第二执行单元和第三执行单元为例,第一执行单元和第二执行单元沿第一维度沿第一方向相邻排列,第一执行单元沿第一方向的输出端耦合到第二执行单元沿第一方向的相反方向的输入端,第一执行单元沿第一方向的输入端耦合到第二执行单元沿第一方向的相反方向的输出端。第一执行单元和第三执行单元沿第二维度沿第二方向相邻排列,第一执行单元沿第二方向的输出端耦合到第三执行单元沿第二方向的相反方向的输入端,第一执行单元沿第二方向的输入端耦合到第三执行单元沿第二方向的相反方向的输出端。
数据a可以沿第一维度双向流动;例如,既可以在同一时钟下沿第一方向依次输入具有相同第二维度值的各执行单元,也可以沿第一方向的相反方向依次输入具有相同第二维度值的各执行单元。数据b也可沿第二维度双向流动,例如既可以在同一时钟下沿第二方向依次输入具有相同第一维度值的各执行单元,也可以沿第二方向的相反方向依次输入具有相同第一维度值的各执行单元。当然,通过控制,同一个数据或者由其衍生的数据可以在不同的时钟下流经所有的PE单元。为理解方便起见,下文将以水平维度为第一维度、左向右为第一方向,以垂直维度为第二维度、上向下为第二方向。
执行单元可以从不同维度不同方向接收数据。在输入执行单元后,数据在执行单元中进行各种运算,例如加减乘除,逻辑运算等等。执行单元将运算结果沿不同维度不同方向输出。
需要注意,图3中的每条数据线既可代表单比特的信号,也可代表8(或16,32)比特的信号。
在一个例子中,人工智能模块可以实现矩阵乘法。在另一个例子中,二维阵列可以实现卷积算法。
图5是执行单元EU的示意图。如图5所示,执行单元的核心是功能子模块(function)。此功能子模块可实现各种常用的计算,例如加、减、乘法等,以及各种常用的逻辑,例如与、或、异或等逻辑运算。在操作中具体采用哪种功能,由功能模块的INS输入选定。
执行单元可以设置两个或两个以上输入寄存器,输入寄存器1(Input Register1),输入寄存器2(Input Register 2),用于从数据输入端DATAIN接收输入数据,并且为功能模块FU提供所需的两个或两个输入数据。
执行单元可以设置至少一个输出寄存器(Output Register),用于暂时存放功能子模块FU的输出数据,然后将该输出数据经数据输出端(DATAOUT)输出。
在芯片上同时集成FPGA模块和具有SIMD架构的AI模块的本发明实施例有如下优点。
第一,SIMD架构的AI模块所需要大量的数据输入/输出信号可由FPGA来提供,以达到其高带宽的数据处理能力。
第二,SIMD架构所需的INS指令,亦可由FPGA提供,由此简化设计的工序。
第三,SIMD架构所需的其它控制信号及状态处理需求,可以用FPGA内的逻辑模块来满足,也同时简化了设计工序。
第四,FPGA在其四周边界拥有非常大量的绕线点,作为FPGA的输出/输入点。将FPGA与AI模块集成在同一芯片上时,AI模块的输出/输入信号可以很好的找到相应的FPGA连接点,并且通过FPGA可以高速提供大量的数据到AI模块,配合其高带宽处理能力。
第五,FPGA内用有大量的EMB及LOGIC资源,可以支持AI模块大量扩展EU的数目,并且由于并行处理的EU数目的大幅度增加,可以实现高带宽运算。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种系统芯片,包括:
至少一个FPGA模块;
至少一个人工智能AI模块,采用单指令多数据流SIMD的架构;所述AI模块嵌入所述FPGA模块中;
接口模块,用于将至少一个FPGA模块和至少一个AI模块连通,以便至少一个FPGA模块向至少一个AI模块发送指令并且相互交换数据,所述接口模块是所述FPGA内带的接口模块;
其中,FPGA模块则为AI模块提供单指令多数据流(SIMD)所用的指令和AI模块所需的数据;AI模块对所述数据执行和指令有关的运算。
2.根据权利要求1所述的系统芯片,其特征在于,所述指令由FPGA内的存储模块提供。
3.根据权利要求1所述的系统芯片,其特征在于,AI模块包括多个执行单元,各执行单元的输入数据由FPGA模块内的存储单元经接口模块提供;执行单元的输出数据经接口模块传送到FPGA模块内的存储单元。
4.根据权利要求3所述的系统芯片,其特征在于,所述执行单元包括至少两个输入寄存器,用于接收输入数据;功能子模块,用于根据来自至少两个输入寄存器的输入数据执行由指令输入端输入的指令所选定的计算或逻辑运算;输出寄存器,用于暂存功能子模块的运算结果。
5.根据权利要求1所述的系统芯片,其特征在于,FPGA模块内的控制子模块经接口模块给AI模块提供控制信号,以便AI模块在控制信号的控制下进行操作。
6.根据权利要求1所述的系统芯片,其特征在于,AI模块的状态信号经接口模块提供给FPGA模块内的控制子模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910103584.8A CN109933369B (zh) | 2019-02-01 | 2019-02-01 | 集成单指令多数据流架构人工智能模块的系统芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910103584.8A CN109933369B (zh) | 2019-02-01 | 2019-02-01 | 集成单指令多数据流架构人工智能模块的系统芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933369A CN109933369A (zh) | 2019-06-25 |
CN109933369B true CN109933369B (zh) | 2021-09-21 |
Family
ID=66985399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910103584.8A Active CN109933369B (zh) | 2019-02-01 | 2019-02-01 | 集成单指令多数据流架构人工智能模块的系统芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933369B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113391842A (zh) | 2020-03-13 | 2021-09-14 | 华为技术有限公司 | 一种单指令多数据simd指令的生成、处理方法以及相关设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117137B2 (en) * | 2007-04-19 | 2012-02-14 | Microsoft Corporation | Field-programmable gate array based accelerator system |
CN107292342B (zh) * | 2017-06-21 | 2021-04-16 | Oppo广东移动通信有限公司 | 数据处理方法及相关产品 |
CN108415331B (zh) * | 2018-03-13 | 2021-02-09 | 北京比特大陆科技有限公司 | Ai深度学习板卡及其电源供电方法 |
CN109032987A (zh) * | 2018-07-05 | 2018-12-18 | 山东超越数控电子股份有限公司 | 一种基于fpga使国产处理器加速的计算机系统及方法 |
-
2019
- 2019-02-01 CN CN201910103584.8A patent/CN109933369B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109933369A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7518396B1 (en) | Apparatus and method for reconfiguring a programmable logic device | |
CN109564638B (zh) | 人工智能处理器及其所应用的处理方法 | |
US9075930B2 (en) | Configurable embedded memory system | |
US8405418B1 (en) | High-bandwidth interconnect network for an integrated circuit | |
EP2048784A1 (en) | Semiconductor integrated circuit, program converting apparatus and mapping apparatus | |
US20100157854A1 (en) | Systems and methods for sending data packets between multiple fpga devices | |
JP2009543472A (ja) | 集積回路のための再構成可能論理ファブリックおよび再構成可能論理ファブリックを構成するためのシステムおよび方法 | |
KR20220004216A (ko) | 제어 플로우 배리어 및 재구성가능 데이터 프로세서 | |
CN109902063B (zh) | 一种集成有二维卷积阵列的系统芯片 | |
JP2023523587A (ja) | 計算データフローアーキテクチャ | |
CN109902040B (zh) | 一种集成fpga和人工智能模块的系统芯片 | |
CN109933369B (zh) | 集成单指令多数据流架构人工智能模块的系统芯片 | |
US7042248B1 (en) | Dedicated crossbar and barrel shifter block on programmable logic resources | |
CN109857024B (zh) | 人工智能模块的单元性能测试方法和系统芯片 | |
CN109919322B (zh) | 一种测试系统芯片上的人工智能模块的方法和系统芯片 | |
CN109766293B (zh) | 连接芯片上fpga和人工智能模块的电路和系统芯片 | |
CN109902835A (zh) | 处理单元设置有通用算法单元的人工智能模块及系统芯片 | |
CN109933370B (zh) | 连接fpga和人工智能模块的系统芯片 | |
CN109902037B (zh) | 连接不同时钟域下的fpga和人工智能模块的系统芯片 | |
CN109886416A (zh) | 集成人工智能模块的系统芯片及机器学习方法 | |
CN109885512B (zh) | 集成fpga和人工智能模块的系统芯片及设计方法 | |
CN109902836A (zh) | 人工智能模块的故障容错方法及系统芯片 | |
CN109828948B (zh) | 一种集成人工智能模块的系统芯片 | |
CN109884499B (zh) | 一种测试系统芯片上的人工智能模块的方法和系统芯片 | |
CN109902795B (zh) | 处理单元设置有输入复用器的人工智能模块和系统芯片 |
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 |