CN110728364A - 一种运算装置和运算方法 - Google Patents

一种运算装置和运算方法 Download PDF

Info

Publication number
CN110728364A
CN110728364A CN201810782174.6A CN201810782174A CN110728364A CN 110728364 A CN110728364 A CN 110728364A CN 201810782174 A CN201810782174 A CN 201810782174A CN 110728364 A CN110728364 A CN 110728364A
Authority
CN
China
Prior art keywords
data
arithmetic
sub
command
module
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
Application number
CN201810782174.6A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201810782174.6A priority Critical patent/CN110728364A/zh
Priority to JP2020560786A priority patent/JP7053891B2/ja
Priority to EP19824842.9A priority patent/EP3798850A4/en
Priority to PCT/CN2019/092805 priority patent/WO2020001438A1/zh
Priority to EP20217296.1A priority patent/EP3825841A1/en
Priority to KR1020207036740A priority patent/KR102470893B1/ko
Priority to TW108125033A priority patent/TWI803663B/zh
Publication of CN110728364A publication Critical patent/CN110728364A/zh
Priority to US17/138,334 priority patent/US20210117810A1/en
Priority to US17/138,161 priority patent/US11789847B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

本公开涉及一种运算装置和运算方法,其中所述运算装置包括:多个运算模块,该多个运算模块通过并行执行相应的运算子命令完成网络模型的运算操作;其中,所述运算模块包括:至少一个运算单元,其配置为利用第一运算子数据执行第一运算子命令;存储单元,其至少用于存储所述第一运算子数据,该第一运算子数据包括用于执行所述第一运算子命令的数据。本公开实施例能够降低用于数据访问的带宽需求,且成本低。

Description

一种运算装置和运算方法
技术领域
本公开涉及数据处理技术领域,尤其涉及一种运算装置、数据处理芯片、电子设备和运算方法。
背景技术
现有技术中,涉及深度学习的网络模型中通常存在大量的运算,例如神经网络计算中有一些计算需要并行处理,例如正向运算、反向运算以及权值更新等过程都需要大量的并行运算。在传统的并行计算系统中,处理单元需要从访存开销太大的存储单元中读写数据,由于存在大量的并行运算,浙江会导致对带宽的需求很高,且造成巨大的能耗开销。
发明内容
本公开实施例提出了一种能够减低成本且降低带宽需求的技术方案,其中提出了一种运算装置、数据处理芯片、电子设备和运算方法。
根据本公开的第一方面,提供了一种运算装置,其包括:多个运算模块,该多个运算模块通过并行执行相应的运算子命令完成网络模型的运算操作;其中,所述运算模块包括:
至少一个运算单元,其配置为利用第一运算子数据执行第一运算子命令;
存储单元,其至少用于存储所述第一运算子数据,该第一运算子数据包括用于执行所述第一运算子命令的数据;
在本公开实施例中,至少两个运算模块之间存在数据连接,并且其中一个运算模块配置为利用所述第一运算子数据和另一个运算模块的第二运算子数据执行所述第一运算子命令,其中所述第二运算子数据包括该另一个运算模块中的存储单元内存储的数据和/或该另一个运算模块中的运算单元所生成的数据。
在本公开实施例中,还包括控制模块,其配置为根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据;
所述运算命令包括多个运算子命令,以及所述运算数据包括执行各所述运算子命令所需的运算子数据。
在本公开实施例中,所述控制模块包括:
第一分配单元,其配置为根据运算命令中的运算逻辑关系,将所述运算命令划分成多个运算子命令,并将该多个运算子命令对应分配至不同的运算模块进行运算;
第二分配单元,其配置为确定执行各所述运算子命令所需的运算子数据,并将所述运算子数据分配至对应的运算模块进行存储。
在本公开实施例中,所述控制模块还配置为根据各运算子命令之间的运算逻辑关系,选择性地连接各所述运算模块。
在本公开实施例中,所述运算单元包括网络处理器或者计算机设备。
在本公开实施例中,所述存储单元包括寄存器、寄存器堆以及存储器阵列中的至少一种。
根据本公开的第二方面,提供了一种数据处理芯片,其包括如上述实施例所述的运算装置。
根据本公开的第三方面,提供了一种电子设备,其包括如上述实施例所述的数据处理芯片。
根据本公开的第四方面,提供了一种运算方法,所述方法应用在运算装置中,所述运算装置包括多个运算模块,该多个运算模块通过并行执行相应的运算子命令完成网络模型的运算操作,并且所述方法包括:
通过各运算模块的存储单元存储第一运算子数据,该第一运算子数据包括用于执行第一运算子命令的数据;
通过各运算模块的运算单元利用第一运算子数据执行第一运算子命令。
在本公开实施例中,其中所述通过各运算模块的运算单元利用第一运算子数据执行第一运算子命令还包括:
利用所述第一运算子数据和另一个运算模块的第二运算子数据执行第一运算子命令;
其中,所述第二运算子数据包括该另一个运算模块中的存储单元内存储的数据和/或该另一个运算模块中的运算单元所生成的数据。
在本公开实施例中,所述方法还包括:
根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据;
所述运算命令包括多个运算子命令,以及所述运算数据包括执行各所述运算子命令所需的运算子数据。
在本公开实施例中,所述根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据包括:
利用第一分配单元根据运算命令中的运算逻辑关系,将所述运算命令划分成多个运算子命令,并将该多个运算子命令对应分配至不同的运算模块进行运算;
利用第二分配单元确定执行各所述运算子命令所需的运算子数据,并将所述运算子数据分配至对应的运算模块进行存储。
在本公开实施例中,所述方法还包括:
根据各运算子命令之间的运算逻辑关系,选择性地连接各所述运算模块。
在本公开实施例中通过每个运算模块内的存储单元存储其运算所需的数据,而不需要将各个运算模块所需的数据都存储至一个存储器,该配置可以减少每个运算模块对于存储单元的数据访问带宽,提高数据传输速度。同时由于不需要大型存储器件存储和读写所有运算模块的数据,可以不需要设置大容量和高数据读写速度的存储器件,从而降低存储器件的成本;
另外本公开实施例还可以提高运算装置的扩展性,通过增加对应运算功能的运算模块即可以方便的扩展运算装置的运算功能。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的一种运算装置的框图;
图2示出根据本公开实施例的运算装置的框图;
图3示出根据本公开实施例中的控制模块的框图;
图4示出根据本公开实施例的运算方法的流程图;
图5示出根据本公开实施例的构造为H型结构的运算模块的框图;
图6示出根据本公开实施例的脉冲阵列机结构的运算模块的框图;
图7示出根据本公开实施例的构造为树型结构的运算模块的框图;
图8示出本公开实施例中的运算单元构造为二叉树结构的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
本公开实施例提供了一种运算装置,该运算装置可以用于计算深度学习网络模型的相关运算,并能够降低运算装置的成本,同时能够降低访问数据的带宽需求。
图1示出根据本公开实施例的一种运算装置的框图,其中该运算装置可以包括:多个运算模块100,该多个运算模块100可以通过并行执行相应的运算子命令完成网络模型的运算操作,即本公开实施例中的运算模块100可以并行的执行不同的运算子命令,各运算模块100执行的运算子命令用于完成网络模型的运算。图1示出包括4个运算模块的实施例,各运算模块之间可以相互连接,也可以部分运算模块之间可以相互连接,本公开对此不进行限定。
本公开实施例中的网络模型可以包括神经网络模型,或者也可以包括其他用于机器学习的网络模型,该网络模型可以用于机器学习或者上述神经网络学习,运算装置可以用于执行该网络模型的运算操作。运算装置可以接收到关于网络模型的运算命令,并可以基于该运算命令对应的生成多个运算子命令,该多个运算子命令可以分别分配给多个运算模块100,即每个运算模块100可以对应的执行一个或多个运算子命令,从而可以对应完成网络模型的相关运算。其中,运算命令中包括需要运算装置执行的运算操作。
当网络模型包括人工神经网络模型时,所述运算命令可以包括:运算信息、输入神经元数据、权值数据和输出神经元数据。上述运算信息包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
如上所述,本公开实施例中的运算装置可以基于接收的运算命令生成多个运算子命令,并为各运算模块100分配对应的运算子命令执行相应的运算操作。其中,每个运算模块100包括:至少一个运算单元101,以及和每个运算单元101连接的存储单元102。每个运算模块中的运算单元101的数量和类型都可以相同或不同,其可以根据不同的运算需求自行设定。其中运算单元101可以包括:一个或多个乘法器、一个或者多个加法器、由加法器组成的加法树、激活函数单元、向量处理单元等中至少一种或多种,在其他实施例中还可以包括其他运算器件。其中,乘法器可以将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2。加法器可以将输入数据in1通过加法器相加得到输出数据(out)。加法树可以将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,运算过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法树累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过称为:out=in1+in2。函数激活单元可以将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以包括sigmoid、tanh、relu或者softmax等,也可以为其他的激活函数。除了做激活操作,函数激活单元也可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。向量处理单元可以处理向量运算和/或池化运算。其中池化运算可以将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作函数,池化操作包括但不限于:平均值池化、最大值池化、中值池化、输入数据in是和输出out相关的一个池化核中的数据。
或者,在本公开实施例中,运算单元101也可以包括网络处理器(NPU)或者计算机设备等具有运算功能的电子设备或器件,以用于执行对应的运算子命令,但不作为本公开实施例的限定。本公开实施例中,运算模块内的运算单元和存储单元可以为设置在一个设备或者器件内的电子器件,以方便二者之间的数据传输。
本公开实施例中的每个运算模块100中可以包括至少一个运算单元101,用以执行不同的运算,以完成对应的运算子命令。也即,每个运算模块100可以根据接收的运算子命令对应的控制不同的运算单元101执行相应的运算操作,如运算子命令中包括加法指令时利用加法器执行加法操作等,在此,本公开实施例不进行详细说明,只要能通过运算子命令识别所要执行的运算程序并利用相应的运算单元101执行对应的运算程序即可以作为本公开实施例。
另外,运算单元101在执行相应的运算子命令时可能需要调用运算数据,例如,本公开实施例中的运算单元101可以利用第一运算子数据执行第一运算子命令,其中第一运算子命令即为分配至运算单元101使其执行相应运算的指令,第一运算子数据即为执行该第一运算子命令所需的数据。
这里,在通过网络模型执行对应的运算命令时,可以接收与该运算命令相关的运算数据,本公开实施例中的运算模块可以对应的将该运算数据传输至各运算模块的存储单元102内,或者也可以根据各运算模块100所需执行的运算子命令分配运算子数据给运算模块,该运算子数据为运算数据中的至少一部分。也即本公开实施例中的存储单元102至少用于存储其组内的运算单元所需的第一运算子数据,该第一运算子数据包括用于执行所述第一运算子命令的数据。其中,各运算模块100执行的运算子命令可以相同或者不同,具体可以根据不同的运算需求进行分配。本公开实施例中的存储单元102可以包括缓存器、寄存器、寄存器堆以及存储器阵列中的至少一种,以用于执行数据存储。
基于本公开实施例的上述配置,可以通过每个运算模块内的存储单元存储其运算所需的数据,而不需要将各个运算模块所需的数据都存储至一个存储器,该配置可以减少每个运算模块对于存储单元的数据访问带宽,提高数据传输速度。同时由于不需要大型存储器件存储和读写所有运算模块的数据,可以不需要设置大容量和高数据读写速度的存储器件,从而降低存储器件的成本。
本公开实施例中运算模块100内的各运算单元101可以构造为H型结构、脉冲阵列机结构和树型结构中的一种。其中每个运算模块100内的运算单元的结构可以相同也可以不同,本领域技术人员可以根据需求进行设置,本公开对此不进行限制。下面针对上述结构对运算模块内的各运算单元的结构进行说明。
其中,图5示出根据本公开实施例的构造为H型结构的运算模块的框图。如图5所示,在运算模块100内的各运算单元101构造为H型结构时,各运算单元可以包括主运算单元1001、至少一个分支运算单元1002以及多个从运算单元1003。其中,主运算单元1001可以与各分支运算单元1002连接,分支运算单元1002分别与从运算单元1003中的至少一个连接。如图5所示,包括四个分支运算单元1002,每个分支运算单元1002分别连接4个从运算单元1003,该分支运算单元1002可以用于传输主运算单元1001与从运算单元1003之间的数据、指令以及中间结果。每个分支运算单元1002执行运算子命令时都可以通过模块内的存储单元102内存储的数据执行操作。
主运算单元1001配置为将接收的运算算子划分成多个运算指令以及将运算数据划分成多个数据块,并通过分支运算单元1002将运算指令和数据块传输至对应的从运算单元1003进行运算获得中间结果,并配置为基于所述中间结果得到最终运算结果,其中分支运算单元配置为转发所述主运算单元与从运算单元之间的数据块和运算指令以及权值等信息。
从运算单元1003在完成相应的运算指令后可以生成对应的中间结果,而后可以通过分支运算单元1002将该中间结果回传给主运算单元1001。即各从运算单元可以并行执行8个子矩阵与权值矩阵w的乘法运算和累加运算,并可以得到8个中间结果,将8个中间结果发送给主运算单元1001。
主运算单元1001可以将8个中间结果排序得到相应的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至存储模块100进行存储或者传输至其他电子期间进行后续处理,即可以该最终结果y可以被输出或存储至存储单元102内。
另外,图6示出根据本公开实施例的构造为脉冲阵列机结构的运算模块的框图。其中,在运算模块100内的各运算单元101构造为脉冲阵列机结构时,各运算单元可以包括主运算单元1001以及多个从运算单元1003。其中,多个从运算单元1003呈阵列分布,多个从运算单元构造为m行n列个从运算单元,其中m和n为大于1的正整数,每个从运算单元1003与相邻的其他从运算单元1003连接,主运算单元1001连接所述多个从运算单元1003中的k个从运算单元1003,所述k个从运算单元1003为:第1行的n个从运算单元1003、第m行的n个从运算单元1003以及第1列的m个从运算单元1003,需要说明的是,如图6所示的K个从运算单元1003仅包括第1行的n个从运算单元1003、第m行的n个从运算单元1003以及第1列的m个从运算单元1003,即该k个从运算单元1003为多个从运算单元1003中直接与主运算单元1001连接的从运算单元1003。该K个从运算单元1003可以用于在所述主运算单元1001以及多个从运算单元1003之间的数据以及指令的转发。除了K个从运算单元以外的其余从运算单元配置为依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从运算单元。
其中,主运算单元1001可以将分配的运算算子传输给K个从运算单元1003进行运算,并可以通过与其余的从运算单元1003连接以通过该其余的从运算单元1003获得中间结果,主运算单元1001可以用于将该多个其余从运算单元1003发送的中间结果进行处理得到最终的运算结果,将该运算结果发送给所述存储单元102进行存储。
另外,图7示出根据本公开实施例的构造为树型结构的运算模块的框图。其中,在大运算模块100中的各运算单元构造为树型结构时,各运算单元可以包括主运算单元1001以及多个从运算单元1003,以及连接在所述主运算单元1001和从运算单元之间的树形模块1004。。其中,所述树型模块1004包括:一个根端口1和多个支端口2,所述树型模块的根端口连接所述主运算单元1001,所述树型模块的多个支端口分别连接多个从运算单元中的一个从运算单元;上述树型模块具有收发功能,如7所示,该树型模块即为发送功能,在其他实施例中也可以具有接收功能,在此不进行限定。树型模块1004可以用于转发所述主运算单元与所述多个从运算单元之间的数据块、权值以及运算指令。主运算单元1004可以将接收的运算算子划分成多个运算指令以及将运算数据划分成多个数据块,并传输给树形模块1004,树形模块1004而后将对应的数据、运算指令以及权值传输给相应的从运算单元1003,并从从运算单元1003接收中间结果后传输给主运算单元1001。而后,主运算单元1001可以对中间结果进行处理得到最终的运算结果,将该运算结果发送给所述存储单元102进行存储。
在本公开实施例中,该树型模块可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
该树型模块1004可以为n叉树结构,例如,如图8示出本公开实施例中的运算单元构造为二叉树结构的框图,其中,在其他实施例中,各运算单元也可以构造为三叉树结构,或者其他n叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,或者其他层数。从运算单元可以连接除倒数第二层节点以外的其他层的节点,例如可以连接倒数第一层的节点。
另外,本公开实施例中的运算单元可以携带单独的缓存,例如可以包括:神经元缓存单元,该神经元缓存单元缓存该从运算单元的输入神经元向量数据和输出神经元值数据。
本公开实施例中,各运算模块可以相互连接,或者也可以选择性的建立至少两个运算模块的连接关系。例如,至少两个运算模块之间存在数据连接,并且其中一个运算模块可以利用所述第一运算子数据和另一个运算模块的第二运算子数据执行所述第一运算子命令,其中第二运算子数据包括该另一个运算模块中的存储单元内存储的数据和/或该另一个运算模块中的运算单元所生成的数据。也就是说,本公开实施例中的各运算模块100之间可以存在数据连接关系,如有线连接或者无线连接,通过该连接关系可以建立两个运算模块之间的数据传输通道。其中运算模块100在执行第一运算子命令时,可能需要其他运算模块100所产生的数据,此时可以通过该两个运算模块之间的连接关系,来实现数据的传输。
图2示出根据本公开实施例的运算装置的框图,其中除了包括多个运算模块100,还可以包括控制模块200。该控制模块200可以用于控制运算模块执行对应的运算子命令,并控制存储器存储对应的运算子数据,同时控制模块200还可以控制各运算模块之间的连接状态。
其中,本公开实施例中的控制模块200可以接收关于网络模型的运算命令,其中可以通过通信模块接收和传送运算命令或者其他信息,也可以通过控制模块200直接接收运算命令或者其他信息。通信模块可以包括有线通信单元和/或无线通信单元,有线通信单元可以通过有线线缆执行信息的传输,有线线缆可以包括光纤、双绞线或者同轴电缆。无线通信单元可以通过无线通信的方式执行信息的传输,该无线通信单元可以包括wifi模块、NFC模块等。同样,各运算模块100之间也可以通过有线或者无线的方式执行数据连接,例如可以通过光纤执行该连接。
控制模块200可以根据接收的运算命令和运算数据,为各所述运算模块100分配对应的运算子命令以及运算子数据。该运算命令包括用于执行网络模型运算的多个运算子命令,以及运算数据包括执行各所述运算子命令所需的运算子数据。本公开实施例中的控制模块200能够根据接收的运算命令中的运算逻辑关系确定各运算子命令和运算子数据。例如,控制模块200可以根据运算命令的逻辑关系建立有向图,该有向图的节点可以用于区分各运算子命令,即,每两个节点之间的运算操作所对应的运算命令即可以作为一个运算子命令,此时还可以根据该运算子命令的输入数据来确定所需的运算子数据,从而可以分配运算模块执行该运算子命令,并将运算子数据分配给该运算模块中的存储单元。
另外,控制模块200还可以确定各运算模块在执行对应的运算子命令时,是否需要来自于其他运算模块的数据,如需要,则接通该两个运算模块之间的连接,如不需要,则不建立两个运算模块之间的连接。例如,本公开实施例可以通过一切换组件执行各运算模块之间的接通或关断,其中可以将每个运算模块分别与该切换组件连接,通过控制该切换组件对应线路的接通,即可以实现对应运算模块之间的连接。通过该配置可以简化运算装置的内部结构。
图3示出根据本公开实施例中的控制模块的框图,其中,本公开实施例中的控制模块200可以包括:第一分配单元201和第二分配单元202。
其中,第一分配单元201可以根据接收的运算命令中的运算逻辑关系,将所述运算命令划分成多个运算子命令,并将该多个运算子命令对应分配至不同的运算模块100进行运算。第二分配单元202可以用于确定执行各所述运算子命令所需的运算子数据,并将运算子数据分配至对应的运算模块进行存储。
也即,本公开实施例可以通过第一分配单元201执行运算命令的分配,通过第二分配单元202执行运算数据的分配,从而可以使得每个运算模块在执行各自的运算子命令时,利用运算模块内的存储单元内存储的数据即可完成运算操作。
为了清楚的体现本公开实施例中的结构配置,下面举例说明本公开实施例中的运算装置。本公开实施例中的运算装置可以包括4个运算模块100,每个运算模块100包括1个存储单元102以及4个运算单元101。例如,第一个运算模块100包括存储单元A0和运算单元B0、B1、B11、B10;第二个运算模块100可以包括存储单元A1和运算单元B2、B9、B12、B15;第三个运算模块100可以包括存储单元A2和运算单元B4、B5、B6、B7;第四个运算模块100可以包括存储单元A3和运算单元B3、B8、B13、B14。每个运算模块100中的运算单元可以相互连接,各运算模块100可以根据控制模块200的控制选择性的连接。
并且,控制模块200还可以根据接收到的运算命令和运算数据为各运算模块分配对应的运算子命令,同时分配对应的运算子数据给存储单元。通过上述的配置,保证了运算装置的扩展性,同时还通过各个运算模块的设置实现了运算装置的Numa架构。
综上所述,本公开实施例可以通过每个运算模块内的存储单元存储其运算所需的数据,而不需要将各个运算模块所需的数据都存储至一个存储器,该配置可以减少每个运算模块对于存储单元的数据访问带宽,提高数据传输速度。同时由于不需要大型存储器件存储和读写所有运算模块的数据,可以不需要设置大容量和高数据读写速度的存储器件,从而降低存储器件的成本。另外本公开实施例还可以提高运算装置的扩展性,通过增加对应运算功能的运算模块即可以方便的扩展运算装置的运算功能。
可以理解,本公开提及的上述各个实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。
此外,本公开还提供了包括上述实施例中的运算装置的数据处理芯片、电子设备,以及应用在运算装置中的运算方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
本公开实施例还提供了一种数据处理芯片,其包括如上述实施例中任意一项所述的运算装置。
在一些实施例里,本公开提供了一种芯片封装结构,其包括了上述数据处理芯片。
在一些实施例里,本公开提供了一种板卡,其包括了上述芯片封装结构。
本公开实施例还提供了一种电子设备,其包括如上述实施例中任意一项所述的运算装置或者芯片,或者上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
另外,本公开实施例还提供了一种运算方法,其应用在上述实施例所输的运算装置中,运算装置包括多个运算模块,该多个运算模块通过并行执行相应的运算子命令完成网络模型的运算操作。图4示出根据本公开实施例的运算方法的流程图,其中可以包括:
S100:通过各运算模块的存储单元存储第一运算子数据,该第一运算子数据包括用于执行第一运算子命令的数据;
S200:通过各运算模块的运算单元利用第一运算子数据执行第一运算子命令;其中,每个运算模块执行的运算子命令可以不同。
在本公开实施例中,其中所述通过各运算模块的运算单元利用第一运算子数据执行第一运算子命令还包括:
利用所述第一运算子数据和另一个运算模块的第二运算子数据执行第一运算子命令;
其中,所述第二运算子数据包括该另一个运算模块中的存储单元内存储的数据和/或该另一个运算模块中的运算单元所生成的数据。
在本公开实施例中,所述方法还包括:
根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据;
所述运算命令包括多个运算子命令,以及所述运算数据包括执行各所述运算子命令所需的运算子数据。
在本公开实施例中,所述根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据包括:
利用第一分配单元根据运算命令中的运算逻辑关系,将所述运算命令划分成多个运算子命令,并将该多个运算子命令对应分配至不同的运算模块进行运算;
利用第二分配单元确定执行各所述运算子命令所需的运算子数据,并将所述运算子数据分配至对应的运算模块进行存储。
在本公开实施例中,所述方法还包括:
根据各运算子命令之间的运算逻辑关系,选择性地连接各所述运算模块。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

