CN104583933B - Gpu和fpga组件之间的直接通信的方法和系统 - Google Patents

Gpu和fpga组件之间的直接通信的方法和系统 Download PDF

Info

Publication number
CN104583933B
CN104583933B CN201380044351.6A CN201380044351A CN104583933B CN 104583933 B CN104583933 B CN 104583933B CN 201380044351 A CN201380044351 A CN 201380044351A CN 104583933 B CN104583933 B CN 104583933B
Authority
CN
China
Prior art keywords
fpga
gpu
memory
data
transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380044351.6A
Other languages
English (en)
Other versions
CN104583933A (zh
Inventor
R·比特那
E·S·卢夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN104583933A publication Critical patent/CN104583933A/zh
Application granted granted Critical
Publication of CN104583933B publication Critical patent/CN104583933B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Bus Control (AREA)
  • Advance Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

系统可包括图形处理单元(GPU)和现场可编程门阵列(FPGA)。系统还可包括总线接口,该总线接口在FPGA的外部并被配置为直接在GPU和FPGA之间传输数据,而无需作为中间操作来将数据存储在中央处理单元(CPU)的存储器中。

Description

GPU和FPGA组件之间的直接通信的方法和系统
背景
计算设备的用户已经经历了关于时钟缩放的困难,并且开发者和用户由此已经在主流中探索并行计算。多核中央处理单元(CPU)、图形处理单元(GPU) 和现场可编程门阵列(FPGA)越来越多地被用于计算需求。
概述
根据一个大体方面,系统可包括位于计算设备上的一个或多个处理器以及存储可由这一个或多个处理器执行的指令的至少一个有形计算机可读存储介质。可执行指令可被配置成使得计算设备获得标识用于直接访问现场可编程门阵列(FPGA)的存储器的地址的虚拟指针。此外,计算设备可启动虚拟指针到与FPGA外部的图形处理单元(GPU)相关联的GPU驱动程序的传输。此外,计算设备可经由FPGA外部的总线接口启动GPU和FPGA之间数据的直接传输,而无需作为中间操作来将数据存储在中央处理单元(CPU)的存储器中。
根据另一方面,发起对在图形处理单元(GPU)和现场可编程门阵列 (FPGA)之间传输数据的请求。数据可经由FPGA外部的总线接口在GPU和 FPGA之间被直接传输,而无需作为中间操作来将数据存储在中央处理单元 (CPU)的存储器中。
根据另一方面,系统可包括图形处理单元(GPU)和现场可编程门阵列 (FPGA)。系统还可包括总线接口,该总线接口在FPGA的外部并被配置为直接在GPU和FPGA之间传输数据,而无需作为中间操作来将数据存储在中央处理单元(CPU)的存储器中。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的概念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。一个或多个实现的细节在以下的附图和说明书中阐述。其他特征将从说明书和附图以及权利要求书中显而易见。
附图
图1是用于GPU和FPGA组件之间直接通信的示例系统的框图。
图2是用于GPU和FPGA组件之间间接通信的示例系统的框图。
图3是用于GPU和FPGA组件之间直接通信的示例系统的框图。
图4是用于GPU和FPGA组件之间直接通信的示例系统的框图。
图5是示出用于GPU和FPGA组件之间直接通信的示例系统的示例操作的流程图。
图6是示出用于GPU和FPGA组件之间直接通信的示例系统的示例操作的流程图。
图7是示出用于GPU和FPGA组件之间直接通信的示例系统的示例操作的流程图。
具体实施方式
I.介绍
多核中央处理单元(CPU)、图形处理单元(GPU)和现场可编程门阵列 (FPGA)可被用于填充时钟速率和预期性能增加之间遗留的计算间隙。这些组件类型中的每一个可提供稍微不同的属性。例如,CPU可向编程和本地浮点支持的容易性提供复杂且麻烦的存储器系统以及显著的操作系统开销。
例如,GPU可向细粒度单指令、多数据(SIMD)处理和本机浮点提供流存储器体系架构和更困难的编程环境。例如,FPGA可提供处理、控制和对接方面的有利的灵活度,同时伴有稍微麻烦的浮点支持的更高的编程困难和更低的时钟速率。
图形处理单元(GPU)已经被用于图形应用许多年,诸如游戏和计算机辅助设计。近来,GPU已经被用于其它任务,诸如图形处理、搜索和其它更一般的应用。现场可编程门阵列(FPGA)已经被用于各种专用计算任务。例如,虽然FPGA和GPU两者均可被视为专用处理器,但是每一方可在某些事物上比其它方更好地运作。由此,例如,在两者之间能够实现直接通信路径可以是有利的,该路径允许每一方执行其最适应的任务,并接着将计算任务转交到另一方以供进一步处理。
作为另一示例,在开发过程中算法从一方移植到另一方有些时候可以是期望的,因为计算、金钱或其它压力影响期望的实现。因此,能够将数据直接从一方发送到另一方,使得移植过程可被增量式地处理可以是有利的,从而允许算法部分地在FPGA上运行并部分地在GPU上运行。
例如,这个传输可基于将主个人计算机(PC)使用为用于数据的中间停止点来被实现。然而,这种类型的传输可以是相对慢的、更资源密集的且可能不能扩展到较大的系统。在此讨论的示例技术可提供直接通信,而无需必须通过主PC的主存储器。例如,用于提供FPGA和GPU之间直接通信的技术可提供更低的等待时间传输、更高的带宽传输和/或更高的聚集系统带宽。
在此讨论的示例实施例可提供用于直接在GPU和FPGA之间通信的能力。例如,GPU可使用PCIe(快速外围部件互连)或快速PCI来与FPGA直接通信,PCIe或快速PCI可以是例如在PC平台中提供高带宽连接的总线接口。
II.示例操作环境
在此讨论的特征被提供为可用数据处理领域的技术人员所理解的多种不同方式来实现,而不背离在此的讨论的精神。这样的特征被解释为仅为示例实施例特征,并且不旨在被解释为限制到仅为那些详细的描述。
如进一步在此讨论的,图1是用于GPU和FPGA组件之间直接通信的系统100的框图。如图1中显示的,系统100可包括位于计算设备上的一个或多个处理器。系统100可包括存储可由一个或多个处理器执行的指令的至少一个有形计算机可读存储介质。系统100可包括至少一个中央处理单元(CPU)102。
系统100可包括图形处理单元(GPU)104和现场可编程门阵列(FPGA) 106。系统100还可包括总线接口108,该总线接口108在FPGA 106的外部并被配置为直接在GPU 104和FPGA 106之间传输数据,而无需作为中间操作来将数据存储在中央处理单元(CPU)的存储器110中。根据一示例实施例,总线接口108可包括快速外围部件互连(PCIe)接口。根据一示例实施例,传输数据可包括经由PCIe交换机在GPU 104和FPGA 106之间直接传输数据。例如,PCIe交换机可被包括在PCIe接口中。
根据一示例实施例,FPGA驱动程序112可被配置成生成标识用于直接访问FPGA106的存储器116的地址的虚拟指针114。例如,存储器116可包括位于FPGA 106外部的一个或多个存储器设备、可内部地位于FPGA 106上的存储器或它们的任意组合。与GPU 104相关联的GPU驱动程序118可被配置成经由与在FPGA 106外部的GPU 104相关联的应用编程接口(API)120来获得虚拟指针114。
在这个上下文中,“虚拟指针”可指可表示电子设备中的地址的值。虚拟指针可被生成为这样一种表示,并可被解释成(例如,用于可例如基于虚拟存储器安排被存储在不连续的块中的数据的)一个或多个物理地址。
与GPU 104相关联的API 120可被配置成基于虚拟指针114来生成FPGA 的存储器116中的一个或多个位置的一个或多个物理地址122。
根据一示例实施例,数据可基于FPGA 106中的存储器116中的一个或多个位置的一个或多个物理地址122被从GPU 104的存储器124传输到FPGA 106 的存储器116。根据一示例实施例,数据可基于FPGA 106中的存储器116中的一个或多个位置的一个或多个物理地址122被从FPGA 106的存储器116传输到GPU 104的存储器124。
例如,存储器124可包括位于GPU 104外部的一个或多个存储器设备、可内部地位于GPU 104上的存储器或它们的任意组合。
根据一示例实施例,数据可基于从GPU 104的存储器124到FPGA 106的存储器116的直接存储器存取(DMA)传输被从GPU 104中的存储器124传输到FPGA 106中的存储器116。
根据一示例实施例,数据可基于从FPGA 106的存储器116到GPU 104的存储器124的DMA传输被从FPGA 106的存储器116传输到GPU 104的存储器124。
根据一示例实施例,FPGA作为生产组件被包括在计算设备中。根据一示例实施例,FPGA作为原型组件被包括在计算设备中。
根据一示例实施例,与GPU 104相关联的GPU驱动程序118可被配置成生成标识用于直接访问GPU 104的存储器124的地址的虚拟指针114,其中GPU 104在FPGA 106的外部。根据一示例实施例,与FPGA 106相关联的FPGA驱动程序112可被配置成经由与FPGA 106相关联的API 126来获得虚拟指针 114。
与FPGA 106相关联的API 126可被配置成基于虚拟指针114来生成GPU 104的存储器124中的一个或多个位置的一个或多个物理地址122。例如,数据可基于GPU 104的存储器124中的一个或多个位置的一个或多个物理地址122被从FPGA 106的存储器116传输到GPU104的存储器124。
例如,数据可基于GPU 104的存储器124中的一个或多个位置的一个或多个物理地址122被从GPU 104的存储器124传输到FPGA 106的存储器116。
根据一示例实施例,数据可基于GPU 104的存储器124中的一个或多个位置的一个或多个物理地址122、基于从FPGA 106的存储器116到GPU 104的存储器的直接存储器存取(DMA)传输被从FPGA 106的存储器116传输到 GPU 104的存储器124。
根据一示例实施例,数据可基于GPU 104的存储器124中的一个或多个位置的一个或多个物理地址122、基于从GPU 104的存储器124到FPGA 106的存储器116的DMA传输被从GPU 104的存储器124传输到FPGA 106的存储器116。
根据一示例实施例,描述符记录128可作为在此描述的虚拟寻址技术的一部分被存储在CPU存储器110中。例如,存储器110可包括位于CPU 102外部的一个或多个存储器设备、可内部地位于CPU 102上的存储器或它们的任意组合。
系统100可具有可访问系统100的用户130。例如,用户130可经由用户输入设备来键入输入。
根据一示例实施例,系统100或其一个或多个部分可包括可被存储在有形计算机可读存储介质上的可执行指令,如下所讨论。根据一示例实施例,计算机可读存储介质可包括任何数量的存储设备以及任何数量的存储介质类型,包括分布式设备。
例如,实体储存库132可包括一个或多个数据库,且可经由数据库接口组件134来访问。数据处理领域的技术人员将理解,存在用于存储本文中所讨论的储存库信息的许多种技术,诸如各种类型的数据库配置(例如关系数据库、分层数据库、分布式数据库)和非数据库配置。
根据一示例实施例,系统100可包括可存储数据的存储器。在该上下文中,“存储器”可包括被配置成存储数据和/或指令的单个存储器设备或多个存储器设备。此外,存储器可跨多个分布式存储设备。存储器(或其一个或多个部分) 还可被内部地包括为一个或多个处理设备(例如,CPU、GPU、FPGA设备) 的部分。
根据一示例实施例,用户接口组件138可管理用户130与系统100之间的通信。用户130可与接收设备140相关联,接收设备140可与显示器142和其它输入/输出设备相关联。例如,显示器142可被配置成经由内部设备总线通信或经由至少一个网络连接与接收设备140通信。
根据示例实施例,显示器142可被实现为平面屏幕显示器、印刷形式显示器、二维显示器、三维显示器、静态显示器、移动显示器、传感显示器(诸如触觉输出、听觉输出以及任何其它形式输出)以用于与用户(例如,用户130) 通信。
根据一示例实施例,系统100可包括网络通信组件144,该网络通信组件 144可管理系统100和可经由至少一个网络146与系统100通信的其它实体之间的网络通信。例如,网络146可包括因特网、至少一个无线网络、或至少一个有线网络的至少其中之一。例如,网络146可包括蜂窝网络、无线电网络或可支持用于系统100的数据传输的任何类型的网络。例如,网络通信组件144 可管理系统100与接收设备140之间的网络通信。例如,网络通信组件144可管理用户接口组件138与接收设备140之间的网络通信。
在该上下文中,“处理器”可包括被配置成处理与处理系统关联的处理指令的单个处理器或多个处理器。处理器由此可包括以并行方式和/或分布式方式处理指令的一个或多个处理器。数据处理领域的技术人员将理解,处理器可被实现为单个组件和/或被实现为可位于系统100内部或外部的分布式单元和/或其元件的任意。
例如,系统100可包括存储可由一个或多个处理器执行的指令的至少一个有形计算机可读存储介质,可执行指令被配置成使至少一个数据处理装置(例如,计算设备)执行与包括在系统100中的各个示例组件相关联的操作,如本文所讨论地。例如,一个或多个处理器可被包括在至少一个数据处理装置中。数据处理领域的技术人员将理解,存在可根据本文的讨论配置的处理器和数据处理装置(例如,计算设备)的许多配置,而不背离这样的讨论的精神。
在本上下文中,“组件”可指的是可被配置成执行某些操作的指令或硬件。这样的指令可被包括在指令的组成群组内,或可跨多于一个群组分布。例如,与第一组件的操作相关联的一些指令可被包括在与第二组件(或更多组件)的操作相关联的指令的群组中。
若干个GPGPU(通用GPU)抽象支持CPU 110和GPU 104之间的显式传输。在此讨论的示例技术提供CPU 110和FPGA 106之间的传输。此外,在此讨论的示例技术可使得能够实现直接GPU-(到)FPGA通信。
例如,GPU到FPGA的通信可由如图2中示出的并将在以下被进一步讨论的通过CPU存储器传输数据来实现。图2是用于GPU和FPGA组件之间间接通信的示例系统的框图。如图2中显示的,数据202经由GPU 104、快速PCI (PCIe)交换机204、CPU 102、CPU存储器110被在GPU存储器124和FPGA 存储器116之间传输并通过CPU 102、PCIe交换机204、FPGA 106传送回。
使用这个间接路径(其在此可被称为GPU-CPU-FPGA传输),数据由此穿过PCIe交换机204两次并遭受操作系统和CPU存储器硬件两者的等待时间惩罚。这种额外的间接可对计算添加通信等待时间和操作系统开销,以及消耗本来可被共享相同通信网络的其它群集元件使用的带宽。
图3是用于GPU和FPGA组件之间直接通信的示例系统的框图。根据一示例实施例,图3可提供用于GPU和FPGA组件之间直接通信的示例系统的概览。在此讨论的示例实施例可提供通过PCIe总线的直接、双向的GPU-FPGA 通信,如图3中显示的。如图3中示出的,数据202移动通过PCIe交换机204 一次并不被复制到系统存储器110中,尤其使得能够实现这些不同的计算元件 (即,GPU 104和FPGA 106)之间更高效的通信,在此可被称为直接GPU-FPGA 传输。
根据一示例实施例,Speedy(快速)PCIe核是可例如与XILINX FPGA 一起使用的FPGA核。例如,Speedy PCIe核可构建在XILINX PCIe IP上以向 FPGA设计者提供到PCIe总线的类似于存储器的接口,该接口可抽象出PCIe 的寻址、传输大小和信息分包规则。例如,分发可包括VERILOG使得这个存储器接口可变成高速DMA引擎,该高速DMA引擎与MICROSOFTWINDOWS 驱动程序一起可提供PC的系统存储器和位于FPGA本地的DDR3(双倍数据速率类型3)之间PCIe总线的全部带宽潜力。
Speedy PCIe设计可提供最小系统影响,同时递送最大性能。数据传输可在被维护在主机的系统存储器中的数个传输描述符记录(例如,图1的描述符记录128)的设置后经由跨PCIe总线的单个写从CPU 102启动。由于系统存储器具有较低的等待时间以及用于CPU的较高的带宽,所以这种安排从处理器卸载工作并可最终通过避免操作系统开销来产生更高的性能。
最小化CPU启动的跨PCIe总线的读和写的数量还可以是有帮助的,因为在实践中,用于单个4字节的写的执行时间通常在250ns到1μs的范围中,而读通常在1μs到2.5μs的范围中。这种由Speedy PCIe核提供的开销节省可直接产生较低的等待时间传输。
在GPU侧上,硬件功能可被隐藏在不透明的、厂商提供的驱动程序后。这种API常规地可仅支持GPU和CPU存储器之间的传输,而非GPU存储器和任意设备的存储器之间的传输。然而,专业级QUADRO和TESLA产品线上的NVIDIA计算机统一设备体系结构(CUDA)库提供对等存储器传输工具。 CUDA是由NVIDIA开发的用于图形和通用处理的并行计算体系结构。这种对等存储器传输工具可能够实现GPU-GPU数据传输,但是不可显式地支持涉及任意PCIe设备(诸如FPGA开发板)的事务。例如,在这样的工具中,GPU 可在其所涉及的任意传输中充当总线主机。
如果GPU 104充当总线主机,则它遵循FPGA 106充当从机以使得能够实现直接GPU-FPGA数据路径。FPGA 106接着将其存储器(芯片上或其它方式) 映射到PCIe总线上,使得GPU 104可直接按需对它读取或写。这种安排产生在以下显示的表I中概览的针对每种传输类型的主机/从机关系。
传输 PCIe主机 PCIe从机
GPU‐CPU GPU CPU
FPGA‐CPU FPGA CPU
GPU‐FPGA GPU FPGA
表I
根据在此讨论的示例实施例,各种旨在用于CPU存储器存取的CUDA操作可被重新用于GPU-FPGA传输的目的。例如,CUDA API可支持页被锁定的 CPU存储器的概念,其可维护恒定物理地址并可由此高效地被GPU的总线主控DMA控制器访问。例如,CUDA可提供用于分配和释放这种存储器的块的类似于malloc()的功能。此外,CUDA还可提供用于页锁定现有的CPU虚拟地址范围的例程(只有在操作系统为指定的虚拟地址范围分配了物理页时才成功)。
例如,这个例程不可在被映射到物理CPU存储器的虚拟地址和那些被 SpeedyPCIe驱动程序映射到FPGA存储器的虚拟地址之间进行区分。此外,由于驱动程序可在锁定模式中映射FPGA页,所以CUDA锁定例程不在这些范围上失败。由此,被映射的指针可作为自变量被传递到CUDA中期待页被锁定的 CPU存储器指针的各种memcpy()样式运算符。由此,Speedy PCIe驱动程序可被实现以允许用户应用获得到被FPGA映射到PICe总线上的物理DDR3的虚拟指针。通过使用这个指针,可使用标准C*ptr记号或其它编程形式的直接操纵来直接访问FPGA的DDR3存储器。例如,这个虚拟存储器指针还可被传递到CUDA页锁定和存储器复制例程,使得GPU直接地向FPGA的DDR3存储器写数据或直接地从FPGA的DDR3存储器读取数据。
根据一示例实施例,CPU在传输中被涉及,但是仅用于初始设置(诸如虚拟到物理地址映射或驱动程序中的GPU DMA配置),但是数据本身通过PCIe 总线在GPU和FPGA之间直接移动。
作为示例实现,用户可选择NVIDIA GEFORCE GTX 580、支持CUDA 4.1 API(除了通过QUADRO和TESLA GPU可用的对等功能之外)的高端顾客 GPU。这个单元可使用至多16个第2.0代PCIe线路,达到至多6.2GByte(G 字节)/Sec(每秒)的吞吐量。可被使用的示例FPGA平台包括具有集成 V6LX240T-1XILINX FPGA的XILINX ML605开发板。这个单元支持具有最大大约1.6GByte/Sec的吞吐量(例如,比GPU慢四倍)的x8线路第1.0代PCIe。图形开发板和FPGA开发板两者均可被插入到运行INTEL六核CPU并支持第 2.0代PCIe x16的商用PC底板中。
例如,可通过使用以上讨论的Speedy PCIe驱动程序将FPGA存储器范围映射到CPU虚拟存储器范围来在CPU和FPGA存储器之间实现传输。虚拟地址范围可接着向操作系统注册为存储器映射的文件。对这样的文件执行标准文件系统Read(读取)和Write(写)操作可引起CPU和FPGA之间的基于DMA 存储器的传输。在这种情况下,FPGA可充当PCIe总线主机,按需发送或请求数据。
GPU和CPU存储器之间的传输可经由cudaMemcpy()接口来完成。因为 CPU存储器可被分配在页被锁定模式中,所以所产生的传输可使用DMA,其中GPU充当主机。
GPU和FPGA存储器之间的传输可通过首先将FPGA存储器范围传递到cudaHostRegister()来执行,其使得CUDA将FPGA存储器看作页被锁定的CPU 存储器。存储器传输可使用cudaMemcpy()以与以上描述的GPU-CPU传输相同的方式来执行,其中GPU充当PCIe总线主机。
以下提供对于快速PCIe接口的讨论。
从XILINX和ALTERA提供的PCIe核接口两者均使用分开的接收(RX) 和发送(TX)接口来操作。如图4中显示的,这些接口单独且并行地操作,虽然它们功能上被链接。例如,被编程的I/O(PIO)读取可用RX接口上的分组来开始并可用TX接口上的一个或多个分组来完成。类似地,总线主控读取操作可用TX接口上的分组来开始并可用RX接口上的一个或多个分组来完成。
TX和RX路径的并行操作可被维护,从而提供并行状态机,每个并行状态机服务其相应的接口。总线主机读取操作是这种并行操作的示例,因为 Speedy核在读取数据在RX接口上返回时维护TX接口上待决的并行主机读取请求。可由XILINX PCIe核以及主机PC来确定可在进行中的主机读取请求的数量。这可被限为32个请求待决。主机读取请求的最大大小可由PCIe树的根复杂性来确定并在BIOS POST时间处被传递到Speedy PCIe核。在示例PCIe 第1.0代系统中,这可以是512字节,其中在任意给定时间允许进行中的32个请求并且其中读取完成等待时间为2.4us。如果足够的PCIe线路被采用,则这个机制可维持512Bytes(字节)*32Requests(请求)/2.4us=6.358GByte/Sec (每秒)的带宽。具体而言,这个数量可由PCIe规范施加的地址边界效应来减少。
非实时操作系统的中断等待时间是可变的,并且有时可以是非常长的。超过1ms的中断等待时间可以是常见的,其可对总线利用/带宽产生影响。尽管硬件中断响应可以比这更快,但是常见的驱动程序模型的结构可导致有意义的活动被推迟,直到多任务调度程序可创建时槽。隐含的是,中断可被最小化为尽可能地不频繁,从而驱动Speedy PCIe使用较大的描述符队列来缓冲DMA散射(scatter)/收集对于典型的4Kbyte(K字节)虚拟存储器页的请求。
例如,PIO可被用于在每个连续的物理存储器页后将新的DMA描述符写到FPGA中来作为对中断进行服务的一部分。然而,PIO的观察到的被维持的带宽在测试平台上可以是2-4Mbyte(兆字节)/Sec(每秒)使用4KBytes的示例页大小以及被最低限度地调整大小为20字节的DMA描述符,用于x8线路第1.0代接口的1.6GByte/Sec(每秒)的DMA数据速率可涉及至少8.39 MByte/Sec(每秒)的DMA描述符传输速率。
描述符带宽可通过将描述符存储在在其中等待时间为较低并且带宽为较高的PC主机上的系统存储器中,并接着使用DMA来将它们传输到FPGA来提供。
图4是用于GPU和FPGA组件之间直接通信的示例系统的框图。如图4 中显示的,Speedy(快速)PCIe硬件设计的示例块被示出,具有PCIe主机402。在顶部是XILINX提供的核404,例如,具有64比特分开的RX/TX接口。上部虚线内的部分包括Speedy PCIe核406,该Speedy PCIe核406包括连接的 RX和TX数据路径。下部虚线包括用户设计408,该用户设计408使用Speedy PCIe来使得能够实现用于板上DDR的完整总线主控接口。
Speedy PCIe核406可向用户设计408提供类似于存储器的接口。从机读取和写请求可达到RX接口上,用户RX进程410对这些请求解码并分别要么转交到用户TX进程412要么写入合适的存储器中。主机写可由用户TX进程 412启动并可包括目标PCIe地址、数据长度和数据有效载荷。主机读取也可由用户TX进程412启动,其可提供目标PCIe地址、数据长度以及返回数据可被写入到其的用户本地地址。当返回数据达到RX接口上时,用户地址用其(经由标记存储器414)来返回,使得用户RX进程410可按与从机写可被处理相同的方式来简单地解码并将其放置在合适的本地存储器中。用户应用可不具有关于PCIe协议规则、分组限制等的知晓。
例如,取决于PCIe提供的高的带宽以及FPGA中相对低的可实现时钟速率,SpeedyPCIe核的本机单词宽度可以是256比特。转换框416、418可在64 比特和256比特表示之间转换。例如,在x8线路第2.0代系统中的3.2GByte/Sec (每秒)的全部潜在带宽处,最小系统时钟速率可以是使用256比特单词的 108MHz。在允许用于数据处理的一些开销周期后,这可依然承担用户以 150-200MHz操作的能力。
Speedy PCIe核406的编码和解码阶段(例如,RX分组解码420和TX分组编码422)可处理用户数据的信息分包,从而确保PCIe协议的所有规则被观察到。分组如图4中示出的遍历RX FIFO 424和TX FIFO 426,并同时穿过时钟域。在FIFO 424、426之上的时钟速率由XILINX PCIe核时钟指示为可在运行时被协商为在62.5MHz到250MHz的范围内。在FIFO424、426之下,Speedy PCIe核406可以用户选择的时钟速率运行;进一步减少施加于用户的设计任务的困难度。
为了对抗潜在的中断和PIO影响,驱动程序可从操作系统(OS)中分配 1MByte物理上连续的系统存储器块并可将这个存储器块的PCIe基地址写到用户设计408中的寄存器。存储器块可被设置为环形队列,其中驱动程序将描述符添加到尾部,并且硬件用户设计从头部移除描述符。在传输的开始时,驱动程序可将DMA描述符写到这个缓冲器中并接着更新FPGA用户设计(408)中的环形队列的尾部。用户设计408可接着生成PCIe主机读取请求来将描述符预取到图4中显示的寄存器和描述符块428内,并可使用这些来启动从DDR 中主机读取或主机写入DDR中。附加的描述符可从系统存储器中快速地获取,保持领先于实际的数据传输。这个示例技术可允许主机具有在系统存储器中相对大的DMA描述符缓冲器,从而潜在地缓解了高中断等待时间和低PIO带宽的问题。
III.流程图描述
在此讨论的特征被提供为可用数据处理领域的技术人员所理解的多种不同方式来实现,而不背离在此的讨论的精神。这样的特征被解释为仅为示例实施例特征,并且不旨在被解释为限制到仅为那些详细的描述。
图5是根据示例实施例示出用于GPU和FPGA组件之间直接通信的示例系统的示例操作的流程图。在图5a的示例中,可获得标识用于直接访问现场可编程门阵列(FPGA)的存储器的地址的虚拟指针(502)。例如,FPGA驱动程序112可生成标识用于直接访问FPGA 106中的存储器116的地址的虚拟指针114,如以上讨论的。
可启动虚拟指针到与FPGA外部的GPU相关联的图形处理单元(GPU) 驱动程序的传输(504)。
可经由FPGA外部的总线接口启动GPU和FPGA之间数据的直接传输,而无需作为中间操作来将数据存储在中央处理单元(CPU)的存储器中(506)。
例如,FPGA可作为生产组件被包括在计算设备中。例如,FPGA可作为原型组件被包括在计算设备中(508)。
根据一示例实施例,在图5b示例中,FPGA驱动程序可被配置成生成虚拟指针(510)。例如,FPGA驱动程序112可生成标识用于直接访问FPGA 106 中的存储器116的地址的虚拟指针114,如以上讨论的。与GPU相关联的GPU 驱动程序可被配置成经由与GPU相关联的应用编程接口(API)来接收虚拟指针(512)。与GPU相关联的API可被配置成基于虚拟指针来生成FPGA的存储器中的一个或多个位置的一个或多个物理地址(514)。例如,如以上讨论的,与GPU 104相关联的API 120可被配置成基于虚拟指针114来生成FPGA 的存储器116中的一个或多个位置的一个或多个物理地址122。
数据的传输可包括基于FPGA的存储器中的一个或多个位置的一个或多个物理地址从GPU的存储器到FPGA的存储器的数据的传输或基于FPGA的存储器中的一个或多个位置的一个或多个物理地址从FPGA的存储器到GPU的存储器的数据的传输中的一个或多个(516)。
例如,数据的传输可包括基于FPGA的存储器中的一个或多个位置的一个或多个物理地址、基于从GPU的存储器到FPGA的存储器的直接存储器存取 (DMA)传输从GPU的存储器到FPGA的存储器的数据的传输或基于FPGA 的存储器中的一个或多个位置的一个或多个物理地址、基于从FPGA的存储器到GPU的存储器的DMA传输从FPGA的存储器到GPU的存储器的数据的传输中的一个或多个(518)。
图6是根据示例实施例示出用于GPU和FPGA组件之间直接通信的示例系统的示例操作的流程图。在图6a的示例中,发起对在图形处理单元(GPU) 和现场可编程门阵列(FPGA)之间传输数据的请求(602)。如以上讨论的,数据可经由FPGA外部的总线接口在GPU和FPGA之间被直接传输,而无需作为中间操作来将数据存储在中央处理单元(CPU)的存储器中(604)。
例如,总线接口可包括快速外围部件互连(PCIe)接口(606)。例如,传输数据可包括经由PCIe交换机在GPU和FPGA之间直接传输数据(608)。
根据一示例实施例,在图6b的示例中,可获得标识用于直接访问FPGA 的存储器的地址的虚拟指针(610)。虚拟指针可被传输到与FPGA外部的GPU 相关联的GPU驱动程序(612)。FPGA的存储器中的一个或多个位置的一个或多个物理地址可经由与GPU相关联的应用编程接口(API)基于虚拟指针来生成(614)。
例如,数据可基于FPGA的存储器中的一个或多个位置的一个或多个物理地址被从GPU的存储器传输到FPGA的存储器。例如,数据可基于FPGA的存储器中的一个或多个位置的一个或多个物理地址被从FPGA的存储器传输到 GPU的存储器(616)。
根据一示例实施例,在图6c的示例中,可获得标识用于直接访问FPGA 外部的GPU的存储器的地址的虚拟指针(618)。虚拟指针可被传输到与FPGA 相关联的FPGA驱动程序(620)。
与FPGA相关联的应用编程接口(API)可基于虚拟指针来生成GPU的存储器中的一个或多个位置的一个或多个物理地址(622)。
例如,数据可基于GPU的存储器中的一个或多个位置的一个或多个物理地址被从FPGA的存储器传输到GPU的存储器。例如,数据可基于GPU的存储器中的一个或多个位置的一个或多个物理地址被从GPU的存储器传输到 FPGA的存储器(624)。
图7是根据示例实施例示出用于GPU和FPGA组件之间直接通信的示例系统的示例操作的流程图。在图7a的示例中,数据可经由FPGA外部的总线接口在GPU和FPGA之间被直接传输,而无需作为中间操作来将数据存储在中央处理单元(CPU)的存储器中(702)。例如,总线接口可包括快速外围部件互连(PCIe)接口(704)。
FPGA驱动程序可生成标识用于直接访问FPGA的存储器的地址的虚拟指针(706)。与GPU相关联的GPU驱动程序可经由与FPGA外部的GPU相关联的应用编程接口(API)来获得虚拟指针(708)。
可基于虚拟指针来生成FPGA的存储器中的一个或多个位置的一个或多个物理地址(710)。
例如,数据可基于FPGA的存储器中的一个或多个位置的一个或多个物理地址被从GPU的存储器传输到FPGA的存储器。例如,数据可基于FPGA的存储器中的一个或多个位置的一个或多个物理地址被从FPGA的存储器传输到 GPU的存储器(712)。
例如,数据可基于FPGA的存储器中的一个或多个位置的一个或多个物理地址、基于从GPU的存储器到FPGA的存储器的直接存储器存取(DMA)传输被从GPU的存储器传输到FPGA的存储器。例如,数据可基于FPGA的存储器中的一个或多个位置的一个或多个物理地址、基于从FPGA的存储器到 GPU的存储器的DMA传输被从FPGA的存储器传输到GPU的存储器(714)。
根据一示例实施例,在图7b的示例中,与GPU相关联的GPU驱动程序可生成标识用于直接访问FPGA外部的GPU的存储器的地址的虚拟指针 (716)。与FPGA相关联的FPGA驱动程序可经由与FPGA相关联的API来获得虚拟指针(718)。
与FPGA相关联的API可基于虚拟指针来生成GPU的存储器中的一个或多个位置的一个或多个物理地址(720)。
例如,数据可基于GPU的存储器中的一个或多个位置的一个或多个物理地址被从FPGA的存储器传输到GPU的存储器。例如,数据可基于GPU的存储器中的一个或多个位置的一个或多个物理地址被从GPU的存储器传输到 FPGA的存储器(722)。
例如,数据可基于GPU的存储器中的一个或多个位置的一个或多个物理地址、基于从FPGA的存储器到GPU的存储器的直接存储器存取(DMA)传输被从FPGA的存储器传输到GPU的存储器。例如,数据可基于GPU的存储器中的一个或多个位置的一个或多个物理地址、基于从GPU的存储器到FPGA 的存储器的DMA传输被从GPU的存储器传输到FPGA的存储器(724)。
数据处理领域的技术人员将理解,存在用于提供GPU和FPGA之间直接通信的多种方式,而不背离本文讨论的精神。
多年来,在计算环境中一直考虑客户隐私和机密。因此,用于提供GPU 和FPGA之间直接通信的示例技术可使用用户输入和/或用户提供的数据,所述用户经由一个或多个订阅协议(例如,“服务条款”(TOS)协议)向相关联的应用或与处理器相关联的服务提供了许可。例如,用户可提供同意使其输入 /数据在设备上传送和存储,尽管明确指出(例如,经由用户接受的文本协议) 每一方可控制传送和/或存储如何进行,以及如果有则可维持什么级别的存储或存储的持续时间。
在此描述的各种技术的各实现可以实现为数字电子电路,或计算机硬件、固件、软件或它们的组合(例如,被配置成执行指令以执行各种功能的装置)。各实现可被实现为体现在传播信号中的计算机程序,或实现为计算机程序产品,即可有形地体现在信息载体中(例如在机器可用或有形机器可读存储设备 (例如,诸如通用串行总线(USB)存储设备等磁性或数字介质、磁带、硬盘驱动、紧致盘、数字视频盘(DVD)等等))的计算机程序,所述计算机程序用于由数据处理设备(例如,可编程的处理器、计算机或多个计算机)的执行或控制数据处理设备的操作。诸如以上描述的计算机程序等的计算机程序能以任何形式的编程语言(包括编译、解释或机器语言)撰写,并能以任何形式部署,包括作为独立程序或作为模块、组件、子例程、或其他适于在计算环境中使用的单元。计算机程序可被有形地体现为机器可使用或机器可读存储设备 (例如,计算机可读介质)上的可执行代码(例如,可执行指令)。可实现以上讨论的技术的计算机程序可被部署以在一个站点处的一个计算机或多个计算机上执行或跨多个站点分布并通过通信网络相互连接。
方法步骤可由一个或多个执行计算机程序以通过操作输入数据和生成输出来执行函数的可编程处理器执行。一个或多个可编程处理器可并行地执行指令,和/或可被以分布式配置来安排以进行分布式处理。本文讨论的示例功能还可由一个或多个硬件逻辑组件执行,且装置可至少部分被实现为一个或多个硬件逻辑组件。例如,不作为限制,可使用的硬件逻辑组件的说明性类型可包括:现场可编程门阵列(FPGA)、程序专用集成电路(ASIC)、程序专用标准产品(ASSP)、片上系统(SOC)系统以及复杂可编程逻辑器件(CPLD)等。
适于执行计算机程序的处理器可包括,作为示例,通用和专用微处理器以及任何类型的数字计算机的任意一个或多个处理器。一般地,处理器接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的元件可包括至少一个处理器以供执行指令以及一个或多个存储器设备以供存储指令和数据。一般地,计算机还可包括或可被操作地耦合以接收来自一个或多个大容量存储设备(例如,磁性、磁光盘、或光盘)的数据或将数据传送到大容量存储设备以供存储数据或两者。适于实现计算机程序指令和数据的信息载体包括所有形式的非易失存储器,包括,作为示例,半导体存储设备,例如EPROM、EEPROM 和闪存设备;磁盘,例如内置硬盘或可移动盘;磁光盘;以及CD ROM和 DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或被合并到专用逻辑电路中。
为了提供与用户的交互,各实现可在具有用于向用户显示信息的显示设备 (例如,阴极射线管(CRT)、液晶显示器(LCD)、或等离子监视器)以及用户能借此向计算机提供输入的键盘和定点设备(例如,鼠标或追踪球)的计算机上实现。其他种类的设备也能被用以提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈。例如,可经由任何形式的感官输出来提供输出,这些感官输出包括(但不限于) 视觉输出(例如,视觉手势、视频输出)、音频输出(例如,语音、设备声音)、触觉输出(例如,触摸、设备移动)、温度、气味等。
此外,来自用户的输入可按照任何形式来接收,包括声音、语音或触觉输入。例如,可经由任何形式的感官输入来从用户接收输入,这些感官输入包括 (但不限于)视觉输入(例如,手势、视频输入)、音频输入(例如,语音、设备声音)、触觉输入(例如,触摸、设备移动)、温度、气味等。
此外,自然用户界面(NUI)可被用于与用户接口。在这一上下文中,“NUI”可指的是使得用户能够以“自然”方式与设备交互而无需受诸如鼠标、键盘、遥控等输入设备强加的人为约束的任何接口技术。
NUI技术的示例可包括依赖于语音识别、触摸和指示笔识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、话音和语音、视觉、触摸、姿势、以及机器智能的那些技术。示例NUI技术包括但不限于:触敏显示、话音和语音识别、意图和目的理解、使用深度相机(如立体相机系统、红外相机系统、RGB(红、绿、蓝)相机系统及其组合)的运动姿势检测、使用加速度计/陀螺仪的运动姿势检测、面部识别、3D显示、头部、眼睛和注视跟踪、浸入式增强现实和虚拟现实系统,所有这些都提供更自然的接口,以及用于使用电场传感电极(如脑电图仪(EEG)和相关技术)的传感大脑活动的技术。
实现可在包括后端组件(例如,作为数据服务器)的计算系统中实现、或可在包括中间软件层组件(例如,应用服务器)的计算系统中实现、或可在包括前端组件(例如,具有用户借此能与实现交互的图形用户界面或web浏览器的客户端计算机)的计算系统中实现、或可在包括这样的后端、中间软件层或前端组件的任意组合的计算系统中实现。组件可通过数字数据通信的任何形式或介质(例如,通信网络)相互连接。通信网络的示例包括局域网(LAN)和广域网(WAN),例如,因特网。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。尽管如此处所述的示出了所描述的各个实现的某些特征,但对本领域技术人员来说,可以发生许多修改、替换、改变和等效技术方案。因此,应当理解,所附权利要求旨在覆盖落入各实施例的范围之内的所有这些修改和改变。

Claims (10)

1.一种用于图形处理单元GPU和现场可编程门阵列FPGA之间的直接通信的方法,包括:
获得标识用于直接访问所述FPGA的存储器的地址的虚拟指针;
启动所述虚拟指针到与所述FPGA外部的GPU相关联的GPU驱动程序的传输;以及
经由所述FPGA外部的总线接口启动在所述GPU和所述FPGA之间数据的直接传输,而无需作为中间操作来将所述数据存储在中央处理单元CPU的存储器中。
2.一种用于图形处理单元GPU和现场可编程门阵列FPGA之间的直接通信的方法,包括:
发起对在所述GPU和所述FPGA之间传输数据的请求;以及
在标识用于直接访问所述FPGA的存储器的地址的虚拟指针被传输到与所述FPGA外部的GPU相关联的GPU驱动程序之后,经由所述FPGA外部的总线接口在所述GPU和所述FPGA之间直接传输所述数据,而无需作为中间操作来将所述数据存储在中央处理单元(CPU)的存储器中。
3.一种用于图形处理单元GPU和现场可编程门阵列FPGA之间的直接通信的系统,包括:
图形处理单元GPU;
现场可编程门阵列FPGA;以及
总线接口,所述总线接口在所述FPGA的外部并被配置为在标识用于直接访问所述FPGA的存储器的地址的虚拟指针被传输到与所述FPGA外部的GPU相关联的GPU驱动程序之后,直接在所述GPU和所述FPGA之间传输数据,而无需作为中间操作来将所述数据存储在中央处理单元CPU的存储器中。
4.如权利要求3所述的系统,其特征在于:
所述总线接口包括快速外围部件互连PCIe接口。
5.如权利要求3所述的系统,其特征在于,还包括:
FPGA驱动程序,所述FPGA驱动程序被配置成生成标识用于直接访问所述FPGA的存储器的地址的虚拟指针;以及
GPU驱动程序,所述GPU驱动程序与所述GPU相关联并被配置成经由与所述FPGA外部的所述GPU相关联的应用编程接口API来获得所述虚拟指针。
6.如权利要求5所述的系统,其特征在于:
与所述GPU相关联的所述API被配置成基于所述虚拟指针来生成所述FPGA的存储器中的一个或多个位置的一个或多个物理地址,
所述数据的传输包括以下中的一个或多个:
基于所述FPGA的存储器中的一个或多个位置的一个或多个物理地址从所述GPU的存储器到所述FPGA的存储器的所述数据的传输,或
基于所述FPGA的存储器中的一个或多个位置的一个或多个物理地址从所述FPGA的存储器到所述GPU的存储器的所述数据的传输。
7.如权利要求6所述的系统,其特征在于:
所述数据的传输包括以下中的一个或多个:
基于所述FPGA的存储器中的一个或多个位置的一个或多个物理地址、基于从所述GPU的存储器到所述FPGA的存储器的直接存储器存取DMA传输从所述GPU的存储器到所述FPGA的存储器的所述数据的传输,或
基于所述FPGA的存储器中的一个或多个位置的一个或多个物理地址、基于从所述FPGA的存储器到所述GPU的存储器的DMA传输从所述FPGA的存储器到所述GPU的存储器的所述数据的传输。
8.如权利要求3所述的系统,其特征在于,还包括:
GPU驱动程序,所述GPU驱动程序与所述GPU相关联并被配置成生成标识用于直接访问所述FPGA外部的所述GPU的存储器的地址的虚拟指针;以及
FPGA驱动程序,所述FPGA驱动程序与所述FPGA相关联并被配置成经由与所述FPGA相关联的API来获得所述虚拟指针。
9.如权利要求8所述的系统,其特征在于:
与所述FPGA相关联的所述API被配置成基于所述虚拟指针来生成所述GPU的存储器中的一个或多个位置的一个或多个物理地址;以及
所述数据的传输包括以下中的一个或多个:
基于所述GPU的存储器中的一个或多个位置的一个或多个物理地址从所述FPGA的存储器到所述GPU的存储器的所述数据的传输,或
基于所述GPU的存储器中的一个或多个位置的一个或多个物理地址从所述GPU的存储器到所述FPGA的存储器的所述数据的传输。
10.如权利要求9所述的系统,其特征在于:
所述数据的传输包括以下中的一个或多个:
基于所述GPU的存储器中的一个或多个位置的一个或多个物理地址、基于从所述FPGA的存储器到所述GPU的存储器的直接存储器存取DMA传输从所述FPGA的存储器到所述GPU的存储器的所述数据的传输,或
基于所述GPU的存储器中的一个或多个位置的一个或多个物理地址、基于从所述GPU的存储器到所述FPGA的存储器的DMA传输从所述GPU的存储器到所述FPGA的存储器的所述数据的传输。
CN201380044351.6A 2012-08-23 2013-08-16 Gpu和fpga组件之间的直接通信的方法和系统 Active CN104583933B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/593,129 2012-08-23
US13/593,129 US9304730B2 (en) 2012-08-23 2012-08-23 Direct communication between GPU and FPGA components
PCT/US2013/055233 WO2014031459A1 (en) 2012-08-23 2013-08-16 Direct communication between gpu and fpga components

Publications (2)

Publication Number Publication Date
CN104583933A CN104583933A (zh) 2015-04-29
CN104583933B true CN104583933B (zh) 2018-01-26

Family

ID=49083774

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380044351.6A Active CN104583933B (zh) 2012-08-23 2013-08-16 Gpu和fpga组件之间的直接通信的方法和系统

Country Status (4)

Country Link
US (3) US9304730B2 (zh)
EP (2) EP3828691B1 (zh)
CN (1) CN104583933B (zh)
WO (1) WO2014031459A1 (zh)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ITRM20120094A1 (it) 2012-03-14 2013-09-14 Istituto Naz Di Fisica Nuclea Re Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale
US9304730B2 (en) * 2012-08-23 2016-04-05 Microsoft Technology Licensing, Llc Direct communication between GPU and FPGA components
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US9135081B2 (en) * 2012-10-26 2015-09-15 Nvidia Corporation Work-queue-based graphics processing unit work creation
US8996781B2 (en) * 2012-11-06 2015-03-31 OCZ Storage Solutions Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
JP5920595B2 (ja) * 2013-07-16 2016-05-18 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法
US9935637B2 (en) * 2014-02-11 2018-04-03 National Instruments Corporation Systems and methods for FPGA development and operation
WO2015130282A1 (en) * 2014-02-27 2015-09-03 Hewlett-Packard Development Company, L. P. Communication between integrated graphics processing units
US10031857B2 (en) 2014-05-27 2018-07-24 Mellanox Technologies, Ltd. Address translation services for direct accessing of local memory over a network fabric
US10120832B2 (en) 2014-05-27 2018-11-06 Mellanox Technologies, Ltd. Direct access to local memory in a PCI-E device
US9582463B2 (en) * 2014-12-09 2017-02-28 Intel Corporation Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9819542B2 (en) 2015-06-26 2017-11-14 Microsoft Technology Licensing, Llc Configuring acceleration components over a network
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
CN105279376B (zh) * 2015-10-21 2018-06-12 武汉大学 一种基于gpgpu的非线性非稳态复杂信号自适应分解方法
US20170178275A1 (en) * 2015-12-22 2017-06-22 Advanced Micro Devices, Inc. Method and system for using solid state device as eviction pad for graphics processing unit
CN107818069B (zh) 2016-09-12 2021-10-01 阿里巴巴集团控股有限公司 数据处理方法及系统
CN106843045A (zh) * 2017-01-23 2017-06-13 张军 一种基于多核异构cpu‑gpu‑fpga系统架构的嵌入式操作系统原型
CN108959134B (zh) 2017-05-24 2022-02-15 微软技术许可有限责任公司 用于现场可编程门阵列设备的通信
CN107273331A (zh) * 2017-06-30 2017-10-20 山东超越数控电子有限公司 一种基于cpu+gpu+fpga架构的异构计算系统和方法
US11030126B2 (en) * 2017-07-14 2021-06-08 Intel Corporation Techniques for managing access to hardware accelerator memory
US10474600B2 (en) 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
US11263143B2 (en) 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
CN109656853A (zh) * 2017-10-11 2019-04-19 阿里巴巴集团控股有限公司 一种数据传输系统及方法
EP3537707B1 (de) * 2018-03-06 2021-07-28 B&R Industrial Automation GmbH Kamerakern einer smart kamera für die industrielle bildverarbeitung und verfahren zur industriellen bildverarbeitung
US11461869B2 (en) 2018-03-14 2022-10-04 Samsung Electronics Co., Ltd. Slab based memory management for machine learning training
US10332235B1 (en) 2018-05-01 2019-06-25 At&T Intellectual Property I, L.P. Direct memory access for graphics processing unit packet processing
KR102570581B1 (ko) 2018-06-07 2023-08-24 삼성전자 주식회사 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
US10795840B2 (en) 2018-11-12 2020-10-06 At&T Intellectual Property I, L.P. Persistent kernel for graphics processing unit direct memory access network packet processing
US11379374B2 (en) 2019-02-12 2022-07-05 Samsung Electronics Co., Ltd. Systems and methods for streaming storage device content
US11470017B2 (en) * 2019-07-30 2022-10-11 At&T Intellectual Property I, L.P. Immersive reality component management via a reduced competition core network component
KR102147912B1 (ko) 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
CN112835834B (zh) 2019-11-25 2024-03-19 瑞昱半导体股份有限公司 数据传输系统
CN111740847B (zh) * 2020-08-24 2020-12-11 常州楠菲微电子有限公司 一种基于fpga的高速网络数据传输系统及方法
CN112131176B (zh) * 2020-09-29 2023-12-12 中国船舶集团有限公司第七二四研究所 一种基于pcie的fpga快速局部重构方法
US20220188493A1 (en) * 2020-12-10 2022-06-16 Advanced Micro Devices, Inc. Fpga-based programmable data analysis and compression front end for gpu
CN113051212B (zh) * 2021-03-02 2023-12-05 长沙景嘉微电子股份有限公司 图形处理器、数据传输方法、装置、电子设备和存储介质
CN116069695A (zh) * 2021-11-03 2023-05-05 迈络思科技有限公司 使用外围设备进行存储器访问跟踪
CN114445260B (zh) * 2022-01-17 2024-01-12 苏州浪潮智能科技有限公司 基于fpga的分布式gpu通信的方法及装置
CN115905039B (zh) * 2022-11-16 2023-07-25 逸超医疗科技(北京)有限公司 一种基于PCIe接口高速获取超声数据的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1952979A (zh) * 2005-10-14 2007-04-25 威盛电子股份有限公司 多重图形处理器系统及方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5959631A (en) * 1996-08-28 1999-09-28 Hewlett-Packard Company Hardware and software for the visualization of three-dimensional data sets
US6691190B1 (en) * 2000-01-24 2004-02-10 Agere Systems Inc. Inter-DSP data exchange in a multiple DSP environment
US6633296B1 (en) 2000-05-26 2003-10-14 Ati International Srl Apparatus for providing data to a plurality of graphics processors and method thereof
US7899957B1 (en) * 2003-12-30 2011-03-01 Altera Corporation Memory controller having a buffer for providing beginning and end data
US20050257186A1 (en) * 2004-05-13 2005-11-17 Michael Zilbershlag Operation system for programmable hardware
US20080126600A1 (en) * 2006-08-31 2008-05-29 Freescale Semiconductor, Inc. Direct memory access device and methods
US7702881B2 (en) * 2007-01-31 2010-04-20 Freescale Semiconductor, Inc. Method and system for data transfers across different address spaces
US8495301B1 (en) * 2007-11-23 2013-07-23 Pmc-Sierra Us, Inc. System and method for scatter gather cache processing
US7877524B1 (en) * 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
JP5214262B2 (ja) * 2008-01-30 2013-06-19 株式会社東芝 半導体集積回路及び電源制御方法
US9438844B2 (en) * 2008-04-08 2016-09-06 Imagine Communications Corp. Video multiviewer system using direct memory access (DMA) registers and block RAM
GB2466982B (en) * 2009-01-16 2013-07-17 Nvidia Technology Uk Ltd DMA Engine
US8176282B2 (en) * 2009-03-11 2012-05-08 Applied Micro Circuits Corporation Multi-domain management of a cache in a processor system
US20110283059A1 (en) 2010-05-11 2011-11-17 Progeniq Pte Ltd Techniques for accelerating computations using field programmable gate array processors
US8516509B2 (en) * 2011-02-08 2013-08-20 BlueStripe Software, Inc. Methods and computer program products for monitoring system calls using safely removable system function table chaining
US8732430B2 (en) * 2011-03-22 2014-05-20 Oracle International Corporation Method and apparatus for using unused bits in a memory pointer
US9256915B2 (en) * 2012-01-27 2016-02-09 Qualcomm Incorporated Graphics processing unit buffer management
US10242481B2 (en) * 2012-03-15 2019-03-26 Qualcomm Incorporated Visibility-based state updates in graphical processing units
US9348783B2 (en) * 2012-04-19 2016-05-24 Lockheed Martin Corporation Apparatus and method emulating a parallel interface to effect parallel data transfer from serial flash memory
US9864638B2 (en) * 2012-06-22 2018-01-09 Intel Corporation Techniques for accessing a graphical processing unit memory by an application
US9304730B2 (en) 2012-08-23 2016-04-05 Microsoft Technology Licensing, Llc Direct communication between GPU and FPGA components

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1952979A (zh) * 2005-10-14 2007-04-25 威盛电子股份有限公司 多重图形处理器系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Direct GPU/FPGA Communication via PCI Express;Ray Bittner等;《URL:http://dfpcorec-p.internal.epo.org/wfweb/citenpl/citenpl.html?_url=http%3A%2F%2Fresearch.microsoft.com%2Fpubs%2F172730%2F20120625%2520UCAA2012_ Bittner_ Ruf_ Final.pdf》;20120625;第1-5页 *

Also Published As

Publication number Publication date
US10552935B2 (en) 2020-02-04
EP3828691A1 (en) 2021-06-02
EP3828691B1 (en) 2023-09-27
CN104583933A (zh) 2015-04-29
US20140055467A1 (en) 2014-02-27
US20160292813A1 (en) 2016-10-06
US9928567B2 (en) 2018-03-27
EP2888655B1 (en) 2021-02-24
US20180174268A1 (en) 2018-06-21
US9304730B2 (en) 2016-04-05
WO2014031459A1 (en) 2014-02-27
EP2888655A1 (en) 2015-07-01

Similar Documents

Publication Publication Date Title
CN104583933B (zh) Gpu和fpga组件之间的直接通信的方法和系统
CN104952033B (zh) 分布式图形处理器分级中的系统一致性
JP7008422B2 (ja) NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体
EP3871096B1 (en) Hybrid use of non-volatile memory as storage device and cache
CN104346224B (zh) 使用组页面错误描述符来处理上下文切换和进程终止
CN105378642A (zh) 用于高性能和低成本的闪存转换层的系统和方法
US10303366B2 (en) Data storage device that divides and processes a command and data processing system including the same
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
CN108694135A (zh) 用于在页高速缓存中持久性地高速缓存存储数据的方法和设备
US10020036B2 (en) Address bit remapping scheme to reduce access granularity of DRAM accesses
US11055220B2 (en) Hybrid memory systems with cache management
CN113868039A (zh) 一种测试方法、装置及相关设备
US7612780B2 (en) Optimized memory addressing
US20170212832A1 (en) Non-volatile memory interface
US11526441B2 (en) Hybrid memory systems with cache management
US9530466B1 (en) System and method for memory access dynamic mode switching
US20130159591A1 (en) Verifying data received out-of-order from a bus
US8593472B1 (en) System and method for accessing a frame buffer via a storage driver
KR102659832B1 (ko) 데이터 저장 장치 및 시스템
Maucher GPU4FS: A Graphics Processor-Accelerated File System
US20230325076A1 (en) Storage device reorganizing data and related operating method
US20240113857A1 (en) Encrypted processing unit emulated with homomorphic encryption circuits
KR20230096843A (ko) 메모리 대역폭 병목현상을 감소시키고 전력 관리를 용이하게 하는 soc 아키텍처

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20171114

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant