CN111428870A - 信息处理装置及存储器控制方法 - Google Patents

信息处理装置及存储器控制方法 Download PDF

Info

Publication number
CN111428870A
CN111428870A CN202010021533.3A CN202010021533A CN111428870A CN 111428870 A CN111428870 A CN 111428870A CN 202010021533 A CN202010021533 A CN 202010021533A CN 111428870 A CN111428870 A CN 111428870A
Authority
CN
China
Prior art keywords
memory
processing
weight data
unit
weight
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.)
Granted
Application number
CN202010021533.3A
Other languages
English (en)
Other versions
CN111428870B (zh
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Publication of CN111428870A publication Critical patent/CN111428870A/zh
Application granted granted Critical
Publication of CN111428870B publication Critical patent/CN111428870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/64Computer-aided capture of images, e.g. transfer from script file into camera, check of taken image quality, advice or proposal for image composition or decision on when to take image

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)

Abstract

本发明提供了一种信息处理装置及存储器控制方法。控制单元控制向第一存储器和第二存储器写入权重数据并控制从第一存储器和第二存储器中读出权重数据。控制单元在第一操作和第二操作之间切换操作,第一操作,其中处理单元从第一存储器中读出第一权重数据并使用第一权重数据进行卷积运算处理,同时并行地向第二存储器写入第二权重数据,以及第二操作,其中处理单元从第一存储器和第二存储器两者中读出第一权重数据并使用第一权重数据进行卷积运算处理。

Description

