CN115729694A - 一种资源管理的方法及相应装置 - Google Patents
一种资源管理的方法及相应装置 Download PDFInfo
- Publication number
- CN115729694A CN115729694A CN202111015561.5A CN202111015561A CN115729694A CN 115729694 A CN115729694 A CN 115729694A CN 202111015561 A CN202111015561 A CN 202111015561A CN 115729694 A CN115729694 A CN 115729694A
- Authority
- CN
- China
- Prior art keywords
- asid
- resource pool
- processing core
- asids
- allocated
- 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.)
- Pending
Links
- 238000007726 management method Methods 0.000 title abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 282
- 230000008569 process Effects 0.000 claims abstract description 236
- 238000002955 isolation Methods 0.000 claims abstract description 63
- 238000012545 processing Methods 0.000 claims description 255
- 238000004590 computer program Methods 0.000 claims description 10
- 238000013519 translation Methods 0.000 claims description 9
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 23
- 238000010586 diagram Methods 0.000 description 16
- 238000011010 flushing procedure Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000013508 migration Methods 0.000 description 8
- 230000005012 migration Effects 0.000 description 8
- 230000001960 triggered effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000008878 coupling Effects 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
- 238000012360 testing method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- 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
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种资源管理的方法,应用于计算机***,该计算机***包括普通核和处于隔离核。该方法包括:从ASID资源池中为普通核所运行的普通业务的进程分配第一ASID,为隔离核所运行的关键业务的进程分配第二ASID;当ASID资源池中的第一ASID耗尽,则以ASID世代迭代的方式只更新ASID资源池中的第一ASID,以及刷新普通中的TLB。本申请技术方案由于资源池中的第一ASID耗尽时,不更新已分配给隔离核的第二ASID,不需要刷新隔离核中的TLB,因此不会影响隔离核所运行的关键业务的时延。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种资源管理的方法及相应装置。
背景技术
在计算机***中,针对每个新产生的进程都会分配一个地址空间标志符(address-space identifiers,ASID),用于区分各进程独立的虚拟地址空间,同时地址转换缓冲区(translation lookaside buffer,TLB)也会缓存该进程的ASID以及该ASID在TLB中的表项,这样,后续再运行该进程时就可以根据该进程的ASID在TLB中查询对应的TLB表项(TLB entry),从而根据该TLB entry快速确定对应的物理地址,如果TLB被频繁刷新,则上述进程再次运行时,大概率上无法从TLB中快速查询到对应的TLB entry,造成较高的TLB查询未命中(TLB miss),会影响计算机***的性能。
计算机***中通常会运行普通业务和对时延敏感的关键业务,为了保障关键业务的运行,通常会将计算机***的中央处理单元(central processing unit,CPU)采用隔离技术划分为非隔离CPU核和隔离CPU核。非隔离CPU核用于运行普通业务的进程,隔离CPU核用于运行关键业务的进程。无论是普通业务的进程,还是关键业务的进程都会从全局ASID资源池中申请ASID,因为普通业务的进程很多,而全局ASID资源池中ASID的数量有限,全局ASID资源池的ASID被普通业务的进程耗尽后,就会执行对全局ASID资源池的世代(generation)的迭代。世代迭代指的是通过更新ASID的世代编号的方式来重复使用ASID,这样源源不断的后续进程才能有可以使用的ASID。在全局ASID资源池迭代时,为了避免迭代后不同代的ASID发生冲突,需要刷新每个CPU的TLB,使得TLB中上一代的ASID失效。
因为全局ASID资源池频繁迭代,会导致隔离核的TLB被频繁刷新,造成隔离核上运行的进程发生大概率的TLB查询未命中(TLB miss),会增加隔离CPU核上运行的关键业务的时延。
发明内容
本申请提供一种资源管理的方法,用于管理地址空间标志符(address-spaceidentifiers,ASID),以降低隔离中央处理单元(central processing unit,CPU)核上运行的关键业务的时延。本申请还提供了相应的装置、计算机设备、计算机可读存储介质和计算机程序产品等。
本申请第一方面提供一种资源管理的方法,该方法应用于计算机***,该计算机***包括第一处理核和处于隔离环境的第二处理核,该方法包括:从地址空间标识符ASID资源池中为第一处理核所运行的进程分配第一ASID,ASID资源池中包括多个第一ASID;为第二处理核所运行的进程分配第二ASID;当ASID资源池中的第一ASID耗尽,则以ASID世代迭代的方式只更新ASID资源池中的第一ASID,并无效掉已分配给第一处理核所运行的进程的第一ASID,以及刷新第一处理核中的地址转换缓冲区TLB。
本申请中,第一处理核和第二处理核都为CPU核。“处于隔离环境”可以指软件上的隔离,可以通过隔离技术设置进程的调度策略,使得第一处理核在工作时运行普通业务的进程,使得第二处理核在工作时运行时延敏感的关键业务的进程。第一处理核可以有一个或多个,第二处理核也可以有一个或多个。本申请中的“多个”包括两个或两个以上。
本申请中,可以将第一处理核所运行的进程称为普通业务的进程,将第二处理核所运行的进程称为关键业务的进程。
本申请中,第一ASID和第二ASID可以位于全局ASID资源池中,也可以位于两个不同的ASID资源池。第一ASID指的是分配给普通业务的进程的ASID,第二ASID指的是分配给关键业务的进程的ASID。第一ASID有多个,而且每个第一ASID都不相同,第二ASID可以有一个也可以有多个,每个第二ASID都不相同,而且,第一ASID与第二ASID不重复。
本申请中,计算机***中ASID通常是一系列索引,ASID的数量通常是有限的,而计算机***中的进程且是无限的,所以资源池中的ASID耗尽后,需要执行ASID的世代(generation)迭代来更新资源池中的ASID。generation迭代指的是通过改变世代标识(GENID)的方式来重复使用资源池中的ASID。为了避免不同代的ASID冲突,所以,当发生世代迭代后,计算机***会无效掉世代迭代之前已分配给进程的上一代的ASID,并刷新相应处理核中的地址转换缓冲区(translation lookaside buffer,TLB),以避免TLB中出现同一个ASID对应两个不同的TLB表项(TLB entry),造成物理地址访问错误。
该第一方面中,当资源池中的第一ASID耗尽后,只更新分配给第一处理核所运行的进程的第一ASID,并不更新已分配给第二处理核所运行的进程的第二ASID,也只刷新第一处理核中的TLB,并不刷新第二处理核中的TLB。这样第二处理核的TLB中会存储关键业务的进程的TLB entry,当关键业务的进程要访问相应的物理地址时,可以通过查询第二处理核的TLB直接查询到相应的物理地址,而不需要通过页表查找对应的物理地址,从而加快了物理地址的访问速度,降低了关键业务的时延。
在第一方面的一种可能的实现方式中,上述步骤:为第二处理核所运行的进程分配第二ASID,包括:从另一ASID资源池中为第二处理核所运行的进程分配第二ASID,另一ASID资源池包括多个第二ASID。
该种可能的实现方式中,计算机***中可以包括两个ASID资源池,其中,一个资源池中包括第一ASID,用于为普通业务的进程提供ASID,另一个ASID资源池中包括第二ASID,两个资源池中的ASID不重复。如:计算机***有六万个ASID,索引序号从00001开始直到60000结束,ASID资源池1中可以包括00001开始直到55000的ASID,ASID资源池2中可以包括55001开始直到60000的ASID。当有两个ASID资源池时,包含第二ASID的资源池中会包括多个第二ASID,因为关键业务的进程相对于普通业务的进程要少很多。所以,第二ASID会消耗的较慢,即使第一ASID消耗的较快,发生世代迭代,也不会影响到第二ASID。第二ASID没有发生世代迭代,也不需要刷新第二处理核中的TLB,这样第二处理核的TLB中会存储关键业务的进程的TLB entry,当关键业务的进程要访问相应的物理地址时,可以通过查询第二处理核的TLB直接查询到相应的物理地址,而不需要通过页表查找对应的物理地址,从而加快了物理地址的访问速度,降低了关键业务的时延。
在第一方面的一种可能的实现方式中,上述步骤:为第二处理核所运行的进程分配第二ASID,包括:从ASID资源池中为第二处理核所运行的进程分配第二ASID,ASID资源池中包括至少一个第二ASID;保存已分配的第二ASID的预留信息,预留信息指示已分配的第二ASID被预留。
上述步骤:以ASID世代迭代的方式更新ASID资源池中的第一ASID,包括:根据已分配的第二ASID的预留信息,确定ASID资源池中的第一ASID,并以ASID世代迭代的方式更新第一ASID。
该种可能的实现方式中,第一ASID和第二ASID位于同一个ASID资源池中,该ASID资源池也可以称为全局ASID资源池。为第一处理核所运行的进程以及为第二处理核所运行的进程分配ASID时都是从该全局ASID资源池中提取ASID,只是针对分配给第二处理核所运行的进程的ASID会保存预留信息,该预留信息用于指示该分配给第二处理核所运行的进程的ASID被预留,如:全局ASID资源池中有六万个ASID,索引序号从00001开始直到60000结束,若其中00111被分配给第二处理核所运行的进程,则会保存该00111已被预留的预留信息,这样,在更新第一ASID时,就可以根据预留信息,从全局ASID资源池的所有ASID中,只更新分配给第一处理核所运行的进程的ASID,而不更新分配给第二处理核所运行的进程分配ASID。这样,不需要分割全局的ASID,更有利于提高ASID的利用率。
在第一方面的一种可能的实现方式中,上述步骤:保存已分配的第二ASID的预留信息,预留信息指示已分配的第二ASID被预留,包括:在预留位图上将已分配的第二ASID对应的标识位上的标识由未预留状态修改为已预留状态,预留位图用于记录ASID资源池中每个ASID的预留状态。
本申请中,可以通过预留位图的方式来保存对已分配的第二ASID的预留信息。标识位可以是比特位,预留位图是通过比特位的形式来表示对ASID的预留情况,全局ASID资源池中有多少个ASID,预留位图上就有多少个比特位。例如:计算机***中有六万个ASID,则预留位图上就有六万个比特位,六万个ASID与六万个比特位之间一一对应,每个比特位会对应一个ASID。
本申请中,每个比特位可以用0表示该比特位对应的ASID没有被预留,可以用1表示该比特位对应的ASID已被预留,即该比特位对应的ASID已被分配给第二处理核所运行的进程。当然,也可以反过来,用1表示没被预留,用0表示已被预留,当然,标识的表示形式也不限于0或1,也可以通过其他标识来表示已被预留或没被预留这两种状态。
该种可能的实现方式中,通过预留位图的方式来记录对已分配给第二处理核的进程的第二ASID的预留状态,可以有效防止第二ASID被重新分配。
在第一方面的一种可能的实现方式中,上述步骤:根据已分配的第二ASID的预留信息,确定ASID资源池中的第一ASID,并以ASID世代迭代的方式更新第一ASID,包括:根据预留位图上的对已分配的第二ASID的已预留状态,以及全局位图,确定需要执行世代迭代的第一ASID,全局位图用于记录ASID资源池中的ASID的分配状态;以ASID世代迭代的方式更新ASID资源池中的第一ASID,并将全局位图上表示第一ASID状态的标识由已分配状态修改为未分配状态。
本申请中,全局位图是通过比特位的形式来标识全局ASID资源池中的每个ASID的分配状态的位图,每个比特位可以用0表示该比特位对应的ASID还没被分配,可以用1表示该比特位对应的ASID已被分配。当然,也可以反过来,用1表示该比特位对应的ASID还没被分配,可以用0表示该比特位对应的ASID已被分配。当然,标识的表示形式也不限于0或1,也可以通过其他标识来表示已被分配或没被分配这两种状态。
本申请中,在全局ASID资源池中的第一ASID耗尽后,全局位图上的比特位可能都是1,这样就可以通过复制预留位图的方式,将预留位图上是1的比特位对应的ASID保留,全局位图上其他比特位对应的ASID都是需要更新的第一ASID。以世代迭代的方式更新第一ASID时,还需要将全局位图上除预留位图上对应为1的比特位保留外,其他是1的比特位都重置为0。
该种可能的实现方式中,通过全局位图和预留位图的方式更新第一ASID,可以提高更新第一ASID的速度。
在第一方面的一种可能的实现方式中,该方法还包括:当ASID资源池中还包括未分配的ASID,且已分配给第二处理核所运行的进程的第二ASID的数量超过水线,则从未分配的ASID中为第二处理核所运行的进程分配第二ASID,并将分配给第二处理核所运行的进程的第二ASID在预留位图上的标识位由未预留状态修改为已预留状态,水线用于表示为第二处理核所预留的第二ASID的最大数量。
该种可能的实现方式中,水线指的是为第二处理核所预留的第二ASID的最大数量,也可以将水线理解为是触发刷新第二处理核中TLB的一个条件,只有当所分配的第二ASID的数量超过水线,且全局ASID资源池中没有可以分配的ASID,才会触发刷新第二处理核中TLB,只要全局ASID资源池中的ASID还没耗尽,都不会触发刷新第二处理核中TLB,这样,可以尽量减少刷新第二处理核中TLB的次数,降低第二处理核所运行的关键业务的时延。
在第一方面的一种可能的实现方式中,该方法还包括:当ASID资源池中不包括未分配的ASID,且已分配给第二处理核所运行的进程的第二ASID的数量超过水线,则更新ASID资源池中的所有ASID,并将全局位图上表示所有ASID状态的标识由已分配状态修改为未分配状态,以及将预留位图上的标识由已预留状态修改为未预留状态,水线用于表示为第二处理核所预留的第二ASID的最大数量。
该种可能的实现方式中,只有当所分配的第二ASID的数量超过水线,且全局ASID资源池中没有可以分配的ASID,才会触发刷新第二处理核中TLB,这样,有利于减少刷新第二处理核中TLB的次数,降低第二处理核所运行的关键业务的时延。
在第一方面的一种可能的实现方式中,该方法还包括:获取第二处理核所运行的进程的上下文标识;若进程的上下文标识包括非隔离标识,则将非隔离标识修改为隔离标识,并将上下文标识中所包含的ASID在预留位图中的标识由未预留状态修改为已预留状态。
该种可能的实现方式中,上下文标识(context ID)通常包括该进程所分配的ASID以及该ASID的世代标识(GEN ID),为了便于通过一次原子操作来确定该进程在分配ASID时的情况,本申请在上下文标识设置了隔离标识和非隔离标识,隔离标识用于指示该上下文标识中的ASID是为运行在第二处理核的关键业务的进程所分配的ASID。非隔离标识用于指示该上下文标识中的ASID是为运行在第一处理核的普通业务的进程所分配的ASID。当第二处理核所运行的进程的上下文标识中包括非隔离标识,则说明该第二处理核所运行的进程可能发生了进程迁移,从第一处理核迁移到了第二处理核,该进程也有可能是个多线程的进程,有部分线程运行在第一处理核,有部分线程运行在第二处理核,这种情况,为了避免第一ASID更新对第二处理核所运行的进程造成影响,需要将该进程中的非隔离标识修改为隔离标识,并且在预留位图上将该进程中所包含的ASID对应的比特位由未预留状态修改为已预留状态,即由0修改为1,这样,可以使本申请的方案更灵活适用于进程迁移的环境以及进程包括多线程,而且多线程运行在不同环境的场景。
本申请第二方面提供一种资源管理的装置,该资源管理的装置具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块,例如:第一处理单元、第二处理单元和第三处理单元,这三个处理单元可以通过一个处理单元或多个处理单元来实现。
本申请第三方面提供一种计算机设备,该计算机设备包括至少一个处理器、存储器、输入/输出(input/output,I/O)接口以及存储在存储器中并可在处理器上运行的计算机执行指令,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第四方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,一个或多个处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第五方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被一个或多个处理器执行时,一个或多个处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第六方面提供了一种芯片***,该芯片***包括至少一个处理器,至少一个处理器用于支持资源管理的装置实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存资源管理的装置必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
图1是本申请实施例提供的计算机***的一结构示意图;
图2是本申请实施例提供的一示例示意图;
图3是本申请实施例提供的计算机***的另一结构示意图;
图4是本申请实施例提供的资源管理的方法的一实施例示意图;
图5是本申请实施例提供的计算机***的另一结构示意图;
图6是本申请实施例提供的计算机***的另一结构示意图;
图7是本申请实施例提供的预留位图的一示例示意图;
图8是本申请实施例提供的全局位图的一示例示意图;
图9是本申请实施例提供的资源管理的方法的一场景示例示意图;
图10是本申请实施例提供的资源管理的方法的另一实施例示意图;
图11是本申请实施例提供的资源管理的方法的另一场景示例示意图;
图12是本申请实施例提供的进程的上下文标识的一示例示意图;
图13是本申请实施例提供的资源管理的装置的一实施例示意图;
图14是本申请实施例提供的计算机设备的一结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种资源管理的方法,用于管理地址空间标志符(address-space identifiers,ASID),以降低隔离中央处理单元(central processing unit,CPU)核上运行的关键业务的时延。本申请还提供了相应的装置、计算机设备、计算机可读存储介质和计算机程序产品等。以下分别进行详细说明。
本申请实施例提供的资源管理的方法应用于计算机***,该计算机***可以为服务器、终端设备或虚拟机(virtual machine,VM)或容器(container)等。
终端设备(也可以称为用户设备(user equipment,UE))是一种具有无线收发功能的设备,可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。所述终端可以是手机(mobilephone)、平板电脑(pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端、增强现实(augmented reality,AR)终端、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。
该计算机***的架构可以参阅图1进行理解。图1为计算机***的一架构示意图。
如图1所示,该计算机***的架构包括用户层10、操作***20和硬件层30。
用户层10包括多个应用(application,APP),每个应用在运行时可以对应一个进程。如:应用1在运行时的进程为进程1,应用2在运行时的进程为进程2。
操作***(operating system,OS)20用于运行每个应用的进程,如进程1和进程2。
硬件层30包括通信接口、处理器、物理内存、内存管理单元(memory managementunit,MMU)和总线等。通信接口、处理器、物理内存和MMU通过总线连接。其中,处理器可以包括中央处理器(central processing unit,CPU)或任何类型的通用计算电路或专用逻辑电路,例如:现场可编程门阵列(field-programmable gate array,FPGA)或专用集成电路(application specific integrated circuit,ASIC)。也可以是耦合到一个或多个半导体基板的一个或多个处理器,例如中央处理器(central processing unit,CPU)。物理内存可以被配置为多个内存空间。MMU是一种负责处理中央处理器(central processing unit,CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换、内存保护、CPU高速缓存的控制等。
其中,CPU可以有多个,每个CPU也可以有多个“核”,该核在本申请实施例中被称为处理核。如图1中,处理器包括处理核1、处理核2……处理核n,n为大于2的整数。当然,图1中所示意出的是至少有三个处理核的场景,实际上,该计算机***中也可以包括两个处理核。每个处理核中包括一个地址转换缓冲区(translation lookaside buffer,TLB)。进程运行过程中,要访问物理页上的数据,通常需要通过虚拟地址,以及表项查找对应的物理地址,进而访问相应物理页上的数据。表项中记录该虚拟地址与对应的物理地址的映射关系,该表项存在于页表中,但如果某一表项最近被使用过,则该表项也会缓存在相应处理核的TLB中,TLB中缓存的表项可以称为TLB entry。这样,当该处理核运行该进程再次使用该表项时,就可以从该处理核的TLB中获取该表项,进而快速访问相应的物理页。
每个处理核上在一个时间点可以运行一个进程,如:处理核1运行进程1,处理核2运行进程2,当然,在不同的时间点,进程1和进程2页也可以运行在其他处理核上。进程在运行时所占用的处理核可以通过软件层面进行调度配置。
每个进程在第一次运行时,操作***会为该进程分配一个地址空间标志符(address-space identifiers,ASID),如:进程1在第一次运行时被分配了ASID1,进程2在第一次运行时被分配了ASID2。运行该进程的处理核的TLB中会缓存分配给该进程的ASID,在TLB中,该进程的ASID会与该进程所使用的TLB entry关联缓存,如图2所示,当进程1运行在处理核1上时,处理核1的TLB中会缓存该进程1的ASID1与TLB entry的对应关系,如TLB中条状A1所示,当进程1运行在处理核2上时,处理核2的TLB中会缓存该进程1的ASID1与TLBentry的对应关系,如TLB中条状A2所示。同理,当进程2运行在处理核1上时,处理核1的TLB中会缓存该进程1的ASID2与TLB entry的对应关系,如TLB中条状B1所示,当进程2运行在处理核2上时,处理核2的TLB中会缓存该进程2的ASID2与TLB entry的对应关系,如TLB中条状B2所示。这样,当该处理核下一次运行该进程时,就可以使用该进程的ASID查找到相应的TLB entry,实现快速的虚拟地址到物理地址的转换,从而快速访问相应的物理页。
随着技术的发展,一些业务场景对时延很敏感,如5G场景,边缘计算场景,对时延的要求很高,为了保障这些对时延敏感的业务,可以采用隔离技术,将处理器的处理核分为普通核和隔离核,隔离核在隔离环境中运行。本申请实施例中的“隔离环境”可以指软件上的隔离,可以通过隔离技术设置进程的调度策略,使得对时延敏感的业务运行在隔离核上,使得对时延不敏感的业务运行在普通核上。本申请实施例中,可以将普通核所运行的进程称为普通业务的进程,将隔离核所运行的进程称为关键业务的进程。
如图3所示,通过软件配置的方式将计算机***中的处理核记录为两种类型,一种为普通核,如:处理核1、处理核2……处理核x,一种为隔离核,如:处理核(x+1)、处理核(x+2)……处理核(x+m),也可以理解为普通核运行在普通环境中,隔离核运行在隔离环境中。其中,普通环境与隔离环境并不限定为硬件上的物理隔离,可以是通过软件的配置,将不同类型的进程调度到不同的处理核上,如:将对时延敏感的进程3调度到处理核x+2上运行,将对时延不敏感的进程1调度到处理核1上运行,将对时延不敏感的进程2调度到处理核2上运行。即使将处理核记录为普通核和隔离核两种类型,操作***给进程分配ASID的方式还是不变的,都是从ASID资源池中申请ASID,在进程第一次运行时为该进程分配一个唯一的ASID。直到该进程的ASID被无效掉。ASID通常是一系列索引,ASID的数量通常是有限的,而计算机***中的进程且是无限的,所以ASID资源池中的ASID耗尽后,需要执行ASID的世代(generation)迭代来更新资源池中的ASID。generation迭代指的是通过改变代标识(GENID)的方式来重复使用资源池中的ASID。为了避免不同代的ASID冲突,所以,当发生世代迭代后,计算机***会无效掉世代迭代之前已分配给进程的上一代的ASID,并刷新相应处理核中的TLB,以避免TLB中出现同一个ASID对应两个不同的TLB表项(TLB entry),造成物理地址访问错误。
因为普通业务的进程相对较多,所以普通业务的进程占用的ASID较多,若ASID被耗尽,则要执行ASID的世代迭代,这样需要刷新普通核和隔离核中的TLB,这样会造成关键业务的时延抖动,为了避免和减少关键业务的时延抖动,基于上述计算机***,该计算机***包括第一处理核和处于隔离环境的第二处理核。本申请实施例提供了一种资源管理的方法,如图4所示,该资源管理的方法的一实施例包括:
101.从地址空间标识符ASID资源池中为第一处理核所运行的进程分配第一ASID,ASID资源池中包括多个第一ASID。
本申请实施例中,第一处理核和第二处理核都为CPU核。第一处理核可以有一个或多个,第二处理核也可以有一个或多个。本申请中的“多个”包括两个或两个以上。如:第一处理核可以为上述图3中的处理核1、处理核2……处理核x,第二处理核可以为上述图3中的处理核(x+1)、处理核(x+2)……处理核(x+m)。
102.为第二处理核所运行的进程分配第二ASID。
第一ASID指的是分配给普通业务的进程的ASID,第二ASID指的是分配给关键业务的进程的ASID。第一ASID有多个,而且每个第一ASID都不相同,第二ASID可以有一个也可以有多个,每个第二ASID都不相同,而且,第一ASID与第二ASID不重复。
103.当ASID资源池中的第一ASID耗尽,则以ASID世代迭代的方式只更新ASID资源池中的第一ASID,并无效掉已分配给第一处理核所运行的进程的第一ASID,以及刷新第一处理核中的地址转换缓冲区TLB。
本申请实施例中,当资源池中的第一ASID耗尽后,只更新分配给第一处理核所运行的进程的第一ASID,并不更新已分配给第二处理核所运行的进程的第二ASID,也只刷新第一处理核中的TLB,并不刷新第二处理核中的TLB,这样第二处理核的TLB中会存储关键业务的进程的TLB entry,当关键业务的进程要访问相应的物理地址时,可以通过查询第二处理核的TLB直接查询到相应的物理地址,而不需要通过页表查找对应的物理地址,从而加快了物理地址的访问速度,降低了关键业务的时延。
可选地,本申请实施例提供的资源管理方案中第一ASID和第二ASID可以位于同一个全局ASID资源池中,也可以位于两个不同的ASID资源池。下面分别进行介绍:
一、第一ASID和第二ASID位于两个不同的ASID资源池中。
计算机***可以维护两个ASID资源池,其中,一个资源池中包括第一ASID,用于为普通业务的进程提供ASID,另一个ASID资源池中包括第二ASID,用于为关键业务的进程提供ASID。两个资源池中的ASID不重复,当有两个ASID资源池时,包含第二ASID的资源池中会包括多个第二ASID。
这样,上述步骤102包括:从另一ASID资源池中为第二处理核所运行的进程分配第二ASID,另一ASID资源池包括多个第二ASID。
如图5所示,计算机***中为普通环境维护一个ASID资源池1,为隔离环境维护一个ASID资源池2。这样,为处理核1、处理核2……处理核x中的任意一个处理核所运行的进程分配ASID时就可以从ASID资源池1中申请ASID,为处理核(x+1)、处理核(x+2)……处理核(x+m)的任意一个处理核所运行的进程分配ASID时就可以从ASID资源池2中申请ASID。
ASID资源池1和ASID资源池2中的ASID不重复,如:计算机***有六万个ASID,索引序号从00001开始直到60000结束,ASID资源池1中可以包括00001开始直到55000的ASID,ASID资源池2中可以包括55001开始直到60000的ASID。当然,关于ASID在两个资源池中的分配此处只是举例,具体划分方式可以根据需求设置。
通常计算机***创建的关键业务的进程相对于普通业务的进程要少很多,所以,第二ASID会消耗的较慢,即使第一ASID消耗的较快,发生世代迭代,也不会影响到第二ASID,第二ASID没有发生世代迭代,也不需要刷新第二处理核中的TLB,这样第二处理核的TLB中会存储关键业务的进程的TLB entry,当关键业务的进程要访问相应的物理地址时,可以通过查询第二处理核的TLB直接查询到相应的物理地址,而不需要通过页表查找对应的物理地址,从而加快了物理地址的访问速度,降低了关键业务的时延。
二、第一ASID和第二ASID位于同一个全局ASID资源池中。
计算机***中只有一个全局ASID资源池时,上述步骤102包括:从ASID资源池中为第二处理核所运行的进程分配第二ASID,ASID资源池中包括至少一个第二ASID;保存已分配的第二ASID的预留信息,预留信息指示已分配的第二ASID被预留。
上述步骤103,包括:根据已分配的第二ASID的预留信息,确定ASID资源池中的第一ASID,并以ASID世代迭代的方式更新第一ASID。
如图6所示,计算机***针对普通环境和隔离环境只维护一个全局ASID资源池,这样,为处理核1、处理核2……处理核x中的任意一个处理核所运行的进程分配ASID时需要从全局ASID资源池中申请ASID,为处理核(x+1)、处理核(x+2)……处理核(x+m)的任意一个处理核所运行的进程分配ASID时也需要从全局ASID资源池中申请ASID。如:全局ASID资源池中有六万个ASID,索引序号从00001开始直到60000结束。普通业务的进程所分配的ASID,以及关键业务的进程所分配的ASID可以是按照申请顺序分配的,如:计算机***先运行了100个普通业务的进程,才有一个关键业务的进程申请ASID,那么00001到00100都分配给了前100个普通业务的进程,00101则分配给了关键业务的进程。中间又有9个普通业务的进程申请了00102到00110,又来了一个关键业务的进程申请了00111,在这个示例中,00001到00100以及00102到00110都是第一ASID,00101和00111是第二ASID。第二ASID需要保存预留信息,则计算机***中会保存00101和00111已被预留的预留信息,这样,当全局ASID资源池中的ASID耗尽后,以世代迭代的方式更新时,就可以根据保存的预留信息来确定哪些ASID属于第二ASID,从而确定其他第一ASID,进而更新第一ASID,而不更新第二ASID,例如:当六万个ASID都耗尽后,根据预留信息确定00101和00111已被预留,就可以确定,00001到00100、00102到00110,以及00112到60000需要执行迭代更新,则更新00001到00100、00102到00110,以及00112到60000,不需要更新00101和00111,也不需要刷新隔离环境中的处理核的TLB,避免了关键业务的抖动时延。
这种计算机***只维护一个全局ASID资源池来管理ASID的方式,更有利于提高ASID的利用率。
本申请实施例中,预留信息可以通过预留位图的方式来保存。预留位图是通过比特位的形式来表示对ASID的预留情况,全局ASID资源池中有多少个ASID,预留位图上就有多少个比特位。预留位图上每个比特位代表一个ASID的标识位,标识位上可以通过标识来表示ASID的预留状态,如:每个比特位可以用0表示该比特位对应的ASID没有被预留,可以用1表示该比特位对应的ASID已被预留,当然,也可以反过来,用1表示没被预留,用0表示已被预留,当然,标识的表示形式也不限于0或1,也可以通过其他标识来表示已被预留或没被预留这两种状态。例如:计算机***中有六万个ASID,则预留位图上就有六万个比特位,六万个ASID与六万个比特位之间一一对应,每个比特位会对应一个ASID。
可选地,本申请实施例中,通过预留位图保存已分配的第二ASID的预留信息可以是在预留位图上将已分配的第二ASID对应的标识位上的标识由未预留状态修改为已预留状态,预留位图用于记录ASID资源池中每个ASID的预留状态。
例如:00101和00111被预留,则00101和00111在预留位图上对应的比特位上的标识会由0修改为1。如图7所示,在00101对应的比特位标识被修改为1,在00111对应的比特位标识被修改为1,其他比特位上的标识都为0。
使用预留位图后,根据已分配的第二ASID的预留信息,确定ASID资源池中的第一ASID,并以ASID世代迭代的方式更新第一ASID,可以包括:根据预留位图上的对已分配的第二ASID的已预留状态,以及全局位图,确定需要执行世代迭代的第一ASID,全局位图用于记录ASID资源池中的ASID的分配状态;以ASID世代迭代的方式更新ASID资源池中的第一ASID,并将全局位图上表示第一ASID状态的标识由已分配状态修改为未分配状态。
本申请实施例中,全局位图是通过比特位的形式来标识全局ASID资源池中的每个ASID的分配状态的位图,每个比特位可以用0表示该比特位对应的ASID还没被分配,可以用1表示该比特位对应的ASID已被分配。当然,也可以反过来,用1表示该比特位对应的ASID还没被分配,可以用0表示该比特位对应的ASID已被分配。当然,标识的表示形式也不限于0或1,也可以通过其他标识来表示已被分配或没被分配这两种状态。
例如:计算机***中有六万个ASID,则全局位图上就有六万个比特位,六万个ASID与六万个比特位之间一一对应,每个比特位会对应一个ASID。如图8所示,在全局位图上,ASID无论是分配给普通业务的进程还是分配给关键业务的进程,只要ASID被分配,则全局位图上,该ASID对应的比特位都由0修改为1。
这样,在全局ASID资源池中的第一ASID耗尽后,全局位图上的比特位可能都是1,这样就可以通过复制预留位图的方式,将预留位图上是1的比特位对应的ASID保留,全局位图上其他比特位对应的ASID都是需要更新的第一ASID。以世代迭代的方式更新第一ASID时,还需要将全局位图上除预留位图上对应为1的比特位保留外,其他是1的比特位都重置为0。
根据预留位图和全局位图更新第一ASID的过程可以参阅图9进行理解。如图9所示,重置前的全局位图上每个比特位的标识都为1,则表示全局ASID资源池中的ASID被耗尽,需要更新ASID,这时,需要结合预留位图,确定出已被预留的ASID为00101和00111,然后确定其他比特位对应的ASID都需要执行世代迭代,并且需要重置全局位图上执行了迭代的ASID的比特位,将1重置为0,也就得到了图9中的重置后的全局位图。
本申请实施例中,这种通过预留位图的方式来记录对已分配给第二处理核的进程的第二ASID的预留状态,可以有效防止第二ASID被重新分配。
本申请实施例中,为了控制隔离核对ASID的使用数量,还设置了水线,该水线用于表示为第二处理核所预留的第二ASID的最大数量。本申请实施例通过水线控制,还可以进一步减少刷新隔离核中TLB的次数。
本申请实施例中,已分配的第二ASID的数量超过水线后,才考虑是否迭代更新第二ASID,而且需要第一ASID也耗尽后,才会随着全局ASID的迭代更新而更新已分配的第二ASID。
也就是说,当ASID资源池中还包括未分配的ASID,且已分配给第二处理核所运行的进程的第二ASID的数量超过水线,则从未分配的ASID中为第二处理核所运行的进程分配第二ASID,并将分配给第二处理核所运行的进程的第二ASID在预留位图上的标识位由未预留状态修改为已预留状态,水线用于表示为第二处理核所预留的第二ASID的最大数量。
或者,当ASID资源池中不包括未分配的ASID,且已分配给第二处理核所运行的进程的第二ASID的数量超过水线,则更新ASID资源池中的所有ASID,并将全局位图上表示所有ASID状态的标识由已分配状态修改为未分配状态,以及将预留位图上的标识由已预留状态修改为未预留状态,水线用于表示为第二处理核所预留的第二ASID的最大数量。
本申请实施例中,可以将水线理解为是触发刷新第二处理核中TLB的一个条件,只有当所分配的第二ASID的数量超过水线,且全局ASID资源池中没有可以分配的ASID,才会触发刷新第二处理核中的TLB,只要全局ASID资源池中的ASID还没耗尽,都不会触发刷新第二处理核中的TLB,这样,可以尽量减少刷新第二处理核中TLB的次数,降低第二处理核所运行的关键业务的时延。
上述过程可以参阅图10进行理解。如图10所示,本申请实施例提供的资源管理的另一实施例包括:
201.隔离核所运行的进程向全局ASID资源池申请ASID。
202.确定全局ASID资源池中的ASID是否耗尽,若耗尽,则执行步骤205,若未耗尽,则执行步骤203和204。
203.从全局ASID资源池中为隔离核所运行的进程申请ASID。
204.在预留位图中将分配给隔离核所运行的进程的ASID对应的比特位由0修改为1。
205.确定为隔离核所运行的进程分配的ASID是否超过水线,若超过水线,则执行步骤206和207,若未超过水线,则执行步骤208和209。
206.若隔离核所运行的进程分配的ASID超过水线,则更新全局ASID资源池,并重置全局位图。
207.刷新所有处理核中的TLB。
208.若隔离核所运行的进程分配的ASID未超过水线,则更新全局ASID资源池中的普通核所运行的普通进程所分配到的ASID,并重置全局位图中普通进程所分配到的ASID所对应的比特位,即将比特位上的1修改为0。
209.刷新普通核中的TLB。
本申请实施例中,只有当全局ASID资源池中没有可以分配的ASID,且隔离核所分配的ASID的数量超过水线,且才会触发刷新隔离核中的TLB,这样,有利于减少刷新隔离核中TLB的次数,降低隔离核所运行的关键业务的时延。
本申请实施例中,通过一个全局ASID资源池来管理ASID,一方面是不需要强制划分用于分配给第一处理核所运行的进程的ASID,以及用于分配给第二处理核所运行的进程的ASID,有利于提高ASID的利用率,另一方面也有利于适用进程迁移的场景,以及一个进程的多个线程分别运行在不同环境的场景,其中,进程迁移的场景包括进程从普通核迁移到隔离核的场景以及进程从隔离核迁移到普通核的场景。下面针对这几种场景分别进行介绍。
一、进程迁移的场景。
1.进程从普通核迁移到隔离核的场景。
如图11所示,进程1原来运行于普通环境的处理核1上,该进程1第一次运行时,计算机***为该进程1分配的ASID是ASID1,并在全局位图上,将对应该ASID1的比特位由0修改为1,因为该进程1是处理核1所运行的进行,即普通核所运行的进程,所以,预留位图上对应该ASID1的比特位没有变化,比特位的标识还是0。这种情况下,该进程1的上下文标识(context ID)可以包括ASID1的世代标识(GEN ID)和ASID1,本申请实施例中,在世代标识(GEN ID)中可以通过一个或多个比特位来设置隔离标识或非隔离标识,隔离标识表示该ASID1属于隔离分组,即第二ASID,非隔离标识表示该ASID1属于非隔离分组,即第一ASID。
该进程1的上下文标识可以参阅图12进行理解。如图12所示,在48位比特位中的一个或多个比特位来设置隔离标识或非隔离标识。以通过一个比特位来设置隔离标识或非隔离标识为例,若该比特位是0,表示该ASID1属于隔离分组,若该比特位是1,则表示ASID1属于非隔离分组。当然,也可以反过来,若该比特位是1,表示该ASID1属于隔离分组,若该比特位是0,则表示ASID1属于非隔离分组。本申请实施例中,因为进程1第一次运行在处理核1上,所以,该进程1的context ID中设置的是非隔离标识,如:用1来表示该ASID1属于非隔离分组。
当进程1由普通环境中的处理核1迁移到隔离环境中的处理核(x+1)上运行,可以获取该进程1的context ID,即可以获得ASID1的世代标识(GEN ID),ASID1,以及ASID1属于非隔离分组。因为该进程运行在隔离环境的处理核(x+1)后,若不将该ASID1预留起来,那么该ASID1就会随着第一ASID的更新而被更新,这样,会影响隔离环境中关键业务的时延,所以,当确定该进程1的上下文标识中包括非隔离标识,则将非隔离标识修改为隔离标识,并将上下文标识中所包含的ASID1在预留位图中的标识由未预留状态修改为已预留状态。如图11所示的,将进程1迁移后的预留位图中对应ASID1的比特位由0修改为1。
2.进程从隔离核迁移到普通核的场景。
以图11中的进程3为例,进程3原来运行于隔离环境的处理核(x+2)上,该进程3第一次运行时,计算机***为该进程3分配的ASID是ASID2,并在全局位图上,将对应该ASID2的比特位由0修改为1,在预留位图上,将对应该ASID2的比特位由0修改为1。若进程3从隔离环境迁移到普通环境场景,即使不将预留位图中的比特位从1修改为0,也不会影响隔离核中的TLB,所以可以不对ASID2在预留位图中的比特位做处理。
二、一个进程的多个线程分别运行在不同环境的场景。
当一个进程第一次运行时所分配的ASID是第一ASID,即普通业务的进程的ASID,一个进程无论有多少个线程,每个线程的ASID都是相同的,都是为该进程所分配的ASID。那么该进程的上下文中就会包含非隔离标识。而进程运行一段时间后,可能有多个线程在运行,有的线程还运行在普通环境,而有的线程在隔离环境中运行。这种情况下,运行在隔离环境的处理核上的线程的上下文中就会包含非隔离标识,为了避免全局ASID资源池中第一ASID更新影响隔离核中的TLB,可以采用上述进程迁移的方案来管理该多线程的进程的ASID。
由以上可知,本申请实施例提供的资源管理方案更能灵活适用各种动态变化的场景。
另外,通过对进程上下文标识中隔离标识或非隔离标识的判断,可以通过一次原子操作就完成了对进程迁移,进程跨环境运行以及进程包括多线程场景中ASID的管理,不需要多次使用管理ASID资源池的锁,提高了计算机***的性能。
本申请的工程人员在研发过程中,将本申请的方案应用在物理机和虚拟机上,通过测试时延抖动的测试套(Cyclictest)测试本申请的时延以及现有技术(每次ASID资源池都执行全局更新,刷新所有处理核的TLB)的时延,得出如下表1所示的数据。
表1:实验数据
物理机上使用的时延 | 虚拟机上使用的时延 | |
现有技术 | 18微秒(us) | 360微秒 |
本申请方案 | 4微秒 | 90微秒 |
由表1可见,本申请实施例提供的资源管理的方案,相对于现有技术的方案,物理机和虚拟机上的时延抖动都下降了很多。
以上介绍了资源管理的方法,下面结合附图介绍本申请实施例提供的资源管理的装置。
如图13所示,本申请实施例提供的资源管理的装置40的一实施例包括:第一处理核401和处于隔离环境的第二处理核402,以及第一处理单元403、第二处理单元404和第三处理单元405。
第一处理单元403,用于从地址空间标识符ASID资源池中为第一处理核401所运行的进程分配第一ASID,ASID资源池中包括多个第一ASID。该第一处理单元403用于执行上述方法实施例中的步骤101。
第二处理单元404,用于为第二处理核402所运行的进程分配第二ASID。该第二处理单元404用于执行上述方法实施例中的步骤102。
第三处理单元405,用于当ASID资源池中的第一ASID耗尽,则以ASID世代迭代的方式只更新ASID资源池中的第一ASID,并无效掉已分配给第一处理核401所运行的进程的第一ASID,以及刷新第一处理核401中的地址转换缓冲区TLB。
本申请实施例中,当资源池中的第一ASID耗尽后,只更新分配给第一处理核所运行的进程的第一ASID,并不更新已分配给第二处理核所运行的进程的第二ASID,也只刷新第一处理核中的TLB,并不刷新第二处理核中的TLB,这样第二处理核的TLB中会存储关键业务的进程的TLB entry,当关键业务的进程要访问相应的物理地址时,可以通过查询第二处理核的TLB直接查询到相应的物理地址,而不需要通过页表查找对应的物理地址,从而加快了物理地址的访问速度,降低了关键业务的时延。
可选地,第二处理单元404,用于从另一ASID资源池中为第二处理核所运行的进程分配第二ASID,另一ASID资源池包括多个第二ASID。
可选地,第二处理单元404,用于从ASID资源池中为第二处理核所运行的进程分配第二ASID,ASID资源池中包括至少一个第二ASID;保存已分配的第二ASID的预留信息,预留信息指示已分配的第二ASID被预留。
第三处理单元405,用于根据已分配的第二ASID的预留信息,确定ASID资源池中的第一ASID,并以ASID世代迭代的方式更新第一ASID。
可选地,第二处理单元404,用于在预留位图上将已分配的第二ASID对应的标识位上的标识由未预留状态修改为已预留状态,预留位图用于记录ASID资源池中每个ASID的预留状态。
可选地,第三处理单元405用于:根据预留位图上的对已分配的第二ASID的已预留状态,以及全局位图,确定需要执行世代迭代的第一ASID,全局位图用于记录ASID资源池中的ASID的分配状态;以ASID世代迭代的方式更新ASID资源池中的第一ASID,并将全局位图上表示第一ASID状态的标识由已分配状态修改为未分配状态。
可选地,第三处理单元405,还用于当ASID资源池中还包括未分配的ASID,且已分配给第二处理核所运行的进程的第二ASID的数量超过水线,则从未分配的ASID中为第二处理核所运行的进程分配第二ASID,并将分配给第二处理核所运行的进程的第二ASID在预留位图上的标识位由未预留状态修改为已预留状态,水线用于表示为第二处理核所预留的第二ASID的最大数量。
可选地,第三处理单元405,还用于当ASID资源池中不包括未分配的ASID,且已分配给第二处理核所运行的进程的第二ASID的数量超过水线,则更新ASID资源池中的所有ASID,并将全局位图上表示所有ASID状态的标识由已分配状态修改为未分配状态,以及将预留位图上的标识由已预留状态修改为未预留状态,水线用于表示为第二处理核所预留的第二ASID的最大数量。
可选地,第三处理单元405还用于:获取第二处理核所运行的进程的上下文标识;若进程的上下文标识包括非隔离标识,则将非隔离标识修改为隔离标识,并将上下文标识中所包含的ASID在预留位图中的标识由未预留状态修改为已预留状态。
以上所描述的资源管理的装置可以参阅前面资源管理的方法的相应内容进行理解,此处不在重复赘述。
图14所示,为本申请的实施例提供的计算机设备50的一种可能的逻辑结构示意图。计算机设备50包括:处理器501、内存管理单元502、物理内存503以及总线504。处理器501、内存管理单元502以及物理内存503通过总线504相互连接。处理器501中可以包括多个处理核,多个处理核可以采用隔离技术划分为普通核和隔离核,普通核用于运行普通业务的进程,隔离核用于运行隔离业务的进程。
在本申请的实施例中,处理器501用于对计算机设备50的动作进行控制管理,例如,处理器501用于执行图1至图12的方法实施例中的步骤。内存管理单元502用于管理物理内存。物理内存503,用于存储动态库的程序代码和数据。当然,本申请实施例提供的计算机设备50还包括其他器件,如:通信接口、磁盘等,在图14中未一一示出。
其中,处理器501可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器501也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线504可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的处理器执行该计算机执行指令时,设备执行上述图1至图10中计算机***所执行的步骤。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;当设备的处理器执行该计算机执行指令时,设备执行上述图1至图12中计算机***所执行的步骤。
在本申请的另一实施例中,还提供一种芯片***,该芯片***包括处理器,该处理器用于支持资源管理的装置实现上述图1至图12中计算机***所执行的步骤。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存数据写入的装置必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此。
Claims (20)
1.一种资源管理的方法,所述方法应用于计算机***,所述计算机***包括第一处理核和处于隔离环境的第二处理核,其特征在于,所述方法包括:
从地址空间标识符ASID资源池中为所述第一处理核所运行的进程分配第一ASID,所述ASID资源池中包括多个所述第一ASID;
为所述第二处理核所运行的进程分配第二ASID;
当所述ASID资源池中的第一ASID耗尽,则以所述ASID世代迭代的方式只更新所述ASID资源池中的第一ASID,并无效掉已分配给所述第一处理核所运行的进程的第一ASID,以及刷新所述第一处理核中的地址转换缓冲区TLB。
2.根据权利要求1所述的方法,其特征在于,所述为所述第二处理核所运行的进程分配第二ASID,包括:
从另一ASID资源池中为所述第二处理核所运行的进程分配第二ASID,所述另一ASID资源池包括多个所述第二ASID。
3.根据权利要求1所述的方法,其特征在于,所述为所述第二处理核所运行的进程分配第二ASID,包括:
从所述ASID资源池中为所述第二处理核所运行的进程分配第二ASID,所述ASID资源池中包括至少一个所述第二ASID;
保存已分配的第二ASID的预留信息,所述预留信息指示所述已分配的第二ASID被预留;
对应地,所述以所述ASID世代迭代的方式更新所述ASID资源池中的第一ASID,包括:
根据所述已分配的第二ASID的预留信息,确定所述ASID资源池中的第一ASID,并以所述ASID世代迭代的方式更新所述第一ASID。
4.根据权利要求3所述的方法,其特征在于,所述保存已分配的第二ASID的预留信息,所述预留信息指示所述已分配的第二ASID被预留,包括:
在预留位图上将已分配的第二ASID对应的标识位上的标识由未预留状态修改为已预留状态,所述预留位图用于记录所述ASID资源池中每个ASID的预留状态。
5.根据权利要求4所述的方法,其特征在于,所述根据所述已分配的第二ASID的预留信息,确定所述ASID资源池中的第一ASID,并以所述ASID世代迭代的方式更新所述第一ASID,包括:
根据所述预留位图上的对已分配的所述第二ASID的已预留状态,以及全局位图,确定需要执行世代迭代的第一ASID,所述全局位图用于记录所述ASID资源池中的ASID的分配状态;
以所述ASID世代迭代的方式更新所述ASID资源池中的第一ASID,并将所述全局位图上表示所述第一ASID状态的标识由已分配状态修改为未分配状态。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
当所述ASID资源池中还包括未分配的ASID,且已分配给所述第二处理核所运行的进程的第二ASID的数量超过水线,则从所述未分配的ASID中为所述第二处理核所运行的进程分配第二ASID,并将分配给所述第二处理核所运行的进程的第二ASID在所述预留位图上的标识位由未预留状态修改为已预留状态,所述水线用于表示为所述第二处理核所预留的第二ASID的最大数量。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述ASID资源池中不包括未分配的ASID,且已分配给所述第二处理核所运行的进程的第二ASID的数量超过水线,则更新所述ASID资源池中的所有ASID,并将所述全局位图上表示所有ASID状态的标识由已分配状态修改为未分配状态,以及将所述预留位图上的标识由已预留状态修改为未预留状态,所述水线用于表示为所述第二处理核所预留的第二ASID的最大数量。
8.根据权利要求4-7任一项所述的方法,其特征在于,所述方法还包括:
获取所述第二处理核所运行的进程的上下文标识;
若所述进程的上下文标识包括非隔离标识,则将所述非隔离标识修改为隔离标识,并将所述上下文标识中所包含的ASID在所述预留位图中的标识由未预留状态修改为已预留状态。
9.一种资源管理的装置,包括第一处理核和处于隔离环境的第二处理核,其特征在于,所述装置还包括:
第一处理单元,用于从地址空间标识符ASID资源池中为所述第一处理核所运行的进程分配第一ASID,所述ASID资源池中包括多个所述第一ASID;
第二处理单元,用于为所述第二处理核所运行的进程分配第二ASID;
第三处理单元,用于当所述ASID资源池中的第一ASID耗尽,则以所述ASID世代迭代的方式只更新所述ASID资源池中的第一ASID,并无效掉已分配给所述第一处理核所运行的进程的第一ASID,以及刷新所述第一处理核中的地址转换缓冲区TLB。
10.根据权利要求9所述的装置,其特征在于,
所述第二处理单元,用于从另一ASID资源池中为所述第二处理核所运行的进程分配第二ASID,所述另一ASID资源池包括多个所述第二ASID。
11.根据权利要求9所述的装置,其特征在于,
所述第二处理单元,用于从所述ASID资源池中为所述第二处理核所运行的进程分配第二ASID,所述ASID资源池中包括至少一个所述第二ASID;保存已分配的第二ASID的预留信息,所述预留信息指示所述已分配的第二ASID被预留;
所述第三处理单元,用于根据所述已分配的第二ASID的预留信息,确定所述ASID资源池中的第一ASID,并以所述ASID世代迭代的方式更新所述第一ASID。
12.根据权利要求11所述的装置,其特征在于,
所述第二处理单元,用于在预留位图上将已分配的第二ASID对应的标识位上的标识由未预留状态修改为已预留状态,所述预留位图用于记录所述ASID资源池中每个ASID的预留状态。
13.根据权利要求12所述的装置,其特征在于,
所述第三处理单元用于:
根据所述预留位图上的对已分配的所述第二ASID的已预留状态,以及全局位图,确定需要执行世代迭代的第一ASID,所述全局位图用于记录所述ASID资源池中的ASID的分配状态;
以所述ASID世代迭代的方式更新所述ASID资源池中的第一ASID,并将所述全局位图上表示所述第一ASID状态的标识由已分配状态修改为未分配状态。
14.根据权利要求12或13所述的装置,其特征在于,
所述第三处理单元,还用于当所述ASID资源池中还包括未分配的ASID,且已分配给所述第二处理核所运行的进程的第二ASID的数量超过水线,则从所述未分配的ASID中为所述第二处理核所运行的进程分配第二ASID,并将分配给所述第二处理核所运行的进程的第二ASID在所述预留位图上的标识位由未预留状态修改为已预留状态,所述水线用于表示为所述第二处理核所预留的第二ASID的最大数量。
15.根据权利要求13所述的装置,其特征在于,
所述第三处理单元,还用于当所述ASID资源池中不包括未分配的ASID,且已分配给所述第二处理核所运行的进程的第二ASID的数量超过水线,则更新所述ASID资源池中的所有ASID,并将所述全局位图上表示所有ASID状态的标识由已分配状态修改为未分配状态,以及将所述预留位图上的标识由已预留状态修改为未预留状态,所述水线用于表示为所述第二处理核所预留的第二ASID的最大数量。
16.根据权利要求13所述的装置,其特征在于,
所述第三处理单元还用于:
获取所述第二处理核所运行的进程的上下文标识;
若所述进程的上下文标识包括非隔离标识,则将所述非隔离标识修改为隔离标识,并将所述上下文标识中所包含的ASID在所述预留位图中的标识由未预留状态修改为已预留状态。
17.一种计算设备,其特征在于,包括一个或多个处理器和存储有计算机程序的计算机可读存储介质;
所述计算机程序被所述一个或多个处理器执行时实现如权利要求1-8任一项所述的方法。
18.一种芯片***,其特征在于,包括一个或多个处理器,所述一个或多个处理器被调用用于执行如权利要求1-8任一项所述的方法。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被一个或多个处理器执行时实现如权利要求1-8任一项所述的方法。
20.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序当被一个或多个处理器执行时用于实现如权利要求1-8任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015561.5A CN115729694A (zh) | 2021-08-31 | 2021-08-31 | 一种资源管理的方法及相应装置 |
EP22863312.9A EP4386548A1 (en) | 2021-08-31 | 2022-08-26 | Resource management method and corresponding device |
PCT/CN2022/114995 WO2023030174A1 (zh) | 2021-08-31 | 2022-08-26 | 一种资源管理的方法及相应装置 |
US18/590,431 US20240202031A1 (en) | 2021-08-31 | 2024-02-28 | Resource Management Method and Corresponding Apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015561.5A CN115729694A (zh) | 2021-08-31 | 2021-08-31 | 一种资源管理的方法及相应装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729694A true CN115729694A (zh) | 2023-03-03 |
Family
ID=85292169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111015561.5A Pending CN115729694A (zh) | 2021-08-31 | 2021-08-31 | 一种资源管理的方法及相应装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240202031A1 (zh) |
EP (1) | EP4386548A1 (zh) |
CN (1) | CN115729694A (zh) |
WO (1) | WO2023030174A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10169091B2 (en) * | 2012-10-25 | 2019-01-01 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
CN107645407B (zh) * | 2014-12-08 | 2021-02-12 | 华为技术有限公司 | 一种适配QoS的方法和装置 |
WO2018176393A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Techniques for virtual machine transfer and resource management |
-
2021
- 2021-08-31 CN CN202111015561.5A patent/CN115729694A/zh active Pending
-
2022
- 2022-08-26 EP EP22863312.9A patent/EP4386548A1/en active Pending
- 2022-08-26 WO PCT/CN2022/114995 patent/WO2023030174A1/zh unknown
-
2024
- 2024-02-28 US US18/590,431 patent/US20240202031A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023030174A1 (zh) | 2023-03-09 |
EP4386548A1 (en) | 2024-06-19 |
US20240202031A1 (en) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552337B2 (en) | Memory management and device | |
CN108804350B (zh) | 一种内存访问方法及计算机*** | |
US8453015B2 (en) | Memory allocation for crash dump | |
US7653799B2 (en) | Method and apparatus for managing memory for dynamic promotion of virtual memory page sizes | |
US7673105B2 (en) | Managing memory pages | |
KR20120068454A (ko) | 원격 페이지 폴트 처리 장치 및 그 방법 | |
US8799611B2 (en) | Managing allocation of memory pages | |
US8793444B2 (en) | Managing large page memory pools | |
US20170123735A1 (en) | Reducing page invalidation broadcasts | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN114595164B (zh) | 在虚拟化平台中管理tlb高速缓存的方法和装置 | |
US8055876B2 (en) | Selectively mark free frames as unused for cooperative memory over-commitment | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN115016894A (zh) | 一种线程的内存访问方法、装置、设备及存储介质 | |
CN114556309A (zh) | 内存空间的分配方法、装置及存储介质 | |
CN110209354B (zh) | 用于处理数据的方法、装置、设备和介质 | |
WO2016131175A1 (zh) | 多核***中数据访问者目录的访问方法及设备 | |
US9772776B2 (en) | Per-memory group swap device | |
CN117555816A (zh) | 内存回收方法、装置、计算设备及计算机存储介质 | |
CN112330229A (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
US20130198455A1 (en) | Cache memory garbage collector | |
CN115729694A (zh) | 一种资源管理的方法及相应装置 | |
CN100363905C (zh) | 一种基于绝对座标体系的操作***客体重用测试方法 | |
CN112947863A (zh) | 一种飞腾服务器平台下存储空间合并成的方法 | |
US20120011330A1 (en) | Memory management apparatus, memory management method, program therefor |
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 |