第5章-总体设计 5.3 硬件架构设计

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中的几条关键的原则

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/917235.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras

引言 在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码…

windows 安装Ubuntu 后如何使用

windows 安装Ubuntu 后如何使用 youtube链接 https://www.youtube.com/watch?vPaEcQmgEz78哔哩哔哩视频 https://www.bilibili.com/video/BV1tW42197za/?spm_id_from333.999.0.0两个视频是一样的安装Ubuntu 安装docker的教程,不执行docker的安装即可 安装完毕后…

IDEA leetcode插件代码模板配置,登录闪退解决

前言 最近换电脑,配置idea时和原来的模板格式不一样有点难受,记录一下自己用的模板,后期换电脑使用,大家也可以使用,有更好的地方可以分享给我~ IDEA leetcode插件代码模板配置,登录闪退解决 前言1 下载IDEA leetcode…

kubesphere环境-本地Harbor仓库+k8s集群(单master 多master)+Prometheus监控平台部署

前言:半月前在公司生产环境上离线部署了k8s集群Victoria Metrics(二开版)自研版夜莺 监控平台的搭建,下面我租用3台华为云服务器演示部署kubesphere环境-本地Harbor仓库k8s集群(单master节点 & 单master节点)Prometheus监控部…

Node.js | npm下载安装及环境配置教程

前言: npm 是 Nodejs 下的包管理器,在下载 Node.js 后自动安装,因此本文同时适合 Node.js / npm 的下载安装及环境配置。 一、软件安装 Node.js中文网官网下载页:Node.js 中文网 (nodejs.com.cn) 1)进入下载页&#xf…

C++ 的发展

目录 C 的发展总结:​编辑 1. C 的早期发展(1979-1985) 2. C 标准化过程(1985-1998) 3. C 标准演化(2003-2011) 4. C11(2011年) 5. C14(2014年&#xf…

游戏引擎学习第14天

1. 为什么关注内存管理? 内存分配是潜在的失败点: 每次进行内存分配(malloc、new等)时,都可能失败(例如内存不足)。这种失败会引入不稳定性或不可预测性,需要额外的错误处理逻辑。 …

QT6学习第一天

QT6安装和示例运行 QT介绍QT特点QT开发框架QT Quick和QML介绍Qt Widgets和Qt QuickQT6下载安装QT Creator介绍QT Creator界面介绍 QT介绍 Qt是一个跨平台的应用程序和UI开发框架,可用于桌面、嵌入式和移动平台的应用程序和用户界面的开发。 使用Qt只需一次性开发应…

一文详细深入总结服务器选型

1. 题记: 服务器选型工作是项目规划检讨的一项非常重要的工作,本文详细深入总结服务器选型。 2. 服务器基础知识概览 2.1 服务器的定义与功能 2.1 .1 定义 服务器是一种高性能计算机,其设计目的是在网络中提供服务。它可以处理来自多个客…

打造旅游卡服务新标杆:构建SOP框架与智能知识库应用

随着旅游业的蓬勃兴起,旅游卡产品正逐渐成为市场的焦点。为了进一步提升服务质量和客户体验,构建一套高效且标准化的操作流程(SOP)变得尤为重要。本文将深入探讨如何构建旅游卡的SOP框架,并介绍如何利用智能知识库技术…

基于Python爬虫大屏可视化的热门旅游景点数据分析系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

04 - Clickhouse-21.7.3.14-2单机版安装

目录 一、准备工作 1、确定防火墙处于关闭状态 2、CentOS 取消打开文件数限制 3、安装依赖 4、CentOS取消SELINUX 二、单机安装 2.1、下载安装 2.2、安装这4个rpm包 2.3、修改配置文件 2.4、启动服务 2.5、关闭开机自启 2.6、使用Client连接server 一、准备工作 1…

uni-app移动端与PC端兼容预览PDF文件

过程遇到的问题 1、如果用的是最新的版本的pdfjs的话,就会报Promise.withResolvers 不是一个方法的错误,原因是Promise.withResolvers是ES15新特性,想了解可参考链接,这里的解决方案是将插件里的涉及到Promise.withResolvers的地…

shell编程--永久环境变量和字符串显位

环境变量 echo $HOME 在终端输出后会显示家目录有个root变量 我们会提出个疑问为什么平时我们在终端输入sl 或者which等等命令会输出一些内容呢,这是因为这些命令都有对应的环境变量。 我们查看一下环境变量 在终端输入: echo $PATH 我们看一下输出…

vue3 + vite 进行axios请求封装及接口API的统一管理

前言 在Vue 3项目中使用Vite进行开发时,对axios进行请求封装以及统一管理接口API是非常常见的做法。这不仅可以提高代码的复用性和可维护性,还能统一处理请求和响应,管理错误处理逻辑等。下面是一个详细的步骤和示例代码,来说明如…

十三、注解配置SpringMVC

文章目录 1. 创建初始化类,代替web.xml2. 创建SpringConfig配置类,代替spring的配置文件3. 创建WebConfig配置类,代替SpringMVC的配置文件4. 测试功能 1. 创建初始化类,代替web.xml 2. 创建SpringConfig配置类,代替spr…

关于win11电脑连接wifi的同时,开启热点供其它设备连接

背景: 我想要捕获手机流量,需要让手机连接上电脑的热点。那么问题来了,我是笔记本电脑,只能连接wifi上网,此时我的笔记本电脑还能开启热点供手机连接吗?可以。 上述内容,涉及到3台设备&#x…

【OpenGL】OpenGL简介

文章目录 OpenGL概述OpenGL的本质OpenGL相关库核心库窗口管理glutfreeglutglfw 函数加载glewGLAD OpenGL概述 OpenGL(Open Graphics Library) 严格来说,本身并不是一个API,它是一个由Khronos组织制定并维护的规范(Specification)。OpenGL规范严格规定了…

AI写作(十)发展趋势与展望(10/10)

一、AI 写作的崛起之势 在当今科技飞速发展的时代,AI 写作如同一颗耀眼的新星,迅速崛起并在多个领域展现出强大的力量。 随着人工智能技术的不断进步,AI 写作在内容创作领域发挥着越来越重要的作用。据统计,目前已有众多企业开始…

ROS进阶:使用URDF和Xacro构建差速轮式机器人模型

前言 本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。 差速轮式机器人:两轮差速底盘由两个动力轮位于底盘左…