14

BIOS工程师为什么忽然这么短缺?下一代BIOS展望

 3 years ago
source link: https://zhuanlan.zhihu.com/p/339857174
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前天下午,经过3个小时的梳理,终于将项目近三百个开发需求分发给了工程师们。长出了口气,拿起手机,才注意到那天就是圣诞节。心里有些忐忑,不知道一起战斗的兄弟们拿到这份沉甸甸的圣诞大礼包作何感想。联想到昨晚BIOS群里,有三家公司同时贴出来招聘信息,红澄澄的接连三个广告红包,真是亮瞎人眼。什么时候,小众、稳定而神秘的BIOS圈变得这么缺人?每个上下游公司恨不得把员工劈成两半用,同时还想把手伸到别人的口袋里面。据统计,国内BIOS工程师不超过1000名,而这些工程师们此时正承受着项目经理和猎头的双重炮火,痛并快乐着。随着水涨船高的工资,工作时间也不断延长,就连UEFI业界以准时下班著称的Intel BIOS Team也不能幸免。看着自己不断变大的肚腩和朋友圈各种花式晒凌晨的太阳,我不禁发出了灵魂的拷问,发生了什么?这种日子什么是个头?

BIOS工作的本质

时间拨回今年年初,国内最大BIOS厂商百敖软件的董事长谢总,给我出了思考题:BIOS是个什么样的商业?我不假思索的脱口而出:“当然是个科技密集型企业”。谢总一笑,补充说:”BIOS除了是科技密集型企业,还是人力密集型企业。“

是啊,BIOS对熟练工程师需求相当大,与微软一份拷贝可以安装在地球上所有PC机器中不同,BIOS对硬件的改变相当敏感,硬件小变需要小改,大变需要大改。如果说微软是卖软件的拷贝的话,BIOS就是卖移植服务和基础软件授权费。为什么同是软件,差别就这么大呢?

6NzmArf.jpg!mobile 一个简单的计算机组成框图

这是一个简化的计算机系统框图,我们的计算机系统可以粗粗看作由三部分组成,分别是硬件、BIOS固件和操作系统。微软的操作系统可以在所有的计算机上运行,这是因为BIOS抽象了硬件的不同,向上提供了统一的接口,这个接口就是UEFI标准了:

vUfeUr3.jpg!mobile

如此Windows和Linux可以用UEFI标准定义的接口,了解硬件的差异,而不需要为每个硬件改变做出修改,开发出来,卖一套和卖一亿套成本差异很小,扩展性极大,也就是我们说的Scale Out能力很大。而BIOS呢?

iAveMjZ.jpg!mobile

BIOS和硬件的操作界面是硬件寄存器 ,BIOS工程师需要根据各种Spec、原理图和功能需求,填写寄存器,最后抽象后向上汇报符合UEFI标准统一界面。比较坑爹的是, 寄存器没有标准,张家李家不一样,就算是张家也每代都会改,原理图当然要随着改,于是BIOS也要不停的改 ,没完没了,无穷无尽,只为了让操作系统保持优雅,可以说BIOS干了产业链里面最脏最累的活。照理说,BIOS本来就是如此,为什么这两年忽然BIOS界人才奇缺呢?

主要有两个原因:I家的产品线混乱和国产CPU进入战国时代。Intel的制程问题让它已经进退失据,产品线彻底混乱,许多CPU乱哄哄重叠地一个个出来了,让整个产业链上所有厂家人力资源严重短缺;CPU寄存器设计不考虑延续性,每代都变,而且变化很大,让大量代码都需要重复开发。雪上加霜的是,国产CPU被美国政府刺激(感谢特没谱)后,开始加速发展,百花齐放,百家争鸣,进入了繁荣的春秋时代。从此BIOS工程师,不但需要支持Intel,AMD,还要支持其他国内国际的近十家CPU,和他们眼花缭乱的各种主板。你说,BIOS人能不缺吗?

下一代BIOS展望

据我估算,国内BIOS人才需要增长五成才能全部满足需求,这在短时间显然是不现实的。于是有些人开始另寻出路,国外大厂目光投入了LinuxBoot和CoreBoot,认为两者简单高效,启动速度快。实际上我并不认同,他们启动速度快,很大程度上是功能简单导致的,UEFI内核本身带来的延迟不超过5%。两者需要FSP提供芯片初始化,而FSP数千到上万个参数才是系统复杂的难点所在。两者相当于将BIOS的难度前移到芯片厂家去了,对BIOS工程师整体上需求不见得会减少。

如何才能降低BIOS开发难度呢?UEFI标准的诞生加速了Windows和Linux的发展也许可以给我们提供一些思路。现在操作系统和BIOS之间的接口标准化了,但BIOS和硬件接口却远远没有标准化,能不能把寄存器标准化?

因为各种CPU硬件设计的巨大差异,寄存器的标准化似乎不太现实。我们可以换一个思路,我们知道CPU里面有很多IP,除了内核之外,还有数个内存控制器,数个PCIe Root Complex,QPI总线控制器等等。过去它们大都是死IP,也就是没有自己的固件,需要BIOS这个最大的固件来一个个填寄存器,驱动它们运行。最近有自己固件的IP越来越多了,PCU就是一例,它自己有固件,可以按照逻辑来控制CPU的电源管理,它的接口是一组MailBox,通过发消息而不是直接操作寄存器的方式和BIOS协同工作。

如果CPU中每个大IP都有自己的固件,都暴露出一组MailBox作为接口,BIOS只作为居中协调人的角色来统筹启动流程,并汇报UEFI接口,这样整体系统就变成这样:

2IvIjar.jpg!mobile

标准化的mailbox还可以带来很多别的好处:IP之间可以直接通信组成大IP;IP可以在正好进SOC之前进行充分测试,而不需要等待BIOS完成;模块化IP更好移植等等。

这个MailBox标准如果出现,它将极大的简化BIOS的软件架构,实际上,它才将是真正的固件标准,而不仅仅是BIOS固件标准了。

结语

新的BIOS标准在5年之内不会落地,BIOS工程师的短缺还需要通过大量培养新鲜血液来解决或者说是缓解。但不想当将军的士兵不是好士兵,不考虑5年后的工程师也不是好工程师。春雷阵阵,谁敢说春雨不会即将来临呢?

其他BIOS文章:

老狼:为什么说BIOS是“中国芯”产业链的重要组成部分?国内BIOS业态和未来展望 zhuanlan.zhihu.com qqyiM3B.jpg!mobile 老狼:风雨40载:BIOS的过去和国产BIOS的诞生 zhuanlan.zhihu.com NRbaArm.jpg!mobile 老狼:UEFI 引导与 传统BIOS 引导在原理上有什么区别?芯片公司在其中扮演什么角色? zhuanlan.zhihu.com eiEzAvy.jpg!mobile

欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK