CN115004158A - 在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序 - Google Patents

在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序 Download PDF

Info

Publication number
CN115004158A
CN115004158A CN202080093811.4A CN202080093811A CN115004158A CN 115004158 A CN115004158 A CN 115004158A CN 202080093811 A CN202080093811 A CN 202080093811A CN 115004158 A CN115004158 A CN 115004158A
Authority
CN
China
Prior art keywords
processor
memory addresses
virtual memory
addresses
virtual
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
Application number
CN202080093811.4A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN115004158A publication Critical patent/CN115004158A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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
    • 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/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了用于在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序。所公开实施例中的至少一些实施例可以利用处理器的内存管理设备通过将不同的可执行代码块映射到不同的运行核上的方式,将应用代码使用的虚拟内存地址映射到计算机系统的硬件内存总线使用的物理内存地址。因此,对于支持给定扩展的核,提供了以简单直接的方式使用所述支持的扩展且开销非常小的代码块,而对于不支持给定扩展的核,提供了使用更基础和/或基本指令模拟所述不支持的扩展的替换代码块。

Description

在多核处理器上执行扩展集中的处理器指令的设备、方法和 计算机程序
技术领域
本发明涉及计算机硬件领域,更具体地,涉及在多核处理器上执行扩展集中的处理器指令,以及相关设备、方法和计算机程序。
背景技术
如今,计算机系统通常具有包括多个处理器核(例如逻辑核)的处理器。例如,计算机系统可以具有任意数量的物理处理器,其中包括任意数量的独立执行机器代码的逻辑处理器核。处理器核可以从内存获取处理器指令用于执行。
通常,所有处理器核都支持通用的基础指令集。然而,除了基础指令之外,处理器指令集还可以包括一个或多个扩展集,这些扩展集可以不被所有处理器核支持。
例如,在对称的多处理系统上,给定运行应用的给定执行流(或线程)可以在不同的时间在不同的处理器核上运行。因此,除非应用代码是根据所有处理器核支持的通用扩展子集编写的,否则线程可能会运行需要扩展的应用代码,即使正在运行的处理器核不支持该扩展。这可能导致未定义的指令异常或其它不当行为。
然而,仅由处理器核子集支持的扩展可以为应用提供有用的运行时服务,例如安全增强或性能优化。因此,即使只有一些核支持指令集扩展,也希望能够在多核处理器上执行依赖于扩展的代码。
一种现有技术方案是将执行流“固定(pin)”到已知支持扩展的核或核集。但是,这降低了操作系统的调度程序组件选择在给定时间在给定核上运行哪个执行流的灵活性。这也带来了安全性和/或安全限制,因为典型的用户或第三方应用没有必要的权限来“固定”自己的执行流。
上述固定的变体包括首先将执行流固定到当前核,然后检查核能力,并且仅在支持扩展时使用扩展。否则,将使用其它扩展。这具有相同的限制,当运行时不支持扩展时,可能会慢得多。
另一种现有技术方案包括盲目使用扩展,即使核不支持。这也被称为“捕获和模拟(trap-and-emulate)”。这通常不适用,但在某些特定情况下,这将触发“未定义指令”异常,操作系统(operating system,OS)可以捕获该异常。当OS捕获到该异常时,它可以确定扩展中的失败指令是什么,并使用不同的实现方式模拟它。这相当缓慢,因为它涉及异常处理,这扰乱了流程核执行管道上的最佳执行流。
发明内容
提供本发明内容是为了以简化的形式引入概念的选择,这些概念将在以下具体实施方式中进行进一步的描述。本发明内容的目的旨在识别权利要求书保护的主题的关键特征或必要特征,也非旨在限制权利要求书保护的主题的范围。
本发明的一个目的是允许在多核处理器上执行扩展集处理器指令。上述和其它目的通过独立权利要求的特征实现。其它实现方式在从属权利要求、说明书和附图中显而易见。
根据本发明的第一方面,提供了一种用于处理器的内存管理设备。所述处理器包括能够执行第一扩展集中的处理器指令的第一处理器核和不能执行所述第一扩展集中的所述处理器指令的第二处理器核。所述内存管理设备用于获取待执行的处理器指令。所述内存管理设备还用于访问用于待执行的处理器指令的内存映射的转换表。所述内存管理设备还用于根据所述转换表对所述处理器指令应用内存映射。所述内存管理设备用于根据所述转换表通过以下方式应用所述内存映射:将第一处理器指令分支到第一物理内存地址集中的第一代码块用于执行,所述第一处理器指令用于所述第一处理器核并包括在所述第一扩展集中。所述内存管理设备还用于根据所述转换表通过以下方式应用所述内存映射:将第二处理器指令分支到第二物理内存地址集中的第二代码块中模拟,所述第二处理器指令用于所述第二处理器核并包括在所述第一扩展集中。根据本发明的第一方面所述的内存管理设备有助于在即使只有一些核支持指令集扩展,可以在多核处理器上执行依赖于扩展的代码。根据本发明的第一方面所述的内存管理设备可以动态和半透明地确定正在运行的核是否支持给定的扩展。如果所述运行的核支持扩展,则可以使用所述扩展。如果所述运行的核不支持扩展,则可以使用替代模拟代码。根据本发明的第一方面所述的内存管理设备在支持扩展的处理器核上产生非常小的开销,从而在这种情况下有非常好的性能。即使处理器核不支持扩展,根据本发明的第一方面所述的内存管理设备仍然产生比捕获和模拟等方法更少的开销。与捕获和模拟方法不同,根据本发明的第一方面所述的内存管理设备不需要扩展指令必须触发未定义指令异常的先决条件。根据本发明的第一方面所述的内存管理设备还有助于避免与固定方法关联的安全性、安全和灵活性限制。
在所述第一方面的一种实现方式中,所述转换表包括所述第一物理内存地址集,包括用于执行所述第一处理器核的处理器指令的第一代码块。所述转换表还包括所述第二物理内存地址集,包括用于模拟所述第二处理器核的处理器指令的第二代码块。所述转换表还包括第三物理内存地址集,每个物理内存地址包括到第一虚拟内存地址集中的第一虚拟内存地址的第一分支指令。所述转换表还包括第四物理内存地址集,每个物理内存地址包括到第二虚拟内存地址集中的第二虚拟内存地址的第二分支指令。所述实现方式可以利用所述内存管理设备通过将不同的可执行代码块映射到不同的运行核上的方式,将应用代码使用的虚拟内存地址映射到计算机系统的硬件内存总线使用的物理内存地址中,使得对于支持给定扩展的核,提供了以简单的方式使用支持的扩展的这种代码块(因此具有非常小的开销),对于不支持给定扩展的核,提供了用更基础和/或基本指令模拟不支持的扩展的替换代码块。
在所述第一方面的一种实现方式中,所述转换表还包括所述第一虚拟内存地址集,每个虚拟内存地址映射到用于执行所述第一物理内存地址集中的处理器指令的第一代码块中的一个第一代码块。所述转换表还包括所述第二虚拟内存地址集,每个虚拟内存地址映射到用于模拟所述第二物理内存地址集中的处理器指令的所述第二代码块中的一个第二代码块。所述转换表还包括第三虚拟内存地址集,每个虚拟内存地址映射到所述第一处理器核的所述第三物理内存地址集中的一个物理内存地址和所述第二处理器核的所述第四物理内存地址集中的一个物理内存地址。所述实现方式可以利用所述内存管理设备通过将不同的可执行代码块映射到不同的运行核上的方式,将应用代码使用的虚拟内存地址映射到计算机系统的硬件内存总线使用的物理内存地址中,使得对于支持给定扩展的核,提供了以简单的方式使用支持的扩展的这种代码块(因此具有非常小的开销),对于不支持给定扩展的核,提供了用更基础和/或基本指令模拟不支持的扩展的替换代码块。
在所述第一方面的一种实现方式中,所述内存管理设备还用于将所述第一处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第三物理内存地址集中的物理内存地址。所述内存管理设备还用于将所述第一处理器指令分支到所述第一虚拟内存地址集中的虚拟内存地址,从而将所述第一虚拟内存地址集中的所述虚拟内存地址映射到所述第一物理内存地址集中的物理内存地址中的第一代码块用于执行。所述实现方式有助于在不同类型的处理器的相同虚拟地址上映射来自不同物理地址的不同代码,从而使用内存管理设备作为有能力处理器和无能力处理器之间的确定器。由于内存管理设备的功能经过了大量优化,因此所述确定器的执行时间开销非常低。
在所述第一方面的一种实现方式中,所述内存管理设备还用于将所述第二处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第四物理内存地址集中的物理内存地址。所述内存管理设备还用于将所述第二处理器指令分支到所述第二虚拟内存地址集中的虚拟内存地址,从而将所述第二虚拟内存地址集中的所述虚拟内存地址映射到所述第二物理内存地址集中的物理内存地址中的第二代码块用于执行。所述实现方式有助于在不同类型的处理器的相同虚拟地址上映射来自不同物理地址的不同代码,从而使用内存管理设备作为有能力处理器和无能力处理器之间的确定器。由于内存管理设备的功能经过了大量优化,因此所述确定器的执行时间开销非常低。
在所述第一方面的一种实现方式中,所述第三物理内存地址集的总大小等于所述第四物理内存地址集的总大小。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
在所述第一方面的一种实现方式中,所述第一虚拟内存地址集的总大小等于所述第一物理内存地址集的总大小。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
在所述第一方面的一种实现方式中,所述第二虚拟内存地址集的总大小等于所述第二虚拟内存地址集的总大小。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
在所述第一方面的一种实现方式中,所述第二处理器核禁用所述第一虚拟内存地址集。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
根据本发明的第二方面,提供了一种处理器。所述处理器包括能够执行第一扩展集中的处理器指令的第一处理器核。所述处理器还包括不能执行所述第一扩展集中的所述处理器指令的第二处理器核。所述处理器还包括根据第一方面所述的内存管理设备。根据本发明的第二方面所述的包括在所述处理器中的内存管理设备有助于在即使只有一些核支持指令集扩展,可以在多核处理器上执行依赖于扩展的代码。根据本发明的第二方面所述的包括在所述处理器中的内存管理设备可以动态和半透明地确定正在运行的核是否支持给定的扩展。如果所述运行的核支持扩展,则可以使用所述扩展。如果所述运行的核不支持扩展,则可以使用替代模拟代码。根据本发明的第二方面所述的包括在所述处理器中的内存管理设备在支持扩展的处理器核上产生非常小的开销,从而在这种情况下有非常好的性能。即使处理器核不支持扩展,根据本发明的第二方面所述的内存管理设备仍然产生比捕获和模拟等方法更少的开销。与捕获和模拟方法不同,根据本发明的第二方面所述的包括在所述处理器中的内存管理设备不需要扩展指令必须触发未定义指令异常的先决条件。根据本发明的第二方面所述的包括在所述处理器中的内存管理设备还有助于避免与固定方法关联的安全性、安全和灵活性限制。
根据本发明的第三方面,提供了一种用于处理器的内存管理方法。所述处理器包括能够执行第一扩展集中的处理器指令的第一处理器核和不能执行所述第一扩展集中的所述处理器指令的第二处理器核。所述方法包括:内存管理设备获取待执行的处理器指令。所述方法还包括:所述内存管理设备访问用于所述待执行的处理器指令的内存映射的转换表。所述方法还包括:所述内存管理设备根据所述转换表,将内存映射应用于所述处理器指令。所述根据所述转换表应用所述内存映射包括:将第一处理器指令分支到第一物理内存地址集中的第一代码块用于执行,所述第一处理器指令用于所述第一处理器核并包括在所述第一扩展集中。所述根据所述转换表应用所述内存映射还包括:将第二处理器指令分支到第二物理内存地址集中的第二代码块中模拟,所述第二处理器指令用于所述第二处理器核并包括在所述第一扩展集中。根据本发明的第三方面所述的方法有助于在即使只有一些核支持指令集扩展,可以在多核处理器上执行依赖于扩展的代码。根据本发明的第三方面所述的方法可以动态和半透明地确定正在运行的核是否支持给定的扩展。如果所述运行的核支持扩展,则可以使用所述扩展。如果所述运行的核不支持扩展,则可以使用替代模拟代码。根据本发明的第三方面所述的方法在支持扩展的处理器核上产生非常小的开销,从而在这种情况下有非常好的性能。即使处理器核不支持扩展,根据本发明的第三方面所述的方法仍然产生比捕获和模拟等方法更少的开销。与捕获和模拟方法不同,根据本发明的第三方面所述的方法不需要扩展指令必须触发未定义指令异常的先决条件。根据本发明的第三方面所述的方法还有助于避免与固定方法关联的安全性、安全和灵活性限制。
在所述第三方面的一种实现方式中,所述转换表包括所述第一物理内存地址集,包括用于执行所述第一处理器核的处理器指令的第一代码块。所述转换表还包括所述第二物理内存地址集,包括用于模拟所述第二处理器核的处理器指令的第二代码块。所述转换表还包括第三物理内存地址集,每个物理内存地址包括到第一虚拟内存地址集中的第一虚拟内存地址的第一分支指令。所述转换表还包括第四物理内存地址集,每个物理内存地址包括到第二虚拟内存地址集中的第二虚拟内存地址的第二分支指令。所述实现方式可以利用所述内存管理设备通过将不同的可执行代码块映射到不同的运行核上的方式,将应用代码使用的虚拟内存地址映射到计算机系统的硬件内存总线使用的物理内存地址中,使得对于支持给定扩展的核,提供了以简单的方式使用支持的扩展的这种代码块(因此具有非常小的开销),对于不支持给定扩展的核,提供了用更基础和/或基本指令模拟不支持的扩展的替换代码块。
在所述第三方面的一种实现方式中,所述转换表还包括所述第一虚拟内存地址集,每个虚拟内存地址映射到用于执行所述第一物理内存地址集中的处理器指令的第一代码块中的一个第一代码块。所述转换表还包括所述第二虚拟内存地址集,每个虚拟内存地址映射到用于模拟所述第二物理内存地址集中的处理器指令的所述第二代码块中的一个第二代码块。所述转换表还包括第三虚拟内存地址集,每个虚拟内存地址映射到所述第一处理器核的所述第三物理内存地址集中的一个物理内存地址和所述第二处理器核的所述第四物理内存地址集中的一个物理内存地址。所述实现方式可以利用所述内存管理设备通过将不同的可执行代码块映射到不同的运行核上的方式,将应用代码使用的虚拟内存地址映射到计算机系统的硬件内存总线使用的物理内存地址中,使得对于支持给定扩展的核,提供了以简单的方式使用支持的扩展的这种代码块(因此具有非常小的开销),对于不支持给定扩展的核,提供了用更基础和/或基本指令模拟不支持的扩展的替换代码块。
在所述第三方面的一种实现方式中,所述方法还包括:将所述第一处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第三物理内存地址集中的物理内存地址。所述方法还包括:将所述第一处理器指令分支到所述第一虚拟内存地址集中的虚拟内存地址,从而将所述第一虚拟内存地址集中的所述虚拟内存地址映射到所述第一物理内存地址集中的物理内存地址中的第一代码块用于执行。所述实现方式有助于在不同类型的处理器的相同虚拟地址上映射来自不同物理地址的不同代码,从而使用内存管理设备作为有能力处理器和无能力处理器之间的确定器。由于内存管理设备的功能经过了大量优化,因此所述确定器的执行时间开销非常低。
在所述第三方面的一种实现方式中,所述方法还包括:将所述第二处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第四物理内存地址集中的物理内存地址。所述方法还包括:将所述第二处理器指令分支到所述第二虚拟内存地址集中的虚拟内存地址,从而将所述第二虚拟内存地址集中的所述虚拟内存地址映射到所述第二物理内存地址集中的物理内存地址中的第一代码块用于模拟。所述实现方式有助于在不同类型的处理器的相同虚拟地址上映射来自不同物理地址的不同代码,从而使用内存管理设备作为有能力处理器和无能力处理器之间的确定器。由于内存管理设备的功能经过了大量优化,因此所述确定器的执行时间开销非常低。
在所述第三方面的一种实现方式中,所述第三物理内存地址集的总大小等于所述第四物理内存地址集的总大小。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
在所述第三方面的一种实现方式中,所述第一虚拟内存地址集的总大小等于所述第一物理内存地址集的总大小。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
在所述第三方面的一种实现方式中,所述第二虚拟内存地址集的总大小等于所述第二虚拟内存地址集的总大小。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
在所述第三方面的一种实现方式中,所述第二处理器核禁用所述第一虚拟内存地址集。所述实现方式有助于在即使只有一些核支持指令集扩展,可以在多核处理器上有效执行依赖于扩展的代码。
根据本发明的第四方面,提供了一种计算机程序。所述计算机程序包括程序代码,当所述计算机程序在计算机上执行时,所述程序代码用于执行根据第三方面所述的方法。根据本发明的第四方面所述的计算机程序有助于在即使只有一些核支持指令集扩展,可以在多核处理器上执行依赖于扩展的代码。根据本发明的第四方面所述的计算机程序可以动态和半透明地确定正在运行的核是否支持给定的扩展。如果所述运行的核支持扩展,则可以使用所述扩展。如果所述运行的核不支持扩展,则可以使用替代模拟代码。根据本发明的第四方面所述的计算机程序在支持扩展的处理器核上产生非常小的开销,从而在这种情况下有非常好的性能。即使处理器核不支持扩展,根据本发明的第四方面所述的计算机程序仍然产生比捕获和模拟等方法更少的开销。与捕获和模拟方法不同,根据本发明的第四方面所述的计算机程序不需要扩展指令必须触发未定义指令异常的先决条件。根据本发明的第四方面所述的计算机程序还有助于避免与固定方法关联的安全性、安全和灵活性限制。
参考下文结合附图进行的详细描述,许多特征将变得更加清晰,因此更易理解。
附图说明
下文将参考以下附图详细描述示例性实施例,其中:
图1为处理器和内存管理设备的框图;
图2为本发明一个实施例提供的方法的流程图;
图3为示例性实施例提供的内存映射的图。
在下文中,相同参考符号是指相同或至少在功能上等效的特征。
具体实施方式
在下面的描述中,参考附图,这些附图构成本发明的一部分,并通过说明的方式示出了本发明可以适用的具体方面。可以理解的是,在不脱离本发明范围的情况下,可以利用其它方面,并可以做出结构上或逻辑上的改变。因此,以下详细描述不应以限制性的意义来理解,因为本发明的范围由所附权利要求书限定。
可以理解的是,与所描述的方法有关的公开内容对于与用于执行方法对应的设备或系统也同样适用,反之亦然。例如,如果描述了特定的方法步骤,则对应的设备可以包括执行所描述的方法步骤的单元,即使在附图中没有明确描述或示出这样的单元。另一方面,例如,如果基于功能单元来描述特定装置或设备,则对应方法可以包括执行所描述的功能的步骤,即使此类步骤在附图中未明确描述或示出。此外,应理解,除非另外明确说明,否则本文中描述的各种示例性方面的特征可以相互组合。
在下文中,提供了内存管理单元(memory management unit,MMU)的一般描述。
例如,如今,应用处理器被设计为支持虚拟内存系统。在处理器上执行的软件只看到虚拟地址,处理器将虚拟地址转换为物理地址。这些物理地址被呈现给内存系统,并指向内存中的实际物理位置。
虚拟地址通过映射转换为物理地址。虚拟地址和物理地址之间的映射可以存储在例如转换表(也称为页表)中。转换表可以存储在内存中,并由OS内核或虚拟机管理程序等适当软件管理。
内存管理单元可以执行转换。例如,MMU可以包括表走单元(table walk unit),该表走单元包括从内存读取转换表的逻辑。MMU还可以包括一个或多个转换监视缓冲器(translation lookaside buffer,TLB),缓存最近使用的转换。
软件发布的内存地址通常是虚拟的。这些内存地址被传递给MMU,MMU可能会检查TLB中最近使用的缓存转换。如果MMU找不到最近缓存的转换,则表走单元可以从内存中读取合适的一个或多个表项。在内存访问发生之前,虚拟地址被转换为物理地址,因为需要知道正在访问的物理内存位置。
如下面将更详细地讨论,本发明的各方面提供了一种机制,当计算机系统具有多个处理器核,并且一些但不是全部核能够执行处理器指令时,以最小的性能成本执行所述指令。这是通过利用内存管理设备动态和半透明地确定正在运行的核是否支持给定扩展来实现的。如果所述运行的核支持扩展,则可以使用所述扩展。如果所述运行的核不支持扩展,则可以使用替代模拟代码。
换句话说,所公开实施例中的至少一些实施例可以利用所述内存管理设备通过将不同的可执行代码块映射到不同的运行核上的方式,将应用代码使用的虚拟内存地址映射到计算机系统的硬件内存总线使用的物理内存地址中,使得对于支持给定扩展的核,提供了以简单的方式使用所述支持的扩展的代码块(因此具有非常小的开销),对于不支持给定扩展的核,提供了使用更基础和/或基本指令模拟所述不支持的扩展的替换代码块。
接下来,结合图1描述处理器100和处理器100的内存管理设备130的示例性实施例。所描述的设备的一些特征是提供其它优点的可选特征。
图1为处理器100和内存管理设备130的框图。此外,图1示出了内存150和连接处理器100和内存150的总线150。
处理器100包括能够执行第一扩展集中的处理器指令的第一处理器核110。处理器100还包括不能执行第一扩展集中的处理器指令的第二处理器核120。例如,第一处理器核110和/或第二处理器核120可以是逻辑处理器核。
换句话说,处理器指令包括所有处理器核支持的通用基础指令集。除了基础指令之外,处理器指令集还包括至少一个扩展集,这些扩展集不被所有处理器核支持。
处理器指令可以包括例如以下一个或多个:数据处理和内存操作(例如将寄存器设置为固定常量值、将数据从内存位置复制到寄存器或从寄存器复制到内存位置、从硬件设备读取和写入数据)、算术和逻辑运算(例如加、减、乘或除两个寄存器的值,执行按位运算(例如,取一对寄存器中相应位的合取或析取),比较寄存器中的两个值,用于浮点数算术的浮点指令)、控制流操作(例如分支到程序中的另一个位置并在那里执行指令,如果某个条件成立,有条件地分支到另一个位置,间接分支到另一个位置,调用另一个代码块,同时将下一个指令的位置保存为要返回的点)、协处理器指令(例如在协处理器中加载/存储数据、执行协处理器操作)、一次在内存之间传输多个寄存器、移动大内存块、复杂的整数和浮点算术(例如,平方根或超越函数,例如对数、正弦、余弦等)、单指令多数据(singleinstruction multiple data,SIMD)指令(并行对许多同质值执行操作的单指令)、原子测试和设置指令或其它读-修改-写原子指令,和/或使用内存中的操作数而不是寄存器等执行算术逻辑单元(arithmetic logic unit,ALU)运算。
应理解,虽然在图1的示例中公开了两个处理器核和一个处理器指令的扩展集,但处理器核和/或扩展集的数量可以更大。
处理器100可以包括例如各种处理设备中的一个或多个,例如,应用处理器、协处理器、微处理器、控制器、数字信号处理器(digital signal processor,DSP)、伴有或不伴有DSP的处理电路,或者包括集成电路的各种其它处理设备,例如,专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、微控制器单元(microcontroller unit,MCU)、硬件加速器、专用计算机芯片等。处理器100可以包括在对称多处理系统和/或单指令多数据(singleinstruction,multiple data,SIMD)系统中。
在一个示例中,例如,处理器100可以包括高级精简指令集计算机(reducedinstruction set computer,RISC)机器(advanced RISC machine,ARM)处理器。在本示例中,基础指令集可以包括例如ARMv8 64位(AArch64)等指令集,并且扩展集可以包括ARMv8.3-PAuth(指针验证)、ARMv8.5-BTI(分支目标指示器)和/或ARMv8-5-MTE(内存标记)扩展。
内存140可以用于存储计算机程序等。内存140可以包括一个或多个易失性内存设备、一个或多个非易失性内存设备和/或一个或多个易失性内存设备和非易失性内存设备的组合。例如,内存140可以实施为半导体内存(例如掩模ROM、可编程ROM(programmableROM,PROM)、可擦除PROM(erasable PROM,EPROM)、闪存ROM、随机存取内存(random accessmemory,RAM)等)。
处理器100还包括内存管理设备130,例如,内存管理单元(memory managementunit,MMU)。内存管理设备130可以由软件组件控制或操作,例如,操作系统(operatingsystem,OS)内核或虚拟机管理程序。这里,操作系统可以包括Linux等。
内存管理设备130用于获取待执行的处理器指令。待执行的处理器指令可以包括例如上面讨论的示例之一。内存管理设备130还用于访问用于待执行的处理器指令的内存映射的转换表。转换表可以存储在内存140等内存中。内存管理设备130还用于根据转换表将内存映射应用于处理器指令。也就是说,转换表用于存储虚拟地址转换为物理地址的映射。
内存管理设备130用于根据转换表通过以下方式应用内存映射:将第一处理器指令分支到第一物理内存地址集中的第一代码块(或代码序列)用于执行。第一处理器指令用于第一处理器核110并包括在第一扩展集中。
图3为示例性实施例提供的内存映射的图300。图300示出了具有扩展的虚拟内存301、物理内存302和没有扩展的虚拟内存303。图300示出了由负责MMU 130的系统软件组件待分配的4个物理内存地址集。实际上,这可以是例如使用MMU地址转换的第一阶段等操作系统(例如Linux)内核。或者,可以是例如使用MMU地址转换的第二阶段等虚拟机管理程序。在图300中,4个物理内存地址集包括集合PC1,集合PC1包括用于具有扩展的核的代码块C1。也就是说,在图3的示例中,集合PC1表示第一物理内存地址集,代码块C1表示用于执行的第一代码块。
内存管理设备130还用于根据转换表通过以下方式应用内存映射:将第二处理器指令分支到第二物理内存地址集中的第二代码块(或代码序列)用于模拟。第二处理器指令用于第二处理器核120并包括在第一扩展集中。继续上述示例,在图300中,4个物理内存地址集还包括集合PC2,集合PC2包括用于不具有扩展的核的代码块C2。也就是说,在图3的示例中,集合PC2表示第二物理内存地址集,代码块C2表示用于模拟的第二代码块。
下文根据示例性实施例更详细地描述第一处理器指令的分支和第二处理器指令的分支。
如上文所讨论,转换表可以包括第一物理内存地址集,包括用于执行第一处理器核110的处理器指令的第一代码块。转换表还可以包括第二物理内存地址集,包括用于模拟第二处理器核120的处理器指令的第二代码块。
转换表还可以包括第三物理内存地址集,每个物理内存地址包括到第一虚拟内存地址集中的第一虚拟内存地址的第一分支指令。继续上面的示例,在图300中,4个物理内存地址集还包括集合PD1,集合PD1包括调度(分支)指令,每个指令分支到集合VC1(下文描述)中给定代码块的虚拟地址。也就是说,在图3的示例中,集合PD1表示第三物理内存地址集。
转换表还可以包括第四物理内存地址集,每个物理内存地址包括到第二虚拟内存地址集中的第二虚拟内存地址的第二分支指令。继续上面的示例,在图300中,4个物理内存地址集还包括集合PD2,集合PD2包括调度指令,每个指令分支到集合VC2(下文描述)中给定代码块的虚拟地址。也就是说,在图3的示例中,集合PD2表示第四物理内存地址集。在一个实施例中,第三物理内存地址集的总大小等于第四物理内存地址集的总大小。在图300中,集合PD2的总大小与集合PD1的总大小相同。
转换表还可以包括第一虚拟内存地址集,每个虚拟内存地址映射到用于执行第一物理内存地址集中的处理器指令的第一代码块中的一个第一代码块。在一个实施例中,第一虚拟内存地址集的总大小等于第一物理内存地址集的总大小。在一个实施例中,第一虚拟内存地址集对第二处理器核120禁用(例如,未映射、无效或没有内存访问权限)。换句话说,在本实施例中,第一虚拟内存地址集仅对第一处理器核110启用。继续上面的示例,在图300中,提供了三个虚拟内存地址集(VA)来映射内存分配。内存管理设备130可以用于将集合VC1映射到PC1内存。也就是说,在图3的示例中,集合VC1表示第一虚拟内存地址集。集合VC1具有与集合PC1相同的总大小。集合VC1仅映射在具有扩展的核上。在其它核上,与集合VC1相对应的VA范围未映射/无效或没有内存访问权限。
转换表还可以包括第二虚拟内存地址集,每个虚拟内存地址映射到用于模拟第二物理内存地址集中的处理器指令的第二代码块中的一个第二代码块。在一个实施例中,第二虚拟内存地址集的总大小等于第二物理内存地址集的总大小。在一个实施例中,第二虚拟内存地址集对第二处理器核120启用,并且对第一处理器核110启用或禁用。继续上述示例,在图300中,内存管理设备130可以用于将集合VC2映射到PC2内存。也就是说,在图3的示例中,集合VC2表示第二虚拟内存地址集。集合VC2具有与集合PC2相同的总大小。集合VC2映射在没有扩展的核上。集合VC2可以映射到具有扩展的核上,也可以不映射到具有扩展的核上。
转换表还可以包括第三虚拟内存地址集,每个虚拟内存地址映射到第一处理器核110的第三物理内存地址集中的一个物理内存地址和第二处理器核120的第四物理内存地址集中的一个物理内存地址。在一个实施例中,第三虚拟内存地址集的总大小等于第三物理内存地址集的总大小(并且也等于第四物理内存地址集的总大小)。继续上述示例,在图300中,内存管理设备130可以用于将集合VD映射到集合PD1也可以映射到集合PD2。在具有扩展的核上,内存管理设备130可以用于将集合VD映射到集合PD1。在没有扩展的核上,内存管理设备130可以用于将集合VD映射到集合PD2。也就是说,在图3的示例中,集合VD表示第三虚拟内存地址集。集合VD具有与集合PD1相同的总大小(并且也具有与集合PD2相同的总大小)。
内存管理设备130还可以用于将第一处理器指令分支到第三虚拟内存地址集中的虚拟内存地址,从而将第三虚拟内存地址集中的所述虚拟内存地址映射到第三物理内存地址集中的物理内存地址。内存管理设备130还可以用于将第一处理器指令从第三物理内存地址集中的所述物理内存地址分支到第一虚拟内存地址集中的虚拟内存地址,从而将第一虚拟内存地址集中的所述虚拟内存地址映射到第一物理内存地址集中的物理内存地址中的第一代码块用于执行。
换句话说,继续图3的示例,当本机可执行应用代码打算调用来自扩展的指令时,它可以执行到VD范围内的VA的分支,而不是直接调用机器代码中的内联指令。对于扩展中的每个指令(至少是应用使用所需的指令),在集合PD1和集合PD2中的每个指令中可以有一个分支指令。
内存管理设备130还可以用于将第二处理器指令分支到第三虚拟内存地址集中的虚拟内存地址,从而将第三虚拟内存地址集中的所述虚拟内存地址映射到第四物理内存地址集中的物理内存地址。内存管理设备130还可以用于将第二处理器指令从第四物理内存地址集中的所述物理内存地址分支到第二虚拟内存地址集中的虚拟内存地址,从而将第二虚拟内存地址集中的所述虚拟内存地址映射到第二物理内存地址集中的物理内存地址中的第二代码块用于模拟。在图3的示例中示出,集合PD2中的分支指令也可以分支到集合PC2中的代码块(映射在VC2范围内),该代码块可以模拟原始指令。
从原始指令到分支的替换可以例如由应用开发人员(或,例如应用使用的软件库的开发人员)手动完成,或者,例如由编写应用的编程语言的编译器自动执行。
如果应用的执行流在支持扩展的核上运行代码,则它可能会在执行流的某个点在VC1范围内的VA上运行。如果在那个确切时间,执行流被迁移到另一个心,而迁移到的核不支持扩展,则应用可能会遇到错误指令。这是因为VC1范围在新的核上无效。在这种情况下,负责MMU的系统软件组件(例如OS内核或虚拟机管理程序)可以根据指令故障的VA检测这种情况。使用该VA,可以推断试图执行哪条指令,并通过将执行流移动到集合VC2中的相应VA来修复故障。
在下文中,描述了另一个示例,其中包含指令集扩展,该扩展增加了计算两个无符号整数平均值的指令:UADDH(无符号加半)。在本示例中,计算核寄存器r1和r2的平均值,并将结果存储在核寄存器r0中。
在支持UADDH的处理器核上,“UADDH r0,r1,r2”的代码块C1可能如下所示:
VC1_UADDH_R0_R1_R2:
UADDH r0,r1,r2
RETURN
在不支持UADDH的处理器核上,代码块C2可以是:
Figure BDA0003753663980000101
编译器可以用函数调用指令替换UADDH r0,r1,r2的出现到VD/PD1/PD2中的相应调度分支:
CALL[VD_UADDH_R0_R1_R2]
在VD中调度分支的地址,在支持扩展的处理器核上:
VD_UADDH_R0_R1_R2:
JUMP VC1_UADDH_R0_R1_R2
在不支持扩展的处理器核上:
VD_UADDR_R0_R1_R2:
JUMP VC2_UADDH_R0_R1_R2
这样,当代码运行并到达调用(CALL)指令(取代UADDH)时,执行流可以首先转移到[VD_UADDH_R0_R1_R2]。因此,如果执行核支持扩展,则跳转(JUMP)指令可以进一步将执行流转移到VC1_UADDH_R0_R1_R2,执行UADDH指令,然后在初始调用(CALL)之后返回(RETURN)流。相反,如果执行核不支持扩展,则跳转(JUMP)指令可以将执行流转移到VC2_UADDH_R0_R1_R2,执行UADDH的替代代码,然后返回(RETURN)。
如果执行流被中断并从支持核迁移到非支持核,同时从C1内执行UADDH或返回(RETURN)指令,则可能会触发故障。然后,系统可以检测到故障在VC1_UADDH_R0_R1_R2块内,将程序计数器更改为VC2_UADDH_R0_R1_R2,并恢复执行,从而对应用隐藏故障。
图2是实施例提供的用于处理器100的内存管理的方法200的框图。如上文中更详细地论述,处理器100包括能够执行第一扩展集中的处理器指令的第一处理器核110和不能执行第一扩展集中的处理器指令的第二处理器核120。
在操作202中,处理器100的内存管理设备130获取待执行的处理器指令。
在操作204中,内存管理设备130访问用于待执行的处理器指令的内存映射的转换表。
在操作206中,内存管理设备130根据转换表将内存映射应用于处理器指令。根据转换表应用内存映射包括将第一处理器指令分支到第一物理内存地址集中的第一代码块用于执行。第一处理器指令用于第一处理器核110并包括在第一扩展集中。根据转换表应用内存映射还包括将第二处理器指令分支到第二物理内存地址集中的第二代码块用于模拟。第二处理器指令用于第二处理器核120并包括在第一扩展集中。
方法200及其操作202至206可以由内存管理设备130执行。方法200的其它特征直接由内存管理设备130的功能和参数产生,因此在此不重复。方法200可以由计算机程序执行。
本文中描述的功能可以至少部分由一个或多个计算机程序产品组件(例如软件组件)执行。或者或另外,本文所描述的功能可至少部分由一个或多个硬件逻辑组件执行。例如但不限于,说明性的可用硬件逻辑组件的类型包括现场可编程门阵列(Field-programmable Gate Array,FPGA)、专用集成电路(Program-specific IntegratedCircuit,ASIC)、特殊应用标准产品(Program-specific Standard Product,ASSP)、片上系统(System-on-a-chip,SOC)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、图形处理器(和Graphics Processing Unit,GPU)。
本文中给出的任何范围或设备值均可延伸或更改,但不会失去所要效果。此外,除非明确禁止,否则任何实施例均可与另一实施例组合。
虽然已经以特定于结构特征和/或动作的语言描述了主题,但是应该理解的是,权利要求书定义的主题不必局限于上文描述的具体特征或动作。实际上,上文描述的具体特征和动作是作为实施权利要求的示例而公开的,并且其它等同特征和动作旨在属于权利要求书的范围内。
应理解,上述益处和优势可涉及一个实施例,也可涉及几个实施例。所述实施例不局限于解决任一或所有陈述问题的那些实施例或具有任一或所有陈述益处和优势的那些实施例。可进一步理解的是,“一个”条目的引用可以指这些条目中的一个或多个。
本文所描述的方法的步骤可按任何适合的次序进行,或在适当时同时进行。此外,可以在不脱离本文所述主题的精神和范围的情况下从任何方法中删除单独的方框。在不失去所要效果的情况下,任一上述实施例的各方面可与所描述的任一其它实施例的各方面组合以形成其它实施例。
本文中使用的术语“包括”是指包括所标识的方法、方框或元件,但此类方框或元件不包括独占列表,且方法或装置可包括其它方框或元件。
应当理解,以上描述仅通过示例给出,并且本领域技术人员可以进行各种修改。以上说明、示例和数据提供了对示例性实施例的结构和使用的完整说明。尽管以上已经以某种程度的特殊性或者参考一个或多个单独的实施例描述了各种实施例,但是本领域技术人员可以在不脱离本说明书的范围的情况下对所公开的实施例进行多种改变。

