地址空间的更新方法、装置及设备与流程
未命名
07-27
阅读:98
评论:0
1.本技术涉及计算机领域,尤其涉及一种地址空间的更新方法、装置及设备。
背景技术:
2.目前,在电子设备的存储管理中,引入了tlb(translation lookaside buffer,转换旁视缓冲器)缓存最近/经常使用的进程的页表项,即该页表项包含进程待访问的虚拟地址到物理地址的映射关系。并且,为了进一步提升tlb的性能,在tlb中引入了与进程一一对应的地址空间标识符(asid,address space id),且该地址空间标识符中包括软件地址空间标识符与硬件地址空间标识符,且硬件地址空间标识符的取值范围受限制。
3.相关技术中,在进行进程切换时,若当前的tlb中的硬件地址空间标识的取值已满,即tlb所支持的所有硬件地址空间标识符的取值均被分配至其余各个进程,则需要将当前tlb中所存储的各个进程对应数据全部清空,以使待切换的进程对应的数据可以存储至tlb中,其中,进程对应的数据包括的该进程的虚拟地址、物理地址以及asid。
4.然而,当采用上述方式进行tlb清空之后,tlb中清空之前所存储的数据对应的多个进程再次切回时,此时tlb则无法为这些进程提供虚拟地址到物理地址的转换服务,使得进程需要从内存中获取进程地址转换信息,由于从内存进行地址转换信息查询的速度相较于从tlb中进行地址转换信息的查询更慢,因而进而导致地址转换效率变低。
技术实现要素:
5.本技术提供一种地址空间的更新方法、装置及设备,用以解决相关技术中,在进行进程切换时地址转换效率较低的问题。
6.第一方面,本技术提供一种地址空间的更新方法,所述方法包括:
7.接收第一进程的切换指令,所述切换指令包括第一软件地址空间标识符;
8.若确定所述第一软件地址空间标识符不为空、且不位于当前的预设取值范围中,则更新所述第一软件地址空间标识符;所述预设取值范围中包括转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符;
9.确定所述第一进程对应的第一硬件地址空间标识符;
10.清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;
11.依据更新后的所述第一软件地址空间标识符,更新所述预设取值范围。
12.在一种可能的实现方式中,所述清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址,包括:
13.获取并保存所述转换旁视缓冲器对应的寄存器中当前正在运行的至少一个第二进程对应的第二硬件地址空间标识符;
14.将所述第一硬件地址空间标识符写入所述寄存器;
15.依据所述寄存器中写入的所述第一硬件地址空间标识符,清空所述转换旁视缓冲
器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;
16.将所述至少一个第二进程对应的第二硬件地址空间标识符写入所述寄存器。
17.在一种可能的实现方式中,所述确定所述第一进程对应的第一硬件地址空间标识符,包括:
18.依据所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,确定所述第一进程对应的第一硬件地址空间标识符。
19.在一种可能的实现方式中,所述切换指令中包括所述第一进程待转换的虚拟地址;所述清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,所述方法还包括:
20.依据所述待转换的虚拟地址,从物理内存中获取所述待转换的虚拟地址对应的物理地址,并将所述待转换的虚拟地址以及所述物理地址存入所述转换旁视缓冲器中所述第一硬件地址空间标识符对应的存储空间中。
21.在一种可能的实现方式中,所述接收第一进程的切换指令之后,所述方法还包括:
22.若确定所述第一软件地址空间标识符不为空,且位于所述当前的预设取值范围,则直接依据所述转换旁视缓冲器进行地址转换处理。
23.在一种可能的实现方式中,所述接收第一进程的切换指令之后,所述方法还包括:
24.若确定所述第一软件地址空间标识符为空,则依据已分配的软件地址空间标识符为所述第一软件地址空间标识符赋值,得到赋值后的第一软件地址空间标识符;
25.若所述赋值后的第一软件地址空间标识符位于所述当前的预设取值范围,则确定所述第一进程对应的第一硬件地址空间标识符,并将所述第一进程对应的虚拟地址以及物理地址存储至所述转换旁视缓冲器中;
26.若所述赋值后的第一软件地址空间标识符不位于所述当前的预设取值范围,则执行确定所述第一进程对应的第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址,依据所述第一软件地址空间标识符,更新所述预设取值范围。
27.第二方面,本技术提供一种地址空间的更新装置,所述装置包括:
28.接收单元,用于接收第一进程的切换指令,所述切换指令包括第一软件地址空间标识;
29.第一确定单元,用于若确定所述第一软件地址空间标识符不位于当前的预设取值范围中,则更新所述第一软件地址空间标识符;所述预设取值范围中包括转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符;
30.第二确定单元,用于确定所述第一进程对应的第一硬件地址空间标识符;
31.清空单元,用于清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;
32.更新单元,用于依据更新后的所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,更新所述预设取值范围。
33.在一种可能的实现方式中,所述清空单元,包括:
34.获取模块,用于获取并保存所述转换旁视缓冲器对应的寄存器中当前正在运行的至少一个第二进程对应的第二硬件地址空间标识符;
35.第一写入模块,用于将所述第一硬件地址空间标识符写入所述寄存器;
36.清空模块,用于依据所述寄存器中写入的所述第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;
37.第二写入模块,用于在所述清空模块依据所述寄存器中写入的所述第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,将所述至少一个第二进程对应的第二硬件地址空间标识符写入所述寄存器。
38.在一种可能的实现方式中,第二确定单元,具体用于:
39.依据所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,确定所述第一进程对应的第一硬件地址空间标识符。
40.在一种可能的实现方式中,所述切换指令中包括所述第一进程待转换的虚拟地址;所述装置还包括:
41.存储单元,用于在所述清空单元清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,依据所述待转换的虚拟地址,从物理内存中获取所述待转换的虚拟地址对应的物理地址,并将所述待转换的虚拟地址以及所述物理地址存入所述转换旁视缓冲器中所述第一硬件地址空间标识符对应的存储空间中。
42.在一种可能的实现方式中,所述装置还包括:
43.第三确定单元,用于在所述接收单元接收第一进程的切换指令之后,若确定所述第一软件地址空间标识符不为空,且位于所述当前的预设取值范围,则直接依据所述转换旁视缓冲器进行地址转换处理。
44.在一种可能的实现方式中,所述装置还包括:
45.赋值单元,用于若确定所述第一软件地址空间标识符为空,则依据已分配的软件地址空间标识符为所述第一软件地址空间标识符赋值,得到赋值后的第一软件地址空间标识符;
46.第四确定单元,用于若所述赋值后的第一软件地址空间标识符位于所述当前的预设取值范围,则确定所述第一进程对应的第一硬件地址空间标识符,并将所述第一进程对应的虚拟地址以及物理地址存储至所述转换旁视缓冲器中;
47.第五确定单元,用于若所述赋值后的第一软件地址空间标识符不位于所述当前的预设取值范围,则执行确定所述第一进程对应的第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址,依据所述第一软件地址空间标识符,更新所述预设取值范围。
48.第三方面,本技术提供一种电子设备,包括:存储器,处理器;
49.存储器;用于存储所述处理器可执行指令的存储器;
50.其中,所述处理器,用于根据所述可执行指令执行如第一方面任一项所述的方法。
51.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面任一项所述的方法。
52.第五方面,本技术一种计算机程序产品,所述计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项所述的方法。
53.本技术提供的地址空间的更新方法、装置及设备,所述方法包括:接收第一进程的切换指令;若确定所述第一软件地址空间标识符不为空、且不位于当前的预设取值范围中,则为所述第一进程分配对应的第一软件地址空间标识符;确定所述第一进程对应的第一硬件地址空间标识符;清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;依据所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,更新所述预设取值范围。即,在进程切换时,若确定进程对应的软件地址空间标识符不位于当前的预设取值范围中,则表明此时转换旁视缓冲器中已满,后续仅需要将分配给该进程的硬件地址空间标识符在转换旁视缓冲器中对应的虚拟地址以及物理地址清空即可,而不必对转换旁视缓冲器中的全部数据进行清空处理。通过本实施例提供的更新方式,可以降低进程切换过程中无法命中转换旁视缓冲器的概率,提高转换旁视缓冲器的地址转换效率。
附图说明
54.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
55.图1为本技术提供的一种地址转换的流程示意图;
56.图2为本技术实施例提供的一种地址空间的更新方法的流程示意图;
57.图3为本技术实施例提供的一种转换旁视缓冲器的更新示意图;
58.图4为本技术实施例提供的又一种转换旁视缓冲器的更新示意图;
59.图5为本技术实施例提供的一种转换旁视缓冲器在执行清空操作的流程示意图;
60.图6为本技术实施例提供一种地址空间的更新装置的结构示意图;
61.图7为本技术实施例提供又一种地址空间的更新装置的结构示意图;
62.图8为本技术实施例中提供的一种电子设备的结构示意图。
63.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
64.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与本技术的一些方面相一致的装置和方法的例子。
65.在电子设备中,为了避免进程在进行地址转换操作时需要不断的访问内存所导致的时间较长和系统性能较低的问题,因此,在电子设备中引入了tlb(translation lookaside buffer,转换旁视缓冲器)。tlb中所存储的地址转换关系可以看作是物理内存中的地址转换关系的子集。当进程需要进行地址转换时,首先可以通过访问tlb进行地址转换,若是在tlb中未能查找到时,再去通过访问物理内存的方式进行查找,进而减少访问内存的次数,减少地址转换时间。如图1所示,图1为本技术提供的一种地址转换的流程示意图。图中,当需要进行地址转换时,通过获取的待转换的虚拟地址等标识去tlb中匹配,若在
tlb中匹配成功,则可以依据获取到的物理地址去物理内存中获取对应的数据。若未匹配成功,则去物理内存中的页表中去逐级匹配,若匹配成功,则可以依据得到的物理地址获取相应的数据(例如,从内存中或者磁盘中)。
66.目前,由于不同进程间的虚拟地址可能为相同的,但是不同进程在相同的虚拟地址下对应的物理地址却不同,因此为了避免进程切换后无法匹配到正确的物理地址,在tlb中引入的asid(地址空间标识符),每一个进程都对应有自己的asid,进而在进程依据tlb做地址转换操作时,可以通过该进程的asid以及虚拟地址,来确定该进程的虚拟地址所对应的物理地址。即,在进行进程切换时,tlb中原有的进程的数据不会影响到新切入的进程的地址转换。
67.进一步地,由于目前asid受电子设备中处理器的硬件限制,asid的编码空间受限制为8bit或者16bit,即仅支持256个或者65535个进程进行asid的编码分配。为了解决asid编码空间受限的问题,电子设备中对asid进行了软件扩展,扩展后的asid中一部分对应原先受硬件限制的asid(本技术后续实施例中称为硬件地址空间标识符);另外一部分被称为asid generation,从0开始,每当硬件地址空间标识符溢出后,asid generation会累加1,同时会将tlb中存储的各个进程的数据全部清空后为各个切换的进程重新分配硬件地址空间标识符,即当tlb中的硬件地址空间标识符溢出后,会清空整个tlb。
68.然而,当采用上述方式进行tlb清空之后,当原先tlb中所存储的数据对应的多个进程再次切换需要执行时,此时tlb则无法为这些进程提供虚拟地址到物理地址的转换服务,使得进程需要从内存中查询进程地址转换信息,进而导致地址转换效率变低。
69.本技术提供的地址空间的更新方法、装置及设备,用以解决上述技术问题。
70.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
71.图2为本技术实施例提供的一种地址空间的更新方法的流程示意图,如图所示,该方法包括以下步骤:
72.s101、接收第一进程的切换指令,切换指令包括第一软件地址空间标识符。
73.示例性地,由于电子设备中的处理器在某一时间片时,仅允许一个进程执行,当需要进程切换时,可以通过发送进程切换指令进行进程切换,其中,时间片指处理器为每一进程分配的处理器运行时间。当需要切换到第一进程时,此时接收第一进程的切换指令,进而表征当前电子设备需要执行第一进程。其中,第一软件地址空间标识符为当前电子设备中内核为第一进程分配的标识符,该软件地址空间标识符与硬件地址空间标识符不同,硬件地址空间标识符受电子设备中的硬件资源限制,限制在256或65536个范围内。而第一软件地址空间标识符为软件资源扩展,不会受到硬件资源的限制。软件地址空间标识符可用于表征已分配过软件地址空间标识符进程的申请次数,即,每当有进程申请一次,该软件地址空间标识符就累计加1。需要说明的是,切换指令中所包括的第一软件地址空间标识符为第一进程对应的进程描述符中获取得到的。若该第一进程之前未运行过,则该进程描述符中的第一软件地址空间标识符为空;若该第一进程之前运行过,则该进程描述符中的第一软件地址空间标识符为第一进程前次运行时电子设备中的处理器分配的,具体地,处理器在分配第一软件地址空间标识符时,采取将已分配的软件地址空间标识符中的最大值加1的
方式进行赋值,即将赋值后的软件地址空间标识符确定为第一软件地址空间标识符。举例来说,若进程1为电子设备中首个需要执行的进程时,则为进程1分配的第一软件地址空间标识符为1,进程1之后,若进程2需要切换执行时,则为进程2分配第一软件地址空间标识符2。
74.一个示例中,在实际电子设备的进程运行过程中,第一进程的切换指令可以为当前正在运行的第二进程发出的,此处不做具体限制。
75.s102、若确定第一软件地址空间标识符不为空,且不位于当前的预设取值范围中,则更新第一软件地址空间标识符;预设取值范围中包括转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符。
76.本技术实施例中,预设取值范围即为转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符所表征的范围;可选地,转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符为多个取值连续的标识符。
77.示例性地,由于第一软件地址空间标识符不为空,则表明该第一进程为并非首次执行的进程,并且由于该第一软件地址空间标识符不位于预设取值范围中,则表明该进程之前对应的硬件地址空间标识符已被其它进程占用,并且硬件地址空间标识符取值范围中的全部取值均已被分配至其它进程,因此需要为该第一进程重新分配第一软件地址空间标识符,并且替换转换旁视缓存器中当前已存储的进程。需要说明的是,在本技术中,当一个进程刚刚被创建时,此时该进程对应的软件地址空间标识符为空,之后,若需要切换执行该上述刚被创建的进程时,会为该进程的软件地址空间标识符赋值。当上述进程执行结束后,该进程会保留为其分配的软件地址空间标识符,直到再次切换执行该进程时,通过本实施例提供的方式确定是否需要执行更新软件地址空间标识符的操作。上述为软件地址空间标识符赋值,以及后续的更新操作均可由电子设备中的处理器执行。
78.在为切换的第一进程分配第一软件地址空间标识符时,可以依据已分配的软件地址空间标识符对应的最大值加1得到第一软件地址空间标识符。
79.例如,在为进程分配标识符之后,会将该进程对应的软件地址空间标识符存储至储存器a中,之后若存在进程需要分配标识符时,可以依据已存储的软件地址空间标识符确定当前待分配的软件地址空间标识符,并且为当前进程分配结束后,将储存器a储存的数据替换为该当前进程的软件地址空间标识符。
80.s103、确定第一进程对应的第一硬件地址空间标识符。
81.示例性地,在确定出第一进程对应的第一软件地址空间标识符后,继续确认该第一进程对应的第一硬件地址空间标识符。具体地,可以采用以下两种示例中所提供的方法确定第一进程对应的第一硬件地址的空间标识符。
82.一个示例中,在确定第一进程对应的第一硬件地址空间标识符时,此时,可以依据上次分配的硬件地址空间标识符以及硬件地址空间标识符的取值范围(例如,上述举例说明的256或者65536),确定第一进程对应的第一硬件地址空间标识符。需要说明的是,在为进程分配硬件地址空间标识符时,每一硬件地址空间标识符与进程之间的对应关系为一一对应的关系,且硬件地址空间标识符的取值范围时有限的。具体地,本示例中,在确定第一硬件地址空间标识符时,首先将上次未其余进程分配的硬件地址空间标识符进行加1处理,得到求和后的值。若求和后的值未超出其取值范围,则将该求和后的值作为第一硬件地址
空间标识符。若求和后的值超出其取值范围之后,还需要将该硬件地址空间标识符设置为其取值范围中的初始值。例如,为该第一进程分配完第一硬件地址空间标识符后,若又接收到了其余进程的切换指令,则第一进程分配的第一硬件地址空间标识符可作为其余进程的上次分配的硬件地址空间标识符,依据上述过程,可为其余进程分配硬件地址空间标识符。
83.一个示例中,在确定出第一软件地址空间标识符后,可以进一步依据第一软件地址空间标识符以及硬件地址空间标识符的取值范围(例如,上述举例说明的256或者65536),确定第一进程第一硬件地址空间标识符。举例来说,当进程刚刚创建且要被切入时,假设之前已经分配过256次软件地址空间标识符,则该进程可以设置的软件地址空间标识符可以设置为257,假设当前处理器硬件支持的硬件地址空间标识符为256(即硬件地址空间标识符的取值范围),则此时可以依据软件地址空间标识符257以及取值范围256,做除法取余数,得到余数为1,则确定出第一硬件标识符为1(此处,硬件地址标识符的初始值也为1)。又比如说余数为5,则此时确定出第一硬件标识符为5。
84.s104、清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址。
85.示例性地,由于通过步骤s102确定出当前硬件地址空间标识符取值范围中的全部取值均已被分配至其它进程,因此在为第一进程分配出第一软件地址空间标识符以及第一硬件地址空间标识符后,需要对该转换旁视缓冲器进行清空处理,并且本实施例在进行清空操作时,仅在tlb中查找与该第一进程的第一硬件地址空间标识符相同的硬件地址空间标识所对应的虚拟地址以及物理地址进行清空处理,同时,tlb中表项均不进行处理,以便在进行清空处理之后可以将第一进程对应的虚拟地址与物理地址存储至转换旁视缓冲器中清空后的区域中。
86.s105、依据更新后的第一软件地址空间标识符,更新预设取值范围。
87.示例性地,在清空处理之后,需要将被清空的进程对应的软件地址空间标识符从预设取值范围中删除,并将第一进程对应的软件地址空间标识符存入该预设取值范围中。
88.举例来说,假设本实施例中硬件所支持的硬件地址空间标识符的范围为256个,且软件地址空间标识符的初始取值为1,在电子设备初始化分配tlb时,此时,该tlb所支持的软件地址空间标识符为1-256。当tlb中的硬件地址标识符达到256时,此时若又有除256个进程以外的进程1需要切入时,首先由于进程1之前未切入过,进程1对应的软件地址空间标识符为空,此时处理器会为该进程1分配软件地址空间标识符257,之后会通过执行对tlb中的某一硬件地址空间标识符对应虚拟地址以及物理地址进行清空处理,若清空的数据对应的进程的软件地址空间标识符为1,则将预设取值范围修改为2-257。
89.举例来说,图3为本技术实施例提供的一种转换旁视缓冲器的更新示意图,如图3所示,tlb1为更新前的转换旁视缓冲器,tlb2为更新后的转换旁视缓冲器。在tlb表格中,存储有硬件地址空间标识符,以及该硬件地址空间标识符对应的虚拟地址以及物理地址。其中,一个硬件地址空间标识符对应1个进程。且该表格中的每一硬件地址空间标识符还对应有一个软件地址空间标识符,该软件地址空间标识符位于tlb表格之外,为软件扩展所得。假设电子设备所支持的硬件地址空间标识符的编码空间为8bit,即仅支持256个进程的分配,在初始设置转换旁视缓冲器时,允许访问转换旁视缓冲器的软件地址范围设置为[1,256](此处假设软件地址空间标识符的起始值为1),若硬件地址空间标识符中的0-255已经
全部一一分配至256个进程,当新创建的进程a需要进行进程切换时,此时为该进程a分配的软件地址空间标识符为257,且进程a对应地硬件地址空间标识符为0,则此时仅将tlb中硬件地址空间标识符为0的进程b对应的虚拟地址(图中用va1标识)以及物理地址(图中用pa1标识)清空(即,在转换旁视缓存器中清空掉了软件地址空间标识符为1的进程b地址转换关系),tlb中的其余进程对应的数据不做处理。后续该转换旁视缓冲器中硬件地址空间标识符为1对应的地址转换关系切换为软件地址空间标识符为257的地址转换关系,并且允许访问转换旁视缓冲器的预设取值范围设置为[2,257]。
[0090]
后续,若软件地址空间标识符为255的进程c切回时,由于其位于预设取值范围[2,257]中,则此时,可以依据该进程c对应的硬件地址空间标识符255(即可以为对软件地址空间标识符以及硬件地址空间标识符取值取余数的值)去转换旁视缓冲器中进行地址转换。
[0091]
图4为本技术实施例提供的又一种转换旁视缓冲器的更新示意图。图中tlb3为进程a运行时的tlb表,并且,在进程a运行时,将进程a对应的虚拟地址(va257)以及物理地址(pa257)写入该tlb表中。在进程a运行时,若软件地址空间标识符为1的进程b切回,由于1不属于预设取值范围[2,257]中,即该软件地址空间标识符为1原先对应的硬件地址空间标识符0在转换旁视缓冲器中对应的地址转化关系并非软件地址空间标识符为1的进程b的地址转换关系,则此时需要对该进程b重新赋予软件地址空间标识符258,进程b对应的硬件地址空间标识符为1,清空转换旁视缓冲器中硬件地址空间标识符为1对应的地址转化关系,后续可存入进程b对应的地址转换关系后,将预设取值范围设置为[3,258],图中tlb4为更新后的表。
[0092]
本实施例中,在对转换旁视缓冲器中的硬件地址空间标识符都已经被分配各个进程时,若此时需要进程切换,且该进程对应的地址转换关系未存储在该转换旁视缓冲器中,则仅需要将分配给该进程的硬件地址空间标识符在转换旁视缓冲器中对应的虚拟地址以及物理地址清空即可,而不必对转换旁视缓冲器中的全部数据进行清空处理。并且,在进程切换与转换旁视缓冲器进行匹配时,若该进程执行过切换操作,则可以将进程对应的软件地址空间标识符与预设取值范围进行匹配,若匹配成功,则可以表明转换旁视缓冲器存储有该进程对应的地址转换关系,若匹配不成功,则表明转换旁视缓冲器没有存储该进程对应的地址转换关系,则需要为该进程重新分配软件地址空间标识符。进而当原先存储在转换旁视缓冲器中的进程切回执行时,仅有之前被清空的进程无法通过该转换旁视缓冲器进行地址转换处理,而其余进程切回时,均可以在转换旁视缓冲器中查找到对应的物理地址,进而通过本实施例提供的更新方式,可以降低进程切换过程中无法命中转换旁视缓冲器的概率,提高转换旁视缓冲器的地址转换效率。
[0093]
在一些实施例中,图5为本技术实施例提供的一种转换旁视缓冲器在执行清空操作的流程示意图。即在执行步骤s104时,可以通过以下步骤实现:
[0094]
s201、获取并保存转换旁视缓冲器对应的寄存器中当前正在运行的第二进程的第二硬件地址空间标识符。
[0095]
s202、将第一硬件地址空间标识符写入寄存器。
[0096]
s203、依据寄存器中写入的第一硬件地址空间标识符,清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址。
[0097]
示例性地,在实际应用中,转换旁视缓冲器还对应设置有寄存器,在需要对转换旁
视缓冲器进行访问时,需要在该寄存器中存储有当前访问该转换旁视缓冲器的进程的硬件地址空间标识符(此处的访问包括对查找操作以及清空操作)。
[0098]
当进程切换且需要进行清空处理时,可以通过调用转换旁视缓冲器所对应的清空函数(如local_flush_tlb_index),进行清空处理。在运行该函数时,首先从寄存器(一般用entryhi作为标识)中获取当前正在运行的进程对应的硬件地址空间标识符(即,第二进程的第二硬件地址空间标识符),并且将该硬件地址空间标识符存储至某一存储空间或者寄存器,之后向寄存器中写入需要进行清空处理的硬件地址空间标识符(即,本技术实施例中的第一进程所对应的第一硬件地址空间标识符)写入该entryhi寄存器中后,则可以通过调用函数依据该寄存器中的硬件地址空间标识符在转换旁视缓冲器中删除掉该转换旁视缓冲器中该硬件地址空间标识符所对应的虚拟地址以及物理地址。
[0099]
s204、将至少一个第二进程对应的第二硬件地址空间标识符写入寄存器。
[0100]
在一些示例中,在完成清空处理之后,还需要将已保存至少一个第二进程对应的第二硬件地址空间标识符重新写入寄存器,以使得当前正在运行的第二进程仍可以通过该寄存器中存储的第二硬件地址空间标识符号去转换旁视缓冲器中进行地址转换。
[0101]
本实施例中,由于在对转换旁视缓冲器进行访问时,均需要将访问该tlb的进程对应的硬件地址标识符写入该寄存器。在进行清空处理之前,还会提前将寄存器中的值读取并保存下来,在清空处理后,将原先保存下来的值继续写入寄存器中,以确保当前正在运行的第二进程后续在第一进程还未切入前可以继续运行。
[0102]
在一些实施例中,切换指令中包括有第一进程所需的待转换的虚拟地址。在步骤s104之后,当第一进程需要进行地址转换时,还可以依据该虚拟地址从物理内存中获取待转换的虚拟地址对应的物理地址,并将该虚拟地址、物理地址以及第一进程对应的第一硬件地址空间标识符对应存储起来,即,在第一硬件地址空间标识符对应的存储空间的存入获取到的虚拟地址以及物理地址。
[0103]
在一些实施例中,步骤s101之后,若确定切换指令中的第一软件地址空间标识符不为空,位于当前的预设取值范围,则表明当前在转换旁视缓冲器中仍然存储有第一进程对应的虚拟地址以及物理地址,则直接依据转换旁视缓冲器进行地址转换处理。
[0104]
在一些实施例中,在步骤s101之后,若确定切换第一软件地址空间标识符为空,则表明该第一进程为首次执行的进程,此时,可以依据已分配的软件地址空间标识符为第一软件地址空间标识符赋值,得到赋值后的第一软件地址空间标识符。
[0105]
在赋值之后,若确定赋值后的第一软件地址空间标识符位于当前的预设取值范围,表明当前硬件地址空间取值范围内的所有取值还未被全部分配出,因此后续在确定第一进程对应的第一硬件地址空间标识符时,可直接将前次分配的硬件地址空间标识符进行加1处理后的值作为该第一进程对应的第一硬件地址空间标识符,并直接将第一进程对应的虚拟地址以及物理地址存储至转换旁视缓冲器中。
[0106]
若确定赋值后的第一软件地址空间标识符不位于当前的预设取值范围,表明当前硬件地址空间取值范围内的所有取值已被全部分配出,则需要执行确定第一进程对应的第一硬件地址空间标识符,清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址,依据第一软件地址空间标识符,更新预设取值范围,即执行图2所示中的步骤s103-s105,即通过清空转换旁视缓冲器的方式将该第一进程对应的虚拟地址以及物
理地址存储至转换旁视缓冲器中。本示例中具体的清空过程,与图2中的步骤原理类似,此处不再赘述。
[0107]
图6为本技术实施例提供一种地址空间的更新装置的结构示意图,如图6所示,该装置包括:
[0108]
接收单元61,用于接收第一进程的切换指令,切换指令包括第一软件地址空间标识;
[0109]
第一确定单元62,用于若确定第一软件地址空间标识符不位于当前的预设取值范围中,则更新第一软件地址空间标识符;预设取值范围中包括转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符;
[0110]
第二确定单元63,用于确定第一进程对应的第一硬件地址空间标识符;
[0111]
清空单元64,用于清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址;
[0112]
更新单元65,用于依据更新后的第一软件地址空间标识符以及硬件地址空间标识符的取值范围,更新预设取值范围。
[0113]
本实施例提供的装置,用于实现上述方法提供的技术方案,其实现原理和技术效果类似,不再赘述。
[0114]
图7为本技术实施例提供又一种地址空间的更新装置的结构示意图,在图6所示的结构的基础上,清空单元64,包括:
[0115]
获取模块641,用于获取并保存转换旁视缓冲器对应的寄存器中当前正在运行的至少一个第二进程对应的第二硬件地址空间标识符;
[0116]
第一写入模块642,用于将第一硬件地址空间标识符写入寄存器;
[0117]
清空模块643,用于依据寄存器中写入的第一硬件地址空间标识符,清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址。
[0118]
第二写入模块644,用于在清空模块643依据寄存器中写入的第一硬件地址空间标识符,清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,将第二硬件地址空间标识符写入寄存器。
[0119]
在一种可能的实现方式中,第二确定单元63,具体用于:
[0120]
依据第一软件地址空间标识符以及硬件地址空间标识符的取值范围,确定第一进程对应的第一硬件地址空间标识符。
[0121]
在一种可能的实现方式中,切换指令中包括第一进程待转换的虚拟地址;该装置还包括:
[0122]
存储单元66,用于在清空单元64清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,依据待转换的虚拟地址,从物理内存中获取待转换的虚拟地址对应的物理地址,并将待转换的虚拟地址以及物理地址存入转换旁视缓冲器中第一硬件地址空间标识符对应的存储空间中。
[0123]
在一种可能的实现方式中,该装置还包括:
[0124]
第三确定单元67,用于在接收单元61接收第一进程的切换指令之后,若确定第一软件地址空间标识符不为空,且位于当前的预设取值范围,则直接依据转换旁视缓冲器进行地址转换处理。
[0125]
在一种可能的实现方式中,装置还包括:
[0126]
赋值单元68,用于若确定第一软件地址空间标识符为空,则依据已分配的软件地址空间标识符为第一软件地址空间标识符赋值,得到赋值后的第一软件地址空间标识符;
[0127]
第四确定单元69,用于若赋值后的第一软件地址空间标识符位于当前的预设取值范围,则确定第一进程对应的第一硬件地址空间标识符,并将第一进程对应的虚拟地址以及物理地址存储至转换旁视缓冲器中;
[0128]
第五确定单元70,用于若赋值后的第一软件地址空间标识符不位于当前的预设取值范围,则执行确定第一进程对应的第一硬件地址空间标识符,清空转换旁视缓冲器中第一硬件地址空间标识符所对应的虚拟地址以及物理地址,依据第一软件地址空间标识符,更新预设取值范围。
[0129]
本实施例提供的装置,用于实现上述方法提供的技术方案,其实现原理和技术效果类似,不再赘述。
[0130]
本技术提供一种电子设备,包括:存储器,处理器;
[0131]
存储器;用于存储处理器可执行指令的存储器;
[0132]
其中,处理器,用于根据可执行指令执行方法。
[0133]
图8为本技术实施例中提供的一种电子设备的结构示意图,如图8所示,该电子设备包括:
[0134]
处理器(processor)291,电子设备还包括了存储器(memory)292;还可以包括通信接口(communication interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器294中的逻辑指令,以执行上述实施例的方法。
[0135]
此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0136]
存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本技术实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的方法。
[0137]
存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
[0138]
本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现任一项的方法。
[0139]
本技术一种计算机程序产品,计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现任一项的方法。
[0140]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由所附的权利要求书指出。
[0141]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
技术特征:
1.一种地址空间的更新方法,其特征在于,所述方法包括:接收第一进程的切换指令,所述切换指令包括第一软件地址空间标识符;若确定所述第一软件地址空间标识符不为空、且不位于当前的预设取值范围中,则更新所述第一软件地址空间标识符;所述预设取值范围中包括转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符;确定所述第一进程对应的第一硬件地址空间标识符;清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;依据更新后的所述第一软件地址空间标识符,更新所述预设取值范围。2.根据权利要求1所述的方法,其特征在于,所述清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址,包括:获取并保存所述转换旁视缓冲器对应的寄存器中当前正在运行的至少一个第二进程对应的第二硬件地址空间标识符;将所述第一硬件地址空间标识符写入所述寄存器;依据所述寄存器中写入的所述第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;将所述至少一个第二进程对应的第二硬件地址空间标识符写入所述寄存器。3.根据权利要求1所述的方法,其特征在于,所述确定所述第一进程对应的第一硬件地址空间标识符,包括:依据所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,确定所述第一进程对应的第一硬件地址空间标识符。4.根据权利要求1-3任一项所述的方法,其特征在于,所述切换指令中包括所述第一进程待转换的虚拟地址;所述清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,所述方法还包括:依据所述待转换的虚拟地址,从物理内存中获取所述待转换的虚拟地址对应的物理地址,并将所述待转换的虚拟地址以及所述物理地址存入所述转换旁视缓冲器中所述第一硬件地址空间标识符对应的存储空间中。5.根据权利要求4所述的方法,其特征在于,所述接收第一进程的切换指令之后,所述方法还包括:若确定所述第一软件地址空间标识符不为空,且位于所述当前的预设取值范围,则直接依据所述转换旁视缓冲器进行地址转换处理。6.根据权利要求5所述的方法,其特征在于,所述接收第一进程的切换指令之后,所述方法还包括:若确定所述第一软件地址空间标识符为空,则依据已分配的软件地址空间标识符为所述第一软件地址空间标识符赋值,得到赋值后的第一软件地址空间标识符;若所述赋值后的第一软件地址空间标识符位于所述当前的预设取值范围,则确定所述第一进程对应的第一硬件地址空间标识符,并将所述第一进程对应的虚拟地址以及物理地址存储至所述转换旁视缓冲器中;若所述赋值后的第一软件地址空间标识符不位于所述当前的预设取值范围,则执行确
定所述第一进程对应的第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址,依据所述第一软件地址空间标识符,更新所述预设取值范围。7.一种地址空间的更新装置,其特征在于,所述装置包括:接收单元,用于接收第一进程的切换指令,所述切换指令包括第一软件地址空间标识;第一确定单元,用于若确定所述第一软件地址空间标识符不位于当前的预设取值范围中,则更新所述第一软件地址空间标识符;所述预设取值范围中包括转换旁视缓冲器中当前可存储的所有进程对应的软件地址空间标识符;第二确定单元,用于确定所述第一进程对应的第一硬件地址空间标识符;清空单元,用于清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;更新单元,用于依据更新后的所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,更新所述预设取值范围。8.根据权利要求7所述的装置,其特征在于,所述清空单元,包括:获取模块,用于获取并保存所述转换旁视缓冲器对应的寄存器中当前正在运行的至少一个第二进程对应的第二硬件地址空间标识符;第一写入模块,用于将所述第一硬件地址空间标识符写入所述寄存器;清空模块,用于依据所述寄存器中写入的所述第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;第二写入模块,用于在所述清空模块依据所述寄存器中写入的所述第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,将所述至少一个第二进程对应的第二硬件地址空间标识符写入所述寄存器。9.根据权利要求7所述的装置,其特征在于,第二确定单元,具体用于:依据所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,确定所述第一进程对应的第一硬件地址空间标识符。10.根据权利要求7-9任一项所述的装置,其特征在于,所述切换指令中包括所述第一进程待转换的虚拟地址;所述装置还包括:存储单元,用于在所述清空单元清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址之后,依据所述待转换的虚拟地址,从物理内存中获取所述待转换的虚拟地址对应的物理地址,并将所述待转换的虚拟地址以及所述物理地址存入所述转换旁视缓冲器中所述第一硬件地址空间标识符对应的存储空间中。11.根据权利要求10所述的装置,其特征在于,所述装置还包括:第三确定单元,用于在所述接收单元接收第一进程的切换指令之后,若确定所述第一软件地址空间标识符不为空,且位于所述当前的预设取值范围,则直接依据所述转换旁视缓冲器进行地址转换处理。12.根据权利要求11所述的装置,其特征在于,所述装置还包括:赋值单元,用于若确定所述第一软件地址空间标识符为空,则依据已分配的软件地址空间标识符为所述第一软件地址空间标识符赋值,得到赋值后的第一软件地址空间标识
符;第四确定单元,用于若所述赋值后的第一软件地址空间标识符位于所述当前的预设取值范围,则确定所述第一进程对应的第一硬件地址空间标识符,并将所述第一进程对应的虚拟地址以及物理地址存储至所述转换旁视缓冲器中;第五确定单元,用于若所述赋值后的第一软件地址空间标识符不位于所述当前的预设取值范围,则执行确定所述第一进程对应的第一硬件地址空间标识符,清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址,依据所述第一软件地址空间标识符,更新所述预设取值范围。13.一种电子设备,其特征在于,包括:存储器,处理器;存储器;用于存储所述处理器可执行指令的存储器;其中,所述处理器,用于根据所述可执行指令执行如权利要求1-6任一项所述的方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-6任一项所述的方法。15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法。
技术总结
本申请提供的地址空间的更新方法、装置及设备,所述方法包括:接收第一进程的切换指令;若确定所述第一软件地址空间标识符不为空、且不位于当前的预设取值范围中,则为所述第一进程分配对应的第一软件地址空间标识符;确定所述第一进程对应的第一硬件地址空间标识符;清空所述转换旁视缓冲器中所述第一硬件地址空间标识符所对应的虚拟地址以及物理地址;依据所述第一软件地址空间标识符以及硬件地址空间标识符的取值范围,更新所述预设取值范围。通过本实施例提供的更新方式,可以降低进程切换过程中无法命中转换旁视缓冲器的概率,提高转换旁视缓冲器的地址转换效率。转换旁视缓冲器的地址转换效率。转换旁视缓冲器的地址转换效率。
技术研发人员:袁俊卿 薛雨 刘立超
受保护的技术使用者:龙芯中科技术股份有限公司
技术研发日:2022.01.14
技术公布日:2023/7/26
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
