CN114118395B - 智能处理器装置与降低存储器带宽的方法 - Google Patents
智能处理器装置与降低存储器带宽的方法 Download PDFInfo
- Publication number
- CN114118395B CN114118395B CN202111433001.1A CN202111433001A CN114118395B CN 114118395 B CN114118395 B CN 114118395B CN 202111433001 A CN202111433001 A CN 202111433001A CN 114118395 B CN114118395 B CN 114118395B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- block
- convolution operation
- circuit
- 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
Images
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
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Human Computer Interaction (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
本申请实施例公开了一种智能处理器装置与降低存储器带宽的方法。该智能处理器装置包含第一与第二存储器、存储器管理电路与卷积运算电路。存储器管理电路自外部存储器转移输入数据至第一存储器。卷积运算电路自第一存储器读取输入数据,并执行多级运算以产生多个特征图数据。在产生第一特征图数据中的第一区块数据后,存储器管理电路储存第一区块数据至第二存储器。当所储存的第一区块数据的数据量满足默认数值时,存储器管理电路自第二存储器转移第一区块数据至第一存储器,且卷积运算电路自第一存储器读取第一区块数据,并据以执行第二级运算以产生第二特征图数据的第二区块数据。
Description
技术领域
本申请涉及智能处理器技术领域,具体涉及一种智能处理器装置与降低存储器带宽的方法。
背景技术
现有的神经网络模型通常包含依序执行的多层卷积运算。如图1所示,在现有技术中,动态随机存取存储器中的输入特征图数据会被拆分为多个区块(tile)数据(以虚线绘制)。在第1层卷积运算中,处理器会依序获取并处理这些区块数据以产生新的区块数据,并将新的区块数据依序写回至动态随机存取存储器。接着,在执行第2层卷积运算时,处理器将在第1层卷积运算所获得的多个区块数据自动态随机存取存储器依序读出并进行处理,以产生新的区块数据,并将新的区块数据依序写回至动态随机存取存储器,依此类推,直到执行完所有层的卷积运算。换言之,在现有技术中,每一层卷积运算所输出的数据会被当作下一层的输入数据,故需对动态随机存取存储器反复进行读取与写入。如此一来,在现有技术中,动态随机存取存储器需具备有较大的存储器带宽,才足以执行多层卷积运算。
发明内容
本申请实施例提供一种智能处理器装置与降低存储器带宽的方法,目的在于降低存储器的带宽需求。
在一些实施例中,智能处理器装置包含一第一存储器、一存储器管理电路、一第二存储器以及一卷积运算电路。存储器管理电路自一动态随机存取存储器读取一输入数据,并储存该输入数据至该第一存储器。卷积运算电路自该第一存储器读取该输入数据,并对该输入数据执行对应于一卷积运算的多级运算以依序产生多个输出特征图数据。在该卷积运算电路执行该多级运算中的一第一级运算以产生该多个输出特征图数据中的一第一输出特征图数据中的至少一第一区块数据后,该存储器管理电路储存该至少一第一区块数据至该第二存储器。当该第二存储器中储存的该至少一第一区块数据的数据量满足一默认数值时,该存储器管理电路自该第二存储器转移该至少一第一区块数据至该第一存储器,且该卷积运算电路更自该第一存储器读取该至少一第一区块数据,并对该至少一第一区块数据执行该多级运算中的一第二级运算以产生该多个输出特征图数据中的一第二输出特征图数据的至少一第二区块数据,并经由该存储器管理电路储存该至少一第二区块数据至该第二存储器。
在一些实施例中,降低存储器带宽的方法可应用于执行一卷积神经网络模型的一智能型处理器装置,其中该智能型处理器装置包含一第一存储器、一存储器管理电路、一第二存储器以及一卷积运算电路,且该降低存储器带宽的方法包含下列操作:根据该第一存储器的容量决定该卷积运算电路执行一卷积运算时储存于该第一存储器的一区块数据的数据尺寸,其中该存储器管理电路自一动态随机存取存储器转移该区块数据至该第一存储器,且该卷积运算电路根据自该第一存储器获得该区块数据,并对该区块数据依序执行对应于该卷积运算的多级运算以依序产生多个输出特征图数据;根据该第二存储器的容量以及该多个输出特征图数据中的最后一个输出特征图数据的一第一部份数据的数据量决定该多级运算的级数以及用来该多个输出特征图数据中的剩余数据中每一者的至少一第二部分数据的所需数据量,其中在执行该多级运算的过程中,该存储器管理电路将该第一部份数据与该至少一第二部分数据储存于该第二存储器;以及依据该区块数据的数据尺寸、该多级运算的级数、该第一部份数据的数据量以及该至少一第二部分数据的数据量产生一预定编译文件,其中该存储器管理电路基于该预定编译文件存取该动态随机存储器、该第一存储器以及该第二存储器。
有关本申请的特征、实作与功效,兹配合图式作较佳实施例详细说明如下。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为先前技术执行卷积运算的概念示意图;
图2为根据本申请一些实施例绘制的一种人工智能系统的示意图;
图3A为根据本申请一些实施例绘制的卷积运算的基本概念示意图;
图3B为根据本申请一些实施例绘制的额图2中的智能处理器装置执行卷积运算的概念示意图;
图3C为根据本申请一些实施例绘制图2中的智能处理器装置的数据传递流程的示意图;
图4为根据本申请一些实施例绘制的一种存储器带宽降低方法的流程图;
图5A为根据本申请一些实施例绘制的图4中的一操作的概念示意图;以及
图5B为根据本申请一些实施例绘制的图4中的一操作的详细步骤流程图。
具体实施方式
本文所使用的所有词汇具有其通常的意涵。上述的词汇在普遍常用的字典中的定义,在本申请的内容中包含任一于此讨论的词汇的使用例子仅为示例,不应限制到本申请的范围与意涵。同样地,本申请亦不仅以于此说明书所示出的各种实施例为限。
关于本文中所使用的“耦接”或“连接”,均可指二或多个组件相互直接作实体或电性接触,或是相互间接作实体或电性接触,亦可指二或多个组件相互操作或动作。如本文所用,用语“电路”可为由至少一个晶体管与/或至少一个主被动组件按一定方式连接以处理讯号的装置。
在一些实施例中,智能处理器装置(例如为图2的智能处理器装置230)可将卷积神经网络模型中的多层卷积运算拆分为多级运算,并将多级运算中所产生的计算结果暂存于高速缓存存储器(例如为图2的存储器233)中,并在完成所有级数的运算后将最终产生的数据写回至动态随机存取存储器(例如为图2的存储器220)。如此,可降低动态随机存取存储器的带宽需求。
图2为根据本申请一些实施例绘制的一种人工智能系统200的示意图。人工智能系统200包含处理器210、存储器220以及智能处理器(Intelligence Processor,或为Intelligence Processing Unit)装置230。人工智能系统200可用于执行神经网络模型(例如为,但不限于,卷积神经网络模型)以处理各种类型的数据(例如为,但不限于,图像数据)。
存储器220可储存待处理的输入数据DI以及经智能处理器装置230处理后的输出数据DO。在一些实施例中,存储器220可为动态随机存取存储器。智能处理器装置230可基于处理器210的控制而自存储器220读取输入数据DI,并对输入数据DI执行卷积运算,以产生输出数据DO。
详细而言,智能处理器装置230包含存储器管理电路231、存储器232、存储器233以及卷积运算电路234。存储器管理电路231耦接于存储器232、存储器233以及存储器220。在一些实施例中,存储器管理电路231可由(但不限于)存储器管理单元(memory managementunit)以及直接存储器访问(direct memory access)控制器等电路实施。存储器管理电路231可基于处理器210与/或卷积运算电路234的控制自存储器220读取输入数据DI至存储器232。卷积运算电路234可读取存储器232以获得输入数据DI,并对该输入数据DI执行卷积运算以产生输出数据DO。在卷积运算电路234产生输出数据DO后,存储器管理电路231可传送输出数据DO至存储器220以储存输出数据DO。
在一些实施例中,处理器210可基于一预定编译文件(未示出)发送指令CMD,且智能处理器装置230可根据该指令CMD自存储器220读取输入数据DI,并对输入数据DI执行卷积运算以产生输出数据DO。智能处理器装置230可根据指令CMD将卷积神经网络模型的多层卷积运算进一步拆分成多级运算。存储器管理电路231可将在卷积运算电路234在每级运算所产生的输出结果(例如为后述的输出特征图数据)暂存于存储器233,且卷积运算电路234可在运算过程中经由存储器管理电路231存取存储器233以使用该些暂存数据来完成每一级的运算,并在完成运算后将最后一级的运算结果(相当于输出数据DO)写回至存储器220。如此,可降低智能处理器装置230对存储器220的存取次数,进而降低人工智能系统200中所需要的存储器带宽。关于此处的操作将于后参照图3A至图3C说明。
在一些实施例中,存储器232与存储器233皆为静态随机存取存储器,例如,存储器232可为第二级(L2)高速缓存存储器,且存储器233可为第三级(L3)高速缓存存储器。在一些实施例中,存储器232为二维存储器,且存储器232的数据宽度等于卷积运算电路234与/或存储器管理电路231的数据宽度。例如,存储器232可具有32个通道(slot),每个信道的数据宽度为256个位且深度为512,但本申请不以上述数值为限。存储器232直接连接至卷积运算电路234,以便于卷积运算电路234直接存取。相对地,存储器233为一维存储器,其数据宽度不同于卷积运算电路234与/或存储器管理电路231的数据宽度,且卷积运算电路234可经由存储器管理电路231存取存储器233,以暂存每级运算所产生的结果。
为说明智能处理器装置230的相关操作,以下将依序说明卷积运算的基本概念以及智能处理器装置230的多级运算与数据传递流程。
图3A为根据本申请一些实施例绘制的卷积运算的基本概念示意图。如图3A所示,输入特征图数据310的宽度与高度分别为w1与h1,且输出特征图数据320的宽度与高度分别为w2与h2。于此例中,输入特征图数据310包含四个区块(tile)数据310[1]~310[4](以不同线条样式绘制),且输出特征图数据320包含四个区块数据320[1]~320[4](以不同底纹绘制),其中该多个区块数据310[1]~310[4]中每一者的宽度与高度分别为tile_w1与tile_h1,且该多个区块数据320[1]~320[4]中每一者的宽度与高度分别为tile_w2与tile_h2。在执行卷积运算的过程中,存储器管理电路231可转移输入特征图数据310中的一个区块数据至存储器232,且卷积运算电路234可自存储器232读取该区块数据并利用卷积核(kernel)315对该区块数据进行运算以产生输出特征图数据320中的一对应区块数据。例如,存储器管理电路231可转移区块数据310[1]至存储器232,且卷积运算电路234可自存储器232读取区块数据310[1]并利用卷积核315对区块数据310[1]进行运算以产生区块数据320[1]。
在一些实施例中,卷积运算电路234可将多层的卷积运算再拆分为多级运算,且每一级运算的运作方式皆类似于图3A所示的运算概念。在当级运算所产生的输出特征图数据会作为下一级运算的输入特征图数据,而下一级运算的输出特征图数据又会作为下下一级运算的输入特征图数据。然而,在实际运算中,对于同一个数据来说,前一级的输出特征图数据中的区块数据的数据尺寸通常不同于下一级的输入特征图数据的区块数据的数据尺寸。例如,如图3A所示,输入特征图数据310中的区块数据(例如为区块数据310[1])的数据尺寸(例如为宽度tile_w1与高度tile_h1)会大于输出特征图数据320的区块数据(例如为区块数据320[1])的数据尺寸(例如为宽度tile_w2与高度tile_h2)。因此,前一级的输出特征图数据中的区块数据的数据量需足够多,才可作为下一级运算中的输入特征图数据的至少一区块数据。借由设置存储器233,在完成每一级运算中的一次运算后,卷积运算电路234可经由存储器管理电路231传输对应于当级的输出特征图数据中的一区块数据至存储器233。当存储器233所储存的区块数据的数据量累积到足够多时,卷积运算电路234可经由存储器管理电路231存取存储器233以获取该多个区块数据,并将该多个区块数据作为下一级的输入特征图数据的至少一区块数据以执行下一级的卷积运算,以产生下一级的输出特征图数据的至少一区块数据。
图3B为根据本申请一些实施例绘制的图2中的智能处理器装置230执行卷积运算的概念示意图。如图1所示,在先前技术中,每一层卷积运算所产生的运算结果会先写回至动态随机存取存储器,再从该动态随机存取存储器读出进行下一行数据或是下一层卷积的计算。如此,动态随机存取存储器需具备足够大的读写带宽。相较于先前技术,在本申请一些实施例中,卷积运算电路234可将多层卷积运算拆分成多级运算,每级运算仅完成一卷积层运算的部分,并将逐级产生的运算结果暂存于存储器233(而非直接存回存储器220),并在进行下一级运算时从存储器233读出前一级的运算结果来进行运算。依此类推,在完成所有级数的运算后,卷积运算电路234可产生输出数据DO,并经由存储器管理电路231将输出数据储存于存储器220。如此,可降低存储器220的使用带宽。
在图3B中,对应于各级运算的输出特征图数据的区块数据以虚线方块绘制。卷积运算电路234对输入数据DI中进行第1级运算,以产生对应于第1级的输出特征图数据330-1。存储器管理电路231可将输出特征图数据330-1中的多个区块数据依序暂存于存储器233。当存储器233所储存的输出特征图数据330-1的多个区块数据的数据量满足一默认数值(例如为,但不限于,累积到一行的区块数据)时,卷积运算电路234经由存储器管理电路231自存储器233读出该多个区块数据,并将该多个区块数据(对应于输出特征图数据330-1)作为第2级运算的输入特征图数据的至少一区块数据,并该多个区块数据执行第2级的运算以产生对应于第2级的输出特征图数据330-2的区块数据。其中,前述的预设数值为足以让卷积运算电路234产生输出特征图数据330-2的至少一区块数据(例如为,但不限于,一行的区块数据)的数据量。依此类推,卷积运算电路234可依序执行多级运算,并依序产生多个输出特征图数据330-3、330-4、…、330-n,其中最后一级运算的输出特征图数据330-n相当于输入数据DI经过n层卷积层所对应的输出数据DO。
图3C为根据本申请一些实施例绘制的图2中的智能处理器装置230的数据传递流程的示意图。在此例中,图3B所示的多层卷积运算可再拆分为n级运算。在第1级运算中,存储器管理电路231可自存储器220读出输入数据DI(其为第1级运算的输入特征图数据)的至少一区块数据(步骤S3-11),并储存该至少一区块数据至存储器232中(步骤S3-12)。卷积运算电路234可自存储器232获取该至少一区块数据,并对该至少一区块数据执行卷积运算以产生输出特征图数据330-1中的至少一区块数据(步骤S3-13)。卷积运算电路234可将输出特征图数据330-1中的至少一区块数据储存于存储器232(步骤S3-14)。存储器管理电路231可转移存储器232中所储存的输出特征图数据330-1中的至少一区块数据到存储器233(步骤S3-15与步骤S3-16)。重复执行步骤S3-11至步骤S3-16,直到存储器233中所储存的输出特征图数据330-1中的至少一区块数据的数据量满足第一默认数值时,存储器管理电路231可自存储器233读出该至少一区块数据以进入第2级运算(步骤S3-21),并将输出特征图数据330-1(其相当于第2级运算的输入特征图数据)中的该至少一区块数据转移至存储器232中(步骤S3-22)。其中,第一预设数值为足以让卷积运算电路234产生输出特征图数据330-2中的至少一区块数据(例如为,但不限于,一行区块数据)的数据量。
类似地,在第2级运算中,卷积运算电路234可自存储器232获取该至少一区块数据,并对该至少一区块数据进行运算以产生输出特征图数据330-2中的至少一区块数据(步骤S3-23)。卷积运算电路234可将输出特征图数据330-2中的至少一区块数据储存于存储器232(步骤S3-24),且存储器管理电路231可转移存储器232中所储存的输出特征图数据330-2中的至少一区块数据到存储器233(步骤S3-25与步骤S3-26)。重复步骤S3-21至步骤S3-26,直到存储器233中所储存的输出特征图数据330-2中的至少一区块数据的数据量满足第二默认数值时,存储器管理电路231可自存储器233读出该至少一区块数据以进入第3级运算(未示出),其中第二预设数值为足以让卷积运算电路234产生输出特征图数据330-3中的至少一区块数据的数据量。
依此类推,当存储器233中所储存的输出特征图数据330-(n-1)中的至少一区块数据的数据量满足一特定默认数值时,存储器管理电路231可自存储器233读出该至少一区块数据以进入第n级运算(步骤S3-n1),并将输出特征图数据330-(n-1)(其相当于第n级运算的输入特征图数据)中的该至少一区块数据储存至存储器232中(步骤S3-n2),其中该特定预设数值为足以让卷积运算电路234产生输出特征图数据330-n中的至少一区块数据的数据量。在第n级运算中,卷积运算电路234可自存储器232获取该至少一区块数据,并对该至少一区块数据执行卷积运算,以产生输出特征图数据330-n中的至少一区块数据(步骤S3-n3)。卷积运算电路234可将输出特征图数据330-(n)中的至少一区块数据储存于存储器232(步骤S3-n4),且存储器管理电路231可转移存储器232中所储存的输出特征图数据330-n中的至少一区块数据到存储器220(步骤S3-n5与步骤S3-n6)。
换言之,在进行第1级运算时,输入特征图数据的区块数据是从存储器220读出。在中间的各级运算中所产生的输入(或输出)特征图数据中的区块数据皆暂存于存储器233。当进行到最后一级(即第n级)运算时,最后的输出特征图数据(相当于输出数据DO)会储存于存储器220。借由反复执行上述步骤,卷积运算电路234可将存储器233中所暂存的所有区块数据完成运算。
图4为根据本申请一些实施例绘制的一种降低存储器带宽的方法400的流程图。存储器带宽降低方法400可应用于各种执行人工神经网络模型的系统或装置(例如为,但不限于,图2的人工智能系统200),以降低系统中存储器的使用带宽。
于步骤S410,根据第一存储器(例如为图2的存储器232)的容量决定卷积运算电路(例如为图2的卷积运算电路234)执行一卷积运算时储存于第一存储器的一区块数据的数据尺寸,其中存储器管理电路(例如为图2的存储器管理电路231)自一动态随机存取存储器(例如为图2的存储器220)转移该区块数据至该第一存储器,且该卷积运算电路根据自该第一存储器获得该区块数据,并对该区块数据依序执行对应于该卷积运算的多级运算以产生多个输出特征图数据(例如为图3B的多个输出特征图数据330-1~330-n)。
在一些实施例中,步骤S410可用来决定读入存储器232的区块数据的数据尺寸。如图3C所示,在每级运算中,输入特征图数据(相当于前一级运算中所产生的输出特征图数据)的区块数据与输出特征图数据的区块数据会储存至存储器232。如图3A所示,输入特征图数据310中的区块数据(例如为区块数据310[1])的数据尺寸不同于输出特征图数据320的区块数据(例如为区块数据320[1])的数据尺寸。于此条件下,若读入存储器232的区块数据的数据尺寸越小,需重复存取多次存储器220(与/或存储器232)才可撷取到完整的输入特征图数据310。如此一来,将使得存储器220与/存储器232的带宽需求变大。因此,为了降低前述的读取次数,可在符合存储器232的容量的前提下将读入存储器232的区块数据的数据尺寸设置的尽量大。
具体来说,以图3A为例,若存储器232的容量为X,则储存于存储器232的输入特征图数据310中的区块数据与输出特征图数据320中的区块数据的总数据量不可以超过存储器232的容量X,其可表达为下式(1):
tile_w1×tile_h1×c1+tile_w2×tile_h2×c2<X…(1)
其中宽度tile_w1与高度tile_h1为输入特征图数据310中的区块数据的数据尺寸,宽度tile_w2与高度tile_h2为输出特征图数据320中的区块数据的数据尺寸,c1为输入特征图数据310对应的信道数,且c2为输出特征图数据320对应的信道数。
再者,在卷积运算的数学概念中,输入特征图数据310中的区块数据的宽度tile_w1与高度tile_h1以及输出特征图数据320中的区块数据的宽度tile_w2与高度tile_h2符合下式(2)与下式(3):
(tile_w1-f_w)/stride_w+1=tile_w2…(2)
(tile_h1-f_h)/stride_h+1=tile_h2…(3)
其中f_w与f_h分别为卷积核315的宽度与高度,stride_w为卷积核315在输入特征图数据310上每次移动的宽度步幅,且stride_h为卷积核315在输入特征图数据310上每次移动的高度步幅。
另外,由于在输入特征图数据310中的多个区块数据310[1]~310[4]之间彼此有重迭的数据,这些数据在卷积运算的过程中会被重复读出。因此,对于输入特征图数据310而言,所需要读取的总数据量可由下式(4)推得:
(w2/tile_w2)×(h2/tile_h2)×tile_h1×tile_w1×c1…(4)
在式(2)至式(4)中,宽度f_w、高度f_h、宽度步幅stride_w、高度步幅stride_h、宽度w2、高度h2、信道数c1以及信道数c2为卷积神经网络模型中的固定数值,且存储器232的容量X可事先得知。因此,可利用式(1)至式(3)寻找可满足式(1)并让式(4)具有最小值的宽度tile_w1与高度tile_h1(对应于输入特征图数据310的数据尺寸)以及宽度tile_w2与高度tile_h2(对应于输出特征图数据320的数据尺寸)。应当理解,当满足式(1)并可使式(4)具有最低的数值时,代表可在符合存储器232的容量下尽可能地降低存取次数。如此一来,可降低存储器220与/存储器232的带宽需求。
继续参照图4,于步骤S420,根据第二存储器(例如为图2的存储器233)的容量以及该多个输出特征图数据中的最后一个输出特征图数据(例如为图3B的输出特征图数据330-n)的一第一部分数据(例如为,但不限于,一行的区块数据)决定多级运算的级数以及用来产生该多个输出特征图数据中的剩余数据(例如为图3B的多个输出特征图数据330-1~330-(n-1))中每一者的至少一第二部份数据(例如为,但不限于,一行的区块数据)的所需数据量,其中在执行该多级运算的过程中,该存储器管理电路将该第一部份数据与该至少一第二部分数据储存于该第二存储器。
为说明步骤S420,请参照图5A与图5B。图5A为根据本申请一些实施例绘制的图4中的步骤S420的概念示意图。在一些实施例中,步骤S420可用来提高读取存储器233的命中率,以降低对存储器220的存取次数。如先前所述,对于每级运算来说,输入特征图数据的数据尺寸不同于输出特征图数据的数据尺寸。为了使存储器233可尽量储存足够多的区块数据,可利用回推的方式决定多级运算的级数。
例如,如图5A所示,可利用前述的式(2)与式(3)并根据最后一级(即第n级)的输出特征图数据330-n中的一第一部分数据(例如为,但不限于,一行的区块数据)推估第n级运算的输入特征图数据(相当于第n-1级运算所产生的输出特征图数据330-(n-1))的区块数据的数据尺寸与所需数据量(相当于前述的特定预设数值)。接着,可再次利用前述的式(2)与式(3)来根据第n-1级的输出特征图数据330-n中的至少一第二部分数据(例如为一行的区块数据)推估第n-1级运算的输入特征图数据(相当于第n-2级运算所产生的输出特征图数据330-(n-2))的区块数据的数据尺寸与所需数据量。依此类推,直到推出第1级运算的输入特征图数据中的区块数据的数据尺寸与所需数据量(相当于前述的第一预设数值)。接着,可加总第一部分数据的数据量以及用来产生剩余级运算中的至少一第二部分数据的所需数据量为一总数据量,并确认总数据量是否超过存储器233的容量。若总数据量未超出存储器233,则将级数(即数值n)加1,并再次推估。或者,若总数据量超出存储器233,则将级数设为n-1。
图5B为根据本申请一些实施例绘制的图4中的步骤S420的详细步骤流程图。在步骤S501中,获得第二存储器(例如为存储器233)的容量。在步骤S502中,计算各级运算中的输入特征图数据的区块数据的数据尺寸以及输出特征图数据的区块数据的数据尺寸。例如,如先前所述,可利用前述的式(2)以及式(3)计算各级运算的所使用的输入特征图数据与输出特征图数据中的区块数据的数据尺寸。在步骤S503中,假设多级运算的级数为第一数值(例如为数值n),且第一数值大于或等于2。在步骤S504中,根据最后一级运算的输出特征图数据的中第一部份数据(例如为,但不限于,一行的区块数据)回推产生该多个输出特征图数据中的剩余数据中每一者的该至少一第二部分数据所需要的数据量。在步骤S505中,加总第一部分数据的数据量以及用来产生该多个输出特征图数据中的剩余数据中每一者的至少一第二部分数据所需数据量为一总数据量,并确认该总数据量是否大于第二存储器的容量,若总数据量大于第二存储器的容量,确认级数为第一数值减1,且若总数据量小于第二存储器的容量,更新级数为第二数值,并再次执行步骤S504与步骤S505,其中第二数值为第一数值加1。
借由多个S501~S505,可将卷积神经网络模型的一层卷积运算拆分为多次运算。因此,基于相同概念,借由执行多次步骤S420,可将卷积神经网络模型的多层卷积运算进一步地拆分为多级运算。
继续参照图4,于步骤S430中,记录该区块数据的数据尺寸、该多级运算的级数、该第一部分数据的数据量以及该至少一第二部分数据的数据量为预定编译文件,其中该存储器管理电路基于该预定编译文件存取动态随机存取存储器、第一存储器以及第二存储器。
如先前所述,借由步骤S420,可将卷积神经网络模型的每一层卷积运算(其对应于不同指令)各自拆分为多次运算。如此,可记录经由步骤S410与步骤S420所得到的各种信息(例如为多级运算的级数、多级运算中所使用的输入特征图数据与输出特征图数据中的区块数据的数据尺寸与所需数据量等等)与多个指令之间的对应关系为预定编译文件。如此一来,图2的处理器210可根据此预定编译文件发出指令CMD,且存储器管理电路231可基于指令CMD决定如何拆分该指令CMD所对应的卷积运算,并据以存取存储器220、存储器232与存储器233。
在一些实施例中,降低存储器带宽的方法400可由一计算机辅助设计系统与/或一电路仿真软件执行以产生该预定编译文件,且该预定编译文件可预先储存于人工智能系统200的一缓存器(未示出)。如此,处理器210可根据该预定编译文件发出指令CMD。在另一些实施例中,降低存储器带宽的方法400亦可由处理器210执行。上述关于降低存储器带宽的方法400的应用方式仅为示例,且本申请并不以此为限。
图4与图5B的多个操作与/或步骤仅为示例,并非限定需依照此示例中的顺序执行。在不违背本申请的各实施例的操作方式与范围下,在图4与图5B的各个操作与/或步骤当可适当地增加、替换、省略或以不同顺序执行(例如可以是同时执行或是部分同时执行)。
综上所述,本申请一些实施例中的智能处理器装置与降低存储器带宽的方法可以将卷积神经网络模型的多层卷积运算再拆分为多级运算,并将执行该多级运算的过程中所产生出的运算结果暂存于一额外的高速缓存存储器。如此一来,可降低系统原有的存储器的存取次数与数据存取量,以降低该存储器的带宽需求。
虽然本申请的实施例如上所述,然而该多个实施例并非用来限定本申请,本技术领域具有通常知识者可依据本申请的明示或隐含的内容对本申请的技术特征施以变化,凡此种种变化均可能属于本申请所寻求的专利保护范畴,换言之,本申请的专利保护范围须视本申请文件的权利要求书所界定者为准。
符号说明:
200:人工智能系统;
210:处理器;
220,232,233:存储器;
230:智能处理器装置;
231:存储器管理电路;
234:卷积运算电路;
310:输入特征图数据;
310[1],310[2],310[3],310[4]:区块数据;
315:卷积核;
320,320-1,320-2,320-3,320-4,330-1,330-2,330-3,330-4,330-n:输出特征图数据;
320[1],320[2],320[3],320[4]:区块数据;
400:降低存储器带宽的方法;
CMD:指令;
DI:输入数据;
DO:输出数据;
S3-11,S3-12,S3-13,S3-14,S3-15,S3-16:步骤;
S3-21,S3-22,S3-23,S3-24,S3-25,S3-26:步骤;
S3-n1,S3-n2,S3-n3,S3-n4,S3-n5,S3-n6:步骤;
S410,S420,S430:步骤;
S501,S502,S503,S504,S505:步骤;
f_h,h1,h2:高度;
f_w,w1,w2:宽度。
Claims (4)
1.一种智能处理器装置,其特征在于,包括:
一第一存储器;
一存储器管理电路,自一动态随机存取存储器读取一输入数据,并储存所述输入数据至所述第一存储器;
一第二存储器;以及
一卷积运算电路,自所述第一存储器读取所述输入数据,并对所述输入数据执行对应于一卷积运算的多级运算以依序产生多个输出特征图数据;
其中在所述卷积运算电路执行所述多级运算中的一第一级运算以产生所述多个输出特征图数据中的一第一输出特征图数据中的至少一第一区块数据后,所述卷积运算电路储存所述至少一第一区块数据至所述第一存储器,而所述存储器管理电路自所述第一存储器读取并储存所述至少一第一区块数据至所述第二存储器;
当所述第二存储器中储存的所述至少一第一区块数据的数据量满足一默认数值时,所述存储器管理电路自所述第二存储器转移所述至少一第一区块数据至所述第一存储器,且所述卷积运算电路还自所述第一存储器读取所述至少一第一区块数据,并对所述至少一第一区块数据执行所述多级运算中的一第二级运算以产生所述多个输出特征图数据中的一第二输出特征图数据的至少一第二区块数据至所述第一存储器储存,而所述存储器管理电路自所述第一存储器读取并储存所述至少一第二区块数据至所述第二存储器;
其中所述第一存储器直接连接至所述卷积运算电路,且所述第二存储器经由所述存储器管理电路耦接至所述第一存储器;
其中所述默认数值为足以让所述卷积运算电路产生所述至少一第二区块数据的一数据量;
所述第一存储器为二维存储器,且所述第一存储器的数据宽度等于所述卷积运算电路的数据宽度,而所述第二存储器为一维存储器且所述第二存储器的数据宽度不同于所述卷积运算电路的数据宽度。
2.如权利要求1所述的智能处理器装置,其特征在于,所述第一存储器为一第二级(L2)高速缓存存储器,且所述第二存储器为一第三级(L3)高速缓存存储器。
3.如权利要求1所述的智能处理器装置,其特征在于,当所述卷积运算电路产生所述多个输出特征图数据中的最后一个输出特征图数据后,所述存储器管理电路自所述第二存储器转移所述最后一个输出特征图数据至所述动态随机存取存储器。
4.如权利要求1所述的智能处理器装置,其特征在于,重复执行下列操作至所述第二存储器中储存的所述至少一第一区块数据的数据量满足所述默认数值:
所述存储器管理电路自所述动态随机存取存储器读取所述输入数据的至少一区块数据,并储存所述至少一区块数据至所述第一存储器;
所述卷积运算电路自所述第一存储器读取所述至少一区块数据并执行所述第一级运算以产生所述至少一第一区块数据;
所述卷积运算电路储存所述至少一第一区块数据至所述第一存储器;以及
所述存储器管理电路自所述第一存储器读取并储存所述至少一第一区块数据至所述第二存储器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111433001.1A CN114118395B (zh) | 2021-11-29 | 2021-11-29 | 智能处理器装置与降低存储器带宽的方法 |
CN202211296441.1A CN115660055A (zh) | 2021-11-29 | 2021-11-29 | 降低存储器带宽的方法 |
US17/968,941 US20230168809A1 (en) | 2021-11-29 | 2022-10-19 | Intelligence processor device and method for reducing memory bandwidth |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111433001.1A CN114118395B (zh) | 2021-11-29 | 2021-11-29 | 智能处理器装置与降低存储器带宽的方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211296441.1A Division CN115660055A (zh) | 2021-11-29 | 2021-11-29 | 降低存储器带宽的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114118395A CN114118395A (zh) | 2022-03-01 |
CN114118395B true CN114118395B (zh) | 2023-03-28 |
Family
ID=80371346
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111433001.1A Active CN114118395B (zh) | 2021-11-29 | 2021-11-29 | 智能处理器装置与降低存储器带宽的方法 |
CN202211296441.1A Pending CN115660055A (zh) | 2021-11-29 | 2021-11-29 | 降低存储器带宽的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211296441.1A Pending CN115660055A (zh) | 2021-11-29 | 2021-11-29 | 降低存储器带宽的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230168809A1 (zh) |
CN (2) | CN114118395B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3035204B1 (en) * | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
CN110555847B (zh) * | 2019-07-31 | 2021-04-02 | 瀚博半导体(上海)有限公司 | 一种基于卷积神经网络的图像处理方法及装置 |
CN113222129B (zh) * | 2021-04-02 | 2024-02-13 | 西安电子科技大学 | 一种基于多级缓存循环利用的卷积运算处理单元及系统 |
-
2021
- 2021-11-29 CN CN202111433001.1A patent/CN114118395B/zh active Active
- 2021-11-29 CN CN202211296441.1A patent/CN115660055A/zh active Pending
-
2022
- 2022-10-19 US US17/968,941 patent/US20230168809A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN115660055A (zh) | 2023-01-31 |
CN114118395A (zh) | 2022-03-01 |
US20230168809A1 (en) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US20210117810A1 (en) | On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system | |
US11675997B2 (en) | Device and method for processing convolution operation using kernel | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
JP6927320B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
CN111950718B (zh) | 利用存算一体芯片实现递进式cnn运算的方法 | |
CN113344170B (zh) | 神经网络权重矩阵调整方法、写入控制方法以及相关装置 | |
WO2022206556A1 (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
CN116010299B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
KR20210014561A (ko) | 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 | |
CN109902821B (zh) | 一种数据处理方法、装置及相关组件 | |
CN114118395B (zh) | 智能处理器装置与降低存储器带宽的方法 | |
US11182128B2 (en) | Multiply-accumulate operation device, multiply-accumulate operation methods, and systems | |
CN116150563B (zh) | 一种业务执行方法、装置、存储介质及电子设备 | |
TWI798972B (zh) | 智慧處理器裝置與降低記憶體頻寬的方法 | |
CN114723024A (zh) | 用于存算一体芯片的基于线性规划的神经网络映射方法 | |
JPH05324700A (ja) | 行列乗算装置 | |
CN112308762A (zh) | 一种数据处理方法及装置 | |
JP7437135B2 (ja) | プロセッシングシステム | |
TWI828185B (zh) | 三維卷積運算裝置與三維卷積運算方法 | |
CN110826704B (zh) | 一种用于防止神经网络过拟合的处理装置及系统 | |
US20240202526A1 (en) | Memory device performing pruning, method of operating the same, and electronic device performing pruning | |
WO2021199119A1 (ja) | 求解システム、求解方法および求解プログラム | |
US20230195651A1 (en) | Host device performing near data processing function and accelerator system including the same |
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 |