A non-volatile memory programming method and related equipment

By introducing an internal register group and a continuous programming control circuit into the programming controller, the problem of long bus occupancy time during non-volatile memory programming is solved, achieving more efficient programming and reducing power consumption.

CN115798549BActive Publication Date: 2025-10-03NATIONZ TECH INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211422280.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-11-14
Publication Date
2025-10-03
Estimated Expiration
2042-11-14

AI Technical Summary

Technical Problem

Existing non-volatile memory programming methods occupy a long bus time during continuous programming, resulting in reduced bus efficiency and increased power consumption and programming time.

Method used

By introducing an internal register group and a continuous programming control circuit into the programming controller, the data to be programmed is first stored and written into the non-volatile memory at one time after the target data volume is reached, thereby reducing the programming setup and release time.

Benefits of technology

Improves bus efficiency, reduces programming time and power consumption, and improves programming efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115798549B_ABST
    Figure CN115798549B_ABST
Patent Text Reader

Abstract

The present invention provides a non-volatile memory programming method and related devices for reducing total programming time. The method is applied to a programming controller and includes: obtaining target configuration data and configuring the programming controller according to the target configuration data; after the programming controller completes configuration, obtaining data to be programmed sent from a bus; determining whether the amount of the data to be programmed meets a preset target amount; and if so, performing a programming operation on the non-volatile memory based on all the data to be programmed, so that the non-volatile memory enters a programming state.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of the present application relate to the field of non-volatile memory technology, and in particular to a non-volatile memory programming method and related equipment. Background Art

[0002] In a computer system, non-volatile memory is used to store instructions and data and plays an important role in the entire computer system.

[0003] In computer systems, the bus frequently reads, erases, and programs non-volatile memory. When the bus needs to continuously program multiple data entries into the non-volatile memory, after the bus initiates the continuous programming, the non-volatile memory first pulls the programming enable signal high. This process is called programming setup. Subsequently, the programmer receives data from the bus and writes it to the non-volatile memory, repeating the process. When the bus signals the end of continuous programming, the non-volatile memory pulls the programming enable signal low. This process is called programming release. However, the programming setup and release times are typically very long, accounting for approximately 70% of the entire programming process.

[0004] At the same time, commonly used non-volatile memory programming methods constantly occupy the bus during continuous programming, which reduces bus efficiency. Furthermore, when data is not ready, the non-volatile memory is forced to perform multiple programming setup and release cycles, increasing power consumption and extending programming time. Summary of the Invention

[0005] Embodiments of the present application provide a non-volatile memory programming method and related devices for reducing the total programming time.

[0006] A first aspect of an embodiment of the present application provides a non-volatile memory programming method, which is applied to a programming controller, comprising:

[0007] Acquiring target configuration data, and configuring the programming controller according to the target configuration data;

[0008] After the programming controller completes configuration, it obtains the data to be programmed sent by the bus;

[0009] Determining whether the amount of the data to be programmed meets a preset target data amount;

[0010] If yes, a programming operation is performed on the non-volatile memory according to all the data to be programmed, so that the non-volatile memory enters a programming state.

[0011] Optionally, the acquiring target configuration data and configuring the programming controller according to the target configuration data includes:

[0012] Acquire configuration data sent by the bus; wherein the configuration data at least includes the target data volume, programming start address and programming status data;

[0013] configuring the maximum data size of the data to be programmed according to the target data size;

[0014] configuring an initial programming address of the data to be programmed according to the programming start address; wherein the initial programming address is the programming address when the programming controller starts to perform a programming operation;

[0015] The programming state of the bus is determined according to the programming state data, so that the bus sends the data to be programmed to the program controller.

[0016] Optionally, the programming controller includes an internal register group and a continuous programming control circuit connected to each other, and the acquisition of the data to be programmed sent by the bus includes:

[0017] After receiving the data to be programmed sent by the bus, the continuous programming control circuit stores the data to be programmed in the internal register group; wherein the internal register group at least includes an internal register with the target data amount.

[0018] Optionally, before storing the data to be programmed in the internal register group, the method further includes:

[0019] identifying an address to be programmed in the data to be programmed;

[0020] Reading, according to the address to be programmed, whether there is programmed data corresponding to the address to be programmed in the non-volatile memory;

[0021] If the programmed data exists, sending error data to the bus, stopping the step of storing the data to be programmed in the internal register group, and executing the step of obtaining the target configuration data;

[0022] If the programmed data does not exist, the step of storing the data to be programmed in the internal register group is performed.

[0023] Optionally, the reading, according to the address to be programmed, whether there is programmed data corresponding to the address to be programmed in the non-volatile memory includes:

[0024] Verifying whether the values ​​of all programming addresses corresponding to the to-be-programmed addresses in the non-volatile memory are all target values;

[0025] If all of them are the target values, determining that the programmed data does not exist in the non-volatile memory, and performing the step of storing the data to be programmed in the internal register group;

