首页> 中国专利> 人工神经网络处理器集成电路及该集成电路的设计方法

人工神经网络处理器集成电路及该集成电路的设计方法

摘要

本发明涉及集成电路技术及人工智能领域,特别涉及一种人工神经网络处理器(ANNP)集成电路,其包括状态控制模块、数据控制模块、参数控制模块和神经元运算阵列模块,状态控制模块用于检测数据控制模块、参数控制模块和神经元运算阵列模块的工作状态,在检测到各模块的工作状态后时同时生成整个集成电路当前的过程状态,控制数据控制模块、参数控制模块和神经元运算阵列模块进行同步工作,本发明结构简单,极大地提升了运算性能,同时有效地降低了数据访问带宽需求,本发明还公开了一种包含上述ANNP集成电路的集成电路设计方法。

著录项

  • 公开/公告号CN106022468A

    专利类型发明专利

  • 公开/公告日2016-10-12

    原文格式PDF

  • 申请/专利权人 成都启英泰伦科技有限公司;

    申请/专利号CN201610327324.5

  • 发明设计人 何云鹏;

    申请日2016-05-17

  • 分类号G06N3/06(20060101);

  • 代理机构

  • 代理人

  • 地址 610041 四川省成都市高新区天府四街199号1栋26层22号

  • 入库时间 2023-06-19 00:38:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-14

    专利权质押合同登记的注销 IPC(主分类):G06N3/06 授权公告日:20180601 登记号:2019510000065 出质人:成都启英泰伦科技有限公司 质权人:成都中小企业融资担保有限责任公司 解除日:20200723 申请日:20160517

    专利权质押合同登记的生效、变更及注销

  • 2019-07-05

    专利权质押合同登记的生效 IPC(主分类):G06N3/06 登记号:2019510000065 登记生效日:20190611 出质人:成都启英泰伦科技有限公司 质权人:成都中小企业融资担保有限责任公司 发明名称:人工神经网络处理器集成电路及该集成电路的设计方法 授权公告日:20180601 申请日:20160517

    专利权质押合同登记的生效、变更及注销

  • 2018-06-01

    授权

    授权

  • 2016-11-09

    实质审查的生效 IPC(主分类):G06N3/06 申请日:20160517

    实质审查的生效

  • 2016-10-12

    公开

    公开

说明书

技术领域

本发明涉及集成电路技术及人工智能领域,特别涉及一种人工神经网络处理器(ANNP)集成电路及该集成电路的设计方法。

背景技术

最近几年,随着互联网的普及,终端设备传感器的广泛应用,世界迎来了物联网时代,由于万物互联和传感器的广泛应用,人类累积了大量的数据,在这个时代背景下,随着模拟人类大脑神经网络的人工神经网络(ANN)计算在大数据分析和云计算得到应用,人工智能获得了极大的突破。微软小冰,苹果的Siri(语音助手), Goolge的无人驾驶,日本的家庭机器人以及最近打败李世石的AlphaGo(围棋人工智能)都是这个时代人工智能的产物,因此在今后的若干年内,人工智能将得到迅猛发展,并极大地改善或者影响人们的生活。各国政府和民间的公司都给予高度的重视。

传统的CPU(中央处理器)、GPU(图形处理器)或者DSP(数字信号处理器)等运算处理器或计算机强于数值计算和逻辑分析, 但是在面对复杂场景下的模式识别,自主决策和学习训练等方面以传统处理器为核心的计算机或智能机器与人比较显得吃力得多,人工神经网络模拟人类大脑神经元及神经网络结构,非常适合于大数据的学习训练、模式识别和判断。目前已经在图像识别、语音识别、文本识别等领域里得到广泛应用。

目前最通常的几种神经网络模型为深度神经网络(DNN)、卷积神经网络(CNN)及递归神经网络(RNN)。尤其是是DNN和CNN已经广泛应用在语音识别和图像识别中,各种神经网络尽管有细节不同,但主要结构和运算单元基本相同,都是模拟大脑神经网络的分层结构,通过逐层计算不断抽象最后完成目标物的识别,神经元计算单元都是主要以矩阵乘累加为主。

