边缘嵌入式计算

嵌入式计算经历了多次技术转型和推广方式 — 影响并不大。但最近边缘计算的崛起,意味着我们将迎来重要的全新可能性,同时面临严峻的挑战。

那么边缘计算是什么(图 1)?愤世嫉俗者可能会说,这只不过是那些在支离破碎的嵌入式市场中苦苦挣扎,但现在发现了商机的大型云公司用来抢占市场份额的一种方式。理论上是这样的。

1.网络边缘的计算让嵌入式系统进入一个全新的世界。

物联网领域中出现了一个十分天真的嵌入式架构概念:所有嵌入式系统的传感器和致动器都将直接连接互联网 — 想想智能墙开关和智能灯泡 — 所有的计算都将在云环境中完成。当然,这种概念被证明是不切实际的,原因有很多,所以物联网专家们退回到一个更站得住脚的立场:即使嵌入式系统仍然与互联网联系紧密,但有些计算必须在本地完成。

由于本地处理在互联网的最外围(此处 IP 连接结束,私有工业网络或专用连接开启)完成,因此以云和网络为中心的人称之为边缘计算。他们发现可以利用云和网络资源将嵌入式计算重新定义为网络应用,而边缘计算作为其自然扩展。

一个不那么偏激且更实用的观点认为,边缘计算是新分区问题的一个方面,分区问题同时涉及云计算、广泛的宽带接入,以及 LTE 蜂窝网络中的一些创新。当前,嵌入式系统设计人员必须,从要求定义到整个设计过程,记住有多个不同的处理站点供他们使用(图 2)。这里是云。这里是所谓的雾。而这里是边缘。将这些站点的任务和数据进行分区,是成功完成嵌入式设计项目所必须掌握的技能。如果不慎重使用新的计算资源, 不仅在有待实现的特性、性能和成本等优势方面,而且鉴于从运行中的嵌入式系统所收集的数据其价值不断增长,你都将长期受制于您的竞争对手。

. 2.边缘计算提供三种不同的处理站点选择。

分区的乐趣

遗憾的是,分区并不常常是嵌入式系统设计师能够培养的技能。传统的嵌入式设计使用一颗处理器,甚至一块多核系统芯片 (SoC),内核之间分工明显。

但边缘计算大幅提高了难度。有多个不同的处理站点,每个站点的特性完全不同。相比共享内存多核系统之间近乎透明的任务间通信,处理器之间的连接要复杂得多。因此,想要顺利完成边缘计算,要求相当正规的分区过程。首先,定义任务并确定它们的计算、存储、带宽和延迟要求。然后,分析可用的计算资源,以及它们之间的链路。最后,分区必须将任务映射到处理器上,将任务间通信映射到链路上,以满足系统要求。通常这会是一个迭代过程,情况好的话它能改进架构,情况差的话它将变成一场旷日持久的多方“打地鼠”游戏。详细地了解每个问题:任务、处理或存储站点,以及通信链路,或许会有帮助。

任务

传统嵌入式系统中的任务可以分为多个类别,其中几个类别对许多设计都非常重要。在计算、存储、I/O 带宽和任务延迟方面,每个类别都有自己独特的需求。

在所有嵌入式设计中,都必须执行监管和管理任务,但计算或 I/O 任务并不密集,而且没有严格的时间规定。这一类别包括大多数操作系统服务、用户界面、实用程序、系统维护与更新,以及数据记录。

第二类任务的特征有很大的不同,大部分嵌入式设计都需要完成这类任务。这些任务直接影响系统的物理行为,而且有严格的实时期限,这通常是因为它们实施反馈控制回路中负责运动控制或动态流程控制的算法。或者,它们可能是位于关键系统响应路径中的信号处理或信号解析任务,比如摄像头输入背后的对象识别例程。

这些任务通常没有复杂的 I/O 需求:仅一个数据流,或两个数据输入,一或两个数据输出。但如今,这些数据速率极高,正如机器人上的多个高清摄像头,或者从目标获取和追踪雷达上发出的数字化雷达信号。过去,算法的复杂性很低,这是由预算受限的嵌入式设计传统所决定的,在这种设计中,微控制器必须在控制回路中实施数字传输功能。但随着控制系统采用更现代的技术,包括随机状态预估、基于模型的控制,以及近期内置于控制的人工智能,在许多设计中,时间关键型回路中算法的复杂度开始爆发。我们将看到,这种爆发的波及范围非常广。

对于所有这些时间关键型任务来说,最重要的问题是,从传感器或控制输入到致动器响应的整体延迟低于设定的最大延迟,而且它通常位于一个狭窄的抖动窗口内。这使得任务的划分过程非常有兴趣,因为它迫使设计人员考虑执行时间 — 完全包含不确定性、内存访问和存储访问延迟 — 以及通信延迟。执行复杂算法最快的地方可能离系统很远。

我们还需要了解第三类任务。许多设计人员最近才知道有这些任务,而且这些任务不同于监管任务和实时任务。它们源于三个新领域的出现和发展:机器学习、功能安全和网络安全。这些任务的显著特点是,虽然每项任务都可以在对系统提出适度要求的情况下执行,但每项任务都可快速生成对计算和内存资源的巨大要求。而且最遗憾的是,每项任务都可能在延迟敏感的控制回路中结束,这对设计团队来说是非常棘手的挑战。

机器学习就是一个很好的例子。相对简单的深度学习程序已被用作监督任务,以譬如检查传感器数据,检测机器上的渐进磨损或即将发生故障的迹象。这类任务通常在云环境中运行,没有任何实时限制,因为它们在访问大量数据方面表现最好。反之,经过训练的网络可以被移植到相当紧凑的代码块中,特别是在使用小型硬件加速器的情况下,从而支持在智能手机中使用神经网络。但是,深度学习推理引擎经过训练,可检测切割过程中切割工具是否振动过度,或不明物体入侵机器人的预定轨道 — 两者都需要立即进行干预 — 最终可能成为计算密集型任务,而且在时间关键型路径上。

同样对功能安全和系统安全来说,简单的基于规则的安全检查或认证/加密任务可能对系统设计来说没有什么问题。但在这些领域,简单往往意味着薄弱。必须在不熟悉的环境中操作的系统,或者必须主动击退新型入侵的系统,可能需要非常复杂的算法,包括机器学习,且响应速度要极快。例如,入侵检测作为鉴定工具的价值要比作为预防手段的价值低得多。

资源

过去,可供嵌入式系统设计人员使用的计算和存储资源很容易列出来。有微控制器芯片、基于商用微处理器的单板计算机,以及某些情况下使用一种或其它数字信号处理硬件的电路板或盒装产品。所有这些都可以安装外部内存,而且大多数都可以在操作系统的帮助下连接大容量存储,包括 U 盘和 RAID 磁盘阵列。这些资源都集中在一个地方:成为系统的组成部分,直接连接传感器、致动器,甚至是工业网络。

但是添加互联网连接后,这种简单的场景就会瞬间失焦。原来的系统现在只是网络的边缘。而且除了边缘计算之外,还有两个新的位置可能有重要的计算资源:云,以及思科和其他公司所说的雾。

除了整个系统的功能不断增强,边缘几乎保持不变。在智能手机 SoC 这一巨大市场的阴影下,微控制器也变成了低成本 SoC,通常采用多个 32 位 CPU 内核、大量缓存,以及适合特定应用的专用功能 IP。主板级计算机充分利用了个人计算机 CPU 芯片单纯的增长能力以及固态存储器的增长。而且,面向全球数据中心的服务器的商品化,让数据中心级服务器机架均匀分布在资金雄厚的边缘计算站点内 — 如果这些站点能够提供必要的空间、功率和冷却功能。

最近,随着要求严苛的算法不断出现,硬件加速器也成为了边缘计算的重要选择。FPGA 一直用于加速信号处理和数字密集型传输功能。当前,借助有效的高级设计工具,他们将 FPGA 的使用范围扩展至几乎所有可以从大规模并行或更重要的深度管道执行中获益的应用。GPU 在许多大规模数据并行任务中都有应用,如视觉处理和神经网络训练。一旦某种算法稳定下来并被广泛使用,以获得良好的库支持 — 例如机器视觉、位置和映射、安全性和深度学习 — 就会有人开始运行 ASIC 以加快其运行速度。

当然,云是一个完全不同的环境:一个基本可容纳无数大型 x86 服务器和存储资源的世界。最近,来自全部三个族群 — FPGA、CPU 和 ASIC — 的硬件加速器也开始出现在云计算中。嵌入式系统最终用户可按照使用量租用所有这些资源。

