一种AI芯片、系统及数据处理方法转让专利

申请号 : CN202311055220.X

文献号 : CN116775542B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 苏杰赵志强

申请人 : 成都芯脉微电子有限责任公司

摘要 :

本发明属于计算机技术领域,具体公开了一种AI芯片、系统及数据处理方法,AI芯片包括高速串行收发单元、总线互联单元、总线节点单元、控制单元、SRAM单元和计算单元,总线互联单元分别与高速串行收发单元和总线节点单元连接,控制单元分别与总线节点单元、SRAM单元和计算单元连接,SRAM单元还与计算单元连接,系统包括计算机、现场可编程门阵列和若干AI芯片。本发明采用分布式片内静态随机存取存储器代替现有的片外存储器方案,使得芯片的计算性能不再受存储带宽的限制,同时可大大减小计算延迟;可以有效减小芯片面积,提高芯片生产良率;本发明的AI系统,可以根据需求进行灵活的AI芯片扩展,可扩展性强。

权利要求 :

1.一种AI芯片,其特征在于,包括高速串行收发单元、总线互联单元、总线节点单元、控制单元、SRAM单元和计算单元,所述总线互联单元分别与高速串行收发单元和总线节点单元连接,所述控制单元分别与总线节点单元、SRAM单元和计算单元连接,所述SRAM单元还与计算单元连接,其中:高速串行收发单元,用于接收片外的通信数据,并对通信数据进行数据协议解析,得到请求数据;将请求数据传输至总线互联单元,所述请求数据包括读请求指令、写请求数据和/或计算控制数据,所述写请求数据包括写请求指令和源数据;以及接收总线互联单元反馈的数据处理结果,将数据处理结果传输至片外;

总线互联单元,用于进行片内数据的传递,将高速串行收发单元的请求数据传输至总线节点单元,以及将总线节点单元的数据处理结果传输至高速串行收发单元;

总线节点单元,用于将请求数据传输至控制单元,以及接收控制单元反馈的数据处理结果,将数据处理结果传输至总线互联单元;

控制单元,用于根据请求数据中的写请求指令将源数据写入SRAM单元,根据请求数据中的读请求指令从SRAM单元中读取相应的存储数据,根据请求数据中的计算控制数据生成计算配置数据,将计算配置数据传输至计算单元,接收计算单元反馈的计算结果,以及将读取的存储数据和/或计算结果汇总为数据处理结果;

SRAM单元,包含静态随机存取存储器,用于存储源数据以及为控制单元提供存储数据;

计算单元,用于根据计算配置数据从SRAM单元中读取相应的源数据进行张量计算,得到计算结果,并将计算结果传输至控制单元。

2.根据权利要求1所述的一种AI芯片,其特征在于,所述总线节点单元、控制单元、SRAM单元和计算单元组成片内处理单元,所述AI芯片包含若干相互独立的片内处理单元,各片内处理单元均通过相应的总线节点单元与总线互联单元连接,总线互联单元与各总线节点单元构成片内总线。

3.根据权利要求2所述的一种AI芯片,其特征在于,所述总线互联单元还用于将相应片内处理单元的数据处理结果传输至另一片内处理单元,由另一片内处理单元的SRAM单元进行数据处理结果的存储。

4.根据权利要求1所述的一种AI芯片,其特征在于,所述高速串行收发单元采用8路

30G/s高速串行收发器。

5.根据权利要求1所述的一种AI芯片,其特征在于,所述SRAM单元包括一个读写数据通道和若干读数据通道,SRAM单元通过读写数据通道与控制单元连接,通过读数据通道与计算单元连接。

6.根据权利要求1所述的一种AI芯片,其特征在于,所述SRAM单元的存储容量为2M字节,分为两个1M字节区域用于乒乓操作缓存。

7.根据权利要求1所述的一种AI芯片,其特征在于,所述计算单元包含张量计算算子和计算控制组件,计算控制组件用于根据计算配置数据调用张量计算算子对从SRAM单元中读取的相应存储数据进行张量计算,得到计算结果。

8.一种AI系统,其特征在于,包括计算机、现场可编程门阵列和若干权利要求1‑7任一所述的AI芯片,所述现场可编程门阵列分别与计算机和各AI芯片建立数据通信连接,所述现场可编程门阵列用于接收计算机的数据处理任务,并根据数据处理任务划分若干子任务,根据各子任务生成对应的通信数据传输至各AI芯片,以及接收各AI芯片反馈的数据处理结果,将各AI芯片的数据处理结果汇总后传输至计算机。

