Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

【转】GenZ,CXL,NVLINK,OpenCAPI,CCIX乱战

1
阅读(5051)

连载目录篇:http://blog.chinaaet.com/justlxy/p/5100061871


纵观数据中心业界,底层技术方面其实正处在一场架构变革的初始点,这场变革就是I/O总线的网络化以及I/O资源的大规模池化。

众所周知,在开放平台下,PCIE是目前高性能I/O设备普遍采用的总线类型,目前已经到Gen4,很快会到Gen5。但是PCIE总线的树形拓扑以及有限的设备标识ID号码范围,导致其无法形成一个大规模网络,这个问题在NVMe盘未普及之前显得不那么是个问题,但是NVMe盘得道广泛应用之后,会占用大量的PCIE同道数量,这使得原本捉襟见肘的PCIE总线资源更加紧张,GPU、NIC、FPGA/ASIC卡的接入数量就会被NVMe盘挤占,虽然可以用PCIE Switch来解决同道数量不够的问题,但是对于PCIE总线设备ID号的不足,PCIE Switch也并没有方便的解决方案,虽然可以用NTB方式来解决,但是这又需要在Host端OS内核底层增加一层驱动,这种对内核的变更使得该方案只适合用在封闭系统里,比如一些企业级存储系统。

PCIE的另外2个问题是,存储器地址空间隔离、不支持Cache Coherency事务。PCIE网络中的地址空间虽然也是64bit,但是其原本设计初衷是该网络的地址空间是私有的,与CPU的地址空间并不是原生融合的,需要地址翻译寄存器来做基地址翻译,然而对于Intel平台,这个翻译靠软件来执行,而且规则也很简单,就是不翻译,维持原有地址。

这样的话,虽然CPU可以直接访问PCIE网络中的地址,而PCIE设备也可以访问CPU地址空间中的地址(比如Host RAM),但是由于PCIE事务层不支持Cache Cohernecy事务的处理,所以PCIE设备端无法缓存CPU地址域中的数据,所以每次都必须去访问Host RAM来获取数据。

设备端无法缓存的话,每次都访问Host RAM有什么问题么?问题就是延迟太高,通过DDR同道直接访问内存延迟在40ns左右,而通过PCIE访问则会在100ns级别,如果是小尺寸访存请求,性能将会比较差。正因如此,对于目前的GPU、FPGA/ASIC等加速卡,普遍采用现将数据从Host RAM拷贝到加速卡上的内部存储器,计算,算完了再拷贝回Host RAM。

很显然,只要两招就能解决上述问题,第一就是将总线速率提升,降低访问延迟,第二就是在物理链路之上增加对Cache Cohernecy(下简称CC)事务的处理,也就是在设备一侧增加一个CC Agent与CPU一侧的Agent交互。关于CC缓存一致性详细底层架构和原理可阅读《大话计算机》一书第6章。

基于上面两个考虑,IBM最早推出了CAPI(Coherent Accelerator Processor Interface)接口,当年我还写了一篇文章来介绍。CAPI1.0接口复用了PCIE物理层、链路层和事务层,并利用PCIE数据包的Payload字段隧道化封装了CC和CAPI控制事务(这两者后文统称CAPI事务),在CPU一侧增加针对CAPI事务的解析处理模块,然后在加速卡芯片一侧,IBM提供CAPI的事务解析逻辑IP用于集成到第三方芯片中。在后来的CAPI版本中,逐渐演化成了OpenCAPI,有了自己的物理、链路、事务层,以及独立的处理模块,与PCIE分离。IBM下一步甚至会用OpenCAPI来连接DDR内存,内存卡上会有一颗OpenCAPI~DDR4/5的桥接芯片来负责适配。IBM不愧为业界大佬,在这方面风范犹存而且先带领大家玩了起来,不过毕竟是廉颇已老,跟风者寥寥无几,GPU/FPGA/ASIC厂商似乎并不是十分买账,毕竟OpenPower的机器在数据中心占比实在是太低了。

