CN110990180B - Tlb异常处理方法、装置、电子设备及储存介质 - Google Patents

Tlb异常处理方法、装置、电子设备及储存介质 Download PDF

Info

Publication number
CN110990180B
CN110990180B CN201911195324.4A CN201911195324A CN110990180B CN 110990180 B CN110990180 B CN 110990180B CN 201911195324 A CN201911195324 A CN 201911195324A CN 110990180 B CN110990180 B CN 110990180B
Authority
CN
China
Prior art keywords
tlb
page table
target
exception
page
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.)
Active
Application number
CN201911195324.4A
Other languages
English (en)
Other versions
CN110990180A (zh
Inventor
高翔
李星
毛碧波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201911195324.4A priority Critical patent/CN110990180B/zh
Publication of CN110990180A publication Critical patent/CN110990180A/zh
Application granted granted Critical
Publication of CN110990180B publication Critical patent/CN110990180B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供了一种TLB异常处理方法、装置、电子设备及存储介质,涉及计算机技术领域。其中,该方法包括:获取处理TLB异常所需的第一参数;将预设通用寄存器中的第二参数修改为第一参数;将第一参数作为超级调用接口的调用参数,通过超级调用接口,从出现TLB异常的虚拟机跳转至宿主机;根据第一参数,在宿主机中进行TLB异常处理。本发明中,虚拟机出现TLB异常时,通过超级调用接口,将处理TLB异常所需的第一参数,传参给宿主机,此时,虚拟机退出,进而宿主机能够根据第一参数处理TLB异常。TLB异常通过宿主机处理,可减少虚拟机退出次数,进而减少了TLB异常处理的开销,缩短了处理TLB异常的时间。

Description

TLB异常处理方法、装置、电子设备及储存介质
技术领域
本发明涉及计算机技术领域,特别是涉及一种TLB异常处理方法、一种数据共享装置、一种电子设备以及一种存储介质。
背景技术
MIPS(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器)架构是一种简洁、优化、具有高度扩展性的精简指令集(RISC)处理器架构。在基于MIPS架构的类虚拟化(也称半虚拟化)场景下,为了提高数据访存效率、减少重复的页表查找,引入了TLB(Translation Lookaside Buffer,转换检测缓冲区)缓存最近使用过的页表项,即GVA(Guest Virtual Address,虚拟机的虚拟地址)到GPA(Guest PhysicalAddress,虚拟机的物理地址)的映射关系和GPA到HPA(Host Physical Address,宿主机的物理地址)的映射关系。这样,当需要访问内存中的一个数据时,处理器可以基于访问该数据的GVA,查询TLB。若在TLB中发现有该GVA即TLB hit(命中),则可以基于TLB中该GVA对应的HPA,访问内存中的该数据。若在TLB中没有查找到该GVA(即TLB miss),则由MMU(MemoryManage Unit,内存管理单元)查找页表,获取该GVA对应的HPA。
TLB异常处理主要包括四种:TLB miss(未命中)异常处理、TLB load(加载)异常处理、TLB store(存储)异常处理和TLB modify(修改)异常处理,这些异常处理需要基于tlbp、tlbwi、tlbwr等TLB异常处理的相关指令实现。但是,在具体应用时,在基于MIPS架构的类虚拟化场景下,无法实现Guest(虚拟机)模式下的TLB异常处理的相关指令,因此,在现有技术中,每出现一次Guest TLB异常处理的相关指令,就会在Host(宿主机)中进行一次异常报错,进而便需要退出Guest,然后通过Host对这些指令进行模拟,以实现这些指令的功能。
然而,处理TLB异常需要多次退出Guest,而退出Guest的开销较大。并且,Host需要多次打断Guest的TLB异常处理流程,以模拟TLB异常处理指令,进而会导致TLB异常处理过程延长,使得Guest模式下处理TLB异常十分费时。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种TLB异常处理方法,以快速识别程序热点。
相应的,本发明实施例还提供了一种TLB异常处理装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种TLB异常处理方法,包括:
获取第一参数;所述第一参数包括处理TLB异常所需的预设参数;
将预设通用寄存器中的第二参数修改为所述第一参数;
将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
根据所述第一参数,在所述宿主机中进行TLB异常处理。
可选地,所述获取第一参数之前,还包括:
保存所述预设通用寄存器中的所述第二参数;
所述根据所述第一参数,在所述宿主机中进行TLB异常处理之后,还包括:
将所述预设通用寄存器中的所述第一参数恢复为所述第二参数。
可选地,所述第一参数包括触发所述TLB异常的目标虚拟地址、所述目标虚拟地址的访问操作类型、触发所述TLB异常的异常类型、TLB映射的页的类型和页内偏移量,以及所述目标虚拟地址对应的页表条目。
可选地,所述根据所述第一参数,在所述宿主机中进行TLB异常处理,包括:
当所述目标虚拟地址的访问操作类型为与所述TLB相关的访问操作类型时,根据所述页表条目,在所述宿主机中获取所述目标虚拟地址对应的目标物理地址;
根据所述目标物理地址、所述触发所述TLB异常的目标虚拟地址、所述触发所述TLB异常的异常类型、所述TLB映射的页的类型和所述页内偏移量,填写所述TLB;
当所述TLB填写完毕时,所述TLB异常处理完成,返回至所述虚拟机。
可选地,当所述第一参数包括触发所述TLB异常的目标虚拟地址对应的页表条目时,所述获取第一参数,包括:
当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目;
当所述目标虚拟地址有效但不是用户态虚拟地址时,从主内核页全局目录的指针中查找所述目标虚拟地址对应的页表条目。
可选地,所述触发所述TLB异常的异常类型为TLB加载异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中时,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,以及将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态。
可选地,所述触发所述TLB异常的异常类型为TLB存储异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中,且所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
可选地,所述触发所述TLB异常的异常类型为TLB修改异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
本发明实施例还公开了一种TLB异常处理装置,包括:
获取模块,用于获取第一参数;所述第一参数包括处理TLB异常所需的预设参数;
修改模块,用于将预设通用寄存器中的第二参数修改为所述第一参数;
调用模块,用于将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
处理模块,用于根据所述第一参数,在所述宿主机中进行TLB异常处理。
可选地,所述装置还包括:
保存模块,用于保存所述预设通用寄存器中的所述第二参数;
所述装置还包括:
恢复模块,用于将所述预设通用寄存器中的所述第一参数恢复为所述第二参数。
可选地,所述第一参数包括触发所述TLB异常的目标虚拟地址、所述目标虚拟地址的访问操作类型、触发所述TLB异常的异常类型、TLB映射的页的类型和页内偏移量,以及所述目标虚拟地址对应的页表条目。
可选地,所述处理模块包括:
获取子模块,用于当所述目标虚拟地址的访问操作类型为与所述TLB相关的访问操作类型时,根据所述页表条目,在所述宿主机中获取所述目标虚拟地址对应的目标物理地址;
填写子模块,用于根据所述目标物理地址、所述触发所述TLB异常的目标虚拟地址、所述触发所述TLB异常的异常类型、所述TLB映射的页的类型和所述页内偏移量,填写所述TLB;
返回子模块,用于当所述TLB填写完毕时,所述TLB异常处理完成,返回至出现所述虚拟机。
可选地,当所述第一参数包括触发所述TLB异常的目标虚拟地址对应的页表条目时,所述获取模块包括:
第一查找子模块,用于当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目;
第二查找子模块,用于当所述目标虚拟地址有效但不是用户态虚拟地址时,从主内核页全局目录的指针中查找所述目标虚拟地址对应的页表条目。
可选地,所述触发所述TLB异常的异常类型为TLB加载异常;
所述获取模块还包括:
第一设置子模块,用于当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中时,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,以及将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态。
可选地,所述触发所述TLB异常的异常类型为TLB存储异常;
所述获取模块还包括:
第二设置子模块,用于当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中,且所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
可选地,所述触发所述TLB异常的异常类型为TLB修改异常;
所述获取模块还包括:
第三设置子模块,用于当所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
本发明实施例还公开了一种电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获取第一参数;所述第一参数包括处理TLB异常所需的预设参数;
将预设通用寄存器中的第二参数修改为所述第一参数;
将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
根据所述第一参数,在所述宿主机中进行TLB异常处理。
本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本发明实施例中一个或多个所述的TLB异常处理方法。
本发明实施例包括以下优点:
在本发明实施例中,当虚拟机出现TLB异常时,虚拟机可以通过超级调用接口,将处理TLB异常所需的第一参数,传参给宿主机,此时,虚拟机退出,进而宿主机能够根据该相关信息处理TLB异常。由于TLB异常通过宿主机处理,因此能够减少虚拟机退出的次数,从而减少了在宿主机中进行TLB异常报错的次数,并减少了TLB异常处理的开销,由于TLB异常处理过程被宿主机打断的次数减少,因此缩短了处理TLB异常的时间。
附图说明
图1是一种现有的TLB miss异常的处理流程图;
图2是一种现有的TLB load异常的处理流程图;
图3是一种现有的TLB store异常的处理流程图;
图4是一种现有的TLB modify异常的处理流程图;
图5是本发明的一种TLB异常处理方法实施例的步骤流程图;
图6是本发明的另一种TLB异常处理方法实施例的步骤流程图;
图7是本发明的一种TLB miss异常处理的主要流程示意图;
图8是本发明的一种TLB load异常处理的主要流程示意图;
图9是本发明的一种TLB store异常处理的主要流程示意图;
图10是本发明的一种TLB modify异常处理的主要流程示意图;
图11是本发明的一种在Host中进行TLB异常处理的主要流程示意图;
图12是本发明的一种TLB异常处理装置实施例的结构框图;
图13是根据一示例性实施例示出的一种用于处理TLB异常的电子设备的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在对本发明实施例进行详细说明之前,首先对目前的TLB miss异常、TLB load异常、TLB store异常和TLB modify异常的处理方式进行介绍。
一、现有的TLB miss异常处理流程:
参照图1,示出了一种现有的TLB miss异常的处理流程图。
1、从badvaddr寄存器中获取触发TLB miss异常的虚拟地址。
2、判断该虚拟地址是否为用户态地址。若是,则从PWBase寄存器中获取pgd_current(当前运行进程的页全局目录),进而从pgd_current的页表中查找PMD(页中间目录)。若否,则获取swapper_pg_dir(主内核页全局目录的指针),进而从swapper_pg_dir中查找PMD。
在这里,PWBase替代访问该虚拟地址的软件查找pgd_current,会触发一次虚拟机(后文称为Guest)异常退出。
3、从XContext寄存器中获取该虚拟地址在PTE(页表条目)表中的偏移值,将该偏移值与PMD offset(PMD偏移量)相加,得到该虚拟地址对应的ptep指针。其中,一个ptep指针可以指向一个PTE。
在这里,访问XContext会触发一次Guest异常退出。
4、根据ptep指针获取该虚拟地址对应的PTE,将PTE值写入EntryHi、EntryLo0/EntryLo1等寄存器。
在这里,写入EntryLo0/EntryLo1会触发一次Guest异常退出。
5、通过tlbwr指令,将EntryHi、EntryLo0/EntryLo1等寄存器中的内容,随机写入TLB。
在这里,使用tlbwr指令会触发一次Guest异常退出。
需要说明的是,在现有的TLB miss异常处理流程中,至少存在上述4次Guest异常退出,当然,还会存在其他Guest异常退出的时机,这里仅指出与本发明相关的上述4次Guest异常退出。
二、现有的TLB load异常处理流程:
TLB load、TLB store和TLB modify的异常处理流程类似。
参照图2,示出了一种现有的TLB load异常的处理流程图。
1、将at寄存器中的数据保存至kscratch寄存器中,at寄存器临时用于存放后续步骤中产生的临时数据。
在这里,使用kscratch寄存器会触发一次Guest异常退出。
2、从badvaddr寄存器中获取触发TLB load异常的虚拟地址。
3、判断该虚拟地址是否为用户态地址。若是,则从PWBase寄存器中获取pgd_current,进而从pgd_current的页表中查找该虚拟地址对应的PTE。若否,则获取swapper_pg_dir,进而从swapper_pg_dir中获取该虚拟地址对应的PTE。由于TLB load是在TLB miss出现的基础上进一步出现的异常,因此,在查找PTE的过程中,还可以通过tlbp指令确定TLBmiss处理过程中写入TLB的项在TLB中的位置。
在这里,PWBase替代访问该虚拟地址的软件查找pgd_current,会触发一次Guest异常退出。
4、判断PTE的Present(存在)属性位的值是否为1。Present属性位的值为1,表示该PTE所指向的页或页表存在于物理内存中,Present属性位的值为0,表示该PTE所指向的页或页表未存在于物理内存中。
5、若Present属性位的值为1,则将PTE中的Valid(有效)属性位修改为1,表示该PTE所指向的页或页表有效,以及将PTE中的Access(访问)属性位修改为1,表示该PTE所指向的页或页表已被访问,并将修改后的PTE存回页表中。若Present属性位的值为0,则表示出现缺页异常,进而可以调用缺页处理函数do_page_fault进行处理。
6、将PTE值写入EntryHi、EntryLo0/EntryLo1寄存器等。
在这里,写入EntryLo0/EntryLo1会触发一次Guest异常退出。
7、通过tlbwi指令,将EntryHi、EntryLo0/EntryLo1等寄存器中的内容,写入TLB中通过tlbp指令查找到的位置。
在这里,使用tlbwi指令会触发一次Guest异常退出。
8、将kscratch寄存器中的数据恢复至at寄存器,并通过eret指令,从异常中返回到用户态。
在这里,使用kscratch寄存器会触发一次Guest异常退出。
需要说明的是,在现有的TLB load异常处理流程中,至少存在上述5次Guest异常退出,当然,还会存在其他Guest异常退出的时机,这里仅指出与本发明相关的上述5次Guest异常退出。
三、现有的TLB store异常处理流程:
参照图3,示出了一种现有的TLB store异常的处理流程图。
1、将at寄存器中的数据保存至kscratch寄存器中,at寄存器临时用于存放后续步骤中产生的临时数据。
在这里,使用kscratch寄存器会触发一次Guest异常退出。
2、从badvaddr寄存器中获取触发TLB store异常的虚拟地址。
3、判断该虚拟地址是否为用户态地址。若是,则从PWBase寄存器中获取pgd_current,进而从pgd_current的页表中查找该虚拟地址对应的PTE。若否,则获取swapper_pg_dir,进而从swapper_pg_dir中获取该虚拟地址对应的PTE。由于TLB store是在TLBmiss出现的基础上进一步出现的异常,因此,在查找PTE的过程中,还可以通过tlbp指令确定TLB miss处理过程中写入TLB的项在TLB中的位置。
在这里,PWBase替代访问该虚拟地址的软件查找pgd_current,会触发一次Guest异常退出。
4、判断PTE的Present(存在)属性位的值是否为1,以及PTE的Write(可写)属性位的值是否为1。Present属性位的值为1,表示该PTE所指向的页或页表存在于物理内存中,Present属性位的值为0,表示该PTE所指向的页或页表未存在于物理内存中。Write属性位的值为1,表示该PTE所指向的页或页表可写,Write属性位的值为0,表示该PTE所指向的页或页表不可写。
5、若Present属性位的值为1,且Write属性位的值为1,则将PTE中的Dirty(脏位)属性位修改为1,表示该PTE所指向的页或页表已被写过,将PTE中的Valid(有效)属性位修改为1,表示该PTE所指向的页或页表有效,将PTE中的Access(访问)属性位修改为1,表示该PTE所指向的页或页表已被访问,以及将PTE中的Modified(修改)属性位修改为1,表示该PTE所指向的页或页表已被修改,并将修改后的PTE存回页表中。若Present属性位的值为0,和/或Write属性位的值为0,则表示出现缺页异常,进而可以调用缺页处理函数do_page_fault进行处理。
6、将PTE值写入EntryHi、EntryLo0/EntryLo1寄存器等。
在这里,写入EntryLo0/EntryLo1会触发一次Guest异常退出。
7、通过tlbwi指令,将EntryHi、EntryLo0/EntryLo1等寄存器中的内容,写入TLB中通过tlbp指令查找到的位置。
在这里,使用tlbwi指令会触发一次Guest异常退出。
8、将kscratch寄存器中的数据恢复至at寄存器,并通过eret指令,从异常中返回到用户态。
在这里,使用kscratch寄存器会触发一次Guest异常退出。
需要说明的是,在现有的TLB store异常处理流程中,至少存在上述5次Guest异常退出,当然,还会存在其他Guest异常退出的时机,这里仅指出与本发明相关的上述5次Guest异常退出。
四、现有的TLB modify异常处理流程:
参照图4,示出了一种现有的TLB modify异常的处理流程图。
1、将at寄存器中的数据保存至kscratch寄存器中,at寄存器临时用于存放后续步骤中产生的临时数据。
在这里,使用kscratch寄存器会触发一次Guest异常退出。
2、从badvaddr寄存器中获取触发TLB modify异常的虚拟地址。
3、判断该虚拟地址是否为用户态地址。若是,则从PWBase寄存器中获取pgd_current,进而从pgd_current的页表中查找该虚拟地址对应的PTE。若否,则获取swapper_pg_dir,进而从swapper_pg_dir中获取该虚拟地址对应的PTE。由于TLB modify是在TLBmiss出现的基础上进一步出现的异常,因此,在查找PTE的过程中,还可以通过tlbp指令确定TLB miss处理过程中写入TLB的项在TLB中的位置。
在这里,PWBase替代访问该虚拟地址的软件查找pgd_current,会触发一次Guest异常退出。
4、判断PTE的Write(可写)属性位的值是否为1。Write属性位的值为1,表示该PTE所指向的页或页表可写,Write属性位的值为0,表示该PTE所指向的页或页表不可写。
5、若Write属性位的值为1,则将PTE中的Dirty(脏位)属性位修改为1,表示该PTE所指向的页或页表已被写过,将PTE中的Valid(有效)属性位修改为1,表示该PTE所指向的页或页表有效,将PTE中的Access(访问)属性位修改为1,表示该PTE所指向的页或页表已被访问,以及将PTE中的Modified(修改)属性位修改为1,表示该PTE所指向的页或页表已被修改,并将修改后的PTE存回页表中。若Write属性位的值为0,则表示出现缺页异常,进而可以调用缺页处理函数do_page_fault进行处理。
6、将PTE值写入EntryHi、EntryLo0/EntryLo1寄存器等。
在这里,写入EntryLo0/EntryLo1会触发一次Guest异常退出。
7、通过tlbwi指令,将EntryHi、EntryLo0/EntryLo1等寄存器中的内容,写入TLB中通过tlbp指令查找到的位置。
在这里,使用tlbwi指令会触发一次Guest异常退出。
8、将kscratch寄存器中的数据恢复至at寄存器,并通过eret指令,从异常中返回到用户态。
在这里,使用kscratch寄存器会触发一次Guest异常退出。
需要说明的是,在现有的TLB modify异常处理流程中,至少存在上述5次Guest异常退出,当然,还会存在其他Guest异常退出的时机,这里仅指出与本发明相关的上述5次Guest异常退出。
本发明实施例的核心构思之一在于,当Guest出现TLB miss、TLB load、TLB store和TLB modify的异常时,Guest可以通过超级调用(后文称为hypercall)接口,将处理TLB异常所需的Guest和TLB的相关信息(即第一参数),传参给宿主机(后文称为Host),此时,Guest退出,进而Host能够直接根据该相关信息处理TLB异常。由于TLB异常通过Host处理,因此能够减少Guest退出的次数,从而减少了在Host中进行TLB异常报错的次数,并减少了TLB异常处理的开销,由于TLB异常处理过程被宿主机打断的次数减少,因此缩短了处理TLB异常的时间。对于TLB miss异常,可以减少3次Guest退出的开销;对于TLB load、TLB store和TLB modify异常,可以减少4次Guest退出的开销。
需要说明的是,本发明实施例提供的TLB异常处理方法应用在RISC架构下,具体的比如MIPS架构,可以在实现TLB异常处理的同时,解决上述技术问题,达到减少Guest退出次数的目的。此外,本发明实施例提供的TLB异常处理方法还可以应用于其他处理器架构(比如X86、ARM架构等),在其他处理器架构下,该方法同样能够实现TLB异常处理。
参照图5,示出了本发明的一种TLB异常处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取第一参数;第一参数包括处理TLB异常所需的预设参数。
在本发明实施例中,Guest在出现TLB miss、TLB load、TLB store和TLB modify的异常时,首先可以获取处理TLB异常所需的第一参数,也即需要向hypercall接口传递的参数,第一参数可以是处理TLB异常所需的Guest和TLB的相关信息。在实际应用中,可以在Guest中事先设定需要向hypercall接口传递的第一参数的个数及类型。
具体地,第一参数可以包括触发TLB异常的目标虚拟地址、目标虚拟地址的访问操作类型、触发TLB异常的异常类型、TLB映射的页的类型和页内偏移量,以及目标虚拟地址对应的页表条目。Host后续可以根据这些参数,进行TLB异常处理。
步骤102,将预设通用寄存器中的第二参数修改为第一参数。
在本发明实施例中,Guest可以通过预设通用寄存器向hypercall接口传递第一参数。第二参数为之前一次使用该预设通用寄存器时存入的参数。当Guest获取到第一参数后,可以将预设通用寄存器中原先存入的第二参数修改为需要向hypercall接口传递的第一参数。
步骤103,将第一参数作为超级调用接口的调用参数,通过超级调用接口,从出现TLB异常的虚拟机跳转至宿主机。
在本发明实施例中,Guest可以调用hypercall接口,并以第一参数作为传参,从而从出现TLB异常的Guest跳转至Host,进而可以在Host中进行TLB异常处理。
在这里,使用hypercall接口会触发一次Guest异常退出。
步骤104,根据第一参数,在宿主机中进行TLB异常处理。
在本发明实施例中,Host可以根据触发TLB异常的目标虚拟地址、目标虚拟地址的访问操作类型、触发TLB异常的异常类型、TLB映射的页的类型和页内偏移量,以及目标虚拟地址对应的页表条目,进行TLB异常处理。
其中,当目标虚拟地址的访问操作类型为与TLB相关的访问操作类型时,例如在TLB中查找该目标虚拟地址、在TLB中修改该目标虚拟地址等访问操作,Host可以从该页表条目所指向的页或页表中,获取该目标虚拟地址对应的目标物理地址。然后,Host可以根据触发TLB异常的异常类型(TLB miss、TLB load、TLB store还是TLB modify),选择通过tlbwr指令或tlbwi指令,将目标物理地址与触发TLB异常的目标虚拟地址的映射关系写入TLB中。在填写过程中,需要按照TLB映射的页(TLB映射的最小单位)的类型(即TLB映射的最小单位是正常页还是大页)和页内偏移量(表示页的大小)进行TLB映射。TLB填写完毕后,TLB异常处理完成,进而可以返回至Guest。
在本发明实施例中,当虚拟机出现TLB异常时,虚拟机可以通过超级调用接口,将处理TLB异常所需的第一参数,传参给宿主机,此时,虚拟机退出,进而宿主机能够根据该相关信息处理TLB异常。由于TLB异常通过宿主机处理,因此能够减少虚拟机退出的次数,从而减少了在宿主机中进行TLB异常报错的次数,并减少了TLB异常处理的开销,由于TLB异常处理过程被宿主机打断的次数减少,因此缩短了处理TLB异常的时间。
参照图6,示出了本发明的另一种TLB异常处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,保存预设通用寄存器中的第二参数。
在本发明实施例中,Guest需要利用预设通用寄存器向hypercall接口传递参数,而预设通用寄存器中可能存有其他处理流程所写入的参数,也即第二参数。在具体应用时,其他处理流程后续可能还会用到第二参数,因此,Guest需要首先将预设通用寄存器中的第二参数保存起来,避免其他处理流程后续无法从预设通用寄存器中获取到第二参数。可选地,Guest可以将第二参数转存至预设通用寄存器以外的其他通用寄存器。
可选地,在实际应用中,预设通用寄存器可以选取v0、v1、a0、a1、a2和a3这6个通用寄存器作为预设通用寄存器。
步骤202,获取第一参数;第一参数包括处理TLB异常所需的预设参数。
在本发明实施例中,第一参数可以包括触发TLB异常的目标虚拟地址、目标虚拟地址的访问操作类型、触发TLB异常的异常类型、TLB映射的页的类型和页内偏移量,以及目标虚拟地址对应的页表条目。Host后续可以根据这些参数,进行TLB异常处理。
当第一参数包括触发TLB异常的目标虚拟地址对应的页表条目时,本步骤可以包括以下步骤:
当该目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录(pgd_current)中查找该目标虚拟地址对应的页表条目;
当目标虚拟地址有效但不是用户态虚拟地址时,从主内核页全局目录的指针(swapper_pg_dir)中查找该目标虚拟地址对应的页表条目。
具体地,图7示出了本发明的一种TLB miss异常处理的主要流程示意图,图8示出了本发明的一种TLB load异常处理的主要流程示意图,图9示出了本发明的一种TLB store异常处理的主要流程示意图,图10示出了本发明的一种TLB modify异常处理的主要流程示意图。参照图7、图8、图9和图10,首先,Guest可以从badvaddr寄存器中获取触发TLB异常的目标虚拟地址,然后确定该目标虚拟地址的访问操作类型、触发TLB异常的异常类型guest.cause.exccode、TLB映射的页的类型和页内偏移量PAGE_SHIFT(图7、图8、图9和图10中未体现)。Guest可以确定badvaddr寄存器的第40位到第48位是否均为0(图8、图9和图10中未体现),均为0则表示该目标虚拟地址是个无效地址,不全为0则表示该目标虚拟地址是个有效地址。若badvaddr寄存器的第40位到第48位均为0,则调用do_page_fault函数进行处理。若badvaddr寄存器的第40位到第48位不全为0,则进一步确定该目标虚拟地址是否为用户态地址,若是,则说明该目标虚拟地址即为有效的用户态虚拟地址,进而Guest可以从pgd_current中查找该目标虚拟地址对应的PTE(页表条目)。若该目标虚拟地址有效但不是用户态地址,则Guest可以从swapper_pg_dir中查找该目标虚拟地址对应的PTE。
进一步地,若触发TLB异常的异常类型为TLB load(加载)异常,则在“当目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找目标虚拟地址对应的页表条目”的步骤之后,Guest还可以执行下述步骤,包括:当页表条目中的存在属性位指示页表条目所指向的目标页或目标页表存在于物理内存中时,将页表条目中的有效属性位设置为指示目标页或目标页表有效的状态,以及将页表条目中的访问属性位设置为指示目标页或目标页表已被访问的状态。
具体地,参照图8,Guest可以判断PTE的Present(存在)属性位的值是否为1。Present属性位的值为1,表示该PTE所指向的目标页或目标页表存在于物理内存中,Present属性位的值为0,表示该PTE所指向的目标页或目标页表未存在于物理内存中。
若Present属性位的值为1,则Guest可以将PTE中的Valid(有效)属性位修改为1,表示该PTE所指向的目标页或目标页表有效,以及将PTE中的Access(访问)属性位修改为1,表示该PTE所指向的目标页或目标页表已被访问。若Present属性位的值为0,则表示出现缺页异常,进而可以调用do_page_fault函数进行处理。
进一步地,若触发TLB异常的异常类型为TLB store(存储)异常,则在“当目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找目标虚拟地址对应的页表条目”的步骤之后,Guest还可以执行下述步骤,包括:当页表条目中的存在属性位指示页表条目所指向的目标页或目标页表存在于物理内存中,且页表条目中的可写属性位指示目标页或目标页表可写时,将页表条目中的脏位属性位设置为指示目标页或目标页表已被写过的状态,将页表条目中的有效属性位设置为指示目标页或目标页表有效的状态,将页表条目中的访问属性位设置为指示目标页或目标页表已被访问的状态,以及将页表条目中的修改属性位设置为指示目标页或目标页表已被修改的状态。
具体地,参照图9,Guest可以判断PTE的Present属性位的值是否为1,以及PTE的Write(可写)属性位的值是否为1。Present属性位的值为1,表示该PTE所指向的目标页或目标页表存在于物理内存中,Present属性位的值为0,表示该PTE所指向的目标页或目标页表未存在于物理内存中。Write属性位的值为1,表示该PTE所指向的目标页或目标页表可写,Write属性位的值为0,表示该PTE所指向的目标页或目标页表不可写。
若Present属性位的值为1,且Write属性位的值为1,则Guest可以将PTE中的Dirty(脏位)属性位修改为1,表示该PTE所指向的目标页或目标页表已被写过,将PTE中的Valid属性位修改为1,表示该PTE所指向的目标页或目标页表有效,将PTE中的Access属性位修改为1,表示该PTE所指向的目标页或目标页表已被访问,以及将PTE中的Modified(修改)属性位修改为1,表示该PTE所指向的目标页或目标页表已被修改。若Present属性位的值为0,和/或Write属性位的值为0,则表示出现缺页异常,进而可以调用do_page_fault函数进行处理。
进一步地,若触发TLB异常的异常类型为TLB modify(修改)异常,则在“当目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找目标虚拟地址对应的页表条目”的步骤之后,Guest还可以执行下述步骤,包括:当页表条目中的可写属性位指示目标页或目标页表可写时,将页表条目中的脏位属性位设置为指示目标页或目标页表已被写过的状态,将页表条目中的有效属性位设置为指示目标页或目标页表有效的状态,将页表条目中的访问属性位设置为指示目标页或目标页表已被访问的状态,以及将页表条目中的修改属性位设置为指示目标页或目标页表已被修改的状态。
具体地,参照图9,Guest可以判断PTE的Write属性位的值是否为1。Write属性位的值为1,表示该PTE所指向的目标页或目标页表可写,Write属性位的值为0,表示该PTE所指向的目标页或目标页表不可写。
若Write属性位的值为1,则Guest可以将PTE中的Dirty属性位修改为1,表示该PTE所指向的目标页或目标页表已被写过,将PTE中的Valid属性位修改为1,表示该PTE所指向的目标页或目标页表有效,将PTE中的Access属性位修改为1,表示该PTE所指向的目标页或目标页表已被访问,以及将PTE中的Modified属性位修改为1,表示该PTE所指向的目标页或目标页表已被修改。若Write属性位的值为0,则表示出现缺页异常,进而可以调用do_page_fault函数进行处理。
步骤203,将预设通用寄存器中的第二参数修改为第一参数。
在本发明实施例中,参照图7、图8、图9和图10,Guest可以将v0、v1、a0、a1、a2和a3通用寄存器中的第二参数替换为需要传递给hypercall接口的第一参数。
其中,v0通用寄存器可以存放一个16位数,16位中的高4位可以修改为目标虚拟地址的访问操作类型,16位中的低12位可以修改为TLB映射的页的类型(即TLB映射的最小单位是正常页还是大页)。v1通用寄存器存放guest.cause.exccode(TLB miss、TLB load、TLBstore还是TLB modify),a0通用寄存器存放目标虚拟地址,a1通用寄存器存放PAGE_SHIFT(表示页的大小),正常页和大页的大小可以分为几个不同的规格,a2/a3通用寄存器存放目标虚拟地址对应的PTE。
步骤204,将第一参数作为超级调用接口的调用参数,通过超级调用接口,从出现TLB异常的虚拟机跳转至宿主机。
在本发明实施例中,参照图7、图8、图9和图10,Guest可以调用hypercall接口,并以第一参数作为传参,从而从出现TLB异常的Guest跳转至Host,进而可以在Host中进行TLB异常处理。
在这里,使用hypercall接口会触发一次Guest异常退出。
在本发明实施例中,步骤205,当目标虚拟地址的访问操作类型为与TLB相关的访问操作类型时,根据页表条目,在宿主机中获取目标虚拟地址对应的目标物理地址。
Host可以读取v0通用寄存器的高4位,从而获取到目标虚拟地址的访问操作类型;读取v0通用寄存器的低12位,从而获取到TLB映射的页的类型;读取v1通用寄存器,从而获取到guest.cause.exccode;读取a0通用寄存器,从而获取到目标虚拟地址;读取a1通用寄存器,从而获取到PAGE_SHIFT;读取a2/a3通用寄存器,从而获取到目标虚拟地址对应的PTE。
图11示出了本发明的一种在Host中进行TLB异常处理的主要流程示意图。参照图11,Host可以根据v0通用寄存器的高4位,确定目标虚拟地址的访问操作类型。若该访问操作类型不为与TLB相关的访问操作类型时,例如更新操作,则Host可以根据该访问操作类型,进行其他hypercall处理,处理完成后返回至Guest。若该访问操作类型为与TLB相关的访问操作类型时,例如在TLB中查找该目标虚拟地址、在TLB中修改该目标虚拟地址等访问操作,则Host可以从目标虚拟地址对应的PTE所指向的页或页表中,获取该目标虚拟地址对应的该目标虚拟地址对应的GPA,进而再根据该GPA,调用kvm_lsvz_map_page(分配物理页面)函数,从而查找或分配对应的目标物理地址(HPA)。
步骤206,根据目标物理地址、触发TLB异常的目标虚拟地址、触发TLB异常的异常类型、TLB映射的页的类型和页内偏移量,填写TLB。
参照图11,Host进而可以根据触发TLB异常的异常类型(TLB miss、TLB load、TLBstore还是TLB modify),选择通过tlbwr指令(TLB miss时选择)或tlbwi指令(TLB load、TLB store和TLB modify时选择),将目标物理地址与触发TLB异常的目标虚拟地址的映射关系写入TLB中。在填写过程中,需要按照TLB映射的页(TLB映射的最小单位)的类型(即TLB映射的最小单位是正常页还是大页)和页内偏移量(表示页的大小)进行TLB映射。
步骤207,当TLB填写完毕时,TLB异常处理完成,返回至虚拟机。
在本发明实施例中,TLB填写完毕后,TLB异常处理完成,进而可以返回至Guest。
步骤208,将预设通用寄存器中的第一参数恢复为第二参数。
在完成TLB异常处理,并返回至Guest之后,预设通用寄存器使用完毕,Guest进而可以将预设通用寄存器中的第一参数恢复为原先的第二参数,以使其他处理流程后续可以从预设通用寄存器中获取到第二参数。
需要说明的是,图7、图8、图9、图10和图11仅简要地表示了主要的流程,图7、图8、图9、图10和图11并不对本发明构成限定。
本发明实施例相比较于现有技术中的Guest TLB异常处理流程,能够减少模拟tlbp、tlbwi、tlbwr等相关指令而使Guest退出的次数,并保证能够一次性在Host中进行TLB的填写,加快了处理TLB异常的速度,减少了处理过程被Host打断的次数,缩短了处理TLB异常的时间。
在本发明实施例中,当虚拟机出现TLB异常时,虚拟机可以通过超级调用接口,将处理TLB异常所需的第一参数,传参给宿主机,此时,虚拟机退出,进而宿主机能够根据该相关信息处理TLB异常。由于TLB异常通过宿主机处理,因此能够减少虚拟机退出的次数,从而减少了在宿主机中进行TLB异常报错的次数,并减少了TLB异常处理的开销,由于TLB异常处理过程被宿主机打断的次数减少,因此缩短了处理TLB异常的时间。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图12,示出了本发明的一种TLB异常处理装置实施例的结构框图,该装置300具体可以包括如下模块:
获取模块301,用于获取第一参数;所述第一参数包括处理TLB异常所需的预设参数;
修改模块302,用于将预设通用寄存器中的第二参数修改为所述第一参数;
调用模块303,用于将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
处理模块304,用于根据所述第一参数,在所述宿主机中进行TLB异常处理。
可选地,所述装置300还包括:
保存模块,用于保存所述预设通用寄存器中的所述第二参数;
所述装置300还包括:
恢复模块,用于将所述预设通用寄存器中的所述第一参数恢复为所述第二参数。
可选地,所述第一参数包括触发所述TLB异常的目标虚拟地址、所述目标虚拟地址的访问操作类型、触发所述TLB异常的异常类型、TLB映射的页的类型和页内偏移量,以及所述目标虚拟地址对应的页表条目。
可选地,所述处理模块304包括:
获取子模块,用于当所述目标虚拟地址的访问操作类型为与所述TLB相关的访问操作类型时,根据所述页表条目,在所述宿主机中获取所述目标虚拟地址对应的目标物理地址;
填写子模块,用于根据所述目标物理地址、所述触发所述TLB异常的目标虚拟地址、所述触发所述TLB异常的异常类型、所述TLB映射的页的类型和所述页内偏移量,填写所述TLB;
返回子模块,用于当所述TLB填写完毕时,所述TLB异常处理完成,返回至出现所述虚拟机。
可选地,当所述第一参数包括触发所述TLB异常的目标虚拟地址对应的页表条目时,所述获取模块301包括:
第一查找子模块,用于当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目;
第二查找子模块,用于当所述目标虚拟地址有效但不是用户态虚拟地址时,从主内核页全局目录的指针中查找所述目标虚拟地址对应的页表条目。
可选地,所述触发所述TLB异常的异常类型为TLB加载异常;
所述获取模块301还包括:
第一设置子模块,用于当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中时,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,以及将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态。
可选地,所述触发所述TLB异常的异常类型为TLB存储异常;
所述获取模块301还包括:
第二设置子模块,用于当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中,且所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
可选地,所述触发所述TLB异常的异常类型为TLB修改异常;
所述获取模块301还包括:
第三设置子模块,用于当所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
在本发明实施例中,当虚拟机出现TLB异常时,虚拟机可以通过超级调用接口,将处理TLB异常所需的第一参数,传参给宿主机,此时,虚拟机退出,进而宿主机能够根据该相关信息处理TLB异常。由于TLB异常通过宿主机处理,因此能够减少虚拟机退出的次数,从而减少了在宿主机中进行TLB异常报错的次数,并减少了TLB异常处理的开销,由于TLB异常处理过程被宿主机打断的次数减少,因此缩短了处理TLB异常的时间。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图13是根据一示例性实施例示出的一种用于处理TLB异常的电子设备400的结构框图。例如,电子设备400可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图13,电子设备400可以包括以下一个或多个组件:处理组件402,存储器404,电源组件406,多媒体组件408,音频组件410,输入/输出(I/O)的接口412,传感器组件414,以及通信组件416。
处理组件402通常控制电子设备400的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件402可以包括一个或多个处理器420来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理部件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。
存储器404被配置为存储各种类型的数据以支持在设备400的操作。这些数据的示例包括用于在电子设备400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件406为电子设备400的各种组件提供电力。电源组件406可以包括电源管理系统,一个或多个电源,及其他与为电子设备400生成、管理和分配电力相关联的组件。
多媒体组件408包括在所述电子设备400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当电子设备400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(MIC),当电子设备400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。
I/O接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件414包括一个或多个传感器,用于为电子设备400提供各个方面的状态评估。例如,传感器组件414可以检测到设备400的打开/关闭状态,组件的相对定位,例如所述组件为电子设备400的显示器和小键盘,传感器组件414还可以检测电子设备400或电子设备400一个组件的位置改变,用户与电子设备400接触的存在或不存在,电子设备400方位或加速/减速和电子设备400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件416被配置为便于电子设备400和其他设备之间有线或无线方式的通信。电子设备400可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件416还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由电子设备400的处理器420执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种TLB异常处理的方法,所述方法包括:
获取第一参数;所述第一参数包括处理TLB异常所需的预设参数;
将预设通用寄存器中的第二参数修改为所述第一参数;
将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
根据所述第一参数,在所述宿主机中进行TLB异常处理。
可选地,所述获取第一参数之前,还包括:
保存所述预设通用寄存器中的所述第二参数;
所述根据所述第一参数,在所述宿主机中进行TLB异常处理之后,还包括:
将所述预设通用寄存器中的所述第一参数恢复为所述第二参数。
可选地,所述第一参数包括触发所述TLB异常的目标虚拟地址、所述目标虚拟地址的访问操作类型、触发所述TLB异常的异常类型、TLB映射的页的类型和页内偏移量,以及所述目标虚拟地址对应的页表条目。
可选地,所述根据所述第一参数,在所述宿主机中进行TLB异常处理,包括:
当所述目标虚拟地址的访问操作类型为与所述TLB相关的访问操作类型时,根据所述页表条目,在所述宿主机中获取所述目标虚拟地址对应的目标物理地址;
根据所述目标物理地址、所述触发所述TLB异常的目标虚拟地址、所述触发所述TLB异常的异常类型、所述TLB映射的页的类型和所述页内偏移量,填写所述TLB;
当所述TLB填写完毕时,所述TLB异常处理完成,返回至所述虚拟机。
可选地,当所述第一参数包括触发所述TLB异常的目标虚拟地址对应的页表条目时,所述获取第一参数,包括:
当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目;
当所述目标虚拟地址有效但不是用户态虚拟地址时,从主内核页全局目录的指针中查找所述目标虚拟地址对应的页表条目。
可选地,所述触发所述TLB异常的异常类型为TLB加载异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中时,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,以及将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态。
可选地,所述触发所述TLB异常的异常类型为TLB存储异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中,且所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
可选地,所述触发所述TLB异常的异常类型为TLB修改异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种TLB异常处理方法和装置、一种电子设备以及一种储存介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (16)

1.一种TLB异常处理方法,其特征在于,包括:
获取第一参数,所述第一参数包括触发TLB异常的异常类型以及目标虚拟地址对应的页表条目;所述获取第一参数,包括:当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,当所述触发TLB异常的异常类型为TLB加载异常且所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中时,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,以及将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态;
将预设通用寄存器中的第二参数修改为所述第一参数;
将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
根据所述第一参数,在所述宿主机中进行TLB异常处理。
2.根据权利要求1所述的方法,其特征在于,所述获取第一参数之前,还包括:
保存所述预设通用寄存器中的所述第二参数;
所述根据所述第一参数,在所述宿主机中进行TLB异常处理之后,还包括:
将所述预设通用寄存器中的所述第一参数恢复为所述第二参数。
3.根据权利要求1所述的方法,其特征在于,所述第一参数还包括触发所述TLB异常的目标虚拟地址、所述目标虚拟地址的访问操作类型、TLB映射的页的类型和页内偏移量。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一参数,在所述宿主机中进行TLB异常处理,包括:
当所述目标虚拟地址的访问操作类型为与所述TLB相关的访问操作类型时,根据所述页表条目,在所述宿主机中获取所述目标虚拟地址对应的目标物理地址;
根据所述目标物理地址、所述触发所述TLB异常的目标虚拟地址、所述触发所述TLB异常的异常类型、所述TLB映射的页的类型和所述页内偏移量,填写所述TLB;
当所述TLB填写完毕时,所述TLB异常处理完成,返回至所述虚拟机。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取第一参数,还包括:
当所述目标虚拟地址有效但不是用户态虚拟地址时,从主内核页全局目录的指针中查找所述目标虚拟地址对应的页表条目。
6.根据权利要求1所述的方法,其特征在于,所述触发所述TLB异常的异常类型为TLB存储异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中,且所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
7.根据权利要求1所述的方法,其特征在于,所述触发所述TLB异常的异常类型为TLB修改异常;
所述当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,还包括:
当所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
8.一种TLB异常处理装置,其特征在于,包括:
获取模块,用于获取第一参数;所述第一参数包括触发TLB异常的异常类型以及目标虚拟地址对应的页表条目;
所述获取模块包括第一查找子模块,用于当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目;
当所述触发所述TLB异常的异常类型为TLB加载异常时,所述获取模块还包括:
第一设置子模块,用于当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中时,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,以及将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态;
修改模块,用于将预设通用寄存器中的第二参数修改为所述第一参数;
调用模块,用于将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
处理模块,用于根据所述第一参数,在所述宿主机中进行TLB异常处理。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
保存模块,用于保存所述预设通用寄存器中的所述第二参数;
所述装置还包括:
恢复模块,用于将所述预设通用寄存器中的所述第一参数恢复为所述第二参数。
10.根据权利要求8所述的装置,其特征在于,所述第一参数还包括触发所述TLB异常的目标虚拟地址、所述目标虚拟地址的访问操作类型、TLB映射的页的类型和页内偏移量。
11.根据权利要求10所述的装置,其特征在于,所述处理模块包括:
获取子模块,用于当所述目标虚拟地址的访问操作类型为与所述TLB相关的访问操作类型时,根据所述页表条目,在所述宿主机中获取所述目标虚拟地址对应的目标物理地址;
填写子模块,用于根据所述目标物理地址、所述触发所述TLB异常的目标虚拟地址、所述触发所述TLB异常的异常类型、所述TLB映射的页的类型和所述页内偏移量,填写所述TLB;
返回子模块,用于当所述TLB填写完毕时,所述TLB异常处理完成,返回至出现所述虚拟机。
12.根据权利要求8-11任一项所述的装置,其特征在于,所述获取模块还包括:
第二查找子模块,用于当所述目标虚拟地址有效但不是用户态虚拟地址时,从主内核页全局目录的指针中查找所述目标虚拟地址对应的页表条目。
13.根据权利要求8所述的装置,其特征在于,所述触发所述TLB异常的异常类型为TLB存储异常;
所述获取模块还包括:
第二设置子模块,用于当所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中,且所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
14.根据权利要求8所述的装置,其特征在于,所述触发所述TLB异常的异常类型为TLB修改异常;
所述获取模块还包括:
第三设置子模块,用于当所述页表条目中的可写属性位指示所述目标页或目标页表可写时,将所述页表条目中的脏位属性位设置为指示所述目标页或目标页表已被写过的状态,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态,以及将所述页表条目中的修改属性位设置为指示所述目标页或目标页表已被修改的状态。
15.一种电子设备,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获取第一参数;所述第一参数包括触发TLB异常的异常类型以及目标虚拟地址对应的页表条目;所述获取第一参数包括:当所述目标虚拟地址是有效的用户态虚拟地址时,从当前运行进程的页全局目录中查找所述目标虚拟地址对应的页表条目之后,当所述触发TLB异常的异常类型为TLB加载异常且所述页表条目中的存在属性位指示所述页表条目所指向的目标页或目标页表存在于物理内存中时,将所述页表条目中的有效属性位设置为指示所述目标页或目标页表有效的状态,以及将所述页表条目中的访问属性位设置为指示所述目标页或目标页表已被访问的状态;
将预设通用寄存器中的第二参数修改为所述第一参数;
将所述第一参数作为超级调用接口的调用参数,通过所述超级调用接口,从出现所述TLB异常的虚拟机跳转至宿主机;
根据所述第一参数,在所述宿主机中进行TLB异常处理。
16.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-7中一个或多个所述的TLB异常处理方法。
CN201911195324.4A 2019-11-28 2019-11-28 Tlb异常处理方法、装置、电子设备及储存介质 Active CN110990180B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911195324.4A CN110990180B (zh) 2019-11-28 2019-11-28 Tlb异常处理方法、装置、电子设备及储存介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911195324.4A CN110990180B (zh) 2019-11-28 2019-11-28 Tlb异常处理方法、装置、电子设备及储存介质

Publications (2)

Publication Number Publication Date
CN110990180A CN110990180A (zh) 2020-04-10
CN110990180B true CN110990180B (zh) 2023-04-07

Family

ID=70087871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911195324.4A Active CN110990180B (zh) 2019-11-28 2019-11-28 Tlb异常处理方法、装置、电子设备及储存介质

Country Status (1)

Country Link
CN (1) CN110990180B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077379B (zh) * 2020-08-19 2024-03-26 华为技术有限公司 一种计算机设备、异常处理的方法以及中断处理的方法
CN115774574A (zh) * 2021-09-06 2023-03-10 华为技术有限公司 一种操作系统内核切换方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
CN101557420A (zh) * 2009-03-31 2009-10-14 北京航空航天大学 虚拟机监控器高效网络通信的实现方法
CN105677480A (zh) * 2015-12-31 2016-06-15 杭州华为数字技术有限公司 一种数据处理方法及装置
CN108196934A (zh) * 2016-12-08 2018-06-22 阿里巴巴集团控股有限公司 一种定时器的定时设置方法、装置和虚拟化设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
CN101557420A (zh) * 2009-03-31 2009-10-14 北京航空航天大学 虚拟机监控器高效网络通信的实现方法
CN105677480A (zh) * 2015-12-31 2016-06-15 杭州华为数字技术有限公司 一种数据处理方法及装置
CN108196934A (zh) * 2016-12-08 2018-06-22 阿里巴巴集团控股有限公司 一种定时器的定时设置方法、装置和虚拟化设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
跨平台x86系统虚拟机存储子系统优化;董卫宇等;《计算机工程与设计》;20150416;第36卷(第04期);第1004-1008页、第1083页 *

Also Published As

Publication number Publication date
CN110990180A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
US10705780B2 (en) Method, device, and storage medium for displaying application page
CN108415739B (zh) 一种动态链接库函数的钩挂方法、装置和存储介质
CN108984225B (zh) 快速启动寄宿应用的方法及设备
US10114756B2 (en) Externally programmable memory management unit
US11455075B2 (en) Display method when application is exited and terminal
CN110990180B (zh) Tlb异常处理方法、装置、电子设备及储存介质
CN109947671B (zh) 一种地址转换方法、装置、电子设备及储存介质
JP7210600B2 (ja) 分岐予測回路及びその制御方法
CN114546897A (zh) 内存访问方法、装置、电子设备及存储介质
CN110597740A (zh) 共享存储空间的访问方法、装置以及系统和存储介质
CN109725943B (zh) 一种程序跳转方法、装置、电子设备及存储介质
CN115145735A (zh) 一种内存分配方法、装置和可读存储介质
CN114416178A (zh) 数据访问方法、装置及非临时性计算机可读存储介质
CN115640083A (zh) 一种可提升动效性能的屏幕刷新方法及设备
CN114610656A (zh) 一种数据替换方法、装置、电子设备及存储介质
CN112306702A (zh) 数据共享方法、装置、电子设备及储存介质
CN110874259A (zh) 程序执行方法、装置、设备和存储介质
CN114490442B (zh) 文件片段调整方法及电子设备
WO2024067348A2 (zh) 内存分配器确定方法、装置、电子设备及存储介质
CN115964127A (zh) 指令分派方法、解释器、电子设备及存储介质
CN116775514A (zh) 内存管理方法、装置、设备及存储介质
CN108255569B (zh) 一种虚拟机调用定制化硬件的方法及装置
CN116932291A (zh) 一种微处理器的随机验证方法、装置及电子设备
CN114528200A (zh) 动态修改指令的方法、装置、电子设备及储存介质
CN116107693A (zh) 一种iotlb表项固定方法、装置、电子设备及存储介质

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
CB02 Change of applicant information

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Applicant after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant