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

文档序号:10656247阅读:433来源:国知局
人工神经网络处理器集成电路及该集成电路的设计方法
【专利摘要】本发明涉及集成电路技术及人工智能领域,特别涉及一种人工神经网络处理器(ANNP)集成电路,其包括状态控制模块、数据控制模块、参数控制模块和神经元运算阵列模块,状态控制模块用于检测数据控制模块、参数控制模块和神经元运算阵列模块的工作状态,在检测到各模块的工作状态后时同时生成整个集成电路当前的过程状态,控制数据控制模块、参数控制模块和神经元运算阵列模块进行同步工作,本发明结构简单,极大地提升了运算性能,同时有效地降低了数据访问带宽需求,本发明还公开了一种包含上述ANNP集成电路的集成电路设计方法。
【专利说明】
人工神经网络处理器集成电路及该集成电路的设计方法
技术领域
[0001] 本发明设及集成电路技术及人工智能领域,特别设及一种人工神经网络处理器 (ANNP)集成电路及该集成电路的设计方法。
【背景技术】
[0002] 最近几年,随着互联网的普及,终端设备传感器的广泛应用,世界迎来了物联网时 代,由于万物互联和传感器的广泛应用,人类累积了大量的数据,在运个时代背景下,随着 模拟人类大脑神经网络的人工神经网络(ANN)计算在大数据分析和云计算得到应用,人工 智能获得了极大的突破。微软小冰,苹果的Siri(语音助手),Goolge的无人驾驶,日本的家 庭机器人W及最近打败李世石的AlphaGo(围棋人工智能)都是运个时代人工智能的产物, 因此在今后的若干年内,人工智能将得到迅猛发展,并极大地改善或者影响人们的生活。各 国政府和民间的公司都给予高度的重视。
[0003] 传统的CPU(中央处理器)、GPU(图形处理器)或者DSP(数字信号处理器)等运算处 理器或计算机强于数值计算和逻辑分析,但是在面对复杂场景下的模式识别,自主决策和 学习训练等方面W传统处理器为核屯、的计算机或智能机器与人比较显得吃力得多,人工神 经网络模拟人类大脑神经元及神经网络结构,非常适合于大数据的学习训练、模式识别和 判断。目前已经在图像识别、语音识别、文本识别等领域里得到广泛应用。
[0004] 目前最通常的几种神经网络模型为深度神经网络(DNN)、卷积神经网络(CNN)及递 归神经网络(RNN)。尤其是是D順和C順已经广泛应用在语音识别和图像识别中,各种神经网 络尽管有细节不同,但主要结构和运算单元基本相同,都是模拟大脑神经网络的分层结构, 通过逐层计算不断抽象最后完成目标物的识别,神经元计算单元都是主要W矩阵乘累加为 主。
[0005] 人工神经网络是人工智能应用的计算核屯、,完成绝大多数的运算任务。其计算量 非常巨大,由于缺乏专口的神经网络处理器忍片,目前主要依靠云端计算机阵列或者多核 CPU或GPU的软件方式来完成计算,不仅代价大而且功耗高,而本地人工智能的需求已经开 始兴起,在本地终端需要低的成本和功耗来完成人工智能的计算,当前采用高端的多媒体 SOC(片上系统)忍片的纯软件方式,不仅计算性能不够,而且成本功耗也大,运就阻碍了人 工智能在终端设备智能硬件中的本地应用。
[0006] 为解决上述问题,需要发明一种能完成巨大的计算量的ANNP(人工神经网络处理 器)的集成电路。该ANNP在同等忍片面积条件下,相较CPU或GPU大幅提升了忍片的计算性 能,并且降低了功耗和成本。集成该ANNP模块,使得具有高计算性能低成本低功耗的人工智 能忍片成为可能。

【发明内容】

[0007] 本发明的目的在于克服现有技术中所存在的上述不足,提供一种能完成巨大的计 算量的ANNP(人工神经网络处理器)集成电路及该集成电路的设计方法。
[0008] 为了达到上述目的,本发明提供了如下技术方案。
[0009] -种ANNP集成电路,其包括: 神经元运算阵列模块,所述神经元运算阵列模块进行神经元的矩阵乘累加运算和激活 运算; 数据控制模块,所述数据控制模块分别与所述神经元运算阵列模块、数据总线、第一运 算结果缓存器和第二运算结果缓存器连接,并通过所述数据总线读取输入数据缓存器中的 数据,所述数据控制模块读取所述输入数据缓存器、第一运算结果缓存器或第二运算结果 缓存器中的数据输送给所述神经元运算阵列模块作为所述神经元运算阵列模块的输入并 将所述神经元运算阵列模块的运算结果缓存入所述第一运算结果缓存器或第二运算结果 缓存器中; 参数控制模块,所述参数控制模块分别与所述神经元运算阵列模块和数据总线连接, 并通过所述数据总线读取神经元参数存储器中预存的神经元参数输出给所述神经元运算 阵列模块进行运算,所述神经元参数为神经元权值参数(W下简称权值参数),和神经元偏 置阔值参数(W下简称偏置参数); 状态控制模块,所述状态控制模块分别与所述神经元运算阵列模块、数据控制模块、参 数控制模块和数据总线连接,所述状态控制模块检测所述神经元运算阵列模块、参数控制 模块和数据控制模块的工作状态,同时生成当前的过程状态,并控制所述神经元运算阵列 模块、参数控制模块和数据控制模块根据所述过程状态进行同步工作。
[0010] 作为本发明的优选方案,所述过程状态分为空闲状态、输入层加载状态、输入层运 算状态、隐含层运算状态和输出层运算状态,当所述输入数据缓存器中待处理数据数量超 过阔值并且所述第一运算结果缓存器或所述第二运算结果缓存器为空时,所述空闲状态结 束进入所述输入层加载状态,当所述输入层加载状态完成输入加载后进入所述输入层运算 状态,当所述输入层运算状态运算完成后进入所述隐含层运算状态,当所述隐含层运算状 态运算完成后进入所述输出层运算状态,当所述输出层运算状态运算完成后回到所述空闲 状态。
[0011] 作为本发明的优选方案,所述第一运算结果缓存器和第二运算结果缓存器的读写 状态轮流替换,即所述第一运算结果缓存器为读取缓存器时,所述第二运算结果缓存器为 写入缓存器,所述第一运算结果缓存器为写入缓存器时,所述第二运算结果缓存器为读取 缓存器,当所述第一运算结果缓存器或第二运算结果缓存器在前一层运算时是读取缓存 器,则在当前层运算的时候是写入缓存器,当所述第二运算结果缓存器或第一运算结果缓 存器在所述前一层运算时是写入缓存器,则所述第二运算结果缓存器或第一运算结果缓存 器在所述当前层运算时是读取缓存器。
[0012] 作为本发明的优选方案,所述Ar^N的隐含层分为A个层,A为大于1或等于1的正整 数,分别为第一隐含层至第A隐含层,所述隐含层运算状态分为第一隐含层运算状态至第A 隐含层运算状态。
[0013] 作为本发明的优选方案,所述数据控制模块在所述空闲状态时将所述输入数据缓 存器的存储信息输出给所述状态控制模块,所述数据控制模块在所述输入层加载状态时根 据输入层输入向量大小、向量组数及滑窗大小从所述输入数据缓存器读取一部分待处理的 输入数据,并将所述输入数据缓存入所述第一运算结果缓存器或第二运算结果缓存器中, 在所述输入层运算状态时,所述数据控制模块将所述第一运算结果缓存器或第二运算结果 缓存器中的数据输出给所述神经元运算阵列模块进行运算并将输入层运算结果缓存于所 述第二运算结果缓存器或第一运算结果缓存器中,在所述第一隐含层运算状态时,所述数 据控制模块将所述第二运算结果缓存器或第一运算结果缓存器中的数据输出给所述神经 元运算阵列模块进行运算,并将第一隐含层运算结果缓存于所述第一运算结果缓存器或第 二运算结果缓存器中,W此类推,在所述第A隐含层运算状态时,若A为偶数,则所述数据控 制模块将所述第一运算结果缓存器或第二运算结果缓存器中的数据输出给所述神经元运 算阵列模块进行运算,并将第A隐含层运算结果缓存于所述第二运算结果缓存器或第一运 算结果缓存器中,若A为奇数,则所述数据控制模块将所述第二运算结果缓存器或第一运算 结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将第A隐含层运算结果 缓存于所述第一运算结果缓存器或第二运算结果缓存器中,在所述输出层运算状态时,若A 为偶数,则所述数据控制模块将所述第二运算结果缓存器或第一运算结果缓存器中的数据 输出给所述神经元运算阵列模块进行运算,并将所述输出层运算结果缓存于所述第一运算 结果缓存器或第二运算结果缓存器中,当所述第一运算结果缓存器中或第二运算结果缓存 器的存储空间不够时,所述输出层运算结果会自动写入所述第二运算结果缓存器或第一运 算结果缓存器中未被占用或已完成读取的存储空间,若A为奇数,则所述数据控制模块将所 述第一运算结果缓存器或第二运算结果缓存器中的数据输出给所述神经元运算阵列模块 进行运算,并将输出层运算结果缓存于所述第二运算结果缓存器或第一运算结果缓存器 中,当所述第二运算结果缓存器或第一运算结果缓存器中的存储空间不够时,所述输出层 运算结果会自动写入所述第一运算结果缓存器或第二运算结果缓存器中未被占用或已完 成读取的存储空间。
[0014] -种包含了上述ANNP集成电路的集成电路设计方法,其特征在于,该设计方法包 括: 根据算法和应用通过系统配置ANNP的人工神经网络类型,输入数据类型,输入层神经 元的输入向量大小、向量组数、滑窗大小及节点数,隐含层的层数及每层神经元节点的数 量,输出层神经元节点数和输出向量大小; 所述状态控制器检测数据控制模块和神经元运算阵列模块输出的信号,并确定整个 ANNP处理器的过程状态,控制所述神经元运算阵列模块、参数控制模块和数据控制模块根 据所述过程状态进行同步工作; 所述数据控制模块根据所述过程状态输出或者输入数据,即从所述输入数据缓存器、 第一运算结果缓存器或第二运算结果缓存器中读取数据输出给所述神经元运算阵列模块 进行运算,或者将所述神经元运算阵列模块的运算结果缓存入所述第一运算结果缓存器或 第二运算结果缓存器中; 所述参数控制模块读取所述神经元参数存储器中存储的神经元参数并输出给所述神 经元运算阵列模块进行运算; 所述神经元运算阵列模块根据所述数据控制模块和所述参数控制模块的输出进行运 算; 所述神经元运算阵列模块通过所述数据控制模块从所述输入数据缓存器、第一运算结 果缓存器或第二运算结果缓存器获得数据进行运算并将运算结果缓存入所述第一运算结 果缓存器或第二运算结果缓存器。
[0015] 作为本发明的优选方案,所述神经元运算阵列模块可W同时进行多组输入数据向 量及多个神经元节点的并行计算,所述每个神经元节点连接一组神经元参数向量,所述神 经元运算阵列模块的阵列大小可W配置。
[0016] 作为本发明的优选方案,所述神经元运算阵列由m组输入数据向量和n组神经元参 数向量连接的m*n个神经元基本运算单元组成,,n>l,所述神经元运算阵列可看作由 n个神经元运算链路一组成,每个所述神经元运算链路一上有m个所述神经元基本运算单 元,分别连接m组输入数据向量并共用一组所述神经元参数向量;所述神经元运算阵列还可 看作由m个神经元运算链路二组成,每个所述神经元运算链路二上有n个所述神经元基本运 算单元,分别连接n组神经元参数向量及共用一组输入数据向量,从而所述神经元运算阵列 一次性进行m*n次的所述神经元基本运算单元的运算,同时读取所述输入数据向量和所述 神经元参数的带宽需求分别下降到原来的1/n和1/m。
[0017] 作为本发明的优选方案,所述神经元运算阵列运用如下公式
(1) 进行计算,其中I是由m组所述输入数据向量组成的m行K列的二维矩阵,每组所述输入 数据向量包含K个输入数据向量元素,所述输入数据向量元素就是所述数据控制器从所述 第一运算结果缓存器或第二运算结果缓存器中读取的所述输入数据或所述神经元运算阵 列模块的运算结果,P是由n组所述神经元参数向量组成的N行K列的二维矩阵,每组所述神 经元参数向量由K个神经元参数向量元素组成,每组所述神经元参数向量包含有与K个所述 输入数据向量元素对应的K个所述神经元参数向量元素,所述参数元素就是所述参数控制 器从所述神经元参数存储器中读取的所述权值参数。为P矩阵的转置矩阵。f为神经元 节点激活计算的函数,I矩阵和P转置矩阵的叉乘结果作为所述激活计算的输入。0为当前 层所述神经元运算阵列模块运算的输出结果矩阵,大小为m行n列。整个所述神经元运算阵 列可W同时进行m组n个所述神经元的运算,即m X n个所述神经元运算。若当前层神经元节 点数为L,则进行L/n次神经元阵列运算就可W完成m组所述输入数据向量的当前层所有神 经元节点的所述神经元运算。
[0018] I矩阵和P转置矩阵的叉乘的第m组所述输入数据向量,第1层的第n个神经元节点 的运算可W用W下矩阵乘累加 W及随后的激活计算的公式表达
(2),所述激活计算可根据不同的应用具体选择,作为本发明的优选方案,所述激活计算包 括一偏置计算和一激活函数计算,得到最终第m组输入向量和第n个神经元的输出结果0(m, n),如下公式:
(4),其中,S为激 活函数,所述激活函数选取S函数,也可W根据不同应用需求选取其他激活函数;th_bias 为每个所述神经元的偏置参数,在所述矩阵乘累加完成后,来自于所述参数控制器读取的 所述神经元参数存储器中的所述神经元参数。
[0019] 作为本发明的优选方案,所述神经元基本运算单元包括两个一维向量乘累加和激 活运算,运用公式
进行计算,其中Ii为具有K个元素的一维所述输入数据 向量,Pi为具有K个元素的一维所述神经元参数向量,其中i等于1到K,f为所述神经元节点 激活运算函数。
[0020] 作为本发明的优选方案,每个所述神经元节点的输入是所述输入层加载状态时加 载的输入数据或上一层的运算结果,即所述输入层加载状态的输入是所述输入数据,所述 输入层运算状态的输入是所述输入层加载状态加载的所述输入数据,所述隐含层运算状态 的输入是所述输入层运算状态运算得到的所述输入层运算结果,所述输出层运算状态的输 入是所述隐含层运算状态运算得到的所述隐含层运算结果,每个所述神经元节点的每一个 所述输入向量元素对应有一个不同的权值参数,每一个所述神经元的计算包含一组所述输 入向量元素和对应的所述权值参数相乘并累加,然后将累加的结果进行激活运算从而得到 所述神经元的结果输出,不同所述神经元都具有相同的矩阵乘累加及所述激活运算结果, 将所述相同的矩阵乘累加和激活运算结构抽取出来形成标准的所述神经元基本运算单元。
[0021] 作为本发明的优选方案,所述状态控制模块、数据控制模块、神经元运算阵列模块 和参数控制模块通过总线获得系统配置的参数,所述参数包括神经网络类型、数据结构、神 经网络层数、神经元节点数、数据及参数存储起始地址、数据及参数存储偏移地址、数据及 参数存储地址大小等参数,从而使得数据和参数的存取、状态控制等具有对不同神经网络 类型和性能要求很好的适应性。
[0022] 与现有技术相比,本发明的有益效果: 采用本发明ANNP集成电路,通过系统总线参数配置适应不同类型和性能要求的MN运 算,神经元运算阵列具有输入数据和神经元参数共用的神经元阵列运算结构特点,极大地 提升了运算性能,同时有效地降低了数据访问带宽需求。
【附图说明】
[0023] 图1为本发明ANNP集成电路框图; 图2为本发明ANNP集成电路各工作状态转移框图; 图3为本发明ANNP集成电路隐含层各工作状态转移框图; 图4为本发明一个神经元计算结构图; 图5为本发明一个神经元计算结构缩略图; 图6为本发明神经元运算阵列图。
【具体实施方式】
[0024] 下面结合实施例及【具体实施方式】对本发明作进一步的详细描述,但不应将此理解 为本发明上述主体的范围仅限于W下的实施例,凡基于本
【发明内容】
所实现的技术均属于本 发明的范围。
[002引如图1和图2所示,一种MNP集成电路,包括状态控制模块、数据控制模块、参数控 制模块和神经元运算阵列模块,状态控制模块用于检测数据控制模块、参数控制模块和神 经元运算阵列模块的工作状态,在检测到各模块的工作状态后时同时生成整个集成电路当 前的过程状态,控制数据控制模块、参数控制模块和神经元运算阵列模块进行同步工作,整 个过程状态分为空闲状态、输入层加载状态、输入层运算状态、隐含层运算状态和输出层运 算状态,在本实施例中隐含层分为4层,分别为第一隐含层、第二隐含层、第=隐含层和第四 隐含层,分别对应第一隐含层运算状态到第四隐含层运算状态,神经元运算阵列模块分别 与状态控制模块、参数控制模块和数据控制模块进行数据传输,进而进行神经元矩阵乘累 加运算和激活运算,数据控制模块分别与神经元运算阵列模块、数据总线、第一运算结果缓 存器和第二运算结果缓存器连接,并通过数据总线从输入数据缓存器中读取输入数据,将 输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器中的数据输送给神经元运算 阵列模块进行运算,神经元运算阵列模块的运算结果由数据控制模块缓存入第一运算结果 缓存器或第二运算结果缓存器中,参数控制模块在神经元运算阵列模块进行运算时读取神 经元参数存储器中预存的神经元参数给神经元运算阵列模块进行运算在本实施例中,神经 元参数存储器是FLA甜。
[0026] 输入数据缓存器中待处理数据数量超过阔值并且第一运算结果缓存器或第二运 算结果缓存器为空时,空闲状态结束进入输入层加载状态,当输入层加载状态完成输入加 载后进入输入层运算状态,当输入层运算状态运算完成后进入第一隐含层运算状态,当第 一隐含层运算状态运算完成后进入第二隐含层运算状态,当第二隐含层运算状态运算完成 后进入第=隐含层运算状态,当第=隐含层运算状态运算完成后进入第四隐含层运算状 态,当第四隐含层运算状态运算完成后进入输出层运算状态,当输出层运算状态运算完成 后回到空闲状态,依次循环,第一运算结果缓存器和第二运算结果缓存器的读写状态轮流 替换,即第一运算结果缓存器和第二运算结果缓存器的读写状态不相同,只有在输出层运 算状态除外,详细处理过程如下:数据控制模块在空闲状态时将输入数据缓存器的存储信 息输出给状态控制模块,数据控制模块在输入层加载状态时加载输入数据,并将输入数据 缓存入第一运算结果缓存器中,在输入层运算状态时,数据控制模块将第一运算结果缓存 器中的数据输出给神经元运算阵列模块进行运算并将输入层运算结果缓存于第二运算结 果缓存器中,在第一隐含层运算状态时,数据控制模块将第二运算结果缓存器中的输入层 运算结果输出给神经元运算阵列模块进行运算并将第一隐含层运算结果缓存于第一运算 结果缓存器中,依此类推,在剩余其他各层运算时,将前一层运算完的缓存入第一运算结果 缓存器或第二运算结果缓存器的结果由数据控制模块读取并输出给当前层神经元运算阵 列的输入,前一层运算时用作数据输入读取的第一运算结果缓存器或第二运算结果缓存 器用于存储当前层神经元运算阵列结果,在输出层运算状态时,数据控制模块将第二运算 结果缓存器中的第四隐含层运算结果输出给神经元运算阵列模块进行运算并将输出层运 算结果缓存于第一运算结果缓存器,当所述第一运算结果缓存器中的存储空间不够时,输 出层运算结果会自动写入第二运算结果缓存器中未被占用或已完成读取的存储空间。
[0027] 结合图1和图2,一种包含上述ANNP集成电路的集成电路设计方法,初始状态时,系 统根据算法和应用配置ANNP人工神经网络类型、输入数据类型、输入层节点数、隐含层的层 数及每层神经元节点数和输出层节点数,状态控制器检测数据控制模块和神经元运算阵列 模块输出的信号,并确定整个ANNP处理器的过程状态,数据控制模块根据过程状态输出或 者读取输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器中的数据,参数控制 模块读取神经元参数存储器中存储的神经元参数并输出给神经元运算阵列模块进行运算, 神经元运算阵列模块根据数据控制模块和参数控制模块的输出进行运算,神经元运算阵列 模块的运算结果缓存入第一运算结果缓存器或第二运算结果缓存器。本实施例中的输入数 据缓存器是片内的RAM,神经元参数存储器是FLA細,第一运算结果缓存器和第二运算结果 缓存器是多条具有双端口读写功能的RAM或者FIFO(先进先出存储器),在其他实施例中输 入数据缓存器还可W是外部DRAM器件中的部分存储空间,神经元参数存储器还可W是片内 RAM或者外部DRAM器件中部分存储空间,由系统在开机时从外部FLA甜中导入到片内RAM中 或者片外DRAM中。
[0028] 如图2、图3和图4所示,每个神经元节点的输入是输入数据或者上一层的运算结 果,即输入层加载状态的输入是输入数据,输入层运算状态的输入是输入层加载状态加载 的输入数据,第一隐含层运算状态的输入是输入层运算状态运算得到的输入层运算结果, W此类推,输出层运算状态的输入是第四隐含层运算状态运算得到的第四隐含层运算结 果,每个神经元节点的每一个输入向量元素 I对应有一个不同的权值参数P,一个神经元节 点的计算包含一组输入向量和对应的权值参数向量相乘并累加,然后将累加的结果进行激 活计算从而得到神经元的结果输出,不同神经元都具有相同的矩阵乘累加计算结构,将上 述相同的矩阵乘累加计算结构抽取出来形成标准的神经元基本运算单元。
[0029] 如图4、图5所示,图4和图5均表示的是一个神经元基本运算单元的计算结构图,图 中I表示一组一维输入数据向量,P表示一组一维神经元参数向量,输入数据向量和神经元 参数向量中的元素数据按周期同步依次输入,输入数据向量的元素数据与对应的神经元参 数向量的元素数据相乘,然后送入累加器累加,当一组输入数据向量全部输入完成乘累加 后进行激活运算,图中的X表示乘法,E表示累加,f表示激活计算函数,具体激活函数的公
式可W根据应用选择,具体公式如1 本实例中,f函数包含一偏置计 算和一Sigmoid函数计算,具体如下; (6),其中S为sigmoid函数。
[0030] 如图6所示,神经元运算阵列模块可W同时进行m组输入数据向量及n个神经元节 点的阵列计算,神经元运算阵列就是由m*n个神经元基本运算单元组成的矩阵阵列运算。神 经元运算阵列的大小m,n的值可W系统配置,本实施例中神经元运算阵列从横向看由m个 神经元并行运算链路组成,每个链路上有n个神经元基本运算单元,每个运算链路分别连接 n个神经元参数向量及共用一组输入数据向量;本实施例中神经元运算阵列从纵向看由n个 神经元并行运算链路组成,每个链路上有m个神经元基本运算单元,每个运算链路分别连 接m组输入数据向量及共用一组神经元参数向量,通过输入数据和神经元参数的共享,可W 大幅降低系统需要总线带宽。图6是神经元运算阵列结构图,图中的Pl、P巧IjPn表示n个一维 神经元参数向量,本实施例中n等于64,11、12、到1111表示111组一维输入数据向量,本实施例中 m等于64,在具体运行中,m和n可W从巧化4可配,本实施例的神经元运算阵列一次性可W进 行64乘64次的神经元计算,数据带宽和参数带宽下降到原来的1/64,运算性能提升4096倍。
【主权项】
1. 一种ANNP处理器集成电路,其包括: 神经元运算阵列模块,所述神经元运算阵列模块进行多个神经元的矩阵乘累加运算和 激活函数运算; 数据控制模块,所述数据控制模块分别与所述神经元运算阵列模块、数据总线、第一运 算结果缓存器和第二运算结果缓存器连接,并通过所述数据总线读取输入数据缓存器中的 数据,所述数据控制模块读取所述输入数据缓存器、第一运算结果缓存器或第二运算结果 缓存器中的数据输送给所述神经元运算阵列模块作为所述神经元运算阵列模块的输入并 将所述神经元运算阵列模块的运算结果缓存入所述第一运算结果缓存器或第二运算结果 缓存器中; 参数控制模块,所述参数控制模块分别与所述神经元运算阵列模块和数据总线连接, 并通过所述数据总线读取神经元参数存储器中预存的神经元参数输出给所述神经元运算 阵列模块进行运算; 状态控制模块,所述状态控制模块分别与所述神经元运算阵列模块、数据控制模块、参 数控制模块和数据总线连接,所述状态控制模块检测所述神经元运算阵列模块、参数控制 模块和数据控制模块的工作状态,同时生成当前的过程状态,并控制所述神经元运算阵列 模块、参数控制模块和数据控制模块根据所述过程状态进行同步工作。2. 根据权利要求1所述的ANNP集成电路,其特征在于:所述过程状态分为空闲状态、输 入层加载状态、输入层运算状态、隐含层运算状态和输出层运算状态,当所述输入数据缓存 器中待处理数据数量超过阈值并且所述第一运算结果缓存器或所述第二运算结果缓存器 为空时,所述空闲状态结束进入所述输入层加载状态,当所述输入层加载状态完成输入加 载后进入所述输入层运算状态,当所述输入层运算状态运算完成后进入所述隐含层运算状 态,当所述隐含层运算状态运算完成后进入所述输出层运算状态,当所述输出层运算状态 运算完成后回到所述空闲状态。3. 根据权利要求2所述的ANNP集成电路,其特征在于:所述第一运算结果缓存器和第二 运算结果缓存器的读写状态轮流替换,即所述第一运算结果缓存器为读取缓存器时,所述 第二运算结果缓存器为写入缓存器,所述第一运算结果缓存器为写入缓存器时,所述第二 运算结果缓存器为读取缓存器,当所述第一运算结果缓存器或第二运算结果缓存器在前一 层运算时是读取缓存器,则在当前层运算的时候是写入缓存器,当所述第二运算结果缓存 器或第一运算结果缓存器在所述前一层运算时是写入缓存器,则所述第二运算结果缓存器 或第一运算结果缓存器在所述当前层运算时是读取缓存器。4. 根据权利要求3所述的ANNP集成电路,其特征在于:所述ANN的隐含层分为A个层,A为 大于或等于1的正整数,分别为第一隐含层至第A隐含层,所述隐含层运算状态分为第一隐 含层运算状态至第A隐含层运算状态。5. 根据权利要求4所述的ANNP集成电路,其特征在于:所述数据控制模块在所述空闲状 态时将所述输入数据缓存器的存储信息输出给所述状态控制模块,所述数据控制模块在所 述输入层加载状态时加载输入数据,并将所述输入数据缓存入所述第一运算结果缓存器或 第二运算结果缓存器中,在所述输入层运算状态时,所述数据控制模块将所述第一运算结 果缓存器或第二运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算并将 输入层运算结果缓存于所述第二运算结果缓存器或第一运算结果缓存器中,在所述第一隐 含层运算状态时,所述数据控制模块将所述第二运算结果缓存器或第一运算结果缓存器中 的数据输出给所述神经元运算阵列模块进行运算,并将第一隐含层运算结果缓存于所述第 一运算结果缓存器或第二运算结果缓存器中,以此类推,在所述第A隐含层运算状态时,若A 为偶数,则所述数据控制模块将所述第一运算结果缓存器或第二运算结果缓存器中的数据 输出给所述神经元运算阵列模块进行运算,并将第A隐含层运算结果缓存于所述第二运算 结果缓存器或第一运算结果缓存器中,若A为奇数,则所述数据控制模块将所述第二运算结 果缓存器或第一运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将 第A隐含层运算结果缓存于所述第一运算结果缓存器或第二运算结果缓存器中,在所述输 出层运算状态时,若A为偶数,则所述数据控制模块将所述第二运算结果缓存器或第一运算 结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将所述输出层运算结果 缓存于所述第一运算结果缓存器或第二运算结果缓存器中,当所述第一运算结果缓存器中 或第二运算结果缓存器的存储空间不够时,所述输出层运算结果会自动写入所述第二运算 结果缓存器或第一运算结果缓存器中未被占用或已完成读取的存储空间,若A为奇数,则所 述数据控制模块将所述第一运算结果缓存器或第二运算结果缓存器中的数据输出给所述 神经元运算阵列模块进行运算,并将输出层运算结果缓存于所述第二运算结果缓存器或第 一运算结果缓存器中,当所述第二运算结果缓存器或第一运算结果缓存器中的存储空间不 够时,所述输出层运算结果会自动写入所述第一运算结果缓存器或第二运算结果缓存器中 未被占用或已完成读取的存储空间。6. -种包含了权利要求1所述的ANNP集成电路的集成电路设计方法,其特征在于,该设 计方法包括: 根据算法和应用通过系统配置ANNP的人工神经网络类型,输入数据类型,输入层神经 元的输入向量大小、向量组数、滑窗大小及节点数,隐含层的层数及每层神经元节点的数 量,输出层神经元节点数和输出向量大小; 所述状态控制器检测所述数据控制模块和神经元运算阵列模块输出的信号,确定整个 ANNP的过程状态,并控制所述神经元运算阵列模块、参数控制模块和数据控制模块根据所 述过程状态进行同步工作; 所述数据控制模块根据所述过程状态输出或者读取数据; 所述参数控制模块读取所述神经元参数存储器中存储的神经元参数并输出给所述神 经元运算阵列模块进行运算; 所述神经元运算阵列模块根据所述数据控制模块和所述参数控制模块的输出进行运 算; 所述神经元运算阵列模块通过所述数据控制模块从所述输入数据缓存器、第一运算结 果缓存器或第二运算结果缓存器获得数据进行运算并将运算结果缓存入所述第一运算结 果缓存器或第二运算结果缓存器。7. 据权利要求6所述的集成电路设计方法,其特征在于:所述神经元运算阵列模块可以 同时进行多组输入数据向量及多个神经元节点的并行计算,所述每个神经元节点与一组神 经元参数向量连接,所述神经元运算阵列模块的阵列大小可以配置。8. 据权利要求7所述的集成电路设计方法,其特征在于:所述神经元运算阵列由m组输 入数据向量I和η组神经元参数向量P连接的m*n个神经元基本运算单元组成,m彡1,η彡1, 所述神经元运算阵列可看作η个神经元运算链路一组成,每个所述神经元运算链路一上有m 个所述神经元基本运算单元,分别连接m组输入数据向量I并共用一组神经元参数向量P;所 述神经元运算阵列还可看作由m个神经元运算链路二组成,每个所述神经元运算链路二上 有η个所述神经元基本运算单元,分别连接η组神经元参数向量P及共用一组输入数据向量 I,从而所述神经元运算阵列一次性进行m*n次的所述神经元基本运算单元的运算,同时读 取所述输入数据向量和所述神经元参数的带宽需求分别下降到原来的1/n和1/m。9. 据权利要求8所述的集成电路设计方法,其特征在于:所述神经元运算阵列运用公式 O= f(i X 进行计算,其中I是由m组所述输入数据向量组成的二维矩阵,每组所述输 入数据向量由K个元素组成,P是由η组所述神经元参数向量组成的二维矩阵,每组所述神 经元参数向量由K个元素组成,K为大于1的正整数,0为m行η列的二维输出结果转置矩阵;f 为神经元节点激活运算函数,所述神经元节点激活运算函数包含一偏置计算和一激活函数 计算。10. 据权利要求9所述的集成电路设计方法,其特征在于:所述神经元基本运算单元包 括两个一维向量乘累加和激活运算,运用公:往行计算,其中I1为具有K 个元素的一维所述输入数据向量,Pi为具有K个元素的一维所述神经元参数向量,其中i等 于1到K,f为所述神经元节点激活运算函数。11. 据权利要求6所述的集成电路设计方法,其特征在于:每个所述神经元节点的输入 是所述输入层加载状态时加载的输入数据或上一层的运算结果,即所述输入层加载状态的 输入是所述输入数据,所述输入层运算状态的输入是所述输入层加载状态加载的所述输入 数据,所述隐含层运算状态的输入是所述输入层运算状态运算得到的所述输入层运算结 果,所述输出层运算状态的输入是所述隐含层运算状态运算得到的所述隐含层运算结果, 每个所述神经元节点的每一个所述输入向量元素对应有一个不同的权值参数,每一个所述 神经元的计算包含一组所述输入向量元素和对应的所述权值参数相乘并累加,然后将累加 的结果进行激活运算从而得到所述神经元的结果输出,不同所述神经元都具有相同的矩阵 乘累加及所述激活运算结果,将所述相同的矩阵乘累加和激活运算结构抽取出来形成标准 的所述神经元基本运算单元。12. 据权利要求6所述的集成电路设计方法,其特征在于:所述状态控制模块、数据控制 模块、神经元运算阵列模块和参数控制模块通过总线获得系统配置的参数。
【文档编号】G06N3/06GK106022468SQ201610327324
【公开日】2016年10月12日
【申请日】2016年5月17日
【发明人】何云鹏
【申请人】成都启英泰伦科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1