CN108694441B - 一种网络处理器和网络运算方法 - Google Patents
一种网络处理器和网络运算方法 Download PDFInfo
- Publication number
- CN108694441B CN108694441B CN201710227493.6A CN201710227493A CN108694441B CN 108694441 B CN108694441 B CN 108694441B CN 201710227493 A CN201710227493 A CN 201710227493A CN 108694441 B CN108694441 B CN 108694441B
- Authority
- CN
- China
- Prior art keywords
- neural network
- kernel
- special
- core
- general
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30083—Power or thermal control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种网络处理器和网络运算方法,采用存储器、高速缓存进行网络运算,存储器用于存储网络运算的数据和指令,高速缓存通过存储器总线与存储器连接,可以充分利用硬件实际的运算能力,降低成本,减少功耗开销,并充分利用网络的并行性,提高了网络运算的效率。
Description
技术领域
本公开涉及人工神经网络技术领域,更具体地涉及一种网络处理器和网络运算方法。
背景技术
人工神经网络(ANN)从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按照不同的连接方式组成不同的网络。目前,人工神经网络在很多领域都取得了很大的进展,在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域被广泛用以解决实际问题。
单核神经网络处理器作为一种新型专用处理器,采用专门的指令,充分利用神经网络运算的并行性来进行神经网络运算。但由于单核神经网络处理器需要兼容多数的神经网络模型,对于已有的不同类型的神经网络以及不同规模的神经网络运算都需要提供支持,这使得已有的单核神经网络处理器结构复杂、成本昂贵,且对于规模较小,结构简单的神经网络运算以及如脉冲神经网络(SNN)等简单神经网络模型的运算,也存在着浪费硬件资源和功耗开销过大的问题,同时,单核神经网络处理器没有针对神经网络运算过程中不同层之间的并行性进行加速,仍存在很大的优化空间。
由此,针对不同神经网络模型以及神经网络运算的规模,在充分利用神经网络运算过程中层内的并行性和不同层之间的并行性的条件下来完成神经网络运算和充分利用神经网络运算装置,减少功能部件冗余已经成为神经网络运算装置的改进方向。
发明内容
(一)要解决的技术问题
有鉴于此,本公开的主要目的在于提供一种网络处理器和网络运算方法,以克服上述现有技术的缺陷。
(二)技术方案
根据本公开的一个方面,提供了一种神经网络处理器,包括:高速缓存和异构内核;其中,
所述异构内核,与所述高速缓存连接,通过高速缓存读取神经网络运算的数据和指令,完成神经网络运算。
在一些实施例中,所述的神经网络处理器,还包括:存储器,用于存储神经网络运算的数据和指令;所述高速缓存与所述存储器连接,用于接收所述存储器发送的神经网络运算的数据和指令。
在一些实施例中,所述异构内核还用于将运算结果送回到高速缓存,及控制高速缓存将运算结果写回到存储器。
在一些实施例中,所述高速缓存通过存储器总线与所述存储器连接;所述异构内核通过高速缓存总线与所述高速缓存连接。
在一些实施例中,所述异构内核包括:逻辑控制内核、通用内核和专用内核;
所述专用内核用于执行神经网络运算或神经网络层运算,所述通用内核用于执行专用内核不支持的运算,所述逻辑控制内核用于根据神经网络运算的数据,决定由专用内核或通用内核执行神经网络运算或神经网络层运算。
在一些实施例中,所述高速缓存为多个高速缓存组成的非共享高速缓存;
所述异构内核包括多个专用内核;
逻辑控制内核、通用内核以及每一专用内核均通过高速缓存总线与一高速缓存对应连接;
每一专用内核执行一种神经网络运算,通用内核执行超过专用内核所能支持的运算规模或者所有专用内核都不支持的神经网络运算。
在一些实施例中,所述高速缓存为共享高速缓存;
所述异构内核包括多个通用内核和多个专用内核;
每一专用内核执行一神经网络层运算,通用内核执行超过专用内核所能支持的运算规模或者所有专用内核都不支持的神经网络层运算。
根据本公开的另一个方面,提供了一种神经网络运算方法,包括:
异构内核接收高速暂存存储器发送的神经网络运算的数据和指令;以及
利用所述神经网络运算的数据和指令执行神经网络运算。
在一些实施例中,在异构内核接收高速暂存存储器发送的神经网络运算的数据和指令之前,还包括:
高速暂存存储器从存储器读取神经网络运算的数据和指令。
在一些实施例中,在执行神经网络运算之后,还包括:
将运算结果送回到高速暂存存储器,并控制高速暂存存储器将运算结果写回到存储器。
在一些实施例中,异构内核中的逻辑控制内核通过高速缓存从存储器读取神经网络运算的数据和指令;
异构内核中的逻辑控制内核根据数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算。
在一些实施例中,异构内核中的逻辑控制内核根据数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算包括:
异构内核中的逻辑控制内核根据数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核;
如果专用内核m符合条件,则专用内核m作为目标内核,异构内核中的逻辑控制内核向目标内核发送信号,将神经网络运算的数据和指令对应的地址发送到目标内核;
目标内核根据地址通过非共享高速缓存从存储器获取神经网络运算的数据和指令,进行神经网络运算,将运算结果通过非共享高速缓存输出到存储器,运算完成;
如果不存在符合条件的专用内核,则异构内核中的逻辑控制内核向通用内核发送信号,将神经网络运算的数据和指令对应的地址发送到通用内核;
通用内核根据地址通过非共享高速缓存从存储器获取神经网络运算的数据和指令,进行神经网络运算,将运算结果通过非共享高速缓存输出到存储器,运算完成。
在一些实施例中,所述符合条件的专用内核是指支持神经网络运算且能完成神经网络运算规模的专用内核。
在一些实施例中,异构内核中的逻辑控制内核根据数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算包括:
异构内核中的逻辑控制内核对数据中的神经网络模型的类型和参数进行解析,对每一神经网络层分别判断是否存在符合条件的专用内核,并为每一神经网络层分配对应的通用内核或专用内核,得到与神经网络层对应的内核序列;
异构内核中的逻辑控制内核将神经网络层运算的数据和指令对应的地址发送到神经网络层对应的专用内核或通用内核,并向神经网络层对应的专用内核或通用内核发送内核序列中下一个专用内核或通用内核的编号;
神经网络层对应的专用内核和通用内核从地址读取神经网络层运算的数据和指令,进行神经网络层运算,将运算结果传送到共享高速缓存的指定地址;
逻辑控制内核控制共享高速缓存将神经网络层的运算结果写回到存储器中,运算完成。
在一些实施例中,所述符合条件的专用内核是指支持神经网络层运算且能完成该神经网络层运算规模的专用内核。
在一些实施例中,所述神经网络运算包括脉冲神经网络运算;所述神经网络层运算包括神经网络层的卷积运算、全连接层、拼接运算、对位加/乘运算、Relu运算、池化运算和/或Batch Norm运算。
(三)有益效果
从上述技术方案可以看出,本公开的网络处理器和网络运算方法具有以下有益效果:
(1)采用异构内核进行神经网络运算,可以根据实际神经网络的类型和规模选用不同的内核进行运算,充分利用硬件实际的运算能力,降低成本,减少功耗开销。
(2)不同的内核进行不同层的运算,不同层之间并行运算,可以充分利用神经网络的并行性,提高了神经网络运算的效率。
附图说明
图1示意性示出了本公开第一实施例的异构多核神经网络处理器;
图2示意性示出了本公开第二实施例的异构多核神经网络处理器;
图3为本公开第三实施例的神经网络运算方法流程图;
图4为本公开第四实施例的神经网络运算方法流程图。
符号说明
11、21-存储器;12-非共享高速缓存;121-高速缓存;13、23-异构内核;22-共享高速缓存;131、231-逻辑控制内核;132、232-通用内核;133、233-专用内核。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开第一实施例提出了一种异构多核神经网络处理器,参见图1,包括:存储器11、非共享高速缓存12和异构内核13。
存储器11,用于存储神经网络运算的数据和指令,数据包括偏置、权值、输入数据、输出数据、以及神经网络模型的类型和参数,指令包括神经网络运算对应的各种指令。存储器11中存储的数据和指令可以通过非共享高速缓存12传送到异构内核13中。
非共享高速缓存12,包括多个高速缓存121,每一高速缓存121均通过存储器总线与存储器11连接,通过高速缓存总线与异构内核13连接,实现异构内核13与非共享高速缓存12之间、非共享高速缓存12与存储器11之间的数据交换。当异构内核13所需的神经网络运算数据或指令未存储在非共享高速缓存12中时,非共享高速缓存12先通过存储器总线从存储器11中读取所需的数据或指令,然后将其通过高速缓存总线送入到异构内核13中。
异构内核13,包括一逻辑控制内核131、一通用内核132以及多个专用内核133,逻辑控制内核131、通用内核132以及每一专用内核133均通过高速缓存总线与一高速缓存121对应连接。
异构内核13用以从非共享高速缓存12中读取神经网络运算的指令和数据,完成神经网络运算,并将运算结果送回到非高速共享缓存12,控制非共享高速缓存12将运算结果写回到存储器11。
逻辑控制内核131从非共享高速缓存12中读入神经网络运算数据和指令,根据数据中的神经网络模型的类型和参数,判断是否存在支持该神经网络运算且能完成该神经网络运算规模的专用内核133,如果存在,则交由对应的专用内核133完成该神经网络运算,如果不存在,则交由通用内核132完成该神经网络运算。
每一专用内核133可以独立完成一种神经网络运算,例如脉冲神经网络(SNN)运算等相对简单的神经网络运算,并将运算结果写回到其对应连接的高速缓存121中,控制该高速缓存121将运算结果写回到存储器11。
通用内核132可以独立完成超过专用内核所能支持的运算规模的或者所有专用内核133都不支持的神经网络运算,并将运算结果写回到其对应连接的高速缓存121中,控制该高速缓存121将运算结果写回到存储器11。
本公开第二实施例提出了一种异构多核神经网络处理器,参见图2,包括:存储器21、共享高速缓存22和异构内核23。
存储器21,用于存储神经网络运算的数据和指令,数据包括偏置、权值、输入数据、输出数据、和神经网络模型的类型和参数,指令包括神经网络运算对应的各种指令。存储器中存储的数据和指令通过共享高速缓存22传送到异构内核23中。
共享高速缓存22,通过存储器总线与存储器21相连,通过共享高速缓存总线与异构内核23进行连接,实现异构内核23与共享高速缓存22之间、共享高速缓存22与存储器21之间的数据交换。
当异构内核23所需的神经网络运算数据或指令未存储在共享高速缓存22中时,共享高速缓存22先通过存储器总线从存储器21中读取所需的数据或指令,然后将其通过高速缓存总线送入到异构内核23中。
异构内核23,包括一逻辑控制内核231、多个通用内核232以及多个专用内核233,逻辑控制内核231、通用内核232以及专用内核233均通过高速缓存总线与共享高速缓存22连接。
异构内核23用以从共享高速缓存22中读取神经网络运算数据和指令,完成神经网络运算,并将运算结果送回到高速共享缓存22,控制共享高速缓存22将运算结果写回到存储器21。
另外当逻辑控制内核231与通用内核232之间、逻辑控制内核231与专用内核233之间、通用内核232之间以及专用内核233之间需要进行数据传输时,发送数据的内核可以将数据通过共享高速缓存总线先传输到共享高速缓存22,然后再将数据传输到接收数据的内核,而不需要经过存储器21。
对于神经网络运算来说,其神经网络模型一般包括多个神经网络层,每个神经网络层利用上一神经网络层的运算结果进行相应的运算,其运算结果输出给下一神经网络层,最后一个神经网络层的运算结果作为整个神经网络运算的结果。在本实施例异构多核神经网络处理器中,通用内核232和专用内核233均可以执行一个神经网络层的运算,利用逻辑控制内核231、通用内核232以及专用内核233共同完成神经网络运算,以下为了描述方便,将神经网络层简称为层。
其中,每一专用内核233可以独立执行一层运算,例如神经网络层的卷积运算、全连接层、拼接运算、对位加/乘运算、Relu运算、池化运算、Batch Norm运算等,且层的规模不能过大,该运算对层的神经元和突触的数量有限制,在层运算结束后,将运算结果写回到共享高速缓存22中。
通用内核232用于执行超过专用内核233所能支持的运算规模的或者所有专用内核都不支持的层运算,并将运算结果写回到共享高速缓存22中,控制共享高速缓存22将运算结果写回到存储器21。
进一步地,专用内核233和通用内核232将运算结果写回到存储器21后,会向执行下一层运算的专用内核或通用内核发送开始运算信号,通知执行下一层运算的专用内核或通用内核开始运算。
专用内核233和通用内核232在接收到执行上一层运算的专用内核或通用内核发送的开始运算信号,且当前无正在进行的层运算时开始运算,若当前正在进行层运算,则将当前层运算完成,并将运算结果写回到共享高速缓存22中后开始运算。
逻辑控制内核231从共享高速缓存22中读入神经网络运算数据,针对其中的神经网络模型的类型和参数,对神经网络模型的每个层进行解析,对于每一层,判断是否存在支持该层运算且能完成该层运算规模的专用内核233,如果存在,则将该层的运算交由对应的专用内核233运算,如果不存在,则将该层的运算交由通用内核232进行运算。逻辑控制内核231还设置通用内核232和专用内核233进行层运算所需的数据和指令的对应地址,通用内核232和专用内核233读取对应地址的数据和指令,执行层运算。
对于执行第一层运算的专用内核233和通用内核232,逻辑控制内核231会在运算开始时对该专用内核233或通用内核232发送开始运算信号,而在神经网络运算结束后,执行最后一层运算的专用内核233或通用内核232会对逻辑控制内核231发送开始运算信号,逻辑控制内核231在接收到开始运算信号后,控制共享高速缓存22将运算结果写回到存储器21中。
本公开第三实施例提供了一种利用第一实施例所述的异构多核神经网络处理器进行神经网络运算的方法,参见图3,步骤如下:
步骤S1:异构内核13中的逻辑控制内核131通过非共享高速缓存12从存储器11中读取神经网络运算的数据和指令;
步骤S2:异构内核13中的逻辑控制内核131根据数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核,符合条件是指该专用内核支持该神经网络运算且能完成该神经网络运算规模。如果专用内核m符合条件,则专用内核m作为目标内核,并执行步骤S3,否则执行步骤S5,其中,m为专用内核编号,1≤m≤M,M为专用内核数量。
步骤S3:异构内核13中的逻辑控制内核131向目标内核发送信号,激活该目标内核,同时将所要进行的神经网络运算的数据和指令对应的地址发送到该目标内核。
步骤S4:目标内核根据获取的地址通过非共享高速缓存12从存储器11中获取神经网络运算的数据和指令,进行神经网络运算,然后将运算结果通过非共享高速缓存12输出到存储器11中,运算完成。
步骤S5:异构内核13中的逻辑控制内核131向通用内核132发送信号,激活通用内核132,同时将所要进行的神经网络运算的数据和指令对应的地址发送到通用内核132。
步骤S6:通用内核132根据获取的地址通过非共享高速缓存12从存储器11中获取神经网络运算的数据和指令,进行神经网络运算,然后将运算结果通过非共享高速缓存12输出到存储器中11,运算完成。
本公开第四实施例提供了一种利用第二实施例所述的异构多核神经网络处理器进行神经网络运算的方法,参见图4,步骤如下:
步骤S1:异构内核23中的逻辑控制内核231通过共享高速缓存22从存储器21中读取神经网络运算的数据和指令。
步骤S2:异构内核23中的逻辑控制内核231对数据中的神经网络模型的类型和参数进行解析,对于神经网络模型中第1到I层,分别判断是否存在符合条件的专用内核,I为神经网络模型的层数,符合条件是指该专用内核支持该层运算且能完成该层运算规模,并为每一层运算分配对应的通用内核或专用内核。
对于神经网络模型第i层运算,1≤i≤I,若专用内核m符合条件,则选择专用内核m执行神经网络模型第i层运算,m为专用内核编号,1≤m≤M,M为专用内核数量。如果没有专用内核符合条件,则选择通用内核M+n执行神经网络模型第i层运算,M+n为通用内核的编号,1≤n≤N,N为通用内核数量,其中专用内核233和通用内核232统一编号,最后得到与神经网络模型第1到I层运算对应的内核序列。即该内核序列共有I个元素,每一元素为一专用内核或通用内核,依序对应神经网络模型第1到I层运算。例如内核序列1a,2b,...,il,其中1、2、i表示神经网络层的编号,a、b、1表示专用内核或通用内核的编号。
步骤S3:异构内核23中的逻辑控制内核231将所要进行的层运算的数据和指令对应的地址发送到执行该层运算的专用内核或通用内核,并向执行该层运算的专用内核或通用内核发送内核序列中下一个专用内核或通用内核的编号,其中向执行最后一层运算的专用内核或通用内核发送的是逻辑控制内核的编号。
步骤S4:异构内核23中的逻辑控制内核231向内核序列中第一个内核发送开始运算信号。第一专用内核233或通用内核232在接收到开始运算信号之后,若当前存在未完成的运算,则继续完成运算,然后,继续从数据和指令对应的地址读取数据和指令,进行当前层运算。
步骤S5:第一专用内核233或通用内核232在完成当前层运算之后,将运算结果传送到共享高速缓存22的指定地址,同时,向内核序列中第二个内核发送开始运算信号。
步骤S6:以此类推,内核序列中每一内核接收到开始运算信号之后,若当前存在未完成的运算,则继续完成运算,然后,继续从数据和指令对应的地址读取数据和指令,进行其对应的层运算,将运算结果传送到共享高速缓存22的指定地址,同时,向内核序列中下一个内核发送开始运算信号。其中,内核序列最后一个内核是向逻辑控制内核231发送开始运算信号。
步骤S7:逻辑控制内核231接收到开始运算信号后,控制共享高速缓存22将各个神经网络层的运算结果写回到存储器21中,运算完成。
至此,已经结合附图对本公开实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公开的一种异构多核神经网络处理器和神经网络运算方法有了清楚的认识。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件的定义并不仅限于实施例中提到的各种具体结构、形状,本领域普通技术人员可对其进行简单地更改或替换;本文可提供包含特定值的参数的示范,但这些参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应值;实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向,并非用来限制本公开的保护范围;上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
在一些实施例里,本公开还提供了一种芯片,其包括了上述运算装置。
在一些实施例里,本公开还提供了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本公开还提供了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,本公开还提供了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:
本公开的控制模块并不限定于实施例的具体组成结构,所属技术领域的技术人员熟知的可实现存储模块和运算单元之间数据、运算指令交互的控制模块,均可用于实现本公开。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (12)
1.一种神经网络处理器,包括:高速缓存和异构内核;其中,
所述异构内核,与所述高速缓存连接,通过高速缓存读取神经网络运算的数据和指令,完成神经网络运算;
所述异构内核包括:逻辑控制内核、通用内核和专用内核;
所述专用内核用于执行神经网络运算或神经网络层运算,所述通用内核用于执行专用内核不支持的运算,所述逻辑控制内核用于根据神经网络运算的数据,决定由专用内核或通用内核执行神经网络运算或神经网络层运算,其中,专用内核设置有多个,每一专用内核执行一种神经网络运算;
其中,所述逻辑控制内核根据以下方法决定由专用内核或通用内核执行神经网络运算或神经网络层运算:
所述逻辑控制内核从所述高速缓存中读入神经网络运算数据,根据所述运算数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核,以决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算,如果存在,则交由对应的所述专用内核完成神经网络运算,如果不存在,则交由所述通用内核完成神经网络运算;
所述逻辑控制内核、通用内核以及每一专用内核均通过高速缓存总线与一高速缓存对应连接;
其中,所述符合条件的专用内核是指支持神经网络层运算且能完成该神经网络层运算规模的专用内核;
其中,每个专用内核执行的神经网络运算对神经网络层的神经元和突触的数量有限。
2.如权利要求1所述的神经网络处理器,还包括:存储器,用于存储神经网络运算的数据和指令;所述高速缓存与所述存储器连接,用于接收所述存储器发送的神经网络运算的数据和指令。
3.如权利要求2所述的神经网络处理器,其中,所述异构内核还用于将运算结果送回到高速缓存,及控制高速缓存将运算结果写回到存储器。
4.如权利要求1至3中任一项所述的神经网络处理器,其中,所述高速缓存通过存储器总线与所述存储器连接;所述异构内核通过高速缓存总线与所述高速缓存连接。
5.如权利要求1所述的神经网络处理器,其中,所述高速缓存为多个高速缓存组成的非共享高速缓存;
所述异构内核包括多个专用内核;
每一专用内核执行一种神经网络运算,通用内核执行超过专用内核所能支持的运算规模或者所有专用内核都不支持的神经网络运算。
6.如权利要求1所述的神经网络处理器,其中,
所述高速缓存为共享高速缓存;
所述异构内核包括多个通用内核和多个专用内核;
每一专用内核执行一神经网络层运算,通用内核执行超过专用内核所能支持的运算规模或者所有专用内核都不支持的神经网络层运算。
7.一种神经网络运算方法,包括:
异构内核中的逻辑控制内核接收高速暂存存储器发送的神经网络运算的数据和指令,其中,所述异构内核包括:所述逻辑控制内核、通用内核和专用内核;所述逻辑控制内核、通用内核以及每一专用内核均通过高速缓存总线与一高速缓存对应连接;所述专用内核用于执行神经网络运算或神经网络层运算,所述通用内核用于执行专用内核不支持的运算,所述逻辑控制内核用于根据神经网络运算的数据,决定由专用内核或通用内核执行神经网络运算或神经网络层运算,其中,专用内核设置有多个,每一专用内核执行一种神经网络运算;以及
通过所述异构内核中的通用内核和/或专用内核利用所述神经网络运算的数据和指令执行神经网络运算;
其中,所述逻辑控制内核根据以下方法决定由专用内核或通用内核执行神经网络运算或神经网络层运算:
所述逻辑控制内核从所述高速缓存中读入神经网络运算数据,根据所述运算数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核,以决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算,如果存在,则交由对应的所述专用内核完成神经网络运算,如果不存在,则交由所述通用内核完成神经网络运算;
其中,所述符合条件的专用内核是指支持神经网络层运算且能完成该神经网络层运算规模的专用内核;
其中,每个专用内核执行的神经网络运算对神经网络层的神经元和突触的数量有限。
8.根据权利要求7所述的神经网络运算方法,在异构内核接收高速暂存存储器发送的神经网络运算的数据和指令之前,还包括:
高速暂存存储器从存储器读取神经网络运算的数据和指令。
9.根据权利要求8所述的神经网络运算方法,在执行神经网络运算之后,还包括:
将运算结果送回到高速暂存存储器,并控制高速暂存存储器将运算结果写回到存储器。
10.如权利要求7所述的神经网络运算方法,其中,异构内核中的逻辑控制内核根据数据中的神经网络模型的类型和参数,判断是否存在符合条件的专用内核,以决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算包括:
如果专用内核m符合条件,则专用内核m作为目标内核,异构内核中的逻辑控制内核向目标内核发送信号,将神经网络运算的数据和指令对应的地址发送到目标内核;
目标内核根据地址通过非共享高速缓存从存储器获取神经网络运算的数据和指令,进行神经网络运算,将运算结果通过非共享高速缓存输出到存储器,运算完成;
如果不存在符合条件的专用内核,则异构内核中的逻辑控制内核向通用内核发送信号,将神经网络运算的数据和指令对应的地址发送到通用内核;
通用内核根据地址通过非共享高速缓存从存储器获取神经网络运算的数据和指令,进行神经网络运算,将运算结果通过非共享高速缓存输出到存储器,运算完成。
11.如权利要求7所述的神经网络运算方法,其中,异构内核中的逻辑控制内核根据数据中的神经网络模型的类型和参数,决定由专用内核和/或通用内核执行神经网络运算或神经网络层运算包括:
异构内核中的逻辑控制内核对数据中的神经网络模型的类型和参数进行解析,对每一神经网络层分别判断是否存在符合条件的专用内核,并为每一神经网络层分配对应的通用内核或专用内核,得到与神经网络层对应的内核序列;
异构内核中的逻辑控制内核将神经网络层运算的数据和指令对应的地址发送到神经网络层对应的专用内核或通用内核,并向神经网络层对应的专用内核或通用内核发送内核序列中下一个专用内核或通用内核的编号;
神经网络层对应的专用内核和通用内核从地址读取神经网络层运算的数据和指令,进行神经网络层运算,将运算结果传送到共享高速缓存的指定地址;
逻辑控制内核控制共享高速缓存将神经网络层的运算结果写回到存储器中,运算完成。
12.如权利要求7至11中任一项所述的神经网络运算方法,其中,所述神经网络运算包括脉冲神经网络运算;所述神经网络层运算包括神经网络层的卷积运算、全连接层、拼接运算、对位加/乘运算、Relu运算、池化运算和/或Batch Norm运算。
Priority Applications (17)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710227493.6A CN108694441B (zh) | 2017-04-07 | 2017-04-07 | 一种网络处理器和网络运算方法 |
CN201811423421.XA CN109359736A (zh) | 2017-04-06 | 2018-04-04 | 网络处理器和网络运算方法 |
EP24168317.6A EP4372620A3 (en) | 2017-04-06 | 2018-04-04 | Neural network processor and neural network computation method |
CN201811413244.7A CN109344965A (zh) | 2017-04-06 | 2018-04-04 | 运算装置和方法 |
PCT/CN2018/081929 WO2018184570A1 (zh) | 2017-04-06 | 2018-04-04 | 运算装置和方法 |
EP19199524.0A EP3627437B1 (en) | 2017-04-06 | 2018-04-04 | Data screening device and method |
EP19199521.6A EP3620992B1 (en) | 2017-04-06 | 2018-04-04 | Neural network processor and neural network computation method |
EP18780474.5A EP3579150B1 (en) | 2017-04-06 | 2018-04-04 | Operation apparatus and method for a neural network |
EP19199528.1A EP3624018B1 (en) | 2017-04-06 | 2018-04-04 | Neural network computation device and method |
EP19199526.5A EP3633526A1 (en) | 2017-04-06 | 2018-04-04 | Computation device and method |
CN201880001242.9A CN109219821B (zh) | 2017-04-06 | 2018-04-04 | 运算装置和方法 |
CN201811423295.8A CN109409515B (zh) | 2017-04-06 | 2018-04-04 | 运算装置和方法 |
US16/283,711 US10896369B2 (en) | 2017-04-06 | 2019-02-22 | Power conversion in neural networks |
US16/520,082 US11010338B2 (en) | 2017-04-06 | 2019-07-23 | Data screening device and method |
US16/520,041 US11551067B2 (en) | 2017-04-06 | 2019-07-23 | Neural network processor and neural network computation method |
US16/520,615 US10671913B2 (en) | 2017-04-06 | 2019-07-24 | Computation device and method |
US16/520,654 US11049002B2 (en) | 2017-04-06 | 2019-07-24 | Neural network computation device and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710227493.6A CN108694441B (zh) | 2017-04-07 | 2017-04-07 | 一种网络处理器和网络运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108694441A CN108694441A (zh) | 2018-10-23 |
CN108694441B true CN108694441B (zh) | 2022-08-09 |
Family
ID=63843176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710227493.6A Active CN108694441B (zh) | 2017-04-06 | 2017-04-07 | 一种网络处理器和网络运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108694441B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109711367B (zh) * | 2018-12-29 | 2020-03-06 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN109740746B (zh) * | 2018-12-29 | 2020-01-31 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111694617B (zh) * | 2018-12-29 | 2023-05-02 | 中科寒武纪科技股份有限公司 | 网络离线模型的处理方法、人工智能处理装置及相关产品 |
CN111193916B (zh) * | 2018-12-29 | 2022-03-29 | 中科寒武纪科技股份有限公司 | 运算方法 |
CN109697500B (zh) * | 2018-12-29 | 2020-06-09 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN111930668B (zh) * | 2020-08-03 | 2023-09-26 | 中国科学院计算技术研究所 | 运算装置、方法、多核智能处理器及多核异构智能处理器 |
WO2022082463A1 (zh) * | 2020-10-20 | 2022-04-28 | 华为技术有限公司 | 通信方法、装置及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1242848A (zh) * | 1996-11-20 | 2000-01-26 | 罗伯特·J·詹恩阿罗尼 | 多内核神经网络并行学习、监视和预报系统 |
US20110087943A1 (en) * | 2009-10-12 | 2011-04-14 | Empire Technology Development Llc | Reliable communications in on-chip networks |
CN102445980A (zh) * | 2011-09-19 | 2012-05-09 | 浪潮电子信息产业股份有限公司 | 一种基于bp神经网络的节能控制系统 |
CN103744644A (zh) * | 2014-01-13 | 2014-04-23 | 上海交通大学 | 采用四核结构搭建的四核处理器系统及数据交换方法 |
WO2016099779A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
CN105930902A (zh) * | 2016-04-18 | 2016-09-07 | 中国科学院计算技术研究所 | 一种神经网络的处理方法、系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636800A (zh) * | 2013-11-06 | 2015-05-20 | 上海思控电气设备有限公司 | 基于最小二乘加权的冷冻站系统神经网络优化单元及其方法 |
CN106250981B (zh) * | 2015-06-10 | 2022-04-01 | 三星电子株式会社 | 减少存储器访问和网络内带宽消耗的脉冲神经网络 |
CN106326985A (zh) * | 2016-08-18 | 2017-01-11 | 北京旷视科技有限公司 | 神经网络训练方法和装置及数据处理方法和装置 |
-
2017
- 2017-04-07 CN CN201710227493.6A patent/CN108694441B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1242848A (zh) * | 1996-11-20 | 2000-01-26 | 罗伯特·J·詹恩阿罗尼 | 多内核神经网络并行学习、监视和预报系统 |
US20110087943A1 (en) * | 2009-10-12 | 2011-04-14 | Empire Technology Development Llc | Reliable communications in on-chip networks |
CN102445980A (zh) * | 2011-09-19 | 2012-05-09 | 浪潮电子信息产业股份有限公司 | 一种基于bp神经网络的节能控制系统 |
CN103744644A (zh) * | 2014-01-13 | 2014-04-23 | 上海交通大学 | 采用四核结构搭建的四核处理器系统及数据交换方法 |
WO2016099779A1 (en) * | 2014-12-19 | 2016-06-23 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
CN105930902A (zh) * | 2016-04-18 | 2016-09-07 | 中国科学院计算技术研究所 | 一种神经网络的处理方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108694441A (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694441B (zh) | 一种网络处理器和网络运算方法 | |
EP3620992A1 (en) | Neural network processor and neural network computation method | |
CN111079909B (zh) | 运算方法、系统及相关产品 | |
CN111178373B (zh) | 运算方法、装置及相关产品 | |
CN111079916B (zh) | 运算方法、系统及相关产品 | |
CN111258641A (zh) | 运算方法、装置及相关产品 | |
CN111078125B (zh) | 运算方法、装置及相关产品 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
CN111079907B (zh) | 运算方法、装置及相关产品 | |
CN111079914B (zh) | 运算方法、系统及相关产品 | |
CN111078293B (zh) | 运算方法、装置及相关产品 | |
CN111079915B (zh) | 运算方法、装置及相关产品 | |
CN111079913B (zh) | 运算方法、装置及相关产品 | |
CN111079910B (zh) | 运算方法、装置及相关产品 | |
CN111079911B (zh) | 运算方法、系统及相关产品 | |
CN111078283B (zh) | 运算方法、装置及相关产品 | |
CN112394903A (zh) | 短整形转半精度浮点指令处理装置、方法及相关产品 | |
CN111813450A (zh) | 运算方法、装置及相关产品 | |
CN115495157A (zh) | 分组运算装置、方法、集成电路芯片、计算装置和板卡 | |
CN112394993A (zh) | 半精度浮点转短整形指令处理装置、方法及相关产品 | |
CN112394990A (zh) | 浮点转半精度浮点指令处理装置、方法及相关产品 | |
CN112394987A (zh) | 短整形转半精度浮点指令处理装置、方法及相关产品 | |
CN111723921A (zh) | 人工智能计算装置及相关产品 | |
CN112394986A (zh) | 半精度浮点转浮点指令处理装置、方法及相关产品 | |
CN112346781A (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 |