一种FPGA虚拟化资源调度系统及方法与流程
未命名
10-09
阅读:162
评论:0

一种fpga虚拟化资源调度系统及方法
技术领域
1.本发明属于计算机技术领域,具体涉及一种fpga虚拟化资源调度系统及方法。
背景技术:
2.随着当今社会,信息化、数字化、网络化、智能化趋势不断加深,数据计算量和信息处理规模呈爆发式增长,对平台的计算和控制能力均提出了更高的要求,以星载计算机为例,星载计算机是一种嵌入式系统,通常由微处理器、存储、通信、采集等模块组成,星载计算机是卫星的大脑,其主要负责星上数据管理、通信管理、能源管理、姿轨管理以及载荷管理等任务。随着卫星空间任务日益复杂,其对星载计算机的性能也提出了越来越高的要求。与此同时,另一方面随着半导体工艺进步的放缓以及芯片密度提高所带来的热问题,单颗芯片集成晶体管数量增长速度也在进一步降低,这使得单颗芯片的计算力增长速度难以适应当前复杂的生产环境以及海量数据处理的需求。因此如何提高芯片的资源利用率是当前面临的主要挑战。
3.对于传统星载计算机,其“算力”被封闭在独立的星载计算机内,各计算机的资源不能彼此共享,产生资源浪费,现有的功能独立的封闭式的星载计算系统已经不能满足航天器智能计算需求。因此,有必要在设法提高单点计算能力的同时,采用“云”化计算架构,由若干异构计算机互相配合完成一个目标计算任务,共享(稀有)计算资源,提升计算效率,平衡计算负载,提升星载计算系统的计算能力,满足智能化计算的需求。
4.因此,对于fpga此类高性能计算设备,借助虚拟化技术,实现任务驱动的器件功能的动态加载与资源管理。虚拟化技术可在一个物理平台上虚拟出更多的虚拟平台,而其中的每一个虚拟平台则可以作为独立的部分来使用。比起直接使用物理平台,虚拟化在资源的有效利用、动态调配和高可靠性方面有着巨大的优势。
5.fpga由于其硬件灵活性、优越的计算吞吐量和低能耗,在云计算和边缘计算中都得到了越来越多的关注。尽管fpga比cpu和gpu有很大的优势,但这些优势来自于设计和可用性的权衡。在传统的fpga开发模型中,使用者通常使用硬件描述语言(hdl)对应用场景进行建模,然后通过特定的fpga开发工具将硬件模型映射到fpga上,最终生成可以运行的fpga映像。这种开发模式的主要缺点是fpga只能由单一用户开发和使用,而与应用场景、fpga的产品种类等无关。比如对于一个对资源需求不大、而且不需要连续运行的应用而言,大部分fpga的硬件资源在大部分时间内都会闲置。很显然,这样很难在时空范围内对fpga进行充分利用。
6.为了提高fpga的开发效率、更好的利用fpga的逻辑资源、方便fpga的大规模部署和应用,需要将fpga进行一定程度的逻辑抽象,使顶层用户不必太多关注于fpga硬件逻辑的实现方式与细节。由此,fpga资源虚拟化技术被提出。fpga虚拟化技术打破了时间和空间维度的限制,使用户能够轻松的在不同时间,对多个fpga的各类资源进行充分的调度与使用。
7.当前主流的fpga虚拟化技术包括fpgaoverlay技术,部分可重构与虚拟化管理器
技术。
8.fpga overlay技术通过增加overlay层为上层用户提供一个他们更为熟悉的编程架构与接口,用户可以只需要关心上层应用实现,而不需要担心具体的硬件电路实现,由此实现了对fpga底层硬件资源的抽象和虚拟化。
9.overlay技术主要是对底层硬件资源进行抽象和虚拟化,为上层用户提供一个更为熟悉的编程架构和接口,极大的简化了上层用户对硬件资源的使用,起到了对硬件资源抽象的作用。但是,通过overlay技术实现的fpga虚拟化存在一个明显的缺陷,就是无法实现多租户同时使用fpga资源,因此通过该技术实现的fpga虚拟化,无法充分的使用和调度fpga资源。
10.部分可重构是指可以将fpga内部划分出一个或多个区域,并在fpga运行过程中单独对这些区域进行编程和配置,以改变区域内电路的逻辑,但并不影响fpga其他电路的正常运行。
11.部分可重构使得fpga可以在时间和空间两个维度,由硬件直接进行多任务的切换,其中vfpga本质上就是一个或多个可以动态重构的fpga区域,它们可以共同属于一个用户,或分属多个用户,运行着相同或不同的应用。在一个vfpga进行动态重构时,其他vfpga的运行不会受到影响。
12.使用部分可重构技术,可以将fpga划分成若干个子区域,作为虚拟fpga供单个或多个用户使用,同时保留一部分逻辑资源作为不可重配置区域,用来实现必要的基础架构,如内存管理与网络通信等。使用部分可重构技与虚拟化管理技术实现的fpga虚拟化可以实现多租户共享fpga资源,能够提高fpga的资源利用率,但是该技术无法像overlay技术一样对硬件资源进行抽象进而简化用户应用开发难度。
技术实现要素:
13.本发明的目的在于提供一种fpga虚拟化资源调度系统及方法,通过fpga虚拟化实现多用户对单fpga资源的并发使用,同时对fpga硬件资源进行抽象、管理,用户可通过自动化部署ui界面自动化完成任务部署,并针对多节点情况设计资源调度策略,可将用户任务自动化调度到合适的节点的运行,降低用户对fpga资源的使用复杂度,同时有效提高fpga资源使用的灵活性以及资源利用率。
14.为实现以上目的,本发明采用以下技术方案:
15.本发明实施例第一方面提供一种fpga虚拟化资源调度系统,包括资源调度管理模块以及多个资源处理节点,每个资源处理节点均包括通信连接的fpga虚拟化模块、上层控制器模块,上层控制器模块与资源调度管理模块通信连接;
16.fpga虚拟化模块包括采用局部动态重构技术将物理fpga划分为一个静态区域、一个或多个动态可重构区域,每个动态可重构区域用于部署并实现fpga资源调度任务;
17.上层控制器模块用于监管fpga虚拟化模块中动态可重构区域的fpga资源使用情况;
18.资源调度管理模块,用于接收资源调度需求,并根据各fpga虚拟化模块中动态可重构区域的fpga资源使用情况,对所有节点中的动态可重构区域的pfga资源进行调度管理。
19.作为优选方案,每个动态可重构区域均包括一个用于部署并实现fpga资源调度任务的vfpga,以及对vfpga进行管理的vfpga控制器;每个vfpga通过axi4 master接口、axi4 slave接口与系统axi-interconnect相连;
20.vfpga控制器包括离合器、内存管理单元、dma模块、axi4-axis桥;离合器通过axi4接口、axis接口与vfpga相连;内存管理单元通过axi4接口分别与离合器和axi-interconnect相连;dma模块通过axi4接口分别与离合器和axi-interconnect相连,同时与内存管理单元相连;axi4-axis桥通过axis接口分别与离合器和axi-interconnect相连;
21.离合器,用于隔离vfpga与静态逻辑之间的信号连接;
22.内存管理单元,通过页表将虚地址空间映射到相应的物理地址上;
23.dma模块,用于实现直接内存访问;
24.axi4-axis桥,用于实现vfpga控制器内部的数据传输,以及各vfpga之间数据传输。
25.作为优选方案,fpga虚拟化模块中还包括一个pice协议栈单元,pice协议栈单元用于维护pice协议栈,还用于fpga虚拟化子模块中的vfpga与上层控制器模块进行通信;
26.pice协议栈单元包括依次连接的应用层、事务层、数据链层、物理层;
27.应用层,与上层控制器模块通过pcie接口连接,将获取的fpga资源调度任务需求转换为数据发送给事务层;
28.事务层,接收来自应用层的数据并将其封装成数据包发向数据链层,也可以从数据链层接收数据报文并转发到应用层;
29.数据链层,接收来自事务层的数据报文,并添加sequence number前缀和crc后缀,并使用ack/nak以保证数据报文传递的可靠性;
30.物理层,用于接收、转发各种数据包,还用于创建和解码用于同步、管理每个动态可重构区域的fpga链路的专门序列。
31.作为优选方案,每个上层控制器子模块包括vfpga控制器驱动、系统管理器、系统监视器、fpga硬件管理器、硬件资源池;
32.vfpga控制器驱动,用于对vfpga控制器进行操纵;
33.系统管理器,用于与资源调度管理模块进行通信,受资源调度管理模块调度管理,负责vfpga的创建与销毁;
34.系统监视器,用于周期性监测fpga的工作状态、各vfpga的运行情况、fpga虚拟化资源使用情况以及pcie协议栈模块的流量统计情况,并将监测的数据信息持久化记录到数据库中;
35.硬件资源池,包括vfpga资源池、fpga内存池,用于管理记录fpga硬件资源的使用;
36.fpga硬件管理器,将相关的操作与fpga虚拟化模块进行沟通,将分配的硬件资源通过驱动实施于具体fpga硬件上。
37.作为优选方案,系统管理器与资源调度管理模块进行网络通信,将本计算节点的fpga虚拟化资源信息传输至资源调度管理模块;
38.接收资源调度管理模块的调度请求,根据不同请求做出对应的处理,并交由下游的各类管理器进行实施;
39.接收资源调度管理模块的资源信息监控请求,将系统监视器检测到的信息上传给
资源调度管理模块。
40.作为优选方案,资源调度管理模块还包括自动化部署ui;
41.所述自动化部署ui,用于接收fpga资源调度需求,并与资源调度管理模块进行网络通信;
42.所述资源调度管理模块包括对外接口、节点管理单元,资源调度单元;
43.对外接口,用于根据自动化部署ui获取的fpga资源调度任务需求提供fpga资源调度任务自动化部署接口;
44.节点管理单元,用于监控各节点中动态可重构区域的fpga资源使用情况;
45.资源调度单元,用于根据各节点中动态可重构区域的fpga资源使用情况,将接收的fpga资源调度任务调度到合适的动态可重构区域上运行。
46.本发明实施例第二方面提供一种fpga虚拟化资源调度方法,包括:
47.资源调度管理模块接收fpga资源调度任务,并根据fpga资源调度任务的需求以及各节点fpga资源的占用情况,将fpga资源调度任务调度部署到合适的动态可重构区域上运行;
48.用于部署fpga资源调度任务的动态可重构区域根据fpga资源调度任务的需求,创建用于运行fpga资源调度任务的vfpga。
49.作为优选方案,资源调度管理模块获取各节点fpga资源的占用情况的步骤包括:
50.资源调度管理模块运行后,节点管理单元通过组播发布服务,服务中携带ip和端口信息;
51.各上层节点控制器的系统管理器接收组播消息,并与组播内的ip、端口建立网络连接;
52.连接建立成功之后,各上层节点控制器的系统管理器会主动发起注册请求,节点管理单元接收到注册请求之后,将该节点的资源纳入管理以完成注册;
53.完成注册后,各上层节点控制器的系统管理器将各自节点的fpga资源使用情况周期上报给节点管理单元。
54.作为优选方案,用于部署fpga资源调度任务的的动态可重构区域根据fpga资源调度任务的需求,创建用于运行fpga资源调度任务的vfpga的步骤包括:
55.动态可重构区域的vfpga控制器中的离合器开启,复位可重构模块并下载重构相应的比特流,配置内存管理单元,并配置io_lut;
56.解复位可重构模块并关闭离合器,完成vfpga的创建工作,以将接收的fpga资源调度任务加载到vfpga中运行。
57.作为优选方案,为动态可重构区域配置内存管理单元的流程为:
58.s1、判断已映射地址空间是否小于所需映射空间n,若否则结束配置流程,若是则执行步骤s2;
59.s2、从fpga内存池中取出一个内存资源,通过驱动向该vfpga的内存管理管理单元添加一条映射记录;
60.s3、重复执行步骤s1~s2,直到已映射地址空间大于或等于所需映射空间n时,结束配置流程。
61.本发明的有益效果是:
62.1、本发明通过fpga虚拟化方法实现多用户对单fpga资源的并发使用,解决fpga只能由单一用户开发和使用的问题,达到提升fpga资源利用率的目的。能更充分的利用fpga资源,只要剩余的fpga资源能够满足用户任务的运行要求,则该用户任务可以在vfpga中运行,不会出现仅有一个用户任务运行在fpga上,且存在大量fpga资源处于空闲状态,造成资源利用率低的问题。
63.2、上层控制器模块能够响应资源调度管理模块的fpga资源状态请求,并将记录在数据库中的资源信息响应给资源调度管理服务。同时上层控制器模块支持对fpga资源的管理,响应资源调度管理模块的fpga资源请求,如果资源满足资源调度管理服务需求,将用户任务调度到合适位置运行。
64.3、降低了对fpga资源的使用难度,传统方法中fpga的使用是将fpga作为一个整体,将fpga程序通过仿真器加载到fpga中运行,本发明使用者只需要和上层控制器建立网络连接,通过请求应答模式进行资源的申请以及fpga任务的创建等操作,降低了对fpga的使用门槛。
65.4.从资源虚拟化到资源管理再到资源调度整个链条全部使用c/c++自研开发,无需部署k8s,资源占用小,部署简单、轻量化、灵活程度高。
附图说明
66.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
67.图1是实施例一提供的一种fpga虚拟化资源调度系统的结构示意图。
68.图2是fpga虚拟化模块的结构示意图。
69.图3是vfpga控制器的结构示意图。
70.图4是pcie协议栈单元的结构示意图。
71.图5是上层控制器模块的结构示意图。
72.图6是系统管理器的工作流程图。
73.图7是资源调度管理模块的结构示意图。
74.图8是在动态可重构区域创建vfpga的流程图。
具体实施方式
75.以下通过特定的具体实施例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
76.实施例一:
77.参照图1,本实施例提供一种fpga虚拟化资源调度系统,包括资源调度管理模块以及多个资源处理节点,每个资源处理节点均包括通信连接的fpga虚拟化模块、上层控制器
模块,上层控制器模块与资源调度管理模块通信连接;
78.fpga虚拟化模块包括采用局部动态重构技术将物理fpga划分为一个静态区域、一个或多个动态可重构区域,每个动态可重构区域用于部署并实现fpga资源调度任务。fpga虚拟化模块会被划分为静态区域和动态可重构区域,整个fpga的硬件资源包括dsp、pcie、lut、ff、bram、pblock等,具体每一个fpga虚拟化模块的硬件资源的多少由实际硬件决定,除去静态区固化程序使用的一些硬件资源外(其中静态区程序所占资源比例较小,占fpga总资源的5%以内)其余硬件资源全部归动态区使用。
79.静态区域即fgpa上划分出来运行固化程序的区域,该区域不可进行动态重配置,在实际应用过程中可将静态区域对应的mcs文件固化于flash中。动态可重构区域包括microblaze(嵌入式软核)、hwicap ip核、pcie接口。通过sdk对microblaze进行软件编程实现fpga的局部动态配置功能;hwicap ip核用于实现fpga通过axi总线对配置空间的读写操作,用户在创建fpga虚拟化任务时,通过hwicap ip核完成bit流写入到vfpga上的操作。fpga虚拟化模块的内部结构参照图2所示。
80.上层控制器模块用于监管fpga虚拟化模块中动态可重构区域的fpga资源使用情况;
81.资源调度管理模块,使用c/c++自主实现,用于接收资源调度需求,并根据各fpga虚拟化模块中动态可重构区域的fpga资源使用情况,对所有节点中的动态可重构区域的pfga资源进行调度管理。
82.进一步,每个动态可重构区域均包括一个用于部署并实现fpga资源调度任务的vfpga,以及对vfpga进行管理的vfpga控制器;每个vfpga通过axi4 master接口、axi4 slave接口与系统axi-interconnect相连;
83.参照图3,vfpga控制器包括离合器、内存管理单元、dma模块、axi4-axis桥;离合器通过axi4接口、axis接口与vfpga相连;内存管理单元通过axi4接口分别与离合器和axi-interconnect相连;dma模块通过axi4接口分别与离合器和axi-interconnect相连,同时与内存管理单元相连;axi4-axis桥通过axis接口分别与离合器和axi-interconnect相连;
84.离合器,用于隔离vfpga与静态逻辑之间的信号连接,接口主要包括axi4、axis以及时钟信号;
85.内存管理单元,通过页表将虚地址空间映射到相应的物理地址上;
86.dma模块,用于实现直接内存访问;
87.axi4-axis桥,用于实现vfpga控制器内部的数据传输,以及各vfpga之间数据传输。
88.具体的:
89.vfpga通过axi4接口对内存进行访问,axis接口有一发一收两组,用于模块之间的数据传输。上层控制器与fpga之间的数据传输,则通过pcie协议栈完成,fpga虚拟化模块内的两个vfpga之间的数据传输,则直接通过模块内的axi4-interconnect实现数据交换。
90.vfpga间的数据交换使用axis接口进行,而系统交换结构采用axi4实现,需设计相关组件完成协议的转换。当发送一个axis包时,dma模块通过tdest信号值从io lut查询写入的目的地址,从而通过axi4接口将axis包写入该地址。而对于接收接口而言,则需要axi4-axis桥将axi4写入操作流式化为axis协议,根据被写入的地址偏移来判断tdest的
值。
91.vfpga对于内存的访问可直接使用axi4协议进行读写访问,但是为了保证vfpga之间内存间的隔离性,需要内存管理单元接入进行管理。每一个vfpga都拥有一套独立的虚拟地址空间,通过内存管理单元将每个vfpga的虚拟地址空间映射到不同的物理地址上,不同vfpga能够访问到的地址空间在物理地址上互斥。内存管理单元中地址映射表由ps在vfpga被部署前配置,考虑到内存管理单元的资源开销,设计以4mb大小的地址范围为一页,内存管理单元记录每一页的虚拟地址到物理地址的偏移量。
92.进一步,fpga虚拟化模块中还包括一个pice协议栈单元,pice协议栈单元用于维护pice协议栈,还用于fpga虚拟化子模块中的vfpga与上层控制器模块进行通信。pice协议栈单元主要受上层控制器的控制,在vfpga初始化完成后,其将为vfpga配置pcie相关资源,创建所需的fifo,vfpga可以通过axis接口收发相关的数据流,完成send/recv操作;
93.参照图4,pice协议栈单元是分层实现的,它包含多个层次,从上到下分别为应用层、事务层、数据链层、物理层。pice协议栈单元的各个层次都是通过硬件逻辑实现的,发送时数据报文先由应用层产生,然后经过事务层,数据链路层和物理层最终发送出去;接收端则是相反的一个步骤,数据先经过物理层,然后向上送给数据链路层,事务层,最后到达应用层。pice协议栈单元即为pci总线。
94.应用层,与上层控制器模块通过pcie接口连接,将获取的fpga资源调度任务需求转换为数据发送给事务层。pci spec规定了256字节的配置空间,pcie总线为了兼容pci设备,几乎完整的保留了pci总线的配置空间。并将配置空间扩展到了4kb,用于支持一些pcie总线中的新功能,如capability,power management,msi等。pcie将配置空间扩展到4kb,原来cf8/cfc的访问方式仍然可以访问所有pcie配置空间的前256byte,但是访问不了剩下的空间。故pcie引入了增强配置空间访问机制,它通过将配置空间映射到mmio空间,使得对配置空间的访问就像对内存的访问一样,因此可以访问完整的4kb配置空间。
95.事务层,接收来自应用层的数据并将其封装成数据包发向数据链层,也可以从数据链层接收数据报文并转发到应用层。事务层定义了pcie协议栈模块所使用的事务,其中大部分都与pci总线兼容在pcie spec中,规定了四种类型的请求(request):memory、io、configuration和messages。其中,前三种都是从pci/pci-x总线中继承过来的,第四种messages是pcie新增加的类型。事务层接收来自核心层的数据并将其封装成tlp(transaction layer packet)发向数据链路层。另外事务层也可以从数据链路层接收数据报文,然后转发到核心层。
96.数据链层,接收来自事务层的数据报文,并添加sequence number前缀和crc后缀,并使用ack/nak以保证数据报文传递的可靠性。另外它还定义了多种dllp(data link layer pakcet),dllp产生于数据链路层结束于数据链路层。
97.物理层,用于接收、转发各种数据包,还用于创建和解码用于同步、管理每个动态可重构区域的fpga链路的专门序列。物理层是pcie总线的最底层,将pcie设备相互连接在一起。物理层还实现了链路训练和初始化的功能,它通过ltssm来完成。
98.进一步,fpga虚拟化模块需要上层控制器模块来管理硬件资源,以及通过上层控制器模块与资源调度管理模块通信,本设计中上层控制器模块程序运行在ft2000/4中。
99.参照图5,每个上层控制器子模块包括vfpga控制器驱动、系统管理器、系统监视
器、fpga硬件管理器、硬件资源池。
100.vfpga控制器驱动,用于对vfpga控制器进行操纵。由于vfpga的整个生命周期受上层控制器子模块管控,而上层控制器子模块端的ft2000/4处理器上运行了linux系统。为了方便上层控制器子模块操纵底层硬件,设计vfpga控制器驱动。
101.对于vfpga控制器,其寄存器相关信息如表1所示,驱动程序主要需要操作三部分:离合器状态、io_lut的映射表以及内存管理单元mmu的内存映射表。
102.表1vfpga控制器寄存器表
[0103][0104]
此设备的驱动实现采用基于设备树的字符设备驱动实现。对于每个vfpga控制器设备,都会有一个相关的字符设备文件暴露给用户,用户可以通过操作/dev/vfpga_n设备文件连控制底层控制器硬件。用户通过ioctl的系统调用的方式与设备驱动进行沟通。
[0105]
调用方式参数如表2所示:
[0106]
表2vfpga控制器驱动接口
[0107][0108]
其中,对于decoupler_on以及decoupler_off,系统调用需要配合中断服务程序完成。用户在发起这两个命令时,驱动程序分别修改decoupler_ctrl的值,而后驱动程序会阻塞得等待一个完成量,该完成量由decoupler完成相关操作后触发的中断对应的中断服务程序提供。而其余的命令秩序对寄存器进行读写操作均为无阻塞形式。
[0109]
系统管理器,用于与资源调度管理模块进行通信,受资源调度管理模块调度管理,负责vfpga的创建与销毁。系统管理器的主要工作是接收并处理资源调度管理服务的相关操作请求,将这些请求根据当前资源情况实现于当前fpga具体的硬件资源上。此外,系统管理器也可接收资源调度管理模块的请求将系统监视器的监视结果从数据库中取出并将结果返回。
[0110]
进一步,参照图6,系统管理器的工作流程为:系统管理器与资源调度管理模块进行网络通信,将本计算节点的fpga虚拟化资源信息传输至资源调度管理模块;
[0111]
接收资源调度管理模块的调度请求,根据不同请求做出对应的处理,并交由下游的各类管理器进行实施;
[0112]
接收资源调度管理模块的资源信息监控请求,将系统监视器检测到的信息上传给
资源调度管理模块。
[0113]
系统监视器,用于周期性监测fpga的工作状态、各vfpga的运行情况、fpga虚拟化资源使用情况以及pcie协议栈模块的流量统计情况,并将监测的数据信息持久化记录到数据库中。
[0114]
硬件资源池,包括vfpga资源池、fpga内存池,用于管理记录fpga硬件资源的使用。fpga硬件资源包括可重构块(如clb/block ram/dsp等)、pcie stack中的资源以及fpga物理内存资源。这些资源的管理相对比较简单,只需记录每个任务对于这两个资源的拥有情况,同一个任务只能拥有一个可重构区域。而对于fpga物理内存资源而言,由于底层mmu以4m大小为一页,所以在fpga物理内存资源池中,对所有的物理内存,也需以4m大小的范围做分割管理。如本系统中的fpga的物理内存大小有8gb,则其分割出来的内存资源数目为8gb/4m,即2048个。
[0115]
当一个任务被部署的时候,将会从三个池子中的空闲资源中取出资源来部署运行该任务。其首先会根据任务的比特流文件对应的可重构区域,将该任务部署到该可重构区域中,而后根据该任务的需要为其分配相应的内存,这需要根据该任务描述中的内存需求分配。如一个任务需要4g的内存,即vfpga虚拟地址空间为0-4gb,那么需要从fpga内存池中的空闲区取出1024个资源。在任务被卸载的时,分配给该任务的资源会被重新回收至各资源池的空闲区。
[0116]
fpga硬件管理器,将相关的操作与fpga虚拟化模块进行沟通,将分配的硬件资源通过驱动实施于具体fpga硬件上。这些相关的操作有可重构区域的配置、可重构过程中离合器的控制以及mmu、io_lut的配置等。
[0117]
数据库可以根据实际需求进行选择,这里建议使用sqlite进行上层控制器模块中其他组件的数据持久化记录,因为sqlite是一种无服务器轻量级数据库,资源占用小且易使用。
[0118]
进一步,资源调度管理模块还包括自动化部署ui;
[0119]
所述自动化部署ui,用于接收fpga资源调度需求,并与资源调度管理模块进行网络通信,用户通过ui界面实现参数输入,ui客户端根据用户填写的参数,调用相应的restfulapi接口实现任务的自动化部署。
[0120]
参照图7,所述资源调度管理模块包括对外接口、节点管理单元,资源调度单元;
[0121]
对外接口,用于根据自动化部署ui获取的fpga资源调度任务需求提供fpga资源调度任务自动化部署接口。对外接口主要提供restfrulapi服务,可通过调用restfrulapi接口实现任务的自动化部署。
[0122]
节点管理单元,用于监控各节点中动态可重构区域的fpga资源使用情况。
[0123]
资源调度单元,用于根据各节点中动态可重构区域的fpga资源使用情况,将接收的fpga资源调度任务调度到合适的动态可重构区域上运行。
[0124]
具体的:
[0125]
资源调度管理模块主要是为用户提供资源管理服务,尤其是多节点的使用场景,用户无需关心应该将任务部署到哪一个节点以及各节点资源的占用情况,用户只需要通过图形化ui将任务以及任务需要的资源信息发送给资源调度管理模块,即可完成任务的自动化部署。整个过程用户对内部的调度无感知,能够极大的提高fpga资源调度任务部署体验。
资源调度管理模块部署于同一个局域网内的任意的一块cpu主板操作系统上。
[0126]
资源调度管理软件模块运行之后,节点管理单元首先会通过组播发布服务,服务中会携带ip和端口信息,各上层控制器子模块的系统管理器接收到该组播消息后会和组播内的ip和端口建立网络连接,连接建立成功之后,各系统管理器会向节点管理单元主动发起注册请求,请求信息中包含节点的资源类型、资源状态、资源使用情况等,节点管理单元接收到注册请求之后,会将该节点的资源纳入管理,注册成功之后,系统管理器会周期上报fpga资源使用情况给节点管理单元,这样资源调度管理模块就可以对各节点的资源使用情况以及状态进行掌控,一旦用户发起任务部署请求,可根据调度策略将用户任务调度到合适的节点运行。
[0127]
当用户创建fpga任务时,资源调度单元首先会遍历各个节点找到满足资源要求的节点,如果不存在满足要求的节点,则任务部署失败,如果只有一个节点满足要求,则将该任务部署到该节点上运行,如果有多个节点满足要求,则会依据调度策略,将任务调度到合适的节点上运行。这里以资源最大利用策略为例,用户任务需要500个block ram,假设两个节点满足要求,其中一个节点剩余600个block ram,另外一个节点剩余2000个block ram,那么将用户任务调度到剩余600个block ram的节点,这样做能够最大化的保证单个节点资源利用最大化。调度策略根据实际需求进行自定义设计,调度策略以动态库的形式实现,开发者只需要按照接口要求实现相应的策略,即可实现调度策略的替换。
[0128]
实施例二:
[0129]
本实施例提供一种fpga虚拟化资源调度方法,包括:
[0130]
资源调度管理模块接收fpga资源调度任务,并根据fpga资源调度任务的需求以及各节点fpga资源的占用情况,将fpga资源调度任务调度部署到合适的动态可重构区域上运行;
[0131]
用于部署fpga资源调度任务的动态可重构区域根据fpga资源调度任务的需求,创建用于运行fpga资源调度任务的vfpga。
[0132]
进一步,资源调度管理模块获取各节点fpga资源的占用情况的步骤包括:
[0133]
资源调度管理模块运行后,节点管理单元通过组播发布服务,服务中携带ip和端口信息;
[0134]
各上层节点控制器的系统管理器接收组播消息,并与组播内的ip、端口建立网络连接;
[0135]
连接建立成功之后,各上层节点控制器的系统管理器会主动发起注册请求,节点管理单元接收到注册请求之后,将该节点的资源纳入管理以完成注册;
[0136]
完成注册后,各上层节点控制器的系统管理器将各自节点的fpga资源使用情况周期上报给节点管理单元。
[0137]
进一步,参照图8,动态可重构区域创建用于运行fpga资源调度任务的vfpga的步骤包括:
[0138]
动态可重构区域的vfpga控制器中的离合器开启,复位可重构模块并下载重构相应的比特流,配置内存管理单元,并配置io_lut;
[0139]
解复位可重构模块并关闭离合器,完成vfpga的创建工作,以将接收的fpga资源调度任务加载到vfpga中运行。
[0140]
更进一步,参照图8,为动态可重构区域配置内存管理单元的流程为:
[0141]
s1、判断已映射地址空间是否小于所需映射空间n,若否则结束配置流程,若是则执行步骤s2;
[0142]
s2、从fpga内存池中取出一个内存资源,通过驱动向该vfpga的内存管理管理单元添加一条映射记录;
[0143]
s3、重复执行步骤s1~s2,直到已映射地址空间大于或等于所需映射空间n时,结束配置流程。
[0144]
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的保护范围内。
技术特征:
1.一种fpga虚拟化资源调度系统,其特征在于,包括资源调度管理模块以及多个资源处理节点,每个资源处理节点均包括通信连接的fpga虚拟化模块、上层控制器模块,上层控制器模块与资源调度管理模块通信连接;fpga虚拟化模块包括采用局部动态重构技术将物理fpga划分为一个静态区域、一个或多个动态可重构区域,每个动态可重构区域用于部署并实现fpga资源调度任务;上层控制器模块用于监管fpga虚拟化模块中动态可重构区域的fpga资源使用情况;资源调度管理模块,用于接收资源调度需求,并根据各fpga虚拟化模块中动态可重构区域的fpga资源使用情况,对所有节点中的动态可重构区域的pfga资源进行调度管理。2.根据权利要求1所述的一种fpga虚拟化资源调度系统,其特征在于,每个动态可重构区域均包括一个用于部署并实现fpga资源调度任务的vfpga,以及对vfpga进行管理的vfpga控制器;每个vfpga通过axi4 master接口、axi4 slave接口与系统axi-interconnect相连;vfpga控制器包括离合器、内存管理单元、dma模块、axi4-axis桥;离合器通过axi4接口、axis接口与vfpga相连;内存管理单元通过axi4接口分别与离合器和axi-interconnect相连;dma模块通过axi4接口分别与离合器和axi-interconnect相连,同时与内存管理单元相连;axi4-axis桥通过axis接口分别与离合器和axi-interconnect相连;离合器,用于隔离vfpga与静态逻辑之间的信号连接;内存管理单元,通过页表将虚地址空间映射到相应的物理地址上;dma模块,用于实现直接内存访问;axi4-axis桥,用于实现vfpga控制器内部的数据传输,以及各vfpga之间数据传输。3.根据权利要求1所述的一种fpga虚拟化资源调度系统,其特征在于,fpga虚拟化模块中还包括一个pice协议栈单元,pice协议栈单元用于维护pice协议栈,还用于fpga虚拟化子模块中的vfpga与上层控制器模块进行通信;pice协议栈单元包括依次连接的应用层、事务层、数据链层、物理层;应用层,与上层控制器模块通过pcie接口连接,将获取的fpga资源调度任务需求转换为数据发送给事务层;事务层,接收来自应用层的数据并将其封装成数据包发向数据链层,也可以从数据链层接收数据报文并转发到应用层;数据链层,接收来自事务层的数据报文,并添加sequence number前缀和crc后缀,并使用ack/nak以保证数据报文传递的可靠性;物理层,用于接收、转发各种数据包,还用于创建和解码用于同步、管理每个动态可重构区域的fpga链路的专门序列。4.根据权利要求1所述的一种fpga虚拟化资源调度系统,其特征在于,每个上层控制器子模块包括vfpga控制器驱动、系统管理器、系统监视器、fpga硬件管理器、硬件资源池;vfpga控制器驱动,用于对vfpga控制器进行操纵;系统管理器,用于与资源调度管理模块进行通信,受资源调度管理模块调度管理,负责vfpga的创建与销毁;系统监视器,用于周期性监测fpga的工作状态、各vfpga的运行情况、fpga虚拟化资源使用情况以及pcie协议栈模块的流量统计情况,并将监测的数据信息持久化记录到数据库
中;硬件资源池,包括vfpga资源池、fpga内存池,用于管理记录fpga硬件资源的使用;fpga硬件管理器,将相关的操作与fpga虚拟化模块进行沟通,将分配的硬件资源通过驱动实施于具体fpga硬件上。5.根据权利要求4所述的一种fpga虚拟化资源调度系统,其特征在于,系统管理器与资源调度管理模块进行网络通信,将本计算节点的fpga虚拟化资源信息传输至资源调度管理模块;接收资源调度管理模块的调度请求,根据不同请求做出对应的处理,并交由下游的各类管理器进行实施;接收资源调度管理模块的资源信息监控请求,将系统监视器检测到的信息上传给资源调度管理模块。6.根据权利要求1所述的一种fpga虚拟化资源调度系统,其特征在于,资源调度管理模块还包括自动化部署ui;所述自动化部署ui,用于接收fpga资源调度需求,并与资源调度管理模块进行网络通信;所述资源调度管理模块包括对外接口、节点管理单元,资源调度单元;对外接口,用于根据自动化部署ui获取的fpga资源调度任务需求提供fpga资源调度任务自动化部署接口;节点管理单元,用于监控各节点中动态可重构区域的fpga资源使用情况;资源调度单元,用于根据各节点中动态可重构区域的fpga资源使用情况,将接收的fpga资源调度任务调度到合适的动态可重构区域上运行。7.一种fpga虚拟化资源调度方法,基于权利要求4-6任一项所述的一种fpga虚拟化资源调度系统,其特征在于,包括:资源调度管理模块接收fpga资源调度任务,并根据fpga资源调度任务的需求以及各节点fpga资源的占用情况,将fpga资源调度任务调度部署到合适的动态可重构区域上运行;用于部署fpga资源调度任务的的动态可重构区域根据fpga资源调度任务的需求,创建用于运行fpga资源调度任务的vfpga。8.根据权利要求7所述的一种fpga虚拟化资源调度方法,其特征在于,资源调度管理模块获取各节点fpga资源的占用情况的步骤包括:资源调度管理模块运行后,节点管理单元通过组播发布服务,服务中携带ip和端口信息;各上层节点控制器的系统管理器接收组播消息,并与组播内的ip、端口建立网络连接;连接建立成功之后,各上层节点控制器的系统管理器会主动发起注册请求,节点管理单元接收到注册请求之后,将该节点的资源纳入管理以完成注册;完成注册后,各上层节点控制器的系统管理器将各自节点的fpga资源使用情况周期上报给节点管理单元。9.根据权利要求7所述的一种fpga虚拟化资源调度方法,其特征在于,用于部署fpga资源调度任务的动态可重构区域根据fpga资源调度任务的需求,创建用于运行fpga资源调度任务的vfpga的步骤包括:
动态可重构区域的vfpga控制器中的离合器开启,复位可重构模块并下载重构相应的比特流,配置内存管理单元,并配置io_lut;解复位可重构模块并关闭离合器,完成vfpga的创建工作,以将接收的fpga资源调度任务加载到vfpga中运行。10.根据权利要求9所述的一种fpga虚拟化资源调度方法,其特征在于,为动态可重构区域配置内存管理单元的流程为:s1、判断已映射地址空间是否小于所需映射空间n,若否则结束配置流程,若是则执行步骤s2;s2、从fpga内存池中取出一个内存资源,通过驱动向该vfpga的内存管理管理单元添加一条映射记录;s3、重复执行步骤s1~s2,直到已映射地址空间大于或等于所需映射空间n时,结束配置流程。
技术总结
本发明属于计算机技术领域,具体涉及一种FPGA虚拟化资源调度系统及方法。一种FPGA虚拟化资源调度系统,包括资源调度管理模块以及多个资源处理节点,每个资源处理节点均包括通信连接的FPGA虚拟化模块、上层控制器模块,上层控制器模块与资源调度管理模块通信连接;FPGA虚拟化模块包括采用局部动态重构技术将物理FPGA划分为一个静态区域、一个或多个动态可重构区域,每个动态可重构区域用于部署并实现FPGA资源调度任务;上层控制器模块用于监管FPGA虚拟化模块中动态可重构区域的FPGA资源使用情况;资源调度管理模块,用于接收资源调度需求,并根据各FPGA虚拟化模块中动态可重构区域的FPGA资源使用情况,对所有节点中的动态可重构区域的PFGA资源进行调度管理。可重构区域的PFGA资源进行调度管理。可重构区域的PFGA资源进行调度管理。
技术研发人员:李玉成 李志刚 路雪松
受保护的技术使用者:中国电子科技集团公司第五十二研究所
技术研发日:2023.05.29
技术公布日:2023/10/7

版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/