[OLPC-devel] NAND Flash Performance: IDE Interface Hack

Thomas Gleixner tglx at linutronix.de
Sun Jun 18 07:27:05 EDT 2006


Mark,

On Sat, 2006-06-17 at 13:14 -0700, Mark J. Foster wrote:
> I'm moving forward on a new ASIC that I call CAFE.  I haven't been 
> posting too much about it yet, because if we go this route, it would 
> probably also contain a couple of additional peripheral interfaces that 
> we're not ready to commit to for inclusion in the machine just yet.  If 
> these interfaces are included, though, combining the NAND controller 
> with the new interfaces yields excellent pricing.

Let me know, when you need input on the NAND features.

> The progress in this regard is actually quite promising, with a vendor 
> that wants to make it happen, but we're obviously facing a heinously 
> tight schedule.  Within a few days, we should know if this is a real 
> solution or not.  Performance-wise, this solution would connect via the 
> PCI bus, so it should deliver near-optimal performance for a 33 MHz PCI 
> bus (66 MHz isn't worth the power tradeoff).

I think thats ok, as long as we can do DMA. An interesting question is,
whether we can achive an overlapping operation of DMA and readout. That
would give us the optimal read speed. The flow would be:

CPU			Controller
Read command		
			Setup readout
Wait for ready/busy	Wait for ready/busy
Start DMA		Start readout
			When readout treshold reached, start DMA
Wait for DMA

We need one clock cycle for 1 byte to read out, when we can control
the /RE pulse width magically in the controller, so the treshold is 3/4
of the data to read (2048 + 64 bytes) * 3/4 =~ 1660 bytes

We need to readout the ECC code and status which adds another 36 bytes,
so with a total of 2148 bytes we end up with 540 cylces DMA in the best
case.

The total read time for one page would then accumulate to:

20µs command ready time
50us read ahaead
17us DMA
-----------------------
87us / page

So the theoretical maximum raw transfer speed would be something around
23MiB/s. Adding the memcpy, which brings the stuff into the cache and
the ECC checks we might end up with abot 16MiB/sec real - given that my
math is halfways correct :)

	tglx





More information about the Devel mailing list