CN108629406A - 用于卷积神经网络的运算装置 - Google Patents
用于卷积神经网络的运算装置 Download PDFInfo
- Publication number
- CN108629406A CN108629406A CN201710182633.2A CN201710182633A CN108629406A CN 108629406 A CN108629406 A CN 108629406A CN 201710182633 A CN201710182633 A CN 201710182633A CN 108629406 A CN108629406 A CN 108629406A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- window
- row
- convolutional neural
- 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
Links
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
一种用于卷积神经网络的运算装置,所述装置包括:多个行数据缓存单元,每一行数据缓存单元经由第一数据选择器接收外部输入的特征图数据或其他行数据缓存单元输出的特征图数据,每一行数据缓存单元具有至少一个数据窗口;多个核心计算单元,每一行数据缓存单元与至少一个核心计算单元耦合,所述核心计算单元包括:权重寄存器,用于获取权重数据;计算单元,根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行计算。本发明方案可以实现行数据缓存单元数目与权重寄存器数目的可配置化,从而满足用户对于不同的待运算窗口尺寸的需求。
Description
技术领域
本发明涉及神经网络算法领域和计算机硬件领域,尤其是涉及一种用于卷积神经网络的运算装置。
背景技术
近年来,深度卷积神经网络在诸多领域取得广泛的成功,如人脸识别,智能视频监控,辅助自动驾驶等。
在现有的一种用于卷积神经网络(Convolutional Neural Network,CNN)的运算装置中,采用行数据缓存单元获取特征图数据并输出至核心计算单元(Core-Calculate,CE),采用核心计算单元中的权重寄存器获取权重数据并输出至所述核心计算单元中的计算单元,进而采用所述计算单元,根据行数据缓存单元的特征图数据与所述权重数据进行计算。
但是,在现有的用于卷积神经网络的运算装置中,通常采用固定行数的行数据缓存单元,以及与该行数据缓存单元的行数对应的权重寄存器,导致仅能基于固定的窗口尺寸进行计算,当用户需要不同的窗口尺寸,以实现不同的神经网络结构(例如卷积神经网络AlexNet或GoogleNet)时,或者实现不同的应用(例如人脸识别、物体检测、图像分类)时,无法利用同一装置满足用户需求。
发明内容
本发明解决的技术问题是提供一种用于卷积神经网络的运算装置,可以实现行数据缓存单元数目与权重寄存器数目的可配置化,从而满足用户对于不同的待运算窗口尺寸的需求。
为解决上述技术问题,本发明实施例提供一种用于卷积神经网络的运算装置,包括:多个行数据缓存单元,每一行数据缓存单元经由第一数据选择器接收外部输入的特征图数据或其他行数据缓存单元输出的特征图数据,每一行数据缓存单元具有至少一个数据窗口;多个核心计算单元,每一行数据缓存单元与至少一个核心计算单元耦合,所述核心计算单元包括:权重寄存器,用于获取权重数据;计算单元,根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行计算;其中,经由所述第一数据选择器串联的行数据缓存单元包含的行数大于等于待运算窗口的行数,多个权重寄存器中的权重数据配置为与所述待运算窗口的尺寸适配。
可选的,每个数据窗口承载的特征图数据的行数等于所述行数据缓存单元的行数。
可选的,所述数据窗口在所述行数据缓存单元内的位置固定且互不覆盖。
可选的,所述用于卷积神经网络的运算装置还包括:第二数据选择器,所述核心计算单元经由所述第二数据选择器选择用于计算的数据窗口。
可选的,每个权重寄存器的权重数据的排列行数等于所述行数据缓存单元的行数。
可选的,当多个权重寄存器中的权重数据的排列范围超出所述待运算窗口的尺寸时,超出窗口尺寸的权重数据为零。
可选的,所述计算单元根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行以下至少一种运算:乘加和、求和以及计算最大值。
可选的,所述用于卷积神经网络的运算装置还包括:线性运算单元;所述核心计算单元以矩阵的形式排列,同一列上的核心计算单元的计算结果都输出给同一个线性运算单元,同一行上的核心计算单元耦接同一行数据缓存单元。
可选的,所述线性运算单元,适于对所述同一列上所有核心计算单元的计算结果进行以下至少一种运算:乘加和、求和以及计算最大值。
可选的,所述用于卷积神经网络的运算装置还包括:非线性变换运算单元;所述非线性变换运算单元,适于对所述线性运算单元的计算结果进行非线性变换。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在本发明实施例的一种用于卷积神经网络的运算装置中,包括:多个行数据缓存单元,每一行数据缓存单元经由第一数据选择器接收外部输入的特征图数据或其他行数据缓存单元输出的特征图数据,每一行数据缓存单元具有至少一个数据窗口;多个核心计算单元,每一行数据缓存单元与至少一个核心计算单元耦合,所述核心计算单元包括:权重寄存器,用于获取权重数据;计算单元,根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行计算;其中,经由所述第一数据选择器串联的行数据缓存单元包含的行数大于等于待运算窗口的行数,多个权重寄存器中的权重数据配置为与所述待运算窗口的尺寸适配。采用上述方案,通过增加第一数据选择器,可以将行数据缓存单元配置为单独使用以接收特征图数据,或者也可以将多个行数据缓存单元配置为串联后共同使用以接收特征图数据,从而可以配置与待运算窗口的尺寸适配的特征图数据与权重数据进行计算。利用上述方案,可以通过行数据缓存单元数目与权重寄存器数目的可配置化,满足用户对于不同的待运算窗口尺寸的需求,例如可以在应用中获得不同的分辨率和刷新率。
进一步,当预设数目的权重寄存器的排列范围超出所述待运算的窗口尺寸时,超出所述窗口尺寸的数据为零。采用本发明实施例的方案,通过将权重寄存器中的权重数据处于待运算的窗口尺寸以外的部分置零,可以使得多个权重寄存器中的权重数据等效为与待运算的窗口尺寸适配,避免超出所述窗口尺寸的数据对运算结果带来影响,从而提高运算的精准度。
附图说明
图1是现有技术中一种用于卷积神经网络的运算装置的结构示意图;
图2是现有技术中一种行数据缓存单元和核心计算单元的结构示意图;
图3是本发明实施例中一种用于卷积神经网络的运算装置的结构示意图;
图4是本发明实施例中一种行数据缓存单元的结构示意图;
图5是本发明实施例中一种权重寄存器的结构示意图;
图6是本发明实施例中另一种用于卷积神经网络的运算装置的结构示意图;
图7是本发明实施例中一种线性运算单元的结构示意图;
图8是本发明实施例中一种计算单元的结构示意图;
图9是本发明实施例中一种CNN加速器的结构示意图。
具体实施方式
在现有的一种用于卷积神经网络的运算装置中,采用行数据缓存单元获取特征图数据,采用权重寄存器获取权重数据并输出至所述核心计算单元,进而采用核心计算单元,根据行数据缓存单元的特征图数据与所述权重数据进行计算。
图1示出的是现有技术中一种用于卷积神经网络的运算装置的结构示意图,所述运算装置可以包括行数据缓存单元111和第一核心计算单元121。
其中,行数据缓存单元111用于获取特征图数据131,第一核心计算单元121包括权重寄存器和计算单元,用于获取第一权重数据141,并根据特征图数据131和第一权重数据141进行计算。
需要说明的是,行数据缓存单元111可以与多个核心计算单元耦合,核心计算单元的数目不作限制,不同的核心计算单元获取的权重数据可以不同。如图1示出的运算装置还可以包括第二核心计算单元122以及第三核心计算单元123,其中核心计算单元122用于获取第二权重数据142,核心计算单元123用于获取第三权重数据143。
有关图1中行数据缓存单元111的具体结构,第一核心计算单元121、第二核心计算单元122以及第三核心计算单元123中任意一个核心计算单元的具体结构,请参照图2,图2是现有技术中一种行数据缓存单元和核心计算单元的结构示意图。
行数据缓存单元201以行缓冲输入的形式缓存输入的特征图数据221,也即每当向行数据缓存单元201输入一个特征图数据221时,通过移位寄存器将行数据缓存单元201中的所有数据依图2中箭头方向滑动移位,并输出一个特征图数据。
进一步地,每个行数据缓存单元具有至少一个数据窗口,每个数据窗口与一个不同的核心计算单元耦合。如图2所示,行数据缓存单元201具有第一数据窗口211、第二数据窗口212以及第三数据窗口213,其中第一数据窗口211与核心计算单元202耦合。核心计算单元202包括权重寄存器214和计算单元215,所述权重寄存器214用于获取权重数据222,所述计算单元215用于根据第一数据窗口211中的特征图数据与所述权重寄存器214中的权重数据进行计算。其中,第一数据窗口211、第二数据窗口212以及第三数据窗口213经由数据选择器216连接至计算单元215,以使计算单元215可以根据实际需求选择任一数据窗口中的特征图数据。
在现有的用于卷积神经网络的运算装置中,采用固定行数的行数据缓存单元,以及与该行数据缓存单元的行数对应的权重寄存器,导致仅能基于固定的窗口尺寸进行计算。例如图2示出的行数据缓存单元201为3行,数据窗口尺寸为3×3,对应的权重寄存器214具有的权重数据的排列范围为3×3,导致仅能实现窗口尺寸为3×3的卷积神经网络运算。
但是,用户可能需要不同的窗口尺寸,以实现不同的分辨率和刷新率应用,此时采用无法利用上述运算装置满足用户需求。
本发明的发明人经过研究发现,现有的用于卷积神经网络的运算装置不具有可配置性,由于每个行数据缓存单元的行数是固定的,导致仅能实现固定窗口尺寸的计算。
在本发明实施例的一种用于卷积神经网络的运算装置中,包括:多个行数据缓存单元,每一行数据缓存单元经由第一数据选择器接收外部输入的特征图数据或其他行数据缓存单元输出的特征图数据,每一行数据缓存单元具有至少一个数据窗口;多个核心计算单元,每一行数据缓存单元与至少一个核心计算单元耦合,所述核心计算单元包括:权重寄存器,用于获取权重数据;计算单元,根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行计算;其中,经由所述第一数据选择器串联的行数据缓存单元包含的行数大于等于待运算窗口的行数,多个权重寄存器中的权重数据配置为与所述待运算窗口的尺寸适配。采用上述方案,通过增加第一数据选择器,可以将行数据缓存单元配置为单独使用以接收特征图数据,或者也可以将多个行数据缓存单元配置为串联后共同使用以接收特征图数据,从而可以配置与待运算窗口的尺寸适配的特征图数据与权重数据进行计算。利用上述方案,可以通过行数据缓存单元数目与权重寄存器数目的可配置化,满足用户对于不同的待运算窗口尺寸的需求,例如可以在应用中获得不同的分辨率和刷新率。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图3是本发明实施例中一种用于卷积神经网络的运算装置的结构示意图。所述运算装置包括第一行数据缓存单元301、第二行数据缓存单元302、第一核心计算单元303、第二核心计算单元304、第三核心计算单元305、第四核心计算单元306以及第一数据选择器307和308。
其中,每一个行数据缓存单元经由第一数据选择器(Multiplexer,MUX)接收外部输入的特征图数据或其他行数据缓存单元输出的特征图数据。具体地,如图3中示出的第一行数据缓存单元301可以经由第一数据选择器308与第二行数据缓存单元302串联,以使第二行数据缓存单元302可以选择接收第一行数据缓存单元301移位输出的特征图数据;或者,第二行数据缓存单元302也可以经由第一数据选择器308接收外部输入的第二特征图数据312。在所述运算装置中,第一行数据缓存单元301还可以经由第一数据选择器307选择接收外部输入的第一特征图数据311或者其他行数据缓存单元输出的特征图数据。其中,第一数据选择器307和308选择输出的数据可以经由外部的控制信号控制。
需要指出的是,所述串联表示至少两个第一行数据缓存单元经由第一数据选择器连接,例如第一行数据缓存单元301经由第一数据选择器308与第二行数据缓存单元302连接,以使第一行数据缓存单元301移位输出的特征图数据输入至第一数据选择器308,而被第二行数据缓存单元302获取。
其中,每一行数据缓存单元与至少一个核心计算单元耦合。如图3所示,行数据缓存单元301与第一核心计算单元303、第二核心计算单元304耦合,第二行数据缓存单元302与第三核心计算单元305、第四核心计算单元306耦合。
需要指出的是,在图3示出的运算装置中,采用2个行数据缓存单元和4个核心计算单元为例进行描述,而本发明实施例对行数据缓存单元和核心计算单元的具体数目不作限制。
其中,每个核心计算单元包括:权重寄存器和计算单元。以第一核心计算单元303为例进行说明,所述第一核心计算单元303包括权重寄存器313和计算单元315,其中权重寄存器313用于获取权重数据;计算单元315根据所述第一行数据缓存单元301中的特征图数据与所述权重寄存器313中的权重数据进行计算。
其中,计算单元315可以根据第一行数据缓存单元301中的特征图数据与权重寄存器313中的权重数据进行以下至少一种运算:乘加和、求和以及计算最大值
其中,经由一个或多个第一数据选择器串联的行数据缓存单元包含的总行数大于等于待运算窗口的行数。具体地,由于每个行数据缓存单元的行数是预先设置的,例如为3行,而待运算窗口包含的行数可能大于每个行数据缓存单元的行数,由此,应当基于待运算窗口的行数配置串联的行数据缓存单元的数目,并且经由一个或多个第一数据选择器对行数据缓存单元进行串联。
以下以待运算窗口为5×5进行说明。图4是本发明实施例中一种行数据缓存单元的结构示意图。
由于单个行数据缓存单元的行数3小于待运算窗口的行数5,需要将至少两个行数据缓存单元进行串联。如图4所示,第一行数据缓存单元401和第二行数据缓存单元402经由第一数据选择器403串联,配置第一行数据缓存单元401移位输出的特征图数据输入至第二行数据缓存单元402。可以理解的是,对于其他窗口尺寸,例如7×7,可以将至少三个行数据缓存单元进行串联,以使行数据缓存单元的总行数9大于待运算窗口的行数7,此处不再赘述其它窗口尺寸的串联方法。
其中,每个行数据缓存单元具有至少一个数据窗口,每个数据窗口与一个不同的CE耦合,数据窗口例如可以采用移位寄存器来实现。如图4所示,第一行数据缓存单元401具有第一数据窗口411和第二数据窗口412,第二行数据缓存单元402具有第三数据窗口413和第四数据窗口414,上述各数据窗口的尺寸例如可以是3×3。其中,第一数据窗口411和第一CE421耦合,以使第一CE421基于第一数据窗口411的特征图数据进行计算;第二数据窗口412和第二CE422耦合,以使第二CE422基于第二数据窗口412的特征图数据进行计算;第三数据窗口413和第三CE423耦合,以使第三CE423基于第三数据窗口413的特征图数据进行计算;第四数据窗口414和第四CE424耦合,以使第四CE424基于第四数据窗口414的特征图数据进行计算。
进一步地,在本发明实施例中,所述用于卷积神经网络的运算装置还可以包括第二数据选择器,所述核心计算单元经由所述第二数据选择器选择用于计算的数据窗口。
具体地,可以将多个数据窗口连接至第二数据选择器的输入端,并将所述第二数据选择器的输出端连接至CE,以使CE基于实际应用选择多个数据窗口中的一个作为输入数据的来源,并根据选择的数据窗口的特征图数据进行计算。采用本发明实施例的方案,可以在不改变当前装置的连接关系的情况下,选择不同的特征图数据进行计算。
优选地,每个数据窗口承载的特征图数据的行数等于所述行数据缓存单元的行数,从而在每次计算过程中,能够基于行数据缓存单元的行数囊括尽可能多的数据,提高计算效率。
优选地,所述数据窗口在所述行数据缓存单元内的位置固定且互不覆盖,从而使每个特征图数据的使用频率相近,避免部分极值数据对计算结果产生影响。
继续参照图3,采用本发明实施例的方案,需要将多个权重寄存器中的权重数据配置为与所述待运算窗口的尺寸适配。以下以待运算窗口为5×5为例,参照图5进行说明。
图5是本发明实施例中一种权重寄存器的结构示意图。由于单个权重寄存器中的权重数据3×3小于待运算窗口的尺寸5×5,需要配置至少4个权重寄存器中的权重数据,以覆盖待运算窗口的尺寸。更具体而言,4个权重寄存器中共有36个权重数据,可以覆盖尺寸为5×5的待运算窗口。
可以理解的是,对于其他窗口尺寸,例如7×7,可以配置至少9个权重寄存器,以3×3的矩阵形式排列,以使所有权重数据的排列范围9×9大于待运算窗口的排列范围7×7。此处不再赘述针对其它窗口尺寸,权重寄存器的配置方法。
进一步地,当多个权重寄存器中的权重数据的排列范围超出所述待运算窗口的尺寸时,超出窗口尺寸的权重数据为零。
在图5示出的权重寄存器中,包括第一权重寄存器501、第二权重寄存器502、第三权重寄存器503和第四权重寄存器504。虚线圈出的范围为待运算窗口的尺寸5×5,除了第一权重寄存器501,另外三个权重寄存器中均有部分权重数据超出待运算窗口的尺寸,设置超出窗口尺寸的权重数据为零。
采用本发明实施例的方案,通过将权重寄存器中的权重数据处于待运算的窗口尺寸以外的部分置零,可以使得多个权重寄存器中的权重数据等效为与待运算的窗口尺寸适配,避免超出所述窗口尺寸的数据对运算结果带来影响,从而提高运算的精准度。
在一个优选的实施例中,每个权重寄存器的权重数据的排列行数等于所述行数据缓存单元的行数,从而对于每一批待运算的特征图数据,通过单轮相乘即有机会覆盖所述行数据缓存单元的数据窗口中的数据,相比于以卷积方式进行多轮相乘,有效提高运算效率。
采用本发明实施例的方案,通过增加第一数据选择器,可以配置单个或多个行数据缓存单元的特征图数据作为一次计算的输入数据,进而可以配置与待运算窗口的尺寸适配的特征图数据与权重数据,并进行计算,从而可以通过行数据缓存单元数目与权重寄存器数目的可配置化,满足用户对于不同的待运算窗口尺寸的需求,在应用中获得不同的分辨率和刷新率。
参照图6,图6是本发明实施例中另一种用于卷积神经网络的运算装置的结构示意图。
所述另一种用于卷积神经网络的运算装置可以包括:第一行数据缓存单元601、第二行数据缓存单元602、第一核心计算单元603、第二核心计算单元604、第三核心计算单元605、第四核心计算单元606、第一数据选择器607、第一数据选择器608、第一线性运算单元651、第二线性运算单元652、第一非线性运算单元661和第二非线性运算单元662。
其中,核心计算单元以矩阵的形式排列,同一列上的核心计算单元的计算结果都输出给同一个线性运算单元,同一行上的核心计算单元耦接同一行数据缓存单元。如图6所示,第一核心计算单元603、第二核心计算单元604、第三核心计算单元605、第四核心计算单元606以矩阵的形式排列,同一列上的核心计算单元,如第一核心计算单元603和第三核心计算单元605的计算结果输出给第一线性运算单元651,第二核心计算单元604和第四核心计算单元606的计算结果输出给第二线性运算单元652。并且第一核心计算单元603和第二核心计算单元604耦接第一行数据缓存单元601,第三核心计算单元605和第四核心计算单元606耦接第二行数据缓存单元602。
需要指出的是,本发明实施例对于行数据缓存单元和核心计算单元的具体数目不作限制。
参照图7,图7是本发明实施例中一种线性运算单元的结构示意图。所述线性运算单元可以包括:求和计算单元701,平均值计算单元702,最大值计算单元703。所述线性运算单元的输入为:同一列上所有核心计算单元的计算结果711、中间结果712、偏移(bias)713,以及其他线性运算单元的结果714。
进一步地,由于资源限制,通常一次只能计算部分输入图像的卷积运算,将所述部分输入图像的卷积运算结果作为中间结果712进行存储,用于与下一批部分输入图像的卷积运算结果相加,直至处理完所有输入图像的卷积运算结果。
偏移713用于增加偏移量至核心计算单元的计算结果711,以使得到的最终卷积结果满足实际需求。
求和计算单元701用于卷积运算,平均值计算单元702用于平均值方式的池化运算,最大值计算单元703用于最大值方式的池化运算。其他线性运算单元的结果714在支持大于3×3的卷积或池化(拼接PE)时使用。
进一步地,每个非线性变换运算单元,适于对线性运算单元的计算结果进行非线性变换。
继续参照图6,可以采用第一非线性运算单元661对第一线性运算单元651的计算结果进行非线性变换,采用第二非线性运算单元662对第二线性运算单元652的计算结果进行非线性变换。需要指出的是,本发明实施例对于线性运算单元和非线性运算单元的具体数目不作限制。
在具体实施中,典型的非线性变换运算方法包括:ReLU,Tanh,Sigmoid等。
关于图6示出的另一种用于卷积神经网络的运算装置的更多详细内容,请参照前文及图1至图5示出的一种用于卷积神经网络的运算装置的相关描述,此处不再赘述。
在上述两种用于卷积神经网络的运算装置的具体应用中,计算单元可以根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行以下至少一种运算:乘加和、求和以及计算最大值。其中,乘加和运算用于卷积运算,求和运算用于平均值方式的池化运算(Average Pooling),计算最大值运算用于最大值方式的池化运算(Max Pooling)。
图8是本发明实施例中一种计算单元的结构示意图。如图8所示,卷积计算为将数据窗口中特征图数据801与权重数据802输入乘法器803,进行相乘,得到的相乘结果经过求和器804求和后输出。
平均值方式的池化运算为将数据窗口中的特征图数据801经过求和器804求和后输出。所述求和结果进一步输出至核心计算单元中的线性运算单元,以计算平均值方式的池化运算的最终结果。
最大值方式的池化运算为将数据窗口中特征图数据801经过最大值计算器805后输出最大值。所述最大值结果进一步输出至线性运算单元,以计算最大值方式的池化运算的最终结果。
其中,所述数据窗口中特征图数据801和权重数据802的流向可以基于第三数据选择器811和第四数据选择器812进行选择。
在采用本发明实施例的方案进行具体应用时,用于卷积神经网络的运算装置可以根据指令运行,指令的内容可以包括:
计算类型:卷积,平均值方式的池化运算,或最大值方式的池化运算;
卷积核大小/池化窗口大小;
卷积窗口/池化窗口的滑动步长;
是否做非线性运算;
输入特征图像的个数;
输入特征图像的高和宽;
输出特征图像的个数;
权重数据在内存中的地址;
输入数据在内存中的地址;
输出数据在内存中的地址;
中间结果数据在内存中的地址;
是否需要加上偏离率;
计算结果是否是中间结果;如果是,计算结果将存储到中间数据缓存区;否则,计算结果将存储到输出数据区。
进一步地,基于本发明实施例中描述的用于卷积神经网络的运算装置,可以获得一种CNN加速器,其结构示意图如图9所示。该加速器可以用于加速CNN中计算量最大的特征抽取。
CNN加速器901可以包括片内存储介质911、运算装置912和指令控制模块913。片内存储介质911用于存储CNN加速器901外部传来的指令和数据,以及运算装置912在计算过程中产生的数据。指令控制模块913用于从片内存储介质911中读取指令,根据指令配置运算装置912的计算类型和参数;从片内存储介质911中读取运算装置912的输入数据;将运算装置912的输出数据存储到片内存储介质911中。有关运算装置912的相关内容,请参照前文及图1至图8示出的用于卷积神经网络的运算装置的相关描述,此处不再赘述。
进一步地,CNN加速器901在工作时执行的步骤包括:
1)中央处理器(Central Processing Unit,CPU)902将要处理的输入数据,CNN模型数据(包括权重数据和偏离率),以及CNN指令写入CNN加速器901的片内存储介质911中,所述片内存储介质911简称静态随机存储器(Static Random Access Memory,SRAM);
2)CPU902启动CNN加速器901执行;
3)CNN加速器901从片内存储介质911中读取指令,根据指令执行计算过程;计算过程可以包括:从片内存储介质911读取模型数据,输入数据,以及中间结果数据输入给运算装置912;运算装置912执行计算;将计算结果存入片内存储介质911;
所有指令执行完毕后,给CPU902发中断,通知CPU902执行完毕;
4)重复步骤1)至步骤3),直至整个CNN网络计算完毕;
5)CPU902将CNN最终计算结果从片内存储介质911写入外部内存。
更进一步地,在具体应用中,所述片内存储介质911为由多个区块(bank)组成的SRAM。整个片内存储介质911可以划分为五个区域:
输入缓存:用于存储一个卷积层的输入数据
输出缓存:用于存储一个卷积层的最终计算结果
中间数据缓存:用于存储中间计算结果
指令区:存储CNN加速器901的指令。
CNN模型数据区:存储计算一个卷积层所需的权重、偏离率等模型数据。该数据区不需要存储整个CNN的模型数据,而只需存储计算当前CNN指令所涉及到的部分模型数据。
当一个卷积层计算完毕后,交换输入缓存和输出缓存。也即当前卷积层的计算结果作为下一个卷积层的输入;而输入缓存的数据可以丢弃,存储空间用于保存下一个卷积层的输出。采用上述方式,中间计算结果不需要写入外部主存储器,能够减少对外部主存储器的读取和写入次数,降低加速器芯片的能量消耗。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (10)
1.一种用于卷积神经网络的运算装置,其特征在于,包括:
多个行数据缓存单元,每一行数据缓存单元经由第一数据选择器接收外部输入的特征图数据或其他行数据缓存单元输出的特征图数据,每一行数据缓存单元具有至少一个数据窗口;
多个核心计算单元,每一行数据缓存单元与至少一个核心计算单元耦合,
所述核心计算单元包括:
权重寄存器,用于获取权重数据;
计算单元,根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行计算;
其中,经由所述第一数据选择器串联的行数据缓存单元包含的行数大于等于待运算窗口的行数,多个权重寄存器中的权重数据配置为与所述待运算窗口的尺寸适配。
2.根据权利要求1所述的用于卷积神经网络的运算装置,其特征在于,每个数据窗口承载的特征图数据的行数等于所述行数据缓存单元的行数。
3.根据权利要求1所述的用于卷积神经网络的运算装置,其特征在于,所述数据窗口在所述行数据缓存单元内的位置固定且互不覆盖。
4.根据权利要求1所述的用于卷积神经网络的运算装置,其特征在于,还包括:
第二数据选择器,所述核心计算单元经由所述第二数据选择器选择用于计算的数据窗口。
5.根据权利要求1所述的用于卷积神经网络的运算装置,其特征在于,
每个权重寄存器的权重数据的排列行数等于所述行数据缓存单元的行数。
6.根据权利要求1所述的用于卷积神经网络的运算装置,其特征在于,
当多个权重寄存器中的权重数据的排列范围超出所述待运算窗口的尺寸时,超出窗口尺寸的权重数据为零。
7.根据权利要求1所述的用于卷积神经网络的运算装置,其特征在于,所述计算单元根据所述数据窗口中的特征图数据与所述权重寄存器中的权重数据进行以下至少一种运算:乘加和、求和以及计算最大值。
8.根据权利要求1所述的用于卷积神经网络的运算装置,其特征在于,还包括:线性运算单元;
所述核心计算单元以矩阵的形式排列,同一列上的核心计算单元的计算结果都输出给同一个线性运算单元,同一行上的核心计算单元耦接同一行数据缓存单元。
9.根据权利要求8所述的用于卷积神经网络的运算装置,其特征在于,
所述线性运算单元,适于对所述同一列上所有核心计算单元的计算结果进行以下至少一种运算:乘加和、求和以及计算最大值。
10.根据权利要求8或9所述的用于卷积神经网络的运算装置,其特征在于,
还包括:非线性变换运算单元;
所述非线性变换运算单元,适于对所述线性运算单元的计算结果进行非线性变换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710182633.2A CN108629406B (zh) | 2017-03-24 | 2017-03-24 | 用于卷积神经网络的运算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710182633.2A CN108629406B (zh) | 2017-03-24 | 2017-03-24 | 用于卷积神经网络的运算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108629406A true CN108629406A (zh) | 2018-10-09 |
CN108629406B CN108629406B (zh) | 2020-12-18 |
Family
ID=63707843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710182633.2A Active CN108629406B (zh) | 2017-03-24 | 2017-03-24 | 用于卷积神经网络的运算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108629406B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109472355A (zh) * | 2018-11-06 | 2019-03-15 | 地平线(上海)人工智能技术有限公司 | 卷积处理引擎及控制方法和相应的卷积神经网络加速器 |
CN110009644A (zh) * | 2019-03-26 | 2019-07-12 | 深兰科技(上海)有限公司 | 一种特征图行像素分段的方法和装置 |
CN110555512A (zh) * | 2019-07-30 | 2019-12-10 | 北京航空航天大学 | 一种二值卷积神经网络数据重用方法及装置 |
CN111144558A (zh) * | 2020-04-03 | 2020-05-12 | 深圳市九天睿芯科技有限公司 | 基于时间可变的电流积分和电荷共享的多位卷积运算模组 |
CN113313228A (zh) * | 2020-02-26 | 2021-08-27 | 杭州知存智能科技有限公司 | 数据缓存电路和方法 |
US11216375B2 (en) | 2020-02-26 | 2022-01-04 | Hangzhou Zhicun Intelligent Technology Co., Ltd. | Data caching |
WO2022007266A1 (zh) * | 2020-07-08 | 2022-01-13 | 嘉楠明芯(北京)科技有限公司 | 一种卷积神经网络的加速方法及装置 |
CN113947200A (zh) * | 2021-12-21 | 2022-01-18 | 珠海普林芯驰科技有限公司 | 神经网络的加速计算方法及加速器、计算机可读存储介质 |
CN115469826A (zh) * | 2022-09-16 | 2022-12-13 | 深圳思谋信息科技有限公司 | 数据处理方法、装置、计算机设备及计算机可读存储介质 |
TWI834729B (zh) * | 2018-10-31 | 2024-03-11 | 南韓商三星電子股份有限公司 | 神經網路處理器及其卷積操作方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246508A (zh) * | 2008-02-26 | 2008-08-20 | 江苏大学 | 基于fpga的神经网络缺失数据估算器及其估算方法 |
CN101809597A (zh) * | 2007-09-26 | 2010-08-18 | 佳能株式会社 | 计算处理装置及方法 |
CN102065309A (zh) * | 2010-12-07 | 2011-05-18 | 青岛海信信芯科技有限公司 | 一种dct实现方法及dct实现电路 |
US20120084825A1 (en) * | 2010-10-05 | 2012-04-05 | Verizon Patent And Licensing Inc. | Provisioning an enhanced television (etv) application |
CN102665049A (zh) * | 2012-03-29 | 2012-09-12 | 中国科学院半导体研究所 | 基于可编程视觉芯片的视觉图像处理*** |
CN205139973U (zh) * | 2015-10-26 | 2016-04-06 | 中国人民解放军军械工程学院 | 基于fpga器件构建的bp神经网络 |
CN105681628A (zh) * | 2016-01-05 | 2016-06-15 | 西安交通大学 | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 |
CN106203617A (zh) * | 2016-06-27 | 2016-12-07 | 哈尔滨工业大学深圳研究生院 | 一种基于卷积神经网络的加速处理单元及阵列结构 |
-
2017
- 2017-03-24 CN CN201710182633.2A patent/CN108629406B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101809597A (zh) * | 2007-09-26 | 2010-08-18 | 佳能株式会社 | 计算处理装置及方法 |
CN101246508A (zh) * | 2008-02-26 | 2008-08-20 | 江苏大学 | 基于fpga的神经网络缺失数据估算器及其估算方法 |
US20120084825A1 (en) * | 2010-10-05 | 2012-04-05 | Verizon Patent And Licensing Inc. | Provisioning an enhanced television (etv) application |
CN102065309A (zh) * | 2010-12-07 | 2011-05-18 | 青岛海信信芯科技有限公司 | 一种dct实现方法及dct实现电路 |
CN102665049A (zh) * | 2012-03-29 | 2012-09-12 | 中国科学院半导体研究所 | 基于可编程视觉芯片的视觉图像处理*** |
CN205139973U (zh) * | 2015-10-26 | 2016-04-06 | 中国人民解放军军械工程学院 | 基于fpga器件构建的bp神经网络 |
CN105681628A (zh) * | 2016-01-05 | 2016-06-15 | 西安交通大学 | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 |
CN106203617A (zh) * | 2016-06-27 | 2016-12-07 | 哈尔滨工业大学深圳研究生院 | 一种基于卷积神经网络的加速处理单元及阵列结构 |
Non-Patent Citations (2)
Title |
---|
MOHAMMED ALAWAD 等: "Stochastic-based deep convolutional networks with reconfigurable logic fabric", 《IEEE TRANSACTIONS ON MULTI-SCALE COMPUTER SYSTEMS》 * |
高明: "基于神经网络的FPGA架构探索", 《中国优秀硕士学位论文全文数据库-信息科技辑》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI834729B (zh) * | 2018-10-31 | 2024-03-11 | 南韓商三星電子股份有限公司 | 神經網路處理器及其卷積操作方法 |
CN109472355B (zh) * | 2018-11-06 | 2021-01-01 | 地平线(上海)人工智能技术有限公司 | 卷积处理引擎及控制方法和相应的卷积神经网络加速器 |
CN109472355A (zh) * | 2018-11-06 | 2019-03-15 | 地平线(上海)人工智能技术有限公司 | 卷积处理引擎及控制方法和相应的卷积神经网络加速器 |
WO2020093968A1 (zh) * | 2018-11-06 | 2020-05-14 | 北京地平线机器人技术研发有限公司 | 卷积处理引擎及控制方法和相应的卷积神经网络加速器 |
CN110009644A (zh) * | 2019-03-26 | 2019-07-12 | 深兰科技(上海)有限公司 | 一种特征图行像素分段的方法和装置 |
CN110555512B (zh) * | 2019-07-30 | 2021-12-03 | 北京航空航天大学 | 一种二值卷积神经网络数据重用方法及装置 |
CN110555512A (zh) * | 2019-07-30 | 2019-12-10 | 北京航空航天大学 | 一种二值卷积神经网络数据重用方法及装置 |
CN113313228A (zh) * | 2020-02-26 | 2021-08-27 | 杭州知存智能科技有限公司 | 数据缓存电路和方法 |
WO2021168944A1 (zh) * | 2020-02-26 | 2021-09-02 | 杭州知存智能科技有限公司 | 数据缓存电路和方法 |
US11216375B2 (en) | 2020-02-26 | 2022-01-04 | Hangzhou Zhicun Intelligent Technology Co., Ltd. | Data caching |
CN111144558A (zh) * | 2020-04-03 | 2020-05-12 | 深圳市九天睿芯科技有限公司 | 基于时间可变的电流积分和电荷共享的多位卷积运算模组 |
WO2022007266A1 (zh) * | 2020-07-08 | 2022-01-13 | 嘉楠明芯(北京)科技有限公司 | 一种卷积神经网络的加速方法及装置 |
CN113947200A (zh) * | 2021-12-21 | 2022-01-18 | 珠海普林芯驰科技有限公司 | 神经网络的加速计算方法及加速器、计算机可读存储介质 |
CN113947200B (zh) * | 2021-12-21 | 2022-03-18 | 珠海普林芯驰科技有限公司 | 神经网络的加速计算方法及加速器、计算机可读存储介质 |
CN115469826A (zh) * | 2022-09-16 | 2022-12-13 | 深圳思谋信息科技有限公司 | 数据处理方法、装置、计算机设备及计算机可读存储介质 |
CN115469826B (zh) * | 2022-09-16 | 2023-04-07 | 深圳思谋信息科技有限公司 | 数据处理方法、装置、计算机设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108629406B (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108629406A (zh) | 用于卷积神经网络的运算装置 | |
CN107578095B (zh) | 神经网络计算装置及包含该计算装置的处理器 | |
CN107169563B (zh) | 应用于二值权重卷积网络的处理***及方法 | |
KR102642853B1 (ko) | 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법 | |
CN107392309A (zh) | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 | |
CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
CN107657581A (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN107533667A (zh) | 神经网络处理器中的向量计算单元 | |
CN107451652A (zh) | 高效的稀疏并行的基于威诺格拉德的卷积方案 | |
CN107729989A (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
CN107833176A (zh) | 一种信息处理方法及相关产品 | |
CN106875011A (zh) | 二值权重卷积神经网络加速器的硬件架构及其计算流程 | |
CN107239823A (zh) | 一种用于实现稀疏神经网络的装置和方法 | |
CN107992943A (zh) | 用于卷积神经网络的缓冲器寻址 | |
CN107341547A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN108416437A (zh) | 用于乘加运算的人工神经网络的处理***及方法 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
CN108009126A (zh) | 一种计算方法及相关产品 | |
CN108629411A (zh) | 一种卷积运算硬件实现装置及方法 | |
CN110415157A (zh) | 一种矩阵乘法的计算方法及装置 | |
CN115880132B (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN109711533A (zh) | 基于fpga的卷积神经网络模块 | |
CN113486298B (zh) | 基于Transformer神经网络的模型压缩方法、矩阵乘法模块 | |
CN107943756A (zh) | 一种计算方法及相关产品 | |
CN108108190A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |