Flash Foundations

Flash Foundations, Part 3: From Cell to Die

Follow cells into pages, blocks, and dies to understand how NAND is organized.

On this page 16 sections

A cell is a transistor that holds charge, and it becomes storage only when trillions of them are organized into structures you can address, read, write, and erase. Each level of that hierarchy shares something among its cells. A string shares contacts, a wordline shares a control gate, a block shares erase bias, and planes and dies share a data path.

Flash Foundations, Part 3: a string of cells, a page inside a block, and four planes in one dieA three-panel schematic. Left: a NAND string of cells between a drain select gate and a source select gate, with one cell highlighted in copper. Center: a block drawn as a stack of pages, one page highlighted for writing, with the whole block outlined as the erase unit. Right: one die holding four planes of blocks, each with its own page buffer, feeding one shared I/O bar.GUIDE / FLASH FOUNDATIONS, PART 3Strings, pages, blocks, planesSTRING · PAGE · BLOCK · PLANE01 STRING02 BLOCK03 PLANE

Part 2 covered the cell, including trapped charge, threshold voltage (Vt)Threshold voltage, Vt, is the gate voltage at which a flash cell starts to conduct. The stored charge shifts it, and the controller reads data from it., and why density costs endurance. This part scales that cell into strings, wordlines, pages, blocks, planes, dies, and packages, which are the units that firmware and the controller actually address.

Why can a drive write a page but only erase a blockFlash programs one page at a time but erases a whole block at a time, which is why changing a small amount of data causes much more internal work.? Why does a read disturb cells it never asked about, and why do the pages on one wordlineA wordline is the conductor that crosses a row of cells and sets the gate voltage for every cell on it. One wordline holds one or more pages. age at different rates? By the end of this part you can trace one operation from a cell to a die and answer both, along with why erasing forces garbage collection (GC)Garbage collection copies the valid pages out of mostly stale blocks and erases those blocks, so there is always free space for new writes. and why a larger drive on the same controller often wins. Skip the hierarchy and GC looks like a firmware quirk, write slowdowns look random, and two errors with the same NVMe status code look like one failure even when the silicon behind them differs.

NOR versus NAND: why cells share contacts

A cell that stores one to four bits is useless alone. You need cells in structures you can address cheaply. The series string is why NAND exists as a product, because it cuts contacts and interconnects per cell. Every extra contact costs area, yield, and reliability. Wire cells in series and the die gets dense and cheap.

NORNOR flash wires cells in parallel for fast random reads of single bytes. NAND wires them in series for much higher density at the cost of page-wise access. came first. Masuoka’s 1984 flash cell used one transistor per bit and three layers of polysilicon, with the third working as an erase gate, and it programmed by hot-carrier injection like an EPROM. A NOR array gives every cell its own contact to a bitlineA bitline is the wire that runs across many strings and carries the sensed signal to the page buffer. Cells on one wordline share it in turn., so any single cell can be read directly at random-access speed. Code can therefore run straight out of NOR. The price is area, since a contact per cell puts it near 10F², where F is the minimum feature size.

Masuoka’s 1987 NAND structure put cells in series and shared the contacts. That paper reports a 6.43µm² cell at a 1.0µm design rule, 30% less area per bit than a conventional EPROM cell at the same rule. Micron’s TN-29-19 NAND primer puts NAND at about 4F² against 10F² for NOR.

NOR versus NAND: why cells share contacts

NOR gives each cell a contact; NAND shares one across the string

Fewer contacts per cell is the density gain; a slower first read is the cost

Two panels of simplified array schematics. The first panel shows a NOR array: three cells side by side, each with its own contact to a bitline at the top and a shared source line at the bottom, so any one cell can be read directly. NOR costs about 10F² per cell, and its first byte of a random read arrives in 0.075 microseconds. The second panel shows a NAND string: four cells stacked in series between a single contact at the top and the source line at the bottom, so the four cells share one contact. NAND costs about 4F² per cell, but a read must pass current through every cell in the string, and the first byte of a random read takes 25 microseconds.01 NOR3 cells, 3 contactsbitlinessource lineAbout 10F² per cellFirst byte in 0.075µs02 NAND4 cells, 1 contactbitlinestringsource lineAbout 4F² per cellFirst byte in 25µsNAND cellNOR cellbitline contactbitline
Figure 3.1 · NOR wires every cell to its own bitline contact for fast random reads, while NAND puts cells in series and shares the contact. Source: Micron TN-29-19.

Figure 3.1 puts the two wirings side by side. Three NOR cells need three contacts, while four NAND cells share one, which is where the density gap comes from.

A series path has a cost of its own, because a NAND stringA NAND string is a column of cells connected in series between a bitline and the source line, with a select transistor at each end. passes only about 100 to 200nA, and the read threshold sits at tens of nA, so sensing is slower. The TN-29-19 note puts NAND random access at 25µs for the first byte against 0.075µs for NOR, so NAND traded fast random reads for density. Beyond NAND puts both on the same memory ladder as DRAM, Optane and the memories that still hope to join them.

NOR versus NAND: why cells share contacts

Cells form strings, strings share wordlines, and pages fill a block

Series wiring makes NAND dense; shared gates make the page the write unit

Four panels, from the smallest unit to the largest. A single cell stores one to four bits as charge on a layer between a control gate and the channel. Cells wired in series form a string of 8 to 321 cells with select transistors at each end, and a read stresses every other cell in the string. Cells in the same position across strings share a wordline, which holds one page per stored bit; a page, the write unit, is about 16KB. Pages stack into a block, the erase unit, of tens of megabytes and 1,024 to 2,304 pages. Series wiring is why NAND is dense and why a read stresses every other cell in the string.01 CELL1 to 4 bits of chargeCGgatechargechannelA transistor that holds Vt.Not an address.02 STRING8 to 321 cells in seriesDSLSSLREADOne contact path.A read stresses the rest.03 WORDLINE AND PAGEAbout 16KB write unitpage: LP / MP / UPSmallest read and write.Cannot overwrite in place.04 BLOCKTens of MB erase unit1,024–2,304 pages per blockErase resets every page.cell or pagethe one in useselect gate or line
Figure 3.2 · Cells in series form a string, strings share wordlines to make pages, and pages stack into a block. Source: Frontgrade UT81NDQ512G8T datasheet; Micron TN-29-19; TechInsights on the SK hynix 321-layer part.

Figure 3.2 stacks the levels this part covers, from the cell up to the die, and the sections below follow it in order. Series wiring has a second cost, shared bias. An operation on one cell drives every cell in its string, and a wordline drives every string in the block. Shared bias is the physical root of read disturbRead disturb is the slow charge gain in unselected cells caused by the pass voltage applied to them every time a neighboring page is read. and program disturbProgram disturb is unwanted charge added to cells that should stay unchanged. Self-boosting raises the channel voltage of inhibited strings to reduce it..

Cells and strings: the series connection

NAND cells sit in series. One Toshiba NAND patent describes strings of four, eight or sixteen cells, with eight as the worked case. A drain selectThe drain and source select gates connect a string to its bitline and to the source line, so only the chosen strings take part in an operation. transistor caps the top of the string and a source select transistor the bottom.

Planar strings grew with the nodes. One 0.13µm 1Gb part raised its string from 16 to 32 cells, and strings of 64 and 128 cells followed. Early 3D strings started at 24 wordline layers and ran to 64, and mid generations moved to 96 to 128. As of October 2026, high-layer 3D NAND stacks run 218 to 321 layers, and SK hynix’s 321-layer part has 321 active wordlines.

To read one cell, every other cell in the string has to conduct, regardless of what it stores. Current runs drain to source. The cell you asked about is the one that can interrupt that path.

Cells and strings: the series connection

A read turns on every cell in the string except the one it asks about

One string, one selected wordline

A vertical cross-section of one NAND string. A drain select gate sits at the top and a source select gate at the bottom, with a column of wordlines between them and a channel running down the middle through all of them. The bitline connects above the drain select gate and the source line below the source select gate. The selected wordline in the middle is highlighted in copper and receives the read voltage. Every other wordline, in teal, receives a higher pass voltage so its cell conducts whatever it stores. Current flows from the bitline to the source line only if the selected cell conducts, which is how the sense circuit learns its state.bitlinedrain selectpass voltagepass voltageread voltagepass voltagepass voltagesource selectsource lineCurrent entersfrom the bitlineThe selected cellmay block itCurrent exits tothe source lineselected wordlineother wordlinesselect gatecurrent
Figure 3.3 · The selected cell decides whether the string conducts, so every other cell must be driven on. Illustrative values.

Figure 3.3 shows one string under read. The selected wordline gets the read voltage, every other wordline gets a pass voltagePass voltage, Vpass, is applied to every unselected wordline during a read so those cells conduct whatever they hold and the selected cell decides the current. high enough to turn its cell on, and the sense circuitA sense amplifier compares the current or voltage of a selected cell against a reference to decide which stored level the cell holds. watches whether current reaches the source line.

The consequence is read disturb. Every read stresses the cells on every unselected wordline in the block, not just the target string. Tens of thousands of reads or more on the same block, depending on generation and wear, shift Vt in cells you never meant to touch. Firmware keeps a read count per block and refreshes it before that accumulated stress becomes an uncorrectable error, one that error-correcting code (ECC)Error-correcting codes add parity bits to each block of data so the controller can find and fix bit errors on read. can no longer fix.

How a read works

The read itself is a race. Series resistance limits the current a string passes, so a longer string passes less and takes longer to sense. That current is tiny, and no circuit measures it directly. The page bufferThe page buffer is a set of latches on the die that hold one page of data on its way to or from the cells. integrates it onto a capacitor in three steps. First it charges each selected bitline, by about 1V in a published example that takes 10µs. A bitline is long and carries a lot of capacitance, so this precharge is a large share of the read time. Next the selected wordline gets the read voltage, the other wordlines get the pass voltage, and the bitline is released to discharge through the string. Last, after a fixed window, a latch compares the bitline voltage with a trip level and stores a 1 or a 0.

How a read works

A read charges the bitline, then times how fast the cell drains it

Bitline voltage over one read, 2pF bitline

A line chart of bitline voltage in volts against time in microseconds for one read. Both bitlines are precharged from 0V to 1V over the first 10 microseconds. During the next 10 microseconds, the evaluation window, the bitline of a conducting cell, drawn in copper, falls by about 100 millivolts and reaches the latch trip level of 0.9V, so the latch flips. The bitline of a blocking cell, in teal, stays at 1V and never reaches the trip level. A dashed line marks the trip level. A 2 picofarad bitline, a 100 millivolt swing and a 10 microsecond window correspond to a threshold current of 20 nanoamps. The curve shapes are drawn to illustrate.Bitline voltage (V)00.40.81.205101520Time since read start (µs)precharge, 1V in 10µsevaluation window, 10µslatch trip level1V100mV swingblocking cellconducting celllatch trip level
Figure 3.4 · The latch compares the bitline with a trip level after a fixed window, so a cell that conducts at this read level has a Vt below it, and a blocking cell holds the bitline charge. Source: a published NAND sensing analysis; the curve shapes are drawn to illustrate.

Figure 3.4 shows the bitline of a conducting cell sagging during evaluation while the bitline of a blocking cell holds its charge. The latch flips only if the voltage has fallen to the trip level when the window closes. Charge integration sets the rest. The voltage change is ΔV = I × T / C, so the current a cell must exceed to read as conducting is I = ΔV × C / T, with ΔV the swing the latch needs, C the bitline capacitance and T the evaluation window. Published sensing studies of sub-30nm parts put the bitline at about 2pF at best, treat a swing below about 100mV as impractical and run the window near 10µs in practice. That makes the threshold 100mV × 2pF / 10µs = 20nA. Lengthening the window lowers the threshold current, and shortening it raises it.

Each read level is therefore defined by both a current and a time, and the wordline voltage alone does not fix it. Every extra read level repeats the evaluate and latch steps, which is why a page that crosses more references takes longer to read. Page types counts the levels each page needs.

Sensing schemes differ in how they handle the bitline. Neighboring bitlines couple capacitively, so early NAND read every other bitline and grounded the rest as shields. Tanaka and colleagues report that a shielded bitline cut bitline-to-bitline noise in their 0.7µm part from 700mV to 35mV, with a 2.5µs random access time. Shielded designs typically read a wordline in two passes, even bitlines then odd. The all-bitline (ABL) scheme holds every bitline at a constant voltage and senses current instead, so no neighbor swings and a whole wordline reads at once. Cernea and colleagues introduced ABL with current sensing in a 16Gb four-state multi-level cell (MLC) part at 56nm.

The erased state sits at a negative Vt, and a read has to tell it from the first programmed state. Rather than drive the wordline negative, designs can raise the source line, which has the same effect as lowering the gate. Shibata and colleagues report a source-bias negative sense in a 1.33Tb quad-level cell (QLC) part.

Program disturb and self-boosting

Programming has its own way of protecting the strings you did not choose. The other strings on the wordline get their channels left floating and the shared wordlines rise, so the channel rises with them. Engineers call that self-boosting. It cuts the field across their cells, but the same pass voltage stresses the cells on unselected wordlines of the string being programmed, so the pass voltage has to sit between two stresses.

Program disturb and self-boosting

A floating, boosted channel keeps a skipped string from programming

Two strings that share one wordline

