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

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

【技术实现步骤摘要】

本专利技术涉及集成电路技术及人工智能领域,特别涉及一种人工神经网络处理器(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为奇数,则所述数据本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/CN106022468.html" title="人工神经网络处理器集成电路及该集成电路的设计方法原文来自X技术">人工神经网络处理器集成电路及该集成电路的设计方法</a>

【技术保护点】
一种ANNP处理器集成电路,其包括:神经元运算阵列模块,所述神经元运算阵列模块进行多个神经元的矩阵乘累加运算和激活函数运算;数据控制模块,所述数据控制模块分别与所述神经元运算阵列模块、数据总线、第一运算结果缓存器和第二运算结果缓存器连接,并通过所述数据总线读取输入数据缓存器中的数据,所述数据控制模块读取所述输入数据缓存器、第一运算结果缓存器或第二运算结果缓存器中的数据输送给所述神经元运算阵列模块作为所述神经元运算阵列模块的输入并将所述神经元运算阵列模块的运算结果缓存入所述第一运算结果缓存器或第二运算结果缓存器中;参数控制模块,所述参数控制模块分别与所述神经元运算阵列模块和数据总线连接,并通过所述数据总线读取神经元参数存储器中预存的神经元参数输出给所述神经元运算阵列模块进行运算;状态控制模块,所述状态控制模块分别与所述神经元运算阵列模块、数据控制模块、参数控制模块和数据总线连接,所述状态控制模块检测所述神经元运算阵列模块、参数控制模块和数据控制模块的工作状态,同时生成当前的过程状态,并控制所述神经元运算阵列模块、参数控制模块和数据控制模块根据所述过程状态进行同步工作。

【技术特征摘要】
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为偶数,则所述数据控制模块将所述第二运算结果缓存器或第一运算结果缓存器中的数据输出给所述神经元运算阵列模块进行运算,并将所述输出层运算结果缓存于所述第一运算结果缓存器或第二运算结果缓存器中,当所述第一运算结果缓存器中或第二运算结果缓存器的存储空间不够时,所述输出层运算结果会自动写入所述第二运算结果缓存器或第一运算结果缓存器中未被占...

【专利技术属性】
技术研发人员:何云鹏
申请(专利权)人:成都启英泰伦科技有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1