ES2879806T3 - Cambio de contexto virtual acelerado por hardware - Google Patents

Cambio de contexto virtual acelerado por hardware Download PDF

Info

Publication number
ES2879806T3
ES2879806T3 ES15802292T ES15802292T ES2879806T3 ES 2879806 T3 ES2879806 T3 ES 2879806T3 ES 15802292 T ES15802292 T ES 15802292T ES 15802292 T ES15802292 T ES 15802292T ES 2879806 T3 ES2879806 T3 ES 2879806T3
Authority
ES
Spain
Prior art keywords
virtual machine
context
virtual
computer
processor
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
ES15802292T
Other languages
English (en)
Inventor
David Alan Hepkin
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Application granted granted Critical
Publication of ES2879806T3 publication Critical patent/ES2879806T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Un método implementado por ordenador (200) de cambio entre contextos virtuales aislados, siendo realizado el método implementado por ordenador por uno o más procesadores que ejecutan instrucciones ejecutables por ordenador para el método implementado por ordenador, y el método implementado por ordenador comprende: determinar (202) que un procesador virtual debe cambiar de un primer contexto de máquina virtual a un segundo contexto de máquina virtual iniciado por una máquina virtual invitada, en el que los contextos de la primera y segunda máquina virtual están aislados entre sí; un procesador físico que recibe (204) una instrucción incluida en una arquitectura de conjunto de instrucciones para el procesador físico que indica que el procesador virtual debe cambiar directamente por el procesador físico sin generar una intercepción en un hipervisor desde el contexto de la primera máquina virtual al contexto de la segunda máquina virtual; y como resultado, realizar (206) el cambio de contexto virtual ejecutando funciones nativas del procesador físico definidas nativamente para la instrucción; en el que los contextos de la primera y segunda máquina virtual comprenden diferentes niveles de privilegios jerárquicos entre sí.

Description

DESCRIPCIÓN
Cambio de contexto virtual acelerado por hardware
ANTECEDENTES
Antecedentes y técnica relevante
Los ordenadores y los sistemas informáticos han afectado a casi todos los aspectos de la vida moderna. Los ordenadores generalmente están involucradas en el trabajo, la recreación, la atención médica, el transporte, el entretenimiento, la gestión del hogar, etc.
Los sistemas informáticos se pueden implementar de una manera en la que las máquinas virtuales se implementan utilizando máquinas físicas. En particular, una máquina física puede albergar una o más, y normalmente varias, máquinas virtuales. Normalmente, se mantiene un contexto de máquina virtual (VMC) para cada procesador virtual o máquina virtual. El VMC proporciona el contexto del procesador para una máquina virtual invitada. Normalmente, se puede mantener un único VMC para cada máquina virtual, o cada procesador de máquina virtual, de forma individualizada.
El objeto reivindicado en el presente documento no se limita a las realizaciones que resuelven cualquier desventaja o que operan solo en entornos como los descritos anteriormente. Más bien, estos antecedentes solo se proporcionan para ilustrar un área de tecnología ejemplar en la que se pueden poner en práctica algunas realizaciones descritas en el presente documento.
El documento US 2014/281465 describe una unidad de procesamiento central con capacidades de arranque dual, que comprende: una memoria de instrucciones que comprende una primera y una segunda área de memoria que están configuradas para ser programables individualmente, donde la primera y segunda área de memoria se pueden asignar a una memoria activa desde la cual se ejecutan las instrucciones y un memoria inactiva, respectivamente; en la que el conjunto de instrucciones para la unidad central de procesamiento comprende una instrucción dedicada que permite realizar un intercambio desde un área de memoria activa a un área de memoria inactiva, en la que el intercambio se realiza ejecutando la instrucción dedicada en la memoria activa seguida de un flujo de programa cambiar instrucción en la memoria activa, después de lo cual la memoria inactiva se convierte en la nueva memoria activa y la memoria activa se convierte en la nueva memoria inactiva y la ejecución de instrucciones continúa en la nueva memoria activa.
En el documento WO 03/046712 describe un método para distribuir instrucciones a una pluralidad de unidades de ejecución de un procesador, comprendiendo el método: detectar una instrucción dedicada para configurar dicho procesador; y enviar otra instrucción a una unidad de ejecución de la pluralidad de unidades de ejecución, caracterizado por seleccionar la unidad de ejecución de la pluralidad de unidades de ejecución tras la detección de la instrucción dedicada.
BREVE SUMARIO
Una realización incluye un método que se puede practicar en un entorno informático virtual. El método incluye actos para cambiar entre contextos virtuales aislados. El método incluye determinar que un procesador virtual debe cambiar de un primer contexto de máquina virtual a un segundo contexto de máquina virtual. Los contextos de la primera y segunda máquina virtual están aislados entre sí. Un procesador físico recibe una instrucción incluida en la arquitectura del conjunto de instrucciones para el procesador físico que indica que el procesador virtual debe cambiar directamente del contexto de la primera máquina virtual al contexto de la segunda máquina virtual. Como resultado, el método incluye realizar el cambio de contexto virtual mediante la ejecución de funciones nativas del procesador físico definido de forma nativa para la instrucción.
Otra realización se implementa en un entorno informático virtual. La realización incluye un sistema configurado para cambiar entre contextos virtuales aislados. El sistema incluye un procesador físico. El procesador físico incluye una arquitectura de conjunto de instrucciones. La arquitectura del conjunto de instrucciones incluye una instrucción incluida en la arquitectura del conjunto de instrucciones para el procesador físico que, cuando se invoca, indica que un procesador virtual implementado utilizando el procesador físico debe cambiar directamente de un primer contexto de máquina virtual a un segundo contexto de máquina virtual. Los contextos de la primera y segunda máquina virtual están aislados entre sí.
Este sumario se proporciona para presentar una selección de conceptos en una forma simplificada que se describen con más detalle a continuación en la descripción detallada. Este sumario no pretende identificar características clave o características esenciales de la materia patentable reivindicada, ni pretende ser utilizado como ayuda para determinar el alcance de la materia patentable reivindicada.
Las características y ventajas adicionales se expondrán en la descripción que sigue, y en parte serán obvias a partir de la descripción, o pueden aprenderse mediante la práctica de las enseñanzas en el presente documento. Las características y ventajas de la invención pueden realizarse y obtenerse por medio de los instrumentos y combinaciones señalados particularmente en las reivindicaciones adjuntas. Las características de la presente invención resultarán más evidentes a partir de la siguiente descripción y las reivindicaciones adjuntas, o pueden aprenderse mediante la práctica de la invención como se expone a continuación.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Con el fin de describir la manera en la que se pueden obtener las ventajas y características mencionadas anteriormente y otras, se presentará una descripción más particular de la materia patentable descrito con brevedad anteriormente con referencia a realizaciones específicas que se ilustran en los dibujos adjuntos. Entendiendo que estos dibujos representan solo realizaciones típicas y, por lo tanto, no deben considerarse de alcance limitativo, las realizaciones se describirán y explicarán con especificidad y detalle adicionales mediante el uso de los dibujos adjuntos en los que:
La figura 1A ilustra un sistema de ejemplo generalizado que tiene un procesador con una arquitectura de conjunto de instrucciones que incluye una instrucción para el cambio del contexto de la máquina virtual;
La figura 1B ilustra un sistema de ejemplo con niveles jerárquicos de confianza virtual, donde el sistema tiene un procesador con una arquitectura de conjunto de instrucciones que incluye una instrucción para el cambio de contexto de la máquina virtual;
La figura 1C ilustra un sistema de ejemplo con contextos de máquinas virtuales hermanas que tienen un procesador con una arquitectura de conjunto de instrucciones que incluye una instrucción para el cambio de contexto de la máquina virtual; y
La figura 2 ilustra un método para cambiar entre el contexto de una máquina virtual aislada.
DESCRIPCIÓN DETALLADA
Como se señaló en el contexto anterior, normalmente hay un único contexto de máquina virtual (VMC) por procesador virtual en una máquina virtual. Entonces, si una sola máquina virtual tiene un solo procesador virtual, habrá un VMC para la máquina virtual (para el único procesador virtual). Si la máquina virtual tiene dos procesadores virtuales, habrá dos contextos de máquina virtual para la máquina virtual, uno para cada procesador virtual. Sin embargo, puede haber escenarios en los que un solo procesador virtual utilice varios VMC. La figura 1A ilustra un ejemplo generalizado en el que un procesador virtual 112 puede cambiar entre varios VMC 110-A, 110-B y 110-C.
Un ejemplo en el que un procesador virtual puede cambiar entre varios VMC es cuando se desea cambiar entre niveles de confianza virtuales. Un ejemplo de esto se ilustra en la figura 1B, donde el cambio jerárquica desde un VMC 110-J de alto nivel de confianza y hasta VMC de nivel de confianza más bajo 110-K, 110-L y 110-M. Un ejemplo del mundo real de esto es una tecnología conocida como Modo Seguro Virtual (VSM). Con VSM, cada procesador virtual en una plataforma de virtualización, como Hyper-V disponible en Microsoft Corporation de Redmond Washington, tiene múltiples niveles de confianza virtual (VTL). Cada nivel de confianza virtual proporciona un límite de seguridad diferente y la plataforma de virtualización proporciona la capacidad de que un procesador virtual cambie entre diferentes niveles de confianza virtual. Hay un contexto de CPU independiente asociado con cada VTL.
En la mayoría de las arquitecturas informáticas modernas que admiten la virtualización de procesadores, el concepto de VMC proporciona el contexto del procesador para una máquina virtual invitada. El procesador proporciona capacidades para que un hipervisor cargue el contexto de un procesador desde un VMC y guarde el contexto de un procesador en el contexto de una máquina virtual.
Para el VSM, el hipervisor mantiene un VMC separado para cada nivel de confianza virtual. En algunos procesadores, como algunos disponibles en Intel Corporation de Santa Clara, California, esto significa tener una estructura de contexto de máquina virtual (VMCS) separada para cada nivel de confianza virtual. El VSM puede implementarse como un sistema jerárquico donde diferentes VMC tienen diferentes privilegios definidos jerárquicamente.
Cuando el SO de una máquina virtual invitada que se ejecuta en un procesador virtual desea cambiar su VTL activo, realiza una hiperllamada al hipervisor de la máquina física para solicitar un cambio. El hipervisor activa el cambio cambiando el VMC activo y luego regresando de la hiperllamada. Esto requiere la ejecución de varias instrucciones de máquina diferentes para provocar el cambio.
Cabe señalar que, si bien el VSM es un ejemplo de una tecnología que aprovecha múltiples VMC para una sola máquina virtual, existen otras tecnologías que también podrían usar múltiples VMC para una sola máquina virtual. Por ejemplo, en la virtualización anidada, como se ilustra en la figura 1C, puede haber situaciones en las que se implementen varias máquinas virtuales en las máquinas virtuales principales. Por ejemplo, la figura 1C ilustra un v Mc 110-W principal y varios VMC hermanos 110-X, 110-Y y 110-Z que se ejecutan dentro del VMC 110-W principal. Las máquinas virtuales que se ejecutan en la máquina virtual principal pueden implementarse como diferentes VMC (por ejemplo, VMC 1l0-X, 110-Y y 110-Z) de la máquina virtual principal (por ejemplo, una máquina virtual que tiene el v Mc 110-W). En tales situaciones, puede ser deseable cambiar entre los diferentes VMC. Este es simplemente un ejemplo y debe tenerse en cuenta que se podrían implementar otros escenarios de cambio de VMC.
Estos dos ejemplos ilustran dos arreglos de VMC. El primer ejemplo (es decir, el ejemplo de VSM) es un ejemplo de VMC jerárquicos multinivel donde cada uno de los diferentes VMC se encuentra en un nivel diferente de la jerarquía entre sí. Por el contrario, en el segundo ejemplo (es decir, virtualización anidada) la mayoría de las máquinas virtuales (es decir, las máquinas virtuales que se ejecutan en la máquina virtual principal) tienen VMC hermanos donde cada VMC tiene el mismo nivel de privilegios o uno muy similar con respecto a otros VMC hermanos.
Si bien el cambio de VMC anterior dependía de un hipervisor para administrar y realizar el cambio, lo que resultaba en una mayor sobrecarga del procesador para ejecutar las diversas funciones asociadas con las comunicaciones del hipervisor, la funcionalidad se describe aquí para una instrucción de procesador incluida en la arquitectura del conjunto de instrucciones de una clase de procesadores que cuando se invoca aceleraría un cambio de contexto virtual. Ahora se hace referencia a la figura 1A, que ilustra un sistema 102, que incluye un procesador físico 104 que tiene una arquitectura de conjunto de instrucciones 106, que incluye una instrucción. La instrucción proporcionaría la capacidad para que una máquina virtual invitada 108 inicie un cambio de VMC entre VMC 110 para un procesador virtual 112 sin generar una intercepción en el hipervisor 114 (es decir, permitir que una máquina virtual invitada cambie un VMC por sí misma sin pasar por una salida de máquina virtual (VM)).
Al invocar una instrucción de procesador incluida como parte de la arquitectura de conjunto de instrucciones 106 de un procesador físico 104, en lugar de permitir que el hipervisor 114 administre cambios VMC, los sistemas pueden aumentar el rendimiento y la velocidad del sistema informático utilizando una cantidad reducida de procesamiento general para ser se realiza eliminando el procesamiento de sobrecarga requerido cuando el hipervisor114 realiza el cambio de VMC.
La energía se puede conservar en los dispositivos informáticos móviles (o cualquier dispositivo informático para el caso) al reducir el número total de operaciones del procesador que deben realizarse para lograr un cambio de VMC. Para acelerar un cambio de VMC, se implementa una nueva instrucción en una arquitectura de conjunto de instrucciones 106 para una clase de procesadores (o clases de procesadores) que permite que una máquina virtual invitada 108 inicie un cambio a un VMC diferente invocando la instrucción. En el resto en el presente documento, por conveniencia, esta instrucción se denomina instrucción VMCSWITCH. Sin embargo, debe tenerse en cuenta que esto no pretende ser una limitación, sino simplemente a modo de ejemplo.
Esta instrucción VMCSWITCH hace que las operaciones de guardado de estado y las operaciones de restauración de estado se realicen utilizando la funcionalidad nativa del procesador físico 104 en lugar de las operaciones de guardado de estado que ocurren en una salida de VM a un hipervisor por dirección del hipervisor y las operaciones de restauración de estado que ocurren en una entrada de VM en la máquina virtual invitada por dirección del hipervisor.
Por ejemplo, si una máquina virtual invitada 108 se estaba ejecutando con un VMC 110-A activo e inicia un VMCSWITCH para cambiar a VMC 110-B, ocurriría lo siguiente:
1. El estado actual de la máquina virtual invitada 108 se guarda en VMC 110-A mediante la funcionalidad del procesador físico nativo incluida en la arquitectura del conjunto de instrucciones 106 para la instrucción VMCSWITCH. El guardado de estado puede incluir operaciones como guardar registros de estado de la máquina (MSR) en un área de almacenamiento de MSR. Se pueden implementar varias alternativas diferentes para un área de almacenamiento de MSR. Por ejemplo, los MSR pueden simplemente almacenarse en la memoria del sistema 118. Alternativamente, los MSR pueden almacenarse en la memoria incorporada 122 para un acceso más rápido. Además, el procesador físico 104 puede incluir un almacenamiento de MSR 124 especial configurado especialmente para mantener el estado de MSR y para ser utilizado como registros de estado de modo que no se necesite una operación de guardado separada. De esta forma, cuando se cambia un VMC, puede que no sea necesario volver a cargar el estado de MSR en los MSR, sino que la porción apropiada del almacenamiento de MSR 124 podría usarse como MSR. Por ejemplo, la porción de almacenamiento de MSR 124-A puede ser esencialmente los MSR para VMC 110-A, la porción de almacenamiento de MSR 124-B puede ser esencialmente los MSR para VMC 110-B y la porción de almacenamiento de MSR 124-C puede ser esencialmente los MSR para VMC 110-C.
2. El nuevo estado de máquina virtual invitada se carga desde VMC 110-B en el procesador virtual 112 utilizando la funcionalidad del procesador físico nativo 104 incluida en la arquitectura del conjunto de instrucciones 106 para la instrucción VMCSWITCH. Esto puede incluir operaciones como restaurar los MSR desde un área de almacenamiento de MSR, restaurar el puntero de instrucción de la máquina virtual invitada, etc. En el ejemplo donde se usa un almacenamiento de MSR 124, las realizaciones pueden simplemente apuntar a la porción de almacenamiento de MSR apropiada para activar el estado apropiado.
Si hay un problema al cargar el estado desde VMC 110-B, se puede generar una intercepción en el hipervisor 114. De esta manera, el hipervisor puede integrarse en el cambio de VMC según sea necesario, pero excluido de la gestión de las operaciones de cambio de VMC de bajo nivel cuando dicha gestión puede ser realizada por el procesador físico utilizando la funcionalidad asociada con la instrucción VMCSWITCH especializada.
En algunas realizaciones, el procesador virtual 112 proporciona la capacidad para que el hipervisor 114 controle si una máquina virtual invitada 108 puede utilizar la instrucción VMCSWITCH. Por ejemplo, los VMC del procesador virtual podrían ampliarse para incluir un bit de control que indique si una máquina virtual invitada 108 puede utilizar la nueva instrucción VMCSWITCH. Si el bit de control está inhabilitado, un intento por parte de una máquina virtual invitada 108 de utilizar esta nueva instrucción, en algunas realizaciones, dará como resultado que el hipervisor se involucre más en el cambio. Por ejemplo, en algunas realizaciones, intentar utilizar la instrucción VMCSWITCH cuando el bit de control está inhabilitado provocará una excepción o generará una intercepción en el hipervisor 114. De esta manera, el hipervisor 114 puede controlar la cantidad de interacción que el hipervisor 114 tiene en el cambio de VMC permitiendo que una máquina virtual cambie de contexto automático, o evitando que la máquina virtual cambie de contexto automático, y en su lugar haciendo que el hipervisor 114 realice el cambio de contexto.
Además de poder controlar si una máquina virtual invitada puede utilizar la nueva instrucción VMCSWITCH, el procesador virtual también puede proporcionar la capacidad de permitir que el hipervisor 114 controle los VMC específicos a los que una máquina virtual invitada 108 puede cambiar. En una realización de ejemplo, esto puede lograrse mediante el hipervisor 114 manteniendo una lista de VMC 116 válidos a los que puede cambiar una máquina virtual invitada 108. Esto podría mantenerse, por ejemplo, de la siguiente manera:
• La lista116 de VMC de "destino" válidos para un cambio se denomina "lista de VMC". En el ejemplo ilustrado, esto se organiza en una página de memoria 118. El hipervisor 114 proporciona una página con una lista de punteros VMC, y la máquina virtual invitada 108 selecciona un VMC especificando un índice en esta lista 116 como parámetro para la instrucción VMCSWITCH. El hipervisor 114 proporciona un puntero a esta lista a través de un campo en el VMC. Las realizaciones pueden incluir funcionalidad para indicar si una entrada particular en la lista 116 no es válida (por ejemplo, un valor de 0 en la lista podría significar que el puntero VMC no es válido). Los punteros de VMC pueden ser, por ejemplo, direcciones físicas. Si bien el ejemplo ilustra muestra la lista implementada en la memoria principal 118, en otras realizaciones, el propio procesador 104 puede tener una estructura de almacenamiento de lista 128 implementada en hardware, tal como registros de hardware especiales, en el procesador 104.
• Un operando de la instrucción VMCSWITCH especifica un VMC en la lista de VMC 116. En particular, el operando especifica un índice en la lista.
Con esta nueva capacidad VMCSWITCH, una máquina virtual invitada 108 podría emitir una instrucción VMCSWITCH para cambiar su VMC activo. Al emitir la instrucción VMCSWITCH, la máquina virtual invitada 108 especifica una entrada en la lista de VMC 116 (o estructura de almacenamiento de lista 128) a través de un registro de propósito general 120. Este registro de propósito general 120 contiene un índice en la lista de VMC 116 que indica el VMC de destino al que la máquina virtual invitada 108 le gustaría cambiar.
El procesador virtual 112 valida la entrada del puntero VMC en la lista 116 identificada por el índice de destino. Si el puntero de VMC no es válido, VMCSWITCH genera una intercepción en el hipervisor 114 con un nuevo código de salida para indicar el motivo de la intercepción.
Si la entrada del puntero de VMC es válida, el procesador físico 104 realiza el cambio de VMC como se describe anteriormente usando la funcionalidad del procesador nativo incluida como parte de la funcionalidad de la instrucción VMCSWITCH. Una vez completado el cambio de VMC, un nuevo VMC está activo y, por lo tanto, una nueva lista de punteros de VMC podría activarse como posibles destinos para la instrucción VMCSWITCH. El procesador virtual 112 se está ejecutando en la ubicación del puntero de instrucción especificada en el VMC recién activo.
En el ejemplo ilustrado anteriormente, los VMC pueden almacenarse en la memoria 118. Esta memoria 118 podría ser una memoria principal acoplada a un procesador físico. Sin embargo, en algunas realizaciones, los VMC podrían almacenarse en la memoria incorporada 122 (como la memoria caché) incluida en la misma matriz semiconductora con el procesador físico 104 o acoplada al procesador físico 104 de una manera que permita un acceso más rápido a los datos memoria principal. De esta manera, el cambio VCS podría ser más rápida y eficiente. Como se discutió anteriormente, en otras realizaciones alternativas, los VMC pueden almacenarse almacenando el estado de MSR en el almacenamiento de MSR 124.
La siguiente discusión ahora se refiere a una serie de métodos y actos de método que se pueden realizar. Aunque los actos del método pueden discutirse en un cierto orden o ilustrarse en un diagrama de flujo como ocurriendo en un orden particular, no se requiere un orden en particular a menos que se indique específicamente, o se requiera porque un acto depende de que otro acto se complete antes de que el acto que se realiza.
Con referencia ahora a la figura 2, se ilustra un método 200. El método 200 se puede practicar en un entorno informático virtual donde las máquinas virtuales se implementan en hardware físico. El método incluye actos para cambiar entre contextos de máquinas virtuales aisladas. El método incluye determinar que un procesador virtual debe cambiar de un primer contexto de máquina virtual a un segundo contexto de máquina virtual (acto 202). Los contextos de la primera y segunda máquina virtual están aislados entre sí. El aislamiento entre sí significa que los contextos de las máquinas virtuales no tienen acceso de lectura o escritura a la información de contexto de los demás.
El método incluye además un procesador físico que recibe una instrucción incluida en la arquitectura del conjunto de instrucciones para el procesador físico que indica que el procesador virtual debe cambiar directamente (es decir, sin que el hipervisor realice la función de cambio como resultado de una hiperllamada) desde el primer contexto de la máquina virtual a el segundo contexto de máquina virtual (acto 204).
Como resultado, el método 200 incluye además realizar el cambio ejecutando funciones nativas del procesador físico definidas de manera nativa para la instrucción (acto 206).
El método 200 se puede practicar donde el procesador físico recibe la instrucción del primer contexto virtual. Por ejemplo, el VMC 110-A puede llamar a una instrucción en la arquitectura del conjunto de instrucciones 106 para cambiar al VMC 110-B.
El método 200 se puede practicar donde el primer y segundo contextos se encuentran en diferentes niveles de privilegios jerárquicos entre sí. Un ejemplo de esto se ilustra arriba en el ejemplo de VSM donde los cambios se realizan a diferentes niveles de confianza virtual.
El método 200 puede practicarse donde el primer y segundo contextos son hermanos que tienen el mismo nivel de privilegios entre sí. Un ejemplo de esto se ilustra arriba en el caso de virtualización anidada donde las máquinas virtuales se ejecutan dentro de otras máquinas virtuales.
El método 200 puede incluir además determinar que el cambio del primer contexto al segundo contexto está incluido en una enumeración de los cambios de contexto permitidos. Esto se ilustra arriba en el contexto de la lista de VMC. En algunas realizaciones, la lista puede implementarse usando un índice de manera que los detalles específicos de dónde se oculta la información del contexto de la máquina virtual real de los diversos contextos de la máquina virtual. En algunas realizaciones, el hipervisor controla la información en el índice de la lista.
El método 200 puede incluir además determinar si el hardware permite el cambio de VMC nativo y, cuando no está permitido, realizar el cambio mediante el control del hipervisor del cambio de VMC. Se puede realizar una determinación, por ejemplo, determinando una versión de hardware. La versión de hardware puede tener arquitecturas de conjunto de instrucciones con soporte de cambio de VMC de hardware o puede que no. Por lo tanto, en algunos ejemplos, la versión de hardware se utilizará para determinar si se admite el cambio de VMC de hardware. En otros ejemplos, se puede realizar una determinación basándose en la información de capacidad del hardware almacenada en una descripción de firmware del hardware.
Sin embargo, en algunas realizaciones alternativas o adicionales, la funcionalidad de cambio de VMC soportada por hardware puede determinarse verificando que el cambio de VMC por hardware se ha habilitado en hardware que soporta el cambio de VMC en la arquitectura del conjunto de instrucciones para el hardware. Por tanto, aunque el hardware pueda soportar el cambio de VMC basada en hardware, esto puede habilitarse o deshabilitarse en algunas realizaciones. Cuando está deshabilitado, el cambio de VMC atrapa al hipervisor. En algunas realizaciones, el hipervisor puede habilitar o deshabilitar el cambio de VMC basado en hardware. Es posible que el hipervisor desee hacer esto en los casos en que el hipervisor desee forzar el cambio de VMC controlado por el hipervisor. Esto puede hacerse, por ejemplo, cuando un primer VMC solicita un cambio de VMC para obtener algunos datos o funcionalidad de un VMC de nivel superior y necesita datos devueltos desde el VMC de nivel superior al primer VMC. El hipervisor puede realizar el cambio de VMC y devolver los datos apropiados u otra información al primer VMC.
El método 200 puede implementarse donde el cambio es transparente para un VMC. Esto se puede hacer de tal manera que un VMC no pueda determinar de forma independiente si el cambio está controlada por el hipervisor o una instrucción de hardware.
Además, los métodos pueden ser practicados por un sistema informático que incluya uno o más procesadores y medios legibles por ordenador tales como memoria de ordenador. En particular, la memoria del ordenador puede almacenar instrucciones ejecutables por ordenador que cuando son ejecutadas por uno o más procesadores hacen que se realicen varias funciones, tales como los actos enumerados en las realizaciones.
Las realizaciones de la presente invención pueden comprender o utilizar un ordenador de propósito especial o de propósito general que incluye hardware de ordenador, como se describe con mayor detalle a continuación. Las realizaciones dentro del alcance de la presente invención también incluyen medios físicos y otros medios legibles por ordenador para transportar o almacenar instrucciones y/o estructuras de datos ejecutables por ordenador.
Dichos medios legibles por ordenador pueden ser cualquier medio disponible al que se pueda acceder mediante un sistema informático de propósito general o de propósito especial. Los medios legibles por ordenador que almacenan instrucciones ejecutables por ordenador son medios de almacenamiento físico. Los medios legibles por ordenador que llevan instrucciones ejecutables por ordenador son medios de transmisión. Así, a modo de ejemplo, y no de limitación, las realizaciones de la invención pueden comprender al menos dos tipos claramente diferentes de medios legibles por ordenador: medios de almacenamiento físicos legibles por ordenador y medios de transmisión legibles por ordenador.
Los medios de almacenamiento físicos legibles por ordenador incluyen RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico (como CD, DVD, etc.), almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que pueda usarse para almacenar medios de código de programa deseados en forma de instrucciones o estructuras de datos ejecutables por ordenador y a los que se puede acceder mediante un ordenador de propósito general o de propósito especial.
Una "red" se define como uno o más enlaces de datos que permiten el transporte de datos electrónicos entre sistemas y/o módulos informáticos y/u otros dispositivos electrónicos. Cuando la información se transfiere o se proporciona a través de una red u otra conexión de comunicaciones (ya sea cableada, inalámbrica o una combinación de cableada o inalámbrica) a un ordenador, el ordenador ve correctamente la conexión como un medio de transmisión. Los medios de transmisión pueden incluir una red y/o enlaces de datos que se pueden usar para transportar o medios de código de programa deseados en forma de instrucciones o estructuras de datos ejecutables por ordenador y a las que se puede acceder mediante un ordenador de propósito general o de propósito especial. Las combinaciones de los anteriores también se incluyen dentro del alcance de los medios legibles por ordenador.
Además, al llegar a varios componentes del sistema informático, los medios de código de programa en forma de instrucciones ejecutables por ordenador o estructuras de datos pueden transferirse automáticamente desde medios de transmisión legibles por ordenador a medios de almacenamiento físicos legibles por ordenador (o viceversa). Por ejemplo, las instrucciones ejecutables por ordenador o las estructuras de datos recibidas a través de una red o un enlace de datos pueden almacenarse en la memoria RAM dentro de un módulo de interfaz de red (por ejemplo, un "NIC") y luego transferirse finalmente a la RAM del sistema informático y/o a una memoria menos volátil medios de almacenamiento físico legibles por ordenador en un sistema informático. Por tanto, los medios de almacenamiento físico legibles por ordenador pueden incluirse en los componentes del sistema informático que también (o incluso principalmente) utilizan medios de transmisión.
Las instrucciones ejecutables por ordenador comprenden, por ejemplo, instrucciones y datos que hacen que un ordenador de propósito general, un ordenador de propósito especial o un dispositivo de procesamiento de propósito especial realice una determinada función o grupo de funciones. Las instrucciones ejecutables por ordenador pueden ser, por ejemplo, binarios, instrucciones de formato intermedio como lenguaje ensamblador o incluso código fuente. Aunque la materia patentable se ha descrito en un lenguaje específico para características estructurales y/o actos metodológicos, debe entenderse que la materia patentable definida en las reivindicaciones adjuntas no está necesariamente limitada a las características o actos descritos anteriormente. Más bien, las características y actos descritos se describen como formas de ejemplo de implementación de las reivindicaciones.
Los expertos en la técnica apreciarán que la invención se puede poner en práctica en entornos informáticos de red con muchos tipos de configuraciones de sistemas informáticos, que incluyen ordenadores personales, ordenadores de escritorio, ordenadores portátiles, procesadores de mensajes, dispositivos portátiles, sistemas multiprocesador, microprocesadores, electrónica de consumo programable o basada en la red, PC de red, miniordenadores, ordenadores centrales, teléfonos móviles, PDA, buscapersonas, enrutadores, cambios y similares. La invención también se puede practicar en entornos de sistemas distribuidos donde los sistemas informáticos locales y remotos, que están vinculados (ya sea mediante enlaces de datos cableados, enlaces de datos inalámbricos o mediante una combinación de enlaces de datos cableados e inalámbricos) a través de una red, ambos realizan tareas. En un entorno de sistema distribuido, los módulos de programa pueden estar ubicados en dispositivos de almacenamiento de memoria tanto locales como remotos.
Alternativamente, o, además, la funcionalidad descrita en el presente documento se puede realizar, al menos en parte, mediante uno o más componentes lógicos de hardware. Por ejemplo, y sin limitación, los tipos ilustrativos de componentes lógicos de hardware que se pueden utilizar incluyen matrices de puertas programables en campo (FPGA), circuitos integrados específicos del programa (ASIC), productos estándar específicos del programa (ASSP), sistema en "sistemas en un chip" (SOC), dispositivos lógicos programables complejos (CPLD), etc.