Two vertical string cross-sections side by side that share the same wordline. In the left panel, the programmed string, the channel beside the gates is held low, so the high program voltage on the selected wordline creates a strong field across the target cell and charge moves into it. In the right panel, the inhibited string, the channel floats. The raised wordlines couple the channel upward, which is called self-boosting, so the field across the cell on the same wordline stays low and its Vt does not change.01 PROGRAMMED STRINGchanneldrain selectpass voltageprogram voltagepass voltagesource selectchannel held lowStrong field acrossthe cell: charge moves in.02 INHIBITED STRINGchanneldrain selectpass voltageprogram voltagepass voltagesource selectchannel floats and boostsWeak field acrossthe cell: its Vt stays.selectedother gatesboostedfield
Figure 3.5 · Self-boosting raises the channel of an inhibited string so the shared wordline cannot program its cell. Illustrative values.

Figure 3.5 puts two strings that share a wordline side by side. In the programmed string the channel is held low, so the cell on the highlighted wordline sees a strong field and takes charge. Meanwhile the inhibited string’s channel floats and boosts, which cuts the voltage across the tunnel oxide, so that cell keeps its Vt.

Program a wordline and the high voltage also hits cells you did not select. Inhibited cells on that wordline in other strings see the program voltage minus their boosted channel voltage, which is why self-boosting works, and cells on the other wordlines see the pass voltage. Planar NAND coupling grew as each node shrank the lateral gap. 3D NAND separates its stacked wordlines with interlayer oxide. As makers thin those layers to fit more of them in, wordline pitch shrinks and coupling climbs again. Firmware answers with write order. Under the program-order rule, firmware programs wordlines sequentially through the stack instead of at random, so the same neighbor does not eat repeated coupling. Part 4 returns to write ordering in tall stacks, and Part 5 covers the multi-pass program sequence rules.

Three more positions take stress. A cell on an unselected wordline in the string being programmed sees only the pass voltage. A cell on an unselected wordline in an inhibited string is mostly shielded by the boost. The edge cell beside the select gate is the exception, because gate-induced drain leakage (GIDL)Gate-induced drain leakage erase raises the channel voltage at the end of a string until holes are generated that erase the cells above. there makes hot electrons that inject into wordline 0. Part 4 covers that edge disturb and the dummy wordlines that shield it.

The pass voltage has a window with two walls. If it sits too low the channel boosts too little, so inhibited cells program by mistake. Too high and the programmed string takes pass disturb. Planar designs raised the boost ratio with a channel boost capacitance structure, and Park and colleagues report that a dynamic pass voltage scheme cut program failures by over 40% after 30,000 program/erase (P/E) cycles and about doubled the pass voltage window margin on a 42nm MLC test chip (JSSC 2010).

Write order has two physical reasons. Coupling comes first. Lee and colleagues measured about a 0.2V shift from neighbor coupling in multilevel operation at a 0.12µm design rule, and a fixed order limits how many neighbors change after a cell has been verified.

Background pattern dependency is the second reason. A string’s current depends on the Vt of every other cell in it, so a cell’s read Vt can shift with what its neighbors later hold. Designs typically fix the program orderPages in a block must be programmed in a set order, usually from the first wordline to the last, to limit disturb between neighboring cells. so that shift is predictable instead of random.

Both errors come from operations that were never supposed to change those cells. Trigger, target, and accumulation pattern are different, and so is the firmware defense.

Mechanism Physical trigger Cells at risk Accumulation rate Firmware defense
Read disturb A pass voltage on all unselected wordlines in the block during every read Cells on every unselected wordline in the block, across all strings that share those wordlines Proportional to the block’s read count, builds over tens of thousands of reads or more Per-block read counter, data relocation before the threshold is reached
Program disturb A high, stepped program voltage on the selected wordline, plus a pass voltage on the others Inhibited cells on the selected wordline, plus cells on unselected wordlines in the same block Grows with program operations across the block, and accelerates in tall stacks with tighter spacing Fixed sequential wordline write order, voltage shaping between wordlines, ECC headroom

Neither error is fixed in place. Firmware keeps count, watches and relocates before ECC runs out, and Part 7 covers how that refresh is managed.

Wordlines and pages

Cells in the same position across strings share a control gate. That horizontal run is the wordline. Activate it and the cells on it in the selected string group can be read or programmed together. Cells on one wordline hold one page for each stored bit. A page is the smallest unit you can read or write. In modern 3D NAND that is typically around 16KB, plus spare bytes.

Wordlines and pages

One page is the cells along one wordline, not several data chunks

A block face with five strings and four wordlines

Top: a grid with five strings as columns and four wordlines as rows, one cell at each crossing. The cells on the second wordline are highlighted in copper. They form one page in the selected string group, because the cells on one wordline are read and programmed together. Bottom: the same page laid flat as a single bar. Most of the bar is the user data area, and a short segment at the right is the spare area, also called out-of-band, which holds error-correction parity and metadata. A page is one run of cells, not several separate data chunks.01 CELLS AT EACH CROSSINGS0S1S2S3S4WL0WL1WL2WL3One page:these cells areread andprogrammedtogether02 THE SAME PAGE, LAID FLATuser data cellsspareError-correction parity and metadata fill the spare area.The host cannot address the spare area.the pageother cellsspare area
Figure 3.6 · One page is the set of cells on one wordline in the selected string group, read and programmed together, with spare cells beside the user data. Illustrative values.

Figure 3.6 corrects a common picture. One page is a single run of cells along one wordline, which means a wordline holds no stack of separate 16KB chunks. A triple-level cell (TLC) wordline carries three such pages, each for one stored bit, as the next section shows. Spare cells at the end belong to the same page. Read the page and the die returns the user data and the spare area together.

Before data hits the cells, it gets scrambled. Many SSD controllers XOR the data with a pseudo-random key before it reaches the NAND. That key is usually seeded from the data’s logical address, and the controller applies the same key on read to undo it. Electrical effects are the reason. Constant data skews state occupancy and shifts read levels through pattern-dependent string current, and repeated patterns can line up worst-case cell-to-cell interference. Scrambling makes even compressible or constant data look mixed enough to sense and retain. The host never sees the scrambling, and NVMe logs do not mention it. A raw NAND dump that skips descrambling looks corrupted even when the cells are fine.

Some dies also adjust their own read levels from stored counts, and Part 8 covers read retry.

Each page also has an out-of-band (OOB)The spare, or out-of-band, area is extra bytes on every page that hold error-correction parity and controller metadata. region the host cannot address. Older generations used 64 bytes per 2KB page, as Micron’s TN-29-19 shows. Modern 16KB-page 3D NAND carries around 2KB of spare per page for larger error correction. OOB commonly holds low-density parity-check (LDPC)LDPC is a code whose decoder passes confidence messages back and forth until the errors resolve. It corrects more errors than BCH, especially with soft input. parity, block metadata, bad-block marks, and often a reverse-mapping entry that holds the logical page number. NVMe does not expose it as capacity. Part 6 shows how firmware uses that per-page metadata to find which writes finished after a dirty shutdown. In raw analysis, missing or inconsistent OOB on a page that should have data usually means a program that died mid-write, or damage beyond what ECC already reported to the host.

Page types: how 1-2-4 coding splits one cell into three pages

