CN111611195B - 可软件定义存算一体芯片及其软件定义方法 - Google Patents
可软件定义存算一体芯片及其软件定义方法 Download PDFInfo
- Publication number
- CN111611195B CN111611195B CN201910143132.2A CN201910143132A CN111611195B CN 111611195 B CN111611195 B CN 111611195B CN 201910143132 A CN201910143132 A CN 201910143132A CN 111611195 B CN111611195 B CN 111611195B
- Authority
- CN
- China
- Prior art keywords
- module
- register file
- flash memory
- arithmetic operation
- analog
- 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
- 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/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- 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
-
- 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/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7882—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for self reconfiguration
-
- 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)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
- Microcomputers (AREA)
Abstract
本发明提供了一种可软件定义的存算一体芯片及其软件定义方法,该可软件定义的存算一体芯片的闪存处理阵列包括用于分别执行不同模拟向量‑矩阵乘法运算的多个闪存处理子阵列,可编程算术运算模块包括用于分别实现不同算术运算的多个可编程算术运算单元,控制模块根据实际应用的配置信息与有限状态机信息对存算一体芯片中各模块进行组合配置,实现芯片中电路结构的动态配置,使芯片能够根据实际任务灵活调节芯片的电路结构,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要,并有效降低了芯片成本。
Description
技术领域
本发明涉及半导体集成电路领域,尤其涉及一种可软件定义的存算一体芯片及其软件定义方法。
背景技术
闪存是一种非易失性存储器,其通过调控闪存晶体管的阈值电压来实现数据的存储。根据闪存晶体管和阵列结构的不同,闪存主要分为NOR-型闪存和NAND-型闪存。NAND-型闪存的读写以页和块为单位,其容量大、成本低,广泛应用于大规模独立式存储器;NOR-型闪存支持数据的随机存取,与NAND-型闪存相比,密度较低、容量较小、成本较高,主要应用于嵌入式存储器。
近年来,为了解决传统冯诺依曼计算体系结构瓶颈,存内计算(Computing-In-Memory,CIM)芯片架构得到人们的广泛关注,其基本思想是直接利用存储器进行逻辑计算,从而减少存储器与处理器之间的数据传输量以及传输距离,降低功耗的同时提高性能。
现有存算一体芯片架构的一经定制,其电路结构即被固定下来,不能根据实际任务进行灵活调节,且电路模块不能实现共享,导致电路面积大,不能适应集成化、小型化的需要。
发明内容
有鉴于此,本发明提供了一种可软件定义的存算一体芯片、方法、装置和设备,通过采用多个闪存处理子阵列、多个可编程算术运算单元以及控制模块配合,根据实际应用需求对芯片的电路结构进行动态配置,能够根据实际任务进行灵活调节,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种可软件定义的存算一体芯片,包括:闪存处理阵列、可编程算术运算模块以及与该闪存处理阵列和该可编程算术运算模块连接的控制模块,
该闪存处理阵列包括用于分别执行不同模拟向量-矩阵乘法运算的多个闪存处理子阵列;
该可编程算术运算模块包括用于分别实现不同算术运算的多个可编程算术运算单元;
该控制模块根据配置信息对多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,实现芯片中电路结构的动态配置。
进一步地,可软件定义的存算一体芯片还包括:
输入接口模块,用于接收外部输入数据;
输入寄存器堆,连接该输入接口模块,用于存储该外部输入数据或待处理数据;
数模转换模块,输入端连接该输入寄存器堆,输出端连接该闪存处理阵列,用于将该外部输入数据或待处理数据转换为模拟信号并输至该闪存处理阵列,该闪存处理阵列对该模拟信号进行模拟向量-矩阵乘法运算并输出运算结果;
模数转换模块,输入端连接该闪存处理阵列,输出端连接该可编程算术运算模块,用于将该模拟向量-矩阵乘法运算结果转换为数字信号并输至该可编程算术运算模块,该可编程算术运算模块对该数字信号进行算术运算并输出算术运算结果;
输出寄存器堆,连接该可编程算术运算模块和该输入寄存器堆,用于暂存该算术运算结果,并将该算术运算结果输出或作为该待处理数据输至该输入寄存器堆;
输出接口模块,连接该输出寄存器堆,接收该输出寄存器堆的输出数据,并将该输出数据向外输出;
其中,该控制模块连接该输入接口模块、该输入寄存器堆、该数模转换模块、该闪存处理阵列、该模数转换模块、该输出寄存器堆、该可编程算术运算模块以及该输出接口模块,用于根据实际应用需求对上述电路模块进行动态配置。
进一步地,该输入寄存器堆的输出端还连接该可编程算术运算模块。
进一步地,多个该可编程算术运算单元串行连接,每个该可编程算术运算单元均包括:多路分配器、算术运算子单元以及多路选择器;
该多路分配器的输入端连接上一可编程算术运算单元或该模数转换模块,其中一个输出端连接该算术运算子单元,另一个输出端与该算术运算子单元的输出端通过该多路选择器连接下一可编程算术运算单元或输出寄存器堆,控制端连接该控制模块。
进一步地,可软件定义的存算一体芯片还包括:与该控制模块连接的编程电路,该编程电路连接所述闪存处理阵列中每一个闪存单元的源极、栅极和/或衬底,用于调控闪存单元的阈值电压;
其中,该编程电路包括:用于产生编程电压或者擦除电压的电压产生电路以及用于将该编程电压加载至选定的闪存单元的电压控制电路。
进一步地,可软件定义的存算一体芯片还包括:
行列译码器,连接该闪存处理阵列以及该控制模块,用于在该控制模块的控制下对该闪存处理阵列进行行列译码。
进一步地,该控制模块根据配置信息对与其连接的各电路模块进行动态配置,该配置信息包括:闪存处理子阵列的配置信息、可编程算术运算单元的配置信息、数模转换模块的配置信息、模数转换模块的配置信息、输入接口模块的配置信息、输出接口模块的配置信息、输入寄存器堆的配置信息以及输出寄存器堆的配置信息,该根据配置信息对与其连接的各电路模块进行动态配置包括:
根据该闪存处理子阵列的配置信息将该闪存处理阵列划分为多个闪存处理子阵列,并控制多个闪存处理子阵列的工作时序;
根据该可编程算术运算单元的配置信息控制各可编程算术运算单元对应的多路分配器与多路选择器的工作状态,使多个可编程算术运算单元实现任意组合运算;
根据该数模转换模块的配置信息控制参与实际任务的数模转换电路开闭状态;
根据该模数转换模块的配置信息控制参与实际任务的模数转换电路开闭状态;
根据该输入接口模块的配置信息控制参与实际任务的输入接口电路开闭状态;
根据该输出接口模块的配置信息控制参与实际任务的输出接口电路开闭状态;
根据该输入寄存器堆的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据;
根据该输出寄存器堆的配置信息控制该输出寄存器堆将其内的数据输出或作为待处理数据输至该输入寄存器堆。
第二方面,提供一种可软件定义的存算一体芯片的软件定义方法,应用于上述述可软件定义存算一体芯片,该软件定义方法包括:
获取配置信息与有限状态机信息;
根据该配置信息配置输入接口模块、输入寄存器堆、数模转换模块、闪存处理阵列、模数转换模块、输出寄存器堆、可编程算术运算模块以及输出接口模块,实现芯片中电路结构的动态配置;
根据有限状态机信息控制输入接口模块、输入寄存器堆、数模转换模块、闪存处理阵列、模数转换模块、输出寄存器堆、可编程算术运算模块以及输出接口模块的工作时序。
进一步地,软件定义方法包括:
根据该闪存处理子阵列的配置信息将该闪存处理阵列划分为多个闪存处理子阵列,并根据有限状态机信息控制多个闪存处理子阵列的工作时序;
根据该可编程算术运算单元的配置信息控制各可编程算术运算单元对应的选择器的工作状态,使多个可编程算术运算单元实现任意组合运算,并根据有限状态机信息控制多个可编程算术运算单元的工作时序。
第三方面,提供一种电子设备,包括上述可软件定义的存算一体芯片。
本发明提供的可软件定义的存算一体芯片、方法、电子设备,该可软件定义的存算一体芯片的闪存处理阵列包括用于分别执行不同模拟向量-矩阵乘法运算的多个闪存处理子阵列,可编程算术运算模块包括用于分别实现不同算术运算的多个可编程算术运算单元,控制模块根据实际应用的配置信息与有限状态机信息对存算一体芯片各模块进行组合配置,实现芯片中电路结构的动态配置,使芯片能够根据实际任务灵活调节芯片中电路结构,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要,并有效降低了芯片成本。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例可软件定义的存算一体芯片的结构图一;
图2为本发明实施例可软件定义的存算一体芯片的结构图二;
图3为本发明实施例可软件定义的存算一体芯片中可编程算术运算单元30的结构图;
图4为本发明实施例可软件定义的存算一体芯片中可编程算术运算子单元的结构图;
图5为本发明实施例可软件定义的存算一体芯片中可编程算术运算模块实现复合运算的示意图;
图6为本发明实施例可软件定义的存算一体芯片中闪存处理子阵列的结构图一;
图7为本发明实施例可软件定义的存算一体芯片中闪存处理子阵列的结构图二;
图8为本发明实施例可软件定义的存算一体芯片中闪存处理子阵列的结构图三;
图9为本发明实施例可软件定义的存算一体芯片的结构图三;
图10为本发明实施例可软件定义的方法的流程图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有存算一体芯片架构的一经定制,其电路结构即被固定下来,不能根据实际任务进行灵活调节,且电路模块不能实现共享,导致电路面积大。
为解决现有技术中的上述问题,本发明实施例提供一种本发明提供的可软件定义的存算一体芯片、方法、电子设备,该可软件定义的存算一体芯片的闪存处理阵列包括用于分别执行不同的模拟向量-矩阵乘法运算的多个闪存处理子阵列,可编程算术运算模块包括用于分别实现不同算术运算的多个可编程算术运算单元,控制模块根据实际应用的配置信息与有限状态机信息对存算一体芯片各模块进行组合配置,实现芯片中电路结构的动态配置,使芯片能够根据实际任务灵活调节芯片中电路结构,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
图1为本发明实施例可软件定义的存算一体芯片的结构图一。如图1所示,该可软件定义的存算一体芯片包括:闪存处理阵列20、可编程算术运算模块30以及与该闪存处理阵列20和该可编程算术运算模块30连接的控制模块10,
该闪存处理阵列20包括用于分别执行不同模拟向量-矩阵乘法运算的多个闪存处理子阵列(图1中未示出)。
其中,多个闪存处理子阵列可为结构相同的闪存处理子阵列,也可以根据实际应用需求,将各个闪存处理子阵列的结构设置为不同,比如各个闪存处理子阵列的行数和列数可以根据实际应用需求进行设置,本发明实施例对此不作限制。
该可编程算术运算模块30包括用于分别实现不同算术运算的多个可编程算术运算单元(图1中未示出)。
可编程算术运算单元采用硬件实现,用于执行特定的算术运算。
其中,算术运算包括:乘法运算、加法运算、减法运算、除法运算、移位运算、激活函数、取最大值、取最小值、取平均值、池化等中的一种或几种的组合。
该控制模块10根据配置信息和有限状态机信息对芯片中的输入接口模块、输入寄存器堆、数模转换模块、闪存处理阵列、模数转换模块、输出寄存器堆、可编程算术运算模块以及输出接口模块进行组合配置,实现芯片中电路结构的动态配置。
其中,可以根据实际应用需求,通过编译工具,得到配置信息与有限状态机信息。
其中,配置信息通常是静态的,比如指定参与任务的各个模块的状态,各个单元的配置大小;配置信息通常保存在存储器中,等任务运行之前进行调度。而有限状态机信息通常是动态的,在任务运行时,控制实际任务运行时的时序与状态。
具体地,该控制模块10根据配置信息对该多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,选择投入工作的闪存处理子阵列和可编程算术运算单元,并对闪存处理子阵列与可编程算术运算单元的组合配对方式进行控制以实现特定运算。
可以理解的是,多个可编程算术运算单元中每个可编程算术运算单元可以实现某一种或几种算术运算,多个可编程算术运算单元可以排列组合出多种复合运算,与多个闪存处理子阵列配合,能够实现多种组合配置,进而实现复杂的运算功能。
从上述描述可知,本发明实施例提供的可软件定义存算一体芯片,其闪存处理阵列包括用于分别执行不同的模拟向量-矩阵乘法运算的多个闪存处理子阵列,其可编程算术运算模块包括用于分别实现不同算术运算的多个可编程算术运算单元,其控制模块根据配置信息对多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,实现芯片架构动态配置,不仅能够根据实际任务灵活调节芯片架构,还能实现多种复杂的运算功能,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
在一个可选的实施例中,参见图2,该可软件定义的存算一体芯片还可以包括:输入接口模块40、输入寄存器堆50、数模转换模块60、模数转换模块70、输出寄存器堆80以及输出接口模块90。
输入接口模块40的输入端连接外部设备,用于接收来自外部设备的输入数据(即需要运算的数据)。
输入寄存器堆50的输入端连接该输入接口模块40的输出端,用于暂存该输入数据或一待处理数据。
数模转换模块60的输入端连接该输入寄存器堆50的输出端,输出端连接该闪存处理阵列20的输入端,用于将来自该输入寄存器堆50输出的外部输入数据或待处理数据转换为模拟信号并输至该闪存处理阵列20,该闪存处理阵列20对该模拟信号进行模拟向量-矩阵乘法运算并输出模拟向量-矩阵乘法运算结果。
模数转换模块70输入端连接该闪存处理阵列20,输出端连接该可编程算术运算模块30,用于将该模拟向量-矩阵乘法运算结果转换为数字信号并输至该可编程算术运算模块30,该可编程算术运算模块30对该数字信号进行算术运算并输出算术运算结果。
输出寄存器堆80的输入端连接该可编程算术运算模块30,输出端连接该输入寄存器堆50,用于暂存该算术运算结果,并将该算术运算结果输出或作为该待处理数据输至该输入寄存器堆50。
输出接口模块90的输入端连接输出寄存器堆80的输出端,接收该输出寄存器堆80的输出数据,并将该输出数据向外部设备输出。
其中,该控制模块10连接该输入接口模块40、该输入寄存器堆50、该数模转换模块60、该闪存处理阵列20、该模数转换模块70、该输出寄存器堆80、该可编程算术运算模块30以及该输出接口模块90,用于根据配置信息对上述电路模块进行动态配置。
其中,该控制模块10根据配置信息对与其连接的各电路模块进行动态配置,该配置信息包括:闪存处理子阵列201~20n的配置信息、可编程算术运算单元301~30n的配置信息、数模转换模块60的配置信息、模数转换模块70的配置信息、输入接口模块40的配置信息、输出接口模块90的配置信息、输入寄存器堆50的配置信息以及输出寄存器堆80的配置信息等,该根据该配置信息对与其连接的各电路模块进行动态配置可以包括如下内容:
根据该闪存处理子阵列201~20n的配置信息将该闪存处理阵列20划分为多个闪存处理子阵列201~20n,并控制多个闪存处理子阵列201~20n的工作时序。
根据该可编程算术运算单元301~30n的配置信息控制各可编程算术运算单元对应的选择器的工作状态,使多个可编程算术运算单元实现任意组合运算参与工作。
根据所述数模转换模块60的配置信息控制参与实际任务的数模转换电路开闭状态;
根据所述模数转换模块70的配置信息控制参与实际任务的模数转换电路开闭状态;
根据所述输入接口模块40的配置信息控制参与实际任务的输入接口电路开闭状态;
根据所述输出接口模块90的配置信息控制参与实际任务的输出接口电路开闭状态;
根据所述输入寄存器堆50的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据;
根据该输出寄存器堆80的配置信息控制该输出寄存器堆80将其内的数据输出或作为待处理数据输至该输入寄存器堆50。
具体地,该输入寄存器堆50的输入端通过多路选择器(MUX)110连接该输入接口模块40的输出端和该输出寄存器堆80的输出端,以选择性接收来自该输入接口模块40的外部输入数据或来自该输出寄存器堆80的待处理数据。该控制模块10连接该多路选择器(MUX)100,根据该配置信息控制该多路选择器100,进而控制该输入寄存器堆50是接收该外部输入数据还是该待处理数据。
该数模转换模块60通过多路分配器(DEMUX)120选择性连接该多个闪存处理子阵列(201~20n)。控制模块10连接该多路分配器120,以根据配置信息控制该多路分配器Q,进而选择哪一闪存处理子阵列参与工作。
该多个闪存处理子阵列(201~20n)的输出端通过一多路选择器130连接该模数转换模块70。该控制模块10连接该多路选择器130,根据配置信息控制该多路选择器130,进而选择哪一闪存处理子阵列的输出连接该模数转换模块70的输入端,即将上述的参与工作的闪存处理子阵列的输出连接至该模数转换模块70的输入端。
该可编程算术运算模块30的输入端通过多路选择器140连接该多路分配器110的输出端和该模数转换模块70的输出端。
该可编程算术运算模块30的多个该可编程算术运算单元301~30n串行连接,每个该可编程算术运算单元均包括:多路分配器30a、算术运算子单元30b以及多路选择器30c,参见图3。
该多路分配器30a的输入端连接上一可编程算术运算单元或该模数转换模块70,其中一个输出端连接该算术运算子单元30b,该算术运算子单元30b的输出端以及该多路分配器30a另一个输出端通过一个多路选择器30c连接下一可编程算术运算单元或输出寄存器堆80,另外,该多路分配器30a以及该多路选择器30c的控制端均连接该控制模块20。
具体地,第一可编程算术运算单元301中的多路分配器的输入端连接该模数转换模块70的输出端,其中一个输出端连接该第一可编程算术运算单元301中的算术运算子单元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接第二可编程算术运算单元302的输入端,该多路分配器和该多路选择器的控制端连接该控制模块20。
第二可编程算术运算单元302中的多路分配器的输入端连接该第一可编程算术运算单元301的输出端,其中一个输出端连接该第二可编程算术运算单元302中的算术运算子单元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接第三可编程算术运算单元303的输入端,该多路分配器和该多路选择器的控制端连接该控制模块20。依此类推,直到第n可编程算术运算单元30n,该第n可编程算术运算单元30n中的多路分配器的输入端连接第n-1可编程算术运算单元30n-1的输出端,其中一个输出端连接该第n可编程算术运算单元30n中的算术运算子单元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接输出寄存器堆80的输入端,该多路分配器和该多路选择器的控制端连接该控制模块20。
控制模块20连接各可编程算术运算单元中的该多路分配器和该多路选择器的,根据配置信息控制各可编程算术运算单元中的该多路分配器和该多路选择器的,以选择该可编程算术运算单元中的算术运算子单元是否参与运算,以此实现多个可编程算术运算单元的排列组合配置,实现不同的复杂运算,灵活配置了算术运算功能。
在一个可选的实施例中,每个该可编程算术运算子单元均可以包括多个并排设置的算术运算器,例如乘法器、加法器、减法器、除法器、移位器、激活函数器、取最大值运算器、取最小值运算器、取平均值运算器、池化器中的一种或几种,各算术运算器之间并联,输入端分别连接至对应的多路分配器的输出端,输出端分别连接至对应的多路选择器的输入端,参见图4。
该可编程算术运算模块执行复合运算的过程如图5所示。
该输出寄存器堆80的输出端通过多路分配器150选择性连接该输出接口模块90的输入端或该输入寄存器堆50的输入端。该控制模块20连接该多路分配器150,根据配置信息控制该多路分配器150的工作状态,以选择将该输出寄存器堆80输出结果输至输出接口模块90还是输入寄存器堆50,当选择将该输出寄存器堆80输出结果输至输入寄存器堆50时,意味着将对该输出结果进行新一轮的运算处理。
在一个可选的实施例中,该输入寄存器堆50的输出端还可以通过一多路分配器110选择性连接该数模转换模块50的输入端或该可编程算术运算模块30的输入端,该控制模块10连接该多路分配器110,根据配置信息控制该多路分配器110的工作状态,以选择将该输入寄存器堆50的输出端连接至该数模转换模块50的输入端还是该可编程算术运算模块30的输入端,其中,当该输入寄存器堆50的输出端连接至该数模转换模块50的输入端时,意味着对该输入寄存器堆50的输出进行模拟向量-矩阵乘法运算和算术运算;当该输入寄存器堆50的输出端连接至该可编程算术运算模块30的输入端的输入端时,意味着对该输入寄存器堆50的输出进行一定的算术运算,以此进一步增加了芯片架构的灵活性。
在一个可选的实施例中,每个该闪存处理子阵列均采用采用源极耦合、漏极求和的拓扑结构,参见图6,包括阵列布置的多个可编程半导体器件(也称闪存单元)。
其中,每一列的所有可编程半导体器件的源极均连接至同一模拟电压输入端,多列可编程半导体器件对应连接多个模拟电压输入端;每一列的所有可编程半导体器件的漏极均连接至同一个模拟电流输出端,多列可编程半导体器件对应连接多个模拟电流输出端;每一行的所有可编程半导体器件的栅极均连接至同一偏置电压输入端,多行可编程半导体器件对应连接多个偏置电压输入端;其中,每个该可编程半导体器件的阈值电压均可调节。
在另一个可选的实施例中,每个该闪存处理子阵列均包括阵列布置的多个可编程半导体器件;每一行的所有可编程半导体器件的栅极均连接至同一模拟电压输入端,多行可编程半导体器件对应连接多个模拟电压输入端;每一列的所有可编程半导体器件的漏极均连接至同一第一端,多列可编程半导体器件对应连接多个第一端;每一列的所有可编程半导体器件的源极均连接至同一第二端,多列可编程半导体器件对应连接多个第二端;每个该可编程半导体器件的阈值电压均可调节;其中,该第一端为偏置电压输入端,该第二端为模拟电流输出端,实现栅极耦合、源极求和的拓扑结构,参见图7;或者,该第一端为模拟电流输出端,该第二端为偏置电压输入端,实现栅极耦合、漏极求和的拓扑结构,参见图8。
具体地,该闪存处理子阵列通过调节可编程半导体器件的阈值电压,将每个可编程半导体器件看作一个可变的等效模拟权重,相当于模拟矩阵数据,对可编程半导体器件阵列施加模拟电压,实现矩阵乘法运算功能。
在一个可选的实施例中,该可软件定义存算一体芯片还可以包括:编程电路22。
该编程电路22连接闪存处理阵列中每一个闪存单元的源极、栅极和/或衬底,用于调控闪存单元的阈值电压。
其中,所述编程电路包括:用于产生编程电压或者擦除电压的电压产生电路以及用于将所述编程电压加载至选定的闪存单元的电压控制电路。
具体地,编程电路利用热电子注入效应,根据闪存单元阈值电压需求数据,向闪存单元的源极施加高电压,将沟道电子加速到高速,以增加闪存单元的阈值电压。
并且,编程电路利用隧穿效应,根据闪存单元阈值电压需求数据,向闪存单元的栅极或衬底施加高电压,从而减少闪存单元的阈值电压。
另外,控制模块10连接该编程电路,用于根据配置信息控制该编程电路,以对该闪存处理阵列20中存储的权重进行调节。
在一个可选的实施例中,该可软件定义存算一体芯片还可以包括:行列译码器。
该行列译码器连接该闪存处理阵列20以及该控制模块10,用于在该控制模块10的控制下对该闪存处理阵列20进行行列译码。
在一个可选的实施例中,可编程半导体器件可以采用浮栅晶体管实现。
其中,该闪存处理阵列包括:NOR型闪存处理阵列和NAND型闪存处理阵列,当然,本发明不以此为限。
基于以上内容,本申请提供一种采用本发明实施例可软件定义存算一体芯片实现神经网络运算的场景,以说明该可软件定义存算一体芯片的工作流程。
该神经网络用于实现对数据P进行运算,该神经网络包含R层神经元,每层神经元主要实现向量-矩阵乘法运算,而各层神经元之间通过一定算术运算进行连接(因本申请重点在于可软件定义存算一体芯片及其软件定义方法,所以此处不对神经网络运算进行深入描述,仅描述其运算架构,以示例性说明可软件定义存算一体芯片的工作流程,并非对本发明的限制)。
针对该神经网络运算,该可软件定义存算一体芯片的工作流程如下:
控制模块10获取配置信息与有限状态机信息,该配置信息和有限状态机信息包含R个周期的配置信息与有限状态机信息,R个周期对应于神经网络R层神经元的运算(比如卷积、池化等),每个周期对应一层神经元的运算。每个周期的配置信息均包含:闪存处理子阵列的配置信息、可编程算术运算单元的配置信息、输出寄存器堆的配置信息、输入寄存器堆的配置信息等。控制模块10根据该配置信息将闪存处理阵列20划分为R个闪存处理子阵列,每个闪存处理子阵列对应一个周期,即每个闪存处理子阵列实现神经网络一层的运算,然后控制模块10根据有限状态机信息控制各个电路模块的工作时序。
输入接口模块40接收该数据P;
控制模块10根据第一周期的配置信息与有限状态机信息控制该输入寄存器堆50前端的多路选择器(DEMUX)A,使输入接口模块40与该输入寄存器堆50连通,控制该闪存处理阵列20前端的多路分配器(MUX)Q,使得该数模转换模块60与对应神经网络第一层的闪存处理子阵列1连通,控制该闪存处理阵列20后端的多路选择器B,使的该闪存处理子阵列1与模数转换模块70连通,控制可编程算术运算模块30的各可编程算术运算单元的选择器以及二选一选择器,实现对应于神经网络第一层的算术运算1,并在数据P输至该输入寄存器堆50后控制输出寄存器堆80输出端的多路分配器W和该输入寄存器堆50前端的多路选择器(DEMUX)A,使该输入寄存器堆50的输入端连通该输出寄存器堆80的输出端,实现第一周期的运算架构配置;
该数据P通过该输入寄存器堆50暂存后输至数模转换模块60,转换为模拟信号后输至闪存处理子阵列1,该闪存处理子阵列1对该模拟信号进行模拟向量-矩阵乘法运算1(比如矩阵乘法运算),模拟向量-矩阵乘法运算结果1通过该模数转换模块70转为数字信号,经过可编程算术运算模块30后得到算术运算结果1,经输出寄存器堆80后输至该输入寄存器堆50,至此完成第一层神经网络的运算;
此时自动触发控制模块10,控制模块10根据第二周期的配置信息与有限状态机信息控制该闪存处理阵列20前端的多路分配器(MUX)Q,使得该数模转换模块60与对应神经网络第二层的闪存处理子阵列2连通,控制该闪存处理阵列20后端的多路选择器B,使的该闪存处理子阵列2与模数转换模块70连通,控制可编程算术运算模块30的各可编程算术运算单元的选择器,实现对应于神经网络第二层的算术运算2,实现第二周期的运算架构配置。
该第一层神经网络的算术运算结果1通过该输入寄存器堆50暂存后输至数模转换模块60,转换为模拟信号后输至闪存处理子阵列2,该闪存处理子阵列2对该模拟信号进行模拟向量-矩阵乘法运算2(比如矩阵乘法运算),模拟向量-矩阵乘法运算结果通过该模数转换模块70转为数字信号,经过可编程算术运算模块30后得到算术运算结果2,经输出寄存器堆80后输至该输入寄存器堆50,至此完成第二层神经网络的运算,依此类推,直至最后一层神经网络,其中,进行最后一层神经网络配置时,控制输出寄存器堆80输出端的多路分配器W,使该输出寄存器堆80的输出端连接输出接口模块90的输入端,进而使得整个神经网络的运算结果通过该输出接口模块90输出至外部设备。
本领域技术人员可以理解的是,当某一层神经网络仅需要算术运算而不需要模拟向量-矩阵乘法运算时,只需在控制模块10配置电路时,控制该输寄存器堆50输出的多路分配器E,使得该输入寄存器堆50的输出端与该算术运算模块30的输入端连通即可,其他配置过程不再赘述。
通过上述技术方案可以得知,本发明实施例提供的可软件定义存算一体芯片,通过控制模块配合多个闪存处理子阵列和多个可编程算术运算单元,可以根据实际应用需求对芯片架构进行灵活组合,能够实现复杂的运算任务,适于语音处理、图像处理、机器处理、人工智能(AI)等多种应用场合,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要,并有效降低了芯片成本。
图9为本发明实施例可软件定义存算一体芯片的结构图三。如图9所示,在图2所示可软件定义存算一体芯片的基础上,该输入寄存器堆50的输入端通过多路选择器(DEMUX)100连接该输入接口模块40的输出端和该输出寄存器堆80的输出端,以选择性接收来自该输入接口模块40的外部输入数据或来自该输出寄存器堆80的待处理数据。该控制模块10连接该多路选择器(DEMUX)100。
该数模转换模块60通过多路分配器(MUX)120选择性连接该多个闪存处理子阵列(201~20n)。控制模块10连接该多路分配器Q。
该多个闪存处理子阵列(201~20n)的输出端通过一多路选择器130连接该模数转换模块70。该控制模块10连接该多路选择器B。
该可编程算术运算模块30的输入端通过多路选择器140连接该多路分配器110的输出端和该模数转换模块70的输出端。
该可编程算术运算模块30的多个该可编程算术运算单元301~30n串行连接,每个该可编程算术运算单元均包括选择器30a以及算术运算子单元30b。
该选择器30a的输入端连接上一可编程算术运算单元或该模数转换模块70,其中一个输出端连接该算术运算子单元30b,另一个输出端以及该算术运算子单元30b的输出端通过一个二选一选择器连接下一可编程算术运算单元或输出寄存器堆80,控制端连接该控制模块20。
该输出寄存器堆80的输出端通过多路分配器150选择性连接该输出接口模块90的输入端或该输入寄存器堆50的输入端。该控制模块20连接该多路分配器W,根据配置信息控制该多路分配器W的工作状态,以选择将该输出寄存器堆80输出结果输至输出接口模块90还是输入寄存器堆50,当选择将该输出寄存器堆80输出结果输至输入寄存器堆50时,意味着将对该输出结果进行新一轮的运算处理。
该输入寄存器堆50的输出端通过一多路分配器110选择性连接该数模转换模块50的输入端或该可编程算术运算模块30的输入端,该控制模块10连接该多路分配器E,根据配置信息控制该多路分配器E的工作状态,以选择将该输入寄存器堆50的输出端连接至该数模转换模块50的输入端还是该可编程算术运算模块30的输入端,其中,当该输入寄存器堆50的输出端连接至该数模转换模块50的输入端时,意味着对该输入寄存器堆50的输出进行模拟向量-矩阵乘法运算和算术运算;当该输入寄存器堆50的输出端连接至该可编程算术运算模块30的输入端的输入端时,意味着对该输入寄存器堆50的输出进行一定的算术运算,以此进一步增加了芯片架构的灵活性。
本领域技术人员可以理解的是,当某一层神经网络仅需要算术运算而不需要模拟向量-矩阵乘法运算时,只需在控制模块10配置电路时,控制该输寄存器堆50输出的多路分配器E,使得该输入寄存器堆50的输出端与该算术运算模块30的输入端连通即可,其他配置过程不再赘述。
另外,本领域技术人员可以理解的是,根据实际应用需求生成配置信息时,可以根据预先设置的指令-架构对应关系表实现。
值得说明的是,根据实际应用需求生成配置信息时,可知道需要投入的闪存处理子阵列的数量以及各个闪存处理子阵列的规模,此时,可根据实际应用需求获取闪存处理阵列的划分指令,然后根据该划分指令将该闪存处理阵列划分为多个闪存处理子阵列,对应多种矩阵乘法运算规模。
本领域技术人员可以理解的是,应用本发明实施例可软件定义存算一体芯片时,在进行多个周期运算时,可以在每个周期对该周期对应的闪存处理子阵列进行编程,也可以在进行各周期运算之前,根据编程指令对各个闪存处理子阵列统一进行编程。
图10为本发明实施例软件定义方法的流程图,该软件定义方法应用于上述可软件定义存算一体芯片。如图10所示,该软件定义方法包括以下内容:
步骤S1001:获取配置信息与有限状态机信息。
其中,可以根据实际应用需求,通过编译工具,得到配置信息与有限状态机信息。
步骤S1002:根据该配置信息配置该多个闪存处理子阵列、多个可编程算术运算单元、输出寄存器堆、以及其他电路模块,实现芯片架构动态配置。
步骤S1003:根据有限状态机信息控制闪存处理阵列、可编程算术运算模块、输出寄存器堆、以及其他电路模块的工作时序。
具体地,根据配置信息,对该多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,选择投入工作的闪存处理子阵列和可编程算术运算单元,并对闪存处理子阵列与可编程算术运算单元的组合配对方式进行控制以实现特定运算。
由于多个可编程算术运算单元中每个可编程算术运算单元可以实现某一种或几种算术运算,多个可编程算术运算单元可以排列组合出多种复合运算,与多个闪存处理子阵列配合,能够实现多种组合配置,进而实现复杂的运算功能。
其中,算术运算包括:乘法运算、加法运算、减法运算、除法运算、移位运算、激活函数、取最大值、取最小值、取平均值、池化等中的一种或几种的组合。
该闪存处理子阵列实现的模拟向量-矩阵乘法运算主要包括:模拟向量-矩阵乘法运算。
本发明实施例提供的软件定义方法,能够根据实际应用需求对多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,实现芯片架构动态配置,能够根据实际任务灵活调节芯片架构,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要,并有效降低了芯片成本。
在一个可选的实施例中,该步骤S1002包括:
步骤1:根据该闪存处理子阵列的配置信息将该闪存处理阵列划分为多个闪存处理子阵列,并根据有限状态机信息控制多个闪存处理子阵列的工作时序;
步骤2:根据该可编程算术运算单元的配置信息控制各可编程算术运算单元对应的选择器的工作状态,使多个可编程算术运算单元实现任意组合运算,并根据有限状态机信息控制多个可编程算术运算单元的工作时序;
步骤3:根据输出寄存器堆80的配置信息控制该输出寄存器堆80将其内的数据输出或作为待处理数据输至该输入寄存器堆50。
基于以上内容,本申请提供一种采用本发明实施例软件定义方法对可软件定义存算一体芯片进行软件定义以实现神经网络运算的场景,以说明该软件定义方法的工作流程。
该神经网络用于实现对数据P进行运算,该神经网络包含R层神经元,每层神经元主要实现矩阵乘法运算,而各层神经元之间通过一定算术运算进行连接(因本例重点在于说明软件定义方法,所以此处不对神经网络运算进行深入描述,仅描述其运算架构,以示例性说明软件定义方法的流程,并非对本发明的限制)。
针对该神经网络运算,该软件定义方法的工作流程如下:
(1)获取配置信息与有限状态机信息。其中,该配置信息包含R个周期的配置信息,R个周期对应于神经网络R层神经元的运算(比如卷积、池化等),每个周期对应一层神经元的运算。每个周期的配置信息均包含:闪存处理子阵列的配置信息、可编程算术运算单元的配置信息、输出寄存器堆的配置信息、输入寄存器堆的配置信息等。控制模块10根据该配置信息将闪存处理阵列20划分为R个闪存处理子阵列,每个闪存处理子阵列对应一个周期,即每个闪存处理子阵列实现神经网络一层的运算。
(2)根据第一周期的配置信息与有限状态机信息控制该输入寄存器堆50前端的多路选择器(DEMUX)A,使输入接口模块40与该输入寄存器堆50连通,控制该闪存处理阵列20前端的多路分配器(MUX)Q,使得该数模转换模块60与对应神经网络第一层的闪存处理子阵列1连通,控制该闪存处理阵列20后端的多路选择器B,使的该闪存处理子阵列1与模数转换模块70连通,控制可编程算术运算模块30的各可编程算术运算单元的选择器,实现对应于神经网络第一层的算术运算1,并在数据P输至该输入寄存器堆50后控制输出寄存器堆80输出端的多路分配器W和该输入寄存器堆50前端的多路选择器(DEMUX)A,使该输入寄存器堆50的输入端连通该输出寄存器堆80的输出端,实现第一周期的运算架构配置;
(3)根据第二周期的配置信息与有限状态机信息控制该闪存处理阵列20前端的多路分配器(MUX)Q,使得该数模转换模块60与对应神经网络第二层的闪存处理子阵列2连通,控制该闪存处理阵列20后端的多路选择器B,使的该闪存处理子阵列2与模数转换模块70连通,控制可编程算术运算模块30的各可编程算术运算单元的选择器,实现对应于神经网络第二层的算术运算2,实现第二周期的运算架构配置。……,依此类推,直至最后一层神经网络配置步骤,其中,进行最后一层神经网络配置时,控制输出寄存器堆80输出端的多路分配器W,使该输出寄存器堆80的输出端连接输出接口模块90的输入端,进而使得整个神经网络的运算结果通过该输出接口模块90输出至外部设备。
本领域技术人员可以理解的是,当某一层神经网络仅需要算术运算而不需要模拟向量-矩阵乘法运算时,只需在进行电路配置时,控制该输寄存器堆50输出的多路分配器E,使得该输入寄存器堆50的输出端与该算术运算模块30的输入端连通即可,其他配置过程不再赘述。
本发明实施例还提供一种电子设备,可执行神经网络算法,该神经网络包含多层神经元,每层神经元根据其上一层神经元的输出结果进行相应运算,该电子设备包括上述可软件定义存算一体芯片。
本发明实施例还提供另一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的软件定义方法的步骤。
其中,该电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的软件定义方法的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种可软件定义的存算一体芯片,其特征在于,包括:输入接口模块、输入寄存器堆、数模转换模块、闪存处理阵列、模数转换模块、输出寄存器堆、可编程算术运算模块、输出接口模块以及与所述输入接口模块、所述输入寄存器堆、所述数模转换模块、所述闪存处理阵列、所述模数转换模块、所述输出寄存器堆、所述可编程算术运算模块以及所述输出接口模块连接的控制模块,
所述闪存处理阵列包括用于分别执行不同模拟向量-矩阵乘法运算的多个闪存处理子阵列;
所述可编程算术运算模块包括用于分别实现不同算术运算的多个可编程算术运算单元;
所述控制模块根据配置信息配置所述输入接口模块、所述输入寄存器堆、所述数模转换模块、所述闪存处理阵列、所述模数转换模块、所述输出寄存器堆、所述可编程算术运算模块以及所述输出接口模块,实现芯片中电路结构的动态配置,
所述控制模块根据有限状态机信息控制所述输入接口模块、所述输入寄存器堆、所述数模转换模块、所述闪存处理阵列、所述模数转换模块、所述输出寄存器堆、所述可编程算术运算模块以及所述输出接口模块的工作时序。
2.根据权利要求1所述的可软件定义的存算一体芯片,其特征在于:
所述输入接口模块,用于接收外部输入数据;
所述输入寄存器堆,连接所述输入接口模块,用于存储所述外部输入数据或待处理数据;
所述数模转换模块,输入端连接所述输入寄存器堆,输出端连接所述闪存处理阵列,用于将所述外部输入数据或待处理数据转换为模拟信号并输至所述闪存处理阵列,所述闪存处理阵列对所述模拟信号进行模拟向量-矩阵乘法运算并输出运算结果;
所述模数转换模块,输入端连接所述闪存处理阵列,输出端连接所述可编程算术运算模块,用于将所述模拟向量-矩阵乘法运算结果转换为数字信号并输至所述可编程算术运算模块,所述可编程算术运算模块对所述数字信号进行算术运算并输出算术运算结果;
所述输出寄存器堆,连接所述可编程算术运算模块和所述输入寄存器堆,用于暂存所述算术运算结果,并将所述算术运算结果输出或作为所述待处理数据输至所述输入寄存器堆;
所述输出接口模块,连接所述输出寄存器堆,接收该输出寄存器堆的输出数据,并将该输出数据向外输出。
3.根据权利要求2所述的可软件定义的存算一体芯片,其特征在于,所述输入寄存器堆的输出端还连接所述可编程算术运算模块。
4.根据权利要求2所述的可软件定义的存算一体芯片,其特征在于,多个所述可编程算术运算单元串行连接,每个所述可编程算术运算单元均包括:多路分配器、算术运算子单元以及多路选择器;
所述多路分配器的输入端连接上一可编程算术运算单元或所述模数转换模块,其中一个输出端连接所述算术运算子单元,另一个输出端与所述算术运算子单元的输出端通过所述多路选择器连接下一可编程算术运算单元或输出寄存器堆,控制端连接所述控制模块。
5.根据权利要求4所述的可软件定义的存算一体芯片,其特征在于,还包括:与所述控制模块连接的编程电路,所述编程电路连接所述闪存处理子阵列中每一个闪存单元的源极、栅极和/或衬底,用于调控闪存单元的阈值电压;
其中,所述编程电路包括:用于产生编程电压或者擦除电压的电压产生电路以及用于将所述编程电压加载至选定的闪存单元的电压控制电路。
6.根据权利要求1或2所述的可软件定义的存算一体芯片,其特征在于,还包括:
行列译码器,连接所述闪存处理阵列以及所述控制模块,用于在所述控制模块的控制下对所述闪存处理阵列进行行列译码。
7.根据权利要求4所述的可软件定义的存算一体芯片,其特征在于,所述配置信息包括:闪存处理子阵列的配置信息、可编程算术运算单元的配置信息、数模转换模块的配置信息、模数转换模块的配置信息、输入接口模块的配置信息、输出接口模块的配置信息、输入寄存器堆的配置信息以及输出寄存器堆的配置信息,
所述根据配置信息配置所述输入接口模块、所述输入寄存器堆、所述数模转换模块、所述闪存处理阵列、所述模数转换模块、所述输出寄存器堆、所述可编程算术运算模块以及所述输出接口模块,实现芯片中电路结构的动态配置,包括:
根据所述闪存处理子阵列的配置信息将所述闪存处理阵列划分为多个闪存处理子阵列,并控制多个闪存处理子阵列的工作时序;
根据所述可编程算术运算单元的配置信息控制各可编程算术运算单元对应的多路分配器与多路选择器的工作状态,使多个可编程算术运算单元实现任意组合运算;
根据所述数模转换模块的配置信息控制参与实际任务的数模转换电路开闭状态;
根据所述模数转换模块的配置信息控制参与实际任务的模数转换电路开闭状态;
根据所述输入接口模块的配置信息控制参与实际任务的输入接口电路开闭状态;
根据所述输出接口模块的配置信息控制参与实际任务的输出接口电路开闭状态;
根据所述输入寄存器堆的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据;
根据所述输出寄存器堆的配置信息控制该输出寄存器堆将其内的数据输出或作为待处理数据输至所述输入寄存器堆。
8.一种可软件定义的存算一体芯片的软件定义方法,其特征在于,应用于权利要求1至7任一项所述可软件定义存算一体芯片,所述软件定义方法包括:
获取所述配置信息与所述有限状态机信息;
根据所述配置信息配置所述输入接口模块、所述输入寄存器堆、所述数模转换模块、所述闪存处理阵列、所述模数转换模块、所述输出寄存器堆、所述可编程算术运算模块以及所述输出接口模块,实现芯片中电路结构的动态配置;
根据所述有限状态机信息控制所述输入接口模块、所述输入寄存器堆、所述数模转换模块、所述闪存处理阵列、所述模数转换模块、所述输出寄存器堆、所述可编程算术运算模块以及所述输出接口模块的工作时序。
9.根据权利要求8所述的可软件定义的存算一体芯片的软件定义方法,其特征在于,包括:
根据所述闪存处理子阵列的配置信息将所述闪存处理阵列划分为多个闪存处理子阵列,并根据有限状态机信息控制多个闪存处理子阵列的工作时序;
根据所述可编程算术运算单元的配置信息控制各可编程算术运算单元对应的选择器的工作状态,使多个可编程算术运算单元实现任意组合运算,并根据有限状态机信息控制多个可编程算术运算单元的工作时序。
10.一种电子设备,其特征在于,包括如权利要求1至7中任一项所述可软件定义的存算一体芯片。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910143132.2A CN111611195B (zh) | 2019-02-26 | 2019-02-26 | 可软件定义存算一体芯片及其软件定义方法 |
| PCT/CN2019/081339 WO2020172951A1 (zh) | 2019-02-26 | 2019-04-03 | 可软件定义存算一体芯片及其软件定义方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910143132.2A CN111611195B (zh) | 2019-02-26 | 2019-02-26 | 可软件定义存算一体芯片及其软件定义方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111611195A CN111611195A (zh) | 2020-09-01 |
| CN111611195B true CN111611195B (zh) | 2025-06-03 |
Family
ID=72202924
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910143132.2A Active CN111611195B (zh) | 2019-02-26 | 2019-02-26 | 可软件定义存算一体芯片及其软件定义方法 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN111611195B (zh) |
| WO (1) | WO2020172951A1 (zh) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11392325B2 (en) * | 2020-09-28 | 2022-07-19 | Quanta Computer Inc. | Method and system for parallel flash memory programming |
| CN112395247B (zh) * | 2020-11-18 | 2024-05-03 | 北京灵汐科技有限公司 | 数据的处理方法、存算一体芯片 |
| CN112306931B (zh) * | 2020-11-20 | 2023-07-04 | 广州安凯微电子股份有限公司 | 一种软件实现usb主机控制器方法、系统及存储介质 |
| CN112989273B (zh) * | 2021-02-06 | 2023-10-27 | 江南大学 | 一种利用补码编码进行存内运算的方法 |
| CN113316751A (zh) * | 2021-04-16 | 2021-08-27 | 尼奥耐克索斯有限私人贸易公司 | 一种低损耗运算电路及其运行方法 |
| CN113918233B (zh) * | 2021-09-13 | 2024-12-20 | 山东产研鲲云人工智能研究院有限公司 | 一种ai芯片控制方法、电子设备及ai芯片 |
| CN114242137A (zh) * | 2021-11-09 | 2022-03-25 | 厦门半导体工业技术研发有限公司 | 一种阵列的配置电路、芯片及阵列的配置方法 |
| CN114564439A (zh) * | 2022-02-18 | 2022-05-31 | 北京航空航天大学 | 一种自适应配置存算一体阵列soc芯片及配置方法 |
| WO2024174127A1 (zh) * | 2023-02-22 | 2024-08-29 | 声龙(新加坡)私人有限公司 | 存算一体芯片和芯片控制方法 |
| CN117289896B (zh) * | 2023-11-20 | 2024-02-20 | 之江实验室 | 一种存算一体基本运算装置 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108763163A (zh) * | 2018-08-02 | 2018-11-06 | 北京知存科技有限公司 | 模拟向量-矩阵乘法运算电路 |
| CN108777155A (zh) * | 2018-08-02 | 2018-11-09 | 北京知存科技有限公司 | 闪存芯片 |
| CN209388304U (zh) * | 2019-02-26 | 2019-09-13 | 北京知存科技有限公司 | 可软件定义的存算一体芯片和电子设备 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4005979B2 (ja) * | 2004-04-28 | 2007-11-14 | 株式会社東芝 | プログラマブルゲートアレイおよび回路機能変更制御方法 |
| US8140738B2 (en) * | 2006-07-20 | 2012-03-20 | Stmicroelectronics Pvt. Ltd. | Flash memory interface device |
| CN102306141B (zh) * | 2011-07-18 | 2015-04-08 | 清华大学 | 一种描述动态可重构阵列配置信息的方法 |
| CN103390070A (zh) * | 2012-05-07 | 2013-11-13 | 北京大学深圳研究生院 | 一种可重构算子阵列结构 |
| CN103631754B (zh) * | 2013-09-22 | 2016-07-06 | 中国科学院电子学研究所 | 可编程信号处理单元 |
| WO2017020165A1 (zh) * | 2015-07-31 | 2017-02-09 | 吴国盛 | 自适应芯片和配置方法 |
| US11064019B2 (en) * | 2016-09-14 | 2021-07-13 | Advanced Micro Devices, Inc. | Dynamic configuration of inter-chip and on-chip networks in cloud computing system |
| CN109379087B (zh) * | 2018-10-24 | 2022-03-29 | 江苏华存电子科技有限公司 | Ldpc根据闪存组件错误率调变核编译码速率的方法 |
-
2019
- 2019-02-26 CN CN201910143132.2A patent/CN111611195B/zh active Active
- 2019-04-03 WO PCT/CN2019/081339 patent/WO2020172951A1/zh not_active Ceased
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108763163A (zh) * | 2018-08-02 | 2018-11-06 | 北京知存科技有限公司 | 模拟向量-矩阵乘法运算电路 |
| CN108777155A (zh) * | 2018-08-02 | 2018-11-09 | 北京知存科技有限公司 | 闪存芯片 |
| CN209388304U (zh) * | 2019-02-26 | 2019-09-13 | 北京知存科技有限公司 | 可软件定义的存算一体芯片和电子设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111611195A (zh) | 2020-09-01 |
| WO2020172951A1 (zh) | 2020-09-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111611195B (zh) | 可软件定义存算一体芯片及其软件定义方法 | |
| US11335400B2 (en) | Computing-in-memory chip and memory cell array structure | |
| CN111611197B (zh) | 可软件定义的存算一体芯片的运算控制方法和装置 | |
| CN111241028B (zh) | 一种数模混合存算一体芯片以及运算装置 | |
| CN209766043U (zh) | 存算一体芯片、存储单元阵列结构 | |
| US11507808B2 (en) | Multi-layer vector-matrix multiplication apparatus for a deep neural network | |
| CN211016545U (zh) | 基于NAND Flash的存内计算芯片、存储装置以及终端 | |
| CN109086249B (zh) | 模拟向量-矩阵乘法运算电路 | |
| CN209388304U (zh) | 可软件定义的存算一体芯片和电子设备 | |
| CA3034597A1 (en) | A homomorphic processing unit (hpu) for accelerating secure computations under homomorphic encryption | |
| CN112836814B (zh) | 存算一体处理器、处理系统以及算法模型的部署方法 | |
| CN111128279A (zh) | 基于NAND Flash的存内计算芯片及其控制方法 | |
| US10693466B2 (en) | Self-adaptive chip and configuration method | |
| CN111614353B (zh) | 一种存算一体芯片中数模转换电路与模数转换电路复用装置 | |
| WO2023142883A1 (zh) | 存算一体运算方法、忆阻器神经网络芯片及存储介质 | |
| CN112162947B (zh) | 输出可配置存算一体芯片以及电子设备 | |
| US20210287745A1 (en) | Convolution operation method based on nor flash array | |
| Bavandpour et al. | Acortex: An energy-efficient multipurpose mixed-signal inference accelerator | |
| US12124530B2 (en) | Computational memory | |
| CN111611196B (zh) | 一种存算一体芯片及其dac复用控制方法 | |
| Lu et al. | A runtime reconfigurable design of compute-in-memory based hardware accelerator | |
| CN112632460B (zh) | 源极耦合、漏极求和的模拟向量-矩阵乘法运算电路 | |
| CN112231631A (zh) | 存算一体芯片并行工作的流水线控制方法 | |
| US12455610B2 (en) | Computation processing device | |
| CN111243648B (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 | ||
| CB02 | Change of applicant information |
Country or region after: China Address after: Room 213-175, 2nd Floor, Building 1, No. 180 Kecheng Street, Qiaosi Street, Linping District, Hangzhou City, Zhejiang Province, 311100 Applicant after: Hangzhou Zhicun Computing Technology Co.,Ltd. Address before: 1416, shining building, No. 35, Xueyuan Road, Haidian District, Beijing 100083 Applicant before: BEIJING WITINMEM TECHNOLOGY Co.,Ltd. Country or region before: China |
|
| CB02 | Change of applicant information | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |