一种FPGA集群方法、FPGA芯片和FPGA集群系统与流程

文档序号:22890866发布日期:2020-11-10 18:16阅读:196来源:国知局
一种FPGA集群方法、FPGA芯片和FPGA集群系统与流程

本发明涉及计算机及通讯领域,特别涉及一种fpga集群方法、fpga芯片和fpga集群系统。



背景技术:

随着计算机技术的发展,cpu本身无法满足高性能计算软件的性能要求,导致了需求和性能之间出现了缺口,采用专用协处理器的异构计算方式来提升处理性能,成为业界的首选。相比gpu,fpga(field-programmablegatearray,现场可编程门阵列)具有低功耗、低延迟的优势;相比asic,fpga可编程,并且可以保持数据中心的同构性。因此cpu+fpga构型的计算机设备被广泛地应用。

随着fpga被广泛应用,在一个局域网中,可能存在相当多的使用了fpga芯片的计算机设备。然而,这些设备中的fpga芯片,各自独立进行计算,一方面无法应对较为庞大的计算需求,另一方面在空闲时又造成了一定程度的浪费。因此,如何将整个局域网中fpga芯片的资源整合起来,合理分配,以达到最优化地利用这些资源的目的,是本领域内需要解决的重要问题。



技术实现要素:

本发明的目的在于提供一种fpga集群方法、fpga芯片和fpga集群系统,以解决局域网中fpga芯片资源的整合问题。

为解决上述技术问题,本发明提供了一种fpga集群方法,每个fpga节点包括第一存储区域和第二存储区域,所述第一存储区域中记录有所述第二存储区域的资源信息,所述fpga节点包括主节点及多个子节点,所述fpga集群方法包括如下步骤:

步骤s1:第一个所述子节点的第二存储区域的资源不足时,向所述主节点发送资源分配请求,所述主节点根据自身的第一存储区域的信息,分配第二个所述子节点的第二存储区域给第一个所述子节点,并更新所述主节点自身的第一存储区域的内容;

步骤s2:第一个所述子节点向第二个所述子节点发送访问请求,第二个所述子节点与第一个所述子节点建立访问通道,第二个所述子节点更新自身的第一存储区域的内容;

步骤s3:第一个所述子节点向所述主节点发送业务完成信号,所述主节点更新自身的第一存储区域的内容。

可选的,所述步骤s2还包括:第二个所述子节点将自身的第一存储区域中更新的内容发送给所述主节点,所述主节点更新自身的第一存储区域的内容。

可选的,所述步骤s3还包括:第一个所述子节点向所述第二个所述子节点发送业务完成信号,所述第二个所述子节点更新自身的第一存储区域的内容,或者所述主节点向所述第二个所述子节点发送业务完成信号,所述第二个所述子节点更新自身的第一存储区域的内容。

可选的,采用rdma技术建立所述步骤s2中所述的访问通道。

可选的,所述主节点的第一存储区域中包括所有所述fpga节点的第二存储区域的资源信息;所述子节点的第一存储区域中包括该子节点的第二存储区域的资源信息。

可选的,在一个所述fpga节点中,所述资源信息包括所述第二存储区域相对应的地址以及所述第二存储区域的使用状态。

可选的,所述使用状态包括:

第一状态,代表所指示的所述第二存储区域空闲;

第二状态,代表所指示的所述第二存储区域被至少一个所述fpga节点所读取;

第三状态,代表所指示的所述第二存储区域已经被一个节点独占写权限,且又被至少一个节点所读取;以及,

第四状态,代表所指示的所述第二存储区域已经被一个节点独占写权限。

可选的,所述第一存储区域的大小事先设定或者根据实际运行情况自动调节,且所述第二存储区域的大小事先设定或者根据实际运行情况自动调节。

为解决上述技术问题,根据本发明的第二个方面,还提供了一种fpga芯片,包括第一逻辑模块和支持rdma技术的网卡,所述第一逻辑模块与所述网卡通信连接,形成一个fpga节点,所述fpga节点用于上述的fpga集群方法,通过所述网卡与fpga集群中其它的fpga节点通信连接。

可选的,所述的fpga芯片包括内存模块,所述内存模块被分割成第一存储区域和第二存储区域。

可选的,所述的fpga芯片包括cache模块,用于缓冲所述第一存储区域的内容。

可选的,所述的fpga芯片包括第二逻辑模块和内存模块,所述第二逻辑模块由内存颗粒或flash组成,所述第二逻辑模块被配置为第一存储区域,所述内存模块被配置为第二存储区域。

