【专利解密】微软发明的GPU与FPGA之间的数据传输方案

【嘉德点评】微软发明的GPU与FPGA进行数据传输的方法,不仅可以带动基于FPGA进行人工智能芯片设计的发展,同时也可以加快深度学习技术发展的步伐

集微网消息,2018年5月,在Bulid大会上,微软宣布 Project Brainwave 开放预览,这是一种用于深度神经网络处理的架构,可以用于Azure与边缘环境,并且可以让Azure成为实时运行人工智能最快的云平台。

为什么微软要基于FPGA来进行人工智能芯片设计呢?这是因为当时微软的搜索引擎都是依靠CPU驱动,尽管英特尔等公司不断改进CPU,但是这些芯片还是不能满足微软的需求。而此时恰好FPGA能弥补这个不足。

图形处理单元(GPU)已经被用于图形应用许多年,近年来也被应用于其他例如图形处理、搜索以及其他一般的应用。虽然FPGA和GPU均可以被视为专用处理器,但是在某些场合,如果FPGA与GPU之间可以进行通信以及任务的共享、转交,会更加高效的完成任务,这也是基于FPGA设计人工智能芯片的重要设计方案之一。

为了实现FPGA与GPU之间的通信,微软在2013年8月16日申请了一项名为“GPU和FPGA组件之间的直接通信的方法和系统”的发明专利(申请号:201380044351.6),申请人为微软技术许可有限责任公司。

根据该专利目前公开的资料,让我们一起来看看这项FPGA与GPU之间的通信技术吧。

如上图,为用于GPU和FPGA组件之间直接通信的系统框图,系统100包括存储计算机指令的存储器、中央处理单元(CPU)102、图形处理单元(GPU)104和现场可编程门阵列(FPGA)106,这些部件通过总线进行连接,传输数据包括经由PCIe交换机在GPU和FPGA之间直接传输数据。

而要达到数据传输的目的,必然不可避免要对于数据在硬件中进行编址,也就是例如基于虚拟存储器存储的数据,被存储在不连续的块中的数据的物理地址中时,需要进行地址编码。当数据在GPU与FPGA之间传输时,数据可以从FPGA的存储器传输到GPU中,由于采用了编址,因此也就不会发生数据错位、丢失等问题。

在GPU和FPGA通信中,也分为直接通信和间接通信两种方式,首先我们来看看间接通信方式。

如上图,为GPU和FPGA组件之间间接通信的系统示意图,如图所示,数据202经由GPU、快速PCI交换机、CPU和CPU存储器,在GPU存储器和FPGA存储器之间交换。这是一个间接的路径,由于在GPU和FPGA之间经过了CPU,因此也被称为GPU-CPU-FPGA传输。

这种间接传输的方式,虽然可以保证数据在GPU和FPGA之间共享,但是由于数据经过了两次PCIe交换机并由于操作系统和CPU存储器硬件两者的等待时间加时,因此增加了通信等待时间和操作系统的开销。

接着,我们来看看GPU和FPGA组件之间直接通信的流程图,如上图所示,首先要获取标识用于直接访问FPGA的存储器的地址的虚拟指针,例如FPGA驱动程序可以生成标识用于直接访问FPGA中的存储器的地址的虚拟指针。

之后就可以启动虚拟指针到与FPGA外部的GPU相关联的图形处理单元(GPU)驱动程序的传输,经过外部的总线接口,可以直接启动GPU与FPGA之间的数据传输,而无需作为中间操作来将数据存储在中央处理单元的存储器中。

以上就是微软发明的GPU与FPGA之间的数据传输方案,在微软进行基于FPGA的人工智能芯片设计的过程中,FPGA担任着机器学习算法的主要硬件基础。这种在GPU与FPGA之间传输数据的技术,势必会加速人工智能芯片的发展以及加快深度学习技术的发展。

关于嘉德

深圳市嘉德知识产权服务有限公司由曾在华为等世界500强企业工作多年的知识产权专家、律师、专利代理人组成,熟悉中欧美知识产权法律理论和实务,在全球知识产权申请、布局、诉讼、许可谈判、交易、运营、标准专利协同创造、专利池建设、展会知识产权、跨境电商知识产权、知识产权海关保护等方面拥有丰富的经验。

(校对/holly)

发表评论

邮箱地址不会被公开。 必填项已用*标注