信息处理装置及存储器控制方法
技术领域
本发明涉及一种信息处理装置及存储器控制方法,特别地,涉及在诸如使用神经网络的模式识别处理等处理中的存储器控制。
背景技术
在包括诸如图像识别、语音识别等模式识别的各种领域中,以神经网络为代表的分层计算方法已经被广泛使用。因此,提出了一种以高性能低成本方式实现神经网络的方法。
图5示出了卷积神经网络(以下简称CNN)的示例,作为神经网络的示例。图5示出了输入层501,第一层507的特征面502a至502c,第二层508的特征面503a至503c,第三层509的特征面504a至504c,第四层510的特征面505a至505c,以及第五层的特征面506。输入层501对应于CNN的输入数据,并且例如对应于当要对图像数据进行CNN运算时预定大小的图像数据。各个特征面是与从预定特征提取运算(卷积运算和非线性处理)获得的处理结果相对应的数据面。由于各个特征面是图像数据的处理结果,因此可以将其表示为一个面。附图标记524、525a至525c,526a至526c,527a至527c以及528a至528c表示在一次卷积运算中参照的区域。另外,附图标记511a至511c,512a至514c,515a至517c,518a至520c以及521至523表示在卷积运算中使用的二维权重(内核)(kernels)。CNN可进一步包括更多特征面和层。
可以通过进行积-和运算来实现内核大小为columnSize×rowSize的二维卷积运算,如下所示:
Figure BDA0002360929190000011
其中,input(x,y)是二维坐标(x,y)的参考像素值,output(x,y)是等式(1)中的二维坐标(x,y)的运算结果。Weight(column,row)是在一次卷积运算中参照的区域中位置(列,行)的权重系数。columnSize和rowSize分别是垂直方向的内核大小和水平方向的内核大小。
以这种方式,在CNN运算中重复进行在先前层的各个特征面的存储器上的写入操作,在各个内核的存储器上的写入操作,使用从各个存储器中读出的数据的积-和运算以及从积-和运算获得的后续层的各个特征面的输出。
近年来,由于深度学习技术的发展,神经网络的规模正在增加。为了减小用于读取各个内核的缓冲存储器的大小,可以根据CNN运算的进展来切换缓冲存储器中的各个内核。特别地,在为了加速CNN运算而使用硬件加速器的情况下,各个所需的内核可以从加速器外部的存储器获得并且与保持在加速器内部的缓冲存储器中的各个内核进行切换。这种配置可以减小加速器的电路规模。
日本专利特开No.2018-147182提出了一种根据CNN的网络配置来切换内核缓冲器处理方法的配置,其目的在于减小用于读取各个特征面和内核的缓冲存储器的大小。例如,日本专利特开No.2018-147182提出了在缓冲存储器保持多层内核的环形缓冲方法与缓冲存储器保持一层内核的帧缓冲方法之间切换。更具体地,针对每一层切换上述两种处理方法,以使得用于存储各个特征面的存储器和用于存储各个权重的存储器的总和最小。
发明内容
根据本发明的实施例,一种信息处理装置包括:第一存储器和第二存储器;控制单元,其被配置为控制向第一存储器和第二存储器写入要用于神经网络中卷积运算处理的权重数据,并控制从第一存储器和第二存储器中读出要用于卷积运算处理的权重数据;以及处理单元,其被配置为通过使用从第一存储器和第二存储器中的至少一个读出的权重数据进行卷积运算处理,其中,控制单元还被配置为在以下操作之间切换操作:第一操作,其中处理单元从第一存储器中读出第一权重数据并使用第一权重数据进行卷积运算处理,同时并行地向第二存储器写入第二权重数据,以及第二操作,其中处理单元从第一存储器和第二存储器两者中读出第一权重数据并使用第一权重数据进行卷积运算处理。
根据本发明又一实施例,一种包括第一存储器和第二存储器的信息处理装置的存储器控制方法,包括:控制将用于神经网络中的卷积运算处理的权重数据写入第一存储器和第二存储器,以及从第一存储器和第二存储器中读出用于卷积运算处理的权重数据,以便于在以下操作之间切换操作:第一操作,从第一存储器中读出第一权重数据并使用第一权重数据进行卷积运算处理,同时并行地向第二存储器写入第二权重数据,以及第二操作,从第一存储器和第二存储器两者中读出第一权重数据并使用第一权重数据进行卷积运算处理。
通过以下参照附图对示例性实施例的描述,本发明的其它特征将变得清楚。
附图说明
图1例示了用于使用神经网路进行处理的配置框图。
图2例示了进行识别处理的信息装置的配置框图。
图3A和图3B例示了模式识别处理结果的视图。
图4示出了根据实施例的模式识别处理的过程的流程图。
图5例示了CNN的配置视图。
图6例示了CNN的运算硬件的配置框图。
图7A至图7D示出了实施例中的权重存储单元的使用状态的视图。
图8A和图8B是用于说明CNN处理方法的视图。
图9示出了实施例中使用的网络信息的表。
图10示出了实施例中使用的网络信息的表。
图11示出了实施例中使用的网络信息的表。
图12示出了另一实施例中使用的网络信息的表。
具体实施方式
在切换缓冲存储器的内核的配置中,由于将各个内核传送到缓冲存储器所需的时间,CNN运算可能延迟。为了掩盖这样的内核传送时间,可以在缓冲存储器中提供两个可以同时访问的区域,并且从一个区域中读出要在该运算中使用的内核,并行地在另一区域写入要在下一运算中使用的另一个内核。
然而,与缓冲存储器仅具有一个不能同时访问的区域的情况相比,这种方法的问题在于电路规模将增加,因为它需要两倍的存储容量。特别是,如在日本专利特开No.2018-147182中那样,在采用缓冲存储器保持多个层的内核的缓冲方法时,保持内核所需的存储器容量将增加。另一方面,如果减小用于保持内核的缓冲存储器的大小以抑制电路大小,则能够被处理的CNN的规模将受到限制。
本发明的实施例可以在根据神经网络抑制信息处理装置进行运算所需的存储量的同时提高运算速度。
在下文中,将参考附图详细描述实施例。请注意,以下实施例并非旨在限制要求保护的发明的范围。在实施例中描述了多个特征,但是并不限制要求所有这样的特征的发明,并且可以适当地组合多个这样的特征。此外,在附图中,相同的附图标记表示相同或相似的构造,并且省略其重复描述。
【第一实施例】
图1示出了根据第一实施例使用神经网络进行处理的信息处理装置的系统配置的示例。图2示出了信息处理装置的系统配置的示例,该信息处理装置包括作为根据第一实施例的信息处理装置的识别处理单元207并且进行模式识别。在本实施例中使用的模式识别的类型没有特别限制。例如,模式识别包括检测图像数据中的预定模式(例如,物体)的处理和检测语音数据中的预定模式(例如,单词)的处理。在下文中将描述对图像数据进行模式识别的示例。
首先,将描述根据图2的信息处理装置的配置。图像输入单元201获得识别目标数据。例如,图像输入单元201可以获得模式识别目标图像。例如,图像输入单元201可以是图像捕获装置。例如,图像输入单元201可以包括光学系统,光电转换设备,控制光电转换设备的驱动电路,AD转换器,进行各种图像校正处理的信号处理电路,帧缓冲器等。作为光电转换装置,可以例举为CCD(电荷耦合设备),CMOS(互补金属氧化物半导体)传感器等。另外,图像输入单元201可以是从图像捕获装置或存储设备获得图像数据的接口。
预处理单元202进行预处理以有效地进行模式识别处理。例如,可以进行诸如颜色转换处理,对比度校正处理等的图像数据转换处理作为预处理。在本实施例中,预处理单元202包括用于进行图像数据转换处理的硬件。另一方面,CPU 204可以根据程序进行这样的转换处理。从图像输入单元201输入的图像数据在预处理单元202中被处理并且随后被存储在RAM 206中。
显示单元203是诸如CRT、液晶显示器等的显示设备。显示单元203可以是经由电缆等连接到图2所示的信息处理装置的外部显示器。显示单元203可以显示图像和模式识别结果。显示单元203可以显示示出模式识别结果的图像,并且可以显示例如当要进行物体检测时通过将指示检测结果的框叠加在输入图像上而获得的图像。
识别处理单元207使用神经网络进行处理。稍后将详细描述识别处理单元207的更具体的配置。在本实施例中,识别处理单元207生成特征信息,该特征信息是通过将由图像输入单元201获得并由预处理单元202处理的识别目标数据输入到神经网络而获得的。以这种方式,识别处理单元207可以对识别目标数据进行分层特征提取处理。
CPU 204控制整个信息处理系统的操作。CPU 204还可以对由识别处理单元207获得的处理结果进行后处理。例如,CPU 204可以按照程序运行通过参照所获得的特征信息来生成并输出指示在识别目标数据中识别出的模式的信息。作为更具体的示例,识别处理单元207可以在识别目标图像数据中的各个位置处生成指示是否存在特定模式(例如,诸如人体,面部等之类的物体)的信息或者指示特定模式大小的信息。在这种情况下,CPU 204可以生成指示图像数据中特定模式(例如,物体)的位置或大小的信息作为模式识别结果。当然,根据本实施例的信息处理装置还可以具有用于生成指示模式的信息的专用硬件。
ROM 205和RAM 206向CPU 204提供执行处理所需的程序、数据、工作区域等。在将处理所需的程序存储在ROM 205中的情况下,将该程序临时加载至RAM 206,并且由CPU 204执行该程序。根据本实施例的信息处理装置可以包括存储这些程序或数据的存储介质,来替代ROM 205。RAM 206除了处理所需的数据以外,还可以存储经过预处理单元202进行了预处理的图像数据、来自识别处理单元207的处理结果、CNN网络信息(稍后描述),各个在CNN运算中要使用的内核(权重数据)等。总线208将信息处理装置的组件彼此连接。
下文将详细描述识别处理单元207的配置。在本实施例中,识别处理单元207使用CNN来进行处理。下面将描述识别处理单元207使用具有图5所示的配置的CNN的情况。CNN中使用的各个权重都对应一个二维内核。在下面的示例中,要使用的内核大小为3×3,各个元素对应于一个字节。另外,由于各个特征面与相邻层的所有特征面相关联,因此通过使用先前层的所有特征面来计算给定的特征面。
在CNN运算中,基于像素扫描多个内核来重复进行积-和运算。各个内核可以通过使用诸如反向传播学习等方法来预定。各个特征面还可以通过对积-和运算的结果进行非线性转换来计算。图6是根据本实施例的可以执行CNN运算的硬件的配置的示例,并且处理单元106(将在后面描述)可以具有图6所示的配置。通过使用作为先前层的第一层507的三个特征面502a至502c来计算图5所示的特征面503a。在这种情况下,处理单元601首先对各个特征面502a至502c执行卷积运算。接下来,加法单元602将对各个特征面502a至502c进行的卷积运算所获得的结果进行累加。最后,转换单元603使用ReLU(线性整流函数)函数、逻辑函数等对累加结果进行非线性转换处理。通过对整个特征面的各个像素进行扫描并进行处理来计算特征面503a。请注意,在本说明书中,将使用给定层的特征面的处理称为对层进行处理并且将在处理中使用的内核称为层的内核。
图1是示出识别处理单元207的配置的框图。第一权重存储单元103(第一存储器)和第二权重存储单元104(第二存储器)是识别处理单元207中包括的用于存储内核的缓冲存储器。在本实施例中,可以同时访问第一权重存储单元103和第二权重存储单元104。另一方面,在本实施例中,在向第一权重存储单元103写入数据的同时不能从第一权重存储单元103读取数据,并且在从第一权重存储单元103读取数据的同时不能向第一权重存储单元103写入数据。第二权重存储单元104也以类似的方式操作。在本实施例中,第一权重存储单元103和第二权重存储单元104是不同的存储设备,更具体地,是不同存储设备的存储区域。
在本实施例中,根据内核大小设置第一权重存储单元103和第二权重存储单元104中的各个的数据宽度,并且为9字节。此外,根据帧缓冲法对第二层508至第四层510上的处理中,根据每层的最大内核数来设置第一权重存储单元103和第二权重存储单元104中的各个的字长,并且为9个字。这种配置允许权重存储单元根据双缓冲方法在帧缓冲方法中使用。这样,各个权重存储单元可以存储9个内核,各个内核具有3×3内核大小。
DMAC 102、读出单元105和写入单元107是在控制单元108控制下指示第一权重存储单元103和第二权重存储单元104进行权重数据写入操作和权重数据读出操作的存储控制器。
DMAC 102从RAM 206读出预处理后的图像数据和内核并将该数据和内核发送到图像存储单元101和写入单元107。此外,DMAC 102从RAM 206读出CNN的网络信息并发送到控制单元108。在完成CNN运算之后,DMAC 102将存储在图像存储单元101中的CNN运算处理结果存储在RAM 206中。
网络信息是用于控制CNN运算的信息。例如,可以在网络信息中定义CNN运算的顺序和方法。图9示出了在本实施例中使用的网络信息作为网络信息的示例。如图9所示,网络信息可以包括各个处理子集的索引、各个处理子集的处理方法、处理目标层数、各个层的特征面数、各个特征面大小以及内核大小。在本实施例中,网络信息是预先准备的并且被存储在例如ROM 205、RAM 206等中。
处理子集是指各个内核切换的单元。也就是说,在一组内核用于对一个处理子集进行运算之后,接着另一组内核用于对另一个处理子集进行运算。使用神经网络的处理包括多个处理子集。各个处理子集都是神经网络中卷积运算处理的一部分并按顺序进行处理。在下文中,将在第N个处理子集中使用的一组内核简称为第N个内核。例如,第N个内核是在第N个处理子集中进行卷积运算处理中使用的权重数据,第(N+1)个内核是在第(N+1)个处理子集中进行卷积运算处理中使用的权重数据。
处理方法定义各个处理子集中的运算顺序。在本实施例中,帧缓冲方法和环形缓冲方法被用作处理方法。在使用帧缓冲方法作为处理方法的情况下,一个处理子集相当于对一层进行处理。在使用环形缓冲方法作为处理方法的情况下,一个处理子集包括对多层进行处理。在图9所示的示例中,使用环形缓冲方法对输入层501和第一层507进行处理。而使用帧缓冲方法对第二层508至第四层510进行处理。
图8A是用于说明帧缓冲方法运算的视图。在帧缓冲方法中,各个层顺序进行CNN运算。在本实施例中,根据帧缓冲方法的一个处理子集是对神经网络中属于一层的所有区域进行卷积运算处理。在这种情况下,将要进行运算的层的内核将存储在缓冲存储器中。例如,在要对第二层508进行处理的情况下,内核515a至515c、内核516a至516c以及内核517a至517c将被存储在缓冲存储器中。随后,通过使用特征面503a至503c上的内核515a至517a执行CNN运算来计算特征面504a。以类似的方式,通过分别使用内核515b至517b和内核515c至517c执行CNN运算来计算特征面504b和特征面504c。
图8B是用于说明环形缓冲方法运算的视图。在环形缓冲方法中重复进行多层的部分处理。在本实施例中,在根据环形缓冲方法的一个处理子集中,在对神经网络的两层或更多层的第一区域进行卷积运算处理之后,对两层或更多层的第二区域进行卷积运算处理。例如,为了获得特征面506中的区域806,对分别是第四层510的特征面505a至505c的一部分的区域528a至528c进行CNN运算。因此,内核521至523被存储在缓冲存储器中。另外,为了计算区域528a至528c,对第三层509的特征面504a至504c的区域527a至527c中的各个进行CNN运算。因此,内核518a至520c也被存储在缓冲存储器中。这样,各个处理目标层的内核都存储在缓冲存储器中并且跨各个层进行CNN运算。随后,对于其它区域跨各个层进行CNN运算。
请注意,根据本实施例的信息处理装置可以包括用于存储CNN运算所需的图像数据或特征面的缓冲存储器(未示出)。例如,在如上所述通过帧缓冲方法对第二层508进行处理的情况下,缓冲存储器可以存储运算所需的特征面503a至503c。另外,在如上所述通过使用环形缓冲方法获得区域806的情况下,缓冲存储器可以存储运算所需的区域527a至527c和区域528a至528c等。
写入单元107根据来自控制单元108的控制信号将从DMAC 102接收的各个内核存储在第一权重存储单元103和第二权重存储单元104中。从控制单元108输入的控制信号可以包括表示要存储的内核数的信号和表示要作为存储目的地的权重存储单元的信号。写入单元107从第一地址开始将指定数量的内核存储在指定权重存储单元中。在已经指定第一权重存储单元103作为存储目的地并且指定的内核数大于第一权重存储单元103的字长的情况下,写入单元107将内核存储在第一权重存储单元103的整个地址中。然后,写入单元107将第一地址中剩余的内核依次存储在第二权重存储单元104中。
读出单元105根据来自控制单元108的控制信号,读出存储在第一权重存储单元103和第二权重存储单元104中的内核并将内核发送到处理单元106。从控制单元108输入的信号可以包括表示权重存储单元成为读出源的信号和表示要读出的各个内核的地址的信号。读出单元105从指定权重存储单元的指定地址读出各个内核并将这些内核发送到处理单元106。
处理单元106从图像存储单元101读出图像数据作为输入数据并使用从读出单元105接收到的内核基于层执行CNN运算。随后,处理单元106将运算结果存储在图像存储单元101中。处理单元106可以通过使用例如图6所示的硬件来实现。
控制单元108基于从DMAC 102接收到的网络信息来控制DMAC 102、写入单元107、读出单元105和处理单元106。控制单元108可以保持表示通过第一权重存储单元103和第二权重存储单元104存储的内核的处理子集的信息。在本实施例中,控制单元108参照并更新该信息以进行存储器控制从而控制内核存储方法。更具体地,在本实施例中,控制单元108控制在神经网络卷积运算处理中使用的、对第一权重存储单元103(第一存储器)和第二权重存储单元104(第二存储器)进行的内核写入操作。控制单元108还控制从第一权重存储单元103和第二权重存储单元104向处理单元106读出的、在卷积运算处理中使用的内核的操作。
在本实施例中,控制单元108可以通过在第一操作和第二操作之间切换作为控制方法来控制内核写入操作和内核读出操作。在第一操作中,向第一存储器进行第一权重数据的写入操作,随后,从第一存储器中进行第一权重数据的读出操作以及并行向第二存储器进行第二权重数据的写入操作。在本说明书中,在第一操作中使用的这种方法称为双缓冲方法。在该方法中,权重数据的读出操作和写入操作彼此并行地进行。
另一方面,在第二操作中,向第一存储器和第二存储器进行第一权重数据的写入操作,并且随后从第一存储器和第二存储器中进行第一权重数据的读出操作。在本说明书中,在第二操作中使用的这种方法称为单缓冲方法。在该方法中,权重数据的读出和权重数据的写入可以排他地进行。
<信息处理装置的操作>
下文中将参考图4描述信息处理装置的操作,特别是双缓冲方法与单缓冲方法之间的切换,图4是示出了根据本实施例的信息处理装置的操作的流程图。下面将描述使用CNN来检测图像中的面部的示例。
在步骤S401中,CPU 204指示DMAC 102传送网络信息。DMAC 102从RAM 206读出网络信息并将网络信息传送到控制单元108。
在步骤S402中,控制单元108指示DMAC 102传送输入图像。DMAC 102读出存储在RAM 206中的预处理后的图像数据并将图像数据存储在图像存储单元101中。在完成传送之后,处理进入步骤S403。
在步骤S403中,控制单元108确定是否已经将第N个内核存储在第一权重存储单元103或第二权重存储单元104中。在这种情况下,参考符号N对应于图9中的处理子集的索引并且其初始值为1。控制单元108可以通过参照表示第一权重存储单元103和第二权重存储单元104的状态的信息来进行该确定。如果第N个内核存储在至少一个权重存储单元中,处理进入步骤S405。如果第N个内核没有存储在任何一个权重存储单元中,则处理进入步骤S404。
在步骤S404中,将第N个内核存储在权重存储单元中。更具体地,控制单元108指示DMAC 102将第N个内核传送到写入单元107。在参照网络信息将帧缓冲方法表示为第N个处理子集的处理方法的情况下,控制单元108可以指示DMAC传送由层数指定的层的内核。另一方面,在将环形缓冲方法表示为第N个处理子集的处理方法的情况下,控制单元108可以指示DMAC传送由层数指定的处理目标层的内核。DMAC 102从RAM 206读出指定的内核并将内核传送到写入单元107。
尽管第一权重存储单元103或第二权重存储单元104可以被选择为存储目的地,但是在本实施例中,在步骤S404中至少通常选择第一权重存储单元103。在指定的内核不能被容纳在第一权重存储单元103中的情况下,还将选择第二权重存储单元104。例如,控制单元108可以通过参照网络信息来计算第N个内核的数量。控制单元108将要存储的内核数目的指定发送到写入单元107。如果内核数等于或小于第一权重存储单元103的字长,则控制单元108将指示写入单元107将内核存储在第一权重存储单元103中。控制单元108还将更新表示各个权重存储单元存储的内核的信息,从而该信息将表示第一权重存储单元103正保持着第N个内核。另一方面,如果内核数大于第一权重存储单元103的字长,则控制单元108将指示写入单元107将内核存储在第一权重存储单元103和第二权重存储单元104中。控制单元108还将更新表示通过各个权重存储单元存储的内核的信息,从而该信息将表示第一权重存储单元103和第二权重存储单元104正保持着第N个内核。根据来自控制单元108的指定,写入单元107将从DMAC 102接收的内核存储在第一权重存储单元103中以及在被指定的情况下还存储在第二权重存储单元104中。
在步骤S405中,控制单元108确定第(N+1)个内核是否可存储在第一权重存储单元103或第二权重存储单元104中。在本实施例的情况下,控制单元108将获得表示内核大小的信息,并基于该表示大小的信息确定是选择双缓冲方法(第一操作,步骤S406)还是单缓冲方法(第二操作,步骤S407)。在本实施例中,网络信息包括表示内核大小的信息。例如,在第N个内核存储在第一权重存储单元103(或第二权重存储单元104)中的状态下,控制单元108可以确定第(N+1)个内核是否可存储在第二权重存储单元104(或第一权重存储单元103)中。如果第(N+1)个内核是可存储的,则控制单元108可以选择双缓冲方法操作。否则,可以选择单缓冲方法操作。更具体地,如果可以建立以下三个条件,则控制单元108可以确定第(N+1)个内核是可存储的。
条件1:第N个内核仅存储在第一权重存储单元103和第二权重存储单元104二者之一中。
条件2:在第一权重存储单元103和第二权重存储单元104中,第(N+1)个内核可以被容纳在不同于保持着第N个内核的权重存储单元的权重存储单元中。
条件3:第N个处理子集不是最终处理子集。
如果确定第(N+1)个内核是可存储的,则处理进入步骤S406。否则,处理进入步骤S407。
在步骤S406中,并行执行第(N+1)个内核的存储和第N个处理子集上的CNN运算。为了存储第(N+1)个内核,控制单元108首先将要存储的内核数的指定发送到写入单元107。控制单元108指定与用作第N个内核的存储目的地的权重存储单元不同的权重存储单元作为内核存储目的地。即,如果第一权重存储单元103已经被指定为第N个内核的存储目的地,则控制单元108将指定第二权重存储单元104为第(N+1)个内核的存储目的地。另一方面,如果第二权重存储单元104已经被指定为第N个内核的存储目的地,则控制单元108将指定第一权重存储单元103为第(N+1)个内核的存储目的地。而且,控制单元108将各个权重存储单元的指定方法与表示由各个权重存储单元存储的内核的信息一起更新。随后,控制单元108将指示DMAC 102将第(N+1)个内核传送到写入单元107。写入单元107将从DMAC 102接收到的内核根据来自控制单元108的指定存储在第一权重存储单元103或第二权重存储单元104中。
此外,为了执行第N个处理子集的CNN运算,控制单元108参照网络信息向处理单元106指示处理方法、处理目标层数、特征面数、特征面大小以及各个处理目标层的内核大小。控制单元108根据处理方法向读出单元105顺序地指定要从中读出内核的权重存储单元、内核的地址等。在这种情况下,在同一步骤S406中,控制单元108将与指定为第(N+1)个内核的存储目的地的权重存储单元不同的权重存储单元指定为要从中读出第N个内核的权重存储单元。即,如果第一权重存储单元103已经被指定为第(N+1)个内核的存储目的地,则控制单元108将第二权重存储单元104指定给读出单元105。另一方面,如果第二权重存储单元104已经被指定为第(N+1)个内核的存储目的地,则控制单元108将第一权重存储单元103指定给读出单元105。读出单元105将根据来自控制单元108的指定从权重存储单元中读出内核,并将这些内核发送到处理单元106。处理单元106从图像存储单元101读出控制单元108指定的层的各个特征面,并使用从读出单元105接收到的内核根据指定的处理方法执行CNN运算。随后,处理单元106将作为运算结果数据的特征面存储在图像存储单元101中。
在步骤S407中,执行第N个处理子集的CNN运算处理。如果要使用存储在第一权重存储单元103中的内核,则第一权重存储单元103作为读出源由控制单元108指定给读出单元105,并且第一权重存储单元103中的各个内核的地址也被指定。另一方面,如果要使用存储在第二权重存储单元104中的内核,则第二权重存储单元104作为读出源被指定给读出单元105,并且第二权重存储单元104中的各个内核的地址也被指定。以这种方式,控制单元108可以控制读出单元105从第一权重存储单元103和第二权重存储单元104两者中读出处理单元106进行运算所需的内核。CNN运算处理与步骤S406类似。
在步骤S408中,控制单元108确定是否已完成所有处理子集的处理。如果所有处理子集的处理均已完成,则处理进入步骤S410。另一方面,如果剩余未处理的处理子集,则处理进入步骤S409。
在步骤S409中,控制单元108将处理子集的索引增加1。随后,在步骤S403至S407中处理下一个处理子集。在要进行根据图5所示的CNN的处理的情况下,可以通过重复四次循环来获得最终特征面506。
在步骤S410中,控制单元108指示DMAC 102传送CNN运算的处理结果。DMAC 102根据该指令从图像存储单元101读出最终特征面506并将其传送到RAM 206。
在步骤S411中,CPU 204通过使用存储在RAM 206中的特征面来确定面部的检测位置。图3A和3B是示意性地示出了模式识别结果的视图。如果图3A所示的特征面301的像素具有大的值,则该像素很可能位于面部的中心。CPU 204可以使用特征面301来提取诸如各个面部的位置和大小等的信息。另外,如图3B所示CPU 204可以基于该信息生成表示脸部的位置的检测框302至304,将这些检测框叠加在输入图像上,以使得显示单元203显示结果图像。
如上所述,根据在步骤S405中进行的确定,在步骤S406中的双缓冲方法操作和步骤S407中的单缓冲方法操作之间进行切换。在步骤S406中,处理单元106可以从第一权重存储单元103读出第N个内核(第一权重数据),并且使用第N个内核进行卷积运算处理。此外,与该操作并行地进行将第(N+1)个内核(第二权重数据)写入第二权重存储单元104的操作(第一操作)。在本实施例中,在将第N个内核存储在第一权重存储单元103中并且可以将第(N+1)个内核存储在第二权重存储单元104中的情况下,将进行以下操作。在相同循环的步骤S404中或在先前循环的步骤S406中,将第N个内核存储在第一权重存储单元103中。另外,从向第一权重存储单元103写入第N个内核的写入操作完成直到启动第(N+2)个内核(第三个权重数据)的写入操作(下一个循环)为止的时段内,进行第N个内核的读出操作和第(N+1)个内核的写入操作。在这种情况下,假定处理单元106将依次使用第N个内核,第(N+1)个内核和第(N+2)个内核。
在步骤S406中,处理单元106还可以从第二权重存储单元104中读出第N个内核,以使用第N个内核进行卷积运算处理。与此并行,进行将第(N+1)个内核写入第一权重存储单元103的操作。在本实施例中,在将第N个内核存储在第二权重存储单元104中并且可以将第(N+1)个内核存储在第一权重存储单元103中的情况下进行这种操作。
另一方面,在步骤S407中,处理单元106可以从第一权重存储单元103和第二权重存储单元104两者中读出第N个内核并使用第N个内核进行卷积运算处理(第二操作)。在这种情况下,在同一循环步骤S404中,第N个内核已经中被存储在第一权重存储单元103和第二权重存储单元104中。在本实施例中,在先前循环中不能将第N个内核存储在第一权重存储单元103或第二权重存储单元104中的情况下,进行第二操作。从第N个内核的写入操作完成(步骤S404)直到第(N+1)个内核的写入操作(下一个循环)为止的时段内,进行从第一权重存储单元103和第二权重存储单元104读出第N个内核的读出操作。
请注意,在本实施例中,即使在第N个内核仅存储在第一权重存储单元103和第二权重存储单元104二者之一中,而第(N+1)个内核也不能存储在其它处的情况下,将进行单缓冲方法操作。在这种情况下,处理单元106将在从第一权重存储单元103和第二权重存储单元104中的一个读出第N个内核并使用第N个内核进行卷积运算处理的同时进行控制,以不并行地将内核写入其它权重存储单元。在这种情况下,处理可以从步骤S405前进到步骤S406,使得进行双缓冲方法操作。在这种情况下,处理单元106可以在步骤S406中进行控制,以从第一权重存储单元103和第二权重存储单元104之一中读出第N个内核并使用第N个内核进行卷积运算处理。处理单元106还可以与上述操作并行地进行控制,以将第(N+1)个内核中的一些写入第一权重存储单元103和第二权重存储单元104的其它部分中。
图7A至图7D示出了在基于图9所示的网络信息来处理具有图5所示配置的CNN运算的情况下,第一权重存储单元103和第二权重存储单元104的状态。在图7A至7D中,从上部开始依次示出地址0、1、...,并且每个地址可以存储一个内核。同样,参考符号Ka,b表示一个内核。参考符号a表示层数,参考符号b表示层中的内核数。在这种情况下,假设输入层的层数为0。在图7A至7D各图中,箭头表示对权重存储单元的访问是写入操作还是读出操作。在下文中将描述在每个循环(N=1至4)的步骤S403至S407的处理中进行的操作。
第一循环(N=1)
由于这是第一处理,因此在步骤S403中,控制单元108确定尚未存储第一内核。在步骤S404中,控制单元108从网络信息中读出第一处理子集是对输入层501和第一层507的环形缓冲方法处理。然后,控制单元108基于输入层501、第一层507和第二层508各个的特征面数计算第一内核的数量。在图5的示例中,特征面与相邻层中的所有相应特征面相关联。因此,内核数为1(输入层501的特征面数)×3(第一层507的特征面数)+3(第一层507的特征面数)×3(第二层508的特征面数)=12。
接下来,通过控制单元108将12指定为写入单元107中的内核数并且将第一权重存储单元103指定为存储目的地。控制单元108还更新表示各个权重存储单元要存储内核的信息,以便该信息将表示第一权重存储单元103和第二权重存储单元104正存储着第一内核。如图7A所示,在从DMAC 102接收的内核中,写入单元107在第一权重存储单元103中存储9个内核511a至514b,并且在第二权重存储单元104中写入剩余的三个内核512c至514c。
由于第一内核被存储在第一权重存储单元103和第二权重存储单元104中,所以步骤S405的条件1不满足,并且处理进入步骤S407。在步骤S407中,控制单元108参照网络信息并指定环形缓冲方法处理为处理单元106要进行的处理。控制单元108在处理单元106中设置0和1为处理目标层数、1为输入层501的特征面数、设置3为第一层507的特征面数、以及3×3为内核尺寸。控制单元108根据要在环形缓冲方法下进行的CNN运算,将存储CNN运算所需的内核的权重存储单元和地址存储指定给读出单元105。在这种情况下,控制单元108可以在输入层501的内核511a至511c和第一层507的内核512a至514c之中选择所需的内核。处理单元106使用从图像存储单元101读出的特征面和从读出单元105接收的内核,对输入层501和第一层507进行环形缓冲方法CNN运算。
第二循环(N=2)
在步骤S403中,控制单元108参照表示各个权重存储单元存储的内核的信息并确定未存储第二内核。在步骤S404中,控制单元108从网络信息中读出第二处理子集是对第二层508的帧缓冲方法处理。控制单元108使用类似于在第一循环中使用的方法计算第二内核的数(9),并且将9作为内核数、第一权重存储单元103作为存储目的地指定给写入单元107。此外,控制单元108更新表示由各个权重存储单元存储的内核的信息,以使得该信息将表示第二内核存储在第一权重存储单元103中的状态。如图7B所示,写入单元107将从DMAC 102接收到的内核515a至517c存储在第一权重存储单元103中。
由于第二内核515a至517c仅存储在第一权重存储单元103中,因此步骤S405的条件1满足。另外,由于第三处理子集是对第三层509的帧缓冲方法处理,并且要使用的内核是9个内核518a至520c,因此条件2也满足。此外,由于第三处理子集不是最终处理子集,因此步骤S405的条件3也满足。这样,由于步骤S405的所有条件1至3都满足,因此处理进入步骤S406。
在步骤S406中,控制单元108将9作为内核数并将第二权重存储单元104作为存储目的地指定给写入单元107。控制单元108还更新表示由各个权重存储单元存储的内核的信息,使得该信息将表示第三内核被存储在第二权重存储单元104中的状态。随后,控制单元108指示DMAC 102发送第三层509的内核518a至520c,以将这些内核存储在第二权重存储单元104中,如图7C所示。
此外,在步骤S406中,控制单元108参照网络信息并将帧缓冲方法作为处理方法、2作为处理目标层数、3作为特征面数、以及3×3作为内核大小指定给处理单元106。随后,根据帧缓冲方法CNN运算,控制单元108向读出单元105通知存储第二层508的内核515a至517c中的、CNN运算所需的内核的权重存储单元和地址。处理单元106使用从图像存储单元101读出的特征面和从读出单元105接收到的内核来对第二层508进行帧缓冲方法处理。
第三循环(N=3)
省略第三循环的处理细节,因为它们与第二循环的细节类似。在步骤S403中,控制单元108确定第三层509的内核518a至520c已经被存储在第二权重存储单元104中,并且处理进入步骤S405。在这种情况下,步骤S405的条件1至3都满足,并且处理进入步骤S406。在步骤S406中,控制单元108将3(内核521至523)作为内核数并且将第一权重存储单元103作为内核的存储目的地指定给写入单元107,并更新表示各个权重存储单元存储的内核的信息。随后,如图7D所示,将第四层510的内核521至523存储在第一权重存储单元103中。此外,在步骤S406中,控制单元108参照网络信息并使处理单元106对第三层509上进行CNN运算。
第四循环(N=4)
在步骤S403中,控制单元108以与第二和第三循环类似的方式确定第四层510的内核521至523已经被存储在第一权重存储单元103中,并且处理进行到步骤S405。由于第四处理子集是最终处理子集,因此步骤S405的条件3不满足,并且处理进入步骤S407。在步骤S407中,控制单元108参照网络信息并将帧缓冲方法作为处理方法、4作为处理目标层数、3作为特征面数、以及3×3作为内核大小指定给处理单元106。根据帧缓冲方法CNN运算,控制单元108向读出单元105通知存储第四层510的内核521至523中的、CNN运算所需的内核的权重存储单元和地址。处理单元106使用从图像存储单元101读出的特征面和从读出单元105接收到的内核来对第四层510进行帧缓冲方法处理。
在基于图9所示的网络信息要进行具有图5所示的配置的CNN运算的情况下,各个权重存储单元的字长必须足够大以通过双缓冲方法处理所有处理子集。即,这种情况下所需的存储容量为(9+12)×9=189字节。这样,权重存储单元中的至少一个字长需要等于或大于所有处理子集的最大内核总数(12)。相反,本实施例中所需的存储容量为(9+9)×9=162字节,与通过双缓冲方法处理所有处理子集的情况相比,该存储容量可减少14%。另一方面,根据本实施例,因为可以通过双缓冲方法处理第二和第三处理循环,所以可以提高处理速度。
本实施例的配置可应用于使用另一网络配置的情况。例如,即使在基于图10所示的网络信息要进行CNN运算的情况下,也可以获得存储减少的效果。在图10所示的配置中,用于第一处理子集(环形缓冲方法处理)所需的内核总数为16+16×32+32×64+64×64=6672。此外,第二处理子集到第四处理子集(帧缓冲区方法处理)所需的内核总数为64×64=4096。
以这种方式,为了通过双缓冲方法处理所有处理子集,权重存储单元的至少一个字长需要等于或大于6672,并且存储容量需要等于或大于(4096+6672)×9=94.6KB。相反,在本实施例中所需的存储容量为(4096+4096)×9=72.0KB,因此允许将存储容量减小22.6KB。
在本实施例中,根据图9所示的网络信息,在环形缓冲方法处理期间,两个存储器在单缓冲方法下连接并使用。此外,在帧缓冲方法处理期间,两个存储器在双缓冲方法下使用。然而,本实施例适用于以不同方法执行的处理。例如,在采用帧缓冲处理作为处理方法的情况下,可以根据层的权重的大小来切换单缓冲方法和双缓冲方法。图11示出了可以在这种配置中使用的网络信息的示例。
如上所述,在本实施例中,两个存储器用作神经网络的权重存储存储器。在两个连续的处理子集的各个权重可以被存储在相应的一个存储器中的情况下,权重的写入操作和读出操作并行地执行。在除此之外的情况下,权重的写入操作和读出操作顺序地执行。在这种配置中,与在处理中仅使用单缓冲方法的情况相比,使用神经网络的运算处理可以以更高的速度进行;而与在处理中仅使用双缓冲方法的情况相比,使用较小的存储容量。
[第二实施例]
在第一实施例中,控制单元108基于网络信息在单缓冲方法和双缓冲方法之间切换。然而,切换操作的控制方法不限于该方法。在第二实施例中,基于指定预先准备的权重数据的写入方法或读出方法的控制信息来确定是选择双缓冲方法(第一操作)还是单缓冲方法(第二操作)。例如,控制单元108可以根据与第一实施例相同的表示处理过程的控制信息进行操作。这种配置可以简化控制单元108的配置并且减小电路规模。
图12所示的网络信息可以用作该控制信息。除了类似于图9的网络信息之外,图12中所示的网络信息还包括以下四个信息。即,该网络信息包括:表示各个处理子集的权重是否已经被存储的“权重已存储”信息以及表示下一处理子集的权重是否可以存储的“下一权重存储被允许”信息。另外,该网络信息还包括:表示各个处理子集的权重的存储目的地的“权重存储目的地”信息以及表示各个处理子集的内核数的“内核数”信息。
由于根据第二实施例的配置和处理类似于第一实施例的配置和处理,因此以下将描述与第一实施例不同的点。在步骤S403中,控制单元108从网络信息中读出第N个处理子集的“权重已存储”信息。如果“权重已存储”信息为是,则处理进入步骤S405。如果“已经存储的权重”信息为“否”,则处理进入步骤S404。
在步骤S404中,控制单元108从网络信息中读出第N个处理子集的“权重存储目的地”信息和“内核数”信息。在这种情况下,在第一权重存储单元103和第二权重存储单元104都被指定为“权重存储目的地”的情况下,在单缓冲方法下将连接并使用两个权重存储单元。根据这些信息,控制单元108以与第一实施例类似的方式控制DMAC 102和写入单元107。
在步骤S405中,控制单元108从网络信息中读出第N个处理子集的“下一权重存储被允许”信息。如果“下一权重存储被允许”信息为是,则处理进入步骤S406。如果“下一权重存储被允许”信息为否,则处理进入步骤S407。
在步骤S406中,控制单元108读出第(N+1)个处理子集的“权重存储目的地”信息和“内核数”信息。根据这些信息,控制单元108以与第一实施例类似的方式控制DMAC 102、读出单元105和写入单元107。以这种方式进行双缓冲方法操作。在步骤S407中,控制单元108以与第一实施例类似的方式根据单缓冲方法进行控制。
[进一步的实施例]
在上述实施例中,第一权重存储单元103和第二权重存储单元104是分开的存储设备,并且可以并行地执行对一个权重存储单元的写入操作和从另一个权重存储单元的读出操作。然而,作为第一权重存储单元103和第二权重存储单元104,可以采用其他配置并行地执行写入操作和读出操作。例如,第一权重存储单元103和第二权重存储单元104可以是单个存储设备上的不同存储区域,该单个存储设备允许同时访问多个区域。例如,设置在双端口存储器中的两个权重存储区域可以分别用作第一权重存储单元103和第二权重存储单元104。即使在这种实施例中,也可以布置成使得控制单元108可以在步骤S406中进行控制以使得写入单元107和读出单元105并行地操作。另一方面,在步骤S404和S407中,控制单元108可以进行控制以排他地执行权重写入操作和权重读出操作。例如,控制单元108可以进行控制以使得在步骤S404只有写入单元107要操作,而在步骤S407只有读出单元105要操作。
尽管在双缓冲方法中写入操作和读出操作彼此完全并行地进行,但是在单缓冲方法中写入操作和读出操作不需要完全排他地进行。例如,在双缓冲方法中,写入操作和读出操作可以通过时间分割方法并行地进行。例如,作为第一权重存储单元103和第二权重存储单元104,可以使用单端口存储器上的两个存储区以及用于调整写入操作和读出操作的调整电路。通过这种配置,写入单元107的权重写入操作和读出单元105的权重读出操作也可以并行地进行。在这种情况下,在步骤S406中,可以在处理单元106进行运算处理而读出单元105未进行权重读出操作的时段内写入单元107进行权重写入操作。以这种方式,当处理单元106通过从权重存储单元之一中读出权重数据要进行卷积运算处理时,处理单元106可以并行地对另一权重存储单元进行权重数据写入操作。这将消除对独立的权重数据写入操作时段的需要,从而提高了处理速度。
另外,在单缓冲方法中,处理单元106可以从第一权重存储单元103和第二权重存储单元104交替地读出相同处理子集的权重数据。在这种情况下,在完成了从一个权重存储单元的权重数据读出操作后,与其它处理子集的权重数据存储到该权重存储单元的操作并行地,处理单元106可以继续从另一权重存储单元读出权重数据。
另外,尽管根据上述实施例的信息处理装置包括两个权重存储单元,但是可以包括三个或更多个权重存储单元。例如,在包括P个权重存储单元的信息处理装置中,在需要Q(Q≦P)个存储器存储给定处理子集的权重的情况下,可以将权重存储在已连接的Q个存储器中。在这种情况下,如果下一个处理子集的权重可以存储在(P-Q)个存储器中,那么下一个处理子集的权重可以存储在剩余的存储器中。由于这种配置也允许权重读出操作和权重写入操作并行地执行,因此可以提高处理速度。
此外,尽管在上述实施例中两个权重存储单元具有相同的大小,但是两个权重存储单元可以具有彼此不同的大小。可以考虑网络配置、处理速度、电路规模等之间的平衡来设置各个权重存储单元的大小。
在上述实施例中,通过帧缓冲方法处理的单个处理子集包括一层,并且通过环形缓冲方法处理的单个处理子集包括多层。然而,可以设置成使得通过帧缓冲方法处理的单个处理子集包括多层,并且通过环形缓冲处理的单个处理子集仅包括一层。即使在这种情况下,也可以针对用作处理子集的每一层切换双缓冲方法和单缓冲方法。此外,可以使用除了帧缓冲处理和环形缓冲处理以外的处理方法。
另外,在上述实施例中,单个处理子集对应于神经网络的一层或多层的卷积运算处理。但是,单个处理子集可以是使用神经网络处理的任意部分。例如,单个处理子集可以是神经网络的单层的卷积运算处理的至少一部分。作为更具体的示例,单个处理子集可以是单层的单个区域的卷积运算处理,另一个处理子集可以是同一层的其它区域的卷积运算处理。此外,单个处理子集可以包括相对于两层或更多层的神经网络的每一层的卷积运算处理的至少一部分。
其他实施例
还可以通过读出并执行记录在存储介质(也可更完整地称为“非临时性计算机可读存储介质”)上的计算机可执行指令(例如,一个或更多个程序)以执行上述实施例中的一个或更多个的功能、并且/或者包括用于执行上述实施例中的一个或更多个的功能的一个或更多个电路(例如,专用集成电路(ASIC))的系统或装置的计算机,来实现本发明的实施例,并且,可以利用通过由所述系统或装置的所述计算机例如读出并执行来自所述存储介质的所述计算机可执行指令以执行上述实施例中的一个或更多个的功能、并且/或者控制所述一个或更多个电路执行上述实施例中的一个或更多个的功能的方法,来实现本发明的实施例。所述计算机可以包括一个或更多个处理器(例如,中央处理单元(CPU),微处理单元(MPU)),并且可以包括分开的计算机或分开的处理器的网络,以读出并执行所述计算机可执行指令。所述计算机可执行指令可以例如从网络或所述存储介质被提供给计算机。所述存储介质可以包括例如硬盘、随机存取存储器(RAM)、只读存储器(ROM)、分布式计算系统的存储器、光盘(诸如压缩光盘(CD)、数字通用光盘(DVD)或蓝光光盘(BD)TM)、闪存设备以及存储卡等中的一个或更多个。
本发明的实施例还可以通过如下的方法来实现,即,通过网络或者各种存储介质将执行上述实施例的功能的软件(程序)提供给系统或装置,该系统或装置的计算机或是中央处理单元(CPU)、微处理单元(MPU)读出并执行程序的方法。
虽然参照示例性实施例描述了本发明,但是,应该理解,本发明不限于公开的示例性实施例。下述权利要求的范围应当被赋予最宽的解释,以涵盖所有这类修改以及等同的结构和功能。