A cell stores more than one bit by holding one of several threshold voltages. A single-level cell (SLC)A cell storing n bits needs 2 to the power n voltage levels: two for SLC, four for MLC, eight for TLC and sixteen for QLC. stores one bit in two states. A TLC stores three bits in eight states, and a quad-level cell (QLC) stores four bits in sixteen. Those bits belong to different pages. In a TLC, each cell gives one bit to each of the lower page (LP), middle page (MP), and upper page (UP)In a multi-bit cell each bit belongs to a different page type: lower, middle, upper and, for QLC, extra. Each type needs a different number of reads. of its wordline, and a QLC cell adds an extra page (XP).

Which bit goes to which page is set by a code. Adjacent states get bit patterns that differ in exactly one bit, which is a Gray code, so a cell that drifts into the next state causes one bit error instead of several. 1-2-4 codingA 1-2-4 coding assigns bits to voltage levels so the lower page needs one read reference, the middle two, the upper four. Gray code keeps neighbors one bit apart. is a common way to spread that code across pages, and the lower page flips at one boundary between states, the middle page at two, and the upper page at four. A published survey’s TLC mapping reads the lower page with one reference voltage, the middle page with two and the upper page with four.

Page types: how 1-2-4 coding splits one cell into three pages

The same eight states give the three pages one, two and four reads

One Gray-code assignment for a triple-level cell; vendors differ

A threshold-voltage chart with eight populations for a triple-level cell, labeled ER and P1 to P7 from left to right, with seven read references R1 to R7 between them. Below each state, three rows show the stored bit of the lower, middle and upper page. Crossing each read reference flips exactly one page's bit, which is a Gray code. The lower page changes only at R4, so it needs one read level. The middle page changes at R2 and R6, so it needs two. The upper page changes at R1, R3, R5 and R7, so it needs four and has the most boundaries where a drifting cell causes an error. Dots mark where each page flips. The population shapes are drawn to illustrate, and vendors use different assignments.Cell countERP1P2P3P4P5P6P7R1R2R3R4R5R6R7Threshold voltage (Vt), low to highLP111100001 readMP110000112 readsUP100110014 readsstate populationread referenceLP, MP flipUP flip
Figure 3.7 · Each boundary between neighboring states flips exactly one page's bit, so the lower page needs one read level, the middle page two and the upper page four. Source: Cai et al., Proceedings of the IEEE 2017 (the mapping); the population shapes are drawn to illustrate.

Figure 3.7 marks with dots the read references each page must use. A page error needs a cell to cross one of that page’s references. Lower-page bits change only at R4, so that page has one reference to cross and needs one read level. Upper-page bits change at R1, R3, R5, and R7, so that page has four to cross and needs four read levels. Under equal drift, the upper page collects more errors, and it takes longer to sense. This is one assignment. Vendors use others, and the counts differ by scheme. A 144-layer QLC paper names 1-2-4-8 as a QLC code and uses 1-2-6-6 instead, which cut its maximum read time by 25%.

Those counts follow from the code. A cell with n bits has 2ⁿ states and 2ⁿ − 1 boundaries between them, and the code spreads those boundaries across n pages. Averaged over pages, a read takes (2ⁿ − 1) / n senses: 1 for SLC, 1.5 for two bits, about 2.3 for TLC and 3.75 for QLC. Program verifyProgram-verify alternates a program pulse with a read check. Cells that reached their target stop receiving pulses, and the rest continue. can need up to 2ⁿ − 1 levels per pulse too. Multi-level parts use multi-pass programming to suppress neighbor coupling, and Part 5 covers the sequences.

Page types differ in more than read levels. The coding and the program order give each one a different profile.

Page (multi-pass view) Programming order Read levels (1-2-4 style) Relative error rate
Lower page (LP) First 1 Lowest
Middle page (MP) Second 2 Medium
Upper page (UP) Third, last in TLC 4 Highest in TLC
Extra page (XP), QLC only Fourth, last in QLC 8 in a 1-2-4-8 style code Highest in QLC

In multi-pass schemes, upper pages program last, into the full eight-level TLC or sixteen-level QLC distribution. In one-shot schemes the pages of a wordline go in together, but the upper page still has the most read references, so it has the most boundaries where disturb and retention can push a cell across. On TLC at moderate program/erase (P/E) cyclesA program/erase cycle is one write of a block followed by its erase. Each cycle wears the oxide, and the cell type sets how many cycles it tolerates., upper-page raw bit error rate (RBER)Raw bit error rate is the fraction of bits read from the NAND that are wrong before error correction is applied. is usually higher than lower-page RBER on the same block, by an amount that depends on the coding scheme, generation, and wear, and firmware has to budget for that gap.

Some firmware keeps critical metadata in SLC-modeSLC mode, or pseudo-SLC, runs a multi-level block as one bit per cell. It writes faster and survives more cycles, but holds a fraction of the data. blocks, which are programmed one bit per cell, or on lower pages, and lets user data take the upper-page error rate. Firmware that ignores page type has to size ECC for the weakest pages everywhere.

Blocks: the erase unit and the root of GC

The series connection also draws the erase boundary. A string lives in a block, and the block is the smallest thing you can erase. You can write a page. You cannot overwrite it, because programming only adds charge and removing it takes an eraseFlash cannot overwrite a page in place. The cells must first be erased to the lowest level, and erase works only on a whole block. bias that the whole block shares. Erase resets every cell in every page at once. A block holds 1,024 or 1,536 pages in Micron’s 2016 3D parts and 2,304 in Frontgrade’s, which is tens of megabytes depending on page sizeA page is the smallest unit a NAND die programs or reads, commonly 16KiB of data plus a spare area for error-correction codes and metadata. and generation.

Everything above NAND lives with this constraint. The write unit is a page, around 16KB, and the erase unitA block is the smallest unit that can be erased. It holds hundreds to thousands of pages, so one erase clears megabytes of data at once. is a block, tens of megabytes.

Blocks: the erase unit and the root of GC

A 4KB update writes a new page and later erases a whole block

The write unit is a page, the erase unit is a block

Three panels. Left: the host asks to overwrite 4KB in place, which looks like a patch, but NAND cannot do that. Center: NAND writes a new page of about 16KB and marks the old page invalid inside a block of tens of megabytes; the stale page stays until garbage collection. Right: garbage collection copies the still-valid pages from the victim block into a new block, drops the stale page, then erases the victim. Write amplification is the extra NAND bytes the copy costs.01 HOST ASKEDoverwrite in place4KBLooks like a patch.NAND cannot do that.02 NAND DIDone block, tens of MBnew page, 16KBold page, staleA mixed block now.The stale 4KB stays.03 THEN GCcopy valid, erasevictimcopy, then erasenewEach copy is a writethe host never sent.valid pagenew pagestale page
Figure 3.8 · A page is written on its own, but only a whole block can be erased, so stale pages wait for garbage collection. Illustrative values.