云环境中的重要问题不在于可用资源的多少 — 超出您的需求量 — 而在于条款和条件。您的工作负载能否持续运行,如果不能,那么激活延迟是什么?如何确保性能和可用性?最终用户会为此付出什么代价?如果云平台提供商 — 专业应用领域的云平台提供商通常不是大型数据中心的所有者,而是自己租赁或出租云资源的小公司 — 遭遇变故,会发生什么情况呢?嵌入式系统开发人员通常不懂如何解决这些问题,更不用说他们的客户。

最近,人们开始讨论另一个可能的处理地点:所谓的雾。从物理位置和特征来说,雾位于边缘和云之间的某个区域。

随着网络运营商和无线服务提供商从老式专用交换硬件迁移至服务器上的软件,越来越多从边缘开始的互联网连接不再通过网络硬件完成,而是通过数据中心。这样,仰仗云计算的边缘系统将面临一个重要问题:如果只是在两个数据中心之间发送任务间通信,为何要通过其中的一个数据中心来实现?可能是网络数据中心可以为您的任务提供所需的所有资源,而不必去请求云服务提供商 (CSP)。或者,服务提供商可以提供硬件或软件包,支持部分处理在您的边缘计算系统中或者系统附近的聚合节点中完成,然后前往中央设施。这样您需要应对的厂商至少会少一个。而且,由互联网连接所导致的延迟和不确定性也会相应地减少。因此,您可以将雾计算看作是遍布网络和边缘的一种云计算服务,具备我们刚刚讨论过的所有优点和问题。

连接

当所有嵌入式计算都在本地完成,任务间通信几乎可以被忽略。在某些情况下,多个任务共享一种关键资源,比如操作系统中的消息传递实用程序,而且,在极其关键的计时路径上,您必须意识到,在任务之间获取消息的延迟是不确定的。但在大多数情况下,触发任务和获取数据的时长是次要问题。大多数设计将实时任务限制在系统的一个子集内,这个子集内有极其确定的环境,可以专注于时间分析。

但当您在边缘、雾和云资源之间划分系统时,这三种环境之间的连接、它们的延迟特性,以及它们的可靠性都将成为重要的系统问题。它们可能会限制放置特定任务的地方。而且可能会产生时间上的不确定性,以及任务间信息无法传递的可能,从而需要使用更复杂的控制算法来容忍出现这样的意外。

那么有哪几种连接呢?我们必须考虑两种不同的情况:当边缘硬件通过铜缆或光纤(或两者的混合)连接至互联网服务提供商 (ISP) 时,以及当连接是无线连接(图 3)。

3.根据计算复杂程度和延迟需求对任务进行分类。

这两种情况有一个共同点。除非您的系统有专用的虚拟通道连接云或雾服务提供商,否则部分连接将通过公共互联网实现。这部分可能是从 ISP 的交换机工厂到 CSP 的数据中心,也可能是从无线运营商的中央办公室到 CSP 的数据中心。

从这个角度来看,互联网连接有两个不好的特征。首先,它是一个分组交换网络,不同的数据包可能会通过不同的路径,延迟也大不相同。因此,不可能从统计上预测两点之间的传输延迟。其次,互联网协议本身只是做了最好的努力,无法提供保证。因此,依赖云任务的系统必须容忍某些数据包会消失。

另外值得考虑的一点是,所谓的“数据本地性法律” — 限制或禁止在原产国以外传输数据 — 正在全球普及。例如,在欧盟内部,跨越多个成员国的边境传输包含个人信息的数据是非法的,甚至传输至其他欧盟成员国也是非法的。在中国,出于隐私和产业政策目的才实施本地化制度,规定将几乎任何类型的数据传输到国外都是违法的。因此,设计师人员必须问,鉴于各国立法的快速演变,他们的边缘系统是否能够合法地与云交换数据。

这些限制是雾计算概念的潜在优势之一。不穿越公共网络,依赖 ISP 或无线运营商计算资源或本地边缘资源的系统可以利用其他供应来减少连接延迟的不确定性。