人工神经网络是人工智能应用的计算核心,完成绝大多数的运算任务。其计算量非常巨大,由于缺乏专门的神经网络处理器芯片,目前主要依靠云端计算机阵列或者多核CPU或GPU的软件方式来完成计算,不仅代价大而且功耗高,而本地人工智能的需求已经开始兴起,在本地终端需要低的成本和功耗来完成人工智能的计算,当前采用高端的多媒体SOC(片上系统)芯片的纯软件方式,不仅计算性能不够,而且成本功耗也大,这就阻碍了人工智能在终端设备智能硬件中的本地应用。

为解决上述问题, 需要发明一种能完成巨大的计算量的ANNP(人工神经网络处理器)的集成电路。该ANNP在同等芯片面积条件下,相较CPU或GPU大幅提升了芯片的计算性能,并且降低了功耗和成本。集成该ANNP模块,使得具有高计算性能低成本低功耗的人工智能芯片成为可能。

发明内容

本发明的目的在于克服现有技术中所存在的上述不足,提供一种能完成巨大的计算量的ANNP(人工神经网络处理器)集成电路及该集成电路的设计方法。

为了达到上述目的,本发明提供了如下技术方案。

一种ANNP集成电路,其包括:

神经元运算阵列模块,所述神经元运算阵列模块进行神经元的矩阵乘累加运算和激活运算;

数据控制模块,所述数据控制模块分别与所述神经元运算阵列模块、数据总线、第一运算结果缓存器和第二运算结果缓存器连接,并通过所述数据总线读取输入数据缓存器中的数据,所述数据控制模块读取所述输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器中的数据输送给所述神经元运算阵列模块作为所述神经元运算阵列模块的输入并将所述神经元运算阵列模块的运算结果缓存入所述第一运算结果缓存器或第二运算结果缓存器中;

参数控制模块,所述参数控制模块分别与所述神经元运算阵列模块和数据总线连接,并通过所述数据总线读取神经元参数存储器中预存的神经元参数输出给所述神经元运算阵列模块进行运算,所述神经元参数为神经元权值参数(以下简称权值参数),和神经元偏置阈值参数(以下简称偏置参数);

状态控制模块,所述状态控制模块分别与所述神经元运算阵列模块、数据控制模块、参数控制模块和数据总线连接,所述状态控制模块检测所述神经元运算阵列模块、参数控制模块和数据控制模块的工作状态,同时生成当前的过程状态,并控制所述神经元运算阵列模块、参数控制模块和数据控制模块根据所述过程状态进行同步工作。

作为本发明的优选方案,所述过程状态分为空闲状态、输入层加载状态、输入层运算状态、隐含层运算状态和输出层运算状态,当所述输入数据缓存器中待处理数据数量超过阈值并且所述第一运算结果缓存器或所述第二运算结果缓存器为空时,所述空闲状态结束进入所述输入层加载状态,当所述输入层加载状态完成输入加载后进入所述输入层运算状态,当所述输入层运算状态运算完成后进入所述隐含层运算状态,当所述隐含层运算状态运算完成后进入所述输出层运算状态,当所述输出层运算状态运算完成后回到所述空闲状态。

作为本发明的优选方案,所述第一运算结果缓存器和第二运算结果缓存器的读写状态轮流替换,即所述第一运算结果缓存器为读取缓存器时,所述第二运算结果缓存器为写入缓存器,所述第一运算结果缓存器为写入缓存器时,所述第二运算结果缓存器为读取缓存器,当所述第一运算结果缓存器或第二运算结果缓存器在前一层运算时是读取缓存器,则在当前层运算的时候是写入缓存器,当所述第二运算结果缓存器或第一运算结果缓存器在所述前一层运算时是写入缓存器,则所述第二运算结果缓存器或第一运算结果缓存器在所述当前层运算时是读取缓存器。

作为本发明的优选方案,所述ANN的隐含层分为A个层,A为大于1或等于1的正整数,分别为第一隐含层至第A隐含层,所述隐含层运算状态分为第一隐含层运算状态至第A隐含层运算状态。