The figure sets the two units side by side. A 4KB update does not erase 4KB. It is written to a fresh page alongside other pending writes and marks the old 4KB copy invalid, and the stale copies pile up inside their blocks.

Sequential work fills blocks and moves on. Random small writes scatter invalid pages across many blocks, so each GC cycle touches more of them. GC copies the still-valid pages out and then erases the block, and every copy is a write the host never asked for. The ratio of NAND bytes written to host bytes written is the write amplification factor (WAF)Write amplification factor is the data written to NAND divided by the data the host wrote. A value of 1 means no extra internal writes.. Part 7 covers how firmware picks victims, separates hot and cold data, and levels wear, and it defines WAF.

Planes give parallelism within a die

A die is split into planes. Tom’s Hardware’s 2021 review of the Samsung 980 reports two planes per die, and Micron’s 232-layer die, announced in July 2022, has six. Each plane has its own page buffer. Multi-plane commands usually run planes in lockstep, and some newer parts can also read each plane independently. A multi-plane operation lets the controller work on more than one page in the same die at once. That means more throughput from the same die count.

Planes give parallelism within a die

One command can work on the same page in every plane at once

One die with four planes, each with its own page buffer

One die drawn as a large box containing four planes side by side. Each plane holds a column of blocks and has its own page buffer beneath it. The same block position is highlighted in copper in all four planes, showing that a multi-plane command usually addresses the same page address in every plane. All four page buffers feed one shared die input and output bar at the bottom, which connects to the channel. The planes work in parallel inside the die, but they share the one interface.ONE DIEPlane 0block 1block 2block 3page bufferPlane 1block 1block 2block 3page bufferPlane 2block 1block 2block 3page bufferPlane 3block 1block 2block 3page buffershared die I/O to the channelsame page addressblockpage bufferdata path
Figure 3.9 · A multi-plane command runs the planes together, usually at the same page address. Illustrative values.

Figure 3.9 shows why planesA plane is an independent set of blocks on a die with its own page buffer. A multi-plane operation runs the same command on several planes at once. help. Each plane has its own page buffer, so the array operations overlap, while the die’s single I/O path is shared.

Two-page read timing shows the gain. Let tR be the array sense time and tOUT the time to move one page over the channel. Reading two pages one after the other costs 2 × tR + 2 × tOUT. Multi-plane reads sense both pages at once and pay tR + 2 × tOUT, because only the transfers take turns. Cache reads sense the second page while the first one moves out, so they cost tR + tOUT + the larger of tR and tOUT. When tOUT is the larger, that equals the multi-plane time. When tR is the larger, sensing stays the bottleneck and multi-plane wins.

Read mode, two pages Time Datasheet example (µs)
One page after the other 2 × tR + 2 × tOUT 203.7
Multi-plane tR + 2 × tOUT 143.7
Cache tR + tOUT + max(tR, tOUT) 175.9

The example uses one real part, the 4Tb TLC NAND part in Frontgrade’s datasheet. It lists a typical single-plane page read of 74µs, a typical multi-plane read of 88µs and NV-DDR3 at 667MT/s, which is 667MB/s on its eight-bit bus. A full page with its spare area is 18,592 bytes, so tOUT is 18,592B / 667MB/s, about 27.9µs. The multi-plane row uses the 88µs multi-plane time in place of tR. Here tR is larger than tOUT, so sensing is the bottleneck and multi-plane finishes first.

Many parts need the same page address in each plane for one multi-plane command, though later ONFI revisions, starting with 4.2 in 2020, relaxed some of those restrictions. On such a part, page 47 in plane 0 and page 312 in plane 1 cannot go in one command. Firmware has to know which blocks share a compatible address, which is why the flash translation layer (FTL)The flash translation layer is the firmware that maps host addresses to physical flash locations and hides the rules of erase blocks and wear. groups blocks across planes and dies into superblocks and treats each as one unit. Writes stripe, and erases clear the members together. Part 6 covers how. Without that grouping, even fast NAND is stuck at single-plane, single-die speed.

Wear breaks the pairing, and a block can retire while its partner in the next plane is still healthy. Part 6 covers how firmware remaps it, and what that costs the stripe.

Copy-back is a GC shortcut on the same die. It reads a page and programs it to a new location without dragging data through the controller, which keeps the channel free. It only works inside the die, usually the same plane, and it skips the ECC path that would clean errors before rewrite. Use it only on low-RBER pages. Copy a dirty page and you plant those errors in the destination.

Dies, packages, and the full parallelism stack

A die is the full array on one piece of silicon, holding cells, strings, wordlines, blocks, and planes. A packageSeveral dies can share one package, stacked and connected by wire bonds or through-silicon vias, which adds capacity without more board area. holds one or more dies, and a drive carries several packages. The controller talks to dies over channels, parallel paths that let more than one die work at once. Silicon Motion’s SM2262EN brief lists eight NAND channels and four chip enables per channel. With one die behind each chip enable, 32 dies can work in parallel, and each die has two to six planes. Channels × dies × planes is the theoretical ceiling.

Dies, packages, and the full parallelism stack

Capacity often buys parallelism, not faster silicon

Same controller, same NAND: more dies at the larger capacity

Three panels. Left: the multiply. Two to six planes per die, dies on a channel, channels on the controller; the SM2262EN brief lists 8 channels with 4 chip enables each, which is 32 dies with one die per chip enable. Center: a 500GB drive on the same controller fills one die slot on each of the 8 channels, about 8 dies, and leaves the other slots empty. Right: a 2TB drive fills all four slots on each channel, about 32 dies. Peak sequential numbers can match. Sustained mixed-load throughput usually does not, because the larger drive has more parallel execution units, not faster silicon.01 THE MULTIPLYPLANE2 to 6 per dieDIEthe full arrayCHANNELpath to controller8 channels ×4 dies each= 32 diesSM2262EN brief02 500GBCH0CH1CH2CH3CH4CH5CH6CH7About 8 diessame controller03 2TBCH0CH1CH2CH3CH4CH5CH6CH7About 32 diessame controllerdie in useempty slot
Figure 3.10 · Planes, dies and channels multiply, so a larger drive on the same controller has more execution units. Source: Silicon Motion SM2262EN brief; die counts from 512Gb dies.

Each level of the stackFlash gets its speed by working in parallel at several levels: channels carry data, each channel serves several dies, and each die has several planes. multiplies the one below it, so the ceiling is the product of all three. Capacity and performance therefore travel together at a given tier. A 2TB drive on the same controller and NAND as a 500GB drive has more dies, more planes, and often more live channels. With 512Gb dies that is about 32 dies against 8. The ceiling is higher because there are more execution units rather than faster silicon. A spec sheet may list the same peak sequential read number across capacities. As of October 2026, the SN850X datasheet does so for its 1TB, 2TB, and 4TB models. Sustained mixed-load throughput usually does not match. In the Parallelism Lab, pick a die and a controller, then raise the capacity and watch which limit sets the write speed.

Each level has one job and one constraint that the levels above it inherit:

