然而,目前最先进的数据中心仍在使用传统的资源访问方法,具体来看:
首先,资源的连接和访问方式不同(例如 PCIe,以太网),需要不同的通信堆栈,因此增加了编程复杂度。
其次,资源以服务器为中心进行组织, 每个资源都使用专用的命名空间,且命名空间只能从主机内部访问, 缺少资源的全局命名导致远程访问效率的水平较低。
最后,资源复用是将数据中心各类资源作为资源池共享的关键考虑因素。然而,当前堆栈多路复用还没有得到很好的支持,缺少通用的资源复用方案迫使开发人员需要针对每种情况手动定制解决方案。
Direct Universal Access(DUA,直接通用访问架构)的设计初衷是,将其作为下一代数据中心资源通信体系结构的关键组件,提供一组通用访问原语(SEND/RECEIVE,WRITE/READ),以及全局命名空间和路由。它是一个上层体系结构,既可以利用目前已有的接口实现和功能,同时支持快速开发新的接口实现和功能。
DUA 为每个资源都提供了一个数据中心规模的全局地址。DUA 将可用的资源命名方案组合到一个新的层次化结构命名规则中。由于采用了分层地址格式设计,因此本地访问和远程访问都可以高效进行。
DUA 控制层则管理所有资源,分配地址并计算到它们的路由路径,以及管理资源的多路复用。为了快速实现,在 DUA 设计中给出了一种通用的资源复用方案。
DUA 实现的通信体系结构
了解更多 DUA 的概念和设计的详细信息,可以点击https://www.usenix.org/conference/nsdi19/presentation/shu查看论文。
而 SiliconNet(硅网络)是一种高度可配置的无阻塞硬件交换机,提供了 DUA 上层中交换组件的示例实现。微软亚洲研究院的研究员们已将其以 Verilog / SystemVerilog 语言实现,并在 GitHub 中以代码名称 SiliconNet(https://github.com/microsoft/DUA)进行了开源发布。当前版本是用 Verilog / SystemVerilog 编写的参考设计。
DUA 实现框图及其在数据中心中的部署
在此次开源发布中,SiliconNet 提供了以下功能:
无阻塞硬件交换机,最多支持16个端口,每个端口的峰值带宽为8GB/sec。
可更换的填充层,最多支持4个虚拟通道共享1个全带宽端口。
可变的报文尺寸,从(256位×4个周期)到(512位×8个周期)。
可变的消息大小,从32字节到4千字节。
使用 Round robin 机制进行报文调度。
支持 Intel(Altera)的 FPGA 芯片/板卡及设计工具,目前尚未在其他厂家设备上进行部署,但代码中没有任何内容可以阻止移植到其他设备中。
微软亚洲研究院网络研究组已使用 SiliconNet 参考设计开发了多个项目,经验证,FPGA,SSD 和 GPU 等多个数据中心资源都可以很好地与该设计配合使用。
欢迎大家使用 SiliconNet!我们在GitHub页面(https://github.com/microsoft/DUA)提供了有关如何构建,如何将 SiliconNet 与其他项目集成,以及如何与社区进行协作的详细信息。欢迎大家使用,并且通过邮箱 dua@microsoft.com 与我们交流心得。