CN111178494A - 神经处理单元、神经处理系统和应用系统 - Google Patents
神经处理单元、神经处理系统和应用系统 Download PDFInfo
- Publication number
- CN111178494A CN111178494A CN201910836241.2A CN201910836241A CN111178494A CN 111178494 A CN111178494 A CN 111178494A CN 201910836241 A CN201910836241 A CN 201910836241A CN 111178494 A CN111178494 A CN 111178494A
- Authority
- CN
- China
- Prior art keywords
- hardware
- neural network
- neural
- processing unit
- core
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Abstract
提供了一种神经处理单元、神经处理系统和应用系统。所述神经处理单元执行包括第一神经网络运算的应用工作,所述神经处理单元包括:第一处理核,其被配置为执行第一神经网络运算;硬件块,其可重构为被配置为执行硬件块工作的硬件核;以及至少一个处理器,其被配置为执行计算机可读指令,以基于第一处理核的第一工作负荷将应用工作的一部分作为硬件块工作分布给硬件块。
Description
相关申请的交叉引用
本申请要求于2018年11月9日在韩国知识产权局提交的韩国专利申请No.10-2018-0137345的优先权,该申请的公开以引用方式全文并入本文中。
技术领域
本公开涉及一种神经处理单元、一种神经处理系统和一种应用系统,并且更具体地说,涉及包括可重构硬件块的神经处理单元、神经处理系统和应用系统。
背景技术
可使用诸如CPU(中央处理单元)或GPU(图形处理单元)的处理核来执行DNN(深度神经网络)运算。随着DNN运算的吞吐量增加,可使用NPU(神经处理单元)来快速执行DNN运算。
DNN运算可分为CNN(卷积神经网络)运算、RNN(循环神经网络)运算等。根据DNN运算的类型,可以使用具有不同硬件结构的NPU。例如,用于执行CNN运算的NPU的硬件结构可不同于用于执行RNN运算的NPU的硬件结构。
可在特定应用(例如,应用工作)中执行多种DNN运算。例如,CNN运算和RNN运算二者均可在单个应用中执行。
在NPU仅具有用于执行一种DNN运算的硬件结构的情况下,可不执行另一类型的DNN运算或者可高延迟地执行另一类型的DNN运算。另外,即使在NPU具有用于执行多种DNN运算的硬件结构时,执行应用工作所耗的时间也可根据包括在应用工作中的DNN运算的量而被延迟。例如,NPU可具有一个CNN处理核和一个RNN处理核。如果包括在由NPU执行的应用工作中的CNN运算的量和RNN运算的量彼此不同(例如,许多CNN运算和少量RNN运算),资源可能被浪费。也就是说,一个处理核可比另一处理核更早地完成运算的执行,并且变得空闲。应用工作的完成可能被延迟至所述另一处理核的运算完成为止。
因此,为了快速处理应用工作并防止或减少资源浪费,期望实现这样的神经处理单元、神经处理系统和应用系统:其具有同时处理两个或更多个神经网络运算的异构性,并具有可重构性,可重构性是硬件被重构以处理两个或更多个神经网络运算的能力。
发明内容
本公开的各方面提供了一种神经处理单元、一种神经处理系统和一种应用系统,它们具有异构性和可重构性,以快速处理应用程序工作并防止或减少资源浪费。
然而,本公开的各方面不限于本文所述的。通过参照下面提供的本公开的详细描述,本公开的以上和其它方面将对于本公开所属的领域的普通技术人员变得更清楚。
根据本公开的一方面,提供了一种神经处理单元,其被配置为执行包括第一神经网络运算的应用工作。所述神经处理单元包括:第一处理核,其被配置为执行第一神经网络运算;硬件块,其可重构为被配置为执行硬件块工作的硬件核;以及至少一个处理器,其被配置为执行计算机可读指令,以基于第一处理核的第一工作负荷将应用工作的一部分作为硬件块工作分布给硬件块。
根据本公开的一方面,提供了一种神经处理单元,所述神经处理单元包括:硬件块,其可重构为:第一硬件核,其被配置为执行第一神经网络的运算,或者第二硬件核,其被配置为执行与第一神经网络不同的第二神经网络的运算;以及内部存储器,其存储用于执行第一神经网络的运算或第二神经网络的运算的函数数据。
根据本公开的一方面,提供了一种神经处理系统,所述神经处理系统包括:外部存储器,其存储可用于重构硬件块的元数据;以及神经处理单元,其包括第一处理核和硬件块,第一处理核被构造为执行第一神经网络的运算。
根据本公开的一方面,提供了一种应用系统,所述应用系统包括:中央处理单元(CPU),其被配置为执行计算机可读指令,以执行用于执行应用的一个或多个运算,并且分布用于执行应用的待执行的一组应用工作中的第一应用工作,第一应用工作包括第一神经网络运算;神经处理单元,其包括第一处理核和硬件块,神经处理单元被配置为使用第一处理核和硬件块执行第一应用工作,第一处理核被配置为执行第一神经网络运算;以及重构加载器,其被配置为将元数据传递至神经处理单元,元数据可用于重构硬件块。
附图说明
通过参照附图详细描述本公开的的示例实施例,本公开的以上和其它方面和特征将变得更清楚,其中:
图1是根据一些实施例的神经处理单元的框图;
图2是根据一些实施例的神经处理单元的框图;
图3是根据一些实施例的神经处理单元的框图;
图4是根据一些实施例的神经处理单元的框图;
图5是示出根据一些实施例的DNN(深度神经网络)运算的框图;
图6是根据一些实施例的DNN运算的框图;
图7是示出量化加权数据的示图;
图8是根据一些实施例的神经处理单元的框图;
图9是根据一些实施例的神经处理单元的框图;
图10是示出函数数据的示图;
图11是根据一些实施例的神经处理系统的框图;
图12是根据一些实施例的神经处理系统的框图;
图13是根据一些实施例的神经处理系统的框图;
图14是根据一些实施例的应用系统的框图;
图15是示出根据一些实施例的应用工作流的框图;以及
图16是示出根据一些实施例的存储器中流动的数据的框图。
具体实施方式
将参照图1至图4描述根据本申请的一些实施例的神经处理单元。图1至图4是根据本申请的一些实施例的神经处理单元的框图。
参照图1,根据本申请的一些实施例的神经处理单元100可包括第一处理核110、工作分布器120、硬件块130和/或总线140。
神经处理单元100可执行应用工作150(例如,将在特定应用中执行的神经网络运算)。根据一些示例实施例,应用工作150可包括一个或多个机器代码和/或本机指令,其可指定特定寄存器和/或算法、与神经处理单元100的寄存器和/或功能对应的寻址和/或控制功能。应用工作150可包括第一处理核工作152或硬件块工作154。第一处理核工作152可由将在下面描述的第一处理核110执行。硬件块工作154可由将在下面描述的硬件核执行。这里,硬件核可表示从硬件块120重构的稍后参照图2至图4描述的CNN处理硬件核132、RNN处理硬件核134、用于执行MAC运算的MAC(乘加,即,乘法和加法)处理硬件核136等,但是本公开的范围不限于此。
第一处理核110可执行第一神经网络运算。也就是说,第一处理核工作152可包括第一神经网络运算。例如,第一神经网络运算可以是CNN(卷积神经网络)运算,并且第一处理核110可以是用于处理CNN运算的CNN IP(知识产权)核。另外,第一神经网络运算可以是RNN(循环神经网络)运算,并且第一处理核110可以是用于处理RNN运算的RNN IP核。这样,在本说明书中,已经将CNN运算和RNN运算描述为第一神经网络运算的示例,但是本公开的范围不限于此。
工作分布器120可向硬件块130分布应用工作150的一部分作为硬件块工作154(向硬件块130分布硬件块工作154在本文中还称作分布“为硬件块工作154”)。工作分布器120可根据第一处理核110的第一工作负荷将应用工作150的一部分分布为硬件块工作154。例如,工作分布器120可经由总线140从第一处理核110接收第一工作负荷。另外,工作分布器120可根据第一工作负荷将应用工作150的一部分分布为硬件块工作154。
在一些实施例中,工作分布器120可向第一处理核110和/或硬件块130分布输入至神经处理单元100的应用工作150。例如,工作分布器120可向第一处理核110分布第一神经网络运算作为第一处理核工作152(向第一处理核110进行分布作为第一处理核工作152在本文中还称作分布“为第一处理核工作152”),并且可向硬件块工作154分布应用工作150的其余运算。
在一些实施例中,工作分布器120可根据第一工作负荷是否超过预定(或限定)值来将第一处理核工作152的一部分分布为硬件块工作154。例如,如果第一工作负荷超过预定值,则工作分布器120可将第一处理核工作152的一部分分布为硬件块工作154。在实施例中,包括在第一处理核工作152中的一部分第一神经网络运算可被分布为硬件块工作154。另外,如果第一工作负荷未超过预定值,则工作分布器120可不将第一处理核工作152的一部分分布为硬件块工作154。在实施例中,工作分布器120可将包括在应用工作150中的其它运算(非第一处理核工作152)分布为硬件块工作154。
工作分布器120可以是硬件。例如,工作分布器120可以是(但不限于)分离的IP核。另外,工作分布器120可以是软件。例如,神经处理单元100可包括执行应用工作150中的除第一处理核工作152和硬件块工作154之外的其余一般工作的通用处理核,并且工作分布器120可以是由通用处理核执行的软件。根据一些示例实施例,本文中被描述为由神经处理单元100和工作分布器120中任一个或二者执行的运算可由执行程序代码的至少一个处理器(例如,通用处理核)执行,程序代码包括与运算对应的指令。指令可包括一个或多个机器代码和/或本机指令,其可指定特定寄存器和/或算法、与神经处理单元100和/或工作分布器120对应的寄存器和/或功能的寻址和/或控制功能。指令可被存储在神经处理单元100的存储器(例如,下面讨论的内部存储器160)中。例如,本公开中使用的术语‘处理器’可指硬件实施的数据处理装置,其具有在物理上结构化为执行期望运算的电路,所述运算包括例如表示为包括在程序中的代码和/或指令的运算。在至少一些示例实施例中,上述硬件实施的数据处理装置可包括(但不限于)微处理器、中央处理单元(CPU)、处理器核、多核处理器;多处理器、专用集成电路(ASIC)和现场可编程门阵列(FPGA)。
硬件块130可被重构为用于执行硬件块工作154的硬件核。也就是说,硬件块130可根据硬件块工作154被重构为具有用于执行硬件块工作154的结构的硬件核。如果工作分布器120将第一神经网络运算分布为硬件块工作154,则硬件块130可被重构为用于处理第一神经网络运算的硬件核。如果工作分布器120将与第一神经网络不同的第二神经网络运算分布为硬件块工作154,则硬件块130可被重构为用于处理第二神经网络运算的硬件核。
作为示例,当硬件块工作154是CNN(卷积神经网络)运算时,硬件块130可被重构为下面将在图2中描述的CNN处理硬件核132。作为另一示例,当硬件块工作154是RNN(循环神经网络)运算时,硬件块130可被重构为稍后将在图3中描述的RNN处理硬件核134。此外,作为另一示例,当硬件块工作154是MAC(乘加)运算时,硬件块130可被重构为稍后将在图4中描述的用于执行MAC运算的MAC处理硬件核136。
在一些实施例中,在神经处理单元100执行应用工作的同时,硬件块130可被重构为用于执行硬件块工作154的硬件核。例如,在神经处理单元100执行应用工作的同时,工作分布器120可按次序将第一神经网络运算和与第一神经网络不同的第二神经网络运算分布为硬件块工作154。此时,硬件块130可按次序被重构为用于处理第一神经网络运算的第一硬件核和用于处理第二神经网络运算的第二硬件核。
根据一些示例实施例,本文中被描述为由第一处理核110和硬件块130(和硬件块130的重构的硬件核,例如,如下面讨论的CNN处理硬件核132、RNN处理硬件核134和/或MAC处理硬件核136)中的任一个或二者执行的运算可由执行程序代码的至少一个处理器执行,程序代码包括与运算对应的指令。指令可包括一个或多个机器代码和/或本机指令,其可指定特定寄存器和/或算法、与第一处理核110和/或硬件块130的寄存器和/或功能对应的寻址和/或控制功能。指令可被存储在存储器中。例如,第一处理核110和硬件块130中的任一个或二者可包括按照硬件描述语言(例如,Verilog)编程的逻辑块。作为示例,第一处理核110和硬件块130中的任一个或二者可以是FPGA(现场可编程门阵列)。作为另一示例,神经处理单元可以是eFPGA(嵌入式FPGA),并且第一处理核110和硬件块130中的任一个或二者可以是包括在eFPGA中的FPGA块。在一些示例实施例中,本文中被描述为由神经处理单元100和工作分布器120中的任一个或二者执行的运算可由执行第一程序代码的至少一个第一处理器执行,第一程序代码包括与运算对应的指令;本文中被描述为由第一处理核110执行运算可由执行第二程序代码的至少一个第二处理器执行,第二程序代码包括与运算对应的指令;并且本文中被描述为由硬件块130执行的运算可由执行第三程序代码的至少一个第三处理器执行,第三程序代码包括与运算对应的指令。第一程序代码、第二程序代码和/或第三程序代码可存储在神经处理单元100的存储器(例如,内部存储器160)中。在实施例中,第二程序代码可存储在第一处理核110的存储器中,并且第三程序代码可存储在硬件块130的存储器中。
总线140可以是在工作分布器120、第一处理核110和/或硬件块130之间移动数据的路径。总线140可以是用于将神经处理单元100的应用工作150传递至工作分布器120的路径。总线140可以是用于将从工作分布器120分布的第一处理核工作152和/或硬件块工作154传递至第一处理核110和/或硬件块130的路径。
参照图2,图1的硬件块130可被重构为CNN(卷积神经网络)处理硬件核132。例如,如果从工作分布器120分布的硬件块工作154是CNN运算,则硬件块130可被重构为用于处理CNN运算的CNN处理硬件核132。例如,CNN运算可包括与图像识别处理相关的神经网络运算。例如,CNN运算可包括用于识别图像中的字符、人、物体等的神经网络运算。
参照图3,图1的硬件块130可被重构为RNN(循环神经网络)处理硬件核134。例如,如果从工作分布器120分布的硬件块工作154是RNN运算,则硬件块130可被重构为用于处理RNN运算的RNN处理硬件核134。例如,RNN运算可包括与语音识别处理相关的神经网络运算。例如,RNN运算可包括用于从语音(例如,检测到和/或记录的音频)中识别字符、音乐、声源等的神经网络运算。
参照图4,硬件块130可被重构为执行MAC运算的MAC处理硬件核136。在一些实施例中,第一神经网络运算可包括第一MAC(乘加)运算。工作分布器120基于第一MAC运算与第一处理核110的第一工作负荷的比率,将第一MAC运算的一部分分布为硬件块工作。在实施例中,第一MAC运算与第一工作负荷的比率是包括在第一MAC运算中的运算和/或指令的量与包括在第一工作负荷中的运算和/或指令的量的比率。在实施例中,第一MAC运算与第一工作负荷的比率是第一MAC运算的数据大小与第一工作负荷的数据大小的比率。作为示例,如果第一MAC运算与第一处理核110的第一工作负荷的比率超过预定(或限定)值,则工作分布器120可将第一MAC运算的一部分分布为硬件块工作154。例如,当预定值是0.4并且第一MAC运算与第一工作负荷的比率是0.6时,工作分布器120可将第一MAC运算的一部分划分为硬件块工作154。在实施例中,硬件块130可被重构为用于执行第一MAC运算的MAC处理硬件核136。作为另一示例,当第一MAC运算与第一处理核110的第一工作负荷的比率不超过预定(或限定)值时,工作分布器120可不将第一MAC运算的一部分分布为硬件块工作154。在实施例中,可不将硬件块130重构为MAC处理硬件核136。
例如,MAC处理硬件核136可执行用于从一系列输入值(X1、X2、……、Xm)和一系列加权值(WX1、WX2、……、WXm)中运算出加权输入值之和(X1×WX1+X2×WX2+……+Xm×WXm)的MAC运算。在一些实施例中,MAC处理硬件核136可包括执行乘法运算的乘法器和/或执行加法运算的加法器。根据一些示例实施例,本文中被描述为由乘法器和加法器中的任一个或二者执行的运算可由执行程序代码的至少一个处理器执行,程序代码包括与运算对应的指令。指令可存储在存储器中。
乘法器可从输入值(X1、X2、……、Xm)和一系列加权值(WX1、WX2、……、WXm)中运算出(例如,确定和/或计算出)加权输入值(X1×WX1、X2×WX2、……、Xm×WXm)。作为示例,MAC处理硬件核136的乘法器可包括分别将一系列输入值(X1、X2、……、Xm)与一系列加权值(WX1、WX2、……、WXm)直接相乘的乘法器。作为另一示例,MAC处理硬件核136的乘法器可包括查找表,其包括如图5至图7中所详细描述的量化加权数据。
加法器可从加权输入值(X1×WX1、X2×WX2、……、Xm×WXm)中运算出(例如,确定和/或计算出)加权输入值的和(X1×WX1+X2×WX2+……+Xm×WXm)。
将参照图5和图6描述根据本申请的一些实施例的神经处理单元的MAC处理硬件核136。为了便于解释,将主要描述与图1至图4描述的那些的差异。图5和图6是示出根据一些实施例的DNN(深度神经网络)运算的框图。
参照图5,DNN运算包括MAC运算210和/或激活函数运算220。
MAC运算210可从输入值(X1、X2、……、Xm)和一系列加权值(WX1、WX2、……、WXm)中运算出(例如,确定和/或计算出)加权输入值的和(X1×WX1+X2×WX2+……+Xm×WXm)。根据本申请的一些实施例,MAC运算210可由神经处理单元100的MAC处理硬件核136执行。
激活函数运算220可基于输入值ΣXiWi运算出激活函数输出值f(ΣXiWi)。例如,用于激活函数运算220的激活函数可包括Sigmoid函数、tanh(双曲正切)函数、ReLU(修正线性单元)函数等,但是本公开的范围不限于此。根据本申请的一些实施例,可通过MAC处理硬件核136使用来自内下面将参照图9描述的存储器160的信息来执行激活函数运算220。
参照图6,根据本申请的一些实施例的MAC处理硬件核136可包括第一信号分离器至第m信号分离器(多路分配器)(D1、……、Dm)、第一查找表至第m查找表(T1、……、Tm)和/或加法器A1。根据一些示例实施例,本文描述为由第一信号分离器至第m信号分离器和加法器A1中的任一个或全部执行的运算可由执行程序代码的至少一个处理器执行,程序代码包括与运算对应的指令。指令和/或第一查找表至第m查找表(T1、……、Tm)可存储在存储器中。
第一多路分配器至第m多路分配器(D1、……、Dm)可确定对应的加权值的索引。例如,第一多路分配器D1可确定第一输入值X1的第一加权值WX1的第一索引(IdX1=2)。第二多路分配器D2可确定第二输入值X2的第二加权值WX2的索引(IdX2=0)。第m多路分配器Dm可确定第m输入值Xm的第m加权值WXm的索引(IdXm=1)。下面将在图7中详细描述加权值的索引。
第一查找表至第m查找表(T1、……、Tm)可包括输入数据与量化的一系列加权值的相乘值。例如,第一查找表T1可包括第一输入数据X1与量化的一系列加权值(W’0、W’1、……、W’15)的相乘值(X1×W’0、X1×W’1、……、X1×W’15)。第二查找表T2可包括第二输入数据X2与量化的一系列加权值(W’0、W’1、……、W’15)相乘值(X2×W’0、X2×W’1、……、X2×W’15)。第m查找表Tm可包括第m输入数据Xm与量化的一系列加权值(W’0、W’1、……、W’15)的相乘值(Xm×W’0、Xm×W’1、……、Xm×W’15)。将在下面参照图7详细描述一系列量化加权值。
第一多路分配器至第m多路分配器(D1、……、Dm)可将与第一查找表至第m查找表(T1、……、Tm)的确定的索引对应的量化数据发送至加法器A1。例如,第一多路分配器D1可将通过将输入数据X1乘以与第一查找表T1的第一索引(IdX1=2)对应的量化加权数据W’2而获得的值(X1×W’2)发送至加法器A1。第二多路分配器D2可将通过将输入数据X2乘以与第二查找表T2的第二索引(IdX2=0)对应的量化加权数据W’0而获得的值(X2×W’0)发送至加法器A1。第m多路分配器Dm可将通过将输入数据Xm乘以与第m查找表Tm的第m索引(IdXm=1)对应的量化加权数据W’1而获得的值(Xm×W’1)发送至加法器A1。
加法器A1可运算出(例如,确定和/或计算出)从第一多路分配器至第m多路分配器(D1、……、Dm)发送的加权数据(X1×W’2、X2×W’0、……、Xm×W’1)的和(X1×W’2+X2×W’0+……+Xm×W’1)。来自加法器A1的结果值可被输入至激活函数运算220。
这样,当使用包括量化加权数据的查找表将根据本申请的一些实施例的神经处理单元100的硬件块130重构为执行MAC运算的MAC处理硬件核136时,能够省略按照一般MAC运算执行的输入值与加权值的乘法运算。因此,根据本申请的一些实施例的神经处理单元100可快速处理应用工作150并且可节约资源。
将参照图7描述量化加权数据的索引和加权值。图7是用于解释量化加权数据的图。在图7所示的曲线图中,水平轴表示加权值的大小,竖直轴表示加权值的分布(例如,密度)。图7的加权值示为符合正态分布,但是实施例不限于此。
参照图7,加权值的分布可包括多个区。例如,加权值的分布可包括具有相同宽度的第0区至第十五区(R0、R1、……、R15)。另外,加权值的分布可包括具有相同宽度的128个区。
多个区(R0、R1、……、R15)中的每一个可包括一个量化加权数据(W’0、W’1、……、W’15)。作为示例,量化加权数据(W’0、W’1、……、W’15)可以是在每个区中的中间值。也就是说,当区R1的水平轴在从W’1i至W’1f的范围内时,从W’1i至W’1的区的宽度可与从W’1至W’1f的区的宽度相同。作为另一示例,量化加权数据(W’0、W’1、……、W’15)可以是每个区中的平均值。也就是说,当区R1的水平轴在从W’1i至W’1f的范围内时,W’1可以是(W’1i+W’1f)/2。再参照图6,MAC处理硬件核136的第一多路分配器至第m多路分配器(D1、……、Dm)可确定输入值(X1、X2、……、Xm)中的每一个的加权值(WX1、WX2、……、WXm)的索引。例如,第一多路分配器D1可基于图7所示的加权值的分布中的所述多个区之中的哪个区包括第一输入值X1的第一加权值WX1来确定索引。例如,当在第二区R2中包括第一加权值WX1时,第一索引IdX1可被确定为2。当在第0区R0中包括第二加权值WX2时,第二索引IdX2可被确定为0。当在第一区R1中包括第m加权值WXm时,第m索引IdXm可被确定为1。
下文中,将参照图8描述根据本申请的一些实施例的神经处理单元。为了方便解释,将主要描述与图1至图7所述的那些的区别。图8是根据一些实施例的神经处理单元的框图。
参照图8,根据本申请的一些实施例的神经处理单元102可包括第一处理核110、第二处理核112、工作分布器120、硬件块130和/或总线140。根据一些示例实施例,本文中被描述为由第二处理核112执行的运算可由执行程序代码的至少一个处理器执行,程序代码包括与运算对应的指令。指令可包括一个或多个机器代码和/或本机指令,其可指定特定寄存器和/或算法、与第二处理核112的寄存器和/或功能的寻址和/或控制功能。指令可存储在存储器中。例如,第二处理核112可包括按照硬件描述语言(例如,Verilog)编程的逻辑块。作为示例,第二处理核112可以是FPGA(现场可编程门阵列)。作为另一示例,神经处理单元可以是eFPGA(嵌入式FPGA),并且第二处理核112可以是包括在eFPGA中的FPGA块。在一些示例实施例中,本文中被描述为由第二处理核112执行的运算可由执行第四程序代码的至少一个第四处理器执行,第四程序代码包括与运算对应的指令。第四程序代码可被存储在神经处理单元100的存储器(例如,内部存储器160)和/或第二处理核112的存储器中。
神经处理单元102可执行应用工作150。应用工作150可包括第一处理核工作152、第二处理核工作156和/或硬件块工作154。第二处理核工作156可由将在下面描述的第二处理核112执行。
第二处理核112可执行第二神经网络运算。也就是说,第二处理核工作156可包括第二神经网络运算。例如,第二神经网络运算可以是CNN运算,并且第二处理核112可以是用于处理CNN运算的CNN IP核。在实施例中,第二神经网络运算可以是RNN运算,并且第二处理核112可以是用于处理RNN运算的RNN IP核。这样,在本说明书中,已经将CNN运算和/或RNN运算描述为第二神经网络运算的示例,但是本公开的范围不限于此。
第二神经网络运算可以是与第一神经网络运算的类型不同类型的神经网络运算。作为示例,当第一神经网络运算是CNN运算时,第二神经网络运算可以是RNN运算。作为另一示例,当第一神经网络运算是RNN运算时,第二神经网络运算可以是CNN运算。
工作分布器120可将应用工作150的一部分分布为硬件块工作154。工作分布器120可基于第一处理核110的第一工作负荷和/或第二处理核112的第二工作负荷将应用工作150的一部分分布为硬件块工作154。例如,工作分布器120可经由总线140从第一处理核接收第一工作负荷和从第二处理核112接收第二工作负荷。另外,工作分布器120可基于接收到的第一工作负荷和第二工作负荷将应用工作150的一部分分布为硬件块工作154。
在一些实施例中,工作分布器120可向第一处理核110、第二处理核112和/或硬件块130分布输入至神经处理单元102的应用工作150。例如,工作分布器120可将第一神经网络运算分布为第一处理核工作152,将第二神经网络运算分布为第二处理核工作156,以及向硬件块130分布应用工作150中的其余运算作为硬件块工作154。
在一些实施例中,工作分布器120可基于第一工作负荷和/或第二工作负荷将第一处理核工作152的一部分和/或第二处理核工作156的一部分分布为硬件块工作154。例如,工作分布器120可将第一工作负荷的量与第二工作负荷的量进行比较,以将第一处理核工作152的一部分或第二处理核工作156的一部分分布为硬件块工作154。在实施例中,由工作分布器120进行比较的每一个工作负荷的量包括工作负荷中包括的运算和/或指令的量,和/或每一个工作负荷的数据大小中的至少一个。作为示例,如果工作分布器120确定第一工作负荷的量大于第二工作负荷的量,则工作分布器120可将第一处理核工作152的一部分分布为硬件块工作154。在实施例中,包括在第一处理核工作152中的一部分第一神经网络运算可被分布为硬件块工作154。作为另一示例,如果工作分布器120确定第一工作负荷的量小于第二工作负荷的量,则工作分布器120可将第二处理核工作156的一部分分布为硬件块工作154。在实施例中,包括在第二处理核工作156中的一部分第二神经网络运算可被分布为硬件块工作154。
下文中,将参照图5和图9描述根据本申请的一些实施例的神经处理单元。为了方便解释,将主要描述与图1至图8所述的那些的区别。图9是根据一些实施例的神经处理单元的框图。
参照图9,根据本申请的一些实施例的神经处理单元104可包括第一处理核110、工作分布器120、硬件块130、总线140和/或内部存储器160。根据一些示例实施例,本文中被描述为由内部存储器160执行的运算可由执行程序代码的至少一个处理器(例如,所述至少一个第一处理器、所述至少一个第二处理器和/或所述至少一个第三处理器)执行,程序代码包括与运算对应的指令。指令可被存储在神经处理单元100的存储器(例如,内部存储器160)、第一处理核110的存储器和/或硬件块130的存储器中。
内部存储器160可存储神经网络运算中使用的函数数据。例如,内部存储器160可存储在包括在第一处理核工作152和/或硬件块工作154中的第一神经网络运算和/或第二神经网络运算中使用的函数数据。
更具体地,内部存储器160可存储图5的激活函数运算220中使用的激活函数的函数数据。函数数据可包括激活函数的密钥和值。密钥是激活函数的输入数据(例如,k),值可以是激活函数的输出数据(例如,f(k))。因此,通过使用内部存储器160,能够读取预先存储的输出数据,代替在DNN运算中直接执行激活函数运算。这样可有效地减少用于处理DNN运算所耗的时间。
内部存储器160可存储多个激活函数的函数数据。例如,内部存储器160可同时存储tanh函数的函数数据和ReLU函数的函数数据。例如,当在第一神经网络运算中使用Sigmoid函数和在第二神经网络运算中使用ReLU函数时,内部存储器160可存储Sigmoid函数的函数数据和ReLU函数的函数数据。
在一些实施例中,如果硬件块130被重构为用于执行第一神经网络运算的第一硬件核,则内部存储器160可存储用于第一神经网络的运算的激活函数的函数数据。此外,如果硬件块130被重构为用于执行第二神经网络运算的第二硬件核,则内部存储器160可存储用于第二神经网络的运算的激活函数的函数数据。
在一些实施例中,内部存储器160可根据在第一处理核110和/或硬件块130上执行的运算来更新存储的函数数据。另外,当硬件块130被重构为第一硬件核或第二硬件核时,内部存储器160可根据在第一硬件核或第二硬件核中执行的运算来更新存储的函数数据。例如,如果硬件块130被构造为第一硬件核,并且待执行的运算是与第二硬件核对应的运算,则内部存储器160可更新存储的函数数据以将硬件块130重构为第二硬件核。
内部存储器160可删除当前存储的函数数据并存储来自布置在神经处理单元104外部的存储器的新的函数数据,以更新存储的函数数据。另外,内部存储器160可在神经处理单元104执行应用工作的同时更新存储的函数数据。
在一些实施例中,内部存储器160可以是CAM(内容可寻址存储器)。在一些实施例中,内部存储器160可以是二元CAM或TCAM(三元CAM)。
常规的神经处理单元(NPU)包括用于执行一种或多种类型的深度神经网络(DNN)运算(例如,CNN,RNN和/或MAC)的一个或多个硬件结构(例如,核)。常规的NPU被构造为最小化或减少包括在其中的硬件结构的量,以降低成本、资源消耗和/或NPU尺寸和/或复杂度。然而,如果常规的NPU接收用于进行处理的应用工作(其涉及常规的NPU未被构造的一种类型的DNN运算),则可不执行该DNN运算(例如,可能发生执行错误),和/或可高延迟地执行该DNN运算。因此,在构造用于执行许多类型的DNN运算的常规的NPU所导致的更高成本、资源消耗和/或NPU尺寸和/或复杂度与由被构造为执行更少类型的DNN运算的常规的NPU所导致的高延迟和/或执行错误之间存在权衡。此外,在接收的应用工作包括第一类型的DNN运算的许多运算和第二类型的DNN运算的少量运算的情况下,包括用于执行不止一种类型的DNN运算的不止一个硬件结构的常规的NPU经受过量处理延迟和/或资源浪费(例如,低效)。例如,由于在被构造为执行第一类型的DNN运算的第一处理核保持过负荷地执行许多运算的同时,被构造为执行第二类型的DNN运算的第二处理核在执行少量运算之后变为空闲,因此第二处理核的处理时间被浪费。
然而,示例实施例提供了一种改进的NPU,其包括能够被重构为执行不同类型的DNN运算的可重构硬件块(例如,硬件块130)。因此,改进的NPU包括较少的硬件结构,同时使得改进的NPU能够处理许多类型的DNN运算,从而降低成本、资源消耗和/或NPU尺寸和/或复杂度,同时还减小常规的NPU的延迟和/或执行错误。另外,改进的NPU可包括工作分布器120,其在可重构硬件块与一个或多个处理核(例如,第一处理核110)之间分布应用工作,使得可重构硬件块执行一个或多个处理核的工作负荷的一部分,以最小化或减小可重构硬件块与一个或多个处理核之中的空闲时间。因此,改进的NPU防止或减少常规的NPU的过度处理延迟和/或资源浪费(例如,低效)。
下文中,将参照图5、图9和图10描述存储在根据本申请的一些实施例的内部存储器中的函数数据。图10是用于解释函数数据的示图。图10示出了激活函数为tanh的情况,但是本公开不限于此。在图10中,水平轴表示函数的输入域x,竖直轴表示函数的输出域y。
在一些实施例中,内部存储器160可存储包括激活函数的部分区的函数数据。例如,存储在内部存储器160中的函数数据可包括图10所示的数据区RD的函数数据。数据区RD可为tanh函数的部分区。例如,数据区RD可以是具有特定域的区(例如,-1.5<x<1.5)。通过存储包括激活函数的部分区的函数数据而不是激活函数的全部数据,内部存储器160可节约资源(例如,存储器空间)。
下文中,将参照图11至图13描述根据本申请的一些实施例的神经处理系统。为了便于解释,将主要描述与图1至图10中描述的那些的差异。图11至图13是根据一些实施例的神经处理系统的框图。
参照图11,根据本申请的一些实施例的神经处理系统200可包括神经处理单元104和/或外部存储器170。根据一些示例实施例,本文中被描述为由外部存储器170执行的运算可由执行程序代码的至少一个处理器(例如,至少一个第一处理器、至少一个第二处理器和/或至少一个第三处理器)执行,程序代码包括与运算对应的指令。指令可被存储在神经处理单元100的存储器(例如,内部存储器160)、第一处理核110的存储器和/或硬件块130的存储器中。
外部存储器170可存储用于重构神经处理单元104的硬件块130的元数据。例如,外部存储器170可包括用于将硬件块130重构为CNN处理硬件核132的CNN重构数据和/或用于将硬件块130重构为RNN处理硬件核134的RNN重构数据。另外,外部存储器170可包括用于将硬件块130重构为MAC处理硬件核136的MAC重构数据。例如,MAC重构数据可包括用于将硬件块130重构为包括用于存储量化加权数据的查找表的MAC处理硬件核136的重构数据。
外部存储器170可存储第一处理核110和/或硬件块130中使用的全部函数数据。外部存储器170可根据在第一处理核110和/或硬件块130中执行的运算将存储的函数数据提供至神经处理单元104。从外部存储器170提供的函数数据可存储在内部存储器160中。可使用从外部存储器170提供的函数数据更新存储在内部存储器160中的函数数据。
例如,参照图12和图13,外部存储器170包括用于将硬件块130重构为第一硬件核的第一元数据(元数据1)和用于将硬件块130重构为第二硬件核的第二元数据(元数据2)。另外,外部存储器170包括第一激活函数数据f1(x)和第二激活函数数据f2(x)。
在图12中,外部存储器170可将第一元数据提供至神经处理单元104。在实施例中,可使用第一元数据将硬件块130重构为第一硬件核。另外,外部存储器170可将第一激活函数数据提供至神经处理单元104。在实施例中,第一激活函数数据可被存储在内部存储器160中。
在图13中,外部存储器170可将第二元数据提供至神经处理单元104。在实施例中,可使用第二元数据将硬件块130重构为第二硬件核。此外,外部存储器170可将第二激活函数数据提供至神经处理单元104。在实施例中,第二激活函数数据可被存储在内部存储器160中。
外部存储器170可以是可正常使用的存储器装置。例如,外部存储器170可以是动态随机存取存储器(DRAM)和/或闪速存储器。另外,外部存储器可为(但不限于)包括闪速存储器的SSD(固态驱动)装置。
下文中,将参照图14描述根据本申请的一些实施例的应用系统。图14是根据一些实施例的应用系统的框图。
参照图14,根据本申请的一些实施例的应用系统300包括软件层310、内核层320和/或硬件层330。为便于解释,图14中公开的应用系统300示为包括软件层310、内核层320和硬件层330,但是实施例不限于此。另外,软件层310、内核层320和/或硬件层330可以是用于解释应用系统300的运算的概念层。
在一些实施例中,在软件层310上执行应用(APP)312。例如,软件层310可指示在CPU 331、GPU 334和/或神经处理单元106中执行的应用工作被执行,如将在稍后的描述。
在一些实施例中,硬件层330可包括神经处理单元106、CPU 331、存储器332、DMA(直接内存访问)333和/或GPU 334。
在一些实施例中,神经处理单元106可包括第一处理核、工作分布器、硬件块和/或总线。作为示例,神经处理单元106可以是参照图1至图4描述的神经处理单元100。作为另一示例,神经处理单元106可以是参照图8描述的神经处理单元102。作为另一示例,神经处理单元106可以是参照图9描述的神经处理单元104。
CPU 331可执行运算以执行应用312。例如,当用户装置请求执行应用312时,CPU331可执行用于执行应用312的一系列应用工作。另外,CPU 331可向神经处理单元106和/或GPU 334分布应用工作的一部分。在一些实施例中,CPU 331向神经处理单元106分布应用工作中的包括第一神经网络运算的应用工作。另外,CPU 331可向GPU 334分布应用工作中的部分应用工作。
在一些实施例中,应用可确定当编译时应用工作在哪个处理器(例如,CPU 331、GPU 334和/或神经处理单元106)上执行。CPU 331可从经过编译的文件中识别关于应用工作的信息,并且确定是否向NPU 106和/或GPU 334分布特定的应用工作。
在一些实施例中,CPU 331可以是共同使用的中央处理单元。例如,CPU 331可由寄存器、编程计数器、指令寄存器、算法逻辑单元、控制单元、内部总线等构成。为了方便解释,将不提供CPU 331的详细描述。
GPU 334可执行从CPU 331分布的应用工作。例如,CPU 331可向GPU 334分布包括图像运算等的应用工作。GPU 334执行包括图像运算等的应用工作,然后可将执行结果传递至CPU 331。
在一些实施例中,GPU 334可以是可正常使用的图形处理装置。例如,GPU 334可包括(但不限于)多个ALU(算法逻辑单元)。
存储器332可存储用于执行应用312的数据。例如,存储器332可存储用于执行应用312的程序代码、库代码等。具体地,例如,当在CPU 331中执行应用312时,存储器332可从诸如SSD装置的外部存储装置中调用用于执行应用312的程序代码、库代码等。
程序代码可以是用于执行应用312的代码。在一些实施例中,可在CPU 331、GPU334和/或神经处理单元106中执行程序代码。例如,用于执行应用312的应用工作可以以程序代码的形式存储在存储器332中。
库代码可包括用于执行应用312的函数数据等。例如,当在GPU 334和/或神经处理单元106中执行应用工作时,GPU 334和/或神经处理单元106可从存储在存储器332中的库代码中调用用于执行应用工作的函数数据。
存储器332可存储用于重构神经处理单元106的硬件块的元数据。例如,存储器332可存储用于将硬件块重构为用于执行第一神经网络运算的硬件核的重构数据。另外,存储器332可存储用于将硬件块重构为用于处理RNN、CNN和/或MAC运算的硬件核的重构数据。
在一些实施例中,存储器332可以是可正常使用的存储器装置。例如,存储器332可以是(但不限于)DRAM。
DMA 333可将存储在存储器332中的数据传递至GPU 334或者神经处理单元106,而不用CPU 331介入。例如,当GPU 334或神经处理单元106请求用于执行应用工作的函数数据时,DMA 333可将存储在存储器332中的函数数据传递至GPU 334和/或神经处理单元106,而不经过CPU 331。在一些实施例中,DMA 333可将存储在存储器332中的元数据传递至神经处理单元106。
DMA 333可以是可正常使用的DMA。例如,DMA 333可被实施为(但不限于)包括源寄存器、目的寄存器、计数器寄存器、CPU控制寄存器和/或总线控制器的硬件。
内核层320可包括重构加载器322。在一些实施例中,重构加载器322可连接至包括在硬件层330中的DMA 333、CPU 331和/或神经处理单元106,以将元数据从存储器332传递至神经处理单元106。根据一些示例实施例,本文中被描述为由重构加载器322执行的运算可由执行程序代码的至少一个处理器(例如,CPU 331和/或至少一个第一处理器)执行,程序代码包括与预算对应的指令。指令可存储在应用系统300和/或神经处理单元106的存储器(例如,存储器332和/或内部存储器160)中。
更具体地,神经处理单元106的工作分布器可将从CPU 331分布的应用工作的一部分分配至硬件块工作。例如,神经处理单元106的工作分布器可根据第一处理核的第一工作负荷将应用工作的一部分分配为硬件块工作。神经处理单元106可向重构加载器322请求用于将硬件块重构为用于执行硬件块工作的硬件核的元数据。例如,神经处理单元106可根据第一处理核的第一工作负荷向请求重构加载器322请求元数据。重构加载器322可使用DMA333将存储在存储器332中的元数据传递至神经处理单元106。此外,当不能或不想使用DMA333时,重构加载器322可使用CPU 331将存储在存储器332中的元数据传递至神经处理单元106。
下文中,将参照图15至图16描述根据本申请的一些实施例的应用系统中执行的应用工作流。图15是示出根据一些实施例的应用工作流的框图。图16是示出根据一些实施例的存储器中流动的数据的框图。
参照图15,可执行第一应用工作至第m应用工作以执行应用。在一些实施例中,可由CPU、GPU和/或神经处理单元(NPU)执行第一应用工作至第m应用工作。例如,可在CPU中执行第一、第m-2和第m应用工作,可在神经处理单元中执行第三和第m-1应用工作,并且可在GPU中执行第二应用工作。
参照图16,当执行应用时,可从存储器332中读取程序代码和/或库代码。在一些实施例中,如图15所示,当执行第一应用工作至第m应用工作时,可从存储器332中读取CPU程序代码、GPU库代码和/或NPU库代码。例如,当在CPU 331中执行第一、第m-2和第m应用工作时,CPU 331可从存储器332中读CPU程序代码。另外,当由神经处理单元106执行第三和第m-1应用工作时,DMA 333和CPU 331可读取存储在存储器332中的神经处理单元库代码并将该神经处理单元库代码传递至神经处理单元106。此外,当由GPU 334执行第二应用工作时,DMA 333和/或CPU 331可读取存储在存储器332中的GPU库代码并将该GPU库代码传递至GPU334。
可通过能够执行运算的任何合适的装置(诸如,各种硬件和/或以某种形式的硬件(例如,处理器)实施的软件)执行上述方法的各种运算。
软件可包括用于实施逻辑功能的可执行指令的有序列表,并且可在任何“处理器可读介质”中实施,以供指令执行系统、设备或装置(诸如,单核或多核处理器或含处理器的系统)使用,或与指令执行系统、设备或装置(诸如,单核或多核处理器或含处理器的系统)结合。
结合本文公开的示例实施例描述的方法或算法和函数的块或运算可直接在硬件、由处理器执行的软件模块或者二者的组合中实施。如果在软件中实施,则函数可作为一个或多个指令或代码被存储在有形的、非暂时性的计算机可读介质上,或者作为一个或多个指令或代码被传输。软件模块可驻留在随机存取存储器(RAM)、闪速存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CDROM或本领域已知的任何其他形式的存储介质中。
作为具体实施方式的总结,本领域技术人员应该理解,在不实质脱离本公开的原理的情况下,可对示例实施例作出许多改变和修改。因此,本公开的示例实施例仅以一般性和描述性的意义使用,而不出于限制的目的。
Claims (20)
1.一种神经处理单元,其被配置为执行包括第一神经网络运算的应用工作,所述神经处理单元包括:
第一处理核,其被配置为执行所述第一神经网络运算;
硬件块,其能够被重构为被配置为执行硬件块工作的硬件核;以及
至少一个处理器,其被配置为执行计算机可读指令,以基于第一处理核的第一工作负荷将所述应用工作的一部分作为所述硬件块工作分布给硬件块。
2.根据权利要求1所述的神经处理单元,其中,所述至少一个处理器被配置为执行计算机可读指令,以根据所述第一工作负荷是否超过限定值将所述第一神经网络运算的一部分作为所述硬件块工作分布给硬件块。
3.根据权利要求1所述的神经处理单元,其中,所述至少一个处理器被配置为执行计算机可读指令,以在所述硬件块工作包括卷积神经网络运算时将硬件块重构为卷积神经网络处理硬件核。
4.根据权利要求3所述的神经处理单元,其中,卷积神经网络运算包括图像识别处理。
5.根据权利要求1所述的神经处理单元,其中,所述至少一个处理器被配置为执行计算机可读指令,以在所述硬件块工作包括循环神经网络运算时将硬件块重构为循环神经网络处理硬件核。
6.根据权利要求5所述的神经处理单元,其中,循环神经网络运算包括语音识别处理。
7.根据权利要求1所述的神经处理单元,其中,
所述第一神经网络运算包括第一乘加运算,并且
所述至少一个处理器被配置为执行计算机可读指令,以基于所述第一乘加运算与所述第一工作负荷的比率将所述第一乘加运算的一部分作为所述硬件块工作分布给硬件块。
8.根据权利要求1所述的神经处理单元,其中,
所述至少一个处理器被配置为执行计算机可读指令,以在所述硬件块工作包括乘加运算时将硬件块重构为乘加处理硬件核,并且
重构为乘加处理硬件核的硬件块被配置为使用包括量化加权数据的查找表执行乘加运算。
9.根据权利要求8所述的神经处理单元,其中,所述查找表包括基于运算输入数据和量化加权数据获得的一个或多个结果值。
10.根据权利要求1所述的神经处理单元,还包括:
第二处理核,其被配置为执行与所述第一神经网络运算不同的第二神经网络运算运算,
其中,
所述应用工作包括所述第二神经网络运算,并且
所述至少一个处理器被配置为执行计算机可读指令,以基于所述第一工作负荷和第二处理核的第二工作负荷将所述第一神经网络运算的一部分或者所述第二神经网络运算的一部分作为所述硬件块工作分布给硬件块。
11.根据权利要求10所述的神经处理单元,其中,所述至少一个处理器被配置为执行计算机可读指令,以
在所述第一工作负荷的量大于所述第二工作负荷的量时,将所述第一神经网络运算的所述一部分作为所述硬件块工作分布给硬件块,以及
在所述第一工作负荷的量小于第二工作负荷的量时,将所述第二神经网络运算的所述一部分作为所述硬件块工作分布给硬件块。
12.一种神经处理单元,包括:
硬件块,其能够重构为:
第一硬件核,其被配置为执行第一神经网络的运算,或者
第二硬件核,其被配置为执行与所述第一神经网络不同的第二神经网络的运算;以及
内部存储器,其存储用于执行所述第一神经网络的运算或所述第二神经网络的运算的函数数据。
13.根据权利要求12所述的神经处理单元,还包括:
至少一个处理器,其被配置为执行计算机可读指令,以
在硬件块被重构为第一硬件核时,使用于所述第一神经网络的运算的函数数据被存储在内部存储器中,以及
在硬件块被重构为第二硬件核时,使用于所述第二神经网络的运算的函数数据被存储在内部存储器中。
14.根据权利要求12所述的神经处理单元,还包括:
至少一个处理器,其被配置为执行计算机可读指令,以根据在第一硬件核或第二硬件核上执行的运算使内部存储器更新存储在内部存储器中的函数数据。
15.根据权利要求14所述的神经处理单元,其中,所述至少一个处理器被构造为执行计算机可读指令,以通过使内部存储器删除存储在内部存储器中的函数数据和使内部存储器存储从神经处理单元外部的存储器接收的新函数数据,来使内部存储器更新函数数据。
16.根据权利要求12所述的神经处理单元,其中,函数数据包括sigmoid函数数据、双曲正切tanh函数数据或修正线性单元ReLU函数数据。
17.一种神经处理系统,包括:
外部存储器,其存储可用于重构硬件块的元数据;以及
神经处理单元,其包括第一处理核和硬件块,第一处理核被构造为执行第一神经网络的运算。
18.根据权利要求17所述的神经处理系统,其中,外部存储器存储:
第一重构数据,其能够用于将硬件块重构为被配置为执行所述第一神经网络的运算的第一硬件核,或者
第二重构数据,其能够用于将硬件块重构为被配置为执行与所述第一神经网络不同的第二神经网络的运算的第二硬件核。
19.根据权利要求17所述的神经处理系统,其中,
第一神经网络的运算包括乘加运算,并且
外部存储器存储用于将硬件块重构为乘加处理硬件核的第三重构数据,所述第三重构数据包括查找表,所述查找表包括量化加权信息。
20.根据权利要求17所述的神经处理系统,其中,
外部存储器存储在第一处理核或硬件块中使用的函数数据,并且
神经处理单元包括至少一个处理器,其被配置为执行计算机可读指令,以根据在第一处理核或硬件块中执行的运算从外部存储器获得所述函数数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0137345 | 2018-11-09 | ||
KR1020180137345A KR20200053886A (ko) | 2018-11-09 | 2018-11-09 | 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111178494A true CN111178494A (zh) | 2020-05-19 |
Family
ID=70550567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910836241.2A Pending CN111178494A (zh) | 2018-11-09 | 2019-09-05 | 神经处理单元、神经处理系统和应用系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11733968B2 (zh) |
KR (1) | KR20200053886A (zh) |
CN (1) | CN111178494A (zh) |
TW (1) | TW202018599A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114239818A (zh) * | 2021-12-23 | 2022-03-25 | 电子科技大学 | 基于tcam和lut的存内计算架构神经网络加速器 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389858B (zh) * | 2018-04-20 | 2023-06-09 | 伊姆西Ip控股有限责任公司 | 存储设备的故障恢复方法和设备 |
KR20200053886A (ko) * | 2018-11-09 | 2020-05-19 | 삼성전자주식회사 | 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 |
US11023360B2 (en) * | 2018-11-14 | 2021-06-01 | The Mathworks, Inc. | Systems and methods for configuring programmable logic devices for deep learning networks |
US11372404B2 (en) * | 2019-02-22 | 2022-06-28 | Qualcomm Incorporated | Systems and methods for adaptive model processing |
TWI746084B (zh) * | 2020-07-24 | 2021-11-11 | 義守大學 | 多重函數計算器 |
US11550545B2 (en) | 2020-11-06 | 2023-01-10 | SK Hynix Inc. | Low-power, low-memory multiply and accumulate (MAC) unit |
WO2022131397A1 (ko) * | 2020-12-16 | 2022-06-23 | 주식회사 모빌린트 | Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법 |
KR20230046356A (ko) | 2021-09-29 | 2023-04-06 | 삼성전자주식회사 | 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치 |
US11886973B2 (en) | 2022-05-30 | 2024-01-30 | Deepx Co., Ltd. | Neural processing unit including variable internal memory |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6496971B1 (en) | 2000-02-07 | 2002-12-17 | Xilinx, Inc. | Supporting multiple FPGA configuration modes using dedicated on-chip processor |
KR20030057806A (ko) | 2001-12-29 | 2003-07-07 | 엘지전자 주식회사 | Fpga 구성 데이터 로딩 제어장치 및 방법 |
US8345703B2 (en) | 2006-10-03 | 2013-01-01 | Alcatel Lucent | Method and apparatus for reconfiguring IC architectures |
JP5810962B2 (ja) | 2011-03-30 | 2015-11-11 | 富士通株式会社 | 記憶制御装置、記憶制御方法及び記憶制御プログラム |
US20130332778A1 (en) * | 2012-06-07 | 2013-12-12 | Vmware, Inc. | Performance-imbalance-monitoring processor features |
US9136842B2 (en) | 2013-06-07 | 2015-09-15 | Altera Corporation | Integrated circuit device with embedded programmable logic |
US10804930B2 (en) * | 2015-12-16 | 2020-10-13 | International Business Machines Corporation | Compressed data layout with variable group size |
US10089178B2 (en) * | 2016-02-29 | 2018-10-02 | International Business Machines Corporation | Developing an accurate dispersed storage network memory performance model through training |
US11256990B2 (en) * | 2016-05-20 | 2022-02-22 | Deepmind Technologies Limited | Memory-efficient backpropagation through time |
JP2018005762A (ja) | 2016-07-07 | 2018-01-11 | 株式会社リコー | 情報処理装置及びコンフィグレーション方法 |
US10116311B2 (en) | 2016-08-03 | 2018-10-30 | Silicon Mobility | Embedded FPGA with multiple configurable flexible logic blocks instantiated and interconnected by abutment |
US10089577B2 (en) * | 2016-08-05 | 2018-10-02 | Xilinx, Inc. | Binary neural networks on progammable integrated circuits |
US10621486B2 (en) | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
GB2555628B (en) * | 2016-11-04 | 2019-02-20 | Advanced Risc Mach Ltd | Main processor error detection using checker processors |
KR102631381B1 (ko) * | 2016-11-07 | 2024-01-31 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
JP6968681B2 (ja) * | 2016-12-21 | 2021-11-17 | ホーチキ株式会社 | 火災監視システム |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US10585703B2 (en) * | 2017-06-03 | 2020-03-10 | Apple Inc. | Dynamic operation allocation for neural networks |
JP7294768B2 (ja) * | 2017-08-04 | 2023-06-20 | オムロン株式会社 | 画像処理システム |
US11222256B2 (en) * | 2017-10-17 | 2022-01-11 | Xilinx, Inc. | Neural network processing system having multiple processors and a neural network accelerator |
US10671147B2 (en) * | 2017-12-18 | 2020-06-02 | Facebook, Inc. | Dynamic power management for artificial intelligence hardware accelerators |
US11150899B2 (en) * | 2018-04-09 | 2021-10-19 | Advanced Micro Devices, Inc. | Selecting a precision level for executing a workload in an electronic device |
KR20190123540A (ko) * | 2018-04-24 | 2019-11-01 | 한국전자통신연구원 | 뉴럴 기억 컴퓨팅 시스템 및 방법 |
US11487846B2 (en) * | 2018-05-04 | 2022-11-01 | Apple Inc. | Performing multiply and accumulate operations in neural network processor |
JP7047612B2 (ja) * | 2018-06-08 | 2022-04-05 | 沖電気工業株式会社 | ニューラルネットワーク軽量化装置、情報処理装置、ニューラルネットワーク軽量化方法およびプログラム |
US10282864B1 (en) * | 2018-09-17 | 2019-05-07 | StradVision, Inc. | Method and device for encoding image and testing method and testing device using the same |
US11651227B2 (en) * | 2018-10-05 | 2023-05-16 | Sri International | Trusted neural network system |
KR20200053886A (ko) * | 2018-11-09 | 2020-05-19 | 삼성전자주식회사 | 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 |
-
2018
- 2018-11-09 KR KR1020180137345A patent/KR20200053886A/ko not_active Application Discontinuation
-
2019
- 2019-06-13 US US16/439,928 patent/US11733968B2/en active Active
- 2019-09-05 CN CN201910836241.2A patent/CN111178494A/zh active Pending
- 2019-10-04 TW TW108136017A patent/TW202018599A/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114239818A (zh) * | 2021-12-23 | 2022-03-25 | 电子科技大学 | 基于tcam和lut的存内计算架构神经网络加速器 |
CN114239818B (zh) * | 2021-12-23 | 2023-04-18 | 电子科技大学 | 基于tcam和lut的存内计算架构神经网络加速器 |
Also Published As
Publication number | Publication date |
---|---|
US20200151549A1 (en) | 2020-05-14 |
US20230342113A1 (en) | 2023-10-26 |
US11733968B2 (en) | 2023-08-22 |
KR20200053886A (ko) | 2020-05-19 |
TW202018599A (zh) | 2020-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111178494A (zh) | 神经处理单元、神经处理系统和应用系统 | |
JP7266065B2 (ja) | ディープニューラルネットワーク用のシステム、コンピュータ実装方法及びコンピュータプログラム | |
CN110998570B (zh) | 具有带有块浮点处理的矩阵矢量单元的硬件节点 | |
US20210406657A1 (en) | Multi-function unit for programmable hardware nodes for neural network processing | |
JP6995851B2 (ja) | ニューラルネットワーク計算タイル | |
US10387771B2 (en) | Accelerator for deep neural networks | |
JP2021515300A (ja) | ニューラル・ネットワーク・アクセラレータ | |
US20190114538A1 (en) | Host-directed multi-layer neural network processing via per-layer work requests | |
JP2020517030A (ja) | ディープラーニング加速化のためのデータ構造記述子 | |
CN111752530A (zh) | 对块稀疏度的机器学习架构支持 | |
CN111026518B (zh) | 任务调度方法 | |
JP2021108104A (ja) | 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法 | |
US11995417B2 (en) | Neural processing unit, neural processing system, and application system | |
CN117130693B (zh) | 张量卸载方法、装置、计算机设备及存储介质 | |
CN111860797A (zh) | 运算装置 | |
Wang | Efficient, Reconfigurable, and QoS-Aware Systems for Deep Neural Networks | |
CN111026522A (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 |