9.根据权利要求8所述的一种AI系统,其特征在于,所述计算机通过PCIE通道与现场可编程门阵列建立数据通信连接,所述现场可编程门阵列与各AI芯片的高速串行收发器建立数据通信连接,且各AI芯片之间通过高速串行收发器建立数据通信连接。

10.一种AI数据处理方法,应用于权利要求8所述的AI系统,其特征在于,包括:

计算机获取相应的数据处理任务,并根据AI芯片数量、各AI芯片SRAM单元的存储资源以及各AI芯片计算单元的计算资源对数据处理任务进行子任务划分,生成各AI芯片对应的通信数据传输至可编程门阵列;

现场可编程门阵列通过高速串行接口将相应的通信数据发送至各AI芯片;

各AI芯片根据相应的通信数据进行数据处理,得到数据处理结果,将数据处理结果反馈至现场可编程门阵列;

现场可编程门阵列将各AI芯片的数据处理结果汇总后传输至计算机。

说明书 :

一种AI芯片、系统及数据处理方法

技术领域

[0001] 本发明属于计算机技术领域,具体涉及一种AI芯片、系统及数据处理方法。

背景技术

[0002] 随着深度学习、边缘计算等人工智能计算得到越来越多的应用,对于张量计算的性能也有了更高的要求。目前已出现一些AI专用芯片,如谷歌公司的TensorFlow TPU芯片、专利申请CN115658146A公开的AI芯片以及专利申请CN114519011A公开的AI系统等。现有的这些AI计算芯片架构主要是使用外部的存储器(如DRAM)来存储需要计算的输入源数据以及权重数据等信息,加上少量的片内缓存用来加速计算。这样的芯片架构和数据方法存在的主要缺陷就是由于外部存储器的读写性能瓶颈而导致AI计算性能受到很大限制,同时由于单个芯片包含大量计算算子或者大容量的片内缓存,还会导致芯片面积大,生产良率低的问题。

发明内容

[0003] 本发明的目的是提供一种AI芯片、系统及数据处理方法,用以解决现有技术中存在的上述问题。
[0004] 为了实现上述目的,本发明采用以下技术方案:
[0005] 第一方面,提供一种AI芯片,包括高速串行收发单元、总线互联单元、总线节点单元、控制单元、SRAM单元和计算单元,所述总线互联单元分别与高速串行收发单元和总线节点单元连接,所述控制单元分别与总线节点单元、SRAM单元和计算单元连接,所述SRAM单元还与计算单元连接,其中:
[0006] 高速串行收发单元,用于接收片外的通信数据,并对通信数据进行数据协议解析,得到请求数据;将请求数据传输至总线互联单元,所述请求数据包括读请求指令、写请求数据和/或计算控制数据,所述写请求数据包括写请求指令和源数据;以及接收总线互联单元反馈的数据处理结果,将数据处理结果传输至片外;
[0007] 总线互联单元,用于进行片内数据的传递,将高速串行收发单元的请求数据传输至总线节点单元,以及将总线节点单元的数据处理结果传输至高速串行收发单元;
[0008] 总线节点单元,用于将请求数据传输至控制单元,以及接收控制单元反馈的数据处理结果,将数据处理结果传输至总线互联单元;
[0009] 控制单元,用于根据请求数据中的写请求指令将源数据写入SRAM单元,根据请求数据中的读请求指令从SRAM单元中读取相应的存储数据,根据请求数据中的计算控制数据生成计算配置数据,将计算配置数据传输至计算单元,接收计算单元反馈的计算结果,以及将读取的存储数据和/或计算结果汇总为数据处理结果;
[0010] SRAM单元,包含静态随机存取存储器,用于存储源数据以及为控制单元提供存储数据;
[0011] 计算单元,用于根据计算配置数据从SRAM单元中读取相应的源数据进行张量计算,得到计算结果,并将计算结果传输至控制单元。
[0012] 在一个可能的设计中,所述总线节点单元、控制单元、SRAM单元和计算单元组成片内处理单元,所述AI芯片包含若干相互独立的片内处理单元,各片内处理单元均通过相应的总线节点单元与总线互联单元连接,总线互联单元与各总线节点单元构成片内总线。
[0013] 在一个可能的设计中,所述总线互联单元还用于将相应片内处理单元的数据处理结果传输至另一片内处理单元,由另一片内处理单元的SRAM单元进行数据处理结果的存储。
[0014] 在一个可能的设计中,所述高速串行收发单元采用8路30G/s高速串行收发器。
[0015] 在一个可能的设计中,所述SRAM单元包括一个读写数据通道和若干读数据通道,SRAM单元通过读写数据通道与控制单元连接,通过读数据通道与计算单元连接。
[0016] 在一个可能的设计中,所述SRAM单元的存储容量为2M字节,分为两个1M字节区域用于乒乓操作缓存。
[0017] 在一个可能的设计中,所述计算单元包含张量计算算子和计算控制组件,计算控制组件用于根据计算配置数据调用张量计算算子对从SRAM单元中读取的相应存储数据进行张量计算,得到计算结果。
[0018] 第二方面,提供一种AI系统,包括计算机、现场可编程门阵列和若干第一方面中所述的AI芯片,所述现场可编程门阵列分别与计算机和各AI芯片建立数据通信连接,所述现场可编程门阵列用于接收计算机的数据处理任务,并根据数据处理任务划分若干子任务,根据各子任务生成对应的通信数据传输至各AI芯片,以及接收各AI芯片反馈的数据处理结果,将各AI芯片的数据处理结果汇总后传输至计算机。
[0019] 第三方面,提供一种AI数据处理方法,包括:
[0020] 计算机获取相应的数据处理任务,并根据AI芯片数量、各AI芯片SRAM单元的存储资源以及各AI芯片计算单元的计算资源对数据处理任务进行子任务划分,生成各AI芯片对应的通信数据传输至可编程门阵列;
[0021] 现场可编程门阵列通过高速串行接口将相应的通信数据发送至各AI芯片;
[0022] 各AI芯片根据相应的通信数据进行数据处理,得到数据处理结果,将数据处理结果反馈至现场可编程门阵列;
[0023] 现场可编程门阵列将各AI芯片的数据处理结果汇总后传输至计算机。
[0024] 有益效果:本发明通过改进现有的AI芯片架构,采用分布式片内静态随机存取存储器代替现有的片外存储器方案,使得芯片的计算性能不再受存储带宽的限制,同时可大大减小计算延迟;本发明的AI芯片架构可以有效减小芯片面积,提高芯片生产良率;基于本发明AI芯片所构建的AI系统,可以根据需求进行灵活的AI芯片扩展,可扩展性强。

附图说明

[0025] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026] 图1为本发明实施例1中AI芯片的架构示意图;
[0027] 图2为本发明实施例1中计算单元张量计算算子示意图;
[0028] 图3为本发明实施例1中命令序列的示意图;
[0029] 图4为本发明实施例2中AI系统的架构示意图;
[0030] 图5为本发明实施例3中数组A的示意图;
[0031] 图6为本发明实施例3中卷积运算核B的示意图;
[0032] 图7为本发明实施例3中计算过程第一部分的示意图;
[0033] 图8为本发明实施例3中计算过程第二部分的示意图;
[0034] 图9为本发明实施例3中计算过程第三部分的示意图。

具体实施方式

