CN110990060B - 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 - Google Patents
一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 Download PDFInfo
- Publication number
- CN110990060B CN110990060B CN201911240907.4A CN201911240907A CN110990060B CN 110990060 B CN110990060 B CN 110990060B CN 201911240907 A CN201911240907 A CN 201911240907A CN 110990060 B CN110990060 B CN 110990060B
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- control signal
- signal
- input
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 238000004364 calculation method Methods 0.000 claims abstract description 76
- 238000013528 artificial neural network Methods 0.000 claims abstract description 62
- 230000004913 activation Effects 0.000 claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims abstract description 6
- 230000015654 memory Effects 0.000 claims description 60
- 230000006870 function Effects 0.000 claims description 44
- 238000012545 processing Methods 0.000 claims description 35
- 230000003213 activating effect Effects 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 18
- 238000011176 pooling Methods 0.000 claims description 15
- 230000007704 transition Effects 0.000 claims description 13
- 238000003491 array Methods 0.000 claims description 11
- 230000010354 integration Effects 0.000 claims description 7
- 238000013527 convolutional neural network Methods 0.000 claims description 6
- 241000896693 Disa Species 0.000 claims 6
- 230000001360 synchronised effect Effects 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000005669 field effect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000011022 operating instruction Methods 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- DSHPMFUQGYAMRR-UHFFFAOYSA-N [Si].[Si].O=[Si] Chemical compound [Si].[Si].O=[Si] DSHPMFUQGYAMRR-UHFFFAOYSA-N 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种存算一体芯片的嵌入式处理器、指令集及数据处理方法。本方法为:1)嵌入式处理器通过数据输入接口直接从输入数据缓存中读取数据;2)当存算一体阵列进行人工神经网络计算时,将待处理数据送入存算一体阵列/逻辑,控制DAC将数据转换为模拟信号后进行矩阵乘加运算,然后控制ADC将运算结果转换为数字信号;3)嵌入式处理器读回运算结果并对其进行运算或者激活操作之后对中间数据进行缓存,然后判断是否为最后一层神经网络运算;4)如果不是最后一层,则循环进行步骤2)和步骤3);如果是最后一层,则进行步骤5);5)嵌入式处理器进行最终结果处理,判断人工神经网络识别结果,根据识别结果,确定是否将结果输出。
Description
技术领域
本发明涉及存算一体芯片,具体涉及一种存算一体芯片的嵌入式处理器、指令集及数据处理方法。
背景技术
对于传统的冯诺依曼计算体系结构,处理器和存储器是分开的。当该计算体系结构应用于人工神经网络运算的时候,需要进行大量的数据存取和计算操作,运算功耗大、时间长、效率低,已经不能满足大多数场景的应用,特别是低功耗、低时延的边缘计算应用场景。
为了突破这种瓶颈,基于存算一体计算体系结构的芯片得到快速发展,其基本思想是直接利用存储单元进行数据的乘加计算,从而减少神经网络在进行大量乘加计算过程中的处理器和存储器之间的数据交互,在降低功耗和时延的同时大大提高性能。
对于存算一体芯片,嵌入式处理器不再参与人工神经网络中大运算量的乘加计算,而是主要负责芯片的配置、芯片内外数据交互和芯片工作流程控制等,比如存算阵列/子阵列的配置、输入数据基本处理、阵列间模拟数字转换控制、运算中间结果处理以及输出结果处理提取等。在存算一体芯片中,通用而非面向存算一体芯片特点而设计的嵌入式中央处理器(CPU)或者微控制器(MCU)控制效率较低,一些人工神经网络相关的计算(比如各种激活函数转化、卷积神经网络中的池化操作等)需要额外的电路逻辑来实现,且没有与存算一体核心计算阵列/逻辑相匹配的控制逻辑电路,不利于快速的存算一体芯片开发和集成。
发明内容
有鉴于此,本发明的目的在于提供一种存算一体芯片的嵌入式处理器、指令集及数据处理方法,以提高存算一体芯片的控制以及代码实现效率,降低整体芯片的开发集成难度,降低整体运算功耗和计算时延。
为实现上述目的,本发明有如下技术方案:
一种存算一体芯片的嵌入式处理器数据处理方法,其步骤包括:
1)嵌入式处理器将存算一体芯片的存算一体阵列/逻辑配置为多个子阵列,不同所述子阵列用于数据的矩阵乘加运算或者神经网络不同层的运算;然后通过数据输入接口直接从输入数据缓存中读取数据;
2)当存算一体阵列进行人工神经网络计算时,嵌入式处理器将待处理数据送入存算一体阵列/逻辑,控制DAC将待处理数据转换为模拟信号,然后控制存算一体的一对应子阵列进行矩阵乘加运算,然后控制ADC将运算结果转换为数字信号;
3)嵌入式处理器读回运算结果并对其进行激活、池化或者基本的运算操作之后,通过内部数据存储器对中间数据进行缓存,并判断是否为最后一层神经网络运算;
4)如果不是最后一层,则循环进行步骤2)和步骤3);如果是最后一层,则进行步骤5);
5)嵌入式处理器进行最终结果处理,判断人工神经网络识别结果,根据识别结果,确定是否将结果输出。
进一步的,步骤2)的实现方法为:通过控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL,经输出控制信号接口给出拉高、拉低或者脉冲控制信号,配合基本操作指令通过外部控制寄存器接口配置外部控制寄存器,拉高、拉低或者脉冲控制信号和外部控制寄存器数据直接发送到算一体阵列/逻辑模块,以控制DAC、存算一体阵列以及ADC顺序进行工作。
进一步的,步骤3)的实现方法为:首先通过输入信号比较指令CMPB、等待输入信号跳变指令WAIT指令捕捉通过输入指示接口输入的存算一体阵列/逻辑的状态指示信号,确认ADC转化完成以及算一体阵列/逻辑数据准备就绪,然后通过控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL并配合基本操作指令,生成控制信号和外部控制寄存器值,通过数据总线接口将矩阵乘加运算结果读回;然后再使用激活函数查找表指令LUT、多个数相加指令ADDM、取最大值指令MAX配合基本操作指令对结果进行激活、池化或者基本的运算操作之后,通过内部数据存储器对中间数据进行缓存,并判断是否为最后一层神经网络运算。
进一步的,所述输入信号比较指令CMPB,用于对单比特输入信号进行0/1比较,比较结果写到存储相应结果的嵌入式处理器内部寄存器;所述输入信号比较指令CMPB所操作的单比特信号为通过输入指示信号接口输入的指示信号;所述等待输入信号跳变指令WAIT,用于等待输入单比特信号状态跳变,在跳变之前嵌入式处理器不执行其他操作;所述控制信号使能指令ENA,用于对控制信号进行拉高操作,当操作数位宽为N时对最多N个控制信号进行使能操作;所述控制信号去使能指令DISA,用于对控制信号进行拉低操作,当操作数位宽为N时对最多N个控制信号进行去使能操作;所述控制信号脉冲指令PUL,用于最多同时产生N个控制信号脉冲;所述激活函数查找表指令LUT,用于利用查找表对存算一体运算结果进行激活操作;所述多个数相加指令ADDM,用于多个数相加;所述取最大值指令MAX,用于数据比较寻找最大值或用于卷积神经网络中的最大值池化操作。
进一步的,所述控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL的数据格式均包括:指令类型字段、预留字段、产生所操作信号的寄存器编号字段和所操作的信号字段;所述输入信号比较指令CMPB和等待输入信号跳变指令WAIT的指令格式包括:指令类型字段、预留字段、0/1指示字段和信号编号字段;所述激活函数查找表指令LUT的数据格式包括:指令类型标识字段、存放查表结果的目的内部寄存器编号字段、存放需要进行激活操作数据的源内部寄存器编号字段和查找表在内部数据存储器中的基地址字段;所述嵌入式处理器执行所述控制信号使能指令ENA、控制信号去使能指令DISA或控制信号脉冲指令PUL时,首先指针计数模块根据当前指令指针计数,读取该条指令,译码模块进行指令译码,确定当前指令为所述控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL三种指令之一,则通过寄存器编号索引到相应的寄存器,指令执行模块根据指令中的设置值对相应寄存器的值进行操作,数据回写模块将操作结果回写到相应寄存器;所述嵌入式处理器通过激活函数查找表指令LUT对数据进行激活操作。
一种存算一体芯片的嵌入式处理器,包括指针计数模块、指令译码/取数模块、指令执行模块、数据回写模块、指令存储器、数据存储器、内部寄存器、数据总线接口;其特征在于,还包括输入数据接口、输出控制信号接口、输入指示信号接口以及外部控制寄存器接口;其中,
所述嵌入式处理器,用于控制存算一体芯片运行流程和除存算一体阵列/逻辑模块完成的运算之外的其他所有的数据运算和处理;
所述输入数据接口,分别与数据总线接口、外部输入数据缓存模块、指令译码/取数模块连接,用于嵌入式处理器访问需要进行人工神经网络计算处理识别的数据;
所述输出控制信号接口,与存算一体阵列/逻辑模块连接,用于输出嵌入式处理器运行指令产生的各种控制信号;
所述输入指示信号接口,与数据总线接口、指令执行模块和其他设定模块连接,用于输入指令执行模块和其他设定模块的指示信号或系统的中断信号;
所述外部控制寄存器接口,与数据总线接口、指令译码/取数模块、数据回写模块以及外部的控制寄存器连接,用于直接访问外部控制寄存器,为存算一体阵列/逻辑或者除嵌入式处理器之外的其他模块提供寄存器控制信号。
进一步的,嵌入式处理器能够执行的存算一体人工神经网络计算专有操作指令包括但不限于以下一个或多个指令:控制信号使能指令、控制信号去使能指令、控制信号脉冲指令、输入信号比较指令、等待输入信号跳变指令、激活函数查找表指令、取最大值指令、多个数相加指令。
进一步的,所述控制信号使能指令用于对控制信号进行拉高操作,当操作数位宽为N时单条指令对最多N个控制信号进行使能操作;所述控制信号去使能指令用于对控制信号进行拉低操作,当操作数位宽为N时单条指令对最多N个控制信号进行去使能操作;所述控制信号脉冲指令用于最多同时产生N个控制信号脉冲;所述控制信号使能指令、控制信号去使能指令、控制信号脉冲指令的数据格式均包括:指令类型字段、预留字段、产生所操作信号的寄存器编号字段和所操作的信号字段;所述嵌入式处理器执行所述控制信号使能指令、控制信号去使能指令或控制信号脉冲指令时,首先指针计数模块根据当前指令指针计数,读取该条指令,译码模块进行指令译码,确定当前指令为所述控制信号使能指令、控制信号去使能指令、控制信号脉冲指令三种指令之一,则通过寄存器编号索引到相应的寄存器,指令执行模块根据指令中的设置值对相应寄存器的值进行操作,数据回写模块将操作结果回写到相应寄存器。
进一步的,所述输入信号比较指令用于对单比特输入信号进行0/1比较,比较结果写到存储相应结果的嵌入式处理器内部寄存器;其中所述输入信号比较指令所操作的单比特信号为通过输入指示信号接口输入的指示信号;所述等待输入信号跳变指令用于等待输入单比特信号状态跳变,在跳变之前嵌入式处理器不执行其他操作;输入信号比较指令和等待输入信号跳变指令的指令数据格式包括:指令类型字段、预留字段、0/1指示字段和信号编号字段;所述激活函数查找表指令用于利用查找表对存算一体运算结果进行激活操作,其中激活函数查找表指令的数据格式包括:指令类型标识字段、存放查表结果的目的内部寄存器编号字段、存放需要进行激活操作数据的源内部寄存器编号字段和查找表在内部数据存储器中的基地址字段;所述取最大值指令用于数据比较寻找最大值或用于卷积神经网络中的最大值池化操作;所述多个数相加指令用于多个数相加。
一种存算一体芯片的嵌入式处理器指令集,包括嵌入式处理器的基本操作指令,其特征在于,还包括存算一体人工神经网络计算专有操作指令;其中,所述存算一体人工神经网络计算专有操作指令包括但不限于以下一个或多个指令:控制信号使能指令、控制信号去使能指令、控制信号脉冲指令、输入信号比较指令、等待输入信号跳变指令、激活函数查找表指令、取最大值指令、多个数相加指令。
一种存储介质,用于存储指令集,其特征在于,所述指令集包括基本操作指令和存算一体人工神经网络计算专有操作指令;其中,所述存算一体人工神经网络计算专有操作指令包括但不限于以下一个或多个指令:控制信号使能指令、控制信号去使能指令、控制信号脉冲指令、输入信号比较指令、等待输入信号跳变指令、激活函数查找表指令、取最大值指令、多个数相加指令。
本发明存算一体芯片的嵌入式处理器,包括一般嵌入式处理器的常见模块,即:指针计数、指令译码/取数、指令执行、数据回写、指令存储器、数据存储器、内部寄存器等模块、数据总线接口,同时包括针对存算一体芯片应用而专门设置的输入数据接口、输出控制信号接口、输入指示信号接口以及外部控制寄存器接口。
所述处理器的单条指令执行时,由指针计数模块发起,根据当前的指令指针计数,从上述指令存储器获取(或读取)一条指令,指令依次经过指令译码/取数模块、指令执行模块和数据回写模块执行完成。
所述处理器运行方式可以采用多级流水线的方式运行,在固定的每一个时钟周期或者每几个时钟周期读取一条指令,然后运行,指令运行周期可以采用定长的方式,即每种指令的运行周期都相同,或者采用变长指令周期的方式,这样实现起来更加灵活,多级流水线方式能保证指令以最高的效率运行,可以缩短运行时间。
可选的,在时间要求不高的应用中,所述处理器也可以串行方式运行指令,当上一条指令完全运行完毕之后再读取和运行下一条指令,每种指令的指令周期可以根据具体情况而不同。
所述的指针计数模块,主要负责处理器读取指令的指针计数,用于进行指令的读取,如果执行到跳转指令或者定时空转指令,则该模块需要进行指令指针的跳转或者暂停。
所述的指令译码/取数模块主要对读取的指令数据进行译码,确定需要执行的指令操作以及操作数,如果指令需要对其他来源的数据进行操作,则该模块还需要从相应的数据来源取数,比如从内部寄存器或者数据总线取数等。
可选的,因为是存算一体芯片,操作对象来源可能包含针对存算一体设置的输入数据接口、输入数据指示信号接口或者外部控制寄存器接口等,可以为数据,也可以为存算一体阵列的某些控制信号或者指示信号。
所述的指令执行模块主要进行各种指令的具体执行,具体包括基本操作指令和存算一体人工神经网络计算专有操作指令的执行。
所述的数据回写模块,主要将指令执行结果写入相应的数据存放位置,具体可包括将数据写入内部寄存器、内部数据存储器、外部控制寄存器或者外部数据总线,需要说明的是,并不是所有的指令执行完成之后都要进行数据回写。
所述的指令存储器用于存放处理器要执行的所有指令,可以根据系统需求选择相应的存储器类型和位宽。
所述的数据存储器用于存放程序执行的中间数据,或者系统需要的数据,方便处理器快速访问,比如用于存放神经网络计算的中间结果、存算一体阵列中模拟数字转换(ADC)的输出结果以及激活函数查找表等。
所述的内部寄存器用于处理器的内部计算结果寄存,也可以用于地址,指令等的缓存,处理器可以高速访问。
所述的数据总线用于处理器与其他模块进行数据交互的通用接口总线,包括芯片的各种外设接口,比如串行外设接口SPI,通用异步串行总线UART等,也包括存算一体阵列/逻辑的接口,所以数据总线可以根据存算一体芯片的具体需求确定。可选的,数据总线可以采用单独设计的专用总线,采用同步时序,这样可以保证高效的数据访问,也可以使用一般的通用总线,比如高级微控制器总线结构(AMBA)总线等,通用性提高,但是数据访问效率将会降低。
所述的针对存算一体芯片设置的输入数据接口,用于连接外部输入数据缓存模块和处理器内部指令译码/取数模块,通过该接口,处理器直接访问需要进行人工神经网络计算处理识别的数据,而可以不通过数据总线接口,进一步的,采用同步方式访问,可以大大提高数据访问速度,这样可以在一个指令周期完成相应数据的读取和基本处理。
所述的针对存算一体芯片设置的输出控制信号接口,是指处理器通过运行指令产生的各种控制信号的输出接口,这些控制信号包括各种使能信号,脉冲信号等,可以直接连接到存算一体阵列/逻辑模块,这样处理器可以直接控制存算一体阵列/逻辑的行为,提高控制效率,可选的,这些控制信号也可以发送到存算一体芯片的其他模块,用于其他模块的控制。
所述的针对存算一体芯片设置的输入指示信号接口,用于处理器内部指令执行模块和芯片中其他模块各种指示信号连接输入的接口,比如用于存算一体阵列/逻辑的相关指示信号输入,或者芯片中其他模块的状态信号或者中断信号的输入。实际系统部署的时候,输入指示信号的数目可以根据系统实际需求进行设置,而理论支持最大信号数目由相关指令定义确定。
所述的针对存算一体芯片设置的外部控制寄存器接口,是用于外部的控制寄存器和处理器内部的指令译码/取数模块以及数据回写模块连接的接口,这样处理器即可直接访问外部控制寄存器,外部控制器可为芯片的存算一体阵列/逻辑或者其他模块提供处理器可直接访问的寄存器控制信号,便于系统实现。外部寄存器的访问方式与内部寄存器相同,可以直接通过一些基本操作指令访问操作。
一种存算一体芯片的嵌入式处理器指令集,主要分为基本操作指令和存算一体人工神经网络计算专有操作指令,其中基本操作指令包括逻辑操作指令、位操作指令、移动操作指令、算术操作指令、转移指令、访存指令、其他指令等,存算一体人工神经网络计算专有操作指令指在存算一体芯片中,对存算一体阵列/逻辑进行人工神经网络运算控制和计算等相关指令,具体的:
所述逻辑操作指令可以包括基本的AND、OR、XOR、NOR等指令,分别表示逻辑与、逻辑或、逻辑异或、逻辑或非操作。
所述位操作指令可以包括基本的SRL、SLL、SRA、ANDB、ORB等指令,分别表示逻辑右移、逻辑左移、算术右移、按位与、按位或操作。
所述移动操作指令可以包括基本的SET、MOVN、MOVZ等指令,分别表示设置值、条件非零搬移、条件为零搬移。
所述算术操作指令可以包括基本的无符号加法(ADD)、有符号加法(ADDI)、无符号减法(SUB)、无符号乘法(MUL)、有符号乘法(MULI)、无符号除法(DIV)、有符号数除法(DIVI)、等于比较(CMPE)、小于比较(CMPL)、小于等于比较(CMPLE)等。
所述转移指令可以包括基本的JMP、JIF、JIFN等指令,分别表示跳转、条件成立跳转和条件不成立跳转。
所述访存指令可以包括基本的RD、WR等指令,分别表示读取和写入内存指令。
所述其他指令可以包括NOP、TM、RT等指令,分别表示空指令,定时空转指令,返回指令。
所述存算一体人工神经网络计算专有操作指令可以包括控制信号使能(ENA)、控制信号去使能(DISA)、控制信号脉冲(PUL)、输入信号比较(CMPB)、等待输入信号跳变(WAIT)、激活函数查找表指令(LUT)、取最大值指令(MAX)、多个数相加指令(ADDM)等。
所述存算一体人工神经网络计算专有操作指令,相对于其他基本操作指令,在执行存算一体芯片中的人工神经网络运算时更加高效和直接,处理器可以通过这些指令直接控制存算一体阵列/逻辑的行为,也可以对存算一体阵列/逻辑的指示信号做出直接快速的反应,或者将多条基本操作指令协同才能完成的任务,融合到单条指令完成。比如激活函数使用查找表可以保证存算一体芯片最大的灵活性,这样处理器就不需要实现每一种激活函数,而且可以根据芯片应用场景对查找表进行调整,也可以随时根据实际模型效果对查找表进行微调,并不一定严格遵循人工神经网络计算中常见的sigmoid函数、tanh函数或者ReLU函数等定义要求。该种设计还能保证在利用查找表进行激活操作的时候,各种激活函数时延相同。
需要说明的是,上述的人工神经网络计算专有操作指令的格式和基本操作指令的格式相同,即指令宽度,指令中标识具体指令类型的比特域位置等都是相同,只是操作数据(或对象)来源定义可能会有不同,比如专有操作指令需要直接操作存算一体相关的控制信号,指示信号等。除此之外,专有操作指令的指令处理流程和基本操作指令是完全一致的。
需要说明的是,前面只是列出了一些基本指令集,可以配合完成存算一体芯片的人工神经网络计算和芯片完整流程控制,可以根据实际系统需求,进一步扩展指令集,以使系统工作更高效,或者精简部分指令,以减小处理器所占用的资源。
以上所述的存算一体芯片的整体架构、存算一体阵列以及相关的控制逻辑并不做限定,根据实际芯片需求,存算一体芯片还可以包括其他的各种功能模块,比如语音/图像数据预处理模块等。存算一体阵列的存储单元可以为浮栅场效应晶体管(FG-MOSFET)、硅-氧化硅-氮化硅-氧化硅-硅场效应管(SONOS-FET)、忆阻器(RRAM)、相变存储器(PCRAM)、铁电存储器、磁性存储器(MRAM)等器件中的一种或几种组合,可以包含或不包含数模转换(DAC)和ADC、放大电路、时钟电路等。
与现有技术相比,本发明的积极效果为:
本发明扩展了嵌入式处理器的指令集和接口,指令集中新增的专用操作指令都是可以直接执行的,即将人工神经网络相关计算所需的额外电路逻辑通过指令方式增加到指令集中,从而提高处理器的效率,降低整体芯片的开发集成难度、整体运算功耗和计算时延。
附图说明
图1为本发明中一种存算一体芯片的嵌入式处理器基本架构;
图2A为一种ENA/DISA/PUL指令格式的实施例;
图2B为一种CMPB/WAIT指令格式的实施例;
图2C为一种LUT指令格式的实施例;
图3是基于本发明的一种存算一体芯片的架构实施例;
图4是基于本发明的一般数据处理流程实施例;
图5是基于本发明的一种存算一体语音识别芯片的基本数据处理流程实施例。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加清楚,详细的描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1所示,本发明实施例给出了一种存算一体芯片的嵌入式处理器基本架构,主要分为通用型嵌入式处理器的常见的内部指令处理相关部分和针对存算一体芯片应用而专门设置的外部接口相关部分,其中内部指令处理相关部分包括:
指针计数模块,用于对指令指针进行计数,并根据指令指针从指令存储器里读取指令,在上电或者复位之后,指令指针从指令存储器的0地址或者某个指定地址开始读取指令,指针计数步进可以根据指令存储器进行调整,如果执行到跳转指令或者定时空转指令,则指令指针需要进行相应的跳转或者暂停。
指令译码/取数模块,主要对读取的指令数据进行译码,确定需要执行的指令操作以及操作数,如果指令需要对其他来源的数据进行操作,则该模块还需要从相应的数据来源取数,可选的数据来源包括但不限于指令中的立即数、所述处理器内部寄存器、内部数据存储器、外部输入的语音/图像数据、数据总线获取数据、输入信号、外部控制寄存器等。根据操作指令不同,可能不需要操作数,或者需要1个或多个操作数,操作数来源也可以有多个不同的来源,这样可以提高芯片的处理效率,对于一些传统处理器需要多条指令才能完成的任务,所提出的处理器单条指令即可完成。
指令执行模块主要进行各种指令的具体执行,具体包括基本操作指令和存算一体人工神经网络计算专有操作指令的执行。
数据回写模块,主要将指令执行结果写入相应的数据存放位置,具体可包括将数据写入内部寄存器、内部数据存储器、外部控制寄存器或者外部数据总线,需要说明,并不是所有的指令执行完成之后都要进行数据回写。
指令存储器模块,用于存放处理器要执行的所有指令,可以根据系统需求选择相应的存储器类型和位宽。比如可以选择普通的静态存储器(SRAM)作为指令存储器,但是需要单独一块只读存储器(比如ROM)存放系统启动代码,上电之后启动代码首先执行代码搬移程序,通过接口从芯片外部非易失性存储器将完整指令代码搬移到内部指令存储器,然后再运行完整代码。也可选择可随机读取的NOR Flash作为指令存储器,这样一次烧写完成之后,即可永久使用,同时不需要在外部存储一份指令代码,便于控制系统成本。
数据存储器模块,用于存放程序执行的中间数据或者系统需要的数据,方便处理器快速访问,比如使用部分空间用于缓存输入的语音/图像数据,方便后级存算一体阵列分片和滑动方式进行神经网络运算,也可以使用部分空间存放神经网络计算的中间结果、存算一体阵列/逻辑中模拟数字转换(ADC)的输出结果以及激活函数查找表等。数据存储器模块可以由一块或者多块存储阵列构成,阵列类型和大小也可以根据实际系统需求和成本等选择,比如对于一些只要求读操作的数据,同样可以选择使用NOR Flash。
内部寄存器模块,用于处理器的内部计算结果寄存,也可以用于地址、指令等的缓存,处理器可以高速访问。内部寄存器需要根据功能进行划分,比如加减乘除等一般算术操作数据来源寄存器、运算结果寄存器、用于存放比较指令结果的寄存器、备用寄存器等。
数据总线用于处理器与其他模块进行数据交互的通用接口总线,包括芯片的各种外设接口,比如串行外设接口SPI、通用异步串行总线UART等,也包括存算一体阵列/逻辑的数据接口,所以数据总线可以根据存算一体芯片的具体需求确定,可以采用定制的专用总线,包括地址线、数据线、读写是能、字节/比特标识等,总线操作可以采用同步方式,这样可以保证高效的数据访问,可以在单条指令中实现对运算阵列的取数和运算操作。可选的,也可以使用一般的通用总线,比如高级微控制器总线结构(AMBA)总线等,通用性提高,但是数据访问效率将会降低。
针对存算一体芯片应用而专门设置的外部接口相关部分主要包括:
针对存算一体芯片设置的输入数据接口,用于处理器直接访问需要进行人工神经网络处理识别的数据,而可以不通过数据总线接口,这样可以大大提高数据访问速度。为了通用性,该接口包括地址、数据、读写使能、字节/比特指示等,数据位宽最大为处理器操作数位宽,进一步,为了提高访问速度,保证指令执行阶段及时取回操作数,采用同步接口形式进行实现。
针对存算一体芯片设置的输出控制信号接口,是指处理器直接产生的一系列存算一体阵列/逻辑的控制信号,比如各种使能信号、脉冲信号等,这样处理器可以直接控制存算一体阵列/逻辑行为,大大提高控制效率。可选的,这些控制信号也可以根据系统需求,应用于芯片的其他部分控制,比如功能模块使能、电源控制、时钟门控等。
针对存算一体芯片设置的输入指示信号接口,是用于各种存算一体阵列/逻辑的指示信号输入,比如存算一体阵列/逻辑中ADC/DAC数据转换完成指示信号,阵列权重烧录过程的指示信号等,也可以用于系统的中断信号输入,比如系统的定时中断、SPI接口中断等。实际系统部署的时候,输入指示信号的数目可以根据系统实际需求进行设置,而理论支持最大信号数目由相关指令定义确定。
针对存算一体芯片设置的外部控制寄存器接口,是用于直接访问外部控制寄存器的接口,外部控制器可为芯片其他模块提供寄存器控制信号,比如存算一体阵列/子阵列的起始/结束地址、阵列大小等。从通用性出发,该接口包括寄存器编号、读写数据线、读写是能、字节/比特指示等,更进一步的,为了保证高速访问,保证指令执行阶段及时取回操作数,可以采用同步方式访问,相关指令对外部寄存器的操作则可以完全比照内部寄存器来进行。
除了图1中显式标注子模块之外,该实施例中还可能包括其他的一些逻辑部分,并没有完全列出,比如处理器的其他流程控制部分逻辑、子模块之间的交互接口等。
表1给出了所述存算一体芯片处理器所对应的指令集,包括基本操作指令和存算一体人工神经网络计算专有操作指令两大类,基本操作指令又分为逻辑操作指令、位操作指令、移动操作指令、算术操作指令、转移指令、访存指令和其他指令。
表1.指令集
逻辑操作指令包括基本的AND、OR、XOR、NOR指令,分别表示逻辑与、逻辑或、逻辑异或、逻辑或非操作,对来源于外部数据输入、内部寄存器、内部户存储器、外部控制寄存器和数据总线的两个数据进行操作,两个数据可以都来源于内部寄存器,也可以来自不同来源,当来源于数据总线时,要求数据总线为同步时序,运算结果存放于默认内部寄存器。
位操作指令包括基本的SRL、SLL、SRA、ANDB、ORB指令,分别表示逻辑右移、逻辑左移、算术右移、按位与、按位或操作、逻辑右移高位直接补零、逻辑左移低位直接补零、算术右移高位补符号位、按位与和按位或的数据来源通逻辑操作指令,还可以进一步指定按位与和按位或的操作比特位数。
移动操作指令包括基本的SET、MOVN、MOVZ指令,分别表示设置值、条件非零搬移、条件为零搬移;SET是进行立即数赋值;MOVN是在CPU内部寄存器的比较结果寄存器不为零的时候,进行数据搬移;MOVZ是在CPU内部寄存器的比较结果寄存器为零的时候,进行数据搬移,数据来源或者目的地同逻辑操作指令。
算术操作指令可以包括基本的无符号加法(ADD)、有符号加法(ADDI)、无符号减法(SUB)、无符号乘法(MUL)、有符号乘法(MULI)、无符号除法(DIV)、有符号数除法(DIVI)、等于比较(CMPE)、小于比较(CMPL)、小于等于比较(CMPLE),其中乘法需要进行扩位,所以需要两个寄存器来存放相乘结果,而比较操作可以指定参与比较的比特位数。
转移指令包括基本的JMP、JIF、JIFN指令,分别表示跳转、条件成立跳转和条件不成立跳转,跳转的时候,需要对跳转前的指针进行记录,方便函数跳转之后返回。
访存指令可以包括基本的RD、WR指令,分别表示读取内存和写入内存指令,可以对内部数据存储器和外部数据总线进行读写。
其他指令包括NOP、TM、RT指令,分别表示空指令、定时空转指令、返回指令,其中TM指令可以指定处理器等待固定时间,不进行其他操作,RT指令则返回上一次指令跳转指针下一个指针位置。
存算一体人工神经网络计算专有操作指令包括:
控制信号使能指令(ENA)/控制信号去使能指令(DISA),对一些控制信号拉高或者拉低操作,当操作数位宽为N时,单条指令即可对最多N个控制信号进行使能或者去使能操作。控制信号脉冲指令(PUL),单条指令可同时产生N个控制信号脉冲,脉冲宽度根据系统需求进行指定。
图2A所示为一种ENA/DISA/PUL指令实现格式,指令宽度为32比特,操作数位宽为16比特。其中指令的高6比特表示指令类型,比特[25:23]为保留不用,[22:16]为产生所操作信号的寄存器编号,[15:0]表示对应的哪些信号需要进行拉高、拉低或者产生脉冲的操作。此种实现方式,将处理器输出控制信号,按照操作数位宽进行编组,每组16个控制信号,对应一个16比特位宽的寄存器,所有寄存器统一编号,指令中用[22:16]来索引,即共支持128个寄存器,相当于处理器最大支持通过输出控制信号接口输出2048个控制信号,每条指令,只能操作同一个寄存器里面的一个或者多个信号(最多16个),具体操作哪些信号通过[15:0]来进行指示,只有当对应比特为1的时候,才会对相应信号进行拉高、拉低或者产生脉冲操作。
处理器在执行一条ENA/DISA/PUL指令的时候,首先指针计数模块根据当前指令指针计数,读取该条指令,译码模块进行指令译码,确定当前指令为ENA/DISA/PUL三种指令之一,则通过寄存器编号索引到相应的寄存器,指令执行模块根据指令中的设置值,对相应寄存器的值进行操作,只有设置值为1的相应比特的值才会进行更改,其他比特保持原来的值不变,数据回写模块将操作结果回写到相应寄存器,此时寄存器对应的输出控制信号相应的拉高、拉低或者产生脉冲,发送到存算一体阵列/逻辑或者芯片中连接控制信号的其他模块。
输入信号比较指令(CMPB),可以对单比特输入信号进行0/1比较,比较结果写到存储相应的结果处理器内部寄存器。该条指令直接操作的单比特信号主要是指通过处理器输入指示信号接口输入的指示信号,比如输入的权重烧录的状态指示信号,程序通过该条指令判断当前烧录的状态,只有当状态指示信号为1的时候,当前行或者列烧录结束,需要重复进行烧录。
等待输入信号跳变指令(WAIT),可以等待输入单比特信号状态跳变,在跳变之前,处理器不执行其他操作,跳变可以为0到1跳变,也可以1到0跳变,也可以两者兼具。比如,当进行人工神经网络运算时,ADC需要将模拟运算结果转化为数字信号,转化完成之后ADC控制逻辑会将相应的完成指示信号拉高,嵌入式处理器则可以利用该条指令来对该指示信号进行捕捉,译码模块解析到当前指令为WAIT指令时,则会通知前级指针计数模块暂停指针计数和读取新的指令,只有当指令执行模块检测到指示信号拉高之后,才会通知前级的指针计数模块继续读取新的指令,程序才进行下一步的操作。
图2B所示为一种CMPB/WAIT指令的实现格式,同样的,比特[31:26]表示指令类型,[23]表示0/1指示,即CMPB指令需要进行0的比较还是1的比较,或者WAIT指令等待信号跳变为0还是1,[22:16]表示需要进行比较或者等待跳变的信号编号,该指令的其他比特保留。从该条指令定义可以看出,处理器最大支持128个指示信号的输入和操作,每条指令只能对这128个信号中的一个信号进行操作,具体通过信号编号[22:16]进行索引。
需要说明的是,图2A和图2B都只是相应指令实施的方式之一,可以根据系统不同,有着其他实施方式,这里主要是为了说明相应人工神经网络专有操作指令实施的可行性,比如对于指令宽度和操作数宽度都为32的情况,则可以采用其他实施方式,比如通过CPU内部寄存器的值代替图2A中的设置值,这样一条指令即可设置最大32个信号。
激活函数查找表指令(LUT),对存算一体运算结果进行激活操作,激活函数使用查找表可以保证存算一体芯片最大的灵活性,这样处理器就不需要实现每一种激活函数,而且可以根据芯片应用场景对查找表进行调整,也可以随时根据实际模型效果对查找表进行微调,并不一定严格遵循sigmoid函数、tanh函数或者ReLU函数等。该种设计还能保证在利用查找表进行激活操作的时候,各种激活函数时延相同,如果使用硬件电路来实现各种激活函数的转化,每种激活函数都需要一种专有硬件电路来实现,因为难度各异,不同激活函数转化周期也会有不同,这样对于人工神经网络计算流程的控制会比较复杂,并且一旦做成芯片,则不能进行激活函数扩展或者修改,会限制存算一体芯片的应用场景。
图2C所示为一种LUT指令的实现格式,这里假设处理器有32个内部寄存器,激活函数查找表存于处理器内部数据存储器中,[31:26]为指令类型标识,[25:21]为存放查表结果的目的内部寄存器编号,[20:16]为存放需要进行激活操作数据的源内部寄存器编号,[15:0]为查找表在内部数据存储器中的基地址。当运行该条指令时,处理器将[20:16]表示的源寄存器中的数据与基地址相加,作为查找表地址从内部存储器中查找到激活函数结果,并写回[25:21]表示的目的内部寄存器之中,即完成了激活函数查找操作。
取最大值指令(MAX),可以用于数据比较,找最大值,也可以用于卷积神经网络中的最大值池化(Max pooling)操作,操作之前,需要将数据搬移到专用的寄存器之中,专用寄存器最大个数可以根据系统实际需求指定,也可以用于快速对神经网络运算结果进行处理,找出识别概率最大的结果。
多个数相加指令(ADDM),可以用于多个数相加,可以实现求和池化(Sumpooling),配合移位操作指令,也可以实现平均值池化(Average pooling)操作,同样的,操作之前,需要将数据搬移到专用的寄存器之中,专用寄存器最大个数可以根据系统实际需求指定。
需要说明的是,MAX/ADDM等人工神经网络专有指令的实现格式可以参照图2A、图2B和图2C,或者根据实际系统需求进行实现。
需要说明的是,该指令集实施例只是列举了一些最基本的指令,这些指令基本可以完成一颗存算一体芯片的流程控制和数据处理运算,针对本公开处理器架构以及存算一体芯片实现复杂度,可以进一步扩展或者精简图中所示例的指令集,以达到更高效的控制或者更小的芯片面积。
图3所示为一集成本发明架构处理器和指令集的存算一体芯片实施例,该芯片为一颗应用于语音识别或者图像识别的神经网络芯片。实施例芯片主要包括嵌入式处理器、存算一体阵列/逻辑模块、定制同步数据总线、数据预处理/缓存模块等。其中的嵌入式处理器模块即为本发明所述的存算一体芯片的专用嵌入式处理器,同步数据总线上挂有数据输入接口、SPI接口、UART接口、I2C接口、GPIO接口等外设接口。本实施例只是为了说明使用本发明所述的存算一体芯片的嵌入式处理器设计一颗存算一体人工神经网络芯片的可行性,可以作为使用本发明进行芯片设计的简单参考。
处理器主要负责整个芯片运行流程控制和除存算一体阵列完成的乘加运算之外的其他所有的数据运算和处理。
存算一体阵列可以采用浮栅场效应晶体管、硅-氧化硅-氮化硅-氧化硅-硅场效应管、忆阻器、相变存储器、铁电存储器、磁性存储器等器件中的一种或几种组合实现,除了存算一体阵列之外,周围逻辑还需要包含DAC和ADC、放大电路、控制切换电路等,其中DAC用于将需要进行人工神经网络运算的数据转换为模拟信号,以进行模拟的乘加运算,运算完成之后的结果为模拟信号,所以还需要使用ADC将模拟信号转换为数字信号,处理器会读取转换为的数字信号数据进行激活变换以及其他变换处理,DAC变换之后或者ADC变换之前需要进行模拟信号的切换,放大等操作,以适应于运算阵列计算或者ADC变换。
各种外设接口主要用于芯片与外部进行数据交换,比如语音/图像数据输入、外部芯片配置、调试信息交互、识别结果输出等,比如对于语音数据输入,外部芯片可能采用的集成电路内置音频总线(I2S)接口,则数据输入接口为I2S接口。
数据预处理/缓存模块,主要对输入数据进行预处理和缓存,比如进行语音数据的梅尔倒谱系数提取(MFCC)和数据缓存,也可以不进行任何处理直接对数据进行缓存,通过处理器和存算一体阵列直接对数据进行处理,该模块处理器可以直接访问,也可以通过配置直接将数据送入存算一体阵列,而不通过处理器的搬移和处理,可以实现更高效率的流程处理。
图4展示的为一采用本发明处理器架构和指令的存算一体芯片的一般数据处理流程实施例,实施例存算一体阵列将被配置为多个子阵列,通过配置不同权重和大小的子阵列来进行相应的矩阵乘加运算。如图中所示,一般的数据处理流程如下:
1)芯片上电,处理器进行芯片内部接口、运算阵列以及外部其他芯片配置;
2)数据输入到输入数据缓存中,可选的,数据预处理模块可以对输入数据进行预处理,等待指定深度的输入数据缓存满;
3)处理器通过移动操作指令和位操作指令等基本操作指令,通过数据输入接口直接从输入数据缓存中读取数据到处理器,进行基本的处理;
4)处理器通过基本操作指令,通过数据总线接口将数据送入存算一体阵列/逻辑,这里的数据可以是从数据输入缓存中读入的经过基本处理的数据,也可以是上一次人工神经网络运算之后在内部数据存储器中缓存的数据;通过ENA、DISA、PUL等专有操作指令,经输出控制信号接口给出拉高、拉低或者脉冲控制信号,配合基本操作指令通过外部控制寄存器接口配置外部控制寄存器,这些控制信号和外部控制寄存器都直接发送到算一体阵列/逻辑模块,具体的,这些控制信号和外部控制寄存器首先控制DAC将数据转换为模拟信号,然后控制存算一体子阵列进行矩阵乘加运算,最后控制ADC将运算结果转换为数字信号;
5)处理器通过CMPB、WAIT指令捕捉通过输入指示接口输入的存算一体阵列/逻辑的状态指示信号,比如ADC转化完成指示信号或者存算一体阵列/逻辑数据准备就绪指示信号,确认ADC转化完成以及算一体阵列/逻辑数据准备就绪,然后通过ENA、DISA、PUL等专有操作指令,并配合基本操作指令,给出如步骤4)类似的控制信号和外部控制寄存器值,通过数据总线接口将矩阵乘加运算结果读回,再使用LUT、ADDM、MAX等专有操作指令、配合基本操作指令对结果进行激活、池化或者基本的运算操作之后,可以通过内部数据存储器对中间数据进行缓存,最后判断是否为最后一层神经网络运算,如果不是最后一层,则循环进行步骤4)和步骤5),如果是最后一层,则进行下一步;
6)处理器使用MAX、CMPL等指令进行最终结果处理,判断人工神经网络识别结果,根据识别结果,确定是否通过GPIO/UART等外设将结果输出,之后返回第二步继续进行人工神经网络运算。
需要说明的是,上述的一般数据处理流程包括语音、图像或者其他的数据处理流程,根据处理数据和存算一体阵列结构等的不同,可能对上述流程中的步骤进行增加、删减或者修改,每一步中所使用的指令也会根据芯片实际结构等不同而不同,如下面所示的一种语音识别芯片处理流程。
图5展示的为一采用本发明处理器架构和指令集的存算一体语音识别芯片的一般数据处理流程实施例,实施例中采用三层神经网络进行语音识别,并且采用存算一体阵列进行DFT计算提取语音的频谱系数,所以将存算一体阵列通过配置分为4个子阵列,分别用子阵列0/1/2/3表示,每帧语音数据的时间长度为T,前后两帧之间有T/2时间重叠,以减小相邻两帧之间的变化,神经网络计算时同时对M帧数据进行计算,每次计算滑动一帧,具体流程为:
1)芯片上电,处理器首先进行各种接口和运算阵列配置,可能还包括对外部语音采集芯片的配置;
2)等待时间长度为T的语音数据采集输入和缓存满;
3)处理器通过移动操作指令和位操作指令等基本操作指令,从输入数据缓存中读取语音数据,进行基本处理;
4)处理器将数据送入存算一体阵列/逻辑,通过ENA、DISA、PUL等专有操作指令,给出控制信号,配合基本操作指令,首先控制DAC将语音数据转换为模拟信号,然后控制存算一体子阵列0进行离散傅里叶变换(DFT),提取语音的频谱系数,最后控制ADC将运算结果转换为数字信号;
5)处理器通过ENA、DISA、CMPB、WAIT等神经网络专有指令,并配合基本操作指令,读回DFT运算结果,暂存在处理器内部存储器中,并检测是否有语音信号,如果没有,则返回步骤2),否则进入下一步;
6)处理器将当前帧和之前M-1帧的语音频谱数据送入子阵列1进行输入层神经网络计算,具体使用的指令以及控制和运算流程如步骤4)和5);
7)处理器读回输入层的运算结果,使用LUT指令查表进行激活处理之后,将数据送入子阵列2进行隐藏层神经网络计算,使用的其他指令以及控制和运算流程如步骤4)和5);
8)处理器读回隐藏层的运算结果,同样使用LUT指令进行激活处理之后,将数据送入子阵列3进行输出层神经网络计算,使用的其他指令以及控制和运算流程如步骤4)和5);
9)处理器读回输出层计算结果,使用MAX、CMPL等指令进行结果处理,判断是否有有效语音指令,如果没有,则返回步骤2),否则进行下一步;
10)通过GPIO/UART等外设接口,将语音识别结果或者需要进行的系统操作指令输出。
以上披露的实施例仅用于说明本发明的技术方案,并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (8)
1.一种存算一体芯片的嵌入式处理器数据处理方法,其步骤包括:
1)嵌入式处理器将存算一体芯片的存算一体阵列/逻辑配置为多个子阵列,不同所述子阵列用于数据的矩阵乘加运算或者神经网络不同层的运算;然后通过输入数据接口直接从输入数据缓存中读取数据;
2)当存算一体阵列进行人工神经网络计算时,嵌入式处理器通过控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL,经输出控制信号接口给出拉高、拉低或者脉冲控制信号,配合基本操作指令通过外部控制寄存器接口配置外部控制寄存器,将拉高、拉低或者脉冲控制信号和外部控制寄存器数据送入存算一体阵列/逻辑,控制DAC将待处理数据转换为模拟信号,然后控制存算一体的一对应子阵列进行矩阵乘加运算,然后控制ADC将运算结果转换为数字信号;
3)嵌入式处理器首先通过输入信号比较指令CMPB、等待输入信号跳变指令WAIT指令捕捉通过输入指示接口输入的存算一体阵列/逻辑的状态指示信号,确认ADC转化完成以及算一体阵列/逻辑数据准备就绪,然后通过控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL并配合基本操作指令,生成控制信号和外部控制寄存器值,通过数据总线接口将矩阵乘加运算结果读回;然后再使用激活函数查找表指令LUT、多个数相加指令ADDM、取最大值指令MAX配合基本操作指令对结果进行激活、池化或者基本的运算操作之后,通过内部数据存储器对中间数据进行缓存,并判断是否为最后一层神经网络运算;
4)如果不是最后一层,则循环进行步骤2)和步骤3);如果是最后一层,则进行步骤5);
5)嵌入式处理器进行最终结果处理,判断人工神经网络识别结果,根据识别结果,确定是否将结果输出。
2.如权利要求1所述的方法,其特征在于,
所述输入信号比较指令CMPB,用于对单比特输入信号进行0/1比较,比较结果写到存储相应结果的嵌入式处理器内部寄存器;所述输入信号比较指令CMPB所操作的单比特信号为通过输入指示信号接口输入的指示信号;
所述等待输入信号跳变指令WAIT,用于等待输入单比特信号状态跳变,在跳变之前嵌入式处理器不执行其他操作;
所述控制信号使能指令ENA,用于对控制信号进行拉高操作,当操作数位宽为N时对最多N个控制信号进行使能操作;
所述控制信号去使能指令DISA,用于对控制信号进行拉低操作,当操作数位宽为N时对最多N个控制信号进行去使能操作;
所述控制信号脉冲指令PUL,用于最多同时产生N个控制信号脉冲;
所述激活函数查找表指令LUT,用于利用查找表对存算一体运算结果进行激活操作;
所述多个数相加指令ADDM,用于多个数相加;
所述取最大值指令MAX,用于数据比较寻找最大值或用于卷积神经网络中的最大值池化操作。
3.如权利要求1或2所述的方法,其特征在于,所述控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL的数据格式均包括:指令类型字段、预留字段、产生所操作信号的寄存器编号字段和所操作的信号字段;所述输入信号比较指令CMPB和等待输入信号跳变指令WAIT的指令格式包括:指令类型字段、预留字段、0/1指示字段和信号编号字段;所述激活函数查找表指令LUT的数据格式包括:指令类型标识字段、存放查表结果的目的内部寄存器编号字段、存放需要进行激活操作数据的源内部寄存器编号字段和查找表在内部数据存储器中的基地址字段;所述嵌入式处理器执行所述控制信号使能指令ENA、控制信号去使能指令DISA或控制信号脉冲指令PUL时,首先指针计数模块根据当前指令指针计数,读取指令,译码模块进行指令译码,确定当前指令为所述控制信号使能指令ENA、控制信号去使能指令DISA、控制信号脉冲指令PUL三种指令之一,则通过寄存器编号索引到相应的寄存器,指令执行模块根据指令中的设置值对相应寄存器的值进行操作,数据回写模块将操作结果回写到相应寄存器;所述嵌入式处理器通过激活函数查找表指令LUT对数据进行激活操作。
4.一种存算一体芯片的嵌入式处理器,包括指针计数模块、指令译码/取数模块、指令执行模块、数据回写模块、指令存储器、数据存储器、内部寄存器、数据总线接口;其特征在于,还包括输入数据接口、输出控制信号接口、输入指示信号接口以及外部控制寄存器接口;其中,
所述嵌入式处理器,用于控制存算一体芯片运行流程和除存算一体阵列/逻辑模块完成的运算之外的其他所有的数据运算和处理;
所述输入数据接口,分别与数据总线接口、外部输入数据缓存模块、指令译码/取数模块连接,用于嵌入式处理器访问需要进行人工神经网络计算处理识别的数据;
所述输出控制信号接口,与存算一体阵列/逻辑模块连接,用于输出嵌入式处理器运行指令产生的各种控制信号;
所述输入指示信号接口,与数据总线接口、指令执行模块和其他设定模块连接,用于输入指令执行模块和其他设定模块的指示信号或系统的中断信号;
所述外部控制寄存器接口,与数据总线接口、指令译码/取数模块、数据回写模块以及外部的控制寄存器连接,用于直接访问外部控制寄存器,为存算一体阵列/逻辑或者除嵌入式处理器之外的其他模块提供寄存器控制信号。
5.如权利要求4所述的嵌入式处理器,其特征在于,其能够执行的存算一体人工神经网络计算专有操作指令包括但不限于以下一个或多个指令:控制信号使能指令、控制信号去使能指令、控制信号脉冲指令、输入信号比较指令、等待输入信号跳变指令、激活函数查找表指令、取最大值指令或多个数相加指令。
6.如权利要求5所述的嵌入式处理器,其特征在于,所述控制信号使能指令用于对控制信号进行拉高操作,当操作数位宽为N时单条指令对最多N个控制信号进行使能操作;所述控制信号去使能指令用于对控制信号进行拉低操作,当操作数位宽为N时单条指令对最多N个控制信号进行去使能操作;所述控制信号脉冲指令用于最多同时产生N个控制信号脉冲;所述控制信号使能指令、控制信号去使能指令、控制信号脉冲指令的数据格式均包括:指令类型字段、预留字段、产生所操作信号的寄存器编号字段和所操作的信号字段;所述嵌入式处理器执行所述控制信号使能指令、控制信号去使能指令或控制信号脉冲指令时,首先指针计数模块根据当前指令指针计数,读取该条指令,译码模块进行指令译码,确定当前指令为所述控制信号使能指令、控制信号去使能指令、控制信号脉冲指令三种指令之一,则通过寄存器编号索引到相应的寄存器,指令执行模块根据指令中的设置值对相应寄存器的值进行操作,数据回写模块将操作结果回写到相应寄存器。
7.如权利要求5所述的嵌入式处理器,其特征在于,所述输入信号比较指令用于对单比特输入信号进行0/1比较,比较结果写到存储相应结果的嵌入式处理器内部寄存器;其中所述输入信号比较指令所操作的单比特信号为通过输入指示信号接口输入的指示信号;所述等待输入信号跳变指令用于等待输入单比特信号状态跳变,在跳变之前嵌入式处理器不执行其他操作;输入信号比较指令和等待输入信号跳变指令的指令数据格式包括:指令类型字段、预留字段、0/1指示字段和信号编号字段;所述激活函数查找表指令用于利用查找表对存算一体运算结果进行激活操作,其中激活函数查找表指令的数据格式包括:指令类型标识字段、存放查表结果的目的内部寄存器编号字段、存放需要进行激活操作数据的源内部寄存器编号字段和查找表在内部数据存储器中的基地址字段;所述取最大值指令用于数据比较寻找最大值或用于卷积神经网络中的最大值池化操作;所述多个数相加指令用于多个数相加。
8.一种存算一体芯片的嵌入式处理器指令集,包括权利要求4~7任一所述嵌入式处理器的基本操作指令,其特征在于,还包括存算一体人工神经网络计算专有操作指令;其中,所述存算一体人工神经网络计算专有操作指令包括但不限于以下一个或多个指令:控制信号使能指令、控制信号去使能指令、控制信号脉冲指令、输入信号比较指令、等待输入信号跳变指令、激活函数查找表指令、取最大值指令或多个数相加指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911240907.4A CN110990060B (zh) | 2019-12-06 | 2019-12-06 | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911240907.4A CN110990060B (zh) | 2019-12-06 | 2019-12-06 | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990060A CN110990060A (zh) | 2020-04-10 |
CN110990060B true CN110990060B (zh) | 2022-03-22 |
Family
ID=70090653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911240907.4A Active CN110990060B (zh) | 2019-12-06 | 2019-12-06 | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990060B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112070220B (zh) * | 2020-08-06 | 2023-01-17 | 北京大学 | 一种基于非线性器件的原位自激活神经网络电路及神经网络运算方法 |
CN112152947B (zh) * | 2020-08-21 | 2021-07-20 | 北京百度网讯科技有限公司 | 处理器及实现方法、电子设备和存储介质 |
CN112308222B (zh) * | 2020-10-27 | 2023-06-23 | 之江实验室 | 一种基于rram存算一体全系统模拟器及其设计方法 |
CN112231631A (zh) * | 2020-10-29 | 2021-01-15 | 北京知存科技有限公司 | 存算一体芯片并行工作的流水线控制方法 |
CN113157638B (zh) * | 2021-01-27 | 2022-06-21 | 浙江大学 | 一种低功耗存储器内计算处理器和处理运算方法 |
CN112860318A (zh) * | 2021-01-29 | 2021-05-28 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
CN112767993B (zh) * | 2021-03-03 | 2023-07-14 | 北京忆元科技有限公司 | 测试方法以及测试系统 |
CN114647446A (zh) * | 2021-03-30 | 2022-06-21 | 深圳宏芯宇电子股份有限公司 | 存储级存储装置、计算机模块及服务器系统 |
CN113517009A (zh) * | 2021-06-10 | 2021-10-19 | 上海新氦类脑智能科技有限公司 | 存算一体式智能芯片、控制方法及控制器 |
CN113702700B (zh) * | 2021-09-01 | 2022-08-19 | 上海交通大学 | 一种计算电能和电能质量参数的专用集成电路 |
CN113625934B (zh) * | 2021-09-07 | 2024-03-26 | 东莞市盈聚电源有限公司 | 一种高效的环形缓存adc采集方法 |
CN113792010A (zh) * | 2021-09-22 | 2021-12-14 | 清华大学 | 存算一体芯片及数据处理方法 |
CN114115798A (zh) * | 2021-11-11 | 2022-03-01 | 上海碧帝数据科技有限公司 | 一种存算一体芯片加法器 |
CN116362314A (zh) * | 2021-12-24 | 2023-06-30 | 华为技术有限公司 | 一种存算一体装置和计算方法 |
CN114816335B (zh) * | 2022-06-28 | 2022-11-25 | 之江实验室 | 一种忆阻器阵列符号数乘法实现方法、装置及设备 |
CN115906735B (zh) * | 2023-01-06 | 2023-05-05 | 上海后摩智能科技有限公司 | 基于模拟信号的多比特数存算一体电路、芯片及计算装置 |
CN116048479B (zh) * | 2023-04-03 | 2023-07-21 | 南京大学 | 一种针对存算一体芯片的快速编程方法 |
CN116777727B (zh) * | 2023-06-21 | 2024-01-09 | 北京忆元科技有限公司 | 存算一体芯片、图像处理方法、电子设备及存储介质 |
CN116700134B (zh) * | 2023-08-08 | 2023-10-27 | 华软盛科技有限公司 | 一种可以简化代码的工业数控方法 |
CN117472847A (zh) * | 2023-11-08 | 2024-01-30 | 海光信息技术股份有限公司 | 存储芯粒、数据处理方法、计算机系统 |
CN117289896B (zh) * | 2023-11-20 | 2024-02-20 | 之江实验室 | 一种存算一体基本运算装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020002A (zh) * | 2012-11-27 | 2013-04-03 | 中国人民解放军信息工程大学 | 可重构多处理器系统 |
CN106155635A (zh) * | 2015-04-03 | 2016-11-23 | 北京奇虎科技有限公司 | 一种数据处理方法和装置 |
CN107657316A (zh) * | 2016-08-12 | 2018-02-02 | 北京深鉴科技有限公司 | 通用处理器与神经网络处理器的协同系统设计 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9535876B2 (en) * | 2009-06-04 | 2017-01-03 | Micron Technology, Inc. | Conditional operation in an internal processor of a memory device |
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
CN102221987B (zh) * | 2011-05-11 | 2014-10-01 | 西安电子科技大学 | 基于嵌入式专用指令集处理器的指令集编码方法 |
CN102360344B (zh) * | 2011-10-10 | 2014-03-12 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN204595919U (zh) * | 2015-01-27 | 2015-08-26 | 福建师范大学 | 一种嵌入式人工神经网络处理器的接口装置 |
US20180217838A1 (en) * | 2017-02-01 | 2018-08-02 | Futurewei Technologies, Inc. | Ultra lean vector processor |
CN209182823U (zh) * | 2018-11-28 | 2019-07-30 | 北京知存科技有限公司 | 一种数模混合存算一体芯片以及用于神经网络的运算装置 |
CN109726800B (zh) * | 2018-12-29 | 2019-12-24 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN109858620B (zh) * | 2018-12-29 | 2021-08-20 | 北京灵汐科技有限公司 | 一种类脑计算系统 |
CN109886393B (zh) * | 2019-02-26 | 2021-02-09 | 上海闪易半导体有限公司 | 一种存算一体化电路及神经网络的计算方法 |
CN110334799B (zh) * | 2019-07-12 | 2022-05-24 | 电子科技大学 | 基于存算一体的神经网络推理与训练加速器及其运行方法 |
CN110475119A (zh) * | 2019-08-12 | 2019-11-19 | 北京大学 | 基于flash存算阵列的图像压缩系统和方法 |
-
2019
- 2019-12-06 CN CN201911240907.4A patent/CN110990060B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020002A (zh) * | 2012-11-27 | 2013-04-03 | 中国人民解放军信息工程大学 | 可重构多处理器系统 |
CN106155635A (zh) * | 2015-04-03 | 2016-11-23 | 北京奇虎科技有限公司 | 一种数据处理方法和装置 |
CN107657316A (zh) * | 2016-08-12 | 2018-02-02 | 北京深鉴科技有限公司 | 通用处理器与神经网络处理器的协同系统设计 |
Also Published As
Publication number | Publication date |
---|---|
CN110990060A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110990060B (zh) | 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法 | |
US11914530B2 (en) | Memory having internal processors and data communication methods in memory | |
EP2438529B1 (en) | Conditional operation in an internal processor of a memory device | |
US8838899B2 (en) | Internal processor buffer | |
KR101121606B1 (ko) | 스레드 최적화 멀티프로세서 아키텍처 | |
US9454322B2 (en) | Results generation for state machine engines | |
CN114616542A (zh) | 用于使用矢量置换逻辑进行矢量排序的方法和装置 | |
WO2022046570A1 (en) | Vector processor architectures | |
US8612726B2 (en) | Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type | |
JPH05502125A (ja) | 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法 | |
JPH10187438A (ja) | 乗算器の入力に対する遷移を減少させる方法 | |
US5742781A (en) | Decoded instruction buffer apparatus and method for reducing power consumption in a digital signal processor | |
US20210241806A1 (en) | Streaming access memory device, system and method | |
Fan et al. | DT-CGRA: Dual-track coarse-grained reconfigurable architecture for stream applications | |
US6012138A (en) | Dynamically variable length CPU pipeline for efficiently executing two instruction sets | |
US11995442B2 (en) | Processor having a register file, processing unit, and instruction sequencer, and operable with an instruction set having variable length instructions and a table that maps opcodes to register file addresses | |
Zhao et al. | A microcode-based control unit for deep learning processors | |
WO2009136402A2 (en) | Register file system and method thereof for enabling a substantially direct memory access | |
JPH10260832A (ja) | 情報処理装置 | |
EP2109815A2 (en) | Inversion of alternate instruction and/or data bits in a computer | |
WO2009136401A2 (en) | Improved processing unit implementing both a local register file system and spread register file system, and a method thereof | |
JPH03250346A (ja) | 情報処理システム |
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 |