|「专利解密」微软发明的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之间的数据传输方案
本文插图

如上图 , 为用于GPU和FPGA组件之间直接通信的系统框图 , 系统100包括存储计算机指令的存储器、中央处理单元(CPU)102、图形处理单元(GPU)104和现场可编程门阵列(FPGA)106 , 这些部件通过总线进行连接 , 传输数据包括经由PCIe交换机在GPU和FPGA之间直接传输数据 。
而要达到数据传输的目的 , 必然不可避免要对于数据在硬件中进行编址 , 也就是例如基于虚拟存储器存储的数据 , 被存储在不连续的块中的数据的物理地址中时 , 需要进行地址编码 。 当数据在GPU与FPGA之间传输时 , 数据可以从FPGA的存储器传输到GPU中 , 由于采用了编址 , 因此也就不会发生数据错位、丢失等问题 。
【|「专利解密」微软发明的GPU与FPGA之间的数据传输方案】在GPU和FPGA通信中 , 也分为直接通信和间接通信两种方式 , 首先我们来看看间接通信方式 。
|「专利解密」微软发明的GPU与FPGA之间的数据传输方案
本文插图

如上图 , 为GPU和FPGA组件之间间接通信的系统示意图 , 如图所示 , 数据202经由GPU、快速PCI交换机、CPU和CPU存储器 , 在GPU存储器和FPGA存储器之间交换 。 这是一个间接的路径 , 由于在GPU和FPGA之间经过了CPU , 因此也被称为GPU-CPU-FPGA传输 。
这种间接传输的方式 , 虽然可以保证数据在GPU和FPGA之间共享 , 但是由于数据经过了两次PCIe交换机并由于操作系统和CPU存储器硬件两者的等待时间加时 , 因此增加了通信等待时间和操作系统的开销 。
|「专利解密」微软发明的GPU与FPGA之间的数据传输方案
本文插图

接着 , 我们来看看GPU和FPGA组件之间直接通信的流程图 , 如上图所示 , 首先要获取标识用于直接访问FPGA的存储器的地址的虚拟指针 , 例如FPGA驱动程序可以生成标识用于直接访问FPGA中的存储器的地址的虚拟指针 。
之后就可以启动虚拟指针到与FPGA外部的GPU相关联的图形处理单元(GPU)驱动程序的传输 , 经过外部的总线接口 , 可以直接启动GPU与FPGA之间的数据传输 , 而无需作为中间操作来将数据存储在中央处理单元的存储器中 。
以上就是微软发明的GPU与FPGA之间的数据传输方案 , 在微软进行基于FPGA的人工智能芯片设计的过程中 , FPGA担任着机器学习算法的主要硬件基础 。 这种在GPU与FPGA之间传输数据的技术 , 势必会加速人工智能芯片的发展以及加快深度学习技术的发展 。


推荐阅读