1.一种运算装置,其特征在于,包括:多个运算模块,该多个运算模块通过并行执行相应的运算子命令完成网络模型的运算操作;其中,所述运算模块包括:
至少一个运算单元,其配置为利用第一运算子数据执行第一运算子命令;
存储单元,其至少用于存储所述第一运算子数据,该第一运算子数据包括用于执行所述第一运算子命令的数据。
2.根据权利要求1所述的运算装置,其特征在于,至少两个运算模块之间存在数据连接,并且其中一个运算模块配置为利用所述第一运算子数据和另一个运算模块的第二运算子数据执行所述第一运算子命令,其中所述第二运算子数据包括该另一个运算模块中的存储单元内存储的数据和/或该另一个运算模块中的运算单元所生成的数据。
3.根据权利要求1所述的运算装置,其特征在于,还包括控制模块,其配置为根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据;
所述运算命令包括多个运算子命令,以及所述运算数据包括执行各所述运算子命令所需的运算子数据。
4.根据权利要求3所述的运算装置,其特征在于,所述控制模块包括:
第一分配单元,其配置为根据运算命令中的运算逻辑关系,将所述运算命令划分成多个运算子命令,并将该多个运算子命令对应分配至不同的运算模块进行运算;
第二分配单元,其配置为确定执行各所述运算子命令所需的运算子数据,并将所述运算子数据分配至对应的运算模块进行存储。
5.根据权利要求3所述的运算装置,其特征在于,所述控制模块还配置为根据各运算子命令之间的运算逻辑关系,选择性地连接各所述运算模块。
6.根据权利要求1所述的运算装置,其特征在于,所述运算单元包括网络处理器或者计算机设备。
7.根据权利要求1所述的运算装置,其特征在于,所述存储单元包括寄存器、寄存器堆以及存储器阵列中的至少一种。
8.一种数据处理芯片,其特征在于,包括如权利要求1-7中任意一项所述的运算装置。
9.一种电子设备,其包括如权利要求8所述的数据处理芯片。
10.一种运算方法,其特征在于,所述方法应用在运算装置中,所述运算装置包括多个运算模块,该多个运算模块通过并行执行相应的运算子命令完成网络模型的运算操作,并且所述方法包括:
通过各运算模块的存储单元存储第一运算子数据,该第一运算子数据包括用于执行第一运算子命令的数据;
通过各运算模块的运算单元利用第一运算子数据执行第一运算子命令。
11.根据权利要求10所述的方法,其特征在于,其中所述通过各运算模块的运算单元利用第一运算子数据执行第一运算子命令还包括:
利用所述第一运算子数据和另一个运算模块的第二运算子数据执行第一运算子命令;
其中,所述第二运算子数据包括该另一个运算模块中的存储单元内存储的数据和/或该另一个运算模块中的运算单元所生成的数据。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据;
所述运算命令包括多个运算子命令,以及所述运算数据包括执行各所述运算子命令所需的运算子数据。
13.根据权利要求12所述的方法,其特征在于,所述根据接收的运算命令和运算数据,为各所述运算模块分配对应的运算子命令以及运算子数据包括:
利用第一分配单元根据运算命令中的运算逻辑关系,将所述运算命令划分成多个运算子命令,并将该多个运算子命令对应分配至不同的运算模块进行运算;
利用第二分配单元确定执行各所述运算子命令所需的运算子数据,并将所述运算子数据分配至对应的运算模块进行存储。
14.根据权利要求12所述的方法,其特征在于,所述方法还包括:
根据各运算子命令之间的运算逻辑关系,选择性地连接各所述运算模块。
CN201810782174.6A 2018-06-27 2018-07-17 一种运算装置和运算方法 Pending CN110728364A (zh)

Priority Applications (9)

Application Number Priority Date Filing Date Title
CN201810782174.6A CN110728364A (zh) 2018-07-17 2018-07-17 一种运算装置和运算方法
JP2020560786A JP7053891B2 (ja) 2018-06-27 2019-06-25 オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム
EP19824842.9A EP3798850A4 (en) 2018-06-27 2019-06-25 ON-CHIP CODE BREAKPOINT DEBUG METHOD, ON-CHIP PROCESSOR AND CHIP BREAKPOINT DEBUG SYSTEM
PCT/CN2019/092805 WO2020001438A1 (zh) 2018-06-27 2019-06-25 片上代码断点调试方法、片上处理器及芯片断点调试系统
EP20217296.1A EP3825841A1 (en) 2018-06-27 2019-06-25 Method and device for parallel computation of a network model
KR1020207036740A KR102470893B1 (ko) 2018-06-27 2019-06-25 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
TW108125033A TWI803663B (zh) 2018-07-17 2019-07-16 一種運算裝置和運算方法
US17/138,334 US20210117810A1 (en) 2018-07-17 2020-12-30 On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US17/138,161 US11789847B2 (en) 2018-06-27 2020-12-30 On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810782174.6A CN110728364A (zh) 2018-07-17 2018-07-17 一种运算装置和运算方法

Publications (1)

Publication Number Publication Date
CN110728364A true CN110728364A (zh) 2020-01-24

Family

ID=69217030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810782174.6A Pending CN110728364A (zh) 2018-06-27 2018-07-17 一种运算装置和运算方法

Country Status (3)

Country Link
US (1) US20210117810A1 (zh)
CN (1) CN110728364A (zh)
TW (1) TWI803663B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114880537A (zh) * 2022-05-13 2022-08-09 深圳宏鹏数字供应链管理有限公司 一种企业风险评估方法、系统及存储介质

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11709672B2 (en) 2018-02-13 2023-07-25 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
KR102148110B1 (ko) 2018-02-13 2020-08-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 계산 장치 및 방법
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
JP7053891B2 (ja) 2018-06-27 2022-04-12 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111383638A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111831543A (zh) 2019-04-18 2020-10-27 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
CN112085184B (zh) 2019-06-12 2024-03-29 上海寒武纪信息科技有限公司 量化参数调整方法、装置及相关产品
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11829279B2 (en) * 2021-09-23 2023-11-28 Intel Corporation Systems, apparatus, and methods to debug accelerator hardware

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722130A (zh) * 2004-07-12 2006-01-18 富士通株式会社 可重配置运算装置
CN101689108A (zh) * 2007-05-17 2010-03-31 富士通株式会社 运算单元、处理器和处理器体系结构
CN107301453A (zh) * 2016-04-15 2017-10-27 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络正向运算装置和方法
CN107315571A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行全连接层神经网络正向运算的装置和方法
CN107329734A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络正向运算的装置和方法
CN107341541A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行全连接层神经网络训练的装置和方法
CN107810480A (zh) * 2015-06-26 2018-03-16 微软技术许可有限责任公司 根据性能度量的指令块分配
CN107832804A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361367A (en) * 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors
US5790880A (en) * 1996-01-04 1998-08-04 Advanced Micro Devices Microprocessor configured to dynamically connect processing elements according to data dependencies
DE69827589T2 (de) * 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
EP2000973B1 (en) * 2006-03-30 2013-05-01 NEC Corporation Parallel image processing system control method and apparatus
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
KR101076869B1 (ko) * 2010-03-16 2011-10-25 광운대학교 산학협력단 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法
US9978014B2 (en) * 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
CN111310904B (zh) * 2016-04-29 2024-03-08 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络训练的装置和方法
US10191881B2 (en) * 2016-06-06 2019-01-29 Hewlett Packard Enterprise Development Lp Modifications to a stream processing topology during processing of a data stream
US10372507B2 (en) * 2016-12-31 2019-08-06 Intel Corporation Compute engine architecture to support data-parallel loops with reduction operations

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722130A (zh) * 2004-07-12 2006-01-18 富士通株式会社 可重配置运算装置
CN101689108A (zh) * 2007-05-17 2010-03-31 富士通株式会社 运算单元、处理器和处理器体系结构
CN107810480A (zh) * 2015-06-26 2018-03-16 微软技术许可有限责任公司 根据性能度量的指令块分配
CN107301453A (zh) * 2016-04-15 2017-10-27 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络正向运算装置和方法
CN107315571A (zh) * 2016-04-27 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行全连接层神经网络正向运算的装置和方法
CN107329734A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络正向运算的装置和方法
CN107341541A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行全连接层神经网络训练的装置和方法
CN107832804A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PEDRO O. DOMINGOS ET AL.: "An efficient and scalable architecture for neural networks with backpropagation learning", 《INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS, 2005.》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114880537A (zh) * 2022-05-13 2022-08-09 深圳宏鹏数字供应链管理有限公司 一种企业风险评估方法、系统及存储介质
CN114880537B (zh) * 2022-05-13 2023-06-30 深圳宏鹏数字供应链管理有限公司 一种企业风险评估方法、系统及存储介质