作为本发明的优选方案,所述数据控制模块在所述空闲状态时将所述输入数据缓存器的存储信息输出给所述状态控制模块,所述数据控制模块在所述输入层加载状态时根据输入层输入向量大小、向量组数及滑窗大小从所述输入数据缓存器读取一部分待处理的输入数据,并将所述输入数据缓存入所述第一运算结果缓存器或第二运算结果缓存器中,在所述输入层运算状态时,所述数据控制模块将所述第一运算结果缓存器或第二运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算并将输入层运算结果缓存于所述第二运算结果缓存器或第一运算结果缓存器中,在所述第一隐含层运算状态时,所述数据控制模块将所述第二运算结果缓存器或第一运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将第一隐含层运算结果缓存于所述第一运算结果缓存器或第二运算结果缓存器中,以此类推,在所述第A隐含层运算状态时,若A为偶数,则所述数据控制模块将所述第一运算结果缓存器或第二运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将第A隐含层运算结果缓存于所述第二运算结果缓存器或第一运算结果缓存器中,若A为奇数,则所述数据控制模块将所述第二运算结果缓存器或第一运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将第A隐含层运算结果缓存于所述第一运算结果缓存器或第二运算结果缓存器中,在所述输出层运算状态时,若A为偶数,则所述数据控制模块将所述第二运算结果缓存器或第一运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将所述输出层运算结果缓存于所述第一运算结果缓存器或第二运算结果缓存器中,当所述第一运算结果缓存器中或第二运算结果缓存器的存储空间不够时,所述输出层运算结果会自动写入所述第二运算结果缓存器或第一运算结果缓存器中未被占用或已完成读取的存储空间,若A为奇数,则所述数据控制模块将所述第一运算结果缓存器或第二运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将输出层运算结果缓存于所述第二运算结果缓存器或第一运算结果缓存器中,当所述第二运算结果缓存器或第一运算结果缓存器中的存储空间不够时,所述输出层运算结果会自动写入所述第一运算结果缓存器或第二运算结果缓存器中未被占用或已完成读取的存储空间。

一种包含了上述ANNP集成电路的集成电路设计方法,其特征在于,该设计方法包括:

根据算法和应用通过系统配置ANNP的人工神经网络类型,输入数据类型,输入层神经元的输入向量大小、向量组数、滑窗大小及节点数,隐含层的层数及每层神经元节点的数量,输出层神经元节点数和输出向量大小;

所述状态控制器检测数据控制模块和神经元运算阵列模块输出的信号,并确定整个ANNP处理器的过程状态,控制所述神经元运算阵列模块、参数控制模块和数据控制模块根据所述过程状态进行同步工作;

所述数据控制模块根据所述过程状态输出或者输入数据,即从所述输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器中读取数据输出给所述神经元运算阵列模块进行运算,或者将所述神经元运算阵列模块的运算结果缓存入所述第一运算结果缓存器或第二运算结果缓存器中;

所述参数控制模块读取所述神经元参数存储器中存储的神经元参数并输出给所述神经元运算阵列模块进行运算;

所述神经元运算阵列模块根据所述数据控制模块和所述参数控制模块的输出进行运算;

所述神经元运算阵列模块通过所述数据控制模块从所述输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器获得数据进行运算并将运算结果缓存入所述第一运算结果缓存器或第二运算结果缓存器。

作为本发明的优选方案,所述神经元运算阵列模块可以同时进行多组输入数据向量及多个神经元节点的并行计算,所述每个神经元节点连接一组神经元参数向量,所述神经元运算阵列模块的阵列大小可以配置。

作为本发明的优选方案,所述神经元运算阵列由m组输入数据向量和n组神经元参数向量连接的m*n个神经元基本运算单元组成,m≥1, n≥1,所述神经元运算阵列可看作由n个神经元运算链路一组成,每个所述神经元运算链路一上有m个所述神经元基本运算单元,分别连接m组输入数据向量并共用一组所述神经元参数向量;所述神经元运算阵列还可看作由m个神经元运算链路二组成,每个所述神经元运算链路二上有n个所述神经元基本运算单元,分别连接n组神经元参数向量及共用一组输入数据向量,从而所述神经元运算阵列一次性进行m*n次的所述神经元基本运算单元的运算,同时读取所述输入数据向量和所述神经元参数的带宽需求分别下降到原来的1/n和1/m。

