ES2878147T3 - Gestión de un procesamiento asociado con utilidades arquitectónicas seleccionadas - Google Patents

Gestión de un procesamiento asociado con utilidades arquitectónicas seleccionadas Download PDF

Info

Publication number
ES2878147T3
ES2878147T3 ES15708240T ES15708240T ES2878147T3 ES 2878147 T3 ES2878147 T3 ES 2878147T3 ES 15708240 T ES15708240 T ES 15708240T ES 15708240 T ES15708240 T ES 15708240T ES 2878147 T3 ES2878147 T3 ES 2878147T3
Authority
ES
Spain
Prior art keywords
architectural
mode
instruction
virtual machine
function
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
ES15708240T
Other languages
English (en)
Inventor
Michael Karl Gschwind
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 ES2878147T3 publication Critical patent/ES2878147T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

Un método para gestionar un procesamiento dentro de un entorno informático, comprendiendo dicho entorno informático un procesador de anfitrión que procesa en un primer modo arquitectónico, estando dicho método caracterizado por: iniciar, por el procesador de anfitrión (152) que procesa en el primer modo arquitectónico, una primera máquina virtual de invitado (162), la primera máquina virtual de invitado para procesar (1104) en el primer modo arquitectónico, teniendo el primer modo arquitectónico una primera arquitectura de conjunto de instrucciones y proporcionando un primer conjunto de funciones arquitectónicas; iniciar, por el procesador de anfitrión, una segunda máquina virtual de invitado (162), la segunda máquina virtual de invitado para procesar en un segundo modo arquitectónico diferente del primer modo arquitectónico, en donde el segundo modo arquitectónico tiene una segunda arquitectura de conjunto de instrucciones diferente de la primera arquitectura de conjunto de instrucciones y proporciona un segundo conjunto de funciones arquitectónicas diferente del primer conjunto de funciones arquitectónicas, siendo el segundo conjunto de funciones arquitectónicas un conjunto reducido de funciones arquitectónicas proporcionado en el primer conjunto de funciones arquitectónicas, en donde una función arquitectónica seleccionada proporcionada en el primer conjunto de funciones arquitectónicas está ausente del segundo conjunto de funciones arquitectónicas, siendo el segundo modo arquitectónico un modo de inhibición de funciones; y realizar un procesamiento (1108) por la segunda máquina virtual de invitado en el segundo modo arquitectónico, en donde la realización de un procesamiento anula uno o más controles asociados con la función arquitectónica seleccionada que están definidos para controlar la ejecución de la segunda máquina virtual de invitado, en donde la función arquitectónica seleccionada no tiene la capacidad de ser activada/desactivada independientemente de otros controles dentro del entorno, debido a que la función arquitectónica seleccionada no se soporta y se suprime del segundo modo arquitectónico, en donde la función arquitectónica seleccionada comprende una traducción de dirección dinámica.

Description

