华为硬件开发揭秘:归一化技术详解

发表时间: 2020-03-16 20:47

我们在《华为是怎样研发的(4)—器件选型》,提到了“归一化”,但是没有展开讲述,那么我们就对这个研发行为进行具体的阐述。

为什么我们要具体阐述这个行为呢?因为归一化做不做,往往不影响功能交付结果。收益在短期往往不直接,甚至会导致直接成本的上升。一些小公司往往意识不到做这个动作,一些初级工程师也没有方法论做这套工作。但是归一化的收益其实是明显的,不做好,长期的不利影响会有很多。

其实大多数工程师,在开发的过程中,器件选型时的出发点就是“归一化”,例如选择公司已经做过的设计作为参考,选择公司已经采购过的器件,选择自己用过的器件。这样的选型出发点,是可以达到一些归一化的结果,但是这个结果不能得到保障,并且不能够量化衡量是否满足设计的归一化要求。因为完全依赖于工程师的经验、水平、意识。那么这样的要求往往不可控。

归一化工作按照层次分类:平台归一化,硬件归一化,器件归一化;

平台归一化是:一套硬件平台,通过不同的硬件模块的组合,承载不同的软件加载,可以支持不同的业务,既可以支持这个业务,也可以支持那个业务。例如我们以前开发的硬件平台,业务类型支持:彩信、彩铃、短信,呼叫中心、统一通信等场景。

硬件归一化其实是做出来的硬件模块,或者说硬件电路板,相同的功能模块可以支持多种功能场景,例如我们把语音编解码模块单独独立出来,作为各种编解码的处理,可以根据客户需求,处理不同的编解码的转换,同时系统也支持用户规格,选择电路模块的数量,支持不同客户规格的需求。

我们为什么需要归一化?

第一、 减少不必要的人力投入。以前在研究所工作的时候,由于“技术不传染”,项目组之间没有什么技术沟通,相互之间的原理图、PCB、文档、案例、基本不共享,不交流,但是大家的一些模块,功能是一样的,但是设计结果各式各样,在设计阶段就重复劳动,当出了问题之后,其实大家面对相同的功能模块,在解决不同的问题。例如,音频的放大模块,频率其实基本上是0kHz~30kHz的有效信号,都是交流耦合,按照单电源、双电源;高电源电压,低电源电压;R-8,RM-8等不同的情况,有限的分类,我们进行一致性的设计;找到一些可以进行多厂家器件兼容,设计考虑几种容限的情况。做几种类型的设计。从设计上面来说,所有人都有参考标准。如果碰到新问题,现有的设计模块不能满足时,再引入新器件及新设计。例如平时大家的放大量都是100,按照增益带宽积,已有设计能够满足很多场景的带宽(同时单位时间的电压上升率也满足);出现10000倍放大需求的时候再评估是否需要引入新模块设计。

但是实际的设计,都是放羊式设计,你喜欢ADI的,我喜欢TI的,他喜欢用MAX的,我喜欢用FET搭。所有每人手上一套放大电路,每个人的滤波电路都不一样,ADC选型和设计也是各式各样。如果有人出了问题,没有借鉴,也没有讨论,因为一开始就没有讨论。

第二、 降低总体的采购成本。举个例子,大家都知道,贴片电阻,如果按照一盘进行采购,大约25元左右,有5000片。按时你只买100颗相同的电阻,可能拿到的采购价格是5元。

我们可以简单对比单价:按整盘采购单价是0.5分,按照散装采购价格是5分;单价相差10倍;其实通过这样的简单对比,我们很容易理解,批发价比零售价便宜很多在器件采购这个方面,有非常明显的特性。

除了类似于电容、电阻、电感等分立器件,有这个特性;在半导体器件采购,这个特性更明显。为什么呢?因为大家知道,半导体的主要原料是二氧化硅,也就是这个世界上取之不尽用之不竭的物质“沙子”;在一个芯片被成功设计和量产之后,其原料成本是非常有限的,主要的成本都是早期投入,例如研发投入,生产线投入,而这两部分的投入支出都非常的庞大。

几乎所有的芯片都是阶梯价,也就是你采购量越大,得到的价格就越便宜。

曾经待在华为的硬件平台部门。其实在硬件平台部门,主要的目标就是把公司各个业务承载在相同的硬件上,用最少量的硬件研发人力承载最大的营收。减少重复的研发投入,并且降低总体的采购成本。但是其实我们阶段性的成果,造成的局面是一个硬件平台,处理有7、8种,X86多种、单核PPC、多核PPC、MIPS、ARM……从器件采购上面来说没有形成优势,从研发上面来说,每套开发的人员需要的技能都不一样,在开发和维护阶段的人力投入都非常巨大。在器件采购上面,每种器件的使用量都比较有限,在商务上没有特别的突破。

第三、 更高的产品质量。如果产品设计形成合力,相同的器件、相同的模块、相同的电路,其的发货量比较巨大,暴露出来的问题往往也是概率性的,层次也比较深入。一些低级的问题,由于涉及的人员比较多,投入度也得到保证,所以在设计早期就已经解决的比较充分,并且当设计新电路的时候,可借鉴参考的内容也比较多,可讨论的同事也比较多。如果你选用一款器件,而这款器件被同事选用,已经产品化,并且海量发货。那么你选用这颗芯片的时候,不但这颗芯片被大批量验证过了,而且设计已经解决了已经发现的问题,同时由于你的选用,可能增加这颗芯片的发货量,进一步增加商务谈判的砝码。