[0026] If at least one value is not the target value, it is determined that the non-volatile memory has the programmed data, the step of storing the data to be programmed in the internal register group is stopped, and the step of obtaining the target configuration data is performed.

[0027] Optionally, performing a programming operation on the non-volatile memory according to all the data to be programmed includes:

[0028] Data shaping is performed on all the data to be programmed in the internal register group to merge two adjacent data to be programmed and write the data into the non-volatile memory.

[0029] Optionally, after determining whether the programming data meets preset programming data, the method further includes:

[0030] If the data to be programmed does not meet the target data amount, the step of acquiring the data to be programmed sent by the bus is performed.

[0031] A second aspect of an embodiment of the present application provides a non-volatile memory programming system, which is applied to a programming controller, including:

[0032] an acquisition unit, configured to acquire target configuration data and configure the programmable controller according to the target configuration data;

[0033] The acquisition unit is further configured to acquire the data to be programmed sent by the bus after the programming controller completes configuration;

[0034] a judging unit, configured to judge whether the amount of the data to be programmed meets a preset target amount of data;

[0035] The execution unit is configured to execute a programming operation on the non-volatile memory according to all the data to be programmed when the data amount of the data to be programmed meets a preset target data amount, so as to enable the non-volatile memory to enter a programming state.

[0036] Optionally, the system further comprises: a configuration unit and a determination unit;

[0037] The acquisition unit is specifically configured to acquire configuration data sent by the bus; wherein the configuration data at least includes the target data volume, programming start address and programming status data;

[0038] The configuration unit is configured to configure the maximum data size of the data to be programmed according to the target data size;

[0039] The configuration unit is further configured to configure an initial programming address of the data to be programmed according to the programming start address; wherein the initial programming address is the programming address when the programming controller starts to perform a programming operation;

[0040] The determining unit is configured to determine a programming state of the bus according to the programming state data, so that the bus sends the data to be programmed to the programming controller.

[0041] Optionally, the programming controller includes an internal register group and a continuous programming control circuit connected to each other, and the system further includes: a storage unit;

[0042] The storage unit is configured to store the data to be programmed in the internal register group after the continuous programming control circuit receives the data to be programmed sent by the bus; wherein the internal register group at least includes an internal register having the target data amount.

[0043] Optionally, the system further comprises: an identification unit and a reading unit;

[0044] The identification unit is used to identify the address to be programmed in the data to be programmed;

[0045] The reading unit is configured to read, according to the address to be programmed, whether there is programmed data corresponding to the address to be programmed in the non-volatile memory;

[0046] The execution unit is further configured to, when the programmed data exists, send error reporting data to the bus, stop executing the step of storing the data to be programmed in the internal register group, and execute the step of acquiring the target configuration data;

[0047] The execution unit is further configured to execute the step of storing the data to be programmed in the internal register group when the programmed data does not exist.

[0048] Optionally, the system further comprises: a verification unit;

[0049] The verification unit is configured to verify whether the values ​​of all programming addresses corresponding to the to-be-programmed addresses in the non-volatile memory are all target values;

[0050] The determining unit is specifically configured to determine that the non-volatile memory does not have the programmed data when all the values ​​are the target values, and execute the step of storing the data to be programmed in the internal register group;

[0051] The determining unit is specifically configured to determine that the non-volatile memory contains the programmed data when at least one value is not the target value, stop executing the step of storing the data to be programmed in the internal register group, and execute the step of obtaining the target configuration data.

[0052] Optionally, the system further comprises:

[0053] The execution unit is specifically configured to perform data shaping on all the data to be programmed in the internal register group, so as to merge two adjacent data to be programmed and write the data into the non-volatile memory.

[0054] Optionally, the system further comprises:

[0055] The execution unit is further configured to execute the step of acquiring the data to be programmed sent by the bus when the data to be programmed does not meet the target data amount.

[0056] The second aspect of the embodiments of the present application provides a programming method for executing the first aspect.

[0057] A third aspect of an embodiment of the present application provides a non-volatile memory programming device, comprising:

[0058] CPU, memory, input and output interfaces, wired or wireless network interfaces, and power supply;

[0059] The memory is a transient storage memory or a persistent storage memory;

[0060] The central processing unit is configured to communicate with the memory and execute instruction operations in the memory to perform the programming method described in the first aspect.

[0061] A fourth aspect of an embodiment of the present application provides a computer-readable storage medium, characterized in that the computer-readable storage medium includes instructions, which, when executed on a computer, enable the computer to execute the programming method described in the first aspect.

[0062] It can be seen from the above technical solutions that the embodiments of the present application have the following advantages: a programming method for a non-volatile memory proposed in the embodiments of the present application is applied to a programming controller, first obtaining target configuration data, and configuring the programming controller according to the target configuration data; then, when the programming controller completes the configuration, obtaining the data to be programmed sent by the bus; then, judging whether the amount of data to be programmed meets the preset target data amount; finally, if the preset target data amount is met, performing a programming operation on the non-volatile memory according to all the data to be programmed, so that the non-volatile memory enters a programming state. Thus, during the entire programming process, the programming data does not need to be sent continuously, and the bus can be divided into multiple times for programming data, thereby improving bus efficiency. During the programming process of writing programming data into the non-volatile memory, there is no need to start programming multiple times, and the programming data can be written to the non-volatile memory at one time, which reduces the programming setup time and programming release time, improves programming efficiency and reduces programming power consumption. BRIEF DESCRIPTION OF THE DRAWINGS

[0063] In order to more clearly illustrate the technical solutions in the embodiments of the present application, the following briefly introduces the drawings required for use in the description of the embodiments. Obviously, the drawings described below are only some embodiments recorded in the present application. For ordinary technicians in this field, other drawings can also be obtained based on these drawings.

[0064] Figure 1 A schematic diagram of the architecture of a non-volatile memory programming method disclosed in an embodiment of the present application;

[0065] Figure 2 A flowchart of a non-volatile memory programming method disclosed in an embodiment of the present application;

[0066] Figure 3 A flowchart of another non-volatile memory programming method disclosed in an embodiment of the present application;

[0067] Figure 4 A timing diagram of programming data disclosed in an embodiment of the present application;

[0068] Figure 5 A schematic diagram of the structure of a non-volatile memory programming system disclosed in an embodiment of the present application;

[0069] Figure 6 This is a schematic diagram of the structure of a non-volatile memory programming device disclosed in an embodiment of the present application. DETAILED DESCRIPTION

[0070] The following will be combined with the drawings in the embodiments of this application to clearly and completely describe the technical solutions in the embodiments of this application. Obviously, the embodiments described are only part of the embodiments of this application, not all of the embodiments. Based on the embodiments in this application, all other embodiments obtained by ordinary technicians in this field without making creative efforts are within the scope of protection of this application.

[0071] In computer systems, non-volatile memory (NVM) is used to store instructions and data, playing a crucial role throughout the system. NVM generally refers to non-volatile memory (NVM), which is computer memory that retains stored data even after the power is turned off.

[0072] In a computer system, the bus frequently reads, erases, and programs non-volatile memory. After initiating continuous programming, the non-volatile memory first pulls up the programming enable signal; this process is called programming setup. Data is then received from the bus and written to the non-volatile memory, repeating this process. When the bus initiates a continuous programming end signal, the non-volatile memory pulls down the programming enable signal; this process is called programming release. The programming setup time and programming release time are generally very long, accounting for approximately 70% of the entire programming process. It should be noted that the programming enable signal is a flag signal given by the programming controller to the non-volatile memory; enabling means programming has begun.

[0073] Common non-volatile memory programming methods consume significant time during the continuous programming process, as multiple data records are written simultaneously. This process occupies the bus, reducing bus efficiency. Furthermore, when data is not ready, the non-volatile memory is forced to perform multiple programming setup and release cycles, increasing power consumption and extending programming time.

[0074] Therefore, the embodiment of the present application realizes a fast programming method by adding a set of internal registers. In the process of initiating continuous programming, it is only necessary to set the data amount and programming start address of the continuous programming in advance, and then only the data required for programming needs to be sent sequentially. The bus will be released after each data is received, and there is no need to send it continuously during the process. When the received data reaches the set data amount, the programming controller will initiate continuous programming for the non-volatile memory at one time. For the non-volatile memory, this fast programming can save programming time and improve efficiency. For the bus, this fast programming can reduce the time the bus is occupied and improve efficiency.

[0075] See also Figure 1 , Figure 1This is a schematic diagram of the architecture of a non-volatile memory programming method disclosed in an embodiment of the present application. It includes a bus 101, a programming controller 102 and a non-volatile memory 103. The bus 101 is connected to the programming controller 102, and the programming controller 102 is connected to the non-volatile memory 103. Among them, the programming controller 102 also includes a memory register group 1021, a continuous programming control circuit 1022 and a control register 1023, and the memory register group 1021 is connected to the continuous programming control circuit 1022, and the continuous programming control circuit 1022 is connected to the control register 1023. It is not difficult to understand that in the embodiment of the present application, the specific connection method of the above-mentioned components is not limited, and will not be described in detail later.

