ES2598816T3 - Uso de una funcionalidad de interrupción con margen de advertencia por un programa - Google Patents

Uso de una funcionalidad de interrupción con margen de advertencia por un programa Download PDF

Info

Publication number
ES2598816T3
ES2598816T3 ES12866318.4T ES12866318T ES2598816T3 ES 2598816 T3 ES2598816 T3 ES 2598816T3 ES 12866318 T ES12866318 T ES 12866318T ES 2598816 T3 ES2598816 T3 ES 2598816T3
Authority
ES
Spain
Prior art keywords
program
guest
margin
warning
warning margin
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
ES12866318.4T
Other languages
English (en)
Inventor
Charles Gainey, Jr.
Jeffrey Paul KUBALA
Mark Farrell
Donald William Schmidt
James Mulder
Bernard Pierce
Robert Rogers
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 ES2598816T3 publication Critical patent/ES2598816T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Abstract

Un sistema informático (200) 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, en donde el sistema informático está configurado para realizar un método, comprendiendo dicho método: que un programa obtenga una indicación de una funcionalidad de margen de advertencia instalada (700) dentro del entorno informático, donde la funcionalidad de margen de advertencia proporciona al programa un período de gracia de margen de advertencia para realizar una función; que el programa inicie, basándose en la obtención de la indicación de que la funcionalidad de margen de advertencia está instalada, la inscripción del programa en el registro de la funcionalidad de margen de advertencia (702), comprendiendo la inscripción en el registro una petición no solicitada de inscripción en el registro que indica que el programa entiende un protocolo de la funcionalidad de margen de advertencia y pretende participar en la funcionalidad de margen de advertencia; que el programa reciba una notificación de margen de advertencia que indica que ha comenzado el período de gracia de margen de advertencia, siendo la inscripción del programa en el registro de la funcionalidad de margen de advertencia un requisito previo para recibir la notificación de margen de advertencia, en donde si el programa no está registrado, entonces no se ofrece período de gracia; y que el programa, basándose en la notificación de margen de advertencia, al menos inicie la función dentro del período de gracia de margen de advertencia.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Uso de una funcionalidad de interrupcion con margen de advertencia por un programa Antecedentes
Un aspecto de esta invencion se refiere, en general, al procesamiento dentro de un entorno informatico y, en particular, a facilitar el procesamiento asociado a recursos compartidos.
Un entorno virtual, que incluye una unidad central de procesamiento (CPU, por sus siglas en ingles) anfitriona y una o varias unidades centrales de procesamiento invitadas, es un tipo de entorno en el cual se comparten recursos. Un programa anfitrion (por ejemplo, un sistema operativo anfitrion), que se ejecuta en una CPU anfitriona, provee una CPU invitada (tambien denominada CPU virtual). El programa anfitrion realiza acciones para asignar recursos procedentes de una configuracion de anfitrion subyacente y para adjudicar esos recursos a la CPU invitada.
En una realizacion particular, existe una CPU invitada cuando una CPU anfitriona entra en el modo de ejecucion interpretativa. En este momento, el sistema operativo invitado (tambien denominado en la presente memoria "programa invitado") comienza su ejecucion en la CPU virtualizada, mientras que el programa anfitrion suspende su ejecucion en la CPU anfitriona. El programa anfitrion reanuda su ejecucion en la CPU cuando termina el modo de ejecucion interpretativa. Existen tecnicas de vinculacion entre el anfitrion y el invitado mediante las cuales se guardan y se restauran los estados de anfitrion e invitado. Tfpicamente, cuando un programa anfitrion inicia un programa invitado, el programa anfitrion entra en suspension hasta que el programa invitado retorna. Tanto la CPU invitada como la CPU anfitriona son modos distintos de la unica CPU anfitriona.
La configuracion de anfitrion incluye habitualmente todos los recursos del sistema informatico. Estos recursos incluyen, pero sin limitacion, unidades centrales de procesamiento (CPU), memoria principal y dispositivos de entrada/salida (E/S). En un sistema de este tipo, una sola CPU anfitriona puede dar soporte a multiples CPU invitadas. Esto se logra asignando a cada CPU invitada un penodo de tiempo, denominado "porcion de tiempo", para utilizar durante el mismo la CPU anfitriona, y trasladando despues la CPU anfitriona a otra CPU invitada durante una porcion de tiempo, y asf sucesivamente. El numero de CPU invitadas a las que puede dar soporte una CPU anfitriona vana dependiendo de las capacidades de la CPU anfitriona y de la capacidad deseada que se asigne a cada CPU invitada.
Una configuracion con invitados se forma tfpicamente a partir de dos o mas CPU invitadas, y se la conoce como una configuracion de multiprocesamiento (MP) con invitados. Se puede proveer cada una de las CPU invitadas por comparticion de una CPU anfitriona independiente o incluso por comparticion de una unica CPU anfitriona. Un atributo de tal comparticion es que una CPU invitada puede funcionar durante un penodo de tiempo, denominado porcion de tiempo y, a continuacion, queda inactiva durante un cierto penodo arbitrario de tiempo. El penodo de inactividad vana dependiendo de las polfticas de prioridad establecidas por el sistema, del numero total de CPU invitadas que deban compartirse las cPu anfitrionas, y de la tecnica de comparticion particular que se utilice.
En un sistema de multiprocesamiento con invitados, de este tipo, el sistema operativo invitado puede despachar un programa, al que a veces se le denomina unidad despachable (DU, por sus siglas en ingles), a una CPU invitada y despues, durante la ejecucion de esa unidad despachable, la porcion de tiempo de anfitrion de esa unidad despachable expira. Esto podna dejar a la unidad despachable en un estado tal que no se puede continuar en ninguna otra cPu invitada de la configuracion de multiprocesamiento con invitados, independientemente de la disponibilidad de cualquier otra CPU invitada. En lugar de ello, para continuar debe esperar a que esa unica CPU invitada reciba su siguiente porcion de tiempo. Dependiendo de la tecnica de comparticion y de la prioridad relativa de la configuracion con invitados, la siguiente porcion de tiempo puede tardar un penodo sustancial de tiempo. Incluso aunque la configuracion con invitados tenga otras CPU invitadas que puedan ejecutar la unidad despachable, no es posible continuar la unidad despachable debido al estado de la CPU invitada de la unidad despachable que se guardo cuando expiro la anterior porcion de tiempo. Mientras no se pueda utilizar exactamente ese estado para continuar la CPU invitada, la unidad despachable permanece inactiva.
La patente de EE.UU. n.° 7,536,690 B2 (Alverson, G.A. et al., "Deferred Task Swapping in a Multithreaded Environment", de 19 de mayo de 2009) describe un metodo y un sistema que preparan una tarea para que sea intercambiada y quede fuera de la utilizacion del procesador que esta en ejecucion en un ordenador con multiples procesadores que soportan, cada uno, multiples flujos.
La patente de EE.UU. n.° 5,594,893 (Byers, R.F. et al., " System for Monitoring and Controlling Operation of Multiple Processing Units", de 14 de enero de 1997) describe un controlador de bastidor (en ingles, "shelf controller") de procesador que supervisa el estado del bastidor. Cuando surge una peticion de apagado o de reinicio, bien sea iniciada por un controlador central o bien por el bastidor del procesador, el controlador de bastidor del procesador proporciona al menos un primer temporizador que concede al bastidor del procesador en funcionamiento tiempo suficiente para apagar procesos del sistema operativo.
5
10
15
20
25
30
35
40
45
50
Breve compendio
Al proporcionar un producto de programa informatico para facilitar el procesamiento en un entorno informatico se superan deficiencias de la tecnica anterior y se confieren ventajas. El producto de programa informatico incluye un medio de almacenamiento legible por ordenador que puede ser lefdo por un circuito de procesamiento y almacenar instrucciones para ser ejecutadas por el circuito de procesamiento, al objeto de poner en practica un metodo. El metodo incluye, por ejemplo, que un programa obtenga una indicacion de una funcionalidad de margen de advertencia instalada dentro del entorno informatico, que la funcionalidad de margen de advertencia proporcione al programa un penodo de gracia de margen de advertencia para realizar una funcion; que el programa reciba una notificacion de margen de advertencia que indica que el penodo de gracia de margen de advertencia ha comenzado; y que el programa, basandose en la notificacion de margen de advertencia, al menos inicie la funcion dentro del penodo de gracia de margen de advertencia.
Tambien se describen y reivindican en la presente memoria metodos y sistemas referentes a uno o varios aspectos de la presente invencion. Ademas, tambien se describen y pueden reivindicarse en la presente memoria servicios relacionados con uno o varios aspectos de la presente invencion.
Mediante las tecnicas de la presente invencion se obran caractensticas y ventajas adicionales. En la presente memoria se describen con detalle otras realizaciones y aspectos de la invencion, y se consideran parte de la invencion reivindicada.
Breve descripcion de las diversas vistas de los dibujos
En las reivindicaciones que se encuentran al final de la memoria descriptiva se senalan en particular, y se reivindican espedficamente, uno o varios aspectos de la presente invencion. Lo que antecede, asf como objetos, caractensticas y ventajas de la invencion, resultan evidentes a partir de la descripcion detallada que sigue, tomada conjuntamente con los dibujos adjuntos, en los cuales:
la Figura 1 representa una realizacion de un entorno informatico que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 2 representa otra realizacion de un entorno informatico que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 3 representa otra realizacion mas de un entorno informatico que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 4 representa una realizacion de la logica asociada con la observacion, por el invitado, de la funcionalidad de interrupcion con margen de advertencia, segun un aspecto de la presente invencion;
la Figura 5 representa una realizacion de la logica asociada con la observacion, por el anfitrion, de la funcionalidad de interrupcion con margen de advertencia, segun un aspecto de la presente invencion;
la Figura 6 representa una realizacion de la logica asociada con un anfitrion que gestiona un abandono de invitado, segun un aspecto de la presente invencion;
la Figura 7 representa una realizacion de una panoramica de la logica de la funcionalidad de interrupcion con margen de advertencia, segun un aspecto de la presente invencion;
las Figuras 8A-8C representan realizaciones de la logica asociada con el procesamiento de la funcionalidad de interrupcion con margen de advertencia, segun un aspecto de la presente invencion;
la Figura 9 representa una realizacion de la logica asociada con la recepcion de una interrupcion con margen de advertencia, segun un aspecto de la presente invencion;
la Figura 10 representa una realizacion de un formato de una instruccion "Diagnose" (diagnosticar) utilizada segun un aspecto de la presente invencion;
la Figura 11 representa una realizacion de un producto de programa informatico que incorpora uno o varios aspectos de la presente invencion;
la Figura 12 representa una realizacion de un sistema informatico anfitrion que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 13 representa un ejemplo adicional de un sistema informatico que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 14 representa otro ejemplo de un sistema informatico que comprende una red informatica que incorpora y utiliza uno o varios aspectos de la presente invencion;
5
10
15
20
25
30
35
40
45
50
55
la Figura 15 representa una realizacion de diversos elementos de un sistema informatico que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 16A representa una realizacion de la unidad de ejecucion del sistema informatico de la Figura 15 que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 16B representa una realizacion de la unidad de bifurcacion del sistema informatico de la Figura 15 que incorpora y utiliza uno o varios aspectos de la presente invencion;
la Figura 16C representa una realizacion de la unidad de carga/almacenamiento del sistema informatico de la Figura 15 que incorpora y utiliza uno o varios aspectos de la presente invencion; y
la Figura 17 representa una realizacion de un sistema informatico anfitrion emulado que incorpora y utiliza uno o varios aspectos de la presente invencion.
Descripcion detallada
Segun un aspecto de la presente invencion, se proporciona una capacidad de advertir a un programa (por ejemplo, un sistema operativo) de que tiene un penodo de gracia durante el cual realizar una funcion. Por ejemplo, se concede un penodo de gracia a un programa para realizar una limpieza (por ejemplo, completar, detener y/o transferir una unidad despachable).
Segun un aspecto adicional de la presente invencion, se advierte a un programa y/o a un procesador que esta a punto de perder acceso a recursos (por ejemplo, recursos compartidos). Por ejemplo, se emite una advertencia a un procesador que comparte recursos con otros procesadores, acerca de que el procesador esta a punto de perder acceso a recursos. Como ejemplo adicional, a un programa, por ejemplo un sistema operativo, que se ejecuta en un procesador compartido (es decir, el programa comparte el procesador con otros programas) se le advierte de que esta a punto de perder sus recursos de procesador.
En una realizacion particular, se proporciona una capacidad en la cual se emite, a un programa invitado que se ejecuta en una CPU invitada proporcionada por una CPU anfitriona, una advertencia de expiracion de una porcion de tiempo concedida a la CPU invitada desde la CPU anfitriona, o de apropiacion por el anfitrion de la porcion de tiempo del invitado. La advertencia provee un penodo de gracia que la CPU invitada puede utilizar para realizar una funcion determinada, por ejemplo completar la ejecucion de una unidad despachable, detener la unidad despachable en un punto en el cual la unidad despachable sea re-despachable y/o transferir la unidad despachable a otra CPU invitada.
En la presente memoria, un penodo de gracia incluye como ejemplos una cantidad de tiempo, un numero de instrucciones, un numero de ciclos, etc. Tiene una duracion predeterminada, dentro de la cual se pueden realizar una o mas funciones.
Se describe, con referencia a la Figura 1, una realizacion de un entorno informatico que incorpora y utiliza uno o varios aspectos de la presente invencion. En esta realizacion particular, un entorno informatico 100 incluye una pluralidad de procesadores 102 que comparten recursos 104. A cada procesador (y/o a un programa, por ejemplo un sistema operativo, que se ejecute en el procesador) se le concede una cierta cantidad de tiempo, denominada porcion de tiempo, para compartir los recursos. A modo de ejemplo, los recursos incluyen recursos de la unidad central de procesamiento, memoria, dispositivos de entrada/salida o interfaces, y/u otros recursos. Al procesador (o a un programa que se ejecute en el mismo), que tiene acceso a los recursos, se le advierte de que su acceso esta a punto determinar y, portanto, el procesador (o el programa) debe realizar una accion particular, por ejemplo limpiar, completar una unidad de trabajo, detener una unidad de trabajo, transferir una unidad de trabajo, etc.
Se describe, con referencia a la Figura 2, otra realizacion de un entorno informatico 200 que incorpora y utiliza uno o varios aspectos de la presente invencion. El entorno informatico 200 se basa, por ejemplo, en la z/Architecture® ofrecida por International Business Machines Corporation (IBM®), Armonk, Nueva York. La z/Architecture® esta descrita en una publicacion de IBM® titulada "z/Architecture Principles of Operation", IBM® Publication n.° SA22-7832-08, novena edicion, agosto de 2010. En un ejemplo, un entorno informatico basado en la z/Architecture® incluye un servidor System z®, ofrecido por International Business Machines Corporation, Armonk, Nueva York. IBM , z/Architecture y zSeries , asf como z/VM y z/OS que se mencionan mas adelante, son marcas comerciales registradas de International Business Machines Corporation, Armonk, Nueva York, EE.UU. Otros nombres utilizados en la presente memoria pueden ser marcas comerciales registradas, marcas comerciales o nombres de productos de International Business Machines Corporation o de otras compamas.
A modo de ejemplo, el entorno informatico 200 incluye un complejo central de procesamiento (CPC, por sus siglas en ingles) 202 que proporciona soporte de maquina virtual. El CPC 202 incluye, por ejemplo, una o varias maquinas virtuales 204 (o en otra realizacion, particiones logicas), uno o varios procesadores centrales 206, al menos un anfitrion 208 (por ejemplo, un programa de control, tal como un hipervisor), y un subsistema 210 de entrada/salida, cada uno de los cuales se describe a continuacion. En este ejemplo, las maquinas virtuales y el anfitrion estan incluidos en memoria.
5
10
15
20
25
30
35
40
45
50
55
60
El soporte de maquina virtual del CPC provee la capacidad de dirigir un gran numero de maquinas virtuales, cada una de las cuales es capaz de albergar un sistema operativo invitado 212, por ejemplo z/vM®, z/OS® o Linux, a modo de ejemplo. Cada maquina virtual 204 puede funcionar como un sistema independiente. Es decir, cada maquina virtual puede ser reiniciada, albergar un sistema operativo invitado, y trabajar con distintos programas, de forma independiente. Un sistema operativo o programa de aplicacion que se ejecute en una maquina virtual aparenta tener acceso a un sistema total y completo, pero, en realidad, solamente esta disponible una parte del mismo.
Los recursos ffsicos del CPC (por ejemplo, unidades CPU, memoria, dispositivos E/S, etc.) son propiedad del anfitrion 208, y el anfitrion despacha los recursos ffsicos compartidos a los sistemas operativos invitados, segun se requiera, a fin de cubrir sus demandas de procesamiento. El anfitrion controla las interacciones entre los sistemas operativos invitados y los recursos ffsicos de maquina compartidos, ya que el gran numero de invitados normalmente impide que el anfitrion simplemente realice el reparto y asigne los recursos de hardware a los invitados configurados.
Los procesadores centrales 206 son recursos de procesadorffsico que se pueden asignara una maquina virtual. Por ejemplo, la maquina virtual 204 incluye uno o varios procesadores logicos, cada uno de los cuales representa la totalidad o una parte de un recurso 206 de procesador ffsico que puede ser asignado dinamicamente a la maquina virtual. El anfitrion 208 gestiona las maquinas virtuales 204. A modo de ejemplo, el anfitrion puede estar implementado en microcodigo que se ejecuta en procesadores 206, o bien puede ser una parte de un sistema operativo anfitrion que se ejecuta en la maquina. En un ejemplo, el anfitrion 208 es el Processor Resource/System Manager (PR/SM) ofrecido por International Business Machines Corporation, Armonk, Nueva York.
El subsistema 210 de entrada/salida dirige el flujo de informacion entre dispositivos y almacenamiento principal. Esta acoplado al complejo central de procesamiento, de manera que puede ser parte del complejo central de procesamiento o bien ser independiente del mismo. El subsistema de E/S alivia a los procesadores centrales de la tarea de comunicarse directamente con los dispositivos de E/S acoplados al CPC y permite que el procesamiento de datos discurra de forma concurrente con eI procesamiento de E/S.
En una realizacion, el hardware/firmware del anfitrion (por ejemplo, PR/SM) y del procesador (por ejemplo, System z®) interactuan entre sf de una manera cooperativa controlada, con el fin de procesar las operaciones del sistema operativo invitado sin requerir la transferencia de control desde/hacia el sistema operativo invitado y el anfitrion. Las operaciones de invitado se pueden ejecutar directamente sin intervencion del anfitrion a traves de una funcionalidad que permite ejecutar las instrucciones de forma interpretativa para un invitado. Esta funcionalidad proporciona una instruccion, "Start Interpretive Execution" (SIE, iniciar ejecucion interpretativa), que puede ser emitida por el anfitrion, y que designa un bloque de control denominado "descripcion de estado" que alberga el estado y los controles de invitado (maquina virtual). La instruccion coloca la CPU en un modo de ejecucion interpretativa en el cual se procesan directamente las instrucciones e interrupciones de invitado, hasta que surge una situacion que requiere la atencion del anfitrion. Cuando se produce una situacion de este tipo, se finaliza la ejecucion interpretativa y, o bien se presenta una interrupcion de anfitrion, o bien la instruccion SIE completa el almacenamiento de detalles de la situacion encontrada; esta ultima accion se denomina intercepcion. En "System/370 Extended Architecture/Interpretive Execution", IBM Publication n.° SA22-7095-01, de septiembre de 1985, se describe un ejemplo de ejecucion interpretativa.
En la presente memoria, firmware incluye, por ejemplo, el microcodigo, el milicodigo y/o el macrocodigo del procesador. Incluye, por ejemplo, las instrucciones a nivel de hardware y/o estructuras de datos utilizadas en la implementacion de codigo maquina de nivel superior. En una realizacion incluye, por ejemplo, codigo propietario que normalmente se entrega como microcodigo, que incluye software de confianza o microcodigo espedfico para el hardware subyacente y controla el acceso del sistema operativo al hardware del sistema.
En la Figura 3 se representa otro ejemplo de un entorno informatico que incorpora uno o varios aspectos de la presente invencion. En este ejemplo, se proporciona un sistema informatico de anfitrion emulado 300 que emula un ordenador central 302 de una arquitectura de anfitrion. En el sistema informatico de anfitrion emulado 300, un procesador (CPU) anfitrion 304 es un procesador anfitrion emulado (o procesador anfitrion virtual) y se realiza a traves de un procesador 306 de emulacion que tiene una arquitectura nativa de conjunto de instrucciones distinta de la utilizada por los procesadores del ordenador principal 302. El sistema informatico de anfitrion emulado 300 tiene una memoria 308 a la que puede acceder el procesador 306 de emulacion. En la realizacion de ejemplo, la memoria 308 esta dividida en una parte 310 de memoria de ordenador anfitrion y una parte 312 de rutinas de emulacion. La memoria 310 del ordenador anfitrion esta disponible para programas del ordenador anfitrion emulado 302, conforme a la arquitectura del ordenador anfitrion, y puede incluir tanto un anfitrion o hipervisor 314 como una o varias maquinas virtuales 316 que ejecuten sistemas operativos invitados 318, analogos a los elementos de la Figura 2 que tienen nombres similares.
El procesador 306 de emulacion ejecuta instrucciones nativas de un conjunto de instrucciones arquitecturado, con una arquitectura distinta de la del procesador emulado 304. Las instrucciones nativas se obtienen, por ejemplo, de la memoria 312 de rutinas de emulacion. El procesador de emulacion 306 puede acceder a una instruccion de anfitrion para ejecucion desde un programa en la memoria 310 del ordenador anfitrion, mediante el empleo de una o varias instrucciones obtenidas de una rutina de secuencia y acceso/descodificacion que pueden descodificar la o las
5
10
15
20
25
30
35
40
45
50
55
60
instrucciones de anfitrion a las que se ha accedido, para determinar una rutina de ejecucion de instrucciones nativa con el fin de emular la funcion de la instruccion de anfitrion a la que se ha accedido. Una de estas instrucciones de anfitrion puede ser, por ejemplo, una instruccion "Start Interpretive Execution" (SIE), mediante la cual el anfitrion busca ejecutar un programa invitado en una maquina virtual. Las rutinas 312 de emulacion pueden incluir soporte para esta instruccion, y para ejecutar una secuencia de instrucciones de invitado en una maquina virtual 316 conforme a la definicion de esta instruccion SIE.
Las rutinas de funcionalidades arquitecturadas pueden emular otras funcionalidades que esten definidas para la arquitectura del sistema informatico anfitrion 302, entre ellas funcionalidades tales como registros de uso general, registros de control, traduccion dinamica de direcciones y soporte para subsistema de E/S y memoria cache de procesador, a modo de ejemplos. Las rutinas de emulacion tambien pueden aprovechar funciones disponibles en el procesador 306 de emulacion (por ejemplo, registros generales y la traduccion dinamica de direcciones virtuales) con el fin de mejorar el rendimiento de las rutinas de emulacion. Tambien se pueden proporcionar hardware especial y motores de descarga para ayudar al procesador 306 a emular las funciones del ordenador anfitrion 302.
Segun un aspecto de la presente invencion, se proporciona una funcionalidad de interrupcion con margen de advertencia que se puede utilizar en muchos tipos de entornos informaticos. Aunque se puede utilizar en muchos tipos de entornos, en la presente memoria se describen aspectos de la funcionalidad que hacen referencia a un sistema de multiprocesamiento con invitados. Tal como se ha descrito mas arriba, en los sistemas de multiprocesamiento con invitados, sistemas operativos invitados despachan unidades (por ejemplo, programas, codigo, etc.) despachables a unidades centrales de procesamiento invitadas que se alojan en al menos una unidad central de procesamiento invitada. La CPU anfitriona proporciona una porcion de tiempo (por ejemplo, una cantidad de tiempo u otro plazo, por ejemplo un numero de instrucciones, un numero de ciclos, etc.) a la CPU invitada, tiempo durante el cual la unidad despachable se ejecuta. Si, durante la ejecucion de la unidad despachable, expira la porcion de tiempo, la unidad despachable puede quedar en un estado en el que no pueda continuarse en ninguna otra CPU invitada de la configuracion de multiprocesamiento con invitados, independientemente de la disponibilidad de cualesquiera otras CPU invitadas. En lugar de ello, debe esperar a que esa unica CPU invitada reciba su siguiente porcion de tiempo, para continuar. Dependiendo de la tecnica de comparticion particular empleada y de la prioridad relativa de la configuracion con invitados, la siguiente porcion de tiempo puede tardar un penodo sustancial de tiempo. Incluso aunque la configuracion con invitados tenga otras CPU invitadas que puedan ejecutar la unidad despachable, no es posible continuar la unidad despachable debido del estado de la CPU invitada de la unidad despachable que se guardo cuando expiro la anterior porcion de tiempo. Mientras no se pueda utilizar exactamente ese estado para continuar la CPU invitada, la unidad despachable permanece inactiva.
Es posible prolongar la porcion de tiempo mediante la concesion de tiempo adicional (u otro plazo adicional, por ejemplo, instrucciones adicionales, ciclos adicionales, etc.), pero incluso con este tiempo extra, la CPU invitada podna prolongar la ejecucion de la unidad despachable y seguir dejandola en el mismo estado indespachable en el que estana al expirar la porcion de tiempo normal.
Dado que un programa anfitrion no conoce los controles ni el estado utilizados por un programa invitado arbitrario que ejecuta una unidad despachable arbitraria, no se puede conceder siempre tiempo adicional para que el sistema operativo invitado limpie su unidad despachable sin establecer un protocolo entre el programa anfitrion y el programa invitado. Sin un protocolo, cualquier tiempo extra concedido a la CPU invitada sena consumido en el procesamiento principal y posiblemente seguina concluyendo con la misma situacion de atasco de unidad despachable. Por lo tanto, segun un aspecto de la presente invencion, se proporciona un protocolo de este tipo.
Segun un aspecto de la presente invencion, se proporciona un penodo o prolongacion de gracia que incluye una advertencia que indica al programa invitado que accion particular se debe tomar (por ejemplo, completar una unidad despachable o hacer re-despachable a la unidad despachable). A modo de ejemplo, se proporciona el penodo de gracia en respuesta a la expiracion de la porcion de tiempo, o en respuesta a la apropiacion del invitado por el anfitrion, antes de la expiracion de la porcion de tiempo de aquel, con el fin de reclamar el procesador para alguna otra prioridad superior, desde el punto de vista del anfitrion, tal como se describe con mayor detalle en la presente memoria.
A modo de ejemplo, se proporciona el penodo de gracia en lugar de prolongar incondicionalmente la porcion de tiempo. Si la porcion de tiempo normal ha expirado por completo, se concede un penodo de gracia, pero con cargo a la siguiente porcion normal de tiempo para seguir siendo justo con los demas invitados virtualizados que tienen cada uno una expectativa de porcion de tiempo. Si no ha expirado la porcion de tiempo normal, el penodo de gracia se toma del tiempo normal restante. En cualquier caso, el penodo de gracia limita el tiempo (u otro penodo) restante concedido a la CPU invitada y no es en sf mismo extensible. De este modo, la CPU invitada no puede continuar funcionando durante un penodo arbitrario y desconocido.
Al comienzo del penodo de gracia, se efectua una notificacion al programa invitado al objeto de que limpie la unidad despachable (por ejemplo, completandola, deteniendola y/o transfiriendola). La imposicion del penodo de gracia asegura que la CPU invitada no exceda el plazo adicional concedido. El protocolo mediante el cual se concede un penodo de gracia al programa invitado y se le notifica que el tiempo (u otro plazo) casi ha vencido (es decir, que el penodo de gracia ha comenzado) es un acuerdo entre el programa invitado y el programa anfitrion de forma que el
5
10
15
20
25
30
35
40
45
50
55
programa invitado entiende el protocolo, con lo que hace que dicha notificacion sea valiosa. Es dedr, el programa invitado normalmente atendera la notificacion haciendo, cuando sea necesario, que la unidad despachable corriente en ese momento sea despachable en otra CPU invitada de la configuracion con invitados (por ejemplo, transfiriendola).
A continuacion se describen detalles adicionales acerca del protocolo y de la funcionalidad de interrupcion con margen de advertencia (tambien denominada "margen de advertencia" o "funcionalidad de margen de advertencia"), haciendo referencia a las Figuras 4-10. La realizacion descrita con referencia a estas figuras se refiere a un entorno virtual que tiene uno o varios invitados creados por uno o varios anfitriones. Sin embargo, uno o varios aspectos de la presente invencion se refieren tambien a otros entornos, entre ellos entornos no virtuales en los que multiples procesadores y/o multiples programas comparten recursos.
Haciendo referencia a la Figura 4, se describen detalles acerca del protocolo de la funcionalidad de interrupcion con margen de advertencia tal como lo observa un invitado. Tal como lo observa el invitado, el protocolo de margen de advertencia incluye, por ejemplo, una indicacion de funcionalidad instalada, inscripcion de invitados en registro, notificacion y abandono voluntario, cada uno de los cuales se describe a continuacion.
Haciendo referencia a la Figura 4, el programa invitado entiende el protocolo de margen de advertencia y busca una indicacion de funcionalidad instalada, PASO 400. En un ejemplo, esta indicacion es un bit almacenado en un bloque de control (por ejemplo, un Service Call Control Block (SCCB, bloque de control de llamada de servicio), que se observa utilizando un comando de lectura, por ejemplo un comando Read SCP Information (leer informacion de SCP). Despues de determinar que la funcionalidad esta instalada, el programa invitado realiza la inscripcion en el registro, PASO 402. La inscripcion en el registro es un mecanismo en el cual el programa invitado comunica al programa anfitrion que el programa invitado entiende el protocolo de funcionalidad de interrupcion con margen de advertencia. En un ejemplo, la inscripcion en el registro se lleva a cabo utilizando una instruccion Diagnose, de lo cual se describe un ejemplo mas adelante.
En una realizacion, la inscripcion en el registro iniciada desde cualquier unidad central de procesamiento invitada cubre todas las unidades centrales de procesamiento invitadas de la configuracion de multiprocesamiento, ya que se desea un comportamiento consistente en todas las CPU invitadas de la configuracion de multiprocesamiento con invitados. En una configuracion de multiprocesamiento con invitados, las CPU invitadas utilizan la misma memoria principal, y se asume que las CPU invitadas funcionan en lo que a veces se denomina "imagen unica". Por lo tanto, la inscripcion de una CPU invitada en el registro es aplicable a las demas CPU invitadas del entorno de multiprocesamiento. En una realizacion, la inscripcion en el registro es irrevocable, y ello ayuda a evitar ventanas de temporizacion, simplifica el desarrollo y permite una la facilidad de comprobacion mejorada. Aunque la inscripcion sea irrevocable, el programa invitado puede determinar si va a continuar participando en el protocolo. Si decide hacerlo, no necesita participar mediante un reinicio o teniendo que reiniciar uno o mas indicadores de habilitacion descritos mas adelante.
Despues de inscribir programa invitado en el registro del protocolo de margen de advertencia, se puede notificar un penodo de gracia a una CPU invitada, PASO 404. Por ejemplo, una CPU anfitriona puede advertirla de la expiracion de una porcion de tiempo (o, en otro ejemplo, de una expiracion inminente) o de la apropiacion de su porcion de tiempo. En un ejemplo particular, se notifica a una CPU de una configuracion con invitados registrados de, por ejemplo, la expiracion de su porcion de tiempo normal y del comienzo de un penodo de gracia que concede un plazo adicional para, por ejemplo, realizar una limpieza.
Despues de la notificacion, el invitado tiene una cantidad limitada de tiempo u otro plazo, el penodo de gracia (en una realizacion particular 50 microsegundos, por ejemplo), para hacer re-despachable a la unidad despachable, o para realizar otros ajustes apropiados. Si la porcion normal de tiempo ya ha terminado, entonces antes de devolver el control al anfitrion, por ejemplo, se utiliza el penodo de gracia para hacer re-despachable a la unidad despachable o para realizar otros ajustes apropiados. Si la porcion de tiempo no ha terminado, entonces se utiliza el penodo de gracia y se renuncia a cualquier porcion restante de la porcion de tiempo. Se produce una contabilidad normal del tiempo real utilizado por una CPU invitada.
Despues de realizada la notificacion, la CPU invitada se encuentra en un penodo restringido (por ejemplo, una cantidad limitada de tiempo) tras del cual se hace terminar involuntariamente el funcionamiento de la CPU invitada. Solo se realiza una notificacion por cada penodo de porcion de tiempo normal. De este modo, la CPU invitada sigue estando limitada por un control de tiempo final que asegura que se pueda compartir en otro sitio la CPU anfitriona compartida subyacente, preservando asf el buen orden y la disciplina en la virtualizacion global proporcionada por el programa anfitrion.
La notificacion puede realizarse mediante cualquier mecanismo que provoque que el programa invitado detecte un estatus unico. Los ejemplos incluyen una interrupcion unica de invitado, una posicion de la memoria principal definida por arquitectura que se pueda fijar, o bien un dispositivo de memoria externa E/S a disposicion tanto del anfitrion como del invitado. Lo primero requiere una habilitacion de invitado adecuada, para permitir la interrupcion. Los dos ultimos requieren examenes periodicos con una frecuencia suficiente para que no se desperdicie el penodo de gracia. En un ejemplo particular de la z/Architecture®, se utiliza como notificacion una interrupcion de invitado,
5
10
15
20
25
30
35
40
45
50
55
denominada interrupcion con margen de advertencia (WTI, por sus siglas en ingles).
Despues de ser advertido, el invitado abandona voluntariamente su porcion de tiempo/penodo de gracia dado, PASO 406. El invitado termina su porcion de tiempo/penodo de gracia corriente en ese momento despues de haber sido notificado y haber hecho re-despachable a la unidad despachable (por ejemplo, haber detenido y transferido la unidad despachable, o haberla completado). Este abandono indica al programa anfitrion que el invitado esta siguiendo efectivamente el protocolo. Pueden presentarse otros motivos para que un invitado renuncie al control, devolviendolo asf al programa anfitrion. Normalmente, en ninguno de dichos abandonos inusuales se presentanan condiciones para que el procesamiento restringido hiciese re-despachable a una unidad despachable. Si la CPU invitada abandona dentro del penodo de gracia a traves del protocolo de interrupcion con margen de advertencia, en la siguiente porcion de tiempo, cuandoquiera que suceda, se envfa una indicacion de retroalimentacion. De este modo, el programa invitado sabe que ha cumplido la limitacion de tiempo impuesta por el penodo de gracia.
Si el invitado ha llegado tarde en su abandono voluntario, se le retira la ejecucion al expirar el penodo de gracia. La siguiente vez que se arranca la CPU invitada, con una porcion de tiempo normal, se le envfa una indicacion de retroalimentacion para que el invitado sepa que ha llegado tarde. Por lo general, esto se puede utilizar para detectar problemas en el programa invitado, ya que habitualmente el penodo de gracia permite un tiempo suficiente para realizar la limpieza y salir voluntariamente.
Si se produce un abandono inusual, se espera que se produzca rapidamente el abandono voluntario en la siguiente vez que se arranque la CPU invitada dentro de una porcion de tiempo normal. El mismo mecanismo de retroalimentacion informana al programa invitado de que se ha producido un abandono inusual y, asf, proporcionana diversa informacion para contribuir a determinar el problema.
El abandono voluntario se realiza mediante cualquier mecanismo que provoque que el control pase del programa invitado al programa anfitrion, y que incluya el mecanismo de retroalimentacion antes mencionado. Para que el programa anfitrion reconozca la peticion del invitado, el mecanismo utilizado debe estar definido en el protocolo de interrupcion con margen de advertencia de esa arquitectura particular. En un ejemplo, este mecanismo incluye la instruccion Diagnose que se describe mas adelante.
En una realizacion, ademas de que el invitado acate el protocolo de interrupcion con margen de advertencia, el anfitrion tambien acata la funcionalidad, como se describe a continuacion con mayor detalle, haciendo referencia a Figura 5.
Haciendo referencia a la Figura 5, el anfitrion reconoce la indicacion de funcionalidad instalada y la refleja a sus invitados, PASO 500. Por ejemplo, el anfitrion comprueba el bit de "instalado" en el bloque de control (por ejemplo, SCCB) y reconoce el estatus de instalado del protocolo de margen de advertencia (es decir, que esta establecido), y sabe como el programa anfitrion puede utilizarlo para beneficio del anfitrion. Por lo tanto, refleja a su invitado la indicacion de la funcionalidad. Por ejemplo, para reflejar la funcionalidad a un invitado, el anfitrion establece un bit de instalado en un bloque de control de invitado (por ejemplo, SCCB de invitado) o en un area de memoria accesible al invitado. Si, por cualquier razon, el programa anfitrion no desea que un invitado observe el estatus de instalado del protocolo de funcionalidad de interrupcion con margen de advertencia y no permite que un invitado observe su estatus de instalado y lo utilice, el programa anfitrion envfa una indicacion de "no instalado" al invitado (por ejemplo, pone a cero el bit visto por el invitado). Ademas, en una realizacion, el programa anfitrion establece los controles de las CPU invitadas de manera que se desactiva el protocolo de margen de seguridad (por ejemplo, apaga uno o mas bits espedficos en la descripcion de estado de la CPU invitada).
Cuando un invitado inicia la inscripcion en el registro, el programa anfitrion recibe la peticion no solicitada de inscripcion en el registro y recuerda que el invitado se ha registrado, PASO 502. Una peticion de inscripcion en el registro iniciada por una unica CPU invitada es suficiente para inscribir en el registro todas las CPU invitadas de una configuracion de multiprocesamiento con invitados. Asf, el programa anfitrion habilita el protocolo de margen de advertencia para todas las CPU de la configuracion con invitados, PASO 504. Por ejemplo, el programa anfitrion fija uno o mas bits espedficos de la descripcion de estado de la CPU invitada, a fin de habilitar para los invitados la funcionalidad de interrupcion con margen de advertencia. No es obligatorio que vuelva al invitado una retroalimentacion del registro. Si una CPU invitada intentase inscribirse en el registro, incluso cuando la funcionalidad no esta instalada, el anfitrion ignorana la solicitud y no habilitana a la CPU invitada para el protocolo de la funcionalidad de interrupcion con margen de advertencia.
Despues del registro y la habilitacion de los invitados respecto a la funcionalidad de margen de advertencia, un invitado puede recibir una notificacion de invocacion del protocolo, PASO 506. Esto se puede efectuar en diversos escenarios, como se describe a continuacion.
A modo de ejemplo, cuando se habilita el protocolo de interrupcion con margen de advertencia para una CPU invitada que trabaja en el modo de ejecucion interpretativa sobre una CPU anfitriona, por ejemplo la CPU anfitriona X, el programa anfitrion puede iniciar el protocolo desde la CPU anfitriona Y. Es decir, se ha creado una CPU invitada con una CPU anfitriona X y esa CPU anfitriona X no esta disponible en ese momento para el programa anfitrion. Si el programa anfitrion tiene motivos para readquirir la CPU X, primeramente hace que la CPU X salga del
5
10
15
20
25
30
35
40
45
50
55
60
modo de ejecucion interpretativa. Es dedr, se detiene la CPU invitada, que sale asf del modo de ejecucion interpretativa de la CPU X. El hecho de detener la CPU invitada en cualquier punto arbitrario sin permitir que la CPU invitada se detenga voluntariamente crea el riesgo de un problema, que el protocolo de interrupcion con margen de advertencia pretende resolver. El protocolo de interrupcion con margen de advertencia permite a la CPU anfitriona Y pedir una notificacion al permitir que una accion del programa anfitrion se transforme en una notificacion en la CPU invitada X, PASO 506. Dado que el programa invitado se ha inscrito con anterioridad en el registro, el programa anfitrion espera que el programa invitado reconozca la notificacion y apoye la gestion adecuada de la notificacion, incluido el ultimo paso de terminar voluntariamente la ejecucion, devolviendo asf el control de la CPU anfitriona X al programa anfitrion. Cuando esto ocurre, el programa anfitrion puede proceder a realizar en la CPU anfitriona X el uso, cualquiera que fuese, que ha originado la puesta en marcha del proceso.
El programa anfitrion notifica a un invitado, por ejemplo, estableciendo un estatus cualquiera, estableciendo un indicador (por ejemplo, un bit) o provocando el envfo de una senal no solicitada, asmcrona (por ejemplo, una interrupcion con margen de advertencia) al invitado. Aunque el invitado este registrado, el momento de la recepcion de una senal de notificacion de este tipo sigue siendo desconocido para el. Al inscribirse en el registro, el invitado simplemente se ha comprometido a adherirse al protocolo, en caso de que asf se le indique, y cuando llegue el momento.
En un sistema de uniprocesador anfitrion, si la unica CPU anfitriona se encuentra en el modo de ejecucion interpretativa, de manera que la CPU invitada esta en funcionamiento, no existe otra CPU anfitriona para invocar el protocolo de interrupcion con margen de advertencia. Sin embargo, incluso en este caso la propia CPU puede invocar el protocolo de interrupcion con margen de advertencia cuando la CPU anfitriona, aun estando en el modo de ejecucion interpretativa, reconoce la expiracion de la porcion de tiempo y puede conceder entonces un penodo de gracia y realizar la notificacion.
En un ejemplo adicional de notificacion, la notificacion se produce cuando, debido a un cambio interno de estatus reconocido por la CPU anfitriona cuando se encuentra en el modo de ejecucion interpretativa, la CPU anfitriona hace que se envfe a la CPU invitada la notificacion definida en el protocolo de interrupcion con margen de advertencia. Se da un ejemplo de ello cuando la CPU invitada esta habilitada para el protocolo de interrupcion con margen de advertencia y la CPU anfitriona reconoce el final de la porcion de tiempo. Antes de indicar a la CPU invitada que renuncie al control, la CPU otorga internamente un penodo de gracia para conceder a la CPU invitada tiempo suficiente para recibir la senal, tomar las medidas apropiadas (por ejemplo, completar la unidad despachable corriente en ese momento o hacer re-despachable la unidad despachable corriente en ese momento) y terminar voluntariamente. Internamente, la CPU anfitriona retiene el estado que indica que la CPU invitada ha sido notificada. Si el invitado no termina voluntariamente dentro del penodo de gracia, la CPU lo reconoce, y da fin a la ejecucion del invitado, devolviendo asf el control al programa anfitrion al terminar la modalidad de ejecucion interpretativa. En una realizacion, el invitado no tiene manera alguna de determinar por que se ha invocado el protocolo, sino solamente que se le ha notificado que limpie y termine. Pueden existir otras logicas de anfitrion para provocar el termino de un modo de ejecucion interpretativa y, asf, poner fin a la ejecucion invitada. Por ejemplo, existen escenarios en los que se debe detener la ejecucion de todas las CPU invitadas, para realizar algun cambio coordinado en toda la configuracion de invitados. Una configuracion de multiprocesamiento con invitados no debe tener unidades CPU que trabajen con reglas o suposiciones distintas de otras CPU de la configuracion invitada. Tal asimetna podna crear resultados impredecibles en los invitados.
La CPU anfitriona recibe el efecto de la CPU invitada que ha realizado el abandono voluntario o ha salido por cualquier otra razon (por ejemplo, por que se ha devuelto al anfitrion el recurso de la CPU), PASO 508. Si el abandono se ha debido a lo que define el protocolo de interrupcion con margen de advertencia, entonces el programa anfitrion recuerda proporcionar una retroalimentacion a la CPU invitada la siguiente vez que arranque, aunque transcurra mucho tiempo. Esta retroalimentacion es una indicacion positiva ("buena"), que asume que el invitado ha salido voluntariamente antes de la expiracion del penodo de gracia. Si la salida se ha debido a cualquier otra razon, no se produce retroalimentacion por el protocolo de interrupcion con margen de advertencia en el siguiente arranque de la CPU invitada.
Si el invitado ha llegado tarde en el abandono voluntario; es decir, el invitado realiza una accion para salir voluntariamente, pero el penodo de gracia ha expirado, la ejecucion de la CPU invitada queda apropiada al expirar el penodo de gracia. La siguiente vez que se arranca la CPU invitada con una porcion de tiempo normal, se genera una indicacion de retroalimentacion por excepcion, de manera que el invitado sepa que llego tarde en su abandono voluntario. Generalmente, esto se puede utilizar para detectar problemas en el programa invitado, dado que el penodo de gracia usual concede tiempo suficiente para realizar la limpieza y salir voluntariamente.
Si se produce una salida que no es el abandono voluntario del protocolo de interrupcion con margen de advertencia, la siguiente vez que se arranca la CPU invitada con una porcion de tiempo normal, no se incluye ninguna retroalimentacion conforme al protocolo de margen de advertencia.
Los medios para el abandono voluntario se implantan mediante cualquier mecanismo que provoque que el control pase desde el programa invitado al programa anfitrion, que sea reconocido por el programa anfitrion como el abandono voluntario previsto en el protocolo, y que incluya el mecanismo de retroalimentacion antes mencionado.
5
10
15
20
25
30
35
40
45
50
55
60
En un ejemplo, se utiliza para el abandono voluntario una instruccion Diagnose. Es dedr, para indicar el termino de la porcion de tiempo se utiliza la instruccion Diagnose con un parametro particular. Despues de que el programa de invitados emite y ejecuta la instruccion Diagnose, el programa anfitrion determina si la salida se realizo a tiempo. Entonces, cuando se arranca nuevamente el invitado, lo que se situa en la siguiente instruccion secuencial despues de Diagnose, se provee un codigo de situacion que indica si se realizo a tiempo. El codigo de situacion se pone, por ejemplo, en la PSW de invitado que se utiliza para arrancar el invitado en la siguiente instruccion secuencial. El invitado puede entonces probar el codigo de condicion.
Se describe con mayor detalle, haciendo referencia a la Figura 6, como gestiona el anfitrion el abandono voluntario del invitado. Inicialmente, cuando la CPU invitada se detiene el control vuelve a la CPU anfitriona, PASO 600. Se efectua una determinacion acerca de si el control fue devuelto dentro del penodo de gracia, PREGUNTA 602. Si el control fue devuelto dentro del penodo de gracia, entonces el programa anfitrion observa un abandono voluntario de un invitado, conforme al protocolo de interrupcion con margen de advertencia, y recuerda una realimentacion "buena" para el siguiente arranque de la CPU invitada, sin importar cual sea la CPU anfitriona que provea en ese momento la CPU invitada, PASO 604. Esto es asf, suponiendo que la funcionalidad de interrupcion con margen de advertencia esta instalada. En caso contrario, el estatus de realimentacion no se recuerda. Sin embargo, si el invitado realiza una accion para abandonar voluntariamente, pero se encuentra fuera del penodo de gracia, PREGUNTA 602, entonces el programa anfitrion de la CPU anfitriona observa un abandono voluntario de invitado conforme al protocolo de interrupcion con margen de advertencia (aunque ha sido fuera de plazo y se ha tenido que expulsar de manera no voluntaria) y recuerda una realimentacion "mala" para el siguiente arranque de la CPU invitada, sin importar cual sea la CPU anfitriona que provea en ese momento la CPU invitada, PASO 606. Una vez mas, esto es asf suponiendo que la funcionalidad de interrupcion con margen de advertencia esta instalada. En caso contrario, el estatus de realimentacion no se recuerda.
Despues de esto, tanto si el anfitrion esta recordando una retroalimentacion buena como si esta recordando una retroalimentacion mala, el programa anfitrion redirige la CPU anfitriona a una asignacion de apropiacion, PASO 608. Es decir, el anfitrion se redirige a realizar una o mas funciones ahora que ha recuperado sus recursos (CPU).
Por otra parte, en el siguiente arranque secuencial de la CPU invitada, con independencia de cual sea la CPU anfitriona que provea la CPU invitada, si se recuerda el estatus de retroalimentacion, se establece la indicacion de estatus de retroalimentacion antes de arrancar la CPU invitada, PASO 610. En un ejemplo, esto se establece en la descripcion de estado SIE, por ejemplo en la PSW de la descripcion de estado que indica el comienzo de la siguiente instruccion secuencial.
Haciendo referencia a las Figuras 7-9 se describen detalles adicionales sobre el procesamiento asociado con la funcionalidad de interrupcion con margen de advertencia. En particular, la Figura 7 representa una realizacion de la logica asociada con una panoramica del procesamiento de la funcionalidad de interrupcion con margen de advertencia; Las Figuras 8A-8C proporcionan detalles del procesamiento de la funcionalidad de interrupcion con margen de advertencia, segun un aspecto de la presente invencion; y la Figura 9 representa una realizacion de la logica asociada con la recepcion de una interrupcion con margen de advertencia.
Haciendo referencia a la Figura 7, inicialmente un programa invitado (por ejemplo, un sistema operativo invitado) reconoce que la funcionalidad de interrupcion con margen de advertencia esta instalada, PASO 700. En una realizacion, esto se consigue haciendo que el programa invitado observe un indicador de funcionalidad instalada (por ejemplo, un bit) que esta situado, por ejemplo, en un bloque de control espedfico. Si el sistema operativo invitado tiene el soporte para participar en la funcionalidad de interrupcion con margen de advertencia, reconoce el indicador de funcionalidad de interrupcion con margen de advertencia instalada y luego indica su capacidad para participar en el protocolo. En un ejemplo, esto incluye registrar su intencion de participar en el procesamiento con margen de advertencia, PASO 702. Tal como se describe en la presente memoria, en un ejemplo la inscripcion en el registro se realiza a traves de una instruccion Diagnose. Una vez registrado, el sistema operativo invitado indica tanto a la CPU anfitriona como al programa anfitrion que sabe como manejar una interrupcion con margen de advertencia (WTI), que es una interrupcion no ambigua que proporciona una advertencia al invitado de que, por ejemplo, esta a punto de perder el acceso a su recurso compartido (por ejemplo, la CPU invitada) y que, por ejemplo, debe tomar medidas con respecto a su unidad despachable que esta ejecutando en ese momento. En una realizacion, la inscripcion en el registro es un requisito previo para recibir la WTI. Si el invitado no se ha inscrito en relacion con la funcionalidad de interrupcion con margen de advertencia, cuando expira la porcion de tiempo del invitado no se le ofrece ningun penodo de gracia, y la CPU invitada es expulsada del modo de ejecucion interpretativa.
En una realizacion, aunque esta inscrito en el registro, el programa invitado cuenta con dos mecanismos para deshabilitar la presentacion de la WTI. Por ejemplo, se puede poner a cero un bit seleccionado dentro de, por ejemplo, la palabra de estado de programa (PSW), lo que deshabilita la presentacion de todas las interrupciones externas, entre ellas la WTI; o bien se puede poner a cero un bit dentro de un registro de control determinado (por ejemplo, CR0), para deshabilitar solo la WTI. Si los dos bits son uno, la presentacion de la WTI esta habilitada. Si la presentacion de una WTI permanece deshabilitada durante todo el penodo de gracia de la WTI, la ejecucion del invitado termina sin el beneficio de la WTI, lo que constituye un abandono involuntario.
Durante la ejecucion interpretativa de la CPU invitada, si la CPU invitada reconoce internamente, o bien una
5
10
15
20
25
30
35
40
45
50
55
situacion de interrupcion externa por temporizador de CPU anfitriona (por ejemplo, una porcion de tiempo que ha expirado), o bien una apropiacion solicitada por el programa anfitrion, PREGUNTA 704, el procesamiento interno de la CPU determina, antes de que el anfitrion reciba el control, si se debe realizar el procesamiento de la interrupcion con margen de advertencia, PREGUNTA 706. Es decir, el procesamiento interno de la CPU comprueba que el invitado esta habilitado para el procesamiento con margen de advertencia y, por lo tanto, determina si se debe incluir el procesamiento con margen de advertencia en el procesamiento a realizar. Si no se debe realizar el procesamiento de interrupcion con margen de advertencia, entonces la ejecucion interpretativa del invitado termina, PASO 708, y el control vuelve al programa anfitrion, PASO 710. Volviendo a la PREGUNTA 706, si se debe realizar, no obstante, el procesamiento de interrupcion con margen de advertencia, entonces se realiza ese procesamiento, como se describe con mayor detalle mas adelante, PASO 712.
Se describen, haciendo referencia a las Figuras 8A-8C, realizaciones de detalles adicionales del procesamiento de interrupcion con margen de advertencia. En este procesamiento se utilizan varios indicadores de control, entre ellos los siguientes:
un control interno (por ejemplo, bit G) activo durante el penodo de gracia de la funcionalidad de interrupcion con margen de advertencia, que no es visible arquitectonicamente, pero que es utilizado por la logica interna de la CPU;
un control interno (por ejemplo, bit P), presentado durante una interrupcion con margen de advertencia (WTI), que indica, cuando vale uno, que se ha presentado la WTI al invitado, y cuando vale cero indica que no se ha presentado. Al igual que el control interno activo durante el penodo de gracia de la funcionalidad de interrupcion con margen de advertencia, el control interno de WTI presentada no es arquitectonicamente visible, pero es utilizado por la logica interna de la CPU;
una apropiacion del control, por el programa anfitrion, en detrimento del invitado (por ejemplo, un bit T), que es, por ejemplo, el indicador de peticion de intervencion de margen de advertencia en la descripcion de estado de la CPU invitada; y
existe habilitacion de interrupciones externas, cuando un indicador E vale uno. En un ejemplo, el indicador E es un bit dentro de la palabra actual de estado del programa (PSW).
Haciendo referencia a la Figura 8A, en un ejemplo, o bien se reconoce una situacion de interrupcion por temporizador de la CPU anfitriona (por ejemplo, ha expirado la porcion de tiempo) o bien se reconoce una peticion de intervencion con margen de advertencia (por ejemplo, el anfitrion desea una devolucion anticipada de recursos de CPU, es decir, antes de que acabe la porcion de tiempo). Si se reconoce una situacion de interrupcion por temporizador de la CPU anfitriona, PREGUNTA 800, se realiza una determinacion acerca de si se ha fijado el indicador de control de penodo de gracia activo (por ejemplo, ^es G igual a 1?), PREGUNTA 802. Si no se ha fijado G, entonces se fija el indicador G en, por ejemplo, 1, PASO 804, y el penodo de gracia de la funcionalidad de interrupcion con margen de advertencia esta a punto de comenzar. Despues se guarda el valor actual en ese momento del temporizador de la CPU anfitriona (en la presente memoria, al valor guardado se le denomina "valor original"), PASO 806, y se ajusta el temporizador de la CPU anfitriona para el penodo de gracia del margen de advertencia (por ejemplo, 50 microsegundos), PASO 808.
Despues de esto, se realiza una determinacion de si el invitado esta habilitado para una interrupcion con margen de advertencia, PREGUNTA 810. En una realizacion, si esta activo el nivel 2 de invitados, que indica que un invitado ha dado inicio a otro invitado, entonces el invitado 2 sale del modo de ejecucion interpretativa como en el caso de una interrupcion de invitado 1, y se anula la instruccion Start Interpretive Execution del invitado 1. Por lo tanto, en este punto el procesamiento se realiza como invitado 1. Si no esta activo el invitado 2, entonces el procesamiento simplemente continua con el invitado 1. Si el invitado esta habilitado para una WTI, entonces se presenta al invitado la interrupcion externa con margen de advertencia (WTI), PASO 812. En un ejemplo, esta interrupcion incluye un codigo particular de interrupcion que se presenta, lo que indica que dispone de un penodo de gracia para realizar una o mas funciones (por ejemplo, limpieza), si lo desea.
Ademas, se da a P el valor 1, lo que indica que se ha presentado la WTI, PASO 814. Tambien se da el valor 1 al bit T, utilizando una funcion de actualizacion enclavada (puede ocurrir que ya valga 1 si originalmente se utilizo una peticion de intervencion), PASO 816. El penodo de gracia en el temporizador de la CPU anfitriona sigue su cuenta atras, con independencia de que se haya presentado la WTI, PASO 818. Despues se sale de este procesamiento, PASO 820. En un ejemplo, la consignacion de haber salido de este proceso indica que la CPU ha completado el procesamiento, corriente en ese momento, de la funcionalidad de interrupcion con margen de advertencia y esta volviendo a otro procesamiento, segun lo dictado por el estado de la CPU en ese momento.
Volviendo a la PREGUNTA 810, si el invitado no esta habilitado para la interrupcion con margen de advertencia, el procesamiento continua en el paso 816. En este caso, el invitado no esta habilitado para la WTI, por lo que esta no se puede presentar al invitado. Sin embargo, se pone en espera el bit T, de manera que se pueda detectar mas tarde, cuando se habilite el invitado para la WTI.
Volviendo a la PREGUNTA 800, si no se trata de una situacion de interrupcion por temporizador de la CPU anfitriona, entonces se reconoce una peticion de intervencion con margen de advertencia (es decir, apropiacion por
5
10
15
20
25
30
35
40
45
50
55
60
el anfitrion). Es dedr, el bit T dentro del campo de peticion de intervencion de la descripcion de estado de invitado vale 1. Por tanto, se efectua una determinacion acerca de si se ha dado valor al indicador G, PREGUNTA 850. Si no se ha dado valor (por ejemplo, es 0), entonces el procesamiento continua en el PASO 804. En este caso, el hecho de que T sea igual a 1 es la razon inicial para comenzar el proceso WTI. Sin embargo, si se ha dado valor al bit G, entonces se efectua una determinacion acerca de si se ha dado valor a P, PREGUNTA 852. Si no se ha dado valor a P (por ejemplo, es igual a 0), entonces el procesamiento continua en el PASO 810, con un intento de presentar la WTI. Si, por el contrario, se ha dado valor a P (por ejemplo, no es igual a 0), entonces el descubrimiento de que T es igual a 1 despues de que haya comenzado el penodo de gracia de la funcionalidad de margen de advertencia no tiene efecto alguno, y se abandona el proceso, PASO 854.
Volviendo a la PREGUNTA 802, si se ha dado valor a G (por ejemplo, es igual a 1), la CPU invitada ya ha estado funcionando dentro del penodo de gracia, y la expiracion del temporizador de la CPU anfitriona indica que el penodo de gracia ha expirado. Asf pues, se habfa iniciado previamente un ciclo de WTI y el penodo de gracia ha expirado. Por lo tanto, haciendo referencia a la Figura 8B, el valor original del temporizador de la CPU anfitriona guardado anteriormente ha disminuido en la cantidad de tiempo realmente utilizado durante el penodo de gracia, y despues se carga en el temporizador de la CPU anfitriona, PASO 860. Se abandona el modo de ejecucion de interpretativa, PASO 862, y se presenta al anfitrion la interrupcion externa por temporizador de la CPU anfitriona, PASO 864 (esto es una forma de salida involuntaria de invitado).
Ademas de lo anterior, se puede iniciar el analisis de la WTI a traves de ciertas instrucciones que pueden habilitar la CPU para la WTI. Por ejemplo, haciendo referencia a la Figura 8C, en principio una serie de instrucciones que puedan habilitar la CPU para la WTI, entre ellas, por ejemplo, una instruccion "Load PSW (Extended)" (cargar pSw (extendida)) y una instruccion "Store Then" (almacenar despues) o "System Mask" (mascara de sistema) que pueden dar valor al bit designado de la PSW, y "Load Control" (control de carga) que pueden dar valor al bit seleccionado del registro de control, realizar seguimiento, como se describe en la presente memoria. Por ejemplo, una instruccion que puede habilitar para interrupciones comprueba el bit T en lo referente a un potencial procesamiento con margen de advertencia. Si T = 0, PREGUNTA 880, entonces no existe WTI, y se abandona este proceso, PASO 884. Sin embargo, si T = 1, entonces el proceso continua a la PREGUNTA 822.
En la PREGUNTA 882, se efectua una determinacion de si se ha dado valor a P (por ejemplo, igual a 1). Si es asf, entonces se abandona este proceso, PASO 884, ya que anteriormente se habfa detectado la habilitacion. Sin embargo, si no se ha dado valor a P (por ejemplo, no es igual a 1), entonces se efectua una determinacion adicional en cuanto a si se ha dado valor a G (por ejemplo, igual a 1), PREGUNTA 886. Si no es asf, entonces el procesamiento continua al PASO 804 (Figura 8A). Si, por el contrario, se ha dado valor a G (por ejemplo, igual a 1), PASO 886 (Figura 8C), entonces el procesamiento continua a la PREGUNTA 810 de la Figura 8A, pAsO 888, y se abandona el procesamiento.
Se describen, con referencia a la Figura 9, detalles adicionales del procesamiento de la interrupcion con margen de advertencia. Cuando el programa invitado recibe la interrupcion con margen de advertencia, realiza todas las funciones (por ejemplo, funciones del sistema operativo (S.O.)) que deba realizar para, por ejemplo, hacer re-despachable a la unidad de trabajo despachable, PASO 900. Por ejemplo, el invitado detiene la unidad despachable en un punto determinado, guarda su estado y, o bien la traslada a otra CPU invitada o bien permite que sea trasladada al proporcionar informacion de estado, etc. El sistema operativo invitado indica que ha terminado mediante la emision de una senal de "limpieza completa dentro del margen de advertencia" al programa anfitrion (es decir, un abandono voluntario), PASO 902. Esta senal puede ser cualquier mecanismo que haga que la operacion invitada renuncie a la porcion de tiempo restante. Sin embargo, debe ser reconocida por el programa anfitrion como la parte de limpieza del protocolo. En un ejemplo, se utiliza una funcion de "limpieza completada" de la instruccion Diagnose.
Si el programa de invitados emite la senal de "limpieza completada" antes de que expire el penodo de gracia, PREGUNTA 904, el programa anfitrion recuerda que la CPU invitada salio a tiempo, PASO 906. Se trata de un abandono voluntario. En la siguiente ocasion en que se arranca la CPU invitada, se indica de vuelta a la CPU invitada la naturaleza de "a tiempo" de la senal, PASO 908. En un ejemplo, se establece una PSW de reanudacion de invitado para indicar un codigo de situacion satisfactoria (por ejemplo, codigo de situacion 0).
Volviendo a la PREGUNTA 904, si, por la razon que sea, el programa invitado tarda demasiado tiempo, el penodo de gracia expira por el hecho de que el temporizador de la CPU anfitriona ha ido reduciendo el penodo de gracia hasta cero, presentando asf a la CPU una situacion de interrupcion externa por temporizador de CPU anfitriona. En este caso, la CPU reconoce que el invitado ya estaba dentro del penodo de gracia y no otorga otro penodo de gracia. En lugar de ello, se detiene la ejecucion del invitado y el control vuelve al programa anfitrion, por recepcion de la interrupcion externa. Un programa anfitrion reconoce que esta conclusion de la CPU invitada es una salida de invitado involuntaria.
En el siguiente arranque de la CPU invitada, el sistema operativo invitado puede emitir entonces una senal de "limpieza completada", aunque ahora ya es demasiado tarde. El programa anfitrion ya no tiene expectativas de aguardar la recepcion de la senal de limpieza completa. Asf, en la siguiente ocasion en que se arranca la CPU invitada, se indica de vuelta a la CPU invitada la naturaleza de "demasiado tarde" de la senal, PASO 912. En un
5
10
15
20
25
30
35
40
45
50
55
ejemplo, se marca la PSW de reanudacion de invitado para que indique una situacion de retraso, que el invitado vera en el siguiente arranque. A la emision de una instruccion Diagnose de "demasiado tarde" se la denomina a veces una instruccion Diagnose "prescrita", ya que anteriormente no consiguio salir dentro del penodo de gracia y luego salio sin motivo.
En un ejemplo, en un nuevo arranque de la CPU invitada, el programa invitado puede comprobar la parte del protocolo relativa a la senal de reanudacion, para ver si la senal habfa sido emitida o no dentro del penodo de gracia. El programa invitado puede utilizar esta informacion para investigar por que causa el mismo incurrio en retraso y realizar mejoras para mejorar las estadfsticas de ser mas puntual en el futuro.
En una realizacion, cuando el invitado se encuentra deshabilitado para todas las interrupciones externas, la supervision la realizan una serie de instrucciones que pueden permitir interrupciones externas. Cuando el invitado esta habilitado para interrupciones externas, se examina la habilitacion para WTI. En este punto, si la WTI esta habilitada y el bit P es 0, se presenta la WTI a la CPU invitada.
Como se ha mencionado mas arriba, en una realizacion se utiliza una funcion Diagnose para indicar que se ha completado la limpieza o para inscribirse en el registro de la funcionalidad de interrupcion con margen de advertencia. En cuanto a la indicacion de limpieza completa, la funcion Diagnose, cuando se emite con un parametro de limpieza y se ejecuta, indica que la CPU emisora ha realizado todo el procesamiento deseado asociado con la recepcion de una interrupcion externa con margen de advertencia. Cuando finaliza la ejecucion, se establece un codigo de situacion que indica si la conclusion se comunico o no dentro del intervalo de tiempo, dependiente del modelo, permitido para la limpieza despues de la interrupcion con margen de advertencia.
En cuanto a la funcion de registro, la funcion Diagnose, cuando se emite con el parametro de registro y se ejecuta, indica que la configuracion de emision entiende la interrupcion con margen de advertencia. Cuando finaliza la ejecucion, se establece un codigo de situacion satisfactoria. El estatus de inscripcion en el registro se borra mediante un reinicio del sistema.
Se describe, con referencia a la Figura 10, una realizacion de un formato de instruccion Diagnose. En una realizacion, una instruccion Diagnose 1000 incluye un codigo operativo 1002 que indica la funcion Diagnose; un primer campo de registro 1004 (Ri); un segundo campo de registro 1006 (R3); un campo de registro general 1008 (B2); y un campo de desplazamiento 1010 (D2). En un ejemplo, se suma el contenido del campo D2 al contenido de registro general B2. No se utiliza el resultado para direccionar datos sino que, en lugar de ello, se utilizan ciertos bits (por ejemplo, los bits 48 a 63) como una extension de codigo de operacion. Cuando la extension de codigo de operacion es un valor predeterminado, se especifica que se ha completado la limpieza dentro del margen de advertencia y se renuncia a una porcion de tiempo.
En un ejemplo, el campo R3 esta sin utilizar y contiene ceros. Ademas, los bits especificados de registro general R1 estan sin utilizar y deben contener ceros, y un bit particular de registro general R1 (por ejemplo, el bit 63) especifica, cuando es cero, que la funcion de limpieza se ha completado y, cuando es 1, la funcion de registro.
En una particion logica que utilice CPU ffsicas compartidas, esta funcion puede mejorar el rendimiento del sistema al permitir que la CPU ffsica en la cual este funcionando la CPU logica sea asignada a otra CPU logica.
Mas alla de la Diagnose, cualquier otra salida de SIE durante el intervalo de gracia de la WTI, cualquiera que sea la causa, restaura de manera similar el valor original del temporizador de la CPU anfitriona disminuido en la cantidad de tiempo gastada en el penodo de gracia.
Se describe con detalle en la presente memoria una funcionalidad de interrupcion con margen de advertencia que proporciona, en una realizacion, un mecanismo mediante el cual se puede presentar una interrupcion externa con margen de advertencia a una CPU de una configuracion con recursos de CPU compartidos, por ejemplo una particion logica. El programa de control puede utilizar la interrupcion externa con margen de advertencia como senal para hacer, a la unidad despachable que se este ejecutando en ese momento, re-despachable sobre una CPU distinta dentro de la configuracion.
En una realizacion, un procesador logico (invitado) que se esta ejecutando en una porcion de tiempo en un procesador ffsico recibe una senal de advertencia que indica un penodo de gracia, por ejemplo, una cantidad de tiempo antes de que el procesador logico sea interrumpido (desasignado del procesador ffsico que puede ser compartido), que permite completar o trasladar a otro procesador logico el trabajo que el procesador logico esta realizando. A modo de ejemplo, se indica a la CPU invitada que su porcion de tiempo ha expirado y que debe dar prioridad a la unidad de trabajo despachable (DU, por sus siglas en ingles) corriente en ese momento para hacerla re-despachable en otra CPU invitada. En un ejemplo, la senal de advertencia es una interrupcion que tiene un codigo de interrupcion que indica que se trata de una WTI. En un ejemplo adicional, el codigo de interrupcion incluye informacion sobre la cantidad de tiempo u otro plazo concedido al penodo de gracia.
En una realizacion, la funcionalidad de interrupcion con margen de advertencia se puede utilizar tanto en entornos no virtuales como en entornos virtuales, en los que un programa y/o procesador comparte recursos (por ejemplo, recursos de CPU u otros recursos) con uno o varios programas y/o procesadores distintos.
5
10
15
20
25
30
35
40
45
En una realizacion, en la cual el entorno es un entorno virtual, desde la perspectiva de un invitado:
1. El programa invitado observa la situacion de "instalada" de la funcionalidad de protocolo de interrupcion con margen de advertencia.
2. El programa invitado se inscribe en el registro del protocolo de interrupcion con margen de advertencia.
3. La CPU invitada recibe una notificacion de margen de advertencia, dependiendo de la arquitectura particular (por ejemplo, una indicacion por memoria compartida, una indicacion por dispositivo E/S compartido, una interrupcion).
4. El programa invitado que se ejecuta en la CPU invitada realiza el procesamiento aplicable, conforme a la naturaleza del programa invitado que ha recibido la notificacion (se espera que el procesamiento de la notificacion sea unico para cada sistema operativo).
5. La CPU invitada renuncia al control, conforme a la tecnica voluntaria del protocolo de margen de advertencia protocolo.
6. En el siguiente arranque de la CPU invitada, el programa invitado puede observar la retroalimentacion, conforme al protocolo de margen de advertencia.
Ademas, en una realizacion, desde la perspectiva del anfitrion:
A. El programa anfitrion observa la situacion de "instalada" de la funcionalidad de protocolo de interrupcion con margen de advertencia.
1. El programa anfitrion capta la indicacion de "instalada" de la funcionalidad de protocolo de interrupcion con margen de advertencia.
2. El programa anfitrion recuerda persistentemente el estatus de "instalado" del protocolo de interrupcion con margen de advertencia.
3. El programa anfitrion indica el estatus de "instalado" del protocolo de interrupcion con margen de advertencia a todas las configuraciones con invitados.
4. El programa anfitrion deshabilita el protocolo de margen de advertencia en todas las CPU invitadas no inscritas en el registro.
5. El programa anfitrion se prepara para reconocer una peticion de inscripcion en el registro de margen de advertencia para invitados, procedente de cada configuracion con invitados.
B. El programa anfitrion reconoce una peticion de inscripcion en el registro para margen de advertencia, procedente de un invitado.
1. El programa anfitrion recuerda persistentemente que la configuracion con invitados entiende el protocolo de margen de advertencia.
2. El programa anfitrion habilita al invitado para el protocolo de margen de advertencia.
C. Durante el funcionamiento normal de la CPU invitada X, se utiliza la apropiacion de la CPU invitada X para recuperar la CPU anfitriona X correspondiente.
1. El programa anfitrion de la CPU Y indica la notificacion a la CPU invitada X.
a. La CPU X propaga la notificacion a la CPU invitada X por medio de actualizacion de la ubicacion de memoria compartida, actualizacion de dispositivo E/S compartido o interrupcion a la CPU invitada X, conforme al protocolo de margen de advertencia.
D. La CPU invitada X se detiene, devolviendo el control a la CPU anfitriona X.
1. Si se esta dentro del penodo de gracia, el programa anfitrion de la CPU X observa el abandono voluntario del invitado conforme al protocolo de margen de advertencia y recuerda una retroalimentacion "buena" para el proximo arranque de la CPU invitada X, con independencia de cual sea la CPU anfitriona que pueda estar proveyendo la CPU invitada X en ese momento.
a. Si se esta dentro del penodo de gracia, pero la salida de la CPU invitada X no es conforme al protocolo de margen de advertencia, no se recuerda estatus de retroalimentacion.
2. Si no se esta dentro del penodo de gracia, el programa anfitrion de la CPU X observa el abandono voluntario del invitado conforme al protocolo de margen de advertencia y recuerda una retroalimentacion "mala" para el proximo arranque de la CPU invitada X, con independencia de cual sea la CPU anfitriona que pueda estar proveyendo la
5
10
15
20
25
30
35
40
45
50
55
CPU invitada X en ese momento.
a. Si no se esta dentro de penodo de gracia, pero la salida de la CPU invitada X no es conforme al protocolo de margen de advertencia, no se recuerda estatus de retroalimentacion.
3. El programa anfitrion de la CPU X redirige la CPU X para apropiarse de la asignacion.
E. En el siguiente arranque secuencial de la CPU invitada X, con independencia de cual sea la CPU anfitriona que provea la CPU invitada X, si se recuerda el estatus de retroalimentacion, establecer la indicacion de retroalimentacion, conforme al protocolo de margen de advertencia, antes de arrancar la CPU invitada X.
En una realizacion, un procesador invitado de la configuracion con invitados recibe una interrupcion unica, estando definida esa interrupcion para una arquitectura informatica, y siendo el significado de la interrupcion una interrupcion con margen de advertencia. La interrupcion indica un codigo espedfico que identifica a la interrupcion como una interrupcion con margen de advertencia. La interrupcion implica un intervalo de tiempo relativamente corto, denominado penodo de gracia, que conduce a finalizar la ejecucion de un procesador invitado.
En un ejemplo, durante el penodo de gracia se espera nominalmente que el programa invitado haga re-despachable en otro procesador invitado la unidad despachable de trabajo en ese momento, evitando asf que quede atascada en el procesador invitado en ese momento, a la espera de su siguiente arranque con porcion de tiempo normal desde el anfitrion.
En un ejemplo, el intervalo de tiempo relativamente corto se concede una sola vez por cada arranque del procesador invitado originado por el programa anfitrion. El intervalo de tiempo se concede, por ejemplo, tomandolo del intervalo de tiempo existente dentro del cual se esta ejecutando procesador invitado. Puesto que el intervalo de tiempo concedido se asigna tomandolo de la porcion de tiempo normal restante, no se trata en sf de un prestamo de tiempo, sino que se esta utilizando una cantidad limitada de tiempo tomada del intervalo corriente de tiempo, para asegurar la apropiacion efectiva del procesador invitado en un penodo de tiempo relativamente corto.
En un ejemplo adicional en el cual ha expirado la porcion de tiempo corriente, el intervalo de tiempo se concede como tiempo extra anadido al intervalo de tiempo existente dentro del cual se esta ejecutando el procesador invitado. El programa anfitrion contabiliza el intervalo de tiempo concedido con cargo al siguiente intervalo de tiempo normal secuencial esperado, que sera consumido por el procesador invitado dentro del cual se espera que se continue ejecutando el procesador invitado. Sigue teniendo por objeto asegurar la apropiacion efectiva del procesador invitado en un penodo de tiempo relativamente corto.
En un ejemplo, se puede generar una peticion de interrupcion para un suceso de margen de advertencia con el fin de informar al programa de que se esta acercando el final del intervalo de ejecucion corriente en ese momento, en una CPU compartida. La peticion de interrupcion es un tipo de situacion pendiente que se genera cuando se inscribe la configuracion en el registro y se la habilita para la funcionalidad de interrupcion con margen de advertencia.
El procesamiento cooperativo entre los programas (por ejemplo, anfitrion e invitado) optimiza la distribucion de recursos (por ejemplo, la CPU) entre los programas (por ejemplo, los sistemas operativos invitados). Por ejemplo, uno o varios aspectos proporcionan un mejor tiempo de respuesta con la misma utilizacion de CPU. Ademas, se libera la serializacion del sistema antes de que quede sin despachar por el hipervisor.
En una realizacion adicional, se pueden utilizar uno o varios aspectos de la invencion con peticiones de un sistema operativo para permitir que un hilo de ejecucion individual continue, a fin de mejorar el tiempo transcurrido de trabajo con sensibilidad temporal. Es decir, un hilo puede solicitar tiempo adicional, o puede concedersele, para realizar una funcion.
Como un experto en la tecnica apreciara, uno o varios aspectos de la presente invencion pueden ponerse en practica en forma de un sistema, metodo o producto de programa informatico. En consecuencia, uno o varios aspectos de la presente invencion pueden tomar la forma de una realizacion completamente en hardware, una realizacion totalmente en software (incluidos firmware, software residente, microcodigo, etc.) o una realizacion que combine software y hardware, aspectos todos a los que se puede hacer referencia en la presente memoria, de manera general, como "circuito", "modulo" o "sistema". Ademas, uno o varios aspectos de la presente invencion pueden tomar la forma de un producto de programa informatico incorporado en uno o varios medios legibles por ordenador que tengan incorporado en los mismos codigo de programa legible por ordenador.
Se puede utilizar cualquier combinacion de uno o varios medios legibles por ordenador. El medio legible por ordenador puede ser un medio de almacenamiento legible por ordenador. Un medio de almacenamiento legible por ordenador puede ser, por ejemplo, pero sin limitacion, un sistema, aparato o dispositivo electronico, magnetico, optico, electromagnetico, infrarrojo o semiconductor, o cualquier combinacion adecuada de los anteriores. Los ejemplos mas espedficos (lista que no es exhaustiva) de medio de almacenamiento legible por ordenador incluyen los siguientes: una conexion electrica que tiene uno o mas cables, un disquete portatil de ordenador, un disco duro, una memoria de acceso aleatorio (RAM, por sus siglas en ingles), una memoria de solo lectura (ROM), una memoria de solo lectura, programable y borrable (EPROM o memoria flash), una fibra optica, una memoria de solo lectura en
5
10
15
20
25
30
35
40
45
50
55
disco compacto portatil (CD-ROM), un dispositivo de almacenamiento optico, un dispositivo de almacenamiento magnetico, o cualquier combinacion adecuada de lo anterior. En el contexto de la presente memoria, un medio de almacenamiento legible por ordenador puede ser cualquier medio tangible que puede contener o almacenar un programa para uso por, o en conexion con, un sistema, aparato o dispositivo de ejecucion de instrucciones.
Haciendo referencia a la Figura 11, en un ejemplo un producto 1100 de programa informatico incluye, por ejemplo, uno o varios medios 1102 de almacenamiento legibles por ordenador, no transitorios, para almacenar en los mismos medios o logica 1104 de codigo de programa legible, con el fin de proporcionar y facilitar uno o varios aspectos de la presente invencion.
Utilizando un medio apropiado que incluye, pero sin limitacion, la tecnologfa inalambrica, cableada, por cable de fibra optica, por RF, etc., o cualquier combinacion adecuada de lo anterior, se puede transmitir codigo de programa incorporado en un medio legible por ordenador.
El codigo de programa informatico para llevar a cabo operaciones con respecto a uno o varios aspectos de la presente invencion puede estar escrito en cualquier combinacion de uno o varios lenguajes de programacion, entre ellos un lenguaje de programacion orientado a objetos, por ejemplo Java, Smalltalk, C++ o similares, y lenguajes de programacion procedimentales convencionales, tales como el lenguaje de programacion "C", ensamblador o lenguajes de programacion similares. El codigo de programa se puede ejecutar en su totalidad en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente en un equipo remoto, o bien en su totalidad en el ordenador o servidor remoto. En este ultimo escenario, el ordenador remoto puede estar conectado al ordenador del usuario a traves de cualquier tipo de red, entre ellas una red de area local (LAN) o una red de area extensa (WAN), o bien se puede efectuar una conexion a un ordenador externo (por ejemplo, a traves de la Internet utilizando un proveedor de servicios de Internet).
En la presente memoria se describen uno o varios aspectos de la presente invencion haciendo referencia a ilustraciones de diagrama de flujo y/o diagramas de bloques de metodos, aparatos (sistemas) y productos de programa informatico segun realizaciones de la invencion. Se entendera que cada uno de los bloques de las ilustraciones de diagramas de flujo y/o diagramas de bloques, y las combinaciones de bloques en las ilustraciones de diagramas de flujo y/o diagramas de bloques, puede ser implementado mediante instrucciones de programa informatico. Se pueden proporcionar estas instrucciones de programa informatico a un procesador de un ordenador de uso general, un ordenador de proposito especial u otro aparato de procesamiento de datos programable para producir una maquina, de manera que las instrucciones que se ejecutan a traves del procesador del ordenador u otro aparato de procesamiento de datos programable crean medios para implementar las funciones o acciones especificadas en el bloque o los bloques del diagrama de flujo y/o del diagrama de bloques.
Estas instrucciones de programa informatico tambien se pueden almacenar en un medio legible por ordenador que puede dirigir un ordenador, otro aparato de procesamiento de datos programable, u otros dispositivos, para que funcionen de una manera particular, de manera que las instrucciones almacenadas en el medio legible por ordenador produzcan un artfculo de fabricacion que incluya instrucciones que implementan la funcion o la accion especificadas en el bloque o los bloques del diagrama de flujo y/o del diagrama de bloques.
Las instrucciones de programa informatico tambien pueden estar cargadas en un ordenador, otro aparato de procesamiento de datos programable, u otros dispositivos, para hacer que una serie de pasos operativos que han de realizarse en el ordenador, otro aparato programable u otros dispositivos, produzcan un proceso implementado por ordenador de manera que las instrucciones que se ejecutan en el ordenador u otro aparato programable proporcionen procesos para implementar las funciones o acciones especificadas en el bloque o los bloques del diagrama de flujo y/o del diagrama de bloques.
Los diagramas de flujo y de bloques de las Figuras ilustran la arquitectura, operatividad y funcionamiento de posibles implementaciones de sistemas, metodos y productos de programa informatico segun diversas realizaciones de uno o varios aspectos de la presente invencion. En este sentido, cada bloque de los diagramas de flujo o de bloques puede representar un modulo, segmento o porcion de codigo, que comprenda una o varias instrucciones ejecutables para la implementacion de la funcion o funciones logicas especificadas. Tambien hay que senalar que, en algunas implementaciones alternativas, las funciones escritas en el bloque pueden producirse fuera del orden escrito en las Figuras. Por ejemplo, dos bloques mostrados en sucesion pueden ser ejecutados, de hecho, de manera sustancialmente simultanea, o bien a veces se pueden ejecutar los bloques en orden inverso, dependiendo de la operatividad en cuestion. Tambien se senalara que cada bloque de la ilustracion de diagrama de bloques y/o diagrama de flujo, y las combinaciones de bloques en la ilustracion de diagrama de bloques y/o diagrama de flujo, puede ser implementado por sistemas basados en hardware de proposito especial que realicen las funciones o acciones especificadas, o por combinaciones de hardware de proposito especial e instrucciones informaticas.
Ademas de lo anterior, un proveedor de servicios que ofrezca gestion de entornos de cliente puede proporcionar, ofrecer, desplegar, administrar, atender, etc., uno o varios aspectos de la presente invencion. Por ejemplo, el proveedor de servicio puede crear, mantener, dar servicio, etc. a codigo de ordenador y/a o una infraestructura informatica que lleva a cabo uno o varios aspectos de la presente invencion para uno o varios clientes. A cambio, el
5
10
15
20
25
30
35
40
45
50
55
proveedor de servicios puede recibir pago por parte del cliente en virtud de un contrato de abono y/o segun tarifa, a modo de ejemplos. De manera adicional o como alternativa, el proveedor de servicios puede recibir pago por la venta de contenido publicitario a uno o varios terceros.
En un aspecto de la presente invencion, se puede desplegar una aplicacion para llevar a cabo uno o varios aspectos de la presente invencion. A modo de ejemplo, el despliegue de una aplicacion comprende proporcionar infraestructura informatica que se pueda hacer funcionar para llevar a cabo uno o varios aspectos de la presente invencion.
Como aspecto adicional de la presente invencion, se puede desplegar una infraestructura informatica que comprenda la integracion de codigo legible por ordenador en un sistema informatico, en donde el codigo en combinacion con el sistema informatico es capaz de llevar a cabo uno o varios aspectos de la presente invencion.
Como otro aspecto adicional mas de la presente invencion, se puede proporcionar un procedimiento para integrar infraestructura informatica, que comprende integrar codigo legible por ordenador en un sistema informatico. El sistema informatico comprende un medio legible por ordenador, en el cual el medio informatico comprende uno o varios aspectos de la presente invencion. El codigo, en combinacion con el sistema informatico, es capaz de llevar a cabo uno o varios aspectos de la presente invencion.
Aunque se han descrito en lo que antecede diversas realizaciones, estas constituyen solamente ejemplos. Por ejemplo, entornos informaticos de otras arquitecturas pueden incorporar y utilizar uno o varios aspectos de la presente invencion. Ademas, el penodo de gracia puede ser distinto de una cantidad de tiempo, por ejemplo un numero de instrucciones o ciclos, o cualquier otro valor cuantificable. Se pueden efectuar muchos cambios y/o adiciones sin salir del alcance de la presente invencion.
Ademas, otros tipos de entornos informaticos pueden beneficiarse de uno o varios aspectos de la presente invencion. A modo de ejemplo, se puede utilizar un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar de codigo de programa, que incluya al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a traves de un bus de sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecucion real del codigo de programa, almacenamiento masivo, y memoria cache que proporcione almacenamiento temporal de al menos cierto codigo de programa con el fin de reducir el numero de veces que, durante la ejecucion, deba recuperarse codigo desde almacenamiento masivo.
Se pueden acoplar al sistema, ya sea directamente o a traves de controladores de E/S intermedios, dispositivos de entrada/salida (E/S) que incluyen, pero sin limitacion, teclados, pantallas de visualizacion, dispositivos senaladores, DASD, cinta, CD, DVD, unidades extrafbles y otros medios de memoria, etc.). Tambien se pueden acoplar al sistema adaptadores de red para permitir que el sistema de procesamiento de datos se acople a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a traves de redes privadas o publicas intermedias. Modems, modems de cable, y tarjetas Ethernet son solo algunos de los tipos de adaptadores de red disponibles.
Se describen a continuacion otros ejemplos de entornos informaticos que pueden incorporar y/o utilizar uno o varios aspectos de la presente invencion.
Haciendo referencia a la Figura 12, se delinean componentes representativos de un sistema informatico anfitrion 5000 que implementa uno o varios aspectos de la presente invencion. El ordenador anfitrion representativo 5000 comprende una o varias CPU 5001 en comunicacion con la memoria del ordenador (es decir, el almacenamiento central) 5002, asf como interfaces de E/S hacia dispositivos 5011 de medios de almacenamiento y redes 5010 para comunicar con otros ordenadores o redes SAN, y similares. La CPU 5001 es compatible con una arquitectura que tiene un conjunto de instrucciones dotadas de arquitectura y operatividad dotada de arquitectura. La CPU 5001 puede poseer traduccion dinamica de direcciones (DAT, por sus siglas en ingles) 5003 para transformar direcciones de programa (direcciones virtuales) en direcciones reales de memoria. Una DAT incluye tipicamente un tampon de traduccion lateral (TLB) 5007 para almacenar en memoria cache traducciones, de modo que el acceso posterior al bloque 5002 de memoria de ordenador no origine el retraso de la traduccion de direcciones. Se emplea tipicamente una memoria cache 5009 entre la memoria 5002 de ordenador y el procesador 5001. La memoria cache 5009 puede ser jerarquica, con una gran memoria cache disponible para mas de una CPU y memorias cache mas pequenas, mas rapidas (de nivel inferior) entre la memoria cache grande y cada CPU. En algunas implementaciones, las memorias cache de nivel inferior se dividen, a fin de proporcionar caches de bajo nivel separadas para extraer instrucciones y acceder a datos. En una realizacion, una unidad 5004 de extraccion de instrucciones extrae de la memoria 5002, a traves de una memoria cache 5009, una instruccion. En una unidad 5006 de descodificacion de instrucciones se descodifica la instruccion y se despacha (en algunas realizaciones, junto con otras instrucciones) a la unidad o unidades 5008 de ejecucion de instrucciones. Tfpicamente se emplean varias unidades de ejecucion 5008, por ejemplo una unidad de ejecucion aritmetica, una unidad de ejecucion de coma flotante y una unidad de ejecucion de instruccion de bifurcacion. La unidad de ejecucion ejecuta la instruccion, accediendo a operandos de registros de instruccion especificados o a la memoria, segun se requiera. Si se precisa acceder a un operando (cargado o almacenado) desde la memoria 5002, normalmente una unidad 5005 de carga/almacenamiento maneja el acceso bajo el control de la instruccion que se esta ejecutando. Las instrucciones pueden ser ejecutadas en
5
10
15
20
25
30
35
40
45
50
55
60
circuitos de hardware o en microcodigo interno (firmware) o mediante una combinacion de ambas cosas.
Como se ha indicado, un sistema informatico incluye informacion en el almacenamiento local (o principal), asf como direccionamiento, proteccion y grabacion de referencia y de 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 que un tipo de direccion se traduce a otro tipo de direccion. Algunos de los almacenamientos principales incluyen ubicaciones de almacenamiento asignadas permanentemente. El almacenamiento principal proporciona al sistema el almacenamiento rapido de datos, con acceso directamente direccionable. Se deben cargar en el almacenamiento principal (desde dispositivos de entrada) tanto los datos como los programas, antes de que puedan ser procesados.
El almacenamiento principal puede incluir uno o varios almacenamientos intermedios mas pequenos, con acceso mas rapido, denominados a veces memorias cache. Tfpicamente, una memoria cache esta asociada ffsicamente con una CPU o un procesador de E/S. Los efectos, salvo sobre el rendimiento, de la construccion ffsica y del uso de distintos medios de almacenamiento no son observables generalmente por el programa.
Se pueden mantener memorias caches separadas para instrucciones y operandos de datos. La informacion dentro de una memoria cache se mantiene en bytes contiguos dentro de una frontera integral denominada bloque de cache o lmea de cache (o lmea, para abreviar). Un modelo puede proporcionar una instruccion EXTRACT CACHE ATRIBUTE (extraer atributo de cache) que devuelve el tamano en bytes de una lmea de cache. Un modelo puede proporcionar tambien instrucciones PREFETCH DATA (pre-extraer datos) y PREFETCH DATA RELATIVE LONG (pre-extraer datos relativo largo), que realizan la pre-extraccion de almacenamiento a la memoria cache de datos o de instrucciones o bien la liberacion de los datos desde la memoria cache.
El almacenamiento se visualiza como una larga cadena horizontal de bits. Para la mayona de las operaciones, los accesos al almacenamiento discurren en una secuencia de izquierda a derecha. La cadena de bits se subdivide en unidades de ocho bits. A una unidad de ocho bits se la denomina byte, que es el elemento basico con el que se construyen todos los formatos de informacion. Cada ubicacion de byte en el almacenamiento esta identificada por un numero entero no negativo unico, que es la direccion de esa ubicacion de byte o, llanamente, la direccion de byte. Las ubicaciones de byte adyacentes tienen direcciones consecutivas, comenzando por 0 a la izquierda y continuando en una secuencia de izquierda a derecha. Las direcciones son numeros enteros binarios sin signo y tienen 24, 31 o 64 bits.
La informacion entre el almacenamiento y una CPU o un subsistema de canal se transmite a razon de un byte, o un grupo de bytes, a la vez. Salvo que se especifique otra cosa, en la z/Architecture®, por ejemplo, a un grupo de bytes del almacenamiento se le asigna una direccion por el byte mas a la izquierda del grupo. El numero de bytes en el grupo, o bien es impffcito, o bien lo especifica expffcitamente la operacion a realizar. Cuando se utiliza en una operacion de la CPU, a un grupo de bytes se le denomina "campo". Dentro de cada grupo de bytes en la z/Architecture®, por ejemplo, los bits se numeran en una secuencia de izquierda a derecha. En la z/Architecture®, a los bits mas a la izquierda se les denomina a veces bits "de orden alto" y a los bits a la derecha se les denomina bits "de orden bajo". Sin embargo, los numeros de bit no son direcciones de almacenamiento. Solamente se pueden asignar direcciones a los bytes. Para operar sobre bits individuales de un byte en el almacenamiento, se accede a todo el byte. Los bits de un byte estan numerados de 0 a 7, de izquierda a derecha (por ejemplo, en la z/Architecture®). A los bits de una direccion se les puede numerar 8-31 o 40-63 en direcciones de 24 bits, o 1-31 o 33-63 en direcciones de 31 bits; se numeran 0-63 en direcciones de 64 bits. Dentro de cualquier otro formato de longitud fija de multiples bytes, los bits que componen el formato son numerados consecutivamente comenzando por 0. Con el objeto de detectar errores, y en particular para corregirlos, se pueden transmitir uno o mas bits de comprobacion con cada byte o con un grupo de bytes. Dichos bits de control son generados automaticamente por la maquina y no pueden ser controlados directamente por el programa. Las capacidades de almacenamiento se expresan en numero de bytes. Cuando la longitud de un campo de operando de almacenamiento esta impffcita en el codigo de operacion de una instruccion, se dice que el campo tiene una longitud fija, que puede ser uno, dos, cuatro, ocho o dieciseis bytes. Pueden estar impffcitos campos mas grandes para algunas instrucciones. Cuando la longitud de un campo de operando de almacenamiento no esta impffcita, sino que se indica expffcitamente, se dice que el campo tiene una longitud variable. La longitud de los operandos de longitud variable puede variar en incrementos de un byte (o, en el caso de algunas instrucciones, en multiplos de dos bytes u otros multiplos). Cuando se almacena informacion, solamente se reemplaza el contenido de aquellas ubicaciones de byte que estan incluidas en el campo especificado, aunque el ancho de la ruta ffsica al almacenamiento puede ser mayor que la longitud del campo que se esta almacenando.
Ciertas unidades de informacion deben estar en el almacenamiento dentro una frontera integral. Se dice que una frontera es integral para una unidad de informacion cuando su direccion de almacenamiento es un multiplo de la longitud de la unidad en bytes. Se dan nombres especiales a los campos de 2, 4, 8 y 16 bytes en una frontera integral. Una media palabra es un grupo de dos bytes consecutivos en una frontera de dos bytes y es el elemento basico de construccion de instrucciones. Una palabra es un grupo de cuatro bytes consecutivos en una frontera de cuatro bytes. Una palabra doble es un grupo de ocho bytes consecutivos en una frontera de ocho bytes. Una palabra cuadruple es un grupo de 16 bytes consecutivos en una frontera de 16 bytes. Cuando las direcciones de almacenamiento designan medias palabras, palabras, palabras dobles, y palabras cuadruples, la representacion
5
10
15
20
25
30
35
40
45
50
55
60
binaria de la direccion contiene, respectivamente, uno, dos, tres o cuatro bits cero en el extremo derecho. Las instrucciones deben encontrarse en fronteras integrales de dos bytes. Los operandos de almacenamiento de la mayona de las instrucciones no tienen requisitos de alineacion de frontera.
En dispositivos que implementan memorias cache separadas para operandos de instrucciones y operandos de datos, se puede sufrir un retraso significativo si el programa almacena en una lmea de cache instrucciones que son posteriormente extrafdas, con independencia de si el almacenamiento altera las instrucciones que son posteriormente extrafdas.
En una realizacion, la invencion puede ponerse en practica mediante software (a veces denominado codigo interno con licencia, firmware, microcodigo, milicodigo, picocodigo y similares, cualquiera de los cuales sena consistente con uno o varios aspectos de la presente invencion). Haciendo referencia a la Figura 12, el procesador 5001 del sistema anfitrion 5000 puede acceder a codigo de programa de software que realiza uno o varios aspectos de la presente invencion, desde dispositivos 5011 de medios de almacenamiento a largo plazo, tales como una unidad de CD-ROM, una unidad de cinta o un disco duro. El codigo de programa de software puede estar realizado en cualquiera de una diversidad de medios conocidos para su uso con un sistema de procesamiento de datos, tales como un disquete, un disco duro o un CD-ROM. El codigo puede estar distribuido en dichos medios, o bien puede estar distribuido a usuarios desde la memoria 5002 de ordenador o desde el almacenamiento de un sistema informatico, a traves de una red 5010, a otros sistemas informaticos para su uso por usuarios de esos otros sistemas.
El codigo de programa de software incluye un sistema operativo que controla la funcion y la interaccion de los diversos componentes del ordenador y uno o varios programas de aplicacion. Normalmente se transfiere por paginas el codigo de programa desde el dispositivo 5011 de medios de almacenamiento hacia el almacenamiento 5002 de ordenador, que tiene una velocidad relativamente mas alta, donde esta disponible para su procesamiento por el procesador 5001. Las tecnicas y metodos para incorporar el codigo de programa de software en la memoria, sobre medios ffsicos y/o para distribuir software de codigo a traves de redes son bien conocidos y no se discutiran aqrn con mayor detalle. Al codigo del programa, cuando se crea y se almacena en un medio tangible (que incluye, pero sin limitacion, modulos electronicos de memoria (RAM), memoria flash, discos compactos (CD), DVD, cinta magnetica y similares), se le denomina a menudo "producto de programa informatico". Tfpicamente, el medio para producto de programa informatico es legible por un circuito de procesamiento, preferiblemente ubicado en un sistema informatico, para ser ejecutado por el circuito de procesamiento.
La Figura 13 ilustra un sistema representativo de hardware de estacion de trabajo o de servidor, en el cual se pueden poner en practica uno o varios aspectos de la presente invencion. El sistema 5020 de la Figura 13 comprende un sistema informatico de base representativo 5021, por ejemplo un ordenador personal, una estacion de trabajo o un servidor, incluidos dispositivos perifericos opcionales. El sistema informatico de base 5021 incluye uno o varios procesadores 5026 y un bus empleado para conectar y permitir la comunicacion entre los uno o varios procesadores 5026 y los demas componentes del sistema 5021, conforme a tecnicas conocidas. El bus conecta el procesador 5026 a la memoria 5025 y al almacenamiento a largo plazo 5027, que puede incluir una unidad de disco duro (incluidos cualquiera de los soportes magneticos, CD, DVD y memoria flash, por ejemplo) o una unidad de cinta, por ejemplo. El sistema 5021 tambien podna incluir un adaptador de interfaz de usuario, que conecta el microprocesador 5026, a traves del bus, con uno o varios dispositivos de interfaz, tales como un teclado 5024, un raton 5023, una impresora/escaner 5030 y/u otros dispositivos de interfaz, que pueden ser cualquier dispositivo de interfaz de usuario, por ejemplo una pantalla sensible al tacto, una tableta de entrada digitalizada, etc. El bus tambien conecta un dispositivo 5022 de visualizacion, tal como una pantalla LCD o un monitor, al microprocesador 5026 a traves de un adaptador de visualizacion.
El sistema 5021 puede comunicarse con otros ordenadores o redes de ordenadores a traves de un adaptador de red capaz de comunicar 5028 con una red 5029. Son ejemplos de adaptadores de red los canales de comunicacion, el anillo "token ring", Ethernet o modems. Como alternativa, el sistema 5021 puede comunicarse utilizando una interfaz inalambrica, por ejemplo una tarjeta CDPD (siglas inglesas de "datos de paquetes digitales celulares"). El sistema 5021 puede estar asociado con esos otros ordenadores en una red de area local (LAN, por sus siglas en ingles) o una red de area extensa (WAN), o bien el sistema 5021 puede ser un cliente en una disposicion cliente/servidor con otro ordenador, etc. Todas estas configuraciones, asf como los correspondientes hardware y software de comunicaciones, son conocidos en la tecnica.
La Figura 14 ilustra una red 5040 de procesamiento de datos en la que se pueden poner en practica uno o varios aspectos de la presente invencion. La red 5040 de procesamiento de datos puede incluir una pluralidad de redes individuales, tales como una red inalambrica y una red cableada, cada una de las cuales puede incluir una pluralidad de estaciones de trabajo individuales 5041, 5042, 5043, 5044. Ademas, como apreciaran los expertos en la tecnica, se pueden incluir una o varias redes LAN, donde una red LAN puede comprender una pluralidad de estaciones de trabajo inteligentes acopladas a un procesador anfitrion.
Todavfa con referencia a la Figura 14, las redes pueden incluir tambien ordenadores centrales o servidores, tales como un ordenador de pasarela (servidor de cliente 5046) o servidor de aplicaciones (servidor remoto 5048 que puede acceder a un repositorio de datos y al que tambien se puede acceder directamente desde una estacion de
5
10
15
20
25
30
35
40
45
50
55
60
trabajo 5045). Un ordenador de pasarela 5046 sirve como punto de entrada en cada red individual. Se necesita una pasarela cuando se conectan entre sf dos protocolos de red. Preferiblemente, la pasarela 5046 puede estar acoplada a otra red (por ejemplo, la Internet 5047) por medio de un enlace de comunicaciones. La pasarela 5046 tambien puede estar acoplada directamente a una o varias estaciones de trabajo 5041, 5042, 5043, 5044 utilizando un enlace de comunicaciones. El ordenador de pasarela se puede implementar utilizando un servidor IBM eServer™ System z® disponible de International Business Machines Corporation.
Haciendo referencia simultaneamente a las Figuras 13 y 14, el procesador 5026 del sistema 5020 puede acceder, desde medios de almacenamiento a largo plazo 5027, tales como una unidad de CD-ROM o un disco duro, a codigo de programacion de software que puede incorporar uno o varios aspectos de la presente invencion. El codigo de programacion de software puede estar realizado en cualquiera de una diversidad de medios conocidos para su uso con un sistema de procesamiento de datos, tales como un disquete, un disco duro o un CD-ROM. El codigo puede distribuirse en dichos medios, o bien puede distribuirse a los usuarios 5050, 5051 desde la memoria o almacenamiento de un sistema informatico, a traves de una red, a otros sistemas informaticos para su uso por usuarios de esos otros sistemas.
Como alternativa, el codigo de programacion puede estar realizado en la memoria 5025, y accede a el el procesador 5026 utilizando el bus del procesador. Tal codigo de programacion incluye un sistema operativo que controla la funcion y la interaccion de los diversos componentes informaticos y uno o varios programas de aplicacion 5032. Normalmente, el programa de codigo es transferido por paginas desde medios de almacenamiento 5027 a la memoria de alta velocidad 5025, donde esta disponible para su procesamiento por el procesador 5026. Las tecnicas y metodos para realizar el codigo de programacion de software en la memoria, en medios ffsicos, y/o para distribuir codigo de software a traves de redes, son bien conocidos y no se describiran con mayor detalle en la presente memoria. Al codigo de programa, cuando ha sido creado y almacenado en un soporte material (incluidos, pero sin limitacion, modulos electronicos de memoria (RAM), memoria flash, discos compactos (CD), DVD, cinta magnetica y similares, se le denomina a menudo "producto de programa informatico". Tfpicamente, el medio para producto de programa informatico es legible por un circuito de procesamiento, preferiblemente ubicado en un sistema informatico, para ser ejecutado por el circuito de procesamiento.
La memoria cache que esta mas facilmente disponible para el procesador (normalmente mas rapida y mas pequena que otras memorias cache del procesador) es la memoria cache mas baja (L1 o nivel uno), y el almacenamiento principal (memoria principal) es la memoria cache de nivel mas alto (L3 si hay 3 niveles). Frecuentemente se divide la memoria cache de nivel mas bajo en una memoria cache para instrucciones (memoria cache I) que contiene instrucciones de maquina a ejecutar, y una memoria cache para datos (memoria cache D) que contiene operandos de datos.
Haciendo referencia a la Figura 15, se representa una realizacion ilustrativa de procesador para el procesador 5026. Tfpicamente se emplean uno o mas niveles de memoria cache 5053 para configurar bloques de memoria intermedia, al objeto de mejorar el rendimiento del procesador. La memoria cache 5053 es una memoria intermedia de alta velocidad que guarda lmeas de cache de datos de memoria que son susceptibles de ser utilizados. Las lmeas de cache tfpicas tienen 64, 128 o 256 bytes de datos de memoria. Se emplean mas a menudo memorias cache separadas para guardar instrucciones de almacenamiento que para guardar datos. Frecuentemente, diversos algoritmos "fisgones" (en ingles, "snoop"), bien conocidos en la tecnica, proporcionan coherencia de memoria cache (sincronizacion de copias de lmeas en la memoria y en las memorias cache). A menudo, al almacenamiento de la memoria principal 5025 de un sistema de procesador se le denomina memoria cache. En un sistema de procesador que tiene 4 niveles de cache 5053, a la memoria principal 5025 se la denomina a veces memoria cache de nivel 5 (L5), ya que es tfpicamente mas rapida y solo guarda una parte de la memoria no volatil (DASD, cinta, etc.) que esta disponible para un sistema informatico. El almacenamiento principal 5025 "guarda" paginas de datos transferidas como paginas hacia dentro y hacia fuera de la memoria principal 5025 por el sistema operativo.
Un contador de programa (contador de instrucciones) 5061 realiza un seguimiento de la direccion de la instruccion actual que ha de ejecutarse. Un contador de programa en un procesador z/Architecture® tiene 64 bits y se puede truncar a 31 o 24 bits para dar soporte a lfmites de direccionamiento anteriores. Tfpicamente, un contador de programa esta realizado en una PSW (palabra de estado de programa) de un equipo, de manera que persiste durante la conmutacion de contexto. Por tanto, un programa en curso, que tiene un valor de contador de programa, puede ser interrumpido, por ejemplo, por el sistema operativo (conmutacion de contexto desde el entorno de programa hacia el entorno del sistema operativo). La PSW del programa mantiene el valor del contador del programa, mientras el programa no esta activo, y se utiliza el contador de programa (de la PSW) del sistema operativo mientras se esta ejecutando el sistema operativo. Tfpicamente, el contador de programa se incrementa en una cantidad igual al numero de bytes de la instruccion actual en ese momento. Las instrucciones RISC (calculo con conjunto de instrucciones reducidas, por sus siglas en ingles) tienen normalmente longitud fija, mientras que las instrucciones CISC (calculo con conjunto de instrucciones complejas) tienen normalmente 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 resulta modificado tanto por una operacion de conmutacion de contexto como por una operacion de toma de bifurcacion de una instruccion de bifurcacion, por ejemplo. En una operacion de conmutacion de contexto, el valor de contador de programa en ese momento se guarda en la palabra de estado del programa junto con otra informacion de estado acerca del programa en ejecucion (por ejemplo, codigos de situacion), y se
5
10
15
20
25
30
35
40
45
50
55
60
carga un nuevo valor de contador de programa que apunta a una instruccion de un nuevo modulo de programa que debe ejecutarse. Se realiza una operacion de toma de bifurcacion para permitir que el programa tome decisiones o realice bucles dentro del programa mediante la carga del resultado de la instruccion de bifurcacion en el contador de programa 5061.
Tfpicamente, se emplea una unidad 5055 de extraccion de instrucciones para extraer instrucciones por cuenta del procesador 5026. La unidad de extraccion extrae, ya sea "las siguientes instrucciones secuenciales", instrucciones de destino de instrucciones de toma de bifurcacion, o primeras instrucciones de un programa despues de una conmutacion de contexto. Las unidades modernas de extraccion de instrucciones emplean a menudo tecnicas de pre-extraccion para pre-extraer especulativamente instrucciones basandose en la probabilidad de que se puedan utilizar las instrucciones pre-extrafdas. Por ejemplo, una unidad de extraccion puede extraer 16 bytes de instruccion que incluya la siguiente instruccion secuencial y bytes adicionales de mas instrucciones secuenciales.
A continuacion, el procesador 5026 ejecuta las instrucciones extrafdas. En una realizacion, la o las instrucciones extrafdas son transferidas a una unidad 5056 de despacho de la unidad de extraccion. La unidad de despacho descodifica la o las instrucciones y reenvfa la informacion acerca de la instruccion o instrucciones decodificadas a las unidades apropiadas 5057, 5058, 5060. Una unidad 5057 de ejecucion recibira tipicamente informacion acerca de instrucciones aritmeticas descodificados procedente de la unidad 5055 de extraccion de instrucciones, y llevara a cabo operaciones aritmeticas sobre operandos conforme al codigo operativo de la instruccion. Preferiblemente, los operandos se proporcionan a la unidad 5057 de ejecucion, ya sea desde la memoria 5025, desde registros arquitecturados 5059, o desde un campo inmediato de la instruccion que se esta ejecutando. Los resultados de la ejecucion, cuando se almacenan, lo hacen sea en la memoria 5025, en los registros 5059 o en otro hardware de la maquina (por ejemplo, registros de control, registros de PSW y similares).
Un procesador 5026 tiene tipicamente una o varias unidades 5057, 5058, 5060 para ejecutar la funcion de la instruccion. Haciendo referencia a la Figura 16A, una unidad de ejecucion 5057 puede comunicarse con registros generales arquitecturados 5059, una unidad de descodificacion/despacho 5056, una unidad de almacenamiento de carga 5060, y otras unidades 5065 de procesador por medio de la logica de interfaz 5071. Una unidad de ejecucion 5057 puede utilizar varios circuitos de registro 5067, 5068, 5069 para conservar informacion con la cual va a operar la unidad aritmetico-logica (ALU, por sus siglas en ingles) 5066. La ALU realiza operaciones aritmeticas tales como sumar, restar, multiplicar y dividir, asf como funciones logicas tales como AND, OR y OR-exclusiva (XOR), rotar y desplazar. Preferiblemente, la ALU soporta operaciones especializadas que son dependientes del diseno. Otros circuitos pueden proporcionar otras funcionalidades arquitecturadas 5072, entre ellas, por ejemplo, codigos de situacion y logica de apoyo a la recuperacion. Tfpicamente, el resultado de una operacion ALU se conserva en un circuito de registro de salida 5070, que puede remitir el resultado a una diversidad de otras funciones de procesamiento. Existen muchas disposiciones de unidades de procesador, y la presente descripcion solo pretende proporcionar una comprension representativa de una realizacion.
Por ejemplo, una instruccion ADD (sumar) sena ejecutada en una unidad de ejecucion 5057 que tuviese operatividad aritmetica y logica, mientras que una instruccion de coma flotante, por ejemplo, sena ejecutada en una ejecucion de coma flotante, que tiene capacidad especializada de coma flotante. Preferiblemente, una unidad de ejecucion opera sobre operandos identificados por una instruccion, realizando una funcion definida por codigo operativo sobre los operandos. Por ejemplo, una instruccion ADD puede ser ejecutada por una unidad de ejecucion 5057 sobre operandos que se encuentren en dos registros 5059 identificados por campos de registro de la instruccion.
La unidad de ejecucion 5057 realiza la suma aritmetica de dos operandos y almacena el resultado en un tercer operando, donde el tercer operando puede ser un tercer registro o bien uno de los dos registros de origen. La unidad de ejecucion utiliza preferentemente una unidad aritmetico-logica (ALU) 5066 que es capaz de realizar diversas funciones logicas tales como desplazar, rotar, AND, OR y XOR, asf como diversas funciones algebraicas, entre ellas cualquiera de sumar, restar, multiplicar y dividir. Algunas ALU 5066 estan disenadas para operaciones escalares y algunas para coma flotante. Los datos pueden ser de tipo "por el extremo grande" (en ingles, "big endian") (en donde el byte menos significativo esta en la direccion de byte mas alta) o de tipo "por el extremo pequeno" (en ingles, "little endian") (donde el byte menos significativo esta en la direccion de byte mas baja) dependiendo de la arquitectura. La z/Architecture® de IBM es "big endian". Los campos con firma pueden ser signo y magnitud, complemento a 1 o complemento a 2, dependiendo de la arquitectura. Resulta ventajoso un numero de complemento a 2 porque la ALU no necesita disenar una capacidad de resta, ya que tanto un valor negativo como un valor positivo de complemento a 2 solo requiere una adicion dentro de la ALU. Los numeros se describen comunmente en forma abreviada, en donde campo de 12 bits define una direccion de un bloque de 4.096 bytes y se describe comunmente como un bloque de 4 Kbytes (kilobytes), por ejemplo.
Haciendo referencia a la Figura 16B, tfpicamente se envfa la informacion de instruccion de bifurcacion para ejecutar una instruccion de bifurcacion a una unidad de bifurcacion 5058 que a menudo emplea un algoritmo de prediccion de bifurcaciones, por ejemplo una tabla 5082 de historial de bifurcaciones, para predecir el resultado de la bifurcacion antes de que se hayan completado otras operaciones condicionales. Se extraera el objetivo de la instruccion de bifurcacion actual en ese momento y se ejecutara especulativamente antes de que se hayan completado las operaciones condicionales. Cuando se completan las operaciones condicionales, o bien se completan las
5
10
15
20
25
30
35
40
45
50
55
60
instrucciones de bifurcacion ejecutadas especulativamente, o bien se descartan sobre la base de las condiciones de la operacion condicional y el resultado especulado. Una instruccion de bifurcacion ffpica puede probar codigos de situacion y bifurcar a una direccion de destino si los codigos de situacion cumplen el requisito de bifurcacion de la instruccion de bifurcacion, se puede calcular una direccion de destino sobre la base de diversos numeros, entre ellos los que se encuentran en los campos de registro o un campo immediate de la instruccion, por ejemplo. La unidad de bifurcacion 5058 puede emplear una ALU 5074 que tenga una pluralidad de circuitos de registro de entrada 5075, 5076, 5077 y un circuito de registro de salida 5080. La unidad de bifurcacion 5058 puede comunicarse con registros generales 5059, la unidad de despacho de descodificacion 5056 u otros circuitos 5073, por ejemplo.
La ejecucion de un grupo de instrucciones puede verse interrumpida por diversas razones, entre ellas una conmutacion de contexto iniciada por un sistema operativo, una excepcion de programa o un error que provoca una conmutacion de contexto, una senal de interrupcion E/S que provoca una conmutacion de contexto o la actividad de multiples hilos de una pluralidad de programas (en un entorno de multiples hilos), por ejemplo. Preferiblemente, una accion de conmutacion de contexto guarda informacion de estado acerca de un programa que se esta ejecutando en ese momento y luego carga informacion de estado acerca de otro programa que se invoca. La informacion de estado se puede guardar en los registros de hardware o en la memoria, por ejemplo. Preferiblemente, la informacion de estado comprende un valor de contador de programa que apunta a una siguiente instruccion a ejecutar, codigos de situacion, informacion de traduccion de memoria y contenido de registros arquitecturados. Una actividad de conmutacion de contexto la pueden ejercer circuitos de hardware, programas de aplicacion, programas de sistema operativo o codigo de firmware (microcodigo, picocodigo o codigo interno bajo licencia (LIC)), solos o en combinacion.
Un procesador accede a operandos en funcion de metodos definidos por instruccion. La instruccion puede proporcionar un operando inmediato utilizando el valor de una parte de la instruccion, puede proporcionar uno o varios campos de registro que apunten explteitamente, ya sea a registros de proposito general o a registros de proposito especial (registros de coma flotante, por ejemplo). La instruccion puede utilizar como operandos registros implteitos identificados por un campo de codigo operativo. La instruccion puede utilizar como operandos posiciones de memoria. Una ubicacion de memoria de un operando la puede proporcionar un registro, un campo inmediato o una combinacion de registros y campo inmediato, como lo ilustra la funcionalidad de desplazamiento largo de la z/Architecture®, en donde la instruccion define un registro de base, un registro de mdice y un campo inmediato (campo de desplazamiento) que se suman para proporcionar la direccion del operando en la memoria, por ejemplo. Localizacion en la presente memoria implica ffpicamente una ubicacion en la memoria principal (almacenamiento principal), salvo que se indique otra cosa.
Haciendo referencia a la Figura 16C, un procesador accede al almacenamiento utilizando una unidad de carga/almacenamiento 5060. La unidad de carga/almacenamiento 5060 puede llevar a cabo una operacion de carga obteniendo la direccion del operando de destino en la memoria 5053 y cargando el operando en un registro 5059 u otra ubicacion 5053 de memoria, o bien puede llevar a cabo una operacion de almacenamiento obteniendo la direccion del operando de destino en la memoria 5053 y almacenando datos obtenidos de un registro 5059 u otra ubicacion 5053 de memoria en la ubicacion del operando de destino en la memoria 5053. La unidad de carga/almacenamiento 5060 puede ser especulativa, y puede acceder a la memoria en una secuencia que no sigue el orden en cuanto a la secuencia de instrucciones, pero la unidad de carga/almacenamiento 5060 debe mantener frente a los programas la apariencia de que las instrucciones se ejecutan en orden. Una unidad de carga/almacenamiento 5060 puede comunicar con registros generales 5059, la unidad de descodificacion/despacho 5056, la interfaz 5053 de memoria cache/memoria, u otros elementos 5083, y puede comprender diversos circuitos de registro, unidades ALU 5085 y logica de control 5090 para calcular direcciones de almacenamiento y para proporcionar secuenciacion de tubena con el fin de mantener las operaciones en orden. Algunas operaciones pueden no seguir el orden, pero la unidad de carga/almacenamiento proporciona una funcionalidad para hacer que el resultado de las operaciones aparente para el programa que se han realizado en orden, como es bien conocido en la tecnica.
Preferiblemente, a las direcciones que "ve" un programa de aplicacion se las denomina con frecuencia direcciones virtuales. A las direcciones virtuales se las denomina a veces "direcciones logicas" y "direcciones efectivas". Estas direcciones virtuales son virtuales porque son redirigidas a la ubicacion ffsica de memoria por alguna de diversas tecnologfas de traduccion dinamica de direcciones (DAT), entre ellas, pero sin limitacion, simplemente anadiendo como prefijo a una direccion virtual un valor de desplazamiento, traduciendo la direccion virtual a traves de una o varias tablas de traduccion, en donde las tablas de traduccion comprenden preferiblemente al menos una tabla de segmentos y una tabla de paginas, solas o en combinacion, en donde, preferiblemente, la tabla de segmentos tiene un senalador que apunta a la tabla de paginas. En la z/Architecture®, se proporciona una jerarqrna de traduccion, que incluye una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos y una tabla de pagina opcional. El rendimiento de la traduccion de direcciones se mejora frecuentemente mediante la utilizacion de una memoria intermedia de traduccion lateral (TLB) que comprende el cartografiado de entradas desde una direccion virtual a una ubicacion de memoria ffsica asociada. Las entradas se crean cuando la DAT traduce una direccion virtual utilizando las tablas de traduccion. El uso posterior de la direccion virtual puede utilizar despues la entrada de la rapida TLB en lugar de los lentos accesos a las tablas de traduccion secuencial. El contenido de la TLB puede ser administrado por una diversidad de algoritmos de sustitucion, incluido el LRU ("menos recientemente utilizado", en sus siglas inglesas).
5
10
15
20
25
30
35
40
45
50
55
60
En caso de que el procesador sea un procesador de un sistema multiprocesador, cada procesador tiene la responsabilidad de mantener enclavados por coherencia los recursos compartidos, tales como e/s, memorias cache, memorias TLB y memoria. Por lo general, se utilizaran tecnolog^as "fisgonas" para mantener la coherencia de la memoria cache. En un entorno fisgon, se puede marcar cada lmea de cache para que este, o bien en un estado compartido, en un estado exclusivo, en un estado modificado o en un estado invalido, y similares, con el fin de facilitar el intercambio.
Las unidades de E/S 5054 (Figura 15) proporcionan al procesador medios para conectarse a dispositivos perifericos, entre ellos cinta, disco, impresoras, pantallas de visualizacion y redes, por ejemplo. Con frecuencia, controladores de software presentan las unidades de E/S al programa informatico. En ordenadores centrales, tales 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 se ocupan de las comunicaciones entre el sistema operativo y los dispositivos perifericos.
Ademas, otros tipos de entornos informaticos se pueden beneficiar de uno o varios aspectos de la presente invencion. A modo de ejemplo, tal como se ha mencionado en la presente memoria, un entorno puede incluir un emulador (por ejemplo, software u otros mecanismos de emulacion), en donde se emula una arquitectura particular (incluidas, por ejemplo, la ejecucion de instrucciones, funciones arquitecturadas, tales como traduccion de direcciones, y registros arquitecturados) o un subconjunto de los mismos (por ejemplo, en un sistema informatico nativo que tiene un procesador y memoria). En un entorno semejante, una o mas funciones de emulacion del emulador pueden implementar uno o varios aspectos de la presente invencion, aunque un ordenador que ejecute el emulador pueda tener una arquitectura distinta de las capacidades que se emulan. A modo de ejemplo, en modo de emulacion se descodifica la instruccion u operacion espedfica que se esta emulando, y se construye una funcion de emulacion adecuada para implementar la instruccion u operacion individuales.
En un entorno de emulacion, un ordenador anfitrion incluye, por ejemplo, una memoria para almacenar instrucciones y datos; una unidad de extraccion de instrucciones para extraer instrucciones de la memoria y, opcionalmente, proporcionar almacenamiento intermedio local para la instruccion extrafda; una unidad de descodificacion de instrucciones para recibir las instrucciones extrafdas y para determinar el tipo de instrucciones que han sido extrafdas; y una unidad de ejecucion de instrucciones para ejecutar las instrucciones. La ejecucion puede incluir cargar datos en un registro desde la memoria; almacenar datos de vuelta a la memoria desde un registro; o realizar algun tipo de operacion aritmetica o logica, segun determine la unidad de descodificacion. En un ejemplo, cada unidad se implementa en software. Por ejemplo, las operaciones que las unidades llevan a cabo se implementan como una o varias subrutinas dentro del software del emulador.
Mas particularmente, en un ordenador central, las instrucciones de maquina arquitecturadas son utilizadas por los programadores, normalmente hoy en dfa programadores "C", a menudo por medio de una aplicacion compiladora. Estas instrucciones almacenadas en el medio de almacenamiento pueden ser ejecutadas de forma nativa en un z/Architecture® IBM® Server o, como alternativa, en maquinas que ejecuten otras arquitecturas. Pueden ser emuladas en los servidores de ordenador central presentes y futuros de IBM® y en otras maquinas de IBM® (por ejemplo, servidores Power Systems y System x® Servers). Se pueden ejecutar en maquinas que ejecutan Linux sobre una amplia variedad de maquinas que utilizan hardware fabricado por IBM®, Intel®, AMD™ y otros. Ademas de la ejecucion en ese hardware bajo z/Architecture®, se puede utilizar Linux, asf como maquinas que utilizan emulacion por Hercules, UMX o FSI (Fundamental Software, Inc.), en donde generalmente la ejecucion se realiza en modo de emulacion. En modo de emulacion, el software de emulacion es ejecutado por un procesador nativo con el fin de emular la arquitectura de un procesador emulado.
Tfpicamente, el procesador nativo ejecuta el software de emulacion que comprende, o bien firmware o bien un sistema operativo nativo, para realizar la emulacion del procesador emulado. El software de emulacion es responsable de extraer y ejecutar instrucciones de la arquitectura del procesador emulado. El software de emulacion mantiene un contador de programa emulado para realizar un seguimiento de los lfmites de instruccion. El software de emulacion puede extraer cada vez una o varias instrucciones de la maquina emulada y convertir la una o varias instrucciones de maquina emuladas en un grupo correspondiente de instrucciones de maquina nativa para que las ejecute el procesador nativo. Estas instrucciones convertidas se pueden almacenar en memoria cache, de manera que se pueda conseguir una conversion mas rapida. No obstante, el software de emulacion debe mantener las normas de arquitectura de la arquitectura del procesador emulado con el fin de asegurar que los sistemas operativos y las aplicaciones escritas para el procesador emulado funcionen correctamente. Ademas, el software de emulacion debe proporcionar recursos identificados por la arquitectura del procesador emulado que incluyen, pero sin limitacion, registros de control, registros de uso general, registros de coma flotante, funcion de traduccion dinamica de direcciones, incluidas, por ejemplo, tablas de segmentos y tablas de paginas, mecanismos de interrupcion, mecanismos de conmutacion de contexto, relojes de hora del dfa (TOD, por sus siglas en ingles) e interfaces arquitecturadas hacia subsistemas de E/S de manera que un sistema operativo o un programa de aplicacion, disenados para ejecutarse en el procesador emulado, se puedan ejecutar en el procesador nativo que posee el software de emulacion.
Se descodifica una instruccion espedfica que se esta emulando, y se llama a una subrutina para realizar la funcion de la instruccion individual. Una funcion de software de emulacion que emula una funcion de un procesador emulado se implementa, por ejemplo, en una subrutina o controlador en "C", o algun otro metodo para proporcionar un
5
10
15
20
25
30
35
40
45
50
controlador para el hardware espedfico, que entrara en la pericia de los tecnicos despues de comprender la descripcion de la realizacion preferida. Diversas patentes de software y hardware de emulacion, que incluyen, pero sin limitacion, el documento de patente de EE.UU. n.° 5,551,013, titulado "Multiprocessor for Hardware Emulation", de Beausoleil et al.; y el documento de patente de EE.UU. n.° 6,009,261, titulado "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", de Scalzi et al.; y el documento de patente de EE.UU. n.° 5,574,873, titulado "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", de Davidian et al.; y el documento de patente de Ee.UU. n.° 6,308,255, titulado "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", de Gorishek et al.; y el documento de patente de EE.UU. n.° 6,463,582, titulado "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", de Lethin et al.; y el documento de patente de EE.UU. n.° 5,790,825, titulado "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", por Eric Traut, y muchos otros, ilustran una variedad de formas conocidas para conseguir la emulacion de un formato de instruccion arquitecturado para una maquina distinta, destinadas a una maquina de destino disponible para los expertos en la tecnica.
En Figura 17 se presenta un ejemplo de un sistema informatico anfitrion emulado 5092 que emula un sistema informatico anfitrion 5000' de una arquitectura anfitriona. En el sistema informatico anfitrion emulado 5092, el procesador (CPU) anfitrion 5091 es un procesador anfitrion emulado (o procesador anfitrion virtual) y comprende un procesador de emulacion 5093 que tiene una arquitectura de conjunto de instrucciones nativas diferente de la del procesador 5091 del ordenador anfitrion 5000'. El sistema informatico anfitrion emulado 5092 tiene memoria 5094 accesible para el procesador de emulacion 5093. En el ejemplo de realizacion, la memoria 5094 esta divida en una parte de memoria de ordenador anfitrion 5096 y una parte de rutinas de emulacion 5097. La memoria del ordenador anfitrion 5096 esta disponible para programas del ordenador anfitrion emulado 5092 conformes a la arquitectura del ordenador anfitrion. El procesador de emulacion 5093 ejecuta instrucciones nativas de un conjunto de instrucciones arquitecturadas de una arquitectura distinta de la del procesador emulado 5091, obteniendose las instrucciones nativas de la memoria de rutinas de emulacion 5097, y puede acceder a una instruccion de anfitrion para ejecutar un programa en la memoria del ordenador anfitrion 5096 mediante el empleo de una o varias instrucciones obtenidas, en una secuencia y rutina de acceso/descodificacion que puede descodificar la o las instrucciones de anfitrion a las que se ha tenido acceso, con el fin de determinar una rutina de ejecucion de instrucciones nativas para emular la funcion de la instruccion de anfitrion a la que se ha tenido acceso. Otras funcionalidades que estan definidas para la arquitectura del ordenador anfitrion 5000' pueden ser emuladas por rutinas de funcionalidades arquitecturadas, entre ellas funcionalidades tales como registros de uso general, registros de control, traduccion dinamica de direcciones y apoyo a subsistemas de E/S y de memoria cache del procesador, por ejemplo. Las rutinas de emulacion tambien pueden aprovechar funciones disponibles en el procesador de emulacion 5093 (como registros generales y traduccion dinamica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulacion. Tambien se pueden proporcionar motores de hardware especial y motores de descarga para ayudar a que el procesador 5093 emule la funcion del ordenador anfitrion 5000'.
La terminologfa usada en la presente memoria tiene por objetivo solamente describir realizaciones particulares, y no se pretende que sea limitativa de la invencion. En la presente memoria, las formas singulares "un", "una", "el" y "la" pretenden incluir tambien las formas plurales, a menos que el contexto indique claramente lo contrario. Se entendera ademas que los terminos "comprende" y/o "que comprende", cuando se utilizan en esta memoria descriptiva, especifican la presencia de las caractensticas, numeros enteros, pasos, operaciones, elementos y/o componentes nombrados, pero no excluye la presencia o adicion de una o mas caractensticas, numeros enteros, pasos, operaciones, elementos, componentes y/o grupos de los mismos.
En su caso, las correspondientes estructuras, materiales, acciones y equivalentes de todos los medios o elementos de paso mas funcion de las reivindicaciones que siguen, pretenden incluir cualquier estructura, material o accion para realizar la funcion en combinacion con otros elementos reivindicados tal como se reivindican espedficamente. Se ha presentado la descripcion de uno o varios aspectos de la presente invencion con fines ilustrativos y de descripcion, pero no se pretende que sea exhaustiva ni limitada al invento en la forma descrita. Para los expertos ordinarios en la tecnica resultaran evidentes muchas modificaciones y variaciones sin salir del alcance de la invencion. Se ha elegido y descrito la realizacion con el fin de explicar de la mejor manera los principios de la invencion y la aplicacion practica, y para permitir a otros con pericia ordinaria en la tecnica comprender la invencion acerca de diversas realizaciones con diversas modificaciones, segun sea adecuado para el uso particular contemplado.

Claims (15)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    REIVINDICACIONES
    1. Un sistema informatico (200) para facilitar el procesamiento en un entorno informatico, comprendiendo dicho sistema informatico:
    una memoria; y
    un procesador en comunicacion con la memoria, en donde el sistema informatico esta configurado para realizar un metodo, comprendiendo dicho metodo:
    que un programa obtenga una indicacion de una funcionalidad de margen de advertencia instalada (700) dentro del entorno informatico, donde la funcionalidad de margen de advertencia proporciona al programa un penodo de gracia de margen de advertencia para realizar una funcion;
    que el programa inicie, basandose en la obtencion de la indicacion de que la funcionalidad de margen de advertencia esta instalada, la inscripcion del programa en el registro de la funcionalidad de margen de advertencia (702),
    comprendiendo la inscripcion en el registro una peticion no solicitada de inscripcion en el registro que indica que el programa entiende un protocolo de la funcionalidad de margen de advertencia y pretende participar en la funcionalidad de margen de advertencia;
    que el programa reciba una notificacion de margen de advertencia que indica que ha comenzado el penodo de gracia de margen de advertencia, siendo la inscripcion del programa en el registro de la funcionalidad de margen de advertencia un requisito previo para recibir la notificacion de margen de advertencia, en donde si el programa no esta registrado, entonces no se ofrece penodo de gracia; y
    que el programa, basandose en la notificacion de margen de advertencia, al menos inicie la funcion dentro del penodo de gracia de margen de advertencia.
  2. 2. El sistema informatico segun la reivindicacion 1, en donde el metodo comprende ademas que el programa se inscriba en el registro de la funcionalidad de margen de advertencia.
  3. 3. El sistema informatico segun la reivindicacion 2, en donde, basandose en el registro, se habilita al programa para la funcionalidad de margen de advertencia.
  4. 4. El sistema informatico segun la reivindicacion 1, en donde la funcion comprende uno de:
    completar una unidad despachable en ejecucion en un procesador en el cual se ejecuta el programa; o hacer re-despachable en otro procesador del entorno informatico a la unidad despachable.
  5. 5. El sistema informatico segun la reivindicacion 1, en donde el programa es un programa invitado que tiene acceso a recursos compartidos del entorno informatico durante una porcion de tiempo proporcionada a una unidad central de procesamiento invitada en la que se ejecuta el programa invitado, y en donde el penodo de gracia de margen de advertencia es distinguible de la porcion de tiempo.
  6. 6. El sistema informatico segun la reivindicacion 5, en donde el penodo de gracia de margen de advertencia termina prematuramente la porcion de tiempo.
  7. 7. El sistema informatico segun la reivindicacion 5, en donde el penodo de gracia de margen de advertencia proporciona un plazo adicional a la porcion de tiempo para realizar la funcion.
  8. 8. El sistema informatico segun la reivindicacion 1, en donde el penodo de gracia es adicional a una porcion de tiempo proporcionada al programa, y en donde si la porcion de tiempo ha expirado por completo, el penodo de gracia es con cargo a una siguiente porcion de tiempo para el programa y, si la porcion de tiempo no ha expirado, el penodo de gracia se toma del tiempo normal restante de la porcion de tiempo.
  9. 9. Un metodo para facilitar el procesamiento en un entorno informatico (200), comprendiendo dicho metodo:
    que un programa obtenga una indicacion de una funcionalidad de margen de advertencia instalada (700) dentro del entorno informatico, donde la funcionalidad de margen de advertencia proporciona al programa un penodo de gracia de margen de advertencia para realizar una funcion;
    que el programa inicie, basandose en la obtencion de la indicacion de que la funcionalidad de margen de advertencia esta instalada, la inscripcion del programa en el registro de la funcionalidad de margen de advertencia (702),
    comprendiendo la inscripcion en el registro una peticion no solicitada de inscripcion en el registro que indica que el programa entiende un protocolo de la funcionalidad de margen de advertencia y pretende participar en la
    5
    10
    15
    20
    25
    30
    funcionalidad de margen de advertencia;
    que el programa reciba una notificacion de margen de advertencia que indica ha comenzado el penodo de gracia de margen de advertencia, siendo la inscripcion del programa en el registro de la funcionalidad de margen de advertencia un requisito previo para recibir la notificacion de margen de advertencia, en donde si el programa no esta registrado, entonces no se ofrece penodo de gracia; y
    que el programa, basandose en la notificacion de margen de advertencia, al menos inicie la funcion dentro del penodo de gracia de margen de advertencia.
  10. 10. El metodo segun la reivindicacion 9, en donde la funcion comprende uno de:
    completar una unidad despachable en ejecucion en un procesador en el cual se ejecuta el programa; o hacer re-despachable en otro procesador del entorno informatico a la unidad despachable.
  11. 11. El metodo segun la reivindicacion 9, en donde el programa es un programa invitado que tiene acceso a recursos compartidos del entorno informatico durante una porcion de tiempo proporcionada a una unidad central de procesamiento invitada en la que se ejecuta el programa invitado, y en donde el penodo de gracia de margen de advertencia es distinguible de la porcion de tiempo.
  12. 12. El metodo segun la reivindicacion 9, en donde la inscripcion en el registro se realiza a traves de una instruccion Diagnose, en donde la instruccion Diagnose comprende un parametro de registro para indicar que el segundo programa entiende una interrupcion por margen de advertencia de la funcionalidad de margen de advertencia.
  13. 13. El metodo segun la reivindicacion 9, en donde el penodo de gracia es distinguible de una porcion de tiempo proporcionada a un procesador en el cual se ejecuta el programa, teniendo acceso el programa a recursos compartidos del entorno informatico durante la porcion de tiempo, y en donde el penodo de gracia proporciona un plazo adicional a la porcion de tiempo, en donde cualquier parte del plazo utilizado por el programa para realizar la funcion es con cargo a una siguiente porcion de tiempo para el segundo programa.
  14. 14. El metodo segun la reivindicacion 9, en donde el metodo comprende ademas:
    que el programa obtenga, la vez siguiente que se ejecute el programa, basada en la determinacion de que el programa ha salido voluntariamente antes de la expiracion del penodo de gracia, retroalimentacion positiva que indica la salida voluntaria antes de la expiracion del penodo de gracia; y
    que el programa obtenga, la vez siguiente que se ejecute el programa, basada en la determinacion de que el programa no ha llegado a tiempo para salir voluntariamente antes de la expiracion del penodo de gracia, una indicacion de retroalimentacion de excepcion que indica tardanza en salir voluntariamente.
  15. 15. Un programa informatico que comprende codigo de programa informatico para, cuando esta cargado en un sistema informatico y se ejecuta en el mismo, hacer que dicho sistema informatico realice todos los pasos del metodo segun cualquiera de las reivindicaciones 9 a 14.
ES12866318.4T 2012-01-18 2012-11-13 Uso de una funcionalidad de interrupción con margen de advertencia por un programa Active ES2598816T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/352,514 US9110878B2 (en) 2012-01-18 2012-01-18 Use of a warning track interruption facility by a program
US201213352514 2012-01-18
PCT/IB2012/056370 WO2013108090A1 (en) 2012-01-18 2012-11-13 Use of a warning track interruption facility by a program

Publications (1)

Publication Number Publication Date
ES2598816T3 true ES2598816T3 (es) 2017-01-30

Family

ID=48780919

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12866318.4T Active ES2598816T3 (es) 2012-01-18 2012-11-13 Uso de una funcionalidad de interrupción con margen de advertencia por un programa

Country Status (24)

Country Link
US (2) US9110878B2 (es)
EP (1) EP2805236B1 (es)
JP (1) JP6249961B2 (es)
KR (1) KR101625317B1 (es)
CN (1) CN104054054B (es)
AU (1) AU2012366768B2 (es)
BR (1) BR112014017828B1 (es)
CA (1) CA2862265C (es)
DK (1) DK2805236T3 (es)
ES (1) ES2598816T3 (es)
HK (1) HK1201348A1 (es)
HR (1) HRP20161265T1 (es)
HU (1) HUE029040T2 (es)
IL (1) IL231839B (es)
IN (1) IN2014CN04836A (es)
MX (1) MX363387B (es)
PL (1) PL2805236T3 (es)
PT (1) PT2805236T (es)
RU (1) RU2565495C2 (es)
SG (1) SG11201402085QA (es)
SI (1) SI2805236T1 (es)
TW (1) TWI540510B (es)
WO (1) WO2013108090A1 (es)
ZA (1) ZA201400733B (es)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
US9389897B1 (en) 2014-12-18 2016-07-12 International Business Machines Corporation Exiting multiple threads of a simulation environment in a computer
CN109144679B (zh) * 2017-06-27 2022-03-29 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备

Family Cites Families (45)

* 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
JPH09106358A (ja) * 1995-10-12 1997-04-22 Hitachi Ltd 仮想計算機システムのスケジューリング方法および装置
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
US6470376B1 (en) * 1997-03-04 2002-10-22 Matsushita Electric Industrial Co., Ltd Processor capable of efficiently executing many asynchronous event tasks
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
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
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 株式会社デンソー 割込コントローラ及びマイクロコンピュータ
AU2001255611A1 (en) 2000-04-25 2001-11-07 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
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
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
US8024544B2 (en) * 2004-05-13 2011-09-20 International Business Machines Corporation Free resource error/event log for autonomic data processing system
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
US7725531B1 (en) 2006-09-18 2010-05-25 George Mason Intellectual Properties, Inc. Single use server system
EP2006770B1 (en) 2007-06-19 2014-01-01 VirtualLogix SA Load balancing
US8261284B2 (en) 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
JP4620097B2 (ja) * 2007-09-19 2011-01-26 株式会社東芝 仮想計算機システム及び同システムにおけるスケジュール調整方法
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
US9424211B2 (en) * 2008-12-31 2016-08-23 Intel Corporation Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
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 富士通株式会社 運用管理プログラム、運用管理装置および運用管理方法
JP5308383B2 (ja) * 2010-03-18 2013-10-09 パナソニック株式会社 仮想マルチプロセッサシステム
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
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
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

Also Published As

Publication number Publication date
BR112014017828A8 (pt) 2017-07-11
KR101625317B1 (ko) 2016-06-07
DK2805236T3 (en) 2016-11-07
HUE029040T2 (en) 2017-01-30
PT2805236T (pt) 2016-10-25
CN104054054A (zh) 2014-09-17
IL231839B (en) 2019-01-31
KR20140113668A (ko) 2014-09-24
US9098358B2 (en) 2015-08-04
HK1201348A1 (en) 2015-08-28
RU2565495C2 (ru) 2015-10-20
MX2014008461A (es) 2014-08-27
JP2015510630A (ja) 2015-04-09
TW201351288A (zh) 2013-12-16
EP2805236A1 (en) 2014-11-26
US20130185738A1 (en) 2013-07-18
HRP20161265T1 (hr) 2016-12-02
IN2014CN04836A (es) 2015-09-18
AU2012366768B2 (en) 2016-05-12
IL231839A0 (en) 2014-05-28
JP6249961B2 (ja) 2017-12-20
MX363387B (es) 2019-03-20
PL2805236T3 (pl) 2017-08-31
EP2805236B1 (en) 2016-09-14
SG11201402085QA (en) 2014-06-27
CN104054054B (zh) 2018-01-30
US20130185736A1 (en) 2013-07-18
CA2862265A1 (en) 2013-07-25
US9110878B2 (en) 2015-08-18
WO2013108090A1 (en) 2013-07-25
SI2805236T1 (sl) 2017-01-31
AU2012366768A1 (en) 2014-07-17
RU2012148404A (ru) 2014-05-20
BR112014017828A2 (pt) 2017-06-20
TWI540510B (zh) 2016-07-01
ZA201400733B (en) 2015-10-28
CA2862265C (en) 2021-01-12
BR112014017828B1 (pt) 2021-08-17
EP2805236A4 (en) 2014-12-24

Similar Documents

Publication Publication Date Title
ES2598816T3 (es) Uso de una funcionalidad de interrupción con margen de advertencia por un programa
ES2768277T3 (es) Función de interrupción de seguimiento de advertencias
ES2717525T3 (es) Configuración de modo arquitectónico en un sistema informático
RU2562372C2 (ru) Активация/деактивация адаптеров вычислительной среды
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