一种非易失性存储器编程方法及相关设备与流程



1.本技术实施例涉及非易失性存储器技术领域,尤其涉及一种非易失性存储器编程方法及相关设备。


背景技术:



2.在计算机系统中,非易失性存储器会用于存放指令和数据,在整个计算机系统中扮演着重要的作用。
3.在计算机系统中,总线会对非易失性存储器频繁的进行读取、擦除和编程。当总线需要对非易失性存储器进行多笔数据的连续编程时,在总线发起连续编程后,非易失性存储器会先拉高编程使能信号,这个过程被称之为编程建立。随后,编程器从总线接收数据并写入非易失性存储器并不断循环往复。当总线发起连续编程结束信号,非易失性存储器拉低编程使能信号,这个过程被称之为编程释放。但是,编程建立时间和编程释放时间一般都很长,要占据整个编程过程的70%左右。
4.同时,常用的非易失性存储器编程方法,在连续编程的过程中会始终占用总线,这样会导致总线效率降低。并且在数据未准备好时,会让非易失性存储器多次进行编程建立和编程释放,从而增加功耗且延长编程所需的时间。


技术实现要素:



5.本技术实施例提供了一种非易失性存储器编程方法及相关设备,用于减少总编程时间。
6.本技术实施例第一方面提供了一种非易失性存储器编程方法,应用于编程控制器,包括:
7.获取目标配置数据,并根据所述目标配置数据对编程控制器进行配置;
8.当所述编程控制器完成配置后,获取总线发送的待编程数据;
9.判断所述待编程数据的数据量是否满足预设的目标数据量;
10.若是,根据所有所述待编程数据对非易失性存储器执行编程操作,以使得所述非易失性存储器进入编程状态。
11.可选地,所述获取目标配置数据,并根据所述目标配置数据对编程控制器进行配置包括:
12.获取总线发送的配置数据;其中,所述配置数据至少包括所述目标数据量、编程起始地址及编程状态数据;
13.根据所述目标数据量配置所述待编程数据的最大数据量;
14.根据所述编程起始地址配置所述待编程数据的初始编程地址;其中,所述初始编程地址为所述编程控制器开始执行编程操作时的编程地址;
15.根据所述编程状态数据确定所述总线的编程状态,以使得所述总线向所述编程控制器发送所述待编程数据。
16.可选地,所述编程控制器包括相互连接的内部寄存器组及连续编程控制电路,所述获取总线发送的待编程数据包括:
17.当所述连续编程控制电路接收所述总线发送的所述待编程数据后,将所述待编程数据存储至所述内部寄存器组;其中,所述内部寄存器组至少包括具有所述目标数据量的内部寄存器。
18.可选地,所述将所述待编程数据存储至所述内部寄存器组之前,所述方法还包括:
19.识别所述待编程数据中的待编程地址;
20.根据所述待编程地址读取所述非易失性存储器中是否存在与所述待编程地址对应的已编程数据;
21.若存在所述已编程数据,向所述总线发送报错数据,停止执行所述将所述待编程数据存储至所述内部寄存器组的步骤,并执行所述获取目标配置数据的步骤;
22.若不存在所述已编程数据,执行所述将所述待编程数据存储至所述内部寄存器组的步骤。
23.可选地,所述根据所述待编程地址读取所述非易失性存储器中是否存在与所述待编程地址对应的已编程数据包括:
24.验证所述非易失性存储器中所有与所述待编程地址对应的编程地址的值是否全部为目标值;
25.若全部为所述目标值,确定所述非易失性存储器不存在所述已编程数据,并执行所述将所述待编程数据存储至所述内部寄存器组的步骤;
26.若至少一个非所述目标值,确定所述非易失性存储器存在所述已编程数据,停止执行所述将所述待编程数据存储至所述内部寄存器组的步骤,并执行所述获取目标配置数据的步骤。
27.可选地,所述根据所有所述待编程数据对非易失性存储器执行编程操作包括:
28.对所述内部寄存器组中所有所述待编程数据进行数据整形,以将两两相邻的所述待编程数据合并,并写入所述非易失性存储器。
29.可选地,所述判断所述编程数据是否满足预设编程数据之后,所述方法还包括:
30.若所述待编程数据未满足所述目标数据量,执行所述获取总线发送的待编程数据的步骤。
31.本技术实施例第二方面提供了一种非易失性存储器编程系统,应用于编程控制器,包括:
32.获取单元,用于获取目标配置数据,并根据所述目标配置数据对编程控制器进行配置;
33.所述获取单元,还用于当所述编程控制器完成配置后,获取总线发送的待编程数据;
34.判断单元,用于判断所述待编程数据的数据量是否满足预设的目标数据量;
35.执行单元,用于当所述待编程数据的数据量满足预设的目标数据量时,根据所有所述待编程数据对非易失性存储器执行编程操作,以使得所述非易失性存储器进入编程状态。
36.可选地,所述系统还包括:配置单元及确定单元;
37.所述获取单元,具体用于获取总线发送的配置数据;其中,所述配置数据至少包括所述目标数据量、编程起始地址及编程状态数据;
38.所述配置单元,用于根据所述目标数据量配置所述待编程数据的最大数据量;
39.所述配置单元,还用于根据所述编程起始地址配置所述待编程数据的初始编程地址;其中,所述初始编程地址为所述编程控制器开始执行编程操作时的编程地址;
40.所述确定单元,用于根据所述编程状态数据确定所述总线的编程状态,以使得所述总线向所述编程控制器发送所述待编程数据。
41.可选地,所述编程控制器包括相互连接的内部寄存器组及连续编程控制电路,所述系统还包括:存储单元;
42.所述存储单元,用于当所述连续编程控制电路接收所述总线发送的所述待编程数据后,将所述待编程数据存储至所述内部寄存器组;其中,所述内部寄存器组至少包括具有所述目标数据量的内部寄存器。
43.可选地,所述系统还包括:识别单元及读取单元;
44.所述识别单元,用于识别所述待编程数据中的待编程地址;
45.所述读取单元,用于根据所述待编程地址读取所述非易失性存储器中是否存在与所述待编程地址对应的已编程数据;
46.所述执行单元,还用于当存在所述已编程数据时,向所述总线发送报错数据,停止执行所述将所述待编程数据存储至所述内部寄存器组的步骤,并执行所述获取目标配置数据的步骤;
47.所述执行单元,还用于当不存在所述已编程数据时,执行所述将所述待编程数据存储至所述内部寄存器组的步骤。
48.可选地,所述系统还包括:验证单元;
49.所述验证单元,用于验证所述非易失性存储器中所有与所述待编程地址对应的编程地址的值是否全部为目标值;
50.所述确定单元,具体用于当全部为所述目标值时,确定所述非易失性存储器不存在所述已编程数据,并执行所述将所述待编程数据存储至所述内部寄存器组的步骤;
51.所述确定单元,具体用于当至少一个非所述目标值时,确定所述非易失性存储器存在所述已编程数据,停止执行所述将所述待编程数据存储至所述内部寄存器组的步骤,并执行所述获取目标配置数据的步骤。
52.可选地,所述系统还包括:
53.所述执行单元,具体用于对所述内部寄存器组中所有所述待编程数据进行数据整形,以将两两相邻的所述待编程数据合并,并写入所述非易失性存储器。
54.可选地,所述系统还包括:
55.所述执行单元,还用于当所述待编程数据未满足所述目标数据量时,执行所述获取总线发送的待编程数据的步骤。
56.本技术实施例第二方面提供的用于执行第一方面所述的编程方法。
57.本技术实施例第三方面提供了一种非易失性存储器编程装置,包括:
58.中央处理器,存储器,输入输出接口,有线或无线网络接口以及电源;
59.所述存储器为短暂存储存储器或持久存储存储器;
60.所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行第一方面所述的编程方法。
61.本技术实施例第四方面提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行第一方面所述的编程方法。
62.从以上技术方案可以看出,本技术实施例具有以下优点:通过本技术实施例提出的一种非易失性存储器的编程方法,应用于编程控制器,先获取目标配置数据,并根据目标配置数据对编程控制器进行配置;再当编程控制器完成配置后,获取总线发送的待编程数据;然后,判断待编程数据的数据量是否满足预设的目标数据量;最后,若满足预设的目标数据量,根据所有待编程数据对非易失性存储器执行编程操作,以使得非易失性存储器进入编程状态。从而,在整个编程的过程中,编程数据不需要连续发送,总线可以分多次下次编程数据,提高了总线效率。在编程数据写入非易失性存储器的编程过程中,不需要多次启动编程,可以一次性的将编程数据写入非易失性存储器,减少了编程的建立时间和编程的释放时间,提高了编程效率和降低编程功耗。
附图说明
63.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
64.图1为本技术实施例公开的一种非易失性存储器的编程方法的架构示意图;
65.图2为本技术实施例公开的一种非易失性存储器的编程方法的流程示意图;
66.图3为本技术实施例公开的另一种非易失性存储器的编程方法的流程示意图;
67.图4为本技术实施例公开的编程数据的时序图;
68.图5为本技术实施例公开的一种非易失性存储器的编程系统的结构示意图;
69.图6为本技术实施例公开的一种非易失性存储器的编程装置的结构示意图。
具体实施方式
70.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
71.在计算机系统中,非易失性存储器会用于存放指令和数据,在整个计算机系统中扮演着重要的作用。其中,非易失性存储器一般指非易失性内存,非易失性存储器(nvm,non-volatile memory)是指当电流关掉后,所存储的数据不会消失的电脑存储器。
72.在计算机系统中,总线会对非易失性存储器频繁的进行读取、擦除和编程。在发起连续编程后非易失性存储器先拉高编程使能信号,这个过程被称之为编程建立。随后从总线接收数据并写入非易失性存储器并不断重复。当总线发起连续编程结束信号,非易失性存储器拉低编程使能信号,这个过程被称之为编程释放。编程建立时间和编程释放时间一般都很长,要占据整个编程过程的70%左右。其中,需要说明的是,编程使能信号是编程控
制器给予非易失存储器的一个标志信号,使能意味着编程开始。
73.常用的非易失性存储器编程方法,在连续编程的过程中,由于一次性写入多笔数据的连续编程过程会消耗大量时间,期间会一直占用总线,这样会导致总线效率降低。并且在数据未准备好时,会让非易失性存储器多次进行编程建立和编程释放,从而增加功耗且延长编程所需的时间。
74.由此,本技术实施例通过增加一组内部寄存器实现一种快速编程方法。在发起连续编程的过程中,只需提前设置好连续编程的数据量和编程起始地址,随后仅需依次下发所需编程的数据,每笔数据接受后都会释放总线,其间不必连续发送。当接受数据达到设置好的数据量后,编程控制器会一次性的对非易失性存储器发起连续编程。对于非易失性存储器来说这种快速编程能够节约编程时间而提高效率,对于总线来说这种快速编程会降低占用总线的时间而提高效率。
75.请参阅图1,图1为本技术实施例公开的一种非易失性存储器的编程方法的架构示意图。包括总线101、编程控制器102及非易失性存储器103。总线101与编程控制器102连接,编程控制器102与非易失性存储器103连接。其中,编程控制器102还包括内存寄存器组1021、连续编程控制电路1022及控制寄存器1023,而且,内存寄存器组1021与连续编程控制电路1022连接,连续编程控制电路1022与控制寄存器1023连接。不难理解的是,本技术实施例中,并不对上述部件的具体连接方式进行限制,后续也不再对此进行赘述。
76.总线101是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线101相连接,外部设备通过相应的接口电路再与总线101相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线101,微型计算机是以总线101结构来连接各个功能部件的。在本技术实施例中,总线101主要向编程控制器102发送控制流以及数据流。具体的,总线101向编程控制器102中的控制寄存器1023发送控制流,该控制流中主要包括一系列的编程控制器102的配置数据。具体的,可以是连续编程数据量、连续编程起始地址及连续编程使能位。连续编程数据量表示一次连续编程写入多少笔数据、编程起始地址为第一笔编程数据的地址、编程使能标示总线101可以下发编程数据。对应的,总线101向编程控制器102中的连续编程控制电路1022发送数据流,其中,数据流主要包括编程数据。为方便描述,后续不再对数据流以及控制流所包含的内容进行限制,后续也不再对此进行赘述。
77.还需要说明的是,总线101还可以下发擦除的命令,再由负责擦除的电路完成擦除任务,也就是将非易失性存储器中所存储的编程数据擦除。在其中一个实施例中,擦除会把非易失存储器的相应地址的值全置为1,读出来,如果为全1,表明已擦除过。若任意一个不为1,可以理解为未擦除完成。
78.编程控制器102中控制寄存器1023可以根据总线101发送的控制流对连续编程控制电路1022及内部寄存器组1021进行配置。具体的,控制寄存器1023可以将连续编程数据量、编程起始地址及编程使能发送给连续编程控制电路1022,连续编程控制电路1022根据编程起始地址及编程使能可以控制非易失性存储器103的编程内容及开始时间。对应的,连续编程控制电路1022还根据连续编程数据量确定需要需要调用多少内存寄存器组1021中的内部寄存器。
79.还需要说明的是,连续编程控制电路1022接收到总线101发送的数据流后,可以将
数据流,也就是编程数据存储至内部寄存器组1021,对应的,还可以根据编程数据的编程地址检测非易失性存储器103是否未擦除完成。若擦除完成,便可以根据编程控制信号(至少包括编程起始地址及编程使能)控制非易失性存储器103进行编程。
80.非易失性存储器103可以接收连续编程控制电路1022的编程控制信号及编程数据从而完成对应的编程操作。
81.请参阅图2,图2为本技术实施例公开的一种非易失性存储器的编程方法的流程示意图。包括步骤201-步骤204。
82.201、获取目标配置数据,并根据目标配置数据对编程控制器进行配置。
83.结合图1,编程控制器可以接收到总线下发的控制流,不难理解的是,控制流即为上述中所描述的目标配置数据。
84.在其中一个实施例中,编程控制器接收到目标配置数据后,便可以根据该目标配置数据对编程控制器中的连续编程控制电路及内部寄存器组进行配置。
85.202、当编程控制器完成配置后,获取总线发送的待编程数据。
86.当编程控制器根据目标配置数据完成配置后,总线便开始下发数据流。不难理解的是,数据流即为上述部分中所描述的待编程数据。
87.在其中一个实施例中,总线可以分多次下发,例如,总线需要下发总的编程数据为100kb的数据,可以分5次下发,也可以分4次下发。一次可以只下发10kb的数据,也可以下发20kb的数据,具体此处对下发数据流的次数和所占内存进行限制,后续也不再对此进行赘述。
88.基于上述实施例,还可以知道的是,说一次性写入5笔数据,每次总线下发数据后不会实际编程(实际编程需要编程建立和编程结束两个过程,会消耗大量时间)而只是存储在内部寄存器中,随后就会释放总线,这5个数据并不用连续下发,其间总线可以进行别的任务。当5个数都下发后,编程控制器才会一次性的对非易失存储器写入5个数据。
89.203、判断待编程数据的数据量是否满足预设的目标数据量。若是,执行步骤204。
90.由于连续编程控制电路会不断地将待编程数据存入内部寄存器组,而且,总线下发的目标配置数据也设置了内部寄存器组中可以配置连续编程数据量。需要说明的是,连续编程数据量即为上述部分中所描述的目标数据量,可以理解为所需调用的内部寄存器的个数。
91.由此,当编程控制器中的内部寄存器组,每次连续编程所使用的最大寄存器数量已经达到了目标数据量,也就是达到了目标配置数据中的连续编程数据量,那么,就执行步骤204。
92.在其中一个实施例中,没有达到对应的目标数据量,则继续等待,直至所调用的内部寄存器达到了配置的目标数据量。
93.204、根据所有待编程数据对非易失性存储器执行编程操作,以使得非易失性存储器进入编程状态。
94.当内部寄存器组中的数据量达到预设值后,也就是达到目标数据量之后,内部寄存器组便可以将所有的待编程数据发送给连续编程控制电路。由此,连续编程控制电路便可以根据目标配置数据及所有的待编程数据对非易失性存储器执行编程操作,也就是将内部寄存器组中的编程数据依次写入非易失性存储器中,从而完成非易失性存储器的编程操
作。
95.通过本实施例提出的一种非易失性存储器的编程方法,在整个编程的过程中,编程数据不需要连续发送,总线可以分多次下次编程数据,提高了总线效率。在编程数据写入非易失性存储器的编程过程中,不需要多次启动编程,可以一次性的将编程数据写入非易失性存储器,减少了编程的建立时间和编程的释放时间,提高了编程效率和降低编程功耗。
96.为方便对本技术实施例提出的一种非易失性存储器的编程方法进行详细描述,请参阅图3,图3为本技术实施例公开的另一种非易失性存储器的编程方法的流程示意图。包括步骤301-步骤307。
97.301、获取目标配置数据,并根据目标配置数据对编程控制器进行配置。
98.本实施例中步骤301与前述图2中步骤201类似,具体此处不做赘述。但需要说明的是,总线下发的目标配置数据是先发送到控制寄存器。其中,控制寄存器是由总线配置的,其中可以配置连续编程数据量、编程起始地址和编程使能。连续编程数据量表示一次连续编程写入多少笔数据、编程起始地址为第一笔编程数据的地址、编程使能标示总线可以下发编程数据。
99.在其中一个实施例中,控制寄存器根据连续编程数据量配置内部寄存器组,具体的,内部寄存器组根据所配置的连续编程数据量,内部寄存器会调整最大缓存的数量。
100.控制寄存器可以根据编程起始地址确定连续编程控制电路开始执行编程操作时的开始的编程地址。对应的,控制寄存器还可以根据编程使能确定开始接收总线下发的连续编程所需的数据的时间。也可以理解为,信号为1的时候,可以下发编程数据。
101.302、接收总线发送的待编程数据。
102.本实施例中步骤302与前述图2中步骤202类似,具体此处不做赘述。但需要说明的是,编程控制器中的连续编程控制电路最先接收到总线下发的待编程数据。此时的内部寄存器组还不会接收到总线下发的待编程数据。
103.303、识别待编程数据中的待编程地址,并根据待编程地址读取非易失性存储器中是否存在与待编程地址对应的已编程数据。若是,执行步骤307;若否,执行步骤304。
104.当控制寄存器配置完毕后,总线开始下发数据,连续编程控制器会根据总线下发的待编程数据中的编程地址去读取非易失性存储器中相应地址的数据,也就是非易失性存储器中编程地址的现有数据。然后确认该地址的数据是否已经进行过擦除。
105.若擦除完成,则执行步骤304;若未完成擦除,则执行步骤307。
106.在其中一个实施例中,在每次总线发起编程操作时,编程控制器中的连续编程控制电路会先读取非易失性存储器中相应地址的数据,并判断是否被擦除过。具体的方式可以是,擦除会把非易失性存储器的相应地址的值全置为1,读出来,如果为全1,表明已擦除过。则执行步骤304。若任一一个相应地址的值不为1,则确定未完成擦除,此时执行步骤307。
107.具体的,连续编程控制电路可以验证非易失性存储器中所有与待编程地址对应的编程地址的值是否全部为目标值,也就是是否为1。
108.若编程地址的值全部为1,则确定非易失性存储器不存在已编程数据,也就是非易失存储器中编程地址的现有数据,此时可以执行步骤304;
109.若编程地址的值至少一个非1,则确定非易失性存储器存在已编程数据,此时执行
步骤307。
110.基于上述实施例,内部寄存器中的每笔数据写入前都会进行相应地址的数据擦除校验,若有一笔数据不符合条件,则此次整个连续编程动作会失效并报错。
111.304、将待编程数据存储至内部寄存器组。
112.当确认该地址已被擦除过,连续编程控制电路会将总线下发的待编程数据写入内部寄存器组,并释放总线。
113.具体的,连续编程控制器会将总线下发的数据存入内部寄存器组。在内部寄存器组中的数据等于设定的连续编程数据量时,编程控制器会对数据进行整合并依次向非易失性存储器发起实际编程。
114.305、判断待编程数据的数据量是否满足预设的目标数据量。若是,执行步骤306;若否,执行步骤302。
115.本实施例中步骤305与前述图2中步骤203类似,具体此处不做赘述。但需要说明的是,内部寄存器组,由一组a个位宽为b的bit寄存器组成,每次连续编程所使用的最大寄存器数量由连续编程数据量控制,最大不能超过a个。(a为控制器内部寄存器组的寄存器数量,b为数据流总线的位宽)
116.在其中一个实施例中,随着内部寄存器的数据不断积累,此时,编程控制器中的连续编程控制电路可以判断此时内部寄存器组中所调用的内部寄存器的数量是否达到目标数据量。对应的,内部存储器的数量决定了配置连续编程的最大值,但可以配置小一些多余内部寄存器不使用。
117.若是,执行步骤306。若否,执行步骤302,也就是等待,直到达到设置的最大数量时,也就是执行306。
118.基于上述实施例,在另外一个实施例中,可以知道,随着总线不断下发写入数据,内部寄存器组中数据增加,每次存入编程数据,内部计数器相应加1。当计数器达到设定的编程数据量时,可以执行步骤306。
119.306、对内部寄存器组中所有待编程数据进行数据整形,以将两两相邻的待编程数据合并,并写入非易失性存储器。
120.当内部寄存器组中的数据量达到预设值后,会对内部寄存器组中的数据进行整形并依次写入非易失性存储器中。也就是说,在内部寄存器组中的数据等于设定的连续编程数据量时,编程控制器会对数据进行整合并依次向非易失性存储器发起实际编程。
121.具体的,在其中一个实施例中,编程数据的格式可以是,也就是内部寄存器组中编程数据的存储方式,请参阅表1:
122.data1data2data3......dataa-1dataa
123.进行数据整形后,请参阅表2:
[0124][0125][0126]
在数据整形的原因主要是非易失存储器的特性决定的,需要把两个数据拼在一起写入非易失存储器。
[0127]
请参阅图4,图4为本技术实施例公开的编程数据的时序图。从编程使能信号拉高至实际编程开始信号拉高这段时间被称为编程建立时间,在这段时间非易失性存储器会进行编程前的准备。从实际编程使能信号拉低至编程使能信号拉低这段时间被称为编程释放时间,在这段时间非易失性存储器会进行编程后的结束工作。在编程建立的过程和编程释放的过程中间为实际编程的过程,由编程控制信号控制将编程控制器102给出的数据写入非易失性存储器的对应地址,可多次写入。由于编程建立时间和编程释放时间会远大于编程时间,在连续编程的过程中,仅需一次编程建立和编程释放即可写入多笔数据,因此连续写入数据可以减少总编程时间。
[0128]
不难理解的是,addr1的编程地址对应data1的编程数据,其他也是如此。
[0129]
307、向总线发送报错数据。
[0130]
若非易失性存储器中编程地址所对应的编程数据未擦除完成,连续编程控制电路会向总线报错,具体的,可以向总线发送对应的报错数据,从而取消此次编程动作并报错,由软件来完成擦除并重新编程。对应的,可以重新执行步骤302。
[0131]
通过本实施例提出的一种非易失性存储器的编程方法,在软件需要对非易失性存储器进行批量编程时,可先把多笔数据先写入内部寄存器,当内部寄存器接收到足够的数据后,编程控制器再使用内部寄存器中的数据对非易失性存储器进行连续编程。通过这种方法,可在需要大批量编程时,节省编程所需的时间,从而使得编程过程变短,提高编程效率和总线效率。单次连续编程的数据量是可配置的,从而达到灵活高效的编程效果。
[0132]
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0133]
若方案涉及敏感信息(如用户信息、企业信息),则应当说明针对敏感信息的收集、使用和处理需要遵守相关国家和地区的法律法规和标准,且需要在相应主体(如用户或企业等)许可或同意的情况下进行。
[0134]
请参阅图5,图5为本技术实施例公开的一种非易失性存储器的编程系统的结构示意图。
[0135]
获取单元501,用于获取目标配置数据,并根据目标配置数据对编程控制器进行配
置;
[0136]
获取单元501,还用于当编程控制器完成配置后,获取总线发送的待编程数据;
[0137]
判断单元502,用于判断待编程数据的数据量是否满足预设的目标数据量;
[0138]
执行单元503,用于当待编程数据的数据量满足预设的目标数据量时,根据所有待编程数据对非易失性存储器执行编程操作,以使得非易失性存储器进入编程状态。
[0139]
示例性地,系统还包括:配置单元504及确定单元505;
[0140]
获取单元501,具体用于获取总线发送的配置数据;其中,配置数据至少包括目标数据量、编程起始地址及编程状态数据;
[0141]
配置单元504,用于根据目标数据量配置待编程数据的最大数据量;
[0142]
配置单元504,还用于根据编程起始地址配置待编程数据的初始编程地址;其中,初始编程地址为编程控制器开始执行编程操作时的编程地址;
[0143]
确定单元505,用于根据编程状态数据确定总线的编程状态,以使得总线向编程控制器发送待编程数据。
[0144]
示例性地,编程控制器包括相互连接的内部寄存器组及连续编程控制电路,系统还包括:存储单元506;
[0145]
存储单元506,用于当连续编程控制电路接收总线发送的待编程数据后,将待编程数据存储至内部寄存器组;其中,内部寄存器组至少包括具有目标数据量的内部寄存器。
[0146]
示例性地,系统还包括:识别单元507及读取单元508;
[0147]
识别单元507,用于识别待编程数据中的待编程地址;
[0148]
读取单元508,用于根据待编程地址读取非易失性存储器中是否存在与待编程地址对应的已编程数据;
[0149]
执行单元503,还用于当存在已编程数据时,向总线发送报错数据,停止执行将待编程数据存储至内部寄存器组的步骤,并执行获取目标配置数据的步骤;
[0150]
执行单元503,还用于当不存在已编程数据时,执行将待编程数据存储至内部寄存器组的步骤。
[0151]
示例性地,系统还包括:验证单元509;
[0152]
验证单元509,用于验证非易失性存储器中所有与待编程地址对应的编程地址的值是否全部为目标值;
[0153]
确定单元505,具体用于当全部为目标值时,确定非易失性存储器不存在已编程数据,并执行将待编程数据存储至内部寄存器组的步骤;
[0154]
确定单元505,具体用于当至少一个非目标值时,确定非易失性存储器存在已编程数据,停止执行将待编程数据存储至内部寄存器组的步骤,并执行获取目标配置数据的步骤。
[0155]
示例性地,系统还包括:
[0156]
执行单元503,具体用于对内部寄存器组中所有待编程数据进行数据整形,以将两两相邻的待编程数据合并,并写入非易失性存储器。
[0157]
示例性地,系统还包括:
[0158]
执行单元503,还用于当待编程数据未满足目标数据量时,执行获取总线发送的待编程数据的步骤。
[0159]
下面请参阅图6,本技术实施例公开的一种非易失性存储器的编程装置的结构示意图包括:
[0160]
中央处理器601,存储器605,输入输出接口604,有线或无线网络接口603以及电源602;
[0161]
存储器605为短暂存储存储器或持久存储存储器;
[0162]
中央处理器601配置为与存储器605通信,并执行存储器605中的指令操作以执行前述图2或图3所示实施例中的方法。
[0163]
本技术实施例还提供一种芯片系统,其特征在于,芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行前述图2或图3所示实施例中的方法。
[0164]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0165]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0166]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0167]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0168]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