为解决上述技术问题,根据本发明的第三个方面,还提供了一种fpga集群系统,其特征在于,包括两个以上的上述的fpga芯片,其中一个所述fpga芯片被配置为主节点,其余的所述fpga芯片被配置为子节点。

与现有技术相比,在本发明提供的fpga集群方法、fpga芯片和fpga集群系统中,每个fpga节点包括第一存储区域和第二存储区域,所述第一存储区域中记录有所述第二存储区域的资源信息。当第一个所述子节点的第二存储区域的资源信息不足时,向所述主节点发送资源分配请求,所述主节点根据自身的第一存储区域的信息,分配第二个所述子节点的第二存储区域给第一个所述子节点,并更新所述主节点自身的第一存储区域的内容;然后,第一个所述子节点向第二个所述子节点发送访问请求,第二个所述子节点与第一个所述子节点建立访问通道,第二个所述子节点更新自身的第一存储区域的内容;最后,第一个所述子节点向所述主节点发送业务完成信号,所述主节点更新自身的第一存储区域的内容。如此配置,能够将整个局域网中fpga芯片的资源整合起来,合理分配,以达到最优化地利用这些资源的目的。

附图说明

本领域的普通技术人员将会理解,提供的附图用于更好地理解本发明,而不对本发明的范围构成任何限定。其中:

图1是本发明实施例一的fpga芯片和fpga集群系统的示意图;

图2是本发明实施例一的fpga集群方法流程示意图;

图3a是本发明实施例一的工作状态切换逻辑示意图;

图3b是本发明实施例一的另一工作状态切换逻辑示意图;

图4是本发明实施例二的fpga芯片示意图。

附图中:

1-fpga芯片;2-网络总线;3-读/写请求判断单元;4-读请求达到上限请求单元。

具体实施方式

为使本发明的目的、优点和特征更加清楚,以下结合附图和具体实施例对本发明作进一步详细说明。需说明的是,附图均采用非常简化的形式且未按比例绘制,仅用以方便、明晰地辅助说明本发明实施例的目的。此外,附图所展示的结构往往是实际结构的一部分。特别的,各附图需要展示的侧重点不同,有时会采用不同的比例。

如在本发明中所使用的,单数形式“一”、“一个”以及“该”包括复数对象,术语“或”通常是以包括“和/或”的含义而进行使用的,术语“若干”通常是以包括“至少一个”的含义而进行使用的,术语“至少两个”通常是以包括“两个或两个以上”的含义而进行使用的,此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者至少两个该特征,“一端”与“另一端”以及“近端”与“远端”通常是指相对应的两部分,其不仅包括端点,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。此外,如在本发明中所使用的,一元件设置于另一元件,通常仅表示两元件之间存在连接、耦合、配合或传动关系,且两元件之间可以是直接的或通过中间元件间接的连接、耦合、配合或传动,而不能理解为指示或暗示两元件之间的空间位置关系,即一元件可以在另一元件的内部、外部、上方、下方或一侧等任意方位,除非内容另外明确指出外。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明的目的在于提供一种fpga集群方法、fpga芯片和fpga集群系统,以解决局域网中fpga芯片资源的整合问题。

以下参考附图进行描述。

【实施例一】

请参考图1至图3b,其中图1是本发明实施例一的fpga芯片和fpga集群方法示意图;图2是本发明实施例一的fpga集群方法流程示意图;图3a是本发明实施例一的工作状态切换逻辑示意图;图3b是本发明实施例一的另一工作状态切换逻辑示意图。

本实施例提供了一种fpga集群系统。请参考图1,fpga集群系统包括两个以上的fpga节点,其中每个fpga节点包括第一存储区域和第二存储区域,所述第一存储区域中记录有所述第二存储区域的资源信息,所述fpga节点包括主节点及多个子节点。

基于所述fpga集群系统,本实施例提供一种fpga集群方法,请参考图2,所述fpga集群方法包括如下步骤:

步骤s1:第一个所述子节点的第二存储区域的资源不足时,向所述主节点发送资源分配请求,所述主节点根据自身的第一存储区域的信息,分配第二个所述子节点的第二存储区域给第一个所述子节点,并更新所述主节点自身的第一存储区域的内容;

步骤s2:第一个所述子节点向第二个所述子节点发送访问请求,第二个所述子节点与第一个所述子节点建立访问通道,第二个所述子节点更新自身的第一存储区域的内容;

