Analyzing a Unrecoverable Data Recovery Case
8GB CompactFlash Card
Controller Specs
4 Channels, 2-plane and interleave support for performance. Block level addressing
NAND
4 x Samsung K9LBG08U0D (16Gbits / 1CE Bank)
2Bit-MLC, 4 Planes (inconclusive)
4K Pages/512K Block Size[/one_third] [one_third_last] Interleaves
4-way byte Interleave.
Two plane operation (neighboring block).
Two plane operation (top/bottom half).
Final block size: 8MBytes.
[/one_third_last] [clear]
Controller
According to the product brief the controller has four channels with support for up to eight CE pins per channel. I found what looks like a block map overlay used for bad block mapping on each channel. It appears each of the four channels can operate independently however the controller manufacture chose to do a parallel 4-way byte interleave between all channels.
Design wise, I can see this being a simple implementation that spreads wear evenly across all four NAND chips however after factoring in interleaves the page size is 64Kbytes which as the product brief explains is great for DSLR’s that write long sequential blocks of data but for small random writes I suspect there would be a huge performance loss.
Interleaves
4 Way Byte Interleave
A parallel 4-way byte interleave on four channels acts similar to a RAID0 stripe in that you get quadruple the throughput. For writing large amounts of sequential data you’ll see a performance gain however if you’re not writing full pages worth of data you’re effectively loosing performance by hogging the bus for a partial 16KByte write.
[custom_frame_left shadow=”on”]
[clear]
Two Plane Operation (neighboring block)
In liegeman’s terms within a NAND chip is a built in mechanism for a RAID0 stripe. Modern NAND chips typically have two storage planes that share a single CE pin. While faster it’s not twice as fast as claimed by some NAND manufactures, random 4K IOPS also suffer.
[custom_frame_center shadow=”on”]
[/custom_frame_center][clear]
[custom_frame_right shadow=”on”]
[/custom_frame_right]Most two plane operations interleave in parallel against the neighboring storage plane, some early implementations interleave sequentially against the top and bottom half’s of the chip. If read sequentially without two plane operations each plane presents itself as either an even or odd block.[clear]
Two Plane Operation (top/bottom half)
[custom_frame_right shadow=”on”]
[clear]
Error Correcting Code (ECC)
[custom_frame_left shadow=”on”]
Now what’s strange is that the bottom half of the NAND chip is in perfect condition, combined this with the controller interleaving and concatenating data from the bottom half of the chip leads me to believe this Samsung NAND chip has four planes.
[clear]Diagnoses
Catastrophic failure in plane #1 on NAND Chip #1