我们如何实施归一化?

平台归一化,这个设计场景比较少,架构师在考虑平台归一化的时候,往往是业务驱动。通过现有产品发现,哪些业务可以通过重新规划电路的功能集合,完成新的电路模块的划分,实现新的硬件平台可以涵盖更多的使用场景。例如经典的硬件平台ATCA。

ATCA(Advanced TelecomComputing Architecture)标准即先进的电信计算平台,它脱胎于在电信、航天、工业控制、医疗器械、智能交通、军事装备等领域应用广泛的新一代主流工业计算技术——CompactPCI标准。是为下一代融合通信及数据网络应用提供的一个高性价比的,基于模块化结构的、兼容的、并可扩展的硬件构架。

ATCA总线主要针对电信运营级应用,为下一代通信及数据网络应用提供了一个高性价比、模块化、兼容性强、并可扩展的硬件构架,同时以模块结构的形式呈现,以符合现代对高速数据传输的需求,为新一代电信运营设备提供了一个“可靠、可用、适用”的解决方案。

正是由于ATCA优越的“高性价比,模块化合理,兼容性强,可扩展性强”的特点,所以具备特别强的生命力。与ATCA的类似的还有其他种类的硬件平台,往往没有这么长的生命周期,或者没有这么大的市场占有率。

硬件单板归一化,强调的是在架构设计的时候,模块划分比较合理,模块的复用度高,模块间的耦合度低。ATCA这样的硬件平台归一化的时候,合理的拆分功能模块,才能实现其可扩展性和兼容性的特点。在硬件单板设计的时候,模块设计的时候,就需要考虑规格设计,涵盖场景等等因素。

器件归一化,是硬件工程师,经常需要面对的问题,此处做重点描述。

第一、 处理器选型归一化。

需要考虑软件归一化。如果选用相同的处理器,那么软件即使功能模块可能不一样,但是其大多数公用模块都可以借用,相同的处理器,操作系统可以保持一致,同时驱动等底层软件都可以借用。给软件开发的便利性带来了很大的优势。特别是多版本的大规模发货的产品,由于产品本身有很多的沉淀需要传承。当操作系统的变更,会导致很多功能可能需要重新开发。

例如,华为在变革操作系统的过程,部分业务从VxWorks切换到Linux的过程,非常痛苦,首先大量的业务软件是运行在Dopra(Dopra是在不同OS之上的一层封装,提供统一接口,提供编程框架。)当你选用新的Linux版本的时候,Dopra都需要跟随进行补丁,或者重新确立版本。另外,大量的生产测试,是基于VxWorks上进行开发的,如果需要移植到Linux,则需要花费大量的人力物力。一些运行Linux的电路板就运行双操作系统,在业务状态下,电路启动之后就先进入VxWorks,如果需要进入生产装备等状态,则相关按键进入。如果是正常业务,再次引导Linux进入Linux进行业务运行。

所以我们成熟平台上,进行处理器选型,尤其要注意电路的继承性。

第二、 内存类型的选型归一化

一个平台的生命周期需要考虑其所有器件的生命周期的健康性。而内存类的器件,往往生命周期并没有平台的生命周期长。所以在器件选型的时候,需要注意两个生命周期的配合。选型某款DSP的时候,其外围的存储器件只能选用SDRAM,但是同一平台的其他器件已经进入DDR2时代;但是由于X86更新换代比较快,很快配套内存选用DDR3。当平台发布没多久,几个大的存储器件厂家宣布SDARAM停产了。但是由于整个平台只有这么一个设计的位置选用了SDRAM,导致备货都无法开展。根据发货量预测到平台生命周期结束,对SDRAM进行备货。所以我们在选型的时候,哪怕有各种规格的DDR,但是也需要考虑归一化,这样哪怕备货的时候,也能形成批量采购获得价格优势,或者发货量大去影响其生命周期,或者扶持一些小的器件厂商进行替代。

第三、 电阻、电容等分立器件。

电阻,我们需要在电阻精度上面进行归一化,若干年前,当生产电阻时,其精度还不那么容易控制的时候,我们需要根据设计,选用精度相对不那么高的电阻以降低成本。但是目前来说1%精度的电阻,与5%精度电阻的价格差异不再那么大的时候。我们可以统一选用1%,不但增加了统一采购的数量,以此来获得批量采购的价格优势,同时由于减少了器件的种类,降低了生产的时间。在阻值方面也可以做一些归一化的工作,例如一些对阻值不是那么敏感的设计中,我们可以进行一些器件归一化的,例如一些远离有用信号的RC滤波,相对不需要那么准确的精度,我们27欧姆归一化到33欧姆,这种对滤波结果影响不大的场景,可以选择归一化。同时,有些电阻阻值在整板,只有一个器件(20k),我们可以选择两个电阻的阻值之和(两个10k)来实现,来实现归一化。

但是我们不能为了归一化而归一化,在减少器件种类或者减少器件数量的时候,一定需要考虑归一化之后对电路的影响。当年我们开发Corei7嵌入式版本开发,第一版的时候工作都正常的,调测完成之后,进入产品化阶段。但是回板之后,电路无法正常工作。原来是硬件人员没有进行评估,把处理器的外围晶振的对地电容18pF归一化到30pF,导致的晶振不起振。