边缘计算的基础资源包括计算、网络和存储三个基础模块,以及虚拟化服务。
1.计算
异构计算是边缘计算侧的计算硬件架构。近年来,摩尔定律仍然推动芯片技术不断取得突破,但物联网应用的普及带来了信息量爆炸式增长,AI技术应用也增加了计算的复杂度,这些对计算能力都提出了更高的要求。计算要处理的数据种类也日趋多样化,边缘设备既要处理结构化数据,也要处理非结构化数据。同时,随着边缘计算节点包含了更多种类和数量的计算单元,成本成为关注重点。
为此,业界提出将不同指令集和不同体系架构计算单元协同起来的新计算架构,即异构计算,以充分发挥各种计算单元的优势,实现性能、成本、功耗、可移植性等方面的均衡。
同时,以深度学习为代表的新一代AI在边缘侧应用还需要新的技术优化。当前,即使在推理阶段,对一幅图片的处理也往往需要超过10亿次的计算量,标准的深度学习算法显然不适合边缘侧的嵌入式计算环境。业界正在进行的优化方向包括自顶向下的优化,即把训练完的深度学习模型进行压缩来降低推理阶段的计算负载;同时,也在尝试自底向上的优化,即重新定义一套面向边缘侧嵌入系统环境的算法架构。
2.网络
边缘计算的业务执行离不开通信网络的支持。边缘计算的网络既要满足与控制相关业务传输时间的确定性和数据完整性,又要能够支持业务的灵活部署和实施。时间敏感网络和软件定义网络技术会是边缘计算网络部分的重要基础资源。
为了提供网络连接需要的传输时间确定性与数据完整性,国际标准化组织IEEE执行了TSN(Time-Sengitive Networking)系列标准,针对实时优先级、时钟等关键服务定义了统一的技术标准,是工业以太网连接的发展方向。
SDN逐步成为网络技术发展的主流,其设计理念是将网络的控制平面与数据转发平面进行分离,并实现可编程化控制。将SDN应用于边缘计算,可支持百万级海量设备的接入与灵活扩展,提供高效低成本的自动化运维管理,实现网络与安全的策略协同与融合。
3.存储
数字世界需要实时跟踪物理世界的动态变化,并按照时间序列存储完整的历史数据。新一代时序数据库TSDB(Time Series Database)是存放时序数据(包含数据的时间戳等信息)的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。为了确保数据的准确和完整性,时序数据库需要不断插入新的时序数据,而不是更新原有数据。
4.虚拟化
虚拟化技术降低了系统开发成本和部署成本,已经开始从服务器应用场景向嵌入式系统应用场景渗透。典型的虚拟化技术包括裸金属(Bare Metal)架构和将主机(Host)等功能直接运行在系统硬件平台上,然后再运行系统和虚拟化功能。后者是虚拟化功能运行在主机操作系统上。前者有更好的实时性,智能资产和智能网关一般采用该方式。
对于边缘计算系统,处理器、算法和存储器是整个系统中最关键的三个要素,以下进行仔细分析。
(1)用于边缘计算的处理器。要多通用?是否要使用专用加速器?常规物联网终端节点的处理器是一块简单的MCU,以控制目的为主,运算能力相对较弱。如果要在终端节点加边缘计算能力有两种做法。第一种是把这块MCU做强,例如使用新的指令集增加对矢量计算的支持,使用多核做类似SIMD的架构等;第二种是依照异构计算的思路,MCU还是保持简单的控制目的,计算部分则交给专门的加速器IP来完成,AI芯片其实大部分做的就是这样的一个专用人工智能算法加速器IP。显然,按前一种思路做出来通用性好,而第二种思路则是计算效率更高。未来预计两种思路会并行存在,平台型的产品会使用第一种通用化思路,而针对某种大规模应用做的定制化产品则会走专用加速器IP的思路。然而,因为内存的限制,IoT终端专用加速器IP的设计会和其他领域的专用加速器有所不同。
(2)算法与存储器。众所周知,目前主流的深度神经网络模型的大小通常在几兆甚至几百兆,这给在物联网节点端的部署带来了挑战。物联网节点端出于成本和体积的考量不能加DRAM,一般用FLASH(同时用于存储操作系统等)作为系统存储器。我们可以考虑用FLASH存储模型权重信息,但是缓存必须在处理器芯片上完成,因为FLASH的写入速度比较慢。由于缓存大小一般都是在几百KB到1MB,限制了模型的大小,因此算法必须能把模型做到很小,这也是最近“模型压缩”话题会受关注的原因。
如果算法无法把模型做到很小,就需要考虑内存内计算。内存内计算(in-Memory Comp-uting)是一种与传统冯·诺伊曼架构不同的计算方式。冯·诺伊曼架构的做法是把处理器计算单元和存储器分开,在需要的时候处理器从存储器读数据,在处理器处理完数据之后再写回存储器。因此,传统使用冯·诺伊曼架构的专用加速器也需要配合DRAM内存使用,使得这样的方案在没法加DRAM的物联网节点端难以部署。内存内计算则是直接在内存内做计算而无须把数据读取到处理器里,节省了内存存取的额外开销。一块内存内计算的加速器的主体就是一块大容量SRAM或者FLASH,然后在内存中再加一些计算电路,从而直接在内存内做计算,理想情况下能在没有DRAM的条件下运行相关算法。
当然,内存内计算也有一定的挑战。除了编程模型需要仔细考虑,内存内计算目前的实现方案本质上都是做模拟计算,因此计算精度有限。需要人工智能模型和算法做相应配合,对于低精度计算有很好的支持,避免在低精度计算下损失太多正确率。目前,已经有不少Binary Neural Network(BNN)出现,即计算的时候只有1位精度0或者1,并且仍然能保持合理的分类准确率。
另一方面,目前IoT节点终端内存不够的问题除可以用模型压缩解决外,另一种方式是使用新存储器解决方案来实现高密度片上内存,或者加速片外非易失性存储器的读写速度,并降低读写功耗。因此,边缘计算也将会催生新内存器件,例如MRAM、ReRAM等。