5.3 硬件架构设计
- 1.哪些类型的产品需要架构设计?
- 2.硬件架构师到底做什么?
- (1)理解需求和业务模型的情况。
- (2)背板设计,既需要考虑业务数据交换能力,也需要考虑子模块的管理监控能力。
- (3)模块划分,从产品演进和归一化定义做多少种电路板。
- (4)工程问题,所有架构的实现都需要工程能力做支撑。
- (5)数据流的梳理和规格需求分析。
- 3.什么是有竞争力的硬件架构?
什么是架构?架构是“表述了契合一个环境的系统基本元素及元素之间关系构成的结构集,在环境中体现出基本属性,以及设计和演进的原则”。确定了硬件架构,就决定了硬件各个组件和各个模块之间的相互关系、硬件系统的整体规格、硬件的设计原则、硬件系统的可演进性。硬件架构是对硬件设计的约束。
架构是硬件产品的“源头”,特别是对于高复杂度的产品,架构就特别重要。比如通信类设备,高复杂度的框式产品,硬件系统中组件和模块很多,客户采购一台设备可能10年都不会更换,只通过增加接口板等方式进行扩容或适配新接口。因此,我们在硬件架构设计的时候要重点考虑到框式产品类管理用的主控板、转发业务用的接口板、框式设备背板、电源模块、系统监控板等不同模块之间的耦合关系;产品的生命周期长,你需要考虑系统容量、背板接口、电源和散热等基础能力能否符合未来8~10年的演进需求,确保硬件架构的持续生命力。
1.哪些类型的产品需要架构设计?
架构就是系统的顶层结构,架构的本质就是对系统进行有序化的重构以符合业务的发展,并可以快速扩展。因为架构设计往往是一些模块划分、拓扑设计等抽象化的动作。硬件工程师的认知会进入两个极端,一是认为架构设计很玄幻,很高级,高不可攀;二是觉得设计架构就是务虚,架构师都不实在,没有存在的意义。其实做一个好的硬件架构师是不容易的,既要具备宏观的能力,又要有微观的能力,要深刻理解具体技术的关键点,并具备具体项目落地实施能力。
相对独立的简单系统、简单产品,不需要“架构设计”,也不需要“架构设计师”这个单独的岗位。比如一个电动玩具,单芯片解决方案,器件选型确定了,确实没有什么架构问题了;有些产品虽然电路很复杂,可产品用一块电路板就能解决问题,往往也不存在架构设计。但是有些硬件项目的复杂度非常高,业务模型复杂、数据流也很复杂,例如电信类设备,就需要比较复杂的架构设计。这类硬件设备就需要有一些人,不仅懂硬件具体的实现,还需要有行业背景,懂业务模型,懂客户需求,懂软件,懂器件的性能规格,懂行业发展趋势,然后才能抽象出具体的项目和规格,设计出好的硬件架构,设计出有竞争力的产品。
因此,复杂的业务模型往往需要专职的架构设计师,而“复杂”的特点如下。
● 产品需求相对复杂;
● 非功能性需求在整个系统中占据重要位置;
● 系统生命周期长,在生命周期里有扩展性需求;
● 系统基于组件或集成的需要;
● 需要重新构造业务流程。
2.硬件架构师到底做什么?
架构是经过系统性的思考,权衡利弊之后在现有资源约束下做最合理决策形成的。最终明确的系统架构包括子系统、模块、组件,以及它们之间的协作关系和约束规范。架构师想要定义好架构,并组织团队中每个人在思想层面上对架构认识达成一致,涉及以下四个方面。
(1)系统性思考后的决策依据,包括技术选型、设计原则等。
(2)明确的系统骨架,进行子系统之间的拆分。
(3)明确系统协作关系,拆分子系统之间的耦合关系。
(4)澄清约束规范和指导原则。
架构师要具备的能力包括理解业务、全局把控、技术决策、解决核心技术问题等。硬件架构师要特别谨慎,因为软件可以快速迭代,可以先小步快跑后再重构,重构之后快速上线替换原来的老产品。其实很多互联网公司经常这么干,但是硬件就没有重构的机会,硬件一旦重构代价太大,重新开发的周期太长,没法通过迭代的方式开发,新的硬件产品也很难替换已经在使用的老产品。
架构的发展和需求是基于业务的驱动,所以硬件架构设计,也是被业务推动不断发展的。框式设备、盒式设备、终端设备,这三类设备对于架构的诉求是不一样的。比如电信类的复杂框式设备对“架构”的依赖就很大,之所以做成框式设备,就是因为需要有一个复杂的架构适应复杂的业务模型,来解决业务演进的竞争力的问题。框式设备都需要有一个资深的硬件架构师,他主要的工作就是“设计并维护架构”。很多关于硬件架构设计的文章讲得都很笼统、抽象。
我总结硬件架构师(针对框式设备)需要做的具体事情如下:
(1)理解需求和业务模型的情况。
这里首先强调的是需要充分理解业务模型,知道硬件设备承载的软件功能和对应的软件功能所需要的硬件能力。硬件架构设计脱离不了业务需求、脱离不了软件功能。
(2)背板设计,既需要考虑业务数据交换能力,也需要考虑子模块的管理监控能力。
背板设计就是整个框式设备架构设计的核心。有些朋友会质疑,很多机框都是标准的,遵循标准即可,为什么还需要自己考虑定义背板?原因有三:
第一,有些标准的背板定义并没有那么详细,需要自行定义一些接口。
第二,有些标准并不合理,需要各个厂家共同努力去演进。
第三,做硬件的需要有舍我其谁的霸气,需要参与到标准、专利的相关活动中去。
我曾经参与过一个框式设备的背板设计,当时交换协议处于一个群雄逐鹿的状态,通过专项分析,以太网交换、PCIe交换、SRIO交换都已经相对成熟。因此选择合适的SRIO、PCIe和以太网交换芯片作为数据交换的中心节点,需要根据业务模型选择最合适的背板速率、可靠性备份方案、热插拔等。
同时框式设备除了关注业务数据外,还需要分析管理数据的交互,一般这是独立于业务数据通道的低速通道。如何对每个功能子模块进行监控管理、数据同步、启动和关闭等功能,都需要在架构设计的时候进行充分考虑。
(3)模块划分,从产品演进和归一化定义做多少种电路板。
模块的划分和“规格定义”的不同点在于,规格定义是从客户需求视角看单板开发的规格要求,而架构定义是从内部演进和归一化的视角定义电路板的种类,原则就是尽量收编到几个单板/模块上,通过产品组合满足客户需求。
(4)工程问题,所有架构的实现都需要工程能力做支撑。
硬件架构师不能只管设计,不关心实现。所设计出来的硬件架构一定是具备技术可实现性的。框式产品如图5.9所示。
架构师要和结构工程师一起分析框式设备电路板是选择横插还是竖插。
架构师要和热工程师分析风道设计和风险的选型,不仅需要考虑正常工作时的散热需求,还需要考虑风扇失效、堵转等场景下的散热可行性方案。
架构师还要和电源工程师一起考虑供电问题,包括框式系统电源的供电框架、电源失效对策、供电安全性对策、电源板带电更换等问题。
(5)数据流的梳理和规格需求分析。
架构师应该绘制出所有主流业务模型的“数据流”,以及这些“数据流”的具体需求。
例如,架构师做处理器选型,需要对各个关键部件应做什么工作进行拆解,梳理清楚数据在各个部件之间的流转、缓存、处理的具体需求。ARM、DSP、FPGA、MIPS、X86等各种处理器适合做的工作不一样,数据流梳理清楚了,对器件选型才能有清晰的指导。
再举个例子,我们设计电信设备的接口板,需要考虑数据从对外接口进入,在整个硬件系统里的流向和处理方式,根据产品业务模型和数据通信的带宽要求,通过计算确定FPGA、NP等芯片外挂的DDR的带宽和容量。
当然,除了框式产品的这些关注点之外,盒式产品和终端产品架构师也有很多根据自身的产品类型决定特别需要关注的地方。比如盒式产品,芯片的集成度越来越高,计算能力越来越强,单芯片的散热需求也越来越高,但是客户对于同类型的盒式产品应用环境的规格要求是固定的。因此产品的尺寸大小、功耗要求就是不变的,硬件架构师对于盒子散热能力的演进方向、盒子小型化的技术布局就需要重点去维护。终端产品都是海量发货的,很多终端产品主芯片起到了决定性的作用。因此终端产品的架构师如果能够去影响芯片的定义,按照自己的产品需求去设计芯片,就能极大地提升产品的竞争力。同时,海量盒式产品和大部分终端产品都是成本敏感的,因此盒式和终端产品的架构师对于系统性降成本设计也需要做长期规划,包括架构降成本、引入低成本器件板材、通过软件功能替代硬件方案等,这些架构级的改良需要硬件架构师去规划。
3.什么是有竞争力的硬件架构?
有竞争力的硬件架构要遵循表5.4中的几条关键的原则