作为本发明的优选方案,所述神经元运算阵列运用如下公式: (1)

进行计算,其中I是由m组所述输入数据向量组成的m行K列的二维矩阵,每组所述输入数据向量包含K个输入数据向量元素,所述输入数据向量元素就是所述数据控制器从所述第一运算结果缓存器或第二运算结果缓存器中读取的所述输入数据或所述神经元运算阵列模块的运算结果,P是由n组所述神经元参数向量组成的N行K列的二维矩阵,每组所述神经元参数向量由K个神经元参数向量元素组成,每组所述神经元参数向量包含有与K个所述输入数据向量元素对应的K个所述神经元参数向量元素,所述参数元素就是所述参数控制器从所述神经元参数存储器中读取的所述权值参数。 为P矩阵的转置矩阵。f为神经元节点激活计算的函数,I矩阵和P转置矩阵的叉乘结果作为所述激活计算的输入。 O为当前层所述神经元运算阵列模块运算的输出结果矩阵,大小为m行n列。整个所述神经元运算阵列可以同时进行m组n个所述神经元的运算,即m×n个所述神经元运算。若当前层神经元节点数为L,则进行 L/n次神经元阵列运算就可以完成m组所述输入数据向量的当前层所有神经元节点的所述神经元运算。

I矩阵和P转置矩阵的叉乘的第m组所述输入数据向量,第l层的第n个神经元节点的运算可以用以下矩阵乘累加以及随后的激活计算的公式表达:(2),所述激活计算可根据不同的应用具体选择,作为本发明的优选方案, 所述激活计算包括一偏置计算和一激活函数计算,得到最终第m组输入向量和第n个神经元的输出结果O(m,n),如下公式: (3) (4),其中,S为激活函数,所述激活函数选取S函数,也可以根据不同应用需求选取其他激活函数; th_bias为每个所述神经元的偏置参数,在所述矩阵乘累加完成后,来自于所述参数控制器读取的所述神经元参数存储器中的所述神经元参数。

作为本发明的优选方案,所述神经元基本运算单元包括两个一维向量乘累加和激活运算,运用公式进行计算,其中Ii为具有K个元素的一维所述输入数据向量,Pi为具有K个元素的一维所述神经元参数向量,其中i等于1到K,>

作为本发明的优选方案,每个所述神经元节点的输入是所述输入层加载状态时加载的输入数据或上一层的运算结果,即所述输入层加载状态的输入是所述输入数据,所述输入层运算状态的输入是所述输入层加载状态加载的所述输入数据,所述隐含层运算状态的输入是所述输入层运算状态运算得到的所述输入层运算结果,所述输出层运算状态的输入是所述隐含层运算状态运算得到的所述隐含层运算结果,每个所述神经元节点的每一个所述输入向量元素对应有一个不同的权值参数,每一个所述神经元的计算包含一组所述输入向量元素和对应的所述权值参数相乘并累加,然后将累加的结果进行激活运算从而得到所述神经元的结果输出,不同所述神经元都具有相同的矩阵乘累加及所述激活运算结果,将所述相同的矩阵乘累加和激活运算结构抽取出来形成标准的所述神经元基本运算单元。

作为本发明的优选方案,所述状态控制模块、数据控制模块、神经元运算阵列模块和参数控制模块通过总线获得系统配置的参数,所述参数包括神经网络类型、数据结构、神经网络层数、神经元节点数、数据及参数存储起始地址、数据及参数存储偏移地址、数据及参数存储地址大小等参数,从而使得数据和参数的存取、状态控制等具有对不同神经网络类型和性能要求很好的适应性。

与现有技术相比,本发明的有益效果:

