硬件架构设计的艺术

发表时间: 2021-08-02 23:19

什么是架构?架构是“表述了契合一个环境的系统基本元素及元素之间关系构成的结构集,在环境中体现出来基本属性,以及设计和演进的原则”。定了硬件架构,就决定了硬件各个组件和各个模块之间的相互关系,硬件系统整体、硬件系统里各个模块的规格,硬件的设计原则,硬件系统是否有可演进性。

架构是硬件产品的“源头”,特别是对于高复杂度的产品,架构就特别重要。比如通信类高复杂框式产品,硬件系统中组件和模块很多,客户采购一台设备10多年都不会更换,通过增加接口板等方式进行扩容或适配新接口。因此,我们在硬件架构设计的时候要重点考虑到框式产品类管理用的主控板,转发业务用的接口板,框式设备背板,电源模块,系统监控板等不同模块之间的耦合关系;产品的生命周期长,你需要考虑系统容量、背板接口、电源和散热等基础能力否是能符合未来8~10年的演进需求,确保对于硬件架构的生命力。

【什么是架构】

架构的定义:架构指系统的顶层结构。架构的本质就是对系统进行有序化地重构以致符合当前业务的发展,并可以快速扩展。

因为架构设计往往是一些模块划分、拓扑设计等等比较抽象的动作行为。被普通工程师的认知,会进入两个极端:

1、架构设计很玄幻,很高级,高不可攀。

2、架构设计很务虚,不实在,架构师都是大忽悠。

做好一个架构师,其实不容易的。应该是可以理解具体技术,具备具体项目落地能力的。非研发出身的架构师,我个人觉得是存在的。所以架构师是具备微观能力,同时具备宏观的能力的。


太简单的系统,个人认为不存在“架构设计”。或者太简单产品,不存在“架构设计师”这个单独的岗位。比如一个电动玩具,单芯片解决方案。一旦器件选型搞定了,就没有什么架构可以谈。有些电路很复杂,但是一块电路板就能解决问题,往往也不存在所谓的架构设计。

而有些硬件项目的复杂度非常高,业务模型也非常复杂,数据流也很复杂,例如电信设备。则会需要有一些人,不仅仅懂具体的实现,还需要行业背景,懂业务模型,懂客户需求,懂软件,懂硬件,懂器件的性能规格,懂发展趋势……然后才能抽象出具体的项目,设计出好的硬件架构,设计出有产品竞争力的。

所以复杂的业务模型,往往需要专职的架构设计:

1、需求相对复杂。

2、非功能性需求在整个系统占据重要位置。

3、系统生命周期长,有扩展性需求。

4、系统基于组件或者集成的需要。

5、业务流程再造的需要。

【硬件架构师到底做什么】

架构是经过系统性地思考, 权衡利弊之后在现有资源约束下的最合理决策, 最终明确的系统骨架: 包括子系统, 模块, 组件. 以及他们之间协作关系, 约束规范, 指导原则.并由它来指导团队中的每个人思想层面上的一致。涉及四方面:

  • 1、系统性思考的合理决策:技术选型、设计原则等。
  • 2、明确的系统骨架,系统的拆分。
  • 3、系统协作关系,子系统之间的耦合关系。
  • 4、约束规范和指导原则。

因此架构师具备能力:理解业务,全局把控,选择合适技术,解决关键问题、指导研发落地实施。

软件其实可以快速迭代,可以先小步快跑,构建出完整体系之后,可以再重构。重构之后,替换原来的老产品。其实我们可以看到很多互联网公司经常这么干。但是硬件就没有重构的机会。硬件一旦重构:

1、没法替代老的产品,成本是不能接受的。

2、硬件重新开发的周期太长。

3、硬件没法敏捷开发,快速迭代。

架构的发展和需求是基于业务的驱动。所以硬件架构设计,也是被业务推动不断的发展的。例如电信设备也是不断地演进,产生各种硬件机框。

如果我们把硬件设备分类为:框式、盒式、终端。

那么框式设备,之所以做成框式设备,就是因为需要有一个复杂的架构适应复杂的业务模型,也解决业务演进的竞争力的问题。

名副其实的架构师应该是框式设备的架构师,因为其工作更多的是在设计“架构”。有些岗位其实并不是做架构设计的,但是在一些大公司里面无处安放也放在架构部。很多关于硬件架构设计的文章讲得都很笼统抽象。我个人总结

