CN115345287B - 存储器内计算宏排列的方法、计算机可读介质及电子装置 - Google Patents
存储器内计算宏排列的方法、计算机可读介质及电子装置Info
- Publication number
- CN115345287B CN115345287B CN202210523375.0A CN202210523375A CN115345287B CN 115345287 B CN115345287 B CN 115345287B CN 202210523375 A CN202210523375 A CN 202210523375A CN 115345287 B CN115345287 B CN 115345287B
- Authority
- CN
- China
- Prior art keywords
- macros
- memory
- memory computing
- cim
- input channels
- 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
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/025—Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1012—Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/109—Control signal input circuits
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Hardware Design (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Complex Calculations (AREA)
- Credit Cards Or The Like (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
- Hall/Mr Elements (AREA)
- Tests Of Electronic Circuits (AREA)
- Static Random-Access Memory (AREA)
Abstract
本申请提出一种存储器内计算宏排列的方法、计算机可读介质及电子装置。所述用于存储器内计算宏排列的方法包括:获得存储器内计算宏的数目的信息及存储器内计算宏中的每一个的维度的信息;获得指定神经网络的指定卷积层的输入通道的数目及输出通道的数目的信息;以及根据存储器内计算宏的数目、存储器内计算宏中的每一个的维度、指定神经网络的指定卷积层的输入通道的数目及输出通道的数目来确定用于对存储器内计算宏进行排列的存储器内计算宏排列,以用于对输入通道应用卷积运算以产生输出通道。
Description
技术领域
本申请涉及一种用于存储器内计算(compute-in-memory,CIM)宏排列的方法及非暂时性计算机可读介质以及电子装置。
背景技术
CIM是一种用于对流行且广泛使用的冯诺依曼(von-Neumann)处理器/架构内的带宽与计算不匹配问题进行解决的技术。可通过将存储器与计算组合在同一区块中来解决带宽不匹配问题。然而,由于卷积神经网络的高计算要求,将使用并且应使用多个CIM宏,但多个CIM宏的水平/垂直比率是固定的且无法根据用于不同卷积计算的不同数目的输入通道及输出通道来进行调整,且所述固定的比率不会针对计算功率/能量度量而进行优化。
发明内容
本申请提出一种CIM宏排列的方法及非暂时性计算机可读介质以及电子装置。
根据示例性实施例中的一个,所述用于CIM宏排列的方法包括:获得CIM宏的数目的信息及所述CIM宏中的每一个的维度的信息;获得指定神经网络的指定卷积层的输入通道的数目及输出通道的数目的信息;以及根据所述CIM宏的所述数目、所述CIM宏中的每一个的所述维度、所述指定神经网络的所述指定卷积层的所述输入通道的所述数目及所述输出通道的所述数目来确定用于对所述CIM宏进行排列的CIM宏排列,以用于对所述输入通道进行卷积运算以产生所述输出通道。
根据示例性实施例中的一个,电子装置包括CIM宏及处理电路。所述CIM宏基于所述CIM宏的数目、所述CIM宏中的每一个的维度、以及指定神经网络的指定卷积层的输入通道的数目及输出通道的数目而排列成预定的CIM宏排列。所述处理电路被配置成:在经排列的所述CIM宏中加载权重;以及将一个输入特征图的多个输入通道输入到具有加载的所述权重的经排列的所述CIM宏中,以进行用于产生多个输出特征图中的一个的输出激活的卷积运算。
根据示例性实施例中的一个,所述非暂时性计算机可读介质存储程序,所述程序使计算机获得CIM宏的数目的信息及所述CIM宏中的每一个的维度的信息;获得指定神经网络的指定卷积层的输入通道的数目及输出通道的数目的信息;以及根据所述CIM宏的所述数目、所述CIM宏中的每一个的所述维度、所述指定神经网络的所述指定卷积层的所述输入通道的所述数目及所述输出通道的所述数目来确定用于对所述CIM宏进行排列的CIM宏排列,以用于对所述输入通道进行卷积运算以产生所述输出通道。
然而,应理解,此发明内容可能不包含本申请的所有方面及实施例,且因此并不意指以任何方式进行限制或局限。另外,本申请将包括对所属领域中的技术人员来说显而易见的改善及修改。
附图说明
包括附图以提供对本申请的进一步理解,且附图被并入本说明书中并构成本说明书的一部分。附图示出本申请的实施例,且与说明一同用于阐释本申请的原理。
图1示出卷积神经网络(convolutional neural network,CNN)中的卷积。
图2示出根据本申请示例性实施例中的一个的用于CIM宏排列的所提出方法的流程图。
图3示出根据本申请示例性实施例中的一个的不同CIM宏排列。
图4示出根据本申请示例性实施例中的一个的卷积运算。
图5示出根据本申请示例性实施例中的一个的垂直CIM宏排列。
图6示出根据本申请示例性实施例中的一个的水平CIM宏排列。
图7示出根据本申请示例性实施例中的一个的实行卷积运算的系统的方块图。
图8示出根据本申请示例性实施例中的一个的所提出电子装置的示意图。
为使本申请的以上特征及优点更易于理解,以下结合附图详细阐述若干实施例。
具体实施方式
深度神经网络(deep neural network,DNN)的常见形式是由多个卷积层构成的卷积神经网络(CNN)。在此种网络中,每一卷积层获取输入激活(input activation)数据且产生输入数据的更高层次的抽象(被称为特征图),所述更高层次的抽象保留必要而独特的信息。CNN中的卷积激活层中的每一个主要由高维卷积构成。举例来说,图1示出CNN中的卷积。
参照图1,在此计算100中,一个层的输入激活被构造为具有多个通道的一组二维(2D)输入特征图(IX×IY且具有C个通道),所述多个通道中的每一个被称为输入通道。每一输入通道与来自2D滤波器堆叠的不同2D滤波器(即,内核)进行卷积。此2D滤波器堆叠也被称为单个三维(3D)滤波器。多个3D滤波器110(具有维度FX×FY×C的M个滤波器)与输入特征图120进行卷积。跨所有输入通道对每一点的卷积结果进行求和。此计算的结果是一个输出通道的所有输出激活(output activations),即,具有维度OX×OY的一个输出特征图。换句话说,3D滤波器110被应用于3D输入特征图120(具有批量大小N)以创建N个输出特征图130。对于不同DNN中的不同层,输入通道的数目(由C或IC表示)及输出通道的数目(由M或OC表示)将依据不同的参数设计而发生大量变化。然而,现有技术中用于多个CIM宏的CIM宏排列是固定的且与卷积的输入/输出通道数目无关。
为解决上述问题,现在将在下文中参考附图更全面地阐述本申请的一些实施例,在附图中示出本申请的一些实施例但并非全部实施例。实际上,本申请的各种实施例可以许多不同的形式来实施且不应被视为仅限于本文中陈述的实施例;确切来说,提供这些实施例是为了使本申请满足适用的法律要求。通篇中相同的参考编号指代相同的元件。
图2示出根据本申请示例性实施例中的一个的用于CIM宏排列的所提出方法的流程图。图2中的步骤将由产品开发阶段中的计算机系统来实施。
参照图2,获得CIM宏的数目的信息及CIM宏中的每一个的维度的信息(步骤S202),且获得指定神经网络的指定卷积层的输入通道的数目及输出通道的数目的信息(步骤S204)。接下来,根据CIM宏的数目、CIM宏中的每一个的维度、指定神经网络的指定卷积层的输入通道的数目及输出通道的数目来确定用于对CIM宏进行排列的CIM宏排列,以用于对输入通道进行卷积运算以产生输出通道(步骤S206)。也就是说,通过在硬件中提供动态CIM形状配置,在软件中被实施为模块的CIM形状决策器(decider)可将输入通道及输出通道作为输入且决定能够产生最优配置的CIM形状配置。
在本示例性实施例中,根据延迟(latency)、能量消耗(energy consumption)及利用率(utilization)来确定能够实行多个滤波器与输入通道的卷积的CIM宏排列。所述延迟与存取动态随机存取存储器(dynamic random access memory,DRAM)的延迟、用于将权重加载到CIM宏中的延迟以及CIM宏的处理时间中的至少一个相关联。在本文中,权重意指滤波器的参数,且滤波器的参数的数目等于FX×FY×IC×OC。能量是表示用于使用一种类型的CIM宏排列来对卷积层进行计算的能量成本的因素,且能量消耗与用于存取至少一个存储器的能量成本相关联,所述至少一个存储器包括与CIM宏位于同一芯片中的芯片上静态随机存取存储器(static random access memory,SRAM)以及位于芯片之外的DRAM。利用率是CIM宏的已使用部分对所有CIM宏的比率。举例来说,DRAM:SRAM:CIM=200:6:1的比率意指在存取相同数量的数据的基础上,存取SRAM相对于存取CIM要花费6倍的能量成本。
在一种情况下,所确定的CIM宏排列可提供的所有CIM宏在垂直维度的总和能够让此排列的CIM宏适于以最少的批量加载次数去载入输入通道以实行滤波器与指定卷积层的输入通道的卷积。在另一种情况下,所确定的CIM宏排列可提供的所有CIM宏在水平维度的总和能够让此排列的CIM宏适于以最少的批量加载次数去载入输入通道以实行滤波器与指定卷积层的输入通道的卷积。
为直观地阐释如何有效地使用多个CIM宏来将计算性能最大化,图3示出根据本申请示例性实施例中的一个的不同CIM宏排列。
参照图3,CNN网络的每一卷积层可具有输入/输出通道的相应配置。假设CIM宏的数目是4且每一CIM宏具有256行(row)及64列(column)的CIM单元。如果输入通道的数目多于输出通道的数目,则使用垂直排列310的CIM宏可更高效。如果输出通道的数目多于输入通道的数目,则使用水平排列320的CIM宏可更高效。如果输入通道的数目等于输出通道的数目,则使用正方形排列330的CIM宏可更高效。
为进行更好地理解,图4示出根据本申请示例性实施例中的一个的卷积运算。
参照图4,假设对于输入数据来说IC=512、OX=28且OY=28,对于滤波器F0到F127来说FX=1、FY=1,且OC=128、IX=1、IY=1。在使用两个宏、每一宏具有256行及64列的情形中,用于对卷积进行计算的高效CIM宏排列可为如图5中所示的根据本申请示例性实施例中的一个的垂直CIM宏排列。
参照图5,64个滤波器F0、F1、…、F63预先存储在CIM宏中。输入通道1到256被输入到第一CIM宏(上部CIM宏)且输入通道257到512被输入到第二CIM宏(下部CIM宏)。换句话说,具有维度1×1×512的输入立方体510的数据(对应于图4中的输入立方体410的数据)被分成两部分且分别被输入到第一CIM宏及第二CIM宏的每一列(每一列存储滤波器)以进行乘法运算。对于第一CIM宏及第二CIM宏中的每一个,由CIM宏对每一列的256个乘法结果进行求和以作为输出值,且外部电路可将所述两个输出值相加作为512个乘法结果的总和,以产生卷积输出。因此,作为整体的第一CIM宏与第二CIM宏可产生64个卷积输出。举例来说:
对于滤波器F0的列,
且对于滤波器F1的列,
其余64个滤波器F65、F66、…、F127的卷积运算将是相似的。
在使用两个CIM宏、每一CIM宏具有256行及64列的相同情形中,也可使用水平排列的CIM宏对卷积进行计算。在此种情形中,第一半数量的输入通道1到256可被输入到两个水平排列的CIM宏的共128列(所述128列分别预先存储128个滤波器)中的每一列,且每一列的256个乘法结果由CIM宏进行求和以作为输出值。然而,由于尚未对第二半数量的输入通道257到512进行计算,因此此种输出值无法作为完整的卷积输出。这些输出值(不完整的卷积输出)必须存储在累加缓冲器(SRAM或D触发器(D Flip-flop,DFF))中。直到也完成第二半数量的输入通道257到512的卷积运算才将不完整的卷积输出的两个部分相加以产生128个卷积输出。在此种情形中,在对累加缓冲器进行存取上花费较多的能量,因此其效率比使用两个垂直排列的CIM宏低。
接下来,假设输入通道的数目是128且输出通道的数目是512。由于每一宏具有256行(大于128),因此无需将两个CIM宏垂直排列。单个CIM宏将能够完成输入通道1到256的卷积运算(即,单个CIM宏的利用率仅为50%)。在此种情形中,用于对卷积进行计算的高效CIM宏排列可为如图6中所示的根据本申请示例性实施例中的一个的水平CIM宏排列。
参照图6,将一次性加载128个滤波器F0到F127,以减少加载权重的数目。相似地,输入立方体610的数据被分别输入到第一CIM宏及第二CIM宏的每一列,以用于进行对应的输出的乘法运算。
不同的产品可应用不同的CNN架构进行数据处理。举例来说,监视系统(surveillance system)可应用CNN架构A进行数据处理,而外科器械(surgicalinstrument)可应用CNN架构B进行数据处理。可由离线工具基于产品所选择的CNN架构的卷积层的配置(即,OX、OY、IC、OC、FX、FY、…等)来预先确定产品的适当CIM宏排列。
一旦离线确定出产品的CIM宏排列,图7示出根据本申请示例性实施例中的一个的实行卷积运算的系统的方块图。
参照图7,CIM宏CIM0、CIM1、CIM2及CIM3在系统700中排列成预定的CIM宏排列。权重(即,滤波器的参数)及指令可存储在DRAM 720中。当系统700接收到输入特征图时,中央处理器(central processing unit,CPU)710可触发CNN调度器770及CIM宏CIM0到CIM3,以通过硬件(例如DRAM 720、DDR控制器730、系统芯片(system on chip,SoC)总线740及数据线性地址(data linear address,DLA)处理器75)对指定神经网络的指定卷积层实行卷积。CNN调度器770可从芯片上SRAM 760接收权重及输入特征图(input feature map,IFM)且从指令解析器750接收CIM配置,将权重及输入特征图加载到CIM0到CIM4中以进行卷积运算,从CIM0到CIM3接收CIM输出,对所有CIM输出实行求和以向SRAM 760产生中间结果作为当前卷积层的输出特征图(output feature map,OFM)中且等待另一新的触发。
在实际应用中,图8示出根据本申请示例性实施例中的一个的所提出电子装置的示意图,其中假设所述电子装置由终端用户使用。
参照图8,电子装置800包括多个CIM宏810及处理电路820。CIM宏810基于CIM宏的数目、CIM宏中的每一个的维度、以及指定神经网络的指定卷积层的输入通道的数目及输出通道的数目而排列成预定的CIM宏排列。在本示例性实施例中,可基于图2中提出的用于CIM宏排列的方法来确定预定的CIM宏排列。处理电路820被配置成在经排列的CIM宏中加载权重,且将一个输入特征图的多个输入通道输入到具有加载的权重的经排列的CIM宏中,以进行用于产生输出特征图中的一个的输出激活的卷积运算。
在实例中,首先可将滤波器的权重加载到CIM宏中,且然后可将输入通道(输入特征图)输入到CIM宏中以进行卷积运算。在另一个实例中,首先可将输入用到加载到CIM宏,且然后可将权重输入到CIM宏以进行卷积运算。
在本示例性实施例中,处理电路820基于预定的CIM宏排列、滤波器的数目、滤波器中的每一个的每一内核的高度及宽度以及每一滤波器中的内核的数目来在经排列的CIM宏中加载多个滤波器的权重,其中每一滤波器的内核中的每一个分别被应用于指定神经网络的指定卷积层的输入通道中的对应一个。
在一个示例性实施例中,处理电路820将滤波器中的每一个逐列加载到经排列的CIM宏中。处理电路820可基于每一内核的高度及宽度以及经排列的CIM宏的水平维度的总和来判断是否在经排列的CIM宏中批量加载滤波器的权重。
本申请还提供一种非暂时性计算机可读记录介质,所述非暂时性计算机可读记录介质对欲加载到计算机系统中的计算机程序进行记录以执行所提出方法的步骤。计算机程序由多个程序指令构成。一旦程序区段被加载到计算机系统中且由计算机系统执行,便完成所提出方法的步骤。
鉴于前述说明,所提出技术使得能够有效地使用具有最优配置的多个CIM宏来将计算性能最大化。
对于所属领域中的技术人员来说将显而易见的是,在不背离本申请的范围或精神的条件下,可对所公开的实施例的结构进行各种修改及变化。鉴于以上内容,本申请旨在覆盖落入以下权利要求书及其等效内容的范围内的对本申请的修改及变化。
[相关申请的交叉参考]
本申请主张在2021年5月13日提出申请的序列号为63/187,952的美国临时申请的优先权权益。上述专利申请的全文并入本申请供参考且构成本说明书的一部分。
Claims (10)
1.一种存储器内计算宏排列的方法,包括:
获得多个存储器内计算宏的数目的信息及所述多个存储器内计算宏中的每一个的维度的信息;
获得指定神经网络的指定卷积层的多个输入通道的数目及多个输出通道的数目的信息;以及
根据所述多个存储器内计算宏的所述数目、所述多个存储器内计算宏中的每一个的所述维度、所述指定神经网络的所述指定卷积层的所述多个输入通道的所述数目及所述多个输出通道的所述数目来确定用于对所述多个存储器内计算宏进行排列的存储器内计算宏排列,以用于对所述多个输入通道进行卷积运算以产生所述多个输出通道。
2.根据权利要求1所述的方法,其中所述根据所述多个存储器内计算宏的所述数目、所述多个存储器内计算宏中的每一个的所述维度、以及所述指定神经网络的所述指定卷积层的所述多个输入通道的所述数目及所述多个输出通道的所述数目来确定所述存储器内计算宏排列的步骤包括:
根据延迟、能量消耗及利用率来确定能够实行多个滤波器与所述多个输入通道的卷积的所述存储器内计算宏排列。
3.根据权利要求2所述的方法,其中所确定的所述存储器内计算宏排列提供所述多个存储器内计算宏的垂直维度的总和,所述多个存储器内计算宏适于以最小次数实行所述多个滤波器与所述指定卷积层的所述多个输入通道的所述卷积,以用于批量加载所述多个输入通道。
4.根据权利要求2所述的方法,其中所确定的所述存储器内计算宏排列提供所述多个存储器内计算宏的水平维度的总和,所述多个存储器内计算宏适于以最小次数实行所述多个滤波器与所述指定卷积层的所述多个输入通道的所述卷积,以用于批量加载所述多个滤波器。
5.根据权利要求2所述的方法,
其中所述延迟与动态随机存取存储器延迟、用于将权重加载到所述多个存储器内计算宏中的延迟以及所述多个存储器内计算宏的处理时间中的至少一个相关联,
其中所述能量消耗与用于存取至少一个存储器的能量成本相关联,所述至少一个存储器包括与所述多个存储器内计算宏位于同一芯片中的芯片上静态随机存取存储器以及位于所述芯片之外的动态随机存取存储器,且
其中所述利用率是所述多个存储器内计算宏的已使用部分对所有所述多个存储器内计算宏的比率。
6.一种电子装置,包括:
多个存储器内计算宏,其中所述多个存储器内计算宏基于所述多个存储器内计算宏的数目、所述多个存储器内计算宏中的每一个的维度、以及指定神经网络的指定卷积层的多个输入通道的数目及多个输出通道的数目而排列成预定的存储器内计算宏排列;以及
处理电路,被配置成:
在经排列的所述多个存储器内计算宏中加载权重;以及
将一个输入特征图的多个输入通道输入到具有加载的所述权重的经排列的所述多个存储器内计算宏中,以进行用于产生多个输出特征图中的一个的输出激活的卷积运算。
7.根据权利要求6所述的电子装置,
其中所述处理电路基于所述预定的存储器内计算宏排列、多个滤波器的数目、所述多个滤波器中的每一个的多个内核中的每一内核的高度及宽度以及所述多个滤波器中的每一滤波器中的所述多个内核的数目来在经排列的所述多个存储器内计算宏中加载所述多个滤波器的所述权重,其中每一滤波器的所述多个内核中的每一个分别被应用于所述指定神经网络的所述指定卷积层的所述多个输入通道中的对应一个。
8.根据权利要求7所述的电子装置,
其中所述处理电路将所述多个滤波器中的每一个逐列加载到经排列的所述多个存储器内计算宏中。
9.根据权利要求7所述的电子装置,
其中所述处理电路基于每一内核的所述高度及所述宽度以及经排列的所述多个存储器内计算宏的水平维度的总和来判断是否在经排列的所述多个存储器内计算宏中批量加载所述多个滤波器的所述权重。
10.一种非暂时性计算机可读介质,存储程序,所述程序使计算机:
获得多个存储器内计算宏的数目的信息及所述多个存储器内计算宏中的每一个的维度的信息;
获得指定神经网络的指定卷积层的多个输入通道的数目及多个输出通道的数目的信息;以及
根据所述多个存储器内计算宏的所述数目、所述多个存储器内计算宏中的每一个的所述维度、所述指定神经网络的所述指定卷积层的所述多个输入通道的所述数目及所述多个输出通道的所述数目来确定用于对所述多个存储器内计算宏进行排列的存储器内计算宏排列,以用于对所述多个输入通道进行卷积运算以产生所述多个输出通道。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163187952P | 2021-05-13 | 2021-05-13 | |
| US63/187,952 | 2021-05-13 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN115345287A CN115345287A (zh) | 2022-11-15 |
| CN115345287B true CN115345287B (zh) | 2025-11-04 |
Family
ID=83947578
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210523375.0A Active CN115345287B (zh) | 2021-05-13 | 2022-05-13 | 存储器内计算宏排列的方法、计算机可读介质及电子装置 |
| CN202210522679.5A Pending CN115344528A (zh) | 2021-05-13 | 2022-05-13 | 存储器内计算宏装置及电子装置 |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202210522679.5A Pending CN115344528A (zh) | 2021-05-13 | 2022-05-13 | 存储器内计算宏装置及电子装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US12541674B2 (zh) |
| CN (2) | CN115345287B (zh) |
| TW (2) | TWI788257B (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12541674B2 (en) * | 2021-05-13 | 2026-02-03 | Novatek Microelectronics Corp. | Method and non-transitory computer readable medium for compute-in-memory macro arrangement, and electronic device applying the same |
| US20240202275A1 (en) * | 2022-12-20 | 2024-06-20 | International Business Machines Corporation | Assigning dnn weights to a 3d crossbar array |
| CN118233645A (zh) * | 2022-12-20 | 2024-06-21 | 抖音视界有限公司 | 数据处理方法、装置及电子设备 |
Family Cites Families (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011107972A (ja) * | 2009-11-17 | 2011-06-02 | Fujitsu Ltd | 総和計算方法及び数値演算装置 |
| KR102415508B1 (ko) * | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
| US11775313B2 (en) * | 2017-05-26 | 2023-10-03 | Purdue Research Foundation | Hardware accelerator for convolutional neural networks and method of operation thereof |
| KR102289598B1 (ko) | 2017-06-26 | 2021-08-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템 그리고 그것의 프로그램 방법 |
| US11361213B1 (en) * | 2018-04-20 | 2022-06-14 | Perceive Corporation | Using lookup table to represent neural network activation function |
| US10943652B2 (en) * | 2018-05-22 | 2021-03-09 | The Regents Of The University Of Michigan | Memory processing unit |
| WO2019246064A1 (en) * | 2018-06-18 | 2019-12-26 | The Trustees Of Princeton University | Configurable in-memory computing engine, platform, bit cells and layouts therefore |
| US10642922B2 (en) * | 2018-09-28 | 2020-05-05 | Intel Corporation | Binary, ternary and bit serial compute-in-memory circuits |
| KR102833321B1 (ko) * | 2018-12-12 | 2025-07-10 | 삼성전자주식회사 | 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치 |
| US20200242459A1 (en) * | 2019-01-30 | 2020-07-30 | Intel Corporation | Instruction set for hybrid cpu and analog in-memory artificial intelligence processor |
| US11132176B2 (en) * | 2019-03-20 | 2021-09-28 | Macronix International Co., Ltd. | Non-volatile computing method in flash memory |
| US20210064234A1 (en) | 2019-04-16 | 2021-03-04 | Formulus Black Corporation | Systems, devices, and methods for implementing in-memory computing |
| US10636481B1 (en) * | 2019-05-13 | 2020-04-28 | National Tsing Hua University | Memory cell for computing-in-memory applications, memory unit for computing-in-memory applications and computing method thereof |
| CN112101541B (zh) * | 2019-06-18 | 2023-01-17 | 上海寒武纪信息科技有限公司 | 对高位宽值数据进行拆分的装置、方法、芯片及板卡 |
| CN110475119A (zh) | 2019-08-12 | 2019-11-19 | 北京大学 | 基于flash存算阵列的图像压缩系统和方法 |
| US11562205B2 (en) * | 2019-09-19 | 2023-01-24 | Qualcomm Incorporated | Parallel processing of a convolutional layer of a neural network with compute-in-memory array |
| US10915298B1 (en) * | 2019-10-08 | 2021-02-09 | Ali Tasdighi Far | Current mode multiply-accumulate for compute in memory binarized neural networks |
| US11354123B2 (en) | 2019-10-18 | 2022-06-07 | Macronix International Co., Ltd. | Memory device and computing in memory method thereof |
| CN111126579B (zh) * | 2019-11-05 | 2023-06-27 | 复旦大学 | 一种适用于二值卷积神经网络计算的存内计算装置 |
| JP2021093563A (ja) * | 2019-12-06 | 2021-06-17 | ソニーセミコンダクタソリューションズ株式会社 | 固体撮像素子、制御方法 |
| JP7778375B2 (ja) * | 2020-02-05 | 2025-12-02 | ザ、トラスティーズ オブ プリンストン ユニバーシティ | インメモリ計算のためのスケーラブルなアレイアーキテクチャ |
| JP7601855B2 (ja) * | 2020-03-06 | 2024-12-17 | 株式会社半導体エネルギー研究所 | 撮像装置および電子機器 |
| US11487507B2 (en) * | 2020-05-06 | 2022-11-01 | Qualcomm Incorporated | Multi-bit compute-in-memory (CIM) arrays employing bit cell circuits optimized for accuracy and power efficiency |
| US11018687B1 (en) * | 2020-05-13 | 2021-05-25 | Qualcomm Incorporated | Power-efficient compute-in-memory analog-to-digital converters |
| WO2021232422A1 (zh) * | 2020-05-22 | 2021-11-25 | 深圳市大疆创新科技有限公司 | 神经网络的运算装置及其控制方法 |
| CN112580774B (zh) * | 2020-09-01 | 2022-10-21 | 浙江大学 | 一种面向可重构神经网络处理器的神经网络布局方法 |
| US11955167B2 (en) * | 2021-01-14 | 2024-04-09 | Northwestern University | Computing-in-memory accelerator design with dynamic analog RAM cell and associated low power techniques with sparsity management |
| US12481867B2 (en) * | 2021-04-28 | 2025-11-25 | Arm Limited | Memory for artificial neural network accelerator |
| US12541674B2 (en) * | 2021-05-13 | 2026-02-03 | Novatek Microelectronics Corp. | Method and non-transitory computer readable medium for compute-in-memory macro arrangement, and electronic device applying the same |
| US11996137B2 (en) * | 2021-05-21 | 2024-05-28 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute in memory (CIM) memory array |
| KR20240025827A (ko) * | 2022-08-19 | 2024-02-27 | 삼성전자주식회사 | Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법 |
| KR20240044918A (ko) * | 2022-09-29 | 2024-04-05 | 삼성전자주식회사 | Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법 |
-
2022
- 2022-05-13 US US17/743,476 patent/US12541674B2/en active Active
- 2022-05-13 CN CN202210523375.0A patent/CN115345287B/zh active Active
- 2022-05-13 TW TW111117998A patent/TWI788257B/zh active
- 2022-05-13 US US17/743,473 patent/US12236332B2/en active Active
- 2022-05-13 CN CN202210522679.5A patent/CN115344528A/zh active Pending
- 2022-05-13 TW TW111117977A patent/TWI798081B/zh active
Non-Patent Citations (1)
| Title |
|---|
| Optimizing weight mapping and data flow for convolutional neural networks on processing-in-memory architectures;Peng et al.;《IEEE Transactions on Circuits and Systems I: Regular Papers》;20191225;第67卷(第4期);第1333-1343页 * |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202244722A (zh) | 2022-11-16 |
| CN115345287A (zh) | 2022-11-15 |
| US12236332B2 (en) | 2025-02-25 |
| US12541674B2 (en) | 2026-02-03 |
| TWI788257B (zh) | 2022-12-21 |
| CN115344528A (zh) | 2022-11-15 |
| TW202244794A (zh) | 2022-11-16 |
| TWI798081B (zh) | 2023-04-01 |
| US20220366216A1 (en) | 2022-11-17 |
| US20220366947A1 (en) | 2022-11-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12277488B2 (en) | Buffer addressing for a convolutional neural network | |
| US12174910B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
| US20220327181A1 (en) | Operation accelerator | |
| CN115345287B (zh) | 存储器内计算宏排列的方法、计算机可读介质及电子装置 | |
| CN106445471B (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
| US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
| CN107844828B (zh) | 神经网络中的卷积计算方法和电子设备 | |
| US20180373981A1 (en) | Method and device for optimizing neural network | |
| CN111340201A (zh) | 卷积神经网络加速器及其执行卷积运算操作的方法 | |
| EP4384899B1 (en) | Partial sum management and reconfigurable systolic flow architectures for in-memory computation | |
| CN110516316B (zh) | 一种间断伽辽金法求解欧拉方程的gpu加速方法 | |
| CN109313663A (zh) | 人工智能计算辅助处理装置、方法、存储介质、及终端 | |
| KR20200141663A (ko) | 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법 | |
| CN116781484A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
| CN114692819B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
| US20230376562A1 (en) | Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method | |
| JP7180751B2 (ja) | ニューラルネットワーク回路 | |
| US20230169144A1 (en) | Operation method, processor, and related product | |
| CN110728367B (zh) | 用于神经网络的数据存储方法及装置 | |
| US20240411517A1 (en) | Data processing device, data processing method, and chip | |
| CN113536219B (zh) | 运算方法、处理器以及相关产品 | |
| WO2025085124A2 (en) | Systolic ai processor compiler | |
| CN121233286A (zh) | 提高端侧卷积加速引擎计算效率的方法、系统及存储介质 | |
| TW202530996A (zh) | 具有非揮發性權重記憶體之計算裝置及非暫時性電腦可讀取儲存媒體 | |
| CN114780913A (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 |