[0035] 在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。
[0036] 应当理解,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在实施例中的具体含义。
[0037] 在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实施例中,可以不以非必要的细节来示出众所周知的过程、结构和技术,以避免使得实施例不清楚。
[0038] 实施例1:
[0039] 本实施例提供一种AI芯片,如图1所示,包括高速串行收发单元、总线互联单元、总线节点单元、控制单元、SRAM单元和计算单元,所述总线互联单元分别与高速串行收发单元和总线节点单元连接,所述控制单元分别与总线节点单元、SRAM单元和计算单元连接,所述SRAM单元还与计算单元连接,其中:
[0040] 高速串行收发单元,用于接收片外的通信数据,并对通信数据进行数据协议解析,得到请求数据;将请求数据传输至总线互联单元,所述请求数据包括读请求指令、写请求数据和/或计算控制数据,所述写请求数据包括写请求指令和源数据;以及接收总线互联单元反馈的数据处理结果,将数据处理结果传输至片外;
[0041] 总线互联单元,用于进行片内数据的传递,将高速串行收发单元的请求数据传输至总线节点单元,以及将总线节点单元的数据处理结果传输至高速串行收发单元;
[0042] 总线节点单元,用于将请求数据传输至控制单元,以及接收控制单元反馈的数据处理结果,将数据处理结果传输至总线互联单元;
[0043] 控制单元,用于根据请求数据中的写请求指令将源数据写入SRAM单元,根据请求数据中的读请求指令从SRAM单元中读取相应的存储数据,根据请求数据中的计算控制数据生成计算配置数据,将计算配置数据传输至计算单元,接收计算单元反馈的计算结果,以及将读取的存储数据和/或计算结果汇总为数据处理结果;
[0044] SRAM单元,包含静态随机存取存储器,用于存储源数据以及为控制单元提供存储数据;
[0045] 计算单元,用于根据计算配置数据从SRAM单元中读取相应的源数据进行张量计算,得到计算结果,并将计算结果传输至控制单元。
[0046] 进一步地,所述总线节点单元、控制单元、SRAM单元和计算单元组成片内处理单元,所述AI芯片包含若干相互独立的片内处理单元,各片内处理单元均通过相应的总线节点单元与总线互联单元连接,总线互联单元与各总线节点单元构成片内总线。所述总线互联单元还用于将相应片内处理单元的数据处理结果传输至另一片内处理单元,由另一片内处理单元的SRAM单元进行数据处理结果的存储。
[0047] 进一步地,所述高速串行收发单元可用于AI芯片间的数据通信,包含1条或多条高速串行收发器,示例性地,可采用8路30G/s高速串行收发器。片内相应控制单元的数据处理结果可通过总线互联单元传到片内的其他SRAM单元,或者传到其他侧的高速串行收发单元再传输至另一个AI芯片内。
[0048] 进一步地,所述计算单元包含张量计算算子和计算控制组件,计算控制组件用于根据计算配置数据调用张量计算算子对从SRAM单元中读取的相应存储数据进行张量计算,得到计算结果。示例性地,如图2所示,计算单元包含8个8位(A1‑A8、B1‑B8)乘法算子以及7个8位加法算子,能实现相应的卷积运算A1×B1+A2×B2+A3×B3+A4×B4+A5×B5+A6×B6+A7×B7+A8×B8;通过计算配置以及设置特定填充数据也能实现如A1+A2+A3+A4+A5+A6+A7+A8、A1×B1+A2等运算。如将乘法配置为旁路,并将乘法的其中一路输入数据配置为固定值1,则可实现A1+A2+A3+A4+A5+A6+A7+A8运算。
[0049] 进一步地,所述SRAM单元包括一个读写数据通道和若干读数据通道,SRAM单元通过读写数据通道与控制单元连接,通过读数据通道与计算单元连接。示例性地,SRAM单元可包含1个独立的读写数据通道A,16个独立的读数据通道D,1个独立的控制命令通道C,通道A用于控制单元读写SRAM单元内的数据,通道D用于计算单元读取SRAM单元内的数据,C用于计算单元读取SRAM单元中的命令序列来进行相应的张量计算,命令序列可如图3所示,计算单元通过解析命令序列中的相应命令,从SRAM单元中读取相应的源数据,并根据命令中的计算使能方式进行乘加运算或者加运算,根据命令中的输出结果目标地址进行计算结果的传输,由总线互联单元与各总线节点单元构成片内总线将计算结果传输至片内的其他SRAM单元存储或者由高速串行收发单元将计算结果传输至其他AI芯片的SRAM单元存储。所述SRAM单元的存储容量为2M字节,分为两个1M字节区域用于乒乓操作缓存。
[0050] 本实施例通过改进现有的AI芯片架构,采用分布式片内静态随机存取存储器代替现有的片外存储器方案,使得芯片的计算性能不再受存储带宽的限制,同时可大大减小计算延迟;本发明的AI芯片架构可以有效减小芯片面积,提高芯片生产良率。
[0051] 实施例2:
[0052] 本实施例提供一种AI系统,如图4所示,包括计算机、现场可编程门阵列(FPGA)和若干实施例1中的AI芯片,所述现场可编程门阵列分别与计算机和各AI芯片建立数据通信连接,所述现场可编程门阵列用于接收计算机的数据处理任务,并根据数据处理任务划分若干子任务,根据各子任务生成对应的通信数据传输至各AI芯片,以及接收各AI芯片反馈的数据处理结果,将各AI芯片的数据处理结果汇总后传输至计算机。所述计算机通过PCIE通道与现场可编程门阵列建立数据通信连接,所述现场可编程门阵列与各AI芯片的高速串行收发器建立数据通信连接,且各AI芯片之间通过高速串行收发器建立数据通信连接,一AI芯片可根据设定的数据传输协议,通过多路高速串行收发器将相应数据传到另一目标芯片。本实施例提供的基于实施例1的AI芯片所构建的AI系统,可以根据需求进行灵活的AI芯片扩展,可扩展性强。
[0053] 实施例3:
[0054] 本实施例提供一种AI数据处理方法,包括以下步骤:
[0055] 计算机获取相应的数据处理任务,并根据AI芯片数量、各AI芯片SRAM单元的存储资源以及各AI芯片计算单元的计算资源对数据处理任务进行子任务划分,生成各AI芯片对应的通信数据传输至可编程门阵列。计算机负责调度与分配系统的AI计算资源,包括当计算源数据张量较大或者算法需要多次迭代时进行源数据和算法子任务的切分,组织并打包各AI芯片计算所需要的通信数据,包含读写请求指令、源数据以及各AI芯片的计算控制参数等,以便后续分发到各AI芯片进行处理。
[0056] 现场可编程门阵列通过高速串行接口将相应的通信数据发送至各AI芯片。
[0057] 各AI芯片根据相应的通信数据进行数据处理,得到数据处理结果,将数据处理结果反馈至现场可编程门阵列。通信数据经过各AI芯片高速串行收发单元解析和片内总线传递后,相应的源数据被写到对应SRAM单元,AI芯片片内计算单元再读取解析源数据,并根据计算配置数据及命令序列启动张量运算,计算结果经控制单元及片内总线传入命令中指定的地址,这些计算结果可被传入其他SRAM单元,这些SRAM单元并不受限于本AI芯片片内SRAM单元,也可以是AI系统中其他AI芯片的片内SRAM单元。相应AI芯片片内SRAM单元存储的计算结果可被对应的控制单元读取,然后通过片内总线和高速串行收发单元反馈至现场可编程门阵列。
[0058] 现场可编程门阵列将各AI芯片的数据处理结果汇总后传输至计算机。
[0059] 对于AI芯片的数据运算处理过程,提供相应的计算示例:
[0060] 如存在如图5所示的数组A[16,16,1]和如图6所示的卷积运算核B[8,8,1],需要进行卷积运算中的乘加运算,可将图5所示数组A中标注为a的数据矩阵部分放在一个SRAM单元,此处称为SRAM1,标注为b的数据矩阵放在另一个SRAM单元,此处称为SRAM2,以此类推,同时分别将卷积核B放在这些SRAM单元。
[0061] 计算过程如图7‑图9所示,C11=A11×B11+A21×B21+A31×B31+A41×B41+A51×B51+A61×B61+A71×B71+A81×B81。C12=A12×B12+A22×B22+A32×B32+A42×B42+A52×B52+A62×B62+A72×B72+A82×B82,以此类推。C11‑C81存在另一个SRAM单元,此处称为SRAM_C,SRAM_C对应的计算单元执行C11+C21+C31+C41+C51+C61+C71+C81得到S11,S11存入另一个SRAM单元,此处称为SRAM_S。至此,既得到A×B卷积运算结果S[15,15,1]中的第一个数据S11。S12是卷积计算向X轴平移一步的结果,C12‑C72的计算方法与上述C11‑C71计算方式一致,因为参与运算的8×8计算矩阵向X轴右移一步,所以由标注为b的数据矩阵A11‑A81与B18‑B88乘加运算得到C82,C12‑C82执行加运算得到S12,并存入SRAM_S。至此既得到A×B卷积运算结果S[15,15,1]中的第二个数据S12。依次类推,可以得到A×B卷积运算结果S[15,15,1]中的其他结果。A×B卷积运算结果S[15,51,1]可以用于进行神经网络卷积计算中的其他计算,如继续进行多层卷积迭代计算。最终结果传入所述AI系统中的计算机。
[0062] 实施例4:
[0063] 本实施例提供计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行实施例3中计算机的数据处理过程。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(Memory Stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程系统。
[0064] 本实施例还提供包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行实施例3中计算机的数据处理过程。其中,所述计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程系统。
[0065] 最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。