US 9,811,284 B2
One-pass programming in a multi-level nonvolatile memory device with improved write amplification
Charan Srinivasan, San Jose, CA (US); and Eyal Gurgi, Petach Tikva (IL)
Assigned to APPLE INC., Cupertino, CA (US)
Filed by Apple Inc., Cupertino, CA (US)
Filed on Dec. 20, 2015, as Appl. No. 14/975,789.
Prior Publication US 2017/0177265 A1, Jun. 22, 2017
Int. Cl. G06F 12/00 (2006.01); G06F 3/06 (2006.01); G11C 11/56 (2006.01); G11C 16/34 (2006.01)
CPC G06F 3/0638 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0629 (2013.01); G06F 3/0679 (2013.01); G11C 11/5628 (2013.01); G11C 11/5642 (2013.01); G11C 16/3436 (2013.01)] 15 Claims
OG exemplary drawing
 
1. A data storage apparatus, comprising:
an interface, which is configured to communicate with a memory device that is designed to store data having a nominal data size by programming a group of memory cells to multiple predefined programming levels using a one-pass program-and-verify scheme in which multiple programming levels are verified between consecutive programming pulses; and
a processor, which is configured to:
combine first data having a first data size smaller than the nominal data size with dummy data to produce first combined data having the nominal data size and send the first combined data to the memory device for storage in the group of the memory cells, wherein the dummy data is chosen to limit the programming levels to which the memory cells in the group are programmed to a partial subset of the predefined programming levels; and,
in response to identifying second data to be stored in the group, retrieve the first data from the memory device, combine the second data with the retrieved first data to obtain second combined data having the nominal data size, and send the second combined data to the memory device for storage, in place, in the memory cells in the group that are already programmed to the partial subset of the programming levels,
wherein the processor is configured to retrieve the first data from the memory device, for combining with the second data, by setting one or more reading thresholds independently of whether the second combined data has been programmed or not.