Any idea what the max IO is for MMC compat mode? What kind of speed are we talking here?
Prior to the release of the MMC 4.0 spec in Feb 2004, the theoretical max for an MMC card was 2.6 MB/sec. The newest MMC spec "backports" some of the features in the SD spec to bump that to 52 MB/sec, but that doesn't help current Zaurus models.
In reality, actual throughput on the Zaurus is quite a bit less than the theoretical max. SD benchmarks on the Zaurus that I've seen for various SD cards show read throughput falls between 1300 and 1700 KB/sec. And there's strong anecdotal evidence that performance drops off rapidly when the CPU is busy actually processing the data it's reading.
In writing this reply, I became curious whether I could quantify some of these perceptions. So I built bonnie++ 1.03 (a standard Linux HD benchmark) and tested a 512M PNY SD, 512M SanDisk CF, and 4GB Hitachi microdrive on my SL-C760. Results are as follows (all numbers in KB/sec):
read %CPU write %CPU
PNY 512M SD 1341 66 787 22
Sandisk 512M CF 1819 62 1377 7
Hitachi 4GB CF 1700 34 2008 10
Now, the Sandisk is running pretty close to its max but I've seen the microdrive hit 5000+ KB/sec on a PC, so clearly even the Zaurus CF interface has some inherent throughput limitations. To make things even more interesting, I turned on overclocking and re-ran the two 512MB memory card tests.
read %CPU write %CPU
PNY 512M SD 1320 69 933 4
Sandisk 512M CF 2117 30 1381 6
Notice the small boost in CPU speed makes a big difference in CF read speed but didn't help SD at all. So for the sake of completeness, I repeated the tests one more time with the CPU under a heavy processing load (an endless computation loop) to simulate a task like video processing. When the smoke cleared , I had the following results:
read %CPU write %CPU
PNY 512M SD 750 38 454 12
Sandisk 512M CF 1561 33 1321 6
Hitachi 4GB CF 1569 28 1682 9
Now we're getting the whole picture. Although the crippled SD interface is theoretically a limiting factor, it's actually the PXA255 that is the bottleneck. Not a huge surprise since it's a processor that wasn't really designed to move large amounts of data. SD performance is hurt
badly by heavy CPU loads -- much worse than CF. For applications such as video, CF is clearly going to offer the best performance.