sPIN: High-performance streaming Processing in the Network 阅读笔记

Table of Contents

这是一篇来自SCPL@ETHZ组在SC’17上的一篇文章。主要想法是在RDMA网卡上加入一个处理器用来Offloading一部分数据移动任务,并在LogGOPSim与gem5上进行了实验。

原文链接

Motivation

当前高能效处理器组成的高度可扩展的系统发展带来了总线互联的压力。例如在400Gbps的网络中,一个64B的数据包的传输时间只有1.2ns(不考虑帧间距),而即使有了RDMA解决了频繁的CPU中断让网卡直接访问内存也造成了一些瓶颈。例如RDMA将数据接收到一段内存的缓冲区,然后CPU上的应用读取来完成处理,然后写回一段发送缓冲区再发送到网络上,在上下文切换内存带宽以及内存延迟层面都带来了巨大的Overhead。

这里引用一张作者Talk中的图:

spin-1

为了解决这个问题,作者提出了sPIN(SC’17),其实就是在网卡上加了数个小处理器来专门处理数据移动的问题,后续sPIN还提出了RISC-V核实现叫做PsPIN(ISCA’21)

Design

大致架构图如下,其工作主要是给网卡加入了HPU(handler processing units):

spin-2

其中,收到的数据包首先存储到Fast shared memory中,被Scheduler分发到HPU上进行处理,在必要时才通过DMA访问Host主存。

此外,文中还有个小细节提到,HPU可以实现为GPU类似的硬件上下文架构,原文如下:

HPUs can be implemented using massive multithreading to utilize the execution units most efficiently. For example, if handler threads wait for DMA accesses, they could be descheduled to make room for different threads. Only the context would need to be stored, similarly to GPU architectures.

然后,在HPU上,采用了如下编程模型,分别为一个Channel中的Packet的Header、Payload、Completition提供了Handler:

spin-3

Simulation & Result

作者使用了LogGOPSim和gem5。参数上大家可以自行参考原文。大致结果如下:

spin-4

Use Case

作者提到了一下场景的Use Case:

  1. Asynchronous Message Matching
  2. MPI
  3. Distributed RAID Storage

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to Top