技术特征:


1.一种非易失性存储器的编程方法,其特征在于,应用于编程控制器,所述方法包括:获取目标配置数据,并根据所述目标配置数据对编程控制器进行配置;当所述编程控制器完成配置后,获取总线发送的待编程数据;判断所述待编程数据的数据量是否满足预设的目标数据量;若是,根据所有所述待编程数据对非易失性存储器执行编程操作,以使得所述非易失性存储器进入编程状态。2.根据权利要求1所述的编程方法,其特征在于,所述获取目标配置数据,并根据所述目标配置数据对编程控制器进行配置包括:获取总线发送的配置数据;其中,所述配置数据至少包括所述目标数据量、编程起始地址及编程状态数据;根据所述目标数据量配置所述待编程数据的最大数据量;根据所述编程起始地址配置所述待编程数据的初始编程地址;其中,所述初始编程地址为所述编程控制器开始执行编程操作时的编程地址;根据所述编程状态数据确定所述总线的编程状态,以使得所述总线向所述编程控制器发送所述待编程数据。3.根据权利要求1所述的编程方法,其特征在于,所述编程控制器包括相互连接的内部寄存器组及连续编程控制电路,所述获取总线发送的待编程数据包括:当所述连续编程控制电路接收所述总线发送的所述待编程数据后,将所述待编程数据存储至所述内部寄存器组;其中,所述内部寄存器组至少包括具有所述目标数据量的内部寄存器。4.根据权利要求3所述的编程方法,其特征在于,所述将所述待编程数据存储至所述内部寄存器组之前,所述方法还包括:识别所述待编程数据中的待编程地址;根据所述待编程地址读取所述非易失性存储器中是否存在与所述待编程地址对应的已编程数据;若存在所述已编程数据,向所述总线发送报错数据,停止执行所述将所述待编程数据存储至所述内部寄存器组的步骤,并执行所述获取目标配置数据的步骤;若不存在所述已编程数据,执行所述将所述待编程数据存储至所述内部寄存器组的步骤。5.根据权利要求4所述的编程方法,其特征在于,所述根据所述待编程地址读取所述非易失性存储器中是否存在与所述待编程地址对应的已编程数据包括:验证所述非易失性存储器中所有与所述待编程地址对应的编程地址的值是否全部为目标值;若编程地址的值全部为所述目标值,确定所述非易失性存储器不存在所述已编程数据,并执行所述将所述待编程数据存储至所述内部寄存器组的步骤;若编程地址的值至少一个非所述目标值,确定所述非易失性存储器存在所述已编程数据,停止执行所述将所述待编程数据存储至所述内部寄存器组的步骤,并执行所述获取目标配置数据的步骤。6.根据权利要求3所述的编程方法,其特征在于,所述根据所有所述待编程数据对非易
失性存储器执行编程操作包括:对所述内部寄存器组中所有所述待编程数据进行数据整形,以将两两相邻的所述待编程数据合并,并写入所述非易失性存储器。7.根据权利要求1所述的编程方法,其特征在于,所述判断所述编程数据是否满足预设编程数据之后,所述方法还包括:若所述待编程数据未满足所述目标数据量,执行所述获取总线发送的待编程数据的步骤。8.一种非易失性存储器编程系统,其特征在于,应用于编程控制器,所述系统包括:获取单元,用于获取目标配置数据,并根据所述目标配置数据对编程控制器进行配置;所述获取单元,还用于当所述编程控制器完成配置后,获取总线发送的待编程数据;判断单元,用于判断所述待编程数据的数据量是否满足预设的目标数据量;执行单元,用于当所述待编程数据的数据量满足预设的目标数据量时,根据所有所述待编程数据对非易失性存储器执行编程操作,以使得所述非易失性存储器进入编程状态。9.一种非易失性存储器编程装置,其特征在于,所述装置包括:中央处理器,存储器,输入输出接口,有线或无线网络接口以及电源;所述存储器为短暂存储存储器或持久存储存储器;所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行权利要求1至7中任意一项所述的方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至7中任意一项所述的方法。

技术总结


本申请实施例提供了一种非易失性存储器编程方法及相关设备,用于减少总编程时间。本申请实施例方法,应用于编程控制器,所述方法包括:获取目标配置数据,并根据所述目标配置数据对编程控制器进行配置;当所述编程控制器完成配置后,获取总线发送的待编程数据;判断所述待编程数据的数据量是否满足预设的目标数据量;若是,根据所有所述待编程数据对非易失性存储器执行编程操作,以使得所述非易失性存储器进入编程状态。存储器进入编程状态。存储器进入编程状态。


技术研发人员:

张博凯 梁剑 李柯 齐良颉 梁洁

受保护的技术使用者:

国民技术股份有限公司

技术研发日:

2022.11.14

技术公布日:

2023/3/14

本文发布于:2024-09-23 03:24:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/79973.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   数据   存储器   寄存器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议