Claims (20)

1.一种信息处理装置,包括:
第一存储器和第二存储器;
控制单元,其被配置为控制向第一存储器和第二存储器写入要用于神经网络中卷积运算处理的权重数据,并控制从第一存储器和第二存储器中读出要用于卷积运算处理的权重数据;以及
处理单元,其被配置为通过使用从第一存储器和第二存储器中的至少一个读出的权重数据进行卷积运算处理,
其中,控制单元还被配置为在以下操作之间切换操作:
第一操作,其中处理单元从第一存储器中读出第一权重数据并使用第一权重数据进行卷积运算处理,同时并行地向第二存储器写入第二权重数据,以及
第二操作,其中处理单元从第一存储器和第二存储器两者中读出第一权重数据并使用第一权重数据进行卷积运算处理。
2.根据权利要求1所述的信息处理装置,其中,
处理单元,还被配置为依次使用第一权重数据、第二权重数据和第三权重数据,以及
在第一操作中,向第一存储器写入第一权重数据,并且从完成向第一存储器写入第一权重数据直到第三权重数据的写入为止的时段内并行地进行从第一存储器读出第一权重数据和向第二存储器写入第二权重数据。
3.根据权利要求2所述的信息处理装置,其中,
在第二操作中,将第一权重数据写入第一存储器和第二存储器中,并且从完成第一权重数据的写入直到第二个权重数据的写入为止的时段内从第一存储器和第二存储器中读出第一权重数据。
4.根据权利要求1所述的信息处理装置,其中,控制单元还被配置为获得表示权重数据大小的信息并基于表示大小的信息来选择第一操作或第二操作。
5.根据权利要求1所述的信息处理装置,其中,控制单元还被配置为基于预先准备的并且指定写入权重数据的方法或读出权重数据的方法的控制信息来选择第一操作或第二操作。
6.根据权利要求1所述的信息处理装置,其中,控制单元还被配置为在第一权重数据存储在第一个存储器中的状态下能够将第二权重数据存储在第二存储器中的情况下,选择第一操作,否则选择第二个操作。
7.根据权利要求1所述的信息处理装置,其中,使用神经网络的处理包括要被顺序处理的多个处理子集,第一权重数据是在第一处理子集的卷积运算处理中要使用的权重数据,并且第二权重数据是在第二处理子集的卷积运算处理中使用的权重数据。
8.根据权利要求7所述的信息处理装置,其中,多个处理子集中的处理子集是神经网络的层的卷积运算处理的至少一部分。
9.根据权利要求8所述的信息处理装置,其中,多个处理子集中的其它处理子集包括神经网络的两层或更多层的卷积运算处理的至少一部分。
10.根据权利要求7所述的信息处理装置,其中,多个处理子集中的处理子集是神经网络的层的所有区域的卷积运算处理。
11.根据权利要求10所述的信息处理装置,其中,多个处理子集中的其它处理子集是对神经网络的两个或更多个层的第一区域的卷积运算处理以及对神经网络的两个或更多层的第二区域的后续卷积运算处理。
12.根据权利要求1至11中的任一项所述的信息处理装置,其中,第一存储器和第二存储器是不同的存储装置的存储区域。
13.根据权利要求1至11中的任一项所述的信息处理装置,其中,第一存储器和第二存储器是单个存储设备的不同存储区域,所述存储区域可以同时被访问。
14.根据权利要求1至11中的任一项所述的信息处理装置,还包括:
存储器控制器,其被配置为根据控制单元的控制针对第一存储器和第二存储器指示权重数据的写入和权重数据的读出。
15.根据权利要求1-11中的任一项所述的信息处理装置,还包括:
获取单元,其被配置为获取识别目标数据;以及
识别单元,其被配置为基于通过将数据输入到神经网络而获得的特征信息来输出表示识别到的模式的信息。
16.根据权利要求15所述的信息处理装置,其中,识别目标数据是图像数据,并且识别单元还被配置为输出表示识别到的物体的信息。
17.根据权利要求1至11中的任一项所述的信息处理装置,其中,所述权重数据对应于二维的内核。
18.根据权利要求1至11中的任一项所述的信息处理装置,其中,处理单元还被配置为累加从各个卷积运算处理获得的多个结果。
19.根据权利要求18所述的信息处理装置,其中,处理单元还被配置为对累加结果进行非线性转换处理。
20.一种包括第一存储器和第二存储器的信息处理装置的存储器控制方法,包括:
控制将用于神经网络中的卷积运算处理的权重数据写入第一存储器和第二存储器,以及从第一存储器和第二存储器中读出用于卷积运算处理的权重数据,以便于在以下操作之间切换操作:
第一操作,从第一存储器中读出第一权重数据并使用第一权重数据进行卷积运算处理,同时并行地向第二存储器写入第二权重数据,以及
第二操作,从第一存储器和第二存储器两者中读出第一权重数据并使用第一权重数据进行卷积运算处理。
CN202010021533.3A 2019-01-10 2020-01-09 信息处理装置及存储器控制方法 Active CN111428870B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019002778A JP7227769B2 (ja) 2019-01-10 2019-01-10 情報処理装置及びメモリ制御方法
JP2019-002778 2019-01-10

