CN117195989B - 向量处理器、神经网络加速器、芯片及电子设备 - Google Patents
向量处理器、神经网络加速器、芯片及电子设备 Download PDFInfo
- Publication number
- CN117195989B CN117195989B CN202311462696.5A CN202311462696A CN117195989B CN 117195989 B CN117195989 B CN 117195989B CN 202311462696 A CN202311462696 A CN 202311462696A CN 117195989 B CN117195989 B CN 117195989B
- Authority
- CN
- China
- Prior art keywords
- module
- input
- output
- data
- operator
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 50
- 239000000872 buffer Substances 0.000 claims description 27
- 230000002195 synergetic effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 14
- 238000000034 method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000011176 pooling Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 238000005070 sampling Methods 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000010606 normalization Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009510 drug design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 210000000225 synapse Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开一种向量处理器、神经网络加速器、芯片及电子设备,涉及神经网络技术领域,解决神经网络加速器芯片中,存储单元与运算单元之间的数据搬运量较大的技术问题。该向量处理器包括:全集交换模块、若干个算子模块、若干个输入模块、若干个输出模块和控制模块;算子模块通过全集交换模块获取输入模块输入的数据,并通过全集交换模块向输出模块输出数据;全集交换模块从输入模块中选择接入至少一个输入模块,和/或控制开启/关闭至少一个输出模块,进行算子模块的数据流和/或控制流的切换和/或重构,以得到预设的新的数据流和/或控制流。本发明通过全集交换模块实现接入算子模块的对象和顺序调整,减少数据搬运和功耗,降低成本。
Description
技术领域
本发明涉及神经网络技术领域,尤其涉及一种向量处理器、神经网络加速器、芯片及电子设备。
背景技术
深度神经网络(Deep Neural Network,DNN)是一种基于人工神经网络架构的机器学习方法,人工神经网络(Artificial Neural Networks,ANN)使用相互连接的节点(称为神经元)的层来处理和学习输入数据。深度神经网络是具有多个层的人工神经网络,这些层位于输入层和输出层之间。神经网络总是由相同的组件组成:神经元、突触、权重、偏差和函数,在实际应用中,这些组件通常被称作算子。常见的算子有:卷积、池化、上/下采样、激活函数、元素操作(元素加、元素减、元素乘、元素除)等。深度学习使用多个层来表示数据的不同层次的抽象,从而提高模型的准确性和泛化能力,已经广泛应用于运算机视觉、语音识别、自然语言处理、机器翻译、生物信息学、药物设计、医学图像分析等领域,产生了与人类专家水平相当甚至超越的结果。
随着数据量不断地累积,以神经网络为主题的人工智能技术得到越来越广泛的应用。尽管神经网络已经被证明能够成功解决自动驾驶、人脸识别等实际问题,但由于传统硬件平台运算性能的局限性,使得神经网络在传统硬件难以高效部署。因此,需要专门为神经网络算法设计定制的硬件平台,这中硬件平台被称为神经网络加速器,其核心通常是一组专用的集成电路芯片,这种芯片被称为神经网络加速器芯片。
基于神经网络加速器形成的芯片的面积、成本、性能和功耗等因素的综合考量,神经网络加速器需要在维持特定性能的情况下降低面积和功耗,尤其是在人工智能领域,减少神经网络加速器的功耗十分重要。通常情况下,神经网络加速器的主要功耗在数据搬运,尤其是神经网络加速器的存储单元与运算单元之间的数据搬运。因此,减少神经网络加速器中数据搬运十分重要。
发明内容
本发明的目的在于提供一种向量处理器、神经网络加速器、芯片及电子设备,以至少解决上述技术问题。本发明提供的诸多技术方案中的优选技术方案所能产生的诸多技术效果详见下文阐述。
为实现上述目的,本发明提供了以下技术方案:
本发明提供的一种向量处理器,包括:全集交换模块、若干个算子模块、若干个输入模块、若干个输出模块和用于控制所述全集交换模块工作的控制模块;每个所述算子模块用于进行运算;所述算子模块通过所述全集交换模块获取所述输入模块输入的数据,并通过所述全集交换模块向所述输出模块输出数据;根据来自所述控制模块的控制信号,所述全集交换模块从若干个所述输入模块中控制选择接入至少一个输入模块,和/或控制开启/关闭至少一个所述输出模块,进行所述算子模块的数据流和/或控制流的切换和/或重构,以得到预设的新的数据流和/或控制流;所述全集交换模块包括输入开关、选择器和输出开关;所述输入开关与所述输入模块、所述算子模块、及选择器连接,所述输出开关与所述输出模块及所述算子模块连接;所述选择器、输出开关均与所述控制模块连接。
优选的,所述输入开关的数量为n个,所述选择器、输出开关的数量均为k个,其中,n、k均为正整数;每个所述输入开关均与全部的所述选择器连接,所述输出开关与所述选择器一对一连接。
优选的,所述全集交换模块还包括输入缓冲器和/或输出缓冲器;所述输入缓冲器连接于所述输入开关和选择器之间,所述输出缓冲器连接于所述输出开关与所述输出模块之间。
优选的,所述向量处理器还包括连接于所述输入模块与全集交换模块之间的数据同步对齐模块,所述数据同步对齐模块用于将所述输入模块的输入数据进行时间同步后,再输入所述全集交换模块。
优选的,若所述输入模块之间存在同步协同关系,所述数据同步对齐模块还用于将至少两个所述输入模块的输入数据进行数据重排。
优选的,所述输入模块还用于将外部输入格式转换为所述全集交换模块的输入格式;所述输出模块还用于将所述全集交换模块的输出格式转换为外部输出格式。
优选的,所述算子模块包括单输入算子模块、双输入算子模块和多输入算子模块中的至少一种,所述单输入算子模块、双输入算子模块和多输入算子模块分别对一组、两组和多组输入数据进行运算,均得到一组输出数据。
优选的,所述算子模块的输入端用于控制信号、输入数据有效信号、及输入数据信号的输入;所述控制信号为所述算子模块的启动信号与复位信号,所述输入数据有效信号为标记输入数据有效的控制电平,所述输入数据信号为输入位宽固定的信号;所述算子模块的输出端进行输出有效信号与输出数据信号的输出;所述输出有效信号为标记输出数据有效的控制电平,所述输出数据信号为输出位宽固定的信号。
优选的,所述向量处理器还包括顶层控制模块、输入接口、输出接口,所述顶层控制模块向所述控制模块、算子模块发送控制信号,所述输入接口向所述输入模块发送输入信号,所述输出接口接收所述输出模块发送的输出信号。
一种神经网络加速器,所述神经网络加速器包括以上任一项所述的一种向量处理器。
一种芯片,所述芯片包括以上所述的一种神经网络加速器。
一种电子设备,所述电子设备包括以上所述的一种芯片。
实施本发明上述技术方案中的一个技术方案,具有如下优点或有益效果:
本发明提供的向量处理器,结合全集交换模块及对应的控制模块实现了对算子模块的输入和输出控制,通过不同的指令配置,使得若干个算子模块的数据流和/或控制流按照预设进行定向流动,从而接入的算子模块的对象和顺序可以调整,可以根据指令融合多个不同的算子,形成所需要的数据流和/或控制流。同时,算子模块的数据流和/或控制流可通过编程等方式进行切换和/或重构,算子模块运算过程中产生的中间结果也不再需要写入存储器,即不需要从存储器读取中间结果,减少重复读写存储器次数,减少了存储器与算子模块之间的数据搬运量,对应可以减少功耗,便于提高运行速度,也可以降低存储器需要的面积,进而缩小包含本向量处理器的芯片面积,降低芯片成本及计算功耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,附图中:
图1是本发明实施例一的向量处理器的示意图一;
图2是本发明实施例一的向量处理器与现有技术的对比效果图;
图3是本发明实施例一中的全集交换模块的示意图;
图4是本发明实施例一中的单输入算子模块示意图;
图5是本发明实施例一中的双输入算子模块示意图;
图6是本发明实施例一中的多输入算子模块示意图;
图7是本发明实施例一的向量处理器的优选方案示意图;
图8是图7工作的波形图一;
图9是图7工作的波形图二;
图10是本发明实施例一的向量处理器的示意图二;
图11是本发明实施例二中的神经网络加速器的示意图。
图中:001、控制模块;002、全集交换模块;003、算子模块;004、输入模块;005、输出模块;006、顶层控制模块;007、输入接口;008、输出接口;009、数据同步对齐模块;3001、单输入算子模块;3002、双输入算子模块;3003、多输入算子模块。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下文将要描述的各种示例性实施例将要参考相应的附图,这些附图构成了示例性实施例的一部分,其中描述了实现本发明可能采用的各种示例性实施例。除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。应明白,它们仅是与如所附权利要求书中所详述的、本发明公开的一些方面相一致的流程、方法和装置等的例子,还可使用其他的实施例,或者对本文列举的实施例进行结构和功能上的修改,而不会脱离本发明的范围和实质。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”等指示的是基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的元件必须具有的特定的方位、以特定的方位构造和操作。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。术语“多个”的含义是两个或两个以上。术语“相连”、“连接”应做广义理解,例如,可以是固定连接、可拆卸连接、一体连接、机械连接、电连接、通信连接、直接相连、通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明,仅示出了与本发明实施例相关的部分。
实施例一:
如图1所示,本发明提供了一种向量处理器,包括全集交换模块002(用于在硬件层面支持特定数量的算子在流水线上自由组合)、若干个算子模块003、若干个输入模块004(主要输入为上一层算子模块003的输出结果)、若干个输出模块005(主要输出为算子模块003计算后的结果)和用于控制全集交换模块工作的控制模块001。算子模块003、输入模块004、输出模块005均可为一个、两个或多个,且三者的数量可相同或不同。算子模块003与全集交换模块002(Full Set Switcher)双向连接,即两者之间可进行数据双向流动。每个算子模块003用于进行若干种运算(一种、两种或多种),当然,算子模块003有统一的数据接口规格,便于进行不同种类不同功能的运算。算子模块003的数量一般与向量处理器所需运算的种类或功能成正比,可综合考虑功能需求、性能需求、面积需求和功耗需求等因素进行选择。算子模块003通过全集交换模块002分别获取输入模块004输入的数据(该数据包括控制流和数据流,如算子模块003运算所需的参数、向量处理器的中间计算结果、向量处理器工作中的控制信息等),算子模块003还通过全集交换模块002向输出模块005输出数据(该数据也包括控制流和/或数据流,如算子模块003的运算结果、向量处理器工作中的控制信息等),显然,算子模块003与全集交换模块002为双向数据连接,从而全集交换模块002可以对输入模块004的输入、输出模块005输出进行控制。根据来自控制模块001的控制信号(这种控制信号可通过编程实现不同的功能),全集交换模块002从若干个输入模块004中控制选择接入一个、两个或多个输入模块004,和/或控制开启/关闭一个、两个或多个输出模块005,即控制选择操作与控制开启/关闭操作至少进行一种,同时,在两个以上的输出模块005中,可以在部分开启时部分关闭。从而进行算子模块003的数据流和/或控制流的切换和/或重构,即数据流和/或控制流可以进行切换或重构,或切换与重构同时进行。向量处理器运行中,基于控制模块001的控制信号,算子模块003对应的数据流和/或控制流可根据需要进行相应调整重构,可改变现有的执行顺序和/或组合。切换即改变数据流和/或控制流中数据信号和/或控制信号执行的先后顺序,重构即改变数据流和/或控制流中数据信号和/或控制信号的执行内容,如修改数据流和/或控制流、选择数据流和/或控制流、重新组合数据流和/或控制流等,从而可得到预设的新的数据流和/或控制流,即数据流和控制流实现按照预期的方式流动。这种切换、重构可直接通过编程实现,可在不同控制流指令下切换不同的数据流数据分配形式,改变了现有技术中的流水线执行方式,操作更为灵活,可适应更复杂的计算场景。尤其是当两个或多个算子模块003之间的计算相互依赖时,可改变不同输入模块004的执行顺序,实现数据的定向流动,可降低算子模块003运算的等待时间,进而提高运算效率。本发明提供的向量处理器,结合全集交换模块及对应的控制模块实现了对算子模块的输入和输出控制,通过不同的指令配置,使得若干个算子模块的数据流和/或控制流按照预设进行定向流动,从而接入的算子模块的对象和顺序可以调整,可以根据指令融合多个不同的算子,形成所需要的数据流和/或控制流。同时,算子模块的数据流和/或控制流可通过编程等方式进行切换和/或重构,算子模块运算过程中产生的中间结果也不再需要写入存储器,即不需要从存储器读取中间结果,减少重复读写存储器次数,减少了存储器与算子模块之间的数据搬运量,对应可以减少功耗,便于提高运行速度,也可以降低存储器需要的面积,进而缩小包含本向量处理器的芯片面积,降低芯片成本及计算功耗。如图2所示,现有技术中数据流处理包括输入读取时间、输入写入时间、中间结果写入时间及中间结果读取时间,本发明通过全集交换模块及对应的控制模块对数据流、控制流进行处理,不再需要对中间数据进行写入和读取,即省去了中间结果写入时间及中间结果读取时间,从而降低整体的功耗和提高运行速度。
作为可选的实施方式,如图3所示,全集交换模块002包括输入开关、选择器和输出开关,数据流和/或控制流在输入开关、选择器和输出开关三者之间顺次流动。输入开关与输入模块004及算子模块003的输出端连接,并与选择器连接,通过输入开关,输入模块004可实现对算子模块003运算所需的运算参数、中间运算结果等的输入,同时,算子模块003还可以通过输入开关进行运算结果等的输出。输出开关与输出模块005及算子模块003的输入端连接,选择器、输出开关均与控制模块001连接。如图3所示,控制模块001接收控制指令并将其转换为控制信号,该控制指令来自顶层控制模块006,从而实现对全集交换模块002的控制,具体而言,控制模块001与选择器、输出开关均进行电连接,从而选择器、输出开关均可通过控制模块001发出的控制信号进行相应的控制操作,该控制信号用于进行输入模块004与输出模块005的选择、开闭等操作。
作为可选的实施方式,如图3所示,输入开关的数量为n个,编号为1~n,选择器、输出开关的数量均为k个,编号为1~k,其中,n、k均为正整数;每个输入开关均与全部的选择器连接,即输入开关与选择器为一对多连接,从而每个选择器均可对输入进行选择,从而使得一个或两个或三个或更多个输入模块能与算子模块连接,以通过算子模块003进行对应的运算操作。输出开关与选择器一对一连接,优选为输入开关1与选择器1连接,输入开关k与选择器k连接,从而神经网络加速器需要支路输出时,通过输出开关,数据可以通过不同的输出模块输出到不同的输出接口中。
作为可选的实施方式,如图3所示,全集交换模块002还包括输入缓冲器和/或输出缓冲器,因此,输入缓冲器、输出缓冲器可以选择其中的一个或两个同时选择。优选输入缓冲器的数量与输入开关的数量一致,为n个,输出缓冲器与输出开关的数量一致,为k个,编号为1~n。输入缓冲器连接于输入开关和选择器之间,此时,每个输入缓冲器均与k个选择器连接。n与k之间的大小关系及比例关系可根据需求进行设定。输出缓冲器连接于输出开关与输出模块005之间。输入缓冲器与输出缓冲器用于防止不同频率要求下所产生的输入信号与输出信号出现建立时间违例或保持时间违例。建立时间违例是在使用某个变量之前,该变量没有被正确地初始化,保持时间违例是在使用某个变量之后,该变量没有被正确地销毁或释放,这两种违例在不同频率要求下的输入信号、输出信号中都容易产生,会影响向量处理器的正常运行或运行效率,通过设置输入缓冲器与输出缓冲器,将变量进行缓冲,可有效解决上述违例问题。从而更好与算子模块003的计算周期或处理速度相匹配,尤其是输入模块004与输出模块005数量过多时,更容易提升神经网络加速器的性能表现,可综合考虑性能需求、面积需求和功耗需求进行选择。
作为可选的实施方式,如图1所示,向量处理器还包括连接于输入模块004与全集交换模块002之间的数据同步对齐模块009,数据同步对齐模块009用于将输入模块004的输入数据进行时间同步后,再输入全集交换模块002。当数据同步对齐模块009与一个输入模块004连接时,可用于双输入算子模块3002或多输入算子模块3003中不同组输入数据的时间同步,如用于两输入元素运算和部分求和模式。数据同步对齐模块009的数量至少为一个,每个数据同步对齐模块用于将至少两个输入模块004的输入数据进行时间同步。数据同步对齐模块009、输入模块004的具体数量可根据需要进行选择,如图1中数据同步对齐模块009为一个,对两个输入模块004的输入数据进行时间同步。若输入模块004之间存在同步协同关系,如输入模块2接收数据,输入模块3需要向外部请求数据时(如向量处理器的外部存储器或缓冲器),此时输入模块之间存在同步协同关系。数据同步对齐模块009还用于将至少两个输入模块004的输入数据进行数据重排(当一个输入模块004接收数据时,可以诱发另一个输入模块004向外部存储或缓冲模块请求数据,此时需要进行对应的数据重排以完成计算过程),通过数据重排,输入模块3中所需的数据不再需要从外部存储器或缓冲器请求,而直接在数据同步对齐模块009中进行读取。通过数据重排,外部请求数据实现了更好的同步协同,从而可提高运算效率。
作为可选的实施方式,如图3所示,输入模块004还用于将外部输入格式转换为全集交换模块002的输入格式;输出模块005还用于将全集交换模块002的输出格式转换为外部输出格式,从而实现了向量处理器中其他模块与全集交换模块002之间的数据相通。
作为可选的实施方式,如图4-图6所示,算子模块003包括单输入算子模块3001、双输入算子模块3002和多输入算子模块3003中的至少一种,算子模块003中,算子模块003涉及到不同的算法,而不同的算法需要不同的参数输入个数。单输入算子模块3001、双输入算子模块3002和多输入算子模块3003分别对一组、两组和多组输入数据进行运算(如一组自变量、两组自变量、三组自变量,算子模块003运算所需的参数,每个自变量可以为单个数据,也可以为向量),均得到一组输出数据,输出数据即为运算得到的结果,因变量。通过单输入算子模块3001、双输入算子模块3002和多输入算子模块3003组合可实现各种运算的灵活组合,从而提高计算效率。
作为可选的实施方式,如图4-图6所示,算子模块003的输入端进行控制信号、输入数据有效信号、及输入数据信号的输入(输入数据有效信号、输入数据信号之间形成一对,因此,单输入算子模块3001、双输入算子模块3002和多输入算子模块3003分别有一对、两对、X对输入数据有效信号、输入数据信号,显然此时X大于等于3),算子模块003的输出端进行输出有效信号与输出数据信号的输出。控制信号为算子模块003的启动信号与复位信号,从而便于对算子模块的运算过程进行更好控制,输入数据有效信号为标记输入数据有效的控制电平,如高电平时表示输入数据信号的输入有效,输入数据信号为输入位宽固定的信号。输出有效信号为标记输出数据有效的控制电平,如高电平时表示输出数据信号的输出有效,从而通过控制电平可实现对输入数据信号是否有效的控制,使得算子模块003的控制过程更为灵活。输出数据信号为输出位宽固定的信号,如算子模块003运算后得到的中间结果或最终结果。同一个算子模块003内,输入数据信号、输出数据信号的位宽可以相同,也可以不同,从而算子模块003可实现更灵活的运算模式。此外,双输入算子模块3002中输入数据信号1、输入数据信号2,以及多输入算子模块3003中输入数据信号1、输入数据信号2、输入数据信号X也可以为相同位宽或不同位宽,从而可更进一步提高运算的灵活性。
作为可选的实施方式,双输入算子模块3002的输入端输入两组输入数据有效信号、输入数据信号,多输入算子模块3003的输入端输入多组输入数据有效信号、输入数据信号,而双输入算子模块3002、多输入算子模块3003的控制信号均只需要一组。两组或多组输入数据有效信号、输入数据信号之间相互关联,即两组或多组数据需要同时输入,从而相较于单输入算子模块3001,双输入算子模块3002、多输入算子模块3003可用于实现更复杂的运算功能。
作为可选的实施方式,算子模块003为算子的功能模块,其用于进行激活函数运算(Activation Operation)、池化运算(Pooling Operation)、上下采样运算(Up/DownSample)、元素运算(Element-Wise Operation)、块归一化运算(Batch Normalization)、层归一化运算(Layer Normalization)等中的至少一种,其输入为上一层算子的输出结果,输出为算子计算后的结果。一般一种计算通过一个算子模块003实现,通过上述运算组合,可实现多种多样的神经网络功能,可满足大部分神经网络的运算场景,也提高了向量处理器的适用性。其中,元素运算为元素操作功能模块,具体功能包括元素加、元素减、元素乘、部分求和和元素除法。当然,也可以根据设计需要将各种运算的功能进行合并或分拆,一个算子模块实现一种或多种功能的可综合考虑功能需求、性能需求、面积需求和功耗需求。如池化运算、上下采样运算可合并为上下采样和池化运算(Resize-Pooling),具体功能包括最近邻上下采样、双线性上下采样、最大池化和平均池化,或者根据设计需要加入新的运算功能,此处不再赘述。
作为可选的实施方式,如图1、图10所示,向量处理器还包括顶层控制模块006、输入接口007、输出接口008,图1、图7中的矩形框内的全部功能模块为图10中的向量处理单元。顶层控制模块006与控制模块001、算子模块003电连接,顶层控制模块006向控制模块001、算子模块003发送控制信号,输入接口007向输入模块004发送输入信号,输入接口007是神经网络加速器中其他模块的输出接口。输出接口008接收输出模块005发送的输出信号,是神经网络加速器中其他模块的输入接口。优选输入接口007、输出接口008的数量与输入模块004、输出模块005是数量一致。通过输入接口007、输出接口008实现了向量处理器与神经网络加速器内的其他功能单元的数据交互。如图10所示,向量处理器还包括其他的功能模块,如输入输出交互界面、全局行缓冲器、向量处理器寄存器等。
本实施例的工作过程如下:以图7中算子模块003为三个时进行说明,如图8所示算子模块的执行顺序是算子模块1、算子模块2、算子模块3,图中T1、T3、T5、T7代表的是全集交换模块关联的输入和输出信号,T2、T4、T6分别代表算子模块1、算子模块2和算子模块3内部计算产生的延时。如图9所示算子模块的执行顺序为算子模块1、算子模块3、算子模块2,当算子模块2需要算子模块3的结果才能够继续进行时,在现有的神经网络加速器中,需要先执行算子模块3并将计算结果输出至存储器中,执行算子模块2时,再将算子模块3的计算结果从存储器中调入,由此产生了数据搬运。通过全集交换模块,就可以改变算子模块的执行顺序,从而改变数据流方向,而且全集交换模块还可以对数据进行缓冲,进一步提升性能。图中的T1、T3、T5、T7代表的是全集交换模块关联的输入和输出信号,T2、T4、T6分别代表算子模块1、算子模块3和算子模块2内部计算产生的延时。通过全集交换模块中选择器、输入开关、输出开关之间的配合,实现了算子模块003执行顺序的调整,即实现了算子模块在流水线上的自由组合,达到了数据定向流动的目的,从而减少了算子模块、存储器之间的数据搬运。
实施例仅是一个特例,并不表明本发明就这样一种实现方式。
实施例二:
一种神经网络加速器,包括实施例一中的向量处理器,如图11所示,神经网络加速器还包括前处理模块、存内计算矩阵、共享存储器,其中前处理模块与存内计算矩阵连接,存内计算矩阵与向量处理器连接,共享存储器与前处理模块、存内计算矩阵单向连接,还与向量处理器连接。存内计算矩阵可以是由多个CIM(computing in memory,存内计算)形成的矩阵,通过采用实施例一中的向量处理器(该向量处理器为可以实现融合多个算子的多算子融合向量处理器),神经网络加速器的面积和功耗都得到有效降低,便于进行使用。
另外,存内计算可以解决内存墙问题。冯诺依曼架构的计算机系统把存储器和处理器分割成了两个部分,而处理器频繁访问存储器的开销就形成了内存墙,而且高频的数据搬运往往是芯片,尤其是AI领域芯片占据功耗的首要原因,进而影响芯片算力、效率和功耗等。存内计算的基本思路就是把计算和存储合二为一,从而实现减少处理器访问存储器的频率(因为计算已经在存储器内完成了大部分,所以,本发明提供的含有感存算一体技术(集传感、储存和运算为一体)的神经网络加速器可以具有超高的算力、效率和能效比。所以,本发明提供的神经网络加速器可以在不影响其本身功能的情况下,改善其面积和功耗的性能。本发明提供的神经网络加速器可以广泛的应用于诸多AI领域,例如基于感存算一体技术架构实现的模数混合AI视觉芯片,使该AI视觉芯片具有更低功耗与更高的能效。
实施例三:
一种芯片,包括实施例二中的神经网络加速器,通过采用实施例二中的神经网络加速器,芯片的面积、成本和功耗均得到了降低,从而可以在芯片上集成更多样、更复杂的功能,从而芯片的适用性更强,便于在更复杂的工作场景中使用。本发明提供的芯片,例如可以为AI视觉芯片,芯片中各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算设备中的处理器中,也可以以软件形式存储于计算设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作,可有效降低芯片面积、成本和功耗。
实施例四:
一种电子设备,包括实施例三中的芯片,通过采用实施例三中的芯片,便于降低电子设备的功耗和成本。本发明提供的芯片可应用于自动驾驶、AR、VR、激光雷达,以及智能手机、平板电脑、可穿戴电子装备、智能家居电子产品、工业或医疗或电池供电类等一系列对低功耗与高能效比有较高需求的电子设备。
以上所述仅为本发明的较佳实施例而已,本领域技术人员知悉,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等同替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明的保护范围。
Claims (12)
1.一种向量处理器,其特征在于,包括:全集交换模块、若干个算子模块、若干个输入模块、若干个输出模块和用于控制所述全集交换模块工作的控制模块;每个所述算子模块用于进行运算;所述算子模块通过所述全集交换模块获取所述输入模块输入的数据,并通过所述全集交换模块向所述输出模块输出数据;根据来自所述控制模块的控制信号,所述全集交换模块从若干个所述输入模块中控制选择接入至少一个输入模块,和/或控制开启/关闭至少一个所述输出模块,进行所述算子模块的数据流和/或控制流的切换和/或重构,以得到预设的新的数据流和/或控制流;所述全集交换模块包括输入开关、选择器和输出开关;所述输入开关与所述输入模块、所述算子模块、及选择器连接,所述输出开关与所述输出模块及所述算子模块连接;所述选择器、输出开关均与所述控制模块连接。
2.根据权利要求1所述的一种向量处理器,其特征在于,所述输入开关的数量为n个,所述选择器、输出开关的数量均为k个,其中,n、k均为正整数;每个所述输入开关均与全部的所述选择器连接,所述输出开关与所述选择器一对一连接。
3.根据权利要求1所述的一种向量处理器,其特征在于,所述全集交换模块还包括输入缓冲器和/或输出缓冲器;所述输入缓冲器连接于所述输入开关和选择器之间,所述输出缓冲器连接于所述输出开关与所述输出模块之间。
4.根据权利要求1所述的一种向量处理器,其特征在于,所述向量处理器还包括连接于所述输入模块与全集交换模块之间的数据同步对齐模块,所述数据同步对齐模块用于将所述输入模块的输入数据进行时间同步后,再输入所述全集交换模块。
5.根据权利要求4所述的一种向量处理器,其特征在于,若所述输入模块之间存在同步协同关系,所述数据同步对齐模块还用于将至少两个所述输入模块的输入数据进行数据重排。
6.根据权利要求1所述的一种向量处理器,其特征在于,所述输入模块还用于将外部输入格式转换为所述全集交换模块的输入格式;所述输出模块还用于将所述全集交换模块的输出格式转换为外部输出格式。
7.根据权利要求1-6任一项所述的一种向量处理器,其特征在于,所述算子模块包括单输入算子模块、双输入算子模块和多输入算子模块中的至少一种,所述单输入算子模块、双输入算子模块和多输入算子模块分别对一组、两组和多组输入数据进行运算,均得到一组输出数据。
8.根据权利要求7所述的一种向量处理器,其特征在于,所述算子模块的输入端用于控制信号、输入数据有效信号、及输入数据信号的输入;所述控制信号为所述算子模块的启动信号与复位信号,所述输入数据有效信号为标记输入数据有效的控制电平,所述输入数据信号为输入位宽固定的信号;所述算子模块的输出端进行输出有效信号与输出数据信号的输出;所述输出有效信号为标记输出数据有效的控制电平,所述输出数据信号为输出位宽固定的信号。
9.根据权利要求1所述的一种向量处理器,其特征在于,所述向量处理器还包括顶层控制模块、输入接口、输出接口,所述顶层控制模块向所述控制模块、算子模块发送控制信号,所述输入接口向所述输入模块发送输入信号,所述输出接口接收所述输出模块发送的输出信号。
10.一种神经网络加速器,其特征在于,所述神经网络加速器包括权利要求1-9中任一项所述的一种向量处理器。
11.一种芯片,其特征在于,所述芯片包括权利要求10中所述的一种神经网络加速器。
12.一种电子设备,其特征在于,所述电子设备包括权利要求11中所述的一种芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311462696.5A CN117195989B (zh) | 2023-11-06 | 2023-11-06 | 向量处理器、神经网络加速器、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311462696.5A CN117195989B (zh) | 2023-11-06 | 2023-11-06 | 向量处理器、神经网络加速器、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117195989A CN117195989A (zh) | 2023-12-08 |
CN117195989B true CN117195989B (zh) | 2024-06-04 |
Family
ID=88987262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311462696.5A Active CN117195989B (zh) | 2023-11-06 | 2023-11-06 | 向量处理器、神经网络加速器、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117195989B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117492766A (zh) * | 2023-12-27 | 2024-02-02 | 深圳市九天睿芯科技有限公司 | 编译方法、编译器、神经网络加速器、芯片及电子设备 |
CN117474062B (zh) * | 2023-12-28 | 2024-06-04 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
CN117634577B (zh) * | 2024-01-25 | 2024-06-07 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003330914A (ja) * | 2002-05-15 | 2003-11-21 | Nec Corp | ベクトル演算処理装置、ベクトル演算方法およびベクトル演算プログラム |
JP2009251724A (ja) * | 2008-04-02 | 2009-10-29 | Hitachi Ltd | ベクトルプロセッサ制御装置 |
CN109086867A (zh) * | 2018-07-02 | 2018-12-25 | 武汉魅瞳科技有限公司 | 一种基于fpga的卷积神经网络加速系统 |
CN110738308A (zh) * | 2019-09-23 | 2020-01-31 | 陈小柏 | 一种神经网络加速器 |
CN112232499A (zh) * | 2020-10-13 | 2021-01-15 | 华中光电技术研究所(中国船舶重工集团公司第七一七研究所) | 卷积神经网络加速器 |
WO2023010244A1 (zh) * | 2021-08-02 | 2023-02-09 | 华为技术有限公司 | 神经网络加速器及神经网络加速器的数据处理方法 |
CN116974510A (zh) * | 2022-11-09 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 数据流式处理电路、电路模组、电子芯片、方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2674855B1 (en) * | 2012-06-14 | 2016-11-23 | Telefonaktiebolaget LM Ericsson (publ) | An element selection unit and a method therein |
US11244225B2 (en) * | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
US10331445B2 (en) * | 2017-05-24 | 2019-06-25 | Microsoft Technology Licensing, Llc | Multifunction vector processor circuits |
CN112152947B (zh) * | 2020-08-21 | 2021-07-20 | 北京百度网讯科技有限公司 | 处理器及实现方法、电子设备和存储介质 |
CN115204355A (zh) * | 2021-04-14 | 2022-10-18 | 蒂普爱可斯有限公司 | 能够重新使用数据的神经处理单元及其方法 |
US11861486B2 (en) * | 2021-11-29 | 2024-01-02 | Deepx Co., Ltd. | Neural processing unit for binarized neural network |
-
2023
- 2023-11-06 CN CN202311462696.5A patent/CN117195989B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003330914A (ja) * | 2002-05-15 | 2003-11-21 | Nec Corp | ベクトル演算処理装置、ベクトル演算方法およびベクトル演算プログラム |
JP2009251724A (ja) * | 2008-04-02 | 2009-10-29 | Hitachi Ltd | ベクトルプロセッサ制御装置 |
CN109086867A (zh) * | 2018-07-02 | 2018-12-25 | 武汉魅瞳科技有限公司 | 一种基于fpga的卷积神经网络加速系统 |
CN110738308A (zh) * | 2019-09-23 | 2020-01-31 | 陈小柏 | 一种神经网络加速器 |
CN112232499A (zh) * | 2020-10-13 | 2021-01-15 | 华中光电技术研究所(中国船舶重工集团公司第七一七研究所) | 卷积神经网络加速器 |
WO2023010244A1 (zh) * | 2021-08-02 | 2023-02-09 | 华为技术有限公司 | 神经网络加速器及神经网络加速器的数据处理方法 |
CN116974510A (zh) * | 2022-11-09 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 数据流式处理电路、电路模组、电子芯片、方法和装置 |
Non-Patent Citations (1)
Title |
---|
一种在线时间序列预测的核自适应滤波器向量处理器;庞业勇等;电子与信息学报;第38卷(第1期);第53-62页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117195989A (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117195989B (zh) | 向量处理器、神经网络加速器、芯片及电子设备 | |
CN109858620B (zh) | 一种类脑计算系统 | |
CN109597646A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
Lougheed et al. | The cytocomputer: A practical pipelined image processor | |
CN110018850A (zh) | 用于可配置空间加速器中的多播的设备、方法和系统 | |
CN109284825A (zh) | 用于执行lstm运算的装置和方法 | |
US7082419B1 (en) | Neural processing element for use in a neural network | |
CN109597458A (zh) | 用于空间阵列中的可配置时钟门控的处理器和方法 | |
CN109597459A (zh) | 用于空间阵列中的特权配置的处理器和方法 | |
DE102018005172A1 (de) | Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger | |
EP3935583A1 (en) | Synchronization in a quantum controller with modular and dynamic pulse generation and routing | |
US20160162780A1 (en) | Event-driven universal neural network circuit | |
TWI634489B (zh) | 多層人造神經網路 | |
CN112381220B (zh) | 一种神经网络张量处理器 | |
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
CN112580792B (zh) | 一种神经网络多核张量处理器 | |
CN107886166A (zh) | 一种执行人工神经网络运算的装置和方法 | |
JP2022541899A (ja) | 畳み込みニューラルネットワークを実装するための構成可能なプロセッサ | |
CN108491924B (zh) | 一种面向人工智能计算的神经网络数据串行流水处理装置 | |
da Silva et al. | Exploring the dynamics of large-scale gene regulatory networks using hardware acceleration on a heterogeneous cpu-fpga platform | |
US20210326189A1 (en) | Synchronization of processing elements that execute statically scheduled instructions in a machine learning accelerator | |
CN111767995A (zh) | 运算方法、装置及相关产品 | |
Jain et al. | Optimizing distributed dnn training using cpus and bluefield-2 dpus | |
CN117112201A (zh) | 硬件资源调度方法、装置、计算机设备和存储介质 | |
CN117634577B (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 |