2020 存储技术热点与趋势分析

到了 2000 年以后,CPU 的发展逐渐遇到瓶颈,单核计算性能已经不再可能有大的突破,CPU 逐渐转向多核方向发展,个人电脑也用上了 Shared Memory 技术。而随着大数据对算力和存储能力的要求,Distributed Memory 技术也越来越广泛地被使用,例如 MapReduce 和 Spark 这种计算框架就是典型的代表。

到了最近几年,CPU 速度依然没有明显的突破,但网络速度却在发生翻天覆地的变化。包括 IB 和以太网都可以达到 200Gb 的带宽和 us 级别的延迟(据说目前已经在制定 800Gb 的技术标准),以及 RDMA 技术的普及,使得 DSM 技术又再次被大家提起。

OSDI ‘18 的 Best Paper “LegoOS: A Disseminated, Distributed OS for Hardware Resource Disaggregation” 就是一种 DSM 系统,只不过除了 CPU 和内存外,LegoOS 还包括了对存储的讨论。在论文中,作者把 CPU、Memory 和 Storage 分别抽象为 pComponent、mComponent 和 sComponent,这些设备之间通过 RDMA 网络连接在一起。LegoOS 向用户提供了 vNode 的概念,每个 vNode 类似一个虚拟机,可以包含一个或多个 pComponent,mComponent 和 sComponent。而每个 Component 同时也可以服务于多个 vNode。LegoOS 会负责对资源的隔离。由于具有统一的内存地址空间,且兼容 POSIX 接口,应用程序不需要被改写就可以运行在 LegoOS 上。

LegoOS 是一个非常不错的想法,但我认为在实现上会面临着非常巨大的挑战,一方面由于大部分的功能都需要依赖软件来实现,延迟可能会受到一定的影响,另一方面是 LegoOS 没有采用 Cache Coherence 的模型,而是用了 Message-Passing 的方式在各个 Component 之间进行通信。Message-Passing 可能是更优雅设计方案,但是如果真的想要在工业界中实现 LegoOS 这种思想,硬件厂商有需要根据 Message-Passing 来重新设计 Driver,这对于已有的硬件生态来说恐怕是很难接受的。

在工业界中,尽管目前还没有看到 DSM 的成功案例,但是目前已经开始看到一些相关的技术出现。这里我们会重点关注一下总线(Bus)技术。

最近几年,异构计算(heterogeneous computing)变得越来越常见,CPU 通过 PCIe 总线和 GPU、FPGA 等异构计算单元进行通讯。而由于 PCIe 总线诞生时间较早,不支持 Cache Coherence,所以为编写异构计算的应用程序带来了极大的复杂度。例如应用程序想要在 CPU 和 GPU 之间共享数据,或者 GPU 和 GPU 之间共享数据,必须自行处理可能产生的 Cache 一致性问题。