Claims (16)

1.一种用于处理器(100)的内存管理设备(130),其特征在于,所述处理器(100)包括能够执行第一扩展集中的处理器指令的第一处理器核(110)和不能执行所述第一扩展集中的所述处理器指令的第二处理器核(120),所述内存管理设备(130)用于:
获取待执行的处理器指令;
访问用于所述待执行的处理器指令的内存映射的转换表;
根据所述转换表,将内存映射应用于所述处理器指令,
其中,所述内存管理设备(130)用于根据所述转换表通过以下方式应用所述内存映射:
将第一处理器指令分支到第一物理内存地址集中的第一代码块用于执行,其中,所述第一处理器指令用于所述第一处理器核(110)并包括在所述第一扩展集中;
将第二处理器指令分支到第二物理内存地址集中的第二代码块用于模拟,其中,所述第二处理器指令用于所述第二处理器核(120)并包括在所述第一扩展集中。
2.根据权利要求1所述的内存管理设备(130),其特征在于,所述转换表包括:
所述第一物理内存地址集,包括用于执行所述第一处理器核(110)的处理器指令的第一代码块;
所述第二物理内存地址集,包括用于模拟所述第二处理器核(120)的处理器指令的第二代码块;
第三物理内存地址集,每个物理内存地址包括到第一虚拟内存地址集中的第一虚拟内存地址的第一分支指令;
第四物理内存地址集,每个物理内存地址包括到第二虚拟内存地址集中的第二虚拟内存地址的第二分支指令。
3.根据权利要求2所述的内存管理设备(130),其特征在于,所述转换表还包括:
所述第一虚拟内存地址集,每个虚拟内存地址映射到用于执行所述第一物理内存地址集中的处理器指令的所述第一代码块中的一个第一代码块;
所述第二虚拟内存地址集,每个虚拟内存地址映射到用于模拟所述第二物理内存地址集中的处理器指令的所述第二代码块中的一个第二代码块;
第三虚拟内存地址集,每个虚拟内存地址映射到所述第一处理器核(110)的所述第三物理内存地址集中的一个物理内存地址和所述第二处理器核(120)的所述第四物理内存地址集中的一个物理内存地址。
4.根据权利要求3所述的内存管理设备(130),其特征在于,所述内存管理设备(130)还用于:
将所述第一处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第三物理内存地址集中的物理内存地址;
将所述第一处理器指令分支到所述第一虚拟内存地址集中的虚拟内存地址,从而将所述第一虚拟内存地址集中的所述虚拟内存地址映射到所述第一物理内存地址集中的物理内存地址中的第一代码块用于执行。
5.根据权利要求3或4所述的内存管理设备(130),其特征在于,所述内存管理设备(130)还用于:
将所述第二处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第四物理内存地址集中的物理内存地址;
将所述第二处理器指令分支到所述第二虚拟内存地址集中的虚拟内存地址,从而将所述第二虚拟内存地址集中的所述虚拟内存地址映射到所述第二物理内存地址集中的物理内存地址中的第一代码块用于模拟。
6.根据权利要求2至5中任一项所述的内存管理设备(130),其特征在于,所述第三物理内存地址集的总大小等于所述第四物理内存地址集的总大小。
7.根据权利要求2至6中任一项所述的内存管理设备(130),其特征在于,所述第一虚拟内存地址集的总大小等于所述第一物理内存地址集的总大小。
8.根据权利要求2至7中任一项所述的内存管理设备(130),其特征在于,所述第二虚拟内存地址集的总大小等于所述第二物理内存地址集的总大小。
9.根据权利要求2至8中任一项所述的内存管理设备(130),其特征在于,所述第一虚拟内存地址集对所述第二处理器核(120)禁用。
10.一种处理器(100),其特征在于,包括:
第一处理器核(110),能够执行第一扩展集中的处理器指令;
第二处理器核(120),不能执行所述第一扩展集中的所述处理器指令;
根据权利要求1至9中任一项所述的内存管理设备(130)。
11.一种用于处理器的内存管理的方法(200),其特征在于,所述处理器包括能够执行第一扩展集中的处理器指令的第一处理器核和不能执行所述第一扩展集中的所述处理器指令的第二处理器核,所述方法(200)包括:
内存管理设备获取(202)待执行的处理器指令;
所述内存管理设备访问(204)用于所述待执行的处理器指令的内存映射的转换表;
所述内存管理设备根据所述转换表,将内存映射应用(206)于所述处理器指令,
其中,所述根据所述转换表应用(206)所述内存映射包括:
将第一处理器指令分支到第一物理内存地址集中的第一代码块用于执行,其中,所述第一处理器指令用于所述第一处理器核并包括在所述第一扩展集中;
将第二处理器指令分支到第二物理内存地址集中的第二代码块中模拟,其中,所述第二处理器指令用于所述第二处理器核并包括在所述第一扩展集中。
12.根据权利要求11所述的方法(200),其特征在于,所述转换表包括:
所述第一物理内存地址集,包括用于执行所述第一处理器核的处理器指令的第一代码块;
所述第二物理内存地址集,包括用于模拟所述第二处理器核的处理器指令的第二代码块;
第三物理内存地址集,每个物理内存地址包括到第一虚拟内存地址集中的第一虚拟内存地址的第一分支指令;
第四物理内存地址集,每个物理内存地址包括到第二虚拟内存地址集中的第二虚拟内存地址的第二分支指令。
13.根据权利要求12所述的方法(200),其特征在于,所述转换表还包括:
所述第一虚拟内存地址集,每个虚拟内存地址映射到用于在所述第一物理内存地址集中执行的所述第一代码块中的一个第一代码块;
所述第二虚拟内存地址集,每个虚拟内存地址映射到用于在所述第二物理内存地址集中模拟的所述第二代码块中的一个第二代码块;
第三虚拟内存地址集,每个虚拟内存地址映射到所述第一处理器核的所述第三物理内存地址集中的一个物理内存地址和所述第二处理器核的所述第四物理内存地址集中的一个物理内存地址。
14.根据权利要求13所述的方法(200),其特征在于,还包括:
将所述第一处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第三物理内存地址集中的物理内存地址;
将所述第一处理器指令分支到所述第一虚拟内存地址集中的虚拟内存地址,从而将所述第一虚拟内存地址集中的所述虚拟内存地址映射到所述第一物理内存地址集中的物理内存地址中的第一代码块用于执行。
15.根据权利要求13或14所述的方法(200),其特征在于,还包括:
将所述第二处理器指令分支到所述第三虚拟内存地址集中的虚拟内存地址,从而将所述第三虚拟内存地址集中的所述虚拟内存地址映射到所述第四物理内存地址集中的物理内存地址;
将所述第二处理器指令分支到所述第二虚拟内存地址集中的虚拟内存地址,从而将所述第二虚拟内存地址集中的所述虚拟内存地址映射到所述第二物理内存地址集中的物理内存地址中的第一代码块用于模拟。
16.一种计算机程序,其特征在于,包括程序代码,用于当所述计算机程序在计算机中执行时,执行根据权利要求11至15中任一项所述的方法。
CN202080093811.4A 2020-01-30 2020-01-30 在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序 Pending CN115004158A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2020/052228 WO2021151487A1 (en) 2020-01-30 2020-01-30 Devices, methods and computer programs for executing extension set processor instructions on a multi-core processor

Publications (1)

Publication Number Publication Date
CN115004158A true CN115004158A (zh) 2022-09-02

Family

ID=69411427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080093811.4A Pending CN115004158A (zh) 2020-01-30 2020-01-30 在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序

Country Status (2)

Country Link
CN (1) CN115004158A (zh)
WO (1) WO2021151487A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117311817A (zh) * 2023-11-30 2023-12-29 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437591B2 (en) * 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117311817A (zh) * 2023-11-30 2023-12-29 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质
CN117311817B (zh) * 2023-11-30 2024-03-08 上海芯联芯智能科技有限公司 一种协处理器控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2021151487A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
US9335943B2 (en) Method and apparatus for fine grain memory protection
TWI835856B (zh) 用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存媒體
US5095526A (en) Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status
KR100667146B1 (ko) 가상 머신 아키텍처 내에서의 제어 레지스터 액세스가상화 성능 개선
EP2955634B1 (en) Paravirtualization-based interface for memory management in virtual machines
US10255196B2 (en) Method and apparatus for sub-page write protection
US7506096B1 (en) Memory segment emulation model for virtual machine
US11042485B2 (en) Implementing firmware runtime services in a computer system
US11138128B2 (en) Controlling guard tag checking in memory accesses
JP2022505011A (ja) メモリ・アクセスを制御するための装置及び方法
US8438340B2 (en) Executing atomic store disjoint instructions
GB2564130A (en) An apparatus and method for controlling execution of instructions
US11397541B2 (en) Controlling guard tag checking in memory accesses
CN115004158A (zh) 在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序
US11216280B2 (en) Exception interception
US9792223B2 (en) Processor including load EPT instruction
JPH06332803A (ja) 仮想計算機システムにおけるtlb制御方法
Carvalho et al. Cache full-virtualization for the PowerPC 405-S
GB2616643A (en) Read-as-X property for page of memory address space
Gorman Overview of the Protected Mode Operation of the Intel Architecture
Bungale et al. Supervisor-Mode Virtualization for x86 in VDebug
Jahn A Generic Software MMU for the Jahris Instruction Set Simulator

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