zoukankan      html  css  js  c++  java
  • AMI用模块化打败AWARD,结构化的设计影响传统软件领域

        从华硕走出来已经2个多月了,今天突然回忆起在华硕的一些事情。我虽然不喜欢华硕的文化氛围,但是还是为在华硕做过bios感到一点点自豪。
        初入华硕的时候,在华硕看到的bios是一个很不同的面孔——AMI。平时电脑用的多,和bios打交道是很平常的事,但是国内的bios,还是以AWARD居多,而我,更是不知道有AMI这个东西。当我知道AMI是华硕的channel(华硕的叫法,贴自己牌子的产品)的主要bios的时候,就更惊讶不已了。因为华硕的主板产量世界第一,每年总出货量比排在他后面的三大厂商的总合还要多,这些主板的bios竟然用的是陌生的AMI?几个月后,等我能够融入到华硕bios项目开发的时候,我也渐渐认识到AMI的厉害了。
        传统的软件开发领域,包括像bios这样大型汇编语言系统,和一些底层的C软件项目,会大量的用到编译预处理,也就是宏,然后用ifdef等等方法管理编译过程。举个C语言的例子,写一个config文件,定义一些编译预处理:
            #define MOTOROLA_CPU 1
            #define INTEL_CPU 0
    在程序中include进来这个config文件,用#ifdefined(xxx)来控制使用不同cpu时应该编译的不同代码。一般来说这样是很好用的,但是在大型程序里,这种编译预处理使用的非常多,有时候一个config文件里要放几百个这样编译预处理来指导编译工作,这种情况下,程序员就要详细知道每个编译预处理的情况,实际上这是不能保证的。所以经常会出现,代码反复改,结果都一样的情况,往往是因为一个参数定义成了0导致编译器错过了这段代码。
        当然,AMI的bios也采用这种方法,但是主要的模块控制已经不是靠编译与出来完成的了。AMI开发了一整套自己的工具实现了完美的模块控制。他根据功能,把所有代码分成各自独立的模块,比如这个模块用来初始化intel 915的芯片,那个模块用来控制super io,这样,要组成一块新主板的bios,我只要知道主板用那些芯片,需要实现什么功能,就可以用工具选择相应的模块,组合起来就可以了。举例来说,华硕新出品的P5GL-MX主板采用intel915+ich6芯片组,cpu用775接口,用ICS954123时钟控制器,用华邦super io,要有超频功能,那么我只要选择通用基本模块,intel915北桥模块,ich6南桥模块,ICS954123超频模块,华邦super io模块,和支持775接口的intel cpu微程序集就可以组成大概的bios,然后稍微修改一些地方使和自己的主板兼容就可以了。而如果使用AWARD项目(AWARD项目代码对大陆不公开,我没见过),就好好的去研究每一个编译预处理的参数吧。
        模块化最大好处不在于组装代码,在于代码的维护。很显然的,采用编译预处理的方式,很多为不同功能服务的代码放在同一个文件中,用编译参数控制,所以项目的维护,不得不以文件的方式来分配。假设有一个文件用来控制cpu的初始化,里面要有所有可能用到的cpu,包括AMD K6,AMD K7,AMD K8,INTEL P4,INTEL SIMITH等等的代码,那么这个文件的维护人员就是一个熟练掌握所有这些cpu的初始化流程的超级天才。如果分开控制,由于所有代码在同一个文件,又会出现同步的问题,这些东西都是非常令人讨厌的!但是AMI的模块化管理很好的解决了这个问题,因为所有的功能被分成了不同的模块,每个模块的负责人只要是一个领域的专家就可以了,而在这个小领域成为专家并不是什么难事。在华硕的时候整天可以收到这种邮件:xxxmodule check in,呵呵好了,换服务器上的新模块来更新你负责的项目吧,一定是有人又解决掉什么大麻烦了。
        还来谈谈华硕。华硕的抠门是出了名的,但是在bios上,华硕一直使用比AWARD贵的多的AMI bios,因为华硕的产品更新速度奇快,经常是新产品一个接一个的出来,而且华硕对产品质量要求非常严格,而模块化的AMI bios快速开发和易于维护的特性正好对上华硕的胃口。
        据说,国外的很多电脑厂商进几年都已经改用了AMI,国内一些厂商好像也有这个趋势。全新的AMI bios改变了AWARD一家独大的格局,从这也可以看出来,结构化的设计不但在新的技术上光彩夺目,也悄悄的改变了传统领域。
        还听说intel要用EFI取代bios了,希望华硕和AMI能顶住这次挑战。

  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/freeman/p/197381.html
Copyright © 2011-2022 走看看