Publications (2)

Publication Number Publication Date
CN111428870A true CN111428870A (zh) 2020-07-17
CN111428870B CN111428870B (zh) 2023-10-13

Family

ID=69105730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010021533.3A Active CN111428870B (zh) 2019-01-10 2020-01-09 信息处理装置及存储器控制方法

Country Status (4)

Country Link
US (1) US11663453B2 (zh)
EP (1) EP3680827B1 (zh)
JP (2) JP7227769B2 (zh)
CN (1) CN111428870B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382094B (zh) * 2018-12-29 2021-11-30 深圳云天励飞技术有限公司 一种数据处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006171244A (ja) * 2004-12-14 2006-06-29 Canon Inc 画像処理装置及びその制御方法、プログラム
CN101681449A (zh) * 2007-06-15 2010-03-24 佳能株式会社 计算处理装置及方法
US20180253641A1 (en) * 2017-03-03 2018-09-06 Canon Kabushiki Kaisha Arithmetic processing apparatus and control method therefor
US20180356987A1 (en) * 2017-06-08 2018-12-13 Fujitsu Limited Information processing system, information processing apparatus, and information processing method

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2861053B2 (ja) * 1989-05-26 1999-02-24 株式会社安川電機 画像処理装置
JP2572292B2 (ja) * 1990-05-14 1997-01-16 株式会社小松製作所 非同期データ伝送装置
JP6393058B2 (ja) 2014-03-31 2018-09-19 キヤノン株式会社 情報処理装置、情報処理方法
JP6776696B2 (ja) 2016-07-26 2020-10-28 富士通株式会社 並列情報処理装置、情報処理方法、およびプログラム
JP6945986B2 (ja) * 2016-10-28 2021-10-06 キヤノン株式会社 演算回路、その制御方法及びプログラム
JP6945987B2 (ja) 2016-10-28 2021-10-06 キヤノン株式会社 演算回路、その制御方法及びプログラム
KR20180056088A (ko) * 2016-11-18 2018-05-28 삼성전자주식회사 센싱 장치 및 이를 포함하는 배터리 관리 시스템
KR102642853B1 (ko) * 2017-01-05 2024-03-05 한국전자통신연구원 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
US10838910B2 (en) 2017-04-27 2020-11-17 Falcon Computing Systems and methods for systolic array design from a high-level program
US12099912B2 (en) * 2018-06-22 2024-09-24 Samsung Electronics Co., Ltd. Neural processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006171244A (ja) * 2004-12-14 2006-06-29 Canon Inc 画像処理装置及びその制御方法、プログラム
CN101681449A (zh) * 2007-06-15 2010-03-24 佳能株式会社 计算处理装置及方法
US20180253641A1 (en) * 2017-03-03 2018-09-06 Canon Kabushiki Kaisha Arithmetic processing apparatus and control method therefor
US20180356987A1 (en) * 2017-06-08 2018-12-13 Fujitsu Limited Information processing system, information processing apparatus, and information processing method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LIN BAI等: "\"A CNN Accelerator on FPGA Using Depthwise Separable Convolution\"", 《XP055696933,ARXIV.ORG》 *

Also Published As

Publication number Publication date
EP3680827A1 (en) 2020-07-15
US11663453B2 (en) 2023-05-30
JP2023058636A (ja) 2023-04-25
CN111428870B (zh) 2023-10-13
JP2020112998A (ja) 2020-07-27
JP7227769B2 (ja) 2023-02-22
EP3680827B1 (en) 2024-03-13
US20200225877A1 (en) 2020-07-16
JP7574346B2 (ja) 2024-10-28

Similar Documents

Publication Publication Date Title
US11068776B2 (en) Convolutional neural network based data processing apparatus, method for controlling the same, and storage medium storing program
JP3761061B2 (ja) データ処理システムおよびデータ処理方法
US9021347B2 (en) Information processing method and apparatus, program, and storage medium
US8904069B2 (en) Data processing apparatus and image processing apparatus
JP3781634B2 (ja) 画像処理装置および画像処理方法並びに携帯用映像機器
KR20210036715A (ko) 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법
US20120027320A1 (en) Image processing apparatus and image processing method
JP7574346B2 (ja) 情報処理装置及びメモリ制御方法
US11347430B2 (en) Operation processing apparatus that executes hierarchical calculation, operation processing method, and non-transitory computer-readable storage medium
US11704546B2 (en) Operation processing apparatus that calculates addresses of feature planes in layers of a neutral network and operation processing method
US11775809B2 (en) Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium
US20220392207A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
US9818045B2 (en) Apparatus and method for detecting a feature in an image
CN113900813B (zh) 一种基于双口ram的盲元填充方法、系统及装置
US11790225B2 (en) Data processing apparatus configured to execute hierarchical calculation processing and method thereof
US20210397864A1 (en) Hardware Accelerator for Integral Image Computation
US10565674B2 (en) Graphics processing device and graphics processing method
CN111831207B (zh) 一种数据处理方法、装置及其设备
US10244179B2 (en) Image processing apparatus, image capturing apparatus, control method, and recording medium
US20140009478A1 (en) Image processing apparatus and control method
CN116416195A (zh) 图像处理方法、计算机设备和计算机可读存储介质
JP2024065329A (ja) 撮像装置および撮像装置の制御方法

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