Claims (8)

REIVINDICACIONES
1. Un método implementado por ordenador (200) de cambio entre contextos virtuales aislados, siendo realizado el método implementado por ordenador por uno o más procesadores que ejecutan instrucciones ejecutables por ordenador para el método implementado por ordenador, y el método implementado por ordenador comprende: determinar (202) que un procesador virtual debe cambiar de un primer contexto de máquina virtual a un segundo contexto de máquina virtual iniciado por una máquina virtual invitada, en el que los contextos de la primera y segunda máquina virtual están aislados entre sí;
un procesador físico que recibe (204) una instrucción incluida en una arquitectura de conjunto de instrucciones para el procesador físico que indica que el procesador virtual debe cambiar directamente por el procesador físico sin generar una intercepción en un hipervisor desde el contexto de la primera máquina virtual al contexto de la segunda máquina virtual; y
como resultado, realizar (206) el cambio de contexto virtual ejecutando funciones nativas del procesador físico definidas nativamente para la instrucción;
en el que los contextos de la primera y segunda máquina virtual comprenden diferentes niveles de privilegios jerárquicos entre sí.
2. El método implementado por ordenador de la reivindicación 1, en el que el procesador físico recibe la instrucción del primer contexto de máquina virtual.
3. El método implementado por ordenador de la reivindicación 1, que comprende además determinar que el cambio del contexto de la primera máquina virtual al contexto de la segunda máquina virtual está incluido en una enumeración de los cambios de contexto virtual permitidos.
4. El método implementado por ordenador de la reivindicación 1, que comprende además determinar si el hardware permite el cambio de contexto de la máquina virtual y, cuando no está permitido, realizar el cambio de contexto de la máquina virtual mediante el control del hipervisor del cambio de contexto de la máquina virtual.
5. El método implementado por ordenador de la reivindicación 4, en el que el cambio de contexto de máquina virtual es transparente para el contexto de una máquina virtual, de modo que el contexto de la máquina virtual no puede determinar de forma independiente si el cambio de contexto de la máquina virtual está controlada por el hipervisor o una instrucción de hardware de contexto de máquina virtual incluida en la arquitectura de conjunto de instrucciones de un procesador.
6. Un sistema informático (102) configurado para cambiar entre contextos virtuales aislados, comprendiendo el sistema informático:
un medio legible por ordenador que contiene instrucciones ejecutables por ordenador;
uno o más procesadores (104) que, al ejecutar las instrucciones ejecutables por ordenador, hacen que el sistema informático se configure con una arquitectura para realizar un método implementado por ordenador para cambiar entre contextos virtuales aislados, y cuando se configura con la arquitectura, el sistema informático que realiza lo siguiente:
determinar que un procesador virtual debe cambiar de un primer contexto de máquina virtual a un segundo contexto de máquina virtual iniciado por una máquina virtual invitada, en el que los contextos de la primera y segunda máquina virtual están aislados entre sí;
un procesador físico que recibe una instrucción incluida en una arquitectura de conjunto de instrucciones (106) para el procesador físico (104) que indica que el procesador virtual debe cambiar directamente por el procesador físico sin generar una intercepción en un hipervisor desde el primer contexto de la máquina virtual al segundo contexto de la máquina virtual; y
como resultado, realizar el cambio de contexto virtual ejecutando funciones nativas del procesador físico (104) definido de manera nativa para la instrucción;
en el que los contextos de la primera y segunda máquina virtual comprenden diferentes niveles de privilegios jerárquicos entre sí.
7. El sistema informático de la reivindicación 6, que comprende, además:
un bit de control que se puede utilizar para indicar cuándo se puede invocar la instrucción; y
un hipervisor (114) configurado para realizar el cambio de contexto virtual cuando el bit de control indica que la instrucción no puede invocarse.
8. El sistema informático de la reivindicación 6, que comprende además un almacenamiento de datos configurado para mantener una lista de contextos de máquina virtual válidos a los que puede cambiar el procesador físico, y en el que el almacenamiento de datos está configurado para mantener la lista como una lista indexada, de modo que la lista indexa las ubicaciones de la memoria donde se almacenan los contextos de la máquina virtual y la entrada a la lista se realiza mediante un índice tal que una máquina virtual que llama a la lista no tiene acceso a la información que identifica las ubicaciones de la memoria, sino que solo puede especificar un puntero a una entrada en la lista.
ES15802292T 2014-11-25 2015-11-17 Cambio de contexto virtual acelerado por hardware Active ES2879806T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462084412P 2014-11-25 2014-11-25
US14/667,879 US9928094B2 (en) 2014-11-25 2015-03-25 Hardware accelerated virtual context switching
PCT/US2015/060957 WO2016085695A1 (en) 2014-11-25 2015-11-17 Hardware accelerated virtual context switching