硬件架构师(框式设备)需要做以下具体的事情:

1、理解需求和业务模型的情况下,设计好背板。

这里首先强调的是需要充分理解业务模型,就是知道硬件设备承载的软件功能,和对应的软件功能所需要的硬件能力。所以,硬件架构设计脱离不了业务需求,也脱离不了软件功能。那么背板设计实际就是整个框式设备的核心。

2、背板设计,需要考虑数据交换能力,电路板管理监控能力。

曾经参与一个设备的架构设计。当时,交换协议处于一个群雄逐鹿的状态。当时,就专门分析,以太网交换、PCIe交换、SRIO交换都已经相对成熟的一个阶段。选择合适的SRIO、PCIe和以太网交换芯片作为数据交互中心,需要根据业务模型选择最合适的速率、开销、可靠性、热插拔等。

同时框式设备除了业务数据,还需要有管理数据。如何对每个电路模块进行监控管理,数据同步,启动关闭,冗余备份等等功能,需要在架构设计的时候进行充分考虑。一般这种是独立于业务数据通道的低速通道。

3、模块划分

就是定义做多少种电路板。这些电路板分别什么功能,通过插拔插入机框,实现不同种类的业务组合。每个模块的功能定义,需要考虑各种业务模型的需求。

例如以前我们做的框式设备,一方面需要作为彩信、彩铃、短信的核心网设备,需要大量的信令处理能力。同时需要作为呼叫中心、统一通信的设备。所以需要各种语音编解码+信令处理的不同规格的组合,实现不同的业务场景。那么每个电路板的颗粒度,性能规格,就很重要。我们需要开发出什么样性能的电路板,通过不同的组合实现不同业务场景的竞争力?这是架构师需要充分思考的问题。

4、工程问题

硬件架构师,不能只管设计,不管实现。所设计出来的硬件架构一定是要具备技术可实现的。例如:

框式设备电路板是横插还是竖插

风道设计、散热考虑

这不仅仅是热工程师的任务。一个架构师,不仅需要考虑各种工况的散热需求,还需要考虑失效场景下的各种散热可能性。同时,对于散热器的成本、尺寸、规格也应该有概念,不然未来电路设计出来的没有可以用散热器。包括整机部件关于风扇的选型,也需要架构师充分考虑。

供电问题

包括电源的供电框架,包括供电规格、电源失效对策、安全性对策、电源板带电更换等问题。

5、数据流

架构师应该是绘制出所有业务模型的数据流,以及一些数据流的具体需求。例如需要各个关键部件需要做什么工作。以及数据流转、缓存、处理的需求必须都梳理清楚,对未来器件选型才能清晰地指导。

数据流清晰,规格才会清晰。规格清晰,才知道器件选型的种类选什么更合适。ARM、DSP、FPGA、MIPS、X86每种器件适合做什么工作,然后对应的业务规格需要的性能和器件规格是多少。如果不知道如何去测试。



【什么是好的架构】

有竞争力的硬件架构要遵循以下几条关键的原则

序号

原则

详细解读

全面解耦原则

1.软件和硬件解耦,比如软件升级和硬件形态解耦。

2.硬件平台和产品解耦,例如一个框式平台即可以用于数据通信产品,也可以用于业务处理产品。

3.硬件系统和硬件各部件解耦,比如业务组件、数据组件、监控组件等逻辑解耦。

组件化原则

1.组件化架构,灵活组装,比如框式产品里业务处理单板,接口扩展单板,风扇模块,电源模块都以组件交付。

2.各组件按需乐高式组合,更快适应变化,如框式设备业务处理单板、电源模块后容量能力提升。

3.接口标准化,通用化。

持续演进原则

架构并非一蹴而就,也需要有效管理,持续发展,适应业务需求变化,保持架构的生命力和竞争力。

柔性供应制造原则

优秀的硬件架构是有利于制造的,模块化设计、模块和物料归一、标准化制造,海量产品能够支持自动化生产。

高效开发原则

硬件架构支持硬件系统拆分成单板、组件、模块并行开发,对于复杂产品,硬件升级可以通过小团队独立交付支持产品满足新的客户需求。