CN114648438A - 处理图像数据的设备、方法及可读存储介质 - Google Patents

处理图像数据的设备、方法及可读存储介质 Download PDF

Info

Publication number
CN114648438A
CN114648438A CN202011496888.4A CN202011496888A CN114648438A CN 114648438 A CN114648438 A CN 114648438A CN 202011496888 A CN202011496888 A CN 202011496888A CN 114648438 A CN114648438 A CN 114648438A
Authority
CN
China
Prior art keywords
unit
image data
computing device
matrix
data
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
CN202011496888.4A
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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui 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 Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202011496888.4A priority Critical patent/CN114648438A/zh
Publication of CN114648438A publication Critical patent/CN114648438A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Analysis (AREA)

Abstract

本发明涉及处理图像数据的装置、板卡、方法及可读存储介质,其中本发明的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。

Description

处理图像数据的设备、方法及可读存储介质
技术领域
本发明一般地涉及神经网络领域。更具体地,本发明涉及处理图像数据的设备、方法及可读存储介质。
背景技术
传统的CPU、GPU、DSP指令集基于最大化可编程性的目的,指令集设计中会采用了一条指令完成一个动作的设计,例如RISC(reduced instruction set computing)指令集或VLIW(very long instruction word)指令集等,这类指令统称为单操作指令,或称为单指令流单数据流(single instruction single data,SISD),指令部件每次仅译码一条指令,而且在执行时仅为操作部件提供一份数据。
由于单操作指令无法一次性地处理批量数据,因此针对CPU开发出SIMD(singleinstruction multiple data)指令集,利用一条指令操作多个数据,主要用于支持小碎数据的并行操作。以图像处理为例,图像常用的数据类型有RGB565、RGBA8888、YUV422等格式,这些格式的数据特点是一个像素点的一个分量用小于或等于8比特,而CPU的寄存器的单位存储一般是32比特或是64比特的,如果使用单操作指令来控制,处理一个8比特的像素点却要占用32比特或是64比特的寄存器空间,会造成资源浪费,而SIMD指令可以一次性地处理4个或8个像素点,同步完成4个或8个操作,充分利用寄存器的空间,计算效率也提升了数倍。
随着人工智能的迅猛发展,越来越多的人工智能专用处理器问世,而神经网络的各种应用场景(例如图像处理)都需要大量且重复的执行一种任务,像是数据搬运、矩阵乘、矩阵加等。如果仅利用单操作指令来控制,同样无法善用硬件资源,因此一种可执行多操作指令的人工智能处理方案是迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种处理图像数据的设备、方法及可读存储介质。
在一个方面中,本发明揭露一种利用神经网络处理图像数据的计算装置,连接至片外内存,所述计算装置包括共享存储单元、处理器核。共享存储单元用以自片外内存载入图像数据,处理器核包括运算模块及控制模块,其中运算模块包括前转数单元、矩阵运算单元及后转数单元,控制模块用以根据多操作指令,将图像数据输入至前转数单元、矩阵运算单元及后转数单元进行运算,以产生运算结果,最后共享存储单元存储运算结果。
在另一个方面,本发明揭露一种集成电路装置,包括前述计算装置,亦揭露一种板卡,包括根据前述的集成电路装置。
在另一个方面,本发明揭露一种利用计算装置处理图像数据的方法,所述计算装置包括前转数单元、矩阵运算单元及后转数单元。所述方法包括:自片外内存载入图像数据;根据多操作指令,将图像数据输入至前转数单元、矩阵运算单元及后转数单元进行运算,以产生运算结果;以及将运算结果存储至片外内存。
在另一个方面,本发明揭露一种计算机可读存储介质,其上存储有处理图像数据的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行前述的方法。
本发明利用多操作指令处理存在数据依赖的运算序列,批量处理图像数据,不需要额外的处理器结构设计或者编译优化技术来解决数据依赖问题,大大提高了运算序列的执行速度。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出本发明实施例的板卡的结构图;
图2是示出本发明实施例的集成电路装置的结构图;
图3是示出本发明实施例的计算装置的内部结构示意图;
图4是示出本发明实施例的处理器核的内部结构示意图;
图5是示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图;
图6是示出图像数据自DRAM载入至SRAM再载入至NRAM的示意图;
图7是示出本发明另一实施例的处理器核的内部结构示意图;
图8是示出本发明另一实施例的处理器核的内部结构示意图;
图9是示出本发明另一个实施例处理图像数据的流程图;
图10是示出本发明另一个实施例处理图像数据的流程图;以及
图11是示出本发明另一个实施例处理图像数据的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
图1示出本发明实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种***级芯片(System on Chip,SoC),或称片上***,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学***台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外内存、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和DRAM 204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
DRAM 204用以存储待处理的数据,为片外内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,计算装置201作为一个片上***,其包括多个集群(cluster),每个集群又包括多个处理器核,换言之,计算装置201是以片上***-集群-处理器核的层次所构成的。
以片上***的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的DRAM204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本发明的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。
以集群的层级来看,如图3所示,每个集群305包括多个处理器核(IPU core)306及一个存储核(MEM core)307。
处理器核306在图中示例性地展示4个,本发明不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)411及指令译码单元(instructiondecode unit,IDU)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
运算模块42包括向量运算单元421、前转数单元422及矩阵运算单元423及后转数单元424。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;前转数单元422用以将浮点数转换成定点数,矩阵运算单元423基于定点数,负责深度学习算法的核心计算,即矩阵乘、矩阵加及卷积;后转数单元424用以将矩阵运算结果从定点数再转换回浮点数。
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)431、权值存储单元(weight RAM,WRAM)432、输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)433、搬运直接内存访问模块(move direct memoryaccess,MVDMA)434。NRAM431用以存储供处理器核306计算的特征图及计算后的中间结果;WRAM432则用以存储深度学习网络的权值;IODMA 433通过广播总线309控制NRAM 431/WRAM432与DRAM 204的访存;MVDMA 434则用以控制NRAM 431/WRAM 432与SRAM 308的访存。
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与DRAM 204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
存储核307包括共享存储单元(SRAM)308、广播总线309、集群直接内存访问模块(cluster direct memory access,CDMA)310及全局直接内存访问模块(global directmemory access,GDMA)311。SRAM 308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向DRAM 204获得,而是经SRAM 308在处理器核306间中转,存储核307只需要将复用的数据从SRAM 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线309、CDMA 310及GDMA 311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与DRAM 204的数据传输。以下将分别说明。
广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从SRAM 308传输到所有处理器核306的通信方式,属于多播的一种特例。
CDMA 310用以控制在同一个计算装置201内不同集群305间的SRAM 308的访存。图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明CDMA310的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
首先,处理器核0发送单播写请求将数据写入本地的SRAM 0中,CDMA 0作为主(master)端,CDMA 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址AW和写数据W,将数据传送到集群1的SRAM 1中,接着从端发送写响应B作为回应,最后集群1的处理器核1发送单播读请求将数据从SRAM 1中读取出来。
回到图3,GDMA 311与外部存储控制器301协同,用以控制集群305的SRAM 308到DRAM 204的访存,或是将数据自DRAM 204读取至SRAM 308中。从前述可知,DRAM 204与NRAM431或WRAM 432间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM 433直接联系DRAM 204与NRAM 431或WRAM 432;第二个渠道是先经由GDMA311使得数据在DRAM 204与SRAM 308间传输,再经过MVDMA 434使得数据在SRAM 308与NRAM 431或WRAM 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 204与NRAM 431或WRAM 432间的通信通过第二个渠道可能更有效率。本发明的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 311的功能和IODMA 433的功能可以整合在同一部件中。本发明为了方便描述,将GDMA 311和IODMA 433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本发明类似,即属于本发明的保护范围。进一步地,GDMA 311的功能、IODMA 433的功能、CDMA 310的功能、MVDMA 434的功能亦可以由同一部件来实现。
由于神经网络的图像处理算法的数据流与运算流程较为固定,涉及到大量重复性的操作,本发明的指令集支持一条指令完成多次数据搬运或/及多次数据计算操作,也就是利用多操作指令批处理并行数据。
本发明的一个实施例是一种利用神经网络处理图像数据的***,此***具有如图1至图4所示的各种装置。在处理图像数据时,需要在DRAM204与SRAM 308间,以及在SRAM308与NRAM 431/WRAM 432间搬运大量数据,并进行同质性高的运算,例如矩阵乘、矩阵加等,如果使用单操作指令,一次处理一个数据,会耗去许多输入/输出、搬运和运算的时间,此实施例在指令集中设定多操作指令,批处理同类任务,使图像处理更为效率。
以计算装置201处理矩阵加法或乘法为例,计算装置201首先需要从DRAM 204将图像数据载入至SRAM 308中。图像数据存储在DRAM 204中时,通常会占据一整块完整存储空间,图6示出图像数据自DRAM 204载入至SRAM 308再载入至NRAM 431的示意图,图像数据占用了DRAM204中PX×PY的存储空间,该空间连续且完整。如果用户以单操作指令载入此图像数据时,用户需要编写PX×PY个单操作指令,每个单操作指令控制一个地址的数据的搬移。
此实施例利用一个多操作指令,一次性地将整个图像数据载入至SRAM 308中,也就是一个指令便控制PX×PY大小的图像数据载入至SRAM 308中。由于多操作指令不涉及个别地址的数据搬移,故使用多操作指令时,图像数据会被整块的载入至SRAM 308中的PX×PY存储空间。假设SRAM 308不存在完整PX×PY的存储空间,但有2块不连续的空间,例如其中一块的存储空间为中PX1×PY的存储空间,另一块的存储空间为中PX2×PY的存储空间,PX1+PX2=PX,则多操作指令无法完成任务,即多操作指令无法将PX×PY的图像数据拆分成PX1×PY的图像数据与PX2×PY的图像数据分开存储。
在计算该图像数据时,存储在SRAM 308的图像数据需要被拆分成多个子图,分别传送至处理器核306进行运算。以每个集群305包括4个处理器核306为例,图像数据会被拆分成4个子图,如图6所示,分别发送至每个处理器核306的NRAM 431中。为完成此操作,处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得广播总线309一次性地搬运一个子图到存储模块43的NRAM 431中,并利用同样的方式将相对应的权值搬运至WRAM 432中。
不论是矩阵乘或是矩阵加的操作,子图均需经过前转数单元422转换成定点数,再经过矩阵运算单元423对子图数据与权值进行矩阵乘或矩阵加的运算,最后将定点数的运算结果输入至后转数单元424转换回浮点数的运算结果。既然是同质性的操作过程,当子图存储在连续且完整的NRAM 431的存储空间中,且权值亦存储在连续且完整的WRAM 432的存储空间中时,控制模块41可以再根据另一个多操作指令,使得前转数单元422自NRAM 431读取子图数据,转换成定点数,再经过矩阵运算单元423与权值进行矩阵乘或矩阵加的运算,并将定点数的运算结果输入至后转数单元424转换回浮点数的运算结果。
接着,处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得MVDMA 434一次性地搬运NRAM 431上的运算结果到SRAM 308中,这些运算结果被连续且完整的存储在SRAM 308。最后,处理装置203再利用多操作指令一次性地将这些运算结果自SRAM 308存回DRAM 204中,以完成执行矩阵乘或矩阵加的任务。
本发明的另一个实施例是一种利用神经网络处理图像数据的***,此***具有如图1至图3所示的各种装置。而此实施例处理器核306的结构如图7所示,与图4的结构不同处在于,此实施例的运算模块42还包括激活单元701,用以实现一个激活函数,以激活矩阵运算单元423输出的中间结果,再将激活后的中间结果由后转数单元424转换回浮点数。
同样以矩阵加法或乘法为例,计算装置201利用多操作指令一次性地将整个图像数据从DRAM 204载入至SRAM 308中,也就是一个指令便控制PX×PY大小的图像数据载入至SRAM 308中。在计算该图像数据时,存储在SRAM 308的图像数据被拆分成多个子图,分别传送至多个处理器核306进行运算,处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得广播总线309一次性地搬运一个子图到存储模块43的NRAM 431中,并利用同样的方式将相对应的权值搬运至WRAM 432中。
当子图存储在连续且完整的NRAM 431的存储空间中,且权值亦存储在连续且完整的WRAM 432的存储空间中时,控制模块41可以再根据另一个多操作指令,使得前转数单元422自NRAM 431读取子图数据,转换成定点数,再经过矩阵运算单元423对子图数据与权值进行矩阵乘或矩阵加的运算,激活单元701激活矩阵运算单元423输出的中间结果,并将激活后的中间结果输入至后转数单元424转换回浮点数的运算结果。
接着,处理装置203可以利用单操作指令逐个地址搬运NRAM 431上的运算结果到SRAM 308中,或是利用多操作指令使得MVDMA 434一次性地搬运NRAM 431上的运算结果到SRAM 308中,这些运算结果被连续且完整的存储在SRAM 308。最后,处理装置203利用多操作指令一次性地将这些运算结果自SRAM 308存回DRAM 204中,以完成执行矩阵乘或矩阵加的任务。
本发明的另一个实施例是一种利用神经网络处理图像数据的***,此***具有如图1至图3所示的各种装置。而此实施例处理器核306的结构如图8所示,与图7的结构不同处在于,此实施例的运算模块42还包括批标准化单元801,用以标准化激活单元701所产生的激活结果,再将批标准化的中间结果由后转数单元424转换回浮点数。
同样以矩阵加法或乘法为例,计算装置201一次性地将整个图像数据从DRAM 204载入至SRAM 308中。在计算该图像数据时,存储在SRAM308的图像数据被拆分成多个子图,分别传送至多个处理器核306进行运算。处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得广播总线309一次性地搬运一个子图到存储模块43的NRAM 431中,并利用同样的方式将相对应的权值搬运至WRAM 432中。
当子图存储在连续且完整的NRAM 431的存储空间中,且权值亦存储在连续且完整的WRAM 432的存储空间中时,控制模块41可以再根据另一个多操作指令,使得前转数单元422自NRAM 431读取子图数据,转换成定点数,再经过矩阵运算单元423对子图数据与权值进行矩阵乘或矩阵加的运算,激活单元701激活矩阵运算单元423输出的中间结果,批标准化单元801标准化激活单元701所产生的激活结果,并将批标准化的中间结果输入至后转数单元424转换回浮点数的运算结果。
接着,处理装置203可以利用单操作指令逐个地址搬运NRAM 431上的运算结果到SRAM 308中,或是利用多操作指令使得MVDMA 434一次性地搬运NRAM 431上的运算结果到SRAM 308中,这些运算结果被连续且完整的存储在SRAM 308。最后,处理装置203利用多操作指令一次性地将这些运算结果自SRAM 308存回DRAM 204中,以完成执行矩阵乘或矩阵加的任务。
本发明的另一个实施例是一种利用神经网络处理图像数据的方法,此方法是基于如图1至图4所示的各种装置来实现。图9示出此实施例处理矩阵加法或乘法时的流程图。
在步骤901中,自DRAM 204载入图像数据。此实施例利用一个多操作指令,一次性地将整个图像数据载入至SRAM 308中,也就是一个指令便控制PX×PY大小的图像数据载入至SRAM 308中,图像数据会被整块的载入至SRAM 308中的PX×PY存储空间。
在步骤902中,将图像数据拆分成多个子图。在计算该图像数据时,存储在SRAM308的图像数据需要被拆分成多个子图,分别传送至多个处理器核306进行运算。为完成此操作,处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得广播总线309一次性地搬运一个子图到存储模块43的NRAM 431中,并利用同样的方式将相对应的权值搬运至WRAM 432中。
在步骤903中,根据多操作指令,将图像数据输入至前转数单元、矩阵运算单元及后转数单元进行运算,以产生运算结果。当子图存储在连续且完整的NRAM 431的存储空间中,且权值亦存储在连续且完整的WRAM432的存储空间中时,控制模块41再根据另一个多操作指令,使得前转数单元422自NRAM 431读取子图数据,转换成定点数,再经过矩阵运算单元423对图像数据与权值进行矩阵乘或矩阵加的运算,并将定点数的运算结果输入至后转数单元424转换回浮点数的运算结果。
在步骤904中,将浮点数的运算结果搬运至SRAM 308。处理装置203可以利用单操作指令逐个地址搬运NRAM 431上的运算结果到SRAM 308中,或是利用多操作指令使得MVDMA 434一次性地搬运NRAM 431上的运算结果到SRAM 308中,这些运算结果被连续且完整的存储在SRAM308。
在步骤905中,将运算结果存储至DRAM 204。处理装置203利用多操作指令一次性地将这些运算结果自SRAM 308存回DRAM 204中,以完成执行矩阵乘或矩阵加的任务。
本发明的另一个实施例是一种利用神经网络处理图像数据的方法,此方法是基于如图1至图3及图7所示的各种装置来实现。图10示出此实施例处理矩阵加法或乘法时的流程图。
在步骤1001中,自DRAM 204载入图像数据。此实施例利用一个多操作指令,一次性地将整个图像数据载入至SRAM 308中,也就是一个指令便控制PX×PY大小的图像数据载入至SRAM 308中,图像数据会被整块的载入至SRAM 308中的PX×PY存储空间。
在步骤1002中,将图像数据拆分成多个子图。在计算该图像数据时,存储在SRAM308的图像数据需要被拆分成多个子图,分别传送至处理器核306进行运算。为完成此操作,处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得广播总线309一次性地搬运一个子图到存储模块43的NRAM 431中,并利用同样的方式将相对应的权值搬运至WRAM 432中。
在步骤1003中,根据多操作指令,将图像数据输入至前转数单元、矩阵运算单元、激活单元及后转数单元进行运算,以产生运算结果。当子图存储在连续且完整的NRAM 431的存储空间中,且权值亦存储在连续且完整的WRAM 432的存储空间中时,控制模块41可以再根据另一个多操作指令,使得前转数单元422自NRAM 431读取子图数据,转换成定点数,再经过矩阵运算单元423对子图数据与权值进行矩阵乘或矩阵加的运算,激活单元701激活矩阵运算单元423输出的中间结果,并将激活后的中间结果输入至后转数单元424转换回浮点数的运算结果。
在步骤1004中,将浮点数的运算结果搬运至SRAM 308。处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得MVDMA 434一次性地搬运NRAM 431上的运算结果到SRAM 308中,这些运算结果被连续且完整的存储在SRAM 308。
在步骤1005中,将运算结果存储至DRAM 204。处理装置203利用多操作指令一次性地将这些运算结果自SRAM 308存回DRAM 204中,以完成执行矩阵乘或矩阵加的任务。
本发明的另一个实施例是一种利用神经网络处理图像数据的方法,此方法是基于如图1至图3及图8所示的各种装置来实现。图11示出此实施例处理矩阵加法或乘法时的流程图。
在步骤1101中,自DRAM 204载入图像数据。此实施例利用一个多操作指令,一次性地将整个图像数据载入至SRAM 308中,也就是一个指令便控制PX×PY大小的图像数据载入至SRAM 308中,图像数据会被整块的载入至SRAM 308中的PX×PY存储空间。
在步骤1102中,将图像数据拆分成多个子图。在计算该图像数据时,存储在SRAM308的图像数据需要被拆分成多个子图,分别传送至处理器核306进行运算。为完成此操作,处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得广播总线309一次性地搬运一个子图到存储模块43的NRAM 431中,并利用同样的方式将相对应的权值搬运至WRAM 432中。
在步骤1103中,根据多操作指令,将图像数据输入至前转数单元、矩阵运算单元、激活单元、批标准化单元及后转数单元进行运算,以产生运算结果。当子图存储在连续且完整的NRAM 431的存储空间中,且权值亦存储在连续且完整的WRAM 432的存储空间中时,控制模块41可以再根据另一个多操作指令,使得前转数单元422自NRAM 431读取子图数据,转换成定点数,再经过矩阵运算单元423对子图数据与权值进行矩阵乘或矩阵加的运算,激活单元701激活矩阵运算单元423输出的中间结果,批标准化单元801标准化激活单元701所产生的激活结果,并将批标准化的中间结果输入至后转数单元424转换回浮点数的运算结果。
在步骤1104中,将浮点数的运算结果搬运至SRAM 308。处理装置203可以利用单操作指令逐个地址搬运,或是利用多操作指令使得MVDMA 434一次性地搬运NRAM 431上的运算结果到SRAM 308中,这些运算结果被连续且完整的存储在SRAM 308。
在步骤1105中,将运算结果存储至DRAM 204。处理装置203利用多操作指令一次性地将这些运算结果自SRAM 308存回DRAM 204中,以完成执行矩阵乘或矩阵加的任务。
本发明另一个实施例为一种计算机可读存储介质,其上存储有处理图像数据的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如前所述各实施例的方法。在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明利用多操作指令来处理存在数据依赖的运算序列,像是图形处理中的转数+矩阵乘/加+转数、转数+矩阵乘/加+激活+转数、或转数+矩阵乘/加+激活+批标准化+转数等固定运算,不需要额外的处理器结构设计或者编译优化技术来解决数据依赖问题,具有处理器性能功耗面积收益的优势,大大提高了运算序列(算法)的执行速度。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1、一种利用神经网络处理图像数据的计算装置,连接至片外内存,所述计算装置包括:共享存储单元,用以自所述片外内存载入所述图像数据;以及处理器核,包括:运算模块,包括前转数单元、矩阵运算单元及后转数单元;控制模块,用以根据多操作指令,将所述图像数据输入至所述前转数单元、所述矩阵运算单元及所述后转数单元进行运算,以产生运算结果;其中,所述共享存储单元存储所述运算结果。
条款A2、根据条款A1所述的计算装置,其中所述前转数单元将所述图像数据由浮点数转换成定点数。
条款A3、根据条款A1所述的计算装置,其中所述处理器核还包括存储模块,用以自所述共享存储单元载入所述图像数据,所述前转数单元自所述存储模块读取所述图像数据。
条款A4、根据条款A3所述的计算装置,其中所述运算模块还包括激活单元,用以激活所述矩阵运算单元输出的中间结果,所述后转数单元将所述激活结果由定点数转换成浮点数。
条款A5、根据条款A3所述的计算装置,其中所述运算模块还包括:激活单元,用以激活所述矩阵运算单元输出的中间结果;以及批标准化单元,用以标准化所述激活结果;其中,所述后转数单元将所述标准化结果由定点数转换成浮点数。
条款A6、根据条款A1所述的计算装置,其中所述矩阵运算单元执行矩阵乘任务及矩阵加任务其中之一。
条款A7、一种集成电路装置,包括根据条款A1至6任一项所述的计算装置。
条款A8、一种板卡,包括根据条款A7所述的集成电路装置。
条款A9、一种利用计算装置处理图像数据的方法,所述计算装置包括前转数单元、矩阵运算单元及后转数单元,所述方法包括:自片外内存载入所述图像数据;根据多操作指令,将所述图像数据输入至所述前转数单元、所述矩阵运算单元及所述后转数单元进行运算,以产生运算结果;以及将所述运算结果存储至所述片外内存。
条款A10、一种计算机可读存储介质,其上存储有处理图像数据的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行条款A9所述的方法。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种利用神经网络处理图像数据的计算装置,连接至片外内存,所述计算装置包括:
共享存储单元,用以自所述片外内存载入所述图像数据;以及
处理器核,包括:
运算模块,包括前转数单元、矩阵运算单元及后转数单元;
控制模块,用以根据多操作指令,将所述图像数据输入至所述前转数单元、所述矩阵运算单元及所述后转数单元进行运算,以产生运算结果;
其中,所述共享存储单元存储所述运算结果。
2.根据权利要求1所述的计算装置,其中所述前转数单元将所述图像数据由浮点数转换成定点数。
3.根据权利要求1所述的计算装置,其中所述处理器核还包括存储模块,用以自所述共享存储单元载入所述图像数据,所述前转数单元自所述存储模块读取所述图像数据。
4.根据权利要求3所述的计算装置,其中所述运算模块还包括激活单元,用以激活所述矩阵运算单元输出的中间结果,所述后转数单元将所述激活结果由定点数转换成浮点数。
5.根据权利要求3所述的计算装置,其中所述运算模块还包括:
激活单元,用以激活所述矩阵运算单元输出的中间结果;以及
批标准化单元,用以标准化所述激活结果;
其中,所述后转数单元将所述标准化结果由定点数转换成浮点数。
6.根据权利要求1所述的计算装置,其中所述矩阵运算单元执行矩阵乘任务及矩阵加任务其中之一。
7.一种集成电路装置,包括根据权利要求1至6任一项所述的计算装置。
8.一种板卡,包括根据权利要求7所述的集成电路装置。
9.一种利用计算装置处理图像数据的方法,所述计算装置包括前转数单元、矩阵运算单元及后转数单元,所述方法包括:
自片外内存载入所述图像数据;
根据多操作指令,将所述图像数据输入至所述前转数单元、所述矩阵运算单元及所述后转数单元进行运算,以产生运算结果;以及
将所述运算结果存储至所述片外内存。
10.一种计算机可读存储介质,其上存储有处理图像数据的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求9所述的方法。
CN202011496888.4A 2020-12-17 2020-12-17 处理图像数据的设备、方法及可读存储介质 Pending CN114648438A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011496888.4A CN114648438A (zh) 2020-12-17 2020-12-17 处理图像数据的设备、方法及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011496888.4A CN114648438A (zh) 2020-12-17 2020-12-17 处理图像数据的设备、方法及可读存储介质

