ES2381432T3 - Traducción dinámica de direcciones con calificador con excepción de traducción - Google Patents

Traducción dinámica de direcciones con calificador con excepción de traducción Download PDF

Info

Publication number
ES2381432T3
ES2381432T3 ES09714687T ES09714687T ES2381432T3 ES 2381432 T3 ES2381432 T3 ES 2381432T3 ES 09714687 T ES09714687 T ES 09714687T ES 09714687 T ES09714687 T ES 09714687T ES 2381432 T3 ES2381432 T3 ES 2381432T3
Authority
ES
Spain
Prior art keywords
address
translation
server
entry
bits
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
ES09714687T
Other languages
English (en)
Other versions
ES2381432T8 (es
Inventor
Dan Greiner
Lisa Heller
Damian Osisek
Erwin Pfeffer
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 ES2381432T3 publication Critical patent/ES2381432T3/es
Publication of ES2381432T8 publication Critical patent/ES2381432T8/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • 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/652Page size control
    • 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

Procedimiento para la calificación de una excepción de traducción en una función de traducción dinamica de direcciones, capaz de traducir una dirección virtual a una dirección traducida de un bloque de datos en el almacenamiento (208) principal en un sistema (200) informatico, comprendiendo el procedimiento: obtener una dirección virtual a traducir; traducir dinamicamente la dirección virtual a una dirección real o absoluta de un bloque de datos deseado en el almacenamiento principal; y en respuesta a un evento de interrupción de excepción de traducción que ha ocurrido durante la traducción dinamica de direcciones de la dirección virtual, almacenar en un calificador de excepción de traducción, bits para indicar que dicha excepción de traducción era una de entre una excepción OAT de servidor, que ha ocurrido mientras se ejecutaba un programa de servidor, y una excepción OAT de servidor que ha ocurrido mientras se ejecutaba un programa de cliente; y caracterizado por almacenar en dicho calificador de excepción de traducción bits para indicar cualquiera de entre un tamafo de un marco de cliente al que pertenece dicha excepción OAT de servidor, y un tamafo de un marco de servidor a ser asignado para respaldar dicho marco de cliente

Description

Traducci6n dinamica de direcciones con calificador de excepci6n de traducci6n
Campo de la invenci6n
La presente invenci6n se refiere, en general, a sistemas y a procedimientos para la traducci6n de una direcci6n virtual en un sistema informatico y, mas particularmente, a sistemas y a procedimientos de traducci6n de una direcci6n virtual a una direcci6n real o absoluta de un bloque de datos en un sistema informatico que tiene una funci6n de traducci6n dinamica de direcciones en la que la traducci6n de direcciones virtuales se produce a traves de una jerarquia de tablas de traducci6n.
Antecedentes de la invenci6n
La traducci6n dinamica de direcciones (OAT) proporciona la capacidad de interrumpir la ejecuci6n de un programa en un momento arbitrario, salvar el mismo y sus datos en un almacenamiento auxiliar, tal como un dispositivo de almacenamiento de acceso directo y, en un momento posterior, devolver al programa y los datos a diferentes posiciones de almacenamiento (memoria) para la reanudaci6n de la ejecuci6n. La transferencia del programa y sus datos entre el almacenamiento principal y auxiliar puede ser realizado por partes, y la devoluci6n de la informaci6n al almacenamiento principal puede tener lugar en respuesta a un intento por parte de la CPU de acceder a ella en el momento que es necesaria para su ejecuci6n. Estas funciones pueden ser realizadas sin un cambio o una inspecci6n del programa y sus datos, no requieren ninguna convenci6n de programaci6n explicita en el programa trasladado, y no afectan a la ejecuci6n del programa, excepto por el retardo de tiempo implicado.
Con un soporte apropiado por parte de un sistema operativo, la funci6n de traducci6n dinamica de direcciones puede ser usada para proporcionar a un usuario un sistema en el que el almacenamiento parece ser mas grande que el almacenamiento principal que esta disponible en la configuraci6n. Este almacenamiento principal aparente se denomina, frecuentemente, almacenamiento virtual, y las direcciones usadas para designar las posiciones en el almacenamiento virtual se denominan, frecuentemente, direcciones virtuales. El almacenamiento virtual de un usuario puede exceder, en mucho, el tamafo del almacenamiento principal que esta disponible en la configuraci6n y, normalmente, es mantenido en el almacenamiento auxiliar. Se considera que el almacenamiento virtual esta compuesto de bloques de datos, denominados, comunmente, paginas (denominadas tambien segmentos y regiones). S6lo las paginas del almacenamiento virtual, referenciadas mas recientemente, son asignadas para ocupar bloques de almacenamiento principal fisico. Conforme el usuario hace referencia a paginas del almacenamiento virtual que no aparecen en el almacenamiento principal, las mismas son introducidas para reemplazar las paginas en el almacenamiento principal que tienen una menor probabilidad de ser necesitadas. En algunos casos, el almacenamiento virtual es asignado al almacenamiento principal durante un periodo de tiempo largo (o permanentemente), independientemente de si el almacenamiento es referenciado o no. El intercambio de paginas del almacenamiento puede ser realizado por el sistema operativo sin el conocimiento del usuario.
Los programas usan direcciones (o direcciones virtuales) para acceder al almacenamiento virtual. El programa puede extraer instrucciones desde el almacenamiento virtual o cargar datos o almacenar datos desde el almacenamiento virtual usando direcciones virtuales. Las direcciones virtuales asociadas con un rango del almacenamiento virtual definen un espacio de direcciones. Con un soporte apropiado por parte de un sistema operativo, la funci6n de traducci6n dinamica de direcciones puede ser usada para proporcionar un numero de espacios de direcciones. Estos espacios de direcciones pueden ser usados para proporcionar grados de aislamiento entre los usuarios. Oicho soporte puede consistir en un espacio de direcciones completamente diferente para cada usuario, proporcionando, de esta manera, un aislamiento completo, o puede proporcionarse un area compartida mediante la asignaci6n de una porci6n de cada espacio de direcciones a una unica area de almacenamiento comun. Tambien, se proporcionan instrucciones que permiten que un programa semi-privilegiado acceda a mas de uno de dichos espacio de direcciones.
La traducci6n dinamica de direcciones permite la traducci6n de direcciones virtuales desde multiples espacios de direcciones diferentes. En un procesador IBM® System z, por ejemplo, estos espacios de direcciones se denominan espacio de direcciones primario, espacio de direcciones secundario y espacios de direcciones especificados por registro de acceso. Un programa privilegiado puede hacer tambien que el espacio de direcciones local sea accedido. La traducci6n dinamica de direcciones puede ser especificada para direcciones de datos e instrucciones generadas por la CPU.
Como es comun en la tecnica, la OAT es realizada usando porciones sucesivas de la direcci6n virtual como indices, para seleccionar las entradas en una serie de tablas de traducci6n (por ejemplo, tablas de primera regi6n, de segunda regi6n, de tercera regi6n, de segmentos y de paginas). Cada entrada de tabla intermedia, si esta marcada como valida, contiene el origen, el desplazamiento y la longitud de la siguiente tabla de nivel inferior, que es indexada, a continuaci6n, por la
siguiente porci6n de la direcci6n virtual, hasta que se alcanza una entrada de "hoja", que contiene una direcci6n de marco real o absoluta. La porci6n restante de la direcci6n virtual es usada, a continuaci6n, como un indicede byte en es marco, para completar el resultado de la traducci6n.
La virtualizaci6n es usada para mejorar la eficiencia y la flexibilidad en los entornos informaticos. Antes de la virtualizaci6n, tipicamente, se ejecutaba un unico sistema operativo en una maquina. En un entorno virtualizado, un servidor o programa hipervisor tiene el control de los recursos de la maquina. Este servidor crea multiples contenedores, maquinas virtuales, en las que pueden ejecutarse instancias, separadas e independientes, de sistemas operativos, denominadas clientes, que comparten recursos, tales como procesadores y memoria, bajo el control del servidor.
En un entorno de cliente paginable (maquina virtual), por ejemplo, en un procesador IBM® System z, la traducci6n dinamica de direcciones ocurre en dos niveles: una pagina virtual de cliente esta respaldada por un marco real de cliente, y estos marcos de cliente estan, a su vez, representados como memoria virtual de servidor, dividida en paginas virtuales de servidor que estan respaldadas por los marcos reales de servidor. Oebido a que la traducci6n de direcciones es gestionada de manera independiente por el cliente y el servidor, un marco de cliente de cualquier tamafo puede ser asignado a un area virtual de servidor, compuesta de paginas de cualquier tamafo. Oe esta manera, un marco de cliente podria consistir en una pagina de servidor, muchas paginas de servidor (marco de cliente grande en paginas de servidor pequefas), o una porci6n de una pagina de servidor (marcos de cliente pequefos en una pagina de servidor grande). La memoria puede ser gestionada de manera mas eficiente, y la memoria intermedia de traducci6n adelantada (TLB) en la maquina puede ser usada de manera mas eficiente, cuando el servidor usa el mismo tamafo de pagina que el marco de cliente que respalda. Oe esta manera, por ejemplo, un marco de cliente de 1 Megabyte es tratado como una unidad por el cliente, y deberia estar respaldado por un marco de servidor de 1 Megabyte, en lugar de 256 marcos de 4 Kilobytes, paginados de manera separada. Esto permite que una unica entrada TLB mapee la totalidad del megabyte de las direcciones virtuales de cliente a las direcciones absolutas de servidor correspondientes.
Con el fin de que el tamafo de pagina de servidor se ajuste al tamafo de marco de cliente, el servidor debe ser capaz de determinar que tamafo de marco pretende usar el cliente en las diferentes areas de la memoria de cliente. En algunos casos, el cliente puede utilizar una instrucci6n de gesti6n de marco que indica el tamafo previsto de marco de cliente y, a continuaci6n, la gesti6n de esa instrucci6n por el firmware o el servidor puede proporcionar un marco de servidor, ajustado en tamafo, para respaldar el marco de cliente. Sin embargo, si el cliente no usa esta instrucci6n en el momento de implementaci6n, o, si mas tarde, cambia el tamafo de marco, los tamafos de servidor y de cliente ya no coinciden. En particular, si el servidor ha paginado una porci6n de la memoria de cliente y, a continuaci6n, el cliente la referencia, se emite una excepci6n de traducci6n de servidor, de manera que el servidor tiene la oportunidad de proporcionar una memoria de respaldo con los contenidos de los marcos de cliente preferentes. Esta interrupci6n ofrece una oportunidad adicional para que el servidor asigne un marco que se ajusta al tamafo de marco de cliente.
Lo que se necesita es una funci6n de traducci6n dinamica de direcciones mejorada, que proporcione una funcionalidad adicional, hasta ahora desconocida en la tecnica, que informe, de manera efectiva y eficiente, al procesador de servidor para que asigne un marco de tamafo apropiado con el que respaldar el marco de cliente en respuesta a si la interrupci6n fue causada por la ejecuci6n en una configuraci6n servidor o cliente y, si ha sido en una configuraci6n de cliente, si la interrupci6n esta relacionada con un marco de cliente, grande o pequefo, identificado por una entrada de hoja de la tabla de OAT de cliente, o a un marco de cliente referenciado de alguna otra manera.
El documento US 2004/024953A1 describe un procedimiento de uso de una pluralidad de espacios de memoria virtuales para proporcionar una compatibilidad binaria eficiente entre una pluralidad de arquitecturas fuente y una unica arquitectura objetivo.
Resumen de la invenci6n
Se proporciona un procedimiento segun la reivindicaci6n 1 y un producto de programa informatico y un sistema correspondiente, que proporciona un calificador de excepci6n de traducci6n para una funci6n de traducci6n dinamica de direcciones que traduce una direcci6n virtual a una direcci6n real o absoluta de un bloque de datos en el almacenamiento principal de una sistema informatico que tiene una arquitectura de maquina.
En una realizaci6n ejemplar, se obtiene una direcci6n virtual a ser traducida. Se obtiene una direcci6n de origen de una primera tabla de traducci6n de una jerarquia de tablas de traducci6n usadas en la traducci6n. La jerarquia de tablas de traducci6n consiste en una o mas de entre una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos y, opcionalmente, una tabla de paginas. A continuaci6n, prosigue la traducci6n dinamica de direcciones de la direcci6n virtual a una direcci6n real o absoluta de un bloque de datos en el almacenamiento principal. Si, por ejemplo, la traducci6n no puede ser completada, si una de las entradas de la tabla necesaria para la traducci6n esta marcada con no valida, entonces, se produce una interrupci6n de excepci6n de traducci6n. En respuesta a un evento de interrupci6n de excepci6n de traducci6n de servidor que se ha producido durante 3
la traducci6n de la direcci6n virtual, los bits son almacenados en un calificador de excepci6n de traducci6n, para indicar que la excepci6n de traducci6n era una excepci6n de OAT de servidor que se ha producido durante la ejecuci6n de un programa de servidor, y una excepci6n de OAT de servidor que se ha producido mientras se ejecutaba un programa de cliente. El campo TXQ es capaz de indicar tambien que la excepci6n de traducci6n era una excepci6n de OAT de cliente que se ha producido mientras se ejecutaba el programa de cliente; que la excepci6n de OAT de servidor estaba relacionada con una direcci6n derivada de una entrada de tabla de hoja de cliente; que la excepci6n de OAT de servidor estaba relacionada con una direcci6n derivada de una direcci6n real de marco de pagina de cliente; y que la excepci6n de OAT de servidor estaba relacionada con una direcci6n derivada desde una direcci6n absoluta de marco de segmento de cliente. El campo TXQ es capaz de indicar ademas un tamafo de un marco de cliente al que pertenece la excepci6n de OAT de servidor y que se necesita un tamafo de marco mas grande o mas pequefo, de manera que el servidor o el firmware puede proporcionar un tamafo apropiado de marco de servidor con el cual respaldar un marco de cliente. Se proporcionan otras realizaciones.
A continuaci6n, la invenci6n se describira en conexi6n con ciertas realizaciones ilustradas.
Breve descripci6n de los dibujos
Las figuras adjuntas, en las que los numeros de referencia similares hacen referencia a elementos identicos o a elementos funcionalmente similares a lo largo de las vistas separadas y que, junto con la descripci6n detallada a continuaci6n, se incorporan a la especificaci6n y forman parte de la misma, sirven para ilustrar adicionalmente diversas realizaciones y para explicar diversos principios y ventajas, todas segun la presente invenci6n.
La Fig. 1 ilustra una realizaci6n de un sistema informatico servidor de la tecnica anterior en la que se realizara una traducci6n dinamica mejorada de direcciones de cliente y servidor;
La Fig. 2 proporciona un ejemplo de un sistema informatico servidor emulado de la tecnica anterior que emula el sistema informatico de una arquitectura de servidor;
La Fig. 3 ilustra una realizaci6n de la tecnica anterior de la manera en la que la palabra de estado de programa es usada para determinar el ASCE efectivo para la traducci6n dinamica de direcciones de la direcci6n virtual;
La Fig. 4 ilustra una realizaci6n de la tecnica anterior en la que el ASCE efectivo determinado en la Fig. 3 es usado para determinar la tabla de traducci6n de nivel mas alto en la jerarquia de tablas de traducci6n usadas en la traducci6n de la direcci6n virtual;
La Fig. 5A ilustra una realizaci6n del procedimiento de traducci6n dinamica de direcciones de una direcci6n virtual usando una jerarquia de tablas de traducci6n al nivel de la tabla de segmentos;
La Fig. 5B ilustra una continuaci6n de la traducci6n dinamica de direcciones de la Fig. 5A, en la que el control de formato (FC) de la entrada de la tabla de segmentos (STE) es igual a cero;
La Fig. 5C ilustra una continuaci6n de la traducci6n dinamica de direcciones de la Fig. 5A, en la que el control de formato (FC) de la entrada de la tabla de segmentos (STE) es igual a uno;
La Fig. 6 ilustra un diagrama de flujo de una realizaci6n de traducci6n dinamica mejorada de direcciones (EOAT) a nivel de cliente para obtener un campo de control de formato en una entrada de la tabla de segmentos;
La Fig. 7 ilustra una continuaci6n del diagrama de flujo desde el nodo 630 de la Fig. 6 cuando el control de formato de la STE de cliente es igual a cero;
La Fig. 8 ilustra una continuaci6n del diagrama de flujo desde el nodo 632 de la FIG. 6 cuando el control de formato de la STE de cliente es igual a uno;
La Fig. 9 ilustra un diagrama de flujo de una realizaci6n de EOAT a nivel de servidor, que puede ser invocada desde el procedimiento EOAT de cliente, para obtener un campo de control de formato en una entrada de la tabla de segmentos de servidor;
La Fig. 10 ilustra una continuaci6n del diagrama de flujo desde el nodo 928 de la FIG. 9 cuando el de control de formato de la STE de servidor es igual a cero,
La Fig. 11 ilustra una continuaci6n del diagrama de flujo desde el nodo 930 de la FIG. 9 cuando el control de formato de la STE de servidor es igual uno.
La Fig. 12 ilustra los contenidos del registro 1 de control;
La Fig. 13 ilustra los contenidos del registro 7 de control;
La Fig. 14 ilustra los contenidos del registro 13 de control;
La Fig. 15 ilustra los contenidos de la palabra de estado de programa;
La Fig. 16 ilustra los contenidos del registro de prefijo;
La Fig. 17 ilustra la relaci6n entre las direcciones reales y absolutas;
La Fig. 18 ilustra el formato de la direcci6n virtual;
La Fig. 19 ilustra el formato de la direcci6n virtual;
La Fig. 20 ilustra los formatos de las entradas de las tablas de regiones;
La Fig. 21 ilustra el formato de una entrada extraida desde una tabla de segmentos;
La Fig. 22 ilustra el formato de una entrada de la tabla de segmentos; y
La Fig. 23 ilustra el formato de una entrada extraida desde una tabla de paginas.
Descripci6n detallada
Oeberia entenderse que las afirmaciones realizadas en la especificaci6n de la presente solicitud no limitan necesariamente ninguna de las diversas invenciones reivindicadas. Ademas, algunas afirmaciones pueden aplicarse a algunas de las caracteristicas de la invenci6n, pero no a otras. A menos que se indique lo contrario, los elementos singulares pueden representar una pluralidad de elementos, y viceversa, sin perdida de generalidad.
Una persona con conocimientos ordinarios en esta materia estara familiarizada facilmente con el direccionamiento de un almacenamiento en un entorno informatico y el uso de los bits en un registro o un campo de direcciones para indicar diferentes estados y actuar sobre dichos estados. Ademas, una persona con conocimientos ordinarios en esta materia tendria suficiente comprensi6n de la tecnica de los programas informaticos y suficiente conocimiento sobre el funcionamiento y las interrelaciones entre los componentes de los sistemas informaticos para implementar las ensefanzas de la presente invenci6n en sus propios entornos informaticos, sin experimentaci6n indebida.
Informaci6n general
Se proporciona una realizaci6n ejemplar de una funci6n mejorada de traducci6n dinamica de direcciones (OAT). Cuando la funci6n OAT mejorada esta instalada y habilitada, la traducci6n OAT puede producir una direcci6n real de marco de pagina o una direcci6n absoluta de marco de segmento, determinada por el control de formato de la entrada de la tabla de segmentos (STE) en la entrada de la tabla de segmentos. Tal como se usa en la presente memoria, la expresi6n "se aplica la OAT mejorada" significa que todas las siguientes afirmaciones son ciertas: 1) La funci6n EOAT esta instalada; 2) La funci6n EOAT esta habilitada por medio del bit 40 del registro de control 0 (CR0); y, 3) La direcci6n es traducida por medio de las entradas de la tabla OAT.
Cuando se aplica la OAT mejorada, la funci6n adicional siguiente esta disponible en el procedimiento de OAT:
Un bit de protecci6n OAT es afadido a las entradas de la tabla de regiones, proporcionando una funci6n similar a los bits de protecci6n de OAT en las entradas de las tablas de segmentos y de paginas.
Un control de formato de la STE es afadido a la entrada de la tabla de segmentos. Cuando el control de formato de la STE es igual a cero, la OAT prosigue tal como se define en la presente memoria, excepto que una anulaci6n de registro de cambio en la entrada de la tabla de paginas indica si la activaci6n del bit de cambio puede ser ignorada para la pagina.
Cuando el control de formato de la STE es igual a uno, la entrada de la tabla de segmentos contiene tambien lo siguiente:
Una direcci6n absoluta de marco de segmento (en lugar de un origen de la tabla de paginas) que especifica la ubicaci6n en el almacenamiento absoluto del bloque de 1 Megabyte.
Los bits de control de acceso y un bit de protecci6n de extracci6n que puede ser usado, opcionalmente, en lugar de los bits correspondientes en las claves de almacenamiento individuales de segmentos.
Un bit que determina la validez de los bits de control de acceso y el bit de protecci6n de extracci6n en la entrada de la tabla de segmentos.
Una anulaci6n de registro de cambio que indica si el establecimiento del bit de cambio puede ser ignorada en las claves de almacenamiento individuales de segmentos.
Un calificador de excepci6n de traducci6n (TXQ) es almacenado cuando se produce una interrupci6n de excepci6n de OAT, para proporcionar detalles relacionados con el entorno de ejecuci6n (servidor o cliente) en el que ocurri6 la excepci6n, y la fuente de la direcci6n que estaba siendo traducida.
Sistema informatico servidor
Un sistema emulado incluye un programa emulador que emula un sistema informatico que puede proporcionar una arquitectura de servidor y una capacidad de ejecuci6n interpretativa. La memoria del sistema emulado puede contener tanto un servidor como clientes paginables. Un programa de servidor que se ejecuta en una arquitectura de servidor emulada puede iniciar una ejecuci6n interpretativa de un programa de cliente, el cual, a continuaci6n, es ejecutado bajo la emulaci6n de la funci6n de ejecuci6n interpretativa. Un ejemplo de una funci6n de ejecuci6n interpretativa y una instrucci6n de comienzo de ejecuci6n interpretativa (SIE) para la ejecuci6n de clientes paginables, se describe en "IBM® System/370 Extended Architecture", IBM® Pub. No. SA22-7095 (1985).
Ahora, se hace referencia a la Fig. 1, que ilustra una realizaci6n de un sistema 100 de ordenador servidor en la que se realizara una traducci6n dinamica mejorada de direcciones de cliente y de servidor. El entorno 100 informatico servidor esta basado, preferentemente, en la z/Architecture® ofrecida por International Business Machines Corporation (IBM), Armonk, Nueva York, La z/Architecture® se describe mas detalladamente en: "z/Architecture® Principles of Operation", IBM® Pub. No. SA22-7832-05, 6a Edici6n, (abril de 2007). Los entornos informaticos basados en z/Architecture® incluyen, por ejemplo, eServer y zSeries®, ambos de IBM®.
El entorno 100 informatico incluye un complejo 102 procesador central (CPC) que proporciona soporte de maquina virtual. El CPC 102 incluye, por ejemplo, una o mas maquinas 104 virtuales, uno o mas procesadores 106, al menos un servidor 108 (por ejemplo, un programa de control, tal como un hipervisor) y un subsistema 110 de entrada/salida. El soporte de maquina virtual del CPC proporciona la capacidad de operar un gran numero de maquinas virtuales, cada una de ellas capaz de alojar un sistema operativo cliente 112, tal como Linux.
Cada maquina virtual es capaz de funcionar como un sistema separado. Es decir, cada maquina virtual puede ser reiniciada de manera independiente, alojar un sistema operativo cliente y operar con diferentes programas. Un sistema operativo o un programa de aplicaci6n que se ejecuta en una maquina virtual parece tener acceso a un sistema total y completo, pero, en realidad, s6lo esta disponible una parte del mismo.
En este ejemplo particular, el modelo de las maquinas virtuales es un modelo V = V, en el que la memoria de una maquina virtual esta respaldada por una memoria virtual, en lugar de por una memoria real. Cada maquina virtual tiene un espacio de memoria lineal virtual. Los recursos fisicos son propiedad del servidor, y los recursos fisicos compartidos son repartidos por el servidor entre los sistemas operativos clientes, segun sea necesario, para satisfacer sus demandas de procesamiento. Este modelo de maquina virtual V = V supone que las interacciones entre los sistemas operativos clientes y los recursos fisicos compartidos de maquina son controlados por el servidor, ya que el gran numero de clientes dificulta que el servidor particione, y asigne, de manera sencilla, los recursos de hardware a los clientes configurados. Uno
o mas aspectos del modelo V = V se describen mas detalladamente en: "z/VM: Running Guest Operating Systems", de IBM®Pub. No. SC24-5997-02, (2001).
Los procesadores 106 centrales son recursos fisicos de procesador que pueden ser asignados a una maquina virtual. Por ejemplo, la maquina 104 virtual incluye uno o mas procesadores virtuales, cada uno de los cuales representa la totalidad o una parte de un recurso de procesador fisico que puede ser asignado dinamicamente a la maquina virtual. Las maquinas virtuales son gestionadas por el servidor. El servidor puede ser implementado en un microc6digo que se ejecuta en uno o mas procesadores o puede ser parte de un sistema operativo servidor que se ejecuta en la maquina. En un ejemplo, el servidor es un hipervisor VM, como z/VM® ofrecido por IBM®. Una realizaci6n de z/VM® se describe mas detalladamente en: "z/VM: General Information Manual", de IBM® Pub. No. CG24-5991-04, (2001).
El sistema 110 de entrada/salida dirige el flujo de informaci6n entre los dispositivos y el almacenamiento principal. Esta acoplado al complejo de procesamiento central. Puede ser parte del complejo de procesamiento central o independiente del mismo. El subsistema de E/S libera a los procesadores centrales de la tarea de comunicar directamente con los dispositivos de E/S acoplados al CPC y permite que el procesamiento de datos prosiga al mismo tiempo que el procesamiento de E/S.
Los procesadores 106 centrales pueden tener una funci6n (funci6n o unidad) de traducci6n dinamica de direcciones (OAT), para transformar direcciones de programa (direcciones virtuales) a direcciones reales de memoria. Tipicamente, una funci6n de OAT incluye una memoria intermedia de traducci6n adelantada para mantener en memoria cache las traducciones, de manera que los accesos posteriores al bloque de la memoria de ordenador no requieren el retraso de la traducci6n de direcci6n. Tipicamente, se emplea una memoria cache entre la memoria del ordenador y el procesador. La memoria cache puede ser jerarquica, teniendo una gran memoria cache disponible para mas de una CPU, y memorias cache mas pequefas, mas rapidas (nivel inferior) entre la memoria cache grande y cada CPU. En algunas implementaciones, las memorias cache de nivel inferior son divididas para proporcionar memorias cache, de bajo nivel, separadas, para extraer instrucciones y accesos a datos. En una realizaci6n, una instrucci6n es extraida desde la memoria por una unidad de extracci6n de instrucciones por medio de una memoria cache. La instrucci6n es decodificada en una unidad de decodificaci6n de instrucciones y es distribuida (con otras instrucciones en algunas realizaciones) a las unidades de ejecuci6n de instrucciones. Tipicamente, se emplean varias unidades de ejecuci6n, por ejemplo, una unidad de ejecuci6n aritmetica, una unidad de ejecuci6n en coma flotante y una unidad de ejecuci6n de instrucci6n de bifurcaci6n. La instrucci6n es ejecutada por la unidad de ejecuci6n, accediendo a los operandos desde la memoria o los registros especificados por la instrucci6n, segun sea necesario. Si un operando debe ser accedido (cargado o almacenado), desde memoria una unidad de almacenamiento de carga gestiona, tipicamente, el acceso bajo el control de la instrucci6n que esta siendo ejecutada.
En una realizaci6n, la invenci6n puede ser puesta en practica mediante software (denominado, a veces, c6digo interno bajo licencia (LIC), firmware, micro-c6digo, mili-c6digo, pico-c6digo, etc., cualquiera de los cuales seria consistente con la presente invenci6n). El c6digo de programa de software que materializa la presente invenci6n es accedido, tipicamente, por el procesador, conocido tambien como CPU (Unidad Central de Procesamiento) del sistema informatico, desde un medio de almacenamiento a largo plazo, tal como una unidad de CO-ROM, una unidad de cinta o un disco duro. El c6digo de programa de software puede estar materializado en cualquiera de entre una diversidad de medios conocidos, para su uso con un sistema de procesamiento de datos, tal como un disquete, un disco duro o un CO-ROM. El c6digo puede ser distribuido en dichos medios, o puede ser distribuido a los usuarios desde la memoria del ordenador o el almacenamiento de un sistema informatico sobre una red a otros sistemas informaticos, para su uso por los usuarios de dichos otros sistemas.
Como alternativa, el c6digo de programa puede ser materializado en la memoria, y ser accedido por el procesador usando el bus del procesador. Oicho c6digo de programa incluye un sistema operativo que controla la funci6n y la interacci6n de los diversos componentes de ordenador y uno o mas programas de aplicaci6n. Normalmente, el c6digo de programa es paginado desde medios de almacenamiento de alta densidad a una memoria de alta velocidad, donde se encuentra disponible para ser procesado por el procesador. Las tecnicas y los procedimientos para materializar el c6digo de programa de software en memoria, en medios fisicos y/o distribuir el c6digo de software a traves de redes, son bien conocidos y no seran descritos adicionalmente en la presente memoria. El c6digo de programa, cuando se crea y se almacena en un medio tangible (incluyendo, pero no limitandose a, m6dulos de memoria electr6nica (RAM), memoria flash, discos compactos (COs), OVOs, cinta magnetica, etc) se denominan, frecuentemente, �un producto de programa informatico". Tipicamente, el medio del producto de programa informatico puede ser leido por un circuito de procesamiento, preferentemente en un sistema informatico, para su ejecuci6n por el circuito de procesamiento.
Otro ejemplo de un entorno informatico para incorporar uno o mas aspectos de la presente invenci6n, se representa en la Fig. 2. En este ejemplo, se proporciona un sistema 200 informatico servidor emulado, que emula un sistema 202 informatico servidor de una arquitectura de servidor. El procesador 204 servidor emulado (o procesador servidor virtual) es materializado por medio de un procesador 206 de emulaci6n que tiene una arquitectura de conjunto de instrucciones nativas diferente de la usada por los procesadores del ordenador servidor. El sistema de ordenador servidor emulador tiene una memoria 208 que puede ser accedida por el procesador 206 de emulaci6n. En la realizaci6n de ejemplo, la memoria 208 es dividida en una porci6n 210 de memoria de ordenador servidor y una porci6n 212 de rutinas de emulaci6n. La memoria 210 de ordenador servidor esta disponible para los programas del ordenador 202 servidor emulado y puede contener tanto un servidor como un hipervisor 214 y una o mas maquinas 216 virtuales que ejecutan sistemas operativos 218 clientes, de manera analoga a los elementos con nombre similar en la Fig. 1. El procesador 206 de emulaci6n ejecuta instrucciones nativas de un conjunto de instrucciones disefado de una arquitectura diferente de la del procesador emulado; las instrucciones nativas se obtienen, por ejemplo, de la memoria 212 de rutinas de emulaci6n. El procesador 206 de emulaci6n puede acceder a una instrucci6n de servidor para su ejecuci6n desde un programa en la memoria 210 del ordenador servidor, empleando una o mas instrucciones obtenidas en una secuencia de rutina de acceso/ decodificaci6n, que puede decodificar la instrucci6n o las instrucciones de servidor accedidas para determinar una rutina de ejecuci6n de instrucciones nativas para emular la funci6n de la instrucci6n de servidor accedida. Una de dichas instrucciones de servidor puede ser, por ejemplo, una instrucci6n inicio de ejecuci6n Interpretativa (SIE), por medio de la cual el servidor intenta ejecutar un programa en una maquina virtual. Las rutinas 212 de emulaci6n pueden incluir soporte para esta instrucci6n, y para ejecutar una secuencia de instrucciones de servidor en una maquina virtual, segun la
definici6n de esta instrucci6n SIE.
Otras funciones que se definen para la arquitectura de sistema de ordenador servidor pueden ser emuladas por rutinas de funci6n disefadas, incluyendo funciones tales como registros de prop6sito general, registros de control, traducci6n dinamica de direcciones y soporte de subsistema de E/S y memoria cache del procesador, por ejemplo. Las rutinas de emulaci6n pueden tomar ventaja tambien de funciones disponibles en el procesador 206 de emulaci6n (tales como registros generales y traducci6n dinamica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulaci6n. Pueden proporcionarse tambien hardware especial y motores de descarga para ayudar al procesador e emular la funci6n del ordenador servidor. El ordenador servidor, en una realizaci6n, esta en comunicaci6n con una diversidad de medios 220 de almacenamiento conocidos, tales como, por ejemplo, un disquete, un disco duro o un CO-ROM. El c6digo de programa de software puede ser distribuido sobre dichos medios o puede ser distribuido a los usuarios sobre una red
222.
Registros y procesador del ordenador
En una realizaci6n, una funcionalidad de instrucci6n de programa de la CPU se comunica con una pluralidad de registros sobre un bus de comunicaci6n. El bus de comunicaci6n puede ser interno o externo a la CPU. Algunos registros pueden ser de s6lo lectura. Otro hardware y/o software puede leer/escribir tambien en una o mas de los registros accesibles por la CPU. Un c6digo de operaci6n de instrucci6n (c6digo de operaci6n) determina que tipo de registro debe usarse en cualquier operaci6n de instrucci6n maquina particular.
Registros generales
Las instrucciones pueden designar informaci6n en uno o mas de entre 16 registros generales. Los registros generales pueden ser usados como registros de direcci6n base y registros de indice en aritmetica de direcciones y como acumuladores en aritmetica general y en operaciones l6gicas. Cada registro contiene posiciones de 64 bits. Los registros generales se identifican por los numeros 0-15 y son designados por un campo R de cuatro bits en una instrucci6n. Algunas instrucciones permiten direccionar multiples registros generales teniendo diversos campos R. Para algunas instrucciones, el uso de un registro general especifico esta designado de manera implicita, mas que explicita, por un campo R de la instrucci6n. Para algunas instrucciones, se acoplan los bits 32-63 o los bits 0-63 de dos registros generales contiguos, proporcionando un formato de 64-bit o de 128-bit, respectivamente. En estas operaciones, el programa debe designar un registro con numeraci6n par, que contiene los 32 o 64 bits situados mas a la izquierda (orden superior). El siguiente registro con numeraci6n mas alta contiene los 32 o 64 bits situados mas a la derecha (orden inferior). Ademas de su uso como acumuladores en aritmetica general y en operaciones l6gicas, 15 de los 16 registros generales se usan tambien como direcci6n base y registros de indice en la generaci6n de direcciones. En estos casos, los registros son designados por medio de un campo B o un campo X de cuatro bits en una instrucci6n. Un valor de cero en el campo B o X especifica que no debe aplicarse ninguna base o indice, y, de esta manera, el registro general 0 no puede ser designado como contenedor de una direcci6n base o indice.
Registros de control
Los registros de control permiten mantener y manipular la informaci6n de control fuera de la palabra de estado de programa. La CPU tiene 16 registros de control, cada uno con posiciones de 64 bits. Las posiciones de bit en los registros son asignadas a funciones particulares en el sistema, tales como registro de eventos de programa, y son usadas para especificar que una operaci6n puede llevarse a cabo o para proporcionar informaci6n especial requerida por la funci6n. Los registros de control son identificados por los numeros 0-15 y son designados por los campos R de cuatro bits en las instrucciones LOAO CONTROL y STORE CONTROL. Estas instrucciones pueden direccionar multiples registro de control.
Registro de control 1
El registro de control 1 contiene el elemento de control del espacio de direcci6n primario (PASCE). En una realizaci6n, el registro de control 1 tiene uno de entre dos formatos, tal como se muestra en la Fig. 12, dependiendo del bit (R) de control de espacio real en el registro:
Los campos seleccionados en el elemento de control de espacio de direcci6n primario (PASCE) son asignados de la siguiente manera:
Origen de tabla de segmentos o la tabla de regi6n primaria: Los bits 0-51 de la designaci6n de la tabla de segmentos o la tabla de regi6n primaria en el registro de control 1, con 12 ceros afadidos a la derecha, forman una direcci6n de 64 bits que indica el comienzo de la tabla de regi6n primaria o la tabla de segmentos. No puede predecirse si la direcci6n es real
o absoluta. Esta tabla se denominada tabla de regi6n primaria o tabla de segmentos, ya que es usada para traducir las
direcciones virtuales en el espacio de direcciones primario.
Control (R) de espacio real primario: Si el bit 58 del registro de control 1 es igual a cero, el registro contiene una designaci6n de tabla de regiones o de tabla de segmentos. Si el bit 58 es igual a uno, el registro contiene una designaci6n de espacio real. Cuando el bit 58 es igual a uno, un valor igual a uno del bit de segmento comun en una representaci6n de memoria intermedia de traducci6n adelantada de una entrada de la tabla de segmentos previene que la entrada y la copia de la tabla de paginas de la memoria intermedia de traducci6n adelantada que designa la misma sean usadas cuando se traducen referencias al espacio de direcciones primario, incluso con una coincidencia entre la etiqueta (�token") de origen en el registro de control 1 y el origen de la tabla en la entrada de la memoria intermedia de traducci6n adelantada.
Control de tipo designaci6n primaria (OT): Cuando R es igual a cero, el tipo de designaci6n de tabla en el registro de control 1 es especificado por los bits 60 y 61 en el registro, de la manera que se indica a continuaci6n:

Bits 60 y 61 Tipo de designaci6n
11
Tabla-primera-regi6n
10
Tabla-segunda-regi6n
01
Tabla-tercera-regi6n
00
Tabla-segmentos
Bits de control de tipo de designaci6n primario (OT)
Cuando R es igual a cero, los bits 60 y 61 deben ser 11 binario cuando se realiza un intento de usar la PASCE para traducir una direcci6n virtual en la que el bit situado mas a la izquierda esta en las posiciones de bits 0-10 de la direcci6n. Oe manera similar, los bits 60 y 61 deben ser 11 o 10 binario cuando el bit a uno situado mas a la izquierda esta en las posiciones de bits 11-21 de la direcci6n, y deben ser 11, 10 o 01 binario cuando el bit a uno situado mas a la izquierda esta en las posiciones de bit 22-32 de la direcci6n. En caso contrario, se reconoce una excepci6n de tipo ASCE.
Longitud de la tabla de regi6n primaria o la tabla de segmentos (TL): Los bits 62 y 63 de la designaci6n de la tabla de regi6n primaria o la designaci6n de la tabla de segmentos en el registro de control 1 especifica la longitud de la tabla de regi6n primaria o la tabla de segmentos en unidades de 4.096 bytes, haciendo, de esta manera, la longitud de la tabla de regiones o la tabla de segmentos variable en multiplos de 512 entradas. La longitud de la tabla de regi6n primaria o la tabla de segmentos, en unidades de 4.096 bytes, es uno mas que el valor TL. Los contenidos del campo de longitud son usados para establecer si la porci6n de la direcci6n virtual (RFX, RSX, RTX o SX) a traducir por medio de la tabla designa una entrada incluida en la tabla.
Origen de etiqueta en espacio real primario: Los bits 0-51 de la designaci6n del espacio real primario en el registro de control 1, con 12 ceros afadidos a la derecha, forman una direcci6n de 64-bits que puede ser usada en la formaci6n y el uso de las entradas de la memoria intermedia de traducci6n adelantada que proporciona una traducci6n virtual igual a real para las referencias al espacio de direcciones primario. Aunque esta direcci6n es usada s6lo como una etiqueta yno es usada para realizar una referencia de almacenamiento, todavia debe ser una direcci6n valida; de lo contrario, una entrada incorrecta de memoria intermedia de traducci6n adelantada pueda ser usada cuando se usan los contenidos del registro de control 1.
Los siguientes bits del registro de control 1 no son asignados y son ignorados: los bits 52, 53 y 59 si el registro contiene una designaci6n de la tabla de regiones o una designaci6n de tabla de segmentos, y los bits 52, 53 y 59-63, si el registro contiene una designaci6n de espacio real.
Registro de control 7
El registro de control 7 contiene el elemento de control de espacio de direcciones secundario (SASCE). En una realizaci6n, el registro de control 7 tiene uno de los dos formatos ilustrados en la Fig. 13, dependiendo del bit (R) de control de espacio real en el registro:
Registro de control 13
El registro de control 13 contiene el elemento de control de espacio de direcciones local (HASCE). En una realizaci6n, el registro de control 13 tiene uno de los dos formatos ilustrados en la Fig. 14, dependiendo del bit (R) de control de espacio real en el Registro:
Registros de acceso 9
La CPU tiene 16 registros de acceso, numerados 0-15. Un registro de acceso consiste en 32 posiciones de bits que contienen una especificaci6n indirecta de un ASCE. Un ASCE es un parametro usado por el mecanismo de traducci6n dinamica de direcciones (OAT) para traducir las referencias a un espacio de direcciones correspondiente. Cuando la CPU esta en un modo denominado modo de registro de acceso (controlado por los bits en la palabra de estado de programa), un campo B de instrucci6n, usado para especificar una direcci6n l6gica para una referencia de operando de almacenamiento, designa un registro de acceso, y el ASCE especificado por el registro de acceso es usado por OAT para la referencia realizada. Para algunas instrucciones, se usa un campo R en lugar de un campo B. Se proporcionan instrucciones para cargar y almacenar los contenidos de los registros de acceso y para mover los contenidos de un registro de acceso a otro.
Cada uno de los registros de acceso de 1-15 puede designar cualquier espacio de direcciones, incluyendo el espacio de instrucciones actual (el espacio de direcciones primario). El registro de acceso 0 designa el espacio de instrucciones primario. Cuando uno de los registros de acceso 1-15 es usado para designar un espacio de direcciones, la CPU determina que espacio de direcciones es designado mediante la traducci6n de los contenidos del registro de acceso. Cuando el registro de acceso 0 es usado para designar un espacio de direcciones, la CPU trata el registro de acceso como si designara el espacio de instrucciones primario, y no examina los contenidos reales del registro de acceso. Por lo tanto, los 16 registros de acceso pueden designar, en cualquier momento, el espacio de instrucciones primario y un maximo de otros 15 espacios.
Palabra de estado de programa (PS�)
La palabra de estado de programa incluye la direcci6n de instrucci6n, el c6digo de condici6n, y otra informaci6n usada para controlar la secuenciaci6n de instrucciones y para determinar el estado de la CPU. La palabra de estado de programa activo o de control se denomina la palabra de estado de programa actual. Gobierna el programa que se esta ejecutando actualmente.
La CPU tiene una capacidad de interrupci6n, lo que permite que la CPU cambie rapidamente a otro programa en respuesta a condiciones excepcionales y a estimulos externos. Cuando ocurre una interrupci6n, la CPU coloca la palabra de estado de programa actual en una ubicaci6n de almacenamiento asignada, llamada ubicaci6n de vieja palabra de estado de programa, para la clase particular de interrupci6n. La CPU extrae una nueva palabra de estado de programa desde una segunda ubicaci6n de almacenamiento asignada. Esta nueva palabra de estado de programa determina el siguiente programa a ser ejecutado. Cuando ha finalizado el procesamiento de la interrupci6n, el programa que gestiona la interrupci6n puede recargar la vieja palabra de estado de programa, convirtiendola de nuevo en la palabra de estado de programa actual, de manera que el programa interrumpido puede continuar.
Hay seis clases de interrupciones: externa, E/S, comprobaci6n de maquina, programa, reinicio y llamada de supervisor. Cada clase tiene un par distinto de ubicaciones de vieja palabra de estado de programa y nueva palabra de estado de programa asignadas permanentemente en el almacenamiento real.
Palabra de estado de programa actual
La palabra de estado de programa actual en la CPU contiene informaci6n necesaria para la ejecuci6n del programa activo actualmente. La palabra de estado de programa es de 128 bits de longitud e incluye la direcci6n de instrucci6n, el c6digo de condici6n y otros campos de control. En general, la palabra de estado de programa es usada para controlar la secuenciaci6n de instrucciones de control y para mantener e indicar la mayor parte del estado de la CPU en relaci6n al programa que esta ejecutandose en la actualidad. La informaci6n de estado y control adicional esta contenida en los registros de control y en ubicaciones de almacenamiento asignadas. El estado de la CPU puede ser cambiado cargando una nueva palabra de estado de programa o parte de una palabra de estado de programa.
El control es conmutado durante una interrupci6n de la CPU mediante el almacenamiento de la palabra de estado de programa actual, para preservar el estado de la CPU, y, a continuaci6n, cargando una nueva palabra de estado de programa. La ejecuci6n de LOAO PS� o LOAO PS� EXTENOEO, o la exitosa conclusi6n de la secuencia de la carga de programa inicial, introduce una nueva palabra de estado de programa. La direcci6n de instrucci6n es actualizada mediante la ejecuci6n de la instrucci6n secuencial y es reemplazada por bifurcaciones exitosas. Se proporcionan otras instrucciones que operan sobre una porci6n de la palabra de estado de programa.
Una palabra de estado de programa nueva o modificada se convierte en activa (es decir, la informaci6n introducida en la palabra de estado de programa actual asume el control de la CPU) cuando se completa la interrupci6n o la ejecuci6n de una instrucci6n que cambia la palabra de estado de programa. La interrupci6n para el registro de eventos de programa (PER) asociada con una instrucci6n que cambia la palabra de estado de programa ocurre bajo el control de la mascara PER que es efectiva al principio de la operaci6n. Los bits 0-7 de la palabra de estado de programa se denominan, colectivamente, la mascara de sistema. En una realizaci6n, la palabra de estado de programa tiene el formato ilustrado en
la Fig. 15:
A continuaci6n, se muestra un breve resumen de las funciones de campos seleccionados de la palabra de estado de programa.
Modo OAT (T): El bit 5 controla si se realiza o no la traducci6n dinamica implicita de direcciones de las direcciones l6gicas y de instrucciones usadas para acceder al almacenamiento. Cuando el bit 5 es igual a cero, OAT esta desactivada y las direcciones l6gicas y de instrucciones son tratadas como direcciones reales. Cuando el bit 5 es igual a uno, OAT esta activada, y se invoca el mecanismo de traducci6n dinamica de direcciones.
Clave PS�: Los bits 8-11 forman la clave de acceso para las referencias de almacenamiento por la CPU. Si la referencia esta sujeta a una protecci6n controlada mediante clave, la clave PS� se corresponde con una clave de almacenamiento cuando la informaci6n es almacenada o cuando la informaci6n es extraida desde una ubicaci6n que esta protegida contra la extracci6n. Sin embargo, para uno de los operandos de cada uno de entre MOVE TO PRIMARY, MOVE TO SECONOARY, MOVE �ITH KEY, MOVE �ITH SOURCE KEY y MOVE �ITH OESTINATION KEY, se usa una clave de acceso especificada como operando en lugar de la clave PS�.
Control de espacio de direcciones (AS): Los bits 16 y 17, en conjunci6n con el bit 5 de la palabra de estado de programa, controlan el modo de traducci6n.
C6digo de condici6n (CC): Los bits 18 y 19 son los dos bits del c6digo de condici6n. El c6digo de condici6n es establecido a 0, 1, 2 6 3, dependiendo del resultado obtenido en la ejecuci6n de ciertas instrucciones. La mayoria de las operaciones aritmeticas y l6gicas, asi como algunas otras operaciones, establecen el c6digo de condici6n. La instrucci6n BRANCH ON CONOITION puede especificar cualquier selecci6n de los valores de c6digo de condici6n como un criterio para una bifurcaci6n.
Oirecci6n de instrucci6n: Los bits 64-127 de la palabra de estado de programa son la direcci6n de instrucci6n. Esta direcci6n designa la ubicaci6n del byte situado mas a la izquierda de la siguiente instrucci6n a ser ejecutada, a menos que la CPU este en el estado de espera (el bit 14 de la palabra de estado de programa es igual a uno).
Tipos y formatos de direcciones
Con el prop6sito de direccionar el almacenamiento principal, se reconocen tres tipos basicos de direcciones: absoluta, real y virtual. Las direcciones se distinguen en base a las transformaciones que se aplican a la direcci6n durante un acceso de almacenamiento. La traducci6n de direcciones convierte una direcci6n virtual a una direcci6n real. La prefijaci6n convierte una direcci6n real a una direcci6n absoluta. Ademas de los tres tipos basicos de direcciones, se definen tipos adicionales que son tratadas como uno u otro de los tres tipos basicos, dependiendo de la instrucci6n y del modo actual.
Oirecci6n absoluta
Una direcci6n absoluta es la direcci6n asignada a una ubicaci6n de almacenamiento principal. Una direcci6n absoluta es usada para un acceso de almacenamiento sin realizar ninguna transformaci6n sobre ella. El subsistema de canal y todas las CPUs en la configuraci6n se refieren a una ubicaci6n de almacenamiento principal compartido usando la misma direcci6n absoluta. Normalmente, al almacenamiento principal disponible es asignado a direcciones absolutas contiguas empezando en 0, y las direcciones son asignadas en bloques completos de 4 Kilobytes, en limites integrales. Una excepci6n es reconocida cuando se realiza un intento para usar una direcci6n absoluta en un bloque que no ha sido asignado a ubicaciones fisicas. En algunos modelos, pueden proporcionarse controles de reconfiguraci6n de almacenamiento que permiten al operador cambiar la correspondencia entre direcciones absolutas y ubicaciones fisicas. Sin embargo, en todo momento, una ubicaci6n fisica no esta asociada con mas de una direcci6n absoluta. El almacenamiento que consiste en ubicaciones de bytes secuenciadas segun sus direcciones absolutas se denomina almacenamiento absoluto.
Oirecci6n real
Una direcci6n real identifica una ubicaci6n en el almacenamiento real.Cuando se usa una direcci6n real para un acceso al almacenamiento principal, la misma es convertida, por medio de prefijaci6n, para formar una direcci6n absoluta. En cualquier momento, hay una asignaci6n desde una direcci6n real a una direcci6n absoluta para cada CPU en la configuraci6n. Cuando se usa una direcci6n real por una CPU para acceder al almacenamiento principal, puede ser convertida a una direcci6n absoluta mediante prefijaci6n. La transformaci6n particular esta definida por el valor en el registro de prefijo para la CPU. El almacenamiento que consiste en ubicaciones de byte secuenciadas segun sus direcciones reales se conoce como almacenamiento real.
Oirecci6n virtual 11
Una direcci6n virtual identifica una ubicaci6n en el almacenamiento virtual. Cuando se usa una direcci6n virtual para un acceso al almacenamiento principal, la misma es traducida por medio de la traducci6n dinamica de direcciones, bien a una direcci6n real, que puede ser sometida a prefijaci6n para formar una direcci6n absoluta, o bien directamente a una direcci6n absoluta.
Oirecci6n virtual primaria
Una direcci6n virtual primaria es una direcci6n virtual que debe ser traducida por medio del elemento de control de espacio de direcciones primario (PASCE). Las direcciones l6gicas son tratadas como direcciones virtuales primarias en el modo de espacio primario. Las direcciones de instrucci6n son tratadas como direcciones virtuales primarias en el modo de espacio primario, el modo de espacio secundario o el modo de registro de acceso. La direcci6n del primer operando de MOVE TO PRIMARY y la direcci6n del segundo operando de MOVE TO SECONOARY son tratadas como direcciones virtuales primarias. Ademas, cuando se esta ejecutando un cliente paginable, el almacenamiento principal (memoria), que el servidor observa como almacenamiento absoluto esta representado en el espacio de direcciones primario del servidor, es decir, las direcciones absolutas de cliente son tratadas como direcciones virtuales primarias de servidor.
Oirecci6n virtual secundaria
Una direcci6n virtual secundaria es una direcci6n virtual que debe ser traducida por medio del elemento de control de espacio de direcciones secundario (SASCE). Las direcciones l6gicas son tratadas como direcciones virtuales secundarias en el modo de espacio secundario. La direcci6n del segundo operando de MOVE TO PRIMARY y la direcci6n del primer operando de MOVE TO SECONOARY son tratadas como direcciones virtuales secundarias.
Oirecci6n virtual especificada por AR
Una direcci6n virtual especificada por AR es una direcci6n virtual que debe ser traducida por medio de un elemento de control de espacio de direcci6n especificado por registro de acceso. Las direcciones l6gicas son tratadas como direcciones especificadas por AR en el modo de registro de acceso.
Oirecci6n virtual local
Una direcci6n virtual local es una direcci6n virtual que debe ser traducida por medio del elemento de control de espacio de direcci6n local (HASCE). Las direcciones l6gicas y las direcciones de instrucciones son tratadas como direcciones virtuales locales en el modo de espacio local.
Oirecci6n de instrucci6n
Las direcciones usadas para extraer instrucciones desde el almacenamiento se denominan direcciones de instrucci6n. Las direcciones de instrucci6n son tratadas como direcciones reales en el modo real, como direcciones virtuales primarias en el modo de espacio primario, el modo de espacio secundario o el modo de registro de acceso, y como direcciones virtuales locales en el modo de espacio local. La direcci6n de instrucci6n en la palabra de estado de programa actual y la direcci6n de destino de EXECUTE son direcciones de instrucci6n.
Oirecci6n efectiva
En algunas situaciones, es conveniente usar la expresi6n "direcci6n efectiva". Una direcci6n eficaz es la direcci6n que existe antes de realizar cualquier transformaci6n mediante la traducci6n dinamica de direcciones o mediante prefijaci6n. Una direcci6n efectiva puede ser especificada directamente en un registro o puede resultar de la aritmetica de direcciones. La aritmetica de direcciones es la adici6n de la base y el desplazamiento o de la base, el indice y el desplazamiento.
Prefijaci6n
La prefijaci6n proporciona la capacidad de asignar el rango de direcciones reales 0-8.191 a un bloque diferente en el almacenamiento absoluto para cada CPU, permitiendo, de esta manera, que mas de una CPU compartan el almacenamiento principal para operar simultaneamente con un minimo de interferencia, especialmente en el procesamiento de interrupciones. La prefijaci6n hace que las direcciones reales en el rango de 0 a 8.191 tengan una correspondencia, uno a uno, con el bloque de direcciones absolutas de 8K bytes (el area de prefijo) identificado por el valor de las posiciones de bits 0-50 del registro de prefijo para la CPU, y el bloque de direcciones reales identificado por ese valor en el registro de prefijo para una correspondencia, uno-a-uno, con las direcciones absolutas 0-8.191. Las direcciones reales restantes son las mismas que las direcciones absolutas correspondientes. Esta transformaci6n permite que cada CPU acceda a todo el almacenamiento principal, incluyendo los primeros 8K bytes y las ubicaciones designadas por los registros de prefijo de otras CPUs.
El prefijo es una cantidad 51-bits contenida en las posiciones de bit 0-50 del registro de prefijo. En una realizaci6n, el registro de prefijo tiene el formato ilustrado en la Fig. 16.
Formato del registro de prefijo
Cuando se aplica prefijaci6n, la direcci6n real es transformada a una direcci6n absoluta usando una de las siguientes reglas, en funci6n de los bits 0-50 de la direcci6n real:
1.
Los bits 0-50 de la direcci6n, si son todos iguales a cero, son reemplazados con los bits 0-50 del prefijo.
2.
Los bits 0-50 de la direcci6n, si son iguales a los bits 0-50 del prefijo, son reemplazados con ceros.
3.
Los bits 0-50 de la direcci6n, si no son todos iguales a cero y no son iguales a los bits 0-50 del prefijo, permanecen sin cambios.
S6lo la direcci6n presentada al almacenamiento es traducida como prefijaci6n. Los contenidos de la fuente de la direcci6n permanecen sin cambios.
La distinci6n entre las direcciones real y absoluta se hace incluso cuando el registro de prefijo contiene todos ceros, en cuyo caso una direcci6n real y su direcci6n absoluta correspondiente son identicas.
Relaci6n entre las direcciones reales y absolutas
La relaci6n entre las direcciones real y absoluta se representa graficamente en la Fig. 17.
Espacios de direcciones
Un espacio de direcciones es una secuencia consecutiva de numeros enteros (direcciones virtuales); junto con los parametros de transformaci6n especificos que permiten que cada numero sea asociado con una ubicaci6n de byte en el almacenamiento. La secuencia empieza en cero y prosigue de izquierda a derecha.
Cuando una direcci6n virtual es usada por una CPU para acceder al almacenamiento principal, la misma es convertida primero, por medio de traducci6n dinamica de direcciones (OAT), a una direcci6n real o absoluta. Una direcci6n real puede ser sometida adicionalmente a prefijaci6n para formar una direcci6n absoluta. OAT puede usar una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos y una tabla de paginas como parametros de transformaci6n. La designaci6n (origen y longitud) de la tabla de nivel mas alto para un espacio de direcciones especifico es denominada un elemento de control de espacio de direcciones (ASCE), y es encontrada para su uso por parte de OAT en un registro de control o segun se especifica por un registro de acceso. Como alternativa, el ASCE para un espacio de direcciones puede ser una designaci6n de un espacio real, que indica que OAT debe traducir la direcci6n virtual simplemente tratandola como una direcci6n real y sin usar ninguna tabla.
OAT usa, en diferentes momentos, el ASCE en registros de control diferentes, o especificados por los registros de acceso. La elecci6n esta determinada por el modo de traducci6n especificado en la palabra de estado de programa actual. Hay cuatro modos de traducci6n disponibles: modo de espacio primario, modo de espacio de secundario, modo de registro de acceso y modo de espacio local. Los diferentes espacios de direcciones son direccionables en funci6n del modo de traducci6n.
En cualquier momento, cuando la CPU esta en el modo de espacio primario o en el modo de espacio secundario, la CPU puede traducir direcciones virtuales que pertenecen a dos espacios de direcciones (el espacio de direcciones primario y el espacio de direcciones secundario). En cualquier momento, cuando la CPU esta en el modo de registro de acceso, puede traducir las direcciones virtuales de hasta 16 espacios de direcciones (el espacio de direcciones primario y hasta 15 espacios de direcciones especificados por AR). En cualquier momento, cuando la CPU esta en el modo de espacio local, puede traducir direcciones virtuales del espacio de direcciones local.
El espacio de direcciones primario es identificado como tal porque consiste en direcciones virtuales primarias, que son traducidas por medio del elemento de control de espacio de direcciones primario (PASCE). Oe manera similar, el espacio de direcciones secundario consiste en direcciones virtuales secundarias traducidas por medio del elemento de control de espacio de direcciones secundario (SASCE). Los espacios de direcciones especificados por AR consisten en direcciones virtuales especificadas por AR traducidas por medio de elemento de control de espacio de direcciones especificado por registro de acceso (ASCE especificado por AR), y el espacio de direcciones local consiste en direcciones virtuales locales traducidas por medio del elemento de control de espacio de direcciones locales (HASCE). Los ASCES primario y secundario estan en los registros de control 1 y 7, respectivamente. Los ASCES especificados por AR pueden estar en los registros de control 1 y 7, o en las entradas de tabla denominadas entradas de tabla ASN secundaria. El HASCE esta en
el registro de control 13.
Traducci6n dinamica de direcciones
La traducci6n dinamica de direcciones es el procedimiento de traducci6n de una direcci6n virtual (durante una referencia de almacenamiento, por ejemplo) a la direcci6n de memoria principal correspondiente (direcci6n real o direcci6n absoluta en la realizaci6n). La direcci6n virtual puede ser una direcci6n virtual primaria, una direcci6n virtual secundaria, una direcci6n virtual especificada por registro de acceso o una direcci6n virtual local. Estas direcciones son traducidas por medio del PASCE, SASCE, ASCE especificado por AR o HASCE, respectivamente. Oespues de la selecci6n del ASCE apropiado, el procedimiento de traducci6n es el mismo para la totalidad de los cuatro tipos de direcciones virtuales.
Modo de traducci6n de direccionamiento
Una direcci6n efectiva es la direcci6n (direcci6n virtual), que existe antes de que se realice cualquier transformaci6n por la traducci6n dinamica de direcciones o por la prefijaci6n. Los tres bits en la palabra de estado de programa que controlan la traducci6n dinamica de direcciones son el bit 5, el bit de modo OAT, y los bits 16 y 17, los bits de control del espacio de direcciones. Cuando el bit de modo OAT es igual a cero, entonces OAT esta desactivado, y la CPU esta en modo real. Cuando el bit de modo OAT es igual a uno, entonces OAT esta activado, y la CPU esta en el modo de traducci6n designado por los bits de control del espacio de direcciones: el valor binario 00 indica el modo de espacio primario, el valor binario 01 indica el modo de registro de acceso, el valor binario 10 indica el modo de espacio secundario, y el valor binario 11 indica el modo de espacio local. Los diversos modos se muestran a continuaci6n, junto con la gesti6n de las direcciones en cada modo.
Bit PS�
OAT Modo Gesti6n de las direcciones
5
16 17 Oirecciones de instrucci6n Oirecciones l6gicas
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Oesact. Oesact. Oesact. Oesact. Activ. Activ. Activ. Activ. Modo real Modo real Modo real Modo real Modo de espacio primario Modo de registro de acceso Modo de espacio secundario Modo de espacio local Real Real Real Real Virtual primaria Virtual primaria Virtual primaria Virtual local Real Real Real Real Virtual primaria Virtual especificada por AR Virtual secundaria Virtual local
Modos de traducci6n
La palabra de estado de programa es una palabra de 128 bits que, en parte, proporciona 2 bits que indican el modo de direccionamiento. En una realizaci6n, el bit 31 es el bit de modo de direccionamiento extendido (EA) y el bit 32 es el bit de modo de direccionamiento base (BA). Estos dos bits indican el tamafo de las direcciones. El estado de cada uno de estos dos bits es binario (1 6 0). Si el bit EA es igual a 0 y el bit BA es igual a 0, entonces se indica un direccionamiento de 24bits. Si se indica un direccionamiento de 24 bits, la direcci6n esta ubicada en los bits 40-63 de una palabra de 64 bits (una entidad de 64 bits que se denomina, comunmente, una doble palabra). Cuando la direcci6n de instrucci6n ocupa los segundos 64 bits de una entidad de 128-bit (un quadword), las posiciones de bit en la palabra de estado de programa son las siguientes. En el modo de 24 bits, la direcci6n de instrucci6n esta en los bits 104-127 de la palabra de estado de programa. En el modo de 31 bits, la direcci6n de instrucci6n esta en los bits 97-127 de la palabra de estado de programa. En el modo de 64 bits, la direcci6n de instrucci6n esta en los bits 64-127 de la palabra de estado de programa. Si el bit EA es igual a 0 y el bit BA es igual a 1, entonces se indica un direccionamiento de 31-bits. La palabra de 64-bits apropiada contiene una direcci6n de 31 bits situada en las posiciones de bit 33-63. Si el bit EA es igual a 1 y el bit BA es igual a 1, entonces los bits 0-63, que son la totalidad de los 64 bits, de una palabra de 64-bits contienen la direcci6n. En caso contrario, se indica una condici6n de excepci6n. Una vez obtenido el modo de direccionamiento, debe determinarse el ASCE.
Elemento de control de espacio de direcciones (ASCE)
Ahora, se hace referencia a la Fig. 3, que ilustra una realizaci6n de c6mo se usa la palabra de estado de programa para determinar el elemento de control de espacio de direcciones (ASCE) efectivo para la traducci6n dinamica de direcciones de la direcci6n virtual. El ASCE puede especificar, por ejemplo, un espacio de direcciones de 2 Gigabytes (Giga = 230). O puede especificar, por ejemplo, un espacio de direcciones de 4 Terabytes (Tera = 240), de 8 Petabytes (Peta = 250) o de 16 Exabytes (Exa = 260). O puede especificar una designaci6n de espacio real. Una designaci6n de espacio real causa que la direcci6n virtual a sea tratada como una direcci6n real en el almacenamiento sin hacer referencia a una o mas tablas de traducci6n de direcciones.
La palabra de estado de programa 300 contiene un bit (T) 302 de traducci6n y bits (AS) 304 de espacio de direcciones. En 306, si el bit (T) de traducci6n es igual a cero, entonces la direcci6n es una direcci6n 326 real. Si, en 308, el espacio de direcciones (AS) es igual a cero (00 binario), entonces el ASCE efectivo para esta direcci6n virtual es el elemento de control de espacio de direcciones primario (PASCE) 310. Si, en 312, el espacio de direcciones (AS) es igual a uno (01 binario), entonces el ASCE efectivo es el elemento de control de espacio de direcciones 314 especificado por registro de acceso. Si, en 316, un espacio de direcciones (AS) es igual a dos (10 binario), entonces el ASCE efectivo es el elemento de control de espacio de direcciones secundario (SASCE) 318. Oe lo contrario, el espacio de direcciones (AS) es igual a tres (11 binario) y el ASCE efectivo es el elemento de control de espacio de direcciones local (HASCE) 322.
Oespues de la selecci6n del ASCE efectivo, el procedimiento de traducci6n dinamica de direcciones es, preferentemente, el mismo para la totalidad de los cuatro tipos de direcciones virtuales.
La designaci6n de tabla de segmentos o la designaci6n de tabla de regiones causa que la traducci6n sea realizada por medio de tablas establecidas por el sistema operativo en el almacenamiento real o absoluto. Una designaci6n de espacio real causa que la direcci6n virtual sea tratada simplemente como una direcci6n real, sin el uso de tablas en el almacenamiento.
En el procedimiento de traducci6n, cuando se usa una designaci6n de tabla de segmentos o una designaci6n de tabla de regiones, se reconocen tres tipos de unidades de informaci6n (regiones, segmentos y paginas). Una regi6n es un bloque de direcciones virtuales secuenciales que abarcan 2 Gigabytes y comienzan en un limite de 2 Gigabytes. Un segmento es un bloque de direcciones virtuales secuenciales que abarcan 1 megabyte y comienzan en un limite de 1 Megabyte. Una pagina es un bloque de direcciones virtuales secuenciales que abarca 4 kilobytes y comienza en un limite de 4 kilobytes.
Formato de direcci6n virtual
La traducci6n de una direcci6n virtual puede implicar la referencia a una pluralidad de tablas de traducci6n de una jerarquia de tablas de traducci6n para obtener una direcci6n real o absoluta. La direcci6n real puede ser sometida ademas a una operaci6n de prefijaci6n para formar una direcci6n absoluta. La direcci6n virtual contiene indices a entradas en tablas de traducci6n en la jerarquia de tablas de traducci6n. Consiguientemente, la direcci6n virtual se divide en cuatro campos principales. Los bits 0-32 se denominan indice de regi6n (RX), los bits 33-43 se denominan indice de segmento (SX), los bits 44-51 se denominan indice de pagina (PX), y los bits 52-63 se denominan indice de byte (BX). En una realizaci6n, la direcci6n virtual tiene el formato ilustrado en la Fig. 18.
Segun lo determinado por su ASCE, un espacio de direcciones virtuales puede ser un espacio de 2 Gigabytes que consiste en una regi6n, o puede ser un espacio de hasta 16 Exabytes que consiste en hasta regiones de 8 Gigabytes. La parte RX de una direcci6n virtual aplicada a un espacio de direcciones de 2 Gigabytes debe ser igual a cero; de lo contrario, se reconoce una excepci6n. La propia parte RX de una direcci6n virtual se divide en tres campos. Los bits 0-10 se denominan primer indice de regi6n (RFX), los bits 11-21 se denominan indice de segunda regi6n (RSX) y los bits 22-32 se denominan tercer indice de regi6n (RTX). En una realizaci6n, los bits 0-32 de la direcci6n virtual tienen el formato ilustrado en la Fig. 19.
Una direcci6n virtual en la que el RTX es la parte mas a la izquierda, mas significativa (una direcci6n de 42-bits), es capaz de direccionar 4 terabytes (2.048 regiones), una en la que el RSX es la parte mas a la izquierda, mas significativa (una direcci6n de 53 bits), es capaz de direccionar 8 Petabytes (4.194.304 regiones), y una en la que el RFX es la parte mas a la izquierda, mas significativa (una direcci6n de 64-bits), es capaz de direccionar 16 Exabytes (8,589,934,592 regiones).
Una direcci6n virtual en el que el RX es igual a cero puede ser traducida a una direcci6n real por medio de dos tablas de traducci6n: una tabla de segmentos y una tabla de paginas. Con la funci6n EOAT habilitada, la traducci6n puede ser completada con s6lo la tabla de segmentos. El RFX puede ser distinto de cero, en cuyo caso se requieren una primera tabla de regiones, una segunda tabla de regiones y una tercera tabla de regiones. Si el RFX es igual a cero, pero el RSX puede ser distinto de cero, se requieren una segunda tabla de regiones y una tercera tabla de regiones. Si el RFX y el RSX son iguales a cero, pero el RTX puede ser distinto de cero, se requiere una tercera tabla de regiones.
Una excepci6n es reconocida si el ASCE para un espacio de direcciones no designa el nivel mas alto de tabla (comenzando con la primera tabla de regiones y continuando hacia abajo hasta la tabla de segmentos) necesario para traducir una referencia al espacio de direcciones.
Traducci6n dinamica de la direcci6n virtual
Ahora, se hace referencia a la Fig. 4, que ilustra una realizaci6n en la que el ASCE efectivo determinado en la Fig. 3 es usado para determinar la primera tabla de traducci6n en la jerarquia de tablas de traducci6n usadas en la traducci6n de la direcci6n virtual.
En una realizaci6n, el registro de control 1 (CR1) contiene el PASCE. El registro de control 7 (CR7) contiene el SASCE. El registro de control 13 (CR13) contiene el HASCE, y una entrada de la segunda tabla de espacio de direcciones (ASTE), que es derivada por el procedimiento de traducci6n de registro de acceso (ART), contiene un elemento de control de espacio de direcciones especificado por registro de acceso. Un ASCE 400 efectivo es seleccionado de una de estas ubicaciones.
Una primera porci6n del ASCE 400 efectivo contiene un origen 402 de tabla, que contiene una direcci6n de origen que designa una primera tabla de regiones, una segunda tabla de regiones, una tercera de regi6n o una tabla de segmentos. Al origen de la tabla (los bits 0 ... 51) se le adjunta 12 ceros binarios para formar una direcci6n de origen de 64 bits de la tabla de traducci6n mas alta en la jerarquia de tablas de traducci6n a ser usadas en la traducci6n de la direcci6n virtual. El ASCE 400 efectivo contiene tambien un bit (R) 404 de control de espacio real y los bits OT 406. Si el bit (R) de control de espacio real es igual a cero, entonces los bits OT son decodificados por el selector 408 para determinar que direcci6n de origen particular es el origen 402 de la tabla. Si los bits OT tienen un valor de tres (11 binario), entonces el origen 402 de tabla indica una primera tabla 410 de regiones. Si los bits OT tienen un valor igual a dos (10 binario), entonces el origen 402 de tabla indica una segunda tabla 412 de regiones. Si los bits OT tienen un valor igual a uno (01 binario), entonces el origen 402 de tabla indica una tercera tabla 414 de regiones. Oe lo contrario, si los bits OT son iguales a cero (00 binario), entonces el origen 402 de tabla indica una tabla 416 de segmentos.
Una primera tabla de regiones, una segunda tabla de regiones o una tercera tabla de regiones se denomina, a veces, simplemente, una tabla de regiones. Oe manera similar, una designaci6n de primera tabla de regiones, una designaci6n de segunda tabla de regiones o una designaci6n de tercera tabla de regiones se denomina, a veces, una designaci6n de tabla de regiones. Las tablas de regiones, segmentos y paginas reflejan la asignaci6n actual del almacenamiento real. Pagina es un termino usado para la asignaci6n de almacenamiento virtual. El almacenamiento real es asignado en bloques fijos. Las paginas no necesitan estar contiguas en el almacenamiento real, aunque sean asignadas a un conjunto de direcciones virtuales secuenciales.
Cuando el ASCE usado en una traducci6n es una designaci6n de la primera tabla de regiones, el procedimiento de traducci6n consiste en una busqueda en multiples niveles usando, por ejemplo, una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos y, opcionalmente, una tabla de paginas. Estas tablas residen en el almacenamiento real o absoluto. Cuando el ASCE es una designaci6n de la segunda tabla de regiones, una designaci6n de la tercera tabla de regiones o una designaci6n de la tabla de segmentos, las busquedas en los niveles de tablas en un nivel superior al nivel designado son omitidas, y las propias tablas de nivel mas alto son omitidas.
Ahora, se hace referencia a la Fig. 5A, que ilustra una realizaci6n de la traducci6n dinamica de direcciones de una direcci6n virtual usando una jerarquia de tablas de traducci6n.
El ASCE 400 efectivo de la FIG. 4 contiene los bits 406 de tipo de designaci6n (OT). Si el bit (R) 404 de control d espacio real del ASCE es igual a cero, entonces los bits OT son decodificados por el selector 408 para determinar que origen 402 de tabla de direcci6n de origen designa. Si el bit (R) de control de espacio es igual a uno, entonces la traducci6n dinamica de direcciones tiene lugar tal como se muestra en el nodo O 564 de la Fig. 5B.
Si los bits OT tienen un valor de tres (11 binario) en el selector 408, entonces la primera tabla designada en la jerarquia de tablas de traducci6n es una primera tabla de regiones. El origen 402 de la tabla es sumado aritmeticamente, en 502, con una parte 508 de un primer indice de regi6n (RFX) de la direcci6n virtual para hacer referencia a la entrada 506 de la primera tabla de regiones en una primera tabla de regiones. El origen de la tabla (con 12 ceros afadidos a la derecha, o multiplicado por 4.096) es sumado al producto del indice multiplicado por 8 (o el indice con tres ceros afadidos a la derecha). La entrada de la primera tabla de regiones contiene un origen 504 de la segunda tabla de regiones a una tabla siguiente de nivel inferior en la jerarquia de tablas de traducci6n usadas en la traducci6n. La siguiente tabla de nivel inferior a la primera tabla de regiones es la segunda tabla de regiones. Si el bit (I) no valido de la entrada de la primera tabla de regiones es igual a uno, entonces la entrada de la primera tabla de regiones no es valida y no puede ser usada en la traducci6n. Se indica una condici6n de excepci6n.
Si los bits OT tienen un valor de dos (10 binario) en el selector 408, entonces la primera tabla designada en la jerarquia de tablas de traducci6n es una segunda tabla de regiones. El origen 402 de tabla es sumado aritmeticamente, en 510, con una parte 516 de indice de segunda regi6n (RSX) de la direcci6n virtual para hacer referencia a una entrada 514 de segunda tabla de regiones en una segunda tabla de regiones. El origen de la tabla (con 12 ceros afadidos a la derecha, o multiplicado por 4.096) es sumado al producto del indice multiplicado por 8 (o el indice con tres ceros afadidos a la derecha). La entrada de la segunda tabla de regiones contiene un origen 512 de la tercera tabla de regiones a una siguiente tabla de nivel inferior en la jerarquia de tablas de traducci6n usadas en la traducci6n. La siguiente tabla de nivel inferior a la segunda tabla de regiones es la tercera tabla de regiones. Si el bit (I) no valido de la entrada de la segunda tabla de regiones es igual a uno, entonces la entrada de la segunda tabla de regiones no es valida y se indica una condici6n de excepci6n.
Si los bits OT tienen un valor de uno (01 binario) en el selector 408, entonces la primera tabla designada en la jerarquia de tablas de traducci6n es una tercera tabla de regiones. El origen 402 de la tabla es sumado aritmeticamente, en 518, con una porci6n 524 del tercer indice de regi6n (RTX) de la direcci6n virtual para hacer referencia a una entrada 522 de la tercera tabla de regiones en una tercera tabla de regiones. El origen de la tabla (con 12 ceros afadidos a la derecha, o multiplicado por 4.096) es sumado al producto del indice multiplicado por 8 (o el indice con tres ceros afadidos a la derecha). La entrada de la tercera tabla de regiones contiene un origen 520 de la tabla de segmentos a una siguiente tabla de nivel inferior en la jerarquia de tablas de conversi6n usadas en la traducci6n. La siguiente tabla de nivel inferior a la tercera tabla de regiones es la tabla de segmentos. Si el bit (I) no valido de la entrada de la tercera tabla de regiones es igual a uno, entonces la entrada de la tercera tabla de regiones no es valida y se indica una condici6n de excepci6n.
Si los bits OT son iguales a cero (00 binario) en el selector 408, entonces la primera tabla designada en la jerarquia de tablas de traducci6n es una tabla de segmentos. El origen 402 de la tabla es sumado aritmeticamente, en 526, con una porci6n 532 del indice de segmento (SX) de la direcci6n virtual para hacer referencia a una entrada 530 de la tabla de segmentos en una tabla de segmentos. El origen de la tabla (con 12 ceros afadidos a la derecha, o multiplicado por 4.096) es afadido al producto del indice multiplicado por 8 (o el indice con tres ceros afadidos a la derecha). La entrada de la tabla de segmentos contiene una direcci6n de origen a una tabla de paginas o una direcci6n absoluta de marco de segmento (SFAA), mostrada en 528. Si el bit (I) no valido de la entrada de la tabla de segmentos es igual a uno, entonces la entrada de la tabla de segmentos no es valida y se indica una condici6n de excepci6n.
En 538, se examina el bit de control de formato (FC) de la STE de la tabla de segmentos. Si el control de formato de la STE es igual a uno, entonces la entrada 530 de tabla de segmentos contiene una direcci6n absoluta 552 de marco de segmento (SFAA) y la traducci6n dinamica de direcciones continua con referencia al nodo 562 en la FIG. 5C. Oe lo contrario, la entrada de la tabla de segmentos obtenida forma la tabla de segmentos que contiene una direcci6n de origen de tabla de paginas y la traducci6n dinamica de direcciones continua con referencia al nodo 560 en la Fig. 5B.
Ahora, se hace referencia a la Fig. 5B. Si el control de formato de la STE en la entrada de tabla de segmentos es igual a cero, entonces la entrada de tabla de segmentos obtenida de la tabla de segmentos contiene una direcci6n de origen a la siguiente tabla de nivel inferior en la jerarquia de las tablas de traducci6n. La siguiente tabla de nivel inferior a la tabla de segmentos es una tabla de paginas. El origen 528 de la tabla de paginas, obtenido desde la entrada 530 de la tabla de segmentos de la Fig. 5A, es sumado aritmeticamente, en 538, con una porci6n 534 de indice de pagina (PX) de la direcci6n virtual para hacer referencia a una entrada 542 de la tabla de paginas en una tabla de paginas. El origen de la tabla (con 11 ceros afadidos a la derecha, o multiplicado por 2.048) es sumado al producto del indice multiplicado por 8 (o el indice con tres ceros afadidos a la derecha). La entrada de la tabla de paginas contiene una direcci6n 546 real de marco de pagina (PFRA). Cuando los bits situados mas a la izquierda de la direcci6n real de marco de pagina son concatenados, en 548, con una porci6n 536 de indice de byte (BX) de la direcci6n virtual, se obtiene una direcci6n 550 real de 64-bits. La direcci6n real de 64-bits puede ser sometida ademas a una operaci6n de prefijaci6n para formar una direcci6n absoluta. La direcci6n virtual traducida hace referencia al bloque de datos de 4 kilobytes (4.096 bytes) deseado en la memoria o el almacenamiento principal.
Preferentemente, la informaci6n usada en la traducci6n dinamica de una direcci6n virtual a una direcci6n de memoria es almacenada en una etiqueta de entrada de memoria intermedia de traducci6n adelantada junto con la direcci6n del bloque de memoria asociado con la direcci6n virtual. El subsiguiente acceso de almacenamiento puede traducir rapidamente una direcci6n virtual, comparando la informaci6n del ASCE y la informaci6n de direcci6n virtual con las etiquetas de la memoria intermedia de traducci6n adelantada. Si se encuentra que una etiqueta es la de la direcci6n virtual, puede usarse la direcci6n de memoria intermedia de la traducci6n adelantada del bloque de memoria en lugar de realizar el acceso secuencial lento de cada tabla de traducci6n implicada. En una realizaci6n, la direcci6n real de marco de pagina (PFRA) junto con una etiqueta que consiste, por ejemplo, en el ASCE y las porciones RX, SX y PX de la direcci6n virtual, son almacenados en una entrada de la memoria 544 intermedia de traducci6n adelantada. La traducci6n subsiguiente de esta direcci6n virtual es derivada, posteriormente, a partir de la informaci6n almacenada en la memoria intermedia de traducci6n adelantada.
Con referencia ahora a la Fig. 5C, si el control de formato de la STE en la entrada 530 de la tabla de segmentos es igual a uno, entonces la entrada de la tabla de segmentos contiene una direcci6n 552 absoluta de marco de segmento (SFAA). Cuando los bits situados mas a la izquierda de la direcci6n absoluta del marco de segmento son concatenados, en 554, con una porci6n 534 del indice de pagina y una porci6n 536 del indice de byte de la direcci6n virtual, se obtiene una direcci6n 556 absoluta de 64-bit. La direcci6n virtual traducida hace referencia a un gran bloque de datos deseado en la memoria o almacenamiento principal. El gran bloque de datos es al menos de 1 megabyte (1.048.576 bytes) de tamafo.
En una realizaci6n, la direcci6n absoluta del marco de segmento (SFAA), junto con las porciones RX y SX de la direcci6n virtual, son almacenadas en una memoria 544 intermedia de traducci6n adelantada. La subsiguiente traducci6n de esta direcci6n virtual es derivada posteriormente a partir de la informaci6n almacenada en la memoria intermedia de traducci6n adelantada.
Formatos de entrada de tabla de traducci6n
Las realizaciones de las diversas entradas de la tabla de traducci6n en la jerarquia de tablas de traducci6n usadas en la traducci6n son tal como se indica a continuaci6n.
Entradas de la tabla de regiones
La expresi6n "entrada de la tabla de regiones" significa una entrada de la primera tabla de regiones, una entrada de segunda tabla de regiones o una entrada de tercera tabla de regiones. Las entradas extraidas de la primera tabla de regiones, la segunda tabla de regiones y la tercera tabla de regiones tienen los formatos siguientes. El nivel (primero, segundo o tercero) de la tabla que contiene una entrada es identificado por losbits de tipo de tabla (TT) en la entrada.
En una realizaci6n, los formatos de la entrada de la primera tabla de regiones, la entrada de la segunda tabla de regiones y la entrada de la tercera tabla de regiones son tal como se muestra en la Fig. 20.
Origen de la segunda tabla de regiones, origen de la tercera tabla de regiones y origen de tabla de segmentos: Una entrada de la primera tabla de regiones contiene un origen de la segunda tabla de regiones. Una entrada de la segunda tabla de regiones contiene un origen de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene un origen de la tabla de segmentos. La descripci6n siguiente se aplica a cada uno de los tres origenes de tabla. Los bits 051 de la entrada, con 12 ceros afadidos a la derecha, forman una direcci6n de 64 bits que indica el principio de la siguiente tabla de nivel inferior.
Bit (P) de protecci6n OAT: Cuando se aplica OAT mejorado, el bit 54 es tratado como habiendo sido sometido a una operaci6n OR con el bit de protecci6n OAT en cada subsiguiente entrada de tabla de regiones, entrada de la tabla de segmentos, y, cuando sea aplicable, entrada de la tabla de paginas, usadas en la traducci6n. Oe esta manera, cuando el bit es igual a uno, la protecci6n OAT es aplicada a toda la regi6n o regiones especificadas por la entrada de la tabla de regiones. Cuando la funci6n OAT mejorada no esta instalada, o cuando la funci6n esta instalada, pero el control de habilitaci6n de OAT mejorada es igual a cero, el bit 54 de la entrada de la tabla de regiones es ignorado.
Oesplazamiento de la segunda tabla de regiones, desplazamiento de la tercera tabla de regiones y desplazamiento de tabla de segmentos (TF): Una entrada de la primera tabla de regiones contiene un desplazamiento de la segunda tabla de regiones. Una entrada de la segunda tabla de regiones contiene un desplazamiento de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene un desplazamiento de la tabla de segmentos. La descripci6n siguiente se aplica a cada uno de los tres desplazamientos de tabla. Los bits 56 y 57 de la entrada especifican la longitud de una porci6n de la siguiente tabla de nivel inferior, que falta en el principio de la tabla, es decir, los bits especifican la ubicaci6n de la primera entrada existente realmente en la siguiente tabla de nivel inferior. Los bits especifican la longitud de la porci6n que falta en unidades de 4.096 bytes, de manera que la longitud de la porci6n variable que falta es un multiplo de 512 entradas. La longitud de la porci6n que falta, en unidades de 4.096 bytes, es igual al valor TF. Los contenidos del campo de desplazamiento, en conjunci6n con el campo de longitud, los bits 62 y 63, son usados para establecer si la porci6n de la direcci6n virtual (RSX, RTX o SX) a ser traducida por medio de la siguiente tabla de nivel inferior designa una entrada que existe realmente en la tabla.
Bit (I) de regi6n no valida: El Bit 58 en una entrada de la primera tabla de regiones o en una entrada de la segunda tabla de regiones controla si el conjunto de regiones asociadas con la entrada esta disponible. El bit 58 en una entrada de la tercera tabla de regiones controla si la unica regi6n asociada con la entrada esta disponible. Cuando el bit 58 es igual a cero, la traducci6n de direcci6n prosigue usando la entrada de la tabla de regiones. Cuando el bit es igual a uno, la entrada no puede ser usada para la traducci6n.
Bits de tipo de tabla (TT): Los bits 60 y 61 de la entrada de la primera tabla de regiones, la entrada de lasegunda tabla de regiones y la entrada de la tercera tabla de regiones identifican el nivel de la tabla que contiene la entrada, de la manera
siguiente: los bits 60 y 61 deben identificar el nivel correcto de tabla, teniendo en cuenta el tipo de designaci6n de tabla que es el ASCE que esta siendo usado en la traducci6n y el numero de niveles de tabla que se han usado hasta ahora; de lo contrario, se reconoce una excepci6n de especificaci6n de traducci6n. La tabla siguiente muestra los bits de tipo de tabla:

Bits 60 y 61 Nivel de tabla de regiones
11
Primero
10
Segundo
01
Tercero
Bits de tipo de tabla para las entradas de la tabla de regiones
Longitud de la segunda tabla de regiones, longitud de la tercera tabla de regiones y longitud de la tabla de segmentos (TL): Una entrada de la primera tabla de regiones contiene una longitud de la segunda tabla de regiones. Una entrada de la segunda tabla de regiones contiene una longitud de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene una longitud de la tabla de segmentos. La descripci6n siguiente se aplica a cada una de las tres longitudes de tabla. Los bits 62 y 63 de la entrada especifican la longitud de la siguiente tabla de nivel inferior en unidades de 4.096 bytes, haciendo, de esta manera, la longitud de la tabla variable en multiplos de 512 entradas. La longitud de la siguiente tabla de nivel inferior, en unidades de 4.096 bytes, es igual a uno mas que el valor TL. Los contenidos del campo de longitud, en conjunci6n con el campo de desplazamiento, los bits 56 y 57, son usados para establecer si la porci6n de la direcci6n virtual (RSX, RTX o SX) a ser traducida por medio de la siguiente tabla de nivel inferior designa una entrada que existe realmente en la tabla. Todas las posiciones de bit restantes de la entrada de la tabla de regiones estan reservadas para futuras extensiones posibles y deberian contener ceros; de lo contrario, el programa puede no funcionar de manera compatible en el futuro. Cuando se aplica OAT mejorada, las posiciones de bits reservadas de la entrada de la tabla de regiones deberian contener ceros, incluso si la entrada de la tabla no es valida.
Entradas de la tabla de segmentos
Cuando no se aplica OAT mejorada, o cuando se aplica OAT mejorada y el control de formato de la STE, el bit 53 de la entrada de la tabla de segmentos es igual a cero, la entrada extraida desde la tabla de segmentos, en una realizaci6n, tiene el formato ilustrado en la Fig. 21.
Cuando se aplica OAT mejorada y el control de formato de la STE es igual a uno, la entrada extraida desde la tabla de segmentos, en una realizaci6n, tiene el formato ilustrado en la Fig. 22.
Los campos seleccionados en la entrada de la tabla de segmentos son asignados de la manera siguiente:
Origen de la tabla de paginas: Cuando no se aplica OAT mejorada, o cuando se aplica OAT mejorada, pero el control de formato de la STE, el bit 53 de la entrada de la tabla de segmentos, es igual a cero, los bits 0-52, con 11 ceros afadidos a la derecha, forman una direcci6n de 64 bits que designa el comienzo de una tabla de paginas. No puede predecirse si la direcci6n es real o absoluta.
Oirecci6n absoluta de marco de segmento (SFAA): Cuando se aplica OAT mejorada y el control de formato de la STE es igual a uno, los bits 0-43 de la entrada, con 20 ceros afadidos a la derecha, forman la direcci6n absoluta de 64-bits del segmento.
Control de validez ACCF (AV): Cuando se aplica OAT mejorada y el control de formato de la STE es igual a uno, el bit 47 es los bits de control de acceso y el control de validez del bit de protecci6n de extracci6n (ACCF). Cuando el control AV es igual a cero, los bits 48-52 de la entrada de la tabla de segmentos son ignorados. Cuando el control AV es igual a uno, los bits 48-52 son usados tal como se describe a continuaci6n.
Bits de control de acceso (ACC): Cuando se aplica OAT mejorada, el control de formato de la STE es igual a uno, y el control AV es igual a uno, los bits 48-51 de la entrada de la tabla de segmentos contienen los bits de control de acceso que pueden ser usados para cualquier comprobaci6n de acceso controlado por clave que se aplica a la direcci6n.
Bit de protecci6n de extracci6n (F): Cuando se aplica OAT mejorada, el control de formato de la STE es igual a uno y el control AV es igual a uno, el bit 52 de la entrada de la tabla de segmentos contiene el bit de protecci6n de extracci6n que puede ser usado para cualquier comprobaci6n de acceso controlado por clave que se aplica a la direcci6n.
Control de formato de la STE (FC): Cuando seaplica OAT mejorada, el bit 53 es el control de formato para la entrada de la tabla de segmentos, tal como se indica a continuaci6n:
Cuando el bit FC es igual a cero, los bits 0-52 de la entrada forman el origen de la tabla de paginas, y el bit 55 esta reservado.
Cuando el bit FC es igual a uno, los bits 0-43 de la entrada forman la direcci6n absoluta de marco de segmento,
5 el bit 47 es el control de validez de ACCF, los bits 48-51 son los bits de control de acceso, el bit 52 es el bit de protecci6n de extracci6n y el bit 55 es la anulaci6n de registro de cambio. Cuando no se aplica OAT mejorada, el bit 53 bits es ignorado.
Bit de protecci6n OAT (P): El bit 54, cuando es igual a uno, indica que la protecci6n OAT se aplica a todo el segmento.
• Cuando no se aplica OAT mejorada, el bit 54 es tratado como habiendo sido sometido a una operaci6n OR con 10 el bit de protecci6n OAT en la entrada de la tabla de paginas usada en la traducci6n.
• Cuando se aplica OAT mejorada, el bit de protecci6n OAT en todas y cada una de las entradas de la tabla de regiones usadas en la traducci6n son tratadas como habiendo sido sometidas a una operaci6n OR con el bit de protecci6n OAT en la entrada de la tabla de segmentos, cuando el control de formato de la STE es igual a cero, el bit de protecci6n OAT en el STE es tratado adicionalmente como habiendo sido sometido a una operaci6n OR
15 con el bit de protecci6n OAT en la entrada de la tabla de paginas.
Anulaci6n de registro de cambio (CO): Cuando se aplica OAT mejorada, y el control de formato de la STE es igual a uno, el bit 55 de la entrada de la tabla de segmentos es la anulaci6n de registro de cambio para el segmento.
Cuando no se aplica OAT mejorada, o cuando se aplica OAT mejorada pero el control de formato de la STE es igual a cero, el bit 55 de la entrada de la tabla de segmentos es ignorado.
20 Bit de segmento no valido (I): El Bit 58 controla si el segmento asociado con la entrada de la tabla de segmentos esta disponible.
Cuando el bit es igual a cero, la traducci6n de direcciones prosigue usando la entrada de la tabla de segmentos.
Cuando el bit es igual a uno, la entrada de la tabla de segmentos no puede ser usada para la traducci6n.
Bit de segmento Comun (C): El bit 59 controla el uso de copias de la memoria intermedia de traducci6n adelantada de la
25 entrada de la tabla de segmentos. Cuando no se aplica OAT mejorada o cuando se aplica OAT mejorada pero el control de formato es igual a cero, el bit 59 controla tambien el uso de las copias de memoria intermedia de traducci6n adelantada de la tabla de paginas designada por la entrada de la tabla de segmentos.
• Un cero identifica un segmento privado; en este caso, la entrada de la tabla de segmentos, y cualquier tabla de
paginas que designa la misma, pueden ser usadas solo en asociaci6n con el origen de la tabla de segmentos 30 que designa la tabla de segmentos en la que reside la entrada de la tabla de segmentos.
• Un uno identifica un segmento comun; en este caso, la entrada de la tabla de segmentos, y cualquier tabla de paginas que designa la misma, pueden seguir siendo usadas para traducir direcciones correspondientes al indice de segmento, incluso cuando se especifica una tabla de segmentos diferente.
Sin embargo, las copias de la memoria intermedia de la traducci6n adelantada de la entrada de la tabla de segmentos y
35 cualquier tabla de paginas para un segmento comun no pueden ser usadas si el control de espacio privado, el bit 55, es igual a uno en el ASCE usado en la traducci6n o, si ese ASCE es una designaci6n de espacio real. El bit de segmento comun debe ser igual a cero si la entrada de tabla de segmentos es extraida desde el almacenamiento durante una traducci6n cuando el control de espacio privado es igual a uno en el ASCE que esta siendo usado. Oe lo contrario, se reconoce una excepci6n de especificaci6n de traducci6n.
40 Bits de tipo de tabla (TT): Los bits 60 y 61 de la entrada de la tabla de segmentos son 00 binario para identificar el nivel de la tabla que contiene la entrada. Los significados de todos los posibles valores de los bits 60 y 61 en una entrada de la tabla de regiones o una entrada de la tabla de segmentos son tal como se indica a continuaci6n:
Bits 60 y 61
Nivel de tabla
11
Primera regi6n
10
Segunda regi6n
20
01 Tercera regi6n
00 Segmento
Bits 60, 61 de tipo de tabla
Los bits 60 y 61 deben identificar el nivel de tabla correcto, teniendo en cuenta el tipo de designaci6n de tabla que es el ASCE que esta siendo usado en la traducci6n y el numero de niveles de tabla que han sido usados hasta ahora; de lo contrario, se reconoce una excepci6n de especificaci6n de traducci6n. Todas las otras posiciones de bit de la entrada de la tabla de segmentos estan reservadas para futuras extensiones posibles y deberian contener ceros; de lo contrario, el programa puede no funcionar de manera compatible en el futuro. Cuando se aplica OAT mejorada, las posiciones de bits reservadas de la entrada de la tabla de segmentos deberian contener ceros, incluso si la entrada de la tabla no es valida.
Entradas de la tabla de paginas
En una realizaci6n, la entrada extraida desde la tabla de paginas tiene el formato ilustrado en la Fig. 23.
Los campos seleccionados en la entrada de la tabla de paginas son asignados tal como se indica a continuaci6n:
Oirecci6n real de marco de pagina (PFRA): Los bits 0-51 proporcionan los bits situados mas a la izquierda de una direcci6n de almacenamiento real. Cuando estos bits son concatenados con el campo de indice de byte de 12-bits de la direcci6n virtual, a la derecha, se obtiene una direcci6n real de 64-bits.
Bit de pagina no valida (I): El bit 53 controla si la pagina asociada con la entrada de la tabla de paginas esta disponible. Si el bit es igual a cero, la traducci6n de direcciones prosigue usando la entrada de la tabla de paginas. Cuando el bit es igual uno, la entrada de la tabla de paginas no puede ser usada para la traducci6n.
Bit de Protecci6n OAT (P): El bit 54 controla si pueden realizarse accesos de almacenamiento en la pagina. Este mecanismo de protecci6n es adicional a la protecci6n controlada con clave y a los mecanismos de protecci6n de direcciones bajas. El bit no tiene efecto sobre los accesos de extracci6n. Si el bit es igual a cero, los almacenamientos estan autorizados en la pagina, dependiendo de las restricciones adicionales siguientes:
El bit de protecci6n OAT es igual a cero en la entrada de la tabla de segmentos usada en la traducci6n.
Cuando se aplica OAT mejorada, el bit de protecci6n OAT es igual a cero en todas las entradas de la tabla de regiones usadas en la traducci6n.
Otros mecanismos de protecci6n.
Si el bit es igual a uno, los almacenamientos no estan permitidos. Cuando no existen condiciones de excepci6n de prioridad superior, un intento de almacenamiento cuando el bit de protecci6n OAT es igual a uno causa que se reconozca una excepci6n de protecci6n. El bit de protecci6n OAT en la entrada de la tabla de segmentos es tratado como habiendo sido sometido a una operaci6n OR con el bit 54 cuando se determina si la protecci6n OAT es aplicada a la pagina. Cuando se aplica OAT mejorada, el bit de protecci6n OAT en cualquiera de las entradas de la tabla de regiones usadas en la traducci6n, son tratadas tambien como habiendo sido sometidas a una operaci6n OR con el bit 54 cuando se determina si se aplica la protecci6n OAT.
Anulaci6n de registro de cambio (CO): Cuando no se aplica OAT mejorada, el bit 55 de la entrada de la tabla de paginas debe contener cero; de lo contrario, se reconoce una excepci6n de especificaci6n de traducci6n como parte de la ejecuci6n de una instrucci6n que usa esa entrada para la traducci6n de direcciones. Cuando se aplica OAT mejorada y el control de formato de la STE es igual a cero, el bit 55 de la entrada de la tabla de paginas es la anulaci6n de registro de cambio para la pagina.
La posici6n de bit 52 de la entrada debe contener cero; de lo contrario, se reconoce una excepci6n de especificaci6n de traducci6n como parte de la ejecuci6n de una instrucci6n que usa esa entrada para la traducci6n de direcciones. Las posiciones de bits 56-63 no son asignadas y se ignoran.
Otra realizaci6n de la traducci6n dinamica
Esta secci6n describe el procedimiento de traducci6n, tal como es realizado implicitamente antes de que una direcci6n virtual sea usada para acceder al almacenamiento principal.
La traducci6n de una direcci6n virtual es controlada por el bit de modo OAT y los bits control de espacio de direcciones en la palabra de estado de programa y por los ASCES en los registros de control 1, 7 y 13 y tal como se especifica por los
registros de acceso. Cuando el ASCE usado en una traducci6n es una designaci6n de la primera tabla de regiones, la traducci6n es realizada por medio de una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos y una tabla de paginas, todas las cuales residen en almacenamiento real o absoluto. Cuando el ASCE es un tipo de nivel inferior de designaci6n de tabla (designaci6n de segunda tabla de regiones, designaci6n de tercera tabla de regiones o designaci6n de tabla de segmentos), la traducci6n es realizada por medio de s6lo los niveles de tabla que comienzan con el nivel designado, y los bits de la direcci6n virtual que requeriria, si no fuese igual a cero, el uso de un nivel o niveles mas altos de la tabla debe ser todos igual a cero; de lo contrario, se reconoce una excepci6n de tipo ASCE. Cuando el ASCE es una designaci6n de espacio real, la direcci6n virtual es tratada como una direcci6n real y las entradas de la tabla en el almacenamiento real o absoluto no son usadas.
El ASCE usado para una traducci6n de una direcci6n particular es denominado ASCE efectivo. Consiguientemente, cuando se traduce una direcci6n virtual primaria, los contenidos del registro de control 1 son usados como el ASCE efectivo. Oe manera similar, para una direcci6n virtual secundaria, se usan los contenidos del registro de control 7; para una direcci6n virtual especificada por AR, se usa el ASCE especificado por el registro de acceso, y para una direcci6n virtual, se usan los contenidos del registro de control 13.
Cuando el control de espacio real en el ASCE efectivo es igual a cero, el tipo de designaci6n en el ASCE especifica el tipo de designaci6n de tabla: primera tabla de regiones, segunda tabla de regiones, tercera tabla de regiones o tabla de segmentos. La porci6n correspondiente de la direcci6n virtual (indice de primera regi6n, indice de segunda regi6n, indice de tercera regi6n o indice de segmento) es comparada con el campo de longitud de tabla en la designaci6n, y es sumada al origen en la designaci6n para seleccionar una entrada en la tabla designada. Si la entrada seleccionada esta fuera de su tabla, segun se determina por el campo de longitud de tabla en la designaci6n, o si el bit I es uno en la entrada seleccionada, se reconoce una excepci6n de traducci6n de primera regi6n, de traducci6n de segunda regi6n, de traducci6n de tercera regi6n o de traducci6n de segmento, dependiendo del nivel de tabla especificado por la designaci6n. Si los bits de tipo de tabla en la entrada seleccionada no indican el nivel de tabla esperado, se reconoce una excepci6n de especificaci6n de traducci6n.
La entrada de la tabla seleccionada por medio del ASCE efectivo designa la siguiente tabla de nivel inferior a ser usada. Si la tabla actual es una primera tabla de regiones, una segunda tabla de regiones o una tercera tabla de regiones, la siguiente poci6n de la direcci6n virtual (indice de segunda regi6n, indice de tercera regi6n o indice de segmentos, respectivamente) es comparada con el desplazamiento de la tabla y los campos de longitud de tabla en la entrada de tabla actual, y es sumada al origen en la entrada para seleccionar una entrada en la siguiente tabla de nivel inferior. Si la entrada seleccionada en la tabla siguiente se encuentra fuera de su tabla, segun se determina por el desplazamiento de tabla y los campos de longitud de tabla en la entrada de la tabla actual, o si el bit I es uno en la entrada seleccionada, se reconoce una excepci6n de traducci6n de segunda regi6n, de traducci6n de tercera regi6n o de traducci6n de segmentos, en funci6n del nivel de la siguiente tabla. Si los bits de tipo de tabla en la entrada seleccionada no indican el nivel de tabla esperado, se reconoce una excepci6n de especificaci6n de traducci6n.
El procesamiento de porciones de la direcci6n virtual por medio de los niveles de tablas sucesivos continua hasta que se ha seleccionado una entrada de la tabla de segmentos. La entrada de la tabla de segmentos contiene un bit de protecci6n de pagina que se aplica a todas las paginas en el segmento especificado.
La porci6n indice de pagina de la direcci6n virtual es sumada al origen de la tabla de paginas en la entrada de la tabla de segmentos para seleccionar una entrada en la tabla de paginas. Si el bit I es uno en la entrada de la tabla de paginas, se reconoce una excepci6n de traducci6n de pagina. La entrada de la tabla de paginas contiene los bits situados mas a la izquierda de la direcci6n real que representa la traducci6n de la direcci6n virtual, y contiene un bit de protecci6n de pagina que se aplica s6lo a la pagina especificada por la entrada de la tabla de paginas.
El campo indice de byte de la direcci6n virtual es usado sin modificaciones como las posiciones de bit situadas mas a la derecha de la direcci6n real.
Con el fin de eliminar el retraso asociado con las referencias a las tablas de traducci6n en el almacenamiento real o absoluto, la informaci6n extraida desde las tablas es colocada tambien, normalmente, en una memoria intermedia especial, la memoria intermedia de traducci6n adelantada, y las traducciones subsiguientes que implican las mismas entradas de la tabla pueden ser realizadas usando la informaci6n registrada en la memoria intermedia de traducci6n adelantada. La memoria intermedia de traducci6n adelantada puede registrar tambien traducciones reales iguales a virtuales relacionadas con una designaci6n de espacio real.
Siempre que se realiza un acceso al almacenamiento real o absoluto durante el procedimiento de traducci6n de direcciones con el prop6sito de extraer una entrada desde una tabla de regiones, una tabla de segmentos o una tabla de paginas, no se aplica la protecci6n controlada por clave.
Busqueda en una tabla designada por un ASCE
El control OT, los bits 60-61 del ASCE efectivo, especifica tanto el tipo de designaci6n de la tabla del ASCE como la porci6n de la direcci6n virtual que debe ser traducida por medio de la tabla designada, tal como se indica a continuaci6n:

Bits 60 y 61 Tipo de designaci6n Porci6n de direcci6n virtual traducida por la tabla
11
Primera tabla de regiones �ndice de primera regi6n (bits 0-10)
10
Segunda tabla de regiones �ndice de segunda regi6n (bits 11-21)
01
Tercera tabla de regiones �ndice de tercera regi6n (bits 22-32)
00
Tabla de segmentos �ndice de segmento (bits 33-43)
Traducci6n por medio de la tabla designada
Cuando los bits 60 y 61 tienen el valor binario 11, la porci6n del primer indice de regi6n de la direcci6n virtual, en conjunci6n con el origen de la primera tabla de regiones contenido en el ASCE, es usada para seleccionar una entrada de la primera tabla de regiones. La direcci6n de 64-bits de la entrada de la primera tabla de regiones en el almacenamiento real o absoluto es obtenida afadiendo 12 ceros a la derecha de los bits 0-51 de la designaci6n de la primera tabla de regiones y afadiendo el primer indice de regi6n con tres ceros situados mas a la derecha y 50 ceros situados mas a la izquierda afadidos. Como parte del procedimiento de busqueda de la primera tabla de regiones, los bits 0 y 1 de la direcci6n virtual (que son los bits 0 y 1 del primer indice de regi6n) son comparados con la longitud de la tabla, los bits 62 y 63 de la designaci6n de la primera tabla de regiones, para establecer si la entrada direccionada esta dentro de la primera tabla de regiones. Si el valor en el campo de longitud de la tabla es menor que el valor en las posiciones de bits correspondientes de la direcci6n virtual, se reconoce una excepci6n de traducci6n de primera regi6n. La comparaci6n con la longitud de la tabla puede ser omitida si el equivalente de una entrada de la primera tabla de regiones en la memoria intermedia de traducci6n adelantada es usado en la traducci6n. La entrada extraida desde la primera tabla de regiones designa el comienzo y especifica el desplazamiento y la longitud de la segunda tabla de regiones correspondiente.
Cuando los bits 60 y 61 del ASCE tienen el valor 10 binario, la porci6n del indice de segunda regi6n de la direcci6n virtual, en conjunci6n con el origen de la segunda tabla de regiones contenido en el ASCE, es usada para seleccionar una entrada de la segunda tabla de regiones. Los bits 11 y 12 de la direcci6n virtual (que son los bits 0 y 1 del indice de segunda regi6n) son comparados con la longitud de la tabla en el ASCE. Si el valor en el campo de longitud de la tabla es menor que el valor en las posiciones de bits correspondientes de la direcci6n virtual, se reconoce una excepci6n de traducci6n de segunda regi6n. La comparaci6n con la longitud de la tabla puede ser omitida si el equivalente de una entrada de la segunda tabla de regiones en la memoria intermedia de traducci6n adelantada es usado en la traducci6n. El procedimiento de busqueda de segunda tabla de regiones es, por lo demas, el mismo que el procedimiento de busqueda de primera tabla; la entrada extraida de la segunda tabla de regiones designa el comienzo y especifica el desplazamiento y la longitud de la tercera tabla de regiones correspondiente.
Cuando los bits 60 y 61 del ASCE tienen el valor binario 01, la porci6n del indice de tercera regi6n de la direcci6n virtual, en conjunci6n con el origen de la tercera tabla de regiones contenido en el ASCE, es usada para seleccionar una entrada de la tercera tabla de regiones. Los bits 22 y 23 de la direcci6n virtual (que son los bits 0 y 1 del indice de tercera regi6n) son comparados con la longitud de la tabla en el ASCE. Si el valor en el campo de longitud de la tabla es menor que el valor en las posiciones de bits correspondientes de la direcci6n virtual, se reconoce una excepci6n de traducci6n de tercera regi6n. El procedimiento de busqueda de tercera tabla de regiones es, por lo demas, el mismo que el procedimiento de busqueda de primera regi6n, incluyendo la comprobaci6n de los bits de tipo de tabla en la entrada de la tercera tabla de regiones. La entrada extraida desde la tercera tabla de regiones designa el comienzo y especifica el desplazamiento y la longitud de la tabla de segmentos correspondiente.
Cuando los bits 60 y 61 del ASCE tienen el valor binario 00, la porci6n indice de segmento de la direcci6n virtual, en conjunci6n con el origen de la tabla de segmentos contenido en el ASCE, es usada para seleccionar una entrada desde la tabla de segmentos. Los bits 33 y 34 de la direcci6n virtual (que son los bits 0 y 1 del indice de segmento) son comparados con la longitud de la tabla en el ASCE. Si el valor en el campo de longitud de la tabla es menor que el valor en las posiciones de bits correspondientes de la direcci6n virtual, se reconoce una excepci6n de traducci6n de segmento. La comparaci6n con la longitud de la tabla puede ser omitida si el equivalente de una entrada de la tabla de segmentos en la memoria intermedia de traducci6n adelantada es usado en la traducci6n. El procedimiento de busqueda de tabla de
segmentos es, por lo demas, el mismo que el procedimiento de busqueda de la primera tabla de regiones, incluyendo la comprobaci6n de los bits de tipo de tabla en la entrada de la tabla de segmentos. El procesamiento es tal como se indica a continuaci6n:
Cuando no se aplica OAT mejorada, o cuando se aplica OAT mejorada pero el control de formato de la STE es igual a cero, la entrada extraida desde la tabla de segmentos designa el comienzo de la tabla de paginas correspondiente, y el procesamiento continua tal como se describe en "busqueda de tabla de paginas",mas adelante.
Cuando se aplica OAT mejorada y el control de formato de la STE es igual a uno, la entrada extraida desde la tabla de segmentos contiene los bits situados mas a la izquierda de la direcci6n absoluta del marco de segmento. Si el bit de protecci6n OAT es uno en una entrada de la tabla de regiones usada en la traducci6n o en la entrada de la tabla de segmentos, y la referencia de almacenamiento para la cual se esta realizando la traducci6n es un almacenamiento, se reconoce una excepci6n de protecci6n.
Busqueda en una tabla designada por una entrada de tabla de regiones
Cuando el ASCE efectivo es una designaci6n de tabla de regiones, una entrada de la tabla de regiones es seleccionada tal como se ha descrito en la secci6n anterior. A continuaci6n, los contenidos de la entrada seleccionada y la porci6n del siguiente indice de la direcci6n virtual son usados para seleccionar una entrada en la siguiente tabla de nivel inferior, que puede ser otra tabla de regiones o una tabla de segmentos. Cuando la entrada de tabla seleccionada por medio del ASCE es una entrada de primera tabla de regiones, la porci6n indice de segunda regi6n de la direcci6n virtual, en conjunci6n con el origen de la segunda tabla de regiones contenido en la entrada de la primera tabla de regiones, es usada para seleccionar una entrada desde la segunda tabla de regiones. La direcci6n de 64 bits de la entrada de la segunda tabla de regiones en el almacenamiento real o absoluto es obtenida afadiendo 12 ceros a la derecha de los bits 0-51 de la entrada de la primera tabla de regiones y sumando el indice de segunda regi6n con tres ceros situados mas a la derecha y 50 ceros situados mas a la izquierda afadidos.
Cuando se forma la direcci6n de una entrada de la segunda tabla de regiones, tercera tabla de regiones o tabla de segmentos, no puede predecirse si se aplica prefijaci6n, en su caso, al origen de tabla respectivo contenido en la entrada de la tabla de nivel superior antes de la adici6n del valor de indice de la tabla, o se aplica prefijaci6n a la direcci6n de entrada de la tabla que es formada mediante la adici6n del origen de la tabla y el valor indice de la tabla.
Como parte del procedimiento de busqueda de la segunda tabla de regiones, los bits 11 y 12 de la direcci6n virtual (que son los bits 0 y 1 del indice de segunda regi6n) son comparados con el desplazamiento de la tabla, los bits 56 y 57 de la entrada de la primera tabla de regiones, y con la longitud de la tabla, los bits 62 y 63 de la entrada de la primera tabla de regiones, para establecer si la entrada direccionada esta en la segunda tabla de regiones. Si el valor en el campo de desplazamiento de la tabla es mayor que el valor en las posiciones de bits correspondientes de la direcci6n virtual, o si el valor en el campo de longitud de la tabla es menor que el valor en las posiciones de bits correspondientes de la direcci6n virtual, se reconoce una excepci6n de traducci6n de segunda regi6n.
La segunda tabla de regiones designa el comienzo y especifica el desplazamiento y la longitud de la tercera tabla de regiones correspondiente.
Cuando la entrada de la tabla seleccionada por medio del ASCE es una entrada de la segunda tabla de regiones, o si una entrada de la segunda tabla de regiones ha sido seleccionada por medio de los contenidos de una entrada de la primera tabla de regiones, la porci6n indice de tercera regi6n de la direcci6n virtual, en conjunci6n con el origen de la tercera tabla de regiones contenido en la entrada de la segunda tabla de regiones, es usada para seleccionar una entrada de la tercera tabla de regiones. Los bits 22 y 23 de la direcci6n virtual (que son los bits 0 y 1 del indice de tercera regi6n) son comparados con el desplazamiento de la tabla y la longitud de la tabla en la entrada de la segunda tabla de regiones. Se reconoce una excepci6n de traducci6n de tercera regi6n si el desplazamiento de la tabla es mayor que los bits 22 y 23 o si la longitud de la tabla es menor que los bits 22 y 23. El procedimiento de busqueda de tercera tabla de regiones es, por lo demas, el mismo que el procedimiento de busqueda de segunda tabla de regiones. La entrada extraida desde la tercera tabla de regiones designa el comienzo y especifica el desplazamiento y la longitud de la tabla de segmentos correspondiente.
Cuando la entrada de la tabla seleccionada por medio del ASCE es una entrada de la tercera tabla de regiones, o si una entrada de la tercera tabla de regiones ha sido seleccionada por medio de los contenidos de una entrada de la segunda tabla de regiones, la porci6n indice de segmento de la direcci6n virtual, en conjunci6n con el origen de la tabla de segmentos contenido en la entrada de la tercera tabla de regiones, es usada para seleccionar una entrada desde la tabla de segmentos. Los bits 33 y 34 de la direcci6n virtual (que son los bits 0 y 1 del indice de segmento) son comparados con el desplazamiento de la tabla y la longitud de la tabla en la entrada de la tercera tabla de regiones. Se reconoce una excepci6n de traducci6n de segmento si el desplazamiento de la tabla es mayor que los bits 33 y 34 o si la longitud de la tabla es menor que los bits 33 y 34. Se reconoce una excepci6n de especificaci6n de traducci6n si (1) el control de espacio privado, el bit 55, en el ASCE es uno y (2) el bit de segmento comun, el bit 59, en la entrada extraida desde la tabla de segmentos es uno. El procedimiento de busqueda de la tabla de segmentos es, por lo demas, el mismo que el
5 procedimiento de busqueda de la segunda tabla de regiones. El procesamiento es tal como se indica a continuaci6n:
• Cuando no se aplica OAT mejorada, o cuando se aplica OAT mejorada pero el control de formato de la STE es igual a cero, la entrada extraida desde la tabla de segmentos designa el comienzo de la tabla de paginas correspondiente, y el procesamiento continua tal como se describe en "busqueda de tabla de paginas", mas adelante.
10 • Cuando se aplica OAT mejorada y el control de formato de la STE es igual a uno, la entrada extraida desde la tabla de segmentos contiene los bits situados mas la izquierda de la direcci6n absoluta de marco de segmento. Si el bit de protecci6n OAT es uno en la entrada de la tabla de regiones usada en la traducci6n o en la entrada de la tabla de segmentos, y la referencia de almacenamiento para la que se realiza la traducci6n es un almacenamiento, se reconoce una excepci6n de protecci6n.
15 Busqueda de tabla de paginas
Cuando no se aplica OAT mejorada, o cuando se aplica OAT mejorada pero el control de formato de la STE es igual a cero, la porci6n indice de pagina de la direcci6n virtual, en conjunci6n con el origen de la tabla de paginas contenido en la entrada de la tabla de segmentos, es usada para seleccionar una entrada desde la tabla de paginas.
La direcci6n de 64 bits de la entrada de la tabla de paginas en el almacenamiento real o absoluto es obtenida afadiendo
20 11 ceros a la derecha del origen de la tabla de paginas y sumando el indice de pagina, con tres bits situados mas a la derecha y 53 ceros situados mas a la izquierda afadidos. No puede producirse un acarreo de salida de la posici6n de bit
0.
La entrada extraida desde la tabla de paginas indica la disponibilidad de la pagina y contiene los bits situados mas a la izquierda de la direcci6n real de marco de pagina. El bit de pagina no valida, el bit 53, es inspeccionado para determinar si 25 la pagina correspondiente esta disponible. Si este bit es igual a uno, se reconoce una excepci6n de traducci6n de pagina. Si la posici6n de bit 52 contiene un uno, se reconoce una excepci6n de especificaci6n de traducci6n. Cuando no se aplica OAT mejorada o se aplica OAT mejorada y el control de formato de la STE es igual a cero, se reconoce tambien una excepci6n de especificaci6n de traducci6n si la posici6n de bit 55 contiene un uno. Si el bit de protecci6n OAT es uno en la entrada de la tabla de segmentos usada en la traducci6n, en la entrada de la tabla de paginas, o, cuando se aplica OAT
30 mejorada, en cualquier entrada de la tabla de regiones usada durante la traducci6n, y la referencia de almacenamiento para la que se esta realizando la traducci6n es un almacenamiento, se reconoce una excepci6n de protecci6n.
Formaci6n de direcciones reales y absolutas
Cuando el ASCE efectivo es una designaci6n de espacio real, los bits 0-63 de la direcci6n virtual son usados directamente como la direcci6n de almacenamiento real. La direcci6n real puede ser sometida ademas a prefijaci6n para formar una
35 direcci6n absoluta. Cuando el ASCE efectivo no es una designaci6n de espacio real y no se encuentran excepciones en el procedimiento de traducci6n, se aplican las siguientes condiciones:
• Cuando no se aplica OAT mejorada, o cuando se aplica OAT mejorada, pero el control de formato de la STE es igual a cero, la direcci6n real del marco de pagina es obtenida desde la entrada de la tabla de paginas. La direcci6n real del marco de pagina y la porci6n indice de byte de la direcci6n virtual son concatenadas, con la
40 direcci6n real del marco de pagina formando la parte situada mas a la izquierda. El resultado es la direcci6n de almacenamiento real que corresponde a la direcci6n virtual. La direcci6n real puede ser sometida ademas a prefijaci6n para formar una direcci6n absoluta.
• Cuando se aplica OAT mejorada y el control de formato de la STE es igual uno, la direcci6n absoluta del marco
de segmentos y las porciones indice de pagina e indice de byte de la direcci6n virtual son concatenadas, de 45 izquierda a derecha, respectivamente, para formar la direcci6n absoluta que corresponde a la direcci6n virtual.
Reconocimiento de excepciones durante la traducci6n
Las entradas de la tabla, marcadas como no validas o que contienen direcciones no validas o formatos no validos, pueden causar el reconocimiento de excepciones durante el procedimiento de traducci6n. Las excepciones son reconocidas cuando la informaci6n contenida en las entradas de la tabla es usada para la traducci6n y se encuentra que
50 es incorrecta.
Ademas, podria ocurrir una excepci6n, por ejemplo, una excepci6n de tipo ASCE, si la direcci6n virtual a traducir esta ubicada mas alla del rango que puede ser representado por la tabla de nivel superior designada por el ASCE. En un ejemplo, ocurriria una excepci6n de tipo ASCE como resultado del pseudoc6digo siguiente:
If ((OT � 3 ANO RFX �= 0) OR (OT � 2 ANO (RFX �� RSX) �= 0) OR (OT � 1 y RX �= 0)) then asce�type�exception ();
Los bits OT son el tipo de designaci6n (bits 60-61 del ASCE). El RFX es el primer indice de regi6n (bits 0-10 de la direcci6n virtual). El RSX es el indice de segunda regi6n (bits 11-21 de la direcci6n virtual). El RX es el indice de toda la regi6n (bits 0-32 de la direcci6n virtual). Una persona con conocimientos en esta materia comprendera facilmente las operaciones l6gicas y los operandos de comparaci6n usados en el pseudo c6digo.
Calificador de excepci6n de traducci6n (TXQ)
Con respecto al calificador de excepci6n de traducci6n, debe entenderse que la expresi6n "cuando se aplica OAT mejorada" se refiere al nivel (servidor o cliente) en el que se presenta la excepci6n de traducci6n. Por ejemplo, un TXQ es presentado en una excepci6n de traducci6n de servidor siempre que OAT mejorada es aplicada en el nivel de servidor, independientemente de si se aplica en el nivel de cliente.
Ourante una interrupci6n de programa relacionada con OAT, se almacena una identificaci6n de excepci6n de traducci6n (TEIO). Cuando la funci6n OAT mejorada esta instalada y habilitada, un calificador de excepci6n de traducci6n (TXQ) es almacenado en tres bits de la TEIO. El TXQ ayuda a una configuraci6n de servidor a determinar si la interrupci6n fue causada por el servidor o el cliente. Si la excepci6n fue causada por el cliente, el TXQ indica si la interrupci6n fue causada
o no por la direcci6n contenida en una entrada de hoja de la tabla de cliente y, si es asi, si la entrada de hoja era una entrada de la tabla de segmentos o una entrada de tabla de paginas. Esto permite al servidor reconocer referencias a areas que el cliente observa como marcos de 4 K-bytes en lugar de 1 M bytes. El TXQ esta disefado de manera que puede ser ampliado si se necesita un tamafo de marco mas grande, por ejemplo, de 2 Gigabytes.
Ourante una interrupci6n de programa debida a una excepci6n de tipo ASCE, de traducci6n de primera regi6n, traducci6n de segunda regi6n, traducci6n de tercera regi6n, traducci6n de segmento, o traducci6n de pagina, los bits 0-51 de la direcci6n virtual que causa la excepci6n son almacenados en las posiciones de bit 0-51 de las posiciones 168-175. Algunas veces, esta direcci6n se denomina direcci6n de excepci6n de traducci6n. Los bits 52-56 de las ubicaciones 168175 son impredecibles.
Cuando la funci6n OAT mejorada esta instalada y habilitada en la configuraci6n de servidor y se reconoce una excepci6n de tipo ASCE de traducci6n de regi6n, traducci6n de segmento o traducci6n de pagina, los bits 57-59 contienen el calificador de excepci6n de traducci6n (TXQ), tal como se indica a continuaci6n:
0 -La excepci6n fue causada por la configuraci6n actualmente en ejecuci6n (es decir, una excepci6n OAT de cliente es presentada durante la ejecuci6n del cliente, o una excepci6n OAT de servidor durante la ejecuci6n del servidor).
1 -La excepci6n estaba asociada con una direcci6n virtual de servidor derivada de una direcci6n de cliente diferente de las indicadas mas adelante.
2 -La excepci6n estaba asociada con una direcci6n virtual de servidor derivada de la direcci6n absoluta de marco de pagina de cliente.
3 -La excepci6n estaba asociada con una direcci6n virtual de servidor derivada de la direcci6n absoluta de marco de segmento de cliente.
4-7 Reservados.
Los valores de TXQ 1-3 son presentados s6lo en las excepciones de servidor que han ocurrido durante la ejecuci6n de cliente.
OAT de dos niveles
Tal como se ha explicado anteriormente, durante la ejecuci6n de un cliente paginable, se realizan dos niveles de OAT: las direcciones virtuales de cliente son traducidas por medio de OAT de cliente y, cuando sea aplicable, realizando una prefijaci6n a las direcciones absolutas de cliente, que son tratadas, a continuaci6n, como direcciones virtuales de servidor en el espacio de direcciones primario del servidor, y son traducidas por medio de la OAT de servidor y, cuando sea aplicable, realizando una prefijaci6n a las direcciones absolutas de servidor. Ourante el procedimiento OAT de cliente, se hacen referencias a las entradas de la tabla de traducci6n de cliente, localizadas por medio de direcciones absolutas de
cliente que deben ser traducidas tambien por medio de OAT de servidor y, cuando sea aplicable, prefijaci6n. El procedimiento puede resultar en excepciones OAT de cliente, basadas en contenidos y especificaciones de la tabla de cliente, y cada referencia a una direcci6n absoluta de cliente, para una entrada de la tabla de cliente o el objetivo final de la traducci6n de cliente, puede dar lugar a excepciones OAT de servidor. El TXQ apropiado debe ser generado para cada una de estas excepciones, segun las especificaciones anteriores. Las Figs. 6-9 ilustran, en detalle, el procedimiento OAT de cliente, y las Figs. 9-11 ilustran el procedimiento OAT de servidor.
OAT de cliente
Ahora, se hace referencia a la Fig. 6, que ilustra un diagrama de flujo de una realizaci6n de traducci6n dinamica de direcciones de cliente hasta el punto de obtener un campo de control de formato desde una entrada de la tabla de segmentos de cliente.
En 602, se obtiene una direcci6n virtual de cliente a traducir. En 604, se obtienen la direcci6n de origen, el nivel de tabla y la longitud de la tabla de la primera tabla de traducci6n de mas alto nivel usada en la traducci6n de la direcci6n virtual. La direcci6n de origen de la primera tabla de traducci6n usada en la traducci6n es tomada del campo origen de tabla en el ASCE; el nivel de la tabla y la longitud de la tabla dependen de los bits OT y TL en el ASCE, respectivamente. El desplazamiento de tabla para la tabla de traducci6n de mas alto nivel usada es tratado siempre como cero. En 606, una porci6n indice de la direcci6n virtual de cliente a ser usada para hacer referencia a la entrada de la tabla apropiada en la tabla de traducci6n es comprobada, en primer lugar, con el desplazamiento de la tabla y la longitud de la tabla, que determinan los valores minimo y maximo de indice representados en la tabla. Si, en 606, el indice esta fuera de este rango, entonces no puede realizarse una traducci6n adicional de la direcci6n virtual. En una realizaci6n, en 608, una excepci6n de traducci6n de servidor es presentada apropiada para el nivel de tabla que esta siendo indexado (por ejemplo, una excepci6n de traducci6n de primera regi6n, segunda regi6n, tercera regi6n o de segmento). Oebido a que esta es una excepci6n OAT de cliente encontrada mientras se esta ejecutando el cliente, el TXQ se establece a cero para indicar una excepci6n en el nivel de configuraci6n actual. A continuaci6n, la traducci6n de esta direcci6n virtual es detenida, en 610. Si, en 606, el indice esta dentro del rango valido, entonces, en 612, el indice multiplicado por la longitud de la entrada de la tabla es afadido al origen de la tabla para generar la direcci6n absoluta de cliente de una entrada de la tabla. En 614, esta direcci6n absoluta de cliente es tratada como una direcci6n virtual de servidor, y se invoca la OAT de servidor y, cuando sea aplicable una prefijaci6n, para obtener la direcci6n absoluta de servidor correspondiente. Un parametro adicional a OAT de servidor, a ser usado en la generaci6n de un TXQ, si es necesario, indica que la fuente de la direcci6n a ser traducida es una direcci6n de cliente diferente de una direcci6n real de marco de pagina o direcci6n absoluta de marco de segmento. Las Figs. 9-11, explicadas mas adelante, detallan el procedimiento de OAT de servidor. Si, en 616, el procedimiento OAT de servidor ha fallado, entonces, en 618, el procedimiento de traducci6n de servidor es terminado; el procedimiento OAT de servidor habra generado una excepci6n. El TXQ para esta excepci6n de servidor es determinado tal como se describe en la Fig. 9. Si, en 616, el procedimiento OAT de servidor tiene exito, entonces en 620, la entrada de tabla de traducci6n de cliente es extraida usando la direcci6n absoluta de servidor resultante. En 622, se examina el bit (I) no valido en la entrada de la tabla cliente. Si esta establecido, entonces no puede realizarse una traducci6n adicional de la direcci6n virtual usando la entrada de la tabla, ya que ha sido marcada como no valida; en 608, una excepci6n de la traducci6n de cliente es presentada, con un valor TXQ que indica la configuraci6n actual, al igual que anteriormente, y una traducci6n adicional de esta direcci6n virtual usando esta entrada de tabla de segmentos es detenida en 610. Oe lo contrario, en 624, si la entrada extraida desde la tabla de traducci6n de cliente no es una entrada de la tabla de segmentos, entonces la tabla de segmentos en la jerarquia de tablas de traducci6n aun no ha sido referenciada. En este caso, en 626, el origen, el desplazamiento y la longitud de una tabla siguiente de nivel inferior en la jerarquia de tablas de traducci6n de servidor son obtenidos desde la entrada de la tabla. El control vuelve a la etapa 606, en la que el siguiente campo indice dentro de la direcci6n virtual de cliente es comprobado con el desplazamiento y la longitud nuevos, y si esta dentro del rango, este indice es usado para hacer referencia a la entrada de la tabla correspondiente en la tabla siguiente de nivel inferior usada en la traducci6n.
Por ejemplo, si la direcci6n de origen de la tabla de la primera tabla de traducci6n de cliente a ser usada en la traducci6n es una primera tabla de regiones, entonces la porci6n RFX de la direcci6n virtual de cliente es usada para hacer referencia a una entrada de la primera tabla de regiones con la primera tabla de regiones. Si la direcci6n de origen de la tabla es a una segunda tabla de regiones, entonces la porci6n RSX de la direcci6n virtual es usada para hacer referencia a una entrada de la segunda tabla de regiones dentro de la segunda tabla de regiones. Si la direcci6n de origen de la tabla es a una tercera tabla de regiones, entonces la porci6n RTX de la direcci6n virtual es usada para hacer referencia a una entrada de la tercera tabla de regiones dentro de la tercera tabla de regiones. Si la direcci6n de origen de la tabla es a una tabla de segmentos, entonces la porci6n SX de la direcci6n virtual es usada para hacer referencia a una entrada de la tabla de segmentos dentro de la tabla de segmentos. Las tablas sucesivas son referenciadas hasta que la entrada de la tabla de segmentos ha sido extraida.
Una vez extraida la entrada de la tabla de segmentos de cliente, en 628, el bit de control de formato de la entrada de la 27
tabla de segmentos (STE) es examinado para determinar si el control de formato esta establecido para esta direcci6n virtual particular. Si el control de formato de la STE es igual a cero, entonces la traducci6n dinamica de direcciones ocurre con respecto al nodo 630. Si el control de formato de la STE es igual a uno, entonces la traducci6n dinamica de direcciones ocurre con respecto al nodo 632.
Traducci6n dinamica de direcci6n de cliente (Control de formato de la STE es igual a cero)
Ahora, se hace referencia a la Fig. 7, que ilustra una continuaci6n del diagrama de flujo desde el nodo 630 de la Fig. 6 cuando el control de formato de la STE de cliente es igual a cero.
En 710, una direcci6n de origen a una tabla de pagina de cliente es obtenida desde la entrada de la tabla de segmentos de cliente. En 712, una porci6n indice de pagina (PX) de la direcci6n virtual de cliente es multiplicada por la longitud de la entrada de la tabla y es sumada al origen de la tabla de paginas de cliente, para generar la direcci6n absoluta de cliente de una entrada de la tabla de paginas de cliente. En 714, esta direcci6n absoluta de cliente es tratada como una direcci6n virtual de servidor, y se invocan la OAT de servidor y, cuando se aplicable, una prefijaci6n, para obtener la direcci6n absoluta de servidor correspondiente. Un parametro adicional al OAT de servidor, a ser usado en la generaci6n de un TXQ, si es necesario, indica que la fuente de la direcci6n a traducir es una direcci6n de cliente diferente a una direcci6n real de marco de pagina o direcci6n absoluta de marco de segmento. Si, en 716, el procedimiento OAT de servidor ha fallado, entonces en 718, el procedimiento de traducci6n de cliente es terminado; el procedimiento OAT de servidor habra generado una excepci6n. Si, en 716, el procedimiento OAT de servidor tiene exito, entonces en 720, la entrada de la tabla de paginas de cliente es extraida usando la direcci6n absoluta de servidor resultante. Un bit (I) no valido es obtenido desde la entrada de la tabla de paginas decliente. Si, en 722, el bit (I) no valido es igual a uno, entonces la traducci6n de la direcci6n virtual no puede continuar usando esta entrada de la tabla de paginas, ya que la entrada ha sido marcada como no valida; en 724, se presenta una excepci6n de traducci6n de pagina de cliente, con un valor de TXQ que indica que la excepci6n ha surgido de la traducci6n en el nivel de configuraci6n actual. La traducci6n adicional de la direcci6n virtual usando esta entrada de la tabla de paginas se detiene, en 726. Si, en 722, el bit (I) no valido es igual a cero, entonces, en 728, la direcci6n real de marco de pagina de cliente (PFRA) desde la entrada de la tabla de paginas de cliente es combinada con una parte de indice de byte (BX) de la direcci6n virtual de cliente, para generar la direcci6n real de cliente correspondiente a la direcci6n virtual de cliente de entrada. En 730, la direcci6n real de cliente es sometida ademas a una operaci6n de prefijaci6n de cliente para formar una direcci6n absoluta de cliente. En 732, esta direcci6n absoluta de cliente es tratada como una direcci6n virtual de servidor, y se invoca la OAT de servidor y, cuando sea aplicable, la prefijaci6n, para obtener la direcci6n absoluta de servidor correspondiente. Un parametro adicional para la OAT de servidor, para ser usado en la generaci6n de un TXQ, si es necesario, indica que la fuente de la direcci6n a traducir es una direcci6n real de marco de pagina de cliente. Si, en 734, el procedimiento OAT de servidor ha fallado, entonces en 718, el procedimiento de traducci6n de cliente es terminado; el procedimiento OAT de servidor habra generado una excepci6n. Si, en 734, el procedimiento OAT de servidor ha tenido exito, entonces en 736, la direcci6n absoluta de servidor resultante es usada para acceder a un bloque de datos direccionado por la direcci6n virtual de cliente traducida.
Traducci6n dinamica de direcciones de cliente (Control de formato de la STE es igual a uno)
Ahora, se hace referencia a la Fig. 8 que ilustra una continuaci6n del diagrama de flujo del nodo 632 de la FIG. 6 cuando el control de formato de la STE es igual a uno.
En 810, se obtiene una direcci6n absoluta de marco de segmento de cliente (SFAA) desde una porci6n de la entrada tabla de segmentos de cliente. En 812, la direcci6n absoluta de marco de segmento de cliente (SFAA) es combinada con las porciones PX y BX de la direcci6n virtual de cliente para generar la direcci6n absoluta de cliente de un bloque de datos deseado en el almacenamiento principal o en la memoria. En 814, esta direcci6n absoluta de cliente es tratada como una direcci6n virtual de servidor, y se invocan la OAT de servidor y, cuando sea aplicable, la prefijaci6n, para obtener la direcci6n absoluta de servidor correspondiente. Un parametro adicional de OAT de servidor, a ser usado en la generaci6n de un TXQ, si es necesario, indica que la fuente de la direcci6n a traducir es una direcci6n absoluta de marco de segmento de cliente. Si, en 816, el procedimiento OAT de servidor ha fallado, entonces en 818, el procedimiento de traducci6n de servidor es terminado; el procedimiento OAT de servidor habra generado una excepci6n. Si, en 816, el procedimiento OAT de servidor ha tenido exito, entonces en 720, la direcci6n absoluta de servidor resultante es usada para acceder al bloque de datos deseado direccionado por la direcci6n virtual de cliente traducida.
OAT de servidor
Ahora, se hace referencia a la Fig. 9, que ilustra un diagrama de flujo de una realizaci6n de la traducci6n dinamica de direcciones de servidor a nivel de servidor, que puede ser invocada desde el procedimiento EOAT de cliente, para obtener un campo de control de formato desde una entrada de la tabla de segmentos de servidor.
En 902, se obtiene una direcci6n virtual de servidor a traducir. En 904, se obtienen la direcci6n de origen, el nivel de tabla y la longitud de tabla de la tabla de traducci6n de servidor mas alta usada en la traducci6n de la direcci6n virtual de servidor. La direcci6n de origen de la primera tabla de traducci6n de servidor usada en la traducci6n es tomada desde el campo de origen de tabla en el ASCE; el nivel de la tabla y la longitud de la tabla dependen de los bits OT y TL del ASCE, respectivamente. El desplazamiento de la tabla para la tabla de traducci6n de nivel mas alto usada es tratado siempre como cero. En 906, una porci6n indice de la direcci6n virtual de servidor a ser usada para hacer referencia a la entrada de la tabla apropiada en la tabla de traducci6n es comprobada, en primer lugar, con el desplazamiento de la tabla y la longitud de la tabla, que determinan los valores de indice minimo y maximo representados en la tabla. Si, en 906, el indice esta fuera de este rango, entonces una traducci6n adicional de la direcci6n virtual no puede continuar; una excepci6n de traducci6n de servidor debe ser presentada, apropiada al nivel de la tabla que esta siendo indexada (por ejemplo, una excepci6n de traducci6n de primera regi6n, de segunda regi6n, de tercera regi6n o de segmentos). En una realizaci6n, en 908, se realiza una prueba de si un programa de cliente se esta ejecutando actualmente. Si no, es decir, si se esta ejecutando el servidor, entonces en 910, una excepci6n de traducci6n de servidor es presentada con el TXQ establecido, por ejemplo, a cero, para indicar una excepci6n en el nivel de configuraci6n actual. Si, por el contrario, se esta ejecutando un programa de cliente, entonces en 912, una excepci6n de traducci6n de servidor es presentada con el TXQ establecido al valor fuente de la direcci6n pasada desde la operaci6n de traducci6n de cliente. En cualquier caso, el procedimiento de traducci6n es detenido entonces, en 914.
Si, en 906, el indice esta dentro del rango valido, entonces, en 916, el indice multiplicado por la longitud de la entrada de la tabla es sumado al origen de la tabla de servidor para generar la direcci6n absoluta de servidor de una entrada de la tabla de servidor. En 918, la entrada de la tabla de traducci6n de servidor es extraida usando esta direcci6n absoluta de servidor. En 920, se examina el bit (I) no valido en la entrada de la tabla de servidor. Si esta establecido, entonces la traducci6n adicional de la direcci6n virtual no puede seguir usando la entrada de la tabla, ya que ha sido marcada como no valida; el control es transferido a 908 para presentar una excepci6n de traducci6n de servidor con el valor apropiado de TXQ, como anteriormente, y la traducci6n adicional de esta direcci6n virtual usando esta entrada de la tabla de segmentos se detiene. Oe lo contrario, en 922, si la entrada extraida desde la tabla de traducci6n no es una entrada de la tabla de segmentos, entonces la tabla de segmentos en la jerarquia de tablas de traducci6n aun no ha sido referenciada. En este caso, en 924, el origen, el desplazamiento y la longitud de una tabla siguiente de nivel inferior en la jerarquia de tablas de traducci6n de servidor son obtenidos desde la entrada de la tabla. El control vuelve a la etapa 906, en la que el siguiente campo de indice dentro de la direcci6n virtual de servidor es comparado con el nuevo desplazamiento y longitud, y si esta dentro del rango, este indice es usado para hacer referencia a la entrada de la tabla de servidor correspondiente en la siguiente tabla de nivel inferior usada en la traducci6n.
Por ejemplo, si la direcci6n de origen de tabla de la primera tabla de traducci6n de servidor a ser usada en la traducci6n es una primera tabla de regiones, entonces la porci6n RFX de la direcci6n virtual de servidor es usada para hacer referencia a una entrada de la primera tabla de regiones con la primera tabla de regiones. Si la direcci6n de origen de la tabla es a una segunda tabla de regiones, entonces la porci6n RSX de la direcci6n virtual es usada para hacer referencia a una entrada de la segunda tabla de regiones en la segunda tabla deregiones. Si la direcci6n de origen de la tabla es a una tercera tabla de regiones, entonces la porci6n RTX de la direcci6n virtual es usada para hacer referencia a una tercera entrada de tabla de regiones en la tercera tabla de regiones. Si la direcci6n de origen de la tabla es a una tabla de segmentos, entonces la porci6n SX de la direcci6n virtual es usada para hacer referencia a una entrada de la tabla de segmentos dentro de la tabla de segmentos. Las tablas sucesivas son referenciadas hasta que la entrada de la tabla de segmentos ha sido extraida.
Una vez que extraida la entrada de la tabla de segmentos de servidor, en 926, el bit de control de formato de la entrada de la tabla de segmentos (STE) es examinado para determinar si el control de formato esta establecido para esta direcci6n virtual particular. Si el control de formato de la STE es igual a cero, entonces la traducci6n dinamica de direcciones ocurre con respecto al nodo 928. Si el control de formato de la STE es igual a uno, entonces la traducci6n dinamica de direcciones ocurre con respecto al nodo 930.
Traducci6n dinamica de direcciones de servidor (Control de formato de la STE es igual a cero)
Ahora, se hace referencia a la Fig. 10, que ilustra una continuaci6n del diagrama de flujo del nodo 928 de la FIG. 9, cuando el control de formato de la STE de servidor es igual a cero.
En 1002, se obtiene una direcci6n de origen a una tabla de paginas de servidor desde la entrada de la tabla de segmentos de servidor. En 1004, una porci6n indice de paginas (PX) de la direcci6n virtual de servidor es multiplicada por la longitud de la entrada de la tabla y es sumada al origen de la tabla de paginas, para generar la direcci6n absoluta de servidor de una entrada de la tabla de paginas de servidor. En 1006, la entrada de la tabla de paginas de servidor es extraida usando esta direcci6n absoluta de servidor. Un bit (I) no valido es obtenido desde la entrada de la tabla de paginas de servidor. Si, en 1008, el bit (I) no valido es igual a uno, entonces la traducci6n de la direcci6n virtual no puede seguir usando esta
entrada de la tabla de paginas, ya que la entrada ha sido marcada como no valida; el control es transferido a 940 en la Fig. 9, para presentar una excepci6n de traducci6n de servidor con el valor TXQ apropiado, como anteriormente, y la traducci6n adicional de esta direcci6n virtual usando esta entrada de la tabla de paginas se detiene. Si, en 1008, el bit (I) no valido es igual a cero, entonces, en 1010, la direcci6n real de marco de paginas (PFRA) desde la entrada de la tabla de paginas es combinada con la porci6n indice de byte (BX) de la direcci6n virtual de servidor para generar la direcci6n real de servidor correspondiente a la direcci6n virtual de servidor de entrada. En 1012, esta direcci6n real de servidor es sometida adicionalmente a una operaci6n de prefijaci6n de servidor para formar una direcci6n absoluta de servidor. En 1014, esta direcci6n absoluta de servidor es devuelta como el resultado de la traducci6n de direcciones de servidor, para ser usada, por ejemplo, en el procedimiento OAT de cliente que la invoc6, o si no, entonces para acceder a los datos objetivo durante la ejecuci6n del servidor.
Traducci6n dinamica de direcciones de servidor (Control de formato de la STE es igual a uno)
Ahora, se hace referencia a la Fig. 11, que ilustra una continuaci6n del diagrama de flujo desde el nodo 930 de la FIG. 9 cuando el control de formato de la STE de servidor es igual a uno.
En 1102, una direcci6n absoluta de marco de segmento de servidor (SFAA) es obtenida de una porci6n de la entrada de la tabla de segmentos de servidor. En 1104, la direcci6n absoluta de marco de segmento de servidor (SFAA) es combinada con las porciones PX y BX de la direcci6n virtual de servidor para generar la direcci6n absoluta de servidor de un bloque de datos deseado en el almacenamiento principal o en la memoria. En 1106, esta direcci6n absoluta de servidor es devuelta como el resultado de la traducci6n de direcciones de servidor, para ser usada, por ejemplo, en el procedimiento OAT de cliente que la invoc6, o si no, entonces para acceder a los datos de destino durante la ejecuci6n del servidor.
Oe esta manera, el campo calificador de excepci6n de traducci6n (TXQ) es capaz de indicar que la interrupci6n fue causada por una direcci6n contenida en una entrada de la tabla de hojas de cliente y si es asi, si la entrada de hoja era una entrada de la tabla de segmentos o una entrada de tabla de paginas; es decir, si la excepci6n estaba asociada con una direcci6n virtual de servidor derivada desde una direcci6n real de marco de pagina de cliente o estaba asociada con una direcci6n virtual de servidor derivada desde una direcci6n absoluta de marco de segmento de cliente. Por lo tanto, el campo TXQ es capaz de indicar el tamafo apropiado del marco de servidor con el que respaldar un marco de cliente. Ademas, es capaz de indicar que se necesita un tamafo de marco mas grande, por ejemplo, de 2 gigabytes o mayor.
Implementaci6n comercial
Aunque en la presente memoria se ha mencionado la z/Architecture® de IBM®, uno o mas aspectos de la presente invenci6n pueden aplicarse igualmente a otras arquitecturas y/o entornos informaticos que emplean entidades paginables
o construcciones similares.
Las implementaciones comerciales de la funci6n EOAT, el TXQ y otros formatos, instrucciones y atributos divulgados en la presente memoria, pueden ser implementados en hardware o por programadores, tal como programadores de sistemas operativos, escritos, por ejemplo en lenguaje ensamblador. Oichas instrucciones de programaci6n pueden ser almacenadas en un medio de almacenamiento destinado a ser ejecutadas de manera nativa en un entorno informatico, tal como el IBM® System z servidor, o, como alternativa, en maquinas que ejecutan otras arquitecturas. Las instrucciones pueden ser emuladas en servidores existentes o futuros y en otras maquinas u ordenadores centrales. Las instrucciones pueden ser ejecutadas en maquinas en las que, en general, la ejecuci6n se realiza en un modo de emulaci6n.
En el modo de emulaci6n, la instrucci6n especifica que esta siendo emulada es decodifica, y una subrutina es ejecutada para implementar la instrucci6n individual, tal como en una subrutina o controlador, o se usa alguna otra tecnica para proporcionar un controlador para el hardware especifico, tal como esta al alcance de la experiencia de las personas con conocimientos en la materia despues de la comprensi6n de la descripci6n de la presente divulgaci6n. Se describen diversas tecnicas de emulaci6n de software y hardware en numerosas patentes US, incluyendo: 5.551.013, 5.574.873, 5.790.825, 6.009.261, 6.308.255 y 6.463.582, Muchas otras ensefanzas ilustran adicionalmente una diversidad de maneras para conseguir la emulaci6n de un conjunto de instrucciones disefado para una maquina objetivo.
Otras variaciones y Arquitecturas
Las diversas realizaciones descritas en la presente memoria son s6lo ejemplos. Puede haber muchas variaciones de estas realizaciones.
Una o mas de las capacidades de la presente invenci6n pueden ser implementadas en software, firmware, hardware o alguna combinaci6n de los mismos. Los aspectos de la invenci6n son beneficiosos para muchos tipos de entornos, incluyendo otros entornos que tienen una pluralidad de zonas y entornos no particionados. Ademas, es posible que no
haya complejos de procesadores centrales, sino multiples procesadores acoplados entre si. Varios aspectos de la presente memoria son aplicables a entornos de procesador unico.
Si el entorno esta particionado l6gicamente, entonces pueden incluirse mas o menos particiones l6gicas en el entorno. Ademas, puede haber multiples complejos de procesamiento central acoplados entre si. Ademas, son posibles otras variaciones.
Aunque el termino "pagina", es usado para hacer referencia a un tamafo fijo o a un area de almacenamiento de tamafo predefinido, el tamafo de una pagina puede variar. Oe manera similar, el tamafo de un bloque puede variar. Puede haber diferentes tamafos de bloques y/o paginas. Una pagina puede ser equivalente a un bloque. Otras estructuras pueden ser usadas de manera alternativa o si no pueden ser implementadas mediante software y/o hardware. Ademas, en los ejemplos descritos en la presente memoria, puede haber muchas variaciones, incluyendo, pero sin limitarse a direcciones
o palabras de diferentes tamafos; un numero diferente de bits; bits en un orden diferente; mas o menos o diferentes bits; mas o menos o diferentes campos; campos en un orden diferente; diferentes tamafos de campo; etc. Una vez mas, estos s6lo se proporcionan como un ejemplo. Muchas variaciones son posibles.
Una posible variaci6n en el procedimiento de traducci6n, descrito aqui, es tratar las direcciones de entrada de la tabla OAT como reales en lugar de direcciones absolutas. Otra posible variaci6n es realizar una transformaci6n entre las direcciones absolutas de cliente y direcciones virtuales de servidor, tal como sumando un origen de almacenamiento principal de cliente o comparando con un limite del almacenamiento principal de cliente, a fin de restringir el almacenamiento absoluto de cliente a una porci6n deseada del espacio de direcciones de servidor contenedor. Todavia otra variaci6n permitiria que las direcciones absolutas de cliente sean referenciadas en multiples espacios de direcciones de servidor, seleccionados, por ejemplo, por los contenidos del registro de acceso.
Una unidad de procesamiento incluye entidades paginables, tales como clientes, servidores, otros procesadores, emuladores, maquinas virtuales y/u otras construcciones similares. Una memoria intermedia incluye un area de almacenamiento y/o memoria, asi como diferentes tipos de estructuras de datos que incluyen, pero no se limitan a, matrices o entidades paginables. Una tabla puede incluir tambien otras estructuras de datos. Una instrucci6n puede hacer referencia a otros registros. Ademas, una pagina, un segmento y/o una regi6n pueden ser de tamafos variables diferentes de los descritos en la presente memoria.
Uno o mas aspectos de la presente invenci6n pueden ser incluidos en un articulo de fabricaci6n (por ejemplo, uno o mas productos de programa de ordenador) que tiene, por ejemplo, un medio que puede ser leido o usado por un ordenador. El medio tiene incluido en el mismo, por ejemplo, una l6gica o unos medios de c6digo de programa legible por ordenador (por ejemplo, instrucciones, c6digo, 6rdenes, etc.) para proporcionar y facilitar las capacidades de la presente invenci6n. El articulo de fabricaci6n puede ser incluido como una parte de un sistema informatico o puede comercializarse por separado. Ademas, puede proporcionarse al menos un dispositivo de almacenamiento de programa legible por una maquina que materializa al menos un programa de instrucciones ejecutables por la maquina para realizar las capacidades de la presente invenci6n.

Claims (7)

  1. REIVINDICACIONES
    1. Procedimiento para la calificaci6n de una excepci6n de traducci6n en una funci6n de traducci6n dinamica de direcciones, capaz de traducir una direcci6n virtual a una direcci6n traducida de un bloque de datos en el almacenamiento (208) principal en un sistema (200) informatico, comprendiendo el procedimiento:
    obtener una direcci6n virtual a traducir;
    traducir dinamicamente la direcci6n virtual a una direcci6n real o absoluta de un bloque de datos deseado en el almacenamiento principal; y
    en respuesta a un evento de interrupci6n de excepci6n de traducci6n que ha ocurrido durante la traducci6n dinamica de direcciones de la direcci6n virtual,
    almacenar en un calificador de excepci6n de traducci6n, bits para indicar que dicha excepci6n de traducci6n era una de entre una excepci6n OAT de servidor, que ha ocurrido mientras se ejecutaba un programa de servidor, y una excepci6n OAT de servidor que ha ocurrido mientras se ejecutaba un programa de cliente; y caracterizado por
    almacenar en dicho calificador de excepci6n de traducci6n bits para indicar cualquiera de entre un tamafo de un marco de cliente al que pertenece dicha excepci6n OAT de servidor, y un tamafo de un marco de servidor a ser asignado para respaldar dicho marco de cliente
  2. 2.
    Procedimiento segun la reivindicaci6n 1, que comprende ademas almacenar en dicho calificador de excepci6n de traducci6n bits para indicar que dicha excepci6n de traducci6n era una excepci6n OAT de cliente que ha ocurrido mientras se ejecutaba dicho programa de cliente.
  3. 3.
    Procedimiento segun la reivindicaci6n 1 6 2, que comprende ademas almacenar en dicho calificador de excepci6n de traducci6n bits para indicar que dicha excepci6n OAT de servidor se refiere a una direcci6n derivada desde una entrada de la tabla de hojas de cliente.
  4. 4.
    Procedimiento segun la reivindicaci6n 1, 2 6 3, que comprende ademas el almacenamiento, en dicho calificador de excepci6n de traducci6n, de bits para indicar que dicha excepci6n OAT de servidor se referia a una direcci6n derivada desde una direcci6n real de marco de pagina de cliente.
  5. 5.
    Procedimiento segun la reivindicaci6n 1, 2, 3 6 4, que comprende ademas el almacenamiento bits en dicho calificador de excepci6n de traducci6n, para indicar que dicha OAT de servidor se referia a una direcci6n derivada desde una direcci6n absoluta de marco de segmento de cliente.
  6. 6.
    Sistema que comprende medios adaptados para llevar a cabo todas las etapas del procedimiento segun cualquier reivindicaci6n del procedimiento anterior.
  7. 7.
    Programa informatico que comprende instrucciones para llevar a cabo todas las etapas del procedimiento segun cualquiera reivindicaci6n del procedimiento anterior, cuando dicho programa informatico es ejecutado en un sistema de ordenador.
ES09714687T 2008-02-26 2009-02-17 Traducción dinámica de direcciones con calificador con excepción de traducción Active ES2381432T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37268 2008-02-26
US12/037,268 US8095773B2 (en) 2008-02-26 2008-02-26 Dynamic address translation with translation exception qualifier
PCT/EP2009/051864 WO2009106457A1 (en) 2008-02-26 2009-02-17 Dynamic address translation with translation exception qualifier

Publications (2)

Publication Number Publication Date
ES2381432T3 true ES2381432T3 (es) 2012-05-28
ES2381432T8 ES2381432T8 (es) 2012-06-27

Family

ID=40626591

Family Applications (1)

Application Number Title Priority Date Filing Date
ES09714687T Active ES2381432T3 (es) 2008-02-26 2009-02-17 Traducción dinámica de direcciones con calificador con excepción de traducción

Country Status (13)

Country Link
US (6) US8095773B2 (es)
EP (1) EP2248025B1 (es)
JP (1) JP5079104B2 (es)
KR (1) KR101174583B1 (es)
CN (1) CN101960432B (es)
AT (1) ATE551652T1 (es)
CY (1) CY1112693T1 (es)
DK (1) DK2248025T3 (es)
ES (1) ES2381432T3 (es)
PL (1) PL2248025T3 (es)
PT (1) PT2248025E (es)
SI (1) SI2248025T1 (es)
WO (1) WO2009106457A1 (es)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103851B2 (en) 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8019964B2 (en) * 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8037278B2 (en) * 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8041923B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US10248453B2 (en) 2012-10-23 2019-04-02 Red Hat Israel, Ltd. Client live migration for a virtual machine
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9916185B2 (en) * 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US20160062911A1 (en) * 2014-08-27 2016-03-03 Advanced Micro Devices, Inc. Routing direct memory access requests in a virtualized computing environment
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
EP3274824B1 (en) * 2015-03-27 2021-03-17 Intel Corporation Efficient address translation
CN107408052B (zh) * 2015-04-10 2021-04-16 谷歌有限责任公司 共享对象层级上的二进制转换的方法、系统和介质
DE112015006438T5 (de) * 2015-04-10 2018-01-04 Google Inc. Binäre Übersetzung in nativen Client
JP6441171B2 (ja) * 2015-06-12 2018-12-19 東芝メモリ株式会社 メモリシステム
US9658837B1 (en) * 2015-11-06 2017-05-23 Sentry Insurance a Mutual Company Integration of independent platforms
US9424155B1 (en) 2016-01-27 2016-08-23 International Business Machines Corporation Use efficiency of platform memory resources through firmware managed I/O translation table paging
US11150928B2 (en) * 2016-06-08 2021-10-19 Red Hat Israel, Ltd. Hypervisor translation bypass
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-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
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges 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
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
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
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing 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
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
US9798597B1 (en) 2016-09-26 2017-10-24 International Business Machines Corporation Verifying selective purging of entries from translation look-aside buffers
CN108702593B (zh) * 2016-11-09 2021-10-15 联发科技股份有限公司 增强多媒体呼叫控制的方法及其基站和用户设备
US10606762B2 (en) 2017-06-16 2020-03-31 International Business Machines Corporation Sharing virtual and real translations in a virtual cache
US10831664B2 (en) 2017-06-16 2020-11-10 International Business Machines Corporation Cache structure using a logical directory
US10698836B2 (en) 2017-06-16 2020-06-30 International Business Machines Corporation Translation support for a virtual cache
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
US11750533B2 (en) * 2017-10-24 2023-09-05 Intel Corporation Hardware assisted virtual switch
US10387325B2 (en) * 2017-11-28 2019-08-20 International Business Machines Corporation Dynamic address translation for a virtual machine
US11029991B2 (en) 2019-03-08 2021-06-08 International Business Machines Corporation Dispatch of a secure virtual machine

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US669043A (en) * 1900-08-20 1901-02-26 Adolph K Cross Concentrating apparatus.
US4669043A (en) 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JPH0754472B2 (ja) * 1987-06-10 1995-06-07 富士通株式会社 割込み処理制御方式
JP2693770B2 (ja) 1987-10-26 1997-12-24 株式会社トプコン レーザービーム走査式眼底観察装置
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
US5008811A (en) * 1988-02-10 1991-04-16 International Business Machines Corp. Control mechanism for zero-origin data spaces
US5058003A (en) * 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
JPH02235640A (ja) 1989-03-08 1990-09-18 Seiko Instr Inc ビデオインターフェース回路
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
JP3500751B2 (ja) 1995-01-20 2004-02-23 ソニー株式会社 画像信号処理装置及び撮像装置
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
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
DE10002120B4 (de) * 1999-02-13 2006-04-20 International Business Machines Corp. Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
US7069412B2 (en) * 1999-02-17 2006-06-27 Elbrus International Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
US6574706B2 (en) * 2001-02-28 2003-06-03 International Business Machines Corporation Managing unvirtualized data pages in real storage
US6985951B2 (en) * 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7321026B2 (en) * 2001-06-27 2008-01-22 Skytech Technology Limited Framework-patched immunoglobulins
US7299243B2 (en) * 2001-09-19 2007-11-20 Bmc Software, Inc. System and method for controlling free space distribution by key range within a database
US6801993B2 (en) * 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US7120746B2 (en) * 2002-09-09 2006-10-10 International Business Machines Corporation Technique for data transfer
US7953588B2 (en) 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US7197585B2 (en) * 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
US7703097B2 (en) * 2002-11-15 2010-04-20 International Business Machines Corporation Auto-commit processing in an IMS batch application
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7020761B2 (en) * 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
EP1517504B1 (en) * 2003-09-19 2007-01-24 Sun Microsystems, Inc. Method and apparatus for protocol processing in a computer system applying memory address translation
US7234037B2 (en) * 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US8214622B2 (en) * 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
US7941799B2 (en) * 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
JP4176128B2 (ja) 2004-07-23 2008-11-05 シャープ株式会社 蓄積装置、方法、及び映像表示装置
US8843727B2 (en) * 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
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
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US8387049B2 (en) * 2005-07-15 2013-02-26 International Business Machines Corporation Facilitating processing within computing environments supporting pageable guests
US7464249B2 (en) * 2005-07-26 2008-12-09 International Business Machines Corporation System and method for alias mapping of address space
JP2007122305A (ja) * 2005-10-27 2007-05-17 Hitachi Ltd 仮想計算機システム
JP4469783B2 (ja) * 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
US7596654B1 (en) * 2006-01-26 2009-09-29 Symantec Operating Corporation Virtual machine spanning multiple computers
US8032897B2 (en) * 2007-07-31 2011-10-04 Globalfoundries Inc. Placing virtual machine monitor (VMM) code in guest context to speed memory mapped input/output virtualization
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8037278B2 (en) * 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8677098B2 (en) * 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8412700B2 (en) 2008-01-11 2013-04-02 International Business Machines Corporation Database query optimization using index carryover to subset an index
US8103851B2 (en) * 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8151083B2 (en) * 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8117417B2 (en) * 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US20090182732A1 (en) 2008-01-11 2009-07-16 Jianwei Dian Query based operation realization interface
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8019964B2 (en) * 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8775441B2 (en) 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier

Also Published As

Publication number Publication date
US8095773B2 (en) 2012-01-10
ATE551652T1 (de) 2012-04-15
US20140181360A1 (en) 2014-06-26
JP5079104B2 (ja) 2012-11-21
CN101960432A (zh) 2011-01-26
US11074180B2 (en) 2021-07-27
US20150339226A1 (en) 2015-11-26
US10241910B2 (en) 2019-03-26
CY1112693T1 (el) 2016-02-10
DK2248025T3 (da) 2012-05-07
KR20100126286A (ko) 2010-12-01
US20180081800A9 (en) 2018-03-22
CN101960432B (zh) 2012-10-10
US20190213126A1 (en) 2019-07-11
US20170315910A1 (en) 2017-11-02
US10078585B2 (en) 2018-09-18
WO2009106457A1 (en) 2009-09-03
PT2248025E (pt) 2012-05-10
US20090216992A1 (en) 2009-08-27
KR101174583B1 (ko) 2012-08-16
PL2248025T3 (pl) 2012-11-30
EP2248025B1 (en) 2012-03-28
US9092351B2 (en) 2015-07-28
EP2248025A1 (en) 2010-11-10
SI2248025T1 (sl) 2012-05-31
US8683176B2 (en) 2014-03-25
JP2011513808A (ja) 2011-04-28
US20120084488A1 (en) 2012-04-05
ES2381432T8 (es) 2012-06-27

Similar Documents

Publication Publication Date Title
ES2381432T3 (es) Traducción dinámica de direcciones con calificador con excepción de traducción
ES2408189T3 (es) Traducción dinámica de dirección con protección de búsqueda y carga.
ES2406056T3 (es) Traducción dinámica de direcciones con control de formato
ES2381428T3 (es) Traducción de dirección dinámica con gestión de trama.
ES2893618T3 (es) Gestión del uso del almacenamiento por múltiples invitados localizables de un entorno de ordenador
US9003134B2 (en) Emulation of a dynamic address translation with change record override on a machine of another architecture
US20140181463A1 (en) Dynamic Address Translation with Translation Table Entry Format Control for Identifying Format of the Translation Table Entry
WO2009087135A1 (en) Dynamic address translation with dat protection