[0080] 其中,通过响应于控制命令中的闪存编程指令,基于地址信号控制闪存模块对待处理数据进行数据的写入或擦除,能够动态调节各可编程半导体器件的阈值电压VTH,将各可编程半导体器件看作一个可变的等效模拟权重(记为WK,j,其中0
[0081] 当栅极用于输入模拟电压信号时,如图3A所示,响应于控制命令中的计算指令,基于地址信号控制闪存模块对待处理数据进行计算时,将一列模拟电压信号V1~VM分别施加至M行可编程半导体器件,其中第K行所有可编程半导体器件的栅极均得到一模拟电压信号VK,漏极(或源极)输入一偏置电压Vb,源极(或漏极)分别输出电流信号Ik,1~Ik,N,其中,根据可编程半导体器件的特性,I=V×W,每个可编程半导体器件的输出电流等于栅压乘以该可编程半导体器件的权重,即IK,1=VKWK,1,IK,N=VKWK,N,因为每一列的所有可编程半导体器件的源极(或漏极)均连接至同一个源线,根据基尔霍夫定律,所以在该源线的电流Ij为该列所有可编程半导体器件的源极(或漏极)电流之和,即为 多条源线输出多个电流和 实现矩阵乘法运算功
能。
[0082] 其中,上述可编程半导体器件可采用浮栅晶体管实现。
[0083] 可选地,该闪存模块还可以包括:转换装置,每一行的所有可编程半导体器件的栅极通过一个转换装置后均连接至同一字线,转换装置用于将多个模拟电流
输入信号分别转换为模拟电压输入信号,输至对应的字线。
[0084] 优选地,转换装置包括多个可编程半导体器件。
[0085] 每个可编程半导体器件的栅极与漏极相连,并连接至对应的字线。
[0086] 每个可编程半导体器件的源极连接第一偏置电压,其中,第一偏置电压可以位地电压,即源极可以接地。
[0087] 其中,将每个可编程半导体器件的栅极与漏极连接起来,用于接收模拟电流输入信号。
[0088] 其中,转换装置中的可编程半导体器件可采用浮栅晶体管,还可采用金属半导体
场效应晶体管或者
电阻实现。
[0089] 值得说明的是,上述的转换装置的实现方式只是一种示例,凡是能实现将电流输入信号转换为电压输入信号的电路结构或电路元件均可用于实施该转换装置。
[0090] 当栅极用于输入偏置电压信号时,如图3B所示,电路工作时,将一行模拟电压信号V1~VN分别施加至N列可编程半导体器件,其中第K列所有可编程半导体器件的源极均得到一模拟电压信号VK,栅极输入一偏置电压Vb,漏极分别输出电流信号Ik,1~Ik,N,其中,根据可编程半导体器件的特性,I=V×W,每个可编程半导体器件的漏极输出电流等于源极电压乘以该可编程半导体器件的权重,即IK,1=VKWK,1,IK,n=VkWk,N,因为每一列的所有可编程半导体器件的漏极均连接至同一个模拟电流输出端,根据基尔霍夫定律,所以在该模拟电流输出端的电流Ij为该列所有可编程半导体器件的漏极电流之和,即为 多个模拟电流输出端输出多个电流和
实现矩阵乘法运算功能。
[0091] 其中,由于可编程半导体器件的栅源电压VCS决定可编程半导体器件的输出电流,可编程半导体器件的输出电流对源极电压非常敏感,可能引起计算误差,而本实施例采用栅极耦合、漏极求和的拓扑结构,即使源极电压发生
波动,也不会引起计算误差,能够提高计算的
精度。
[0092] 在一个可选的实施例中,可编程半导体器件可以采用浮栅晶体管实现。
[0093] 在一个可选的实施例中,该闪存模块还可以包括:转换装置,用于将多个模拟电流输入信号分别转换为模拟电压输入信号,输至对应的位线。
[0094] 在一个可选的实施例中,转换装置包括:多个
运算放大器以及与多个
运算放大器一一对应连接的多个可编程半导体器件。
[0095] 每个运算放大器的
反相输入端均连接至对应可编程半导体器件的漏极,正相输入端连接第一固定
偏压Vd,
[0096] 运算放大器的输出端与可编程半导体器件的源极相连,并连接至对应的位线,[0097] 可编程半导体器件的栅极连接第一固定偏压Vd。该实施例中,运算放大器的反相输入端用于接收模拟电流输入信号Iin~IinM。
[0098] 可选地,转换装置中可编程半导体器件可采用浮栅晶体管。
[0099] 通过设置转换装置,使得本发明实施例中的模拟向量-矩阵乘法运算电路不仅适于模拟电压输入信号,还适于模拟电流输入信号,能够增加模拟向量-矩阵乘法运算电路的适用性。
[0100] 值得说明的是,上述的转换装置的实现方式只是一种示例,凡是能实现将电流输入信号转换为电压输入信号的电路结构或电路元件均可用于实施该转换装置,可以理解的是,上述转换装置中的可编程半导体器件也可以采用
电阻器、金属半导体场效应晶体管等器件实现。
[0101] 在一个可选的实施例中,闪存芯片还可以包括:编程模块、行列译码器,该控制方法响应于控制命令中的闪存编程指令,控制编程模块和行列译码器,行列译码器基于地址信号选通待编程的可编程半导体器件,编程模块基于待处理数据对选通的待编程的可编程半导体器件进行数据写入或擦除,实现数据存储或计算函数编程。
[0102] 其中,编程模块连接可编程半导体器件阵列中每一个可编程半导体器件的源极、栅极和/或衬底,用于对选通的待编程的可编程半导体器件的阈值电压进行调节,实现数据存储或计算函数编程。
[0103] 在一个优选的实施例中,编程模块包括:电压产生电路和电压控制电路,所述电压产生电路用于产生编程电压或者擦除电压,所述电压控制电路用于将所述编程电压加载至选通的待编程的可编程半导体器件的源极,或者,将擦除电压加载至选通的待编程的可编程半导体器件的栅极或衬底,以调控选通的待编程的可编程半导体器件的阈值电压。
[0104] 具体地,编程模块利用热电子注入效应,根据可编程半导体器件的阈值电压需求数据,向可编程半导体器件的源极施加高电压,将
沟道电子
加速到高速,以增加可编程半导体器件的阈值电压。
[0105] 并且,编程模块利用隧穿效应,根据可编程半导体器件阈值电压需求数据,向可编程半导体器件的栅极或衬底施加高电压,以减少可编程半导体器件的阈值电压。
[0106] 在一个可选的实施例中,闪存芯片还包括:计算辅助模块,该控制方法响应于控制命令中的计算指令,控制计算辅助模块和行列译码器,行列译码器基于地址信号选通用于计算的可编程半导体器件,计算辅助模块将待处理数据进行预设处理后输至选通的用于计算的可编程半导体器件,并控制闪存模块通过计算函数执行计算,得到计算结果。
[0107] 在一个可选的实施例中,闪存芯片还包括:读出模块,该控制方法响应于控制命令中的读取指令,控制读出模块和行列译码器,行列译码器基于地址信号选通待读取的可编程半导体器件,读出模块读出选通的待读取的可编程半导体器件中的数据。
[0108] 值得说明的是,在响应于控制命令中的闪存编程指令,控制编程模块和行列译码器,进行数据写入或擦除,实现数据存储或计算函数编程的步骤,之后,还可以包括:控制读出模块和行列译码器,读取由编程模块编程的可编程半导体器件中的数据,与待处理数据进行比较,判断编程是否准确,若编程存在偏差,则重新控制编程模块和行列译码器进行数据写入或擦除,直至编程准确,以保障数据的准确性,能够提高数据存储精度或计算精度。
[0109] 在一个可选的实施例中,该控制方法可以通过主设备输入/从设备输出数据线接收一微处理器发送的控制命令、待处理数据及地址信号。
[0110] 在一个可选的实施例中,如图4所示,该控制方法还可以包括:
[0111] 步骤S206:将计算结果或读取数据通过主设备输出/从设备输入数据线发送至微处理器等控制器。
[0112] 在一个可选的实施例中,如图5所示,该控制方法还包括:
[0113] 步骤S501:通过一使能信号数据线接收一微处理器发送的使能信号。
[0114] 步骤S502:判断使能信号的类型,若使能信号为高电平使能信号,则结束控制;若使能信号为低电平使能信号,则进行步骤S503。
[0115] 步骤S503:通过一串行时钟数据线接收微处理器发送的时钟信号。
[0116] 该实施例中,通过上述步骤,使得该闪存芯片在
微控制器等控制装置的控制下启动,能够在空闲时停止工作,节省能耗。
[0117] 可选地,上述各实施例中,可编程半导体器件可采用浮栅晶体管。
[0118] 以上仅是举例说明本发明实施例提供的闪存芯片的控制方法,在具体实施时,上述各步骤不限于本发明实施例提供的上述步骤,还可以包括本领域技术人员可知的其他步骤,在此不作限定。
[0119] 本发明实施例还提供了一种闪存芯片的控制装置,可以用于执行上述实施例所描述的控制方法,如下面的实施例所述。由于控制装置解决问题的原理与上述方法相似,因此控制装置的实施可以参见上述方法的实施,重复之处不再赘述。
[0120] 图6为本发明实施例中一种闪存芯片的控制装置的结构示意图,其中,闪存芯片包括由多个可编程半导体器件组成的闪存模块,闪存芯片的控制装置用于执行上述控制方法,包括:接收单元61、计算控制单元62、编程控制单元64、读取控制单元66。
[0121] 上述接收单元61用于接收控制命令、待处理数据及地址信号,控制命令包括:计算指令、闪存编程指令、读取指令中的任一个。
[0122] 上述计算控制单元62响应于控制命令中的计算指令,基于地址信号控制闪存模块对待处理数据进行计算(如加法运算、乘法运算、矩阵乘法运算等),产生计算结果。
[0123] 上述编程控制单元63响应于控制命令中的闪存编程指令,基于地址信号控制闪存模块对待处理数据进行数据的写入或擦除。
[0124] 上述读取控制单元66响应于控制命令中的读取指令,基于地址信号对闪存模块中的数据进行读取,得到读取数据。
[0125] 该实施例中,通过控制装置进行控制,使得闪存模块能够实现计算功能,使得能够直接在闪存芯片中进行数据计算,无需闪存芯片之外的处理器进行相应的计算,从而分担了处理器的工作,进而提高了整体计算体系结构的性能。
[0126] 在一个可选的实施例中,闪存芯片还包括:编程模块、行列译码器,其中,编程控制单元响应于控制命令中的闪存编程指令,控制编程模块和行列译码器,行列译码器基于地址信号选通待编程的可编程半导体器件,编程模块基于待处理数据对选通的待编程的可编程半导体器件进行数据写入或擦除,实现数据存储或计算函数编程。
[0127] 在一个可选的实施例中,闪存芯片还包括:计算辅助模块,其中,计算控制单元响应于控制命令中的计算指令,控制计算辅助模块和行列译码器,行列译码器基于地址信号选通用于计算的可编程半导体器件,计算辅助模块将待处理数据进行预设处理后输至选通的用于计算的可编程半导体器件,并控制闪存模块通过计算函数执行计算,得到计算结果。
[0128] 在一个可选的实施例中,闪存芯片还包括:读出模块,其中,上述读取控制单元响应于控制命令中的读取指令,控制读出模块和行列译码器,行列译码器基于地址信号选通待读取的可编程半导体器件,读出模块读出选通的待读取的可编程半导体器件中的数据。
[0129] 值得说明的是,在响应于控制命令中的闪存编程指令,控制编程模块和行列译码器,进行数据写入或擦除,实现数据存储或计算函数编程的步骤,之后,还可以包括:控制读出模块和行列译码器,读取由编程模块编程的可编程半导体器件中的数据,与待处理数据进行比较,判断编程是否准确,若编程存在偏差,则重新控制编程模块和行列译码器进行数据写入或擦除,直至编程准确,以保障数据的准确性,能够提高数据存储精度或计算精度。
[0130] 在一个优选的实施例中,控制装置还包括:输出单元67,用于将计算结果或读取数据通过主设备输出/从设备输入数据线发送至一微处理器。
[0131] 在一个可选的实施例中,控制装置还包括:使能单元65和判断单元64。
[0132] 该使能单元65通过一使能信号数据线接收一微处理器发送的使能信号;
[0133] 该判断单元64判断使能信号的类型,若使能信号为高电平使能信号,则结束控制;若使能信号为低电平使能信号,则通过一串行时钟数据线接收微处理器发送的时钟信号。
[0134] 在一个可选的实施例中,接收单元通过主设备输入/从设备输出数据线接收一微处理器发送的控制命令、待处理数据及地址信号。
[0135] 可选地,上述各实施例中,可编程半导体器件可采用浮栅晶体管。
[0136] 图7为本发明实施例中一种终端的结构示意图。如图7所示,该终端包括:微处理器200以及通过接口数据线连接微处理器的闪存芯片100,微处理器200作为主设备,闪存芯片
100作为从设备,闪存芯片100包括由多个可编程半导体器件组成的闪存模块1以及控制装置,控制装置用于执行上述控制方法。
[0137] 在一个优选的实施例中,接口数据线包括:
[0138] 串行时钟数据线(Serial CLocK,SCLK)701,用于微处理器向闪存芯片传输时钟信号,该时钟信号的
频率可变;
[0139] 主设备输入/从设备输出数据线(Master Input Slave Output,MISO)702,可以为8位单向数据线,用于微处理器向闪存芯片传输控制命令、待处理数据及地址信号,控制命令包括:计算指令、闪存编程指令、读取指令中的任一个;
[0140] 主设备输出/从设备输入数据线(Master Output Slave Input,MOSI)703,可以为8位单向数据线,用于闪存芯片向微处理器传输信号;
[0141] 使能信号数据线(Negative Slave Select,NSS)704,用于微处理器向闪存芯片传输使能信号,进而控制闪存芯片100是否被选中。
[0142] 本发明实施例中终端的交互方法包括:
[0143] 微处理器200通过使能信号数据线NSS704发送使能信号至闪存芯片100;
[0144] 闪存芯片100通过使能信号数据线NSS704接收微处理器200发送的使能信号。
[0145] 微处理器200判断使能信号电平是否为低,若是,则表示闪存芯片100被选中,则通过串行时钟数据线发送时钟信号,通过主设备输入/从设备输出数据线发送控制命令、待处理数据及地址信号;若否,则断开通信连接,交互结束;
[0146] 闪存芯片100判断使能信号电平是否为低,若是,则表示闪存芯片100被选中,则通过串行时钟数据线接收时钟信号,通过主设备输入/从设备输出数据线接收控制命令、待处理数据及地址信号;若否,则交互结束;
[0147] 闪存芯片100判断控制命令中包含何种指令,若控制命令中包含计算指令,则基于地址信号控制闪存模块1对待处理数据进行计算,产生计算结果;
[0148] 在该步骤中,进行计算的数据可以来自于微处理器200发送的数据,也可以通过读取步骤从闪存芯片100中直接读取,计算的结果可以发送至微处理器200,也可以直接存储至闪存芯片100。
[0149] 若控制命令中包含闪存编程指令,则基于地址信号控制闪存模块对待处理数据进行数据的写入或擦除;
[0150] 若控制命令中包含读取指令,则基于地址信号对闪存模块中的数据进行读取,得到读取数据。
[0151] 微处理器200通过使能信号数据线NSS发送高电平使能信号至闪存芯片100;
[0152] 微处理器200断开与闪存芯片100之间的通信连接;
[0153] 闪存芯片100通过使能信号数据线NSS接收高电平使能信号;
[0154] 闪存芯片100断开与微处理器200之间的通信连接。
[0155] 上述实施例中,微处理器与闪存芯片之间通过上述的数据线和交互过程,实现高效全双工通信。
[0156] 上述各实施例中,可编程半导体器件可选用浮栅晶体管,该浮栅晶体管可为SONOS型浮栅晶体管(floating-gate transistor)、分裂式浮栅晶体管(Split-gate floating-gate transistor)或电荷式浮栅晶体管(Charge-trapping floating-gate transistor),包括但不限于此,所有能够通过调节浮栅中电子数量而调节晶体管本身阈值电压的晶体管均属于本发明实施例的保护范围。
[0157] 综上所述,在本发明实施例提供的闪存芯片的控制方法、装置及终端,通过响应于微处理器的控制命令中的计算指令,控制闪存模块基于地址信号对待处理数据进行计算,响应于控制命令中的闪存编程指令,控制闪存模块基于地址信号对待处理数据进行数据的写入或擦除,通过采用上述方法,能够控制闪存芯片进行计算,从而分担了处理器的工作,进而提高了整体计算体系结构的性能。
[0158] 另外,本发明提供的闪存芯片的控制方法、装置及终端,通过串行时钟数据线、主设备输入/从设备输出数据线、主设备输出/从设备输入数据线以及使能信号数据线实现闪存芯片与微处理器之间的高效全双工通信。
[0159] 本发明实施例的终端可为计算机、手机、
平板电脑等,对于该终端的其它必不可少的组成部分均为本领域的普通技术人员应该理解具有的,在此不做赘述,也不应作为对本发明的限制。
[0160] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的
硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0161] 以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到至少两个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0162] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行
修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。