Publications (1)

Publication Number Publication Date
CN114648438A true CN114648438A (zh) 2022-06-21

Family

ID=81990797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011496888.4A Pending CN114648438A (zh) 2020-12-17 2020-12-17 处理图像数据的设备、方法及可读存储介质

Country Status (1)

Country Link
CN (1) CN114648438A (zh)

Similar Documents

Publication Publication Date Title
CN112799726B (zh) 数据处理装置、方法及相关产品
CN111488976B (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN116185942A (zh) 数据处理方法、装置、存储介质以及电子设备
CN109711540B (zh) 一种计算装置及板卡
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
CN114648438A (zh) 处理图像数据的设备、方法及可读存储介质
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
CN114647442A (zh) 根据指令集运行的设备
CN115437693A (zh) 根据多操作指令及单操作指令运行的计算装置
CN112766475A (zh) 处理部件及人工智能处理器
CN114692844A (zh) 数据处理装置、数据处理方法及相关产品
WO2023236929A1 (zh) 基于指令读取数据中的目标数据的方法及其设备
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113791996B (zh) 集成电路装置、电子设备、板卡和计算方法
CN112232498B (zh) 一种数据处理装置、集成电路芯片、电子设备、板卡和方法
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN114429194A (zh) 处理神经网络计算的装置、板卡、方法及可读存储介质
WO2022135599A1 (zh) 融合分支结构的装置、板卡、方法及可读存储介质
CN118277305A (zh) 降低运算耗时的设备与方法
CN114444677A (zh) 进行稀疏化训练的装置、板卡、方法及可读存储介质
CN114692846A (zh) 数据处理装置、数据处理方法及相关产品
CN115905104A (zh) 用于片上***的方法及其相关产品
CN114692845A (zh) 数据处理装置、数据处理方法及相关产品
CN113792867A (zh) 运算电路、芯片和板卡
CN115599738A (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