步骤s3:第一个所述子节点向所述主节点发送业务完成信号,所述主节点更新自身的第一存储区域的内容。

如此配置,各子节点均提供了自己的第二存储区域作为公共资源,大大增加了单个子节点潜在的内存资源;同时,又以第一存储区域作为辅助,记录有第二存储区域的资源信息,方便整个系统对各子节点的空闲资源的统筹规划,能够自适应地优化配置资源。进一步地,避免了重复内存注册,降低主机和协处理器(fpga)负荷;避免了重复读、写以及栏栅;降低网络负荷,降低cpu负荷,提高内存实际吞吐率。

优选地,所述步骤s2还包括:第二个所述子节点将自身的第一存储区域中更新的内容发送给所述主节点,所述主节点更新自身的第一存储区域的内容。使得主节点总能够获得全局的资源信息最新视图,有利于主节点更为精确地分配系统资源。

优选地,所述步骤s3还包括:第一个所述子节点向所述第二个所述子节点发送业务完成信号,所述第二个所述子节点更新自身的第一存储区域的内容,或者所述主节点向所述第二个所述子节点发送业务完成信号,所述第二个所述子节点更新自身的第一存储区域的内容。进一步保证了主节点获得的全局的资源信息是最新的,有利于主节点更为精确地分配系统资源。

优选地,采用rdma技术建立所述步骤s2中所述的访问通道。rdma(remotedirectmemoryaccess,远程直接内存访问)是指在没有双方主机操作系统直接参与下,支持内存对内存的节点间数据传输的技术,如此配置,可以提供提高带宽、降低延迟,有利于多个fpga芯片1之间的协同工作。

优选地,所述主节点的第一存储区域中包括所有所述fpga节点的第二存储区域的资源信息;所述子节点的第一存储区域中包括该子节点的第二存储区域的资源信息。如此配置,可以让主节点保留全局所有信息,因而能够更好地规划资源的分配,同时,各节点只保留了自己的信息,节约了存储空间。

在一实施例中,主节点和子节点的存储方式可以不同,主节点可以采用粗颗粒较概括的方式存储第一存储区域的数据;子节点可以用细颗粒较详细的方式存储第一存储区域的数据。当主节点进行资源规划时,在绝大多数工况下,主节点仍能根据自身的数据做出正确的判断,当自身的数据不足以做出判断时,向对应的子节点发送索要详细信息的请求,获得数据后做出判断。如此配置,可以进一步节约存储空间。

优选地,在一个所述fpga节点中,所述资源信息包括所述第二存储区域相对应的地址以及所述第二存储区域的使用状态。其中所述地址是指能够方便各子节点迅速定位到目标第二存储区域的数据格式,且全局唯一,在一实施例中,可以用子节点的ip地址+内存地址来标识第二存储区域。使用状态可以根据实际的业务逻辑进行事先的归纳和划分,并采用枚举值进行标识。如此配置,能够让需要资源的子节点迅速定位目标内存,也有利于主节点的判断。

在一实施例中,使用状态包括:

第一状态,代表所指示的所述第二存储区域空闲;

第二状态,代表所指示的所述第二存储区域被至少一个所述fpga节点所读取;

第三状态,代表所指示的所述第二存储区域已经被一个节点独占写权限,且又被至少一个节点所读取;以及,

第四状态,代表所指示的所述第二存储区域已经被一个节点独占写权限。

请参考图3a,当某个第二存储区域为第一状态时,若有请求到来,先通过读/写请求判断单元3判断是读请求还是写请求,若为读请求则状态更新为第二状态,否则更新为第四状态。当某个第二存储区域为第二状态时,同样,若有请求到来,先通过读/写请求判断单元3判断是读请求还是写请求,若为读请求,则继续停留在第二状态,若为写请求,则状态更新为第四状态。

请参考图3b,当某个第二存储区域为第三状态时,若有请求到来,先通过读/写请求判断单元3判断是读请求还是写请求,若为写请求则状态更新为第四状态,若为读请求,则继续通过读请求达到上限请求单元4判断请求是否已达上限,若已经达到上限,则状态更新为第一状态,否则继续停留在第三状态。当某个第二存储区域为第四状态时,若有请求到来,先通过读/写请求判断单元3判断是读请求还是写请求,若为读请求则状态更新为第三状态,否则继续停留在第四状态。

