ES2699995T3 - Provisión, por parte de un programa a otro programa, de acceso a un recurso de canal de aviso - Google Patents

Provisión, por parte de un programa a otro programa, de acceso a un recurso de canal de aviso Download PDF

Info

Publication number
ES2699995T3
ES2699995T3 ES12866369T ES12866369T ES2699995T3 ES 2699995 T3 ES2699995 T3 ES 2699995T3 ES 12866369 T ES12866369 T ES 12866369T ES 12866369 T ES12866369 T ES 12866369T ES 2699995 T3 ES2699995 T3 ES 2699995T3
Authority
ES
Spain
Prior art keywords
operating system
host
guest
guest operating
grace period
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
ES12866369T
Other languages
English (en)
Inventor
Jr Charles Gainey
Jeffrey Kubala
Mark Farrell
Donald Schmidt
Bernard Pierce
Robert Rogers
James Mulder
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2699995T3 publication Critical patent/ES2699995T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/468Specific access rights for resources, e.g. using capability register
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/5038Allocation 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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

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

Abstract

Un sistema informático para facilitar el procesamiento en un entorno informático, comprendiendo dicho sistema informático: una memoria; y un procesador en comunicación con la memoria, estando configurado el sistema informático para llevar a cabo un método, estando caracterizado dicho método por comprender: la provisión, por parte de un sistema operativo anfitrión a un sistema operativo huésped, una indicación de instalación de un recurso de canal de aviso dentro del entorno informático, habiendo de ser obtenida por el sistema operativo huésped la indicación de instalación, y siendo el recurso de canal de aviso para proporcionar al sistema operativo huésped un periodo de gracia para llevar a cabo una primera función; obtener, por parte del sistema operativo anfitrión, en función de la provisión, una indicación no solicitada de que el sistema operativo huésped se ha dado de alta para el recurso de canal de aviso, comprendiendo el alta una indicación al sistema operativo anfitrión de que el sistema operativo huésped entiende el protocolo del recurso de canal de aviso y tiene la intención de participar en el recurso de canal de aviso; habilitar, en función de la obtención de la indicación de que el sistema operativo huésped se ha dado de alta, el recurso de canal de aviso para el sistema operativo huésped; notificar al sistema operativo huésped, por parte del sistema operativo anfitrión, que el periodo de gracia ha comenzado; y llevar a cabo, por parte del sistema operativo anfitrión, una segunda función subsiguiente al periodo de gracia.

Description

