边缘计算系统设计与实践
上QQ阅读APP看书,第一时间看更新

1.3.1 计算单元和存储系统

无论我们采用什么样的边缘网关或边缘服务架构,都需要有中央计算单元和存储器。事实上,我们在边缘计算系统中使用的技术并没有什么特别的地方。最具挑战性的是,需要在现有的OEM设备或分立模块搭建的系统基础上,确定哪一种配置和性能更适合特定场景的应用。我们必须在性能、稳定性、功耗和成本上取得一个平衡,而这些因素往往是互相制约的。如果我们足够幸运,有可能在实际的应用中直接采用双至强处理器加上512GB内存的MEC刀片服务器。但是,在绝大多数时候,我们肯定需要在各种硬件中作出选择,采用合适的硬件方案。我们在讨论计算设备时,性能永远是需要考虑的因素。对于边缘设备,性能的一个重要决定因素就是中央处理器(CPU)的处理能力,而中央处理器的处理能力又与能耗直接相关,通常性能越强的处理器能耗越高,采购和使用的成本也会更高(更多能耗,更多更贵的外围辅助元件)。

中央处理器指令集分为复杂指令集(CISC)和精简指令集(RISC)两种,在实际的应用中,我们经常能够接触到的CPU架构有Intel和AMD的X86架构和ARM架构。当然,也有一些比较少见的架构,比如MIPS、RISC-V、SuperH、Spark及PowerPC。目前来看,除X86架构是复杂指令集外,其他芯片架构都是采用的精简指令集。值得一提的是,我国国产的龙芯使用的LoongISA是基于MIPS64的精简指令集架构,并扩展了1400多条向量处理、虚拟化和二进制翻译的扩展指令。不过,从龙芯3A5000开始,龙芯中科技术股份有限公司似乎决定将彻底和美国技术切割,重新设计了所有的基础指令集系统,并内置了SM2/3/4国密算法处理模块,使该芯片成为专为我国特殊应用领域打造的完全自主产权芯片。

基于CISC的CPU能够提供更多更复杂的功能指令,比如X86芯片可以直接用一条指令读取内存和寄存器的数据并进行计算,这样执行一条指令实际上需要多个时钟周期。而基于RISC的CPU通常一条指令在一个时钟周期内就能够完成。基于RISC的CPU,通常从内存中读取数据到寄存器和寄存器中的数据进行计算会被分成两条指令来执行。基于CISC的CPU尽可能在芯片的硬件层面提供更丰富的功能。而RISC通常只会提供必要的指令,大多数的功能实现交给软件层面进行解决。由于CISC的指令数量多且复杂,因此通常其指令长度都是可变的;而RISC的指令长度一般都是固定的,以便于简单快速地存储和读取指令,同时也可以简化指令队列的设计。

另外,不同的计算系统在处理数据时采用不同的字节顺序设计,分为大数端(MSB)和小数端(LSB),指的是在系统中表示数据的二进制码最末一位是最高位(大数端)还是最低位(小数端),如图1-5所示。大多数系统只能支持其中一种,在设计时就已经确定。不过,目前很多最新的处理器在启动阶段是可以设定字节顺序的类型的。总之,编译好的程序代码必须和运行的处理器兼容才能够正常执行。在IoT系统中,我们有必要关注这一点。因为数字传感器采用的是一种顺序,而边缘服务器在处理数据时却是另外一种顺序,这时就必须使用硬件或软件进行字节顺序的转换。无论用哪种方式转换,其实都会涉及额外的计算效率损失和能量消耗,这在整体设计和软硬件选型时有必要给予充分的考虑。

图1-5 大数端和小数端的区别

目前比较主流的内存技术包括DRAM(DDR)、Low Power DDR(LPDDR)和Graphics DDR(GDDR)。这些内存技术在芯片层面的本质都是一样的,只是在速度、功耗和价格上有区别,如表1-2所示。

表1-2 主流内存设备的参数

未来的DDR6的性能会更强,能够达到目前DDR5的两倍左右。在一些对数据计算可靠性要求高的场合,如服务器和重要的边缘计算系统中,可以采用ECC技术的内存芯片,其加入了错误校验和恢复的功能。由于在机房和很多边缘计算的环境下,电磁环境比较复杂,电磁干扰也比较严重,因此加入ECC功能能够确保数据计算的正确性和系统的可靠性。

部署在边缘设备上的长时间存储设备通常是固态硬盘(SSD)这样的固态闪存存储系统,这是因为这种存储设备的随机读写性能较高、能耗低、数据密度大、对振动不敏感,非常适合移动设备和小型边缘设备使用。不过,闪存的存储部件是由NAND芯片组成的,芯片的擦除和写入寿命是有限制的(表1-3)。而且一旦芯片损坏,数据无法恢复。因此,对于这些固定的存储设备,必须用有效的手段进行监控,并每隔一段时间对数据进行备份,更换存储模块,以确保系统能够长期稳定地运行。

表1-3 闪存单元种类和特点