第6章-详细设计 6.4归一化
6.4 归一化
- 1.器件归一化
- 2.单板归一化
- 3.平台归一化
- 4.网络架构归一化
- 我们为什么需要归一化?
- (1)减少不必要的人力投入。
- (2)降低总体的采购成本。
- (3)更高的产品质量。
- 我们如何实施归一化?
- 平台归一化,这个设计场景比较少,架构师在考虑平台归一化的时候,往往是业务驱动。
- 硬件单板归一化,强调的是在架构设计的时候,模块划分比较合理,模块的复用度高,模块间的耦合度低。
- 器件归一化,是硬件工程师经常需要面对的问题,此处做重点描述。
归一化包含器件归一化、单板归一化、平台归一化和网络架构归一化。
1.器件归一化
硬件工程师一般都能够理解,在一个板子上面尽可能地选择成本更低的器件,选择更少种类的器件,便于集中采购,同时也便于加工。但是有些公司的器件归一化工作可能做得没有那么细致。
(1)对于一些大公司,整个公司使用的器件种类非常多,所以如果减小一个器件编码,带来的收益是十万到几百万元人民币,而其他公司可能达不到这么高的收益。所以,对于一些大公司,如果能减少一个编码,宁愿选择成本更高的器件。但是这个也需要按照每年的器件直接成本收益×器件发货数量,与编码成本+加工成本差异进行对比的。不过器件归一化之后,器件的价格又可以跟供应商重新谈,这个收益是迭代的。所以,有时即使是成本占优,也会倾向去器件归一化的结论。例如,逐步去除5%精度的电阻,归一化到1%。
(2)器件归一化,都是需要进行专题分析的。因为也有工程师为了归一化,对电路原理没有充分分析,导致归一化带来“问题引入”。所以,当时我的部门有一个Excel表格《器件归一化分析.xls》,把每个器件原来选型、归一化的选型、更改的原因都做好记录和原因分析。一是让每个做归一化的员工都充分考虑分析,二是问题都有记录,便于评审,三是出了问题,好追根溯源。
2.单板归一化
除了器件归一化外,更高一个层次的归一化就是单板归一化。(“单板”这个概念,我稍微澄清一下,我刚到华为的时候,也觉得这个词很奇怪。因为通信设备都是机框、背板加各个功能模块的电路板,各个功能模块的电路就叫作“单板”,硬件工程师一般也称其为“单板硬件”。)
单板归一化带来的好处,首先是电路的种类少,好处有三个:一是生产成本降低,二是硬件维护成本降低,三是软件开发和维护成本降低。单板归一化要注意以下几点。
(1)单板归一化的先决条件首先是处理器归一化。其实,华为有的产品这点做得不好,X86、MIPS、ARM、PPC全部都用个遍,所以一个硬件平台,需要配备各种软件人员,开发各种操作系统,VxWorks和Linux、BIOS各种配套要齐全。
(2)单板的归一化,要注意产品的衍生。第一个版本的机框上的单板所实现的功能,如果后续的产品可以使用,应该直接可以用,不需要再开发。如果不注意这点,第一个版本的单板到第二版本时,发现不能相互借用,导致反过来再修改第一个版本的电路板来适应新版本。有时问题更糟糕,就是完全不能兼容,只好重新开发。单板的规划显得非常重要。
(3)单板归一化时,虽然电路部分兼容了,但是结构件不兼容,对于市场人员的配置来说,仍然是两种配置,一样是失败的。
3.平台归一化
如果发现不同的硬件平台的架构雷同、功能类似,那么机框也可以归一化。只需要制作不同的电路功能模块,就可以实现不同的功能需求。但是不同的硬件形态都是有它存在的意义的,如果强行归一,市场未必会接受这种事情的发生。例如用一个运营商的平台去归一一个企业应用或家庭应用的产品,就未必能够成功。
4.网络架构归一化
这个说法是我自己想的,早在2008年的时候,华为就在讨论“云管端战略”了,当时不是很理解。当我们一个运营商平台部门跟“服务器”的部门合并的时候,似乎理解了点什么。
当X86处理器足够强大的时候,所有的运算,不管是否性价比最高,都送到云端进行处理,那么所有中间的存储和计算都显得不重要了。那么整个网络的结构,就是终端+管道+云存储和云计算。既然计算和存储设备都是一样的,那作为运算和存储的设备,也就不需要那么多样化了。这时网络存储设备和服务器就显得尤为重要。这也是华为成立IT产品线,做重点战略投资的重要原因。所以现在也就不需要那么多网络节点和网络平台了,只需要超强的处理和存储能力,以及宽广的通道和多样的终端。
我们在器件选型的章节,提到了“归一化”,那么我们就对这个研发行为进行具体的阐述。
为什么我们要具体阐述这个行为呢?因为归一化做不做,往往不影响功能交付结果。收益在短期往往不明显,甚至会导致直接成本的上升。一些小公司往往意识不到做这个动作,一些初级工程师也没有方法论做这套工作。
其实大多数工程师在开发的过程中,器件选型时的出发点就是“归一化”,例如选择公司已经做过的设计作为参考,选择公司已经采购过的器件,选择自己用过的器件。这样的选型出发点,可以达到一些归一化的结果,但是这个结果不能得到保障,并且不能够量化衡量是否满足设计的归一化要求。因为这样完全依赖工程师的经验、水平、意识,结果往往不可控。
我们为什么需要归一化?
(1)减少不必要的人力投入。
以前老工程师会跟我们说,由于“技术不传染”,项目组之间没有什么技术沟通,相互之间的原理图、PCB、文档、案例基本不共享、不交流,大家的一些模块功能是一样的,但是设计结果各式各样,在设计阶段就重复劳动,当出了问题之后,其实大家面对相同的功能模块,在解决不同的问题。例如,音频的放大模块,频率其实基本上在0~30 kHz之间,都是交流耦合。设计时考虑单电源、双电源,高电源电压、低电源电压,R-8、RM-8等不同情况的兼容性,做几种类型的设计,尽量做到归一化,做几种类型的设计。从设计上面来说,所有人都有参考标准。如果碰到新问题,现有的设计模块不能满足时,再引入新器件及新设计。例如,平时大家的放大量都是100倍,按照增益带宽积,已有设计能够满足很多场景的带宽(同时单位时间的电压上升率也满足);出现10000倍放大需求的时候再评估是否需要引入新模块设计。但是实际的设计都是放羊式设计,你喜欢ADI的,我喜欢TI的,他喜欢用MAX的……所以每人手上一套放大电路,每个人的滤波电路都不一样,ADC选型和设计也是各式各样。这样会造成相互之间无法借鉴,特别是出问题的时候,解决问题的过程无法和其他人讨论,解决问题的经验也无法分享给其他人。
(2)降低总体的采购成本。
举个例子,贴片电阻如果按照一盘进行采购,大约25元有5000片。你只买100颗相同的电阻,可能拿到的采购价格是5元。我们可以简单对比单价:按整盘采购单价是0.5分,按照散装采购价格是5分,单价相差10倍。其实通过这样的简单对比,我们很容易理解,在器件采购方面批发价比零售价便宜很多,有非常明显的特性。
除了类似于电容、电阻、电感等分立器件有这个特性外,在半导体器件采购上,这个特性更明显。为什么呢?因为大家知道,半导体的主要原料是二氧化硅,也就是这个世界上取之不尽、用之不竭的物质“沙子”。在一个芯片被成功设计和量产之后,其原料成本是非常有限的,主要的成本都是早期投入,例如研发投入、生产线投入,而这两部分的投入支出都非常庞大。
几乎所有的芯片都是阶梯价,也就是你采购量越大,得到的价格就越便宜。
我曾经就职于华为的硬件平台部门。其实在硬件平台部门,主要的目标就是把公司各个业务承载在相同的硬件上,用最少量的硬件研发人力承载最大的营收,减少重复的研发投入,并且降低总体的采购成本。但是其实我们阶段性的成果造成的局面是一个硬件平台,处理有X86、单核PPC、多核PPC、MIPS和ARM等多种处理器。从器件采购上面来说没有形成优势,从研发上面来说,每套开发的人员需要的技能都不一样,在开发和维护阶段的人力投入都非常巨大。在器件采购上面,每种器件的使用量都比较有限,在商务上没有特别的突破。
(3)更高的产品质量。
如果产品设计形成合力,相同的器件、相同的模块、相同的电路,其发货量比较巨大,暴露出来的问题往往也是概率性的,层次也比较深入。一些低级的问题,由于涉及的人员比较多,投入度也得到保证,所以在设计早期就已经解决得比较充分,并且当设计新电路的时候,可借鉴参考的内容也比较多,可讨论的同事也比较多。如果你选用一款器件,而这款器件被同事选用,已经产品化,并且海量发货,那么你选用这颗芯片的时候,不但这颗芯片被大批量验证过了,而且设计已经解决了已发现的问题,同时由于你的选用,可能增加这颗芯片的发货量,进一步增加商务谈判的砝码。
我们如何实施归一化?
平台归一化,这个设计场景比较少,架构师在考虑平台归一化的时候,往往是业务驱动。
通过现有产品,发现哪些业务可以通过重新规划电路的功能集合,完成新的电路模块的划分,实现新的硬件平台可以涵盖更多的使用场景。例如经典的硬件平台ATCA。ATCA(Advanced Telecom Computing Architecture)标准即先进的电信计算平台,它脱胎于在电信、航天、工业控制、医疗器械、智能交通、军事装备等领域广泛应用的新一代主流工业计算技术——CompactPCI标准。ATCA总线主要针对电信运营级应用,为下一代通信及数据网络应用提供了一个高性价比、模块化、兼容性强并可扩展的硬件构架,同时以模块结构的形式呈现,以符合现代对高速数据传输的需求,为新一代电信运营设备提供了一个“可靠、可用、适用”的解决方案。
正是由于ATCA优越的“高性价比,模块化合理,兼容性强,可扩展性强”的特点,ATCA具备特别强的生命力。与ATCA类似的还有其他种类的硬件平台,往往没有这么长的生命周期,或者没有这么大的市场占有率。
硬件单板归一化,强调的是在架构设计的时候,模块划分比较合理,模块的复用度高,模块间的耦合度低。
ATCA这样的硬件平台归一化的时候,合理地拆分功能模块,才能实现其可扩展性和兼容性的特点。在硬件单板设计、模块设计的时候,就需要考虑规格设计,涵盖场景等因素。
器件归一化,是硬件工程师经常需要面对的问题,此处做重点描述。
(1)处理器选型归一化。需要考虑软件归一化,如果选用相同的处理器,那么即使软件功能模块可能不一样,但是其大多数公用模块都可以借用相同的处理器,操作系统可以保持一致,同时驱动等底层软件都可以借用。给软件开发的便利性带来了很大的优势。特别是多版本的大规模发货的产品,由于产品本身有很多的沉淀需要传承,操作系统的变更可能导致很多功能需要重新开发。
例如,华为在变革操作系统的过程中,部分业务从VxWorks切换到Linux上,非常痛苦。首先大量的业务软件原本运行在Dopra(Dopra是在不同OS之上的一层封装,提供统一接口,提供编程框架),当你选用新的Linux版本的时候,Dopra都需要跟随进行补丁,或者重新确立版本。另外,大量的生产测试是基于VxWorks进行开发的,如果需要移植到Linux上,则需要花费大量的人力、物力。一些运行Linux的电路板就运行双操作系统,在业务状态下,电路启动之后就先进入VxWorks,如果需要进入生产装备等状态,则操作相关按键进入。如果是正常业务,再次引导Linux进入Linux进行业务运行。所以我们在成熟平台上进行处理器选型时,尤其要注意电路的继承性。
(2)内存类型的选型归一化。一个平台的生命周期需要考虑其所有器件的生命周期的健康性,而内存类的器件,往往其生命周期并没有平台的生命周期长。所以在器件选型的时候,需要注意两个生命周期的配合。选型某款DSP的时候,其外围的存储器件只能选用SDRAM,但是同一平台的其他器件已经进入DDR2时代。但由于X86更新换代比较快,很快配套内存选用DDR3。当平台发布没多久,几个大的存储器件厂家宣布SDARAM停产了。由于整个平台只有这么一个设计的位置选用了SDRAM,导致备货都无法开展。根据发货量预测到平台生命周期结束,对SDRAM进行备货至关重要。所以我们在选型的时候,哪怕有各种规格的DDR,也需要考虑归一化,这样哪怕备货的时候,也能形成批量采购获得价格优势,或者加大发货量去影响其生命周期,或者扶持一些小的器件厂商进行替代。
(3)电阻、电容等分立器件。电阻,我们需要在电阻精度上面进行归一化。若干年前,当时生产的电阻,其精度还不那么容易控制,我们需要根据设计,选用精度相对不那么高的电阻以降低成本。但是目前来说,1%精度的电阻与5%精度电阻的价格差异不再那么大,我们可以统一选用1%的,不但增加了统一采购的数量,以此来获得批量采购的价格优势,同时由于减少了器件的种类,降低了生产的时间。在阻值方面也可以做一些归一化的工作,例如在一些对阻值不是那么敏感的设计中,我们可以进行一些器件归一化,例如一些远离有用信号的RC滤波,相对不需要那么准确的精度,我们可将27欧姆归一化到33欧姆,这种对滤波结果影响不大的场景,可以选择归一化。
同时,有些阻值的电阻(20千欧姆),整个单板只用到一个,我们可以选择两个电阻的阻值之和(两个10千欧姆)来实现归一化。但是我们不能为了归一化而归一化,在减少器件种类或减少器件数量的时候,一定需要考虑归一化之后对电路的影响。当年我们开发Corei7嵌入式版本,第一版的工作都是正常的,调测完成之后,进入产品化阶段。但是回板之后,电路无法正常工作。原来是硬件人员没有进行评估,把处理器的外围晶振的对地电容18pF归一化到30pF,导致晶振不起振。