Suspend-resume programming method for flash memory
First Claim
1. A method of programming a non-volatile memory array using suspend and resume commands comprising:
- (a) pre-defining a plurality of break points amidst a duration of a programming pulse of fixed duration;
(b) beginning loading of a memory array with a program or data during the programming pulse;
(c) issuing a suspend request during the programming pulse;
(d) continuing loading of the memory array until a break point occurring after the suspend request, then suspending said loading;
(e)issuing a resume request to again continue loading of the memory array;
(f) repeating steps (c) to (e) until the programming pulse is complete.
17 Assignments
0 Petitions
Accused Products
Abstract
In a non-volatile memory, a programming cycle consists of the following phases: high voltage charging up, programming pulse, and discharge. The actual programming process only takes place in the programming pulse phase. Several break points are defined relative to elapsed time and introduced in the programming pulse phase. Upon receiving a suspend request, the programming operation will advance to the next break point, then discharge the high programming voltage and go to a suspend state. A separate counter is used to monitor the break points so that elapsed non-programming time can be deducted from the total programming pulse time when the programming operation is resumed. By doing so, the device can handle frequent suspend and resume requests. Since the total time duration in the programming pulse phase is equal for the programming operation with and without suspend and resume requests, the programming proceeds efficiently to completion.
-
Citations
17 Claims
-
1. A method of programming a non-volatile memory array using suspend and resume commands comprising:
-
(a) pre-defining a plurality of break points amidst a duration of a programming pulse of fixed duration;
(b) beginning loading of a memory array with a program or data during the programming pulse;
(c) issuing a suspend request during the programming pulse;
(d) continuing loading of the memory array until a break point occurring after the suspend request, then suspending said loading;
(e)issuing a resume request to again continue loading of the memory array;
(f) repeating steps (c) to (e) until the programming pulse is complete. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of programming a non-volatile memory array using suspend and resume commands comprising:
-
(a) pre-defining a plurality of break points relative to time amidst a duration of a programming pulse of fixed duration;
(b) interrupting and resuming programming during the fixed duration upon interrupt and resume commands, the interrupting occurring at the next break point wherein programming is suspended, then resumes after a resume command;
(c) counting the duration of the programming pulse only when programming is not suspended. - View Dependent Claims (13, 14, 15, 16)
-
-
17. A method of programming a non-volatile memory array using suspend and resume commands comprising:
-
(a) pre-defining a plurality of break points amidst a duration of a programming pulse of fixed (b) after ramping a voltage to a programming level, beginning loading of a memory array with a program or data during the programming pulse;
(c) issuing a suspend request during the programming pulse;
(d) continuing loading of the memory array until a break point occurring after the suspend request, then suspending said loading and then ramping down from the programming level to a low voltage level;
(e)issuing a resume request at the low voltage level to again ramp up to the programming level and then continue loading of the memory array;
(f) repeating steps (c) to (e) until the programming pulse is complete.
-
Specification