Publications (1)

Publication Number Publication Date
ES2879806T3 true ES2879806T3 (es) 2021-11-23

Family

ID=56010288

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15802292T Active ES2879806T3 (es) 2014-11-25 2015-11-17 Cambio de contexto virtual acelerado por hardware

Country Status (6)

Country Link
US (2) US9928094B2 (es)
EP (1) EP3224709B1 (es)
CN (1) CN107003888B (es)
BR (1) BR112017008614A2 (es)
ES (1) ES2879806T3 (es)
WO (1) WO2016085695A1 (es)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928010B2 (en) 2015-06-24 2018-03-27 Vmware, Inc. Methods and apparatus to re-direct detected access requests in a modularized virtualization topology using virtual hard disks
US9804789B2 (en) 2015-06-24 2017-10-31 Vmware, Inc. Methods and apparatus to apply a modularized virtualization topology using virtual hard disks
US10126983B2 (en) 2015-06-24 2018-11-13 Vmware, Inc. Methods and apparatus to enforce life cycle rules in a modularized virtualization topology using virtual hard disks
US10101915B2 (en) * 2015-06-24 2018-10-16 Vmware, Inc. Methods and apparatus to manage inter-virtual disk relations in a modularized virtualization topology using virtual hard disks
US10025947B1 (en) * 2015-11-30 2018-07-17 Ims Health Incorporated System and method to produce a virtually trusted database record
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10353826B2 (en) * 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10635602B2 (en) 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10552070B2 (en) 2017-11-14 2020-02-04 International Business Machines Corporation Separation of memory-based configuration state registers based on groups
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10901738B2 (en) * 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10761983B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10698686B2 (en) 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US11029986B2 (en) 2018-05-25 2021-06-08 Microsoft Technology Licensing, Llc Processor feature ID response for virtualization
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
US11237860B2 (en) * 2018-12-21 2022-02-01 Red Hat, Inc. Command-based processing of real-time virtualized jobs
US10990427B2 (en) * 2019-04-03 2021-04-27 Sap Se Extension application mechanisms through intra-process operation systems
US11119945B1 (en) 2020-04-23 2021-09-14 International Business Machines Corporation Context tracking for multiple virtualization layers in a virtually tagged cache
US11880704B2 (en) * 2020-06-24 2024-01-23 Red Hat, Inc. Nested virtual machine support for hypervisors of encrypted state virtual machines
US12353900B2 (en) * 2021-03-08 2025-07-08 Unisys Corporation System and method enabling software-controlled processor customization for workload optimization
CN112988399B (zh) * 2021-04-30 2021-07-20 成都网安科技发展有限公司 基于虚拟化技术的处理器调度方法和处理器调度装置
US12326474B2 (en) 2022-07-18 2025-06-10 Nxp Usa, Inc. Multi-partition, multi-domain system-on-chip joint test action group (JTAG) debug control architecture and method
US12210615B2 (en) 2022-07-18 2025-01-28 Nxp Usa, Inc. System on chip with pre-exemption interrupts for partition execution control
US12182231B2 (en) 2022-07-18 2024-12-31 Nxp Usa, Inc. Control channel architecture

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708326B1 (en) 2000-11-10 2004-03-16 International Business Machines Corporation Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence
US20020161961A1 (en) * 2001-01-17 2002-10-31 Ajile Systems, Inc. Multiple virtual machine environment management system
KR20040064713A (ko) 2001-11-26 2004-07-19 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법
US20050132364A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
FR2875028B1 (fr) * 2004-09-03 2006-12-08 Trango Systems Sarl Mecanismes pour la virtualisation de cpu
US8522253B1 (en) 2005-03-31 2013-08-27 Guillermo Rozas Hardware support for virtual machine and operating system context switching in translation lookaside buffers and virtually tagged caches
US8032897B2 (en) 2007-07-31 2011-10-04 Globalfoundries Inc. Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization
US8763115B2 (en) 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software
US8261284B2 (en) 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
US8510756B1 (en) 2007-12-06 2013-08-13 Parallels IP Holdings GmbH Guest operating system code optimization for virtual machine
KR101489244B1 (ko) 2007-12-24 2015-02-04 삼성전자 주식회사 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법
CN101520738A (zh) * 2008-02-27 2009-09-02 黄歆媚 基于设备访存管理技术的虚拟机系统及其设备访问方法
US8244945B2 (en) * 2008-03-18 2012-08-14 Intel Corporation Efficient handling of interrupts in a computing environment
US8285904B2 (en) * 2009-08-14 2012-10-09 Advanced Micro Devices, Inc. Flexible notification mechanism for user-level interrupts
CN102081552A (zh) * 2009-12-01 2011-06-01 华为技术有限公司 一种物理机到虚拟机的在线迁移方法、装置和系统
KR101437757B1 (ko) * 2010-05-13 2014-09-05 노키아 코포레이션 콘텍스트 감지 및 융합을 위한 방법, 장치 및 컴퓨터 프로그램제품
JP5541036B2 (ja) * 2010-09-21 2014-07-09 富士通株式会社 メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置
US9069622B2 (en) * 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US9804870B2 (en) * 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US20130174144A1 (en) * 2011-12-28 2013-07-04 Ati Technologies Ulc Hardware based virtualization system
CN104205042B (zh) 2012-03-30 2019-01-08 英特尔公司 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制
CN102831006B (zh) * 2012-07-25 2017-04-12 北京奇虎科技有限公司 虚拟机实现方法与虚拟机
EP2972842B1 (en) * 2013-03-12 2020-05-20 Microchip Technology Incorporated Programmable cpu register hardware context swap mechanism
US9858083B2 (en) 2013-03-14 2018-01-02 Microchip Technology Incorporated Dual boot panel SWAP mechanism
CN103559087B (zh) * 2013-10-31 2017-11-28 华为技术有限公司 一种虚拟处理器之间的中断的实现方法、相关装置和系统
US9117081B2 (en) * 2013-12-20 2015-08-25 Bitdefender IPR Management Ltd. Strongly isolated malware scanning using secure virtual containers
US9514305B2 (en) * 2014-10-17 2016-12-06 Qualcomm Incorporated Code pointer authentication for hardware flow control