采用本发明ANNP集成电路,通过系统总线参数配置适应不同类型和性能要求的ANN运算,神经元运算阵列具有输入数据和神经元参数共用的神经元阵列运算结构特点,极大地提升了运算性能,同时有效地降低了数据访问带宽需求。

附图说明

图1为本发明ANNP集成电路框图;

图2为本发明ANNP集成电路各工作状态转移框图;

图3为本发明ANNP集成电路隐含层各工作状态转移框图;

图4为本发明一个神经元计算结构图;

图5为本发明一个神经元计算结构缩略图;

图6为本发明神经元运算阵列图。

具体实施方式

下面结合实施例及具体实施方式对本发明作进一步的详细描述,但不应将此理解为本发明上述主体的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

如图1和图2所示,一种ANNP集成电路,包括状态控制模块、数据控制模块、参数控制模块和神经元运算阵列模块,状态控制模块用于检测数据控制模块、参数控制模块和神经元运算阵列模块的工作状态,在检测到各模块的工作状态后时同时生成整个集成电路当前的过程状态,控制数据控制模块、参数控制模块和神经元运算阵列模块进行同步工作,整个过程状态分为空闲状态、输入层加载状态、输入层运算状态、隐含层运算状态和输出层运算状态,在本实施例中隐含层分为4层,分别为第一隐含层、第二隐含层、第三隐含层和第四隐含层,分别对应第一隐含层运算状态到第四隐含层运算状态,神经元运算阵列模块分别与状态控制模块、参数控制模块和数据控制模块进行数据传输,进而进行神经元矩阵乘累加运算和激活运算,数据控制模块分别与神经元运算阵列模块、数据总线、第一运算结果缓存器和第二运算结果缓存器连接,并通过数据总线从输入数据缓存器中读取输入数据,将输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器中的数据输送给神经元运算阵列模块进行运算,神经元运算阵列模块的运算结果由数据控制模块缓存入第一运算结果缓存器或第二运算结果缓存器中,参数控制模块在神经元运算阵列模块进行运算时读取神经元参数存储器中预存的神经元参数给神经元运算阵列模块进行运算在本实施例中,神经元参数存储器是FLASH。

输入数据缓存器中待处理数据数量超过阈值并且第一运算结果缓存器或第二运算结果缓存器为空时,空闲状态结束进入输入层加载状态,当输入层加载状态完成输入加载后进入输入层运算状态,当输入层运算状态运算完成后进入第一隐含层运算状态,当第一隐含层运算状态运算完成后进入第二隐含层运算状态,当第二隐含层运算状态运算完成后进入第三隐含层运算状态,当第三隐含层运算状态运算完成后进入第四隐含层运算状态,当第四隐含层运算状态运算完成后进入输出层运算状态,当输出层运算状态运算完成后回到空闲状态,依次循环,第一运算结果缓存器和第二运算结果缓存器的读写状态轮流替换,即第一运算结果缓存器和第二运算结果缓存器的读写状态不相同,只有在输出层运算状态除外,详细处理过程如下:数据控制模块在空闲状态时将输入数据缓存器的存储信息输出给状态控制模块,数据控制模块在输入层加载状态时加载输入数据,并将输入数据缓存入第一运算结果缓存器中,在输入层运算状态时,数据控制模块将第一运算结果缓存器中的数据输出给神经元运算阵列模块进行运算并将输入层运算结果缓存于第二运算结果缓存器中,在第一隐含层运算状态时,数据控制模块将第二运算结果缓存器中的输入层运算结果输出给神经元运算阵列模块进行运算并将第一隐含层运算结果缓存于第一运算结果缓存器中,依此类推,在剩余其他各层运算时,将前一层运算完的缓存入第一运算结果缓存器或第二运算结果缓存器的结果由数据控制模块读取并输出给当前层神经元运算阵列的输入, 前一层运算时用作数据输入读取的第一运算结果缓存器或第二运算结果缓存器用于存储当前层神经元运算阵列结果,在输出层运算状态时,数据控制模块将第二运算结果缓存器中的第四隐含层运算结果输出给神经元运算阵列模块进行运算并将输出层运算结果缓存于第一运算结果缓存器,当所述第一运算结果缓存器中的存储空间不够时,输出层运算结果会自动写入第二运算结果缓存器中未被占用或已完成读取的存储空间。