[0076] The bus 101 is an internal structure. It is a common channel for the CPU, memory, input and output devices to transmit information. The various components of the host are connected through the bus 101, and the external devices are connected to the bus 101 through the corresponding interface circuits, thus forming a computer hardware system. In a computer system, the common channel for transmitting information between various components is called the bus 101. The microcomputer uses the bus 101 structure to connect various functional components. In the embodiment of the present application, the bus 101 mainly sends control flow and data flow to the programming controller 102. Specifically, the bus 101 sends a control flow to the control register 1023 in the programming controller 102. The control flow mainly includes a series of configuration data of the programming controller 102. Specifically, it can be the continuous programming data volume, the continuous programming start address and the continuous programming enable bit. The continuous programming data volume indicates how many data are written in one continuous programming, the programming start address is the address of the first programming data, and the programming enable indicates that the bus 101 can send programming data. Correspondingly, bus 101 sends a data stream to continuous programming control circuit 1022 in programming controller 102, wherein the data stream mainly includes programming data. For ease of description, the contents of the data stream and control stream are not limited and will not be described in detail.

[0077] It should also be noted that bus 101 can also issue an erase command, which is then completed by the erase circuit, effectively erasing the programmed data stored in the non-volatile memory. In one embodiment, the erase command sets all corresponding address values ​​in the non-volatile memory to 1. If all 1s are read, it indicates that the data has been erased. If any of the values ​​are not 1, it can be understood that the data has not been erased.

[0078] The control register 1023 in the programming controller 102 can configure the continuous programming control circuit 1022 and the internal register group 1021 according to the control flow sent by the bus 101. Specifically, the control register 1023 can send the continuous programming data amount, the programming start address, and the programming enable to the continuous programming control circuit 1022. The continuous programming control circuit 1022 can control the programming content and start time of the non-volatile memory 103 based on the programming start address and the programming enable. Correspondingly, the continuous programming control circuit 1022 also determines how many internal registers in the memory register group 1021 need to be called based on the continuous programming data amount.

[0079] It should also be noted that after receiving the data stream sent by the bus 101, the continuous programming control circuit 1022 can store the data stream, that is, the programming data, in the internal register group 1021. Correspondingly, it can also detect whether the non-volatile memory 103 has not been completely erased based on the programming address of the programming data. If the erasure is complete, the non-volatile memory 103 can be controlled to proceed with programming based on the programming control signal (including at least the programming start address and programming enable).

[0080] The non-volatile memory 103 may receive the programming control signal and programming data from the continuous programming control circuit 1022 to complete the corresponding programming operation.

[0081] See also Figure 2 , Figure 2 This is a flowchart of a non-volatile memory programming method disclosed in an embodiment of the present application, including steps 201 to 204.

[0082] 201. Obtain target configuration data, and configure the programming controller according to the target configuration data.

[0083] Combine Figure 1 , the programming controller can receive the control flow sent by the bus. It is not difficult to understand that the control flow is the target configuration data described above.

[0084] In one embodiment, after receiving the target configuration data, the programming controller can configure the continuous programming control circuit and the internal register group in the programming controller according to the target configuration data.

[0085] 202. After the programming controller completes configuration, it obtains the data to be programmed sent by the bus.

[0086] When the programming controller completes the configuration according to the target configuration data, the bus starts to send data streams. It is not difficult to understand that the data stream is the data to be programmed described in the above section.

[0087] In one embodiment, the bus can be sent in multiple batches. For example, if the bus needs to send a total of 100KB of programming data, it can be sent in 5 batches or 4 batches. 10KB of data can be sent at a time, or 20KB of data can be sent at a time. The specific number of times the data stream is sent and the memory occupied are limited here, and will not be further described.

[0088] Based on the above embodiment, it can also be understood that when writing five data items at once, each time the bus sends data, the actual programming is not performed (actual programming requires two steps, programming setup and programming completion, which consumes a lot of time). Instead, the data is simply stored in the internal register and the bus is then released. The five data items do not need to be sent continuously, and the bus can perform other tasks during this time. Only after all five data items have been sent will the programming controller write the five data items to the non-volatile memory at once.

[0089] 203. Determine whether the amount of data to be programmed meets a preset target amount of data. If so, proceed to step 204.

[0090] Since the continuous programming control circuit continuously stores the data to be programmed into the internal register bank, and the target configuration data sent by the bus also sets the amount of continuous programming data that can be configured in the internal register bank, it should be noted that the continuous programming data amount is the target data amount described in the above section, which can be understood as the number of internal registers to be called.

[0091] Therefore, when the maximum number of registers used in each continuous programming of the internal register group in the programming controller has reached the target data amount, that is, the continuous programming data amount in the target configuration data has reached, then step 204 is executed.

[0092] In one embodiment, if the corresponding target data volume is not reached, the process continues to wait until the called internal register reaches the configured target data volume.

[0093] 204. Perform a programming operation on the non-volatile memory according to all the data to be programmed, so that the non-volatile memory enters a programming state.

[0094] When the amount of data in the internal register group reaches a preset value, that is, when the target data amount is reached, the internal register group can send all the data to be programmed to the continuous programming control circuit. As a result, the continuous programming control circuit can perform a programming operation on the non-volatile memory based on the target configuration data and all the data to be programmed. In other words, the programming data in the internal register group is sequentially written into the non-volatile memory, thereby completing the programming operation of the non-volatile memory.

[0095] The non-volatile memory programming method proposed in this embodiment eliminates the need for continuous programming data transmission throughout the programming process. The bus can be programmed multiple times, improving bus efficiency. Furthermore, multiple programming starts are no longer required during the programming process. The programming data can be written to the non-volatile memory all at once, reducing both programming setup and release times, improving programming efficiency, and reducing programming power consumption.

[0096] For the convenience of describing in detail a programming method of a non-volatile memory proposed in an embodiment of the present application, please refer to Figure 3 , Figure 3 This is a flowchart of another non-volatile memory programming method disclosed in an embodiment of the present application, including steps 301 to 307.

[0097] 301. Obtain target configuration data, and configure the programmable controller according to the target configuration data.

[0098] In this embodiment, step 301 is the same as the aforementioned Figure 2 Step 201 is similar and will not be described in detail here. However, it should be noted that the target configuration data sent by the bus is first sent to the control register. The control register is configured by the bus and can be configured with the continuous programming data volume, programming start address, and programming enable. The continuous programming data volume indicates the number of data to be written in a continuous programming process, the programming start address is the address of the first programming data, and the programming enable indicates that the bus can send programming data.

[0099] In one embodiment, the control register configures the internal register group according to the amount of continuous programming data. Specifically, the internal register group adjusts the maximum cache amount according to the configured amount of continuous programming data.

[0100] The control register can determine the starting programming address for the continuous programming control circuit to begin programming operations based on the programming start address. Correspondingly, the control register can also determine the time to begin receiving data required for continuous programming from the bus based on the programming enable signal. This can also be understood as indicating that programming data can be sent when the signal is 1.

[0101] 302. Receive data to be programmed sent by the bus.

[0102] In this embodiment, step 302 is the same as the aforementioned Figure 2 Step 202 is similar and will not be described in detail here. However, it should be noted that the continuous programming control circuit in the programming controller first receives the data to be programmed sent from the bus. At this time, the internal register group will not receive the data to be programmed sent from the bus.

[0103] 303. Identify the address to be programmed in the data to be programmed, and read the non-volatile memory according to the address to be programmed to see if there is programmed data corresponding to the address to be programmed. If so, execute step 307; if not, execute step 304.

[0104] After the control register is configured, the bus starts sending data. The continuous programming controller reads the data at the corresponding address in the non-volatile memory according to the programming address in the data to be programmed sent by the bus, that is, the existing data at the programming address in the non-volatile memory. It then checks whether the data at the address has been erased.

[0105] If erasing is completed, step 304 is executed; if erasing is not completed, step 307 is executed.

[0106] In one embodiment, each time a bus initiates a programming operation, the continuous programming control circuit in the programming controller first reads the data at the corresponding address in the non-volatile memory and determines whether it has been erased. Specifically, during an erase operation, the corresponding address values ​​in the non-volatile memory are set to all 1s and then read back. If all 1s are present, indicating that the data has been erased, step 304 is executed. If any of the corresponding addresses is not 1, erasure is determined to be incomplete, and step 307 is executed.

[0107] Specifically, the continuous programming control circuit may verify whether the values ​​of all programming addresses corresponding to the addresses to be programmed in the non-volatile memory are all target values, that is, whether they are 1.

[0108] If the values ​​of the programming address are all 1, it is determined that there is no programmed data in the non-volatile memory, that is, there is existing data at the programming address in the non-volatile memory, and step 304 can be executed at this time;

[0109] If at least one of the values ​​of the programming addresses is not 1, it is determined that programmed data exists in the non-volatile memory, and step 307 is executed.

[0110] Based on the above embodiment, before each data in the internal register is written, a data erasure check is performed on the corresponding address. If one data does not meet the conditions, the entire continuous programming action will fail and an error will be reported.

[0111] 304. Store the data to be programmed into the internal register group.

[0112] When it is confirmed that the address has been erased, the continuous programming control circuit will write the data to be programmed sent from the bus into the internal register group and release the bus.

[0113] Specifically, the continuous programming controller stores the data sent from the bus into the internal register group. When the data in the internal register group equals the set continuous programming data volume, the programming controller integrates the data and initiates actual programming to the non-volatile memory in sequence.

[0114] 305. Determine whether the amount of data to be programmed meets the preset target amount of data. If yes, go to step 306; if not, go to step 302.

