【技术实现步骤摘要】
【国外来华专利技术】主机计算机和FPGA之间的数据通信
[0001]本文中提出的实施例涉及用于主机计算机的应用和现场可编程门阵列(FPGA)的资源的分区(partition of resource)之间的数据通信的方法、主机计算机、FPGA、计算机程序和计算机程序产品。
技术介绍
[0002]一般来说,FPGA是一种集成电路,它设计成在制造FPGA后被配置用于由主机计算机所运行的一个或多个应用。一般使用硬件描述语言(HDL)来指定FPGA配置。
[0003]FPGA包括可编程逻辑块的阵列以及允许将这些块接线在一起的可重新配置的互连的层次结构。逻辑块可被配置成执行复杂的组合功能,或者仅仅实现诸如逻辑“与”门和逻辑“异或”门的简单逻辑门的功能性。逻辑块可进一步包括存储器元件,它们可以是简单的触发器或更完整的存储器块。FPGA可被重新编程为实现不同的逻辑功能,从而允许如在计算机软件中所执行的灵活的可重新配置计算。
[0004]将一个大型FPGA专用于单个应用可能导致FPGA资源的利用率较低。因此,应该以无缝方式支持FPGA上的多租户(multi
‑
tenancy),使得例如,需要(如由FPGA提供的)硬件加速的主机计算机的多个应用能够共享FPGA的内部资源、任何芯片外动态随机存取存储器(DRAM)和主机计算机或计算机与FPGA之间的接口的带宽。此类接口的一个示例是外围组件互连快速(PCIe)接口。
[0005]FPGA的内部资源可通过在多个分区之间静态划分的资源而在两个或更多个应用之间共享,所述分区中 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种用于主机计算机(200)的应用(240a:240N)和FPGA(300)的资源的分区(340a:340N)之间的数据通信的方法,每个分区(340a:340N)被配置成服务于所述应用(240a:240N)中的相应一个应用,并且所述主机计算机(200)被配置成运行所述应用(240a:240N),所述方法由所述主机计算机(200)执行,所述方法包括:通过设置在所述主机计算机(200)和所述FPGA(300)之间的PCIe接口(400)在所述应用(240a:240N)和资源的所述分区(340a:340N)之间传递(S104)数据,其中,每个应用被分配所述PCIe接口(400)的带宽资源的它自己配置的份额,并且在传递所述数据时,根据带宽资源的所有配置的份额将所述PCIe接口(400)的所有带宽资源分布在所述应用(240a:240N)之间。2.如权利要求1所述的方法,进一步包括:在传递所述数据之前,根据带宽资源的所述配置的份额将所述PCIe接口(400)的所述带宽资源分配(S102)给所述应用(240a:240N)。3.如权利要求1或2所述的方法,其中,按照每个数据传输周期,将所述数据从所述主机计算机(200)传递到所述FPGA(300)或从所述FPGA(300)传递到所述主机计算机(200)。4.如权利要求3所述的方法,其中,按照每个数据传输周期,传递一个固定大小的PCIe数据事务。5.如权利要求3或4所述的方法,其中,按照数据传输周期,所述PCIe接口(400)的所有带宽资源共同定义所述固定大小的PCIe数据事务,并且其中,由所述主机计算机(200)将带宽资源的每个配置的份额转译为所述固定大小的PCIe数据事务内的读/写偏移。6.如权利要求5所述的方法,其中,将所述读/写偏移从所述主机计算机(200)传递到所述FPGA(300)。7.如权利要求4至6中任一权利要求所述的方法,其中,在所述主机计算机(200)和所述FPGA(300)之间传递所述数据包括按照每个数据传输周期将一个固定大小的PCIe数据事务转换为至少两个直接存储器访问请求。8.如权利要求7所述的方法,其中,所述PCIe接口(400)由直接存储器访问通道组成,并且其中,存在至少与存在直接存储器访问通道那么多的直接存储器访问请求。9.如权利要求8所述的方法,其中,跨越所有直接存储器访问通道并行实例化所述至少两个直接存储器访问请求,并且其中,根据带宽资源的所述配置的份额将所述数据分布在所述直接存储器访问通道之中。10.如权利要求1至9中任一权利要求所述的方法,其中,所述PCIe接口(400)的所述带宽资源以每个数据传输周期32字节为单位给出,并且其中,所述PCIe接口(400)的带宽资源的每个配置的份额作为32字节的倍数给出。11.一种用于FPGA(300)的资源的分区(340a:340N)和主机计算机(200)的应用(240a:240N)之间的数据通信的方法,每个分区(340a:340N)被配置成服务于所述应用(240a:240N)中的相应一个应用,并且所述主机计算机(200)被配置成运行所述应用(240a:240N),所述方法由所述FPGA(300)执行,所述方法包括:通过设置在所述FPGA(300)和所述主机计算机(200)之间的PCIe接口(400)在所述应用(240a:240N)和资源的所述分区(340a:340N)之间传递(S204)数据,其中,每个应用被分配所述PCIe接口(400)的带宽资源的它自己配置的份额,并且在传递所述数据时,根据带宽资
源的所有配置的份额将所述PCIe接口(400)的所有带宽资源分布在所述应用(240a:240N)之间。12.如权利要求11所述的方法,其中,按照每个数据传输周期,将所述数据从所述主机计算机(200)传递到所述FPGA(300)或从所述FPGA(300)传递到所述主机计算机(200)。13.如权利要求12所述的方法,其中,按照每个数据传输周期,传递一个固定大小的PCIe数据事务。14.如权利要求12或13所述的方法,其中,按照每个数据传输周期,所述PCIe接口(400)的所有带宽资源共同定义所述固定大小的PCIe数据事务,并且其中,带宽资源的每个配置的份额对应于所述固定大小的PCIe数据事务内的读/写偏移。15.如权利要求14所述的方法,其中,将所述读/写偏移从所述主机计算机(200)传递到所述FPGA(300),并通过所述FPGA(300)写入在寄存器堆中。16.如权利要求15所述的方法,其中,对于从所述主机计算机(200)传递到所述FPGA(300)的数据,根据所述寄存器堆中的所述写偏移将所述数据分发到所述分区(340a:340N)。17.如权利要求11至16中任一权利要求所述的方法,其中,所述FPGA(300)包括双缓冲区,并且其中,在双缓冲区中将所述数据重新排序。18.如权利要求14或16结合权利要求17所述的方法,其中,对于从所述主机计算机(200)传递到所述FPGA(300)的数据,在分发到所述分区(340a:340N)之前,根据所述寄存器堆中的所述写偏移将所述数据重新排序。19.如权利要求14或16结合权利要求17所述的方法,其中,对于从所述FPGA(300)传递到所述主机计算机(200)的数据,在从所述FPGA(300)传递到所述主机计算机(200)之前,根据所述寄存器堆中的所述读偏移将所述数据重新排序。20.如权利要求11至19中任一权利要求所述的方法,其中,所述PCIe接口(400)的所述带宽资源以每个数据传输周期32字节为单位给出,并且其中,所述PCIe接口(400)的带宽资源的每个配置的份额作为32字节的倍数给出。21.如权利要求11所述的方法,进一步包括,对于从所述FPGA(300)传递到所述主机计算机(200)的数据:在传递所述数据之前,接收(S202)根据带宽资源的所述配置的份额将所述PCIe接口(400)的所述带宽资源分配给所述应用(240a:240N)的信息。22.一种主机计算机(200),它用于所述主机计算机(200)的应用(240a:240N)和FPGA(300)的资源的分区(340a:340...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。