CN108959144B - 现场可编程门阵列之间的通信 - Google Patents

现场可编程门阵列之间的通信 Download PDF

Info

Publication number
CN108959144B
CN108959144B CN201710375569.XA CN201710375569A CN108959144B CN 108959144 B CN108959144 B CN 108959144B CN 201710375569 A CN201710375569 A CN 201710375569A CN 108959144 B CN108959144 B CN 108959144B
Authority
CN
China
Prior art keywords
packet
application
protocol stack
destination application
source application
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
CN201710375569.XA
Other languages
English (en)
Other versions
CN108959144A (zh
Inventor
程鹏
舒然
陈果
熊勇强
张健松
徐宁仪
T·莫斯布罗达
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
Priority to CN201710375569.XA priority Critical patent/CN108959144B/zh
Priority to PCT/US2018/029240 priority patent/WO2018217378A1/en
Priority to US16/616,301 priority patent/US11042497B2/en
Priority to EP18726592.1A priority patent/EP3631640B1/en
Publication of CN108959144A publication Critical patent/CN108959144A/zh
Application granted granted Critical
Publication of CN108959144B publication Critical patent/CN108959144B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开的实施例涉及现场可编程门阵列之间的通信。在一些实施例中,提供了一种现场可编程门阵列(FPGA)设备。该FPGA设备包括第一协议栈,被配置为:从源应用接收针对目的应用的数据发送请求;通过向数据发送请求添加报头而将数据发送请求封装成第一分组,报头指示源应用和目的应用;以及发送与目的应用连接的第二协议栈的物理地址。该FPGA设备还包括快速外围组件互连(PCIe)接口,被配置为:基于从第一协议栈接收的第二协议栈的物理地址,将第一分组封装成第二分组,使得第一分组作为第二分组的数据部分,第二分组是符合PCIe规范的事物层分组(TLP);以及发送第二分组。

Description

现场可编程门阵列之间的通信
背景技术
近年来,为了满足日益增长的高性能和高能效的要求,在数据中心等应用场景中部署了大量的现场可编程门阵列(FPGA)设备。大规模的分布式FPGA应用通常要求在多个FPGA设备之间的协作。例如,现代的排序搜索逻辑已经在使用多个FPGA来实现。这种类型的多个FPGA应用要求FPGA之间的频繁的数据传输。
发明内容
在一些实施例中,提供了一种现场可编程门阵列(FPGA)设备。该FPGA设备包括第一协议栈,被配置为:从源应用接收针对目的应用的数据发送请求;通过向数据发送请求添加报头而将数据发送请求封装成第一分组,报头指示源应用和目的应用;以及发送与目的应用连接的第二协议栈的物理地址。该FPGA设备还包括快速外围组件互连(PCIe)接口,被配置为:基于从第一协议栈接收的第二协议栈的物理地址,将第一分组封装成第二分组,使得第一分组作为第二分组的数据部分,第二分组是符合PCIe规范的事物层分组(TLP);以及发送第二分组。
提供发明内容部分是为了简化的形式来介绍对概念的选择,其在下文的具体实施方式中将被进一步描述。发明内容部分无意标识要求保护的主题的关键特征或主要特征,也无意限制要求保护的主题的范围。
附图说明
图1示意性示出了能够实施本公开的多个实施例的环境的框图;
图2示出了根据本公开的一些实施例的FPGA设备之间的通信的架构图;
图3示出了根据本公开的一些实施例的分组结构的示意图;
图4示出了根据本公开的一些实施例的通信方法的流程图;以及
图5示出了根据本公开的一些实施例的通信方法的流程图。
这些附图中,相同或相似参考符号用于表示相同或相似元素。
具体实施方式
现在将参照若干示例实施例来论述本公开。应当理解,论述了这些实施例仅是为了使得本领域普通技术人员能够更好地理解且因此实施例本公开,而不是暗示对本主题的范围的任何限制。
如本文所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实施例”和“一种实施例”要被解读为“至少一个实施例”。术语“另一个实施例”要被解读为“至少一个其他实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
以下参考附图来说明本公开的基本原理和若干示例实施例。图1示出了能够实施本公开的多个实施例的环境100的框图。环境100可以是一个计算系统,例如服务器等。应当理解,图1所示出的环境100仅仅是示例性的,而不应当构成对本公开所描述的实施例的功能和范围的任何限制。
如图1所示,中央处理单元(CPU)110可以与根复合体(root complex)120耦合。在一些实施例中,根复合体120也可以合并在CPU 110中。根复合体可以经由快速外围组件互连(PCIe)接口与一个或多个PCIe交换器或FPGA设备连接。例如,如图1所示,根复合体120与PCIe交换器140和160连接。PCIe交换器可以经由PCIe接口进一步连接至其他PCIe交换器或FPGA设备。FPGA设备可以是FPGA卡,也可以简称FPGA。例如,PCIe交换器140与PCIe交换器142和FPGA设备144连接,而PCIe交换器160与FPGA设备162和164连接。
图2示出了根据本公开的一些实施例的FPGA设备220之间的通信的架构图200。架构图200可以在一个计算设备如服务器内实现,包括在同一服务器内的多个FPGA设备220-1、……、220-N(为了方便起见,统称为FPGA设备220)。以下主要结合图2来详细描述本公开的原理。为了简洁起见,图2仅详细示出了FPGA设备220-1的内部结构。然而,应当理解,其他FPGA设备220也可以由相同的内部结构来实现。
如图2所示,FPGA设备220-1可以经由网络结构260与其他FPGA设备220(例如,FPGA设备220-N)进行通信。例如,网络结构260可以根复合体和/或PCIe交换器来实现,如图1所示。FPGA设备220-1和220-N可以是图1所示的FPGA设备144、162和164中的任意两个。如果FPGA设备220均连接至根复合体120,则网络结构260为根复合体;如果FPGA设备220均连接至相同的交换器,则网络结构260为该交换器;如果FPGA设备220连接至不同的交换器,但这些FPGA设备220之间的互连并不经过根复合体,则网络结构260仅包括这些FPGA设备220之间的交换器;如果FPGA设备220连接至不同的交换器,并且这些FPGA设备220之间的互连经过根复合体,则网络结构260仅包括这些FPGA设备220之间的交换器和根复合体。例如,如果FPGA设备220为图1所示的FPGA设备162和164,则网络结构260可以包括PCIe交换器160。如果FPGA设备220为图1所示的FPGA设备144和162,则网络结构260可以包括根复合体120和PCIe交换器140和160。
FPGA设备220可以包括一个或多个应用221-1、……、222-M等(为了方便起见,统称为应用222)。应用222可以执行各种处理任务,例如,排序搜索、神经网络模型的训练。FPGA设备220还可以包括PCIe接口226。PCIe接口226用于支持在FPGA设备之间的通信。PCIe规范包括三个协议层,事物层、数据链路层和物理层,其中在事物层,将数据封装成事物层分组(TLP),或者从TLP拆分出数据。FPGA设备220-1中的数据可以经由PCIe接口226发送给其他PCIe设备,例如FPGA设备220-N。然而,PCIe规范不能很好地支持从应用到应用的通信。
目前,可以使用多种方式在多个FPGA设备或多个FPGA应用之间进行通信。然而,这些通信方式通常涉及存储器复制操作。例如,将数据写入一个FPGA设备的存储器中,然后另一FPGA设备可以从该存储器来读取数据。存储器的读写操作所附加的时延将导致通信的时延显著增加。另外,如果同时形成多个通信连接,则FPGA设备还会在存储器操作期间遇到存储器刷新的问题。
为了实现在同一服务器内的多个FPGA应用之间通过PCIe接口直接进行通信,需要区分不同的通信连接。一种直观的方案是使用大量的物理地址来接收每个连接的分组。然而,这种方案需要大量的物理地址空间。
根据一些实施例,FPGA设备包括协议栈,以便支持不同FPGA设备的应用之间的直接通信。例如,如图2所示,FPGA设备220-1包括协议栈224,类似地,其他FPGA设备220(例如,FPGA设备220-M)也包括协议栈(未示出)。
此外,计算设备200还可以包括中央处理单元240,其用于管理计算设备200上的各种设备和模块,并且响应于来自FPGA设备220的应用222的连接建立请求而分配连接标识。在一些实施例中,中央处理单元240可以确定并统筹管理计算设备200内的资源,并存储计算设备200中的资源的标识(例如,包括FPGA设备的ID和协议栈的ID)和相应的物理地址。应当理解,尽管这里示出的是中央处理单元240,然而也可以使用其他通用或专用的管理机构(例如,FPGA设备)对资源进行管理,本公开在此不受限制。
图3示出了符合PCIe规范的事物层的TLP的结构,包括TLP报头和TLP数据部分。TLP数据部分也可以被称为数据有效载荷,并且TLP还可以包括其他附加的字段。为了简单起见,在图3中没有示出这些附加的字段。由于本公开的实施例仅在PCIe规范的事物层上进行操作,因此为了简单起见,图3没有示出PCIe规范的数据链路层和物理层。
根据一些实施例,为了区分不同的连接,可以在TLP的数据部分内添加FPGA连接(FPGA connect,FC)报头。如图3所示,TLP数据部分形成FC分组,包括FC报头和FC数据。FC报头包括源ID和目的ID,分别标识FC数据所来自的源应用和待发往的目的应用。在一些实施例中,源ID可以包括源FPGA设备的ID和源应用的ID,目的ID可以包括目的FPGA设备的ID和目的应用的ID。
在一些实施例中,FPGA设备220-1内的一个应用222可以与另一FPGA设备220-M内的一个应用建立多个连接。为了区分这些连接,FC报头还可以包括指示源应用与目的应用之间的连接的端口,例如,源连接端口和目的连接端口。在源应用222还未建立与目的应用的连接时,从应用222发送的连接建立请求消息中的源连接端口和目的连接端口是未知的,因此相应位置可以被设置为预定值(例如,全零值)。
例如,FPGA设备220-1中的应用222可以向另一FPGA设备220-N上的目的应用发送数据发送请求。协议栈224可以基于该数据发送请求来封装FC分组。例如,协议栈224基于数据发送请求来确定FC报头,并向数据发送请求添加FC报头,以将数据发送请求封装成FC分组并将FC分组发送给PCIe接口226。如图3所示,FC报头包括分别指示源应用和目的应用的源ID和目的ID。在一些实施例中,源ID和目的ID还可以进一步包括源连接端口和目的连接端口。
PCIe接口226接收到FC分组之后,将FC分组封装成TLP。然后,TLP根据PCIe规范进行处理和发送。由于PCIe规范需要使用物理地址,因此在封装TLP的过程中,可以将与目的应用连接的协议栈的物理地址封装在TLP中。如上所述,协议栈的物理地址可以由中央处理单元240进行管理,因此,目的FPGA设备处与目的应用连接的协议栈的物理地址通过协议栈224从中央处理单元240接收。备选地,目的FPGA设备处与目的应用连接的协议栈的物理地址也可以直接由协议栈224管理。同样地,在封装TLP的过程中,也可以将源应用222所在的源FPGA设备220的物理地址封装在TLP中。
为了最小化物理地址空间的使用,对于每个FPGA设备而言,可以仅使用一个分组大小的物理地址作为协议栈的接收地址。这一分组大小可以表示FC分组的大小,或者TLP的数据有效载荷的大小。例如,当FPGA设备220接收到TLP时,PCIe接口226的事物层将TLP转发给协议栈224。特别地,PCIe接口226可以仅将TLP的数据部分转发给协议栈224的接收地址。例如,PCIe接口226可以将所接收的每个TLP的数据部分的一个副本转发给协议栈224的接收地址。协议栈224依次接收这些数据部分,并且确定这些数据部分是否是FC分组。例如,有些TLP的数据部分不包括如图3所示的FC报头,则协议栈224确定这些数据部分不是FC分组,因此并不应用于协议栈224所管理的应用222。在这种情况下,协议栈224可以丢弃这些数据部分,不进行进一步处理。在确定这些数据部分包括FC报头的情况下,协议栈224可以通过FC报头来区分FC分组,并将FC数据发送给相应目的应用。以这种方式,显著地节约了物理地址空间。如上所述,FC报头可以包括连接的标识,因此,协议栈224不仅可以将FC分组发送给相应的应用,还可以发送给相应的连接。
在一些实施例中,源应用222可以通过特定路径(未示出)向中央处理单元240发送从源应用到目的应用的连接建立请求。中央处理单元240可以为这一连接分配端口,包括源连接端口和目的连接端口。然后,中央处理单元240与目的应用通信,从而告知目的应用该连接的端口并询问目的应用是否可以建立该连接。如果目的应用确定可以接受该连接,则目的应用将该信息告知中央处理单元240。中央处理单元240向源应用222发送针对连接建立请求的响应,该响应包括所分配的端口。如上所述,该端口可以包括源连接端口和目的连接端口。在建立连接之后,源应用222可以与目的应用经由协议栈进行通信,以传输数据等信息。在连接建立过程中,协议栈224可以从中央处理单元240之类的处理设备接收与目的应用连接的协议栈的物理地址,并对物理地址进行管理。
在一些实施例中,源应用222可以通过特定路径(未示出)向中央处理单元240发送从源应用到目的应用的连接断开请求,该连接断开请求包括源连接端口和目的连接端口。中央处理单元240可以释放为该连接所分配的源连接端口和目的连接端口,并通知源应用222和目的应用断开该连接。
图4示出了根据本公开的一些实施例的通信方法400的流程图。为了清楚起见,将结合图2来描述方法400,然而应当理解,方法400也可以应用于任何其他合适的设备与架构。
在402,协议栈224从源应用222接收针对目的应用的数据连接请求。在404,协议栈224通过向数据连接请求添加报头将数据封装成第一分组。报头指示源应用222和目的应用。目的应用可以是FPGA设备220-N中的应用。
在406,协议栈224发送与目的应用连接的协议栈的物理地址,以使第一分组被封装成第二分组。在封装过程中,第一分组作为第二分组的数据部分,第二分组是符合快速外围组件互连(PCIe)规范的事物层分组(TLP)。该封装过程可以由PCIe接口226来实现。然后,PCIe接口226可以向该物理地址发送第二分组。
如上所述,协议栈224在连接建立过程中可以从中央处理单元240之类的处理设备接收与目的应用连接的协议栈的物理地址,并对物理地址进行管理。
图5示出了根据本公开的一些实施例的通信方法500的流程图。为了清楚起见,将结合图2来描述方法500,然而应当理解,方法500也可以应用于任何其他合适的设备与架构。
在502,响应于接收到作为TLP的第三分组,PCIe接口226通过第三分组的数据部分确定第四分组。第四分组可以是如图3所示的FC分组。
在504,协议栈224根据第四分组的报头,确定第四分组的目的应用。在506,协议栈224将第四分组发送给目的应用,以由目的应用对所述数据进行处理。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写,例如Verilog或C语言。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
以下列出了本公开的一些示例实施例。
根据一些实施例,提供了一种在现场可编程门阵列(FPGA)处实现的通信方法,包括:由第一协议栈从源应用接收针对目的应用的数据发送请求;由第一协议栈通过向数据发送请求添加报头将数据发送请求封装成第一分组,报头指示源应用和目的应用;以及由第一协议栈发送与目的应用连接的第二协议栈的物理地址,以使第一分组被封装成第二分组,使得第一分组作为第二分组的数据部分,第二分组是符合快速外围组件互连(PCIe)规范的事物层分组(TLP)。
在一些实施例中,报头还包括指示源应用与目的应用的连接的端口。
在一些实施例中,通信方法还包括:响应于接收到作为TLP的第三分组,通过第三分组的数据部分确定第四分组;基于第四分组的报头,确定第四分组的目的应用;以及将第四分组发送给目的应用。
在一些实施例中,通信方法还包括:向处理设备发送来自源应用的连接建立请求,连接建立请求指示源应用和目的应用;以及从处理设备接收针对连接建立请求的响应,响应包括为源应用与目的应用之间的连接分配的端口。
在一些实施例中,通信方法还包括:向处理设备发送来自源应用的连接断开请求,使得断开源应用与目的应用之间的连接并释放指示源应用与目的应用之间的连接的端口,连接断开请求指示源应用和目的应用,并且包括端口。
在一些实施例中,通信方法通信方法还包括:从处理设备接收第二协议栈的物理地址。
根据一些实施例,提供了一种现场可编程门阵列(FPGA)设备。该FPGA设备包括:第一协议栈,被配置为:从源应用接收针对目的应用的数据发送请求;通过向数据发送请求添加报头而将数据发送请求封装成第一分组,报头指示源应用和目的应用;以及发送与目的应用连接的第二协议栈的物理地址;快速外围组件互连(PCIe)接口,被配置为:基于从第一协议栈接收的第二协议栈的物理地址,将第一分组封装成第二分组,使得第一分组作为第二分组的数据部分,第二分组是符合PCIe规范的事物层分组(TLP);以及发送第二分组。
在一些实施例中,报头还包括指示源应用与目的应用的连接的端口。
在一些实施例中,PCIe接口还被配置为响应于接收到作为TLP的第三分组,通过第三分组的数据部分确定第四分组;并且其中协议栈被配置为:基于第四分组的报头,确定第四分组的目的应用;以及将第四分组发送给目的应用。
在一些实施例中,第二协议栈被分配有第一分组大小的物理地址。
在一些实施例中,FPGA设备还包括源应用,源应用被配置为:向处理设备发送连接建立请求,连接建立请求指示源应用和目的应用;以及从处理设备接收针对连接建立请求的响应,响应包括为源应用与目的应用之间的连接分配的端口。
在一些实施例中,FPGA设备还包括源应用,源应用被配置为:向处理设备发送连接断开请求,使得断开源应用与目的应用之间的连接并释放指示源应用与目的应用之间的连接的端口,连接断开请求指示源应用和目的应用,并且包括端口。
在一些实施例中,第一协议栈还被配置为:从处理设备接收第二协议栈的物理地址。
根据一些实施例,提供了一种计算系统,包括:第一现场可编程门阵列(FPGA)设备,包括:第一协议栈,被配置为:从源应用接收针对目的应用的数据发送请求;通过向数据发送请求添加报头而将数据发送请求封装成第一分组,报头指示源应用和目的应用;以及发送目的应用所在的第二PFGA设备处的第二协议栈的物理地址;快速外围组件互连(PCIe)接口,被配置为:基于第二协议栈的物理地址,将第一分组封装成第二分组,使得第一分组作为第二分组的数据部分,第二分组是符合PCIe规范的事物层分组(TLP);以及发送第二分组;以及第二FPGA设备,包括:PCIe接口,被配置为:响应于接收到第二分组,通过第二分组的数据部分确定第一分组;以及第二协议栈,被配置为:基于第一分组的报头,确定第一分组的目的应用;以及将第一分组发送给目的应用。
在一些实施例中,报头还包括指示源应用与目的应用的连接的端口。
在一些实施例中,第一协议栈还被配置为:从处理设备接收第二协议栈的物理地址。
在一些实施例中,第一协议栈和第二协议栈均被分配有第一分组大小的物理地址。
在一些实施例中,计算系统还包括:用于连接第一FPGA设备和第二FPGA设备的网络结构,其中网络结构包括根复合体和交换器中的至少一项。
在一些实施例中,第一FPGA设备包括源应用,源应用被配置为:向处理设备发送来自源应用的连接建立请求,连接建立请求指示源应用和目的应用;以及从处理设备接收针对连接建立请求的响应,响应包括为源应用与目的应用之间的连接分配的端口。
在一些实施例中,第一FPGA设备包括源应用,并且源应用被配置为:向处理设备发送连接断开请求,使得断开源应用与目的应用之间的连接并释放指示源应用与目的应用之间的连接的端口,连接断开请求指示源应用和目的应用,并且包括端口。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (20)

1.一种在FPGA处实现的通信方法,包括:
由第一协议栈从源应用接收针对目的应用的数据发送请求;
由所述第一协议栈通过向所述数据发送请求添加报头将所述数据发送请求封装成第一分组,所述报头指示所述源应用和所述目的应用;以及
由所述第一协议栈发送与所述目的应用连接的第二协议栈的物理地址,以使所述第一分组被封装成第二分组,使得所述第一分组作为所述第二分组的数据部分,所述第二分组是符合PCIe规范的TLP。
2.根据权利要求1所述的通信方法,其中所述报头还包括指示所述源应用与所述目的应用的连接的端口。
3.根据权利要求1所述的通信方法,还包括:
响应于接收到作为所述TLP的第三分组,通过所述第三分组的数据部分确定第四分组;
基于所述第四分组的报头,确定所述第四分组的目的应用;以及
将所述第四分组发送给所述目的应用。
4.根据权利要求2所述的通信方法,还包括:
向处理设备发送来自所述源应用的连接建立请求,所述连接建立请求指示所述源应用和所述目的应用;以及
从所述处理设备接收针对所述连接建立请求的响应,所述响应包括为所述源应用与所述目的应用之间的连接分配的所述端口。
5.根据权利要求2所述的通信方法,还包括:
向处理设备发送来自所述源应用的连接断开请求,使得断开所述源应用与所述目的应用之间的连接并释放指示所述源应用与所述目的应用之间的连接的所述端口,所述连接断开请求指示所述源应用和所述目的应用,并且包括所述端口。
6.根据权利要求1所述的通信方法,还包括:
从处理设备接收所述第二协议栈的物理地址。
7.一种FPGA设备,包括:
第一协议栈,被配置为:
从源应用接收针对目的应用的数据发送请求;
通过向所述数据发送请求添加报头而将所述数据发送请求封装成第一分组,所述报头指示所述源应用和所述目的应用;以及
发送与所述目的应用连接的第二协议栈的物理地址;
PCIe接口,被配置为:
基于从所述第一协议栈接收的所述第二协议栈的物理地址,将所述第一分组封装成第二分组,使得所述第一分组作为所述第二分组的数据部分,所述第二分组是符合PCIe规范的TLP;以及
发送所述第二分组。
8.根据权利要求7所述的FPGA设备,其中所述报头还包括指示所述源应用与所述目的应用的连接的端口。
9.根据权利要求7所述的FPGA设备,其中所述PCIe接口还被配置为响应于接收到作为所述TLP的第三分组,通过所述第三分组的数据部分确定第四分组;并且
其中所述协议栈被配置为:
基于所述第四分组的报头,确定所述第四分组的目的应用;以及
将所述第四分组发送给所述目的应用。
10.根据权利要求7所述的FPGA设备,其中所述第二协议栈被分配有所述第一分组大小的物理地址。
11.根据权利要求8所述的FPGA设备,其中所述FPGA设备还包括所述源应用,所述源应用被配置为:
向处理设备发送连接建立请求,所述连接建立请求指示所述源应用和所述目的应用;以及
从所述处理设备接收针对所述连接建立请求的响应,所述响应包括为所述源应用与所述目的应用之间的连接分配的端口。
12.根据权利要求8所述的FPGA设备,其中所述FPGA设备还包括所述源应用,所述源应用被配置为:
向处理设备发送连接断开请求,使得断开所述源应用与所述目的应用之间的连接并释放指示所述源应用与所述目的应用之间的连接的端口,所述连接断开请求指示所述源应用和所述目的应用,并且包括所述端口。
13.根据权利要求7所述的FPGA设备,其中所述第一协议栈还被配置为:
从处理设备接收所述第二协议栈的物理地址。
14.一种计算系统,包括:
第一FPGA设备,包括:
第一协议栈,被配置为:
从源应用接收针对目的应用的数据发送请求;
通过向所述数据发送请求添加报头而将所述数据发送请求封装成第一分组,所述报头指示所述源应用和所述目的应用;以及
发送与所述目的应用连接的第二协议栈的物理地址;
PCIe接口,被配置为:
基于所述第二协议栈的物理地址,将所述第一分组封装成第二分组,使得所述第一分组作为所述第二分组的数据部分,所述第二分组是符合PCIe规范的TLP;以及
发送所述第二分组;以及
第二FPGA设备,包括:
PCIe接口,被配置为:
响应于接收到所述第二分组,通过所述第二分组的数据部分确定所述第一分组;以及
所述第二协议栈,被配置为:
基于所述第一分组的报头,确定所述第一分组的目的应用;以及
将所述第一分组发送给所述目的应用。
15.根据权利要求14所述的计算系统,其中所述报头还包括指示所述源应用与所述目的应用的连接的端口。
16.根据权利要求14所述的计算系统,其中所述第一协议栈还被配置为:
从处理设备接收所述第二协议栈的物理地址。
17.根据权利要求14所述的计算系统,其中所述第一协议栈和所述第二协议栈均被分配有所述第一分组大小的物理地址。
18.根据权利要求14所述的计算系统,还包括:
用于连接所述第一FPGA设备和所述第二FPGA设备的网络结构,其中所述网络结构包括根复合体和交换器中的至少一项。
19.根据权利要求15所述的计算系统,其中所述第一FPGA设备包括所述源应用,所述源应用被配置为:
向处理设备发送来自所述源应用的连接建立请求,所述连接建立请求指示所述源应用和所述目的应用;以及
从所述处理设备接收针对所述连接建立请求的响应,所述响应包括为所述源应用与所述目的应用之间的连接分配的端口。
20.根据权利要求15所述的计算系统,其中所述第一FPGA设备包括所述源应用,并且所述源应用被配置为:
向处理设备发送连接断开请求,使得断开所述源应用与所述目的应用之间的连接并释放指示所述源应用与所述目的应用之间的连接的端口,所述连接断开请求指示所述源应用和所述目的应用,并且包括所述端口。
CN201710375569.XA 2017-05-24 2017-05-24 现场可编程门阵列之间的通信 Active CN108959144B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201710375569.XA CN108959144B (zh) 2017-05-24 2017-05-24 现场可编程门阵列之间的通信
PCT/US2018/029240 WO2018217378A1 (en) 2017-05-24 2018-04-25 Communication between field programmable gate arrays
US16/616,301 US11042497B2 (en) 2017-05-24 2018-04-25 Communication between field programmable gate arrays
EP18726592.1A EP3631640B1 (en) 2017-05-24 2018-04-25 Communication between field programmable gate arrays

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710375569.XA CN108959144B (zh) 2017-05-24 2017-05-24 现场可编程门阵列之间的通信

Publications (2)

Publication Number Publication Date
CN108959144A CN108959144A (zh) 2018-12-07
CN108959144B true CN108959144B (zh) 2021-08-20

Family

ID=62223223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710375569.XA Active CN108959144B (zh) 2017-05-24 2017-05-24 现场可编程门阵列之间的通信

Country Status (4)

Country Link
US (1) US11042497B2 (zh)
EP (1) EP3631640B1 (zh)
CN (1) CN108959144B (zh)
WO (1) WO2018217378A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7359388B2 (en) * 2002-03-20 2008-04-15 Network Equipment Technologies, Inc. Method and apparatus for frame packing in large networks
CN101202707A (zh) * 2007-12-03 2008-06-18 杭州华三通信技术有限公司 高速单板传输报文的方法、现场可编程门阵列及高速单板
CN104133777A (zh) * 2014-07-24 2014-11-05 曙光信息产业(北京)有限公司 一种共享存储系统及其使用方法
CN104780019A (zh) * 2014-12-03 2015-07-15 中国航天科工集团第三研究院第八三五七研究所 光纤通信数据的存储方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921323B2 (en) 2004-05-11 2011-04-05 L-3 Communications Integrated Systems, L.P. Reconfigurable communications infrastructure for ASIC networks
US20090228628A1 (en) * 2008-03-06 2009-09-10 L3 Communications Integrated Systems, L.P. Multi-fpga pci express x16 architecture
US8175095B2 (en) 2008-12-19 2012-05-08 L3 Communications Integrated Systems, L.P. Systems and methods for sending data packets between multiple FPGA devices
US9600431B2 (en) * 2012-10-22 2017-03-21 Intel Corporation High performance interconnect physical layer
US20140114928A1 (en) * 2012-10-22 2014-04-24 Robert Beers Coherence protocol tables
CN108062285B (zh) * 2014-06-27 2022-04-29 华为技术有限公司 一种访问NVMe存储设备的方法和NVMe存储设备
CN106407522B (zh) * 2016-08-31 2019-09-10 德为显示科技股份有限公司 基于fpga的逻辑ip总线互联实现装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7359388B2 (en) * 2002-03-20 2008-04-15 Network Equipment Technologies, Inc. Method and apparatus for frame packing in large networks
CN101202707A (zh) * 2007-12-03 2008-06-18 杭州华三通信技术有限公司 高速单板传输报文的方法、现场可编程门阵列及高速单板
CN104133777A (zh) * 2014-07-24 2014-11-05 曙光信息产业(北京)有限公司 一种共享存储系统及其使用方法
CN104780019A (zh) * 2014-12-03 2015-07-15 中国航天科工集团第三研究院第八三五七研究所 光纤通信数据的存储方法

Also Published As

Publication number Publication date
WO2018217378A1 (en) 2018-11-29
EP3631640B1 (en) 2022-03-30
EP3631640A1 (en) 2020-04-08
CN108959144A (zh) 2018-12-07
US20200117630A1 (en) 2020-04-16
US11042497B2 (en) 2021-06-22

Similar Documents

Publication Publication Date Title
CN110888827B (zh) 数据传输方法、装置、设备及存储介质
US10732879B2 (en) Technologies for processing network packets by an intelligent network interface controller
CN112054963A (zh) 用于异构计算环境中的数据传输的网络接口
US20170228337A1 (en) Network interface card configuration method and resource management center
CN109445905B (zh) 虚拟机数据通信方法和系统以及虚拟机配置方法和装置
US11960430B2 (en) Remote mapping method, apparatus and device for computing resources, and storage medium
US11726938B2 (en) Communications for field programmable gate array device
US11750418B2 (en) Cross network bridging
CN110941576A (zh) 具有多模pcie功能的存储控制器的系统、方法和设备
US8527661B1 (en) Gateway for connecting clients and servers utilizing remote direct memory access controls to separate data path from control path
CN112214166A (zh) 用于传输数据处理请求的方法和装置
US11714776B2 (en) Enabling a multi-chip daisy chain topology using peripheral component interconnect express (PCIe)
US9219696B2 (en) Increased efficiency of data payloads to data arrays accessed through registers in a distributed virtual bridge
CN108959144B (zh) 现场可编程门阵列之间的通信
US7206889B2 (en) Systems and methods for enabling communications among devices in a multi-cache line size environment and disabling communications among devices of incompatible cache line sizes
KR102303424B1 (ko) 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치
CN105786398A (zh) 存储器映射方法和存储器映射系统
US20120331179A1 (en) Network-to-network bridge
CN115269174A (zh) 一种数据传输方法、数据处理方法及相关产品
JP2023529831A (ja) 直接取り付けられたディスパッチを使用した、分離されたスイッチ制御経路
EP1752877A2 (en) A processing module
WO2016074179A1 (zh) 一种数据处理方法及多核处理器系统
CN108701103B (zh) 具有工作存储器的计算单元的存储器直接访问控制装置
CN116132352A (zh) 数据传输方法、装置及计算机系统
CN117421268A (zh) 一种互联系统、设备及网络

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant