1、1一种非阻塞多 VP 共享缓冲区的描述符提交机制摘要:针对 NIC 芯片资源和面积受限的特点,设计了一种资源占用少的多 VP 共享缓冲区的描述符提交机制 DAMQ-PD,设计了地址队列记录每个数据的存储地址,结合每个 VP 的头尾指针,将各 VP 分散存储于共享缓冲区的数据链接起来,实现了写、读数据的流水操作.设计了启发式信用管理机制 HCM,按需动态给各 VP 分配信用,自动在 PIO 和 DMA 这两种描述符提交方式间切换,避免无信用可分配时可能造成对用户进程的阻塞.分析和模拟结果表明,DAMQ-PD 资源占用少、缓冲区利用率高、读写流水、消息发射率高,满足了用户进程提交描述符对低延迟和大
2、容量的性能要求. 关键词:描述符;DAMQ;信用管理;PIO;DMA;消息发射率;低延迟 中图分类号:TP338 文献标识码:A An Unblocking Descriptor Injection Method Based on Multi-VP Shared Buffer LIU Lu, ZHANG He-ying, ZHANG Lei, CAO Ji-jun, DAI Yi (College of Computer, National Univ of Defense Technology, Changsha, Hunan 410073, China) Abstract: This pap
3、er proposed a novel multi-VP shared buffer named DAMQ-PD with mixed PIO and DMA for descriptor 2injection on NIC chip to decrease the memory and area requirement of statically allocating buffer among multiple virtual ports (VP) . An address queue was used to record the address of every data in the s
4、hared buffer. Combining each VPs head pointer and tail pointer, each VPs data can be linked in the shared buffer according to input sequence. By doing so, pipelining reading and writing of the shared buffer can be implemented. A heuristic credit management method was also proposed to distribute cred
5、its according to the need of each VP, which can automatically switch descriptor injection method from PIO to DMA or vice versa, thus avoiding block execution of user process when no credit is available. Analyses and simulations show that DAMQ-PD achieves high buffer utilization, pipelining write and
6、 read, high message issue rate, thus satisfying the low latency and large capacity performance requirement of descriptor injection on NIC. Key words: descriptor; DAMQ; credit management; PIO; DMA; message issue rate; low latency 处理器时钟频率达到 4 GHz 后,再依赖减小尺寸提升主频来提高处理器性能的做法变得越来越困难,业界转而利用在单处理器芯片上集成多个核,通过提
7、高并行执行度来提升处理器的性能.VLSI 工艺的进步支持这种技术路线的演进.依靠核数的堆叠,处理器的性能一直在持续攀升,3并将继续按摩尔定律发展. 随着单个处理器及单个计算结点的计算性能不断提高,集成了成千上万个计算结点的 HPC(High Performance Computer)的峰值性能也不断提高,但是由于技术和成本等原因,HPC 的访存性能、I/O 性能和互连网络性能的提升速度却远低于计算性能提升的速度,导致强大的计算能力与较低的访存能力、I/O 能力和结点间通信能力之间的不匹配,实际运行的大型并行应用程序的并行效率一般不超过 HPC 峰值性能的 20%1,大量的计算能力和功耗白白浪费
8、了,这就是目前制约 HPC 发展的“存储墙” “I/O 墙”和“通信墙”问题. 近期的 HPC 系统中2-6,连接结点的互连网络的点点带宽约为 10 GB/s,延迟约为 700 ns,远不能满足通信密集型并行应用程序的通信开销和同步开销对通信性能的要求.对比近期 HPC 计算结点访存带宽约为 50 GB/s,访存延时约为几 ns,结点的“通信/计算比”远小于结点的“访存/计算比” ,互连网络成了限制 HPC 并行性能发挥的瓶颈.为了应对互连网络面临的严峻挑战,人们对互连网络进行了大量深入研究,使互连网络成为 HPC 领域的研究热点. 互连网络的通信性能直接影响并行计算的加速比和效率.带宽、延迟
9、和消息发射率是评价互连网络性能的主要指标,其中延迟和消息发射率指标直接影响小粒度消息和结点间同步通信的性能.消息的通信延迟可用下式表示:Tcomm=Ts+Tt+Tr.式中,Tcomm 是消息的通信延迟,Ts 是启动开销,Tt 是传输延迟,Tr 是接收开销.Tt 为消息长度除以带宽并加上传输线路的延时,Ts 和 Tr Tt,取决于通信机制及其实现.从上式可看4出,为了降低互连网络的通信延迟,努力减小消息传输的启动开销是极其关键的. 1 两种描述符提交机制的比较 用户进程通常向网络接口卡(NIC,Network Interface Card)提交描述符启动一个消息的传输.一个描述符由消息传输的类型
10、、长度、源地址、目的地址和控制信息等组成,描述符本身是变长的,一般大于 16 字节,不超过 128 字节.传统的通信机制7-8采用 DMA 方式将描述符提交到 NIC,如图 1 所示. 从图 1 可以看出,采用 DMA 方式提交描述符发送一个消息需要 9 个步骤:在主存中准备好数据;在主存中准备好描述符;执行 PIO写向 NIC 置门铃标志;转入描述符预取逻辑;NIC 启动 DMA 读描述符;描述符传回 NIC;NIC 启动 DMA 读消息数据;数据传回 NIC;NIC发送数据.这种复杂的描述符提交过程明显增加了消息传输的启动开销,尤其不利于长度只有几到几十字节的小粒度消息的传输延迟性能. D
11、MA 方式提交描述符需要执行 1 次 PIO 写+1 次 DMA 读才能把描述符提交给 NIC.跨越 I/O 总线的 DMA 读的延迟很大, PCIE2.0 总线约费时600 ns,HT2.0 总线约费时 500 ns,占据了启动开销的大部分.经过研究,人们提出了改进方法,采用 PIO 方式提交描述符,以期减小启动开销,如图 2 所示. 从图 2 可以看出,采用 PIO 方式提交描述符发送一个消息的处理过程减少为 6 个步骤:在主存中准备好数据;执行数次 PIO 写,把描述符写入 NIC;转入描述符处理逻辑;NIC 启动 DMA 读消息数据;数据传回 NIC;NIC 发送数据.对比 DMA 方
12、式提交描述符,PIO 方式提交5描述符多执行了几次 PIO 写,但减少了 1 次 DMA 读操作.几次 PIO 写可以利用处理器提供的写合并机制9进行合并,只比 1 次 PIO 写增加了少许时延,远小于 1 次 DMA 读的费时,采用 PIO 方式提交描述符无疑是启动开销最小的描述符提交方式.在图 2 中,进程直接把描述符写入 NIC,NIC消费描述符的速度一般慢于进程注入描述符的速度,NIC 需要配置一定容量的缓冲区用于缓存不能及时处理的描述符,进程与 NIC 间基于信用对描述符的提交进行流控. 对比 DMA 和 PIO 这两种描述符提交方式,虽然 DMA 方式的消息启动开销大,但 DMA
13、方式有一个优势,它的描述符发送队列设置在计算结点的主存中,可根据需要把容量设置得很大,有能力容纳用户进程突发性提交大量的描述符,不会阻塞进程的执行.使用 PIO 方式时,由于硬件资源的限制,NIC 上设置的描述符缓冲区的容量是有限的,远小于 DMA 方式描述符发送队列的容量,很容易就被写满了,当 NIC 上描述符缓冲区已满而用户进程仍有描述符要提交时,就会阻塞用户进程的执行,并且用户进程会循环地执行 PIO 读查询 NIC 的描述符缓冲区是否非满以决定能否提交描述符,而这种操作将会挤占 I/O 总线的带宽,削弱消息数据的传输能力.因此有必要设计一种新的描述符提交机制,能综合 DMA 和 PIO
14、两种描述符提交方式的优点,既能得到最小的描述符提交延迟,又能满足用户进程对描述符缓冲区的大容量需求. 用户级通信使用虚端口(Virtual Port,以下简称 VP)机制虚拟化NIC 硬件通信资源,用户进程直接访问与之映射的 VP 与 NIC 进行交互,旁路操作系统,减少通信操作的软件层开销.每个 VP 要占用一定的硬件6资源,NIC 支持的 VP 数不是越多越好,但一般应大于计算结点所包含的全部处理器的核数之和.当 NIC 支持的 VP 数较少时,可为每个 VP 设置独立的、相互隔离的描述符缓冲区,或者将一个缓冲区静态分割为独立的区域,为每个 VP 分配固定的区域.这种静态分配多队列 SAM
15、Q (Statically Allocated Multiple-queue)结构的优点是实现简单,有利于缓冲区读写控制、描述符消费公平仲裁调度及 VP 信用管理的硬件逻辑实现.缺点是缓冲区利用率不高,尤其在 VP 之间描述符注入流量不均衡的情况下,注入描述符少的 VP 即使有空闲的缓冲区也不能被注入描述符多的 VP 使用. 随着 HPC 峰值性能的快速提高,需要提高系统组装密度以避免系统中机柜数的爆炸式增长,单个计算结点内集成的处理器个数越来越多,从以前的 2 个增加到 48 个,处理器的核数也越来越多,目前正从810 核向更多发展,这势必要求 NIC 支持更多的 VP 数.在这种情况下,为
16、 VP 静态分配独占的描述符缓冲区,将会占用大量的芯片存储资源和面积资源,增加芯片的功耗.为了减少资源占用,提高缓冲区利用率,有必要考虑实现多 VP 共享描述符缓冲区. 文献10介绍了一种应用于互连网络中交换机或路由器的多VC(Virtual Channel)动态共享缓冲区机制 DAMQ-PF,所有 VC 的 flit数据被随机缓存在共享缓冲区中,并额外设置了与共享缓冲区相同深度的地址缓冲区和空闲地址缓冲区,用于记录各 VC 下一个 flit 的存放地址,提供新 flit 将写入的地址.每个 VC 都维护了一个地址链表,可把随机存放在共享缓冲区的该 VC 的 flit 数据顺序读出.DAMQ-
17、PF 机制资源占7用少、缓冲区利用率高、读写延迟低、吞吐率高,可满足基于 flit 交换的片上网络的性能要求.本文对 DAMQ-PF 机制加以改进,提出了一种混合PIO 和 DMA 多 VP 共享缓冲区的描述符提交机制 DAMQ-PD(DAMQ with PIO& DMA) ,可实现对多 VP 共享的描述符缓冲区的连续写、连续读,具有低延迟高吞吐率的特征.信用管理模块负责总发送信用的动态计算和实时分配,对描述符的 PIO 提交进行流控.各 VP 在主存中设置独占的描述符发送队列,当 PIO 方式耗尽发送信用时,进程转而使用 DMA 方式提交描述符,将描述符写入主存描述符发送队列,再由 NIC
18、使用 DMA 方式把描述符读回 NIC,克服了单纯使用 PIO 提交描述符可能产生的进程阻塞问题. 本文其余部分的组织结构如下:第 2 节详细介绍 DAMQ-PD 机制各部分的实现,第 3 节介绍该机制的性能分析与模拟结果;第 4 节给出结论. DAMQ-PD 也使用 round-robin 方式调度各 VP 间的描述符预取. 3 性能分析和模拟结果 我们用 verilog 实现了 DAMQ-PD 机制,分析了 DAMQ-PD 缓冲区的利用率、资源占用等性能,并与 SAMQ 进行对比.给出了读写速度等时序图,分析和模拟结果表明 DAMQ-PD 的读写具有全流水、高吞吐率的特点. 假设有 N 个
19、 VP 共享缓冲区,SAMQ 为每个 VP 分配的缓冲区深度为M,DAMQ-PD 分配的共享缓冲区深度为 P,每个 VP 的主存描述符发送队列深度为 Q.在 NIC 中,SAMQ 需要的存储单元数目为 N*M,DAMQ-PD 需要的存储单元数目为 P.SAMQ 中每个 VP 能够发送的最大 flit 数目为M+Q,DAMQ-PD 中每个 VP 能够发送的最大 flit 数目为 P+Q. 83.1 缓冲区占用的资源 当缓冲区的存储单元数目相同时,假设为 N*M 个,即 N*M=P.若N1,则 MP,表明 DAMQ-PD 中 VP 能够发送的 flit 数目大于 SAMQ.对于NIC 而言, VP
20、 的数目大于 1.上述分析表明,在缓冲区占用资源相同的情况下,DAMQ-PD 的 VP 能够发送更多的描述符.在能够发送的 flit 数目相同的情况下,DAMQ-PD 需要的缓冲区资源比 SAMQ 少. 3.2 缓冲区利用率 假设某个时段内有 n 个 VP 需要发送数据,nN,则 SAMQ 的最大缓冲区利用率为 n/N,DAMQ-PD 的最大缓冲区利用率为 1,表明当只有部分 VP有数据发送时,DAMQ-PD 的缓冲区利用率大于 SAMQ.在 NIC 系统中,因为应用程序的不同,VP 的使用数量及负载并不均衡,因此采用 DAMQ-PD 机制具有更高的缓冲区利用率. 上述性能基本上都是 DAMQ
21、-PD 的信用管理机制决定的,在 DAMQ-PD的实现中,为最大限度使用共享缓冲区,信用分配采取按需分配,先申请先得的原则,没有按通常的做法为每个 VP 预留私有信用,某个 VP 如果没有信用了,就自动从 PIO 方式转入 DMA 方式提交描述符,不会因等待信用而阻塞描述符的提交或“饿死”某个 VP. 3.3 读写性能 本节将测试多个 VP 提交描述符时 DAMQ-PD 的输入速率和输出速率.各 VP 同时开始提交描述符,每个时钟周期在0,3之间产生一个随机数k,相应地,VPk 将数据 k 写入 NIC.在共享缓冲区的输出端,如果某个 VP在共享缓冲区中有不少于 4 个数据,将被读出,每次连续
22、读出某个 VP 的94 个数据. 如图 9 所示,模拟结果表明,只有在起始的十几拍周期内,由于要保证输出描述符的原子性,各 VP 的 flit 数达到 4 才能参与输出仲裁,出现了少许的输出空白期,在之后的周期,只要输出速率等于输入速率,那么 DAMQ-PD 的数据写入和数据读出都是流水的. 3.4 消息发射率 消息发射率定义为 NIC 在单位时间内能处理消息的最大数目,反映了 NIC 对小粒度消息的支持能力.配置 NIC 内部时钟频率为 500 MHz,数据宽度 256 位,共享缓冲区深度为 1 024,以 16lane PCIE3.0 总线连接HOST,工作频率 8 GHz,总的单向带宽为
23、 16 GB/s.如果软件执行 PIO 写能达到 PCIE3.0 的最大带宽,折算到 NIC 中,大致相当于每 4 拍向共享缓冲区中写入 1 个描述符.假设 NIC 最快每 4 拍可以处理一个描述符,则理论上消息发射率最大为 125 M/s.使用不同 VP 数模拟得到的消息发射率如表 1 所示.可以看出,只要 VP 数大于等于 2,DAMQ-PD 的消息发射率都基本接近理论上限值 125 M/s.VP 数=1 时,消息发射率只有 96 M/s,这是因为用户进程要等信用值耗尽才向 NIC 申请新的信用,而一次 PIO 读需耗时 600 ns,在这个时间段用户进程不能发送描述符,降低了消息发射率.
24、而使用多 VP 时,单个 VP 申请信用的过程可以与其他 VP 提交描述符的过程重叠,不会降低总的消息发射率. 将 DAMQ-PD 的模拟结果与 Cray 最新的 XC 系列互连网络的 Aries NIC芯片的消息发射率进行比较.Aries NIC 采用 PCIE 3.0 总线与 HOST 连接.表 1 中 Aries NIC 的消息发射率数据取自文献4.可以看出,当只有一10个进程向 Aries NIC 注入消息时,其消息发射率仅能达到 7.5 M/s;有 4个进程同时注入消息时,能达到 25 M/s;当活跃进程数为 21 时,才能达到最大的消息发射率 120 M/s.对比可知,DAMQ-P
25、D 与 Aries NIC 的最大消息发射率相当,但 DAMQ-PD 仅在使用少数 VP 时就能达到最大消息发射率,性能优于 Aries NIC. 4 结 论 面向片上网络应用设计了一种读写全流水高吞吐率的多 VP 共享缓冲区机制 DAMQ-PD,综合了 PIO 和 DMA 两种描述符提交方式的优点.分析和测试结果表明,DAMQ-PD 在资源占用、缓冲区利用率、读写效率等方面具有良好的性能.对基于通用 I/O 总线与主机连接的 NIC,在不同的 VP 使用数、不同的流量模式下,均能获得最小的描述符注入开销,且不会阻塞用户进程的执行.DAMQ-PD 物理实现简单,能较方便地扩展到更多 VP 数的
26、应用中.目前,DAMQ-PD 已经被应用于自研的新一代高性能互连网络接口芯片中,满足了多 VP 提交描述符对低延迟和大容量的性能要求. 参考文献 1 袁伟,张云泉,孙家昶,等.国产万亿次机群系统 NPB 性能测试分析J.计算机研究与发展,2005,42(6):1079-1084. YUAN Wei, ZHANG Yun-quan, SUN Jia-chang, et al. Performance analysis of NPB benchmark on domestic tera-scale cluster systemsJ. Journal of Computer Research and Development, 2005, 42(6): 1079-1084.(In Chinese) 2 BARIGHTWELL R, PEDRETTI K T, UNDERWOOD K D. Seastar