时隔4年,Intel也跟了上来,在2019年3月份推出了Compute Express Link(CXL)协议接口,其与CAPI酷似,也是将CXL协议封装到PCIE链路层数据包中传送,并在CPU端的PCIE总控后端按照事务标识分流CXL专属事务给CXL处理逻辑处理。IBM毕竟廉颇已老,如今是牙膏厂Intel的天下,Intel振臂一呼,那都得跟上来。

IBM和Intel各玩各的,这业界不能就让他俩这么单独玩。早在几年前,GenZ(Generation Z)这套协议雏形初现,如今已经是羽翼丰满。GenZ除了具有CAPI和CXL的功能之外,还将总线拓展成了交换式网络,也就是加入了GenZ Switch这个角色,可以将大量的CPU、I/O设备、存储器挂接到GenZ网络上,实现更高的扩展性。GenZ是一个开放组织,其不依赖于任何CPU平台,目前已经有60多家厂商加入了GenZ组织,其中包括Intel的老对手AMD。然而AMD对GenZ似乎不是很上心,不过Intel推出了CXL之后,AMD估计应该心里多少都有点涟漪,我猜测AMD应该不会自己另起炉灶搞一套总线,而应该斩钉截铁的站队GenZ阵营,直接在CPU里继承GenZ主控,或者采用Microchip(收购了Microsemi、PMC)等I/O控制器老牌公司的外置GenZ I/O控制器。

再说说淫威大这边的事。Nvidia给人感觉一直是diaodiao的,GenZ、CXL、人家一个也没看上,也不跟风,而是自己搞了一套NVLINK,而且反扑了IBM,IBM大佬竟然在Power CPU里继承了NVLINK控制器,奇怪的是NV竟然还是OpenCAPI组织成员,但最终却反客为主,够diao吧?NVLINK可以支持CPU-GPU间链路也可以支持GPU-GPU间链路,而且NV diao上加diao,连NVLINK Switch都自己搞出来了,而且还搞出了搭载16个GPU+NVLINK Switch的整机方案:DGX/HGX,以及即将推出的第二代整机平台方案。整个平台满配据说要数百万¥。

现在的时间线是:CAPI->GenZ->NVLINK->CXL。这还没完,ARM平台不掺和进来这出戏就不够精彩。ARM选择了加入另一个开放的访存和I/O网络平台(CCIX)Cache Coherent Interconnect for Accelerators。CCIX酷似GenZ。AMD也在这个平台里。完整的时间线应该是这样的:CAPI->GenZ->CCIX->NVLINK->CXL。

那么,这几员大将,到底谁能在这场架构变革中胜出?冬瓜哥的观点是这样的,OpenCAPI基本不用考虑,IBM的生态目前无法与Intel抗衡,而且OpenCAPI只支持CPU直连,尚未支持OpenCAPI Switch,后续估计也不会搞。CXL嘛,Intel的面子大家还是要给的,加上Intel目前的生态控制力,大家就算是为了规避风险,也必然会选择跟风,所以胜算较大。但是如OpenCAPI一样,CXL目前仅仅只支持CPU点对点直连拓扑,尚未有CXL Switch的打算,不过冬瓜哥猜测,Intel更高概率不会做外部Switch,而Microchip这类外部I/O主控、Expander/Switch公司在这方面更有经验和积累,这块蛋糕给它们来做似乎更加合理,再加上业界都不想让牙膏厂继续一家独大,所以GenZ前景还是非常明朗的,从加入它的众多厂商就可以看出。老牌I/O控制器和Switch厂商Microchip目前加入了GenZ和OpenCAPI,而且是GenZ的核心贡献者,有没有可能将来是CXL+GenZ的融合架构呢?不是没有这个可能,因为在CXL发布时,Intel官方特地邀请了GenZ的发言人,其中似乎有强烈暗示CXL和GenZ应该是趋于融合,前者只管点对点直连,到了外面则交给GenZ。

至于NVLINK,既然NV要diao到底,那谁也拦不住,毕竟GPU集群使用的越来越多,GPU和GPU之间怎么勾搭那是人家自己的事情。CCIX,目前看来前景不是十分明朗,AMD和ARM这对难兄难弟能否引领CCIX独占鳌头,很难说。


原文链接:http://www.sohu.com/a/306325058_671230