DPU的微架构

据说白皮书分两种,一种是给大家讲明白别人为什么是奇葩,而另一种是阐述自己如何要成为奇葩。今年工作特别忙,忘记去看HC34了,应该有很多有趣的内容… 另一方面正在整理一些GPGPU的资料和处理DPU架构的事情,偶然考古到了2008年和2010年的Hotchips.

2010年, 华为大神Bill Lynch(以前Sun搞内存的大神)讲述了Smart Memory for High Performance Network Packet Forwarding, [1]

有这样一张有趣的图,道出了网络处理器对于内存的需求:

DPU的微架构

而遗憾的是时隔十年了,华为很多NP还是在微码架构上玩,导致单芯片同时把这些事情做完的解决方案一直没有出现…

DPU的微架构

看上去很不错的架构遇到了什么问题呢?微码本身写DPI、应用防火墙这些feature就痛苦的要死,要是有ANSI C的支持不就好了么?同样Juniper Trio至今为止还是微码和C-Like programming。而以前的SRX系列防火墙怎么做的?然后网络界为啥还在搞P4这样的DSL,连QoS和防火墙都没法定义,怎么做网络可编程呢?为啥DOCA把那些stateful feature 看的那么重?

网络的CUDA是啥呢?当然最后为了这些功能寻求ANSI C的支持,直接上普通的多核处理器,难怪Pradeep一开始做Fungible一开始就用MIPS Core,但是遗憾的是忘记裁剪核心…

为什么渣说CPU通常是MIMD的因为复杂的逻辑和低延迟容忍度同时吞吐也不算太大,而GPU为了吞吐可以牺牲延迟,自然SIMD了(当然为了一些简单的边界条件加了一点分支成了SIMT,也是非常出色的设计)。但DPU这个为止,延迟和吞吐都不能妥协,那么只能MISD了..想想看为什么呢?再想想看怎么做?

正是在2008年,Cisco在HotChip上有一个The QFP Packet Processing Chip Set[2]

PPE Processing Array包含了40个PPE,每个PPE 4个thread,90nm工艺,你可以理解为它就类似于一个GPU的SM(Streaming MultiProcessor)

对比同期的nVidia G8x 8个TPC,共计16个SM,累计128个Thread,两者间基本一致。而最大的相同点来自于都支持ANSI C编程.. 当然具体的处理内容又有所不同,GPU很多矩阵运算是可以并行的,而且数据间没有依赖。同时GPU的计算分支相对较少,每个Thread处理数据的Cycles相对能够对齐,这样对于merge内存访问可以通过SIMT来做。

而网络处理器则是不行的. 而QFP这些网络处理器,要保证Flow不乱序,同时又要调度好保证大象流和老鼠流都能跑的欢快,所以处理器核心就完全不同了,再来看看当年QFP讲的核,仔细去想想L1 L2 Cache的设计吧

但没想到搞并行那么厉害的nVidia连这个问题都没想明白就要做DOCA…还当然还有跟风的一些用ARM做多核的….想象一下当你们以后要做一个DPU和GPU那样有几千上万个Core同时调度几十万个线程的时候….

最后留一句话:为了解决对可编程能力和性能的追求,除了硬件架构和工艺外,还有编译和算法可以玩出很多有趣的事情来, 都在一些魔鬼般的细节里,哪是一般看架构只知道数处理器有多少个框,数内存有多少根针来算带宽的人懂的… 再来多嘴一句,CPU的缓存是逐级加大的,而nVidia GPU的缓存和寄存器文件呢?那么DPU呢?反正我蠢我也不懂, 去读书了…

Reference

[1]

Smart Memory for High Performance Network Packet Forwarding: https://old.hotchips.org/wp-content/uploads/hc_archives/hc22/HC22.23.325-1-Kumar-Smart-Memory.pdf

[2]

The QFP Packet Processing Chip Set: https://old.hotchips.org/wp-content/uploads/hc_archives/hc20/3_Tues/HC20.26.720.pdf

DPU的微架构》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/312.html