Openmoko GTA02 NAND performance improvements
On Sunday night, after returning from a weekend trip to Hamburg, I sat down
and looked at the NAND and S3C2442B data sheet to figure out the actual timing
performance. Interestingly, the NAND timings were much more verbose and
detailed (and had different names) than the timings described in the NAND
controller section of the S3C24xx manual - and both are from Samsung ;)
Anyway, it seems like the current timing settings for the various stages
(reading u-boot by the stepping stone mechanism, reading the kernel by u-boot
as well as actual mtd-based access inside the Linux kernels) were extremely
suboptimal. They're basically standard timings designed to work with most
NAND flashes out there, ignoring the fact that GTA02 uses one specific flash
with very good (fast) timings, at least according to the data sheet. There
should also be no PCB / routing related issues such as capacitive overload
preventing higher speeds, since the NAND flash die is stacked onto the CPU
die in one package, and the NAND controller signals are not routed on the
PCB anywhere.
Some initial experiments based on the calculations show that the
performance can be easily improved by 41% over the stock GTA02 NAND
performance. However, the actual speed (6.59MBytes/sec) is still much lower
than the theoretical maximum read performance of 15.64MBytes/sec. It seems
there is more room for improvement inside the MTD layer of the Linux kernel.
It's again quite amazing how much room there is for improvement in GTA02
performance, both power consumption wise (see my recent post about framebuffer
blanking), as well as actual data throughput. Those are really low-hanging
fruits, and it's very surprising that nobody working for Openmoko or in the
Openmoko community has been able to spend some time to look into those...
About the new format / structure of FOSS.in
There has been quite some discussion on various places on the net about
the recently-announced change of the FOSS.in conference format. Instead
of lots of talks/presentations, there is an emphasis on workshops and
similar more interactive and collaborative types of events.
I have been speaking to a number of developers who have been to FOSS.in
before and who have been putting in proposals for FOSS.in/2008, too.
They all think it is a very courageous step: going from a successful,
working 'traditional conference' scheme with presentations, sufficient
sponsors to cover travel expenses of foreign speakers, etc. to a very
different, much more developer-community oriented event.
I also think it is a courageous experiment. I have not yet heard of any event
similar to this before. Sure, there are project days and developer meetings or
miniconfs or whatever you might call them. But not to the extent as, at least
to my perception, FOSS.in is planning right now.
In any case, it depends on what your target is. 'typical' Linux conferences
are basically focussing on either one (or multiple) of the following:
- Spread the word about Linux/FOSS, to generate more adoption
- Provide updates on development progress to various people in the community as well both individual and professional users
However, if you emphasize on the actual FOSS development, then I think
it is quite legitimate to go for a event format that FOSS.in is heading to
right now.
It is exactly FOSS.in who can try such a change, since it is a true community
event without any commercial interest and without affiliation to particular
companies.
And after all, who wants to see the same kind of event happening each and
every year, with the same kind of people talking? Wouldn't that be boring
after some time? Especially if there are a number of other events doing more
or less the same?
In any case, personally I'm planning to do a FOSS.in WorkOut on a USRP+gnuradio
based GSM scanner project. India is the perfect place on earth to get this
done, since the government mandates A5/0 (no encryption) and thus all the
packets can be captured and each and every bit implemented as wireshark plugin.