DESCRIPCIÓN
Gestión de un procesamiento asociado con utilidades arquitectónicas seleccionadas
Campo técnico
Uno o más aspectos se refieren, en general, al procesamiento dentro de un entorno informático y, en particular, a la gestión del uso de funciones arquitectónicas seleccionadas dentro del entorno informático.
Antecedentes de la técnica
Los entornos informáticos ofrecen una variedad de capacidades e incluyen ciertas funciones como parte de sus configuraciones arquitectónicas. Una función de este tipo es la traducción de dirección virtual, tal como la traducción de dirección dinámica, usada para traducir direcciones virtuales a direcciones reales.
Las configuraciones de sistema incluyen la memoria física usada para almacenar aplicaciones y datos. La cantidad de memoria física es fija y, a menudo, inadecuada para cubrir las necesidades de los usuarios. Por lo tanto, para proporcionar memoria adicional o al menos la apariencia de memoria adicional, se utiliza una técnica de gestión de memoria, denominada memoria virtual. La memoria virtual usa un direccionamiento virtual, que proporciona rangos de direcciones que pueden parecer mucho más grandes que el tamaño físico de la memoria principal.
Para acceder a la memoria principal en una configuración de sistema que incluye memoria virtual, se solicita un acceso de memoria que incluye, por ejemplo, una dirección virtual. La dirección virtual se traduce a una dirección real, usada para acceder a la memoria física, usando, por ejemplo, traducción de dirección dinámica u otra técnica de traducción. Sin embargo, la prueba de memoria virtual es costosa. A medida que una arquitectura se va extinguiendo, puede ser conveniente proporcionar entornos heredados, por ejemplo, para sistemas que usan un soporte de arquitectura mínimo, tales como sistemas operativos DOS (por ejemplo, MS DOS o CMS), que funcionan principalmente como entornos de intérprete de línea de comandos, o para entornos que se usan para ejecutar parte del BIOS (y que se pueden ejecutar sin las complejidades de la memoria virtual). La publicación de solicitud de patente de Estados Unidos número Us 2005/0223225 A1 (Campbell, R. L. et al., "Switching Between Protected Mode Environments Utilizing Virtual Machine Functionality", 6 de octubre de 2005) divulga un procesador que tiene un modo de ejecución normal y un modo de ejecución de anfitrión. Un monitor de máquina virtual operable junto con el modo de ejecución de anfitrión crea al menos un entorno de modo protegido para operar el software de invitado en un área de memoria protegida. "Development and attributes of z/Architecture" (Plambeck, K. E. et al.), 4/5 de julio/septiembre de 2002, divulga la arquitectura de conjunto de instrucciones (ISA) de IBM z/Architecture como una ampliación de ISA Enterprise Systems Architecture/390® de IBM y presenta registros generales de 64 bits, operaciones de 64 bits y direccionamiento virtual y real de 64 bits.
Por lo tanto, existe una necesidad en la técnica de abordar el problema mencionado anteriormente.
Sumario
De acuerdo con la presente invención, se proporcionan un método, un sistema, un producto de programa informático y un programa informático de acuerdo con las reivindicaciones independientes.
Se logran características y ventajas adicionales. Otras realizaciones y aspectos se describen en detalle en el presente documento y se consideran una parte de la invención reivindicada.
Breve descripción de los dibujos
La presente invención se describirá a continuación, solo a modo de ejemplo, con referencia a realizaciones preferidas, como se ilustra en las figuras siguientes:
la figura 1A representa un ejemplo de un entorno informático para incorporar y usar uno o más aspectos de una utilidad de No-DAT (Sin Traducción de Dirección Dinámica), de acuerdo con una realización preferida de la presente invención; la figura 1B representa un ejemplo de un entorno informático virtual para incorporar y usar uno o más aspectos de una utilidad de No-DAT, de acuerdo con una realización preferida de la presente invención;
la figura 2 representa otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de una utilidad de No-DAT, de acuerdo con una realización preferida de la presente invención;
la figura 3A representa otro ejemplo más de un entorno informático para incorporar y usar uno o más aspectos de una utilidad de No-DAT, de acuerdo con una realización preferida de la presente invención;
la figura 3B representa detalles adicionales de la memoria de la figura 3A, de acuerdo con una realización preferida de la presente invención;
la figura 4 representa una realización de una traducción de dirección de 64 bits, de acuerdo con una realización preferida de la presente invención;
la figura 5 representa un formato ilustrativo de una instrucción de Cargar Palabra de Estado de Programa (PSW), de acuerdo con una realización preferida de la presente invención;
la figura 6 representa un formato ilustrativo de una palabra de estado de programa, de acuerdo con una realización preferida de la presente invención;
las figuras 7A-7C representan formatos ilustrativos de una instrucción de Cargar Dirección Real, de acuerdo con una realización preferida de la presente invención;
la figura 8 representa un formato ilustrativo de una instrucción de Establecer Máscara de Sistema, de acuerdo con una realización preferida de la presente invención;
la figura 9 representa un formato ilustrativo de una instrucción de Almacenar Entonces O Máscara de Sistema, de acuerdo con una realización preferida de la presente invención;
la figura 10 representa una realización de un procesamiento asociado con una utilidad de No-DAT, de acuerdo con una realización preferida de la presente invención;
las figuras 11A-11B representan una realización de un procesamiento asociado con una utilidad de No-DAT en un entorno informático virtual, de acuerdo con una realización preferida de la presente invención;
la figura 12 representa una realización de un producto de programa informático, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 13 representa una realización de un sistema informático de anfitrión, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 14 representa un ejemplo adicional de un sistema informático, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 15 representa otro ejemplo de un sistema informático que comprende una red informática, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 16 representa una realización de diversos elementos de un sistema informático, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 17A representa una realización de la unidad de ejecución del sistema informático de la figura 16, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 17B representa una realización de la unidad de ramificación del sistema informático de la figura 16, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 17C representa una realización de la unidad de carga/almacenamiento del sistema informático de la figura 16, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 18 representa una realización de un sistema informático de anfitrión emulado, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 19 representa una realización de un nodo informático en la nube, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención;
la figura 20 representa una realización de un entorno informático en la nube, de acuerdo con la técnica anterior, y en la que se puede implementar una realización preferida de la presente invención; y
la figura 21 representa un ejemplo de capas de modelo de abstracción, de acuerdo con la técnica anterior, y en el que se puede implementar una realización preferida de la presente invención.
Descripción detallada
De acuerdo con uno o más aspectos, se proporciona una utilidad que, cuando está instalada, suprime de una arquitectura una función arquitectónica seleccionada, de tal modo que la función no tiene la capacidad de ser activada/desactivada independientemente de otros controles dentro del entorno. Cuando la utilidad está instalada, la función arquitectónica no se soporta. Es como si esta ya no estuviera disponible en la arquitectura y, de hecho, el código que implementa la utilidad puede haber sido borrado, omitido o eliminado de otra manera. Una función arquitectónica de este tipo es la traducción de dirección virtual, tal como la traducción de dirección dinámica (DAT), y la arquitectura es, por ejemplo, ESA/390.
En una realización particular, se proporciona un entorno informático que está configurado para soportar una pluralidad de modos arquitectónicos, por ejemplo, un primer modo arquitectónico, tal como un modo potenciado, por ejemplo, z/Architecture, y un segundo modo arquitectónico, tal como un modo heredado, por ejemplo, ESA/390. En una realización, el primer modo arquitectónico tiene diferencias arquitectónicas con respecto al segundo modo arquitectónico, tal como el primer modo arquitectónico, proporciona un direccionamiento de 64 bits y usa registros de propósitos generales de 64 bits, y el segundo modo arquitectónico proporciona un direccionamiento de 31 bits y usa registros de propósito general de 32 bits. Además, ciertas funciones arquitectónicas, tales como DAT, son soportadas por el primer modo arquitectónico y pueden no ser soportadas por el segundo modo arquitectónico.
Aunque el entorno informático está configurado para soportar simultáneamente una pluralidad de modos arquitectónicos, este procesa en solo uno de los modos. Por lo tanto, de acuerdo con un aspecto, basándose en que un procesador del entorno informático recibe una solicitud para realizar una operación que usa una función arquitectónica seleccionada, el procesador o bien realiza la función o bien proporciona una indicación de que esta no se realiza, basándose en si la función se ha suprimido del modo arquitectónico en el que el entorno informático está procesando actualmente.
En otra realización, el entorno informático es un entorno virtual que tiene un programa de control de anfitrión que se ejecuta en un procesador y una pluralidad de máquinas virtuales de invitado soportadas por el anfitrión. El anfitrión está procesando, por ejemplo, en un primer modo arquitectónico; sin embargo, las máquinas virtuales de invitado, iniciadas por el anfitrión, pueden procesar, o no, en el mismo modo arquitectónico que el anfitrión. Por ejemplo, una máquina virtual se puede iniciar en el primer modo arquitectónico, que proporciona la función arquitectónica seleccionada, y otra máquina virtual se puede iniciar en el segundo modo arquitectónico, que no proporciona la función arquitectónica seleccionada. En una realización, el segundo modo arquitectónico proporciona un conjunto reducido de funciones arquitectónicas del primer modo arquitectónico. La función arquitectónica seleccionada no es parte de la arquitectura en el sentido de que esta se ha suprimido de la arquitectura (por ejemplo, se crea una versión de la arquitectura sin código que implemente la función, o el código que estaba previamente en la arquitectura para soportar esta función se ha omitido, borrado o eliminado de otra manera).
En otra realización, el segundo modo arquitectónico puede ofrecer funciones o utilidades diferentes de una primera arquitectura, pero se pueden proporcionar capacidades arquitectónicas específicas en el primer modo arquitectónico y no se pueden proporcionar en el segundo modo arquitectónico. En una realización ilustrativa, la traducción DAT se proporciona en la primera arquitectura, y no se proporciona (en la forma definida por la primera arquitectura, o en cualquier otra forma, por ejemplo, como puede haberse proporcionado de acuerdo con una o más de una ESA/390, S/390, S/370, S/360, Power Pc , Power PC de acuerdo con Book 3E, x86 de Intel/AMD, Itanium o cualquier otra especificación arquitectónica correspondiente a una utilidad de DAT o similar a DAT) en una segunda arquitectura. IBM, z/OS, z/VM, z/Architecture, Processor Resource/Systems Manager, PowerPC y Power Systems son marcas comerciales de International Business Machines Corporation, registradas en muchas jurisdicciones a nivel mundial. Otros nombres usados en el presente documento pueden ser marcas comerciales registradas, marcas comerciales o nombres de producto de International Business Machines Corporation u otras empresas. Intel e Itanium son marcas comerciales o marcas comerciales registradas de Intel Corporation o sus subsidiarias en los Estados Unidos y otros países.
Como se indica en el presente documento, en un ejemplo, la función arquitectónica que se proporciona en la primera arquitectura y no en la segunda arquitectura es la traducción de dirección virtual, tal como la traducción de dirección dinámica (DAT). Por lo tanto, en un ejemplo particular, se proporciona una utilidad de No-DAT (también denominada NDAT) en el entorno informático que indica que la traducción de dirección dinámica no es soportada por un modo arquitectónico particular (por ejemplo, el modo arquitectónico heredado). La utilidad suprime la posibilidad de, por ejemplo, que una configuración esté en el modo arquitectónico de ESA/390 con una traducción de dirección dinámica (DAT) activada. Es decir, una configuración en el modo arquitectónico de ESA/390 no puede tener DAT activada, cuando esta utilidad está instalada y habilitada. Un intento de activar DAT provoca, por ejemplo, una interrupción de programa de excepción de No-DAT. En otras realizaciones, se indican otros códigos de excepción.
En una realización, una utilidad de NDAT también deshabilita que se ejecuten una o más instrucciones que se usan comúnmente junto con la traducción DAT, tales como, por ejemplo, la instrucción de Cargar Dirección Real (LRA). Por ejemplo, se evita que la instrucción de Cargar Dirección Real se ejecute en un segundo modo arquitectónico cuando esta se puede ejecutar en un primer modo arquitectónico.
En una realización, la utilidad de NDAT se puede habilitar de forma selectiva en uno o más entornos informáticos (por ejemplo, procesadores, LPAR, invitados). Sin embargo, cuando esta está habilitada en un entorno informático, el entorno no puede usar DAT en la segunda arquitectura (es decir, NO ESA/390 DAT) independientemente de los ajustes de otros controles dentro del entorno. Esos otros controles se omiten o se anulan.
Un ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la utilidad de No-DAT se describe con referencia a la figura 1A. Haciendo referencia a la figura 1A, en un ejemplo, un entorno informático 100 se basa en la z/Architecture, ofrecida por International Business Machines (IBM®) Corporation, Armonk, Nueva York. La z/Architecture se describe en una publicación de IBM titulada "z/Architecture - Principies of Operation", Publicación n.° SA22-7932-09, 10a edición, septiembre de 2012. Aunque el entorno informático se basa en la z/Architecture, en una realización, este también soporta otras una o más configuraciones arquitectónicas, tales como ESA/390 o un subconjunto de ESA/390.
Como un ejemplo, el entorno informático 100 incluye un complejo de procesador central (CPC) 102 acoplado a uno o más dispositivos de entrada/salida (E/S) 106 a través de una o más unidades de control 108. El complejo de procesador central 102 incluye, por ejemplo, una memoria de procesador 104 (también conocida como memoria principal, almacenamiento principal, almacenamiento central) acoplada a uno o más procesadores centrales (también conocidos como unidades de procesamiento central (CPU)) 110, y un subsistema de entrada/salida 111, cada uno de los cuales se describe a continuación.
La memoria de procesador 104 incluye, por ejemplo, una o más particiones 112 (por ejemplo, particiones lógicas) y el firmware de procesador 113, que incluye un hipervisor de particiones lógicas 114 y otro firmware de procesador 115. Un ejemplo de hipervisor de particiones lógicas 114 es el Recurso de Procesador/Gestor de Sistema (Pr/SM), ofrecido por International Business Machines Corporation, Armonk, Nueva York.
Una partición lógica funciona como un sistema separado y tiene una o más aplicaciones 120, y opcionalmente, un sistema operativo residente 122 en el mismo, que puede diferir para cada partición lógica. En una realización, el sistema operativo es el sistema operativo z/OS, el sistema operativo z/VM, el sistema operativo z/Linux, o el sistema operativo TPF, ofrecido por International Business Machines Corporation, Armonk, Nueva York. Las particiones lógicas 112 se gestionan mediante el hipervisor de particiones lógicas 114, que se implementa por firmware que se lleva a cabo en los procesadores 110. Como se usa en el presente documento, firmware incluye, por ejemplo, el microcódigo y/o milicódigo del procesador. Incluye, por ejemplo, las instrucciones de nivel de hardware y/o estructuras de datos usadas en la implementación de código máquina de nivel superior. En una realización, incluye, por ejemplo, código de propiedad exclusiva que se entrega típicamente como microcódigo que incluye software o microcódigo de confianza, específico para el hardware subyacente y controla el acceso de sistema operativo al hardware de sistema.
Los procesadores centrales 110 son recursos de procesador físicos asignados a las particiones lógicas. En particular, cada partición lógica 112 tiene uno o más procesadores lógicos, cada uno de los cuales representa todo o una parte de un procesador físico 110 asignado a la partición. Uno u otro de los procesadores lógicos de una partición 112 particular se puede dedicar a la partición, de tal modo que el recurso de procesador 110 subyacente se reserva para esa partición; o bien compartirse con otra partición, de tal modo que el recurso de procesador subyacente está potencialmente disponible para otra partición. En un ejemplo, una o más de las CPU incluyen aspectos de una utilidad de No-DAT (NDAT) 130 descrita en el presente documento.
El subsistema de entrada/salida 111 dirige el flujo de información entre los dispositivos de entrada/salida 106 y el almacenamiento principal 104. Se acopla al complejo de procesamiento central, en el sentido de que puede ser una parte del complejo de procesamiento central o estar separado del mismo. El subsistema de E/S libera a los procesadores centrales de la tarea de comunicarse directamente con los dispositivos de entrada/salida y permite que el procesamiento de datos proceda simultáneamente con procesamiento de entrada/salida. Para proporcionar comunicaciones, el subsistema de E/S emplea adaptadores de comunicación de E/S. Hay diversos tipos de adaptadores de comunicaciones que incluyen, por ejemplo, canales, adaptadores de E/S, tarjetas de PCI, tarjetas de Ethernet, tarjetas de SCSI (Interfaz Pequeña de Almacenamiento Informático), etc. En el ejemplo particular descrito en el presente documento, los adaptadores de comunicaciones de E/S son canales y, por lo tanto, el subsistema de E/S se denomina en el presente documento subsistema de canal. Sin embargo, esto es únicamente un ejemplo. Pueden usarse otros tipos de subsistemas de E/S.
El subsistema de E/S usa una o más trayectorias de entrada/salida como enlaces de comunicación en la gestión del flujo de información a o desde los dispositivos de entrada/salida 106. En este ejemplo particular, estas trayectorias se llaman trayectorias de canal, ya que los adaptadores de comunicación son canales.
Otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la utilidad de No-DAT se describe con referencia a la figura 1B. En este ejemplo, un entorno informático 150 incluye un complejo de procesador central 152 que proporciona soporte de máquina virtual. El CPC 152 está acoplado a uno o más dispositivos de entrada/salida (E/S) 106 a través de una o más unidades de control 108. El complejo de procesador central 152 incluye, por ejemplo, una memoria de procesador 154 (también conocida como memoria principal, almacenamiento principal, almacenamiento central) acoplada a uno o más procesadores centrales (también conocidos como unidades de procesamiento central (CPU)) 110, y un subsistema de entrada/salida 111.
La memoria de procesador 154 incluye, por ejemplo, una o más máquinas virtuales 162 y el firmware de procesador 163, que incluye un hipervisor de anfitrión 164 y otro firmware de procesador 165. Un ejemplo de hipervisor de anfitrión 164 es z/VM®, ofrecido por International Business Machines Corporation, Armonk, Nueva York.
El soporte de máquina virtual del CPC proporciona la capacidad de operar grandes números de máquinas virtuales 162, cada una capaz de alojar un sistema operativo de invitado 172, tal como Linux®. Cada máquina virtual 162 es capaz de funcionar como un sistema separado. Es decir, cada máquina virtual puede independientemente reiniciarse, alojar un sistema operativo de invitado y operar con diferentes programas 120. Un sistema operativo o programa de aplicación que se ejecuta en una máquina virtual parece tener acceso a un sistema total y completo pero, en realidad, solo está disponible una porción del mismo. Linux es una marca comercial registrada de Linus Torvalds en los Estados Unidos, otros países o ambos.
En este ejemplo particular, el modelo de las máquinas virtuales es un modelo V = V, en el que la memoria absoluta o real de una máquina virtual está respaldada por una memoria virtual de anfitrión, en lugar de una memoria real o absoluta. Cada máquina virtual tiene un espacio de memoria lineal virtual. Los recursos físicos son propiedad del anfitrión 164, y los recursos físicos compartidos son despachados por el anfitrión a los sistemas operativos de invitado, según sea necesario, para cumplir sus demandas de procesamiento. Este modelo de máquina virtual V = V (es decir, de invitado paginable) supone que las interacciones entre los sistemas operativos de invitado y los recursos de máquina compartidos físicos son controlados por el anfitrión, debido a que el gran número de invitados típicamente impide que el anfitrión simplemente particione y asigne los recursos de hardware a los invitados configurados. Uno o más aspectos de un modelo V = V se describen adicionalmente en una publicación de IBM® titulada "z/VM: Running Guest Operating Systems'", publicación de IBM® n.° SC24-5997-02, octubre de 2001.
Los procesadores centrales 110 son recursos de procesador físico que se pueden asignar a una máquina virtual. Por ejemplo, la máquina virtual 162 incluye uno o más procesadores lógicos, cada uno de los cuales representa todo o una partición de un recurso de procesador físico 110 que puede asignarse dinámicamente a la máquina virtual. Las máquinas virtuales 162 son gestionadas por el anfitrión 164.
En una realización, el hardware/firmware del anfitrión (por ejemplo, z/VM®) y del procesador (por ejemplo, System z) interactúan entre sí de una manera cooperativa controlada para procesar las operaciones de sistema operativo de invitado V = V sin requerir la transferencia de control desde/al sistema operativo de invitado y al anfitrión. Las operaciones de invitado se pueden ejecutar directamente sin intervención de anfitrión a través de una utilidad que permite que se ejecuten de manera interpretativa las instrucciones para un invitado de modo de almacenamiento paginable. Esta utilidad proporciona una instrucción, Iniciar Ejecución Interpretativa (SIE), que el anfitrión puede emitir, designando un bloque de control denominado descripción de estado que mantiene un estado de invitado (máquina virtual) y controles, tales como controles de ejecución y controles de modo. La instrucción coloca la máquina en un modo de ejecución interpretativa en el que las instrucciones de invitado y las interrupciones se procesan directamente, hasta que surja una condición que requiera la atención del anfitrión. Cuando tiene lugar una condición de este tipo, se finaliza la ejecución interpretativa, y o bien se presenta una interrupción de anfitrión, o bien la instrucción de SIE se completa almacenando detalles de la condición encontrada; esta última acción se denomina intercepción. Un ejemplo de ejecución interpretativa se describe en "System/370 Extended Architecture/Interpretive Executiorí', Publicación de IBM n.° SA22-7095-01, septiembre de 1985.
En particular, en una realización, la utilidad de ejecución interpretativa proporciona una instrucción para la ejecución de máquinas virtuales. Esta instrucción, denominada Iniciar Ejecución Interpretativa (SIE), es emitida por un anfitrión que establece un entorno de ejecución de invitado. El anfitrión es el programa de control que gestiona directamente la máquina real y un invitado se refiere a cualquier máquina virtual o interpretada. La máquina es colocada en el modo de ejecución interpretativa por el anfitrión, que emite la instrucción de SIE. En este modo, la máquina proporciona las funciones de una arquitectura seleccionada (por ejemplo, z/Architecture, ESA/390). Las funciones incluyen, por ejemplo, la ejecución de instrucciones de programa privilegiado y problemático, la traducción de dirección, el manejo de interrupciones y la temporización, entre otras cosas. Se dice que la máquina interpreta las funciones que esta ejecuta en el contexto de la máquina virtual.
La instrucción de SIE tiene un operando, denominado descripción de estado, que incluye información relevante para el estado actual del invitado. Cuando finaliza la ejecución de SIE, la información que representa el estado del invitado, incluyendo la PSW de invitado, se guarda en la descripción de estado antes de que el control se devuelva al anfitrión.
La arquitectura de ejecución interpretativa proporciona un modo de almacenamiento para el almacenamiento absoluto denominado modo de almacenamiento paginable. En el modo de almacenamiento paginable, la traducción de dirección dinámica al nivel de anfitrión se usa para correlacionar el almacenamiento principal de invitado. El anfitrión tiene la capacidad de dispersar el almacenamiento real de los invitados de modo de almacenamiento paginable a tramas utilizables en cualquier lugar del almacenamiento real de anfitrión mediante el uso de la DAT de anfitrión, y de transferir datos de invitado a un almacenamiento auxiliar. Esta técnica proporciona flexibilidad cuando se asignan recursos de máquina real mientras se conserva la apariencia esperada de un rango contiguo de almacenamiento absoluto para el invitado.
Un entorno de máquina virtual puede requerir la aplicación de DAT dos veces: en primer lugar, al nivel de invitado, para traducir una dirección virtual de invitado a través de tablas de traducción gestionadas por invitado a una dirección real de invitado y, entonces, para un invitado paginable, al nivel de anfitrión, para traducir la dirección virtual de anfitrión correspondiente a una dirección real de anfitrión.
En ciertos casos, el anfitrión ha de interceder en operaciones normalmente delegadas a la máquina. Para este fin, la descripción de estado incluye controles ajustables por el anfitrión para "atrapar", o interceptar, condiciones específicas. Los bits de control de interceptación solicitan que la máquina devuelva el control a la simulación de anfitrión cuando se encuentran instrucciones de invitado particulares. Los controles de intervención capturan la introducción de un estado habilitado en la PSW, de tal modo que el anfitrión puede presentar una interrupción que este mantiene pendiente para el invitado. Los controles de intervención pueden ser establecidos de forma asíncrona por el anfitrión en otro procesador real mientras la interpretación procede. La máquina vuelve a recuperar periódicamente del almacenamiento los controles, de tal modo que se reconocen valores actualizados. Por lo tanto, se puede hacer que las interrupciones de invitado queden pendientes sin perturbar de forma prematura la interpretación.
En una realización preferida de la presente invención, para entornos virtuales, se proporciona un indicador de control de ejecución en la descripción de estado de SIE. En general, si el indicador de esta función arquitectónica es cero, la función no se facilita en una máquina virtual y, si el indicador es uno, se intenta una ejecución interpretativa de la función asociada. En un ejemplo, cuando un invitado de modo de almacenamiento paginable está en el modo arquitectónico de ESA/390 y el indicador es uno, la utilidad de NDAT está instalada en el invitado; cuando es cero, NDAT no está instalada. Cuando se instala NDAT, el invitado no ha de usar DAT, independientemente de otros controles (por ejemplo, otros controles o utilidades que controlan la ejecución en entornos virtuales) que puedan regir la disponibilidad de la función de DAT (en otra realización, NDAT se proporciona en un entorno virtual como una utilidad global sin la provisión de un indicador específico).
Además de los controles de ejecución, los controles de modo en la descripción de estado especifican si el invitado se ejecuta en el modo de ESA/390 o de z/Architecture y selecciona una de una pluralidad de formas para representar el almacenamiento principal de invitado de una máquina virtual de invitado en el almacenamiento de anfitrión. De acuerdo con una realización preferida de la presente invención, se proporciona un bit de control en un control de estado para seleccionar entre un invitado en un primer y un segundo modo arquitectónico (por ejemplo, z/Architecture y ESA/390, respectivamente). De acuerdo con otra realización preferida de la presente invención, dos instrucciones distintas pueden proporcionar a un anfitrión la capacidad de crear una primera y una segunda máquina virtual de invitado, por ejemplo, se pueden proporcionar unas instrucciones distintas SIEz y SIEe para iniciar máquinas invitadas en un modo de z/Architecture y de ESA/390, respectivamente.
La instrucción de SIE ejecuta un servidor virtual despachado por el programa de control hasta que se ha consumido el intervalo de tiempo del servidor o hasta que el servidor desea realizar una operación que el hardware no puede virtualizar o para la cual el programa de control ha de recobrar el control. En ese momento, la instrucción de SIE finaliza y el control se devuelve al programa de control, que o bien simula la instrucción o bien coloca al servidor virtual en un estado de espera involuntaria. Cuando se ha completado, el programa de control programa de nuevo el servidor virtual para que se ejecute, y el ciclo comienza de nuevo. De esta manera, la totalidad de las capacidades y la velocidad de la CPU están disponibles para el servidor virtual. Solo se interceptan aquellas instrucciones privilegiadas que requieren asistencia de o validación por el programa de control. Estas interceptaciones de SIE, como son conocidas las mismas, también son usadas por el programa de control para imponer límites a las operaciones que un servidor virtual puede realizar en un dispositivo real.
Se describen detalles adicionales con respecto a SIE en ESA/390 interpretive-execution architecture, foundation for VM/ESA, Osisek et al., IBM Systems Journal, vol. 30, núm. 1, enero de 1991, págs. 34-51.
En una realización preferida de la presente invención, la utilidad de NDAT se instala automáticamente en los invitados de ESA/390 sin referencia a control alguno. Por lo tanto, sin referencia a control alguno en un bloque de control de estado de SIE, u otra opción a una SIE u otra instrucción de creación de máquina virtual, una máquina virtual correspondiente al modo de ESA/390 no tiene acceso alguno a utilidades de DAT.
Un ejemplo adicional de un entorno informático para incorporar y usar uno o más aspectos de la utilidad de No-DAT se describe con referencia a la figura 2. En este ejemplo, un entorno informático 200 incluye un entorno con particiones que está configurado para una pluralidad de modos arquitectónicos, incluyendo z/Architecture y ESA/390 o un subconjunto de ESA/390. Este incluye, por ejemplo, un procesador (unidad de procesamiento central - CPU) 202 que incluye, por ejemplo, la utilidad de No-DAT (NDAT) 204 y una o más cachés 206. El procesador 202 está acoplado comunicativamente a una porción de memoria 208 que tiene una o más cachés 210, y a un subsistema de entrada/salida (E/S) 212. El subsistema de E/S 212 está acoplado comunicativamente a los dispositivos de E/S externos 214 que pueden incluir, por ejemplo, dispositivos de entrada de datos, sensores y/o dispositivos de salida, tales como visualizadores.
Otra realización preferida de la presente invención de un entorno informático para incorporar y usar uno o más aspectos de la utilidad de No-DAT se describe con referencia a la figura 3A. En este ejemplo, un entorno informático 300 incluye, por ejemplo, una unidad de procesamiento central nativa (CPU) 302, una memoria 304 y uno o más dispositivos de entrada/salida y/o interfaces 306 acoplados entre sí a través de, por ejemplo, uno o más buses 308 y/u otras conexiones. Como ejemplos, el entorno informático 300 puede incluir un procesador PowerPC o un servidor Power Systems ofrecidos por International Business Machines Corporation, Armonk, Nueva York; un HP Superdome con procesadores Intel Itanium II ofrecido por Hewlett Packard Co., Palo Alto, California; y/u otras máquinas basadas en arquitecturas ofrecidas por International Business Machines Corporation, Hewlett Packard, Intel, Oracle u otros.
La unidad de procesamiento central nativa 302 incluye uno o más registros nativos 310, tales como uno o más registros de propósito general y/u uno o más registros de propósito especial usados durante el procesamiento en el entorno, así como una utilidad de No-DAT 311. Estos registros incluyen información que representa el estado del entorno en cualquier punto en el tiempo particular.
Además, la unidad de procesamiento central nativa 302 ejecuta instrucciones y código que se almacenan en la memoria 304. En un ejemplo particular, la unidad de procesamiento central ejecuta el código emulador 312 almacenado en la memoria 304. Este código habilita que el entorno informático configurado en una arquitectura emule otras una o más arquitecturas. Por ejemplo, el código emulador 312 permite que máquinas basadas en arquitecturas distintas de la z/Architecture, tales como procesadores PowerPC, servidores Power Systems, servidores HP Superdome u otros, emulen la z/Architecture (y/o ESA/390) y ejecuten software e instrucciones desarrolladas basándose en la z/Architecture.
Detalles adicionales relacionados con el código emulador 312 se describen con referencia a la figura 3B. Las instrucciones de invitado 350 almacenadas en la memoria 304 comprenden instrucciones de software (por ejemplo, correlacionadas con instrucciones de máquina) que se desarrollaron para ejecutarse en una arquitectura distinta de la de la CPU nativa 302. Por ejemplo, las instrucciones de invitado 350 pueden haberse diseñado para ejecutarse en un procesador de z/Architecture 202, pero en su lugar, se están emulando en la CPU nativa 302, que puede ser, por ejemplo, un procesador Intel Itanium II. En un ejemplo, el código emulador 312 incluye una rutina de recuperación de instrucciones 352 para obtener una o más instrucciones de invitado 350 desde la memoria 304, y para proporcionar opcionalmente almacenamiento en memoria intermedia local para las instrucciones obtenidas. También incluye una rutina de traducción de instrucción 354 para determinar el tipo de instrucción de invitado que se ha obtenido y para traducir la instrucción de invitado en una o más instrucciones nativas 356 correspondientes. Esta traducción incluye, por ejemplo, identificar la función a realizarse por la instrucción de invitado y elegir la instrucción o instrucciones nativas para realizar esa función.
Además, el código emulador 312 incluye una rutina de control de emulación 360 para provocar que las instrucciones nativas se ejecuten. La rutina de control de emulación 360 puede provocar que la CPU nativa 302 ejecute una rutina de instrucciones nativas que emulan una o más instrucciones de invitado previamente obtenidas, y en la conclusión de tal ejecución, devolver el control a la rutina de recuperación de instrucciones para emular la obtención de la siguiente instrucción de invitado o un grupo de instrucciones de invitado. La ejecución de las instrucciones nativas 356 puede incluir cargar datos en un registro desde la memoria 304; almacenar datos de vuelta a la memoria de un registro; o realizar algún tipo de operación aritmética o lógica, como se determina por la rutina de traducción.
Cada rutina se implementa, por ejemplo, en software, que se almacena en memoria y se ejecuta por la unidad de procesamiento central nativa 302. En otros ejemplos, una o más de las rutinas u operaciones se implementan en firmware, hardware, software o alguna combinación de los mismos. Los registros del procesador emulado pueden emularse usando los registros 310 de la CPU nativa o usando ubicaciones en la memoria 304. En las realizaciones, las instrucciones de invitado 350, instrucciones nativas 356 y el código emulador 312 pueden residir en la misma memoria o pueden distribuirse entre diferentes dispositivos de memoria.
De acuerdo con al menos una realización preferida de la presente invención de un sistema de emulación de las figuras 3A y 3B, un emulador para un sistema con la utilidad de NDAT instalada para una segunda arquitectura (por ejemplo, ESA/390) pero no para una primera arquitectura (por ejemplo, z/Architecture) contiene rutinas de emulación para implementar la traducción DAT para el modo de z/Architecture, y no contiene rutinas de emulación para implementar la traducción DAT para el modo de arquitectura ESA/390. En cambio, el código emulador 312 para el segundo modo arquitectónico incluye pruebas para determinar si un programa emulado que se ejecuta en el segundo modo arquitectónico está intentando habilitar la traducción DAT y, si es así, para generar directamente una o más indicaciones de error. En otra realización preferida de la presente invención, cuando se usan rutinas de código comunes para implementar una primera y una segunda arquitectura, cuando funciones relacionadas con DAT son invocadas por un programa, se realiza una primera prueba para determinar un modo arquitectónico actual. Si el modo arquitectónico actual corresponde a un primer modo arquitectónico, el control se transfiere a un código que implementa DAT para un primer modo arquitectónico. Cuando un modo actual corresponde a un segundo modo arquitectónico, el control se transfiere a una rutina de error y se invoca el código correspondiente a la habilitación de la traducción DAT o la realización de la traducción DAT.
De acuerdo con al menos una realización preferida de la presente invención, se usa un número de instrucciones (por ejemplo, LRA) junto con DAT y, opcionalmente, se deshabilitan en un segundo modo arquitectónico, cuando se instala la utilidad de NDAT. De acuerdo con al menos una realización preferida de este tipo de la presente invención, el código emulador 312 no contiene código para emular una instrucción correspondiente a una instrucción deshabilitada usada junto con DAT en un segundo modo arquitectónico. De acuerdo con una realización preferida de este tipo de la presente invención, el código emulador 312 contiene, en efecto, código para emular una instrucción correspondiente a una instrucción usada junto con DAT en un primer modo arquitectónico. En otra realización preferida de la presente invención, cuando se usan rutinas de código comunes para implementar una primera y una segunda arquitectura, cuando instrucciones usadas junto con funciones relacionadas con DAT son invocadas por un programa, se realiza una primera prueba para determinar un modo arquitectónico actual. Si el modo actual corresponde a un primer modo arquitectónico, el control se transfiere a un código que implementa tales instrucciones para un primer modo arquitectónico. Cuando un modo actual corresponde a un segundo modo arquitectónico, el control se transfiere a una rutina de error y se invoca el código correspondiente a instrucciones usadas junto con la traducción DAT o la realización de la traducción DAT.
Los entornos informáticos descritos anteriormente son únicamente ejemplos de entornos informáticos que pueden usarse. Pueden usarse otros entornos, incluyendo, pero sin limitación a, otros entornos sin particiones, otros entornos con particiones y/u otros entornos emulados; las realizaciones no se limitan a un entorno cualquiera. Además, aunque en el presente documento se describen ejemplos de arquitecturas específicas, y se describen diferencias arquitectónicas particulares y diferentes funciones arquitectónicas, estos son solo ejemplos. Se pueden usar otras arquitecturas, pueden existir otras diferencias arquitectónicas y/u otras funciones arquitectónicas pueden ser soportadas, o no, por una o más de las arquitecturas.
En una realización preferida de la presente invención, cada entorno informático está configurado para soportar múltiples arquitecturas, tales como una primera arquitectura (por ejemplo, z/Architecture) que ofrece un primer conjunto de funciones arquitectónicas, que incluyen, pero sin limitarse a, traducción de dirección dinámica; y una segunda arquitectura (por ejemplo, ESA/390) que ofrece un segundo conjunto de funciones arquitectónicas. El segundo conjunto de funciones arquitectónicas es un conjunto reducido de funciones, en el sentido de que una o más de las funciones, tales como DAT, incluidas en el primer conjunto de funciones arquitectónicas, están ausentes del segundo conjunto de funciones arquitectónicas.
La traducción de dirección dinámica (DAT) proporciona la capacidad de interrumpir la ejecución de un programa en un momento arbitrario, registrar este y sus datos en un almacenamiento auxiliar, tal como un dispositivo de almacenamiento de acceso directo y, en un momento posterior, devolver el programa y los datos a unas ubicaciones de almacenamiento principal diferentes para la reanudación de la ejecución. La transferencia del programa y sus datos entre el almacenamiento principal y auxiliar se puede realizar de forma fragmentada, y la devolución de la información al almacenamiento principal puede tener lugar en respuesta a un intento por la CPU de acceder al mismo en el momento en el que se necesita para la ejecución. Estas funciones se pueden realizar sin cambio o inspección del programa y sus datos, no requieren convención de programación explícita alguna para el programa reubicado y no perturban la ejecución del programa excepto por el tiempo de retardo implicado.
Con el soporte apropiado por un sistema operativo, la utilidad de traducción de dirección dinámica se puede usar para proporcionar a un usuario un sistema en donde el almacenamiento parece ser más grande que el almacenamiento principal que está disponible en la configuración. Este almacenamiento principal aparente se denomina almacenamiento virtual, y las direcciones usadas para designar ubicaciones en el almacenamiento virtual se denominan direcciones virtuales. El almacenamiento virtual de un usuario puede superar con creces el tamaño del almacenamiento principal que está disponible en la configuración y normalmente se mantiene en un almacenamiento auxiliar. Se considera que el almacenamiento virtual está compuesto por bloques de direcciones, denominados páginas. Solo las páginas a las que se hace referencia más recientemente del almacenamiento virtual se asignan para ocupar bloques de un almacenamiento principal físico. Debido a que el usuario se refiere a páginas de almacenamiento virtual que no aparecen en el almacenamiento principal, estas se aportan para reemplazar páginas del almacenamiento principal que es menos probable que se necesiten. El intercambio de las páginas de un almacenamiento puede ser realizado por el sistema operativo sin el conocimiento del usuario.
La secuencia de direcciones virtuales asociadas con un almacenamiento virtual se denomina espacio de direcciones. Con el soporte apropiado por un sistema operativo, la utilidad de traducción de dirección dinámica se puede usar para proporcionar un número de espacios de direcciones. Estos espacios de direcciones se pueden usar para proporcionar grados de aislamiento entre usuarios. Tal soporte puede incluir un espacio de direcciones completamente diferente para cada usuario, proporcionando de este modo un aislamiento completo, o se puede proporcionar un área compartida correlacionando una porción de cada espacio de direcciones con una única área de almacenamiento común. También se proporcionan instrucciones que permiten que un programa semiprivilegiado acceda a más de un espacio de direcciones de este tipo. La traducción de dirección dinámica prevé la traducción de, por ejemplo, direcciones virtuales desde múltiples espacios de direcciones diferentes sin requerir que se cambien los parámetros de traducción en los registros de control. Estos espacios de direcciones se denominan espacio de direcciones primario, espacio de direcciones secundario y espacios de direcciones especificados por AR. Un programa privilegiado también puede hacer que se acceda al espacio de direcciones propias.
En el proceso de reemplazar bloques de almacenamiento principal por información nueva procedente de un medio externo, se ha de determinar qué bloque reemplazar y si el bloque que se está reemplazando se debería registrar y conservar en un almacenamiento auxiliar. Para ayudar en este proceso de decisión, un bit de referencia y un bit de cambio se asocian con la clave de almacenamiento.
La traducción de dirección dinámica se puede especificar para direcciones de instrucciones y de datos generadas por la CPU.
El cálculo de direcciones se puede llevar a cabo en el modo de direccionamiento de 24 bits, de 31 bits o de 64 bits. Cuando el cálculo de direcciones se realiza en el modo de direccionamiento de 24 bits o de 31 bits, se adjuntan 40 o 33 ceros, respectivamente, a la izquierda para formar una dirección de 64 bits. Por lo tanto, la dirección lógica resultante tiene una longitud de 64 bits. La dirección real o absoluta que se forma mediante la traducción de dirección dinámica, y la dirección absoluta que se forma entonces mediante la adición de prefijo, en una realización, tienen una longitud de 64 bits.
La traducción de dirección dinámica es el proceso de traducir una dirección virtual durante una referencia de almacenamiento a la dirección real o absoluta correspondiente. La dirección virtual puede ser una dirección virtual primaria, una dirección virtual secundaria, una dirección virtual especificada por AR (Registro de Acceso) o una dirección virtual propia. Las direcciones se traducen por medio del elemento de control de espacio de direcciones primarias, secundarias, especificadas por AR o propias, respectivamente. Después de seleccionar el elemento de control de espacio de direcciones apropiado, el proceso de traducción es el mismo para la totalidad de los cuatro tipos de dirección virtual. Un elemento de control de espacio de direcciones puede ser una designación de tabla de segmentos que especifica un espacio de direcciones de 2 GB, una designación de tabla de regiones que especifica un espacio de 4 t B, 8 PB o 16 EB, o una designación de espacio real que especifica un espacio de 16 EB (las letras K, M, G, T, P y E representan kilo, 210; mega, 220; giga, 230; tera, 240; peta, 250; y exa, 260, respectivamente). Una designación de tabla de segmentos o una designación de tabla de regiones hace que se realice una traducción por medio de tablas establecidas por el sistema operativo en un almacenamiento real o absoluto. Una designación de espacio real hace que la dirección virtual simplemente se trate como una dirección real, sin el uso de tablas en el almacenamiento.
En el proceso de traducción cuando se usa una designación de tabla de segmentos o una designación de tabla de regiones, se reconocen tres tipos de unidades de información - regiones, segmentos y páginas. Una región es un bloque de direcciones virtuales secuenciales que abarca, por ejemplo, 2 GB y que comienza en un límite de 2 GB. Un segmento es un bloque de direcciones virtuales secuenciales que abarca, por ejemplo, 1 MB y que comienza en un límite de 1 MB. Una página es un bloque de direcciones virtuales secuenciales que abarca, por ejemplo, 4 KB y que comienza en un límite de 4 KB.
En consecuencia, la dirección virtual se divide en cuatro campos principales. Los bits 0-32 se denominan índice de región (RX), los bits 33-43 se denominan índice de segmento (SX), los bits 44-51 se denominan índice de página (PX) y los bits 52-63 se denominan índice de byte (BX).
Según es determinado por su elemento de control de espacio de direcciones, un espacio de direcciones virtuales puede ser un espacio de 2 GB que incluye una región, o puede ser un espacio de hasta 16 EB que incluye regiones de hasta 8 GB. La parte de RX de una dirección virtual que se aplica a un espacio de direcciones de 2 GB ha de ser toda de ceros; de lo contrario, se reconoce una excepción, en un ejemplo.
La parte de RX de una dirección virtual se divide, en sí misma, en tres campos. Los bits 0-10 se denominan índice de región primera (RFX), los bits 11-21 se denominan índice de región segunda (RSX) y los bits 22-32 se denominan índice de región tercera (RTX).
Un ejemplo de traducción de una dirección virtual a una dirección real se describe con referencia a la figura 4. En este ejemplo, un elemento de control de espacio de direcciones 400 incluye un origen de tabla 402, así como un control de tipo de designación (DT) 404, que es una indicación de un nivel de inicio para la traducción (es decir, una indicación de a qué nivel en la jerarquía ha de comenzar la traducción de dirección). Usando el origen de tabla 402 y el DT 404, se ubica el origen de una tabla particular. Entonces, basándose en la tabla, se usan bits de la dirección virtual para indexar a la tabla específica para obtener el origen de la tabla del siguiente nivel. Por ejemplo, si se selecciona la tabla de región primera 406, entonces los bits 0-10 (RFX) 408 de la dirección virtual se usan para indexar a la tabla de región primera para obtener un origen de una tabla de región segunda 410. Entonces, los bits 11-21 (RSX) 412 de la dirección virtual se usan para indexar a la tabla de región segunda 410 para obtener un origen de una tabla de región tercera 414. De manera similar, los bits 22-32 (RTX) 416 de la dirección virtual se usan para indexar a la tabla de región tercera 414 para obtener un origen de una tabla de segmentos 418. Entonces, los bits 33-43 (SX) 420 de la dirección virtual se usan para indexar a la tabla de segmentos 418 para obtener un origen de la tabla de páginas 422, y los bits 44-51 (PX) 424 de la dirección virtual se usan para indexar a la tabla de páginas 422 para obtener una entrada de tabla de páginas (PTE) 425 que tiene una dirección real de trama de página 426. Entonces, la dirección real de trama de página se combina (por ejemplo, se concatena) con el desplazamiento 428 (los bits 52-63) para obtener una dirección real.
Como se describe en el presente documento, en un aspecto, la utilidad de traducción de dirección dinámica no se incluye en un conjunto de funciones disponibles proporcionadas por una arquitectura seleccionada. En particular, en un ejemplo, se proporciona una utilidad de No-Da T, que indica que no se soporta DAT. La utilidad de No-DAT se puede proporcionar en un entorno informático instalando la utilidad y, opcionalmente, estableciendo un indicador, tal como un bit de utilidad, por ejemplo, el bit 140, que indica que esta está instalada. En un ejemplo, si el bit se establece a uno, entonces la utilidad está instalada. Aunque en una realización, la utilidad se habilita a través de un bit de utilidad, en otras realizaciones, esta se puede habilitar mediante otros mecanismos. Por ejemplo, en un entorno que tiene invitados virtuales, la utilidad puede estar habilitada por defecto.
Además, la utilidad de No-DAT se puede proporcionar ofreciendo un subconjunto o un conjunto reducido de la arquitectura seleccionada que no incluye la utilidad de DAT. En este entorno, puede que no haya indicación explícita alguna de que esta no se soporta, la misma simplemente está ausente de la arquitectura. En una realización, la utilidad de No-DAT (también denominada NDAT, ESA/390-No-DAT o 390NDAT) puede estar disponible en un modelo que implementa la z/Architecture. La utilidad suprime la posibilidad de que una configuración esté en el modo arquitectónico de ESA/390 con una traducción de dirección dinámica (DAT) activada. Es decir, una configuración en el modo arquitectónico de ESA/390 no puede tener DAT activada, cuando se proporciona la utilidad de NDAT. Un intento de activar DAT provoca una interrupción de programa de excepción de No-DAT, en una realización. En otras realizaciones, se proporcionan otros códigos de interrupción de programa u otras formas de indicar un error. En otra realización más, no se indica un error, pero DAT permanece deshabilitada.
En una realización, la habilitación de la utilidad de No-DAT en un procesador configurado para la utilidad es una opción; mientras que, en otras realizaciones, esta se instala y se habilita automáticamente en todos los procesadores de un entorno informático (o en procesadores seleccionados, en otra realización más). En una realización particular, la utilidad de No-DAT se ha de instalar en configuraciones de invitado - 2 (un invitado de segundo nivel en el que el invitado es inicializado por otro invitado). En una configuración de este tipo, si el invitado 2 se inicializa en ESA/390, este no será capaz de usar DAT; aunque los procesadores de invitado 1 y de anfitrión se pueden inicializar en z/Architecture y, por lo tanto, hacer uso de DAT. Además, en una realización, se puede iniciar un invitado 1 o un anfitrión en ESA/390 y la utilidad de No-DAT no está habilitada. Por lo tanto, el invitado 1 o el anfitrión puede usar DAT, mientras que No-DAT está instalada para el invitado 2 y, por lo tanto, el invitado 2 no puede usar DAT cuando está en ESA/390.
Cuando la utilidad de No-DAT está instalada en un entorno informático que soporta múltiples modos arquitectónicos, DAT se puede realizar cuando el entorno está en un primer modo arquitectónico, tal como el modo arquitectónico de z/Architecture, pero no cuando el entorno está en un segundo modo arquitectónico, tal como el modo arquitectónico de ESA/390. Cualquier intento de realizar DAT cuando se está en el modo arquitectónico de ESA/390, y se proporciona NDAT, da como resultado, por ejemplo, una interrupción de programa de excepción de No-DAT, en un ejemplo. En otras realizaciones, se usa otra interrupción de programa para indicar un error. En otra realización más, no se indica error alguno y la ejecución procede, pero DAT no está habilitada.
Como se indica en el presente documento, se reconoce una excepción de No-DAT cuando la función de traducción de dirección dinámica no se proporciona en la configuración y se realiza un intento de activar DAT o de realizar DAT. La excepción se reconoce en los siguientes casos, como ejemplos:
1. Se realiza un intento de activar DAT mediante la ejecución de una instrucción de CARGAR PSW. El valor a cargar no se comprueba antes de cambiar la PSW.
2. Se ejecuta una instrucción de CARGAR DIRECCIÓN REAL. Se suprime la ejecución y el código de longitud de instrucción se establece a 2.
3. Se realiza un intento de activar DAT mediante la ejecución de una instrucción de ESTABLECER MÁSCARA DE SISTEMA. El valor a establecer no se comprueba antes de cambiar la PSW actual.
4. Se realiza un intento de activar DAT mediante la ejecución de una instrucción de ALMACENAR ENTONCES O MÁSCARA DE SISTEMA. El valor junto con el cual se va a aplicar una operación O a la máscara de sistema no se comprueba antes de cambiar la máscara de sistema de la PSW actual.
5. De manera similar al caso 1, tiene lugar una interrupción y la PSW de interrupción nueva tiene la posición de bit 5 como un uno.
Cada uno de los casos anteriores se describe adicionalmente a continuación: Se describen detalles adicionales con respecto a una instrucción de Cargar PSW con referencia a la figura 5. En una realización, una instrucción de Cargar PSW 500 incluye un campo de código de operación 502 que incluye un código de operación (opcode) para indicar una operación de cargar PSW; un campo de base (B2) 504; y un campo de desplazamiento (D2) 506. Los contenidos del registro general designado por el campo B2 se añaden a los contenidos del campo D2 para formar una dirección de un segundo operando en el almacenamiento (denominada dirección de segundo operando).
Durante el funcionamiento de la instrucción de Cargar PSW, la PSW actual se reemplaza por una PSW de 16 bytes formada a partir de los contenidos de la palabra doble en la ubicación designada por la dirección de segundo operando. El bit 12 de la palabra doble ha de ser uno; de lo contrario, se puede reconocer una excepción de especificación, dependiendo del modelo. Si se instala una utilidad de Modo Arquitectónico de z/Architecture de Configuración (CZAM), se reconoce entonces una excepción de especificación si el bit 12 de la palabra doble no es uno. En una realización, la utilidad de CZAM reconfigura un entorno informático (por ejemplo, procesador, LPAR, invitado) de tal modo que ya no se soportan uno o más aspectos de una arquitectura, tal como ESA/390, en un entorno soportado por múltiples arquitecturas. La instalación de CZAM afecta a ciertos procesos del entorno informático, tales como el encendido, el reinicio, etc. Por ejemplo, si CZAM está instalado y habilitado, entonces una secuencia de encendido o de reinicio inicia z/Architecture, en lugar de, por ejemplo, ESA/390. Se describen aspectos de CZAM en la solicitud presentada junto con la presente y de cesión común titulada "Architectural Mode Configuraron, Gainey et al., (n.° de expediente de IBM POU920140021US1).
Los bits 0-32 de la palabra doble, excepto con el bit 12 invertido, se colocan en las posiciones 0-32 de la PSW actual. Los bits 33-63 de la palabra doble se colocan en las posiciones 97-127 de la PSW actual. Los bits 33-96 de la PSW actual se establecen a cero.
Se realiza una función de serialización y de sincronización de puntos de comprobación antes o después de que se haya recuperado el operando y de nuevo después de que se haya completado la operación.
El operando se ha de designar en un límite de palabra doble; de lo contrario, se reconoce una excepción de especificación. Se puede reconocer una excepción de especificación si el bit 12 del operando es cero, dependiendo del modelo.
No se comprueba la validez de los campos de PSW que van a ser cargados por la instrucción antes de que se carguen los mismos, excepto para la comprobación del bit 12. Sin embargo, inmediatamente después de la carga, se reconoce una excepción de especificación y tiene lugar una interrupción de programa, cuando cualquiera de los siguientes puntos es verdadero para la PSW recién cargada:
• Cualquiera de los bits 0, 2-4, 12 o 24-30 es un uno.
• Los bits 31 y 32 son ambos cero, y los bits 97-103 no son todos cero.
• Los bits 31 y 32 son uno y cero, respectivamente.
En estos casos, la operación se completa y el código de longitud de instrucción resultante es 0.
La operación se suprime en todas las excepciones de direccionamiento y de protección.
Código de Condición resultante: El código se establece como se especifica en la PSW Cargada nueva. Excepciones de programa:
• Acceso (recuperar, operando 2)
• Operación privilegiada
• Especificación
Nota de programación: El segundo operando debería tener el formato de una PSW de ESA/390, un ejemplo de lo cual se describe a continuación. Se reconocerá una excepción de especificación durante o después de la ejecución de CARGAR PSW si el bit 12 del operando es cero.
Se describen detalles adicionales con respecto a la PSW en "Development and Attributes of z/Architecture", Plambeck et al., IBM J. Res. & Dev., Vol. 46, n.° 4/5, julio/septiembre de 2002.
Una realización de un formato de una palabra de estado de programa (PSW) se describe con referencia a la figura 6. Haciendo referencia a la figura 6, en este ejemplo, el formato de la palabra de estado de programa es un formato de ESA/390, excepto por que el bit 31 se muestra como EA, como se indica a continuación.
En una realización, una palabra de estado de programa 600 incluye los siguientes campos, como un ejemplo:
Por Máscara (R) 602: El bit 1 controla si la CPU está habilitada para las interrupciones asociadas con el registro de eventos de programa (PER). Cuando el bit es cero, ningún evento de PER puede dar lugar a una interrupción. Cuando el bit es uno, se permiten interrupciones, sujetas a los bits de máscara de evento de PER en el registro de control 9; Modo de DAT (T) 604: El bit 5 controla si tiene lugar una traducción de dirección dinámica (DAT) implícita de las direcciones lógicas y de instrucción usadas para acceder al almacenamiento. Cuando el bit es cero, DAT está desactivada y las direcciones lógicas y de instrucción se tratan como direcciones reales. Cuando el bit es uno, DAT está activada y se invoca el mecanismo de traducción de dirección dinámica.
Máscara de E/S (ES) 606: El bit 6 controla si la CPU está habilitada para interrupciones de E/S. Cuando el bit es cero, no puede tener lugar una interrupción de E/S. Cuando el bit es uno, las interrupciones de E/S están sujetas a los bits de máscara de subclase de interrupción de E/S en el registro de control 6. Cuando un bit de máscara de subclase de interrupción de E/S es cero, no puede tener lugar una interrupción de E/S para esa subclase de interrupción de E/S; cuando el bit de máscara de subclase de interrupción de E/S es uno, puede tener lugar una interrupción de E/S para esa subclase de interrupción de E/S;
Máscara externa (EX) 608: El bit 7 controla si la CPU está habilitada para la interrupción por condiciones incluidas en la clase externa. Cuando el bit es cero, no puede tener lugar una interrupción externa. Cuando el bit es uno, una interrupción externa está sujeta a los bits de máscara de subclase externos correspondientes en el registro de control 0. Cuando el bit de máscara de subclase es cero, las condiciones asociadas con la subclase no pueden dar lugar a una interrupción. Cuando el bit de máscara de subclase es uno, puede tener lugar una interrupción en esa subclase. Clave de PSW (Clave) 610: Los bits 9-11 forman la clave de acceso para las referencias de almacenamiento por la CPU. Si la referencia está sujeta a una protección controlada por clave, la clave de PSW se hace coincidir con una clave de almacenamiento cuando se almacena información o cuando se recupera información de una ubicación que está protegida contra la recuperación. Sin embargo, para uno de los operandos de cada uno de Mover a Primaria, Mover a Secundaria, Mover con Clave, Mover con Clave de Origen y Mover con Clave de Destino, y para uno cualquiera o ambos de los operandos de Mover con Especificaciones Opcionales, en lugar de la clave de PSW se usa una clave de acceso especificada como un operando.
Bit 12612: Este bit indica el modo arquitectónico actual. Este se establece a uno para el formato de PSW de ESA/390. Para el formato de PSW de z/Architecture, se define que este bit es cero. Cuando se está en el modo de z/Architecture, se define una instrucción ampliada de cargar PSW (LPSWE) para cargar una PSW de z/Architecture verdadera (que tiene un formato diferente al formato descrito en el presente documento, que incluye tener una dirección de instrucción en los bits 64-127). Sin embargo, se sigue soportando una cargar PSW de ESA/390 (LPSW) y se puede usar para cargar una PSW de formato de ESA/390. Cuando se ejecuta LPSW y el entorno informático está en modo de z/Architecture, el procesador amplía la PSW de formato de ESA/390 al formato z/Architecture, incluyendo la inversión del bit 12. Esto es lo inverso de colapsar el formato de PSW de z/Architecture que el sistema operativo realiza para crear la PSW de formato de ESA/390. Es decir, en entornos informáticos que soportan tanto ESA/390 como z/Architecture, cuando una copia de una PSW se coloca en un almacenamiento, el sistema operativo colapsa la PSW de z/Architecture completa al tamaño y formato de una PSW de ESA/390. Por lo tanto, otro software con dependencias de formato de PSW puede no ser consciente de la PSW de z/Architecture.
Máscara de Comprobación de Máquina (M) 614: El bit 13 controla si la CPU está habilitada para la interrupción por condiciones de comprobación de máquina. Cuando el bit es cero, no puede tener lugar una interrupción de comprobación de máquina. Cuando el bit es uno, se permiten interrupciones de comprobación de máquina debido a daño de sistema y daño de procesamiento de instrucciones, pero las interrupciones debido a otras condiciones de subclase de comprobación de máquina están sujetas a los bits de máscara de subclase en el registro de control 14.
Estado de Espera (W) 616: Cuando el bit 14 es uno, la CPU está esperando; es decir, la CPU no procesa instrucción alguna, pero pueden tener lugar interrupciones. Cuando el bit 14 es cero, la recuperación y ejecución de instrucciones tiene lugar de la manera normal. El indicador de espera es uno cuando el bit es uno.
Estado de problema (P) 618: Cuando el bit 15 es uno, la CPU está en el estado de problema. Cuando el bit 15 es cero, la CPU está en el estado de supervisor. En el estado de supervisor, todas las instrucciones son válidas. En el estado de problema, solo son válidas aquellas instrucciones que proporcionen una información significativa al programa problemático y que no puedan afectar a la integridad del sistema; tales instrucciones se denominan instrucciones no privilegiadas. Las instrucciones que no son válidas en el estado de problema se denominan instrucciones privilegiadas. Cuando una CPU en el estado de problema intenta ejecutar una instrucción privilegiada, se reconoce una excepción de operación privilegiada. Otro grupo de instrucciones, denominadas instrucciones semiprivilegiadas, son ejecutadas por una CPU en el estado de problema solo si se cumplen pruebas de autoridad específicas; de lo contrario, se reconoce una excepción de operación privilegiada o alguna otra excepción de programa, dependiendo del requisito particular que se infringe.
Control de Espacio de Direcciones (AS) 620: Los bits 16 y 17, junto con el bit de PSW 5, controlan el modo de traducción.
Código de Condición (CC) 622: Los bits 18 y 19 son los dos bits del código de condición. El código de condición se establece a 0, 1, 2 o 3, dependiendo del resultado obtenido al ejecutar ciertas instrucciones. La mayoría de las operaciones aritméticas y lógicas, así como algunas otras operaciones, establecen el código de condición. La instrucción de RAMIFICARSE SEGÚN CONDICIÓN puede especificar cualquier selección de los valores de código de condición como un criterio para la ramificación.
Máscara de Programa 624: Los bits 20-23 son los cuatro bits de máscara de programa. Cada bit está asociado con una excepción de programa, como sigue:
Bit de Máscara de Programa Excepción de programa
20 Desbordamiento de punto fijo
21 Desbordamiento decimal
22 Subdesbordamiento de exponente de HFP
23 Importancia de HFP
Cuando el bit de máscara es uno, la excepción da como resultado una interrupción. Cuando el bit de máscara es cero, no tiene lugar interrupción alguna. El establecimiento del bit de máscara de subdesbordamiento de exponente de HFP del bit de máscara de importancia de HFP también determina la manera en la que se completa la operación cuando tiene lugar la excepción correspondiente.
Modo de Direccionamiento Ampliado (EA) 626: El bit 31 controla el tamaño de las direcciones efectivas y la generación de direcciones efectivas junto con el bit 32, el bit del modo de direccionamiento básico. Cuando el bit 31 es cero, el modo de direccionamiento es controlado por el bit 32. Cuando los bits 31 y 32 son ambos uno, se especifica el direccionamiento de 64 bits.
Modo de Direccionamiento Básico (BA) 628: Los bits 31 y 32 controlan el tamaño de las direcciones efectivas y la generación de direcciones efectivas. Cuando los bits 31 y 32 son ambos cero, se especifica el direccionamiento de 24 bits. Cuando el bit 31 es cero y el bit 32 es uno, se especifica el direccionamiento de 31 bits. Cuando los bits 31 y 32 son ambos uno, se especifica el direccionamiento de 64 bits. El bit 31 uno y el bit 32 cero es una combinación no válida que hace que se reconozca una excepción de especificación. El modo de direccionamiento no controla el tamaño de las direcciones de PER o de las direcciones usadas para acceder a las tablas de DAT, de ASN, de control de unidad despachable, de vinculación, de entrada y de rastreo o a las listas de acceso o la pila de vinculación. El control del modo de direccionamiento por los bits 31 y 32 de la PSW se resume como sigue:
PSW: 31 PSW: 32 Modo de direccionamiento
0 0 24 bits
0 1 31 bits
1 1 64 bits
Dirección de instrucción 630: Los bits 33-63 de la PSW son la dirección de instrucción. La dirección designa la ubicación del byte más a la izquierda de la siguiente instrucción a ejecutar, a menos que la CPU esté en el estado de espera (el bit 14 de la PSW es uno).
Como se ha descrito anteriormente, además de la instrucción de Cargar PSW, la instrucción de Cargar Dirección Real puede hacer que se reconozca una excepción de No-DAT.
Los formatos ilustrativos de la instrucción de Cargar Dirección Real se representan en las figuras 7A-7C. Como se muestra en la figura 7A, en una realización, una instrucción de Cargar Dirección Real 700 tiene una pluralidad de campos que incluyen, por ejemplo, un campo de código de operación 702 que tiene un opcode que indica una operación de cargar dirección real; un primer campo de registro (Ri) 704; un campo de índice (X2) 706; un campo de base (B2) 708; y un campo de desplazamiento (D2) 710.
En otra realización, haciendo referencia a la figura 7B, una instrucción de Cargar Dirección Real 720 tiene una pluralidad de campos que incluyen, por ejemplo, un campo de código de operación 722a, 722b que tiene un opcode que indica una operación de cargar dirección de lectura; un primer campo de registro (Ri) 724; un campo de índice (X2) 726; un campo de base (B2) 728; y una pluralidad de campos de desplazamiento (DL2, DH2) 730a, 730b.
En otra realización más, haciendo referencia a la figura 7C, una instrucción de Cargar Dirección Real 740 tiene una pluralidad de campos que incluyen, por ejemplo, un campo de código de operación 742a, 742b que tiene un opcode que indica una operación de cargar dirección de lectura; un primer campo de registro (Ri) 744; un campo de índice (X2) 746; un campo de base (B2) 748; y una pluralidad de campos de desplazamiento (DL2, DH2) 750a, 750b.
En los formatos anteriores, Ri especifica un registro general que incluye un primer operando; y los contenidos de los registros generales designados por los campos X2 y B2 se añaden a los contenidos del campo D2 o de los campos DH2 y DL2 para formar la dirección de segundo operando.
Para Cargar Dirección Real (LRA, LRAY) en el modo de direccionamiento de 24 bits o de 31 bits, si los bits 0-32 de la dirección real o absoluta de 64 bits correspondiente a la dirección virtual de segundo operando son todos cero, los bits 32-63 de la dirección real o absoluta se colocan en las posiciones de bit 32-63 del registro general R1, y los bits 0-31 del registro permanecen sin cambios. Si los bits 0-32 de la dirección real, o absoluta, no son todos cero, se reconoce una excepción de operación especial.
Para LRA o LRAY en el modo de direccionamiento de 64 bits, y para Cargar Dirección Real (LRAG) en cualquier modo de direccionamiento, la dirección real o absoluta de 64 bits correspondiente a la dirección virtual de segundo operando se coloca en el registro general R1.
Cuando EDAT-1 (DAT-1 potenciada) no es de aplicación, o cuando EDAT-1 es de aplicación pero el segundo operando se traduce por medio de una entrada de tabla de segmentos (STE) en la que el control de formato de STE es cero, la dirección colocada en el registro general R1 es real. Cuando es de aplicación EDAT-1 y el segundo operando se traduce por medio de una entrada de tabla de segmentos en la que el control de formato de STE es uno, o cuando es de aplicación EDAT-2 y el segundo operando se traduce por medio de una entrada de tabla de región tercera en la que el control de formato de RTTE es uno, la dirección colocada en el registro general R1 es absoluta.
La dirección virtual especificada por los campos X2, B2 y D2 se traduce por medio de la utilidad de traducción de dirección dinámica, independientemente de si DAT está activada o desactivada.
El desplazamiento para LRA se trata como un número entero binario sin signo de 12 bits. El desplazamiento para LRAY y LRAG se trata como un número entero binario con signo de 20 bits.
DAT se realiza usando un elemento de control de espacio de direcciones que depende del valor actual de los bits de control de espacio de direcciones, los bits 16 y 17 de la PSW, como se muestra en la tabla siguiente:
Bits de PSW 16 y 17 Elemento de Control de Espacio de Direcciones Usado por DAT
00 Contenidos del registro de control 1
10 Contenidos del registro de control 7
01 El elemento de control de espacio de direcciones obtenido aplicando el proceso de traducción de registro de acceso (ART) al registro de acceso designado por el campo B2 11 Contenidos del registro de control 13
ART y DAT se pueden realizar con el uso de la memoria intermedia de ART adelantada (ALB) y la memoria intermedia de traducción adelantada (TLB), respectivamente.
El cálculo de direcciones virtuales se realiza de acuerdo con el modo de direccionamiento actual, especificado por los bits 31 y 32 de la PSW actual.
Las direcciones de la entrada o entradas de tabla de regiones, si se usan, y de la entrada de tabla de segmentos y la entrada de tabla de páginas, si se usan, se tratan como direcciones de 64 bits, independientemente del modo de direccionamiento actual. No se puede predecir si las direcciones de estas entradas se tratan como direcciones reales o absolutas.
El código de condición 0 se establece cuando se pueden completar tanto ART, si es aplicable, como DAT, y no se reconoce una excepción de operación especial, es decir, cuando se puede obtener un elemento de control de espacio de direcciones, la entrada en cada tabla de DAT se encuentra dentro de la tabla y tiene un bit I cero y, para LRA o LRAY en el modo de direccionamiento de 24 bits o de 31 bits, los bits 0-32 de la dirección real o absoluta resultante son cero. No se inspecciona la alineación de límite o las excepciones de direccionamiento o de protección de dirección traducida.
Cuando los bits 16 y 17 de PSW son 01 binario y no se puede obtener un elemento de control de espacio de direcciones debido a una condición que normalmente daría lugar a una de las excepciones mostradas a continuación, (1) el código de interrupción asignado a la excepción se coloca en las posiciones de bit 48-63 del registro general R1, el bit 32 de este registro se establece a uno, los bits 33-47 se establecen a cero y los bits 0-31 permanecen sin cambios, y (2) la instrucción se completa estableciendo el código de condición 3.
Nombre de Excepción Causa Código (Hexadecimal) especificación de ALET Los bits 0-6 del testigo de entrada de lista de acceso 0028
(ALET) no son todos cero
Traducción de ALEN Entrada de lista de acceso (ALE) fuera de la lista o no 0029
válida (el bit 0 es uno)
Secuencia de ALE El número de secuencia de ALE (ALESN) en ALET no es 002A
igual a ALESN en ALE
Validez de ASTE entrada de segunda tabla de ASN (ASTE) no válida (el bit 002B
0 es uno)
Secuencia de ASTE El número de secuencia de ASTE (ASTESN) en ALE no 002C
es igual a ASTESN en ASTE
Autoridad ampliada bit privado de ALE distinto de cero, ALE 002D
el índice de autorización (ALEAX) no es igual al índice de autorización ampliado (EAX), y el bit secundario seleccionado por EAX o bien está fuera de la tabla de autoridades o bien es cero
Cuando ART se completa normalmente, la operación se continúa mediante la realización de DAT.
Cuando la entrada de tabla de segmentos está fuera de la tabla y los bits 0-32 de la dirección real o absoluta de la entrada son todos cero, se establece el código de condición 3, los bits 32-63 de la dirección de entrada se colocan en las posiciones de bit 32-63 del registro general R1, y los bits 0-31 del registro permanecen sin cambios. Si los bits 0­ 32 de la dirección no son todos cero, el resultado es como se muestra a continuación.
Para LRA o LRAY en el modo de direccionamiento de 64 bits o LRAG en cualquier modo de direccionamiento, cuando el bit I en la entrada de tabla de segmentos es uno, se establece el código de condición 1 y la dirección real o absoluta de 64 bits de la entrada de tabla de segmentos se coloca en el registro general R1. En este caso, excepto por que LRA o LRAY está en el modo de direccionamiento de 24 bits o de 31 bits, si los bits 0-32 de la dirección de la entrada de tabla de segmentos son todos cero, el resultado es el mismo excepto por que los bits 0-31 del registro general R1 permanecen sin cambios. Si los bits 0-32 de la dirección no son todos cero, el resultado es como se muestra a continuación.
Para LRA o LRAY en el modo de direccionamiento de 64 bits o LRAG en cualquier modo de direccionamiento, cuando el bit I en la entrada de tabla de páginas es uno, se establece el código de condición 2 y la dirección real o absoluta de 64 bits de la entrada de tabla de páginas se coloca en el registro general R1. En este caso, excepto por que LRA o LRAY está en el modo de direccionamiento de 24 bits o de 31 bits, si los bits 0-32 de la dirección de la entrada de tabla de páginas son todos cero, el resultado es el mismo excepto por que los bits 0-31 del registro general R1 permanecen sin cambios. Si los bits 0-32 de la dirección no son todos cero, el resultado es como se muestra a continuación.
Una dirección de entrada de tabla de segmentos o de entrada de tabla de páginas colocada en el registro general R1 es real o absoluta de acuerdo con el tipo de dirección que se usó durante la traducción intentada.
Si existe una condición que normalmente daría lugar a una de las excepciones mostradas a continuación, (1) el código de interrupción asignado a la excepción se coloca en las posiciones de bit 48-63 del registro general R1, el bit 32 de este registro se establece a uno, los bits 33-47 se establecen a cero y los bits 0-31 permanecen sin cambios, y (2) la instrucción se completa estableciendo el código de condición 3.
Nombre de Causa Código Excepción ______________________________________________________________________ (Hexadecimal) Tipo de ASCE El elemento de control de espacio de direcciones (ASCE) que se usa es una 0038
designación de tabla de región segunda y los bits 0-10 de la dirección virtual no son todos cero; ASCE es una designación de tabla de región tercera, y los bits 0-21 de la dirección virtual no son todos cero; o ASCE es una designación de tabla de segmentos, y los bits 0-32 de la dirección virtual no son todos cero.
Región primera Entrada de tabla de región primera seleccionada por una porción de índice de 0039
traducción de región primera de una dirección virtual fuera de la tabla o no válida. Traducción de Entrada de tabla de región segunda seleccionada por una porción de índice de 003A región segunda región segunda de una dirección virtual fuera de la tabla o no válida.
Traducción de Entrada de tabla de región tercera seleccionada por una porción de índice de 003B región tercera región tercera de una dirección virtual fuera de la tabla o no válida.
Taducción de Entrada de tabla de segmentos seleccionada por una porción de índice de 0010 segmento segmento de una dirección virtual fuera de la tabla (solo cuando los bits 0-32 de
la dirección de entrada no son todos cero); o entrada de tabla de segmentos no válida (solo LRA o LRAY, y solo en el modo de direccionamiento de 24 bits o de 31 bits cuando los bits 0-32 de la dirección de entrada no son todos cero).
Traducción de Entrada de tabla de páginas seleccionada por la porción de índice de página de 0011 página la dirección virtual no válida (solo LRA y LRAY, y solo en el modo de direccionamiento de 24 bits o de 31 bits cuando los bits 0-32 de la dirección de entrada no son todos cero).
Condiciones
especiales
Se reconoce una excepción de operación especial cuando, para LRA o LRAY en el modo de direccionamiento de 24 bits o de 31 bits, los bits 0-32 de la dirección real de 64 bits resultante no son todos cero.
Se reconoce una excepción de direccionamiento cuando la dirección usada por ART para recuperar la designación de lista de acceso efectiva o la ALE, ASTE o entrada de tabla de autoridades designa una ubicación que no está disponible en la configuración o cuando la dirección usada para recuperar la entrada o entradas de tabla de regiones, de haber alguna, entrada de tabla de segmentos o entrada de tabla de páginas designa una ubicación que no está disponible en la configuración.
Se reconoce una excepción de especificación de traducción cuando una entrada de tabla de regiones a la que se accede o la entrada de tabla de segmentos o la entrada de tabla de páginas tiene un bit I cero y un error de formato. Una ejecución de la posición de bit 0 como resultado de la suma realizada para calcular la dirección de una entrada de tabla de regiones o la entrada de tabla de segmentos se puede ignorar o puede dar como resultado una excepción de direccionamiento.
La operación se suprime en todas las excepciones de direccionamiento.
Código de Condición resultante:
0 Traducción disponible
1 Entrada de tabla de segmentos no válida (bit I uno)
2 Entrada de tabla de páginas no válida (bit I uno)
3 Elemento de control de espacio de direcciones no disponible, entrada de tabla de regiones fuera de la tabla o no válida (bit I uno), entrada de tabla de segmentos fuera de la tabla o, solo para LRA y LRAY, y solo en el modo de direccionamiento de 24 bits o de 31 bits cuando los bits 0-32 de la dirección de entrada no son todos cero, entrada de tabla de segmentos o entrada de tabla de páginas no válida (bit I uno)
Excepciones de programa:
• Direccionamiento (designación de lista de acceso efectiva, entrada de lista de acceso, entrada de segunda tabla de ASN, entrada de tabla de autoridades, entrada de tabla de regiones, entrada de tabla de segmentos o entrada de tabla de páginas)
Operación (LRAY, si la utilidad de desplazamiento largo no está instalada)
Operación privilegiada
Operación especial (solo LRA, LRAY)
Restricción de transacción
• Especificación de traducción
Notas de programación:
1. Se ha de tener precaución en el uso de Cargar Dirección Real en una configuración de multiprocesamiento. Debido a que Invalidar Entrada de Tabla de DAT o Invalidar Entrada de Tabla de Páginas puede establecer los bits I en el almacenamiento a uno antes de hacer que se eliminen las entradas correspondientes en las TLB de otras CPU, la ejecución simultánea de Cargar Dirección Real en esta CPU y o bien Invalidar Entrada de Tabla de DAT o bien Invalidar Entrada de Tabla de Páginas en otra CPU puede producir resultados no coherentes. Debido a que Cargar Dirección Real puede acceder a las tablas en el almacenamiento, puede parecer que las entradas de tabla de regiones, la entrada de tabla de segmentos o la entrada de tabla de páginas no son válidas (los códigos de condición 3, 1 o 2, respectivamente) incluso aunque la entrada de TLB correspondiente aún no se haya eliminado, y la entrada de TLB puede permanecer en la TLB hasta la compleción de Invalidar Entrada de Tabla de DAT o Invalidar Entrada de Tabla de Páginas en la otra CPU. No hay un límite garantizado para el número de instrucciones que se pueden ejecutar entre la compleción de Cargar Dirección Real y que se elimine, de la TLB, la entrada.
Las precauciones anteriores para usar Cargar Dirección Real también son de aplicación cuando se usa Comparar e Intercambiar y Purgar o Comparar y Reemplazar Entrada de Tabla de DAT para establecer explícitamente el bit no válido en una entrada de tabla de DAT.
Además de las instrucciones de Cargar PSW y de Cargar Dirección Real, una instrucción de Establecer Máscara de Sistema también puede hacer que se reconozca una excepción de No-DAT.
Una realización preferida de la presente invención de un formato de una instrucción de Establecer Máscara de Sistema se describe con referencia a la figura 8. Haciendo referencia a la figura 8, una instrucción de Establecer Máscara de Sistema 800 incluye, por ejemplo, un campo de código de operación 802 que tiene un código de operación (opcode) para especificar una operación de establecer máscara de sistema; un campo de base (B2) 804; y un campo de desplazamiento (D2) 806.
Durante el funcionamiento, los bits 0-7 de la PSW actual se reemplazan por el byte en la ubicación designada por la dirección de segundo operando (formada sumando contenidos de un registro general especificado por B2 con un valor del campo de desplazamiento).
Condiciones especiales
Cuando el bit de control de supresión de SSM, el bit 33 del registro de control 0, es uno y la CPU está en el estado de supervisor, se reconoce una excepción de operación especial.
No se comprueba antes de la carga la validez del valor a cargar en la PSW, se reconoce una excepción de especificación y tiene lugar una interrupción de programa, si los contenidos de las posiciones de bit 0 y 2-4 de la PSW no son todos cero. En este caso, la instrucción se completa y el código de longitud de instrucción se establece a 2. La excepción de especificación se enumera como una excepción de programa para esta instrucción. Se puede considerar que esta excepción es provocada por la ejecución de esta instrucción o como si tuviera lugar en una fase temprana del proceso de preparación para ejecutar la instrucción posterior.
La operación se suprime en todas las excepciones de direccionamiento y de protección.
Código de Condición: El código permanece sin cambios.
Excepciones de programa:
Acceso (recuperar, operando 2)
Operación privilegiada
Operación especial
Especificación
Restricción de transacción
Además, una instrucción de Almacenar Entonces O Máscara de Sistema puede hacer que se reconozca una excepción de No-DAT. Una realización preferida de la presente invención de un formato de una instrucción de Almacenar Entonces O Máscara de Sistema se describe con referencia a la figura 9. Haciendo referencia a la figura 9, una instrucción de Almacenar Entonces O Máscara de Sistema 900 incluye, por ejemplo, un campo de código de operación 902 que tiene un opcode para especificar una operación de almacenar entonces O máscara de sistema; un campo inmediato (I2) 904; un campo de base (B1) 906; y un campo de desplazamiento (D1) 908. En un ejemplo, los contenidos de un registro especificado por B1 se añaden al campo de desplazamiento para proporcionar una dirección de un primer operando. El campo inmediato es un segundo operando.
Durante el funcionamiento, los bits 0-7 de la PSW actual se almacenan en la primera ubicación de operando. Entonces, los contenidos de las posiciones de bit 0-7 de la PSW actual se reemplazan por el O lógico de sus contenidos originales y el segundo operando (el campo I2).
Condiciones especiales
No se comprueba antes de la carga la validez del valor a cargar en la PSW. Sin embargo, inmediatamente después de la carga, se reconoce una excepción de especificación y tiene lugar una interrupción de programa, si los contenidos de las posiciones de bit 0 y 2-4 de la PSW no son todos cero. En este caso, la instrucción se completa y el código de longitud de instrucción se establece a 2. La excepción de especificación se enumera como una excepción de programa. Se puede considerar que esta tiene lugar en una fase temprana del proceso de preparación para ejecutar la siguiente instrucción.
La operación se suprime en las excepciones de direccionamiento y de protección.
Código de Condición: El código permanece sin cambios.
Excepciones de programa:
• Acceso (almacenar, operando 1)
• Operación privilegiada
• Especificación
• Transacción restringida
Nota de programación: La instrucción de Almacenar Entonces O Máscara de Sistema permite que el programa establezca bits seleccionados en la máscara de sistema a uno mientras conserva los contenidos originales para una restauración posterior. Por ejemplo, el programa puede habilitar la CPU para interrupciones de E/S sin tener disponible el estado actual del bit de máscara externo.
Para los casos 1 (Cargar PSW) y 3-5 (Establecer Máscara de Sistema, Almacenar Entonces O Máscara de Sistema, interrupción) descritos anteriormente, inmediatamente después de cambiar el bit 5 de la PSW a uno desde cero, se reconoce una excepción de No-DAT, y tiene lugar una interrupción de programa. En estos casos, la ejecución de instrucción o el intercambio de PSW, según sea aplicable, se completa y el código de longitud de instrucción es cero. Se puede considerar que la excepción de No-DAT tiene lugar en una fase temprana del proceso de preparación para ejecutar la siguiente instrucción secuencial. Por lo tanto, se anula la instrucción ubicada en la dirección de instrucción especificada por la PSW antigua de programa. La excepción de No-DAT es indicada por un código de interrupción de programa de 003D hexadecimal (o 00D hexadecimal si se indica un evento de PER simultáneo).
Una interrupción incluye almacenar la PSW actual como una PSW antigua, almacenar información que identifica la causa de la interrupción y recuperar una PSW nueva. El procesamiento se reanuda según es especificado por la PSW nueva.
La PSW antigua almacenada en una interrupción normalmente contiene la dirección de la instrucción que se habría ejecutado a continuación si la interrupción no hubiera tenido lugar, permitiendo de este modo la reanudación del programa interrumpido. Para las interrupciones de llamada de supervisor y de programa, la información almacenada también contiene un código que identifica la longitud de la última instrucción ejecutada, permitiendo de este modo que el programa responda a la causa de la interrupción. En el caso de algunas condiciones del programa para las cuales la respuesta normal es volver a ejecutar la instrucción que da lugar a la interrupción, la dirección de instrucción identifica directamente la instrucción ejecutada en último lugar.
Excepto para el reinicio, una interrupción solo puede tener lugar cuando la CPU está en el estado operativo. La interrupción de reinicio puede tener lugar cuando la CPU está en el estado o bien detenido o bien operativo.
Excepto para los eventos básicos de PER, solo una condición de interrupción de programa se indica con una interrupción de programa. Sin embargo, la existencia de una condición no excluye la existencia de otras condiciones. Cuando existe más de una condición de interrupción de programa, en un ejemplo, la condición que tiene la prioridad más alta se identifica en el código de interrupción. Cuando son de aplicación múltiples condiciones de la misma prioridad, no se puede predecir cuál se indica.
Cuando múltiples partes del mismo operando de almacenamiento están sujetas a controles de acceso separados, la prioridad de las excepciones de acceso asociadas con las partes no se puede predecir y no está necesariamente relacionada con la secuencia especificada para el acceso de bytes dentro del operando. Por ejemplo, cuando (a) el primer operando de una instrucción de MOVE (MVC) atraviesa un límite de segmento, (b) el bit no válido es uno en la entrada de tabla de segmentos usada para traducir la parte más a la izquierda del operando, y (c) el bit de protección de DAT es uno en una entrada de tabla de páginas válida usada para traducir la parte más a la derecha del operando, entonces no se puede predecir si se reconoce una excepción de traducción de segmento o una excepción de protección.
Cuando una instrucción tiene dos operandos de almacenamiento y existen condiciones de excepción de acceso para ambos operandos, no se puede predecir qué condición se reconoce. Una ejecución posterior de la misma instrucción (con las mismas condiciones de excepción) puede dar como resultado que se reconozca la condición de excepción para el mismo operando que en la primera ejecución, o para el otro operando.
El tipo de finalización que tiene lugar (anulación, supresión o terminación) es el que se define para el tipo de excepción que se indica en el código de interrupción. Sin embargo, si se indica una condición que permite la terminación, y también existe otra condición que daría lugar o bien a la anulación o bien a la supresión, entonces se suprime la unidad de la operación.
Una realización preferida de la presente invención de un procesamiento asociado con la provisión de una utilidad de No-DAT en un entorno informático que soporta múltiples modos arquitectónicos se describe con referencia a la figura 10. En este ejemplo particular, ambos modos arquitectónicos están configurados para una función arquitectónica seleccionada (es decir, se define que cada uno incluye, por ejemplo, DAT), pero un primer modo arquitectónico soporta la función, mientras que, en el segundo modo arquitectónico, la función se suprime (por ejemplo, no se soporta, se omite, se elimina de la arquitectura, etc.) de tal modo que no se pueda activar incluso si hay un control de activación/desactivación de DAT.
Haciendo referencia a la figura 10, en un ejemplo, un entorno informático está configurado para soportar simultáneamente una pluralidad de arquitecturas: una primera arquitectura (por ejemplo, una arquitectura potenciada, por ejemplo, z/Architecture) configurada para y que soporta una función arquitectónica seleccionada (por ejemplo, DAT); y una segunda arquitectura (por ejemplo, una arquitectura heredada, por ejemplo, ESA/390) configurada para suprimir, pero de forma selectiva, la función arquitectónica seleccionada, la ETAPA 1000. Al suprimir la función (por ejemplo, Activar No-DAT o proporcionar No-DAT como una opción instalada en fábrica permanente), DAT no se puede activar incluso si otro control está configurado para activar la misma.
Un procesador del entorno informático obtiene una solicitud para realizar una operación que incluye la función arquitectónica seleccionada, la ETAPA 1002. Se realiza una determinación en cuanto a si el procesador está procesando en un segundo modo arquitectónico basándose en la segunda arquitectura, la CONSULTA 1004. Si el procesador está procesando en un modo arquitectónico diferente al de la segunda arquitectura, tal como la primera arquitectura, por ejemplo, z/Architecture, entonces se realiza la función arquitectónica seleccionada, la ETAPA 1006.
Volviendo a la CONSULTA 1004, si el procesador está en el segundo modo arquitectónico, entonces se realiza una determinación en cuanto a si se ha suprimido la función arquitectónica seleccionada, la CONSULTA 1008. En una realización preferida de la presente invención, esto se determina comprobando un indicador de utilidad y/u otro indicador. Si la función no se ha suprimido (por ejemplo, No-DAT no está instalada), entonces se realiza la función arquitectónica seleccionada (por ejemplo, DAT), la ETAPA 1006. De lo contrario, se proporciona una indicación de que no se ha de realizar la función arquitectónica seleccionada, la ETAPA 1010. Por ejemplo, se proporciona un error. El error puede ser una excepción y se puede usar o bien un tipo de excepción conocido o bien un tipo de excepción nuevo.
Aunque en el ejemplo anterior, el segundo modo arquitectónico está configurado para DAT, pero DAT se suprime de la arquitectura, en otra realización, el segundo modo arquitectónico no está configurado para DAT, sino que, en su lugar, la segunda arquitectura incluye un conjunto reducido de una arquitectura en el que están ausentes una o más funciones arquitectónicas seleccionadas (como DAT). En este caso, también se dice que DAT se suprime de la arquitectura.
En una realización preferida adicional de la presente invención, la utilidad de NDAT se incluye en un entorno informático que incluye invitados de modo de almacenamiento paginable. En un entorno de este tipo, en un ejemplo, el anfitrión se inicializa y procesa en un primer modo arquitectónico (por ejemplo, z/Architecture) y los invitados se pueden inicializar o bien en el primer modo arquitectónico o bien en otro modo arquitectónico, tal como el segundo modo arquitectónico (por ejemplo, ESA/390 o un subconjunto del mismo). En un invitado de modo de almacenamiento paginable en el modo arquitectónico de ESA/390, cuando la utilidad de No-DAT está instalada, tienen lugar las siguientes acciones, en un ejemplo:
1. En una realización preferida de la presente invención, cuando NDAT está instalada, el invitado se comporta en la práctica como si no se proporcionara DAT, independientemente de otros indicadores (por ejemplo, todos y cada uno de los otros indicadores) presentes en un control de estado o que controlen de otra manera la ejecución en un entorno virtual, que puedan regir la disponibilidad de DAT u otras características.
2. Cuando se intenta habilitar funciones de DAT, usar funciones de DAT o ejecutar instrucciones que requieren la presencia de funciones de DAT (por ejemplo, incluyendo, pero sin limitarse a, la instrucción de LRA), se presenta una interrupción de programa de excepción de No-DAT.
Una realización preferida de la presente invención de lógica para proporcionar una utilidad de No-DAT en un entorno de invitado se describe con referencia a las figuras 11A-11B. Haciendo referencia a la figura 11A, un anfitrión que procesa en un primer modo arquitectónico (por ejemplo, la z/Architecture), la ETAPA 1100, emite una instrucción de iniciar ejecución interpretativa para iniciar una o más máquinas virtuales de invitado, la ETAPA 1102. Una primera máquina virtual de invitado ha de procesar en el primer modo arquitectónico y ese primer modo arquitectónico tiene una primera arquitectura de conjunto de instrucciones e incluye un primer conjunto de funciones arquitectónicas, la ETAPA 1104. Sin embargo, una segunda máquina virtual de invitado ha de procesar en un segundo modo arquitectónico, la ETAPA 1106, y el segundo modo arquitectónico tiene una segunda arquitectura de conjunto de instrucciones e incluye un segundo conjunto de funciones arquitectónicas. El segundo conjunto de funciones arquitectónicas es un conjunto reducido del primer conjunto en el que están ausentes una o más funciones (por ejemplo, una función arquitectónica seleccionada, tal como DAT). Por lo tanto, el segundo modo arquitectónico es un modo de inhibición de función, que inhibe una función, tal como DAT. En un ejemplo, la ausencia de la utilidad arquitectónica seleccionada se indica a través de un bit de utilidad. Sin embargo, esto es opcional en una o más realizaciones.
En una realización preferida particular de la presente invención, el primer modo arquitectónico incluye un direccionamiento de 64 bits y usa registros de propósito general de 64 bits, y el segundo modo arquitectónico incluye un direccionamiento de 31 bits y usa registros de propósito general de 32 bits.
La segunda máquina virtual de invitado realiza un procesamiento en el segundo modo arquitectónico, y este procesamiento anula uno o más controles asociados con la función arquitectónica seleccionada que se pueden usar para controlar la ejecución de la segunda máquina virtual de invitado, la ETAPA 1108. Por ejemplo, si se usa un indicador para indicar que DAT está activada, este indicador es un control que se anula cuando se instala la utilidad de No-DAT para la segunda máquina virtual de invitado. Como ejemplo adicional, la especificación de la arquitectura correspondiente a la máquina virtual controla la disponibilidad de características particulares, y esta especificación también es un control que es anulado por la utilidad de NDAT. También son posibles otros ejemplos de controles que se anulan.
En una realización preferida de la presente invención, el segundo invitado obtiene una solicitud para realizar una operación que ha de usar o habilitar una función seleccionada (por ejemplo, DAT), la ETAPA 1120. Se realiza una determinación en cuanto a si segundo invitado está procesando en el segundo modo arquitectónico, la CONSULTA 1122. Si el segundo invitado no está procesando en el segundo modo arquitectónico, entonces se puede realizar la operación, que puede usar o habilitar la función arquitectónica seleccionada, la ETAPA 1124. Sin embargo, si el segundo invitado está procesando en el segundo modo arquitectónico y, por lo tanto, la función seleccionada no se soporta (es decir, esta se suprime), la operación no se realiza, la ETAPA 1126, y se proporciona un error, la ETAPA 1128.
Aunque en la realización preferida de la presente invención descrita anteriormente ambos invitados son invitados de nivel uno (es decir, cada uno inicializado por un anfitrión), en un ejemplo adicional, uno o más invitados son invitados de segundo nivel, en los que un invitado es iniciado por otro invitado. En una realización preferida de este tipo de la presente invención, si el invitado de segundo nivel se va a procesar en ESA/390, entonces No-DAT es el tipo por defecto. Es decir, el invitado de segundo nivel iniciado en ESA/390 no ha de usar DAT independientemente de otros controles (por ejemplo, controles de SIE) que puedan indicar algo diferente. Se anula cualquier otro control en relación con DAT. Además, en una realización preferida de la presente invención, este es el tipo por defecto para el invitado de segundo nivel, incluso si el invitado de primer nivel y/o el anfitrión son capaces de ejecutar DAT en ESA/390 o z/Architecture. En otra realización preferida más de la presente invención, las máquinas virtuales de ESA/390 solo se pueden crear como máquinas virtuales de invitado 2, y no están disponibles en uno o ambos del modo de anfitrión y de invitado 1.
Aunque las funciones se han descrito con referencia particular a la provisión de una utilidad de No-DAT para una segunda arquitectura, los aspectos descritos en el presente documento se pueden aplicar a otras funciones de procesador que se pueden deshabilitar en un modo arquitectónico y proporcionarse en otro modo arquitectónico más de un entorno de invitado o de anfitrión.
En el presente documento se describe una capacidad para proporcionar un conjunto de instrucciones y excluir la traducción de dirección de datos para una arquitectura, para una instrucción y datos. En una realización se describen adicionalmente controles para suprimir, de una arquitectura particular, la traducción de dirección de datos. En una realización, la supresión se realiza de acuerdo con un registro de control; y en una realización adicional, de acuerdo con uno o más modos por defecto para habilitar automáticamente la supresión de la traducción de dirección de datos, por ejemplo, para el invitado 2. Además, en una realización preferida de la presente invención, se proporciona una interrupción para indicar un intento de habilitar y/o usar dAt cuando se suprime DAT. Además, en una o más realizaciones, se proporciona un modo operativo para un entorno de virtualización.
Como se describe en el presente documento, se proporciona una utilidad para suprimir funciones seleccionadas, tales como traducciones DAT, de una arquitectura particular, de tal modo que la misma ya no haya de someterse a prueba. Cuando un programa (tal como un programa de supervisor) intenta habilitar una función suprimida, se proporciona una indicación, tal como un error o una excepción (usando o bien un código de excepción conocido o bien un código nuevo), como ejemplos. Además, cuando un programa intenta ejecutar una instrucción haciendo uso de la función suprimida, se proporciona una indicación, tal como un error o una excepción, como ejemplos.
En una realización preferida de la presente invención, la utilidad de No-DAT se puede usar con otras una o más utilidades que incluyen, por ejemplo, una utilidad de CZAM y/o una utilidad de arranque de utilidad de control, descrita en las siguientes solicitudes presentadas junto con la presente y de cesión común tituladas "Architectural Mode Configuration", Gainey, et al., (número de solicitud: 14/217840; y "Common Boot Sequence for Control Utility Able to be Initialized in Multiple Architectures", Michael K. Gschwind, (número de solicitud 14/217800).
Haciendo referencia a la figura 12, en un ejemplo, un producto de programa informático 1200 incluye, por ejemplo, uno o más medios de almacenamiento legible por ordenador no transitorios 1202 para almacenar instrucciones, lógica y/o medios de código de programa legible por ordenador, 1204 en los mismos para proporcionar y facilitar una o más realizaciones.
La presente invención puede ser un sistema, un método y/o un producto de programa informático. El producto de programa informático puede incluir un medio de almacenamiento legible por ordenador (o medios) que tiene instrucciones de programa legibles por ordenador en el mismo para provocar que un procesador lleve a cabo aspectos de la presente invención.
El medio de almacenamiento legible por ordenador puede ser un dispositivo tangible que puede mantener y almacenar instrucciones para su uso por un dispositivo de ejecución de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, pero no se limita a, un dispositivo de almacenamiento electrónico, un dispositivo de almacenamiento magnético, un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento electromagnético, un dispositivo de almacenamiento de semiconductores, o cualquier combinación adecuada de lo anterior. Una lista no exhaustiva de ejemplos más específicos del medio de almacenamiento legible por ordenador incluye lo siguiente: un disquete de ordenador portátil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable borrable (EPROM o memoria Flash), una memoria de acceso aleatorio estática (SRAM), un disco compacto-memoria de solo lectura (CD-ROM) portátil, un disco versátil digital (DVD), un lápiz de memoria, un disco flexible, un dispositivo codificado mecánicamente tal como tarjetas perforadas o estructuras elevadas en un surco que tienen instrucciones registradas en las mismas, y cualquier combinación adecuada de lo anterior. No ha de interpretarse que un medio de almacenamiento legible por ordenador, como se usa en el presente documento, sean señales transitorias en sí, tales como ondas de radio u otras ondas electromagnéticas que se propagan libremente, ondas electromagnéticas que se propagan a través de una guía de onda u otro medio de transmisión (por ejemplo, pulsos de luz que pasan a través de un cable de fibra óptica), o señales eléctricas transmitidas a través de un hilo.
Las instrucciones de programa legibles por ordenador descritas en el presente documento pueden descargarse en dispositivos informáticos/de procesamiento respectivos desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo por medio de una red, por ejemplo, Internet, una red de área local, una red de área extensa y/o una red inalámbrica. La red puede comprender cables de transmisión de cobre, fibras de transmisión óptica, transmisión inalámbrica, encaminadores, cortafuegos, conmutadores, ordenadores de pasarela y/o servidores de borde. Una tarjeta adaptadora de red o interfaz de red en cada dispositivo informático/de procesamiento recibe instrucciones de programa legibles por ordenador de la red y reenvía las instrucciones de programa legibles por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del dispositivo informático/de procesamiento respectivo.
Las instrucciones de programa legibles por ordenador para llevar a cabo las operaciones de la presente invención pueden ser instrucciones de ensamblador, instrucciones de la arquitectura de conjunto de instrucciones (ISA), instrucciones de máquina, instrucciones dependientes de máquina, microcódigo, instrucciones de firmware, datos de ajuste de estado, o bien código fuente o bien código objeto escrito en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado a objetos tal como Smalltalk, C++ o similares, y lenguajes de programación procedimental convencionales, tales como el lenguaje de programación "C" o lenguajes de programación similares. Las instrucciones de programa legibles por ordenador pueden ejecutarse completamente 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 ordenador remoto o completamente en el ordenador remoto o servidor. En el último escenario, el ordenador remoto puede estar conectado al ordenador del usuario a través de un tipo de red, que incluye una red de área local (LAN) o una red de área extensa (WAN), o la conexión puede hacerse a un ordenador externo (por ejemplo, a través de Internet usando un Proveedor de Servicio de Internet). En algunas realizaciones, la circuitería electrónica que incluye, por ejemplo, circuitería de lógica programable, matrices de puertas programables en campo (FPGA) o matrices de lógica programable (PLA), puede ejecutar las instrucciones de programa legibles por ordenador utilizando información de estado de las instrucciones de programa legibles por ordenador para personalizar la circuitería electrónica, para realizar aspectos de la presente invención.
Los aspectos de la presente invención se describen en el presente documento con referencia a ilustraciones de diagrama de flujo y/o diagramas de bloques de los métodos, aparatos (sistemas) y productos de programa informático de acuerdo con las realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones de diagrama de flujo y/o diagramas de bloques, y combinaciones de bloques en las ilustraciones de diagrama de flujo y/o diagramas de bloques, pueden implementarse por instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador se pueden proporcionar a un procesador de un ordenador de propósito general, un ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de tal modo que las instrucciones, que se ejecutan a través del procesador del ordenador u otro aparato de procesamiento de datos programable, crean medios para implementar las funciones/actos especificados en el bloque o bloques de diagrama de bloques y/o diagrama de flujo. Estas instrucciones de programa legibles por ordenador pueden almacenarse también en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato de procesamiento de datos programable, y/u otros dispositivos para funcionar de una manera particular, de tal modo que el medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo comprende un artículo de fabricación que incluye instrucciones que implementan aspectos de la función/acto especificado en el bloque o bloques de diagrama de bloques y/o diagrama de flujo.
Las instrucciones de programa legibles por ordenador pueden cargarse también en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para provocar que se realice una serie de etapas operacionales en el ordenador, otro aparato programable u otro dispositivo para producir un proceso implementado por ordenador, de tal modo que las instrucciones que se ejecutan en el ordenador, otro aparato programable u otro dispositivo implementan las funciones/actos especificados en el bloque o bloques de diagrama de bloques y/o diagrama de flujo.
El diagrama de flujo y diagramas de bloques en las figuras ilustran la arquitectura, funcionalidad y operación de posibles implementaciones de sistemas, métodos y productos de programa informático de acuerdo con diversas realizaciones de la presente invención. En este sentido, cada bloque en el diagrama de flujo o diagramas de bloques puede representar un módulo, segmento o porción de instrucciones, que comprende una o más instrucciones ejecutables para implementar la función o funciones lógicas especificadas. En algunas implementaciones alternativas, las funciones indicadas en el bloque pueden tener lugar fuera del orden indicado en las figuras. Por ejemplo, dos bloques mostrados en serie, de hecho, pueden ejecutarse sustancialmente de manera simultánea, o los bloques pueden ejecutarse en ocasiones en el orden inverso, dependiendo de la funcionalidad implicada. Se indicará también que cada bloque de los diagramas de bloques y/o ilustración de diagrama de flujo y combinaciones de bloques en los diagramas de bloques y/o ilustración de diagrama de flujo pueden ser implementados por sistemas basados en hardware de propósito especial que realizan las funciones o actos especificados o llevan a cabo combinaciones de hardware de propósito especial e instrucciones informáticas.
Además de lo anterior, uno o más aspectos pueden ser proporcionados, ofrecidos, desplegados, gestionados, atendidos, etc., por un proveedor de servicio que ofrece gestión de entornos de cliente. Por ejemplo, el proveedor de servicio puede crear, mantener, soportar, etc., código informático y/o una infraestructura informática que realiza uno o más aspectos para uno o más clientes. A cambio, el proveedor de servicio puede recibir del cliente pagos en virtud de un acuerdo de suscripción y/o de cuota, como ejemplos. Adicionalmente o como alternativa, el proveedor de servicio puede recibir pagos por la venta de contenido publicitario a uno o más terceros.
En un aspecto, se puede desplegar una aplicación para realizar una o más realizaciones. Como un ejemplo, el despliegue de una aplicación comprende proporcionar infraestructura informática operable para realizar una o más realizaciones.
Como un aspecto adicional, una infraestructura informática puede desplegarse que comprende integrar código legible por ordenador en un sistema informático, en el que el código en combinación con el sistema informático es capaz de realizar una o más realizaciones.
Como un aspecto adicional más, puede proporcionarse un proceso para integrar infraestructura informática que comprende integrar código legible por ordenador en un sistema informático. El sistema informático comprende un medio legible por ordenador, en el que el medio informático comprende una o más realizaciones. El código en combinación con el sistema informático es capaz de realizar una o más realizaciones.
Aunque se han descrito anteriormente diversas realizaciones, estas son únicamente ejemplos. Por ejemplo, pueden usarse entornos informáticos de otras arquitecturas para incorporar y usar una o más realizaciones. Además, se pueden usar diferentes instrucciones, formatos de instrucciones, campos de instrucciones y/o valores de instrucciones. Lo que es más, otros tipos de traducción de dirección se pueden beneficiar de uno o más aspectos. Además, otras funciones arquitectónicas se pueden suprimir de manera similar. Son posibles muchas variaciones.
Además, pueden aprovecharse y usarse otros tipos de entornos informáticos. Como un ejemplo, se puede usar un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar código de programa que incluye al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de un bus de sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecución real del código de programa, almacenamiento masivo, y memoria caché que proporciona almacenamiento temporal de al menos algún código de programa para reducir el número de veces que ha de recuperarse el código del almacenamiento masivo durante la ejecución.
Los dispositivos de Entrada/Salida o E/S (que incluyen, pero sin limitarse a, teclados, visualizadores, dispositivos apuntadores, DASD, cinta, CD, DVD, unidades de memoria y otros medios de memoria, etc.) pueden acoplarse al sistema o bien directamente o bien a través de controladores de E/S intermedios. Los adaptadores de red pueden acoplarse también al sistema para posibilitar que el sistema de procesamiento de datos se acople a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a través de redes privadas o públicas intermedias. Los módems, módems de cable y tarjetas de Ethernet son solamente unos pocos de los tipos disponibles de adaptadores de red.
Haciendo referencia a la figura 13, se representan componentes representativos de un sistema Informático de Anfitrión 5000 para implementar una o más realizaciones. El ordenador de anfitrión 5000 representativo comprende una o más CPU 5001 en comunicación con memoria informática (es decir, almacenamiento central) 5002, así como interfaces de E/S a dispositivos de medios de almacenamiento 5011 y redes 5010 para comunicar con otros ordenadores o SAN y similares. La CPU 5001 es compatible con una arquitectura que tiene un conjunto de instrucciones de arquitectura y funcionalidad de arquitectura. La CPU 5001 puede tener una traducción de registro de acceso (ART) 5012, que incluye una memoria intermedia de traducción adelantada de ART (ALB) 5013, para seleccionar un espacio de direcciones a usar por la traducción de dirección dinámica (DAT) 5003 para transformar direcciones de programa (direcciones virtuales) en direcciones de memoria reales. Una DAT típicamente incluye una memoria intermedia de traducción adelantada (TLB) 5007 para almacenar en caché traducciones de tal modo que los últimos accesos al bloque de memoria informática 5002 no requieren el retardo de traducción de dirección. Típicamente, se emplea una caché 5009 entre la memoria informática 5002 y el procesador 5001. La caché 5009 puede tener jerárquicamente una gran caché disponible para más de una CPU y cachés más pequeñas, más rápidas (nivel inferior) entre la caché grande y cada CPU. En algunas implementaciones, las cachés de nivel inferior se dividen para proporcionar cachés de nivel bajo separadas para recuperación de instrucciones y accesos de datos.
En una realización, una instrucción es recuperada de la memoria 5002 por una unidad de recuperación de instrucción 5004 a través de una caché 5009. La instrucción se descodifica en una unidad de descodificación de instrucción 5006 y se despacha (con otras instrucciones en algunas realizaciones) a la unidad o unidades de ejecución de instrucción 5008. Típicamente se emplean varias unidades de ejecución 5008, por ejemplo, una unidad de ejecución aritmética, una unidad de ejecución de punto flotante y una unidad de ejecución de instrucción de ramificación. La instrucción se ejecuta por la unidad de ejecución, que accede a los operandos de los registros de instrucción especificados o memoria según sea necesario. Si ha de accederse a un operando (cargarse o almacenarse) de la memoria 5002, una unidad de carga/almacenamiento 5005 típicamente maneja el acceso bajo el control de la instrucción que se está ejecutando. Las instrucciones pueden ejecutarse en circuitos de hardware o en microcódigo interno (firmware) o por una combinación de ambos.
Como se indica, un sistema informático incluye información en un almacenamiento local (o principal), así como direccionamiento, protección y referencia y registro de cambios. Algunos aspectos del direccionamiento incluyen el formato de direcciones, el concepto de espacios de direcciones, los diversos tipos de direcciones, y la manera en la que un tipo de dirección se traduce a otro tipo de dirección. Parte del almacenamiento principal incluye ubicaciones de almacenamiento asignadas permanentemente. El almacenamiento principal proporciona el sistema con almacenamiento de datos de acceso rápido directamente direccionable. Tanto datos como programas se han de cargar en un almacenamiento principal (desde dispositivos de entrada) antes de que se puedan procesar.
El almacenamiento principal puede incluir uno o más almacenamientos de memoria intermedia de acceso más rápido más pequeños, en ocasiones denominados cachés. Una caché está asociada físicamente de manera típica con una CPU o un procesador de E/S. Los efectos, excepto en rendimiento, de la construcción física y uso de medios de almacenamiento distintos en general no son observables por el programa.
Las cachés separadas pueden mantenerse para instrucciones y para operandos de datos. La información dentro de una caché se mantiene en bytes contiguos en un límite integral denominado un bloque de caché o línea de caché (o línea, por resumir). Un modelo puede proporcionar una instrucción EXTRAER ATRIBUTO DE CACHÉ que devuelve el tamaño de una línea de caché en bytes. En otra realización, esta información puede obtenerse de firmware, por ejemplo, de acuerdo con las interfaces especificadas por la especificación de referencia de la plataforma de Power Architecture. Un modelo puede proporcionar también una o más instrucciones de contacto de bloque de caché de datos (deuda), PRERRECUPERAR DATOS y PRERRECUPERAR DATOS RELATIVO LARGO que efectúan la prerrecuperación de almacenamiento en la caché de datos o de instrucciones o la liberación de datos de la caché.
El almacenamiento se observa como una cadena de bits horizontal larga. Para la mayoría de las operaciones, los accesos a almacenamiento proceden en una secuencia de izquierda a derecha. La cadena de bits se subdivide en unidades de ocho bits. Una unidad de ocho bits se denomina un byte, que es el bloque de construcción básica de todos los formatos de información. Cada ubicación de byte en el almacenamiento se identifica por un número entero no negativo único, que es la dirección de esa ubicación de byte o, simplemente, la dirección de byte. Las ubicaciones de bytes adyacentes tienen direcciones consecutivas, empezando con 0 en la izquierda y procediendo en una secuencia de izquierda a derecha. Las direcciones son números enteros binarios sin signo y son 24, 31 o 64 bits.
La información se transmite entre almacenamiento y una CPU o un subsistema de canal un byte, o un grupo de bytes, a la vez. A menos que se especifique lo contrario, por ejemplo, en Power ISA y z/Architecture, un grupo de bytes en un almacenamiento es direccionado por el byte más a la izquierda del grupo. El número de bytes en el grupo o bien se hace implícita o bien se especifica explícitamente por la operación a realizarse. Cuando se usa en una operación de CPU, un grupo de bytes se denomina un campo. Dentro de cada grupo de bytes, por ejemplo, en Power ISA y z/Architecture, los bits se numeran en una secuencia de izquierda a derecha. En Power ISA y z/Architecture, los bits más a la izquierda en ocasiones se denominan como los bits "de orden alto" y los bits más a la derecha como los bits "de orden bajo". Sin embargo, los números de bits no son direcciones de almacenamiento. Únicamente pueden direccionarse bytes. Para operar sobre bits individuales de un byte en un almacenamiento, se accede al byte entero. Los bits en un byte se numeran 0 a 7, de izquierda a derecha (en, por ejemplo, la z/Architecture). Los bits en una dirección pueden numerarse 8-31 o 40-63 para direcciones de 24 bits, o 1-31 o 33-63 para direcciones de 31 bits; se numeran 0-63 para direcciones de 64 bits. En un ejemplo, los bits 8-31 y 1-31 son de aplicación a direcciones que están en una ubicación (por ejemplo, un registro) que tiene una anchura de 32 bits, mientras que los bits 40-63 y 33­ 63 se aplican a direcciones que están en una ubicación con una anchura de 64 bits. Dentro de cualquier otro formato de longitud fija de múltiples bytes, los bits que componen el formato se numeran de manera consecutiva empezando desde 0. Para los fines de detección de error y, preferiblemente, para su corrección, se pueden transmitir uno o más bits de comprobación con cada byte o con un grupo de bytes. Tales bits de comprobación se generan automáticamente por la máquina y no pueden controlarse directamente por el programa. Las capacidades de almacenamiento se expresan en número de bytes. Cuando la longitud de un campo de operando de almacenamiento se hace implícita por el código de operación de una instrucción, se dice que el campo tiene una longitud fija, que puede ser de uno, dos, cuatro, ocho o dieciséis bytes. Se pueden hace implícitos campos más grandes para algunas instrucciones. Cuando la longitud de un campo de operando de almacenamiento no se hace implícita sino que se establece explícitamente, se dice que el campo tiene una longitud variable. Los operandos de longitud variable pueden variar en longitud en incrementos de un byte (o con algunas instrucciones, en múltiplos de dos bytes u otros múltiplos). Cuando se coloca información en un almacenamiento, los contenidos de solo aquellas ubicaciones de bytes que se sustituyen están incluidos en el campo designado, incluso aunque la anchura de la ruta física al almacenamiento pueda ser mayor que la longitud del campo que se está almacenando.
Ciertas unidades de información han de estar en un límite integral en el almacenamiento. Un límite se denomina integral para una unidad de información cuando su dirección de almacenamiento es un múltiplo de la longitud de la unidad en bytes. Se proporcionan nombres especiales a los campos de 2, 4, 8, 16 y 32 bytes en un límite integral. Una media palabra es un grupo dos bytes consecutivos en un límite de dos bytes y es el bloque de construcción básica de instrucciones. Una palabra es un grupo de cuatro bytes consecutivos en un límite de cuatro bytes. Una palabra doble es un grupo de ocho bytes consecutivos en un límite de ocho bytes. Una palabra cuádruple es un grupo de 16 bytes consecutivos en un límite de 16 bytes. Una palabra óctuple es un grupo de 32 bytes consecutivos en un límite de 32 bytes. Cuando las direcciones de almacenamiento designan medias palabras, palabras, dobles palabras, palabras cuádruples y palabras óctuples, la representación binaria de la dirección contiene uno, dos, tres, cuatro o cinco bits cero más a la derecha, respectivamente. Las instrucciones tienen que estar en límites integrales de dos bytes. Los operandos de almacenamiento de la mayoría de las instrucciones no tienen requisitos de alineación de límite.
En dispositivos que implementan cachés separadas para instrucciones y operandos de datos, puede experimentarse un retardo significativo si el programa almacena en una línea de caché a partir de la cual se recuperan posteriormente instrucciones, independientemente de si el almacenamiento modifica las instrucciones que se recuperan posteriormente.
En un ejemplo, la realización puede ponerse en práctica por software (en ocasiones denominado código interno con licencia, firmware, microcódigo, milicódigo, picocódigo y similares, cualquiera de los cuales puede ser consistente con una o más realizaciones). Haciendo referencia a la figura 13, se puede acceder al código de programa de software que incorpora uno o más aspectos de la presente invención por medio del procesador 5001 del sistema anfitrión 5000 de los dispositivos de medios de almacenamiento a largo plazo 5011, tales como una unidad de CD-ROM, unidad de cinta o unidad de disco duro. El código de programa de software se puede incorporar en cualquiera de una diversidad de medios conocidos para su uso con un sistema de procesamiento de datos, tal como un disquete, unidad de disco duro o CD ROM. El código puede distribuirse en tales medios, o distribuirse a usuarios desde la memoria informática 5002 o almacenamiento de un sistema informático a través de una red 5010 a otros sistemas informáticos para su uso por usuarios de otros sistemas de este tipo.
El código de programa de software incluye un sistema operativo que controla la función e interacción de los diversos componentes informáticos y uno o más programas de aplicación. El código de programa normalmente se pagina desde el dispositivo de medios de almacenamiento 5011 al almacenamiento informático 5002 de velocidad relativamente superior donde está disponible para su procesamiento por el procesador 5001. Las técnicas y métodos para realizar código de programa de software en memoria, en medios físicos y/o distribuir código de software a través de redes son bien conocidos y no se analizarán adicionalmente en el presente documento. El código de programa, cuando se crea y almacena en un medio de almacenamiento (que incluye, pero sin limitarse a, módulos de memoria electrónica (RAM), memoria flash, Discos Compactos (CD), DVD, Cinta Magnética y similares a menudo se denomina "producto de programa informático". Preferiblemente, el medio de producto de programa informático es típicamente legible por un circuito de procesamiento en un sistema informático para su ejecución por el circuito de procesamiento.
La figura 14 ilustra una estación de trabajo o servidor representativo en el que pueden ponerse en práctica una o más realizaciones. El sistema 5020 de la figura 14 comprende un sistema informático de base 5021 representativo, tal como un ordenador personal, una estación de trabajo o un servidor, que incluye dispositivos periféricos opcionales. El sistema informático de base 5021 incluye uno o más procesadores 5026 y un bus empleado para conectar y habilitar la comunicación entre el procesador o procesadores 5026 y los otros componentes del sistema 5021 de acuerdo con técnicas 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 (que incluye cualquiera de medios magnéticos, CD, DVD y Memoria Flash, por ejemplo) o una unidad de cinta, por ejemplo. El sistema 5021 también podría incluir un adaptador de interfaz de usuario, que conecta el microprocesador 5026 a través del bus a uno o más dispositivos de interfaz, tales como un teclado 5024, un ratón 5023, una impresora/escáner 5030 y/u otros dispositivos de interfaz, que pueden ser cualquier dispositivo de interfaz de usuario, tal como una pantalla sensible al tacto, un panel de entrada digitalizado, etc. El bus también conecta un dispositivo de visualización 5022, tal como un monitor o pantalla de LCD, al microprocesador 5026 a través de un adaptador de visualizador.
El sistema 5021 se puede comunicar con otros ordenadores o redes informáticas por medio de un adaptador de red capaz de comunicarse 5028 con una red 5029. Son adaptadores de red ilustrativos los canales de comunicación, el anillo con paso de testigo, Ethernet o los módems. Como alternativa, el sistema 5021 se puede comunicar usando una interfaz inalámbrica, tal como una tarjeta de CDPD (datos de paquetes digitales celulares). El sistema 5021 se puede asociar con tales otros ordenadores en una red de área local (LAN) o una red de área extensa (WAN), o el sistema 5021 puede ser un cliente en una disposición de cliente/servidor con otro ordenador, etc. Todas estas configuraciones, así como el hardware y software de comunicaciones apropiadas, son conocidos en la técnica.
La figura 15 ilustra una red de procesamiento de datos 5040 en la que pueden ponerse en práctica una o más realizaciones. La red de procesamiento de datos 5040 puede incluir una pluralidad de redes individuales, tales como una red inalámbrica y una red alámbrica, cada una de las cuales puede incluir una pluralidad de estaciones de trabajo 5041, 5042, 5043, 5044 individuales. Adicionalmente, como apreciarán los expertos en la materia, puede incluirse una o más LAN, donde una LAN puede comprender una pluralidad de estaciones de trabajo inteligentes acopladas a un procesador de anfitrión.
Haciendo referencia aún a la figura 15, las redes pueden incluir también ordenadores centrales o servidores, tales como un ordenador de pasarela (servidor cliente 5046) o servidor de aplicación (servidor remoto 5048 que puede acceder a un repositorio de datos y puede accederse también directamente desde una estación de trabajo 5045). Un ordenador de pasarela 5046 sirve como un punto de entrada en cada red individual. Es necesaria una pasarela cuando se conecta un protocolo de interconexión de red a otro. Preferiblemente, la pasarela 5046 se puede acoplar a otra red (Internet 5047, por ejemplo) por medio de un enlace de comunicaciones. La pasarela 5046 puede estar directamente acoplada a una o más estaciones de trabajo 5041, 5042, 5043, 5044 usando un enlace de comunicaciones. El ordenador de pasarela puede implementarse usando un servidor IBM Power Systems y un servidor IBM System z disponible de International Business Machines Corporation.
Haciendo referencia simultáneamente a la figura 14 y a la figura 15, se puede acceder al código de programación de software 5031 que puede incorporar uno o más aspectos por medio del procesador 5026 del sistema 5020 desde los medios de almacenamiento a largo plazo 5027, tales como una unidad de CD-ROM o una unidad de disco duro. El código de programación de software se puede incorporar en cualquiera de una diversidad de medios conocidos para su uso con un sistema de procesamiento de datos, tal como un disquete, unidad de disco duro o CD ROM. El código puede distribuirse en tales medios, o puede distribuirse a los usuarios 5050, 5051 desde la memoria o almacenamiento de un sistema informático a través de una red a otros sistemas informáticos para su uso por usuarios de tales otros sistemas.
Como alternativa, el código de programación se puede incorporar en la memoria 5025, y accederse al mismo por el procesador 5026 usando el bus de procesador. Tal código de programación incluye un sistema operativo que controla la función e interacción de los diversos componentes informáticos y uno o más programas de aplicación 5032. El código de programa normalmente se pagina desde los medios de almacenamiento 5027 a la memoria de alta velocidad 5025 donde está disponible para su procesamiento por el procesador 5026. Las técnicas y métodos para realizar código de programación de software en memoria, en medios físicos y/o distribuir código de software a través de redes son bien conocidos y no se analizarán adicionalmente en el presente documento. El código de programa, cuando se crea y almacena en un medio de almacenamiento (que incluye, pero sin limitarse a, módulos de memoria electrónica (RAM), memoria flash, Discos Compactos (CD), DVD, Cinta Magnética y similares a menudo se denomina "producto de programa informático". Preferiblemente, el medio de producto de programa informático es típicamente legible por un circuito de procesamiento en un sistema informático para su ejecución por el circuito de procesamiento.
La caché está en su mayoría fácilmente disponible para el procesador (normalmente más rápidas y más pequeñas que otras cachés del procesador) es la caché más inferior (L1 o nivel uno) y el almacenamiento principal (memoria principal) es la caché de nivel más alta (L3 si hay 3 niveles). La caché de nivel más baja a menudo se divide en una caché de instrucciones (caché I) que mantiene instrucciones de máquina a ejecutarse y una caché de datos (caché D) que maneja operandos de datos.
Haciendo referencia a la figura 16, se representa una realización de procesador ilustrativa para el procesador 5026. Típicamente se emplean uno o más niveles de caché 5053 para almacenar en memoria intermedia bloques para mejorar el rendimiento de procesador. La caché 5053 es una memoria intermedia de alta velocidad que mantiene líneas de caché de datos de memoria que es probable que se usen. Las líneas de caché típicas son 64, 128 o 256 bytes de datos de memoria. A menudo se emplean cachés separadas para almacenar en caché instrucciones, más que para almacenar en caché datos. La coherencia de caché (sincronización de copias de líneas en memoria y las cachés) a menudo se proporciona por diversos algoritmos "sondeo" bien conocidos en la técnica. El almacenamiento de memoria principal 5025 de un sistema de procesador a menudo se denomina caché. En un sistema de procesador que tiene 4 niveles de caché 5053, un almacenamiento principal 5025 a menudo se denomina caché de nivel 5 (L5) debido a que típicamente es más rápido y solo mantiene una porción del almacenamiento no volátil (DASD, cinta, etc.) que está disponible para un sistema informático. El almacenamiento principal 5025 "almacena en caché" páginas de datos paginados en y fuera del almacenamiento principal 5025 por el sistema operativo.
Un contador de programa (contador de instrucción) 5061 mantiene el seguimiento de la dirección de la instrucción actual que va a ejecutarse. Un contador de programa en un procesador z/Architecture es de 64 bits y puede truncarse a 31 o 24 bits para soportar límites de direccionamiento anterior. Un contador de programa en un procesador Power Architecture es de 64 bits y puede truncarse a 32 bits para soportar límites de direccionamiento anterior. Un contador de programa se incorpora típicamente en una PSW (palabra de estado de programa) de un ordenador de tal modo que persiste durante la conmutación de contexto. Por lo tanto, un programa en progreso, que tiene un valor de contador de programa, puede ser interrumpido, por ejemplo, por el sistema operativo (conmutación de contexto del entorno de programa al entorno de sistema operativo). La PSW del programa mantiene el valor de contador de programa mientras el programa no está activo, y se usa el contador de programa (en la PSW) del sistema operativo mientras se está ejecutando el sistema operativo. Típicamente, el contador de programa se incrementa por una cantidad igual al número de bytes de la instrucción actual. Las instrucciones RISC (Informática de Conjunto Reducido de Instrucciones) típicamente están fijadas en longitud mientras que las instrucciones CISC (Informática de Conjunto Complejo de Instrucciones) típicamente tienen longitud variable. Las instrucciones de IBM z/Architecture son instrucciones CISC que tienen una longitud de 2, 4 o 6 bytes. Las instrucciones de IBM Power ISA son instrucciones RISC que tienen una longitud de 4 bytes. El contador de programa 5061 es modificado o bien por una operación de conmutación de contexto o bien por una operación de ramificación tomada de una instrucción de ramificación, por ejemplo. En una operación de conmutación de contexto, el valor de contador de programa actual se guarda en la palabra de estado de programa junto con otra información de estado acerca del programa que se está ejecutando (tal como códigos de condición), y se carga un nuevo valor de contador de programa que apunta a una instrucción de un nuevo módulo de programa a ejecutar. Se realiza una operación de ramificación tomada para permitir que el programa tome decisiones o realice bucles dentro del programa cargando el resultado de la instrucción de ramificación en el contador de programa 5061.
Típicamente se emplea una unidad de recuperación de instrucción 5055 para recuperar instrucciones en nombre del procesador 5026. La unidad de recuperación recupera o bien unas "instrucciones secuenciales siguientes", o bien unas instrucciones objetivo de instrucciones de ramificación tomada, o bien unas primeras instrucciones de un programa que sigue una conmutación de contexto. Las unidades de recuperación de instrucción modernas a menudo emplean técnicas de prerrecuperación para prerrecuperar de manera especulativa instrucciones basándose en la probabilidad de que se pudieran usar las instrucciones prerrecuperadas. Por ejemplo, una unidad de recuperación puede recuperar 16 bytes de instrucciones que incluyen la siguiente instrucción secuencial y bytes adicionales de instrucciones secuenciales adicionales.
Las instrucciones recuperadas son ejecutadas entonces por el procesador 5026. En una realización, la instrucción o instrucciones recuperadas se pasan a una unidad de despacho de la unidad de recuperación 5056. La unidad de despacho descodifica la instrucción o instrucciones y reenvía información acerca de la instrucción o instrucciones descodificadas a las unidades 5057, 5058, 5060 apropiadas. Una unidad de ejecución 5057 recibirá típicamente información acerca de instrucciones aritméticas descodificadas de la unidad de recuperación de instrucción 5055 y realizará operaciones aritméticas en operandos de acuerdo con el opcode de la instrucción. Preferiblemente, los operandos se proporcionan a la unidad de ejecución 5057 o bien desde la memoria 5025, o bien desde los registros de arquitectura 5059 o bien desde un campo inmediato de la instrucción que se está ejecutando. Los resultados de la ejecución, cuando se almacenan, se almacenan o bien en la memoria 5025, o bien en los registros 5059 o bien en otro hardware de máquina (tal como registros de control, registros de PSW y similares).
Las direcciones virtuales se transforman en direcciones reales usando la traducción de dirección dinámica 5062 y, opcionalmente, usando la traducción de registro de acceso 5063.
Un procesador 5026 típicamente tiene una o más unidades 5057, 5058, 5060 para ejecutar la función de la instrucción. Haciendo referencia a la figura 17A, una unidad de ejecución 5057 se puede comunicar 5071 con registros generales de arquitectura 5059, una unidad de descodificación/despacho 5056, una unidad de almacenamiento de carga 5060 y otras unidades de procesador 5065 por medio de la lógica de interconexión 5071. Una unidad de ejecución 5057 puede emplear varios circuitos 5067, 5068, 5069 de registro para mantener la información en la que operará la unidad aritmético - lógica (ALU) 5066. La ALU realiza operaciones aritméticas tales como sumar, restar, multiplicar y dividir, así como una función lógica tal como y, o y o exclusivo (XOR), rotar y desplazar. Preferiblemente, la ALU soporta operaciones especializadas que son dependientes del diseño. Otros circuitos pueden proporcionar otras utilidades de arquitectura 5072 que incluyen códigos de condición y recuperar la lógica de soporte, por ejemplo. Típicamente el resultado de una operación de ALU se mantiene en un circuito de registro de salida 5070 que puede reenviar el resultado a una diversidad de otras funciones de procesamiento. Hay muchas disposiciones de unidades de procesador, y la presente descripción solo pretende proporcionar una comprensión representativa de una realización.
Una instrucción ADD, por ejemplo, se ejecutaría en una unidad de ejecución 5057 que tiene funcionalidad aritmética y lógica mientras que una instrucción de punto flotante, por ejemplo, se ejecutaría en una ejecución de punto flotante que tiene capacidad de punto flotante especializada. Preferiblemente, una unidad de ejecución opera sobre operandos identificados por una instrucción realizando una función definida opcode sobre los operandos. Por ejemplo, una instrucción a Dd puede ejecutarse por una unidad de ejecución 5057 en operandos hallando en dos registros 5059 identificados por campos de registro de la instrucción.
La unidad de ejecución 5057 realiza la suma aritmética en dos operandos y almacena el resultado en un tercer operando donde el tercer operando puede ser un tercer registro o uno de los dos registros de origen. Preferiblemente, la unidad de ejecución utiliza una Unidad Aritmético - Lógica (ALU) 5066 que es capaz de realizar una diversidad de funciones lógicas tales como Desplazar, Rotar, Y, O y XOR, así como una diversidad de funciones algebraicas que incluyen cualquiera de sumar, restar, multiplicar y dividir. Algunas ALU 5066 están diseñadas para operaciones escalares y algunas para punto flotante. Los datos pueden ser Big Endian (donde el byte menos significativo es en la dirección de byte más alta) o Little Endian (donde el byte menos significativo es en la dirección de byte más baja) dependiendo de la arquitectura. IBM z/Architecture es Big Endian. IBM Power ISA soporta los modos de ejecución de Big Endian y de Little Endian. Los campos con signo pueden ser de signo y magnitud, en complemento de 1 o en complemento de 2 dependiendo de la arquitectura. Un número en complemento de 2 es ventajoso en el sentido de que la ALU no necesita diseñar una capacidad de sustracción debido a que o bien un valor negativo o bien un valor positivo en complemento de 2 requiere solo una suma dentro de la ALU. Los números se describen comúnmente en forma abreviada, donde un campo de 12 bits define una dirección de un bloque de 4096 bytes y se describe comúnmente como un bloque de 4 Kbytes (Kilobytes), por ejemplo.
Haciendo referencia a la figura 17B, la información de instrucción de ramificación para ejecutar una instrucción de ramificación se envía típicamente a una unidad de ramificación 5058 que a menudo emplea un algoritmo de predicción de ramificación tal como una tabla de historial de ramificación 5082 para predecir el resultado de la ramificación antes de que se completen las otras operaciones condicionales. El objetivo de la instrucción de ramificación actual se recuperará y se ejecutará de manera especulativa antes de que se completen las operaciones condicionales. Cuando se completan las operaciones condicionales, las instrucciones de ramificación ejecutadas de manera especulativa o bien se completan o bien se descartan basándose en las condiciones de la operación condicional y el resultado especulado. Una instrucción de ramificación típica puede probar los códigos de condición y ramificarse a una dirección objetivo si los códigos de condición cumplen el requisito de ramificación de la instrucción de ramificación, puede calcularse una dirección objetivo basándose en varios números que incluyen unos hallados en campos de registro o un campo inmediato de la instrucción, por ejemplo. La unidad de ramificación 5058 puede emplear una ALU 5074 que tiene una pluralidad de circuitos de registro de entrada 5075, 5076, 5077 y un circuito de registro de salida 5080. La unidad de ramificación 5058 se puede comunicar 5081 con los registros generales 5059, la unidad de descodificación/despacho 5056 u otros circuitos 5073, por ejemplo.
La ejecución de un grupo de instrucciones puede interrumpirse por una diversidad de razones que incluyen una conmutación de contexto iniciada por un sistema operativo, una excepción de programa o error que provoca una conmutación de contexto, una señal de interrupción de E/S que provoca una conmutación de contexto o actividad de múltiples hilos de una pluralidad de programas (en un entorno de múltiples hilos), por ejemplo. Preferiblemente, una acción de conmutación de contexto guarda información de estado acerca de un programa actualmente en ejecución y, entonces, carga información de estado acerca de otro programa que se está invocando. La información de estado puede guardarse en registros de hardware o en memoria, por ejemplo. Preferiblemente, la información de estado comprende un valor de contador de programa que apunta a una siguiente instrucción a ejecutarse, códigos de condición, información de traducción de memoria y contenido de registro de arquitectura. Una actividad de conmutación de contexto puede ejercerse por circuitos de hardware, programas de aplicación, programas de sistema operativo o código de firmware (microcódigo, picocódigo o código interno con licencia (LIC)) en solitario o en combinación.
Un procesador accede a operandos de acuerdo con métodos de instrucción definida. La instrucción puede proporcionar un operando inmediato que usa el valor de una porción de la instrucción, puede proporcionar uno o más campos de registro que apuntan explícitamente o bien a registros de propósito general o bien a registros de propósito especial (registros de punto flotante, por ejemplo). La instrucción puede utilizar registros implicados, identificados por un campo opcode como operandos. La instrucción puede utilizar ubicaciones de memoria para operandos. Una ubicación de memoria de un operando puede proporcionarse por un registro, un campo inmediato, o una combinación de registros y campo inmediato como se ejemplifica por la utilidad de desplazamiento largo de z/Architecture en donde la instrucción define un registro de base, un registro de índice y un campo inmediato (campo de desplazamiento) que se añaden juntos para proporcionar la dirección del operando en memoria, por ejemplo; o los modos de direccionamiento de Power ISA en donde las direcciones de Forma D definen un registro de base y un campo inmediato (campo de desplazamiento) que se suman para proporcionar la dirección del operando en la memoria; y en donde las direcciones de Forma X definen un registro de base y un registro de índice que se suman para proporcionar la dirección del operando en la memoria. La ubicación en el presente documento típicamente implica una ubicación en memoria principal (almacenamiento principal) a menos que se indique de otra manera.
Haciendo referencia a la figura 17C, un procesador accede a almacenamiento usando una unidad de carga/almacenamiento 5060. La unidad de carga/almacenamiento 5060 puede realizar una operación de carga obteniendo la dirección del operando objetivo en memoria 5053 y cargar el operando en un registro 5059 u otra ubicación de memoria 5053, o puede realizar una operación de almacenamiento obteniendo la dirección del operando objetivo en memoria 5053 y almacenar datos obtenidos de un registro 5059 u otra ubicación de memoria 5053 en la ubicación de operando objetivo en memoria 5053. La unidad de carga/almacenamiento 5060 puede ser especulativa y puede acceder a memoria en una secuencia que está desordenada con relación a la secuencia de instrucción, sin embargo, la unidad de carga/almacenamiento 5060 es para mantener la apariencia a programas en los que se ejecutaron instrucciones en orden. Una unidad de carga/almacenamiento 5060 se puede comunicar 5084 con los registros generales 5059, la unidad de descodificación/despacho 5056, la interfaz de caché/memoria 5053 u otros elementos 5083 y comprende diversos circuitos de registro 5086, 5087, 5088 y 5089, la ALU 5085 y la lógica de control 5090 para calcular direcciones de almacenamiento y para proporcionar la generación de secuencias en tuberías para mantener las operaciones en orden. Algunas operaciones pueden estar desordenadas pero la unidad de carga/almacenamiento proporciona funcionalidad para hacer que las operaciones desordenadas aparezcan para el programa como que se han realizado en orden, como es bien conocido en la técnica.
Preferiblemente, las direcciones que un programa de aplicación "observa" a menudo se denominan direcciones virtuales. Las direcciones virtuales se denominan en ocasiones como "direcciones lógicas" y "direcciones efectivas". Estas direcciones virtuales son virtuales en el sentido de que se redirigen a la ubicación de memoria física por una de una diversidad de tecnologías de traducción de dirección dinámica (DAT) que incluyen, pero sin limitarse a, simplemente añadir como prefijo un valor de desplazamiento a una dirección virtual, traducir la dirección virtual a través de una o más tablas de traducción, comprendiendo preferiblemente las tablas de traducción al menos una tabla de segmentos y una tabla de páginas en solitario o en combinación, preferiblemente, teniendo la tabla de segmentos una entrada que apunta a la tabla de páginas. En z/Architecture, se proporciona una jerarquía de traducción que incluye una tabla de región primera, una tabla de región segunda, una tabla de región tercera, una tabla de segmentos y una tabla de páginas opcional. El rendimiento de la traducción de dirección a menudo se mejora utilizando una memoria intermedia de traducción adelantada (TLB) que comprende entradas que correlacionan una dirección virtual con una ubicación de memoria física asociada. Las entradas se crean cuando la DAT traduce una dirección virtual usando las tablas de traducción. El uso posterior de la dirección virtual puede entonces usar la entrada de la TLB rápida en lugar de los accesos de tabla de traducción secuencial lenta. El contenido de la TLB puede gestionarse por una diversidad de algoritmos de sustitución que incluyen LRU (Menos Recientemente usado).
En el caso en el que el procesador es un procesador de un sistema de múltiples procesadores, cada procesador tiene la responsabilidad de mantener recursos compartidos, tales como E/S, cachés, TLB y memoria, entrelazados por coherencia. Típicamente, las tecnologías de "sondeo" se utilizarán al mantener la coherencia de caché. En un entorno de sondeo, cada línea de caché puede marcarse como que está en uno cualquiera de un estado compartido, un estado exclusivo, un estado cambiado, un estado no válido y similares para facilitar la compartición.
Las unidades de E/S 5054 (la figura 16) proporcionan al procesador con medios para fijarse a dispositivos periféricos que incluyen cinta, disco, impresoras, visualizadores y redes, por ejemplo. Las unidades de E/S a menudo se presentan al programa informático por controladores de software. En ordenadores centrales, tales como System z de IBM®, los adaptadores de canal y adaptadores de sistema abiertos son unidades de E/S del ordenador central que proporcionan las comunicaciones entre el sistema operativo y dispositivos periféricos. En los servidores de RISC, tales como Power Systems de IBM®, los adaptadores de propiedad exclusiva y los adaptadores de sistema abiertos son unidades de E/S que proporcionan las comunicaciones entre el sistema operativo y dispositivos periféricos.
Además, otros tipos de entornos informáticos pueden beneficiarse de uno o más aspectos. Como un ejemplo, un entorno puede incluir un emulador (por ejemplo, software u otros mecanismos de emulación), en el que una arquitectura particular (que incluye, por ejemplo, ejecución de instrucción, funciones de arquitectura, tal como traducción de dirección, y registros de arquitectura) o un subconjunto de las mismas se emula (por ejemplo, en un sistema informático nativo que tiene un procesador y memoria). En un entorno de este tipo, una o más funciones de emulación del emulador pueden implementar una o más realizaciones, incluso aunque un ordenador que ejecuta el emulador puede tener una arquitectura diferente de las capacidades que se están emulando. Como un ejemplo, en modo de emulación, se descodifica la instrucción u operación específica que se está emulando, y se crea una función de emulación apropiada para implementar la instrucción u operación individual.
En un entorno de emulación, un ordenador de anfitrión incluye, por ejemplo, una memoria para almacenar instrucciones y datos; una unidad de recuperación de instrucción para recuperar instrucciones de memoria y para proporcionar, opcionalmente, almacenamiento en memoria intermedia local para la instrucción recuperada; una unidad de descodificación de instrucción para recibir instrucciones recuperadas y para determinar el tipo de instrucciones que se han recuperado; y una unidad de ejecución de instrucción para ejecutar las instrucciones. La ejecución puede incluir datos de carga en un registro de la memoria; almacenar datos de vuelta a la memoria de un registro; o realizar algún tipo de operación aritmética o lógica, como se determina por la unidad de descodificación. En un ejemplo, cada unidad se implementa en software. Por ejemplo, las operaciones que se realizan por las unidades se implementan como una o más subrutinas dentro del software de emulador.
Más particularmente, en un ordenador central, las instrucciones de máquina de arquitectura se usan por programadores, normalmente hoy en día programadores de "C", a menudo por medio de una aplicación de compilador. Estas instrucciones almacenadas en el medio de almacenamiento pueden ejecutarse de manera nativa en un Servidor de Power Systems o de z/Architecture IBM®, o como alternativa en máquinas al ejecutar otras arquitecturas. Pueden emularse en los servidores de ordenador central de IBM® existentes y futuros, servidores de Power Systems y en otras máquinas de IBM® (por ejemplo, servidores de System x). Pueden ejecutarse en máquinas que ejecutan Linux en una amplia diversidad de máquinas usando hardware fabricado por iBm ®, Intel®, AMD, y otras. Además de la ejecución en ese hardware bajo una Power Architecture o z/Architecture, se puede usar Linux, así como máquinas que usan emulación por Hercules, UMX, o FSI (Fundamental Software, Inc), donde la ejecución en general es en un modo de emulación. En modo de emulación, se ejecuta software de emulación por un procesador nativo para emular la arquitectura de un procesador emulado.
El procesador nativo típicamente ejecuta software de emulación que comprende o bien firmware o bien un sistema operativo nativo para realizar la emulación del procesador emulado. El software de emulación es responsable de recuperar y ejecutar instrucciones de la arquitectura de procesador emulada. El software de emulación mantiene un contador de programa emulado para mantener el seguimiento de límites de instrucción. El software de emulación puede recuperar una o más instrucciones de máquina emuladas a la vez y convertir la una o más instrucciones de máquina emuladas a un correspondiente grupo de instrucciones de máquina nativas para su ejecución por el procesador nativo. Estas instrucciones convertidas se pueden almacenar en caché, de tal modo que se puede conseguir una conversión más rápida. No obstante, el software de emulación es para mantener las reglas de arquitectura de la arquitectura de procesador emulada para asegurar que los sistemas operativos y aplicaciones escritos para el procesador emulado operan correctamente. Adicionalmente, el software de emulación es para proporcionar recursos identificados por la arquitectura de procesador emulada que incluye, pero sin limitarse a, registros de control, registros de propósito general, registros de punto flotante, función de traducción de dirección dinámica que incluye tablas de segmentos y tablas de páginas, por ejemplo, mecanismos de interrupción, mecanismos de conmutación de contexto, relojes de hora del día (TOD) e interfaces de arquitectura a subsistemas de E/S de tal modo que un sistema operativo o un programa de aplicación designado para ejecutarse en el procesador emulado, puede ejecutarse en el procesador nativo que tiene el software de emulación.
Se descodifica una instrucción específica que se está emulando, y se solicita una subrutina para realizar la función de la instrucción individual. Se implementa una función de software de emulación que emula una función de un procesador emulado, por ejemplo, en una subrutina o controlador de "C", o algún otro método de suministro de un controlador para el hardware específico como estará dentro de la habilidad de los expertos en la materia después de entender la descripción de la realización preferida. Diversas patentes de emulación de software y hardware, incluyendo, pero sin limitarse a, la patente de EE. UU. n.° 5.551.013, titulada "Multiprocessor for Hardware Emulation", de Beausoleil et al.; y la Patente de Invención de Estados Unidos n.° 6.009.261, titulada "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processof", por Scalzi et al.; y la Patente de Invención de Estados Unidos n.° 5.574.873, titulada "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", por Davidian et al.; y la Patente de Invención de Estados Unidos n.° 6.308.255, titulada "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", por Gorishek et al.; y la Patente de Invención de Estados Unidos n.° 6.463.582, titulada "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", por Lethin et al.; y la Patente de Invención de Estados Unidos n.° 5.790.825, titulada "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", por Eric Traut; y muchas otras, ilustran una diversidad de maneras conocidas para conseguir la emulación de un formato de instrucción diseñado para una máquina diferente para una máquina objetivo disponible para los expertos en la materia.
En la figura 18, se proporciona un ejemplo de un sistema informático de anfitrión emulado 5092 que emula un sistema informático de anfitrión 5000' de una arquitectura de anfitrión. En el sistema informático de anfitrión emulado 5092, el procesador de anfitrión (CPU) 5091 es un procesador de anfitrión emulado (o procesador de anfitrión virtual) y comprende un procesador de emulación 5093 que tiene una arquitectura de conjunto de instrucciones nativas diferentes que las del procesador 5091 del ordenador de anfitrión 5000'. El sistema informático de anfitrión emulado 5092 tiene la memoria 5094 accesible para el procesador de emulación 5093. En la realización ilustrativa, la memoria 5094 se particiona en una porción de memoria informática de anfitrión 5096 y una porción de rutinas de emulación 5097. La memoria informática de anfitrión 5096 está disponible para programas del ordenador de anfitrión emulado 5092 de acuerdo con la arquitectura de ordenador de anfitrión. El procesador de emulación 5093 ejecuta instrucciones nativas de un conjunto de instrucciones de arquitectura de una arquitectura distinta de la del procesador emulado 5091, las instrucciones nativas obtenidas de la memoria de rutinas de emulación 5097, y puede acceder a una instrucción de anfitrión para la ejecución de un programa en la memoria informática de anfitrión 5096 empleando una o más instrucción o instrucciones obtenidas en una secuencia y rutina de acceso/descodificación que puede descodificar la instrucción o instrucciones de anfitrión a las que se ha accedido para determinar una rutina de ejecución de instrucción nativa para emular la función de la instrucción de anfitrión a la que se ha accedido. Otras utilidades que se definen para la arquitectura del sistema informático de anfitrión 5000' pueden emularse mediante rutinas de utilidades de arquitectura, que incluyen tales utilidades como registros de propósito general, registros de control, traducción de dirección dinámica y caché de soporte y procesador de subsistema de E/S, por ejemplo. Las rutinas de emulación pueden aprovechar también funciones disponibles en el procesador de emulación 5093 (tales como registros generales y traducción dinámica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulación. Los motores de hardware especial y de descarga pueden proporcionarse también para ayudar al procesador 5093 a emular la función del ordenador de anfitrión 5000'.
En una realización adicional, uno o más aspectos se refieren a la computación en la nube. Se entiende de antemano que, aunque esta divulgación incluye una descripción detallada acerca de la computación en la nube, la implementación de las enseñanzas enunciadas en el presente documento no se limita a un entorno informático en la nube. Más bien, las realizaciones de la presente invención son capaces de implementarse junto con cualquier otro tipo de entorno informático conocido en la actualidad o desarrollado posteriormente.
La computación en la nube es un modelo de prestación de servicios para habilitar un acceso de red conveniente bajo demanda a una agrupación compartida de recursos informáticos configurables (por ejemplo, redes, ancho de banda de red, servidores, procesamiento, memoria, almacenamiento, aplicaciones, máquinas virtuales y servicios) que se pueden aprovisionar y liberar rápidamente con un mínimo esfuerzo de gestión o interacción con un proveedor del servicio. Este modelo de nube puede incluir al menos cinco características, al menos tres modelos de servicio y al menos cuatro modelos de despliegue.
Las características son como sigue:
Autoservicio bajo demanda: un consumidor de la nube puede proporcionar unilateralmente capacidades informáticas, tales como hora de servidor y almacenamiento de red, según sea necesario, de forma automática, sin requerir la interacción humana con el proveedor del servicio.
Acceso de red amplio: las capacidades están disponibles a través de una red y se accede a las mismas a través de mecanismos convencionales que promueven el uso de plataformas de cliente livianas o pesadas heterogéneas (por ejemplo, teléfonos móviles, ordenadores portátiles y PDA).
Agrupación de recursos: los recursos informáticos del proveedor se agrupan para atender a múltiples consumidores mediante un modelo de múltiples inquilinos, con diferentes recursos físicos y virtuales asignados y reasignados dinámicamente de acuerdo con la demanda. Existe un sentido de independencia de ubicación en el hecho de que el consumidor generalmente no tiene control o conocimiento alguno acerca de la ubicación exacta de los recursos proporcionados, pero puede ser capaz de especificar la ubicación a un nivel de abstracción más alto (por ejemplo, país, estado o centro de datos).
Elasticidad rápida: las capacidades se pueden aprovisionar de forma rápida y elástica, en algunos casos automáticamente, para ampliar la escala rápidamente y liberarse rápidamente para reducir la escala rápidamente. Para el consumidor, las capacidades disponibles para el aprovisionamiento a menudo parecen ser ilimitadas y se pueden adquirir en cualquier cantidad y en cualquier momento.
Servicio medido: los sistemas en la nube controlan y optimizan automáticamente el uso de recursos aprovechando una capacidad de medición a un cierto nivel de abstracción apropiado para el tipo de servicio (por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario activas). El uso de recursos se puede supervisar, controlar y notificar proporcionando transparencia tanto para el proveedor como para el consumidor del servicio utilizado.
Los modelos de servicio son como sigue:
Software como servicio (SaaS): la capacidad proporcionada al consumidor es usar las aplicaciones del proveedor que se ejecutan en una infraestructura de nube. Se puede acceder a las aplicaciones desde diversos dispositivos de cliente a través de una interfaz de cliente liviano tal como un navegador web (por ejemplo, correo electrónico basado en web). El consumidor no gestiona ni controla la infraestructura de nube subyacente, incluyendo red, servidores, sistemas operativos, almacenamiento o incluso capacidades de aplicaciones individuales, con la posible excepción de ajustes de configuración de aplicación específica de usuario limitados.
Plataforma como servicio (PaaS): la capacidad proporcionada al consumidor es desplegar, en la infraestructura de nube, unas aplicaciones adquiridas o creadas por el consumidor, creadas usando lenguajes de programación y herramientas soportados por el proveedor. El consumidor no gestiona ni controla la infraestructura de nube subyacente, incluyendo redes, servidores, sistemas operativos o almacenamiento, pero tiene control sobre las aplicaciones desplegadas y, posiblemente, las configuraciones de entorno de alojamiento de aplicaciones.
Infraestructura como servicio (IaaS): la capacidad proporcionada al consumidor es la provisión de procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales en donde el consumidor es capaz de desplegar y de ejecutar software arbitrario, que puede incluir sistemas operativos y aplicaciones. El consumidor no gestiona ni controla la infraestructura de nube subyacente, pero tiene control sobre los sistemas operativos, el almacenamiento, las aplicaciones desplegadas y, posiblemente, un control limitado de componentes de interconexión de red seleccionados (por ejemplo, cortafuegos de anfitrión).
Los modelos de despliegue son como sigue:
Nube privada: la infraestructura de nube se opera únicamente para una organización. Esta puede ser gestionada por la organización o un tercero y puede existir en las instalaciones o fuera de las instalaciones.
Nube comunitaria: la infraestructura de nube es compartida por varias organizaciones y apoya a una comunidad específica que tiene preocupaciones compartidas (por ejemplo, consideraciones de misión, de requisitos de seguridad, de directivas y de conformidad). Esta puede ser gestionada por las organizaciones o un tercero y puede existir en las instalaciones o fuera de las instalaciones.
Nube pública: la infraestructura de nube se facilita al público en general o a un grupo industrial grande, y es propiedad de una organización que comercializa servicios en la nube.
Nube híbrida: la infraestructura de nube es una composición de dos o más nubes (privadas, comunitarias o públicas) que siguen siendo entidades singulares pero están unidas entre sí por una tecnología estandarizada o de propiedad exclusiva que habilita la portabilidad de datos y de aplicaciones (por ejemplo, ampliación en la nube para el equilibrado de carga entre nubes).
Un entorno informático en la nube está orientado a servicios, centrándose en la ausencia de estado, acoplamiento bajo, modularidad e interoperabilidad semántica. En el corazón de la computación en la nube se encuentra una infraestructura que comprende una red de nodos interconectados.
Haciendo referencia a continuación a la figura 19, se muestra un diagrama esquemático de un ejemplo de un nodo informático en la nube. El nodo informático en la nube 6010 es solo un ejemplo de un nodo informático en la nube adecuado y no pretende sugerir limitación alguna en cuanto al alcance de uso o funcionalidad de las realizaciones de la invención descritas en el presente documento. No obstante, el nodo informático en la nube 6010 es capaz de implementarse y/o realizar cualquiera de las funcionalidades expuestas anteriormente en el presente documento. En el nodo informático en la nube 6010 hay un sistema informático/servidor 6012, que es operativo con muchos otros entornos o configuraciones de sistemas informáticos de propósito general o especial. Los ejemplos de sistemas, entornos y/o configuraciones informáticas bien conocidos que pueden ser adecuados para su uso con el sistema informático/servidor 6012 incluyen, pero no se limitan a, sistemas informáticos personales, sistemas informáticos de servidor, clientes livianos, clientes pesados, dispositivos de mano o portátiles, sistemas de múltiples procesadores, sistemas basados en microprocesador, descodificadores, electrónica de consumo programable, PC de red, sistemas de miniordenador, sistemas informáticos de ordenador central y entornos informáticos en la nube distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares.
El sistema informático/servidor 6012 se puede describir en el contexto general de las instrucciones ejecutables de sistema informático, tales como módulos de programa, que son ejecutadas por un sistema informático. En general, los módulos de programa pueden incluir rutinas, programas, objetos, componentes, lógica, estructuras de datos y así sucesivamente, que realizan tareas particulares o implementan tipos de datos abstractos particulares. El sistema informático/servidor 6012 se puede poner en práctica también en entornos informáticos en la nube distribuidos donde las tareas se realizan por dispositivos de procesamiento remotos que están vinculados a través de una red de comunicaciones. En un entorno informático en la nube distribuido, los módulos de programa se pueden ubicar en medios de almacenamiento de sistema informático tanto locales como remotos, incluyendo dispositivos de almacenamiento de memoria.
Como se muestra en la figura 19, el sistema informático/servidor 6012 en el nodo informático en la nube 6010 se muestra en forma de un dispositivo informático de propósito general. Los componentes del sistema informático/servidor 6012 pueden incluir, pero no se limitan a, uno o más procesadores o unidades de procesamiento 6016, una memoria de sistema 6028 y un bus 6018 que acopla diversos componentes del sistema, incluyendo la memoria de sistema 6028, al procesador 6016.
El bus 6018 representa uno o más de cualquiera de varios tipos de estructuras de bus, incluyendo un bus de memoria o controlador de memoria, un bus de periféricos, un puerto de gráficos acelerado y un procesador o bus local usando cualquiera de una diversidad de arquitecturas de bus. A modo de ejemplo, y no de limitación, tales arquitecturas incluyen el bus de Arquitectura Convencional de la Industria (ISA), el bus de Arquitectura de Microcanal (MCA), el bus ISA potenciado (EISA), el bus local de la Asociación de Normas de Electrónica de Vídeo (VESA) y el bus de Interconexión de Componentes Periféricos (PCI).
El sistema informático/servidor 6012 incluye habitualmente una diversidad de medios legibles por sistema informático. Tales medios pueden ser cualquier medio disponible al que pueda acceder el sistema informático/servidor 6012, y estos incluyen medios tanto volátiles como no volátiles, y medios tanto extraíbles como no extraíbles.
La memoria de sistema 6028 puede incluir medios legibles por sistema informático en forma de una memoria volátil, tal como una memoria de acceso aleatorio (RAM) 6030 y/o una memoria caché 6032. El sistema informático/servidor 6012 puede incluir adicionalmente otros medios de almacenamiento de sistema informático extraíbles/no extraíbles y volátiles/no volátiles. Solo a modo de ejemplo, el sistema de almacenamiento 6034 se puede proporcionar para leer y escribir en un medio magnético no volátil y no extraíble (no mostrado y denominado habitualmente "unidad de disco duro"). Aunque no se muestra, se puede proporcionar una unidad de disco magnético para leer de y escribir en un disco magnético no volátil extraíble (por ejemplo, un "disco flexible") y una unidad de disco óptico para leer de o escribir en un disco óptico no volátil extraíble tal como un CD-ROM, un DVD-ROM u otro medio óptico. En tales casos, cada uno se puede conectar al bus 6018 mediante una o más interfaces de medios de datos. Como se representará y describirá adicionalmente a continuación, la memoria 6028 puede incluir al menos un producto de programa que tiene un conjunto (por ejemplo, al menos uno) de módulos de programa que están configurados para llevar a cabo las funciones de las realizaciones de la invención.
El programa/utilidad 6040, que tiene un conjunto (al menos uno) de módulos de programa 6042, se puede almacenar en la memoria 6028 a modo de ejemplo, y no de limitación, así como un sistema operativo, uno o más programas de aplicación, otros módulos de programa, y datos del programa. Cada uno del sistema operativo, uno o más programas de aplicación, otros módulos de programa y datos de programa o alguna combinación de los mismos, puede incluir una implementación de un entorno de interconexión de red. Los módulos de programa 6042 generalmente llevan a cabo las funciones y/o metodologías de realizaciones de la invención, como se describe en el presente documento.
El sistema/servidor informático 6012 también se puede comunicar con uno o más dispositivos externos 6014 tales como un teclado, un dispositivo apuntador, un visualizador 6024, etc.; uno o más dispositivos que posibilitan que un usuario interaccione con el sistema informático/servidor 6012; y/o cualquier dispositivo (por ejemplo, tarjeta de red, módem, etc.) que habilite que el sistema informático/servidor 6012 se comunique con otros uno o más dispositivos informáticos. Tal comunicación puede tener lugar a través de las interfaces de Entrada/Salida (E/S) 6022. Aun así, el sistema informático/servidor 6012 se puede comunicar con una o más redes, tales como una red de área local (LAN), una red de área extensa (WAN) general y/o una red pública (por ejemplo, Internet) a través del adaptador de red 6020. Como se ilustra, el adaptador de red 6020 se comunica con los otros componentes del sistema informático/servidor 6012 a través del bus 6018. Se debería entender que, aunque no se muestran, se podrían usar otros componentes de hardware y/o de software junto con el sistema informático/servidor 6012. Los ejemplos incluyen, pero no se limitan a: microcódigo, controladores de dispositivo, unidades de procesamiento redundantes, agrupaciones de unidades de disco externas, sistemas RAID, unidades de cinta y sistemas de almacenamiento en archivo de datos, etc.
Haciendo referencia a continuación a la figura 20, se representa un entorno informático en la nube 6050 ilustrativo. Como se muestra, el entorno informático en la nube 6050 comprende uno o más nodos informáticos en la nube 6010 con los que se pueden comunicar dispositivos informáticos locales usados por consumidores de la nube, tales como, por ejemplo, un asistente digital personal (PDA) o un teléfono celular 6054a , un ordenador de escritorio 6054B, un ordenador portátil 6054C y/o un sistema informático de automóvil 6054N. Los nodos 6010 se pueden comunicar entre sí. Estos se pueden agrupar (lo que no se muestra) física o virtualmente, en una o más redes, tales como nubes Privadas, Comunitarias, Públicas o Híbridas, como se ha descrito en el presente documento, o una combinación de las mismas. Esto permite que el entorno informático en la nube 6050 ofrezca infraestructura, plataformas y/o software como servicios para los cuales un consumidor de la nube no necesita mantener recursos en un dispositivo informático local. Se entiende que los tipos de dispositivos informáticos 6054A-N mostrados en la figura 20 pretenden ser solo ilustrativos y que los nodos informáticos 6010 y el entorno informático en la nube 6050 se pueden comunicar con cualquier tipo de dispositivo computarizado a través de cualquier tipo de red y/o conexión direccionable de red (por ejemplo, usando un navegador web).
Haciendo referencia a continuación a la figura 21, se muestra un conjunto de capas de abstracción funcional proporcionadas por el entorno informático en la nube 6050 (la figura 20). Se debería entender de antemano que se pretende que los componentes, las capas y las funciones mostrados en la figura 21 sean solo ilustrativos, y que las realizaciones de la invención no se limitan a los mismos. Como se ilustra, se proporcionan las siguientes capas y las funciones correspondientes:
La capa de hardware y de software 6060 incluye componentes de hardware y de software. Los ejemplos de componentes de hardware incluyen ordenadores centrales, en un ejemplo, sistemas de zSeries® de IBM®; Servidores basados en arquitectura de RISC (Computadora de Conjunto Reducido de Instrucciones), en un ejemplo, sistemas pSeries® de IBM; sistemas xSeries® de IBM; sistemas BladeCenter® de IBM; dispositivos de almacenamiento; redes y componentes de interconexión de red. Los ejemplos de componentes de software incluyen software de servidor de aplicaciones de red, en un ejemplo, software de servidor de aplicaciones de WebSphere® de IBM; y software de base de datos, en un ejemplo, software de base de datos DB2® de IBM (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere y DB2 son marcas comerciales de International Business Machines Corporation, registradas en muchas jurisdicciones a nivel mundial).
La capa de virtualización 6062 proporciona una capa de abstracción a partir de la cual se pueden proporcionar los ejemplos siguientes de entidades virtuales: servidores virtuales; almacenamiento virtual; redes virtuales, incluyendo redes privadas virtuales; aplicaciones y sistemas operativos virtuales; y clientes virtuales.
En un ejemplo, la capa de gestión 6064 puede proporcionar las funciones descritas a continuación. El aprovisionamiento de recursos proporciona una adquisición dinámica de recursos informáticos y otros recursos que se utilizan para realizar tareas dentro del entorno informático en la nube. La medición y la fijación de precios proporcionan un seguimiento de costes a medida que se utilizan recursos dentro del entorno informático en la nube, y una facturación o tarificación para el consumo de estos recursos. En un ejemplo, estos recursos pueden comprender licencias de software de aplicación. La seguridad proporciona una verificación de identidad para las tareas y consumidores de la nube, así como protección para datos y otros recursos. El portal de usuario proporciona acceso al entorno informático en la nube para consumidores y administradores de sistemas. La gestión de nivel de servicio proporciona una asignación y gestión de recursos informáticos en la nube de tal modo que se cumplen los niveles de servicio requeridos. La planificación y el cumplimiento de Acuerdo de Nivel de Servicio (SLA) proporcionan un acuerdo previo y la adquisición de recursos informáticos en la nube para los que se prevé un requisito futuro de acuerdo con un SLA.
La capa de cargas de trabajo 6066 proporciona ejemplos de funcionalidades para las que se puede utilizar el entorno informático en la nube. Los ejemplos de cargas de trabajo y funciones que se pueden proporcionar desde esta capa incluyen: correlación y navegación; desarrollo de software y gestión de ciclo de vida; impartición de educación de aula virtual; procesamiento de analítica de datos; y procesamiento de transacciones.
La terminología usada en el presente documento solo tiene el fin de describir realizaciones particulares y no pretende ser limitante. Como se usan en el presente documento, se pretende que las formas singulares "un", "una" y "el/la" incluyan asimismo las formas plurales, a menos que el contexto indique claramente lo contrario. Se entenderá adicionalmente que los términos "comprende" y/o "comprendiendo/que comprende", cuando se usan en esta memoria descriptiva, especifican la presencia de características indicadas, elementos integrantes, etapas, operaciones, elementos y/o componentes, pero no excluyen la presencia o adición de otras una o más características, elementos integrantes, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las estructuras, materiales, actos y equivalentes correspondientes de todos los significados o elementos de etapa más función en las reivindicaciones a continuación, si las hubiera, se pretende que incluyan cualquier estructura, material o acto para realizar la función en combinación con otros elementos reivindicados como se revindica específicamente. La descripción de una o más realizaciones se ha presentado para fines de ilustración y descripción, pero no se concibe para ser exhaustiva o limitarse en la forma divulgada. Muchas modificaciones y variaciones serán evidentes para los expertos en la materia. La realización se eligió y describió para explicar mejor diversos aspectos y la aplicación práctica, y para habilitar que otros expertos en la materia entiendan diversas realizaciones con diversas modificaciones ya que se adecuan al uso particular contemplado.

Claims (13)

REIVINDICACIONES
1. Un método para gestionar un procesamiento dentro de un entorno informático, comprendiendo dicho entorno informático un procesador de anfitrión que procesa en un primer modo arquitectónico, estando dicho método caracterizado por:
iniciar, por el procesador de anfitrión (152) que procesa en el primer modo arquitectónico, una primera máquina virtual de invitado (162), la primera máquina virtual de invitado para procesar (1104) en el primer modo arquitectónico, teniendo el primer modo arquitectónico una primera arquitectura de conjunto de instrucciones y proporcionando un primer conjunto de funciones arquitectónicas;
iniciar, por el procesador de anfitrión, una segunda máquina virtual de invitado (162), la segunda máquina virtual de invitado para procesar en un segundo modo arquitectónico diferente del primer modo arquitectónico, en donde el segundo modo arquitectónico tiene una segunda arquitectura de conjunto de instrucciones diferente de la primera arquitectura de conjunto de instrucciones y proporciona un segundo conjunto de funciones arquitectónicas diferente del primer conjunto de funciones arquitectónicas, siendo el segundo conjunto de funciones arquitectónicas un conjunto reducido de funciones arquitectónicas proporcionado en el primer conjunto de funciones arquitectónicas, en donde una función arquitectónica seleccionada proporcionada en el primer conjunto de funciones arquitectónicas está ausente del segundo conjunto de funciones arquitectónicas, siendo el segundo modo arquitectónico un modo de inhibición de funciones;
y realizar un procesamiento (1108) por la segunda máquina virtual de invitado en el segundo modo arquitectónico, en donde la realización de un procesamiento anula uno o más controles asociados con la función arquitectónica seleccionada que están definidos para controlar la ejecución de la segunda máquina virtual de invitado, en donde la función arquitectónica seleccionada no tiene la capacidad de ser activada/desactivada independientemente de otros controles dentro del entorno, debido a que la función arquitectónica seleccionada no se soporta y se suprime del segundo modo arquitectónico, en donde la función arquitectónica seleccionada comprende una traducción de dirección dinámica.
2. El procedimiento de la reivindicación 1, en donde al menos uno del procesador de anfitrión y la primera máquina virtual de invitado usa una traducción de dirección dinámica para traducir una dirección a otra dirección, y en donde, para la segunda máquina virtual de invitado, no está disponible una traducción de dirección dinámica, aunque un indicador en el bloque de control indica que la traducción de dirección dinámica está activada.
3. El método de cualquiera de las reivindicaciones anteriores, en donde el método comprende adicionalmente:
obtener, por la segunda máquina virtual de invitado, una solicitud para realizar una operación, la operación para usar o habilitar la función arquitectónica seleccionada;
basándose en la obtención de la solicitud, determinar si la segunda máquina virtual de invitado está procesando en el segundo modo arquitectónico; y
basándose en la determinación de que la segunda máquina virtual de invitado está procesando en el segundo modo arquitectónico, proporcionar una indicación de que la función arquitectónica seleccionada no se ha de usar o habilitar.
4. El procedimiento de la reivindicación 3, en donde la operación comprende una de una instrucción de cargar palabra de estado de programa que intenta activar la función arquitectónica seleccionada, una instrucción de cargar dirección real, una instrucción de establecer máscara de sistema que intenta activar la función arquitectónica seleccionada, una instrucción de almacenar entonces O máscara de sistema que intenta activar la función arquitectónica seleccionada, o una interrupción en la que una palabra de estado de programa de interrupción intenta activar la función arquitectónica seleccionada.
5. El método de cualquiera de las reivindicaciones anteriores, en donde la función arquitectónica seleccionada está ausente del segundo conjunto de funciones arquitectónicas basándose en un indicador del entorno informático que indica que la función arquitectónica seleccionada no se soporta independientemente de si un indicador de habilitación/deshabilitación para la función arquitectónica seleccionada indica habilitada.
6. El método de cualquiera de las reivindicaciones anteriores, en donde el primer modo arquitectónico comprende un direccionamiento de 64 bits y usa registros de propósito general de 64 bits, y el segundo modo arquitectónico comprende un direccionamiento de 31 bits y usa registros de propósito general de 32 bits.
7. Un sistema informático para gestionar un procesamiento dentro de un entorno informático, comprendiendo dicho sistema informático una memoria, y un procesador de anfitrión en comunicación con la memoria y que procesa en un primer modo arquitectónico, en donde el sistema informático está configurado para realizar un método, estando dicho método caracterizado por:
iniciar, por el procesador de anfitrión que procesa en el primer modo arquitectónico, una primera máquina virtual de invitado, la primera máquina virtual de invitado para procesar en el primer modo arquitectónico, teniendo el primer modo arquitectónico una primera arquitectura de conjunto de instrucciones y proporcionando un primer conjunto de funciones arquitectónicas;
iniciar, por el procesador de anfitrión, una segunda máquina virtual de invitado, la segunda máquina virtual de invitado para procesar en un segundo modo arquitectónico diferente del primer modo arquitectónico, en donde el segundo modo arquitectónico tiene una segunda arquitectura de conjunto de instrucciones diferente de la primera arquitectura de conjunto de instrucciones y proporciona un segundo conjunto de funciones arquitectónicas diferente del primer conjunto de funciones arquitectónicas, siendo el segundo conjunto de funciones arquitectónicas un conjunto reducido de funciones arquitectónicas proporcionado en el primer conjunto de funciones arquitectónicas, en donde una función arquitectónica seleccionada proporcionada en el primer conjunto de funciones arquitectónicas está ausente del segundo conjunto de funciones arquitectónicas, siendo el segundo modo arquitectónico un modo de inhibición de funciones; y
realizar un procesamiento por la segunda máquina virtual de invitado en el segundo modo arquitectónico, en donde la realización de un procesamiento anula uno o más controles asociados con la función arquitectónica seleccionada que están definidos para controlar la ejecución de la segunda máquina virtual de invitado, en donde la función arquitectónica seleccionada no tiene la capacidad de ser activada/desactivada independientemente de otros controles dentro del entorno, debido a que la función arquitectónica seleccionada no se soporta y se suprime del segundo modo arquitectónico, en donde la función arquitectónica seleccionada comprende una traducción de dirección dinámica.
8. El sistema informático de la reivindicación 7, en donde al menos uno del procesador de anfitrión y la primera máquina virtual de invitado usa una traducción de dirección dinámica para traducir una dirección a otra dirección, y en donde, para la segunda máquina virtual de invitado, no está disponible una traducción de dirección dinámica, aunque un indicador en el bloque de control indica que la traducción de dirección dinámica está activada.
9. El sistema informático de una u otra de las reivindicaciones 7 u 8, en donde el método comprende adicionalmente: obtener, por la segunda máquina virtual de invitado, una solicitud para realizar una operación, la operación para usar o habilitar la función arquitectónica seleccionada;
basándose en la obtención de la solicitud, determinar si la segunda máquina virtual de invitado está procesando en el segundo modo arquitectónico; y
basándose en la determinación de que la segunda máquina virtual de invitado está procesando en el segundo modo arquitectónico, proporcionar una indicación de que la función arquitectónica seleccionada no se ha de usar o habilitar.
10. El sistema informático de la reivindicación 9, en donde la operación comprende una de una instrucción de cargar palabra de estado de programa que intenta activar la función arquitectónica seleccionada, una instrucción de cargar dirección real, una instrucción de establecer máscara de sistema que intenta activar la función arquitectónica seleccionada, una instrucción de almacenar entonces O máscara de sistema que intenta activar la función arquitectónica seleccionada, o una interrupción en la que una palabra de estado de programa de interrupción intenta activar la función arquitectónica seleccionada.
11. El sistema informático de cualquiera de las reivindicaciones 7 a 10, en donde la función arquitectónica seleccionada está ausente del segundo conjunto de funciones arquitectónicas basándose en un indicador del entorno informático que indica que la función arquitectónica seleccionada no se soporta independientemente de si un indicador de habilitación/deshabilitación para la función arquitectónica seleccionada indica habilitada.
12. Un producto de programa informático para gestionar un procesamiento con un entorno informático, comprendiendo el producto de programa informático:
un medio de almacenamiento legible por ordenador legible por un circuito de procesamiento y que almacena instrucciones para su ejecución por el circuito de procesamiento para realizar un método de acuerdo con cualquiera de las reivindicaciones 1 a 6.
13. Un programa informático almacenado en un medio legible por ordenador y que se puede cargar en la memoria interna de un ordenador digital, que comprende porciones de código de software, cuando dicho programa se ejecuta en un ordenador, para realizar el método de cualquiera de las reivindicaciones 1 a 6.
ES15708240T 2014-03-18 2015-03-09 Gestión de un procesamiento asociado con utilidades arquitectónicas seleccionadas Active ES2878147T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/217,824 US9916185B2 (en) 2014-03-18 2014-03-18 Managing processing associated with selected architectural facilities
US14/554,675 US9916186B2 (en) 2014-03-18 2014-11-26 Managing processing associated with selected architectural facilities
PCT/EP2015/054841 WO2015139988A1 (en) 2014-03-18 2015-03-09 Managing processing associated with selected architectural facilities

Publications (1)

Publication Number Publication Date
ES2878147T3 true ES2878147T3 (es) 2021-11-18

Family

ID=54142212

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15708240T Active ES2878147T3 (es) 2014-03-18 2015-03-09 Gestión de un procesamiento asociado con utilidades arquitectónicas seleccionadas

Country Status (22)

Country Link
US (4) US9916185B2 (es)
EP (1) EP3117310B1 (es)
JP (1) JP6407299B2 (es)
KR (1) KR101843679B1 (es)
CN (1) CN106133687B (es)
AU (1) AU2015233738B2 (es)
BR (1) BR112016021603B1 (es)
CA (1) CA2940909C (es)
DK (1) DK3117310T3 (es)
ES (1) ES2878147T3 (es)
HU (1) HUE055096T2 (es)
IL (1) IL247855B (es)
LT (1) LT3117310T (es)
MX (1) MX2016011920A (es)
PL (1) PL3117310T3 (es)
PT (1) PT3117310T (es)
RU (1) RU2665243C2 (es)
SG (1) SG11201606097WA (es)
SI (1) SI3117310T1 (es)
TW (1) TWI639084B (es)
WO (1) WO2015139988A1 (es)
ZA (1) ZA201605469B (es)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652210B2 (en) 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) * 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
CN111258867B (zh) * 2015-12-30 2022-04-22 华为技术有限公司 一种公有云的拨测方法和装置
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
KR20190062407A (ko) 2016-09-30 2019-06-05 쓰리엠 이노베이티브 프로퍼티즈 컴파니 다수의 프로세싱 시스템의 동기화
US10713213B2 (en) * 2016-12-21 2020-07-14 Intel Corporation Systems and methods for multi-architecture computing
US10684984B2 (en) 2016-12-21 2020-06-16 Intel Corporation Computing devices and server systems with processing cores having different instruction set architectures
US10552207B2 (en) 2016-12-21 2020-02-04 Intel Corporation Systems and methods for multi-architecture computing including program stack translation
US11275709B2 (en) 2017-05-02 2022-03-15 Intel Corporation Systems and methods for multi-architecture computing
US10228981B2 (en) * 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US11175853B2 (en) * 2017-05-09 2021-11-16 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory
TWI649690B (zh) * 2017-07-24 2019-02-01 優像數位媒體科技股份有限公司 Integration of distributed computing engine modules and control of interactive interface analysis modules system
TWI658365B (zh) * 2017-10-30 2019-05-01 緯創資通股份有限公司 連接模組
US11226839B2 (en) * 2019-02-27 2022-01-18 International Business Machines Corporation Maintaining compatibility for complex functions over multiple machine generations

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59123943A (ja) * 1982-12-29 1984-07-17 Fujitsu Ltd Vmアシスト制御方式
JPS60254358A (ja) 1984-05-31 1985-12-16 Toshiba Corp マルチア−キテクチヤマイクロプロセツサシステム
JPH02135528A (ja) 1988-11-16 1990-05-24 Oki Electric Ind Co Ltd マルチosにおける起動os選択方法
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
JPH0447853A (ja) 1990-06-15 1992-02-18 Nec Home Electron Ltd 情報処理装置の通信中通話方式
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
JPH06332803A (ja) 1993-05-25 1994-12-02 Hitachi Ltd 仮想計算機システムにおけるtlb制御方法
GB2289353B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
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
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
US6199202B1 (en) 1998-01-06 2001-03-06 Hewlett-Packard Company Method and apparatus for the inter-operation of differing architectural and run time conventions
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
US6772325B1 (en) 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6496971B1 (en) 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
US7058791B1 (en) * 2000-08-09 2006-06-06 Advanced Micro Devices, Inc. Establishing a mode indication responsive to two or more indications
US7146305B2 (en) 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US7406682B2 (en) 2001-03-26 2008-07-29 Emc Corporation Translator-compiler for converting legacy management software
US7496498B2 (en) 2003-03-24 2009-02-24 Microsoft Corporation Front-end architecture for a multi-lingual text-to-speech system
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7552426B2 (en) 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7234037B2 (en) 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US8024730B2 (en) 2004-03-31 2011-09-20 Intel Corporation Switching between protected mode environments utilizing virtual machine functionality
US7562209B2 (en) 2004-04-07 2009-07-14 Marvell International, Ltd. Supporting different instruction set architectures during run time
US7339837B2 (en) 2004-05-18 2008-03-04 Infineon Technologies Ag Configurable embedded processor
US7260702B2 (en) * 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
US7308571B2 (en) * 2004-10-06 2007-12-11 Intel Corporation Overriding processor configuration settings
US7647589B1 (en) 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7562349B2 (en) 2005-04-25 2009-07-14 Sap Ag Version adaptation interface for integration of different virtual machines
US7496495B2 (en) 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
KR100663864B1 (ko) 2005-06-16 2007-01-03 엘지전자 주식회사 멀티-코어 프로세서의 프로세서 모드 제어장치 및 방법
US7523291B2 (en) * 2005-07-26 2009-04-21 International Business Machines Corporation System and method for testing for memory address aliasing errors
RU2294010C1 (ru) * 2005-09-05 2007-02-20 Павел Михайлович Шестаков Способ обработки цифровых данных
US7409537B2 (en) 2005-10-06 2008-08-05 Microsoft Corporation Fast booting an operating system from an off state
JP2007207074A (ja) 2006-02-03 2007-08-16 Ricoh Co Ltd オペレーションシステム、スレッド制御機構、及び情報処理装置
WO2007122640A2 (en) 2006-04-26 2007-11-01 Tata Consultancy Services A system and method for automated re-architectureing of legacy systems using object-oriented language
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US8117614B2 (en) 2006-05-19 2012-02-14 International Business Machines Corporation Extract CPU time facility
CN100470476C (zh) 2006-05-25 2009-03-18 杭州晟元芯片技术有限公司 一种芯片上电后的程序引导方法
US20080093277A1 (en) 2006-06-13 2008-04-24 John Armour Cadence detection in a sequence of video fields
US8028290B2 (en) * 2006-08-30 2011-09-27 International Business Machines Corporation Multiple-core processor supporting multiple instruction set architectures
US8479264B2 (en) * 2006-09-29 2013-07-02 Micron Technology, Inc. Architecture for virtual security module
KR101120956B1 (ko) 2006-12-31 2012-03-05 쌘디스크 코포레이션 휴대용 멀티-플랫폼 부팅시스템과 아키텍쳐
US7783867B2 (en) 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US8677098B2 (en) * 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US8321861B2 (en) * 2008-02-20 2012-11-27 Arm Limited Non-native program execution across multiple execution environments
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8176280B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8095773B2 (en) * 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
WO2013098643A2 (en) 2011-12-16 2013-07-04 Hyperion Core Inc. Advanced processor architecture
US8301865B2 (en) 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US20110179254A1 (en) * 2010-01-15 2011-07-21 Sun Microsystems, Inc. Limiting speculative instruction fetching in a processor
GB2478726B (en) 2010-03-15 2013-12-25 Advanced Risc Mach Ltd Mapping between registers used by multiple instruction sets
US9851969B2 (en) * 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
US10521231B2 (en) * 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
US8479172B2 (en) 2010-11-23 2013-07-02 International Business Machines Corporation Virtual machine testing
US9141389B2 (en) * 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9063747B2 (en) * 2011-04-28 2015-06-23 Freescale Semiconductor, Inc. Microprocessor systems and methods for a combined register file and checkpoint repair register
TW201248499A (en) * 2011-05-18 2012-12-01 Asustek Comp Inc Method of swapping between operating systems applied to computer system
KR101780052B1 (ko) 2011-08-24 2017-09-19 한국전자통신연구원 정보처리 시스템에서 운영체제 전환방법
CN102955713B (zh) 2011-08-31 2015-11-25 北京中电华大电子设计有限责任公司 一种802.11n无线网卡芯片仿真固件优化的处理方法
US8930950B2 (en) * 2012-01-19 2015-01-06 International Business Machines Corporation Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US9251027B2 (en) * 2012-03-05 2016-02-02 Dell Productes L.P. Information handling system performance optimization system
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
KR102107570B1 (ko) * 2012-08-30 2020-05-07 유니버시티 오브 버지니아 페이턴트 파운데이션 다중모드 라디오들을 갖춘 초저전력 감지 플랫폼
TWI569205B (zh) 2012-08-31 2017-02-01 威盛電子股份有限公司 一種微處理器及其操作方法
US9348757B2 (en) * 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
JP6075013B2 (ja) 2012-10-31 2017-02-08 富士通株式会社 ログ取得プログラム、ログ取得装置及びログ取得方法
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9921848B2 (en) * 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9594660B2 (en) * 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores

Also Published As

Publication number Publication date
US10747582B2 (en) 2020-08-18
AU2015233738A1 (en) 2016-08-04
US20180081735A1 (en) 2018-03-22
BR112016021603A2 (es) 2017-08-15
RU2665243C2 (ru) 2018-08-28
DK3117310T3 (da) 2021-07-05
BR112016021603B1 (pt) 2022-10-18
CA2940909A1 (en) 2015-09-24
US20150269004A1 (en) 2015-09-24
CN106133687A (zh) 2016-11-16
CA2940909C (en) 2022-10-18
US20150269085A1 (en) 2015-09-24
AU2015233738B2 (en) 2018-03-01
US9916185B2 (en) 2018-03-13
PT3117310T (pt) 2021-07-05
US9916186B2 (en) 2018-03-13
SG11201606097WA (en) 2016-08-30
PL3117310T3 (pl) 2021-10-25
ZA201605469B (en) 2022-01-26
TW201610667A (zh) 2016-03-16
IL247855A0 (en) 2016-11-30
CN106133687B (zh) 2020-01-10
SI3117310T1 (sl) 2021-09-30
HUE055096T2 (hu) 2021-10-28
IL247855B (en) 2019-10-31
EP3117310B1 (en) 2021-06-09
US20180081736A1 (en) 2018-03-22
KR20160134780A (ko) 2016-11-23
KR101843679B1 (ko) 2018-03-29
EP3117310A1 (en) 2017-01-18
TWI639084B (zh) 2018-10-21
WO2015139988A1 (en) 2015-09-24
AU2015233738A8 (en) 2016-08-11
JP6407299B2 (ja) 2018-10-17
RU2016126975A (ru) 2018-04-18
MX2016011920A (es) 2016-12-09
JP2017513113A (ja) 2017-05-25
LT3117310T (lt) 2021-07-12
US10747583B2 (en) 2020-08-18

Similar Documents

Publication Publication Date Title
ES2878147T3 (es) Gestión de un procesamiento asociado con utilidades arquitectónicas seleccionadas
US11023256B2 (en) Architectural mode configuration
ES2746479T3 (es) Secuencia de arranque común para el programa utilitario de control capaz de ser inicializado en múltiples arquitecturas