首先,通过采用四个状态来对所有内存可能的被占用的情况进行了分类,即能够在最大程度上节约状态枚举值所需要的存储空间,即只需要2个bit,又能够清晰地表达当前的资源状态,为主节点的判断提供了依据。其次,发明人对各状态下遇到不同的请求时,状态的各自转化逻辑进行了定义,符合实际运行的需要。

在一些实施例中,所述第一存储区域的大小可事先设定,所述第二存储区域的大小也可事先设定。这样设计的好处在于可以简化算法,并可以利用先验知识对系统进行优化。在另一些实施例中,所述第一存储区域可根据实际运行情况自动调节,所述第二存储区域的大小也可根据实际运行情况自动调节。这样设计的好处是适应性强,无需先验知识,用于业务逻辑复杂多变的工况。

本实施例还提供了一种fpga芯片1。请参考图1,所述fpga芯片1包括第一逻辑模块和支持rdma技术的网卡,所述第一逻辑模块与所述网卡通信连接,形成一个fpga节点,所述fpga节点用于上述的fpga集群方法,通过所述网卡与fpga集群中其它的fpga节点通信连接。其中第一逻辑模块用于实现上述方法中的逻辑和流程。

在一个可选的实施例中,所述的fpga芯片包括内存模块,所述内存模块被分割成第一存储区域和第二存储区域。所述第一逻辑模块直接与所述内存模块的第一存储区域通讯,访问和改写第一存储区域的内容。该实施例的优点在于逻辑直观,对现有fpga芯片的修改少,成本低。

在另一个可选的实施例中,所述的fpga芯片包括内存模块,所述内存模块被分割成第一存储区域和第二存储区域。所述的fpga芯片包括cache模块,用于缓冲所述第一存储区域的内容。所述cache模块和第一存储区域直接通讯,所述第一逻辑模块与cache模块进行交互来读写第一存储区域,并不直接与第一存储区域通讯。如此配置,降低了访问延迟,可以提升整个集群的运行速度。

可选的,在所述fpga集群系统中,一个所述fpga芯片被配置为主节点,其余的所述fpga芯片被配置为子节点。其中主节点和子节点的设计,利于全局统筹,逻辑清晰。

综上所述,本实施例提供的fpga集群方法、fpga芯片和fpga集群系统中,每个fpga节点包括第一存储区域和第二存储区域,所述第一存储区域中记录有所述第二存储区域的资源信息。允许各子节点访问其他子节点空闲的资源,并通过合理设计资源分配逻辑,达到较好的自适应分配效果,解决了局域网中fpga芯片资源的整合问题。

【实施例二】

请参考图4,图4是本发明实施例二的fpga芯片示意图。

在本实施例中,所述的fpga芯片包括第二逻辑模块和内存模块,所述第二逻辑模块由内存颗粒或flash组成,所述第二逻辑模块被配置为第一存储区域,所述内存模块被配置为第二存储区域。使用专门的逻辑模块来实现第一存储区域的功能,可以通过对该模块的材料和逻辑进行针对性的优化,进一步提升整个集群的运行速度,同时也节约了更多的内存空间用于第二存储区域。

【实施例三】

本实施例提供了一种fpga集群,系统为一个树形结构,具体分为一个主节点,n1个1级子节点,n2个2级子节点,……,nk个k级子节点。其中,每个子节点都有唯一的一个属于它的上一级节点,但是每一个子节点不一定有属于它的下一级子节点。

当某个子节点的资源不足时,向其上一级节点发送资源请求,上一级节点收到请求后,判断自身的所有下级子节点中是否有空闲资源,若有,则直接反馈给请求节点。请求节点根据反馈信息找到目标资源,建立访问通道。所有访问路径上的节点,均更新自身的第一存储区域内容;若无,则把请求往更上一级发送,直至发送至主节点。

如此配置,有利于fpga芯片的功能划分,空闲资源的共享,总是发生在功能更为接近的fpga芯片之间,对整体网络的影响也更小。必要时还可以拆分成互不干涉的独立集群。

【实施例四】

本实施例提供了一种fpga集群,集群内的子节点之间通过p2p技术连接。

当某个节点资源不足时,先向主节点发送资源请求,当主节点长时间未响应时,请求节点在p2p网络中广播资源请求,某个空闲节点接受到请求后,锁定该请求,并发送自身的第二存储区域地址给请求节点。两者之间建立访问通道,并同时更新这两者的第一存储区域。

如此配置,有利于增加网络的鲁棒性,不会因为主节点的单点失效而造成整个集群的瘫痪。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1