Funcionalidad de virtualización de funciones para bloquear una función de instrucción de una instrucción multi-función de un procesador virtual.

Un procedimiento implementado por ordenador para bloquear que funciones específicas a ser realizadas por unainstrucción sean ejecutadas por un procesador lógico que ejecuta una máquina virtual,

en el que el procedimientocomprende:

establecer (1251) un valor (1008) de bloqueo de instrucción definido para la máquina virtual, para bloquear laejecución de una instrucción, en el que el valor de bloqueo de instrucción indica las funciones permitidas;

extraer (1252), por dicho procesador lógico, una instrucción (1101) a ser ejecutada por el procesador lógico, enel que la instrucción comprende un código de operación y especifica un código (1102) de función de entre unapluralidad de códigos de función, en el que el código de función se usa para seleccionar la función a realizarpor la instrucción, en el que la instrucción es soportada por uno o más procesadores físicos;

determinar (1253) un valor de bloqueo de instrucción para la instrucción extraída que tiene el código de función,comparando (1253) el valor de bloqueo de instrucción definido para la máquina virtual con el código deoperación de la instrucción extraída;

en respuesta al valor de bloqueo de instrucción que permite (1007, 1255) la ejecución de la instrucción quetiene el código de función, ejecutar la instrucción extraída por el procesador lógico; y

en respuesta al valor de bloqueo de instrucción que no permite (1006, 1256) la ejecución de la instrucción quetiene el código de función, bloquear la ejecución de la instrucción extraída y causar un evento de excepción deprograma.

Tipo: Patente Internacional (Tratado de Cooperación de Patentes). Resumen de patente/invención. Número de Solicitud: PCT/EP2010/067045.

Solicitante: INTERNATIONAL BUSINESS MACHINES CORPORATION.

Nacionalidad solicitante: Estados Unidos de América.

Dirección: One New Orchard Road Armonk, NY 10504 ESTADOS UNIDOS DE AMERICA.

Inventor/es: HELLER,LISA, SLEGEL,TIMOTHY, GREINER,Dan, OSISEK,DAMIAN LEO.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • G06F9/30 FISICA.G06 CALCULO; CONTEO.G06F PROCESAMIENTO ELECTRICO DE DATOS DIGITALES (sistemas de computadores basados en modelos de cálculo específicos G06N). › G06F 9/00 Disposiciones para el control por programa, p. ej. unidades de control (control por programa para dispositivos periféricos G06F 13/10). › Disposiciones para ejecutar instrucciones de máquinas, p. ej. decodificación de instrucciones (para ejecutar microinstrucciones G06F 9/22).
  • G06F9/455 G06F 9/00 […] › Emulación; Interpretación; Simulación delsoftware, p. ej. virtualización o emulación de motores de ejecución de aplicaciones o sistemas operativos.

PDF original: ES-2435634_T3.pdf

 


Fragmento de la descripción:

Funcionalidad de virtualización de funciones para bloquear una función de instrucción de una instrucción multifunción de un procesador virtual

Campo de la invención La presente invención se refiere a sistemas informáticos y, más particularmente, a una funcionalidad de las instrucciones de un procesador de un sistema informático.

Antecedentes de la invención Marcas comerciales: IBM® es una marca comercial registrada de International Business Machines Corporation, Armonk, Nueva York, EE. UU. S/390, Z900, z990 y z10 y otros nombres de producto pueden ser marcas comerciales registradas o nombres de productos de International Business Machines Corporation o de otras empresas.

Empezando con máquinas conocidas como el sistema IBM® 360 en la década de 1960 hasta el presente, IBM ha creado, gracias al trabajo de muchos ingenieros de gran talento, una arquitectura especial que, debido a su naturaleza esencial a un sistema informático, ha llegado a ser conocida como el "mainframe", cuyos principios de funcionamiento definen la arquitectura de la máquina mediante la descripción de las instrucciones que pueden ser ejecutadas en la implementación "mainframe" de las instrucciones que habían sido inventadas por los inventores de IBM y adoptadas, debido a su importante contribución a mejorar el estado de la máquina de computación representada por el "mainframe", como importantes contribuciones por su inclusión en IBM's Principles of Operation, tal como se ha indicado a lo largo de los años. La octava edición de la IBM® z/Architecture® Principles of Operation, que se publicó en Febrero de 2009, se ha convertido en la referencia estándar publicada como SA22-7832-07 y se incorpora en los servidores mainframe z10® de IBM, incluyendo los servidores z10® con sistema IBM, clase Enterprise.

Con referencia a la Fig. 1A, en la misma se representan los componentes representativos de un sistema 50 informático servidor de la técnica anterior. Pueden emplearse también otras disposiciones de componentes en un sistema informático, que son bien conocidas en la técnica. El servidor 50 representativo comprende una o más CPUs 1 en comunicación con un almacenamiento principal (memoria 2 de ordenador) , así como interfaces de E/S a dispositivos 11 de almacenamiento y redes 10 para la comunicación con otros ordenadores o SANs y similares. La CPU 1 es conforme a una arquitectura que tiene un conjunto de instrucciones diseñado y una funcionalidad diseñada. La CPU 1 puede tener una funcionalidad de traducción dinámica de direcciones (Dynamic Address Translation, DAT) 3 para transformar las direcciones de programa (direcciones virtuales) en direcciones de memoria real. Típicamente, una DAT incluye una memoria temporal de traducciones anticipadas (TLB) 7 para almacenar en caché las traducciones, de manera que los accesos futuros al bloque de memoria 2 de ordenador no requieran el retraso debido a la traducción de dirección. Típicamente, se emplea una caché 9 entre una memoria 2 de ordenador y el procesador 1. La caché 9 puede ser jerárquica, y puede tener una gran caché disponible para más de una CPU y cachés más pequeñas y más rápidas (de nivel inferior) entre la caché grande y cada CPU. En algunas implementaciones, las cachés de nivel inferior se dividen para proporcionar cachés de nivel bajo separadas para extracción de instrucciones y accesos a datos. En una realización, una instrucción es extraída de la memoria 2 por una unidad 4 de extracción de instrucciones, a través de una caché 9. La instrucción es decodificada en una unidad

(6) de decodificación de instrucciones y es enviada (con otras instrucciones, en algunas realizaciones) a las unidades 8 de ejecución de instrucciones. Típicamente, se emplean varias unidades 8 de ejecución, por ejemplo, una unidad de ejecución aritmética, una unidad de ejecución en coma flotante y una unidad de ejecución de instrucción de bifurcación. La instrucción es ejecutada por la unidad de ejecución, accediendo a los operandos desde registros especificados por las instrucciones o desde la memoria, según sea necesario. Si un operando debe ser accedido (cargado o almacenado) desde la memoria 2, una unidad 5 de carga de almacenamiento gestiona típicamente el acceso, bajo el control de la instrucción que se está ejecutando. Las instrucciones pueden ser ejecutadas en circuitos de hardware o en microcódigo interno (firmware) o por una combinación de ambos.

En la Fig. 1B, se proporciona un ejemplo de un sistema 21 informático servidor emulado de la técnica anterior, que emula un sistema 50 informático servidor de una arquitectura servidor. En el sistema 21 informático servidor emulado, el procesador (CPU) 1 servidor es un procesador servidor emulado (o procesador servidor virtual) y comprende un procesador 27 de emulación que tiene un conjunto de instrucciones nativas diferente al del procesador 1 del servidor 50. El sistema 21 informático servidor emulado tiene una memoria 22 accesible para el procesador 27 de emulación. En la realización ejemplar, la memoria 27 está dividida en una porción de memoria 2 del servidor y una porción de rutinas 23 de emulación. La memoria 2 del servidor está disponible para los programas del servidor 21 emulado, según la arquitectura del servidor. El procesador 27 de emulación ejecuta las instrucciones nativas de un conjunto de instrucciones diseñadas de una arquitectura diferente a la del procesador 1 emulado, siendo obtenidas las instrucciones nativas desde la memoria 23 de rutinas de emulación, y pueden acceder a una instrucción de servidor para su ejecución desde un programa en la memoria 2 de servidor, empleando una o más instrucciones obtenidas en una rutina de secuencia y acceso/decodificación, que puede decodificar la instrucción o las instrucciones de servidor accedidas, para determinar una rutina de ejecución de instrucción nativa para emular la función de la instrucción de servidor accedida. Otras funcionalidades que se definen para la arquitectura del sistema 50 informático servidor pueden ser emuladas por rutinas de funcionalidades diseñadas, incluyendo funcionalidades tales como registros de propósito general, registros de control, traducción dinámica de direcciones y soporte de subsistema de E/S y caché del procesador, por ejemplo. Las rutinas de emulación pueden aprovechar también una función disponible en el procesador 27 de emulación (tal como registros generales y traducción dinámica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulación. Pueden proporcionarse también hardware especial y motores de descarga para ayudar al procesador 27 en la emulación de la función del servidor

50.

En un mainframe, las instrucciones máquina diseñadas son usadas por los programadores, normalmente, en la actualidad, programadores en “C”, frecuentemente por medio de una aplicación de compilador. Estas instrucciones, almacenadas en el medio de almacenamiento, pueden ser ejecutadas, de manera nativa, en un servidor IBM de arquitectura z, o, como alternativa, en máquinas que ejecutan otras arquitecturas. Pueden ser emuladas en los servidores mainframe de IBM existentes y futuros y en otras máquinas de IBM (por ejemplo, servidores de la serie p® y servidores de la serie x®) . Pueden ser ejecutadas en máquinas que ejecutan Linux en una amplia variedad de máquinas que usan hardware fabricado por IBM®, Intel®, AMDTM, Sun Microsystems y otros. Además de la ejecución en ese hardware bajo una Arquitectura z®, se puede usar también Linux, así como máquinas que usan emulación, tal como se describe en http://www.turbohercules.com, http://www.hercules-390.org y http://www.funsoft.com. En modo de emulación, el software de emulación es ejecutado por un procesador nativo para emular la arquitectura de un procesador emulado.

Típicamente, el procesador 27 nativo ejecuta un software 23 de emulación que comprende o bien firmware o bien un sistema operativo nativo, para realizar la emulación del procesador emulado. El software 23 de emulación es responsable de extraer y ejecutar instrucciones de la arquitectura del procesador emulado. El software 23 de emulación mantiene un contador de programa emulado para realizar un seguimiento de los límites de las instrucciones. El software 23 de emulación puede extraer una o más instrucciones máquina emuladas en cada momento y puede convertir la una o más instrucciones máquina emuladas a un grupo correspondiente de instrucciones máquina nativas, para su ejecución por el procesador 27 nativo. Estas instrucciones convertidas pueden ser almacenadas en caché, de manera que puede conseguirse una conversión más rápida. No obstante, el software de emulación debe mantener las normas de arquitectura de la arquitectura... [Seguir leyendo]

 


Reivindicaciones:

1. Un procedimiento implementado por ordenador para bloquear que funciones específicas a ser realizadas por una instrucción sean ejecutadas por un procesador lógico que ejecuta una máquina virtual, en el que el procedimiento comprende:

establecer (1251) un valor (1008) de bloqueo de instrucción definido para la máquina virtual, para bloquear la ejecución de una instrucción, en el que el valor de bloqueo de instrucción indica las funciones permitidas;

extraer (1252) , por dicho procesador lógico, una instrucción (1101) a ser ejecutada por el procesador lógico, en el que la instrucción comprende un código de operación y especifica un código (1102) de función de entre una pluralidad de códigos de función, en el que el código de función se usa para seleccionar la función a realizar por la instrucción, en el que la instrucción es soportada por uno o más procesadores físicos;

determinar (1253) un valor de bloqueo de instrucción para la instrucción extraída que tiene el código de función, comparando (1253) el valor de bloqueo de instrucción definido para la máquina virtual con el código de operación de la instrucción extraída;

en respuesta al valor de bloqueo de instrucción que permite (1007, 1255) la ejecución de la instrucción que tiene el código de función, ejecutar la instrucción extraída por el procesador lógico; y

en respuesta al valor de bloqueo de instrucción que no permite (1006, 1256) la ejecución de la instrucción que tiene el código de función, bloquear la ejecución de la instrucción extraída y causar un evento de excepción de programa.

2. Procedimiento según la reivindicación 1, que comprende además:

que el valor (1008) de bloqueo de instrucción es definido para la máquina virtual para bloquear la ejecución de funciones a ser realizadas por la instrucción, estableciéndose el valor de bloqueo de instrucción en respuesta a la habilitación de la máquina virtual para ser ejecutada en el procesador físico;

establecer (1351) otro valor de bloqueo de instrucción definido para otra máquina virtual que se ejecuta en otro procesador lógico, estableciéndose el otro valor de bloqueo de instrucción en respuesta a la habilitación de la otra máquina virtual para ser ejecutada en el procesador físico; y

en respuesta al otro valor de bloqueo de instrucción que permite (1352) la ejecución de la instrucción que tiene el código de función, permitir la ejecución de la instrucción por el otro procesador lógico; y

en respuesta al otro valor de bloque de instrucción que no permite (1256) la ejecución de la instrucción que tiene el código de función, bloquear la ejecución de la instrucción por el otro procesador lógico.

3. Procedimiento según la reivindicación 1, en el que la determinación de un valor de bloqueo de instrucción comprende además las etapas de:

usar el código de operación como índice en una tabla (907) para localizar el valor de bloqueo de instrucción definido para la máquina virtual, en el que el valor de bloqueo de instrucción comprende un campo de permiso (1002, 1003) ;

usar el campo de permiso para determinar las funciones permitidas, comparándolo con el código de función de la instrucción extraída; y

si la función es una función permitida, determinar (1007) que se permite la ejecución de la instrucción; y

si la función es una función no permitida, determinar (1006) que no se permite la ejecución de la instrucción.

4. Procedimiento según la reivindicación 1, que comprende además las etapas de:

determinar si la instrucción es la instrucción permitida, asociando el código de operación de la instrucción con el valor de bloqueo de instrucción.

5. Sistema informático para bloquear la ejecución de instrucciones específicas por un procesador; que comprende:

una memoria;

un procesador en comunicación con la memoria, en el que el procesador comprende un elemento de extracción de instrucciones para extraer instrucciones desde una memoria y uno o más elementos de ejecución para ejecutar las instrucciones extraídas;

en el que el sistema informático está configurado para realizar el procedimiento según se reivindica en las reivindicaciones 1 a 4.

6. Programa de ordenador que puede ser cargado en la memoria del sistema informático según la reivindicación 5 que comprende partes de código de software para realizar, cuando dicho programa es ejecutado en el sistema informático, las etapas del procedimiento según se reivindica en las reivindicaciones 1 a 4.


 

Patentes similares o relacionadas:

Virtualización de funciones de red en grupos a medida, del 17 de Junio de 2020, de TELEFONAKTIEBOLAGET LM ERICSSON (PUBL): Un método para virtualizar una función de red entre un grupo a medida que comprende una pluralidad de terminales móviles ubicados unos […]

Ejecución del programa sobre plataforma heterogénea, del 29 de Abril de 2020, de UNIVERSITEIT GENT: Un método puesto en práctica por ordenador que comprende: - obtener un objeto de código informático intermedio que comprende, al menos, un […]

Sistema y método para emular un diodo ideal en un dispositivo de control de energía, del 22 de Abril de 2020, de LEACH INTERNATIONAL CORPORATION: Un circuito para emular un diodo ideal, comprendiendo el circuito: al menos un transistor de efecto de campo que comprende una fuente , […]

Procedimiento de reenvío de paquetes de datos, adaptador de red, dispositivo host y sistema informático, del 11 de Marzo de 2020, de HUAWEI TECHNOLOGIES CO., LTD.: Procedimiento de reenvío de paquetes de datos, donde el procedimiento se aplica a un adaptador de red, el adaptador de red está conectado a un dispositivo host, el dispositivo […]

Sistemas y métodos para sincronización de datos y gestión de conmutación por error, del 19 de Febrero de 2020, de IEX Group, Inc: Un método para ejecutar una aplicación de forma expeditiva en al menos un procesador informático, comprendiendo el método: ejecutar simultáneamente una pluralidad de instancias […]

Transformar especificadores de instrucción no contiguos a especificadores de instrucción contiguos, del 19 de Febrero de 2020, de INTERNATIONAL BUSINESS MACHINES CORPORATION: Un producto de programa informático para emular instrucciones en un entorno informático, comprendiendo el producto de programa informático: un medio de almacenamiento […]

Evaluación de procesos para la detección de programas malignos en máquinas virtuales, del 22 de Enero de 2020, de Bitdefender IPR Management Ltd: Un sistema [10] central que comprende al menos un procesador [12] hardware configurado para ejecutar: un hipervisor [30] configurado para […]

Función de interrupción de seguimiento de advertencias, del 25 de Diciembre de 2019, de INTERNATIONAL BUSINESS MACHINES CORPORATION: Un sistema informático para facilitar el procesamiento en un entorno informático, comprendiendo dicho sistema informático: una memoria; y un procesador […]

Utilizamos cookies para mejorar nuestros servicios y mostrarle publicidad relevante. Si continua navegando, consideramos que acepta su uso. Puede obtener más información aquí. .