但消息仍然需要从边缘系统传递至服务提供者的聚合硬件或数据中心。对于 ISP 来说,这意味着需要完成物理连接,通常使用通过光纤或混合铜缆/光纤的互联网协议,通常安排在树形结构中。这种连接支持在分支交叉的点供应雾计算节点。但正如任何有线电视观众证明的那样,它们还会导致节点或分支出现拥塞,可用带宽和延迟方面出现巨大的不确定性。在美国,网络中立法案失效进一步增加了不确定性,允许运营商为不同来源的流量提供不同级别的服务,并对服务质量保证收费。

如果连接是无线的,我们确信,5G 网络部署后,不确定性将成倍增加。5G 链路将通过多个并行射频通道和天线连接至一个或多个基站。基站可以是硬件较少的小型蜂窝,可以能够提供雾计算资源的大型本地处理站点,还可以是依赖中央数据中心完成所有处理任务的远程无线电收发器。至少前两种情况下有单独的骨干网络,通常是光纤或微波,将基站连接至服务提供商的中央数据中心。

这里面临的挑战包括:第一,延迟将取决于您所使用的基站类型 — 这通常是您无法控制的。第二,在大多数直线对传式路径上,射频传输特性的变化可能由障碍、多路径转换、植被甚至天气等因素造成。如果通道质量下降,重试率将会上升,并且在某一时刻,基站和您的边缘系统将协商一个新的数据速率,或者将连接转到另一个基站。因此,即使对固定的客户端系统,这种连接的特征也可能会随着时间的推移而发生显著变化,有时变化速度会非常之快。

分区

连接为嵌入系统设计人员打开了一个新的世界,为本地平台提供了不可思议的计算能力和存储空间。但同时它还产生了关于分区的问题:一个关于任务放置的迭代过程,这些任务对资源有需求,但是他们需要的是低延迟、可预测性和可靠性。

位置对于许多任务来说是显而易见的。梳理数 TB 数据以预测维护需求或提取关于用户的重要结论的大数据分析可以在云中进行。因此,当可接受的延迟很长,以及偶尔丢失消息不会产生严重问题时,计算密集型的实时任务可否在更高级别的网络协议中处理。在厨房里,聪明人总是回答“让我想想那一刻”或者“对不起,什么?”

关键的高频控制回路必须处于边缘或非常接近边缘。传统的控制算法不能容忍其他选择的延迟和不确定性。

但如果产生冲突:任务对于边缘资源来说太大,但时间太敏感导致无法分布于整个互联网,将会出现怎样的情况?雾计算可以解决其中的一些难题。其他任务可能要求您在系统中放入更多资源。

最近,微软发布了一系列公告,展示了当今的技术在多大程度上丰富了这些选择。作为主要参与边缘计算的 CSP,微软曾在一段时间里提供 Azure 堆栈 — 本质上是他们的 Azure 云平台实例 — 在客户内部的服务器上运行。就在最近,该公司还推出了两种新的选择:FPGA 加速,包括微软的 Project Brainwave 机器学习加速,用于 Azure 堆栈安装,以及 Azure Sphere,它是一种将 Azure 的安全供应封装在经批准的微控制器、操作系统,以及协调的云服务中以供在边缘使用的方法。同样,英特尔最近发布了 OpenVINO™ 工具套件,它是一款在边缘实施视觉处理和机器智能算法的平台,依靠包含 FPGA 或视觉处理 ASIC 的可选支持的 CPU。这种面向雾的供应支持嵌入系统设计人员在自己的系统范围内将面向云的任务整合到硬件中,无需考虑通信方面的问题,还能提高创意(例如控制回路中的深度学习网络)的可行性。

在其他情况下,设计人员可能只需要将关键任务重构为时间关键和时间宽容部分。或者,他们可能需要用更复杂的方法替换已尝试过的和真正的控制算法,从而容忍通信链路的延迟和不确定性。例如,基于模型的复杂控制算法可以移到云环境中,并用于监控和调整在边缘本地运行的更简单的控制循环。

因此,边缘的世界充满了机遇和复杂性。它提供一系列的计算和存储资源,以及大量算法,这是之前大多数嵌入式系统所没有的。但它需要将分析和分区提升到全新的水平,并要求系统设计人员进入高级系统控制领域,这远远超出了传统 PID 控制循环的范围。竞争压力将迫使许多嵌入式系统进入这一全新领域,因此最好未雨绸缪,引领潮流。


CATEGORIES : IoT, 嵌入式系统/ AUTHOR : Ron Wilson

Write a Reply or Comment

Your email address will not be published.