Level Function Typical scale Key constraint
Cell Stores charge 1 to 4 bits Analog, wears with cycling
String Series connection 8 to 321 cells, by generation Read disturb
Wordline Parallel read and write Spans all strings Shared activation
Page Write unit 16KB typical Cannot overwrite in place
Block Erase unit Tens of MB Must erase the entire block
Plane Parallelism within a die 2 to 6 per die Positional coordination
Die Complete array Tens to hundreds of GB Channel throughput
Package Physical chip Several dies Thermal, power

In CMOS-under-array (CuA) and periphery-under-cell (PUC)CMOS under array, called CuA or periphery under cell, places the control circuits beneath the memory array instead of beside it, saving die area. designs, peripheral logic sits under the array on the same die and reaches it through in-die vertical contacts instead of TSVs. Part 4 covers CuA, PUC, and bonded designs.

Capacity scales with dies per package and packages per board, which is why many high-capacity M.2 drives put NAND on both sides. In its 2021 review, Tom’s Hardware describes the Samsung 980 as using one NAND package holding up to sixteen 512Gb dies. At the small end, the controller and NAND can share one package. For example, Silicon Motion’s SM2263XT enables 11.5 × 13mm ball grid array (BGA) SSDs, and embedded MultiMediaCard (eMMC) is NAND plus a controller in one embedded device.

How dies connect in a package

Within the package, dies connect to each other and to the substrate a few different ways. Wire bonding runs fine metal from die-edge pads to the substrate. The method is mature, cheap, and enough when you just need a shared set of I/O pads. Flip-chip solders a die face-down for shorter paths and higher I/O density, and it is more common for controllers than for NAND stacks. Through-silicon vias (TSVs) take a different route, vertical copper-filled vias etched through the die, so dies above and below connect without going around the edge.

Dies, packages, and the full parallelism stack

Packages join dies by wires or vias, and bonding joins wafers

Wire bonding is the baseline the patents describe

Three panels. Panel one shows four dies stacked with a small sideways offset on a substrate, with thin wires running from the exposed edge pads of each die around to the substrate. This wire-bonded stack is the baseline the patents describe. Panel two shows four dies stacked directly on top of each other on a substrate, joined by vertical copper vias that run through the silicon and small contacts between the dies, so no wires run around the edge. Panel three shows an array wafer bonded to a logic wafer through pads at the interface, which is a connection inside one die.01 WIRE BONDstacked dies, offsetWires run aroundthe die edge.02 TSVdies joined by viasVias run straightthrough the dies.03 BONDED WAFERSarray on logicBond pads joinarray and logic.array waferlogic waferdie or arraylogic or substratewire, via, padcontact
Figure 3.11 · Stacked dies connect to the package by wire bonds or through-silicon vias, while bonded wafers join array and logic inside one die. Source: Kioxia 2015 TSV release; patent US8502368B2.

Figure 3.11 shows the three side by side. In a wire-bonded stack the dies sit offset so each die’s edge pads stay reachable. TSVs run straight through the silicon, which gives a shorter path and higher data rates between stacked dies; Toshiba’s 2015 sixteen-die prototype passed over 1Gbps. Wire bonding was the prior art for stacked NAND, and the patents treat it as the baseline. Offsetting each die exposes its pads for one bonding pass, and one sets a 24-die wire-bonded package against an 8-die stack. The third panel is a different level. Inside one die, bonded designs build the array and the logic on separate wafers and join them.

Supply voltage and binning

NAND needs two supplies, a core supply for the array and a separate I/O supply (VccQ) for the interface to the controller. The I/O supply has dropped as the interface sped up, and controllers that pair with both older and newer NAND support both levels. As of October 2026, Open NAND Flash Interface (ONFI) 4.0 introduced NV-DDR3 with VccQ at 1.2V, and the NV-LPDDR4 interface in ONFI 5.2 also runs at 1.2V. ONFI 6.0, published in January 2026, drops the NV-DDR3 definition from the spec and extends NV-LPDDR4 to 4,800MT/s. Marvell’s 88NV1160, for example, lists VccQ at 1.2V and 1.8V. Part 5 covers how the board delivers each rail.

Fabs test every die and sort by quality. One patent describes the usual practice as bins by usable density, with Bin 1 for more than 95% of blocks usable, then 90%, 85% and 75%, with any chip below Bin 1 called a downgrade chip. A lower bin means a die that works but carries more factory bad blocks. From the outside, two drives with the same model number, bought months apart, can carry different NAND. Documented swaps changed the NAND type, and a grade-only change would be harder to catch. That is a procurement and field reliability problem. Part 4 covers the NAND supply side, and The Field Practicalities covers a real case with the Crucial P2.

NAND timing parameters: the physics made measurable

Every layer in the hierarchy has a clock, and the controller has to respect it. Otherwise the operation fails or comes back dirty. Three array times matter most. They are tR (sense a page into the page register), tPROG (program a wordline) and tBERS (erase a block).

NAND timing parameters: the physics made measurable

Erase takes the longest, so it sets the floor for GC latency

Datasheet ranges on a log time axis

A horizontal bar chart on a logarithmic time axis from 10 microseconds to 30 milliseconds. Three bars show typical ranges. The read time tR spans roughly 25 to 150 microseconds. The program time tPROG spans roughly 0.2 to 2 milliseconds. The block erase time tBERS, highlighted in copper, spans roughly 3.5 to 15 milliseconds. Each bar is drawn from its low value to its high value, and the values are printed to the right of the plot.Operation101001,00010,000Time (µs, log scale)tRread25–150µstPROGprogram0.2–2mstBERSerase3.5–15msread and programerase: the GC latency floor
Figure 3.12 · Read, program and erase times differ by orders of magnitude, so a die busy with an erase blocks reads far longer than one busy with a read. Source: NAND datasheets and the ONFI specification; ranges as in the table.

Figure 3.12 puts the three on one log axis. They differ by orders of magnitude. A die that is busy with an erase cannot serve a read until the erase ends or is suspended, so the longer the operation, the longer the tail it can add.

Datasheets and the ONFI spec give the ranges in the table, along with what each parameter controls. Datasheet values vary by part. Micron’s 3D NAND flyer, for example, lists a typical tBERS of 15ms, tPROG of 1,300 to 1,630µs and tR of 77 to 100µs across its two parts.

Parameter Range What it controls
tPROG 0.2–2ms Page or wordline program time, one-shot or multi-pass depending on the part, rising with bits per cell. Datasheet maxima run higher
tBERS 3.5–15ms Block erase time, which sets the latency floor for GC operations
tR 25–150µs Array sense time, from read confirm until data reaches the page register. The upper end is a datasheet maximum
tREA 16–40ns RE# access time, from RE# low to valid output data. ONFI maximum by interface mode