结合图1和图2,一种包含上述ANNP集成电路的集成电路设计方法,初始状态时,系统根据算法和应用配置ANNP人工神经网络类型、输入数据类型、输入层节点数、隐含层的层数及每层神经元节点数和输出层节点数,状态控制器检测数据控制模块和神经元运算阵列模块输出的信号,并确定整个ANNP处理器的过程状态,数据控制模块根据过程状态输出或者读取输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器中的数据,参数控制模块读取神经元参数存储器中存储的神经元参数并输出给神经元运算阵列模块进行运算,神经元运算阵列模块根据数据控制模块和参数控制模块的输出进行运算,神经元运算阵列模块的运算结果缓存入第一运算结果缓存器或第二运算结果缓存器。本实施例中的输入数据缓存器是片内的RAM,神经元参数存储器是FLASH,第一运算结果缓存器和第二运算结果缓存器是多条具有双端口读写功能的RAM或者FIFO(先进先出存储器),在其他实施例中输入数据缓存器还可以是外部DRAM器件中的部分存储空间,神经元参数存储器还可以是片内RAM或者外部DRAM器件中部分存储空间, 由系统在开机时从外部FLASH中导入到片内RAM中或者片外DRAM中。

如图2、图3和图4所示,每个神经元节点的输入是输入数据或者上一层的运算结果,即输入层加载状态的输入是输入数据,输入层运算状态的输入是输入层加载状态加载的输入数据,第一隐含层运算状态的输入是输入层运算状态运算得到的输入层运算结果,以此类推,输出层运算状态的输入是第四隐含层运算状态运算得到的第四隐含层运算结果,每个神经元节点的每一个输入向量元素I对应有一个不同的权值参数P,一个神经元节点的计算包含一组输入向量和对应的权值参数向量相乘并累加,然后将累加的结果进行激活计算从而得到神经元的结果输出,不同神经元都具有相同的矩阵乘累加计算结构,将上述相同的矩阵乘累加计算结构抽取出来形成标准的神经元基本运算单元。

如图4、图5所示,图4和图5均表示的是一个神经元基本运算单元的计算结构图,图中I表示一组一维输入数据向量, P表示一组一维神经元参数向量,输入数据向量和神经元参数向量中的元素数据按周期同步依次输入,输入数据向量的元素数据与对应的神经元参数向量的元素数据相乘,然后送入累加器累加,当一组输入数据向量全部输入完成乘累加后进行激活运算,图中的X表示乘法,∑表示累加,f表示激活计算函数,具体激活函数的公式可以根据应用选择,具体公式如下,(5)在本实例中,f函数包含一偏置计算和一Sigmoid函数计算,具体如下: (6),其中S为sigmoid函数。

如图6所示,神经元运算阵列模块可以同时进行m组输入数据向量及n个神经元节点的阵列计算,神经元运算阵列就是由m*n个神经元基本运算单元组成的矩阵阵列运算。神经元运算阵列的大小m, n的值可以系统配置,本实施例中神经元运算阵列从横向看由m个神经元并行运算链路组成,每个链路上有n个神经元基本运算单元,每个运算链路分别连接n个神经元参数向量及共用一组输入数据向量;本实施例中神经元运算阵列从纵向看由n个神经元并行运算链路组成,每个链路上有m个神经元基本运算单元, 每个运算链路分别连接m组输入数据向量及共用一组神经元参数向量,通过输入数据和神经元参数的共享,可以大幅降低系统需要总线带宽。图6是神经元运算阵列结构图,图中的P1、P2到Pn表示n个一维神经元参数向量,本实施例中n等于64,I1、I2、到Im表示m组一维输入数据向量,本实施例中m等于64,在具体运行中,m和n可以从1到64可配,本实施例的神经元运算阵列一次性可以进行64乘64次的神经元计算,数据带宽和参数带宽下降到原来的1/64,运算性能提升4096倍。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号