CN110162378A - 一种资源调度的方法、装置、设备及系统 - Google Patents
一种资源调度的方法、装置、设备及系统 Download PDFInfo
- Publication number
- CN110162378A CN110162378A CN201810153338.9A CN201810153338A CN110162378A CN 110162378 A CN110162378 A CN 110162378A CN 201810153338 A CN201810153338 A CN 201810153338A CN 110162378 A CN110162378 A CN 110162378A
- Authority
- CN
- China
- Prior art keywords
- target
- service
- priority value
- state
- mapping relations
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000013507 mapping Methods 0.000 claims description 80
- 238000012790 confirmation Methods 0.000 claims description 38
- 230000006870 function Effects 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 31
- 230000003068 static effect Effects 0.000 claims description 29
- 238000004422 calculation algorithm Methods 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 15
- 238000012937 correction Methods 0.000 claims description 12
- 239000003795 chemical substances by application Substances 0.000 description 42
- 238000010586 diagram Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000007423 decrease Effects 0.000 description 5
- 238000004321 preservation Methods 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000027455 binding Effects 0.000 description 3
- 238000009739 binding Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- HRANPRDGABOKNQ-ORGXEYTDSA-N (1r,3r,3as,3br,7ar,8as,8bs,8cs,10as)-1-acetyl-5-chloro-3-hydroxy-8b,10a-dimethyl-7-oxo-1,2,3,3a,3b,7,7a,8,8a,8b,8c,9,10,10a-tetradecahydrocyclopenta[a]cyclopropa[g]phenanthren-1-yl acetate Chemical compound C1=C(Cl)C2=CC(=O)[C@@H]3C[C@@H]3[C@]2(C)[C@@H]2[C@@H]1[C@@H]1[C@H](O)C[C@@](C(C)=O)(OC(=O)C)[C@@]1(C)CC2 HRANPRDGABOKNQ-ORGXEYTDSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004451 qualitative analysis Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Mobile Radio Communication Systems (AREA)
- Hardware Redundancy (AREA)
- Logic Circuits (AREA)
Abstract
本申请实施例公开了一种资源调度的方法,用于提高FPGA设备的资源利用率,包括:接收主机发送的资源调度请求,其中,资源调度请求用于请求调度FPGA设备中的动态可重构区域PR为第一虚拟设备VD服务,FPGA设备包括N个PR,主机部署有M个VD,M个VD中每个VD均与一个虚拟机VM相配置,第一VD为M个VD中任一个,N和M均为大于1的整数,根据资源调度请求获取第一VD的上下文内容,从N个PR中确定目标PR,将第一VD的上下文内容部署在目标PR中。这样,主机在为虚拟机在调用FPGA资源时,多个虚拟机可以同时调度FPGA设备的多个PR资源,实现了FPGA设备资源的共享,提高了FPGA设备的资源利用率。
Description
技术领域
本申请涉及通信领域,尤其涉及一种资源调度的方法、装置、设备及系统。
背景技术
近年来,随着大数据分析和人工智能领域的进步,数据中心用户对处理器计算能力的要求迅速升高。在深度学习、复杂数据分析、加密计算等场景中,目前普遍使用现场可编程门阵列(field programmable gate array,FPGA)等设备对特定的计算任务进行加速。FPGA技术在上述计算领域具有先天优势,可以根据计算场景和算法进行优化,可以提供更高的运算能力,以及更低的功耗。
当前,FPGA设备作为云服务提供给租户的主流方案是:直接将FPGA设备作为高速外设部件互连标准(peripheral component interconnect express,PCIE)设备暴露给租户虚拟机,允许租户对FPGA设备完全控制。这种方案采用设备直通技术,可为租户提供更高的数据交互带宽与更高的用户自由度。此方案虽然使用直通技术保证了设备性能,但会造成FPGA设备资源无法被充分利用,整个FPGA设备的资源只能被单一租户独占使用,使得FPGA设备的资源利用率较低。
发明内容
本申请实施例提供了一种资源调度的方法、装置、设备及系统,用于提高FPGA设备的资源利用率。
第一方面,本申请实施例提供一种资源调度的方法,应用于现场可编程门阵列FPGA设备,该方法包括:
FPGA设备中划分有N个可重构区域(partial region,PR),这些PR用于为主机中的M个虚拟设备(virtual device,VD)提供计算功能的服务,主机部署有与M个VD相配置的虚拟机(virtual machine,VM)。当第一VM运行时,需要使用第一VM配置的第一VD,主机则为该第一VD从FPGA设备中请求调度PR为第一VD服务。N、M均为大于1的整数,N小于M。
FPGA设备接收主机发送的资源调度请求,再根据资源调度请求获取第一VD的上下文内容,第一VD的上下文内容可以包括第一VD待运行的业务的数据等内容。FPGA设备再从N个PR中确定用于为第一VD服务的目标PR,并将第一VD的上下文内容部署在目标PR中。
这样,主机在为VM在调用FPGA设备的资源时,不再是独占整个FPGA设备,多个VM可以同时调度FPGA设备的多个PR资源,实现了FPGA设备资源的共享,提高了FPGA设备的资源利用率。
一种可能的实现方式中,在FPGA设备中,还配置有K个虚拟功能设备(virtualfunction,VF),该K个VF作为FPGA设备对外呈现的接口。那么主机中M个VD与FPGA设备中N个PR之间的对应关系则划分为:M个VD与K个VF的映射关系,以及K个VF与N个PR之间的连接关系。
另一种可能的实现方式中,M个VD与K个VF的映射关系为静态映射关系。比如,M等于K相同,M个VD与K个VF的映射关系为一一对应的映射关系。而K个VF与N个PR之间的连接关系可以为动态连接关系,即,K与N相等,也可以不相等,比如,K大于N,K个VF与N个PR的连接关系可以动态更改。
另一种可能的实现方式中,在FPGA设备将第一VD的上下文内容部署在目标PR中之后,FPGA设备还将目标PR连接至第一VD对应的第一VF。基于上述的实现方式,由于K个VF与M个VD的映射关系为静态映射关系,则表示该第一VD已经与第一VF连接。这样,第一VD则可以通过第一VF连通该目标PR,从而调度目标PR为第一VD提供服务。
另一种可能的实现方式中,M个VD与K个VF的映射关系为动态映射关系,M与K可以相等,也可以不相等,M个VD与K个VF之间的连接关系可以动态更改;K个VF与N个PR之间的连接关系为静态连接关系,比如,K可以等于N,K个VF与N个PR的连接关系为一一对应连接关系。
另一种可能的实现方式中,在FPGA设备将第一VD的上下文内容部署在目标PR中之后,FPGA设备还可以通知主机将第一VD与目标PR对应的第一VF连接。由于VF是FPGA设备所呈现的对外接口,在FPGA设备与主机相连后,由主机控制VF的热插拔连接。基于上述实现方式,当K个VF与N个PR的连接关系为一一对应连接时,则表示该目标PR已经连接有第一VF,再将该第一VF与第一VD连接后,则实现了第一VD对目标PR的连接调度。
另一种可能的实现方式中,M个VD与K个VF的映射关系为动态映射关系,M与K可以相等,也可以不相等,M个VD与K个VF之间的连接关系可以动态更改;K个VF与N个PR之间的连接关系为动态连接关系,比如,K大于N,K个VF与N个PR的连接关系可以动态调整。
另一种可能的实现方式中,在FPGA设备将第一VD的上下文内容部署在目标PR中之后,FPGA设备还将目标PR连接至第一VD对应的第一VF,并通知主机将第一VD与目标PR对应的第一VF连接。由于M个VD与K个VF之间的连接关系不确定,K个VF与N个PR之间的关系也未确定。FPGA设备在为第一VD确定目标PR后,不仅需要将目标PR与VF连接,还需要通知主机将第一VD与VF连接。FPGA设备在确定该目标PR需要连接的VF时,可以根据该K个VF的连接使用状态确定,比如,K个VF中存在未与任意PR连接的处于空闲状态的第一VF,FPGA设备则将该目标PR与该第一VF连接,并通知主机将第一VD与该第一VF连接。这样实现了第一VD与目的PR之间的连接调度。
另一种可能的实现方式中,从N个PR中确定目标PR,可以为:
确定N个PR中任一个空闲状态的PR为目标PR,空闲状态用于指示对应的PR未为上述M个VD中的任一VD服务的状态。在该实现方式中,若FPGA设备中存在空闲的PR,则优先确定任意一个空闲状态的PR为目标PR。
另一种可能的实现方式中,从N个PR中确定目标PR,可以为:
当所有PR均为非空闲状态(即忙碌状态)时,表示所有的PR正在为其对应的VD服务,则可以根据优先级值确定正在为第二VD服务的PR为目标PR,其中,第二VD的优先级值小于第一VD的优先级值。
可选的,当N个PR均为忙碌状态时且不存在优先级值比第一VD小的第二VD时,则设置第一VD的状态为等待状态且根据等待时间更新第一VD的优先级值,第一VD的优先级值随着第一VD的等待时间的增长而增大。
当N个PR中出现空闲状态的PR,则优先将空闲状态的PR确定为目标PR。当N个PR中仍未出现空闲状态的PR,但随着第一VD的等待时长增长,第一VD的优先级值大于第二VD的优先级值时,则确定为第二VD服务的PR为目标PR。
可选的,上述中的第一VD的优先级值大于第二VD的优先级值,具体可以为:第一VD的优先级值减去抢占代价修正值之后大于第二VD的优先级值。在另一种表述中,第二VD的优先级值小于第一VD的优先级值可以为:第二VD的优先级值加上抢占代价修正值之和小于第一VD的优先级值。其中,抢占代价修正值用于指示第一VD抢占PR需要的开销。比如将第一VD抢占PR所需要花费的时间进行量化得到一个开销值,当第一VD需要抢占第二VD的PR时,即使当第一VD的优先级值等于第二VD的优先级值时,由于第一VD抢占PR需要花费一定开销,因此第一VD还不能抢占第二VD的PR,需等到第一VD的优先级值减去该开销所量化的抢占修正值后还大于第二VD的优先级值时,第一VD才能抢占第二VD的PR。
该实现方式中,若所有的PR均处于忙碌状态时,则将第一VD的优先级值与其它VD的优先级值进行比较,若其它VD中存在优先级值低于第一VD的第二VD,则为第一VD抢占为第二VD服务的二PR为目标PR。这样,提高了PR资源调度的灵活性。
另一种可能的实现方式中,当FPGA设备确定为第二VD服务的PR为目标PR后,方法还包括:将第一VD的优先级值增加第一预设阈值,以及将第二VD的优先级值下降第二预设阈值。这样,第二VD的优先级值则会骤然下降,不会很快超越其它在等待的VD的优先级值,而第一VD的优先级值会骤然上升,则不会很快被其它在等待的VD抢占其PR,使得PR的调度更为公平。
需要说明的是,上述各种实现方式中所描述的VD的优先级值,可以由FPGA设备预先设置。比如,FPGA设备为每个VD设置相同的优先级值,当某个VD需要调度PR资源时,若此时存在空闲的PR,则无需比较该VD的优先级值,该VD可以直接调用空闲的PR。若所有的PR均为忙碌状态时,将该VD的优先级值与其它VD的优先级值进行比较,由于该VD的优先级值还是初始值,那么必然优先级值不会超过其它VD的优先级值,所以设置该VD为等待状态,随着该VD的等待时长的增加,该VD的优先级值也逐渐增大。若在该VD的等待过程中,出现了空闲的PR,那么则为该VD调度该空闲的PR;若没有,则实时将该VD更新后的优先级值与其它正在使用PR的VD的优先级值进行比较,若该VD的优先级值减去抢占修正值大于其它VD中的任一VD的优先级值,那么则为该VD抢占优先级值小于该VD的其它VD正在使用的PR。该VD抢占了PR后,为减少出现该VD马上被抢占的情况,则将该VD的优先级值骤然增加一定的值;而为减少出现刚被抢占的VD马上又能抢占其它VD的PR的情况,则将刚被抢占的VD的优先级值骤然下降一定值。这样,使得PR的调度更为公平。
另一种可能的实现方式中,在FPGA设备确定为第二VD服务的PR为目标PR后,方法还包括:
在为第二VD服务的PR运行至预设断点时,停止为第二VD服务的PR服务,预设断点为PR所运行的进程的逻辑算法路径的中断点。
预设断点可以根据算法特性设置,被定义为算法路径中的阶段性节点,如一组数据的运算结束,或者流水线中某一环节的完成,此时大部分运算逻辑的寄存器中不再存储有效数据。因此,位于断点上的PR逻辑仅需保存少量的寄存器状态即可以完备的保存设备状态,而且避免了由于强制终结某些运算而造成的数据完整性损坏。通过设置合理的断点,不仅可以减少需要保存的寄存器数量,还可以在PR发生切换时保存数据完整性。
另一种可能的实现方式中,FPGA设备在停止为第二VD服务的PR服务之前,方法还包括:
向主机发送抢占通知,抢占通知用于指示需要抢占为第二VD服务的PR为目标PR,接收主机发送的指示信息,指示信息用于指示与第二VD相配置的VM已暂停使用第二VD。
由于FPGA设备要为第一VD抢占第二VD的PR了,因此,FPGA设备还需通知主机,使得主机中的与第二VD相配置的VM先暂停使用第二VD,当与第二VD相配置的VM暂停使用第二VD后,FPGA设备进行PR的切换,即为第一VD抢占PR。这样,实现了主机侧与FPGA设备侧的状态同步。
第二方面,本申请实施例提供一种资源调度的方法,应用于主机,该方法包括:
FPGA设备中划分有N个PR,这些PR用于为主机中的M个VD提供计算功能的服务,主机部署有与M个VD相配置的VM。当第一VM运行时,需要使用第一VM配置的第一VD,主机则为该第一VD从FPGA设备中请求调度PR为第一VD服务。N、M均为大于1的整数,N小于M。
主机向FPGA设备发送资源调度请求,资源调度请求用于请求调度FPGA设备中动态可重构区域PR为第一虚拟设备VD服务,主机从FPGA设备接收确认信息,确认信息包括第一VD的上下文内容已部署在目标PR的信息,目标PR为FPGA设备为第一VD调度的PR,主机再通知第一VM运行第一VD。
这样,VM在调用FPGA资源时,不再是独占整个FPGA设备,多个VM可以同时调度FPGA设备的多个PR资源,实现了FPGA设备资源的共享,提高了FPGA设备的资源利用率。
一种可能的实现方式中,主机在接收所述FPGA设备发送的确认信息之前,还包括:
主机接收所述FPGA设备发送的指示需要抢占为第二VD服务的PR为目标PR的抢占通知,主机再根据抢占通知向与第二VD相配置的VM发送暂停信息,该VM接收到该暂停信息后,暂停使用所述第二VD。
可选的,与第二VD相配置的VM在暂停使用第二VD后,还可以向主机发送暂停确认信息,并有主机转发给FPGA设备。这样,减少了主机侧与FPGA设备同一业务的数据不同步的情况。
第三方面,本申请实施例提供一种资源调度的装置,该装置具有实现上述第一方面或第二方面中任意一种所描述实现方式中功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,本申请实施例提供一种资源调度的装置,该装置为FPGA设备,该装置包括:处理器、存储器,处理器、存储器通过总线连接,存储器存储有计算机指令,处理器通过执行计算机指令用于实现如第一方面所描述的任意一种实现方式。
第五方面,本申请实施例提供一种资源调度的装置,该装置为主机,该装置包括:处理器、存储器,处理器、存储器通过总线连接,存储器存储有计算机指令,处理器通过执行计算机指令用于实现如第二方面所描述的任意一种实现方式。
第六方面,本申请实施例提供一种资源调度的系统,该系统包括如第四方面中所描述的FPGA设备和如第五方面所描述的主机。
第七方面,本申请实施例提供一种可读存储介质,该存储介质存储有用于实现如第一方面或第二方面所描述的任意一种实现方式的计算机指令。
第八方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现如第一方面或第二方面所描述的任意一种实现方式中的流程。
第九方面,本申请实施例提供一种芯片装置,该芯片系统包括处理器和存储器,处理器连接到存储器,该处理器可以运行存储器存储的指令,以使该芯片装置执行上述第一方面或第二方面所述的任意一种实现方式。
第十方面,本申请实施例提供一种FPGA设备,该设备包括:调度器、N个PR,其中,N为大于1的整数,调度器与N个PR通过电路总线连接,该调度器用于实现如第一方面所描述的任意一种实现方式。
附图说明
图1为本申请实施例中资源调度的方法所应用的系统架构的一个示意图;
图2为本申请实施例中资源调度的方法的一个实施例示意图;
图3为本申请实施例中VD的上下文内容的数据结构以及存储示意图;
图4为本申请实施例中PR运行时的预设断点的示意图;
图5为本申请实施例中资源调度的方法的另一实施例示意图;
图6为本申请实施例中VD调度行为模型的示意图;
图7为本申请实施例中调度行为模型状态转换示意图;
图8为本申请实施例中PR调度算法的一个示意图;
图9为本申请实施例中VD的优先级值变化情况的一个示意图;
图10为本申请实施例中VF-PR可配置通路的架构示意图;
图11为本申请实施例中资源调度算法的另一实施例示意图;
图12为本申请实施例中VM-VF直通的框架示意图;
图13为本申请实施例中资源调度的装置的一个示意图;
图14为本申请实施例中资源调度的装置的另一示意图;
图15为本申请实施例中资源调度的装置的另一示意图;
图16为本申请实施例中资源调度的装置的另一示意图。
具体实施方式
本申请实施例提供了一种资源调度的方法、装置、设备及系统,用于提高FPGA资源的利用率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
参照图1所示,图1为本申请实施例中资源调度的方法所应用的系统架构示意图。
图1中,包括主机和FPGA设备,其中,主机中包含多个租户虚拟机(virtualmachine,VM)以及代理单元(Agent)。FPGA设备包括所划分的多个逻辑区域(partialregion,PR)资源以及调度器(Scheduler)。本申请在硬件上依赖FPGA设备提供的动态部分可重构(dynamic partial reconfiguration,DPR)技术,将FPGA的计算逻辑区域划为可动态重构的PR资源。PR资源通过单根I/O虚拟化(single root I/O virtualization,SR-IOV)技术以虚拟功能(virtual function,VF)单元的形式呈现,并作为FPGA的加速器通过虚拟设备(virtual device,VD)直通到该VD所对应的VM中。VM通过访问VD,从而实现调用相应的PR资源进行加速计算。
本申请实现了多租户(VM)对PR资源的共享,即PR资源可在VM之间进行动态迁移调度。比如,在VM数量多于PR资源数量时实现高效的资源共享和合理的资源调度。下面对图1中所示的设备或单元进行功能描述:
加速逻辑区域:该区域被预先划分为若干个可重构的逻辑区域PR,执行实际的异构计算任务。PR为本申请中FPGA设备调度的目标对象。VM中VD设备的计算能力,需要在PR中实现。
VD上下文区域(VD context blocks):用于为PR资源部署VD设备的上下文。通过切换上下文,可以在不同PR资源中保存/恢复VD设备,且不影响VD设备的使用。
外部存储(external FPGA memory):FPGA设备的外置内存资源,本申请的应用场景涉及机器学习,大数据计算等异构加速场景,因此需要提供额外的存储设备。各个VD对应的上下文内容可以存储在该外部存储中,PR对应的计算逻辑(Bitstream)也可以存储在外置存储器中。需要说明的是,VD的上下文中寄存器的值、VD的ID以及寄存器状态等比较小的数据可以存储在FPGA设备的内部存储中,而VD上下文的具体内容等比较大的数据可以存储在FPGA的外部存储中。
VF-PR可配置路由(configurable VF-PR router)模块:作为FPGA静态逻辑电路的一部分,负责建立VF与PR之间的通路,以及VF与其他FPGA资源,如存储器模块之间的通路(VF-Mem)。此模块实现了VF设备接口与PR资源的动态映射。
VM-VF可配置直通通路模块:负责建立VM与VF之间的直通通路,此模块通过热插拔机制,实现了VF设备接口和VM之间的动态映射。
调度器(Scheduler):作为硬件模块,统一管理PR资源和VF-PR可配置路由。此组件与主机侧的Agent进程进行通信,共同实现了PR资源的调度机制。本组件包含调度算法模块(scheduling algorithm)进行调度决策,同时还负责在PR间切换VD上下文,以及配置对应的VF-PR和VF-Mem通路。
代理单元(Agent):作为主机侧进程单元,负责与VM中的VD Driver进行通信进行设备状态同步,与Scheduler通信进行PR资源的调度。Agent同时负责对VF与VM的直通关系进行配置。
驱动模块(Driver):为部署在VM中的VD设备驱动,此模块通过与Agent进行通信。管理VD设备的状态。
参照图2所示,图2为本申请实施例中资源调度的方法的一个示意图,在该实施例中,当第一虚拟机(VM)需要调度PR资源时,FPGA中仍存在空闲的PR资源。下面进行示例性描述。
为方便描述,在该实施例中,对本申请中所涉及主机以及FPGA中的对象进行更细致的划分,主机部署有多个虚拟机(包括第一虚拟机)以及代理单元,FPGA包括调度器以及多个PR。
201、第一虚拟机向代理单元发送第一请求。代理单元接收第一虚拟机发送的第一请求。
当第一虚拟机开始使用第一VD设备时,因为该第一VD设备可能并没有绑定PR资源,因此,该第一VD设备无法正常使用。为了让用户不感知第一VD设备不可用,此时第一VD设备不会抛出异常,而是将第一虚拟机对第一VD设备的访问挂起,并向代理单元发送第一请求,该第一请求用于请求为该第一虚拟机的第一VD调度计算资源(即PR资源)。
202、代理单元向调度器设备发送资源调度请求。调度器接收代理单元发送的资源调度请求。
资源调度请求用于请求调度PR为第一虚拟设备VD服务,FPGA设备划分有N为虚拟机提供计算功能的PR。
该资源调度请求可以为第一虚拟机发送的第一请求,代理单元实现转发功能,在后续的步骤中,代理单元协同调度器完成为第一虚拟机调度PR资源。
203、调度器根据资源调度请求获取第一VD的上下文内容。
该资源调度请求包含第一VD的标识,调度器根据第一VD的标识从外部存储器中获取第一VD的上下文内容,该上下文内容包括第一VD对应的PR逻辑功能、PR逻辑的寄存器状态以及所述第一VD的数据状态。
如图3所示,FPGA设备本地内存(FPGA internal memory)中为每个VD存储了对应的VD context block结构体。每个VD context block记录VD运行时的上下文环境,其中比特流指数(bitstream index)对应PR逻辑功能,寄存器状态区(register states)对应PR逻辑的寄存器状态。与此同时,FPGA连接的FPGA外部存储(FPGA external memory)分为比特流部分Section:Bistream(保存PR逻辑功能对应的比特流(bitstream)与VD设备的外接存储部分Section:VD Memory(VD设备的外接存储空间)。图3中,CNN为卷积神经网络(convolutional neural network,CNN),AES为高级加密标准(advanced encryptionstandard,AES),RSA为RSA加密算法。下面分别对保存PR逻辑功能、存储器数据状态以及PR逻辑的寄存器状态进行详细阐述。
(1)保存PR逻辑功能:
PR逻辑功能以bistream的方式存储在FPGA external memory(图3VD Context数据结构与内存分配中Section:Bitstream),通过保存bitstream文件的索引号,即可记录PR逻辑功能。图3中VD Context中的bitstream index记录了VD实现的逻辑功能为AES,在之后恢复该VD设备状态时,就会从FPGA外接存储中加载AES逻辑到VD对应的PR中。
(2)保存存储器数据状态:
如图3所示,本申请方案中,在FPGA外部存储器(external memory)中为每个VD分配独立的存储器空间。VD的存储器分配是静态的,不会动态修改,分配信息保存在静态的VD-Mem映射表中。通过使用VD ID(VD标识)索引,即可以访问VD的存储器数据。此方案仅需维护VD-Mem映射表,就可以为每个VD维护独立的数据空间,从而避免了在设备上下文切换中的内存拷贝开销。
(3)保存PR逻辑的寄存器状态:
如图4所示,在逻辑算法路径中设置中断点(Check-point),当PR逻辑的运算需要在运算过程中被中断时(如,当PR资源被抢占时),PR逻辑并不会立即中断,而是需要达到最近的Check-point才会中断运算,并允许被切换。Check-point根据算法特性设置,被定义为算法路径中的阶段性节点,如一组数据的运算结束,或者流水线中某一环节的完成,此时大部分运算逻辑的寄存器中不再存储有效数据。因此,位于Check-point节点上的PR逻辑仅需保存少量的寄存器状态即可以完备的保存设备状态,而且避免了由于强制终结某些运算而造成的数据完整性损坏。通过设置合理的Check-point,不仅可以减少需要保存的寄存器数量。可以在PR发生切换时保存数据完整性。
204、确定目标PR。
调度器还需为第一VD确定目标PR,在FPGA中的多个PR中,若存在空闲PR(即未被其它VD调用的PR),调度器则确定任意一个空闲PR为目标PR。
205、调度器将第一VD的上下文内容部署在目标PR中。
调度器在从外部存储器中获取到第一VD的上下文内容后,则将该上下文内容部署至第一VD的VD Context Block中,并指示目标PR运行该VD Context Block中的内容。则完成了将第一VD的上下文内容部署在目标PR中。
206、调度器向代理单元发送确认信息。代理单元接收代理单元发送的确认信息。
确认信息包括第一VD的上下文内容已部署在目标PR的信息。
调度器完成对第一VD的上下文的内容部署在目标PR后,则需要通知代理单元已完成部署。
207、代理单元通知第一虚拟机运行第一VD。
代理单元接收到确认信息后,则可以通知第一虚拟机第一VD可以被使用,从而完成对第一虚拟机的PR资源的调度。
本申请实施例中,通过对VD设备的上下文的定义已经切换,实现了多个PR可以被灵活调用,提高了PR资源的利用率。
参照图5所示,图5为本申请实施例中资源调度的方法的另一实施例。在该实施例中,当第一虚拟机调度PR资源时,没有空闲的PR资源。本实施例方案通过设置调度方案为第一虚拟机完成PR资源的调度。下面进行示例性描述。
步骤501~503的内容与图2实施例的步骤201~203的内容相似,此处不做赘述。
504、当所有PR均为非空闲状态时,调度器确定为第二VD服务PR为目标PR,其中,第二VD的优先级值小于第一VD的优先级值。
由于PR的数量有限,当多与PR数量的多个虚拟机都要运行时,则会导致出现不能立刻调度到PR资源的虚拟机。为了实现在该情况下每个虚拟机都能够调度到PR资源,本申请提供了一种调度方案。下面进行详细描述。
参照图6所示,图6为VD调度行为模型的示意图,本模型中的两个被调度主体为VD与PR。如图中所示,VD的功能需要在PR逻辑中实现,一个未分配PR的VD在正常工作之前,需要发送PR请求消息来请求PR资源。在此过程中,VD driver需要与主机端的代理单元通信进行PR逻辑的申请,并同步设备信息。然后代理单元与FPGA设备的调度器配合需要根据调度算法实现PR逻辑的调度。PR逻辑的调度方式有两种:第一种为如果有空闲PR,则重新分配空闲PR;第二种为如果没有空闲PR,则需要抢占其他VD正在运行中的PR。
VD的设备状态保存在虚拟机的Driver中,用来记录当前VD是否可用、是否发出PR请求(PR Request)等。VD可能具有的状态如表1所示:
表1
PR的状态保存在FPGA中的调度器中,用来记录PR是否正在运行、是否正在被抢占、是否正在被切换、是否可用等。PR可能具有的状态如表2所示:
表2
基于上文中定义的VD设备状态与PR状态,可以用状态机来描述设备调度行为。状态机的状态转换图如图7所示的调度行为模型状态转换图所示。状态转换图分为两个部分,包括VD状态模型和PR状态模型,这两个部分通过代理单元和调度器进行交互。
对于VD状态模型的三种情况:
device available:VD设备处于可用状态,driver可以读写VD的寄存器,在被抢占后转换为device non-available。
device non-available:VD设备处于不可用状态,禁止driver读写VD的寄存器,在driver发出PR request后转换为device waiting。
device waiting:VD设备当前不可用,但已经发出PR request等待分配PR资源,在收到代理单元发出的Device READY信号后,转换为device available。
对于PR状态模型的五种情况:
idle:PR逻辑处于空闲状态,当接收到VD的运算命令时转换为running状态,或者接收到切换命令时变为in switch状态。
running:PR逻辑正在进行运算,在运算完成以后转换为idle状态,或者被抢占以后变为in preemption状态。
in preemption:PR逻辑正在被抢占,运算进行到最近的check-point后状态结束,转换为in switch状态。
in switch:正在切换PR逻辑与VD的映射关系,包括上下文切换和VD-PR路由的通路重新配置,在切换完成以后转化为ready状态。
ready:PR逻辑已经完成和VD的映射绑定,且加载了相应的VD Context,在收到VD的运算命令时转换为running状态,或者长时间不被使用后转换为idle状态。
一种可能的实现方案中,PR资源的分配采取基于设备统一优先级的调度算法,调度算法为每个VD设定并维护了一个优先级值,调度决策通过VD优先级值的高低来决定。下面从硬件实现原理、整体调度策略、优先级计算方法、算法特点几个方面详细阐述。
硬件实现原理如图8所示。调度算法(scheduling algorithm)作为硬件模块逻辑实现,算法可动态升级(可重构)。调度算法中主要维护了两个优先级队列:请求等待队列(request queue)和运行队列(running queue)。请求等待队列中存放着等待分配的VD编号及其优先级值,运行队列中存放着正在运行的VD编号及其优先级值。同时,调度算法模块通过统一的接口获取PR的运行参数,动态调整VD的优先级值,并进行调度运算。
当发生PR请求时,进行如下三级判断:
如果有空闲(Idle)状态的PR,则优先分配空闲PR。如果PR均为忙碌(Busy)状态,且满足如下公式所示的抢占条件时,抢占优先级(P+Δcost)最小的VDi:
其中,Prequset:发生PR Request的VD的优先级值。Pi:Running Queue中VD的优先级值。Δcosti:抢占代价的修正值,Δcosti统一量化了抢占行为造成的额外开销。用于描述PR寄存器的状态切换开销。用于描述中止当前正在执行的运算所产生的开销,与VD当前正在执行的算法及其状态有关。用于描述重构PR逻辑所产生的开销,与需要加载的PR逻辑类型有关。
如果PR均为Busy状态且不满足PR抢占的条件,则将请求加入请求队列(requestqueue)。同时,在每个时钟周期检查如下公式是否成立:
其中,Pi:Running Queue中VD的优先级值。
如果成立,则为满足条件的VD分配PR资源。
需要说明的是,VD的优先级值的计算规则为:每个虚拟机的VD设备的初始优先级值相等,优先级随其在请求等待队列中的累计时间而升高,优先级值随其累计的运行时间而下降,这里的运行时间指VD进行实际运算的时间,即PR处于Busy状态的时间。为避免VD过于频繁的抢占,VD每次被调度后,该VD优先级值获得瞬时地提升(Boost)第一预设阈值;相反地,每次VD的资源被其他VD抢占时,该VD优先级瞬时下降(drop)第二预设阈值。本调度算法仅通过VD之间的优先级值的差值进行调度决策,因此每过固定时间,对各VD优先级值进行归一化清理,仅保留各VD之间的差值。参照图9所示,图9描述了每个VD的优先级值变化情况,该图为定性分析图,其中的优先级升高/下降的速率以及Boost/Drop时的瞬时调整值,需要根据应用的具体场景来进行适配和调整。
505、调度器向向代理单元发送抢占通知。代理接收调度器发送的抢占通知。
该抢占通知指示需要抢占为第二VD服务的PR为目标PR。
506、代理单元根据抢占通知向第二虚拟机发送暂停信息。第二虚拟机接收代理单元发送的暂停信息。
该第二虚拟机为与第二VD相配置的虚拟机,该暂停信息用于指示第二虚拟机暂停使用所述第二VD。
507、第二虚拟机向代理单元发送暂停确认信息。代理单元接收第二虚拟机发送的暂停确认信息。
该暂停确认信息用于指示第二虚拟机已暂停对所述第二VD的使用。
508、代理单元根据暂停确认信息向调度器发送指示信息。调度器接收代理单元发送的指示信息。
该指示信息用于指示第二虚拟机已暂停对所述第二VD的使用。
509、在为第二VD服务的PR运行至预设断点时,调度器停止为第二VD服务的PR为第二VD服务。
当调度器需要抢占为第二VD服务的PR为第一VD服务时,不会立刻停止为第二VD服务的PR的运行,而是如前文所述的当为第二VD服务的PR运行至预设断点(前文所描述的中断点Check-point)时,才会停止为第二VD服务的PR的运行。
510、调度器将第一VD的上下文内容部署在目标PR中。
详细内容参照图2实施例中步骤205所述,此处不做赘述。
511、调度器将目标PR连接至第一VD对应的第一VF。
在本申请中,如图1所示,多个VD与多个PR之间包括:多个VD与多个虚拟功能设备VF的映射关系(前文所述的),以及多个VF与多个PR之间的连接关系(前文所述的VF-PR可配置路由);其中,多个VD包含第一VD,多个PR包含目标PR。其中,多个VD与多个VF的映射关系为静态映射关系;多个VF与多个PR之间的连接关系为动态连接关系。
本申请提出了VF-PR可配置路由(VF-PR Configurable Router),实现了在硬件层面的VF接口与PR模块的动态映射。本方案中VM与VF的直通关系在VM生命周期中静态不变,因此VD与VF是一一对应的。可配置路由解决的即是硬件层面上VF与PR的映射连接,通过动态地对VF设备资源(如设备配置空间,BAR空间,PR资源等)进行配置连接,从而实现VF的设备功能可在不同的PR间进行调度。
可配置通路作为VF接口与PR计算资源的中间层,负责维护VF-PR之间的映射关系,并负责对VF设备访问操作进行重定向。本技术中,VF负责FPGA设备的PCIE总线通信,PR负责实际加速运算,可配置通路遵循FPGA设备通用的PCIE数据传输接口,对上游设备呈现为标准的SR-IOV VF设备,同时实现了对下层加速逻辑(PR)的动态映射。
在现有的FPGA设备服务化方案中,FPGA资源被静态分配给VM租户,并与VM的生命周期绑定,VM通过PCIE接口与底层的FPGA设备的PR静态连接。本申请在VM与PR资源的连接通路中加入了多种动态可配置的联结机制,包括在VD与VF之间的动态热插拔,和VF与PR之间的可配置路由,通过这种机制实现了VM与底层PR资源的动态配置。
在FPGA设备与主机之间的配置过程中,本领域技术人员可以通过如下步骤实现FPGA设备与主机之间的配置:
步骤1:在主机的PCIE插槽中插入FPGA设备卡,并加载本申请中上述所所设计的FPGA设备的功能的逻辑指令。
步骤2:在主机的操作系统中安装本申请中上述的代理单元,用于监控PFGA设备状态并与用户(VM)通信。
步骤3:在用户VM侧,安装本申请中所设计的用于实现VD设备功能的相应驱动。
步骤4:用户侧的操作系统在正确识别VD设备后,则可实现本申请方案。
下面对本申请方案中FPGA设备中配置有VF-PR可配置通路的一个实现方式进行示例性描述。图10展示了基于Xilinx SR-IOV技术实现的VF-PR可配置通路。FPGA设备通过Xilinx PCI-Express IP模块,将整个设备作为PCIE Endpoint设备连接到PCIE总线上。PCIE IP模块遵循SR-IOV协议,对外呈现为多个VF设备。在FPGA内部,PCIE IP模块通过统一的AXI-Stream接口与下游模块进行通信,数据传递被封装为AXI-Stream Package格式。在数据包的包头(header)中,包含了数据传递的详细信息。下游模块通过解析header,将数据包分发给不同的VF,从而完成PCIE总线对VF设备的访问。同样,通过对VF的访问请求进行封装,以数据包的形式发送到PCIE总线上,完成VF设备对PCIE总线的访问。
PCIE IP与PCIE总线的通信有两种模式:
(1)Completer模式,即作为总线从设备,完成由PCIE总线下发的读写操作。这种模式对应主机或其他设备对PCIE设备BAR空间的访问。
(2)Requester模式,即作为总线主设备,主动向主机或PCIE总线上的其他设备发起读写操作。这种模式对应PCIE设备所发起的DMA访问。
综上所述,VF设备与PCIE总线间的通信是通过一系列的Completer/RequesterPackage实现的。本发明中使用Completer和Requester模块来管理各个VF设备的总线通信,其中Completer模块负责处理主机对VF BAR空间的读写请求,Requester模块负责处理VF设备发起的DMA操作。
PCIE IP模块和Completer/Requester模块共同构成了VF设备的接口层。在接口层和PR逻辑之间,本发明引入了可配置的路由逻辑,即图10中阴影标记的部分。
VF Access Redirection模块负责VF设备访问的重定向。此模块将PCIE总线下发的读写请求分发到目标VF(Target VF)的BAR空间,对应的组件为PR中的寄存器或者VF的内存空间。此模块同时接收VF(Requester VF)对PCIE总线的读写请求并上传给Requester模块。
VF Interrupt Redirection模块与PCIE IP模块直接通信,负责对VF的中断信号(INTx/MSI/MSI-X)进行管理和转发。
PR Router模块负责PR逻辑与VF的映射转换。上游模块对VF设备的访问,如BAR空间访问,通过PR Router被路由到某个PR中。同样地,PR逻辑对其他模块的访问,如DMA操作,内存访问,中断请求等,经过PR Router转化,以VF设备访问的形式呈现出来。PR Router需要借助VF-PR Translation Table完成转换映射。
VF-PR Translation Table是一张可动态配置的映射表,维护着VF与PR之间的映射关系。映射表以VF为索引值,每个表项记录了VF对应的PR,以及BAR空间寄存器的偏移量。当某个VF与PR的映射关系发生变化时,通过动态修改相应表项,即可使对该VF与新的PR联系起来。
Memory Access模块负责处理对FPGA存储器的访问。FPGA存储器为每个VD分配了独立的存储器空间。Memory Access模块处理VF设备读写访问,并将其翻译为对应VD的存储器地址。
VF-VD Table维护VF到VD的映射关系,在本方案中,VF与VD是一对一且静态映射的,VF ID与VD ID始终相等。
VD-Mem Translation Table默认为静态映射表,即每个VD的内存空间分配是静态的,无法进行动态调整。该表以VF为索引值,每个表项记录了VF中各个BAR空间在存储器中的起始地址和长度。对于没有在存储器中实现的BAR空间,则标记为Invalid。
以上各组件共同构成了VF-PR之间的可配置路由。PCIE IP模块的标准AXI-Stream通信,经过路由处理,最终重定向到底层的PR逻辑和存储器模块中。可配置路由中的各组件之间均以VF作为通信对象,从而大大简化了硬件设计,实现了模块间解耦。在本申请中,仅需要对VF-PR映射表(VF-PR Translation Table)进行配置,即可以实现PR与VF接口的完备映射。
512、调度器向代理单元发送确认信息。代理单元接收代理单元发送的确认信息。
513、代理单元通知第一虚拟机运行第一VD。
图5实施例中,描述了当需要抢占PR时所提供的一种调度方案,以及PR与VF的动态连接的过程。在一种可能的实现方式中,PR与VF之间的连接关系为静态连接关系,而VD与VF之间的映射关系可以为动态映射关系。下面进行实例性描述。参照图11所示,本申请实施例中资源调度的方法的另一实施例包括:
步骤1101~1110的内容与图5实施例中步骤501~510的内容相似,此处不做赘述。
1111、调度器向代理单元发送通知消息。代理单元接收调度器发送的通知消息。
该通知消息,用于通知通知代理单元将目标PR对应的第一VF连接至第一VD。
1112、代理单元将目标PR对应的第一VF连接至第一VD。
本方案中,VF设备与PR资源通过静态连接实现一一对应。VD与PR之间的动态映射通过对VF-VM的直通通路进行配置来实现。主机侧的调度器通过对VM进行FPGA VF设备热插拔,动态地调整直通给某个VM的VF设备。
如图12所示,图12展示了通过调整VM-VF直通关系来实现VD与PR的连接关系。利用设备热插拔机制,VM中的VD被分配不同的VF设备,从而可以使用其对应的PR资源。
在本方案中对存储器的访问依旧借助Memory Access模块进行地址映射。该映射分为两个阶段:VF-VD转换(VF-VD Table),VD-Mem转换(VD-Mem Translation Table)。
本方案中,由于VF与VD的映射关系是动态变化的,VF-VD Table需要进行动态调整,即同步更新VF-VD的直通关系。VD-Mem Translation Table为记录VD存储器空间的静态页表,默认不进行动态修改。通过两层映射表的处理,VD设备的访问即被路由到其独立的存储器空间中。
步骤1113~1114的内容与图5实施例中步骤512~513的内容相似,此处不做赘述。
结合图5实施例以及图11实施例所述,本申请提出了两种VD-PR通路方案,均可以实现VD与PR的动态配置连接。图5实施例方案保持VM与VF的直通关系静态不变,依赖硬件逻辑负责完成PR的切换和调度。这种方案中不发生VF设备热插拔,VF对VM始终可见,因此降低了VD驱动开发的复杂度,但同时增加了硬件设计的复杂度。图11实施例方案中,在软件层面实现VD与PR的连接配置,降低了硬件复杂度,但需要VM中的VD驱动针对热插拔情况提供额外处理机制。本申请的两种机制可根据实际应用场景与约束条件的不同来进行选择。
需要说明的是,图5实施例方案保持VD与VF的直通关系静态不变,通过调整VF-PR的可配置路由完成PR的切换和调度,图11实施例描述了VF与PR的连接关系静态不便,通过调整VD-VF直通关系完成PR的切换和调度。在另一种可能的实现方式中,还可以为VD与PR之间的两层对应关系均可设置为动态关系,即,VD与VF的直通关系为动态连接,VF与PR之间可配置路由为动态可配置关系。当上述两层关系均为动态连接关系时,调度器在确定了需要调度的PR时,可以先完成VF与PR之间的动态配置,即从多个VF中确定任意一个处于空闲状态的VF与目标PR连接,再通知主机侧的代理单元将正在调度PR的VD与调度器所确定的与目PR连接的VF进行连接,从而实现了VD与PR之间的双层动态连接的配置。
参照图13所示,图13实施例为本申请实施例提供的资源调度的装置的一个实施例,该装置1300为FPGA设备,包括:
接收单元1301,用于接收主机发送的资源调度请求,其中,所述资源调度请求用于请求调度所述FPGA设备的PR为第一虚拟设备VD服务,所述主机部署有M个VD,所述M个VD中每个VD均与一个虚拟机VM相配置,所述第一VD为所述M个VD中任一个,所述N和所述M均为大于1的整数;
获取单元1302,用于根据所述接收单元1301接收的所述资源调度请求获取所述第一VD的上下文内容;
确定单元1303,用于从所述N个PR中确定目标PR,所述目标PR用于为所述第一VD服务;
部署单元1304,用于将所述获取单元1302获取的所述第一VD的上下文内容部署在所述目标PR中。
可选的,所述N小于所述M。
可选的,所述装置1300配置有K个虚拟功能设备VF,所述M个VD与所述N个PR之间存在对应关系,所述对应关系包括:所述M个VD与所述K个VF的映射关系,以及所述K个VF与所述N个PR之间的连接关系。
可选的,所述M个VD与所述K个VF的映射关系为静态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
可选的,所述装置1300还包括:
连接单元1305,用于在所述部署单元1304将所述第一VD的上下文内容部署在所述目标PR中之后,将所述目标PR连接至所述第一VD对应的第一VF。
可选的,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为静态连接关系。
可选的,所述装置1300还包括:
通知单元1306,用于在所述部署单元1304将所述第一VD的上下文内容部署在所述目标PR中之后,通知所述主机将所述第一VD与所述目标PR对应的第一VF连接。
可选的,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
可选的,所述连接单元1305还用于,在所述部署单元1304将所述第一VD的上下文内容部署在所述目标PR中之后,将所述目标PR连接至第一VF,所述第一VF为所述K个VF中任意空闲状态的VF,所述空闲状态用于指示VF未与所述N个PR中任意一个PR连接;
所述通知单元1306还用于,通知所述主机将所述第一VD与所述第一VF连接。
可选的,所述确定单元1303具体用于:
确定所述N个PR中任一个空闲状态的PR为目标PR,所述空闲状态用于指示对应的PR未为所述M个VD中的任一VD服务的状态。
可选的,所述确定单元1303具体用于:
当所述N个PR均为忙碌状态时,根据优先级值确定所述N个PR中为第二VD服务的PR为所述目标PR,其中,所述忙碌状态用于指示对应的PR正在为所述M个VD中的某一VD服务的状态,所述优先级值用于指示对应的VD请求调度PR的优先等级,所述第二VD为所述N个PR正在服务的VD中优先级值小于所述第一VD的优先级值的任一VD。
可选的,所述确定单元1303具体还用于:
当所述N个PR均为忙碌状态时且不存在所述第二VD时,设置所述第一VD的状态为等待状态且根据等待时间更新所述第一VD的优先级值,所述第一VD的优先级值随着所述第一VD的等待时间的增长而增大;
当所述N个PR中出现空闲状态的PR,则将所述空闲状态的PR确定为所述目标PR,所述空闲状态用于指示对应的PR未为所述M个VD中的任一VD服务的状态;或者,当更新后的所述第一VD的优先级值增大,所述N个PR中出现所述第二VD时,确定为所述第二VD服务的PR为所述目标PR。
可选的,所述第二VD为所述N个PR正在服务的VD中优先级值与抢占代价修正值之和小于所述第一VD的优先级值的任一VD,所述抢占代价修正值用于指示所述第一VD抢占PR需要的开销。
可选的,所述装置1300还包括:
调整单元1307,用于在所述确定单元1303根据优先级值确定所述N个PR中为第二VD服务的PR为所述目标PR之后,将所述第一VD的优先级值增加第一预设阈值,以及将所述第二VD的优先级值下降第二预设阈值。
可选的,所述装置1300还包括:
停止单元1308,用于在所述确定单元1303根据优先级值确定所述N个PR中为第二VD服务的PR为所述目标PR之后,在为所述第二VD服务的PR运行至预设断点时,停止为所述第二VD服务,所述预设断点为PR所运行的进程的逻辑算法路径的中断点。
可选的,所述装置1300还包括:
第一发送单元1309,用于在所述停止单元1308停止为所述第二VD服务的PR服务之前,所述停止单元1308停止为所述第二VD服务之前,向所述主机发送抢占通知,所述抢占通知用于指示需要抢占为所述第二VD服务的PR为所述目标PR;
所述接收单元1301还用于,在所述第一发送单元向所述主机发送所述抢占通知之后,接收所述主机发送的指示信息,所述指示信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD。
可选的,所述装置1300还包括:
第二发送单元1310,用于在所述部署单元1304将所述第一VD的上下文内容部署在所述目标PR中之后,向所述主机发送确认信息,所述确认信息用于指示所述第一VD的上下文内容已部署在所述目标PR,以使得与所述第一VD相配置的VM运行所述第一VD。
可选的,所述资源调度请求包含所述第一VD的标识;所述获取单元1302具体用于:
根据所述第一VD的标识从外部存储器中获取所述第一VD的上下文内容,所述上下文内容包括所述第一VD对应的PR逻辑功能、PR逻辑的寄存器状态以及所述第一VD的数据状态。
图13实施例所描述的各个单元在运行时还可以执行图2和图5以及图11实施例中所描述的FPGA设备的执行步骤,详细内容可参照图2和图5以及图11实施例,此处不做赘述。
参照图14所示,图14为本申请实施例提供的一种资源调度的装置的示意图,该装置1400为主机,该装置1400包括:
发送单元1401,用于向现场可编程门阵列FPGA设备发送资源调度请求,其中,所述资源调度请求用于请求调度所述FPGA设备中动态可重构区域PR为第一虚拟设备VD服务,所述FPGA设备包括N个PR,所述主机部署有M个VD,所述M个VD中每个VD均与一个虚拟机VM相配置,所述第一VD为所述M个VD中任一个,所述N和所述M均为大于1的整数;
接收单元1402,用于在所述发送单元1401向所述FPGA设备发送所述资源调度请求之后,接收所述FPGA设备发送的确认信息,所述确认信息用于指示所述第一VD的上下文内容已部署在所述目标PR,所述目标PR为所述FPGA设备为所述第一VD调度的PR;
通知单元1403,用于通知第一VM运行所述第一VD,所述第一VM为与所述第一VD相配置的VM。
可选的,所述N小于所述M。
可选的,所述FPGA设备配置有K个虚拟功能设备VF,所述M个VD与所述N个PR之间存在对应关系,所述对应关系包括:所述M个VD与所述K个VF的映射关系,以及所述K个VF与所述N个PR之间的连接关系。
可选的,所述M个VD与所述K个VF的映射关系为静态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
可选的,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为静态连接关系。
可选的,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系
可选的,所述装置1400还包括:
连接单元1404,用于在所述通知单元通知1403所述第一VM运行所述第一VD之前,将所述第一VD与所述目标PR对应的第一VF连接。
可选的,所述接收单元1402还用于:
在接收所述FPGA设备发送的确认信息之前,接收所述FPGA设备发送的抢占通知,所述抢占通知指示需要抢占为所述第二VD服务的PR为所述目标PR;
所述通知单元1403还用于,根据所述接收单元1402接收的所述抢占通知向与所述第二VD相配置的VM发送暂停信息,所述暂停信息用于指示与所述第二VD相配置的VM暂停使用所述第二VD。
可选的,所述接收单元1402还用于:
在所述发送单元1401根据所述抢占通知向与所述第二VD相配置的VM发送暂停信息之后,接收接收与所述第二VD相配置的VM发送的暂停确认信息,所述暂停确认信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD;
所述发送单元1401还用于,根据所述接收单元1402接收的所述暂停确认信息向所述FPGA设备发送指示信息,所述指示信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD。
图14实施例所描述的各个单元在运行时还可以执行图2和图5以及图11实施例中所描述的主机的执行步骤,详细内容可参照图2和图5以及图11实施例,此处不做赘述。
图13实施例所述的装置还有另一个形式的实施例。
参照图15所示,对本申请实施例提供的一种资源调度的装置进行示例性介绍,该装置为FPGA设备,该装置1500包括:处理器1501、存储器1502、收发器1503,所述处理器1501、所述存储器1502以及所述收发器1503通过总线1504连接,收发器1503可以包括发送器与接收器,所述存储器1502存储有计算机指令,所述处理器1501通过执行所述计算机指令用于实现图2、图5以及图11实施例中FPGA设备所执行的步骤。
图14实施例所述的装置还有另一个形式的实施例。
参照图16所示,对本申请实施例提供的一种资源调度的装置进行示例性介绍,该装置为主机,该装置1600包括:处理器1601、存储器1602、收发器1603,所述处理器1601、所述存储器1602以及所述收发器1603通过总线1604连接,收发器1603可以包括发送器与接收器,所述存储器1602存储有计算机指令,所述处理器1601通过执行所述计算机指令用于实现图2、图5以及图11实施例中主机所执行的步骤。
在另一种可能的设计中,当上述装置为设备内的芯片时,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使该设备内的芯片执行上述实施例中任意一种资源调度的方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述终端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制上述第一方面无线通信方法的程序执行的集成电路。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (57)
1.一种资源调度的方法,其特征在于,所述方法应用于现场可编程门阵列FPGA设备,所述方法包括:
接收主机发送的资源调度请求,其中,所述资源调度请求用于请求调度所述FPGA设备中的动态可重构区域PR为第一虚拟设备VD服务,所述FPGA设备包括N个PR,所述主机部署有M个VD,所述M个VD中每个VD均与一个虚拟机VM相配置,所述第一VD为所述M个VD中任一个,所述N和所述M均为大于1的整数;
根据所述资源调度请求获取所述第一VD的上下文内容;
从所述N个PR中确定目标PR,所述目标PR用于为所述第一VD服务;
将所述第一VD的上下文内容部署在所述目标PR中。
2.根据权利要求1所述的方法,其特征在于,所述N小于所述M。
3.根据权利要求1或2所述的方法,其特征在于,所述FPGA设备配置有K个虚拟功能设备VF,所述M个VD与所述N个PR之间存在对应关系,所述对应关系包括:所述M个VD与所述K个VF的映射关系,以及所述K个VF与所述N个PR之间的连接关系。
4.根据权利要求3所述的方法,其特征在于,所述M个VD与所述K个VF的映射关系为静态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
5.根据权利要求4所述的方法,其特征在于,在将所述第一VD的上下文内容部署在所述目标PR中之后,所述方法还包括:
将所述目标PR连接至所述第一VD对应的第一VF。
6.根据权利要求3所述的方法,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为静态连接关系。
7.根据权利要求6所述的方法,其特征在于,在将所述第一VD的上下文内容部署在所述目标PR中之后,所述方法还包括:
通知所述主机将所述第一VD与所述目标PR对应的第一VF连接。
8.根据权利要求3所述的方法,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
9.根据权利要求8所述的方法,其特征在于,在将所述第一VD的上下文内容部署在所述目标PR中之后,所述方法还包括:
将所述目标PR连接至第一VF,所述第一VF为所述K个VF中任意空闲状态的VF,所述空闲状态用于指示VF未与所述N个PR中任意一个PR连接;
通知所述主机将所述第一VD与所述第一VF连接。
10.根据权利要求1至9中任意一项所述的方法,其特征在于,所述从所述N个PR中确定目标PR,包括:
确定所述N个PR中任一个空闲状态的PR为目标PR,所述空闲状态用于指示对应的PR未为所述M个VD中的任一VD服务的状态。
11.根据权利要求1至9中任意一项所述的方法,其特征在于,所述从所述N个PR中确定目标PR,包括:
当所述N个PR均为忙碌状态时,根据优先级值确定所述N个PR中为第二VD服务的PR为所述目标PR,其中,所述忙碌状态用于指示对应的PR正在为所述M个VD中的某一VD服务的状态,所述优先级值用于指示对应的VD请求调度PR的优先等级,所述第二VD为所述N个PR正在服务的VD中优先级值小于所述第一VD的优先级值的任一VD。
12.根据权利要求11所述的方法,其特征在于,所述根据优先级值确定所述N个PR中为其他VD服务的PR为目标PR,还包括:
当所述N个PR均为忙碌状态时且不存在所述第二VD时,设置所述第一VD的状态为等待状态且根据等待时间更新所述第一VD的优先级值,所述第一VD的优先级值随着所述第一VD的等待时间的增长而增大;
当所述N个PR中出现空闲状态的PR,则将所述空闲状态的PR确定为所述目标PR,所述空闲状态用于指示对应的PR未为所述M个VD中的任一VD服务的状态;或者,当更新后的所述第一VD的优先级值增大,所述N个PR中出现所述第二VD时,确定为所述第二VD服务的PR为所述目标PR。
13.根据权利要求11或12所述的方法,其特征在于,所述第二VD为所述N个PR正在服务的VD中优先级值与抢占代价修正值之和小于所述第一VD的优先级值的任一VD,所述抢占代价修正值用于指示所述第一VD抢占PR需要的开销。
14.根据权利要求11至13中任意一项所述的方法,其特征在于,在所述根据优先级值确定所述N个PR中为第二VD服务的PR为所述目标PR之后,所述方法还包括:
将所述第一VD的优先级值增加第一预设阈值,以及将所述第二VD的优先级值下降第二预设阈值。
15.根据权利要求11至14中任意一项所述的方法,其特征在于,在所述根据优先级值确定所述N个PR中为所述第二VD服务的PR为目标PR之后,所述方法还包括:
在为所述第二VD服务的PR运行至预设断点时,停止为所述第二VD服务,所述预设断点为PR所运行的进程的逻辑算法路径的中断点。
16.根据权利要求15所述的方法,其特征在于,在所述在为所述第二VD服务的PR运行至预设断点时,停止为所述第二VD服务之前,所述方法还包括:
向所述主机发送抢占通知,所述抢占通知用于指示需要抢占为所述第二VD服务的PR为所述目标PR;
接收所述主机发送的指示信息,所述指示信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD。
17.根据权利要求1至16中任意一项所述的方法,其特征在于,在将所述第一VD的上下文内容部署在所述目标PR中之后,所述方法还包括:
向所述主机发送确认信息,所述确认信息用于指示所述第一VD的上下文内容已部署在所述目标PR,以使得与所述第一VD相配置的VM运行所述第一VD。
18.根据权利要求1所述的方法,其特征在于,所述资源调度请求包含所述第一VD的标识;
其中,所述根据所述资源调度请求获取所述第一VD的上下文内容,包括:
根据所述第一VD的标识从外部存储器中获取所述第一VD的上下文内容,所述上下文内容包括所述第一VD对应的PR逻辑功能、PR逻辑的寄存器状态以及所述第一VD的数据状态。
19.一种资源调度的方法,其特征在于,所述方法应用于主机,所述方法包括:
向现场可编程门阵列FPGA设备发送资源调度请求,其中,所述资源调度请求用于请求调度所述FPGA设备中动态可重构区域PR为第一虚拟设备VD服务,所述FPGA设备包括N个PR,所述主机部署有M个VD,所述M个VD中每个VD均与一个虚拟机VM相配置,所述第一VD为所述M个VD中任一个,所述N和所述M均为大于1的整数;
接收所述FPGA设备发送的确认信息,所述确认信息用于指示所述第一VD的上下文内容已部署在所述目标PR,所述目标PR为所述FPGA设备为所述第一VD调度的PR;
通知第一VM运行所述第一VD,所述第一VM为与所述第一VD相配置的VM。
20.根据权利要求19所述的方法,其特征在于,所述N小于所述M。
21.根据权利要求19或20所述的方法,其特征在于,所述FPGA设备配置有K个虚拟功能设备VF,所述M个VD与所述N个PR之间存在对应关系,所述对应关系包括:所述M个VD与所述K个VF的映射关系,以及所述K个VF与所述N个PR之间的连接关系。
22.根据权利要求21所述的方法,其特征在于,所述M个VD与所述K个VF的映射关系为静态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
23.根据权利要求21所述的方法,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为静态连接关系。
24.根据权利要求21所述的方法,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
25.根据权利要求23或24所述的方法,其特征在于,在所述通知第一VM运行所述第一VD之前,所述方法还包括:
将所述第一VD与所述目标PR对应的第一VF连接。
26.根据权利要求19至25中任意一项所述的方法,其特征在于,在接收所述FPGA设备发送的确认信息之前,所述方法还包括:
接收所述FPGA设备发送的抢占通知,所述抢占通知指示需要抢占为所述第二VD服务的PR为所述目标PR;
根据所述抢占通知向与所述第二VD相配置的VM发送暂停信息,所述暂停信息用于指示与所述第二VD相配置的VM暂停使用所述第二VD。
27.根据权利要求26所述的方法,其特征在于,在所述根据所述抢占通知向与所述第二VD相配置的VM发送暂停信息之后,所述方法还包括:
接收与所述第二VD相配置的VM发送的暂停确认信息,所述暂停确认信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD;
根据所述暂停确认信息向所述FPGA设备发送指示信息,所述指示信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD。
28.一种现场可编程门阵列FPGA设备,其特征在于,包括:调度器、N个动态可重构区域PR,所述调度器与所述N个PR通过电路总线连接;
所述调度器用于:
接收主机发送的资源调度请求,其中,所述资源调度请求用于请求调度所述FPGA设备的PR为第一虚拟设备VD服务,所述主机部署有M个VD,所述M个VD中每个VD均与一个虚拟机VM相配置,所述第一VD为所述M个VD中任一个,所述N和所述M均为大于1的整数;
根据所述资源调度请求获取所述第一VD的上下文内容;
从所述N个PR中确定目标PR,所述目标PR用于为所述第一VD服务;
将所述第一VD的上下文内容部署在所述目标PR中。
29.根据权利要求28所述的设备,其特征在于,所述N小于所述M。
30.根据权利要求28或29所述的设备,其特征在于,所述FPGA设备配置有K个虚拟功能设备VF,所述M个VD与所述N个PR之间存在对应关系,所述对应关系包括:所述M个VD与所述K个VF的映射关系,以及所述K个VF与所述N个PR之间的连接关系。
31.根据权利要求30所述的设备,其特征在于,所述M个VD与所述K个VF的映射关系为静态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
32.根据权利要求31所述的设备,其特征在于,所述调度器还用于:
在将所述第一VD的上下文内容部署在所述目标PR中之后,将所述目标PR连接至所述第一VD对应的第一VF。
33.根据权利要求31所述的设备,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为静态连接关系。
34.根据权利要求33所述的设备,其特征在于,所述调度器还用于:
在将所述第一VD的上下文内容部署在所述目标PR中之后,通知所述主机将所述第一VD与所述目标PR对应的第一VF连接。
35.根据权利要求31所述的设备,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
36.根据权利要求35所述的设备,其特征在于,所述调度器还用于:
在将所述第一VD的上下文内容部署在所述目标PR中之后,将所述目标PR连接至第一VF,所述第一VF为所述K个VF中任意空闲状态的VF,所述空闲状态用于指示VF未与所述N个PR中任意一个PR连接;
通知所述主机将所述第一VD与所述第一VF连接。
37.根据权利要求28至36中任意一项所述的设备,其特征在于,所述调度器具体用于:
确定所述N个PR中任一个空闲状态的PR为目标PR,所述空闲状态用于指示对应的PR未为所述M个VD中的任一VD服务的状态。
38.根据权利要求28至36中任意一项所述的设备,其特征在于,所述调度器具体用于:
当所述N个PR均为忙碌状态时,根据优先级值确定所述N个PR中为第二VD服务的PR为所述目标PR,其中,所述忙碌状态用于指示对应的PR正在为所述M个VD中的某一VD服务的状态,所述优先级值用于指示对应的VD请求调度PR的优先等级,所述第二VD为所述N个PR正在服务的VD中优先级值小于所述第一VD的优先级值的任一VD。
39.根据权利要求38所述的设备,其特征在于,所述调度器具体用于:
当所述N个PR均为忙碌状态时且不存在所述第二VD时,设置所述第一VD的状态为等待状态且根据等待时间更新所述第一VD的优先级值,所述第一VD的优先级值随着所述第一VD的等待时间的增长而增大;
当所述N个PR中出现空闲状态的PR,则将所述空闲状态的PR确定为所述目标PR,所述空闲状态用于指示对应的PR未为所述M个VD中的任一VD服务的状态;或者,当更新后的所述第一VD的优先级值增大,所述N个PR中出现所述第二VD时,确定为所述第二VD服务的PR为所述目标PR。
40.根据权利要求38或39所述的设备,其特征在于,
所述第二VD为所述N个PR正在服务的VD中优先级值与抢占代价修正值之和小于所述第一VD的优先级值的任一VD,所述抢占代价修正值用于指示所述第一VD抢占PR需要的开销。
41.根据权利要求38至40中任意一项所述的设备,其特征在于,在所述根据优先级值确定所述N个PR中为第二VD服务的PR为所述目标PR之后,所述调度器还用于:
将所述第一VD的优先级值增加第一预设阈值,以及将所述第二VD的优先级值下降第二预设阈值。
42.根据权利要求38至41中任意一项所述的设备,其特征在于,所述调度器还用于:
在所述根据优先级值确定所述N个PR中为所述第二VD服务的PR为目标PR之后,在为所述第二VD服务的PR运行至预设断点时,停止为所述第二VD服务,所述预设断点为PR所运行的进程的逻辑算法路径的中断点。
43.根据权利要求42所述的设备,其特征在于,所述调度器还用于:
在所述在为所述第二VD服务的PR运行至预设断点时,停止为所述第二VD服务之前,向所述主机发送抢占通知,所述抢占通知用于指示需要抢占为所述第二VD服务的PR为所述目标PR;
接收所述主机发送的指示信息,所述指示信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD。
44.根据权利要求28至43中任意一项所述的设备,其特征在于,所述调度器还用于:
在将所述第一VD的上下文内容部署在所述目标PR中之后,向所述主机发送确认信息,所述确认信息用于指示所述第一VD的上下文内容已部署在所述目标PR,以使得与所述第一VD相配置的VM运行所述第一VD。
45.根据权利要求28所述的设备,其特征在于,所述资源调度请求包含所述第一VD的标识;
所述调度器具体用于:
根据所述第一VD的标识从外部存储器中获取所述第一VD的上下文内容,所述上下文内容包括所述第一VD对应的PR逻辑功能、PR逻辑的寄存器状态以及所述第一VD的数据状态。
46.一种资源调度的装置,其特征在于,所述装置为主机,所述装置包括:
发送单元,用于向现场可编程门阵列FPGA设备发送资源调度请求,其中,所述资源调度请求用于请求调度所述FPGA设备中动态可重构区域PR为第一虚拟设备VD服务,所述FPGA设备包括N个PR,所述主机部署有M个VD,所述M个VD中每个VD均与一个虚拟机VM相配置,所述第一VD为所述M个VD中任一个,所述N和所述M均为大于1的整数;
接收单元,用于接收所述FPGA设备发送的确认信息,所述确认信息用于指示所述第一VD的上下文内容已部署在所述目标PR,所述目标PR为所述FPGA设备为所述第一VD调度的PR;
通知单元,用于通知第一VM运行所述第一VD,所述第一VM为与所述第一VD相配置的VM。
47.根据权利要求46所述的装置,其特征在于,所述N小于所述M。
48.根据权利要求46或47所述的装置,其特征在于,所述FPGA设备配置有K个虚拟功能设备VF,所述M个VD与所述N个PR之间存在对应关系,所述对应关系包括:所述M个VD与所述K个VF的映射关系,以及所述K个VF与所述N个PR之间的连接关系。
49.根据权利要求48所述的装置,其特征在于,所述M个VD与所述K个VF的映射关系为静态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
50.根据权利要求48所述的装置,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为静态连接关系。
51.根据权利要求48所述的装置,其特征在于,所述M个VD与所述K个VF的映射关系为动态映射关系;所述K个VF与所述N个PR之间的连接关系为动态连接关系。
52.根据权利要求50或51所述的装置,其特征在于,所述装置还包括:
连接单元,用于在所述通知单元通知所述第一VM运行所述第一VD之前,将所述第一VD与所述目标PR对应的第一VF连接。
53.根据权利要求46至52中任意一项所述的装置,其特征在于,所述接收单元还用于:
在接收所述FPGA设备发送的确认信息之前,接收所述FPGA设备发送的抢占通知,所述抢占通知指示需要抢占为所述第二VD服务的PR为所述目标PR;
所述通知单元还用于,根据所述抢占通知向与所述第二VD相配置的VM发送暂停信息,所述暂停信息用于指示与所述第二VD相配置的VM暂停使用所述第二VD。
54.根据权利要求53所述的装置,其特征在于,所述接收单元还用于:
在所述发送单元根据所述抢占通知向与所述第二VD相配置的VM发送暂停信息之后,接收接收与所述第二VD相配置的VM发送的暂停确认信息,所述暂停确认信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD;
所述发送单元还用于,根据所述暂停确认信息向所述FPGA设备发送指示信息,所述指示信息用于指示与所述第二VD相配置的VM已暂停使用所述第二VD。
55.一种资源调度的装置,包括:处理器以及存储器,其中,所述处理器和所述存储器通过总线连接,所述存储器存储有计算机指令,所述处理器通过执行计算机指令用于实现如权利要求1至18中任意一项所述的方法,或者通过执行计算机指令用于实现如权利要求19至27中任意一项所述的方法。
56.一种资源调度的系统,包括:现场可编程门阵列FPGA设备以及主机,其中,所述FPGA设备如权利要求28至45中任意一项所述,所述主机如权利要求46至54中任意一项所述。
57.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至18中任意一项所述的方法,或者如权利要求19至27任意一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810153338.9A CN110162378B (zh) | 2018-02-13 | 2018-02-13 | 一种资源调度的方法、装置、设备及系统 |
PCT/CN2018/117949 WO2019157849A1 (zh) | 2018-02-13 | 2018-11-28 | 一种资源调度的方法、装置、设备及系统 |
US16/984,956 US11429447B2 (en) | 2018-02-13 | 2020-08-04 | Scheduling regions of a field programmable gate array as virtual devices |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810153338.9A CN110162378B (zh) | 2018-02-13 | 2018-02-13 | 一种资源调度的方法、装置、设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110162378A true CN110162378A (zh) | 2019-08-23 |
CN110162378B CN110162378B (zh) | 2023-12-29 |
Family
ID=67619713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810153338.9A Active CN110162378B (zh) | 2018-02-13 | 2018-02-13 | 一种资源调度的方法、装置、设备及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11429447B2 (zh) |
CN (1) | CN110162378B (zh) |
WO (1) | WO2019157849A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597627A (zh) * | 2019-08-24 | 2019-12-20 | 中国电子科技集团公司第十五研究所 | 基于虚拟fpga的数据库运算加速装置及加速方法 |
CN111191459A (zh) * | 2019-12-25 | 2020-05-22 | 医渡云(北京)技术有限公司 | 一种文本处理方法、装置、可读介质及电子设备 |
CN112637337A (zh) * | 2020-12-22 | 2021-04-09 | 新华三大数据技术有限公司 | 一种数据处理方法及装置 |
CN114662162A (zh) * | 2022-05-25 | 2022-06-24 | 广州万协通信息技术有限公司 | 实现动态分配vf的多算法核高性能sr-iov加解密系统及方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968320A (zh) * | 2018-09-30 | 2020-04-07 | 上海登临科技有限公司 | 针对异构硬件架构的联合编译方法和编译系统 |
CN115550451A (zh) * | 2022-09-22 | 2022-12-30 | 湖南泛联新安信息科技有限公司 | 基于交换架构的多fpga仿真验证云平台调度管理方法和系统 |
CN116107726B (zh) * | 2023-04-13 | 2023-07-18 | 上海思尔芯技术股份有限公司 | Fpga资源调度方法、装置、设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1372084A2 (en) * | 2002-05-31 | 2003-12-17 | Interuniversitair Microelektronica Centrum Vzw | Method for hardware-software multitasking on a reconfigurable computing platform |
CN102708221A (zh) * | 2011-03-03 | 2012-10-03 | 阿尔特拉公司 | 用于对局部重配置模块进行布局和布线的方法和设备 |
CN104156663A (zh) * | 2014-07-31 | 2014-11-19 | 上海华为技术有限公司 | 一种硬件虚拟端口及处理器系统 |
CN105306241A (zh) * | 2014-07-11 | 2016-02-03 | 华为技术有限公司 | 一种业务部署方法及网络功能加速平台 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727423B (zh) | 2008-10-17 | 2011-12-07 | 东北大学 | 可重配置fpga上可抢占硬件多任务系统及其实现方法 |
US9100012B1 (en) * | 2012-12-14 | 2015-08-04 | Altera Corporation | Adaptable programs using partial reconfiguration |
WO2014120157A1 (en) * | 2013-01-30 | 2014-08-07 | Empire Technology Development Llc | Dynamic reconfiguration of programmable hardware |
CN105700956A (zh) | 2014-11-28 | 2016-06-22 | 国际商业机器公司 | 用于处理分布式作业的方法和系统 |
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
CN105335211B (zh) | 2015-10-21 | 2018-10-26 | 同济大学 | 一种基于Xen虚拟化集群的FPGA加速器调度系统及方法 |
US10540506B2 (en) * | 2017-01-12 | 2020-01-21 | Microsoft Technology Licensing, Llc | Field-programmable gate array virtualization |
US10404470B2 (en) * | 2017-01-13 | 2019-09-03 | Microsoft Technology Licensing, Llc | Signature verification of field-programmable gate array programs |
US11327789B2 (en) * | 2017-02-17 | 2022-05-10 | Intel Corporation | Merged input/output operations from a plurality of virtual machines |
US11556363B2 (en) * | 2017-03-31 | 2023-01-17 | Intel Corporation | Techniques for virtual machine transfer and resource management |
US10228981B2 (en) * | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10402219B2 (en) * | 2017-06-07 | 2019-09-03 | Dell Products L.P. | Managing shared services in reconfigurable FPGA regions |
US20190042329A1 (en) * | 2018-06-29 | 2019-02-07 | Utkarsh Y. Kakaiya | System with programmable multi-context accelerator circuitry |
US11556437B2 (en) * | 2018-08-22 | 2023-01-17 | Intel Corporation | Live migration of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture |
US11120188B2 (en) * | 2019-01-28 | 2021-09-14 | King Fahd University Of Petroleum And Minerals | FPGA virtualization |
-
2018
- 2018-02-13 CN CN201810153338.9A patent/CN110162378B/zh active Active
- 2018-11-28 WO PCT/CN2018/117949 patent/WO2019157849A1/zh active Application Filing
-
2020
- 2020-08-04 US US16/984,956 patent/US11429447B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1372084A2 (en) * | 2002-05-31 | 2003-12-17 | Interuniversitair Microelektronica Centrum Vzw | Method for hardware-software multitasking on a reconfigurable computing platform |
CN102708221A (zh) * | 2011-03-03 | 2012-10-03 | 阿尔特拉公司 | 用于对局部重配置模块进行布局和布线的方法和设备 |
CN105306241A (zh) * | 2014-07-11 | 2016-02-03 | 华为技术有限公司 | 一种业务部署方法及网络功能加速平台 |
US20170126487A1 (en) * | 2014-07-11 | 2017-05-04 | Huawei Technologies Co., Ltd. | Service deployment method and network functions acceleration platform |
CN104156663A (zh) * | 2014-07-31 | 2014-11-19 | 上海华为技术有限公司 | 一种硬件虚拟端口及处理器系统 |
Non-Patent Citations (2)
Title |
---|
张彬: "CPU/FPGA可重构虚拟平台的研究与实现", 《CNKI》 * |
张彬: "CPU/FPGA可重构虚拟平台的研究与实现", 《CNKI》, no. 5, 31 May 2015 (2015-05-31), pages 1 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597627A (zh) * | 2019-08-24 | 2019-12-20 | 中国电子科技集团公司第十五研究所 | 基于虚拟fpga的数据库运算加速装置及加速方法 |
CN110597627B (zh) * | 2019-08-24 | 2023-07-14 | 中国电子科技集团公司第十五研究所 | 基于虚拟fpga的数据库运算加速装置及加速方法 |
CN111191459A (zh) * | 2019-12-25 | 2020-05-22 | 医渡云(北京)技术有限公司 | 一种文本处理方法、装置、可读介质及电子设备 |
CN111191459B (zh) * | 2019-12-25 | 2023-12-12 | 医渡云(北京)技术有限公司 | 一种文本处理方法、装置、可读介质及电子设备 |
CN112637337A (zh) * | 2020-12-22 | 2021-04-09 | 新华三大数据技术有限公司 | 一种数据处理方法及装置 |
CN112637337B (zh) * | 2020-12-22 | 2022-02-22 | 新华三大数据技术有限公司 | 一种数据处理方法及装置 |
CN114662162A (zh) * | 2022-05-25 | 2022-06-24 | 广州万协通信息技术有限公司 | 实现动态分配vf的多算法核高性能sr-iov加解密系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019157849A1 (zh) | 2019-08-22 |
CN110162378B (zh) | 2023-12-29 |
US11429447B2 (en) | 2022-08-30 |
US20200364091A1 (en) | 2020-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162378A (zh) | 一种资源调度的方法、装置、设备及系统 | |
CN107924341B (zh) | 基于平台遥测数据的实时的本地和全局数据中心网络优化 | |
WO2021031619A1 (zh) | 存储设备、分布式存储系统以及数据处理方法 | |
CN104395897B (zh) | 服务器节点互连装置和方法 | |
CN111698112B (zh) | 一种容器化虚拟网络功能vnf的资源管理方法及装置 | |
US20140307554A1 (en) | Virtual enhanced transmission selection (vets) for lossless ethernet | |
CN106648896B (zh) | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 | |
US11586575B2 (en) | System decoder for training accelerators | |
CN109213702A (zh) | 虚拟机环境中的虚拟双控制模块之间的通信 | |
US20210281618A1 (en) | System, apparatus, and method for streaming input/output data | |
US11281506B2 (en) | Virtualised gateways | |
US11303638B2 (en) | Atomic update of access control list rules | |
US9515963B2 (en) | Universal network interface controller | |
CN110837488B (zh) | 报文传输方法和装置 | |
US9699118B2 (en) | System for flexible dynamic reassignment of throughput | |
US9755983B1 (en) | Minipacket flow control | |
US11412059B2 (en) | Technologies for paravirtual network device queue and memory management | |
CN108541361A (zh) | 用于多信道网络中的仲裁和自适应功率循环的方法 | |
CN106209933A (zh) | 源主机、迁移架构及数据迁移方法 | |
CN112131011B (zh) | 用于管理资源的方法、计算设备和计算机可读存储介质 | |
JP2014187430A (ja) | 通信システム、中継装置、通信方法、及びプログラム | |
WO2024087663A1 (zh) | 作业调度方法、装置和芯片 | |
WO2020143509A1 (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 |