tPROG spans more than an order of magnitude because more bits per cell means more target voltage levels and finer incremental step pulse programming (ISPP)Incremental step pulse programming raises the program voltage a small step with every pulse and checks the cell between pulses, so charge lands precisely. step sizes. A lower page only has to resolve a couple of wide clusters of states. An upper or extra page has to resolve eight or sixteen tight states in the same programming window. The low end, roughly 200µs, is a page programmed in SLC mode. The 2ms end is a QLC wordline resolving sixteen tight states, and a 1Tb QLC part reports 2ms and 110µs. A low-latency 96-layer SLC part described in a JSSC paper sits below the range, with a 75µs program time and a 4µs read.

tR sets base read latency, but tPROG and tBERS are the ones that stretch tails. A page program holds its die for hundreds of µs to a few ms. A block erase takes roughly 3.5 to 15ms, and the host can see that if GC fires without free-block headroom. Firmware hides the waits by interleaving dies on the same channel and suspending programs and erases for reads. These numbers change with wear, as the next section shows.

A die is not a passive array. It carries its own control logic, so the controller issues a command and the die sequences the pulses and verifies behind tR, tPROG and tBERStR is the time to read a page into the buffer, tPROG the time to program a page and tBERS the time to erase a block. Erase is slowest. on its own. One 4Gb part put a Bose-Chaudhuri-Hocquenghem (BCH) error-correction engine on the die that corrects up to 5 bits per codeword, and a survey of flash architecture describes the on-die blocks and test modes. Designs typically repair bitlines before the controller sees the die. Spare columns replace defective bitlines at wafer sort, and the repair data loads at power-on. NAND typically has no spare rows, so a wordline short takes the whole block out. Factory bad blocks are the defects that repair cannot fix, and Part 6 covers how firmware handles them.

How timing parameters shift with wear

Fresh NAND erases near the fast end of the spec. Oxide is intact, charge trapping is consistent, and erase completes in one loop. As P/E cycles accumulate, firmware has to spend more time to get the same confidence.

Program time behaves differently from erase time. In planar characterization, worn oxide passes charge more easily, so cells reach verify in fewer ISPP steps. Grupp and colleagues measured program time falling by nearly 50% over the life of SLC parts and by 10 to 15% in multi-level-cell (MLC) parts. I found no measurement of program time against wear on 3D parts, so treat this as planar behavior.

tBERS is the one that moves. An aged block with a dense trap population needs more erase loops at higher voltage to clear residual charge from nitride or oxide that no longer yields to the original voltage. In one 3D TLC characterization, worn blocks needed two or more erase loops where fresh ones needed one, so a 3.5ms erase can take 7ms or more late in life. That matters because tBERS is the GC latency floor. Late-life drives keep a die busy longer per erase, so GC competes harder with host I/O. Tail spikes get worse toward end of life for two reasons. GC runs more often as free-block headroom shrinks, and each erase itself is slower.

A block erase is not a single pulse. In one published planar design it runs as a small program of its own. An optional program-before-erase pass writes every wordline with no verify, stepping from 12V to 17V in 1V steps over about 150µs, so every cell starts from the same programmed state and cells that were already erased are not pushed into deep over-erase. Then up to four erase pulses follow. Each ramps the p-well to about 23V with the wordlines at 0V and lasts about 1,025µs, and each is followed by a hard erase verify. When every cell passes, a program-after-erase step soft-programs the over-erased cells back up, which tightens the erased distribution. A read-all-1 check closes the sequence.

How timing parameters shift with wear

An erase is a short program, not one pulse

One block erase in one published planar design

A voltage-versus-time chart. A short staircase from 12 to 17 volts on the wordlines lasts about 150 microseconds. Up to four p-well pulses follow, each ramping to 23 volts and lasting about 1,025 microseconds, each followed by a hard erase verify. Pulses 2 to 4 are dashed because they run only if verify fails. A soft program step and a read-all-1 check close the sequence. Below the chart, four steps are named: program before erase, erase pulses, program after erase and read-all-1.Applied voltage (V)051015202501,0002,0003,0004,000Time (µs)PBEpulse 1pulse 2pulse 3pulse 4HEVPAE01 PBEoptional, 150µsevens out cells02 PULSESup to 4 pulses,1,025µs each03 PAEsoft programtightens erased04 READ-ALL-1every cell mustread erasedwordlines (PBE)p-well pulseif verify failsverify (HEV)
Figure 3.13 · One block erase is a short run of pulses and verify steps, not a single action; the voltages and times belong to planar NAND. Source: one published planar NAND design; verify and PAE are marks, not to scale.

The sequence also shows what an interrupted erase can leave behind. Cut power after the pre-program and every cell has been pushed toward programmed, with no verify. Cut it during the pulses and the block is partly erased, and some cells can read as erased with little margin. Cut it before the soft program and some cells are over-erased. In every case firmware has to treat the block as dirty and erase it again. These voltages and timings belong to planar NAND. Many 3D designs use GIDL erase, as Part 2 describes, so the numbers differ by vendor.

Read window budget: the margin that wear consumes

NAND wear-out comes down to one margin, and it sits between cell physics and ECC. Every cell type stores charge in voltage bands. TLC has eight states, split by thresholds. Between the upper tail of one distribution and the lower tail of the next lies the read window, the voltage space where the controller can place a reference and still know which state it has. The sum of those gaps is the read window budget (RWB)The read window budget is the voltage room left between distributions for placing read references. It shrinks with every added bit per cell and every cycle of wear., the margin left before adjacent distributions overlap and classification becomes a guess. This series uses the term for the total margin across all the states.

A fresh TLC block has tight clusters and real gaps, so RWB is large and error rates stay low.

Read window budget: the margin that wear consumes

Wear widens each state until the gaps between neighbors close

Eight triple-level-cell states, fresh and worn

A threshold-voltage chart with eight populations for a triple-level cell and seven read references between them. The dashed curves are fresh cells: narrow, with clear gaps around each reference. The solid curves are worn cells: wider, with tails that overlap their neighbors. The shaded overlap regions, in copper, are cells that sit on the wrong side of a reference and read as the neighboring state, which are bit errors. The sum of the gaps is the read window budget, and wear spends it.Cell countR1R2R3R4R5R6R7ERP1P2P3P4P5P6P7Threshold voltage (Vt), low to highfreshwornoverlap: misread cellsread reference
Figure 3.14 · The read window is the gap between neighboring populations; wear widens them until the tails overlap and reads misclassify cells. Illustrative values.

In Figure 3.14 the dashed curves are fresh cells and the solid curves are worn cells. Where neighboring solid curves cross a read reference, the shaded overlap is cells that read as the wrong state. Those are bit errors, and ECC cleans them.

P/E cycling broadens the tails, as Part 2 shows. Keep wearing and the misclassification rate climbs, RBER rises, and eventually a codeword holds more errors than ECC can fix. It is uncorrectable. So wear-out error growth tracks the P/E count instead of arriving at random. RWB narrowing is a function of P/E, retention age, temperature, and read disturb. Controller ECC is sized to the RBER expected at the rated end-of-life P/E count, which is the point where the worst blocks hit minimum viable RWB under the rating’s workload and retention assumptions. Read retry is the response when the standard read reference no longer sits in a usable gap, and Part 8 covers how the controller walks alternate thresholds until one fits.

