I've completed another round of improvements and timings on my epia-cn machine. From power-on to grub serial menu is now 750ms. For comparison, the same equipment with the factory bios takes 9.9s. (To be fair though, I needed to remove the 2.5s boot menu delay in SeaBIOS to get to 750ms.)
More background info is available in the thread at:
http://www.coreboot.org/pipermail/coreboot/2009-December/054561.html
A breakdown of the 750ms reveals:
* cpu appears to start running around 350ms
* smbus power stabilizes around 400ms
* 20ms to program ddr ram controller
* 15ms to uncompress coreboot_ram (note flash access wasn't a factor - see below)
* 10ms to run coreboot_ram
* 35ms to read and uncompress seabios from flash
* 40ms to read and uncompress via vga rom from flash
* 200ms to run via vga option rom and turn on vga
* 10ms for remaining hardware init (the hardware init runs in parallel with the 240ms for vga option rom - the 10ms is what remains after vga finishes).
* 10ms time spent in grub (and in grub reads from disk)
Changes since last time:
* I'm using a SATA SSD (OCZ Vertex 30G) to store grub (and the OS). This device doesn't seem to require a "spin up" delay.
* I've enhanced SeaBIOS to support ATA bus mastering DMA. I'll send a patch out separately with the details. This dramatically increases the speed of disk reads.
* I've commented out the calls to wbinvd() in coreboot's mtrr cache_disable logic - those calls are expensive and the code seems to work without it.
* While waiting for the smbus to power stabilize, I added reads to the flash to seed the cache with the bootblock and coreboot_ram. This eliminates the costly flash read time for that code.
Also interesting is adding a gPXE rom (rtl8169) only added 50ms to the total SeaBIOS boot time (I set gPXE's BANNER_TIMEOUT to 0).
-Kevin