Also Published As

Publication number Publication date
TW202022644A (zh) 2020-06-16
TWI803663B (zh) 2023-06-01
US20210117810A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
CN110728364A (zh) 一种运算装置和运算方法
EP3825841A1 (en) Method and device for parallel computation of a network model
CN110197270B (zh) 集成电路芯片装置及相关产品
CN109522052B (zh) 一种计算装置及板卡
CN108510064A (zh) 包括多个核心处理模块的人工神经网络的处理系统及方法
CN107341547A (zh) 一种用于执行卷积神经网络训练的装置和方法
KR102162749B1 (ko) 뉴럴 네트워크 프로세서
KR20150016089A (ko) 신경망 컴퓨팅 장치 및 시스템과 그 방법
CN107704267A (zh) 一种卷积神经网络运算指令及其方法
CN109375951A (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
US11017290B2 (en) Signal processing module, especially for a neural network and a neuronal circuit
CN108334944B (zh) 一种人工神经网络运算的装置及方法
CN112686379B (zh) 集成电路装置、电子设备、板卡和计算方法
CN110580519B (zh) 一种卷积运算装置及其方法
CN109711540B (zh) 一种计算装置及板卡
CN111160542A (zh) 集成电路芯片装置及相关产品
CN113918120A (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
CN108108189A (zh) 一种计算方法及相关产品
CN111381882B (zh) 数据处理装置及相关产品
CN109993292B (zh) 集成电路芯片装置及相关产品
CN110399976A (zh) 计算装置和计算方法
CN111260070B (zh) 运算方法、装置及相关产品
CN111258641B (zh) 运算方法、装置及相关产品
CN110197275B (zh) 集成电路芯片装置及相关产品
CN109558565A (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