The field catch is that RWB does not shrink evenly. Upper pages cross the most references, so they hit the ECC wall first. High-wear blocks go faster than low-wear ones. Hot regions go faster than cool ones. When an aged drive shows errors clustered in specific logical block address (LBA)A logical block address numbers the fixed-size blocks the host sees, starting at zero. The drive decides where each one is physically stored. ranges, you are usually looking at data written and aged together. Which physical region that is depends on the FTL, because the LBA only names the data.

Reading errors by page type and landing pattern

The page type an error came from tells you more than the error itself. When a read fails or needs multiple retries, the physical location (which wordline, and which page type on it) is context the NVMe Error Information log does not spell out. Neither does the standard health log. Vendor-specific logs and telemetry sometimes do. Three cases cover most of what an uncorrectable read can mean.

Reading errors by page type and landing pattern

Where the failure sits tells you which causes to rule out first

Three cases for an uncorrectable read

A decision tree for an uncorrectable read. The first question is which page type failed. If it was an upper page, the next question is whether the block is near its rated wear. Yes means expected end of life. No means look for uneven wear, heat or a defect. If it was a lower page, which crosses only the middle reference, the outcome, highlighted in copper, is a strong warning: check the upper pages on the same wordline, then suspect a defect.Upper pageLower pageYesNoWhich page type failed?Is the block nearits rated wear?Expected endof lifeLook for unevenwear, heat ora defectStrong warning:check upper pages,then suspect a defectquestionoutcomestrong warninganswer
Figure 3.15 · An upper-page failure at high wear is the designed wear-out, while a lower-page failure points at a defect or a stress the refresh missed. Source: Figure 3.7's read references and the wear reasoning in this section.

Read the tree from the top. An uncorrectable on an upper page at high P/E is expected wear. The upper page was programmed into tight margins for thousands of cycles, and ECC headroom ran out. This is the designed end-of-life case for the block. Firmware should have been watching RBER and relocating first, but the failure itself is not strange. An uncorrectable on an upper page at low P/E is not. Either that block took more cycles than the drive-level P/E shows, it ran hot enough to accelerate retention loss, or there is a process defect in that region, and each explanation wants a different response.

Lower-page failures carry the most weight. Under 1-2-4 coding, LP has the fewest references to cross and the lowest error rate. Read disturb moves the erased and lowest programmed states first, and those boundaries belong to the upper page, so ordinary disturb fails upper pages first. An LP failure at moderate wear with clean upper pages most often points to a defective region with severe oxide damage. Alongside upper-page failures on the same wordline, an LP failure points to a shift large enough to cross the middle reference, such as a long power-off or read disturb that beat the refresh threshold.

Pull the full NVMe error log and the health log first. Then correlate the failure with Percentage Used and Media and Data Integrity Errors (Part 8 defines both), plus power-off time pulled from asset records. If sustained write throughput is sliding faster than small changes in spare and media errors would explain, lost multi-plane alignment from retired blocks is a candidate.

Landing pattern matters as much as the NAND type. How firmware uses the page hierarchy shows up as different behavior between drives and between deployments. Drives that park write-hot metadata in SLC-mode blocks and move data off high-wear blocks early can keep a lighter ECC load. A drive with a smaller SLC cache, a pool of blocks programmed one bit per cell as a write buffer that Part 6 covers, and higher WAF may accumulate upper-page errors faster under the same host traffic.

Every block programs wordlines in a vendor-fixed order, and multi-pass parts also fix the page order within each wordline (LP to MP to UP to XP), whatever the host pattern is. Sequential work keeps blocks mostly valid until they get erased, so the ECC load spreads evenly. Random small writes land in open blocks the same way, but they invalidate data across many blocks, so GC copies more pages and WAF climbs. Under sustained random writes, WAF piles more P/E cycles onto every host byte, so the share of the NAND at high upper-page error rates grows faster than under sequential writes. That WAF gap is the real reason random-write endurance and sequential-write endurance are different numbers.

When a replacement drive behaves worse than the failed unit, the answer is often the landing pattern rather than the silicon. Say the original spent years on sequential writes and the replacement sees mixed random traffic at the same rate. That replacement will burn P/E cycles faster through higher WAF and spend its upper-page ECC headroom sooner, on the same NAND.

Wear also shows as timing. A fleet whose tail latency drifts up over months with no workload change may be showing the wear curve as timing, once fill level, firmware, and thermals are ruled out. The p99.9 and p99.99 latencies (Part 9 defines them) tend to show it first, because reads stuck behind erases and retries on the weakest blocks land there before the median moves. ioTraX can log each drive’s average read and write latency to CSV alongside throughput, IOPS, and I/O size, so a slow drift can be lined up against the workload over a long run. It records an average per sample and no percentiles, so the tail itself needs another source.

What the hierarchy hands to 3D stacking

On a real drive, the hierarchy shows up as latency spikes behind an erase, errors that cluster in upper pages, and sustained throughput that scales with die count rather than with the interface number on the spec sheet.

What the hierarchy hands to 3D stacking

From Cell to Die feeds 3 later parts.

Arrows run to the parts that build on this one.

Ten boxes are stacked from top to bottom in series order: Part 1, Standards & Interfaces; Part 2, The Physics of Flash; Part 3, From Cell to Die; Part 4, 3D NAND Stacking; Part 5, The Controller; Part 6, The Flash Translation Layer; Part 7, Garbage Collection & Wear; Part 8, Error Correction & Integrity; Part 9, Performance & Endurance; Part 10, The Future of Flash. Part 3 is highlighted. It feeds Part 4, 3D NAND Stacking; Part 7, Garbage Collection & Wear; Part 8, Error Correction & Integrity. Curved arrows on the right of the stack run from Part 3 to each of those parts.01Standards & Interfaces02The Physics of Flash03From Cell to Die043D NAND Stacking05The Controller06The Flash Translation Layer07Garbage Collection & Wear08Error Correction & Integrity09Performance & Endurance10The Future of FlashThis partBuilds on itOther partFeeds
Figure 3.16 · Part 3 (From Cell to Die) feeds Part 4, Part 7, Part 8. Source: Eyes on Flash series map.

Figure 3.16 marks Parts 4, 7 and 8 as the later parts that build directly on this one. Part 7 builds garbage collection on the page and block asymmetry, and Part 8 builds read retry on the read window.

Part 4 shows what happened when planar NAND ran out of room, and how this same hierarchy works once the industry stacks cells through hundreds of layers.

KEEP GOING / NEXT CHAPTERContinue to Part 4

Sources

Primary is the original paper, standard or datasheet. Secondary is a review, a vendor summary or a news report. Measured is my own test data.

Show all 39 sources, 30 primary