Also Published As

Publication number Publication date
US20160147555A1 (en) 2016-05-26
EP3224709B1 (en) 2021-06-09
CN107003888B (zh) 2020-06-19
CN107003888A (zh) 2017-08-01
WO2016085695A1 (en) 2016-06-02
EP3224709A1 (en) 2017-10-04
BR112017008614A2 (pt) 2017-12-19
US10540199B2 (en) 2020-01-21
US20180196692A1 (en) 2018-07-12
US9928094B2 (en) 2018-03-27

Similar Documents

Publication Publication Date Title
ES2879806T3 (es) Cambio de contexto virtual acelerado por hardware
US10901772B2 (en) Virtualization exceptions
EP3105681B1 (en) Region identifying operation for identifying region of a memory attribute unit corresponding to a target memory address
EP3525099A1 (en) Executing an operating system on processors having different instruction set architectures
EP3961446A1 (en) Method and apparatus for securely entering trusted execution environment in hyper-threading scenario
US20160179665A1 (en) Control of entry into protected memory views
JP2007035045A (ja) 階層化された仮想化アーキテクチャにおける仮想化イベント処理
BR112015022865B1 (pt) Método e aparelho para ativar seletivamente as operações de um monitor de máquina virtual sob demanda
US20130326519A1 (en) Virtual machine control structure shadowing
US20160188354A1 (en) Efficient enabling of extended page tables
US10956571B2 (en) Kernel runtime integrity using processor assists
US20180246916A1 (en) Scalable object service data and metadata overflow
EP3566150B1 (en) Data consistency check in distributed system
CN110858164A (zh) 进程间通信方法、装置及计算机可读介质
US9477509B2 (en) Protection against interrupts in virtual machine functions
KR102836272B1 (ko) 임시 레지스터들에 대한 레인 당 동적 인덱싱
US10169113B2 (en) Storage and application intercommunication using ACPI
US20160246633A1 (en) Read-only vm function chaining for secure hypervisor access
US11144329B2 (en) Processor microcode with embedded jump table
US11074200B2 (en) Use-after-free exploit prevention architecture
CN108009429A (zh) 一种补丁函数生成方法及装置
TW202613810A (zh) 使用處理器操作模式的異常向量表選擇
Bai A Checkpointing Methodology for Android Smartphone