今天干脆单独开一篇,讲讲NVLink。
NVLink的诞生背景
上世纪80-90年代,计算机技术高速发展,逐渐形成了英特尔和微软为代表的“Wintel”软硬件体系。
在硬件上,基本上都是围绕英特尔的x86 CPU进行构建。为了能让计算机内部能够更好地传输数据,英特尔牵头设计了PCIe总线。
懂电脑的同学,应该对PCIe非常熟悉。我们的显卡,还有早期的网卡和声卡等,都是插在计算机主板PCIe插槽上工作的。
图片
后来,随着时间的推移,计算机CPU、内存、显卡的性能越来越强大,相互之间传输的数据量也越来越多,PCIe的能力开始出现瓶颈(尽管这个技术也在迭代),传输速率和时延逐渐无法满足需求。
表现最突出的,是显卡(GPU)的通信需求。
本世纪初,游戏产业发展迅速,显卡的升级迭代也很快。当时,为了让游戏体验更加流畅,甚至出现了同时安装2块显卡的情况。
AMD(2006年收购了ATI)那边,把这种多显卡技术叫做Crossfire(交火)。
而英伟达这边,则叫做SLI(Scalable Link Interface,可升级连接界面,也叫“速力”,2007年推出)。
除了个人消费领域之外,科研领域对显卡性能的需求也不断增加。
科学家们使用显卡,不是为了玩游戏,而是为了3D建模,以及执行一些超算任务。
英伟达在不断提升显卡性能的同时,发现PCIe协议严重限制了显卡的对外数据传输。于是,他们开始考虑自创一套体系,用于取代PCIe协议。
2014年,英伟达基于SLI技术,推出了用于GPU高速互连的新协议——NVLink(Nvidia Link)。
图片
英伟达NVLink技术的早期合作对象,是IBM。
为什么不是英特尔或AMD呢?因为PCIe是英特尔牵头搞的,不太想搞NVLink。AMD算是英伟达竞争对手,也不合适。
当时,IBM是超算领域的巨头,而且在技术参数上和英伟达非常匹配,所以双方进行了合作。
英伟达在发布NVLink时指出:
GPU显存的速度快但容量小,CPU内存的速度慢但容量大。因为内存系统的差异,加速的计算应用一般先把数据从网络或磁盘移至CPU内存,然后再复制到GPU显存,数据才可以被GPU处理。
在NVLink技术出现之前,GPU需要通过PCIe接口连接至CPU,但PCIe接口太落后,限制了GPU存取CPU系统内存的能力,对比CPU内存系统要慢4-5倍。
图片
有了NVLink之后,NVLink接口可以和一般CPU内存系统的带宽相匹配,让GPU以全带宽的速度存取CPU内存,解决了CPU和GPU之间的互联带宽问题,从而大幅提升系统性能。
IBM POWER CPU的带宽高于x86 CPU,PCIe瓶颈效应更为明显,所以,他们才非常积极想要和英伟达合作。