最近有个project需要降低Post Time,我花了些时间去调整code,最终达成目标。最近发现可能是年纪大了,记性狂插:(,遂决定记录一下,以备后用。总结了一下,主要做了以下的工作:
1.调整SEC阶段CAR,code stack & data stack size,提升SEC阶段及PEI阶段的性能,降低时间。
2.如果CPU支持P-State,在进PEI之前先将CPU调整的最大的perfermence也即P0,要是CPU没锁倍频那你爽了,尽量调吧。
3.Remove 没有用到的peim & dxe,降低code size,从而减少spi core dispatcher以及dxe core dispatcher的时间,另外BIOS中为了节省空间,通常会对一些moudle进行压缩,跑code的时候再解出来,所以size降低压缩和解压的时间也可以节省出来了。
4.减少spi device support的部分,在variable读写的BIOS code通常会扫一遍所有支持的device,check rom device id 然后决定使用的device,所以将support的spi device 减少一些也会降低一些时间;还有一个比较重要的特性是有些spi devie support normal read和fast read,所以如果device支持fast read,就将读rom的cmd改成fast read。
5.有些BIOS为了支持recovery等function文件系统的driver在bds阶段会读取光驱、HDD里面的东西,这时会有很多的延时操作,如果不需要这部分就要拿掉这部分code。
6.检查chipset / kernel switch,如果尽量关掉没有用到的feature,不用support的CPU也关掉相应的switch,这部分减少的时间也是相当可观。
7.option rom,pxeboot这个部分也是大户,跑option rom时间也不是BIOS能够控制的,试验下来就发现基本上每多跑一个rom都会增加1~2s的时间。所以如果客户能够接受,能先不跑的就不要跑了。
先这么多了。:)
Peter
2010-04-30