DESCRIPCIÓN
Provisión, por parte de un programa a otro programa, de acceso a un recurso de canal de aviso
Antecedentes
Un aspecto de la presente invención versa, en general, sobre el procesamiento dentro de un entorno informático y, en particular, sobre la facilitación del procesamiento asociado con recursos compartidos.
Un tipo de entorno en el que se comparten recursos es un entorno virtual, que incluye una unidad central de proceso (CPU) anfitriona y una o más unidades centrales de proceso huéspedes. Un programa anfitrión (por ejemplo, el sistema operativo anfitrión) que se ejecuta en una CPU anfitriona proporciona una CPU huésped (también denominada CPU virtual). El programa anfitrión lleva a cabo acciones para reservar recursos de una configuración anfitriona subyacente y asignar esos recursos a la CPU huésped.
En una realización particular, existe una CPU huésped cuando una CPU anfitriona entra en el modo de ejecución interpretativa. En este punto, el sistema operativo huésped (también denominado programa huésped en la presente memoria) comienza su ejecución en la c Pu virtualizada, mientras el programa anfitrión suspende la ejecución en la CPU anfitriona. El programa anfitrión reinicia la ejecución en la CPU cuando termina el modo de ejecución interpretativa. Existen técnicas de vinculación entre el anfitrión y el huésped por medio de las cuales se guarda y se restaura el estado del anfitrión y el huésped. Normalmente, cuando un programa anfitrión inicia un programa huésped, el programa anfitrión se suspende hasta que el programa huésped retorna. Tanto la CPU huésped como la CPU anfitriona son modos diferentes de la única CPU anfitriona.
La configuración del anfitrión suele incluir todos los recursos del sistema informático. Estos recursos incluyen, sin limitación, unidades centrales de proceso (CPU), memoria principal, y dispositivos de entrada/salida (E/S). En tal sistema, múltiples CPU huéspedes pueden ser soportadas desde una sola CPU anfitriona. Esto se logra asignado a cada CPU huésped un periodo de tiempo para usar la CPU anfitriona, denominado fracción temporal, y luego mover la CPU anfitriona a otra CPU huésped durante una fracción temporal, etcétera. El número de CPU huéspedes soportables por una CPU anfitriona varía según las prestaciones de la CPU anfitriona y de la capacidad deseada que haya de asignarse a cada CPU huésped.
Una configuración de huéspedes es formada normalmente a partir de dos o más CPU huéspedes, y es denominada configuración de multiprocesamiento de huéspedes (MP). Cada CPU huésped puede ser provista por una cuota de una CPU anfitriona separada o incluso compartiendo una única CPU anfitriona. Un atributo de tal compartición es que una CPU huésped puede operar durante un periodo de tiempo, denominado fracción temporal, y luego está inactiva durante cierto periodo de tiempo arbitrario. El periodo inactivo varía en función de criterios de prioridad establecidos por el sistema, del número total de CPU huéspedes que han de compartir las CPU anfitrionas, y de la técnica particular de compartición que se use.
En tal sistema de multiprocesamiento de huéspedes, un programa, denominado a veces unidad despachable (DU), puede ser despachado por el sistema operativo huésped en una CPU huésped, y luego, durante la ejecución de esa unidad despachable, la fracción temporal del anfitrión de esa unidad despachable expira. Esto podría dejar a la unidad despachable en tal condición que no pueda ser configurada en ninguna otra CPU huésped de la configuración de multiprocesamiento de huéspedes, con independencia de la disponibilidad de cualesquiera otras CPU huéspedes. En vez de ello, para continuar, debe aguardar a que la única CPU huésped reciba su siguiente fracción temporal. En función de esta técnica de compartición y de la prioridad relativa de la configuración de huéspedes, la siguiente fracción temporal can puede demorarse un periodo sustancial de tiempo. Aunque la configuración de huéspedes tenga otras CPU huéspedes que sean capaces de ejecutar la unidad despachable, la continuación de la unidad despachable no es posible debido al estado de la CPU huésped de la unidad despachable que se guardó cuando expiró fracción temporal anterior. Hasta que pueda usarse ese estado preciso para continuar la CPU huésped, la unidad despachable está inactiva.
La patente estadounidense número US 7536690 B2 presenta un método y un sistema que preparan una tarea para ser reemplazada de la utilización del procesador que está funcionando en un ordenador con múltiples procesadores, cada uno de los cuales soporta múltiples flujos.
Breve compendio
Mediante la provisión de un producto de programa informático para facilitar el procesamiento en un entorno informático se superan las deficiencias de la técnica anterior y se proporcionan ventajas. Según un aspecto de la invención, se proporciona un sistema informático para facilitar el procesamiento en un entorno informático según la reivindicación 1.
Según otro aspecto de la invención, se proporciona un método para facilitar el procesamiento en un entorno informático según la reivindicación 8.
En la presente memoria también se describen y reivindican métodos y sistemas relativos a uno o más aspectos de la presente invención. Además, en la presente memoria también se describen y pueden reivindicarse servicios relativos a uno o más aspectos de la presente invención.
A través de las técnicas de la presente invención se plasman características y ventajas adicionales. En la presente memoria se describen con detalle otras realizaciones y otros aspectos de la invención, y se los considera parte de la invención reivindicada.
Breve descripción de las varias vistas de los dibujos
Uno o más aspectos de la presente invención son señalados en particular y reivindicados con claridad como ejemplos en las reivindicaciones a la conclusión de la memoria. Los objetos, características y ventajas de la invención precedentes son evidentes a partir de la siguiente descripción detallada tomada junto con los dibujos adjuntos, en los cuales:
la FIG. 1 representa una realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 2 representa otra realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 3 representa otra realización adicional de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 4 representa una realización de la lógica asociada con la observación por parte del huésped del recurso de interrupción del canal de aviso, según un aspecto de la presente invención;
la FIG. 5 representa una realización de la lógica asociada con la observación por parte del anfitrión del recurso de interrupción del canal de aviso, según un aspecto de la presente invención;
la FIG. 6 representa una realización de la lógica asociada con la gestión de la salida de un huésped por parte de un anfitrión, según un aspecto de la presente invención;
la FIG. 7 representa una realización de una visión general de la lógica del recurso de interrupción del canal de aviso, según un aspecto de la presente invención;
las FIGURAS 8A-8C representan realizaciones de la lógica asociada con el procesamiento del recurso de interrupción del canal de aviso, según un aspecto de la presente invención;
la FIG. 9 representa una realización de la lógica asociada con la recepción de una interrupción del canal de aviso, según un aspecto de la presente invención;
la FIG. 10 representa una realización de un formato de una instrucción de diagnóstico usada según un aspecto de la presente invención;
la FIG. 11 representa una realización de un producto de programa informático que incorpora uno o más aspectos de la presente invención;
la FIG. 12 representa una realización de un sistema informático anfitrión para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 13 representa un ejemplo adicional de un sistema informático para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 14 representa otro ejemplo de un sistema informático que comprende una red informática para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 15 representa una realización de diversos elementos de un sistema informático para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 16A representa una realización de la unidad de ejecución del sistema informático de la FIG. 15 para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 16B representa una realización de la unidad de ramificación del sistema informático de la FIG. 15 para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 16C representa una realización de la unidad de carga/almacenamiento del sistema informático de la FIG. 15 para incorporar y usar uno o más aspectos de la presente invención; y
la FIG. 17 representa una realización de un sistema informático anfitrión emulado para incorporar y usar uno o más aspectos de la presente invención.
Descripción detallada
Según un aspecto de la presente invención, se proporciona una prestación para avisar a un programa (por ejemplo, a un sistema operativo) de que tiene un periodo de gracia en el cual realizar una función. Por ejemplo, se le da a un programa un periodo de gracia para hacer limpieza (por ejemplo, completar, detener y/o mover una unidad despachable).
Según un aspecto adicional de la presente invención, un programa y/o un procesador son avisados de que están a punto de perder acceso a recursos (por ejemplo, recursos compartidos). Por ejemplo, se proporciona un aviso a un procesador que comparte recursos con otros procesadores de que el procesador está a punto de perder acceso a los recursos. Como ejemplo adicional, un programa, tal como un sistema operativo, que se ejecuta en un procesador compartido (es decir, el programa comparte el procesador con otros programas) es avisado de que está a punto de perder sus recursos de procesador.
En una realización particular, se proporciona una prestación en la que se proporciona a un programa huésped que se ejecuta en una CPU huésped provista por una CPU anfitriona un aviso de expiración de una fracción temporal dada a la CPU huésped desde la CPU anfitriona o del apremio de la fracción temporal del huésped por parte del anfitrión. El aviso proporciona un periodo de gracia que la c Pu huésped puede usar para llevar a cabo una función particular, tal como completar la ejecución de una unidad despachable, detener la unidad despachable en un punto en el que la unidad despachable sea redespachable, y/o mover la unidad despachable a otra CPU huésped.
Tal como se usa en la presente memoria, un periodo de gracia incluye como ejemplos una cantidad de tiempo, un número de instrucciones, un número de ciclos, etc. Es de una duración predeterminada, en la cual pueden llevarse a cabo una o más funciones.
Con referencia a la FIG. 1, se describe una realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención. En esta realización particular, un entorno informático 100 incluye varios procesadores 102 que comparten recursos 104. A cada procesador (y/o a cada programa, tal como un sistema operativo, que se ejecute en el procesador) se le da cierta cantidad de tiempo, denominada fracción temporal, para compartir los recursos. Los recursos incluyen, por ejemplo, recursos, memoria, dispositivos o interfaces de entrada/salida, y/u otros recursos de la unidad central de proceso. El procesador (o un programa que se ejecute en el mismo) que tenga acceso a los recursos es avisado de que su acceso está a punto de acabar y que, por lo tanto, el procesador (o el programa) ha de llevar a cabo una acción particular, tal como limpieza, completar una unidad de trabajo, detener una unidad de trabajo, mover una unidad de trabajo, etc.
Con referencia a la FIG. 2 se describe otra realización de un entorno informático 200 para incorporar y usar uno o más aspectos de la presente invención. El entorno informático 200 está basado, por ejemplo, en la z/Architecture® ofrecida por la International Business Machines Corporation (IBM®), de Armonk, Nueva York. La z/Architecture® se describe en una publicación de IBM® titulada “z/Architecture Principles of Operation”, IBM® Publication No. SA22-7832-08, novena edición, agosto de 2010. En un ejemplo, un entorno informático basado en la z/Architecture® incluye un servidor System z®, ofrecido por la International Business Machines Corporation, de Armonk, Nueva York. IBM®, z/Architecture® y zSeries®, así como z/VM® y z/OS®, mencionados posteriormente, son marcas registradas de International Business Machines Corporation, de Armonk, Nueva York, e E. UU. Otros nombres usados en la presente memoria pueden ser marcas comerciales registradas, marcas comerciales o nombres de productos de International Business Machines Corporation o de otras empresas.
Como ejemplo, el entorno informático 200 incluye un complejo 202 de procesador central (CPC) que proporciona soporte a máquinas virtuales. El CPC 202 incluye, por ejemplo, una o más máquinas virtuales 204 (o en otra realización, particiones lógicas), uno o más procesadores centrales 206, al menos un anfitrión 208 (por ejemplo, un programa de control, tal como un hipervisor) y un subsistema 210 de entrada/salida, cada uno de los cuales es descrito posteriormente. En este ejemplo, las máquinas virtuales y el anfitrión están incluidos en la memoria.
El soporte de máquinas virtuales por parte del CPC proporciona la capacidad de operar un gran número de máquinas virtuales, cada una de las cuales es capaz de ser anfitriona de un sistema operativo huésped 212, tales como, por ejemplo, z/VM®, z/OS® o Linux. Cada máquina virtual 204 es capaz de funcionar como un sistema separado. Es decir, cada máquina virtual puede ser reinicializada independientemente, ser anfitriona de un sistema operativo huésped y operar con diferentes programas. Un sistema operativo o un programa de aplicación que se ejecute en una máquina virtual parece tener acceso a un sistema entero y completo, pero, en realidad, solo hay disponible una porción del mismo.
Los recursos físicos del CPC (por ejemplo, las CPU, la memoria, dispositivos de E/S, etc.) son propiedad del anfitrión 208, y los recursos físicos compartidos son despachados por el anfitrión a los sistemas operativos huéspedes, según se necesiten, para satisfacer las demandas de procesamiento. Las interacciones entre los sistemas operativos huéspedes y los recursos físicos de máquina compartidos son controlados por el anfitrión, dado que el gran número de huéspedes normalmente impide que el anfitrión simplemente divida y asigne los recursos de soporte físico a los huéspedes configurados.
Los procesadores centrales 206 son recursos físicos de procesador que son asignables a una máquina virtual. Por ejemplo, la máquina virtual 204 incluye uno o más procesadores lógicos, cada uno de los cuales representa la totalidad o una parte de un recurso 206 de procesador físico que puede ser asignado dinámicamente a una máquina virtual. Las máquinas virtuales 204 son gestionadas por el anfitrión 208. Como ejemplos, el anfitrión puede ser implementado en microcódigo ejecutado en los procesadores 206 o puede formar parte de un sistema operativo anfitrión que se ejecuta en la máquina. En un ejemplo, el anfitrión 208 es el administrador de sistema/recursos de procesador (PR/SM) ofrecido por la International Business Machines Corporation, de Armonk, Nueva York.
El subsistema 210 de entrada/salida dirige el flujo de información entre dispositivos y la memoria principal. Está acoplado al complejo de procesamiento central, porque ser parte del complejo de procesamiento central o estar separado del mismo. El subsistema de E/S descarga a los procesadores centrales de la tarea de comunicarse directamente con los dispositivos de E/S acoplados con el CPC y permite que el procesamiento de datos prosiga de forma concurrente con el procesamiento de E/S.
En una realización, los soportes físicos/lógicos del anfitrión (por ejemplo, el PR/SM) y del procesador (por ejemplo, System z®) interactúan entre sí de manera cooperativa controlada para procesar las operaciones del sistema operativo huésped sin requerir la transferencia de control del/al sistema operativo huésped y al/del anfitrión. Las operaciones de un huésped pueden ser ejecutadas directamente sin la intervención del anfitrión por medio de un recurso que permite que las instrucciones sean ejecutadas de forma interpretativa por un huésped. Este recurso proporciona una instrucción, Start Interpretive Execution (SIE) [Iniciar ejecución interpretativa], que el anfitrión puede emitir, designando un bloque de control denominado descripción de estado que contiene el estado y los controles del huésped (máquina virtual). La instrucción pone la CPU en un modo de ejecución interpretativa, en el que las instrucciones y las interrupciones del huésped son procesadas directamente, hasta que surja una condición que requiera la atención del anfitrión. Cuando se produce tal condición, termina la ejecución interpretativa, y o bien se presenta una interrupción del anfitrión o la instrucción SIE se completa almacenando los detalles de la condición encontrada; esta acción es denominada intercepción. Se describe un ejemplo de ejecución interpretativa en “System/370 Extended Architecture/Interpretive Execution”, IBM Publication No. SA22-7095-01, septiembre de 1985.
Según se usa en la presente memoria, el soporte lógico inalterable incluye, por ejemplo, el microcódigo, el milicódigo y/o el macrocódigo del procesador. Incluye, por ejemplo, las instrucciones y/o estructuras de datos de ámbito de soporte físico usadas en la implementación de código de máquina de ámbito superior. En una realización, incluye, por ejemplo, código patentada que es suministrado normalmente como microcódigo que incluye soporte lógico fiable o microcódigo específico al soporte físico subyacente, y controla el acceso del sistema operativo al soporte físico del sistema.
En la FIG. 3 se representa otro ejemplo de un entorno informático que incorpora uno o más aspectos de la presente invención. En este ejemplo, se proporciona un sistema informático anfitrión emulado 300 que emula un ordenador anfitrión 302 de una arquitectura de anfitrión. En el sistema informático anfitrión emulado 300, un procesador anfitrión (CPU) 304 es un procesador anfitrión emulado (o procesador anfitrión virtual) y se implementa a través de un procesador 306 de emulación que tiene una arquitectura del conjunto nativo de instrucciones diferente de la usada por los procesadores del ordenador anfitrión 302. El sistema informático anfitrión emulado 300 tiene una memoria 308 accesible al procesador 306 de emulación. En la realización ejemplar, la memoria 308 está dividida en una porción 310 de memoria del ordenador anfitrión y en una porción 312 de rutinas de emulación. La memoria 310 del ordenador anfitrión está disponible a los programas del ordenador anfitrión emulado 302 según la arquitectura del ordenador anfitrión, y puede incluir tanto un anfitrión o hipervisor 314 como una o más máquinas virtuales 316 que ejecutan sistemas operativos huéspedes 318, análogos a los elementos de nombre similar de la FIG. 2.
El procesador 306 de emulación ejecuta instrucciones nativas de un conjunto de instrucciones de arquitectura de una arquitectura distinta de la del procesador emulado 304. Las instrucciones nativas se obtienen, por ejemplo, de la memoria 312 de rutinas de emulación. El procesador 306 de emulación puede acceder a una instrucción de anfitrión para la ejecución desde un programa en la memoria 310 del ordenador anfitrión empleando una o más instrucciones obtenidas en una rutina de secuencia y acceso/decodificación que puede decodificar la o las instrucciones del anfitrión a las que se accede para determinar una rutina de ejecución de instrucciones nativas para emular la función de la instrucción del anfitrión a la que se accede. Una instrucción de anfitrión de ese tipo puede ser, por ejemplo, una instrucción Start Interpretive Execution (SIE), mediante la cual el anfitrión busca ejecutar un programa huésped en una máquina virtual. Las rutinas 312 de emulación pueden incluir soporte para esta instrucción, y para ejecutar una secuencia de instrucciones de huésped en una máquina virtual 316 según la definición de esta instrucción SIE.
Otros recursos que están definidas para la arquitectura del sistema informático anfitrión 302 pueden ser emuladas por rutinas de recursos de arquitectura, que incluyen recursos tales como, por ejemplo, registros de propósito general, registros de control, traducción dinámica de direcciones, y soporte del subsistema de E/S y antememoria del procesador. Las rutinas de emulación también pueden valerse de funciones disponibles en el procesador 306 de emulación (tales como registros generales y traducción dinámica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulación. También pueden proporcionarse soporte físico especial y motores de descarga para ayudar al procesador 306 a emular las funciones del ordenador anfitrión 302.
Según un aspecto de la presente invención, se proporciona un recurso de interrupción del canal de aviso que puede ser usado en muchos tipos de entornos informáticos. Aunque puede ser usado en muchos tipos de entornos, en la presente memoria se describen aspectos del recurso con referencia a un sistema de multiprocesamiento de huéspedes. Según se ha descrito más arriba, en los sistemas de multiprocesamiento de huéspedes, los sistemas operativos huéspedes despachan unidades despachables (por ejemplo, programas, código, etc.) a unidades centrales de proceso huéspedes de las que es anfitriona al menos una unidad central de proceso anfitriona. La CPU anfitriona proporciona a la CPU huésped una fracción temporal (por ejemplo, una cantidad de tiempo u otro periodo, tal como un número de instrucciones, un número de ciclos, etc.), tiempo durante el cual se ejecuta la unidad despachable. Si, durante la ejecución de la unidad despachable, expira la fracción temporal, la unidad despachable puede quedar en tal condición que no pueda ser continuada en ninguna otra CPU huésped de la configuración de multiprocesamiento de huéspedes, con independencia de la disponibilidad de cualesquiera otras CPU huéspedes. En vez de ello, para continuar debe aguardar a que la única CPU huésped reciba su siguiente fracción temporal. En función de la técnica particular de compartición empleada y de la prioridad relativa de la configuración del huésped, la siguiente fracción temporal puede demorarse un periodo sustancial de tiempo. Aunque la configuración del huésped tenga otras CPU huéspedes que sean capaces de ejecutar la unidad despachable, la continuación de la unidad despachable no es posible debido al estado de la CPU huésped de la unidad despachable que se guardó cuando la fracción temporal anterior expiró. La unidad despachable está inactiva hasta que pueda usarse ese estado preciso para continuar la CPU huésped.
Es posible extender la fracción temporal concediendo tiempo adicional (u otro periodo adicional, tal como instrucciones adicionales, ciclos, etc.), pero incluso con este tiempo extra, la CPU huésped podría extender la ejecución de la unidad despachable, y seguir dejándola en la misma condición indespachable en la que estaría a la expiración de la fracción temporal normal.
Dado que un programa anfitrión no conoce los controles ni el estado usado por un programa huésped arbitrario que ejecuta una unidad despachable arbitraria, conceder siempre tiempo extra para que el sistema operativo huésped limpie su unidad despachable no puede hacerse sin establecer un protocolo entre el programa anfitrión y el programa huésped. Sin un protocolo, cualquier tiempo extra concedido a la CPU huésped sería consumido en el procesamiento principal y posiblemente seguiría concluyendo con la misma condición atascada de la unidad despachable. Por lo tanto, según un aspecto de la presente invención, se proporciona tal protocolo.
Según un aspecto de la presente invención, se proporciona un periodo de gracia o extensión que incluye un aviso que indica al programa huésped que debería emprenderse una acción particular (por ejemplo, completar una unidad despachable o hacer la unidad despachable redespachable). Como ejemplos, el periodo de gracia se proporciona en respuesta a la expiración de la fracción temporal, o en respuesta al apremio del huésped por parte del anfitrión, antes de la expiración de su fracción temporal, para reclamar el procesador para alguna otra prioridad mayor, vista por el anfitrión, según se describe con mayor detalle en la presente memoria.
Como ejemplo, el se proporciona el periodo de gracia en lugar de extender incondicionalmente la fracción temporal. Si la fracción temporal normal ha expirado por completo, se proporciona un periodo de gracia, pero se carga contra la siguiente fracción temporal normal para ser ecuánime con todos los demás huéspedes virtualizados para que cada uno tenga una expectativa de fracción temporal. Si la fracción temporal normal no ha expirado, se toma el periodo de gracia del tiempo normal restante. De cualquier modo, el periodo de gracia limita el tiempo restante (u otro periodo) dado a la CPU huésped y él mismo no es extensible. Así, la CPU huésped no puede seguir funcionando durante un periodo arbitrario y desconocido.
Al inicio del periodo de gracia, el programa huésped es notificado con el fin de limpiar la unidad despachable (por ejemplo, completándola, deteniéndola y/o moviéndola). La imposición del periodo de gracia garantiza que la CPU huésped no exceda el periodo adicional concedido. El protocolo por el cual el programa huésped recibe un periodo de gracia y es notificado de que ese tiempo (u otro periodo) casi ha expirado (el periodo de gracia ha comenzado) es un acuerdo entre el programa huésped y el programa anfitrión para que el protocolo sea entendido por el programa huésped, haciendo por ello que tal notificación merezca la pena. Es decir, el programa huésped cumpliría normalmente con la notificación haciendo, cuando fuera necesario, a la unidad despachable actual despachable en otra CPU huésped de la configuración de huéspedes (por ejemplo, moviéndola).
A continuación se describen, con referencia a las FIGURAS 4-10, detalles adicionales relativos al protocolo y al recurso de interrupción del canal de aviso (también denominado canal de aviso o recurso de canal de aviso). La realización descrita con referencia a esas figuras está relacionada con un entorno virtual que tiene uno o más huéspedes provistos por uno o más anfitriones. Sin embargo, uno o más aspectos de la presente invención también están relacionados con otros entornos, incluyendo entornos no virtuales en los que múltiples procesadores y/o múltiples programas comparten recursos.
Con referencia a la FIG. 4, se describen detalles relativos al protocolo del recurso de interrupción del canal de aviso según es observado por el huésped. El protocolo del canal de aviso, observado por el huésped, incluye, por ejemplo, una indicación de recurso instalado, el alta, la notificación y la salida voluntaria del huésped, cada uno de los cuales se describe a continuación.
Con referencia a la FIG. 4, el programa huésped entiende el protocolo del canal de aviso y busca una indicación de recurso instalado, ETAPA 400. En un ejemplo, esta indicación es un bit almacenado en un bloque de control (por ejemplo, un Service Call Control Block (SCCB) [Bloque de control de llamadas a servicios]), que se observa usando una instrucción de lectura, tal como una instrucción Read SCP Information [Leer información de SCP]. Posteriormente a la determinación de que el recurso está instalado, el programa huésped se da de alta, ETAPA 402. El alta es un mecanismo en el cual el programa huésped comunica al programa anfitrión que el programa huésped entiende el protocolo del recurso de interrupción del canal de aviso. En un ejemplo, el alta se lleva a cabo usando una instrucción de diagnóstico, un ejemplo de la cual se describe posteriormente.
El alta iniciada desde cualquier unidad central de proceso huésped abarca, en una realización, todas las unidades centrales de proceso huéspedes de la configuración de procesamiento múltiple, dado que se desea un comportamiento coherente en todas las CPU huéspedes de la configuración de multiprocesamiento de huéspedes. En una configuración de multiprocesamiento de huéspedes, las CPU huéspedes usan la misma memoria principal, y se supone que las CPU huéspedes operan en lo que a veces se denomina una imagen única. Así, el alta de una CPU huésped es aplicable a las otras CPU huéspedes del entorno de procesamiento múltiple. El alta es irrevocable, en una realización, y esto contribuye a evitar ventanas de sincronización, simplifica el desarrollo y permite una mayor capacidad de prueba. Aunque el alta sea irrevocable, el programa huésped puede determinar si seguirá participar en el protocolo. Si así lo decide, no es preciso que participe reinicializándose o haciendo que se reinicialicen uno o más indicadores de habilitación descritos posteriormente.
Con posterioridad al alta del programa huésped para el protocolo del canal de aviso, una CPU huésped puede ser notificada de un periodo de gracia, ETAPA 404. Por ejemplo, puede ser avisada por una CPU anfitriona de la expiración de una fracción temporal (o de una expiración inminente, en un ejemplo adicional) o del apremio de su fracción temporal. En un ejemplo particular, se notifica a una CPU de una configuración de huéspedes dada de alta, la expiración de su fracción temporal normal y del comienzo de un periodo de gracia que proporciona un periodo adicional para, por ejemplo, hacer limpieza.
Con posterioridad a la recepción de la notificación, el huésped tiene una cantidad de tiempo limitada u otro periodo — el periodo de gracia (por ejemplo, 50 microsegundos en una realización particular), para hacer a una unidad despachable redespachable o para hacer cualquier otro ajuste apropiado. Si la fracción temporal normal ya ha terminado, entonces, antes, por ejemplo, de devolver el control al anfitrión, se usa el periodo de gracia para hacer a la unidad despachable redespachable o para hacer cualquier otro ajuste apropiado. Si la fracción temporal no ha terminado, entonces se usa el periodo de gracia y se cede cualquier porción restante de la fracción temporal. Se produce un cómputo normal del tiempo real usado por una CPU huésped.
Con posterioridad a la realización de la notificación, la CPU huésped está en un periodo limitado (por ejemplo, una cantidad limitada de tiempo) después del cual la operación de la CPU huésped termina involuntariamente. Solo se efectúa una notificación para cada periodo de fracción temporal normal. Así, la CPU huésped sigue limitada por un control de tiempo final que garantiza que la CPU anfitriona compartida subyacente pueda ser compartida en otro sitio, conservando con ello buen orden y disciplina en toda la virtualización proporcionada por el programa anfitrión.
La notificación se puede lograr por cualquier mecanismo que haga que un estado único sea detectado por el programa huésped. Ejemplos incluyen una única interrupción del huésped, una ubicación de memoria principal definida arquitectónicamente que puede ser configurada, o un dispositivo de memoria externa de E/S disponible tanto para el anfitrión como para el huésped. La primera requiere una habilitación apropiada del huésped para permitir la interrupción. Los dos últimos requieren exámenes periódicos suficientemente a menudo para que no se malgaste el periodo de gracia. En un ejemplo particular de la z/Architecture®, se usa como notificación una interrupción del huésped, denominada interrupción del canal de aviso (WTI).
Con posterioridad a ser avisado, el huésped sale voluntariamente de su fracción temporal/periodo de gracia dado, ETAPA 406. El huésped termina el /periodo de gracia/fracción temporal actual después de ser notificado y de hacer a la unidad despachable redespachable (por ejemplo, detener y mover la unidad despachable, o completarla). Esta salida señala al programa anfitrión que el huésped, ciertamente, está siguiendo el protocolo. Pueden producirse otras razones para que el huésped ceda el control, volviendo así al programa anfitrión. Normalmente, para que el procesamiento limitado haga a una unidad despachable redespachable, no se producirían condiciones para ninguna salida superflua de ese tipo. Si la CPU huésped sale dentro del periodo de gracia a través del protocolo de interrupción del canal de aviso, se da una indicación de información de retorno en la siguiente fracción temporal, ocurra cuando ocurra. Así, el programa huésped sabe que satisfizo la limitación temporal impuesta por el periodo de gracia.
Si el huésped se demora en la salida voluntaria, su ejecución es apremiada por la expiración del periodo de gracia. La siguiente vez que la CPU huésped sea iniciada con una fracción temporal normal, se da una indicación de información de retorno para que el huésped sepa que se había demorado. Generalmente, esto puede ser usado para la determinación de problemas en el programa huésped, porque el periodo habitual de gracia da tiempo suficiente para hacer limpieza y salir voluntariamente.
Si se produce una salida superflua, la siguiente vez que se inicie la CPU huésped dentro de una fracción temporal normal, se espera que la salida voluntaria ocurra rápidamente. El mismo mecanismo de información de retorno informaría al programa huésped de que ha intervenido una salida superflua y, así, proporcionaría información diferente para informar la determinación de problemas.
La salida voluntaria se logra mediante cualquier mecanismo que haga que el control pase a través del programa anfitrión desde el programa huésped, y que incluya el mecanismo de información de retorno anteriormente mencionado. El mecanismo usado ha de estar definido en el protocolo de interrupción del canal de aviso de la arquitectura particular para que el programa anfitrión reconozca la solicitud del huésped. En un ejemplo, este mecanismo incluye la instrucción de diagnóstico descrita posteriormente.
Además de la observación del protocolo de interrupción del canal de aviso por parte del huésped, en una realización, el anfitrión también observa el recurso, según se describe con mayor detalle a continuación referencia a la FIG. 5.
Con referencia a la FIG. 5, el anfitrión reconoce la indicación de recurso instalado y la refleja a sus huéspedes, ETAPA 500. Por ejemplo, el anfitrión comprueba el bit de instalado en el bloque de control (por ejemplo, SCCB) y reconoce el estado instalado del protocolo del canal de aviso (es decir, que está puesto a uno) y sabe cómo el programa anfitrión puede usarlo para ventaja del anfitrión. Así, la indicación del recurso es reflejada a su huésped. Por ejemplo, para reflejar el recurso a un huésped, el anfitrión pone a uno un bit de instalado en un bloque de control de huésped (por ejemplo, el SCCB del huésped) o en un área de memoria accesible al huésped. Si, por cualquier razón, el programa anfitrión no quiere que un huésped observe al estado de instalado del protocolo del recurso de interrupción del canal de aviso ni permitir que un huésped observe su estado de instalado ni lo use, el programa anfitrión pasa una indicación de no instalado al huésped (por ejemplo, pone a cero el bit visto por el huésped). Además, en una realización, el programa anfitrión configura los controles de las CPU huéspedes de tal modo que el protocolo del canal de aviso esté inhabilitado (por ejemplo, pone a cero uno o más bits designados en la descripción de estado of la CPU huésped).
Cuando el alta es iniciada por un huésped, el programa anfitrión recibe la solicitud de alta no solicitada y recuerda que el huésped se ha dado de alta, ETAPA 502. Una solicitud de alta iniciada por una sola CPU huésped es suficiente para dar de alta a todas las CPU huéspedes en una configuración de multiprocesamiento de huéspedes. Así, el programa anfitrión habilita el protocolo del canal de aviso para todas las CPU de la configuración de huéspedes, ETAPA 504. Por ejemplo, el programa anfitrión pone a uno a uno o más de los bits designados en la descripción de estado of la CPU huésped para habilitar el recurso de interrupción del canal de aviso para los huéspedes. La información de retorno del alta no es devuelta necesariamente al huésped. Si una CPU huésped intentase el alta incluso cuando el recurso no está instalado, el anfitrión ignoraría la solicitud y no habilitaría las CPU huéspedes para el protocolo del recurso de interrupción del canal de aviso.
Con posterioridad al alta y a la habilitación de los huéspedes para el recurso de canal de aviso, un huésped puede recibir notificación de la invocación del protocolo, ETAPA 506. Esto puede lograrse en varios escenarios descritos a continuación.
Como ejemplo, cuando el protocolo de interrupción del canal de aviso está habilitado para una CPU huésped que opera en el modo de ejecución interpretativa en una CPU anfitriona, digamos la CPU anfitriona X, el programa anfitrión puede iniciar el protocolo desde la CPU anfitriona Y. Es decir, una CPU huésped ha sido provista con una CPU anfitriona X y esa CPU anfitriona X no está actualmente disponible para el programa anfitrión. Si el programa anfitrión tiene razones para volver a apoderarse de la CPU X, primero hace que la CPU X salga del modo de ejecución interpretativa. Es decir, la CPU huésped es detenida, saliendo con ello del modo de ejecución interpretativa de la CPU X. Detener la CPU huésped en cualquier punto arbitrario sin permitir que la CPU huésped se detenga voluntariamente crea el riesgo de un problema para cuya solución está pensado el protocolo de interrupción del canal de aviso. El protocolo de interrupción del canal de aviso permite a la CPU anfitriona Y solicitar una notificación, permitiendo que la acción de un programa anfitrión se transforme en una notificación en la CPU huésped X, ETAPA 506. Dado que el programa huésped se ha dado de alta previamente, el programa anfitrión tiene la expectativa de que el programa huésped reconozca la notificación y soporte la gestión apropiada de la notificación, incluyendo la última etapa de finalización voluntaria de la ejecución, devolviendo así el control de la CPU anfitriona X al programa anfitrión. Una vez sucede esto, el programa anfitrión puede proseguir con cualquier uso de la CPU anfitriona X que pudiera haber hecho que se iniciara el proceso.
El programa anfitrión notifica a un huésped, por ejemplo, poniendo cualquier estado, poniendo un indicador (por ejemplo, un bit), haciendo que se envíe al huésped una señal asíncrona no solicitada (por ejemplo, una interrupción del canal de aviso). Aunque esté dado de alta, el momento de la recepción de tal señal de notificación sigue siendo desconocido en el huésped. Dándose de alta, el huésped simplemente ha acordado adherirse al protocolo si recibe la señal, y cuando la reciba.
En un sistema anfitrión de un solo procesador, si la única CPU anfitriona está en el modo de ejecución interpretativa, de modo que esté operando la CPU huésped, no existe ninguna otra CPU anfitriona para invocar el protocolo de interrupción del canal de aviso. Sin embargo, incluso en este caso, el protocolo de interrupción del canal de aviso puede ser invocado por la propia CPU cuando la CPU anfitriona, mientras está en el modo de ejecución interpretativa, reconoce la expiración de la fracción temporal, y puede entonces conceder un periodo de gracia y realizar la notificación.
En un ejemplo adicional de notificación, la notificación se produce cuando, debido a un cambio en el estado interno reconocido por la CPU anfitriona cuando está en el modo de ejecución interpretativa, la CPU anfitriona hace que se envíe a la CPU huésped la notificación definida en el protocolo de interrupción del canal de aviso. Un ejemplo de esto ocurre cuando la CPU huésped está habilitada para el protocolo de interrupción del canal de aviso y la CPU anfitriona reconoce el final de la fracción temporal. Antes de enviar una señal a la CPU huésped para que ceda el control, la CPU concede internamente un periodo de gracia para dar a la CPU huésped tiempo suficiente para recibir la señal, para emprender la acción apropiada (por ejemplo, completar la unidad despachable actual o hacer redespachable a la unidad despachable actual), y a terminar voluntariamente. Internamente, la CPU anfitriona retiene el estado para indicar que la CPU huésped ha sido notificada. Si el huésped no termina voluntariamente dentro del periodo de gracia, la CPU reconoce esto y termina la ejecución del huésped, devolviendo con ello el control al programa anfitrión, terminando el modo de ejecución interpretativa. El huésped no tiene forma de determinar, en una realización, por qué se invocó el protocolo, sino solo que recibió la notificación de que hiciera limpieza y terminara. Pueden existir otras razones del anfitrión para provocar una terminación del modo de ejecución interpretativa y, así, terminar la ejecución del huésped. Por ejemplo, existen escenarios en los que ha de detenerse la ejecución de todas las CPU huéspedes para hacer algún cambio coordinado en toda la configuración de los huéspedes. Una configuración de huéspedes de procesamiento múltiple no debe tener algunas CPU operando con reglas o premisas diferentes de las de otras CPU de la configuración de huéspedes. Tal asimetría podría crear resultados imprevisibles en los huéspedes.
La CPU anfitriona recibe el efecto de que la CPU huésped ha efectuado la salida voluntaria o ha salido por cualquier otra razón (por ejemplo, se devuelve al anfitrión el recurso de la CPU), ETAPA 508. Si la salida es debida a lo que define el protocolo de interrupción del canal de aviso, entonces el programa anfitrión se acuerda entonces de proporcionar una información de retorno a la CPU huésped la siguiente vez que se inicie, con independencia de lo que pueda tardar. Esta información de retorno es una indicación positiva (“buena”), suponiendo que el huésped saliera voluntariamente antes de la expiración del periodo de gracia. Si la salida es debida a cualquier otra razón, no se produce ninguna información de retorno del protocolo de interrupción del canal de aviso en el siguiente inicio de la CPU huésped.
Si el huésped se demora en la salida voluntaria —es decir, el huésped realiza una acción para salir voluntariamente, pero el periodo de gracia ha expirado— , la ejecución de la CPU huésped es apremiada por la expiración del periodo de gracia. La siguiente vez que la CPU huésped sea iniciada con una fracción temporal normal, se da una indicación de información de retorno para que el huésped sepa que se había demorado en su salida voluntaria. Generalmente, esto puede ser usado para la determinación de problemas en el programa huésped, porque el periodo habitual de gracia da tiempo suficiente para hacer limpieza y salir voluntariamente.
Si se produce una salida distinta de una salida voluntaria del protocolo de interrupción del canal de aviso, la siguiente vez que se inicie la CPU huésped dentro de una fracción temporal normal, no se incluye ninguna información de retorno, según el protocolo del canal de aviso.
El medio para salir voluntariamente se logra por cualquier mecanismo que haga que el control pase al programa anfitrión desde el programa huésped, que sea reconocido por el programa anfitrión como la salida voluntaria del protocolo, y que incluya el mecanismo de información de retorno anteriormente mencionado. En un ejemplo, se usa una instrucción de diagnóstico para la salida voluntaria. Es decir, se usa la instrucción de diagnóstico con un parámetro particular para indicar la finalización de la fracción temporal. Después de que el programa huésped emita la instrucción de diagnóstico y de que esta sea ejecutada, el programa anfitrión determina si la salida fue puntual. A continuación, cuando el huésped vuelva a iniciarse, que es en la siguiente instrucción secuencial después de Diagnosticar, se proporciona un código de condición que indica si fue puntual. El código de la condición es puesto a uno, por ejemplo, en la PSW del huésped que se usa para iniciar el huésped en la siguiente instrucción secuencial. El huésped puede comprobar entonces el código de la condición.
Con referencia a la FIG. 6 se describe adicionalmente la gestión de la salida voluntaria del huésped por parte del anfitrión. Inicialmente, el control vuelve a la CPU anfitriona cuando la CPU huésped se detiene, ETAPA 600. Se efectúa una determinación de si el control volvió dentro del periodo de gracia, CONSULTA 602. Si el control volvió dentro del periodo de gracia, entonces el programa anfitrión observa una salida voluntaria del huésped según el protocolo de interrupción del canal de aviso y recuerda la información de retorno buena para el siguiente inicio de la c Pu huésped, con independencia de qué CPU anfitriona pudiera proveer la CPU huésped en ese momento, ETAPA 604. Esto es suponiendo que el recurso de interrupción del canal de aviso esté instalado. Si no, el estado de la información de retorno no es recordado. Sin embargo, si el huésped lleva a cabo una acción para salir voluntariamente, pero está fuera del periodo de gracia, CONSULTA 602, entonces el programa anfitrión en la CPU anfitriona observa una salida voluntaria del huésped según el protocolo de interrupción del canal de aviso (aunque fuera a destiempo y tuviera que salir involuntariamente) y recuerda la información de retorno mala para el siguiente inicio de la CPU huésped, con independencia de qué CPU anfitriona pudiera proveer la CPU huésped en ese momento, ETAPA 606. De nuevo, esto es suponiendo que el recurso de canal de aviso esté instalado. Si no, no se recuerda el estado de la información de retorno.
Posteriormente, recuerde el anfitrión una información de retorno buena o mala, el programa anfitrión redirige la CPU anfitriona a una asignación de apremio, ETAPA 608. Es decir, el anfitrión es redirigido a llevar a cabo una o más funciones ahora que vuelve a tener sus recursos (CPU).
Además, en el siguiente inicio secuencial de la CPU huésped, con independencia de qué CPU anfitriona provea la CPU huésped, si se recuerda el estado de la información de retorno, se establece la indicación de estado de la información de retorno antes del inicio de la CPU huésped, ETAPA 610. En un ejemplo, se establece en la descripción de estado de SIE; por ejemplo, en la PSW de la descripción de estado, que indica el inicio de la siguiente instrucción secuencial.
Con referencia a las FIGURAS 7-9 se describen detalles adicionales relativos al procesamiento asociado con el recurso de interrupción del canal de aviso. En particular, la FIG. 7 representa una realización de la lógica asociada con una visión general del procesamiento del recurso de interrupción del canal de aviso; las FIGURAS 8A-8C proporcionan detalles del procesamiento del recurso de interrupción del canal de aviso, según un aspecto de la presente invención; y la FIG. 9 representa una realización de la lógica asociada con la recepción de una interrupción del canal de aviso.
Con referencia a la FIG. 7, inicialmente un programa huésped (por ejemplo, un sistema operativo huésped) reconoce que el recurso de interrupción del canal de aviso está instalado, ETAPA 700. En una realización, esto se logra observando, por parte del programa huésped, un indicador (por ejemplo, un bit) de recurso instalado que está situado, por ejemplo, en un bloque designado de control. Si el sistema operativo huésped tiene el soporte para participar en el recurso de interrupción del canal de aviso, reconoce el indicador de recurso de interrupción del canal de aviso instalado y luego indica su capacidad de participar en el protocolo. En un ejemplo, esto incluye hacer constar su intención de participar en el procesamiento del canal de aviso, ETAPA 702. Según se ha descrito en la presente memoria, en un ejemplo, el alta se lleva a cabo a través de una instrucción de diagnóstico. Cuando se da de alta, el sistema operativo huésped indica tanto a la CPU anfitriona como al programa anfitrión que sabe gestionar una interrupción del canal de aviso (WTI), que es una interrupción no ambigua que proporciona un aviso al huésped de que, por ejemplo, está a punto de perder acceso a su recurso compartido (por ejemplo, la CPU huésped) y que, por ejemplo, ha de emprender acciones con respecto a su unidad despachable que se ejecuta en ese momento. El alta es un prerrequisito, en una realización, para la recepción de la WTI. Si el huésped no está dado de alta para el recurso de interrupción del canal de aviso, tras la expiración de la fracción temporal del huésped, no se ofrece ningún periodo de gracia, y se saca a la CPU huésped del modo de ejecución interpretativa.
Aunque esté dado de alta, en una realización, el programa huésped tiene dos mecanismos para deshabilitar la presentación de la WTI. Por ejemplo, un bit seleccionado, por ejemplo, en la palabra de estado del programa (PSW) puede ser puesto a cero, lo que inhabilita la presentación de todas las interrupciones externas, incluyendo la WTI; o un bit en un registro de control especificado (por ejemplo, CR0) puede ser puesto a cero para inhabilitar solamente la WTI. Cuando ambos bits son uno, la presentación de la WTI está habilitada. Si la presentación de una WTI permanece inhabilitada durante todo el periodo de gracia de la WTI, la ejecución del huésped termina sin el beneficio de la WTI, lo que constituye una salida involuntaria.
Durante la ejecución interpretativa de la CPU huésped, si la CPU huésped reconoce internamente ya sea una condición de interrupción externa del temporizador de la CPU anfitriona (por ejemplo, una fracción temporal expirada) o un apremio solicitado por el programa anfitrión, CONSULTA 704, el procesamiento interno de la CPU determina, antes de que el anfitrión reciba el control, si ha de llevarse a cabo el procesamiento de la interrupción del canal de aviso, CONSULTA 706. Es decir, el procesamiento interno de la CPU verifica que el huésped esté habilitado para el procesamiento del canal de aviso y, por lo tanto, determina que el procesamiento del canal de aviso esté incluido en el procesamiento que haya de llevarse a cabo. Si no ha de llevarse a cabo el procesamiento de la interrupción del canal de aviso, entonces termina la ejecución interpretativa del huésped, ETAPA 708, y el control vuelve al programa anfitrión, ETAPA 710. Sin embargo, volviendo a la CONSULTA 706, si ha de llevarse a cabo el procesamiento de la interrupción del canal de aviso, entonces se realiza ese procesamiento, según se describe con mayor detalle posteriormente, ETAPA 712.
Con referencia a las FIGURAS 8A-8C se describen realizaciones de detalles adicionales del procesamiento de la interrupción del canal de aviso. En este procesamiento, se emplean varios indicadores de control, incluyendo los siguientes:
un control interno activo (por ejemplo, el bit G) del periodo de gracia del recurso de interrupción del canal de aviso, que no es visible arquitectónicamente, pero que es usado por la lógica interna de la CPU;
un control interno presentado (por ejemplo, el bit P) de la interrupción del canal de aviso (WTI), que indica, cuando es uno, que la WTI ha sido presentada al huésped, y cuando es cero indica que no ha sido presentada. Como el control interno activo del periodo de gracia del recurso de interrupción del canal de aviso, el control interno presentado de la WTI no es visible arquitectónicamente, pero es usado por la lógica interna de la CPU;
un apremio, por parte del programa anfitrión, del control del huésped (por ejemplo, el bit T), que es, por ejemplo, el indicador de la solicitud de intervención de canal de aviso en la descripción de estado de la CPU huésped; y
existe la habilitación de interrupciones externas cuando un indicador E es uno. En un ejemplo, el indicador E es un bit dentro de la palabra de estado del programa (PSW) actual.
Con referencia a la FIG. 8A, en un ejemplo, se reconoce una condición de interrupción de temporizador de la CPU anfitriona (por ejemplo, la fracción temporal expirada) o se reconoce una solicitud de intervención de canal de aviso (por ejemplo, el anfitrión quiere un regreso temprano de los recursos de CPU; es decir, antes del fin de la fracción temporal). Si se reconoce una condición de interrupción del temporizador de la CPU anfitriona, CONSULTA 800, se efectúa una determinación de si está puesto el indicador de control activo del periodo de gracia (por ejemplo, si G es igual a 1), CONSULTA 802. Si G no está puesto, entonces el indicador G es puesto, por ejemplo, a 1, ETAPA 804, y el periodo de gracia del recurso de interrupción del canal de aviso está a punto de empezar. Acto seguido, se guarda el valor actual del temporizador de la CPU anfitriona (el valor guardado es denominado valor original en la presente memoria), ETAPA 806, y el temporizador de la CPU anfitriona es puesto al periodo de gracia del canal de aviso (por ejemplo, 50 microsegundos), ETAPA 808.
Posteriormente, se realiza una determinación a cuando a si el huésped está habilitado para una interrupción del canal de aviso, CONSULTA 810. En una realización, si está activo el nivel 2 de huésped, indicando que uno huésped ha iniciado otro huésped, entonces el Huésped 2 sale del modo de ejecución interpretativa, como para una interrupción del Huésped 1, y se anula la instrucción Start Interpretive Execution del Huésped 1. Así, el procesamiento es como un Huésped 1 en este punto. Si el Huésped 2 no está activo, entonces el procesamiento simplemente continúa con el Huésped 1. Si el huésped está habilitado para una WTI, entonces se presenta al huésped la interrupción externa del canal de aviso (WTI), ETAPA 812. En un ejemplo, esta interrupción incluye un código de interrupción particular que se presenta que indica que tiene un periodo de gracia para llevar a cabo una o más funciones (por ejemplo, de limpieza), si se desea.
Además, P se pone a 1, lo que indica que se ha presentado la WTI, ETAPA 814. Además, el bit T es puesto a 1 usando una función de actualización de enlace recíproco (puede ya haber sido igual a 1 si se había usado originalmente una solicitud de intervención), ETAPA 816. El periodo de gracia en el temporizador de la CPU anfitriona continúa disminuyendo, con independencia de si se presentó la WTI, ETAPA 818. A continuación, se sale de este procesamiento, ETAPA 820. En un ejemplo, una designación de salida de este proceso indica que la CPU ha completado el procesamiento actual del recurso de interrupción del canal de aviso y vuelve a otro procesamiento, según dicte el estado actual de la CPU.
Volviendo a la CONSULTA 810, si el huésped no está habilitado para la interrupción del canal de aviso, el procesamiento prosigue a la ETAPA 816. En este caso, el huésped no está habilitado para la WTI, por lo que no puede ser presentada al huésped. Sin embargo, el bit T es puesto a 1, a la espera, para que pueda ser detectado posteriormente cuando el huésped sí esté habilitado para la WTI.
Volviendo a la CONSULTA 800, si no es una condición de interrupción de temporizador de la CPU anfitriona, entonces se reconoce una solicitud de intervención de canal de aviso (es decir, el apremio por parte del anfitrión). Es decir, el bit T en el campo de solicitud de intervención de la descripción de estado del huésped es 1. Así, se efectúa una determinación de si el indicador G está puesto a uno, CONSULTA 850. Si no lo está (por ejemplo, 0), entonces el procesamiento continúa con la ETAPA 804. En esta situación, la condición de que T sea igual a 1 es la razón inicial para iniciar el proceso de la WTI. Sin embargo, si el bit G está puesto a uno, entonces se efectúa una determinación de si P está puesto a uno, CONSULTA 852. Si P no está puesto a uno (es, por ejemplo, igual a 0), entonces el procesamiento continúa con la ETAPA 810 intentando presentar la WTI. Sin embargo, si P está puesto a uno (es, por ejemplo, no igual a 0), entonces el descubrimiento de que T es igual a 1 después de que haya comenzado el periodo de gracia del recurso de canal de aviso no tiene efecto alguno, y se sale del proceso, ETAPA 854.
Volviendo a la CONSULTA 802, si G está activado (es, por ejemplo, igual a 1), la CPU huésped ya ha estado funcionando en el periodo de gracia y la expiración del temporizador de la CPU anfitriona indica que el periodo de gracia ha expirado. Así, se había iniciado previamente un ciclo de WTI y el periodo de gracia ha expirado. Por lo tanto, con referencia a la FIG. 8B, el valor original previamente guardado del temporizador de la CPU anfitriona se reduce en la cantidad de tiempo realmente usada durante el periodo de gracia y luego es cargado en el temporizador de la CPU anfitriona, ETAPA 860. Se sale del modo de ejecución interpretativa, ETAPA 862, y se presenta al anfitrión la interrupción externa del temporizador de la CPU anfitriona, ETAPA 864 (esta es una forma de una salida involuntaria del huésped).
Además de lo anterior, el análisis de la WTI puede ser iniciado a través de ciertas instrucciones que habilitan la CPU para la WTI. Por ejemplo, con referencia a la FIG. 8C, inicialmente, varias instrucciones que habilitan la CPU para la WTI —incluyendo, por ejemplo, una instrucción Load PSW (Extended) [Cargar la PSW (Extendida)] y una instrucción Store Then [Almacenar entonces] o System Mask [Máscara de sistema] que puede activar el bit designado en la PSW, y Load Control [Control de carga] que puede activar el bit seleccionado en el registro de control— llevan a cabo la monitorización, según se describe en la presente memoria. Por ejemplo, una instrucción que pueda habilitar interrupciones comprueba el bit T para un procesamiento potencial del canal de aviso. Si T=0, CONSULTA 880, entonces no hay ninguna WTI, y se sale de este proceso, ETAPA 884. Sin embargo, si T=1, entonces el procesamiento continúa con la CONSULTA 822.
En la CONSULTA 882, se efectúa una determinación de si P está activada (si, por ejemplo, es igual a 1). Si lo está, entonces se sale de este proceso, ETAPA 884, dado que la habilitación había sido detectada con anterioridad. Sin embargo, si P no está activada (si, por ejemplo, no es igual a 1), entonces se efectúa una determinación adicional de si G está activada (si es, por ejemplo, igual a 1), CONSULTA 886. Si no lo está, entonces el procesamiento continúa con la ETAPA 804 (FIG. 8A). Sin embargo, si G está activada (es, por ejemplo, igual a 1), ETAPA 886 (FIG. 8C), entonces el procesamiento continúa con la CONSULTA 810 en la FIG. 8A, ETAPA 888, y se sale del procesamiento.
Con referencia a la FIG. 9, se describen detalles adicionales del procesamiento de la interrupción del canal de aviso. Cuando el programa huésped recibe la interrupción del canal de aviso, lleva a cabo cualesquiera funciones (por ejemplo, funciones de SO [sistema operativo]) haya de llevar a cabo para, por ejemplo, hacer redespachable a la unidad despachable de trabajo, ETAPA 900. Por ejemplo, el huésped detiene la unidad despachable en un punto particular, guarda su estado, y la mueve a otra CPU huésped o permite que sea movida proporcionando información de estado, etc. El sistema operativo huésped señala que ha finalizado emitiendo al programa anfitrión una señal de terminación de la limpieza del canal de aviso (o sea, una salida voluntaria), ETAPA 902. Esta señal puede ser cualquier mecanismo que haga que la operación del huésped ceda la fracción temporal restante. Sin embargo, el programa anfitrión ha de reconocerla como la parte de limpieza del protocolo. En un ejemplo, se usa una función de terminación de la limpieza de la instrucción de diagnóstico.
Si el programa huésped emite la señal de terminación de la limpieza antes de que expire el periodo de gracia, CONSULTA 904, el programa anfitrión recuerda que la CPU huésped salió a tiempo, ETAPA 906. Esta es una salida voluntaria. Cuando la CPU huésped se inicie la vez siguiente, se vuelve a indicar a la CPU huésped la naturaleza de puntualidad de la señal, ETAPA 908. En un ejemplo, se pone a uno una reanudación de la PSW por parte del huésped para indicar un código de condición coronada por el éxito (por ejemplo, el código de condición 0).
Volviendo a la CONSULTA 904, si el programa huésped, por cualquier razón, toma demasiado tiempo, el periodo de gracia expira, debido a que el temporizador de la CPU anfitriona redujo el periodo de gracia hasta cero, presentando así una condición de interrupción externa del temporizador de la c Pu anfitriona a la CPU. En este caso, la CPU reconoce que el huésped ya estaba en el periodo de gracia y no concede otro periodo de gracia. En vez de ello, se detiene la ejecución del huésped y el control revierte al programa anfitrión por la recepción de la interrupción externa. Un programa anfitrión reconoce que esta terminación de la CPU huésped es una salida involuntaria del huésped.
En el siguiente inicio de la CPU huésped, el sistema operativo huésped puede emitir entonces una señal de terminación de la limpieza, aunque ahora demasiado tarde. El programa anfitrión ya no tiene la expectativa de aguardar la recepción de la señal de terminación de la limpieza. Por ello, la siguiente vez que se inicie la CPU huésped, se vuelve a indicar a la CPU huésped la naturaleza demasiado tardía de la señal, ETAPA 912. En un ejemplo, se marca la reanudación de la PSW por parte del huésped para indicar una condición tardía, que será vista por el huésped en el siguiente inicio. La emisión de una instrucción de diagnóstico demasiado tardía es denominada a veces instrucción de diagnóstico rancia, porque previamente se saltó la salida dentro del periodo de gracia y luego salió posteriormente sin ninguna buena razón.
En un ejemplo, tras un nuevo inicio de la CPU huésped, el programa huésped puede verificar la parte del protocolo de reanudación de la señal en cuanto a si la señal había sido emitida o no dentro del periodo de gracia. El programa huésped puede usar esta información para investigar por qué podría haberse demorado y para hacer mejoras para mejorar la estadística de ser más puntual en el futuro.
En una realización, cuando el huésped está inhabilitado para todas las interrupciones externas, varias instrucciones que pueden habilitar las interrupciones externas pueden llevar a cabo la monitorización. Cuando el huésped está habilitado para las interrupciones externas, se examina una habilitación de WTI. En este punto, si la WTI está habilitada y el bit P es 0, la WTI es presentada a la CPU huésped.
Según se ha mencionado anteriormente, en una realización, se usa una función de diagnóstico para indicar que la limpieza se ha completado o para darse de alta para el recurso de interrupción del canal de aviso. Para la terminación de la limpieza, la función de diagnóstico, cuando es emitida con un parámetro de limpieza y es ejecutada, señala que la CPU emisora ha lleva a cabo cualquier procesamiento asociado con la recepción de una interrupción externa del canal de aviso. Cuando se completa la ejecución, se establece un código de condición que indica si se emitió o no la terminación dentro del intervalo temporal, dependiente del modelo, permitido para la limpieza después de la interrupción del canal de aviso.
En cuanto a la función de alta, la función de diagnóstico, cuando es emitida con el parámetro de alta y es ejecutada, señala que la configuración de emisión entiende la interrupción del canal de aviso. Cuando la ejecución se completa, se pone a uno un código de condición coronada por el éxito. El estado de alta es borrado por un reinicio del sistema.
Con referencia a la FIG. 10 se describe una realización de un formato de una instrucción de diagnóstico. En una realización, una instrucción 1000 de diagnóstico incluye un código 1002 de operación que indica la función de diagnóstico; un primer campo 1004 de registro (R1); un segundo campo 1006 de registro (R3); un campo general 1008 de registro (B2); y un campo 1010 de desplazamiento (D2). En un ejemplo, el contenido del campo D2 se suma al contenido del registro general B2. El resultado no es usado para dirigir datos, sino que, en vez de ello, se usan ciertos bits (por ejemplo, los bits 48-63) como una extensión del código de operación. Cuando la extensión del código de operación tiene un valor predeterminado, se especifica la terminación de la limpieza del canal de aviso y se cede una fracción temporal.
En un ejemplo, el campo R3 queda sin usar y contiene ceros. Además, los bits especificados del registro general R1 quedan sin usar y han de contener ceros, y un bit particular del registro general R1 (por ejemplo, el bit 63) especifica la función de limpieza terminada cuando es cero y la función de alta cuando es 1.
En una partición lógica que usa CPU físicas compartidas, esta función puede mejorar el rendimiento del sistema permitiendo que la CPU física en la que funciona la CPU lógica sea asignada a otra CPU lógica.
Más allá de Diagnosticar, cualquier otra salida de SIE mientras se encuentre en el intervalo de gracia de la WTI, cualquiera sea la causa, restaura de manera similar el valor original del temporizador de la CPU anfitriona reducido en la cantidad del tiempo del periodo de gracia expandido.
En la presente memoria se describe en detalle un recurso de interrupción del canal de aviso que proporciona, en una realización, un mecanismo mediante el cual se puede presentar a una CPU una interrupción externa del canal de aviso en una configuración con recursos compartidos de la CPU, tales como una partición lógica. El programa de control puede usar la interrupción externa del canal de aviso como señal para hacer a la unidad despachable que se ejecuta actualmente despachable en una CPU diferente en la configuración.
En una realización, un procesador (huésped) lógico que funciona en una fracción temporal en un procesador físico recibe una señal de aviso que indica que un periodo de gracia — por ejemplo, una cantidad de tiempo antes de que el procesador lógico sea interrumpido (desasignado del procesador físico que puede estar compartido)—, permitiendo que el trabajo que está realizando el procesador lógico se complete o bien que sea movido a otro procesador lógico. Como ejemplo, se indica a la CPU huésped que su fracción temporal ha expirado y que debería apremiar a la unidad despachable de trabajo (DU) actual para hacerla redespachable en otra CPU huésped. En un ejemplo, la señal de aviso es una interrupción que tiene un código de interrupción que indica que es una WTI. En un ejemplo adicional, el código de interrupción incluye información sobre la cantidad de tiempo u otro periodo dado al periodo de gracia.
En una realización, el recurso de interrupción del canal de aviso puede ser usado en entornos no virtuales, así como en virtuales, en los que un programa y/o un procesador comparten recursos (por ejemplo, recursos de CPU u otros recursos) con uno o más programas y/o procesadores adicionales.
En una realización, en la que el entorno es un entorno virtual, desde la perspectiva del huésped:
1. El programa huésped observes la condición instalada del recurso del protocolo de interrupción del canal de aviso.
2. El programa huésped se da de alta para el protocolo de interrupción del canal de aviso.
3. La CPU huésped recibe una notificación del canal de aviso, según la arquitectura particular (por ejemplo, una indicación de la memoria compartida, una indicación del dispositivo compartido de E/S, una interrupción).
4. El programa huésped que se ejecuta en la CPU huésped lleva a cabo el procesamiento aplicable según la naturaleza del programa huésped que recibió la notificación (se espera que el procesamiento de la notificación sea único por sistema operativo).
5. La CPU huésped cede el control según la técnica voluntaria del protocolo del canal de aviso.
6. En el siguiente inicio de la CPU huésped, programa huésped puede observar la información de retorno según el protocolo del canal de aviso.
Además, en una realización, desde la perspectiva del anfitrión:
A. El programa anfitrión observa la condición instalada del recurso del protocolo de interrupción del canal de aviso.
1. El programa anfitrión obtiene la indicación de instalado del recurso del protocolo de interrupción del canal de aviso.
2. El programa anfitrión recuerda de forma persistente el estado de instalación del protocolo de interrupción del canal de aviso.
3. El programa anfitrión indica el estado de instalación del protocolo de interrupción del canal de aviso a cada configuración de huésped.
4. El programa anfitrión inhabilita el protocolo del canal de aviso en todas las CPU huéspedes no dadas de alta.
5. El programa anfitrión se prepara para reconocer una solicitud de alta del canal de aviso de huésped de cada configuración de huésped.
B. El programa anfitrión reconoce una solicitud de alta del canal de aviso procedente de un huésped.
1. El programa anfitrión recuerda de forma persistente que la configuración de huésped entiende el protocolo del canal de aviso.
2. El programa anfitrión habilita al huésped para el protocolo del canal de aviso.
C. Durante la operación normal de la CPU huésped X, se usa el apremio de la CPU huésped X para volver a obtener la correspondiente CPU anfitriona X.
1. El programa anfitrión en la CPU Y señala la notificación a la CPU huésped X.
a. La CPU X propaga la notificación al CPU huésped X mediante la actualización de la ubicación de memoria compartida, la actualización del dispositivo compartido de E/S, o la interrupción a la CPU huésped X, según el protocolo del canal de aviso.
D. La CPU huésped X se detiene, devolviendo el control a la CPU anfitriona X.
1. Si está dentro del periodo de gracia, el programa anfitrión en la CPU X observa la salida voluntaria del huésped según el protocolo del canal de aviso y recuerda una información de retorno buena para el siguiente inicio de la CPU huésped X, con independencia de qué CPU anfitriona pudiera proveer la CPU huésped X en ese momento.
a. Si está dentro del periodo de gracia, pero la salida de la CPU huésped X no se efectúa según el protocolo del canal de aviso, no se recuerda el estado de la información de retorno.
2. Si no está dentro del periodo de gracia, el programa anfitrión en la CPU X observa la salida voluntaria del huésped según el protocolo del canal de aviso y recuerda una información de retorno mala para el siguiente inicio de la CPU huésped X, con independencia de qué CPU anfitriona pudiera proveer la CPU huésped X en ese momento.
a. Si no está dentro del periodo de gracia, pero la salida de la CPU huésped X no se efectúa según el protocolo del canal de aviso, no se recuerda el estado de la información de retorno.
3. El programa anfitrión en la CPU anfitriona X redirige la CPU X a una asignación de apremio.
E. En el siguiente inicio secuencial de la CPU huésped X, con independencia de qué CPU anfitriona provea la CPU huésped X, si se recuerda el estado de la información de retorno, establecer la indicación de la información de retorno según el protocolo del canal de aviso antes de iniciar la CPU huésped X.
En una realización, un procesador huésped de la configuración de huéspedes recibe una interrupción única, estando definida esa interrupción para una arquitectura de ordenador, y siendo el significado de interrupción una interrupción del canal de aviso. La interrupción indica un código específico que identifica la interrupción como una del canal de aviso. La interrupción implica un intervalo temporal relativamente corto, denominado periodo de gracia, que lleva a la terminación de la ejecución de un procesador huésped.
Durante el periodo de gracia, en un ejemplo, se espera nominalmente que el programa huésped haga a la unidad despachable actual de trabajo redespachable en otro procesador huésped, evitando así que quede atascado en el procesador huésped actual, aguardando su siguiente inicio de la fracción temporal normal desde el anfitrión.
En un ejemplo, se concede el intervalo temporal relativamente corto únicamente una vez por inicio del programa anfitrión del procesador huésped. El intervalo temporal se concede tomándolo, por ejemplo, del intervalo temporal existente en el que funciona el procesador huésped. Dado que el intervalo temporal concedido es asignado tomándolo de la fracción temporal normal restante, no es tiempo prestado, como tal, sino que es usar una cantidad limitada de tiempo tomándola del intervalo temporal actual para garantizar que el procesador huésped sea ciertamente apremiado en un periodo de tiempo relativamente corto.
En un ejemplo adicional en el cual la fracción temporal actual ha expirado, se concede al intervalo temporal un tiempo extra, además del intervalo temporal existente en el cual funciona el procesador huésped. El intervalo temporal concedido es contabilizado por el programa anfitrión cargándolo contra el siguiente intervalo normal secuencial esperado que será consumido por el procesador huésped en el que se espera que funcione a continuación el procesador huésped. Se sigue pretendiendo garantizar que el procesador huésped sea ciertamente apremiado en un periodo de tiempo relativamente corto.
En un ejemplo, se puede generar una solicitud de interrupción para un evento del canal de aviso para informar al programa de que se acerca al fin del intervalo actual de ejecución en una CPU compartida. La solicitud de interrupción es un tipo de condición pendiente que es generado cuando la configuración está dada de alta y está habilitada para el recurso de interrupción del canal de aviso.
El procesamiento cooperativo entre los programas (por ejemplo, anfitrión y huésped) optimiza la compartición de recursos (por ejemplo, la CPU) entre programas (por ejemplo, sistemas operativos huéspedes). Uno o más aspectos proporciona, por ejemplo, mejor tiempo de respuesta con la misma utilización de CPU. Además, se libera la serialización del sistema antes de que el hipervisor dé por finalizado su despacho.
En una realización adicional, uno o más aspectos de la invención pueden ser usados con solicitudes procedentes de un sistema operativo de dejar que continúe un hilo individual de ejecución para mejorar el tiempo transcurrido de trabajo sensible al tiempo. Es decir, un hilo puede solicitar o se le puede proporcionar tiempo adicional para llevar a cabo una función.
Como apreciará un experto en la técnica, uno o más aspectos de la presente invención pueden ser implementados como un sistema, un método o un producto de programa informático. En consecuencia, uno o más aspectos de la presente invención pueden adoptar la forma de una realización de soporte físico por entero, una realización de soporte lógico por entero (incluyendo soporte lógico inalterable, soporte lógico residente, microcódigo, etc.) o una realización que combine aspectos de soporte físico y de soporte lógico, cuyo conjunto puede ser denominado en general en la presente memoria “circuito”, “módulo” o “sistema”. Además, uno o más aspectos de la presente invención pueden adoptar la forma de un producto de programa informático implementado en uno o más soportes legibles por ordenador que tienen código de programa legible por ordenador implementado en los mismos.
Puede utilizarse cualquier combinación de uno o más soportes legibles por ordenador. El soporte legible por ordenador puede ser un soporte de almacenamiento legible por ordenador. Un soporte de almacenamiento legible por ordenador puede ser, por ejemplo, sin limitación, un sistema, un aparato o un dispositivo electrónico, magnético, óptico, electromagnético, de infrarrojos o semiconductores, o cualquier combinación adecuada de los anteriores. Ejemplos más específicos (lista no exhaustiva) del soporte de almacenamiento legible por ordenador incluyen los siguientes: una conexión eléctrica que tenga uno o más hilos, un disquete portátil de ordenador, un disco duro, memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria borrable programable de solo lectura (EPROM o memoria flash), una fibra óptica, una memoria de solo lectura en disco compacto (CD-ROM) portátil, un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento magnético, o cualquier combinación adecuada de los anteriores. En el contexto de este documento, un soporte de almacenamiento legible por ordenador puede ser cualquier soporte tangible que pueda contener o almacenar un programa para ser usado por un sistema, un aparato o un dispositivo de ejecución de instrucciones o en conexión con los mismos.
Con referencia ahora a la FIG. 11, en un ejemplo, un producto 1100 de programa informático incluye, por ejemplo, uno o más soportes no transitorios 1102 de almacenamiento legibles por ordenador para almacenar en los mismos medios o lógica 1104 de código de programa legibles por ordenador para proporcionar y facilitar uno o más aspectos de la presente invención.
El código de programa implementado en un soporte legible por ordenador soporte legible por ordenador puede ser transmitido usando un soporte apropiado, incluyendo, sin limitación, la comunicación inalámbrica, una conducción de cables, cable de fibra óptica, RF, etc., o cualquier combinación adecuada de los anteriores.
El código de programa informático para llevar a cabo operaciones para uno o más aspectos de la presente invención puede estar escrito en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado a objetos, tal como Java, Smalltalk, C++ o similares, y lenguajes de programación convencionales a base de procedimientos, tales como el lenguaje de programación “C”, el ensamblador o lenguajes de programación similares. El código de programa puede ejecutarse por entero en el ordenador del usuario, en parte en el ordenador del usuario, como un paquete autónomo de soporte lógico, en parte en el ordenador del usuario y en parte en un ordenador remoto o por entero en el ordenador remoto o servidor. En este último escenario, el ordenador remoto puede estar conectado al ordenador del usuario a través de cualquier tipo de red, incluyen una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede realizarse a un ordenador externo (por ejemplo, a través de Internet usando un proveedor de servicios de Internet).
Uno o más aspectos de la presente invención son descritos en la presente memoria con referencia a ilustraciones de diagramas de flujo y/o a diagramas de bloques de métodos, aparatos (sistemas) y productos de programa informático según realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones de diagramas de flujo y/o los diagramas de bloques, y combinaciones de bloques en las ilustraciones de diagramas de flujo y/o los diagramas de bloques pueden ser implementados por instrucciones de programa informático. Estas instrucciones de programa informático pueden ser proporcionadas a un procesador de un ordenador de uso general, un ordenador de uso especial o a otro aparato programable de procesamiento de datos para producir una máquina, de modo que las instrucciones, que se ejecutan por medio del procesador del ordenador o de otro aparato programable de procesamiento de datos, creen medios para implementar las funciones/acciones especificadas en el bloque o los bloques de los diagramas de flujo y/o de los diagramas de bloques.
Estas instrucciones de programa informático también pueden ser almacenadas en un soporte legible por ordenador que pueda dirigir a un ordenador, a otro aparato programable de procesamiento de datos o a otros dispositivos a funcionar de una manera particular, de modo que las instrucciones almacenadas en el soporte legible por ordenador produzcan un artículo de fabricación que incluye instrucciones que implementan la función/acción especificada en el bloque o los bloques de los diagramas de flujo y/o de los diagramas de bloques.
Las instrucciones de programa informático también pueden ser cargadas en un ordenador, en otro aparato programable de procesamiento de datos o en otros dispositivos para hacer que se lleve a cabo una serie de etapas operativas en el ordenador, en otro aparato programable o en otros dispositivos para producir un proceso implementado por ordenador, de modo que las instrucciones que se ejecutan en el ordenador o en otro aparato programable proporcionen procesos para implementar las funciones/acciones especificadas en el bloque o los bloques de los diagramas de flujo y/o de los diagramas de bloques.
Los diagramas de flujo y de bloques de las figuras ilustran la arquitectura, la funcionalidad y la operación de posibles implementaciones de sistemas, métodos y productos de programa informático según diversas realizaciones de uno o más aspectos de la presente invención. En este sentido, cada bloque de los diagramas de flujo o de bloques puede representar un módulo, un segmento o una porción de código que comprende una o más instrucciones ejecutables para implementar la función o las funciones lógicas especificadas. También debería hacerse notar que, en algunas implementaciones alternativas, las funciones anotadas en el bloque pueden ocurrir fuera del orden indicado en las figuras. Por ejemplo, dos bloques mostrados en sucesión pueden ser ejecutados, de hecho, de forma sustancialmente concurrente, o los bloques pueden ser ejecutados, a veces, en orden inverso, dependiendo de la funcionalidad implicada. También se observará que cada bloque de los diagramas de bloques y/o la ilustración de un diagrama de flujo y las combinaciones de bloques en los diagramas de bloques y/o la ilustración de diagramas de flujo pueden ser implementadas por sistemas a base de soporte físico de uso especial que lleven a cabo las funciones o las acciones especificadas, o por combinaciones de soporte físico de uso especial e instrucciones informáticas.
Además de lo anterior, uno o más aspectos de la presente invención pueden ser proporcionados, ofrecidos, gestionados, mantenidos, etc. por un proveedor de servicios que ofrezca la gestión de entornos de cliente. Por ejemplo, el proveedor de servicios puede crear, mantener, soportar, etc., código informático y/o una infraestructura informática que lleven a cabo uno o más aspectos de la presente invención para uno o más clientes. A cambio, el proveedor de servicios puede recibir un pago del cliente, por ejemplo, con un acuerdo de abono y/o por tarifa. Además o alternativamente, el proveedor de servicios puede recibir el pago de la venta de contenido publicitario a un tercero o a terceros.
En un aspecto de la presente invención, se puede desplegar una aplicación para llevar a cabo uno o más aspectos de la presente invención. Como ejemplo, el despliegue de una aplicación comprende proporcionar una infraestructura informática operable para llevar a cabo uno o más aspectos de la presente invención.
Como aspecto adicional de la presente invención, puede desplegarse una infraestructura informática que comprende integrar código legible por ordenador en un sistema informático en el que el código, en combinación con el sistema informático, es capaz de llevar a cabo uno o más aspectos de la presente invención.
Como otro aspecto adicional de la presente invención, puede proporcionarse un procedimiento para integrar una infraestructura informática que comprende integrar un código legible por ordenador en un sistema informático. El sistema informático comprende un soporte legible por ordenador, comprendiendo el soporte informático uno o más aspectos de la presente invención. El código, en combinación con el sistema informático, es capaz de llevar a cabo uno o más aspectos de la presente invención.
Aunque en lo que antecede se describen diversas realizaciones, estas son únicamente ejemplos. Por ejemplo, los entornos informáticos de otras arquitecturas pueden incorporar y usar uno o más aspectos de la presente invención. Además, el periodo de gracia puede ser distinto de una cantidad de tiempo, tal como un número de instrucciones o ciclos o cualquier otro valor cuantificable. Pueden realizarse muchos cambios y/o adiciones sin apartarse del alcance de la presente invención.
Además, otros tipos de entornos informáticos pueden beneficiarse de uno o más aspectos de la presente invención. Como ejemplo, es utilizable un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar código de programa que incluya al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de un bus del sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecución en sí del código de programa, memoria auxiliar y antememoria que proporciona un almacenamiento temporal de al menos parte del código de programa para reducir el número de veces que debe recuperarse código de la memoria auxiliar durante la ejecución.
Los dispositivos de entrada/salida o E/S (incluyendo, sin limitación, teclados, pantallas, dispositivos de puntero, un DASD [dispositivo de almacenamiento de acceso directo], cinta, CD, DVD, memorias USB y otros soportes de memoria, etc.) pueden ser acoplados al sistema directamente o a través de controladores intermedios de E/S. También pueden acoplarse al sistema adaptadores de red para permitir que el sistema de procesamiento de datos se acople a otros sistemas de procesamiento de datos o a impresoras o dispositivos de memoria remotos a través de redes privadas o públicas intermedias. Módems, módems de cable y tarjetas Ethernet son solo algunos de los tipos disponibles de adaptadores de red.
A continuación se describen otros ejemplos de entornos informáticos que pueden incorporar y/o usar uno o más aspectos de la presente invención.
Con referencia a la FIG. 12, se presentan componentes representativos de un sistema informático anfitrión 5000 para implementar uno o más aspectos de la presente invención. El ordenador anfitrión representativo 5000 comprende una o más CPU 5001 en comunicación con la memoria 5002 del ordenador (es decir, el almacenamiento central), así como interfaces de E/S para dispositivos 5011 de soporte de memoria y redes 5010 para comunicarse con otros ordenadores o SAN [redes de área de almacenamiento] y similares. La CPU 5001 se atiene a una arquitectura que tiene un conjunto de instrucciones de arquitectura y una funcionalidad de arquitectura. La CPU 5001 puede tener traducción dinámica de direcciones (DAT) 5003 para transformar direcciones de programa (direcciones virtuales) en direcciones reales de memoria. Una DAT normalmente incluye una memoria intermedia lateral 5007 de traducción (TLB) para meter las traducciones en la antememoria para que accesos posteriores al bloque de la memoria 5002 del ordenador no requieran la demora de la traducción de direcciones. normalmente, se emplea una antememoria 5009 entre la memoria 5002 del ordenador y el procesador 5001. La antememoria 5009 puede ser jerárquica, teniendo disponibles una gran antememoria para más de una CPU, antememorias menores más rápidas (de menor nivel) entre la antememoria grande y cada CPU. En algunas implementaciones, se dividen las antememorias de menor nivel para proporcionar antememorias separadas de bajo nivel para la obtención de instrucciones y los accesos a datos. En una realización, una unidad 5004 de obtención de instrucciones obtiene una instrucción en la memoria 5002 a través de una antememoria 5009. La instrucción es decodificada en una unidad 5006 de decodificación de instrucciones y despachada (con otras instrucciones en algunas realizaciones) a la unidad o a las unidades 5008 de ejecución de instrucciones. Normalmente se emplean varias unidades 5008 de ejecución; por ejemplo, una unidad de ejecución aritmética, una unidad de ejecución de coma flotante y una unidad de ejecución de instrucciones de ramificación. La instrucción es ejecutada por la unidad de ejecución, accediendo a operandos desde los registros o la memoria especificados por la instrucción según se precise. Si ha de accederse a un operando (cargarlo o almacenarlo) desde la memoria 5002, normalmente una unidad 5005 de carga/almacenamiento gestiona el acceso bajo control de la instrucción que se ejecuta. Las instrucciones pueden ser ejecutadas en circuitos de soporte físico o en microcódigo (soporte lógico inalterable) interno o mediante una combinación de ambos.
Según se ha hecho notar, un sistema informático incluye información en la memoria local (o principal), así como direccionamiento, protección y grabación de referencias y cambios. Algunos aspectos del direccionamiento incluyen el formato de las direcciones, el concepto de espacios de direcciones, los diversos tipos de direcciones y la manera en la que un tipo de dirección es traducido a otro tipo de dirección. Parte de la memoria principal incluye ubicaciones de memoria asignadas permanentemente. La memoria principal proporciona al sistema un almacenamiento de datos de acceso rápido directamente direccionable. Antes de que puedan ser procesados, han de cargarse en la memoria principal (desde dispositivos de entrada) tanto datos como programas.
La memoria principal puede incluir uno o más almacenamientos de memoria intermedia menores de acceso más rápido, denominados a veces antememorias. Normalmente, una antememoria está físicamente asociada con una CPU o con un procesador de E/S. Generalmente, salvo en el rendimiento, los efectos de la construcción física y el uso de distintos soportes de memoria no son observables por el programa.
Pueden mantenerse antememorias separadas para instrucciones y para operandos de datos. La información dentro de una antememoria es mantenida en bytes contiguos en un límite integral denominado bloque de antememoria o línea de antememoria (o línea, para abreviar). Un modelo puede proporcionar una instrucción EXTRACT CACHE ATTRIBUTE [Extraer atributo de antememoria], que devuelve el tamaño de una línea de antememoria en bytes. Un modelo también puede proporcionar instrucciones PREFETCH DATA [Preobtener datos] y PREFETCH DATA RELATIVE LONG [Preobtener número largo relativo a los datos], que efectúan la preobtención de la memoria en la antememoria de datos o instrucciones o la liberación de datos de la antememoria.
La memoria se representa como una larga cadena horizontal de bits. Para la mayoría de las operaciones, los accesos a la memoria proceden en una secuencia de izquierda a derecha. La cadena de bits se subdivide en unidades de ocho bits. Una unidad de ocho bits es denominada byte, que es el bloque constitutivo de todos los formatos de información. La ubicación de cada byte en la memoria está identificada por un entero no negativo único, que es la dirección de la ubicación de ese byte o, simplemente, la dirección del byte. Las ubicaciones de bytes adyacentes tienen direcciones consecutivas, empezando con 0 a la izquierda y procediendo en una secuencia de izquierda a derecha. Las direcciones son enteros binarios sin signo, y son de 24, 31 o 64 bits.
Se transmite información entre la memoria y una CPU o un subsistema de canales byte a byte, o un grupo de bytes cada vez. A no ser que se especifique algo distinto, por ejemplo, en la z/Architecture®, un grupo de bytes en la memoria es objeto de direccionamiento por el byte más a la izquierda del grupo. El número de bytes en el grupo está implicado o es especificado explícitamente por la operación que haya de llevarse a cabo. Cuando es usado en una operación de CPU, un grupo de bytes es denominado campo. Dentro de cada grupo de bytes en, por ejemplo, la z/Architecture®, los bits son numerados en una secuencia de izquierda a derecha. En la z/Architecture®, los bits más a la izquierda son denominados a veces bits de “orden superior” y los bits más a la derecha bits de “orden inferior”. Sin embargo, los números de bit no son direcciones de memoria. Solo los bytes pueden ser objeto de direccionamiento. para operar en bits individuales de un byte en la memoria, se accede al byte completo. Los bits de un byte son numerados del 0 al 7, de izquierda a derecha (por ejemplo, en la z/Architecture®). Los bits en una dirección pueden estar numerados 8-31 o 40-63 para direcciones de 24 bits, o 1-31 o 33-63 para direcciones de 31 bits; están numerados 0-63 para direcciones de 64 bits. Dentro de cualquier otro formato de longitud fija de múltiples bytes, los bits que componen el formato están numerados consecutivamente a partir de 0. Con fines de detección de errores, y preferentemente para su corrección, se pueden transmitir uno o más bits con cada byte o con un grupo de bytes. Tales bits de comprobación son generados automáticamente por la máquina y no pueden ser controlados directamente por el programa. Las capacidades de memoria son expresadas en número de bytes. Cuando la longitud de un campo de operando de memoria está implicada por el código de operación de una instrucción, se dice que el campo tiene una longitud fija, que puede ser uno, dos, cuatro, ocho o dieciséis bytes. Para algunas instrucciones puede haber implicados campos mayores. Cuando la longitud de un campo de operando de memoria no está implicada, sino que es indicada explícitamente, se dice que el campo tiene una longitud variable. Los operandos de longitud variable pueden variar en longitud en incrementos de un byte (o, con algunas instrucciones, en múltiplos de dos bytes u otros múltiplos). Cuando se pone información en la memoria, se reemplaza el contenido únicamente de las ubicaciones de los bytes que están incluidos en el campo designado, aunque la anchura de la ruta física a la memoria pueda ser mayor que la longitud del campo que se esté almacenando.
Ciertas unidades de información han de estar en un límite integral en la memoria. Un límite es denominado integral para una unidad de información cuando su dirección de memoria es un múltiplo de la longitud de la unidad en bytes. Se dan nombres especiales a campos de 2, 4, 8 y 16 bytes en un límite integral. Semipalabra es un grupo de dos bytes consecutivos en un límite de dos bytes, y es el bloque constitutivo básico de las instrucciones. Palabra es un grupo de cuatro bytes consecutivos en un límite de cuatro bytes. Palabra doble es un grupo de ocho bytes consecutivos en un límite de ocho bytes. Palabra cuádruple es un grupo de 16 bytes consecutivos en un límite de16 bytes. Cuando las direcciones de memoria designan semipalabras, palabras, palabras dobles y palabras cuádruples, la representación binaria de las direcciones contiene, respectivamente, uno, dos, tres o cuatro bits nulos más a la derecha. Las instrucciones han de estar en límites integrales de dos bytes. Los operados de memoria de la mayoría de las instrucciones no tienen requisitos de alineamiento de límite.
En dispositivos que implementan antememorias separadas para instrucciones y operados de datos, puede experimentarse una demora significativa si el programa se almacena en una línea de antememoria de la que se recuperan subsiguientemente, con independencia de si la memoria altera las instrucciones que son recuperadas subsiguientemente.
En una realización, la invención puede ser puesta en práctica por soporte lógico (a veces denominado código interno autorizado, soporte lógico inalterable, microcódigo, milicódigo, picocódigo y similares, cualquiera de los cuales sería coherente con uno o más aspectos de la presente invención). Con referencia a la FIG. 12, el procesador 5001 del sistema anfitrión 5000 puede acceder al código de programa de soporte lógico que implementa uno o más aspectos de la presente invención desde dispositivos 5011 de soporte de almacenamiento a largo plazo, tales como una unidad de CD-ROM, una unidad de cinta o un disco duro. El programa de soporte lógico puede estar implementado en cualquiera de diversos soportes conocidos para ser usado con un sistema de procesamiento de datos, tal como un disquete, un disco duro o un CD-ROM. El código puede estar distribuido en tales soportes, o puede ser distribuido a los usuarios desde la memoria 5002 del ordenador o el almacenamiento de un sistema informático a través de una red 5010 a otros sistemas informáticos para ser utilizado por usuarios de tales otros sistemas.
El código de programa de soporte lógico incluye un sistema operativo, que controla la función y la interacción de los diversos componentes del ordenador, y uno o más programas de aplicación. El código de programa es normalmente enviado en páginas del dispositivo 5011 de soporte de almacenamiento a la memoria 5002 de ordenador de velocidad relativamente mayor, donde está disponible para el procesamiento por parte del procesador 5001. Las técnicas y los métodos para implementar código de programa de soporte lógico en memoria, en soportes físicos, y/o para distribuir código de soporte lógico a través de redes son muy conocidos y no serán expuestos adicionalmente en la presente memoria. El código de programa, cuando es creado y almacenado en un soporte tangible (incluyendo, sin limitación, módulos electrónicos de memoria (RAM), memoria flash, discos compactos (CD), DVD, cinta magnética y similares) es denominado a menudo “producto de programa informático”. El soporte de producto de programa informático es normalmente legible por un circuito de procesamiento, preferentemente en un sistema informático para su ejecución por el circuito de procesamiento.
La FIG. 13 ilustra un sistema servidor de soporte físico o estación de trabajo representativo en el que pueden ponerse en práctica uno o más aspectos de la presente invención. El sistema 5020 de la FIG. 13 comprende un sistema informático base 5021 representativo, tal como un ordenador personal, una estación de trabajo o un servidor, incluyendo dispositivos periféricos opcionales. El sistema informático base 5021 incluye uno o más procesadores 5026, y un bus empleado para conectar y permitir la comunicación entre el o los procesadores 5026 y los otros componentes del sistema 5021 según técnicas conocidas. El bus conecta el procesador 5026 a la memoria 5025 y al almacenamiento 5027 a largo plazo, que puede incluir, por ejemplo, un disco duro (incluyendo, por ejemplo, cualquier soporte magnético, CD, DVD y memoria flash ) o una unidad de cinta. El sistema 5021 también podría incluir un adaptador de interfaz de usuario, que conecta el microprocesador 5026, a través del bus, con uno o más dispositivos de interconexión, tales como un teclado 5024, un ratón 5023, una impresora o un escáner 5030 y/u otros dispositivos de interconexión, que pueden ser cualquier dispositivo de interfaz de usuario, tales como una pantalla táctil, una almohadilla de entrada digitalizada, etc. El bus también conecta un dispositivo 5022 de visualización, tal como una pantalla o monitor de LCD, al microprocesador 5026 a través de un adaptador de pantalla.
El sistema 5021 puede comunicarse con otros ordenadores o redes de ordenadores por medio de un adaptador de red capaz de comunicarse 5028 con una red 5029. Adaptadores ejemplares de red son canales de comunicaciones, Token Ring, Ethernet o módems. Alternativamente, el sistema 5021 puede comunicarse usando una interfaz inalámbrica, tal como una tarjeta CDPD (transmisión de paquetes digitales de datos por telefonía móvil). El sistema 5021 puede estar asociado con otros ordenadores en una red de área local (LAN) o una red de área amplia (WAN), o el sistema 5021 puede ser un cliente en una disposición cliente/servidor con otro ordenador, etc. Todas estas configuraciones, así como el soporte físico y lógico apropiado de comunicaciones son conocidas en la técnica.
La FIG. 14 ilustra una red 5040 de procesamiento de datos en la que pueden ponerse en práctica uno o más aspectos de la presente invención. La red 5040 de procesamiento de datos puede incluir varias redes individuales, tales como una red inalámbrica y una red cableada, cada una de las cuales puede incluir varias estaciones individuales 5041, 5042, 5043, 5044 de trabajo. Además, según apreciarán los expertos en la técnica, puede haber incluidas una o más LAN, pudiendo comprender una LAN varias estaciones de trabajo inteligentes acopladas a un procesador anfitrión.
Aún con referencia a la FIG. 14, las redes también pueden incluir ordenadores o servidores centrales, tales como un ordenador de pasarela (servidor 5046 de clientes) o un servidor de aplicaciones (servidor remoto 5048 que puede acceder a un repositorio de datos y también puede ser objeto de acceso directamente desde una estación 5045 de trabajo). Un ordenador 5046 de pasarela sirve de punto de entrada a cada red individual. Se precisa una pasarela cuando se conecta un protocolo de red con otro. La pasarela 5046 puede estar acoplada, preferentemente, con otra red (por ejemplo, Internet 5047) por medio de un enlace de comunicaciones. La pasarela 5046 también puede estar directamente acoplada a una o más estaciones 5041, 5042, 5043, 5044 de trabajo usando un enlace de comunicaciones. El ordenador de pasarela puede ser implementado utilizando un servidor IBM eServer™ System z® disponible en International Business Machines Corporation.
Con referencia concurrente a la FIG. 13 y a la FIG. 14, un código de programación de soporte lógico que pueda implementar uno o más aspectos de la presente invención puede ser objeto de acceso por parte del procesador 5026 del sistema 5020 desde los soportes 5027 de almacenamiento a largo plazo, tal como una unidad de CD-ROM o un disco duro. El código de programación de soporte lógico puede estar implementado en cualquiera de diversos soportes conocidos para ser usado con un sistema de procesamiento de datos, tales como un disquete, un disco duro o un CD-ROM. El código puede estar distribuido en tales soportes, o puede ser distribuido a los usuarios 5050, 5051 desde la memoria o el almacenamiento de un sistema informático a través de una red a otros sistemas informáticos para ser utilizado por usuarios de tales otros sistemas.
Alternativamente, el código de programación puede estar implementado en la memoria 5025, y ser objeto de acceso por parte del procesador 5026 usando el bus del procesador. Tal código de programación incluye un sistema operativo, que controla la función y la interacción de los diversos componentes del ordenador, y uno o más programas 5032 de aplicación. El código de programa es normalmente enviado en páginas del dispositivo 5027 de almacenamiento a la memoria 5025 de alta velocidad, donde está disponible para el procesamiento por parte del procesador 5026. Las técnicas y los métodos para implementar código de programación de soporte lógico en memoria, en soportes físicos, y/o para distribuir código de soporte lógico a través de redes son muy conocidos y no serán expuestos adicionalmente en la presente memoria. El código de programa, cuando es creado y almacenado en un soporte tangible (incluyendo, sin limitación, módulos electrónicos de memoria (RAM), memoria flash, discos compactos (CD), DVD, cinta magnética y similares) es denominado a menudo “producto de programa informático”. El soporte de producto de programa informático es normalmente legible por un circuito de procesamiento, preferentemente en un sistema informático para su ejecución por el circuito de procesamiento.
La antememoria que está disponible de forma más inmediata para el procesador (normalmente más rápida y más pequeña que otras antememorias del procesador) es la antememoria más baja (L1 o nivel uno) y el almacenamiento principal (memoria principal) es la antememoria de nivel más alto (L3 si hay 3 niveles). La antememoria de nivel más bajo está dividida a menudo en una antememoria de instrucciones (I-Cache), que contiene instrucciones de máquina que han de ser ejecutadas, y una antememoria de datos (D-Cache), que contiene operandos de datos.
Con referencia a la FIG. 15, se representa una realización ejemplar de procesador para el procesador 5026. Normalmente, se emplean uno o más niveles de antememoria 5053 para almacenar en memoria intermedia bloques de memoria para mejorar el rendimiento del procesador. La antememoria 5053 es una memoria intermedia de alta velocidad que contiene líneas de antememoria de datos de memoria que es probable que sean usados. Las líneas típicas de antememoria son 64, 128 o 256 bytes de datos de memoria. A menudo se emplean antememorias separadas para tener instrucciones en antememoria y para tener datos en antememoria. A menudo, la coherencia de las antememorias (sincronización de copias de líneas en memoria y en las antememorias) es proporcionada por diversos algoritmos de “rastreo” muy conocidos en la técnica. El almacenamiento 5025 de la memoria principal de un sistema de procesador suele ser denominado antememoria. En un sistema de procesador que tenga 4 niveles de antememoria 5053, la memoria principal 5025 es denominada a veces antememoria de nivel 5 (L5), dado que es normalmente más rápida y solo contiene una porción de la memoria no volátil (DASD, cinta, etc.) que está disponible para un sistema informático. La memoria principal 5025 pone en antememoria páginas de datos paginados por el sistema operativo metiéndolos en la memoria principal 5025 y sacándolos de ella.
Un contador 5061 de programa (contador de instrucciones) hace un seguimiento de la instrucción actual que ha de ejecutarse. Un contador de programa en un procesador de la z/Architecture® tiene 64 bits y puede ser truncado a 31 o 24 bits para admitir los límites de direccionamiento anteriores. Un contador de programa está generalmente implementado en una PSW (palabra de estado de programa) de un ordenador, de modo que persista durante una conmutación de contexto. Así, un programa en marcha, que tiene un valor del contador de programa, puede ser interrumpido, por ejemplo, por el sistema operativo (conmutación de contexto del entorno del programa al entorno del sistema operativo). La PSW del programa mantiene el valor del contador de programa mientras el programa no está activo, y el contador de programa (en la PSW) del sistema operativo es usado mientras el sistema operativo se está ejecutando. Normalmente, el contador de programa se incrementa una cantidad igual al número de bytes de la instrucción actual. Las instrucciones RISC (ordenador con conjunto reducido de instrucciones) son normalmente de longitud fija, mientras que las instrucciones CISC (ordenador con conjunto complejo de instrucciones) son normalmente de longitud variable. Las instrucciones de la z/Architecture® de IBM son instrucciones CISC que tienen una longitud de 2, 4 o 6 bytes. El contador 5061 de programa es modificado ya sea por una operación de conmutación de contexto o por una operación de ramificación tomada de, por ejemplo, una instrucción de ramificación. En una operación de conmutación de contexto, el valor actual del contador de programa se guarda en la palabra de estado de programa junto con otra información de estado sobre el programa que se ejecuta (tal como códigos de condición), y se carga un nuevo valor de contador de programa que apunte a una instrucción de un nuevo módulo de programa que haya de ser ejecutado. Se lleva a cabo una operación de ramificación tomada para permitir que el programa adopte decisiones o efectúe un bucle dentro del programa cargando el resultado de la instrucción de ramificación en el contador 5061 de programa.
Normalmente, se emplea una unidad 5055 de obtención de instrucciones en nombre del procesador 5026. La unidad de obtención obtiene las “siguientes instrucciones secuenciales”, instrucciones diana de instrucciones de ramificación tomada, o bien las primeras instrucciones de un programa tras una conmutación de contexto. A menudo, las unidades modernas de obtención de instrucciones emplean técnicas de preobtención para preobtener instrucciones de forma especulativa en función de la probabilidad de que pudieran usarse las instrucciones preobtenidas. Por ejemplo, una unidad de obtención puede obtener 16 bytes de instrucción que incluyen la siguiente instrucción secuencial y bytes adicionales de instrucciones secuenciales adicionales.
Las instrucciones obtenidas son entonces ejecutadas por el procesador 5026. En una realización, la o las instrucciones obtenidas son pasadas a una unidad 5056 de despacho de la unidad de obtención. La unidad de despacho decodifica la o las instrucciones y remite información sobre la o las instrucciones decodificadas a las unidades 5057, 5058, 5060 apropiadas. Normalmente, una unidad 5057 de ejecución recibirá de la unidad 5055 de obtención de instrucciones información sobre las instrucciones aritméticas decodificadas y efectuará operaciones aritméticas en operandos según el código de operación de la instrucción. Los operandos son proporcionados a la unidad 5057 de ejecución, preferentemente, ya sea desde la memoria 5025, desde registros 5059 de arquitectura o desde un campo inmediato de la instrucción que se ejecuta. Los resultados de la ejecución, cuando son almacenados, son almacenados ya sea en la memoria 5025, en registros 5059 o en otro soporte físico de la máquina (tal como registros de control, registros de PSW y similares).
Normalmente, un procesador 5026 tiene una o más unidades 5057, 5058, 5060 para ejecutar la función de la instrucción. Con referencia a la FIG. 16A, una unidad 5057 de ejecución puede comunicarse con registros generales 5059 de arquitectura, una unidad 5056 de decodificación/despacho, una unidad 5060 de carga/almacenamiento, y otras unidades 5065 de procesador por medio de la lógica 5071 de interconexión. Una unidad 5057 de ejecución puede emplear varios circuitos 5067, 5068, 5069 de registro para contener información con la que operará la unidad lógica aritmética (ALU) 5066. La ALU lleva a cabo operaciones aritméticas como sumar, restar, multiplicar y dividir, así como una función lógica tal como AND (Y), OR (O) y XOR (O EXCLUYENTE), rotar y desplazar. Preferentemente, la ALU admite operaciones especializadas con dependen del diseño. Otros circuitos proporcionan otros recursos 5072 de arquitectura que incluyen, por ejemplo, códigos de condición y lógica de soporte de recuperación. Normalmente, el resultado de una operación de la ALU se mantiene en un circuito 5070 de registro de salida que puede remitir el resultado a diversas funciones de procesamiento adicionales. Hay muchas disposiciones de unidades procesadoras; la presente descripción está pensada únicamente para proporcionar una comprensión representativa de una realización.
Una instrucción ADD [Suma] se ejecutaría, por ejemplo, en una unidad 5057 de ejecución que tuviera funcionalidad aritmética y lógica, mientras que una instrucción de coma flotante se ejecutaría, por ejemplo, en una ejecución de coma flotante que tuviera prestaciones especializadas de coma flotante. Preferentemente, una unidad de ejecución opera sobre operandos identificados por una instrucción llevando a cabo con los operandos una función definida por el código de operación. Por ejemplo, una instrucción ADD puede ser ejecutada por una unidad 5057 de ejecución sobre operandos hallados en dos registros 5059 identificados por los campos de registro de la instrucción.
La unidad 5057 de ejecución lleva a cabo la suma aritmética en los dos operandos y almacena el resultado en un tercer operando, pudiendo ser el tercer operando un tercer registro o uno de los dos registros fuente. La unidad de ejecución utiliza, preferentemente, una unidad lógica aritmética (ALU) 5066 que es capaz de llevar a cabo diversas funciones lógicas tales como Shift [Desplazar], Rotate [Rotar], And, Or y XOR, así como diversas funciones algebraicas, incluyendo cualquiera de sumar, restar, multiplicar y dividir. Algunas ALU 5066 están diseñadas para operaciones escalares, y algunas para coma flotante. Los datos pueden ser Big Endian (en el que el byte menos significativo está en la dirección de byte más alta) o Little Endian (en el que el byte menos significativo está en la dirección de byte más más baja), dependiendo de la arquitectura. La z/Architecture® de IBM es Big Endian. Los campos con signo pueden ser signo y magnitud, complemento a 1 o complemento a 2, dependiendo de la arquitectura. Un número de complemento a 2 es ventajoso, porque la ALU no precisa diseñar una prestación de resta, ya que un valor negativo o un valor positivo en complemento a 2 requiere únicamente una suma dentro de la ALU. Los números se describen comúnmente de forma abreviada, definiendo un campo de 12 bits una dirección de un bloque de 4.096 bytes y siendo descrito comúnmente, por ejemplo, como un bloque de 4 kbytes (kilobytes).
Con referencia a la FIG. 16B, la información de instrucciones de ramificación para ejecutar una instrucción ramificada es normalmente enviada a una unidad 5058 de ramificación que, a menudo, emplea un algoritmo de predicción de ramificación, tal como una tabla 5082 de historial de ramificaciones para predecir el resultado de la ramificación antes de que se completen otras operaciones condicionales. La diana de la instrucción de ramificación actual será obtenida y ejecutada de manera especulativa antes de que se completen las operaciones condicionales. Cuando las operaciones condicionales se completan, las instrucciones de ramificación ejecutadas especulativamente se completan o se descartan en función de las condiciones de la operación condicional y del resultado especulado. Una instrucción de ramificación típica puede comprobar los códigos de condición y ramificarse a una dirección diana si los códigos de condición satisfacen el requisito de ramificación de la instrucción de ramificación, pudiendo calcularse una dirección diana en función de varios números que incluyen, por ejemplo, los encontrados en campos de registro o en un campo inmediato de la instrucción. La unidad 5058 de ramificación puede emplear una ALU 5074 que tiene varios circuitos 5075, 5076, 5077 de registros de entrada y un circuito 5080 de registro de salida. La unidad 5058 de ramificación puede comunicarse, por ejemplo, con los registros generales 5059, con la unidad 5056 de decodificación/despacho o con otros circuitos 5073.
La ejecución de un grupo de instrucciones puede ser interrumpida por diversas razones, incluyendo, por ejemplo, una conmutación de contexto iniciada por un sistema operativo, una excepción o error de programa que cause una conmutación de contexto, una señal de interrupción de E/S que cause una conmutación de contexto o la actividad multihilo de varios programas (en un entorno multihilo). Preferentemente, una acción de conmutación de contexto guarda información de estado sobre un programa actualmente en ejecución y luego carga información de estado sobre otro programa que está siendo invocado. La información de estado puede ser guardada, por ejemplo, en registros de soporte físico o en memoria. Preferentemente, la información de estado comprende un valor de contador de programa que apunta a la siguiente instrucción que ha de ejecutarse, códigos de condición, información de traducción de memoria y contenido de registros de arquitectura. La actividad de conmutación de contexto puede ser ejercida por circuitos de soporte físico, programas de aplicación, programas del sistema operativo o código de soporte lógico inalterable (microcódigo, picocódigo o código interno autorizado (LIC)) solos o en combinación.
Un procesador accede a operados según métodos definidos por instrucciones. La instrucción puede proporcionar un operando inmediato usando el valor de una porción de la instrucción, puede proporcionar uno o más campos de registro que apunten explícitamente ya sea a registros de propósito general o a registros de propósito especial (por ejemplo, registros de coma flotante). La instrucción puede utilizar registros implicados identificados por un campo de código de operación como operandos. La instrucción puede utilizar ubicaciones de memoria para los operandos. Una ubicación de memoria de un operado puede ser proporcionada por un registro, un campo inmediato o una combinación de registros y un campo inmediato, según se ejemplifica en el recurso de desplazamiento largo de la z/Architecture®, en el que la instrucción define un registro base, un registro índice y un campo inmediato (campo de desplazamiento), que se suman entre sí, por ejemplo, para proporcionar la dirección del operado en memoria. Aquí, ubicación normalmente implica una ubicación en la memoria principal (almacenamiento principal), a no ser que se indique algo distinto.
Con referencia a la FIG. 16C, un procesador accede a la memoria usando una unidad 5060 de carga/almacenamiento. La unidad 5060 de carga/almacenamiento puede llevar a cabo una operación de carga obteniendo la dirección del operando diana en la memoria 5053 y cargando el operando en un registro 5059 o en otra ubicación de memoria 5053, o puede llevar a cabo una operación de almacenamiento obteniendo la dirección del operando diana en la memoria 5053 y almacenando datos obtenidos de un registro 5059 o de otra ubicación de memoria 5053 en la ubicación del operando diana en la memoria 5053. La unidad 5060 de carga/almacenamiento puede ser especulativa y puede acceder a la memoria en una secuencia que esté desordenada con respecto a la secuencia de las instrucciones; sin embargo, la unidad 5060 de carga/almacenamiento ha de mantener la apariencia ante los programas de que las instrucciones fueron ejecutadas en orden. Una unidad 5060 de carga/almacenamiento puede comunicarse con los registros generales 5059, con la unidad 5056 de decodificación/despacho, con la interfaz 5053 de antememoria/memoria o con otros elementos 5083 y comprende diversos circuitos de registro, varias ALU 5085 y lógica 5090 de control para calcular direcciones de memoria y para proporcionar secuenciación de encauzamiento para mantener las operaciones en orden. Algunas operaciones pueden estar fuera de orden, pero la unidad de carga/almacenamiento proporciona funcionalidad para hacer que, ante el programa, parezca que las operaciones fuera de orden se efectuaron en orden, como es bien sabido en la técnica.
Preferentemente, las direcciones que “ve” un programa de aplicación suelen ser denominadas direcciones virtuales. Las direcciones virtuales son denominadas a veces “direcciones lógicas” o “direcciones efectivas”. Estas direcciones virtuales son virtuales porque son redirigidas a una ubicación de memoria física por un de diversas tecnologías de traducción dinámica de direcciones (DAT), incluyendo, sin limitación, simplemente anteponer a una dirección virtual un valor de desfase, traducir la dirección virtual mediante una o más tablas de traducción, comprendiendo las tablas de traducción, preferentemente, al menos una tabla de segmentos y una tabla de páginas solas o en combinación, preferentemente, teniendo la tabla de segmentos una entrada que apunta a la tabla de páginas. En la z/Architecture®, se proporciona una jerarquía de traducción que incluye una primera tabla de región, una segunda tabla de región, una tercera tabla de región, una tabla de segmentos y una tabla opcional de páginas. El rendimiento de la traducción de direcciones mejora a menudo utilizado una memoria intermedia lateral de traducción (TLB), que comprende entradas que correlacionan una dirección virtual con una ubicación asociada de memoria física. Las entradas se crean cuando la DAT traduce una dirección virtual usando las tablas de traducción. El uso subsiguiente de la dirección virtual puede utilizar entonces la entrada de la TLB rápida, no los accesos secuenciales lentos de la tabla de traducción. El contenido de la TLB puede ser gestionado mediante diversos algoritmos de sustitución, incluyendo el LRU (usado de forma menos reciente).
En el caso en el que el procesador es un procesador de un sistema multiprocesador, cada procesador tiene la responsabilidad de mantener recíprocamente enlazados, por coherencia, los recursos compartidos, tales como E/S, antememorias, las TLB y la memoria. Normalmente, se utilizarán tecnologías de “rastreo” para mantener la coherencia de la antememoria. En un entorno de rastreo, cada línea de antememoria puede recibir la marca de estar en una cualquiera de un estado compartido, un estado exclusivo, un estado cambiado, un estado inválido y similares para facilitar la compartición.
Las unidades 5054 de E/S (FIG. 15) proporcionan al procesador medios para conectarse a dispositivos periféricos, incluyendo, por ejemplo, una cinta, un disco óptico, impresoras, pantallas y redes. A menudo, las unidades de E/S son presentadas al programa informático por controladores de soporte lógico. En ordenadores centrales como el System z® de IBM®, los adaptadores de canal y los adaptadores de sistemas abiertos son unidades de E/S del ordenador central que proporcionan las comunicaciones entre el sistema operativo y los dispositivos periféricos.
Además, otros tipos de entornos informáticos pueden beneficiarse de uno o más aspectos de la presente invención. Por ejemplo, según se ha mencionado en la presente memoria, un entorno puede incluir un emulador (por ejemplo, soporte lógico u otros mecanismos de emulación) en el cual se emula una arquitectura particular (incluyendo, por ejemplo, la ejecución de instrucciones, funciones de arquitectura, tales como traducción de direcciones, y registros de arquitectura) o un subconjunto de la misma (por ejemplo, en un sistema informático nativo que tenga un procesador y memoria). En tal entorno, una o más funciones de emulación del emulador pueden implementar uno o más aspectos de la presente invención, aunque el ordenador que ejecute el emulador pueda tener una arquitectura diferente de las prestaciones que están siendo emuladas. Como ejemplo, en el modo de emulación, la instrucción u operación específica que esté siendo emulada es decodificada, y se construye una función apropiada de emulación para implementar la instrucción u operación individual.
En un entorno de emulación, un ordenador anfitrión incluye, por ejemplo, una memoria para almacenar instrucciones y datos; una unidad de obtención de instrucciones para obtener instrucciones de la memoria y, opcionalmente, proporcionar un almacenamiento intermedio local para la instrucción obtenida; una unidad de decodificación de instrucciones para recibir las instrucciones obtenidas y determinar el tipo de instrucciones que han sido obtenidas; y una unidad de ejecución de instrucciones para ejecutar las instrucciones. La ejecución puede incluir la carga de datos en un registro desde memoria; volver a almacenar datos en memoria desde un registro; o llevar a cabo algún tipo de operación aritmética o lógica, según determine la unidad de decodificación. En un ejemplo, cada unidad es implementada en soporte lógico. Por ejemplo, las operaciones llevadas a cabo por las unidades son implementadas como una o más subrutinas dentro del soporte lógico emulador.
Más en particular, en un ordenador central, las instrucciones de máquina de arquitectura son usadas por programadores, habitualmente los programadores contemporáneos que utilizan “C”, a menudo por medio de una aplicación compiladora. Estas instrucciones almacenadas en el soporte de memoria pueden ser ejecutadas de forma nativa en un servidor de z/Architecture® de IBM® o, alternativamente, en máquinas que ejecuten otras arquitecturas. Pueden ser emuladas en los servidores centrales existentes y futuros de IBM® y en otras máquinas de IBM® (por ejemplo, servidores Power Systems y servidores System x®). Pueden ser ejecutadas en máquinas que ejecutan Linux en una amplia variedad de máquinas que usan soporte físico fabricado por IBM®, Intel®, a Md ™ y otros. Además de la ejecución en ese soporte físico en una z/Architecture®, puede usarse Linux, así como máquinas que usen emulación de Hercules, UMX o FSI (Fundamental Software, Inc.), estando la ejecución generalmente en un modo de emulación. En el modo de emulación, un procesador nativo ejecuta un soporte lógico de emulación para emular la arquitectura de un procesador emulado.
El procesador nativo ejecuta normalmente un soporte lógico de emulación que comprende ya sea un soporte lógico inalterable o un sistema operativo nativo para llevar a cabo la emulación del procesador emulado. El soporte lógico de emulación es responsable de obtener y ejecutar instrucciones de la arquitectura del procesador emulado. El soporte lógico de emulación mantiene un contador de programa emulado para mantener un seguimiento de los límites de las instrucciones. El soporte lógico de emulación puede obtener una o más instrucciones de la máquina emulada en un momento y convertir las una o más instrucciones de la máquina emulada en un grupo correspondiente de instrucciones de la máquina nativa para su ejecución por el procesador nativo. Estas instrucciones convertidas pueden ser metidas en antememoria, de modo que pueda lograrse una conversión más rápida. No obstante, el soporte lógico de emulación ha de mantener las reglas de arquitectura de la arquitectura del procesador emulado para garantizar que los sistemas operativos y las aplicaciones escritos para el procesador emulado operen correctamente. Además, el soporte lógico de emulación ha de proporcionar recursos identificados por la arquitectura del procesador emulado, incluyendo, sin limitación, registros de control, registros de propósito general, registros de coma flotante, función de traducción dinámica de direcciones, incluyendo, por ejemplo, tablas de segmentos y tablas de páginas, mecanismos de interrupción, mecanismos de conmutación de contexto, relojes horarios (TOD) e interfaces de arquitectura a subsistemas de E/S, de modo que un sistema operativo o un programa de aplicación diseñados para ejecutarse en el procesador emulado puedan ejecutarse en el procesador nativo que cuenta con el soporte lógico de emulación.
Una instrucción específica que esté siendo emulada es decodificada, y se llama a una subrutina para que lleve a cabo la función de la instrucción individual. Una función de un soporte lógico de emulación que emula una función de un procesador emulado está implementada, por ejemplo, en una subrutina o un controlador escritos en “C”, o en algún otro método para proporcionar un controlador para el soporte físico específico, lo que formará parte de la experiencia de los expertos en la técnica tras comprender la descripción de la realización preferente. Diversas patente de emulación por soporte lógico y soporte físico, incluyendo, sin limitación, la patente estadounidense n° 5.551.013, titulada “Multiprocessor for Hardware Emulation”, de Beausoleil et al.; y la patente estadounidense n° 6.009.261, titulada “Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor”, de Scalzi et al.; y la patente estadounidense n° 5.574.873, titulada “Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions”, de Davidian et al.; y la patente estadounidense n° 6.308.255, titulada “Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System”, de Gorishek et al.; y la patente estadounidense n° 6.463.582, titulada “Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method”, de Lethin et al.; y la patente estadounidense n° 5.790.825, titulada “Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions”, de Eric Traut, y muchas otras, ilustran diversas formas conocidas para lograr la emulación de un formato de instrucciones con arquitectura para una máquina diferente para una máquina diana disponibles para los expertos en la técnica.
En la FIG. 17, se proporciona un ejemplo de un sistema informático anfitrión emulado 5092 que emula un sistema informático anfitrión 5000' de una arquitectura de anfitrión. En el sistema informático anfitrión emulado 5092, el procesador anfitrión (CPU) 5091 es un procesador anfitrión emulado (o procesador anfitrión virtual) y comprende un procesador 5093 de emulación que tiene una arquitectura con un conjunto nativo de instrucciones diferente del del procesador 5091 del ordenador anfitrión 5000'. El sistema informático anfitrión emulado 5092 tiene una memoria 5094 accesible para el procesador 5093 de emulación. En la realización ejemplar, la memoria 5094 está dividida en una porción 5096 de memoria del ordenador anfitrión y una porción 5097 de rutinas de emulación. La memoria 5096 del ordenador anfitrión está disponible para los programas del ordenador anfitrión emulado 5092 según la arquitectura del ordenador anfitrión. El procesador 5093 de emulación ejecuta instrucciones nativas de un conjunto de instrucciones de arquitectura de una arquitectura distinta de la del procesador emulado 5091, obteniéndose de la memoria 5097 de rutinas de emulación las instrucciones nativas, y pudiendo acceder a una instrucción de anfitrión para su ejecución desde un programa en la memoria 5096 del ordenador anfitrión empleando una o más instrucciones obtenidas en una rutina de secuencia y acceso/decodificación, que puede decodificar la o las instrucciones del anfitrión a las que se accede para determinar una rutina de ejecución de instrucciones nativas para emular la función de la instrucción de anfitrión objeto de acceso. Otros recursos que estén definidos para la arquitectura del sistema informático anfitrión 5000' pueden ser emuladas por rutinas de recursos de arquitectura, incluyendo recursos tales como, por ejemplo, registros de propósito general, registros de control, traducción dinámica de direcciones y soporte del subsistema de E/S y antememoria del procesador. Las rutinas de emulación también pueden valerse de funciones disponibles en el procesador 5093 de emulación (tales como registros generales y traducción dinámica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulación. También pueden proporcionarse soporte físico especial y motores de descarga para ayudar al procesador 5093 a emular la función del ordenador anfitrión 5000'.
La terminología usada en la presente memoria tiene el fin únicamente de describir realizaciones particulares y no pretende ser limitante de la invención. Tal como se usan en la presente memoria, se pretende que las formas singulares “un”, “una”, “el” y “la” incluyan también las formas plurales, a no ser que el contexto indique claramente algo distinto. Se entenderá, además, que las expresiones “comprende” y/o “que comprende”, cuando son usadas en esta memoria, especifican la presencia de las características, los números enteros, las etapas, las operaciones, los elementos y/o los componentes enunciados, pero no excluyen la presencia o la adición de una o más características, números enteros, etapas, operaciones, elementos, componentes adicionales y/o grupos de los mismos.
Se pretende que, si los hay, los materiales, estructuras, acciones correspondientes y los equivalentes de todos los medios o elementos de etapa más función en las reivindicaciones siguientes incluyan cualquier estructura, material o acción para llevar a cabo la función en combinación con otros elementos reivindicados como se reivindican específicamente. La descripción de uno o más aspectos de la presente invención ha sido presentada con fines de ilustración y descripción, pero no se pretende que sea exhaustiva o que esté limitada a la invención en la forma divulgada. A las personas con un dominio normal de la técnica les resultarán evidencias muchas modificaciones y variaciones sin apartarse del alcance de la invención. La realización fue escogida y descrita para explicar de forma óptima los principios de la invención y su aplicación práctica, y para permitir que otras personas con un dominio normal de la técnica entiendan la invención para diversas realizaciones con diversas modificaciones que sean adecuadas para el uso particular contemplado.

Claims (15)

REIVINDICACIONES
1. Un sistema informático para facilitar el procesamiento en un entorno informático, comprendiendo dicho sistema informático:
una memoria; y
un procesador en comunicación con la memoria, estando configurado el sistema informático para llevar a cabo un método, estando caracterizado dicho método por comprender:
la provisión, por parte de un sistema operativo anfitrión a un sistema operativo huésped, una indicación de instalación de un recurso de canal de aviso dentro del entorno informático, habiendo de ser obtenida por el sistema operativo huésped la indicación de instalación, y siendo el recurso de canal de aviso para proporcionar al sistema operativo huésped un periodo de gracia para llevar a cabo una primera función; obtener, por parte del sistema operativo anfitrión, en función de la provisión, una indicación no solicitada de que el sistema operativo huésped se ha dado de alta para el recurso de canal de aviso, comprendiendo el alta una indicación al sistema operativo anfitrión de que el sistema operativo huésped entiende el protocolo del recurso de canal de aviso y tiene la intención de participar en el recurso de canal de aviso; habilitar, en función de la obtención de la indicación de que el sistema operativo huésped se ha dado de alta, el recurso de canal de aviso para el sistema operativo huésped;
notificar al sistema operativo huésped, por parte del sistema operativo anfitrión, que el periodo de gracia ha comenzado; y
llevar a cabo, por parte del sistema operativo anfitrión, una segunda función subsiguiente al periodo de gracia.
2. El sistema informático de la reivindicación 1 en el que la ejecución de la segunda función comprende proporcionar, por parte del sistema operativo anfitrión al sistema operativo huésped, una indicación de estado relativo a la finalización de la primera función dentro del periodo de gracia.
3. El sistema informático de la reivindicación 1 en el que el método comprende, además, la recepción, por parte del sistema operativo anfitrión, de una solicitud de alta del canal de aviso procedente del sistema operativo huésped, y la habilitación del sistema operativo huésped para participar en el recurso de canal de aviso.
4. El sistema informático de la reivindicación 1 en el que el sistema operativo huésped tiene acceso a recursos compartidos del entorno informático durante una fracción temporal proporcionada a una unidad central de proceso huésped en la que se ejecuta el sistema operativo huésped, siendo distinguible el periodo de gracia de la fracción temporal.
5. El sistema informático de la reivindicación 4 en el que el periodo de gracia termina prematuramente la fracción temporal.
6. El sistema informático de la reivindicación 4 en el que el periodo de gracia proporciona un periodo, además de la fracción temporal, en el que llevar a cabo la primera función.
7. El sistema informático de la reivindicación 1 en el que la primera función comprende uno de:
completar una unidad despachable que se ejecuta en un procesador en el que se ejecuta el sistema operativo huésped; o
hacer redespachable en otro procesador del entorno informático a la unidad despachable.
8. Un método de facilitación del procesamiento en un entorno informático, comprendiendo dicho método:
la provisión, por parte de un sistema operativo anfitrión a un sistema operativo huésped, de una indicación de instalación de un recurso de canal de aviso dentro del entorno informático, habiendo de ser obtenida por el sistema operativo huésped la indicación de instalación, y siendo el recurso de canal de aviso para proporcionar al sistema operativo huésped un periodo de gracia para llevar a cabo una primera función; obtener, por parte del sistema operativo anfitrión, en función de la provisión, una indicación no solicitada de que el sistema operativo huésped se ha dado de alta para el recurso de canal de aviso, comprendiendo el alta una indicación al sistema operativo anfitrión de que el sistema operativo huésped entiende el protocolo del recurso de canal de aviso y tiene la intención de participar en el recurso de canal de aviso; habilitar, en función de la obtención de la indicación de que el sistema operativo huésped se ha dado de alta, el recurso de canal de aviso para el sistema operativo huésped;
notificar al sistema operativo huésped, por parte del sistema operativo anfitrión, que el periodo de gracia ha comenzado; y
llevar a cabo, por parte del sistema operativo anfitrión, una segunda función subsiguiente al periodo de gracia.
9. El método de la reivindicación 8 que, además, comprende la recepción, por parte del sistema operativo anfitrión, de una solicitud de alta del canal de aviso procedente del sistema operativo huésped, y la habilitación del sistema operativo huésped para participar en el recurso de canal de aviso.
10. El método de la reivindicación 8 en el que el sistema operativo huésped tiene acceso a recursos compartidos del entorno informático durante una fracción temporal proporcionada a una unidad central de proceso huésped en la que se ejecuta el sistema operativo huésped, siendo distinguible el periodo de gracia de la fracción temporal.
11. El método de la reivindicación 8 en el que el alta se lleva a cabo a través de una instrucción de diagnóstico, comprendiendo la instrucción de diagnóstico un parámetro de alta para señalar que el sistema operativo huésped entiende una interrupción del canal de aviso del recurso de canal de aviso.
12. El método de la reivindicación 8 en el que el periodo de gracia es distinguible de una fracción temporal proporcionada a un procesador en el que se ejecuta el sistema operativo huésped, teniendo acceso el sistema operativo huésped a recursos compartidos del entorno informático durante la fracción temporal, y en el que el periodo de gracia proporciona un periodo, además de la fracción temporal, cargándose cualquier porción del periodo, usada por el sistema operativo huésped para llevar a cabo la primera función, contra una siguiente fracción temporal para el sistema operativo huésped.
13. El método de la reivindicación 8, comprendiendo el método, además:
determinar si el sistema operativo huésped salió voluntariamente antes de la expiración del periodo de gracia; en función de la determinación de si el sistema operativo huésped salió voluntariamente antes de la expiración del periodo de gracia, proporcionar al sistema operativo huésped, la siguiente vez que el sistema operativo huésped se ejecute, una información de retorno positiva que indique la salida voluntaria antes de la expiración del periodo de gracia; y
en función de la determinación de que el sistema operativo huésped se demora en la salida voluntaria antes de la expiración del periodo de gracia, proporcionar al sistema operativo huésped, la siguiente vez que el sistema operativo huésped se ejecute, una indicación de información de retorno de excepción que indique la demora en la salida voluntaria.
14. El método de la reivindicación 8, comprendiendo el método, además:
determinar, en función de una condición de interrupción de temporizador de un temporizador del sistema operativo anfitrión o de una solicitud de intervención de canal de aviso, si hay establecido un indicador de control activo del periodo de gracia;
en función de que no esté establecido el indicador de control activo del periodo de gracia, establecer el indicador de control activo del periodo de gracia;
guardar el valor actual del temporizador del sistema operativo anfitrión como un valor guardado; establecer el temporizador del sistema operativo anfitrión en el periodo de gracia;
determinar si el sistema operativo huésped está habilitado para el recurso de canal de aviso; y en función de la determinación de que el sistema operativo huésped está habilitado, notificar al sistema operativo huésped que el periodo de gracia ha comenzado.
15. Un programa informático que comprende código de programa informático, cuando está cargado en un sistema informático y es ejecutado en el mismo, para hacer que dicho sistema informático lleve a cabo todas las etapas del método según cualquiera de las reivindicaciones 8 a 14.
ES12866369T 2012-01-18 2012-11-13 Provisión, por parte de un programa a otro programa, de acceso a un recurso de canal de aviso Active ES2699995T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/352,518 US9104508B2 (en) 2012-01-18 2012-01-18 Providing by one program to another program access to a warning track facility
PCT/IB2012/056372 WO2013108092A1 (en) 2012-01-18 2012-11-13 Providing by one program to another program access to a warning track facility

Publications (1)

Publication Number Publication Date
ES2699995T3 true ES2699995T3 (es) 2019-02-13

Family

ID=48780915

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12866369T Active ES2699995T3 (es) 2012-01-18 2012-11-13 Provisión, por parte de un programa a otro programa, de acceso a un recurso de canal de aviso

Country Status (24)

Country Link
US (2) US9104508B2 (es)
EP (1) EP2805237B1 (es)
JP (1) JP6214559B2 (es)
KR (1) KR101634470B1 (es)
CN (1) CN104054052B (es)
AU (1) AU2012366770B2 (es)
BR (1) BR112014017826B1 (es)
CA (1) CA2862150C (es)
DK (1) DK2805237T3 (es)
ES (1) ES2699995T3 (es)
HK (1) HK1201347A1 (es)
HR (1) HRP20181992T1 (es)
IL (1) IL231840B (es)
IN (1) IN2014CN04837A (es)
LT (1) LT2805237T (es)
MX (1) MX2014008460A (es)
PL (1) PL2805237T3 (es)
PT (1) PT2805237T (es)
RU (1) RU2563454C2 (es)
SG (1) SG11201402076YA (es)
SI (1) SI2805237T1 (es)
TW (1) TWI533223B (es)
WO (1) WO2013108092A1 (es)
ZA (1) ZA201400732B (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US9542125B1 (en) * 2012-09-25 2017-01-10 EMC IP Holding Company LLC Managing data relocation in storage systems
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
TWI705370B (zh) * 2018-10-29 2020-09-21 臺灣銀行股份有限公司 程式執行分析系統及其方法

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4001783A (en) 1975-03-26 1977-01-04 Honeywell Information Systems, Inc. Priority interrupt mechanism
US4271468A (en) 1979-11-06 1981-06-02 International Business Machines Corp. Multiprocessor mechanism for handling channel interrupts
JP2523653B2 (ja) 1987-07-08 1996-08-14 株式会社日立製作所 仮想計算機システム
US5507030A (en) 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5414812A (en) 1992-03-27 1995-05-09 International Business Machines Corporation System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem
US5485626A (en) 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
CA2124772C (en) 1994-05-31 2000-02-08 Russell Francis Byers Processor shelf controller
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5548535A (en) 1994-11-08 1996-08-20 Advanced Micro Devices, Inc. Monitor utility for use in manufacturing environment
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
FR2760109B1 (fr) 1997-02-25 1999-05-28 Sextant Avionique Procede et dispositif pour l'execution par un processeur unique de plusieurs fonctions de niveaux de criticite differents, avec une grande securite de fonctionnement
DE69841526D1 (de) 1997-03-04 2010-04-15 Panasonic Corp Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6131166A (en) * 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
WO2000017766A2 (en) * 1998-09-22 2000-03-30 Cybex Computer Products Corporation System for accessing personal computers remotely
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
JP4151198B2 (ja) 1999-06-23 2008-09-17 株式会社デンソー 割込コントローラ及びマイクロコンピュータ
WO2001082075A2 (en) * 2000-04-25 2001-11-01 Icplanet Acquisition Corporation System and method for scheduling execution of cross-platform computer processes
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US7181744B2 (en) 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
JP3952992B2 (ja) * 2003-06-03 2007-08-01 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7475002B1 (en) * 2004-02-18 2009-01-06 Vmware, Inc. Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system
JP2005250550A (ja) * 2004-03-01 2005-09-15 Sharp Corp アプリケーション制御装置
US7162666B2 (en) * 2004-03-26 2007-01-09 Emc Corporation Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks
US7689998B1 (en) * 2004-07-13 2010-03-30 Microsoft Corporation Systems and methods that manage processing resources
US7707578B1 (en) 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置
CN1940858B (zh) * 2005-09-26 2011-06-15 深圳市朗科科技股份有限公司 媒体播放装置上实现多任务的方法
US7725531B1 (en) 2006-09-18 2010-05-25 George Mason Intellectual Properties, Inc. Single use server system
EP2527980A3 (en) 2007-06-19 2013-01-09 VirtualLogix SA Load balancing
US8261284B2 (en) 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
US9201673B2 (en) 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
JP4862056B2 (ja) 2009-03-16 2012-01-25 株式会社東芝 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法
JP5428581B2 (ja) 2009-06-30 2014-02-26 富士通株式会社 仮想マシン管理プログラム及び仮想マシン管理方法
JP2011060055A (ja) 2009-09-11 2011-03-24 Fujitsu Ltd 仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラム
JP5487951B2 (ja) 2009-12-22 2014-05-14 富士通株式会社 運用管理プログラム、運用管理装置および運用管理方法
US20110162087A1 (en) * 2009-12-31 2011-06-30 Microsoft Corporation Virtualizing remote presentation session client licensing with a server-based broker
US9851969B2 (en) * 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
CN102467373A (zh) * 2010-10-28 2012-05-23 微软公司 任务取消宽限期
US8490089B2 (en) 2010-11-05 2013-07-16 Advanced Micro Devices, Inc. Guest timer facility to improve management in a virtualized processing system
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program

Also Published As

Publication number Publication date
US9104509B2 (en) 2015-08-11
HRP20181992T1 (hr) 2019-01-25
HK1201347A1 (en) 2015-08-28
JP6214559B2 (ja) 2017-10-18
EP2805237B1 (en) 2018-10-24
PT2805237T (pt) 2018-12-06
WO2013108092A1 (en) 2013-07-25
TW201351291A (zh) 2013-12-16
AU2012366770A1 (en) 2014-07-17
CN104054052A (zh) 2014-09-17
BR112014017826A2 (pt) 2017-06-20
PL2805237T3 (pl) 2019-02-28
ZA201400732B (en) 2015-10-28
RU2563454C2 (ru) 2015-09-20
IN2014CN04837A (es) 2015-09-18
BR112014017826B1 (pt) 2021-08-17
MX2014008460A (es) 2014-08-27
EP2805237A4 (en) 2015-12-30
JP2015507809A (ja) 2015-03-12
US20130185732A1 (en) 2013-07-18
RU2012147510A (ru) 2014-05-20
CN104054052B (zh) 2018-11-27
CA2862150A1 (en) 2013-07-25
AU2012366770B2 (en) 2016-05-12
KR101634470B1 (ko) 2016-06-28
US9104508B2 (en) 2015-08-11
SI2805237T1 (sl) 2019-01-31
LT2805237T (lt) 2018-12-10
KR20140117390A (ko) 2014-10-07
BR112014017826A8 (pt) 2017-07-11
US20130185737A1 (en) 2013-07-18
DK2805237T3 (en) 2018-12-17
IL231840A0 (en) 2014-05-28
EP2805237A1 (en) 2014-11-26
TWI533223B (zh) 2016-05-11
IL231840B (en) 2019-01-31
SG11201402076YA (en) 2014-06-27
CA2862150C (en) 2021-07-27

Similar Documents

Publication Publication Date Title
ES2768277T3 (es) Función de interrupción de seguimiento de advertencias
ES2598816T3 (es) Uso de una funcionalidad de interrupción con margen de advertencia por un programa
ES2699995T3 (es) Provisión, por parte de un programa a otro programa, de acceso a un recurso de canal de aviso
AU2012366769B2 (en) Warning track interruption facility