[0115] In this embodiment, step 305 is the same as the above Figure 2 Step 203 is similar and will not be described in detail here. However, it should be noted that the internal register group consists of a group of bit registers with a bit width of b. The maximum number of registers used in each continuous programming is controlled by the amount of continuous programming data and cannot exceed a. (a is the number of registers in the controller's internal register group, and b is the bit width of the data stream bus)

[0116] In one embodiment, as data accumulates in the internal registers, the continuous programming control circuit in the programming controller can determine whether the number of internal registers in the internal register group has reached a target data volume. Accordingly, the maximum continuous programming limit is determined by the amount of internal memory, but a smaller limit can be configured to leave excess internal registers unused.

[0117] If yes, execute step 306. If no, execute step 302, that is, wait until the set maximum number is reached, that is, execute 306.

[0118] Based on the above embodiment, in another embodiment, it can be seen that as the bus continuously sends write data, the data in the internal register group increases, and each time programming data is stored, the internal counter is incremented by 1. When the counter reaches the set programming data amount, step 306 can be executed.

[0119] 306 . Perform data shaping on all the data to be programmed in the internal register group to merge two adjacent data to be programmed and write them into the non-volatile memory.

[0120] When the amount of data in the internal register group reaches a preset value, the data in the internal register group is reshaped and written sequentially to the non-volatile memory. In other words, when the data in the internal register group equals the set continuous programming data amount, the programming controller will integrate the data and initiate the actual programming of the non-volatile memory in sequence.

[0121] Specifically, in one embodiment, the format of the programming data may be, that is, the storage method of the programming data in the internal register group, as shown in Table 1:

[0122] Data1 Data2 Data3 ...... Dataa-1 Dataa

[0123] After data shaping, see Table 2:

[0124]

[0125]

[0126] The reason for data shaping is mainly determined by the characteristics of non-volatile memory, and two data need to be pieced together and written into the non-volatile memory.

[0127] See also Figure 4 , Figure 4 This is a timing diagram of the programming data disclosed in the embodiment of the present application. The period from when the programming enable signal is pulled high to when the actual programming start signal is pulled high is called the programming setup time, during which the non-volatile memory will prepare for programming. The period from when the actual programming enable signal is pulled low to when the programming enable signal is pulled low is called the programming release time, during which the non-volatile memory will complete the final work after programming. The actual programming process is between the programming setup process and the programming release process, in which the data given by the programming controller 102 is written to the corresponding address of the non-volatile memory under the control of the programming control signal, and can be written multiple times. Since the programming setup time and the programming release time are much longer than the programming time, in the process of continuous programming, only one programming setup and programming release are required to write multiple data, so continuously writing data can reduce the total programming time.

[0128] It is not difficult to understand that the programming address of ADDR1 corresponds to the programming data of DATA1, and the same is true for the others.

[0129] 307. Send error reporting data to the bus.

[0130] If the programming data corresponding to the programming address in the non-volatile memory has not been completely erased, the continuous programming control circuit will report an error to the bus. Specifically, it can send corresponding error data to the bus, thereby canceling the programming operation and reporting an error, allowing software to complete the erasure and reprogramming. Accordingly, step 302 can be re-executed.

[0131] The non-volatile memory programming method proposed in this embodiment allows software to first write multiple data entries into internal registers when batch programming is required. Once the internal registers have received sufficient data, the programming controller uses the data in the internal registers to continuously program the non-volatile memory. This method can save programming time when large-scale programming is required, shortening the programming process and improving both programming and bus efficiency. The amount of data programmed in a single batch is configurable, achieving flexible and efficient programming.

[0132] It should be understood that, although the various steps in the flowcharts involved in the various embodiments described above are displayed in sequence according to the instructions of the arrows, these steps are not necessarily executed in sequence in the order indicated by the arrows. Unless otherwise specified herein, there is no strict order restriction on the execution of these steps, and these steps can be executed in other orders. Moreover, at least a portion of the steps in the flowcharts involved in the various embodiments described above can include multiple steps or multiple stages, and these steps or stages are not necessarily executed and completed at the same time, but can be executed at different times, and the execution order of these steps or stages is not necessarily to be carried out in sequence, but can be executed in turn or alternately with other steps or at least a portion of steps or stages in other steps.

[0133] If the plan involves sensitive information (such as user information and corporate information), it should be stated that the collection, use and processing of sensitive information must comply with the laws, regulations and standards of relevant countries and regions, and must be carried out with the permission or consent of the relevant entities (such as users or enterprises).

[0134] See also Figure 5 , Figure 5 This is a schematic diagram of the structure of a non-volatile memory programming system disclosed in an embodiment of the present application.

[0135] The acquisition unit 501 is used to acquire target configuration data and configure the programmable controller according to the target configuration data;

[0136] The acquisition unit 501 is further configured to acquire the data to be programmed sent by the bus after the programming controller completes configuration;

[0137] A judging unit 502 is configured to judge whether the amount of data to be programmed meets a preset target amount of data;

[0138] The execution unit 503 is configured to execute a programming operation on the non-volatile memory according to all the data to be programmed when the amount of the data to be programmed meets a preset target data amount, so that the non-volatile memory enters a programming state.

[0139] Exemplarily, the system further includes: a configuration unit 504 and a determination unit 505;

[0140] The acquisition unit 501 is specifically configured to acquire configuration data sent by the bus; wherein the configuration data at least includes target data volume, programming start address and programming status data;

[0141] A configuration unit 504 is configured to configure a maximum data size of data to be programmed according to a target data size;

[0142] The configuration unit 504 is further configured to configure an initial programming address of the data to be programmed according to the programming start address; wherein the initial programming address is the programming address when the programming controller starts to perform the programming operation;

[0143] The determining unit 505 is configured to determine the programming state of the bus according to the programming state data, so that the bus sends the data to be programmed to the programming controller.

[0144] Exemplarily, the programming controller includes an internal register group and a continuous programming control circuit connected to each other, and the system further includes: a storage unit 506;

[0145] The storage unit 506 is used to store the data to be programmed into the internal register group after the continuous programming control circuit receives the data to be programmed sent by the bus; wherein the internal register group at least includes an internal register with a target data amount.

[0146] Exemplarily, the system further includes: an identification unit 507 and a reading unit 508;

[0147] an identification unit 507 for identifying an address to be programmed in the data to be programmed;

[0148] The reading unit 508 is used to read the non-volatile memory according to the address to be programmed to determine whether there is programmed data corresponding to the address to be programmed;

[0149] The execution unit 503 is further configured to, when programmed data exists, send error reporting data to the bus, stop executing the step of storing the data to be programmed into the internal register group, and execute the step of obtaining the target configuration data;

[0150] The execution unit 503 is further configured to execute the step of storing the data to be programmed into the internal register group when there is no programmed data.

[0151] Exemplarily, the system further includes: a verification unit 509;

[0152] A verification unit 509 is used to verify whether the values ​​of all programming addresses corresponding to the addresses to be programmed in the non-volatile memory are all target values;

[0153] The determining unit 505 is specifically configured to determine that there is no programmed data in the non-volatile memory when all the values ​​are target values, and execute the step of storing the data to be programmed into the internal register group;

[0154] The determining unit 505 is specifically configured to determine that there is programmed data in the non-volatile memory when at least one non-target value exists, stop executing the step of storing the data to be programmed into the internal register group, and execute the step of obtaining the target configuration data.

[0155] Exemplarily, the system further includes:

[0156] The execution unit 503 is specifically configured to perform data shaping on all the data to be programmed in the internal register group, so as to merge any two adjacent data to be programmed and write the data into the non-volatile memory.

[0157] Exemplarily, the system further includes:

[0158] The execution unit 503 is further configured to execute the step of acquiring the data to be programmed sent by the bus when the data to be programmed does not meet the target data amount.

[0159] See below Figure 6 , a structural diagram of a non-volatile memory programming device disclosed in an embodiment of the present application includes:

[0160] CPU 601, memory 605, input / output interface 604, wired or wireless network interface 603 and power supply 602;

[0161] The memory 605 is a temporary storage memory or a permanent storage memory;

[0162] The CPU 601 is configured to communicate with the memory 605 and execute the instructions in the memory 605 to perform the aforementioned Figure 2 or Figure 3 The method in the embodiment shown.

[0163] The embodiment of the present application also provides a chip system, characterized in that the chip system includes at least one processor and a communication interface, the communication interface and the at least one processor are interconnected through a line, and the at least one processor is used to run a computer program or instruction to execute the aforementioned Figure 2 or Figure 3 The method in the embodiment shown.

[0164] Those skilled in the art will clearly understand that, for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.

[0165] In the several embodiments provided in this application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are merely schematic. For example, the division of the units is merely a logical function division. In actual implementation, there may be other division methods, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be an indirect coupling or communication connection through some interfaces, devices or units, which can be electrical, mechanical or other forms.

[0166] The units described as separate components may or may not be physically separate, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed across multiple network units. Some or all of these units may be selected to achieve the purpose of this embodiment according to actual needs.

[0167] In addition, the functional units in the various embodiments of the present application may be integrated into a single processing unit, or each unit may exist physically separately, or two or more units may be integrated into a single unit. The aforementioned integrated units may be implemented in the form of hardware or software functional units.

[0168] If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application is essentially or the part that contributes to the prior art or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including a number of instructions for enabling a computer device (which can be a personal computer, server, or network device, etc.) to execute all or part of the steps of the method described in each embodiment of the present application. The aforementioned storage medium includes: U disk, mobile hard disk, read-only memory (ROM, read-only memory), random access memory (RAM, random access memory), disk or optical disk, and other media that can store program code.

Claims

1. A method for programming a non-volatile memory, characterized in that: Applied to a programming controller, the method includes: Acquiring target configuration data, and configuring the programming controller according to the target configuration data; After the programming controller completes configuration, it obtains the data to be programmed sent by the bus; Determining whether the amount of the data to be programmed meets a preset target data amount; If yes, performing a programming operation on the non-volatile memory according to all the data to be programmed, so that the non-volatile memory enters a programming state; The programming controller includes a control register and a continuous programming control circuit. The control register is used to configure the continuous programming data amount, the programming start address and the programming enable. The continuous programming data amount represents the programming data written in one continuous programming, the programming start address is the address of the first programming data, and the programming enable indicates the programming data sent by the bus. The control register configures the internal register group according to the continuous programming data volume, and the internal register group adjusts the maximum cached data volume according to the configured continuous programming data volume; the control register determines the starting programming address when the continuous programming control circuit starts to perform the programming operation according to the programming start address; the control register determines the time to start receiving the programming data required for continuous programming sent from the bus according to the programming enable.

2. The programming method according to claim 1, wherein: The step of obtaining target configuration data and configuring the programming controller according to the target configuration data includes: Acquire configuration data sent by the bus; wherein the configuration data at least includes the target data volume, programming start address and programming status data; configuring the maximum data size of the data to be programmed according to the target data size; configuring an initial programming address of the data to be programmed according to the programming start address; wherein the initial programming address is the programming address when the programming controller starts to perform a programming operation; The programming state of the bus is determined according to the programming state data, so that the bus sends the data to be programmed to the program controller.

3. The programming method according to claim 1, wherein: The programming controller includes an internal register group and a continuous programming control circuit connected to each other, and the data to be programmed sent by the acquisition bus includes: After receiving the data to be programmed sent by the bus, the continuous programming control circuit stores the data to be programmed in the internal register group; wherein the internal register group at least includes an internal register with the target data amount.

4. The programming method according to claim 3, wherein: Before storing the data to be programmed in the internal register group, the method further includes: identifying an address to be programmed in the data to be programmed; Reading, according to the address to be programmed, whether there is programmed data corresponding to the address to be programmed in the non-volatile memory; If the programmed data exists, sending error data to the bus, stopping the step of storing the data to be programmed in the internal register group, and executing the step of obtaining the target configuration data; If the programmed data does not exist, the step of storing the data to be programmed in the internal register group is performed.

5. The programming method according to claim 4, characterized in that: The step of reading, according to the address to be programmed, whether there is programmed data corresponding to the address to be programmed in the non-volatile memory comprises: Verifying whether the values ​​of all programming addresses corresponding to the to-be-programmed addresses in the non-volatile memory are all target values; If the values ​​of the programming addresses are all the target values, determining that the programmed data does not exist in the non-volatile memory, and performing the step of storing the data to be programmed in the internal register group; If at least one of the programming address values ​​is not the target value, it is determined that the non-volatile memory contains the programmed data, the step of storing the data to be programmed in the internal register group is stopped, and the step of obtaining the target configuration data is performed.

6. The programming method according to claim 3, wherein: The performing a programming operation on the non-volatile memory according to all the data to be programmed includes: Data shaping is performed on all the data to be programmed in the internal register group to merge two adjacent data to be programmed and write the data into the non-volatile memory.

7. The programming method according to claim 1, wherein: After determining whether the programming data satisfies the preset programming data, the method further includes: If the data to be programmed does not meet the target data amount, the step of acquiring the data to be programmed sent by the bus is performed.

8. A non-volatile memory programming system, characterized in that: Applied to a programmable controller, the system comprises: an acquisition unit, configured to acquire target configuration data and configure the programmable controller according to the target configuration data; The acquisition unit is further configured to acquire the data to be programmed sent by the bus after the programming controller completes configuration; a judging unit, configured to judge whether the amount of the data to be programmed meets a preset target amount of data; an execution unit, configured to, when the amount of the data to be programmed meets a preset target data amount, perform a programming operation on the non-volatile memory according to all the data to be programmed, so that the non-volatile memory enters a programming state; The programming controller includes a control register and a continuous programming control circuit. The control register is used to configure the continuous programming data amount, the programming start address and the programming enable. The continuous programming data amount represents the programming data written in one continuous programming, the programming start address is the address of the first programming data, and the programming enable indicates the programming data sent by the bus. The control register configures the internal register group according to the continuous programming data volume, and the internal register group adjusts the maximum cached data volume according to the configured continuous programming data volume; the control register determines the starting programming address when the continuous programming control circuit starts to perform the programming operation according to the programming start address; the control register determines the time to start receiving the programming data required for continuous programming sent from the bus according to the programming enable.

9. A non-volatile memory programming device, characterized in that: The device comprises: CPU, memory, input and output interfaces, wired or wireless network interfaces, and power supply; The memory is a transient storage memory or a persistent storage memory; The central processing unit is configured to communicate with the memory and execute instructions in the memory to perform the method according to any one of claims 1 to 7.

10. A computer-readable storage medium, characterized in that The computer-readable storage medium comprises instructions, which, when executed on a computer, enable the computer to perform the method according to any one of claims 1 to 7.

Citation Information

Patent Citations

  • Memory, memory controller thereof and data writing method

    CN103853666A

  • Nonvolatile storage with automated response to program faults

    CN106205702A