CN117076384B - 计算装置、存内计算加速系统 - Google Patents
计算装置、存内计算加速系统 Download PDFInfo
- Publication number
- CN117076384B CN117076384B CN202311315720.2A CN202311315720A CN117076384B CN 117076384 B CN117076384 B CN 117076384B CN 202311315720 A CN202311315720 A CN 202311315720A CN 117076384 B CN117076384 B CN 117076384B
- Authority
- CN
- China
- Prior art keywords
- computing
- unit group
- module
- connection
- calculation
- 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
- 230000001133 acceleration Effects 0.000 title claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims abstract description 82
- 238000013528 artificial neural network Methods 0.000 claims abstract description 22
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 18
- 239000013598 vector Substances 0.000 claims description 30
- 239000011159 matrix material Substances 0.000 claims description 29
- 230000004913 activation Effects 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 3
- 241001442055 Vipera berus Species 0.000 description 22
- 238000010586 diagram Methods 0.000 description 18
- 238000000034 method Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
- G06F15/8069—Details on data memory access using a cache
-
- 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
-
- 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)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Logic Circuits (AREA)
Abstract
本发明提供了一计算装置、存内计算加速系统,可以应用于可重构技术领域。计算装置包括多个计算核模块,计算核模块包括:核内控制器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组,核内控制器单元用于根据配置信息,向开关阵列单元发送第一连接指令,向存算单元组发送第二连接指令,开关阵列单元用于执行第一连接指令,第一驱动单元组和第二驱动单元组用于按列或行驱动存算单元组,存算单元组用于执行第二连接指令,并执行存内计算得到存内计算结果,第一计算单元组和第二计算单元组用于对存内计算结果执行预设计算操作得到计算结果,可支持多种算法和神经网络算子。
Description
技术领域
本发明涉及可重构领域,尤其涉及一种计算装置、存内计算加速系统。
背景技术
针对日趋复杂的卫星载荷数据处理对高实时、高能效的应用需求,星载智能计算系统需要逐步向高可靠、高能效、智能化的计算系统发展。存内计算加速系统是未来主流的数据密集型计算架构之一,具有广阔的发展空间和应用前景。
存内计算加速系统通过在存储器内部进行数据处理与计算,有效减少计算数据在处理器和存储器之间的传输。随着神经网络算法的多元化发展,存内计算加速系统需要支持多种算法,以适配神经网络的多种算法。然而,目前的存内计算在计算核层面仅支持单向数据流形式,难以支持其他算子和数据流,无法满足日趋复杂的神经网络算法。
发明内容
鉴于上述问题,本发明提供了计算装置、存内计算加速系统。
根据本发明的第一个方面,提供了一种计算装置,包括:多个计算核模块,所述多个计算核模块之间按照预设连接关系相连,所述计算核模块包括:
核内控制器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组;
所述核内控制器单元,用于根据配置信息,向所述开关阵列单元发送第一连接指令,向所述存算单元组发送第二连接指令,所述第一连接指令用于控制所述开关阵列单元的输入连接和输出连接,所述第二连接指令用于控制所述存算单元组的输入连接和输出连接;
所述开关阵列单元,用于执行所述第一连接指令,选择与所述计算核模块相连的计算核模块、第一计算单元组、第二计算单元组中的之一作为输入连接,以及,选择与所述计算核模块相连的计算核模块、第一驱动单元组、第二驱动单元组中的之一作为输出连接;
所述第一驱动单元组,用于按列驱动所述存算单元组;
所述第二驱动单元组,用于按行驱动所述存算单元组;
所述存算单元组,用于执行第二连接指令,选择所述第一驱动单元组或所述第二驱动单元组作为输入连接,以及,选择所述第二计算单元组或所述第一计算单元组作为输出连接,并执行存内计算得到存内计算结果;
所述第一计算单元组,用于对所述存内计算结果执行第一预设计算操作,得到第一计算结果;
所述第二计算单元组,用于对所述存内计算结果执行第二预设计算操作,得到第二计算结果;
其中,所述第一预设计算操作和所述第二预设计算操作相同或不同。
根据本发明的实施例,所述计算核模块还包括:
所述矩阵/向量加法器单元,用于实现矩阵/向量加法计算;
所述开关阵列单元,还用于执行所述第一连接指令,选择与所述计算核模块相连的计算核模块、第一计算单元组、第二计算单元组、矩阵/向量加法器单元中的之一作为输入连接,以及,选择与所述计算核模块相连的计算核模块、第一驱动单元组、第二驱动单元组、矩阵/向量加法器单元中的之一作为输出连接。
根据本发明的实施例,所述第一计算单元组中的计算单元和所述第二计算单元组中的计算单元均包括:
加法树、激活函数单元和多路选择器;
所述加法树的输入连接所述存算单元组中的存算单元的输出;
所述加法树的输出连接所述激活函数单元和所述多路选择器中的多路输入的一路;
所述激活函数单元的输出连接所述多路选择器中的多路输入的另一路;
所述多路选择器的输出连接所述开关阵列单元的输入。
根据本发明的实施例,在所述第一驱动单元组为所述存算单元组的输入连接的情况下,所述第二计算单元组为所述存算单元组的输出连接;
在所述第二驱动单元组为所述存算单元组的输入连接的情况下,所述第一计算单元组为所述存算单元组的输出连接。
根据本发明的实施例,所述第一驱动单元组和所述第二驱动单元组均采用缓冲器级联的形式实现。
根据本发明的实施例,所述存算单元组中的存算单元采用10T SRAM结构,实现1比特激活值与8比特权重的乘法计算。
根据本发明的实施例,所述存算单元组中的存算单元均采用2比特数表示存算单元的输入连接关系与输出连接关系;
所述2比特数中的1比特数表示存算单元的输入连接关系;
所述2比特数中的另1比特数表示存算单元的输出连接关系。
根据本发明的实施例,所述开关阵列单元采用4比特数表示输入连接关系与输出连接关系;
所述4比特数中的2比特数表示输入连接关系;
所述4比特数中的另2比特数表示输出连接关系。
本发明的第二方面提供了一种存内计算加速系统,包括:
核间控制器模块、数据存储器模块、配置存储器模块、多个计算核模块和与所述多个计算核模块数量对应的连接模块;
所述配置存储器模块,用于存储待实现的神经网络算法的可重构配置信息,所述可重构配置信息包括所述计算核模块的配置信息,以及所述连接模块的配置信息;
所述核间控制器模块,用于根据所述可重构配置信息,向所述计算核模块发送计算指令,向所述连接模块发送配置指令,以及,向所述数据存储器模块发送数据传输指令;
所述数据存储器模块,用于存储实现所述神经网络算法所需的数据以及计算结果,并执行所述数据传输指令,将所述数据发送至所述数据传输指令所指示的计算核模块,以及,接收所述计算结果;
所述连接模块,用于执行所述配置指令,将所述连接模块的配置信息所指示的计算核模块进行连接;
所述计算核模块,用于执行所述计算指令,实现所述神经网络算法,得到所述计算结果。
根据本发明的实施例,所述计算核模块为所述第一方面所述的计算核模块。
根据本发明实施例提供的计算装置、存内计算加速系统,计算装置包括多个计算核模块,计算核模块包括:核内控制器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组,核内控制器单元用于根据配置信息,向开关阵列单元发送第一连接指令,向存算单元组发送第二连接指令,开关阵列单元用于执行第一连接指令,第一驱动单元组和第二驱动单元组用于按列或行驱动存算单元组,存算单元组用于执行第二连接指令,并执行存内计算得到存内计算结果,第一计算单元组和第二计算单元组用于对存内计算结果执行预设计算操作得到计算结果,可支持多种算法和神经网络算子。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本发明实施例的一种计算核模块的示意图。
图2示意性示出了根据本发明实施例的另一种计算核模块的示意图。
图3示意性示出了根据本发明实施例的又一种计算核模块的示意图。
图4示意性示出了根据本发明实施例的计算核模块内的数据流的示意图。
图5示意性示出了根据本发明实施例的计算核模块内神经网络算子的数据流的示意图。
图6示意性示出了根据本发明实施例的存内计算加速系统的结构框图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本发明的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、发明和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本发明的技术方案中,对数据的获取、收集、存储、使用、加工、传输、提供、发明和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
图1示意性示出了根据本发明实施例的一种计算核模块的示意图。
如图1所示,该实施例的计算核模块包括多个计算核模块,该多个计算核模块之间按照预设连接关系相连,该计算核模块包括: 核内控制器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组。
在本发明中,左侧的驱动单元为第一驱动单元组中的驱动单元、左侧的计算单元为第一计算单元组中的计算单元。上侧的驱动单元为第二驱动单元组中的驱动单元、上侧的计算单元为第二计算单元组中的计算单元。
核内控制器单元,用于根据配置信息,向该开关阵列单元发送第一连接指令,向该存算单元组发送第二连接指令,该第一连接指令用于控制该开关阵列单元的输入连接和输出连接,该第二连接指令用于控制该存算单元组的输入连接和输出连接。
开关阵列单元,用于执行该第一连接指令,选择与该计算核模块相连的计算核模块、第一计算单元组、第二计算单元组中的之一作为输入连接,以及,选择与该计算核模块相连的计算核模块、第一驱动单元组、第二驱动单元组中的之一作为输出连接。
在一实施例中,开关阵列单元可以由一组可编程开关(传输门)组成,这些开关可以通过编程的方式控制其连接关系,从而实现计算数据流的调度与分配。
开关阵列单元的输入输出包括输入线、输出线和控制线。输入线连接到第一计算单元组、第二计算单元组、其他计算核,通过可编程开关将三路信号之一输入至开关阵列单元。输出线连接到第一驱动单元组、第二驱动单元组、其他计算核,通过可编程开关将该三路信号之一输出至其中之一。控制线用于编程决定可编程开关的连接状态,共需4比特表示,低2比特用于表明输入线的连接关系,高2比特用于表明输出线的连接关系,该连接关系由核内控制器单元进行控制。
第一驱动单元组用于按列驱动该存算单元组。第二驱动单元组用于按行驱动该存算单元组。可以理解的,第一驱动单元组和第二驱动单元组将输入信号连接到存算单元组,将输入信号的驱动能力增强后作为一行或一列的存算单元组输入。
在一实施例中,第一驱动单元组和第二驱动单元组中的驱动单元可以采用缓冲器级联的形式实现。
存算单元组,用于执行第二连接指令,选择该第一驱动单元组或该第二驱动单元组作为输入连接,以及,选择该第二计算单元组或该第一计算单元组作为输出连接,并执行存内计算得到存内计算结果。
存算单元组实现存内计算加速。存算单元组内设置有若干存算单元,存算单元可以设置为数字存算单元的形式,采用10T SRAM结构,实现1比特激活值与8比特权重的乘法计算。
存算单元组的输入通过开关与IN_H或IN_V信号连接,用于接收来自左侧的第一驱动单元组或上侧的第二驱动单元组输入。存算单元组的输出通过开关与OUT_H或OUT_V信号连接,用于将存内计算结果发送至左侧的第一计算单元组或上侧的第二计算单元组。因此,每个存算单元可以采用2比特状态表明其输入与输出的连接关系,低1比特用于表明输入的连接关系,高1比特用于表明输出的连接关系,该连接关系由核内控制器单元进行控制。
第一计算单元组,用于对该存内计算结果执行第一预设计算操作,得到第一计算结果。第二计算单元组,用于对该存内计算结果执行第二预设计算操作,得到第二计算结果。其中,该第一预设计算操作和该第二预设计算操作相同或不同。
参照图1所示,本实施例中计算核模块内的数据流至少包括以下两种。
第一种,开关阵列单元→第一驱动单元→存算单元组→第二计算单元→开关阵列单元。
第二种,开关阵列单元→第二驱动单元→存算单元组→第一计算单元→开关阵列单元。
参照图1所示,本实施例中计算核模块内的至少可以实现以下两种神经网络算子。
非循环算子1:其他计算核模块→开关阵列单元→存算单元组→开关阵列单元→其他计算核模块。
循环算子1:其他计算核模块→开关阵列单元→存算单元组→开关阵列单元→存算单元组→开关阵列单元→其他计算核模块。
可以理解的,以上循环算子1仅以两次循环为例,本领域技术人员可以基于本发明实现任意次数,本发明对此不做限制。
图2示意性示出了根据本发明实施例的另一种计算核模块的示意图。
如图2所示,该实施例的计算核模块包括多个计算核模块,该多个计算核模块之间按照预设连接关系相连,该计算核模块包括: 核内控制器单元、矩阵/向量加法器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组。其中,核内控制器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组可参照图1所示实施例的示意,本发明在此不再赘述。
矩阵/向量加法器单元用于实现矩阵/向量加法计算。矩阵/向量加法器单元实现两个矩阵或两个向量的元素相加,用于实现神经网络算法中的矩阵/向量加法操作。在一实施例中,矩阵/向量加法器单元包括输入端、加法器和输出端。输入端包括矩阵/向量输入端A和矩阵/向量输入端B,二者结构一致,通过多个输入端口接收A/B的元素,如果A/B是矩阵,则每个输入端口对应于一个矩阵元素,如果A/B是向量,则每个输入端口对应于一个向量元素。加法器采用全加器结构,将A和B的对应元素相加。输出端产生结果矩阵/向量C,C的每个元素等于A和B对应元素相加的结果。
本实施例中,开关阵列单元还用于执行该第一连接指令,选择与该计算核模块相连的计算核模块、第一计算单元组、第二计算单元组、矩阵/向量加法器单元中的之一作为输入连接,以及,选择与该计算核模块相连的计算核模块、第一驱动单元组、第二驱动单元组、矩阵/向量加法器单元中的之一作为输出连接。
可理解的,本实施例中开关阵列单元的输入输出包括输入线、输出线和控制线。输入线连接到第一计算单元组、第二计算单元组、矩阵/向量加法器单元、其他计算核,通过可编程开关将四路信号之一输入至开关阵列单元。输出线连接到第一驱动单元组、第二驱动单元组、矩阵/向量加法器单元、其他计算核,通过可编程开关将该四路信号之一输出至其中之一。
图3示意性示出了根据本发明实施例的又一种计算核模块的示意图。
如图3所示,该实施例的计算核模块包括多个计算核模块,该多个计算核模块之间按照预设连接关系相连,该计算核模块包括: 核内控制器单元、矩阵/向量加法器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组。其中,核内控制器单元、开关阵列单元、存算单元组、第一驱动单元组、第二驱动单元可参照图1所示实施例的示意,本发明在此不再赘述。
本实施例中,该第一计算单元组中的计算单元和该第二计算单元组中的计算单元均包括:加法树、激活函数单元和多路选择器。该加法树的输入连接该存算单元组中的存算单元的输出。该加法树的输出连接该激活函数单元和该多路选择器中的多路输入的一路。该激活函数单元的输出连接该多路选择器中的多路输入的另一路。该多路选择器的输出连接该开关阵列单元的输入。
加法树用于将输出数字信号进行累加。加法树将一行或一列的数字输出分为若干组,每组包含两个数,并对这两个数进行相加,得到一组新的数,重复上述步骤,对刚刚得到的一组新的数再两两相加,再得到一组新的数,重复上述步骤,直到只剩下最后一个数,该数即为最后相加的结果,并将该结果发送至激活函数单元。
激活函数单元用于对累加后的结果进行可选的激活函数操作。激活函数单元实现可选的ReLU、Leaky ReLU、Tanh等激活函数操作,该操作可以通过基于SRAM的查找表电路实现,查找表的输入是累加后的结果,输出是8比特的激活函数结果。
图4示意性示出了根据本发明实施例的计算核模块内的数据流的示意图。
如图4所示,该实施例的计算核模块为图2或图3所示的计算核模块。本实施例中计算核模块内的数据流至少包括以下三种。
①开关阵列单元→第一驱动单元→存算单元组→第二计算单元→开关阵列单元;
②开关阵列单元→第二驱动单元→存算单元组→第一计算单元→开关阵列单元;
③开关阵列单元→矩阵/向量加法器单元→开关阵列单元。
图5示意性示出了根据本发明实施例的计算核模块内神经网络算子的数据流的示意图。
如图5所示,该实施例的计算核模块为图2或图3所示的计算核模块本实施例中计算核模块内的至少可以实现以下五种神经网络算子。
非循环算子1:其他计算核模块→开关阵列单元→存内计算→开关阵列单元→其他计算核模块;
非循环算子2:其他计算核模块→开关阵列单元→矩阵/向量加法器单元→开关阵列单元→其他计算核模块;
循环算子1:其他计算核模块→开关阵列单元→存算单元组→开关阵列单元→存算单元组→开关阵列单元→其他计算核模块;
循环算子2:其他计算核模块→开关阵列单元→存算单元组→开关阵列单元→矩阵/向量加法器单元→开关阵列单元→其他计算核模块;
循环算子3:其他计算核模块→开关阵列单元→矩阵/向量加法器单元→开关阵列单元→存算单元组→开关阵列单元→其他计算核模块。
可以理解的,以上循环算子1、循环算子2、循环算子3仅以两次循环为例,本领域技术人员可以基于本发明实现任意次数,每次可以实现矩阵/向量加法器单元或者存算单元组的计算,本发明对此不做限制。
图6示意性示出了根据本发明实施例的存内计算加速系统的结构框图。
如图6所示,该实施例的存内计算加速系统包括核间控制器模块、数据存储器模块、配置存储器模块、多个计算核模块和与该多个计算核模块数量对应的连接模块。
该配置存储器模块,用于存储待实现的神经网络算法的可重构配置信息,该可重构配置信息包括该计算核模块的配置信息,以及该连接模块的配置信息。
该核间控制器模块,用于根据该可重构配置信息,向该计算核模块发送计算指令,向该连接模块发送配置指令,以及,向该数据存储器模块发送数据传输指令。
该数据存储器模块,用于存储实现该神经网络算法所需的数据以及计算结果,并执行该数据传输指令,将该数据发送至该数据传输指令所指示的计算核模块,以及,接收该计算结果。数据存储器模块采用标准6T SRAM存储器,存储神经网络的激活值及权重数据,并根据核间控制器模块的指令将数据发送至对应计算核模块或接收对应计算核模块的存内计算结果。
该连接模块,用于执行该配置指令,将该连接模块的配置信息所指示的计算核模块进行连接。连接模块通过寻址电路和数据选择逻辑电路确定数据传递到哪个计算核模块或数据存储器模块,用于对激活值数据进行组合和分发。
该计算核模块,用于执行该计算指令,实现该神经网络算法,得到该计算结果。在一实施例中,该计算核模块为图1至图5所示实施例中任一所示的计算核模块。
在利用本发明提供的存内计算加速系统实现存内计算加速的过程中,根据待实现的神经网络算法将配置信息存入配置存储器模块,由核间控制器模块对计算核模块与连接模块进行配置,将神经网络算法所需数据存入数据存储器模块,由核间控制器模块对计算核模块中的存算单元写入数据,核间控制器模块控制计算核模块与连接模块进行计算,计算完成后将计算结果存入数据存储器模块。
根据本发明的实施例,上述模块或单元中的任意多个模块或单元可以合并在一个模块或单元中实现,或者其中的任意一个模块或单元可以被拆分成多个模块或单元。或者,这些模块或单元中的一个或多个模块或单元的至少部分功能可以与其他模块或单元的至少部分功能相结合,并在一个模块或单元中实现。根据本发明的实施例,上述模块或单元中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,上述模块或单元中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
根据本发明的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本发明的各个实施例中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
Claims (9)
1.一种计算装置,其特征在于,包括:多个计算核模块,所述多个计算核模块之间按照预设连接关系相连,所述计算核模块包括:
核内控制器单元、开关阵列单元、存算单元组、第一驱动单元组、第一计算单元组、第二驱动单元组以及第二计算单元组;
所述核内控制器单元,用于根据配置信息,向所述开关阵列单元发送第一连接指令,向所述存算单元组发送第二连接指令,所述第一连接指令用于控制所述开关阵列单元的输入连接和输出连接,所述第二连接指令用于控制所述存算单元组的输入连接和输出连接;
所述开关阵列单元,用于执行所述第一连接指令,选择与所述计算核模块相连的计算核模块、第一计算单元组、第二计算单元组中的之一作为输入连接,以及,选择与所述计算核模块相连的计算核模块、第一驱动单元组、第二驱动单元组中的之一作为输出连接;
所述第一驱动单元组,用于按列驱动所述存算单元组;
所述第二驱动单元组,用于按行驱动所述存算单元组;
所述存算单元组,用于执行第二连接指令,选择所述第一驱动单元组或所述第二驱动单元组作为输入连接,以及,选择所述第二计算单元组或所述第一计算单元组作为输出连接,并执行存内计算得到存内计算结果;
所述第一计算单元组,用于对所述存内计算结果执行第一预设计算操作,得到第一计算结果;
所述第二计算单元组,用于对所述存内计算结果执行第二预设计算操作,得到第二计算结果;
其中,所述第一预设计算操作和所述第二预设计算操作相同或不同,所述第一驱动单元组与所述第一计算单元组对应关联,所述第二驱动单元组与所述第二计算单元组对应关联。
2.根据权利要求1所述的计算装置,其特征在于,所述计算核模块还包括:
矩阵/向量加法器单元,用于实现矩阵/向量加法计算;
所述开关阵列单元,还用于执行所述第一连接指令,选择与所述计算核模块相连的计算核模块、第一计算单元组、第二计算单元组、矩阵/向量加法器单元中的之一作为输入连接,以及,选择与所述计算核模块相连的计算核模块、第一驱动单元组、第二驱动单元组、矩阵/向量加法器单元中的之一作为输出连接。
3.根据权利要求1或2所述的计算装置,其特征在于,所述第一计算单元组中的计算单元和所述第二计算单元组中的计算单元均包括:
加法树、激活函数单元和多路选择器;
所述加法树的输入连接所述存算单元组中的存算单元的输出;
所述加法树的输出连接所述激活函数单元和所述多路选择器中的多路输入的一路;
所述激活函数单元的输出连接所述多路选择器中的多路输入的另一路;
所述多路选择器的输出连接所述开关阵列单元的输入。
4.根据权利要求1所述的计算装置,其特征在于,在所述第一驱动单元组为所述存算单元组的输入连接的情况下,所述第二计算单元组为所述存算单元组的输出连接;
在所述第二驱动单元组为所述存算单元组的输入连接的情况下,所述第一计算单元组为所述存算单元组的输出连接。
5.根据权利要求1所述的计算装置,其特征在于,所述第一驱动单元组和所述第二驱动单元组均采用缓冲器级联的形式实现。
6. 根据权利要求1所述的计算装置,其特征在于,所述存算单元组中的存算单元采用10T SRAM结构,实现1比特激活值与8比特权重的乘法计算。
7.根据权利要求1所述的计算装置,其特征在于,所述存算单元组中的存算单元均采用2比特数表示存算单元的输入连接关系与输出连接关系;
所述2比特数中的1比特数表示存算单元的输入连接关系;
所述2比特数中的另1比特数表示存算单元的输出连接关系。
8.根据权利要求1所述的计算装置,其特征在于,所述开关阵列单元采用4比特数表示输入连接关系与输出连接关系;
所述4比特数中的2比特数表示输入连接关系;
所述4比特数中的另2比特数表示输出连接关系。
9.一种存内计算加速系统,其特征在于,包括:
核间控制器模块、数据存储器模块、配置存储器模块、多个计算核模块和与所述多个计算核模块数量对应的连接模块;
所述配置存储器模块,用于存储待实现的神经网络算法的可重构配置信息,所述可重构配置信息包括所述计算核模块的配置信息,以及所述连接模块的配置信息;
所述核间控制器模块,用于根据所述可重构配置信息,向所述计算核模块发送计算指令,向所述连接模块发送配置指令,以及,向所述数据存储器模块发送数据传输指令;
所述数据存储器模块,用于存储实现所述神经网络算法所需的数据以及计算结果,并执行所述数据传输指令,将所述数据发送至所述数据传输指令所指示的计算核模块,以及,接收所述计算结果;
所述连接模块,用于执行所述配置指令,将所述连接模块的配置信息所指示的计算核模块进行连接;
所述计算核模块,用于执行所述计算指令,实现所述神经网络算法,得到所述计算结果;
其中,所述计算核模块为所述权利要求1至8任意一项所述计算装置中的计算核模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311315720.2A CN117076384B (zh) | 2023-10-12 | 2023-10-12 | 计算装置、存内计算加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311315720.2A CN117076384B (zh) | 2023-10-12 | 2023-10-12 | 计算装置、存内计算加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117076384A CN117076384A (zh) | 2023-11-17 |
CN117076384B true CN117076384B (zh) | 2024-02-02 |
Family
ID=88711908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311315720.2A Active CN117076384B (zh) | 2023-10-12 | 2023-10-12 | 计算装置、存内计算加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076384B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463719A (zh) * | 2020-12-04 | 2021-03-09 | 上海交通大学 | 一种基于粗粒度可重构阵列实现的存内计算方法 |
CN113157638A (zh) * | 2021-01-27 | 2021-07-23 | 浙江大学 | 一种低功耗存储器内计算处理器和处理运算方法 |
CN115836346A (zh) * | 2020-09-07 | 2023-03-21 | 阿里巴巴集团控股有限公司 | 存内计算设备及其数据处理方法 |
CN116483773A (zh) * | 2023-04-07 | 2023-07-25 | 华中科技大学 | 一种基于转置dram单元的存内计算电路和装置 |
CN116612794A (zh) * | 2023-04-19 | 2023-08-18 | 每刻深思智能科技(北京)有限责任公司 | 存内计算单元sram、存内计算芯片及存内计算方法 |
-
2023
- 2023-10-12 CN CN202311315720.2A patent/CN117076384B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115836346A (zh) * | 2020-09-07 | 2023-03-21 | 阿里巴巴集团控股有限公司 | 存内计算设备及其数据处理方法 |
CN112463719A (zh) * | 2020-12-04 | 2021-03-09 | 上海交通大学 | 一种基于粗粒度可重构阵列实现的存内计算方法 |
CN113157638A (zh) * | 2021-01-27 | 2021-07-23 | 浙江大学 | 一种低功耗存储器内计算处理器和处理运算方法 |
CN116483773A (zh) * | 2023-04-07 | 2023-07-25 | 华中科技大学 | 一种基于转置dram单元的存内计算电路和装置 |
CN116612794A (zh) * | 2023-04-19 | 2023-08-18 | 每刻深思智能科技(北京)有限责任公司 | 存内计算单元sram、存内计算芯片及存内计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117076384A (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7418579B2 (en) | Component with a dynamically reconfigurable architecture | |
CN109409510B (zh) | 神经元电路、芯片、系统及其方法、存储介质 | |
US6266760B1 (en) | Intermediate-grain reconfigurable processing device | |
US7348798B2 (en) | Programmable logic device, configuration apparatus, and configuration method | |
US20080218202A1 (en) | Reconfigurable array to compute digital algorithms | |
CN108647779B (zh) | 一种低位宽卷积神经网络可重构计算单元 | |
CN113811859A (zh) | 控制流屏障以及可重构数据处理器 | |
CN111611195A (zh) | 可软件定义存算一体芯片及其软件定义方法 | |
CN115880132B (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN110989417B (zh) | 适应fpga局部重构的周期检测系统 | |
CN109445752A (zh) | 一种并行计算的系统 | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
CN116167424B (zh) | 基于cim的神经网络加速器、方法、存算处理系统与设备 | |
CN109993272A (zh) | 卷积及降采样运算单元、神经网络运算单元和现场可编程门阵列集成电路 | |
CN108491924B (zh) | 一种面向人工智能计算的神经网络数据串行流水处理装置 | |
CN111047034B (zh) | 一种基于乘加器单元的现场可编程神经网络阵列 | |
CN117076384B (zh) | 计算装置、存内计算加速系统 | |
CN109902061B (zh) | 数字逻辑电路及微处理器 | |
US11189345B2 (en) | Method for implementing logic calculation based on a crossbar array structure of resistive switching device | |
CN107678781B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN117348998A (zh) | 应用于检测计算的加速芯片架构及计算方法 | |
Chang et al. | HDSuper: Algorithm-Hardware Co-design for Light-weight High-quality Super-Resolution Accelerator | |
CN113407238A (zh) | 一种具有异构处理器的众核架构及其数据处理方法 | |
CN111401522A (zh) | 脉动阵列变速控制方法及可变速脉动阵列微框架 | |
US20200097440A1 (en) | Methods and Systems for Computing in Memory |
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 |