CN111915001B - 卷积计算引擎、人工智能芯片以及数据处理方法 - Google Patents
卷积计算引擎、人工智能芯片以及数据处理方法 Download PDFInfo
- Publication number
- CN111915001B CN111915001B CN202010831555.6A CN202010831555A CN111915001B CN 111915001 B CN111915001 B CN 111915001B CN 202010831555 A CN202010831555 A CN 202010831555A CN 111915001 B CN111915001 B CN 111915001B
- Authority
- CN
- China
- Prior art keywords
- data
- target
- weight
- network layer
- storage
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 171
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000003062 neural network model Methods 0.000 claims abstract description 62
- 238000012545 processing Methods 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 17
- 238000007667 floating Methods 0.000 claims description 77
- 238000003491 array Methods 0.000 claims description 45
- 230000015654 memory Effects 0.000 claims description 36
- 238000013473 artificial intelligence Methods 0.000 claims description 16
- 238000009825 accumulation Methods 0.000 claims description 9
- 239000012634 fragment Substances 0.000 claims description 9
- 238000012937 correction Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 18
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000007781 pre-processing Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000010354 integration Effects 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000036316 preload Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 229910001092 metal group alloy Inorganic materials 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/04—Architecture, e.g. interconnection topology
-
- 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
- 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
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请基于云技术公开了一种神经网络模型的卷积计算引擎、人工智能芯片以及数据处理方法;其中,神经网络模型至少包括第一网络层和第二网络层;卷积计算引擎包括:权重存储单元和数据计算单元,权重存储单元的输出端和数据计算单元的输入端相连接;权重存储单元,用于在第一网络层的卷积运算过程中,从位于卷积计算引擎外的外部存储单元中预装载第二网络层的权重数据;数据计算单元,用于响应针对第二网络层的运算指令,获取第二网络层的目标输入数据,以及从权重存储单元中读取第二网络层的权重数据;并采用第二网络层的权重数据对目标输入数据进行卷积运算。本发明实施例可实现卷积运算和权重数据加载的并行处理,提升卷积计算引擎的计算性能。
Description
技术领域
本发明涉及互联网技术领域,具体涉及人工智能技术领域,尤其涉及一种神经网络模型的卷积计算引擎、一种人工智能芯片以及一种数据处理方法。
背景技术
随着科学技术的发展,云技术被运用在越来越多的行业应用中,如人工智能的相关应用、智能硬件的相关应用等。其中,基于人工智能技术的神经网络模型,已被广泛应用于人脸识别、图像分类、对象标注等诸多新兴领域。在神经网络模型的应用过程中,通常会涉及卷积计算引擎的使用;此处的卷积计算引擎是指:用于完成神经网络模型中的卷积运算的引擎。研究表明,卷积计算引擎通常承担了神经网络模型计算中的80%以上的计算量;可见,对于神经网络模型而言,卷积计算引擎是一个较为关键的部件。目前,如何提升卷积计算引擎的计算性能,成为了研究热点。
发明内容
本发明实施例提供了一种卷积计算引擎、人工智能芯片以及数据处理方法,可实现卷积运算和权重数据加载的并行处理,提升卷积计算引擎的计算性能。
一方面,本发明实施例提供了一种神经网络模型的卷积计算引擎,所述神经网络模型至少包括第一网络层和第二网络层;所述卷积计算引擎包括:权重存储单元和数据计算单元;所述权重存储单元的输出端和所述数据计算单元的输入端相连接;
所述权重存储单元,用于在所述第一网络层的卷积运算过程中,从位于所述卷积计算引擎外的外部存储单元中预装载所述第二网络层的权重数据;
所述数据计算单元,用于响应针对所述第二网络层的运算指令,读取所述第二网络层的目标输入数据,以及从所述权重存储单元中读取所述第二网络层的权重数据;并采用所述第二网络层的权重数据对所述目标输入数据进行卷积运算。
另一方面,本发明实施例提供了一种人工智能芯片;所述人工智能芯片至少包括上述的神经网络模型的卷积计算引擎。
再一方面,本发明实施例提供了一种数据处理方法,所述数据处理方法由如上述的神经网络模型的卷积计算引擎来执行;所述神经网络模型至少包括第一网络层和第二网络层,所述卷积计算引擎包括:权重存储单元和数据计算单元;所述权重存储单元的输出端和所述数据计算单元的输入端相连接;所述数据处理方法包括:
在所述第一网络层的卷积运算过程中,预加载所述第二网络层的权重数据;
响应针对所述第二网络层的运算指令,读取所述第二网络层的目标输入数据;
采用所述第二网络层的权重数据对所述目标输入数据进行卷积运算。
本发明实施例通过在卷积计算引擎中设置权重存储单元和数据计算单元,使得在神经网络模型的第一网络层的卷积运算过程中,可由权重存储单元并行地从外部存储单元中预装载神经网络模型的第二网络层的权重数据。通过卷积运算和权重数据加载的并行处理,可实现权重数据的加载时长的隐藏;从而可有效节省卷积计算引擎的整体计算耗时,进而提升卷积计算引擎的计算性能。并且,通过设置一个独立的权重存储单元,可实现将权重数据的存储从数据计算单元中分离出来;使得在预装载各层网络层的权重数据时,均可共用这一个权重存储单元,可有效提升存储的集成度,从而降低卷积计算引擎的面积,有利于卷积计算引擎的生产和制造。另外,由于权重存储单元主要用于存储权重数据,因此通过将第二网络层的权重数据预加载至权重存储单元中,可使得数据计算单元在从权重存储单元中读取第二网络层的权重数据时,可拥有较为精准的数据读取范围,这样可进一步减少权重数据的读取时长,从而有效减少卷积计算引擎的功耗。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种神经网络模型的模型结构示意图;
图1b是本发明实施例提供的一种神经网络模型的卷积计算引擎的结构示意图;
图2是本发明实施例提供的一种权重存储单元的结构示意图;
图3a是本发明实施例提供的一种权重存储单元中的译码器模块的结构示意图;
图3b是本发明实施例提供的另一种权重存储单元中的译码器模块的结构示意图;
图4a是本发明实施例提供的一种目标输入数据的分片示意图;
图4b是本发明实施例提供的一种第h个计算阵列的结构示意图;
图4c是本发明实施例提供的一种将目标分片数据输入至第h个计算阵列的示意图;
图4d是本发明实施例提供的一种乘累加模块的结构示意图;
图4e是本发明实施例提供的一种定点通用单元的结构示意图;
图4f是本发明实施例提供的另一种定点通用单元的结构示意图;
图4g是本发明实施例提供的一种浮点专用单元的结构示意图;
图4h是本发明实施例提供的另一种浮点专用单元的结构示意图;
图4i是本发明实施例提供的一种乘累加模块的结构示意图;
图5是本发明另一实施例提供的卷积计算引擎的结构示意图;
图6是本发明实施例提供的一种人工智能芯片的结构示意图;
图7是本发明实施例提供的一种数据处理方法的流程示意图;
图8是本发明实施例提供的一种处理设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域较为广泛;其既有软件层面的技术,也有硬件层面的技术。其中,人工智能的软件层面主要涉及神经网络模型的相关技术;相应的,人工智能的硬件层面则主要涉及神经网络模型计算所需的硬件设备(如卷积计算引擎)的相关技术。
此处的神经网络模型是指由模拟人类实际的神经网络所搭建得到的模型,其可以是卷积神经网络模型(CNN),也可以是循环神经网络模型(RNN),等等。参见图1a所示,神经网络模型中可包括多层网络层;其中,用于接收神经网络模型的输入数据的网络层可称为输入层,用于输出神经网络模型的处理结果的网络层可称为输出层,位于输入层和输出层之间的各个网络层均可称为隐藏层(或中间层)。神经网络模型中涉及卷积运算的网络层均具有多个对应的卷积核,每个卷积核中包括相应的一个或多个权重值;多个卷积核中的权重值可构成该网络层的权重数据,所谓的权重值是一种网络参数。其中,卷积运算是指:采用多个卷积核在网络层的输入数据上进行滑窗,并采用卷积核中的权重值对位于滑窗内的数据做乘加运算的处理。需要说明的是,图1a只是示例性地表示神经网络模型的模型结构,并不对此进行限定。
基于上述的人工智能技术,本发明实施例提出了一种高性能的神经网络模型的卷积计算引擎。其中,神经网络模型的输入数据可以是k维数据(k为正整数),其具体可包括但不限于:图像数据、文本数据、语言数据,等等。神经网络模型可以至少包括第一网络层和第二网络层;此处的第一网络层可以是神经网络模型中除输出层以外的,且涉及卷积运算的任一网络层,第二网络层可以是神经网络模型中位于第一网络层之后的,且涉及卷积运算的任一网络层。基于神经网络模型的卷积计算引擎可主要包括:权重存储单元11和数据计算单元12;且权重存储单元11的输出端和数据计算单元的输入端12相连接,如图1b所示。其中,权重存储单元11可快速实现神经网络模型中的一个或多个网络层的权重数据的预装载,实现最大化计算利用率;数据计算单元12是卷积计算引擎的核心,其可灵活地支持多种不同计算格式的卷积运算,具有较强的通用性。在具体实现中:
权重存储单元11,可用于在第一网络层的卷积运算过程中,从位于卷积计算引擎外的外部存储单元中预装载第二网络层的权重数据。其中,第二网络层的权重数据可包括N个权重值,N为正整数。在一种实施方式中,权重存储单元11内可包括:一个或多个微型的存储器。那么在此实施方式下,权重存储单元11可通过该一个或多个微型的存储器来存储第二网络层的权重数据。再一种实施方式中,权重存储单元11内可包括:一个或多个存储阵列;所谓的存储阵列是指由多个存储单元按照矩阵形式进行排列所得到的阵列。那么在此实施方式下,权重存储单元11可通过该一个或多个存储阵列来存储第二网络层的权重数据。需要说明的是,在权重存储单元11的内存充足的情况下,权重存储单元11在第一网络层的卷积运算过程中,除了可预装载第二网络层的权重数据;还可预装载未进行卷积运算的其他网络层的权重数据。
数据计算单元12,可用于响应针对第二网络层的运算指令,获取第二网络层的目标输入数据,以及从权重存储单元中读取第二网络层的权重数据;并采用第二网络层的权重数据对目标输入数据进行卷积运算。其中,针对第二网络层的运算指令可以是位于卷积计算引擎外的外部引擎生成的,也可以是由卷积计算引擎在完成第二网络层的相邻网络层的卷积运算结束后生成的,对此不作限制。第二网络层的目标输入数据是指:在完成第二网络层的相邻网络层的卷积运算后,所得到的相邻网络层的运算结果数据;该目标输入数据可以是k维数据,即该目标输入数据可以是二维数据、三维数据等。为便于阐述,后续均以目标输入数据为三维数据为例进行说明。其中,第二网络层的相邻网络层是指:在神经网络模型中,位于第二网络层之前,且与第二网络层相邻的网络层。例如,设第一网络层是神经网络模型的输入层(即第一层网络层);若第二网络层是神经网络模型的第二层网络层,则第二网络层的相邻网络层为该第一网络层;若第二网络层是神经网络模型中的第三层网络层,则第二网络层的相邻网络层为第二层网络层。
需要说明的是,本发明实施例所提出的卷积计算引擎除了包括上述所提及的权重存储单元11和数据计算单元12以外,还可包括数据缓存单元等其他单元。其中,数据缓存单元可用于缓存神经网络模型中的各网络层的运算结果数据,即数据缓存单元可用于缓存第二网络层的相邻网络层的运算结果数据(即第二网络层的目标输入数据);那么在此情况下,数据计算单元12可用于响应针对第二网络层的运算指令,从该数据缓存单元中获取第二网络层的目标输入数据。应理解的是,若卷积计算引擎内没有部署数据缓存单元,则神经网络模型中的各网络层的运算结果数据可缓存在位于卷积计算引擎外的外部存储单元中,即第二网络层的相邻网络层的运算结果数据(即第二网络层的目标输入数据)可缓存在该外部存储单元中;那么在此情况下,数据计算单元12可用于响应针对第二网络层的运算指令,从该外部存储单元中获取第二网络层的目标输入数据。
本发明实施例通过在卷积计算引擎中设置权重存储单元和数据计算单元,使得在神经网络模型的第一网络层的卷积运算过程中,可由权重存储单元并行地从外部存储单元中预装载神经网络模型的第二网络层的权重数据。通过卷积运算和权重数据加载的并行处理,可实现权重数据的加载时长的隐藏;从而可有效节省卷积计算引擎的整体计算耗时,进而提升卷积计算引擎的计算性能。并且,通过设置一个独立的权重存储单元,可实现将权重数据的存储从数据计算单元中分离出来;使得在预装载各层网络层的权重数据时,均可共用这一个权重存储单元,可有效提升存储的集成度,从而降低卷积计算引擎的面积,有利于卷积计算引擎的生产和制造。另外,由于权重存储单元主要用于存储权重数据,因此通过将第二网络层的权重数据预加载至权重存储单元中,可使得数据计算单元在从权重存储单元中读取第二网络层的权重数据时,可拥有较为精准的数据读取范围,这样可进一步减少权重数据的读取时长,从而有效减少卷积计算引擎的功耗。
基于上述图1b所示的卷积计算引擎的相关描述,本发明实施例提出了一种如图2所示的权重存储单元;该权重存储单元可用于实现神经网络模型中的各网络层的权重数据的初始化、预装载和输出等操作处理。参见图2所示,该权重存储单元可包括译码器模块(即Decoder模块)21和M个存储阵列22,M为正整数;且译码器模块21可分别与各个存储阵列的输入端相连接。其中,译码器模块21用于对M个存储阵列22执行权重值的读写操作,以及可用于对M个存储阵列22进行初始化处理;相应的,M个存储阵列22可用于存储各网络层的权重数据,每个存储阵列是指由多个存储单元按照矩阵形式进行排列所得到的阵列。其中,每个存储阵列中的多个存储单元可相互独立,且每个存储单元可以是片上存储器。
下面以神经网络模型包括第一网络层和第二网络层,且第二网络层的权重数据包括N个卷积核的权重值为例,对译码器模块21执行权重值的读写操作的具体原理进行阐述:
①执行权重值的写操作的具体原理:译码器模块21可用于在第一网络层的卷积运算过程中,从外部存储单元中获取第二网络层的权重数据;并确定第二网络层的权重数据中的各个权重值在M个存储阵列22中的存储地址;分别按照各个权重值的存储地址,将各个权重值依次写入M个存储阵列22中。其中,第二网络层的权重数据中的任一权重值的存储地址可至少包括:用于存储任一权重值的存储阵列的阵列标识,以及该存储阵列中用于存储该任一权重值的存储单元的存储坐标。
②执行权重值的读操作的具体原理:该译码器模块21可用于响应第二网络层的权重读取指令,获取第二网络层的权重数据中的各个权重值在M个存储阵列22中的存储地址;分别按照各个权重值的存储地址,从M个存储阵列中读取各个权重值22,并将读取到的各个权重值传输至数据计算单元。其中,权重读取指令可以是由卷积计算引擎中的数据计算单元在响应针对第二网络层的运算指令时,发送给权重存储单元中的译码器模块的。
在一种实施方式中,上述所提及的译码器模块21中可包括一个译码器;在此实施方式下,上述所提及的译码器模块21所执行的各个操作(如存储地址的确定操作、各个权重值的读写操作等)均可由该译码器执行。
再一种实施方式中,上述所提及的译码器模块21中可包括多个译码器;在此实施方式下,上述所提及的译码器模块21所执行的各个操作可分别由这多个译码器执行。例如,参见图3a所示,该译码器模块21可具体包括:第一译码器(即ID Decoder)211、第二译码器212以及访问控制器(即Access Timing Generator)213;其中,第二译码器212的输入端与第一译码器211的输出端相连接,且第二译码器212的输出端与访问控制器213相连接。其中,第一译码器211可用于对存储阵列的阵列标识进行译码,第二译码器212可用于对存储阵列中的存储单元的存储坐标进行译码,访问控制器212可用于产生关于M个存储阵列的访问时序;此处的访问时序包括以下至少一种:初始化时序、读写控制及切换时序、写时序、读时序以及差错处理时序。其中,初始化时序用于触发对M个存储阵列进行初始化操作;读写控制及切换时序用于触发从读模式切换至写模式,或者触发从写模式切换至读模式;写时序用于触发对M个存储阵列执行权重值的写操作,读时序用于触发对M个存储阵列执行权重值的读操作;差错处理时序用于触发对从M个存储阵列中读取到的权重值进行差错处理(即数据校正处理)。
下面以第二网络层的权重数据中的第n个卷积核中的目标权重值(n∈[1,N]),此处的目标权重值为第n个卷积核中的任一权重值;且目标权重值在M个存储阵列中的存储地址包括:用于存储目标权重值的目标存储阵列的阵列标识,以及目标存储阵列中用于存储目标权重值的目标存储单元的存储坐标为例,对图3a所示的译码器模块21中的各个译码器,协同执行权重值的读写操作的具体原理进行阐述:
①协同执行权重值的写操作的具体原理:第一译码器211可用于从M个存储阵列中选取用于存储目标权重值的目标存储阵列,并确定目标存储阵列的阵列标识;第二译码器212可用于从目标存储阵列中选取用于存储目标权重值的目标存储单元,并确定目标存储单元的存储坐标;访问控制器213可用于在第一网络层的卷积运算过程中,从外部存储单元中获取目标权重值;并根据目标权重值对应的阵列标识,以及目标权重值对应的存储坐标,将目标权重值写入目标存储阵列的目标存储单元中。
②协同执行权重值的读操作的具体原理:第一译码器211,用于响应关于第二网络层的权重读取指令,对目标权重值对应的存储地址进行译码,得到用于存储目标权重值的目标存储阵列的阵列标识;第二译码器212可用于对目标权重值对应的存储地址进行译码,得到目标存储阵列中用于存储目标权重值的目标存储单元的存储坐标;访问控制器213可用于根据目标权重值对应的阵列标识,从M个存储阵列中确定出目标存储阵列;并根据目标权重值对应的存储坐标,从目标存储阵列的目标存储单元中读取目标权重值,将读取到的目标权重值传输至数据计算单元。
在一种可选的实施方式中,在从目标存储阵列中读取目标权重值之后,访问控制器213还用于:在读取到的目标权重值存在异常时,对读取到的目标权重值进行差错处理。其中,读取到的目标权重值存在异常是指:读取到的目标权重值与写入的目标权重值不相同。相应的,差错处理是指:采用目标权重值所对应的校验位对读取到的目标权重值进行数据校正的处理;其中,目标权重值所对应的校验位是在将目标权重值写入目标存储阵列时生成的。
再一种可选的实施方式中,上述所提及的第二译码器212可只包括一个坐标译码器,该坐标译码器可用于对存储阵列中的存储单元的存储坐标中的行坐标和列坐标进行译码。或者,上述所提及的第二译码器212可包括两个译码器,具体包括:列译码器(即ColumnDecoder)和行译码器(即Row Decoder)。其中,列译码器可用于对存储阵列中的存储单元的存储坐标中的列坐标进行译码;行译码器可用于对存储阵列中的存储单元的存储坐标中的行坐标进行译码。在此实施方式下,译码器模块的具体结构示意图可进一步参见图3b所示。需要说明的是,图3b只是示例性地表示译码器模块中的各个译码器之间的连接关系,并不对其进行限定。例如在图3b中,列译码器的输入端和第一译码器211的输出端相连接,列译码器的输出端和行译码器的输入端相连接,行译码器的输出端与访问控制器213的输入端相连接。但在其他实施例中,也可以是如下连接关系:行译码器的输入端和第一译码器211的输出端相连接,行译码器的输出端和列译码器的输入端相连接,列译码器的输出端与访问控制器213的输入端相连接。
本发明实施例通过在卷积计算引擎中,部署上述所提及的权重存储单元,可实现卷积运算和权重数据加载的并行处理,从而实现权重数据的加载时长的隐藏;进而可有效节省卷积计算引擎的整体计算耗时,提升卷积计算引擎的计算性能。并且,权重存储单元通过多个存储阵列,来复用存储各个网络层的权重数据,可有效提升存储的集成度,降低卷积计算引擎的面积,有利于卷积计算引擎的生产和制造。
基于上述图1b所示的卷积计算引擎的相关描述,本发明实施例还提出了一种更为具体的数据计算单元;该数据计算单元可包括H个计算阵列,H为正整数;每个计算阵列可用于接收外部输入的数据以及从卷积计算引擎中的权重存储单元中获取网络层的权重数据,从而实现高速的卷积运算。那么相应的,在数据计算单元用于:响应针对第二网络层的运算指令,获取第二网络层的目标输入数据,以及从权重存储单元中读取第二网络层的权重数据;并采用第二网络层的权重数据对目标输入数据进行卷积运算时,可由H个计算阵列中的部分或全部计算阵列来完成第二网络层的目标输入数据的卷积运算。
在一种具体实现中,可由H个计算阵列中的任一计算阵列来响应针对第二网络层的运算指令,获取第二网络层的目标输入数据,以及从权重存储单元中读取第二网络层的权重数据;并采用第二网络层的权重数据对目标输入数据进行卷积运算。
再一种具体实现中,目标输入数据可被拆分成多个分片数据;在此实施方式下,H个计算阵列中的部分或全部计算阵列,可并行地对多个分片数据进行卷积计算,且一个计算阵列对应一个分片数据。例如参见图4a所示,设目标输入数据为一个三维数据,那么可按照权重值对应的卷积核尺寸,将该目标输入数据拆分成多个分片数据;其中,每个分片数据的尺寸小于或等于权重值对应的卷积核尺寸。然后,可为不同的分片数据分配不同的计算阵列,如分片数据1对应计算阵列1,分片数据2对应计算阵列2,等等。在此实施方式下,第h个计算阵列用于:响应针对第二网络层的运算指令,获取第二网络层的目标输入数据中的目标分片数据,以及从权重存储单元中读取第二网络层的权重数据;并采用第二网络层的权重数据对目标分片数据进行卷积运算。其中,h∈[1,H],目标分片数据为目标输入数据中未被执行卷积运算的任一分片数据。本发明实施例通过采用多个计算阵列对目标输入数据的多个分片数据进行并行计算,可有效提升目标输入数据的计算效率。
参见图4b所示,第h个计算阵列可以是由P×Q个乘累加模块组成的P行Q列的阵列,P和Q均为正整数。其中,乘累加模块也可称为乘数累加器,是计算阵列中的最小单元;其具体是指用于实现乘累加运算(Multiply Accumulate,MAC)的硬件电路单元,即乘累加模块主要用于完成乘累加运算。具体的,乘累加模块可至少包括:第一输入端A、第二输入端B、上级输入端C_in以及模块输出端C_out。相应的,乘累加模块所执行的乘累加运算是指:将乘累加模块的第一输入端A所输入的数据和第二输入端B所输入的数据进行相乘后,将得到的乘积与上级输入端C_in所输入的数据进行相加的运算。在第h个计算阵列中,同一列相邻的乘累加模块采用逐级级联的方式进行连接;即第p行第q列的乘累加模块的模块输出端,与第p+1行第q列的乘累加模块的上级输入端相连接;p∈[1,P-1],q∈[1,Q]。采用这种逐级级联的方式,可实现上一个乘累加模块得到的累加中间结果向下传递至下一行相同列的乘累加模块的输入端;需说明的是,对于第h个计算阵列中的第1行的各个乘累加模块而言,由于上级输入端C_in不存在输入的累加中间结果,因此第1行的各个乘累加模块在执行乘累加运算时,可只执行将乘累加模块的第一输入端A所输入的数据和第二输入端B所输入的数据进行相乘的步骤,然后直接将相乘结果传递至第2行中相应的乘累加模块的上级输入端C_in。
相应的,将目标分片数据输入至第h个计算阵列中的方式如下:若目标分片数据是一个三维数据,则目标分片数据可按照目标分片数据的深度被切割成多个二维数据(Activation);例如,若目标分片数据的深度为C,则目标分片数据可按照该深度被切割成C个二维数据。其中,任一个二维数据采用广播的方式输入至第h个计算阵列中的任一行的各个乘累加模块的第一输入端中;当第二网络层的权重数据包括N个卷积核的权重值,N为正整数且N小于或等于Q时,第n个卷积核的权重值输入至第h个计算阵列中的第n列的各个乘累加模块的第二输入端中。例如,设目标分片数据为分片数据1,且目标分片数据的深度C与第h个计算阵列的行数P相同,并设第二网络层的权重数据所包括的权重值所对应的卷积核的数量N等于第h个计算阵列的列数Q;那么目标分片数据对应的各个二维数据可采用广播的方式同时输入至第h个计算阵列中各行中的乘累加模块的第一输入端中,如图4c中的虚线所示;第二网络层的各个卷积核的权重值可以分别输入至第h个计算阵列中各列中的乘累加模块的第二输入端中。
进一步的,由于输入至乘累加模块中的数据(如目标分片数据对应的各个二维数据、权重值等)可能是定点数(fixed-point number),也可能是浮点数(floating-pointnumber)。所谓的定点数是指计算机中采用的一种数的表示方法,约定计算机中所有数据的小数点位置是固定不变的。且在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者固定在数据的最低位之后;一般常称前者为定点小数,后者为定点整数。所谓浮点数是指计算机中采用的另一种数的表示方法,与科学计数法相似,任意一个二进制数N,总可以写成:Y=2E*X。其中,式中X为浮点数Y的小数部分(也称尾数mantissa),是一个纯小数;E为浮点数Y的指数部分(也称阶码exponent),是一个整数。这种表示方法相当于数的小数点位置随比例因子的不同,而在一定范围内可以自由浮动,所以称为浮点标识法。相应的,将两个浮点数进行乘法运算的操作可简称为浮点乘运算,其具体运算原理如下:设第一浮点数Y1=2E 1*X1,第二浮点数Y2=2E 2*X2,那么这两个浮点数的乘积为:Y1* Y2=2(E 1 +E 2 )*( X1* X2)。
因此,为了使得上述的乘累加模块既能支持定点运算(即定点数的运算),又能支持浮点运算(即浮点数的运算);本发明实施例所提出的乘累加模块还可包括:用于选择定点计算模式或浮点计算模式的模式选择端mode,定点通用单元41、浮点专用单元42,以及输出选择单元43,如图4d所示。其中,定点通用单元41与乘累加模块中的第一输入端A、第二输入端B、上级输入端C_in和模式选择端mode分别相连,定点通用单元41的定点输出端分别与输出选择单元43以及浮点专用单元42相连;且浮点专用单元42与乘累加模块中的第一输入端A、第二输入端B、上级输入端C_in、定点输出端和模式选择端mode分别相连,浮点专用单元42的浮点输出端与输出选择单元43相连。输出选择单元43,用于在模式选择端mode所指示的计算模式为定点计算模式时,将定点输出端与模块输出端C_out导通;在计算模式为浮点计算模式时,将浮点输出端与模块输出端C_out导通。在具体实现中,如图4d所示的乘累加模块的工作原理如下:
在计算模式为定点计算模式时,定点通用单元41用于将第一输入端A输入的二维数据和第二输入端B输入的权重值相乘后,与上级输入端C_in输入的中间累加结果进行累加,从定点输出端输出定点运算结果。在此情况下,输出选择单元43可将定点通用单元41的定点输出端与模块输出端C_out导通,从模块输出端C_out输出定点运算结果。
在计算模式为浮点计算模式时,定点通用单元41用于对第一输入端A输入的二维数据和第二输入端B输入的权重值进行浮点乘累加运算中的乘法部分计算,从定点通用单元41的定点输出端输出第一中间结果,该第一中间结果输入浮点专用单元42;浮点专用单元42用于将第一输入端A输入的二维数据、第二输入端B输入的权重值、上级输入端C_in输入的中间累加结果和定点通用单元41的定点输出端输入的第一中间结果进行浮点乘累加运算中的加法部分运算后,从浮点输出端输出浮点运算结果。在此情况下,输出选择端43将浮点专用单元42的浮点输出端与模块输出端C_out导通,从模块输出端C_out输出浮点运算结果。
在一种实施方式中,上述所提及的乘累加模块中的定点通用单元41的具体结构还可进一步参见图4e所示。具体的,该定点通用单元41可包括乘法器子单元、定点加法器子单元和定点结果选择单元;其中,乘法器子单元的输入端与第一输入端A和第二输入端B分别相连,定点加法器子单元的输入端与乘法器子单元的输出端和上级输入端C_in分别相连,定点结果选择单元的输入端与定点加法器子单元输出端相连,定点结果选择单元的输出端与输出选择单元43相连。
进一步的,乘法器单元可具体包括:第一乘法器、第二乘法器、第三乘法器和第四乘法器;定点加法器子单元可包括:第一加法器、第二加法器、第三加法器、第四加法器。第一输入端A可分为第一子输入端A1和第一子输入端A2,第二输入端B可分为第二子输入端B1和第二子输入端B2,上级输入端C_in可分为上级子输入端C1和上级子输入端C2。相应的,该定点通用单元41中的各部分的连接关系可一并参见图4f所示,具体如下:
第一乘法器的输入端分别与第一子输入端A1、第二子输入端B1相连;第二乘法器的输入端分别与第一子输入端A2、第二子输入端B1相连;第三乘法器的输入端分别与第一子输入端A1、第二子输入端B2相连;第四乘法器的输入端分别与第一子输入端A2、第二子输入端B2相连。第一加法器的输入端分别与第一乘法器的输出端、第二乘法器的输出端相连;第二加法器的输入端分别与第三乘法器的输出端、第四乘法器的输出端相连;第三加法器的输入端分别与第一加法器1的输出端、第四加法器的输出端、上级子输入端C1相连;第四加法器的输入端分别与第一加法器的输出端、第二加法器的输出端、上级子输入端C2、第一输入端A、第二输入端B相连。定点结果选择单元的输入端与第三加法器的输出端、第四加法器的输出端分别相连。
在实际计算中,若计算模式为浮点计算模式,则通过图4f所示的定点通用单元41计算第一中间结果的具体方式如下:将二维数据S12E 1.X1的小数部分S1X1和权重值S22E 2.X2的小数部分S2X2分别通过第一输入端A和第二输入端B输入第一乘法器,或者第二乘法器,或者第三乘法器,或者第四乘法器;通过第一乘法器,或者第二乘法器,或者第三乘法器,或者第四乘法器计算二维数据的小数部分S1X1和权重值的小数部分S2X2的乘积,得到第一中间结果。可选的,定点通用单元41中的第四加法器还可计算二维数据和权重值的指数部分的第一指数和,并将计算得到的第一指数和传递至浮点专用单元42。具体的,可将二维数据S12E 1.X1的指数部分E1和权重值S22E 2.X2的指数部分E2分别通过第一输入端A和第二输入端B输入第四加法器,通过第四加法器计算得到第一指数和E1+E2。
再一种实施方式中,上述所提及的乘累加模块中的浮点专用单元42的具体结构还可进一步参见图4g所示。具体的,浮点专用单元42可包括浮点加法器子单元、移位单元、搜索单元和浮点结果输出单元;其中,浮点加法器子单元的输入端与第一输入端A、第二输入端B、上级输入端C_in、定点加法器子单元的输出端、移位单元和搜索单元分别相连,移位单元的输入端与浮点加法器子单元的输出端相连,搜索单元的输入端与浮点加法器子单元的输出端相连,浮点结果输出单元的输入端与浮点加法器子单元的输出端相连,浮点结果输出单元的输出端与输出选择单元相连。
进一步的,浮点加法器单元可包括:第五加法器、第六加法器、第七加法器。相应的,该浮点专用单元41中的各部分的连接关系可一并参见图4h所示,具体如下:
第五加法器的输入端与定点通用单元41的输出端、上级输入端C_in分别相连,第六加法器的输入端与定点通用单元41的定点输出端、上级输入端C_in、移位单元的输出端分别相连,第七加法器的输入端与定点通用单元41的输出端,以及搜索单元的输出端分别相连。移位单元的输入端与第五加法器的输出端、第六加法器的输出端分别相连,搜索单元的输入端与第六加法器的输出端、第七加法器的输出端分别相连,浮点结果输出单元与第六加法器的输出端、搜索单元的输出端分别相连。
在实际计算中,若计算模式为浮点计算模式,则浮点专用单元42进行浮点运算所采用的计算公式如下:
S2EX= S12E 1X1*S22E 2X2+ S32E 3X3=2E 1 + E 2 +offset(S1X1*S2X2+ S3X3)
其中,S12E 1X1是二维数据,S22E 2X2是权重值,S32E 3X3是中间累加结果。即E1是二维数据的指数部分,E2是权重值的指数部分,E3是中间累加结果的指数部分;S1是二维数据的符号位,S2是权重值的符号位,S3是中间累加结果的符号位;X1是二维数据的小数部分,X2是权重值的小数部分,X3是中间累加结果的小数部分。offset是由计算得到的小数结果产生进位导致的指数的相对偏移值。
上述运算过程由浮点专用单元42的相应的计算单元执行,对应的计算执行过程如下:
第五加法器,用于将第一指数和E1+E2与中间累加结果的指数部分E3的负值相加,得到第二指数和E1+E2-E3。
移位单元,用于根据第二指数和E1+E2-E3得到移位对象和移位位数,移位对象是第一中间结果S1X1*S2X2或者中间累加结果的小数部分S3X3。当移位对象为第一中间结果S1X1*S2X2时,根据移位位数对第一中间结果S1X1*S2X2移位得到移位后的第一中间结果;当移位对象为中间累加结果的小数部分S3X3时,根据移位位数对中间累加结果的小数部分S3X3移位得到移位后的第三操作数的小数部分。
第六加法器,用于当移位对象为第一中间结果S1X1*S2X2时,将移位后的第一中间结果与中间累加结果的小数部分S3X3相加;或者,当移位对象为中间累加结果的小数部分S3X3时,将第一中间结果S1X1*S2X2与移位后的第三操作数的小数部分相加,得到小数和。
搜索单元,用于根据小数和得到小数结果S1X1*S2X2+ S3X3、以及计算得到指数的相对偏移值offset,并从第七加法器处得到浮点运算结果的指数结果E1+ E2+offset。
第七加法器,用于将指数的相对偏移值offset与第一指数和E1+ E2相加,得到浮点运算结果的指数结果E1+ E2+offset。
浮点结果输出单元,用于根据小数和的符号位确定浮点运算结果的符号位;将浮点结果的符号位、小数结果S1X1* S2X2+ S3X3和指数结果E1+ E2+offset拼接在一起,产生浮点运算结果。
综上,上述图4e-图4h分别示例性地表示了图4d所示的乘累加模块中的定点通用单元41和浮点专用单元42的具体结构。在可选实施例中,由于输入至乘累加模块的二维数据和/或权重值所占用的位宽,可能与乘累加模块所支持的位宽不适配;因此,还可在乘累加模块中部署一个数据重组器,以实现对二维数据和/或权重值的重组和/或拆分。具体的,设二维数据(或权重值)占用的位宽为2R,乘累加模块所支持的位宽为r;若二维数据(或权重值)占用的位宽大于乘累加模块所支持的位宽,则可对二维数据(或权重值)进行拆分成2R/r组,使得拆分后的每组数据所占用的位宽为r;若二维数据(或权重值)占用的位宽小于乘累加模块所支持的位宽,则可对二维数据(或权重值)进行重组,使得重组后的每组数据所占用的位宽为r。
基于此,本发明实施例还提出了如图4i所示的乘累加模块。具体的,该乘累加模块可包括:第一输入端A、第二输入端B、上级输入端C_in以及模块输出端C_out、模式选择端mode,定点通用单元、浮点专用单元、输出选择单元以及数据重组器。其中,
定点通用单元包括乘法器子单元、加法器子单元和定点结果选择单元;乘法器子单元的输入端与数据重组器相连,加法器子单元的输入端与乘法器子单元的输出端和上级输入端C_in分别相连,定点结果选择单元的输入端与加法器子单元输出端相连,定点结果选择单元的输出端与输出选择单元相连。
浮点专用单元包括浮点加法器子单元、移位单元、搜索单元和浮点结果输出单元;浮点加法器子单元的输入端与数据重组器、上级输入端C_in、加法器子单元的输出端、移位单元和搜索单元分别相连,移位单元的输入端与浮点加法器子单元的输出端相连,搜索单元的输入端与浮点加法器子单元的输出端相连,浮点结果输出单元与输入端与浮点加法器子单元的输出端相连,浮点结果输出单元的输出端与输出选择单元相连。
本发明实施例通过在乘累加模块中设置定点通用单元和浮点专用单元,该浮点专用单元与定点通用单元的定点输出端相连,由定点通用单元来完成定点计算模式下的乘累加计算,由定点通用单元和浮点专用单元协同完成浮点计算模式下的乘累加计算,实现了同一个乘累加模块能够同时实现定点乘累加运算和浮点乘累加两种运算,由于定点运算单元与浮点运算单元集成在一个电路中,部分器件共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在卷积计算引擎上的占用面积、以及减少了卷积计算引擎在乘累加运算时的功耗。
基于上述描述,在实际制造卷积计算引擎时,可在权重存储单元中部署M个存储阵列,以及在数据计算单元中部署H个计算阵列;在此情况下,卷积计算引擎的结构示意图可参见图5所示。或者,也可只在权重存储单元中部署M个存储阵列;或者,只在数据计算单元中部署H个计算阵列。在实际应用中,上述所提及的卷积计算引擎可被集成在中央处理器(Central Processing Unit,CPU)、现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)、专用集成电路(Application Specific Integrated Circuit,ASIC)、图形处理器(Graphics Processing Unit,GPU)、以及人工智能芯片(AI芯片)等硬件中。其中,芯片是指:内含集成电路的硅片;其体积通常较小,是计算机或其他电子设备的重要组成部分。
基于此,本发明实施例还提出了一种AI芯片;该AI芯片包括上述所提及的神经网络模型的卷积计算引擎。可选的,该AI芯片还可包括其他接口以及其他引擎。例如参见图6所示,该AI芯片还可包括接口单元61、片上数据存储单元62、预处理引擎63、卷积计算引擎64、片上指令存储单元65、任务处理器引擎66、命令调度单元67、专用算法引擎68以及后处理引擎69,等等。
其中,片上数据存储单元62的一端与接口单元61相连;片上数据存储单元62的另一端与预处理引擎63、卷积计算引擎64、专用算法引擎68以及后处理引擎69的一端分别相连。预处理引擎c、卷积计算引擎d、专用算法引擎68以及后处理引擎69的另一端分别与命令调度单元67的输出端相连。命令调度单元67的输入端与任务处理器引擎66的输出端相连,任务处理器引擎66的输入端与片上指令存储单元65的输出端相连;片上指令存储单元65的输入端与接口单元61的输出端相连。
在具体实现中,接口单元61可用于获取神经网络模型的输入数据以及各网络层的权重数据,并将获取到神经网络模型的输入数据以及各网络层的权重数据写入片上数据存储单元62中。其中,神经网络模型的输入数据可包括但不限于:图像数据、文本数据、语言数据,等等;神经网络模型的输入数据以及各网络层的权重数据可以是由接口单元61,通过PCIe(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)总线或者其他总线,从云侧主机(如云端服务器)处获取的。
片上数据存储单元62,除了可存储神经网络模型的输入数据以及各网络层的权重数据之外,还可缓存神经网络模型中的各网络层的运算结果数据。可选的,也可将神经网络模型中的各网络层的运算结果数据缓存至AI芯片以外的片外存储单元(如DDR(DoubleData Rate,双倍速率同步动态随机存储器))。
预处理引擎63,用于数据的预处理;例如,数据的滤波处理、图像数据的尺寸缩放处理、以及图像数据的裁剪处理,等等。
卷积计算引擎64,用于采用神经网络模型中的各网络层的权重数据,分别对各网络层的输入数据进行卷积运算,具体可参见上述实施例的相关描述。
片上指令存储单元65,用于存储神经网络模型在计算过程中所涉及的各种指令,如数据预处理指令、卷积运算指令,等等。
任务处理器引擎66,用于加载并执行指令。
命令调度单元67,用于控制相关引擎进行数据处理,如控制预处理引擎63对数据进行预处理,等等。
专用算法引擎68,用于专用算法对数据进行处理,此处的专用算法可包括但不限于:图像压缩解压算法、图像格式转换算法、视频或者音频处理算法等等。
后处理引擎69,用于完成神经网络模型中除卷积运算以外的操作,如池化(Pooling)操作。
本发明实施例通过在AI芯片上设置高性能的卷积计算引擎,可实现神经网络模型中的卷积运算和权重数据加载的并行处理,从而实现权重数据的加载时长的隐藏;这样可有效节省卷积计算引擎的整体计算耗时,提升卷积计算引擎的计算性能。并且,由于卷积计算引擎的集成度较高,可降低卷积计算引擎的芯片占用面积,从而减少整个AI芯片的面积和功耗。
基于上述神经网络模型的卷积计算引擎的相关描述,本申请实施例提出一种数据处理方法,该数据处理方法可由上述所提及的卷积计算引擎执行。其中,神经网络模型至少包括第一网络层和第二网络层。请参见图7,该数据处理方法可包括以下步骤S701-S703:
S701,在第一网络层的卷积运算过程中,预加载第二网络层的权重数据。
S702,响应针对第二网络层的运算指令,读取第二网络层的目标输入数据。
S703,采用第二网络层的权重数据对目标输入数据进行卷积运算。
本发明实施例通过并行地执行卷积运算和权重数据加载的操作,可实现权重数据的加载时长的隐藏;这样可有效节省卷积计算引擎的整体计算耗时,提升数据处理效率。
基于上述各个实施例的描述,本发明实施例还提供一种处理设备;该处理设备可以是终端,或者服务器。其中,终端可以包括但不限于:智能手机、平板电脑、笔记本电脑、台式计算机,等等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等。
请参见图8,该处理设备至少包括处理器801、输入接口802、输出接口803、计算机存储介质804以及上述的卷积计算引擎805。其中,计算机存储介质804可以存储在处理设备的存储器中,所述计算机存储介质804用于存储计算机程序,所述计算机程序包括程序指令,所述处理器801 用于执行所述计算机存储介质804存储的程序指令。处理器801(或称CPU(Central Processing Unit,中央处理器))是处理设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令来控制上述的卷积计算引擎,从而实现相应方法流程或相应功能;在一个实施例中,本发明实施例所述的处理器801可以用于调用一系列指令控制卷积计算引擎进行一系列的数据处理,包括:在第一网络层的卷积运算过程中,预加载第二网络层的权重数据;响应针对第二网络层的运算指令,读取第二网络层的目标输入数据;采用第二网络层的权重数据对目标输入数据进行卷积运算,等等。
本发明实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是处理设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括处理设备中的内置存储介质,当然也可以包括处理设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了处理设备的操作***。并且,在该存储空间中还存放了适于被处理器801加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。具体的,可由处理器801加载并执行计算机存储介质804中存放的一条或多条指令,以控制卷积计算引擎实现上述有关图7所示的数据处理方法实施例中的相应方法步骤。
需要说明的是,根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图7所示的数据处理方法实施例方面的各种可选方式中提供的方法。
本发明实施例通过并行地执行卷积运算和权重数据加载的操作,可实现权重数据的加载时长的隐藏;这样可有效节省卷积计算引擎的整体计算耗时,提升数据处理效率。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种神经网络模型的卷积计算引擎,其特征在于,所述神经网络模型至少包括第一网络层和第二网络层;所述卷积计算引擎包括:权重存储单元和数据计算单元;所述权重存储单元的输出端和所述数据计算单元的输入端相连接;
所述权重存储单元,用于在所述第一网络层的卷积运算过程中,从位于所述卷积计算引擎外的外部存储单元中预装载所述第二网络层的权重数据;
所述数据计算单元,用于响应针对所述第二网络层的运算指令,获取所述第二网络层的目标输入数据,以及从所述权重存储单元中读取所述第二网络层的权重数据;并采用所述第二网络层的权重数据对所述目标输入数据进行卷积运算;
其中,所述目标输入数据被拆分成多个分片数据,所述目标输入数据是按照权重值对应的卷积核尺寸进行拆分的,每个分片数据的尺寸小于或等于权重值对应的卷积核尺寸;所述数据计算单元包括H个计算阵列,H为正整数;所述H个计算阵列中的部分或全部计算阵列,并行地对所述多个分片数据进行卷积计算,且一个计算阵列对应一个分片数据;
第h个计算阵列,用于响应针对所述第二网络层的运算指令,获取所述第二网络层的目标输入数据中的目标分片数据,以及从所述权重存储单元中读取所述第二网络层的权重数据;并采用所述第二网络层的权重数据对所述目标分片数据进行卷积运算;其中,h∈[1,H],所述目标分片数据为所述目标输入数据中未被执行卷积运算的任一分片数据。
2.如权利要求1所述的卷积计算引擎,其特征在于,所述第二网络层的权重数据包括N个卷积核中的权重值,N为正整数;
所述权重存储单元包括译码器模块和M个存储阵列,M为正整数;所述译码器模块的输出端分别与各个存储阵列的输入端相连接;其中,所述译码器模块用于对所述M个存储阵列执行权重值的读写操作,每个存储阵列是由多个存储单元按照矩阵形式进行排列所得到的阵列。
3.如权利要求2所述的卷积计算引擎,其特征在于,
所述译码器模块,用于在所述第一网络层的卷积运算过程中,从所述外部存储单元中获取所述第二网络层的权重数据;并确定所述第二网络层的权重数据中的各个权重值在所述M个存储阵列中的存储地址;分别按照所述各个权重值的存储地址,将所述各个权重值依次写入所述M个存储阵列中。
4.如权利要求2所述的卷积计算引擎,其特征在于,
所述译码器模块,用于响应关于所述第二网络层的权重读取指令,获取所述第二网络层的权重数据中的各个权重值在所述M个存储阵列中的存储地址;分别按照所述各个权重值的存储地址,从所述M个存储阵列中读取所述各个权重值,并将读取到的各个权重值传输至所述数据计算单元。
5.如权利要求3或4所述的卷积计算引擎,其特征在于,所述译码器模块包括:第一译码器、第二译码器以及访问控制器;所述第二译码器的输入端与所述第一译码器的输出端相连接,且所述第二译码器的输出端与所述访问控制器相连接;其中,
所述第一译码器用于对存储阵列的阵列标识进行译码,所述第二译码器用于对存储阵列中的存储单元的存储坐标进行译码,所述访问控制器用于产生关于所述M个存储阵列的访问时序,所述访问时序包括以下至少一种:初始化时序、读写控制及切换时序、写时序、读时序以及差错处理时序。
6.如权利要求5所述的卷积计算引擎,其特征在于,所述第二译码器包括:列译码器和行译码器;其中,
所述列译码器,用于对存储阵列中的存储单元的存储坐标中的列坐标进行译码;
所述行译码器,用于对存储阵列中的存储单元的存储坐标中的行坐标进行译码。
7.如权利要求5所述的卷积计算引擎,其特征在于,所述权重数据中的第n个卷积核中的目标权重值在所述M个存储阵列中的存储地址包括:用于存储所述目标权重值的目标存储阵列的阵列标识,以及所述目标存储阵列中用于存储所述目标权重值的目标存储单元的存储坐标;n∈[1,N],所述目标权重值为所述第n个卷积核中的任一权重值;
所述第一译码器,用于从所述M个存储阵列中选取用于存储所述目标权重值的目标存储阵列,并确定所述目标存储阵列的阵列标识;
所述第二译码器,用于从所述目标存储阵列中选取用于存储所述目标权重值的目标存储单元,并确定所述目标存储单元的存储坐标;
所述访问控制器,用于在所述第一网络层的卷积运算过程中,从所述外部存储单元中获取所述目标权重值;并根据所述目标权重值对应的阵列标识,以及所述目标权重值对应的存储坐标,将所述目标权重值写入所述目标存储阵列的所述目标存储单元中。
8.如权利要求5所述的卷积计算引擎,其特征在于,所述权重数据中的第n个卷积核中的目标权重值在所述M个存储阵列中的存储地址包括:用于存储所述目标权重值的目标存储阵列的阵列标识,以及所述目标存储阵列中用于存储所述目标权重值的目标存储单元的存储坐标;n∈[1,N],所述目标权重值为所述第n个卷积核中的任一权重值;
所述第一译码器,用于响应关于所述第二网络层的权重读取指令,对所述目标权重值对应的存储地址进行译码,得到用于存储所述目标权重值的目标存储阵列的阵列标识;
所述第二译码器,用于对所述目标权重值对应的存储地址进行译码,得到所述目标存储阵列中用于存储所述目标权重值的目标存储单元的存储坐标;
所述访问控制器,用于根据所述目标权重值对应的阵列标识,从所述M个存储阵列中确定出目标存储阵列;并根据所述目标权重值对应的存储坐标,从所述目标存储阵列的目标存储单元中读取所述目标权重值,将读取到的目标权重值传输至所述数据计算单元。
9.如权利要求8所述的卷积计算引擎,其特征在于,在从所述目标存储阵列中读取所述目标权重值之后,所述访问控制器还用于:在读取到的目标权重值存在异常时,对所述读取到的目标权重值进行差错处理;
其中,所述差错处理是指:采用所述目标权重值所对应的校验位对所述读取到的目标权重值进行数据校正的处理,所述目标权重值所对应的校验位是在将所述目标权重值写入所述目标存储阵列时生成的。
10.如权利要求1所述的卷积计算引擎,其特征在于,所述第h个计算阵列是由P×Q个乘累加模块组成的P行Q列的阵列,P和Q均为正整数;所述乘累加模块包括:第一输入端、第二输入端、上级输入端以及模块输出端;其中,第p行第q列的乘累加模块的模块输出端,与第p+1行第q列的乘累加模块的上级输入端相连接;p∈[1,P-1],q∈[1,Q];
所述目标分片数据按照所述目标分片数据的深度被切割成多个二维数据,任一个二维数据采用广播的方式输入至所述第h个计算阵列中的任一行的各个乘累加模块的第一输入端中;
所述第二网络层的权重数据包括N个卷积核中的权重值,N为正整数且N小于或等于Q;其中,第n个卷积核中的权重值输入至所述第h个计算阵列中的第n列的各个乘累加模块的第二输入端中。
11.如权利要求10所述的卷积计算引擎,其特征在于,所述乘累加模块还包括:用于选择定点计算模式或浮点计算模式的模式选择端,定点通用单元、浮点专用单元,以及输出选择单元;
所述定点通用单元与所述乘累加模块中的第一输入端、第二输入端、所述上级输入端和所述模式选择端分别相连,所述定点通用单元的定点输出端分别与所述输出选择单元以及所述浮点专用单元相连;
所述浮点专用单元与所述乘累加模块中的第一输入端、第二输入端、所述上级输入端、所述定点输出端和所述模式选择端分别相连,所述浮点专用单元的浮点输出端与所述输出选择单元相连;
所述输出选择单元,用于在所述模式选择端所指示的计算模式为定点计算模式时,将所述定点输出端与模块输出端导通;在所述计算模式为浮点计算模式时,将所述浮点输出端与所述模块输出端导通。
12.如权利要求1所述的卷积计算引擎,其特征在于,所述卷积计算引擎被集成在中央处理器、现场可编程逻辑门阵列、专用集成电路、图形处理器或人工智能芯片中。
13.一种数据处理方法,其特征在于,所述数据处理方法由如权利要求1-11任一项所述的神经网络模型的卷积计算引擎来执行;所述神经网络模型至少包括第一网络层和第二网络层;所述数据处理方法包括:
在所述第一网络层的卷积运算过程中,预加载所述第二网络层的权重数据;
响应针对所述第二网络层的运算指令,读取所述第二网络层的目标输入数据;
采用所述第二网络层的权重数据对所述目标输入数据进行卷积运算;
其中,是通过数据计算单元对所述目标输入数据进行卷积运算的,所述目标输入数据被拆分成多个分片数据,所述目标输入数据是按照权重值对应的卷积核尺寸进行拆分的,每个分片数据的尺寸小于或等于权重值对应的卷积核尺寸;所述数据计算单元包括H个计算阵列,H为正整数;所述H个计算阵列中的部分或全部计算阵列,并行地对所述多个分片数据进行卷积计算,且一个计算阵列对应一个分片数据;第h个计算阵列,用于响应针对所述第二网络层的运算指令,获取所述第二网络层的目标输入数据中的目标分片数据,以及从所述权重存储单元中读取所述第二网络层的权重数据;并采用所述第二网络层的权重数据对所述目标分片数据进行卷积运算;其中,h∈[1,H],所述目标分片数据为所述目标输入数据中未被执行卷积运算的任一分片数据。
14.一种人工智能芯片,其特征在于,包括如权利要求1-11任一项所述的神经网络模型的卷积计算引擎。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010831555.6A CN111915001B (zh) | 2020-08-18 | 2020-08-18 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
PCT/CN2021/102707 WO2022037257A1 (zh) | 2020-08-18 | 2021-06-28 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
US17/895,811 US20230026006A1 (en) | 2020-08-18 | 2022-08-25 | Convolution computation engine, artificial intelligence chip, and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010831555.6A CN111915001B (zh) | 2020-08-18 | 2020-08-18 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111915001A CN111915001A (zh) | 2020-11-10 |
CN111915001B true CN111915001B (zh) | 2024-04-12 |
Family
ID=73278350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010831555.6A Active CN111915001B (zh) | 2020-08-18 | 2020-08-18 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230026006A1 (zh) |
CN (1) | CN111915001B (zh) |
WO (1) | WO2022037257A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111915001B (zh) * | 2020-08-18 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
CN112488305B (zh) * | 2020-12-22 | 2023-04-18 | 西北工业大学 | 一种神经网络存储装置及其可配置管理方法 |
CN113487020B (zh) * | 2021-07-08 | 2023-10-17 | 中国科学院半导体研究所 | 用于神经网络计算的参差存储结构及神经网络计算方法 |
CN114780910B (zh) * | 2022-06-16 | 2022-09-06 | 千芯半导体科技(北京)有限公司 | 用于稀疏化卷积计算的硬件***和计算方法 |
WO2024124808A1 (zh) * | 2022-12-14 | 2024-06-20 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列、稀疏卷积运算方法及相关设备 |
CN115982529B (zh) * | 2022-12-14 | 2023-09-08 | 北京登临科技有限公司 | 卷积运算结构、卷积运算阵列及相关设备 |
CN115640494B (zh) * | 2022-12-14 | 2023-03-21 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
CN117111881B (zh) * | 2023-07-26 | 2024-06-04 | 深存科技(无锡)有限公司 | 支持多输入多格式的混合精度乘加运算器 |
CN117057403B (zh) * | 2023-10-10 | 2024-02-13 | 苏州元脑智能科技有限公司 | 一种运算模块、基于脉冲神经网络的加速器及方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速*** |
CN109615067A (zh) * | 2019-03-05 | 2019-04-12 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络的数据调度方法及装置 |
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
CN110163042A (zh) * | 2018-04-13 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 图像识别方法及装置 |
CN110263925A (zh) * | 2019-06-04 | 2019-09-20 | 电子科技大学 | 一种基于fpga的卷积神经网络前向预测的硬件加速实现架构 |
CN111401532A (zh) * | 2020-04-28 | 2020-07-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种卷积神经网络推理加速器及加速方法 |
CN111431536A (zh) * | 2020-05-18 | 2020-07-17 | 深圳市九天睿芯科技有限公司 | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 |
CN111465943A (zh) * | 2017-12-12 | 2020-07-28 | 亚马逊技术股份有限公司 | 芯片上计算网络 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10803379B2 (en) * | 2017-12-12 | 2020-10-13 | Amazon Technologies, Inc. | Multi-memory on-chip computational network |
KR20200025200A (ko) * | 2018-08-29 | 2020-03-10 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 동작 방법 |
US11042797B2 (en) * | 2019-01-08 | 2021-06-22 | SimpleMachines Inc. | Accelerating parallel processing of data in a recurrent neural network |
CN111915001B (zh) * | 2020-08-18 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
-
2020
- 2020-08-18 CN CN202010831555.6A patent/CN111915001B/zh active Active
-
2021
- 2021-06-28 WO PCT/CN2021/102707 patent/WO2022037257A1/zh active Application Filing
-
2022
- 2022-08-25 US US17/895,811 patent/US20230026006A1/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
CN111465943A (zh) * | 2017-12-12 | 2020-07-28 | 亚马逊技术股份有限公司 | 芯片上计算网络 |
CN110163042A (zh) * | 2018-04-13 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 图像识别方法及装置 |
CN108665059A (zh) * | 2018-05-22 | 2018-10-16 | 中国科学技术大学苏州研究院 | 基于现场可编程门阵列的卷积神经网络加速*** |
CN109615067A (zh) * | 2019-03-05 | 2019-04-12 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种卷积神经网络的数据调度方法及装置 |
CN110033086A (zh) * | 2019-04-15 | 2019-07-19 | 北京异构智能科技有限公司 | 用于神经网络卷积运算的硬件加速器 |
CN110263925A (zh) * | 2019-06-04 | 2019-09-20 | 电子科技大学 | 一种基于fpga的卷积神经网络前向预测的硬件加速实现架构 |
CN111401532A (zh) * | 2020-04-28 | 2020-07-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种卷积神经网络推理加速器及加速方法 |
CN111431536A (zh) * | 2020-05-18 | 2020-07-17 | 深圳市九天睿芯科技有限公司 | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 |
Also Published As
Publication number | Publication date |
---|---|
WO2022037257A1 (zh) | 2022-02-24 |
US20230026006A1 (en) | 2023-01-26 |
CN111915001A (zh) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN112214726B (zh) | 运算加速器 | |
CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
CN108427990B (zh) | 神经网络计算***和方法 | |
KR102252137B1 (ko) | 계산 장치 및 방법 | |
CN110163353B (zh) | 一种计算装置及方法 | |
KR20190066473A (ko) | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 | |
CN111767986A (zh) | 一种基于神经网络的运算方法及装置 | |
CN115552523A (zh) | 使用存储器内处理的基于计数器的乘法 | |
CN113743599A (zh) | 一种卷积神经网络的运算装置及服务器 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN109902821B (zh) | 一种数据处理方法、装置及相关组件 | |
CN116888591A (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
Islam et al. | A new hardware-efficient VLSI-architecture of GoogLeNet CNN-model based hardware accelerator for edge computing applications | |
CN109697135B (zh) | 存储装置及方法、数据处理装置及方法、电子装置 | |
CN113642722A (zh) | 用于卷积计算的芯片及其控制方法、电子装置 | |
CN111198714B (zh) | 重训练方法及相关产品 | |
KR20210014897A (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
CN111382835A (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
CN112214727B (zh) | 运算加速器 | |
US11941371B2 (en) | Bit string accumulation | |
CN111222632B (zh) | 计算装置、计算方法及相关产品 | |
Kwon et al. | GPU-based ECC decode unit for efficient massive data reception acceleration | |
CN118278472A (zh) | 量化处理方法及相关装置 | |
CN115080503A (zh) | 一种针对fft基模块映射的脉动阵列可重构处理器 |
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 |