历史上的今天
今天是:2024年10月24日(星期四)
2020年10月24日 | 微软发明的GPU和FPGA之间的数据传输方案
2020-10-24 来源:爱集微
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之间传输数据的技术,势必会加速人工智能芯片的发展以及加快深度学习技术的发展。
史海拾趣
|
求求告诉我应用程序是什么位置?用来解决Language Files (*.txt, *.tgz) are missing! lang_chs.txt 和lang_std.txt要拷贝到与应用程序相同的目录下。 我几乎所有目录都试验过了,好像不行 应用程序目录在什么位置?还是方法不对… 查看全部问答> |
|
求s3c6400开发板 porting wince6.0下wifi驱动 我们是威盛wifi代理商,目前威盛有porting s3c6400/wince6.0下驱动的计划,现在有6400的bsp,但是没有开发板来调试,所以发帖求6400板子,首先声明是借用!可直接给我电话:15889605893 龚生… 查看全部问答> |
|
jonathan@chinaeejob.com 1. S/W Engineer (Codec) 1) 4+ years working experience of video, audio codec development 2) Candidates should have strong knowledge and hands-on experience on MPEG-2/4, H.264, AAC/AAC+ algorithm 3) C/C+ ...… 查看全部问答> |
|
有谁能够给小弟讲讲,要完成一个ARM工程需要那些软件??比如51需要keile 4 和仿真软件Proteus 。帮下吧。。正在迷茫中。也可以举一个例子。完成一个简单的工程的步骤。谢谢了。。… 查看全部问答> |




