AnsweredAssumed Answered

iMX35 NAND flash performance (Linux)

Question asked by DavidFenger on Nov 6, 2012
Latest reply on Mar 18, 2013 by grantw
Branched to a new discussion

We have a custom CPU board we have been using for some time.  It has on-board NAND flash that is used for the file system via UBIFS.  I did some benchmark tests on the file system recently, and got about 3Mbytes/s read rates on medium to large files (140k to 25M).  Looking at the flash memory spec it seems we should be getting closer to 20Mbytes/s.

 

I've tried changing NFC_DIV to boost the flash clock speed, and that got me about a 33% improvement.  The SYM bit is set correctly, as are the bits to set page size (2k).

 

I've looked at the rate at which mxc_nd interrupts are generated, and on large file reads, they average one interrupt per 240 bytes transferred, which suggests that some where between ubifs, ubi, and mth the file read requests are being broken into smaller chunks.  ubinfo returns a minimum i/o size of 2048, which is correct.  Does anyone know where these smaller reads might be getting generated?  I'm quite willing to go dig about in the kernel source to tweak things if need be.

 

CPU: MCIMX353DJQ5C

NAND Flash: Hynix HY27UF084G2B-TPCB  (25ns read time, 25us to load a 2k page to the buffer)

We also have a similar CPU board with a different flash chip: Samsung K9GAG08U0D-PCB0T00

Outcomes