ES2408189T3 - Traducción dinámica de dirección con protección de búsqueda y carga. - Google Patents
Traducción dinámica de dirección con protección de búsqueda y carga. Download PDFInfo
- Publication number
- ES2408189T3 ES2408189T3 ES09700829T ES09700829T ES2408189T3 ES 2408189 T3 ES2408189 T3 ES 2408189T3 ES 09700829 T ES09700829 T ES 09700829T ES 09700829 T ES09700829 T ES 09700829T ES 2408189 T3 ES2408189 T3 ES 2408189T3
- Authority
- ES
- Spain
- Prior art keywords
- address
- segment
- storage
- translation
- virtual address
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
Un método para proteger datos en un sistema de ordenador (100) que tiene una jerarquía de tablas de traducción(410, 412, 414, 416) utilizadas para la traducción de una dirección virtual a una dirección traducida de un bloque dedatos en almacenamiento principal, comprendiendo el método: obtener la dirección virtual que ha de ser traducida; obtener un origen inicial de una tabla de traducción de dicha jerarquía de tablas de traducción, comprendiendo dichajerarquía de tablas de traducción una tabla de segmento; basándose en el origen inicial obtenido, obtener una entrada de tabla de segmento a partir de dicha tabla desegmento, configurada dicha entradas de tabla de segmento para contener un campo de control de formato; en respuesta a una función de DAT mejorada que es habilitada, determinar si dicho campo de control de formato endicha entrada de tabla de segmento está habilitado; y en respuesta a dicho campo de control de formato que está habilitado, realizar: la determinación de si dicho campo de validez de acceso en dicha entrada de tabla de segmento está habilitado,comprendiendo dicha entrada de tabla de segmento dicho campo de validez de acceso, un campo de control deacceso de segmento, un campo de protección de búsqueda de segmento, y una dirección absoluta de trama desegmento de un gran bloque de datos deseado en el almacenamiento principal.
Description
Traducción dinámica de dirección con protección de búsqueda y carga.
CAMPO DEL INVENTO
El presente invento se refiere en general a sistemas y métodos para traducir una dirección virtual en un sistema informático o de ordenadores y, más particularmente, a sistemas y métodos de traducir una dirección virtual a una dirección real o absoluta de un bloque de datos en un sistema informático que tiene una función o capacidad de traducción de dirección dinámica en que la traducción de dirección virtual ocurre mediante una jerarquía de tablas de traducción.
ANTECEDENTES DEL INVENTO
La Traducción Dinámica de Dirección proporciona la capacidad de interrumpir la ejecución de un programa en un momento arbitrario, grabarlo a él y a sus datos en un almacenamiento o memoria auxiliar, tal como un dispositivo de almacenamiento de acceso directo, y en un instante posterior devolver el programa y los datos a posiciones del almacenamiento principal para la reanudación de la ejecución. La transferencia del programa y de sus datos entre el almacenamiento principal y el auxiliar puede ser realizada gradualmente, y la devolución de la información al almacenamiento principal puede tener lugar en respuesta a un intento por la CPU de acceder a él en el instante necesario para su ejecución. Estas funciones pueden ser realizadas sin cambio o inspección del programa y de sus datos, no requieren ningún acuerdo de programación explícito en el programa vuelto a posicionar, y no perturban la ejecución del programa excepto durante el retardo de tiempo implicado.
Con un soporte apropiado mediante un sistema operativo, la función de traducción dinámica de dirección puede ser utilizada para proporcionar a un usuario un sistema en el que el almacenamiento parece ser mayor que el almacenamiento principal que está disponible en la configuración. Este almacenamiento principal aparente es a menudo denominado como un almacenamiento virtual, y las direcciones utilizadas para designar posiciones en el almacenamiento virtual son a menudo denominadas como direcciones virtuales. El almacenamiento virtual de un usuario puede sobrepasar con mucho el tamaño del almacenamiento principal que está disponible en la configuración y normalmente es mantenido en el almacenamiento auxiliar. El almacenamiento virtual es considerado como compuesto de bloques de datos, corrientemente denominados páginas (también denominados como segmentos y regiones). Solo las páginas del almacenamiento virtual a que se ha hecho referencia más recientemente son asignadas para ocupar bloques de almacenamiento principal físico. Cuando el usuario se refiere a páginas de almacenamiento virtual que no aparecen en el almacenamiento principal, son llevadas a reemplazar páginas del almacenamiento principal que probablemente son menos necesarias. En algunos casos, el almacenamiento virtual es asignado al almacenamiento principal durante un largo período de tiempo (o permanentemente), independientemente de si el almacenamiento es referenciado. El intercambio de páginas de almacenamiento puede ser realizado por el sistema operativo sin conocimiento del usuario.
Los programas utilizan direcciones (o direcciones virtuales) para acceder al almacenamiento virtual. El programa puede buscar instrucciones a partir del almacenamiento virtual o cargar datos o almacenar datos a partir del almacenamiento virtual utilizando direcciones virtuales. Las direcciones virtuales asociadas con un rango de almacenamiento virtual definen un espacio de dirección. Con u soporte apropiado mediante un sistema operativo, la función de traducción dinámica de dirección puede ser utilizada para proporcionar un número de espacios de dirección. Estos espacios de dirección pueden ser utilizados para proporcionar grados de aislamiento entre usuarios. Tal soporte puede consistir de un espacio de dirección completamente diferente para cada usuario, proporcionando así un aislamiento completo, o puede preverse un área compartida haciendo corresponder una parte de cada espacio de dirección a una única área de almacenamiento común. También, son proporcionadas instrucciones que permiten que un programa semi-privilegiado acceda a más de uno de tal espacio de dirección.
La traducción dinámica de dirección proporciona medios para la traducción de direcciones virtuales desde múltiples espacios de dirección diferentes. Estos espacios de dirección son denominados espacio de dirección principal, espacio de dirección secundario, y espacios de dirección especificados del Registro de Acceso. Un programa privilegiado puede también hacer que se acceda al espacio de dirección doméstico. La traducción dinámica de dirección puede ser especificada para direcciones de instrucción y de datos generadas por la CPU.
La Patente Norteamericana nº 4.992.936 muestra un método de traducción de dirección que puede acceder selectivamente bien a una página o bien a un segmento.
Lo que se necesita es una función o capacidad de traducción dinámica mejorada de direcciones que proporcione una funcionalidad, capacidad, y protecciones adicionales desconocidas hasta ahora en esta técnica.
RESUMEN DEL INVENTO
Lo que se ha proporcionado son, un método según se ha reivindicado en la reivindicación 1 y un sistema correspondiente, y un programa de ordenador para una función de traducción dinámica de dirección mejorada que traduce una dirección virtual a una dirección real o absoluta de un bloque de datos deseado en el almacenamiento principal de un sistema informático que tiene una arquitectura de máquina con una jerarquía de tablas de traducción utilizadas para traducción. Las direcciones reales pueden ser sometidas a un prefijado para formar una dirección absoluta.
En una realización ejemplar, se obtienen una dirección virtual que ha de ser traducida y una dirección de origen inicial de una tabla de traducción de la jerarquía de tablas de traducción. La tabla de traducción consiste de una primera tabla región, de una segunda tabla región, de una tercera tabla región, o de una tabla de segmento.
Basándose en la dirección de origen inicial obtenida, se obtiene una entrada de tabla de segmento a partir de la tabla de segmento. La entrada de la tabla de segmento está configurada para contener un campo de control de formato. Si una función de DAT mejorada y el campo de control de formato son habilitados, se determina si un campo de validez de acceso en la entrada de tabla de segmentos es habilitado. Si el campo de validez de acceso es habilitado, la entrada de la tabla de segmento contiene además un campo de control de acceso, un campo de protección y una dirección absoluta de trama de segmento de un gran bloque de datos en el almacenamiento principal. El gran bloque de datos es un bloque de al menos 1 Megabyte de tamaño. Si el campo de control de acceso está habilitado, las operaciones de almacenamiento al bloque de datos deseado son permitidas solo si el campo de control de acceso coincide con una clave de acceso al programa proporcionada, bien por una Palabra de Estado de Programa, o bien por un operando de una instrucción de programa que está siendo ejecutada. Las operaciones de búsqueda a partir del bloque de datos deseado son permitidas solamente si la clave de acceso al programa asociada con la dirección virtual es igual al campo de control de acceso.
Aún en otra realización, si el campo de validez de acceso está habilitado, una excepción de protección es indicada en respuesta a una operación de búsqueda o a una operación de almacenamiento que es intentada en el bloque de memoria deseada y el campo de control de acceso de segmento no coincide con el campo de control de acceso de programa.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Las figuras adjuntas en las que números de referencia similares se refieren a elementos idénticos o de funcionalidad similar a lo largo de todas las vistas separadas y que junto con la descripción detallada siguiente están incorporados y forman parte de la memoria, sirven además para ilustrar distintas realizaciones y para explicar distintos principios y ventajas todas de acuerdo con el presente invento.
La fig. 1 ilustra una realización de un sistema informático o de ordenador anfitrión en el que se realizará una traducción dinámica de dirección mejorada.
La fig. 2 proporciona un sistema informático anfitrión emulado ejemplar que emula el sistema informático anfitrión de una arquitectura de anfitrión.
La fig. 3 ilustra una realización de cómo es utilizada la palabra de estado de programa para determinar el ASCE efectivo para traducción dinámica de dirección de la dirección virtual.
La fig. 4 ilustra una realización en la que el ASCE efectivo determinado en la fig. 3 es utilizado para determinar la tabla de traducción más elevada en la jerarquía de tablas de traducción utilizada en la traducción de la dirección virtual.
La fig. 5A ilustra una realización del proceso de traducción dinámica de dirección de una dirección virtual utilizando una jerarquía de tablas de traducción al nivel de tabla de segmentos.
La fig. 5B ilustra una continuación de la traducción dinámica de dirección de la fig. 5A en la que el control de formato (FC) de la Entrada de la Tabla de Segmento (STE) es cero.
La fig. 5C ilustra una continuación de la traducción dinámica de dirección de la fig. 5A en la que el control de formato (FC) de la Entrada de la Tabla de Segmento (STE) es uno.
La fig. 6 ilustra un diagrama de flujo de una realización de una traducción dinámica de dirección mejorada (eDAT) para obtener un campo de control de formato en una entrada de tabla de segmento.
La fig. 7 ilustra una continuación del diagrama de flujo desde el nodo 614 de la fig. 6.
La fig. 8 ilustra una continuación del diagrama de flujo desde el nodo 616 de la fig. 6.
La fig. 9 ilustra un diagrama de flujo de una realización de determinación del nivel de protección de DAT que ha de
ser aplicada a un bloque de datos deseado direccionado por la dirección virtual traducida.
La fig. 10 ilustra una continuación del diagrama de flujo desde el nodo 822 de la fig. 8 determinando el nivel de
protección de control de acceso que ha de ser aplicado a un bloque de datos deseado direccionado por la dirección
virtual traducida.
La fig. 11 ilustra una continuación del diagrama de flujo desde el nodo 822 de la fig. 8 determinando el nivel de
protección de búsqueda que ha de ser aplicado a un bloque de datos deseado direccionado por la dirección virtual
traducida.
La fig. 12 ilustra una continuación del diagrama de flujo desde el nodo 822 de la fig. 8 en el que un campo de
modificación de registro de cambio es obtenido a partir de una entrada de tabla de segmento.
La fig. 13 ilustra la relación entre direcciones real y absoluta.
La fig. 14 ilustra el formato de registro de control 1.
La fig. 15 ilustra el formato de registro de control 7.
La fig. 16 ilustra el formato de registro de control 13.
La fig. 17 ilustra el formato de palabra de estado de programa.
La fig. 18 ilustra el formato de registro de prefijo.
La fig. 19 ilustra el formato de la dirección virtual.
La fig. 20 ilustra el formato de RX de la dirección virtual.
La fig. 21 ilustra el formato de las entradas de la tabla de región.
La fig. 22 ilustra el formato 1 de una entrada de tabla de segmento.
La fig. 23 ilustra el formato 11 de una entrada de tabla de segmento.
La fig. 24 ilustra el formato de una entrada de tabla de página.
La fig. 25 ilustra un formato de clave de almacenamiento.
La fig. 26 ilustra el formato de la instrucción SSKE; y
La fig. 27 ilustra el formato de campo M3.
DESCRIPCIÓN DETALLADA
Debería comprenderse que las exposiciones hechas en la memoria de la presente solicitud no limitan
necesariamente ninguna de las distintas invenciones reivindicadas. Además, algunas exposiciones pueden aplicarse
a algunas características inventivas pero no a otras. A menos que se haya indicado de otro modo, los elementos
singulares pueden ser en plural y viceversa sin pérdida de generalidad.
Un experto en esta técnica estaría fácilmente familiarizado con acceder al almacenamiento en un entorno informático
y en utilizar bits en un campo de registro o dirección para indicar diferentes estados y actuar sobre esos estados.
Además, un experto medio en esta técnica sería conocedor en la técnica de programa de ordenador y conocedor
acerca de los trabajos e interrelaciones entre componentes de sistemas informáticos.
VISIÓN GENERAL
Lo que se ha proporcionado es una realización ejemplar de una función de Traducción Dinámica de Dirección (DAT).
Cuando la función de DAT mejorada está instalada y habilitada, la traducción DAT puede producir o bien una
dirección real de trama de página o bien una dirección absoluta de trama de segmento, determinada por el control de
formato de Entrada de Tabla de Segmento (STE) en la entrada de tabla de segmento. Como se ha utilizado aquí, el
término “se aplica una DAT mejorada” significa que todo lo siguiente es cierto: 1) La función de EDAT está instalada;
2) La función de EDAT es habilitada mediante el bit 40 de registro de control 0 (CR0), y, 3) La dirección es traducida
por medio de entradas de tabla de DAT.
Cuando se aplica la DAT mejorada, la siguiente función adicional está disponible en el proceso de DAT.
Un bit de protección de DAT es añadido a las entradas de tabla de región, proporcionando una función similar a los bits de protección de DAT en las entradas de tabla de segmento y de página.
Un control de formato de STE es añadido a la entrada de tabla de segmento. Cuando el control de formato de STE es cero, la DAT prosigue como está actualmente definida excepto en que una modificación de registro de cambio en la entrada de la tabla de página indica si el establecimiento del bit de cambio puede ser puenteado para la página.
Cuando el control de formato de STE es uno, la entrada de la tabla de segmento también contiene lo siguiente:
Una dirección absoluta de trama de segmento (en vez de un origen de tabla de página) que especifica la posición de almacenamiento absoluta del bloque de 1 Megabyte.
Bits de control de acceso y un bit de protección de búsqueda que opcionalmente pueden ser utilizados en lugar de los bits correspondientes en las claves de almacenamiento individual de segmento.
Un bit que determina la validez de los bits de control de acceso y un bit de protección de búsqueda en la entrada de la tabla de segmento.
Una modificación de registro de cambio que indica si el establecimiento del bit de cambio puede ser puenteado en las claves de almacenamiento individual de segmento.
Con referencia a la fig. 1, están representados componentes representativos de un sistema 100 informático anfitrión. Otras disposiciones de componentes pueden ser también empleadas en un sistema informático que es bien conocido en la técnica.
El entorno informático anfitrión está basado preferiblemente en la Arquitectura z® ofrecida por International Business Machines Corporation (IBM®), Armonk, Nueva York. La Arquitectura z® está descrita de modo más completo en z/Architecture® Principles of Operation, IBM® Pub. Nº SA22-7832-05, 6ª Edición, (Abril 2007). Los entornos informáticos basados en la Arquitectura z® incluyen, por ejemplo, eServer y zSeries®, ambos por IBM®.
El ordenador anfitrión representativo 100 comprende una o más CPU 101 en comunicación con el almacenamiento principal (memoria 102 de ordenador) así como interfaces de I/O a dispositivos de almacenamiento 111 y redes 110 para comunicar con otros ordenadores o redes de área de almacenamiento (SAN) y similares. La CPU puede tener una función (función o unidad) 103 de Traducción Dinámica de Dirección (DAT) para transformar direcciones de programa (direcciones virtuales) en dirección real de memoria. Una función de DAT incluye típicamente una memoria tampón 107 de traducción rápida para almacenar en memoria caché traducciones de modo que los accesos posteriores al bloque de memoria 102 de ordenador no requieran el retraso de la traducción de dirección. Típicamente una memoria caché 109 es empleada entre la memoria 102 de ordenador y el Procesador 101. La memoria caché 109 puede ser jerárquica con una memoria caché grande disponible para más de una CPU y memorias caché menores, más rápidas (nivel inferior) entre la memoria caché grande y cada CPU. En algunas puestas en práctica las memorias caché de nivel inferior están divididas para proporcionar memorias caché de nivel bajo separadas para búsqueda de instrucciones y accesos de datos. En una realización, una instrucción es buscada a partir de la memoria 102 por una unidad 104 de búsqueda de instrucciones mediante una memoria caché 109. La instrucción es descodificada en una unidad (106) de descodificación de instrucciones y despachada (con otras instrucciones en algunas realizaciones) a unidades 108 de ejecución de instrucciones. Típicamente se emplean varias unidades 108 de ejecución, por ejemplo una unidad de ejecución aritmética, una unidad de ejecución de coma flotante y una unidad de ejecución de instrucción de ramificación. La instrucción es ejecutada por la unidad de ejecución, accediendo a operandos a partir de registros o memoria especificados de instrucción cuando sea necesario. Si un operando ha de ser accedido (cargado o almacenado) a partir de la memoria 102, una unidad 105 de almacenamiento de carga maneja típicamente el acceso bajo el control de la instrucción que está siendo ejecutada.
En una realización, el invento puede ser puesto en práctica mediante software (a veces denominado como Código Interno Licenciado (LIC), firmware, microcódigo, milicódigo, picocódigo y similar, cualquier de los cuales sería consistente con el presente invento). El código de programa de software que constituye una realización del presente invento es accedido típicamente por el procesador también conocido como una CPU (Unidad de Tratamiento Central) 101 del sistema 100 de ordenador a partir del medio 111 de almacenamiento de largo plazo, tal como una unidad de CD-ROM, unidad de cinta o disco duro. El código de programa de software puede ser llevado a la práctica sobre cualquiera de una variedad de medios conocidos para utilizar con un sistema de tratamiento de datos, tal como un disquete, un disco duro, o un CD-ROM. El código puede ser distribuido en tales medios, o puede ser distribuido a los usuarios desde la memoria 102 o almacenamiento del ordenador de un sistema informático sobre una red 110 a otros sistemas informáticos para ser utilizado por usuarios de tales otros sistemas.
Alternativamente, el código de programa puede estar representado en la memoria 102, y accedido por el procesador 101 utilizando el bus del procesador. Tal código de programa incluye un sistema operativo que controla la función e interacción de los distintos componentes de ordenador y uno o más programas de aplicación. El código de programa es normalmente paginado desde la memoria 111 de almacenamiento denso a la memoria 102 de alta velocidad donde está disponible para su tratamiento por el procesador 101. Las técnicas y métodos para representar el código de programa de software en memoria, en medios físicos, y/o distribuir el código de software a través de redes son bien conocidos y no serán descritos adicionalmente aquí. El código de programa, cuando es creado y almacenado en un medio tangible (estando incluidos pero no limitados a módulos de memoria electrónica (RAM), memoria flash, discos compactos (CD), DVD, cinta magnética y similares es a menudo denominado como un “producto de programa de ordenador”. El medio de producto de programa de ordenador es típicamente legible mediante un circuito de tratamiento preferiblemente en un sistema informático para ejecución por el circuito de tratamiento.
En la fig. 2 se ha proporcionado un sistema 201 de ordenador anfitrión emulado ejemplar que emula un sistema 100 de ordenador anfitrión de una arquitectura anfitrión. En el sistema 201 de ordenador anfitrión emulado, el procesador anfitrión (CPU) 208 es un procesador anfitrión emulado (o procesador anfitrión virtual) y comprende un procesador de emulación 207 que tiene una arquitectura de conjunto de instrucciones nativas diferente del utilizado por el procesador 101 del ordenador anfitrión 100. El sistema 201 de ordenador anfitrión emulado tiene una memoria 202 accesible al procesador 207 de emulación. En la realización ejemplar, la memoria 207 está dividida en una parte de memoria 102 de ordenador anfitrión y una parte 203 de rutinas de emulación (las rutinas que proporcionan la emulación pueden formar parte de la memoria anfitrión). La memoria 102 de ordenador anfitrión está disponible a programas del ordenador 201 anfitrión emulado de acuerdo con la arquitectura del ordenador anfitrión. El procesador 207 de emulación ejecuta instrucciones nativas de un conjunto de instrucciones con arquitectura de una arquitectura distinta de la del procesador emulado 208, las instrucciones nativas obtenidas a partir de la memoria 203 de rutinas de emulación, y puede acceder a una instrucción de anfitrión para ejecución desde un programa en la memoria 102 de ordenador anfitrión empleando una o más instrucciones obtenidas en una rutina de Secuencia Y Acceso/Descodificación que puede descodificar la instrucción o instrucciones de anfitrión para determinar una rutina de ejecución de instrucciones nativa para emular la función de la instrucción de anfitrión accedida.
Otras funciones que están definidas para la arquitectura del sistema 100 de ordenador anfitrión pueden ser emuladas por Rutinas de Funciones con Arquitectura, incluyendo funciones tales como Registros de Propósito General, Registros de Control, Traducción Dinámica de Dirección, y soporte de Subsistema de I/O y memoria caché de procesador por ejemplo. Las rutinas de emulación pueden también beneficiarse de la función disponible en el procesador 207 de emulación (tal como Registros Generales y traducción dinámica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulación. Un hardware especial y Máquinas de Descargar pueden también ser proporcionados para ayudar al procesador 207 en la emulación de la función del ordenador anfitrión 100.
Procesador y Registros de Ordenador
En una realización, una funcionalidad de instrucción de programa de CPU comunica con una pluralidad de registros sobre un bus de comunicación. El bus de comunicación puede ser interno o externo a la CPU. Algunos registros pueden ser solo de lectura. Otro hardware y/o software puede también leer/escribir uno o más de los registros accesibles por la CPU. Un código de operación de instrucción ("codop" o códido de operación) determina qué tipo de registro ha de ser utilizado en cualquier operación de instrucción de máquina particular.
Registros Generales
Las instrucciones pueden designar información en uno o más de 16 registros generales. Los registros generales pueden ser utilizados como registros de dirección base y registros de índice en aritmética de dirección y como acumuladores en operaciones aritméticas y lógicas generales. Cada registro contiene 64 posiciones de bit. Los registros generales son identificados por los números 0-15 y están designados por un campo R de cuatro bits en una instrucción. Algunas instrucciones proporcionan medios para direccionar múltiples registros generales teniendo varios campos R. Para algunas instrucciones, el uso de un registro general específico está implicado en vez de designado explícitamente por un campo R de la instrucción.
Para algunas operaciones, o bien los bits 32-63 o bien los bits 0-63 de dos registros generales adyacentes son acoplados, proporcionando un formato de 64 bits o de 128 bits, respectivamente. En estas operaciones, el programa debe designar un registro de número par, que contiene los 32 ó 64 bits situados más a la izquierda (orden más elevado). El siguiente registro de número más elevado contiene los 32 ó 64 bits situados más a la derecha (orden bajo). Además de su uso como acumuladores en operaciones aritméticas y lógicas generales, 15 de los 16 registros generales son también utilizados como registros de dirección base e índice en la generación de dirección. En estos casos, los registros son designados por un campo B o un campo X de cuatro bits en una instrucción. Un valor de cero en el campo B o X especifica que no ha de ser aplicado base o índice, y así, el registro general 0 no puede ser designado como que contiene una dirección base o índice.
Los registros de control proporcionan medios para mantener y manipular información de control fuera de la palabra de estado de programa. La CPU tiene 16 registros de control, cada uno con 64 posiciones de bit. Las posiciones de bit en los registros son asignadas a funciones particulares en el sistema, tales como grabación de eventos de programa, y son utilizados bien para especificar que una operación puede tener lugar o bien para proporcionar información especial requerida por la función. Los registros de control son identificados por los números 0-15 y están designados por campos R de cuatro bits en las instrucciones CONTROL DE CARGA y CONTROL DE ALMACENAMIENTO. Los múltiples registros de control pueden ser direccionados por estas instrucciones.
Registro de Control 1
El Registro de control 1 contiene el Elemento de Control de Espacio de Dirección Principal (PASCE). En una realización, el registro de control 1 tiene uno de dos formatos como se ha ilustrado en la fig. 14, dependiendo del bit de control de espacio real (R) en el registro:
Campos seleccionados en el Elemento de Control de Espacio de Dirección Principal (PASCE) son asignados como sigue:
Origen de Tabla de Región Principal o de Tabla de Segmento: Los bits 0-51 de la designación de tabla de región principal o de tabla de segmento en el registro de control 1, con 12 ceros añadidos a la derecha, forman una dirección de 64 bits que designa el comienzo de la tabla de región principal o tabla de segmento. Es impredecible si la dirección es real o absoluta. Esta tabla es llamada la tabla de región o tabla de segmento principal ya que es utilizada para traducir direcciones virtuales en el espacio de dirección principal.
Control de Espacio Real Principal (R): Si el bit 58 del registro de control 1 es cero, el registro contiene una designación de tabla de región o de tabla de segmento. Si el bit 58 es uno, el registro contiene una designación de espacio real. Cuando el bit 58 es uno, un valor de uno del bit de segmento común en una representación de memoria tampón de traducción rápida o avanzada de una entrada de tabla de segmento impide la entrada y la copia de la tabla de página de memoria tampón de traducción rápida designa ser utilizada cuando se traducen referencias al espacio de dirección principal, incluso con una coincidencia entre el origen señalizado en el registro de control 1 y el origen de tabla en la entrada de memoria tampón de traducción rápida.
Control de Tipo de Designación Principal (DT): Cuando R es cero, el tipo de designación de tabla en el registro de control 1 es especificado por los bits 60 y 61 en el registro, como sigue:
Bits 60 y 61 Tipo de Designación
- 11
- Tabla de primera región
- 10
- Tabla de segunda región
- 01
- Tabla de tercera región
- 00
- Tabla de segmento
Cuando R es cero, los bits 60 y 61 deben ser un 11 binario cuando se ha hecho un intento de utilizar el PASCE para traducir una dirección virtual en la que el bit uno situado más a la izquierda está en las posiciones 0-10 de bit de la dirección. De manera similar, los bits 60 y 61 deben ser un 11 o un 10 binario cuando el bit uno situado más a la izquierda está en las posiciones 11-21 de bit de la dirección, y deben ser un 11, un 10, o un 01 binario cuando el bit uno situado más a la izquierda está en las posiciones 22-32 de bit de la dirección. De otro modo, es reconocida una excepción de tipo ASCE.
Longitud de Tabla de Región Principal o de Tabla de Segmento (TL): Los bits 62 y 63 de la designación de tabla de región principal o designación de tabla de segmento en el registro de control 1 especifican la longitud de la tabla de región principal o de la tabla de segmento en unidades de 4.096 bytes, haciendo así la longitud de la tabla de región o de la tabla de segmento variable en múltiplos de 512 entradas. La longitud de la tabla de región principal o de la tabla de segmento, en unidades de 4.096 bytes, es uno más que el valor de TL. El contenido del campo de longitud es utilizado para establecer si la porción de la dirección virtual (RFX, RSX, RTX, o SX) que ha de ser traducida por medio de la tabla designa una entrada que cae dentro de la tabla.
Origen Señalizado de Espacio Real Principal: Los bits 0-51 de la designación de espacio real principal en el registro de control 1, con 12 ceros añadidos a la derecha, forman una dirección de 64 bits que puede ser utilizada para formar y utilizar entradas de memorias tampón de traducción rápida que proporcionan una traducción virtual igual a la real para referencias al espacio de dirección principal. Aunque esta dirección es utilizada solo como una señal y no es utilizada para realizar una referencia de almacenamiento, aún debe ser una dirección válida; de otro modo, una entrada de memoria tampón de traducción rápida incorrecta puede ser utilizada cuando el contenido del registro de control 1 es utilizado.
Los bits siguientes del registro de control 1 no están asignados y son ignorados: bits 52, 53, y 59 si el registro contiene una designación de tabla de región o una designación de tabla de segmento, y los bits 52, 53 y 59-63 si el registro contiene una designación de espacio real.
Registro de Control 7
El registro de control 7 contiene el Elemento de Control de Espacio de Dirección Secundaria (SASCE). En una realización el registro de control 7 tiene uno de dos formatos como se ha ilustrado en la fig. 15, 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 Dirección Doméstica (HASCE). En una realización el registro de control 13 tiene uno de dos formatos como se ha ilustrado en la fig. 16, dependiendo del bit
(R) de control de espacio real en el registro.
Registros de Acceso
La CPU tiene 16 registros de acceso numerados 0-15. Un registro de acceso consiste de 32 posiciones de bit que contienen una especificación indirecta de un ASCE. Un ASCE es un parámetro utilizado por el mecanismo de traducción dinámica de dirección (DAT) para traducir referencias a un espacio de dirección correspondiente. Cuando la CPU está en un modo denominado el modo de registro de acceso (controlado por bits en la palabra de estado de programa), un campo B de instrucción, utilizado para especificar una dirección lógica para una referencia de operando de almacenamiento, designa un registro de acceso, y el ASCE especificado por el registro de acceso es utilizado por la DAT para la referencia que se está haciendo. Para algunas instrucciones, se utiliza un campo R en lugar de un campo B. Las instrucciones son proporcionadas para cargar y almacenar el contenido de los registros de acceso y para mover el contenido de un registro de acceso a otro.
Cada uno de los registros 1-15 puede designar cualquier espacio de acceso, incluyendo el espacio de instrucción actual (el espacio de dirección principal). El registro de acceso 0 designa el espacio de instrucción principal. Cuando uno de los registros de acceso 1-15 es utilizado para designar un espacio de dirección, la CPU determina qué espacio de dirección es designado traduciendo el contenido del registro de acceso. Cuando el registro de acceso 0 es utilizado para designar un espacio de dirección, la CPU trata el registro de acceso como que designa el espacio de instrucción principal, y no examina el contenido real del registro de acceso. Por ello, los 16 registros de acceso pueden designar, en cualquier instante, el espacio de instrucción principal y un máximo de otros 15 espacios.
Palabra de Estado de Programa (PSW)
La palabra de estado de programa incluye la dirección de instrucción, el código de condición o estado, y otra información utilizada para controlar el secuenciado de instrucciones de control y para determinar el estado de la CPU. La palabra de estado de programa activo o de control es llamada la palabra de estado de programa actual. Gobierna el programa que está siendo ejecutado actualmente.
La CPU tiene una capacidad de interrupción, que permite que la CPU conmute rápidamente a otro programa en respuesta a condiciones excepcionales y a estímulos externos. Cuando tiene lugar una interrupción, la CPU coloca la palabra de estado de programa actual en una posición de almacenamiento asignada, llamada la posición antigua de palabra de estado de programa, para la clase de interrupción particular. La CPU busca una nueva palabra de estado de programa a partir de una segunda posición de almacenamiento asignada. Esta nueva palabra de estado de programa determina el siguiente programa que ha de ser ejecutado. Cuando ha terminado de tratar la interrupción, el programa que manipula la interrupción puede volver a cargar la palabra de estado de programa antigua, haciéndola del nuevo la palabra de estado de programa actual, de manera que el programa ininterrumpido pueda continuar.
Hay seis clases de interrupción: externa, de I/O, de comprobación de máquina, de programa, de reinicio, y de llamada de supervisor. Cada clase tiene un par distinto de posiciones de palabra antigua de estado de programa y de palabra nueva de estado de programa permanentemente asignadas en almacenamiento real.
Palabra de Estado de Programa Actual
La palabra de estado de programa actual en la CPU contiene información requerida para la ejecución del programa activo actualmente. La palabra de estado de programa tiene 128 bits de longitud que incluye la dirección de instrucción, el código de condiciones, y otros campos de control. En general, la palabra de estado de programa es utilizada para controlar el secuenciado de instrucciones y contener e indicar gran parte del estado de la CPU en relación al programa que está siendo ejecutado actualmente. La información de control y de estado adicional está contenida en registros de control y en posiciones de almacenamiento asignadas permanentemente. 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 interrupción de la CPU almacenando la palabra de estado de programa actual, de modo que preserve el estado de la CPU, y a continuación y cargando una nueva palabra de estado de programa. La ejecución de CARGAR PSW o CARGAR PSW AMPLIADA, o la conclusión satisfactoria de la secuencia de carga del programa inicial, introduce una nueva palabra de estado de programa. La dirección de instrucción es actualizada por ejecución secuencial de instrucciones y reemplazada por ramificaciones satisfactorias. Son proporcionadas otras instrucciones que operan sobre una parte de la palabra de estado de programa.
Una palabra nueva o modificada de estado del programa resulta activa (es decir, la información introducida en la palabra de estado de programa actual asume el control sobre la CPU) cuando la interrupción o la ejecución de una instrucción que cambia la palabra de estado de programa es completada. La interrupción para Grabación de Evento de Programa (PER) asociada con una instrucción que cambia la palabra de estado de programa ocurre bajo el control de la máscara de PER que es efectiva al comienzo de la operación. Los bits 0-7 de la palabra de estado de programa son colectivamente denominados como la máscara del sistema. En una realización, la palabra de estado de programa tiene el formato que se ha ilustrado en la fig. 17.
Los siguiente es un breve resumen de las funciones de los campos de palabra de estado de programa seleccionadas.
Modo DAT (T): El bit 5 controla si tiene lugar la traducción dinámica de dirección implícita de direcciones lógica y de instrucción utilizadas para almacenamiento de acceso. Cuando el bit 5 es cero, la DAT está desactivada y las direcciones lógica y de instrucción son tratadas como direcciones reales. Cuando el bit 5 es uno, la DAT es activada, y el mecanismo de traducción dinámico de dirección es invocado.
Clave PSW: Los bits 8-11 forman una clave de acceso para referencias de almacenamiento por la CPU. Si la referencia está sujeta a protección controlada por clave, la Clave PSW es hecha coincidir con una clave de almacenamiento cuando la información es almacenada o cuando la información es buscada a partir de una posición que está protegida contra la búsqueda. Sin embargo, para uno de los operandos de cada uno de MOVER A PRINCIPAL, MOVER A SECUNDARIO, MOVER CON CLAVE, MOVER CON CLAVE FUENTE, y MOVER CON CLAVE DE DESTINO, una clave de acceso especificada como un operando es utilizada en lugar de la Clave PSW.
Control de Espacio de Dirección (AS): Los bits 16 y 17, en conjunción con el bit 5 de Palabra de Estado de Programa, controlan el modo de traducción.
Código de Condición (CC): Los bits 18 y 19 son los dos bits del código de condición. El código de condición es establecido a 0, 1, 2, ó 3, dependiendo del resultado obtenido al ejecutar ciertas instrucciones. La mayor parte de las operaciones aritméticas y lógicas, así como algunas otras operaciones, establecen el código de condición. La instrucción CONECTAR EN CONDICIÓN puede especificar cualquier selección de los valores de código de condición como un criterio para conexión.
Dirección de Instrucción: Los bits 64-127 de la palabra del estado de programa son la dirección de instrucción. Esta dirección designa la posición del byte situado más a la izquierda de la siguiente instrucción que ha de ser ejecutada, a menos que la CPU esté en el estado de espera (el bit 14 de la palabra de estado de programa es uno).
Tipos y Formatos de Dirección
Para el propósito de direccionar almacenamiento principal, se reconocen tres tipos básicos de direcciones: absoluta, real, y virtual. Las direcciones se distinguen sobre la base de las transformaciones que son aplicadas a la dirección durante un acceso de almacenamiento. La traducción de dirección convierte una dirección virtual en una dirección real. El prefijado convierte una dirección real en una dirección absoluta. Además de los tres tipos de dirección básicos, hay definidos tipos adicionales que son tratados como uno u otro de los tres tipos básicos, dependiendo de la instrucción y del modo actual.
Una dirección absoluta es la dirección asignada a una posición de almacenamiento principal. Una dirección absoluta es utilizada para un acceso de almacenamiento sin ninguna transformación realizada sobre ella. El subsistema de canal y todas las CPU en la configuración se refieren a una posición de almacenamiento principal compartida utilizando la misma dirección absoluta. Al almacenamiento principal disponible usualmente se le asignan direcciones absolutas contiguas que comienzan en 0, y las direcciones son asignadas en bloques completos de 4 Kilobytes en límites integrales. Una excepción es reconocida cuando se hace un intento de utilizar una dirección absoluta en un bloque que no ha sido asignado a posiciones físicas. Sin embargo, en cualquier instante, una posición física no está asociada con más de una dirección absoluta. El almacenamiento consistente de posiciones de byte secuenciadas de acuerdo con sus direcciones absolutas es denominado como un almacenamiento absoluto.
Una dirección real identifica una posición en almacenamiento real. Cuando una dirección real es utilizada para un acceso a un almacenamiento principal, es convertida, por medio de prefijado, para formar una dirección absoluta. En cualquier instante hay una correspondencia de dirección real a dirección absoluta para cada CPU en la configuración. Cuando una dirección real es utilizada por una CPU para acceder al almacenamiento principal, puede ser convertida en una dirección absoluta mediante prefijado. Un almacenamiento consistente de posiciones de byte secuenciadas de acuerdo con sus direcciones reales es denominado como un almacenamiento real.
Una dirección virtual identifica una posición en almacenamiento virtual. Cuando una dirección virtual es utilizada para un acceso al almacenamiento principal, es traducida por medio de traducción dinámica de dirección, bien a una dirección real que puede ser sometida a prefijado para formar una dirección absoluta, o bien directamente a una dirección absoluta.
Una dirección virtual principal es una dirección virtual que ha de ser traducida por medio del Elemento de Control de Espacio de Dirección Principal (PASCE). Las direcciones lógica son tratadas como direcciones virtuales principales cuando están en el modo de espacio principal. Las direcciones de instrucción son tratadas como direcciones virtuales principales cuando están en el modo de espacio principal, modo de espacio secundario, o modo de registro de acceso. La primera dirección de operando de MOVER A PRINCIPAL y la segunda dirección de operando de MOVER A SECUNDARIO son tratadas como direcciones virtuales principales.
Una dirección virtual secundaria es una dirección virtual que ha de ser traducida por medio del Elemento de Control de Espacio de Dirección Secundaria (SASCE). Las direcciones lógicas son tratadas como direcciones virtuales secundarias cuando están en el modo de espacio secundario. La segunda dirección de operando de MOVER A PRINCIPAL y la primera dirección de operando de MOVER A SECUNDARIO son tratadas como direcciones virtuales secundarias.
Una dirección virtual especificada de AR es una dirección virtual que ha de ser traducida por medio de un Elemento de Control de Espacio de Dirección Especificada del Registro de Acceso. Las direcciones lógicas son tratadas como direcciones especificadas de AR cuando están en el modo de registro de acceso.
Una dirección virtual doméstica es una dirección virtual que ha de ser traducida por medio del Elemento de Control de Espacio de Dirección Doméstica (HASCE). Las direcciones lógicas y las direcciones de instrucción son tratadas como direcciones virtuales domésticas cuando están en el modo de espacio doméstico.
Las direcciones utilizadas para buscar instrucciones desde el almacenamiento son llamadas direcciones de instrucción. Las direcciones de instrucción son tratadas como elecciones federales en el modo real, como direcciones virtuales principales en el modo de espacio principal, modo de espacio secundario, o modo de registro de acceso, y como direcciones virtuales domésticas en el modo de espacio doméstico. La dirección de instrucción en la palabra de estado de programa actual y la dirección objetivo de EJECUTAR son direcciones de instrucción.
En algunas situaciones, es conveniente utilizar el término "dirección efectiva". Una dirección efectiva es la dirección que existe antes de que sea realizada cualquier transformación por traducción dinámica de dirección o prefijado. Una dirección efectiva puede ser especificada directamente en un registro puede resultar de aritmética de dirección. La aritmética de dirección es la adición o suma de la base y desplazamiento o de la base, índice, y desplazamiento.
Prefijado
El prefijado proporciona la capacidad de asignar el rango de direcciones reales 0-8191 a un bloque diferente en almacenamiento absoluto para cada CPU, permitiendo así que más de una CPU que comparten almacenamiento principal operen al mismo tiempo con un mínimo de interferencias, especialmente en el tratamiento de interrupciones. El prefijado hace que direcciones reales en el rango de 0-8191 correspondan una a una al bloque de direcciones absolutas de 8 Kilobytes (el área de prefijo) identificadas por el valor en posiciones 0-50 de bit del registro de prefijos para la CPU, y que el bloque de direcciones reales identificado por ese valor del registro de prefijo corresponda una a una a direcciones absolutas 0-8191. Las direcciones reales restantes son las mismas que las direcciones absolutas correspondientes. Esta transformación permite que cada CPU se da a todo el almacenamiento principal, incluyendo los primeros 8 Kilobytes y las posiciones designadas por los registros de prefijo de otras CPU.
El prefijo es una cantidad de 51 bits contenida en posiciones 0-50 de bit del registro de prefijo. En una realización, el registro de prefijo tiene el formato que se ha ilustrado en la fig. 18.
Cuando se aplica el prefijado, la dirección real es transformada en una dirección absoluta utilizando una de las siguientes reglas, dependiendo de los 0-50 bits de la dirección real:
Si todos los bits 0-50 de la dirección, son ceros, son reemplazados por los bits 0-50 del prefijo.
Si los bits 0-50 de la dirección, son iguales a los bits 0-50 del prefijo, son reemplazados con ceros.
Si no todos los bits 0-50 de la dirección, son ceros y no son iguales a los bits 0-50 del prefijo, permanecen sin cambios.
Sólo la dirección presentada al almacenamiento es traducida por prefijado. El contenido de la fuente de la dirección permanece sin cambios.
La distinción entre direcciones real y absoluta es hecha incluso cuando el registro de prefijo contiene todos ceros, en cuyo caso una dirección real y su dirección absoluta correspondiente son idénticas.
La fig. 13 ilustra la relación entre direcciones real y absoluta.
Un espacio de dirección es una secuencia consecutiva de números enteros (direcciones virtuales); junto con los parámetros de transformación específicos que permiten que cada número sea asociado con una posición de byte en almacenamiento. La secuencia comienza en cero y prosigue de izquierda a derecha.
Cuando una dirección virtual es utilizada por una CPU para acceder al almacenamiento principal, es convertida en primer lugar, por medio de traducción dinámica de dirección (DAT), a una dirección real o absoluta. Las direcciones reales pueden ser sometidas además a prefijado para formar una dirección absoluta. La DAT puede utilizar una primera tabla de región, una segunda tabla de región, una tercera tabla de región, una tabla de segmento, y una tabla de página como parámetros de transformación. La designación (origen y longitud) de la tabla de mayor nivel para un espacio de dirección específico de llamada Elemento de Control de Espacio de Dirección (ASCE), y es encontrada para utilizar por la DAT en un registro de control o como es especificado por un registro de acceso. Alternativamente, el ASCE para un espacio de dirección puede ser una designación de espacio real, que indica que la DAT ha de traducir la dirección virtual simplemente tratándola como una dirección real sin utilizar ninguna tabla.
La DAT utiliza, en diferentes instantes, el ASCE en registros de control diferentes o especificados por los registros de acceso. La elección es determinada por el modo de traducción especificado en la palabra de estado de programa actual. Hay disponibles cuatro modos de traducción: modo de espacio principal, modo de espacio secundario, modo de registro de acceso, y modo de espacio doméstico. Diferentes espacios de dirección son direccionables dependiendo del modo de traducción.
En cualquier instante cuando la CPU está en el modo de espacio principal o en el modo de espacio secundario, la CPU puede traducir direcciones virtuales que pertenecen a dos espacios de dirección - el espacio de dirección principal y el espacio de dirección secundario. En cualquier instante cuando la CPU está en el modo de registro de acceso, puede traducir direcciones virtuales de hasta 16 espacios de dirección - el espacio de dirección principal y hasta de 15 espacios de dirección especificada de AR. En cualquier instante cuando la CPU está en el modo de espacio doméstico, puede traducir direcciones virtuales del espacio de dirección doméstico.
El espacio de dirección principal es identificado como tal debido a que consiste de direcciones virtuales principales, que son traducidas por medio del Elemento de Control de Espacio de Dirección Principal (PASCE). De manera similar, el espacio de dirección secundario consiste de direcciones virtuales secundarias traducidas por medio del Elemento de Control de Espacio de Dirección Secundaria (SASCE). Los espacios de dirección especificada de AR consisten de direcciones virtuales especificadas de AR traducidas por medio del Elemento de Control de Espacio de Dirección especificada del Registro de Acceso (ASCE especificado del AR), y el espacio de dirección doméstico consiste de direcciones virtuales domésticas traducidas por medio del Elemento de Control de Espacio de Dirección Doméstica (HASCE). Los ASCE principales y secundarios están en los registros de control 1 y 7 respectivamente. Los ASCE especificados de AR pueden estar en los registros de control 1 y 7, o en entradas de tabla llamadas segundas entradas de tabla ASN. El HASCE está en el registro de control 13.
La traducción dinámica de dirección es el proceso de traducir una dirección virtual (durante una referencia de almacenamiento, por ejemplo) en la dirección de memoria principal correspondiente (dirección real o absoluta en la realización). La dirección virtual puede ser una dirección virtual principal, una dirección virtual secundaria, una dirección virtual especificada del Registro de Acceso, o una dirección virtual doméstica. Estas direcciones son traducidas por medio de los PASCE, SASCE, ASCE especificado de AR, o el HASCE, respectivamente. Después de la selección del ASCE apropiado, el proceso de traducción es el mismo para la totalidad de los cuatro tipos de dirección virtual.
Una dirección efectiva es la dirección (dirección virtual) que existe antes de que sea realizada cualquier transformación por traducción dinámica de dirección o prefijado. Los tres bits en la palabra de estado de programa que controlan la traducción dinámica de dirección son el bit 5, el bit de modo DAT, y los bits 16 y 17, los bits de control de espacio de dirección. Cuando el bit de modo DAT es cero, entonces la DAT está desactivada, y la CPU está en el modo real. Cuando el bit de modo DAT es uno, la DAT está activada, y la CPU está en el modo de traducción designado por los bits de control de espacio de dirección: un 00 binario designa el modo de espacio principal, un 01 binario designa el modo de registro de acceso, un 10 binario designa el modo de espacio secundario, y un 11 binario designa el modo de espacio doméstico. Los distintos modos son mostrados a continuación, junto con el manejo de direcciones en cada modo.
- Bit de PSW
- DAT Modo Manejo de direcciones
- 5
- 6 17 Direcciones de Instrucción Direcciones Lógicas
- 0
- 0
- 0
- Desactivada Modo real Real Real
- 0
- 0
- 1 Desactivada Modo real Real Real
- 0
- 1 0 Desactivada Modo real Real Real
- 0
- 1 1 Desactivada Modo real Real Real
- 1
- 0 0 Activada Modo de espacio principal Virtual principal Virtual principal
- 1
- 0 1 Activada Modo registro de acceso Virtual principal Virtual especificada de AR
- 1
- 1
- 0 Activada Modo de espacio secundario Virtual principal Virtual secundaria
- 1
- 1
- 1
- Activada Modo de espacio doméstico Virtual doméstica Virtual doméstica
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 realización, el bit 31 es el bit de Modo de Direccionamiento Ampliado (EA) y el bit 32 es el de bit de Modo de Direccionamiento Base (BA). Estos dos bits indican el tamaño de direcciones. El estado de cada uno de estos dos bits es binario (1 ó 0). Si el bit EA es 0 y el bit BA es 0 entonces está indicado un direccionamiento de 24 bits. Si está indicado un direccionamiento de 24 bits, los bits 40-63 de una palabra de 64 bits (una entidad de 64 bits es comúnmente denominada una palabra doble) están donde la dirección está situada.
Cuando la dirección de instrucción ocupa los segundos 64 bits de una entidad de 128 bits (una palabra cuádruple), las posiciones de bit en la palabra de estado de programa son las siguientes. En el modo de 24 bits, la dirección de instrucción está en los bits 104 -127 de la palabra de estado de programa. En el modo de 31 bits, la dirección de instrucción está en los bits 97 -127 de la palabra de estado de programa. En el modo de 64 bits, la dirección de instrucción está en los bits 64 -127 de la palabra de estado de programa. Si el bit EA es 0 y el bit BA es 1 entonces está indicado un direccionamiento de 31 bits. La palabra de 64 bits apropiada contiene una dirección de 31 bits situada en las posiciones 33-63 de bit. Si el bit EA es 1 y el bit BA es 1 entonces los bits 0-63, que son los 64 bits enteros, de una palabra de 64 bits contiene la dirección. De otro modo, se indica una condición de excepción. Una vez que se ha obtenido el modo de direccionamiento, el ASCE necesita ser determinado.
Elemento de Control de Espacio de Dirección (ASCE)
A continuación se ha hecho referencia a la fig. 3 que ilustra una realización de cómo la Palabra de Estado de Programa es utilizada para determinar el Elemento de Control de Espacio de Dirección (ASCE) efectivo para traducción dinámica de dirección de la dirección virtual. El ASCE puede especificar, por ejemplo, un espacio de dirección de 2 Gigabytes (Giga = 230). O, puede especificar, por ejemplo, un espacio de dirección de 4 Terabytes (Tera = 240), de 8 Petabytes (Peta = 250), o de 16 Exabytes (Exa = 260). O, puede especificar una designación de espacio real. Una designación de espacio real hace que la dirección virtual sea tratada como una dirección real en almacenamiento sin hacer referencia a una o más tablas de traducción de dirección.
La Palabra de Estado de Programa 300 contiene un bit 302 de traducción (T) y bits 304 de espacio de dirección (AS). En 306, si el bit de traducción (T) es cero entonces la dirección es una dirección real 326. Si, en 308, el Espacio de Dirección (AS) es igual a cero (00 binario) entonces el ASCE efectivo para esta dirección virtual es el Elemento de Control de Espacio de Dirección Principal (PASCE) 310. Si, en 312, el Espacio de Dirección (AS) es igual a uno (01 binario) entonces el ASCE efectivo es el Elemento de Control de Espacio de Dirección especificado del Registro de Acceso 314. Si, en 316, un Espacio de Dirección (AS) es igual a dos (10 binario) entonces el ASCE efectivo es el Elemento de Control de Espacio de Dirección Secundario (SASCE) 318. De otro modo, el Espacio de Dirección (AS) es igual a tres (11 binario) y el ASCE efectivo es el Elemento de Control de Espacio de Dirección Doméstico (HASCE) 322.
Después de la selección del ASCE efectivo, el proceso de traducción dinámica de dirección es preferiblemente el mismo para los cuatro tipos de direcciones virtuales.
Una designación de tabla de segmento o de tabla de región hace que la traducción sea realizada por medio de tablas establecidas por el sistema operativo en almacenamiento real o absoluto. Una designación de espacio real hace que la dirección virtual simplemente sea tratada como una dirección real, sin el uso de tablas de almacenamiento.
En el proceso de traducción cuando se utiliza una designación de tabla de segmento o una designación de tabla de región, se reconocen tres tipos de unidades de información - regiones, segmentos, y páginas. Una región es un bloque de direcciones virtuales secuenciales que abarca 2 Gigabytes y que comienza en un límite de 2 Gigabytes. Un segmento es un bloque de direcciones virtuales secuenciales que abarcan 1 Megabyte y que comienzan en un límite de 1 Megabyte. Una página es un bloque de direcciones virtuales secuenciales que abarcan 4 Kilobytes y que comienzan en un límite de 4 Kilobytes.
La traducción de una dirección virtual puede implicar referirse a una pluralidad de tablas de traducción de una jerarquía de tablas de traducción para obtener una dirección real o absoluta. La dirección real puede además ser sometida a una operación de prefijado para formar una dirección absoluta. La dirección virtual contiene índices a entradas en tablas de traducción en la jerarquía de tablas de traducción. La dirección virtual, por consiguiente, está dividida en cuatro campos principales. Los bits 0-32 son llamados el índice de región (RX), los bits 33-43 son llamados el índice de segmento (SX), los bits 44-51 son llamados el índice de página (PX), y los bits 52-63 son llamados el índice de byte (BX). En una realización, la dirección virtual tiene el formato que se ha ilustrado en la fig.
19.
Como se ha determinado por su ASCE, un espacio de dirección virtual puede ser un espacio de 2 Gigabytes que consiste de una región, o puede ser un espacio de hasta 16 Exabytes que consiste de regiones de hasta 8 Gigabytes. La parte RX de una dirección virtual que se aplica a un espacio de dirección de 2 Gigabytes debe ser toda ceros; de otro modo es reconocida una excepción. La parte RX de una dirección virtual está dividida en sí misma en tres campos. Los bits 0-30 son llamados el primer índice de región (RFX), los bits 11-21 son llamados el segundo índice de región (RSX), y los bits 22-32 son llamados el tercer índice de región (RTX). En una realización, los bits 0-32 de la dirección virtual tienen el formato que se ha ilustrado en la fig. 20.
Una dirección virtual, en la que el RTX es la parte significativa situada más a la izquierda (una dirección de 42 bits) es capaz de direccionar 4 Terabytes (2048 regiones), una en la que el RSX es la parte significativa situada más a la izquierda (una dirección de 53 bits) es capaz de direccionar 8 Petabytes (4.193.044 regiones), y una en la que el RFX es la parte significativa situada más a la izquierda (una dirección de 64 bits) es capaz de direccionar 16 Exabytes (8.589.934.592 regiones).
Una dirección virtual en la que el RX es cero puede ser traducida a direcciones reales por medio de dos tablas de traducción: una tabla de segmento y una tabla de página. Con la función de EDAT habilitada, la traducción puede ser completada solamente con la tabla de segmento. El RFX puede ser distinto de cero, en cuyo caso una primera tabla de región, una segunda tabla de región, y una tercera tabla de región, son requeridas. Si el RFX es cero, pero el RSX puede ser distinto de cero, se requiere una segunda tabla de región y una tercera tabla de región. Si el RFX y el RSX son cero, pero el RTX puede ser distinto de cero, se requiere una tercera tabla de región.
Es reconocida una excepción si el ASCE para un espacio de dirección no designa el nivel más alto de tabla (comenzando con la primera tabla de región y continuando hacia abajo a la tabla de segmento) necesario para traducir una referencia al espacio de dirección.
Se ha hecho referencia a continuación a la fig. 4 que ilustra una realización en la que el ASCE efectivo determinado en la fig. 3 es utilizado para determinar la primera tabla de traducción en la jerarquía de tablas de traducción utilizadas en la traducción de la dirección virtual.
En una realización, 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 Segunda tabla de Espacio de Dirección (ASTE) que es derivada por el proceso de Traducción de Registro de Acceso (ART) contiene un Elemento de Control de Espacio de Dirección especificado del Registro de Acceso. Un ASCE efectivo 400 es seleccionado de una de estas posiciones.
Una primera parte del ASCE efectivo 400 contiene un origen 402 de tabla que contiene una dirección de origen que designa o bien una primera tabla de región, una segunda tabla de región, una tercera tabla de región, o una tabla de segmento. Al origen de tabla (bits 0..51) se le añaden 12 ceros binarios para formar una dirección de origen de 64 bits de la tabla de traducción más elevada en la jerarquía de tablas de traducción que ha de ser utilizada en la traducción de la dirección virtual. El ASCE efectivo 400 contiene también un bit 404 de control de espacio real (R) y bits 406 de DT. Si el bit de control de espacio real (R) es cero entonces los bits de DT son descodificados por el selector 408 para determinar qué dirección de origen particular es el origen 402 de la tabla. Si los bits de DT son iguales a tres (11 binario) entonces el origen 402 de la tabla designa una primera tabla de región 410. Si los bits de DT son iguales a dos (10 binario) entonces el origen 402 de la tabla designa una segunda tabla de región 412. Si los bits de DT son iguales a uno (01 binario) entonces el origen 402 de la tabla designa una tercera tabla de región 414. De otro modo, si los bits de DT son iguales a cero (00 binario) entonces el origen 402 de la tabla designa una tabla de segmento 416.
Una primera tabla de región, una segunda tabla de región, o una tercera tabla de región es algunas veces denominada simplemente como una tabla de región. De manera similar, una designación de primera tabla de región, una designación de segunda tabla de región, o una designación de tercera tabla de región es algunas veces denominada como una designación de tabla de región. Las tablas de región, de segmento y de página reflejan la asignación actual del almacenamiento real. La página es un término utilizado para la asignación de almacenamiento virtual. El almacenamiento real es asignado en bloques fijos. Las páginas no necesitan ser adyacentes en almacenamiento real incluso aunque sean asignadas a un conjunto de direcciones virtuales secuenciales.
Cuando el ASCE utilizado en una traducción es una designación de primera tabla de región, el proceso de traducción consiste en una búsqueda de múltiples niveles utilizando, por ejemplo, una primera tabla de región, una segunda tabla de región, una tercera tabla de región, una tabla de segmento, y opcionalmente una tabla de página. Estas tablas residen el almacenamiento real absoluto. Cuando el ASCE es una designación de segunda tabla de región, una designación de tercera tabla de región, o una designación de tabla de segmento, las búsquedas en los niveles de tablas por encima del nivel designado son omitidas, y las propias tablas de mayor nivel son omitidas.
A continuación se ha hecho referencia a la fig. 5A que ilustra una realización de una traducción dinámica de dirección de una dirección virtual utilizando una jerarquía de tablas de traducción.
El ASCE efectivo 400 de la fig. 4 contiene los bits 406 de Tipo de Designación (DT). Si el bit 404 de control de espacio real (R) del ASCE es cero entonces los bits de DT son descodificados por el selector 408 para determinar qué origen del origen 402 de la tabla de dirección designa. Si el bit de control de espacio real (R) es uno entonces la traducción dinámica de dirección tiene lugar como se ha mostrado en el nodo D 564 en la fig. 5B.
Si los bits de DT son iguales a tres (11 binario) en el selector 408 entonces la primera tabla designada en la jerarquía de tablas de traducción es una primera tabla de región. El origen 402 de la tabla es añadido aritméticamente, en 502, con una parte 508 de Primer Índice de Región (RFX) de la dirección virtual a la entrada 506 de la primera tabla de región de referencia en una primera tabla de región. El origen de la tabla (bien con 12 ceros añadidos a la derecha, o bien multiplicado por 4096) es añadido al producto del índice multiplicado por 8 (o el índice con tres ceros añadidos a la derecha). La entrada de la primera tabla de región contiene un origen 504 de segunda tabla de región a una siguiente tabla inferior en la jerarquía de tablas de tradición utilizada en la traducción. La siguiente tabla inferior a la primera tabla de región es la segunda tabla de región. Si el bit inválido (I) de la entrada de la primera tabla de región es igual a uno entonces la entrada de la primera tabla de región es inválida y no puede ser utilizada en la traducción. Una condición de excepción es indicada.
Si los bits de DT son iguales a dos (10 binario) en el selector 408 entonces la primera tabla designada en la jerarquía de tablas de traducción es una segunda tabla de región. El origen 402 de la tabla es sumado aritméticamente, en 510, con una parte de Segundo de Índice de Región (RSX) 516 de la dirección virtual a la entrada 514 de la segunda tabla de región de referencia en una segunda tabla de región. El origen de la tabla (bien con 12 ceros añadidos a la derecha, o bien multiplicado por 4096) es añadido al producto del índice multiplicado por 8 (o el índice con tres ceros añadidos a la derecha). La entrada de la segunda tabla de región contiene un origen 512 de tercera tabla de región a una siguiente tabla inferior en la jerarquía de tablas de traducción utilizada en la traducción. La siguiente tabla inferior a la segunda tabla de región es la tercera tabla de región. Si el bit inválido (I) de la entrada de la segunda tabla de región es igual a uno entonces la entrada de la segunda tabla de región es inválida y una condición de excepción es indicada.
Si los bits de DT son iguales a uno (01 binario) en el selector 408 entonces la primera tabla designada en la jerarquía de tablas de traducción es una tercera tabla de región. El origen 402 de la tabla es sumado aritméticamente, en 518, con una parte de Tercer Índice de Región (RSX) 524 de la dirección virtual a la entrada 522 de la tercera tabla de región de referencia en una tercera tabla de región. El origen de la tabla (bien con 12 ceros añadidos a la derecha, o bien multiplicado por 4096) es añadido al producto del índice multiplicado por 8 (o el índice con tres ceros añadidos a la derecha). La entrada de la tercera tabla de región contiene un origen 520 de tabla de segmento a una siguiente tabla inferior en la jerarquía de tablas de traducción utilizada en la traducción. La siguiente tabla inferior a la tercera tabla de región es la tabla de segmento. Si el bit inválido (I) de la entrada de la tercera tabla de región es igual a uno entonces la entrada de la tercera tabla de región es inválida y una condición de excepción es indicada.
Si los bits de DT son iguales a cero ((00) binario en el selector 408) entonces la primera tabla designada en la jerarquía de tablas de traducción es una tabla de segmento. El origen 402 de la tabla es sumado aritméticamente, en 526, con una parte de Índice de Segmento (SX) 532 de la dirección virtual a la entrada 530 de la tabla de segmento de referencia en una tabla de segmento. El origen de la tabla (bien con 12 ceros añadidos a la derecha, o bien multiplicado por 4096) es añadido al producto del índice multiplicado por 8 (o el índice con tres ceros añadidos a la derecha). La entrada de la tabla de segmento contiene o bien una dirección de origen a una tabla de página, o bien una dirección absoluta de trama de segmento (SFAA), ambas mostradas en 528. Si el bit inválido (I) de la entrada de la tabla de segmento es igual a uno entonces la entrada de la tabla de segmento es inválida y una condición de excepción es indicada.
En 538, el bit de control de formato (FC) de STE de la tabla de segmento es examinado. Si el control de formato de STE es uno, entonces la entrada 530 de la tabla de segmento contiene una dirección absoluta de trama de segmento (SFAA) 552 y la traducción dinámica de dirección continua con referencia al nodo 562 en la fig. 5C. De otro modo, la entrada de la tabla de segmento obtenida de la tabla de segmento contiene una dirección de origen de tabla de página y la traducción dinámica de dirección continua con referencia al nodo 560 en la fig. 5C.
A continuación se ha hecho referencia a la fig. 5B. Si el control de formato de STE en la entrada de la tabla de segmento es cero entonces la entrada de la tabla de segmento obtenida a partir de la tabla de segmento contiene una dirección de origen a la siguiente tabla inferior en la jerarquía de tablas de traducción. La siguiente tabla inferior a la tabla de segmento es una tabla de página. El origen 528 de la tabla de página, obtenido a partir de la entrada 530 de la tabla de segmento de la fig. 5A, es sumado aritméticamente, en 538, con una parte de Índice de Página (PX) 534 de la dirección virtual a la entrada 542 de tabla de página de referencia en una tabla de página. La entrada de la tabla de página contiene una dirección real de trama de página (PRFA) 546. Cuando los bits situados más a la izquierda de la dirección real de trama de página están concatenados, en 548, con una parte de índice de byte (BX) 536 de la dirección virtual, se obtiene una dirección 550 real de 64 bits. La dirección real de 64 bits puede ser además sometida a una operación de prefijado para formar una dirección absoluta. La dirección virtual traducida hace referencia a un bloque de datos deseado de 4 Kilobytes (4096 bytes) en la memoria o almacenamiento principal.
Preferiblemente, la información utilizada en la traducción dinámica de una dirección virtual a una dirección de memoria es almacenada en una etiqueta de entrada de memoria tampón de traducción rápida junto con la dirección del bloque de memoria asociado con la dirección virtual. El acceso de almacenamiento subsiguiente puede traducir rápidamente una dirección virtual comparando la información de ASCE y la información de dirección virtual con las etiquetas de memoria tampón de traducción rápida. Si se encuentra que una etiqueta es la de la dirección virtual, la dirección de memoria tampón de traducción rápida del bloque de memoria puede ser utilizada para en lugar de realizar el acceso secuencial lento de cada tabla de traducción implicada. En una realización, la dirección real de trama de página (PFRA) junto con una etiqueta que consiste por ejemplo del ASCE y de las partes de RX, SX y PX de la dirección virtual son almacenados en una entrada de la memoria tampón 544 de traducción rápida. La traducción subsiguiente de esta dirección virtual es después de ello derivada a partir de la información almacenada en la memoria tampón de traducción rápida.
A continuación se ha hecho referencia a la fig. 5C. Si el control de formato de STE en la entrada 530 de tabla de segmento es uno entonces la entrada de tabla de segmento contiene una dirección absoluta de trama de segmento (SFAA) 552. Cuando los bits situados más a la izquierda de la dirección absoluta de trama de segmento son concatenados, en 554, con una parte 534 de índice de página y una parte 536 de índice de byte de la dirección virtual, se obtiene una dirección absoluta 556 de 64 bits. La dirección virtual traducida se refiere a un gran bloque deseado de datos en la memoria o almacenamiento principal. El gran bloque de datos es al menos de 1 megabyte
(1.048.576 bytes) de tamaño.
En una realización, la dirección absoluta de trama de segmento (SFSS) junto con las partes RX y SX de la dirección virtual son almacenadas en una memoria tampón 544 de traducción rápida. La traducción subsiguiente de esta dirección virtual es después de ello derivada de la información almacenada en la memoria tampón de traducción rápida.
Las realizaciones de las distintas entradas de tabla de traducción en la jerarquía de tablas de traducción utilizadas en la traducción son las siguientes.
Entradas de Tabla de Región
El término "entrada de tabla de región" significa una entrada de primera tabla de región, una entrada de segunda tabla de región, o una entrada de tercera tabla de región. Las entradas buscadas a partir de la primera tabla de región, de la segunda tabla de región, y de la tercera tabla de región tienen los siguientes formatos. El nivel (primero, segundo, tercero) de la tabla que contiene una entrada es identificado por los bits de tipo de tabla (TT) en la entrada.
En una realización, los formatos de la entrada de primera tabla de región, de la entrada de la segunda tabla de región, y de la entrada de la tercera tabla de región son como se ha ilustrado en la fig. 21.
Origen de la Segunda Tabla de Región, Origen de la Tercera Tabla de Región, y Origen de la Tabla de Segmento: Una entrada de la primera tabla de región contiene un origen de la segunda tabla de región. Una entrada de la segunda tabla de región contiene un origen de la tercera tabla de región. Una entrada de la tercera tabla de región contiene un origen de la tabla de segmento. La siguiente descripción se aplica a cada uno de los orígenes de las tres tablas. Los bits 0-51 de la entrada, con 12 ceros añadidos a la derecha, forman una dirección de 64 bits que designa el comienzo de la siguiente tabla de nivel inferior.
Bit de Protección de DAT (P): Cuando se aplica la DAT mejorada, el bit 54 es tratado como haciéndose una disyunción con el bit de protección de DAT en cada entrada de tabla de región subsiguiente, entrada de la tabla de segmento, y, cuando es aplicable en la entrada de la tabla de página utilizada en la traducción. Así, cuando el bit es uno, la protección de DAT se aplica a la región o regiones completas especificadas por la entrada de la tabla de región. Cuando la función de DAT mejorada no está instalada, o cuando la función está instalada pero el control de habilitación de la DAT mejorada es cero, el bit 54 de la entrada de la tabla de región es ignorado.
Desplazamiento de Segunda Tabla de Región, Desplazamiento de Tercera Tabla de Región, y Desplazamiento de Tabla de Segmento (TF): Una entrada de la primera tabla de región contiene un desplazamiento de la segunda tabla de región. Una entrada de la segunda tabla de región contiene un desplazamiento de la tercera tabla de región. Una entrada de la tercera tabla de región contiene un desplazamiento de la tabla de segmento. La siguiente descripción se aplica a cada uno de los tres desplazamientos de tabla. Los bits 56 y 57 de la entrada especifican la longitud de una parte de la siguiente tabla de nivel inferior que se está perdiendo al comienzo de la tabla, es decir, los bits especifican la posición de la primera entrada realmente existente en la siguiente tabla de nivel inferior. Los bits especifican la longitud de la parte perdida en unidades de 4.096 bits, haciendo así la longitud de la parte perdida variable en múltiplos de 512 entradas. La longitud de la parte perdida, en unidades de 4.096 bytes, es igual al valor de TF. El contenido del campo desplazado, en unión con el campo de longitud, los bits 62 y 63, son utilizados para establecer si la parte de la dirección virtual (RSX, RTX, o SX) que ha de ser traducida por medio de la siguiente tabla de nivel inferior designa una entrada que realmente existe en la tabla.
Bit Inválido de Región (I): El bit 58 en una entrada de la primera tabla de región o entrada de la segunda tabla de
región controla si el conjunto de regiones asociadas con la entrada está disponible. El bit 58 en una entrada de la tercera tabla de región controla si la única región asociada con la entrada está disponible. Cuando el bit 58 del cero, la traducción de dirección prosigue utilizando la entrada de la tabla de región. Cuando el bit es uno, la entrada no puede ser utilizada para la traducción.
Bits de Tipo de Tabla (TT): Los bits 60 y 61 de la entrada de la primera tabla de región, de la entrada de la segunda tabla de región, y la entrada de la tercera tabla de región identifican el nivel de la tabla que contiene la entrada como sigue: Bits 60 y 61 deben identificar el nivel correcto de la tabla, considerando el tipo de designación de tabla que es el ASCE que es utilizado en la traducción y el número de niveles de tabla que han sido utilizados hasta entonces; de otro modo, es reconocida una excepción de especificación de traducción. La siguiente tabla muestra los bits de tipo de tabla:
- Bits 60 y 61
- Nivel de Tabla de Región
- 11
- Primero
- 10
- Segundo
- 01
- Tercero
Longitud de Segunda Tabla de Región, Longitud de Tercera Tabla de Región, y Longitud de Tabla de Segmento (TL): Una entrada de la primera tabla de región contiene una longitud de la segunda tabla de región. Una entrada de la segunda tabla de región contiene una longitud de la tercera tabla de región. Una entrada de la tercera tabla de región contiene una longitud de la tabla de segmento. La siguiente descripción se aplica a cada una de las longitudes de las tres tablas. 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 así la longitud de la tabla variable en múltiplos de 512 entradas. La longitud de la siguiente tabla de nivel inferior, en unidades de 4.096 bytes, es uno más que el valor de TL. El contenido del campo de longitud, en unión con el campo de desplazamiento, los bits 56 y 57, son utilizados para establecer si la parte de la dirección virtual (RSX, RTX y SX) que ha de ser traducida por medio de la siguiente tabla de nivel inferior designa una entrada que realmente existe en la tabla. Todas las otras posiciones de bit de la entrada de la tabla de región están reservadas para posibles ampliaciones futuras y deberían contener cero; de otro modo, el programa puede no funcionar de manera compatible en el futuro. Cuando se aplica la DAT mejorada, las posiciones de bit reservadas de la entrada de la tabla de región deberían contener ceros rusos y la entrada de la tabla es inválida.
Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada y el bit 53 de control de formato de STE, de la entrada de tabla de segmento es cero, la entrada buscada a partir de la tabla de segmento, en una realización, tiene el formato que se ha ilustrado en la fig. 22.
Cuando se aplica la DAT mejorada y el control de formato de STE es uno, la entrada buscada a partir de la tabla de segmento, en una realización, tiene el formato que se ha ilustrado en la fig. 23.
Los campos seleccionados en la entrada de la tabla de segmento son asignados como sigue:
Origen de Tabla de Página: Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada pero el bit 53 de control de formato de STE, de la entrada de la tabla de segmento, es cero, los bits 0-52, con 11 ceros añadidos a la derecha, forman una dirección de 64 bits que designa el comienzo de una tabla de página. Es impredecible si la dirección es real o absoluta.
Dirección Absoluta de Trama de Segmento (SFAA): Cuando se aplica la DAT mejorada y el control de formato de STE es uno, los bits 0- 43 de la entrada, con 20 ceros añadidos a la derecha, forman una dirección absoluta de 64 bits del segmento.
Control de Validez (AV) de ACCF: Cuando se aplica la DAT mejorada y el control de formato de STE es uno, el bit 47 es el de control de validez de los bits de control de acceso y del bit de protección de búsqueda (ACCF). Cuando el control AV es cero, los bits 48-52 de la entrada de la tabla de segmento son ignorados. Cuando el control AV es uno, los bits 48 -52 son utilizados como se ha descrito a continuación.
Bits de Control de Acceso (ACC): Cuando se aplica la DAT mejorada, el control de formato de STE es uno, y el control AV es uno, los bits 48-51 de la entrada de la tabla de segmento contienen los bits de control de acceso que pueden ser utilizados para cualquier comprobación de acceso controlado por clave que se aplica a la dirección.
Bit de Protección de Búsqueda (F): Cuando se aplica la DAT mejorada, el control de formato de STE es uno, y el control AV es uno, el bit 52 de la entrada de la tabla de segmento contiene el bit de protección de búsqueda que puede ser utilizado para cualquier comprobación de acceso controlado por clave que se aplica a la dirección.
Control de Formato de STE (FC): Cuando se aplica la DAT mejorada, el bit 53 es el control de formato para la entrada de la tabla de segmento, como sigue:
Cuando el bit FC es cero, los bits 0-52 de la entrada forman el origen de la tabla de página, y el bit 55 es reservado.
Cuando el bit FC es uno, los bits 0-43 de la entrada forman la dirección absoluta de la trama de segmento, 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 protección de búsqueda, y el bit 55 es la modificación de registro de cambio. Cuando no se aplica la DAT mejorada, el bit 53 es ignorado.
Bit de Protección de DAT (P): El bit 54, cuando es uno, indica que la protección de DAT se aplica al segmento completo.
Cuando no se aplica la DAT mejorada, el bit 54 es tratado como que se realiza una disyunción con el bit de protección de DAT en la entrada de la tabla de página utilizada en la traducción.
Cuando se aplica la DAT mejorada, el bit de protección de DAT en alguna y en todas las entradas de tabla de región utilizadas en la traducción son tratados como que se realiza una disyunción con el bit de protección de DAT en la entrada de la tabla de segmento; cuando el control de formación de STE es cero, el bit de protección de DAT en el STE es además tratado como que se realiza una disyunción con el bit de protección de DAT en la entrada de la tabla de página.
Modificación de Registro de Cambio (CO): Cuando se aplica la DAT mejorada, y el control de formato de STE es uno, el bit 55 de la entrada de la tabla de segmento es la modificación del registro de cambio para el segmento. Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada pero el control de formato de STE es cero, el bit 55 de la entrada de la tabla de segmento es ignorado.
Bit Inválido de Segmento (I): El bit 58 controla si el segmento asociado con la entrada de la tabla de segmento está disponible.
Cuando el bit es cero, la traducción de dirección prosigue utilizando la entrada de la tabla de segmento.
Cuando el bit es uno, la entrada de la tabla de segmento no puede ser utilizada para traducción.
Bit de Segmento Común (C): El bit 59 controla el uso de las copias de memoria tampón de traducción rápida de la entrada de la tabla de segmento. Cuando no se aplica la DAT mejorada o cuando se aplica la DAT mejorada pero el control de formato es cero, el bit 59 también controla el uso de las copias de memoria tampón de traducción rápida de la tabla de página designada por la entrada de la tabla de segmento.
Un cero identifica un segmento privado; en este caso, la entrada de la tabla de segmento y cualquier tabla de página que designe puede ser utilizada sólo en asociación con el origen de la tabla de segmento que designa la tabla de segmento en la que reside la entrada de la tabla de segmento.
Un uno identifica un segmento común; en este caso la entrada de la tabla de segmento y cualquier tabla de página que designe puede continuar siendo utilizada para traducir direcciones correspondientes al índice de segmento, incluso aunque esté especificada una tabla de segmento diferente.
Sin embargo, las copias de memoria tampón de traducción rápida de la entrada de la tabla de segmento y cualquier tabla de página para un segmento común no son utilizables si el control de espacio privado, el bit 55, es uno en el ASCE utilizado en la traducción o si ese ASCE es una designación de espacio real. El bit de segmento común debe ser cero si la entrada de la tabla de segmento es buscada a partir del almacenamiento durante una traducción cuando el control de espacio privado es uno en el ASCE que se está utilizando. De otro modo, es reconocida una excepción de especificación de traducción.
Bits de Tipo de Tabla (TT): Los bits 60 y 61 de la entrada de la tabla de segmento son 00 binarios para identificar el nivel de la tabla que contiene la entrada. Los significados de todos los valores posibles de los bits 60 y 61 en una entrada de tabla de región o entrada de tabla de segmento son los siguientes:
Bits 60 y 61 Nivel de Tabla
- 11
- Primera región
- 10
- Segunda región
- 01
- Tercera región
- 00
- Segmento
Los bits 60 y 61 deben identificar el nivel correcto de tabla, considerando el tipo de designación de tabla que es el ASCE que está siendo utilizado en la traducción y el número de niveles de tabla que ha sido utilizado hasta ahora; de otro modo, es reconocida una excepción de especificación de traducción. Todas las otras posiciones de bit de la entrada de la tabla de segmento están reservadas para posibles futuras ampliaciones y deberían contener ceros; de otro modo, el programa puede no funcionar de manera compatible en el futuro. Cuando se aplica la DAT mejorada, las posiciones de bit reservadas de la entrada de la tabla de segmento deberían contener ceros incluso si la entrada de la tabla es inválida.
En una realización, la entrada de buscada a partir de la tabla de página tiene el formato que se ha ilustrado en la fig.
24.
Los campos seleccionados en la entrada de la tabla de página son asignados como sigue:
Dirección Real de Trama de Página (PFRA): Los bits 0-51 proporcionan los bits situados más a la izquierda de una dirección de almacenamiento real. Cuando estos bits son concatenados con el campo de índice de byte de 12 bits de la dirección virtual a la derecha, se obtiene una dirección real de 64 bits.
Bit Inválido de Página (I): El bit 53 controla si la página asociada con la entrada de la tabla de página está disponible. Cuando el bit es cero, la traducción de dirección prosigue utilizando la entrada de tabla de página. Cuando el bit es uno, la entrada de la tabla de página no puede ser utilizada para traducción.
Bit de Protección de DAT (P): El bit 54 controla si pueden haber sido hechos accesos al almacenamiento en la página. Este mecanismo de protección es además de los mecanismo de protección controlada por clave y de protección de dirección baja. El bit no tiene efecto en los accesos de búsqueda. Si el bit es cero, los almacenamientos están permitidos a la página, sujetos a las siguientes restricciones adicionales:
Que el bit de protección de DAT sea cero en la entrada de la tabla de segmento utilizada en la traducción.
Cuando se aplica la DAT mejorada, que el bit de protección de DAT sea cero en todas las entradas de la tabla de región utilizadas en la traducción.
Otros mecanismos de protección
Si el bit es uno, los almacenamientos son denegados. Cuando no existen condiciones de excepción de mayor prioridad, un intento de almacenar cuando el bit de protección de DAT es uno hace que una excepción de protección sea reconocida. El bit de protección de DAT en la entrada de la tabla de segmento es tratado como realizándose una disyunción con el bit 54 cuando se determina si se aplica la protección de DAT a la página. Cuando se aplica la DAT mejorada, el índice de protección de DAT en cualesquiera entradas de tablas de región utilizadas en traducción son también tratados realizándose una disyunción con el bit 54 cuando se determina si se aplica la protección de DAT.
Modificación de Registro de Cambio (CO): Cuando no se aplica la DAT mejorada, el bit 55 de la entrada de tabla de página debe contener cero; de otro modo, es reconocida una excepción de especificación de traducción como parte de la ejecución de una instrucción que utiliza la entrada para traducción de dirección. Cuando se aplica la DAT mejorada y el control del formato de STE es cero, el bit 55 de la entrada de la tabla de página es la modificación de registro de cambio para la página.
La posición 52 de bit de la entrada debe contener cero; de otro modo, es reconocida una excepción de especificación de traducción como parte de la ejecución de una instrucción que utiliza esa entrada para traducción de dirección. Las posiciones 56-63 de bit no están asignadas y son ignoradas.
Esta sección describe el proceso de traducción cuando es realizado implícitamente antes de que una dirección virtual sea utilizada para acceder al almacenamiento principal.
La traducción de una dirección virtual es controlada por el bit de modo DAT y los bits de control de espacio de dirección en la palabra de estado de programa por los ASCE en registros de control 1, 7, y 13 como se ha especificado por los registros de acceso. Cuando el ASCE utilizado en una traducción es una designación de primera tabla de región, la traducción es realizada por medio de una primera tabla de región, una segunda tabla de región, una tercera tabla de región, una tabla de segmento, y una tabla de página, la totalidad de las cuales residen en el almacenamiento real o absoluto. Cuando el ASCE está en una designación de tipo de tabla de nivel inferior (designación de segunda tabla de región, designación de tercera tabla de región, o designación de tabla de segmento) la traducción es realizada por medio solamente de niveles de tabla que comienzan con el nivel designado, y los bits de dirección virtual que requerirían, si no son cero, el uso de un mayor nivel o niveles de tabla deben ser todos ceros; de otro modo, es reconocida una excepción de tipo de ASCE. Cuando el ASCE es una designación de espacio real, la dirección virtual es tratada como una dirección real, y las entradas de tabla en almacenamiento real o absoluto no son utilizadas.
El ASCE utilizado para una traducción de dirección particular es llamado el ASCE efectivo. Por consiguiente, cuando es traducida una dirección virtual principal, el contenido del registro de control 1 es utilizado como el ASCE efectivo. De manera similar, para una dirección virtual secundaria, es utilizado el contenido del registro de control 7; para una dirección virtual especificada de AR, es utilizado el ASCE especificado por el registro de acceso; y para una dirección virtual doméstica, es utilizado el contenido del registro de control 13.
Cuando el control de espacio real en el ASCE efectivo es cero, el tipo de designación en el ASCE especifica el tipo de designación de tabla: primera tabla de región, segunda tabla de región, tercera tabla de región, o tabla de segmento. La parte correspondiente de la dirección virtual (primer índice de región, segundo índice de región, tercer índice de región, o índice de segmento) es comprobada contra el campo de longitud de tabla en la designación, y es añadida al origen en la designación para seleccionar una entrada en la tabla designada. Si la entrada seleccionada está fuera de su tabla, como es determinado por el campo de longitud de tabla en la designación, o si el bit I es uno en la entrada seleccionada, es reconocida una excepción de primera traducción de región, de una segunda traducción de región, de una tercera traducción de región, o de una traducción de segmento, dependiendo del nivel de tabla especificado por la designación. Si los bits de tipo de tabla en la entrada seleccionada no indican el nivel de tabla esperado, es reconocida una excepción de especificación de traducción.
La entrada de la tabla seleccionada por medio del ASCE efectivo designa la siguiente tabla de nivel inferior que ha de ser utilizada. Si la tabla actual es una primera tabla de región, una segunda tabla de región, o una tercera tabla de región, la siguiente parte de la dirección virtual (segundo índice de región, tercer índice de región, o índice de segmento, respectivamente) es comprobada contra los campos de desplazamiento de tabla y de longitud de tabla en la entrada de tabla actual, y es añadida al origen en la entrada para seleccionar una entrada en la siguiente tabla de nivel inferior. Si la entrada seleccionada en la siguiente tabla está fuera de su tabla, según ha sido determinado por los campos de desplazamiento de tabla y de longitud de tabla en la entrada de tabla actual, o si el bit I es uno en la entrada seleccionada, es reconocida un excepción de una segunda traducción de región, de una tercera traducción de región, o de una traducción de segmento, dependiendo del nivel de la siguiente tabla. Si los bits de tipo de tabla en la entrada seleccionada no indican el nivel de tabla esperado, es reconocida una excepción de especificación de traducción.
El tratamiento de partes de la dirección virtual por medio de niveles de tabla sucesivos continúa hasta que ha sido seleccionada una entrada de tabla de segmento. La entrada de tabla de segmento contiene un bit de protección de página que se aplica a todas las páginas en el segmento especificado.
La parte de índice de página de la dirección virtual es añadida al origen de tabla de página en la entrada de la tabla de segmento para seleccionar una entrada en la tabla de página. Si el bit I es uno en la entrada de la tabla de página, es reconocida una excepción de traducción de página. La entrada de la tabla de página contiene los bits situados más a la izquierda de la dirección real que representa la traducción de la dirección virtual, y contiene un bit de protección de página que se aplica solamente a la página especificada por la entrada de la tabla de página.
El campo de índice de byte de la dirección virtual es utilizado sin cambios como las posiciones de bit situadas más a la derecha de la dirección real.
Con el fin de eliminar el retraso asociado con referencias a tablas de traducción en almacenamiento real o absoluto, la información buscada a partir de las tablas normalmente está también posicionada en una memoria tampón especial, la memoria tampón de traducción rápida, y traducciones subsiguientes que implican las mismas entradas de tabla pueden ser realizadas utilizando la información grabada en la memoria tampón de traducción rápida. La
memoria tampón de traducción rápida puede también grabar traducciones virtuales iguales a las reales relacionadas con una designación de espacio real.
Cada vez que se haya hecho un acceso a almacenamiento real o absoluto durante el proceso de traducción de dirección con el propósito de buscar una entrada de una tabla de región, tabla de segmento, o tabla de página, no se aplica la protección controlada por clave.
Búsqueda En una Tabla Designada por un ASCE
Los bits 60-61 de control de DT, del ASCE efectivo, especifican tanto el tipo de designación de tabla del ASCE como la parte de la dirección virtual que ha de ser traducida por medio de la tabla designada, como sigue:
Bits 60 y 61 Tipo de Designación Parte de Dirección Virtual Traducida por la Tabla
- 11
- Primera tabla de región Primer Índice de región
- bits (0-10)
- 10
- Segunda tabla de región Segundo Índice de región
- (bits 11-21)
- 01
- Tercera tabla de región Tercer Índice de región
- (bits 22-32)
- 00
- Tabla de segmento Índice de segmento
- (bits 33-43)
Cuando los bits 60 y 61 tienen el valor 11 binario, la parte de primer índice de región de la dirección virtual, en unión con el origen de la primera tabla de región contenida en el ASCE, es utilizada para seleccionar una entrada a partir de la primera tabla de región. La dirección de 64 bits de la entrada de la primera tabla de región en almacenamiento real o absoluto es obtenida añadiendo 12 ceros a la derecha de los bits 0- 51 de la designación de la primera tabla de región y añadiendo el primer índice de región con tres ceros más a la derecha y 50 ceros más a la izquierda añadidos. Como parte del proceso de búsqueda de la primera tabla de región, los bits 0 y 1 de la dirección virtual (que son los bits 0 y 1 del primer índice de región) son comparados contra la longitud de tabla, los bits 62 y 63 de la designación de la primera tabla de región, para establecer si la entrada direccionada está dentro de la primera tabla de región. Si el valor en el campo de longitud de tabla es menor que el valor en las posiciones de bit correspondientes de la dirección virtual, es reconocida una excepción de la primera traducción de región. La comparación contra la longitud de tabla puede ser omitida si el equivalente de una entrada de primera tabla de región en la memoria tampón de traducción rápida es utilizado en la traducción. La entrada buscada a partir de la primera tabla de región designa el comienzo y especifica el desplazamiento y longitud de la segunda tabla de región correspondiente.
Cuando los bits 60 y 61 del ASCE tienen el valor 10 binario, la parte de segundo índice de región de la dirección virtual, en unión con el origen de la segunda tabla de región contenida en el ASCE, es utilizada para seleccionar una entrada a partir de la segunda tabla de región. Los bits 11 y 12 de la dirección virtual (que son los bits 0 y 1 del segundo índice de región) son comparados contra la longitud de tabla en el ASCE. Si el valor en el campo de longitud de tabla es menor que el valor en las posiciones de bit correspondientes de la dirección virtual, es reconocida una excepción de la segunda traducción de región. La comparación contra la longitud de tabla puede ser omitida si el equivalente de una entrada de la segunda tabla de región en la memoria tampón de traducción rápida es utilizado en la traducción. El proceso de búsqueda de segunda tabla de región es de otro modo el mismo que el proceso de búsqueda de la primera tabla de región; la entrada buscada a partir de la segunda tabla de región designa el comienzo y especifica el desplazamiento y longitud de la tercera tabla de región correspondiente.
Cuando los bits 60 y 61 del ASCE tienen el valor 01 binario, la parte de tercer índice de región de la dirección virtual, en unión con el origen de la tercera tabla de región contenida en el ASCE, es utilizada para seleccionar una entrada a partir de la tercera tabla de región. Los bits 22 y 23 de la dirección virtual (que son los bits 0 y 1 del tercer índice de región) son comparados contra la longitud de la tabla en el ASCE. Si el valor en el campo de longitud de tabla es menor que el valor en las posiciones de bit correspondientes de la dirección virtual, es reconocida una excepción de la tercera traducción de región. El proceso de búsqueda de la tercera tabla de región es de otro modo el mismo que el proceso de búsqueda de la primera tabla de región incluyendo la comprobación de los bits de tipo de tabla en la entrada de la tercera tabla de región. La entrada buscada a partir de la tercera tabla de región designa el comienzo y especifica el desplazamiento y longitud de la tabla de segmento correspondiente.
Cuando los bits 60 y 61 del ASCE tienen el valor 00 binario, la parte de índice de segmento de la dirección virtual, en unión con el origen de la tabla de segmento contenida en el ASCE, es utilizada para seleccionar una entrada a partir de la tabla de segmento. Los bits 33 y 34 de la dirección virtual (que son los bits 0 y 1 del índice de segmento) son comparados contra la longitud de la tabla en el ASCE. Si el valor en el campo de longitud de tabla es menor que el valor en las posiciones de bit correspondientes de la dirección virtual, es reconocida una excepción de la traducción de segmento. La comparación contra la longitud de tabla puede ser omitida si el equivalente de una entrada de la tabla de segmento en la memoria tampón de traducción rápida es utilizado en la traducción. El proceso de búsqueda de la tabla de segmento es de otro modo el mismo que el proceso de búsqueda de la primera tabla de región, incluyendo la comprobación de los bits de tipo de tabla en la entrada de la tabla de segmento. El tratamiento es como sigue:
Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada pero el control de formato de STE es cero, la entrada buscada a partir de la tabla de segmento designa el comienzo de la tabla de página correspondiente, y el tratamiento continúa como se ha descrito en "Búsqueda de Tabla de Página", a continuación.
Cuando se aplica la DAT mejorada y el control de formato de STE es uno, la entrada buscada a partir de la tabla de segmento contiene los bits situados más a la izquierda de la dirección absoluta de trama de segmento. Si el bit de protección de DAT es uno, bien en cualquier entrada de tabla de región utilizada en la traducción o bien en la entrada de la tabla de cemento, y la referencia de almacenamiento para la que se está realizando la traducción es un almacenamiento, es reconocida una excepción de protección.
Búsqueda en una Tabla Designada por una Entrada de Tabla de Región
Cuando el ASCE efectivo es una designación de tabla de región, una entrada de tabla de región es seleccionada como se ha descrito en la sección precedente. A continuación el contenido de la entrada seleccionada y la siguiente parte de índice de la dirección virtual son utilizados para seleccionar una entrada en la siguiente tabla de nivel inferior, que puede ser otra tabla de región o una tabla de segmento. Cuando la entrada de la tabla seleccionada por medio del ASCE es una entrada de primera tabla de región, la parte de segundo índice de región de la dirección virtual, en unión con el origen de la segunda tabla de región contenido en la entrada de la primera tabla de región, es utilizada para seleccionar una entrada a partir de la segunda tabla de región. La dirección de 64 bits de la entrada de la segunda tabla de región en almacenamiento real o absoluto es obtenida añadiendo 12 ceros a la derecha de los bits 0-51 de la entrada de la primera tabla de región y añadiendo el segundo índice de región con tres ceros más a la derecha y 50 ceros más a la izquierda añadidos.
Cuando se forma la dirección de una entrada de una segunda región, de una tercera región, o de una tabla de segmento, es impredecible si el prefijado, si lo hay, es aplicado al origen de la tabla respectiva contenido en la entrada de la tabla de nivel más alto antes de la adición del valor de índice de tabla, o si el prefijado es aplicado a la dirección de entrada de tabla que es formada por la adición del origen de tabla y del valor de índice de tabla.
Como parte del proceso de búsqueda de la segunda tabla de región, los bits 11 y 12 de la dirección virtual (que son los bits 0 y 1 del segundo índice de región) son comparados contra el desplazamiento de tabla, los bits 56 y 57 de la entrada de la primera tabla de región, y contra la longitud de tabla, los bits 62 y 63 de la entrada de la primera tabla de región, para establecer si la entrada direccionada está dentro de la segunda tabla de región. Si el valor en el campo de desplazamiento de tabla es mayor que el valor en las posiciones de bit correspondientes de la dirección virtual, o si el valor en el campo de longitud de la tabla es menor que el valor en las posiciones de bit correspondientes de la dirección virtual, es reconocida una excepción de segunda traducción de región.
La segunda tabla de región designa el comienzo y especifica el desplazamiento y longitud de la tercera tabla de región correspondiente.
Cuando la entrada de la tabla seleccionada por medio del ASCE es una entrada de segunda tabla de región, o si se ha seleccionado una entrada de segunda tabla de región por medio del contenido de una entrada de primera tabla de región, la parte del tercer índice de región de la dirección virtual, en unión con el origen de la tercera tabla de región contenido en la entrada de la segunda tabla de región, es utilizada para seleccionar una entrada a partir de la tercera tabla de región. Los bits 22 y 23 de la dirección virtual (que son los bits 0 y 1 del tercer índice de región) son comparados contra el desplazamiento de tabla y la longitud de la tabla en la entrada de la segunda tabla de región. Una excepción de tercera traducción de región es reconocida 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 proceso de búsqueda de la tercera tabla de región es de otro modo el mismo que el proceso de búsqueda de la segunda tabla de región. La entrada buscada a partir de la tercera tabla de región designa el comienzo y especifica el desplazamiento y longitud de la tabla de segmento correspondiente.
Cuando la entrada de tabla seleccionada por medio del ASCE es una entrada de tercera tabla de región, o si se ha seleccionado una entrada de la tercera tabla de región por medio del contenido de una entrada de segunda tabla de región, la parte del índice de segmento de la dirección virtual, en unión con el origen de la tabla de segmento contenido en la entrada de la tercera tabla de región, es utilizada para seleccionar una entrada a partir de la tabla de segmento. Los bits 33 y 34 de la dirección virtual (que son los bits 0 y 1 del índice de segmento) son comparados contra el desplazamiento de tabla y la longitud de tabla en la entrada de la tercera tabla de región. Una excepción de traducción de segmento es reconocida 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. Una excepción de especificación de traducción es reconocida si (1) el bit 55 de control de espacio privado, en el ASCE es uno y (2) el bit 59, bit de segmento común, en la entrada buscada a partir de la tabla de segmento es uno. El proceso de búsqueda de la tabla de segmento es de otro modo el mismo que el proceso de búsqueda de la segunda tabla de región. El tratamiento es como sigue:
Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada pero el control de formato de STE es cero, la entrada buscada a partir de la tabla de segmento designa el comienzo de la tabla de página correspondiente, y el tratamiento continúa como se ha descrito en "Búsqueda de Tabla de Página", a continuación.
Cuando se aplica la DAT mejorada y el control de formato de STE es uno, la entrada buscada a partir de la tabla de segmento contiene los bits situados más a la izquierda de la dirección absoluta de trama de segmento. Si el bit de protección de DAT es uno, bien en cualquier entrada de tabla de región utilizada en la traducción o bien en la entrada de la tabla de segmento, y la referencia de almacenamiento para el que se está realizando la traducción es una memoria, es reconocida una excepción de protección.
Búsqueda de Tabla de Página
Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada pero el control de formato de STE es cero, la parte de índice de página de la dirección virtual, en unión con el origen de la tabla de página contenido en la entrada de la tabla de segmento, es utilizada para seleccionar una entrada a partir de la tabla de página.
La dirección de 64 bits de la entrada de la tabla de página en almacenamiento real o absoluto es obtenida añadiendo 11 ceros a la derecha del origen de la tabla de página y añadiendo el índice de página, con los tres ceros más a la derecha y los 53 ceros más a la izquierda añadidos. Una realización de posición 0 de bit no puede ocurrir.
La entrada buscada a partir de la tabla de página indica la disponibilidad de la página y contiene los bits situados más a la izquierda de la dirección real de trama de página. El bit inválido de página, el bit 53, es inspeccionado para establecer si está disponible la página correspondiente. Si este bit es uno, es reconocida una excepción de traducción de página. Si la posición 52 de bit contiene un uno, es reconocida una excepción de especificación de traducción. Cuando no se aplica la DAT mejorada, o se aplica la DAT mejorada y el control de formato de STE es cero, es reconocida también una excepción de especificación de traducción si la posición 55 de bit contiene un uno. Si el bit de protección de DAT es uno, bien en la entrada de la tabla de segmento utilizada en la traducción, en la entrada de la tabla de página, o bien, cuando se aplica la DAT mejorada, en cualquier entrada de tabla de región utilizada durante la traducción, y la referencia de almacenamiento para la que se está realizando la traducción es una memoria, es reconocida una excepción de protección.
Formación de las Direcciones Real y Absoluta.
Cuando el ASCE efectivo es una designación de espacio real, los bits 0- 63 de la dirección virtual son utilizados directamente como la dirección de almacenamiento real. La dirección real puede ser además sujeta a prefijado para formar una dirección absoluta. Cuando el ASCE efectivo no es una designación de espacio real y no se han encontrado excepciones en el proceso de traducción, se aplican las siguientes condiciones:
Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada pero el control de formato de STE es cero, la dirección real de trama de página es obtenida a partir de la entrada de la tabla de página. La dirección real de trama página y la parte de índice de byte de la dirección virtual son concatenados, con la dirección real de trama de página que forma la parte situada más a la izquierda. El resultado es la dirección de almacenamiento real que corresponde a la dirección virtual. La dirección real puede además ser sometida a prefijado para formar una dirección absoluta.
Cuando se aplica la DAT mejorada y el control de formato de STE es uno, la dirección absoluta de trama de segmento y el índice de página y las partes de índice de byte de la dirección virtual son concatenadas, de izquierda a derecha, respectivamente, para formar la dirección absoluta que corresponde a la dirección virtual.
Direcciones inválidas y formatos inválidos pueden provocar que se reconozcan excepciones durante el proceso de traducción. Las excepciones son reconocidas cuando la información contenida en las entradas de tabla es utilizada para traducción y se ha encontrado que es incorrecta.
A continuación se ha hecho referencia a la fig. 6 D que ilustra un diagrama de flujo de una realización de traducción dinámica de dirección hasta el punto de obtener un campo de control de formato a partir de una entrada de tabla de segmento.
En 602, es obtenida una dirección virtual que ha de ser traducida. En 604, es obtenida la dirección origen de la tabla de traducción más elevada utilizada en traducción de la dirección virtual. La dirección de origen de la primera tabla de traducción utilizada en la traducción depende del ASCE y de los bits de DT. En 606, una parte de la dirección virtual es utilizada como referencia a la entrada de la tabla apropiada en la tabla de traducción. Si, en 608, la entrada buscada a partir de la tabla de traducción no es una entrada de tabla de segmento entonces aún no se ha hecho referencia a la tabla de segmento en la jerarquía de las tablas de traducción. En este caso, en 610, se obtiene el origen de una siguiente tabla inferior en la jerarquía de tablas de traslación a partir de la entrada de la tabla. La parte apropiada de la dirección virtual es utilizada como referencia a la entrada de la tabla correspondiente en la siguiente tabla inferior utilizada en la traducción.
Por ejemplo, si la dirección de origen de tabla de la primera tabla de traducción que ha de ser utilizada en la traducción es una primera tabla de región entonces la parte RFX de la dirección virtual es utilizada como referencia a una entrada de primera tabla de región con la primera tabla de región. Si la dirección origen de tabla es una segunda tabla de región entonces la parte RSX de la dirección virtual es utilizada como referencia a una entrada de segunda tabla de región dentro de la segunda tabla de región. Si la dirección de origen de tabla es una tercera tabla de región entonces la parte RTX de la dirección virtual es utilizada como referencia a una entrada de tercera tabla de región dentro de la tercera tabla de región. Si la dirección de origen está en una tabla de segmento entonces la parte SX de la dirección virtual es utilizada como referencia a una entrada de tabla de segmento dentro de la tabla de segmento. Las tablas sucesivas son referenciadas hasta que la entrada de la tabla de segmento ha sido buscada.
Una vez que se ha buscado la entrada de la tabla de segmento, el bit de control de formato de la entrada de la tabla de segmento (STE) es examinado, en 612, para determinar se está habilitado el control de formato para esta dirección virtual particular. Si el control de formato de STE es cero entonces ocurre la traducción dinámica de dirección con respecto al nodo 614. Si el control de formato de STE es uno entonces ocurre la traducción dinámica de dirección con respecto al modo 616.
Traducción Dinámica de Dirección (Control de Formato de STE es cero)
A continuación se ha hecho referencia a la fig. 7, que ilustra una continuación del diagrama de flujo desde el nodo 614 de la fig. 6 cuando el control de formato de STE es cero.
En 710, se obtiene una dirección de origen a una tabla de página a partir de la entrada de la tabla de segmento. En 712, una parte PX de la dirección virtual es utilizada como referencia a una entrada de tabla de página en la tabla de página. En 714, se obtiene una dirección real de trama de página (PFRA) a partir de la entrada de tabla de página. Un bit Inválido (I) es obtenido a partir de la entrada de tabla de página. Si, en 716, el bit Inválido (I) es uno entonces, en 718, la traducción de la dirección virtual no puede continuar utilizando esta entrada de tabla de página debido a que la entrada ha sido marcada como que es inválida. Otra traducción de la dirección virtual utilizando esta entrada de tabla de página se detiene en 722. Si, en 716, el bit Inválido (I) es cero, entonces, en 720, la dirección real de trama de página (PFRA) es combinada con una parte BX de la dirección virtual para generar una dirección real. La dirección real puede ser sujeta además a una operación de prefijado para formar una dirección absoluta. En 724, la dirección real es utilizada para acceder a un bloque de datos direccionado por la dirección virtual traducida.
Traducción Dinámica de Dirección (Control de Formato de STE es uno)
A continuación se ha hecho referencia a la fig. 8 que ilustra una continuación del diagrama de flujo desde el nodo 616 de la fig. 6.
En 810, se obtiene una dirección de trama de segmento (SFAA) a partir de una parte de la entrada de la tabla de segmento. Un bit Inválido (I) es obtenido a partir de la entrada de tabla de segmento. Si, en 812, el bit Inválido (I) es uno entonces, en 814, una traducción adicional de la dirección virtual no puede continuar utilizando la entrada de la tabla de segmento debido a que ha sido marcada como que es inválida. En una realización, un código de excepción es devuelto a la entidad de programa que solicita traducción. La traducción adicional de esta dirección virtual utilizando esta entrada de tabla de segmento se detiene en 818.
Si en 812, el bit Inválido (I) es cero, entonces, en 816, la dirección absoluta de trama de segmento (SFAA) es combinada con una parte PX y BX de la dirección virtual para generar una dirección absoluta a un gran bloque de datos deseado en almacenamiento o en memoria principal. En 820, el gran bloque de datos deseado direccionado por la dirección virtual traducida es accedido.
En cada entrada de tabla, el bit inválido es examinado para determinar la validez de la entrada de tabla obtenida. Otros mecanismos de protección de traducción que protegen el bloque de datos direccionado por la dirección virtual traducida son descritos aquí adicionalmente.
En otra realización, se obtiene información restrictiva a partir de la entrada de tabla de traducción. La información restrictiva es utilizada para restringir el acceso a una parte restringida del rango de dirección virtual. El acceso al gran bloque de datos deseado direccionado por la dirección traducida es permitido después de ello solamente a la parte restringida del rango de dirección. La información restrictiva es cualquiera de un desplazamiento de tabla o de una longitud de tabla.
Aún en otra realización, la información utilizada en la traducción de la dirección virtual es almacenada en al menos una memoria tampón de traducción rápida. Una traducción subsiguiente de una dirección virtual subsiguiente a una dirección absoluta del bloque de datos en el almacenamiento principal es realizada utilizando la información almacenada a partir de la memoria tampón de traducción rápida en vez de la jerarquía de tablas de traducción.
Aún en otra realización, si la traducción no es nativa a la arquitectura de máquina, una rutina de software predeterminada es identificada para emular la traducción. La rutina de software predeterminada contiene una pluralidad de instrucciones. La rutina de software predeterminada es ejecutada.
Protección del Bloque de Datos Direccionado
Una vez que la dirección virtual ha sido traducida utilizando la función de DAT mejorada, como se ha descrito aquí, el bloque de datos deseado en el almacenamiento o memoria principal direccionado por la dirección virtual traducida puede ser sometido a un mecanismo de protección adicional.
La función de protección de DAT controla el acceso al almacenamiento virtual utilizando el bit de protección de DAT en cada entrada de tabla de página y entrada de tabla de segmento, y, cuando la función de DAT mejorada es instalada, en cada entrada de tabla de región. Proporciona protección contra un almacenamiento inapropiado.
El bit de protección de DAT (bit 54) de la entrada de la tabla de página controla si el almacenamiento es permitido en la página de 4 Kilobytes correspondiente. Cuando el bit es cero, tanto la búsqueda como el almacenamiento son permitidos, cuando el bit es uno, solamente se permite la búsqueda. Cuando se ha hecho un intento para almacenar en una página protegida, el contenido de la página permanece sin cambios, la unidad de operación o la ejecución de la instrucción es suprimida, y tiene lugar una interrupción del programa para protección.
El bit de protección de DAT (bit 54) de la entrada de tabla de segmento controla si el almacenamiento es permitido en el segmento de 1 Megabyte correspondiente, como sigue:
Cuando no se aplica la DAT mejorada, o cuando se aplica la DAT mejorada y el control de formato de STE es cero, el bit de protección de DAT de la entrada de la tabla de segmento es tratado como realizándose una disyunción en la posición de bit de protección de DAT de cada entrada en la tabla de página designada por la entradas de la tabla de segmento. Así, cuando el bit de protección de DAT de la tabla de segmento es uno, el efecto es como si el bit de protección de DAT fuera uno en cada entrada en la tabla de página designada.
Cuando se aplica la DAT mejorada y el control de formato de STE es uno, el bit de protección de DAT de la entrada de la tabla de segmento controla si el almacenamiento está permitido en el segmento de 1 Megabyte correspondiente. Cuando el bit es cero, tanto la búsqueda como el almacenamiento están permitidos; cuando el bit es uno, solamente está permitida la búsqueda. Cuando se ha hecho un intento para almacenar en un segmento protegido, el contenido del segmento permanece sin cambios, la unidad de operación o la ejecución de la instrucción es suprimida, y tiene lugar una interrupción del programa para protección.
Cuando se aplica la DAT mejorada, el bit de protección de DAT de la entrada de la tabla de región, controla si el almacenamiento está permitido en la región o regiones correspondientes. El bit de protección de DAT en una entrada de tabla de región es tratado como realizándose una disyunción en la posición de bit de protección de DAT de cualquier entrada de tabla de región subsiguiente y la entrada de la tabla de segmento que es utilizada en la traducción. Cuando el control de formato de STE es cero, el bit de protección de DAT es además propagado a la entrada de la tabla de página.
La protección de DAT se aplica a todas las referencias de tipo memoria que utilizan una dirección virtual.
A continuación se ha hecho referencia a la fig. 9 que ilustra un diagrama de flujo de una realización de obtención del bit de protección de DAT a partir de la entrada de la tabla de segmento utilizada en la traducción.
En 902, se obtiene una dirección virtual que ha de ser traducida. En 904, se obtiene el origen de una primera tabla de traducción utilizada en la traducción de la dirección virtual. En 906, una parte de la dirección virtual es utilizada como referencia a una entrada en una tabla de traducción de una manera previamente descrita. En 908, se genera una dirección real o absoluta a partir de, o bien la dirección absoluta de trama de segmento (SFAA), o bien la dirección real de trama de página (PFRA) obtenidas.
En 910, un bit de protección (P) de DAT es obtenido a partir de cada entrada de las tablas de traducción utilizadas en la traducción de la dirección virtual. Debería comprenderse que el nivel efectivo de protección de DAT es el O lógico de múltiples bits P obtenidos a partir de cada una de las entradas de tabla utilizadas en la traducción. En 912, el bit de protección de DAT es examinado para determinar si el bloque de datos direccionado por la dirección virtual traducida está protegido de DAT. Si, en 912, el bit de protección (P) de DAT es cero, entonces, en 916, se permiten operaciones de almacenamiento al bloque de datos direccionado por la dirección virtual traducida. Alternativamente, un nivel de protección indicado por el campo de protección de DAT es aplicado a todas las referencias de tipo memoria que utilizan la dirección virtual. Si el campo de protección de DAT es habilitado entonces es indicada una condición de excepción de protección si es intentado un almacenamiento al bloque de datos deseados direccionado por la dirección virtual traducida.
Cuando se aplica la protección controlada con clave a un acceso de almacenamiento, se permite una memoria solamente cuando la clave de almacenamiento coincide con la clave de acceso asociada con la solicitud de acceso de almacenamiento; se permite una búsqueda cuando las claves coinciden o cuando el bit de protección de búsqueda de la clave de almacenamiento es cero. Se dice que las claves coinciden cuando los cuatro bits de control de acceso de la clave de almacenamiento son iguales a la clave de acceso, o cuando la clave de acceso es cero. La acción de protección es resumida como sigue.
- Condiciones
- Se permite el acceso al Almacenamiento
- Bit de Protección de Búsqueda de Clave de Almacenamiento
- Relación de Clave Búsqueda Almacenamiento
- 0 0 1 1
- Coincidencia No coincidencia Coincidencia No coincidencia Si Si Si No Si No Si No
- Explicación: Coincidencia Los cuatro bits de control de acceso de la clave de almacenamiento son iguales a la clave de acceso, o la clave de acceso es cero. Si El acceso es permitido No El acceso no es permitido. Al buscar, la información no está disponible para el programa; al almacenar, el contenido de la posición de almacenamiento no es cambiado.
Cuando el acceso al almacenamiento es iniciado por la CPU y se aplica una protección controlada con clave, la Clave de PSW es la clave de acceso, excepto que la clave de acceso está especificada en un registro general para el primer operando de MOVER A SECUNDARIO y MOVER CON CLAVE DE DESTINO, para el segundo operando de MOVER A PRINCIPAL, MOVER CON CLAVE, y MOVER CON CLAVE FUENTE, y para cualquiera del primer o del segundo operando de MOVER PÁGINA. La Clave de PSW ocupa posiciones 8-11 de bit de la palabra de estado de programa actual.
Cuando un acceso de CPU es prohibido a causa de una protección controlada con clave, la ejecución de la instrucción ha terminado, y tiene lugar una interrupción de programa para una excepción de protección. Sin embargo, la unidad de operación o la ejecución de la instrucción pueden ser suprimidas.
Una clave de almacenamiento está asociada con cada bloque de almacenamiento de 4 Kilobytes que está disponible en la configuración. Las claves de almacenamiento no forman parte de almacenamiento accesible. En una realización, la clave de almacenamiento tiene el formato ilustrado por la fig. 25.
Las posiciones de bit en la clave de almacenamiento son asignadas como sigue:
Bits de Control de Acceso (ACC): Si una referencia está sujeta a protección controlada por clave, los cuatro bits de control de acceso son hechos coincidir con la clave de acceso de cuatro bits cuando la información es almacenada y cuando la información es buscada a partir de una posición que está protegida contra búsqueda.
Bit de Protección de Búsqueda (F): Si una referencia está sujeta a protección controlada por clave, el bit de protección de búsqueda controla si la protección controlada con clave se aplica a referencias de tipo de búsqueda: un cero indica que solo referencias de tipo de almacenamiento son vigiladas y que la búsqueda con cualquier clave de acceso es permitida; un uno indica que la protección controlada por clave se aplica tanto a la búsqueda como al almacenamiento.
Bit de Referencia (R): El bit de referencia normalmente es establecido a uno cada vez que una posición en el bloque de almacenamiento correspondiente es referida bien para almacenamiento o bien para búsqueda de información.
Bit de Cambio (C): El bit de cambio es establecido a uno cada vez que es almacenada información en una posición en el bloque de almacenamiento correspondiente.
Cuando se aplica la DAT mejorada, son efectivas las siguientes condiciones adicionales:
Cuando el control de formato de STE (FC, bit 53 de la entrada de la tabla de segmento utilizada durante una traducción) es cero, el bit 55 de la entrada de la tabla de página utilizada durante la traducción es la modificación de registro de cambio (CO) para la página. Cuando el bit de CO en la entrada de la tabla de página es uno, el registro de cambio es impredecible para cualesquiera operaciones de almacenamiento a la página.
Cuando el bit de control de formato (FC) en la entrada de la tabla de segmento es uno, se aplica lo siguiente:
La posición 47 de bit de la entrada de la tabla de segmento contiene el control de validez de ACCF. El control de validez de ACCF determina la validez de los bits de protección de control de acceso y de búsqueda en el STE. Cuando el control de validez de ACCF es cero, la protección controlada con clave utiliza los bits de protección de control de acceso y búsqueda en la clave de almacenamiento para el bloque de 4 Kilobytes correspondiente a la dirección.
Cuando el control de validez de ACCP es uno, las posiciones 48-52 de bit de la entrada de la tabla de segmento contienen los bits de control de acceso y el bit de protección de búsqueda para el segmento. Cuando se determina la accesibilidad a un operando de almacenamiento, es impredecible si los bits 48-52 del STE o los bits 0-4 de las claves de almacenamiento individual para los bloques de 4 Kilobytes que comprenden el segmento son examinados.
El bit 55 de la entrada de la tabla de segmento es la modificación de registro de cambio (CO) para el segmento. Cuando el bit de CO en la entrada de la tabla de segmento es uno, es impredecible si el bit de cambio está establecido para cualesquiera operaciones de almacenamiento al segmento.
Las referencias a la clave de almacenamiento son manejadas o gestionadas como sigue:
Cada vez que se ha hecho una referencia a almacenamiento y se aplica una protección controlada con clave a la referencia, los cuatro bits de control de acceso y el bit de protección de búsqueda asociado con la posición de almacenamiento son inspeccionados al mismo tiempo y al mismo tiempo con la referencia a la posición de almacenamiento. Cuando (1) no se aplica la DAT mejorada, (2) se aplica la DAT mejorada pero el almacenamiento es accedido por medio de una entrada de tabla de segmento en que el control de formato de STE es cero, o (3) se aplica la DAT mejorada, el almacenamiento es accedido por medio de una entrada de tabla de segmento en la que el control de formato de STE es uno, pero el control de validez de ACCF es cero, los bits de control de acceso y el bit de protección de búsqueda están en los bits 0-4 de la clave de almacenamiento para el bloque de 4 Kilobytes. Cuando se aplica la DAT mejorada y el almacenamiento es accedido por medio de una entrada de tabla de segmento en la que tanto el control de formato de STE como el control de validez de ACCF son uno, es impredecible si los bits 0-4 de la clave de almacenamiento o los bits 48-52 de la entrada de la tabla de segmento proporcionan los bits de control de acceso y el bit de protección de búsqueda. Además, cuando la entrada de la tabla de segmento proporciona los bits de control de acceso y el bit de protección de búsqueda, una copia almacenada en memoria tampón de la memoria tampón de traducción rápida puede ser utilizada.
Cuando se aplica la DAT mejorada, y o bien (a) el control de formato de STE es cero, y la modificación de registro de cambio es uno en la entrada de la tabla de página utilizadas por la DAT, o (b) el control de formato de STE es uno, y la modificación de registro de cambio es uno en la entrada de la tabla de segmento utilizada por la DAT, es impredecible si la CPU establece el bit de cambio cuando está realizando una operación de almacenamiento. La modificación de registro de cambio puede ser almacenada en memoria tampón en la copia de memoria tampón de traslación rápida del PTE o STE.
Cuando la función de SSKE condicional no está instalada, la instrucción ESTABLECER CLAVE DE ALMACENAMIENTO AMPLIADA hace que los siete bits sean establecidos al mismo tiempo en la clave de almacenamiento. Cuando la función de SSKE condicional está instalada, la instrucción ESTABLECER CLAVE DE ALMACENAMIENTO AMPLIADA puede ser utilizada para establecer la totalidad o partes de la clave de almacenamiento basándose en criterios especificados del programa.
La instrucción INSERTAR CLAVE DE ALMACENAMIENTO AMPLIADA proporciona una imagen consistente de bits 0-6 de la clave de almacenamiento para un bloque de 4 Kilobytes. De manera similar, las instrucciones INSERTAR CLAVE DE ALMACENAMIENTO VIRTUAL y PROTECCIÓN DE TEST proporciona una imagen consistente de los bits de control de acceso y del bit de protección de búsqueda.
La instrucción REPONER EL BIT DE REFERENCIA AMPLIADO modifica sólo el bit de referencia. Todos los demás bits de la clave de almacenamiento permanecen sin cambios. El bit de referencia y el bit de cambio son examinados al mismo tiempo para establecer el código de condición.
El registro de referencias proporcionado por el bit de referencia no es necesariamente exacto. Sin embargo, en la mayoría de situaciones, el registro de referencia coincide aproximadamente con la referencia de almacenamiento relacionada. El bit de cambio puede ser establecido en casos en que no ha ocurrido almacenamiento.
Como es observado por otras CPU, las búsquedas y almacenamientos de la clave de almacenamiento debido a las instrucciones que manipulan explícitamente una clave de almacenamiento (INSERTAR CLAVE DE ALMACENAMIENTO AMPLIADA, INSERTAR CLAVE DE ALMACENAMIENTO VIRTUAL, REPONER BIT DE REFERENCIA AMPLIADO, y ESTABLECER CLAVE DE ALMACENAMIENTO AMPLIADA) son ordenados entre ellos mismos y entre referencias de operandos de almacenamiento como si los accesos a la clave de almacenamiento fueran en sí mismos búsquedas y almacenamientos de operandos de almacenamiento, respectivamente.
Protección de Control y Búsqueda de Acceso (ACC/F)
Un bloque de datos en la memoria principal puede ser protegido además por medio de bits de control de acceso y bits de protección de búsqueda previstos en la entrada de la tabla de segmento.
Validez de Acceso (AV) y Control de Acceso (ACC)
A continuación se ha hecho referencia a la fig. 10 que ilustra una realización de un diagrama de flujo de determinación de la protección de control de acceso que ha de ser aplicada a un bloque de datos deseados direccionado por la dirección virtual traducida.
La traducción dinámica de dirección prosigue hasta el punto en el que una entrada de tabla de segmento ha sido buscada a partir de una tabla de segmento utilizada en traducción como se ha descrito en la fig. 6 en el nodo 616. La traducción de dirección continúa como se ha descrito en la fig. 8 al nodo 822 en el que una dirección absoluta a un bloque de datos deseado en almacenamiento o memoria ha sido obtenida. El flujo de la fig. 10 comienza en el nodo
822.
En 1002, un campo de validez de acceso (AV) es obtenido a partir de la entrada de la tabla de segmento. En 1004, se ha hecho una determinación de si el campo de validez de acceso en la entrada de la tabla de segmento está habilitado (AV=1). Si el campo de validez de acceso es cero entonces el campo de control de acceso (ACC) en la entrada de la tabla de segmento no es válido. En 1006, los bits del campo de control de acceso son ignorados. Si el campo de validez de acceso es habilitado, entonces el campo de control de acceso es válido. En 1008, los bits del campo de control de acceso son obtenidos a partir de la entrada de la tabla de segmento. En 1010, el nivel de protección de control de acceso indicado por el campo ACC en la entrada de la tabla de segmento es aplicado al bloque deseado de datos direccionados por la dirección virtual traducida.
En otra realización, se permiten operaciones de almacenamiento al bloque de datos deseado solo si el campo de control de acceso coincide con una clave de acceso proporcionada por una entidad de programa tal como una Palabra de Estado de Programa o un operando de una instrucción de programa se está siendo ejecutada. Una excepción de protección es indicada preferiblemente si se intenta una memoria en el bloque de datos deseado y el campo de control de acceso no coincide con la clave de acceso.
Aún en otra realización, si el campo de validez de acceso está habilitado, es indicada una excepción de protección y una operación de búsqueda una operación de almacenamiento es intentada en el bloque de memoria deseada y el campo de control de acceso de segmento no coincide con el campo de control de acceso de programa.
Validez de Acceso (AV) y Protección de Búsqueda (F)
A continuación se ha hecho referencia a la fig. 11 que ilustra una realización de un diagrama de flujo de determinación de la protección de búsqueda que ha de ser aplicada a un bloque de datos deseados direccionado por la dirección virtual traducida.
La traducción dinámica de dirección prosigue hasta el punto en el que una entrada de tabla de segmento ha sido buscada a partir de una tabla de segmento utilizada en traducción como se ha descrito en la fig. 6 al nodo 616. La traducción de dirección continúa como se ha descrito en la fig. 8 al nodo 822 en el que se ha obtenido una dirección absoluta a un bloque de datos deseado en almacenamiento o memoria. El flujo de la fig. 11 comienza en el nodo
822.
En 1102, un campo de validez de acceso (AV) es obtenido a partir de la entrada de la tabla de segmento. En 1104, se ha hecho una determinación de si el campo de validez de acceso en la entrada de la tabla de segmento está habilitado (AV=1). Si, en 1104, el campo de validez de acceso es cero, entonces en 1106, el bit de protección de búsqueda es ignorado. Si, en 1104, el campo de validez de acceso está habilitado entonces, en 1108, el bit de protección de búsqueda es obtenido a partir de la entrada de la tabla de segmento. En 1110, el nivel de protección de búsqueda indicado por el campo F en la entrada de la tabla de segmento es aplicado al bloque de datos deseado direccionado por la dirección virtual traducida. Las operaciones de búsqueda desde el bloque de datos direccionado por la dirección virtual traducida son permitidas solo si el campo de protección de búsqueda coincide con una clave de acceso. La clave de acceso es proporcionada por una Palabra de Estado de Programa o un operando de una instrucción de programa que está siendo ejecutada. Las operaciones de búsqueda a partir del bloque de datos deseado son permitidas solo si bien el campo de protección de búsqueda está deshabilitado o si tanto el campo de protección de búsqueda como el campo de control de acceso asociado con la dirección virtual es igual a la clave de acceso. Si la clave de acceso es cero, se permiten búsquedas a partir del bloque de datos deseado.
Aún en otra realización, si la clave de acceso de programa es cero, se permiten operaciones de almacenamiento al bloque de memoria deseado y las operaciones de búsqueda a partir del bloque de memoria deseado.
Aún en otra realización, si el campo de validez de acceso y el campo de protección de búsqueda están habilitados, es indicada una excepción de protección en respuesta a una operación de búsqueda que es intentada desde el bloque de memoria deseada y el campo de control de acceso de segmento no coincide con el campo de control de acceso del programa.
ESTABLECER CLAVE DE ALMACENAMIENTO AMPLIADA (SSKE)
las claves de almacenamiento pueden ser establecidas por medio de una instrucción de ESTABLECER CLAVE DE ALMACENAMIENTO AMPLIADA (SSKE). En una realización, la instrucción SSKE tiene el formato ilustrado en la fig.
26.
La clave de almacenamiento para uno o más bloques de 4 Kilobytes es sustituida por el valor en el primer registro de operandos. Cuando la función de SSKE condicional está instalada, ciertas funciones de la operación de establecimiento de claves pueden ser puenteadas. Cuando la función de SSKE no está instalada, o cuando la función de SSKE condicional está instalada y tanto los bits MR como MC del campo M3 son cero, la clave de almacenamiento para el bloque de 4 Kilobytes que está direccionado por el contenido del registro general R2 es reemplazado por bits desde el registro general R1. La instrucción se completa sin cambiar el código de condición.
Cuando la función de SSKE condicional está instalada y cualquiera o ambos de los bits MR y MC son uno, los bits de control de acceso, el bit de protección de búsqueda, y, ocasionalmente, el bit de referencia y el bit de cambio de la clave de almacenamiento que es direccionado con el contenido del registro general R2 son comparados con bits correspondientes en el registro general R1. Si los bits comparados son iguales, entonces no se han hecho cambios en la clave; de otro modo los bits de las claves seleccionados son reemplazados por los bits correspondientes en el registro general R1. La clave de almacenamiento antes de cualquier modificación es insertada en el registro general R1, y el resultado es indicado por el código de condición.
Cuando la función de DAT mejorada está instalada, las anteriores operaciones pueden ser repetidas para las claves de almacenamiento de múltiples bloques de 4 Kilobytes dentro del mismo bloque de 1 MB, sujetas al control del control de múltiples bloques, descrito a continuación. En una realización, el campo M3 tiene el formato que se ha ilustrado en la fig. 27.
Los bits del campo M3 son definidos como sigue:
Reservado: El bit 0 está reservado.
Máscara de Actualización de Bit de Referencia (MR): El bit MR, el bit 1 del campo M3, controla si las actualizaciones al bit de referencia en la clave de almacenamiento pueden ser puenteadas, como se ha descrito a continuación.
Máscara de Actualización de Bit de Cambio: El bit de MC, el bit 2 del campo M3, controla si las actualizaciones al bit de cambio en la clave de almacenamiento pueden ser puenteadas, como se ha descrito a continuación.
Control de Múltiples Bloques (MB): El bit MB, el bit 3 del campo M3, controla si las claves de almacenamiento para múltiples bloques de 4 Kilobytes de almacenamiento pueden ser establecidas, como se ha descrito en Establecer Claves de Almacenamiento en Múltiples Bloques de 4 Kilobytes.
Cuando la función de DAT mejorada no está instalada, la posición 3 de bit del campo M3 está reservada. Cuando la función SSKE condicional está instalada, el tratamiento es el siguiente:
Cuando tanto los bits MR como MC, los bits 1 y 2 del campo M3, son cero, la instrucción se completa aunque la capacidad de SSKE condicional no estuviera instalada. La clave de almacenamiento para el bloque de 4 Kilobytes que es direccionado por el contenido del registro general R2 es reemplazada por bits procedentes del registro general R1, y la instrucción se completa sin cambiar el código de condición.
Cuando cualquiera o ambos de los bits MR y MC son uno, el tratamiento es el siguiente:
Antes de cualquier modificación, el contenido de la clave de almacenamiento para el bloque de 4 Kilobytes que es direccionado por el registro general R2 es colocado en posiciones 48-54 de bit del registro general R1, y el bit 55 del registro general R1 es establecido a cero. Los bits 0-47 y 56-63 del registro permanecen sin cambios. Si se detecta un código de bloques de comprobación inválido (CBC) cuando se busca la clave de almacenamiento, entonces, (a) la clave de almacenamiento completa para el bloque de 4 Kilobytes es reemplazada por los bits 56-62 del registro general R1, (b) el contenido de las posiciones 48-55 de bit del registro general R1 es impredecible, y (c) la instrucción se completa estableciendo el código de condición 3.
Los bits de control de acceso y el bit de protección de búsqueda de la clave de almacenamiento para el bloque de 4 Kilobytes designado son comparados con los campos correspondientes en los bits 56-60 del registro general R1. Si los campos respectivos no son iguales, la clave de almacenamiento completa para el bloque de 4 Kilobytes es reemplazada por bits procedentes del registro general R1, y la instrucción se completa estableciendo el código de condición 1. Cuando los bits de control de acceso y de protección de búsqueda en la clave de almacenamiento son iguales a los bits respectivos en el registro general R1, el tratamiento continúa como se ha descrito más adelante.
Cuando tanto los bits MR como MC son uno, la instrucción se completa estableciendo el código de condición 0. La clave de almacenamiento permanece sin cambios en este caso.
Cuando el bit MR es cero y el bit MC es uno, entonces el bit de referencia de la clave de almacenamiento para el bloque de 4 Kilobytes designado es comparado con el bit 61 del registro general R1. Si los bits son iguales, la instrucción se completa estableciendo el código de condición 0. La clave de almacenamiento permanece sin cambios en este caso. Si los bits no son iguales, entonces o bien (a) la clave de almacenamiento completa para el bloque de 4 Kilobytes designado es reemplazada por los bits en el registro general R1, y la instrucción se completa estableciendo el código de condición 1; o (b) el bit de referencia para la clave de almacenamiento es reemplazado por el bit 61 del registro general R1, el bit de cambio para la clave es impredecible, y la instrucción se completa estableciendo el código de condición 2. Es impredecible si el código de condición 1 ó 2 está establecido.
Cuando la función de DAT mejorada no está instalada, o cuando la función está instalada pero el control de múltiples bloques es cero, el registro general R2 contiene una dirección real. Cuando la función de DAT mejorada está instalada y el control de múltiples bloques es uno, el registro general R2 contiene una dirección absoluta. En el modo de direccionamiento de 24 bits, los bits 40-51 del registro general R2 designan un bloque de 4 Kilobytes en almacenamiento real o absoluto, y los bits 0-39 y 52-63 del registro son ignorados. En un modo de direccionamiento de 31 bits, los bits 33-51 del registro general R2 designan un bloque de 4 Kilobytes en almacenamiento real o absoluto, y los bits 0-32 y 52-63 del registro son ignorados. En el modo de direccionamiento de 64 bits, los bits 0-51 del registro general R2 designan un bloque de 4 Kilobytes en almacenamiento real o absoluto y los bits 52-63 del registro son ignorados. Debido a que es una dirección real o absoluta, la dirección que designa el bloque de almacenamiento no es sometida a traducción dinámica de dirección. La referencia a la clave de almacenamiento no es sometida a una excepción de protección.
El nuevo valor de clave de almacenamiento de siete bits, o los bits seleccionados del mismo, es obtenido a partir de las posiciones 56-62 de bit del registro general R1. El contenido de las posiciones 0-55 y 63 de bit del registro son ignorados. Cuando la función de SSKE condicional está instalada, y cualquiera o ambos bits MR y MC son uno, la posición 63 de bit debería contener un cero; de otro modo, el programa puede no operar compatiblemente en el futuro.
Una función de realización en serie y sincronización de punto de comprobación es realizada antes de que comience la operación y de nuevo después de que la operación haya sido completada, excepto que cuando la función de SSKE condicional está instalada y el código de condición resultante es 0, es impredecible si una función de realización en serie y de sincronización de punto de comprobación es realizada después de que la operación se complete. Para cualquier acceso de memoria, por cualquier CPU o programa de canal, completado al bloque de 4 Kilobytes designado bien antes o después del establecimiento de la clave por esta instrucción, el establecimiento asociado de los bits de referencia y de cambio a uno en la clave de almacenamiento para el bloque también es completado antes o después, respectivamente, de la ejecución de esta instrucción.
Establecer Claves de Almacenamiento en Múltiples Bloques de 4 Kilobytes
Cuando la función de DAT mejorada no está instalada, o cuando la capacidad está instalada, pero el control de múltiples bloques es cero, la clave de almacenamiento para un único bloque de 4 Kilobytes es establecida, como se ha descrito anteriormente. Cuando la función de DAT mejorada está instalada, y el control de múltiples bloques es uno, las claves de almacenamiento para múltiples bloques de 4 Kilobytes dentro de un bloque de 1 Megabyte puede ser establecida, comenzando con el bloque especificado por la dirección del segundo operando, y continuando a la derecha con cada bloque sucesivo hasta el siguiente límite de 1 Megabyte. En este caso, ESTABLECER CLAVE DE ALMACENAMIENTO AMPLIADA es interrumpible, y el tratamiento es el siguiente:
Cuando ocurre una interrupción (distinta de la que sigue a la terminación), el registro general R2 ha sido actualizado y así la instrucción, cuando es vuelta a ejecutar, se reanuda en el punto de interrupción. Si cualquiera o ambos de los bits MR y MC son uno, el código de condición es impredecible; de otro modo el código de condición no resulta cambiado.
Cuando la instrucción se completa sin interrupción, el registro general R2 ha sido actualizado al siguiente límite de 1 Megabyte. Sí cualquiera o ambos de los bits MR y MC son uno, el código de condición 3 es establecido; de otro modo, el código de condición resulta sin cambios.
En cualquiera de los dos casos anteriores, cuando cualquiera o ambos de los bits MR y MC son uno, los bits 48-55 del registro general R1 son impredecibles.
Cuando ocurre un tratamiento de múltiples bloques y los campos R1 y R2 designan el mismo registro, la segunda dirección de operando es colocada en el registro. Cuando ocurre el tratamiento de múltiples bloques en los modos de direccionamiento de 24 bits o 31 bits, los bits situados más a la izquierda que no forman parte de la dirección en posiciones 32-63 de bit del registro general R2 son establecidos a ceros; los bits 0-31 del registro resultan sin cambios.
Cuando la función de SSKE condicional no está instalada, o cuando tanto los bits MR como MC del campo M3 son cero, el código de condición permanece sin cambios. Cuando la función de SSKE condicional está instalada, y cualquiera o ambos de los bits MR y MC son uno, el código de condición es establecido como sigue:
0 - Clave de almacenamiento no establecida
1 - Clave de almacenamiento completa establecida
2 - Clave de almacenamiento parcial establecida
3 - Clave de almacenamiento completa establecida; los bits 48-55 del registro general R1 son impredecibles.
Direccionamiento (dirección especificada por el registro general R2)
Operación privilegiada
Registro de Cambio
El registro de cambio proporciona información en cuanto a qué páginas han de ser guardadas en almacenamiento auxiliar cuando son reemplazadas en el almacenamiento principal. El registro de cambio utiliza el bit de cambio (bit 6) de la clave de almacenamiento. El bit de cambio es establecido a uno cada vez que un acceso de memoria hace que el contenido del bloque de almacenamiento correspondiente sea cambiado, y o bien (a) no se aplica una DAT mejorada, o bien (b) se aplica la DAT mejorada, y cualquiera de lo que sigue es cierto:
El control de formato de STE en la entrada de la tabla de segmento utilizado por la DAT es cero, y la modificación de registro de cambio (CO) en la entrada de la tabla de página utilizada por DAT es cero.
El control de formato de STE en la entrada de la tabla de segmento utilizado por la DAT es uno, y la modificación de registro de cambio (CO) en la entrada de la tabla de página utilizada por DAT es cero.
Un acceso de memoria que no cambia el contenido de almacenamiento puede o no establecer el bit de cambio a uno. El bit de cambio no es establecido a uno para un intento de almacenar si el acceso está prohibido. En particular:
Para la CPU, un acceso de memoria está prohibido siempre que exista una excepción de acceso para ese acceso, o cada vez que exista una excepción que es de mayor prioridad que la prioridad de una excepción de acceso para ese acceso.
Para el subsistema de canal, un acceso de almacenamiento está prohibido siempre que exista una violación de la protección controlada con clave para ese acceso.
El registro de cambio está siempre activo y tiene lugar para todos los accesos de memoria a almacenamiento, incluyendo los hechos por cualquier CPU (excepto cuando son suprimidos por la modificación de registro de cambio, descrita aquí), cualquier función de operador, o el subsistema de canal. Tiene lugar para referencias implícitas hechas por la máquina, tales como los que forman parte de interrupciones.
El registro de cambio no tiene lugar para los operandos de las siguientes instrucciones ya que modifican directamente una clave de almacenamiento sin modificar una posición de almacenamiento:
REPONER BIT DE REFERENCIA AMPLIADO
ESTABLECER CLAVE DE ALMACENAMIENTO AMPLIADA (el bit de cambio es establecido a un valor especificado).
Los bits de cambio que han sido cambiados desde ceros a unos no son necesariamente restaurados a ceros a la entrada de la CPU.
Modificación de Registro de Cambio (CO)
El bit de cambio de la clave de almacenamiento es establecido a uno cada vez que un acceso de memoria hace que el contenido del bloque de almacenamiento correspondiente sea cambiado. Un acceso de memoria que no cambia el contenido de almacenamiento puede o no establecer el bit de cambio a uno. El bit de cambio no es establecido a uno en un intento de almacenar si el acceso está prohibido. La modificación de registro de cambio permite que el establecimiento del bit de cambio de la clave de almacenamiento sea puenteado.
Cuando se aplica la DAT mejorada, y la dirección virtual es traducida por medio de entradas de tabla de DAT, es proporcionada una modificación de registro de cambio (CO) en el bit 55 tanto de la entrada de la tabla de segmento como en la entrada de la tabla de página. Cuando el bit 53 del control de formato de STE (FC) de la entrada de la tabla de segmento es cero, la modificación de registro de cambio en la entrada de la tabla de la página se aplica. Cuando la modificación de registro de cambio en el PTE es cero, ocurre el registro de cambio para operaciones de almacenamiento al bloque de 4 Kilobytes. Cuando la modificación de registro de cambio es uno, es impredecible si el registro de cambio ocurre para operaciones de memoria al bloque de 4 Kilobytes. Cuando el control de formato de STE es uno, se aplica la modificación de registro de cambio de STE. Cuando la modificación de registro de cambio en el STE es cero, ocurre el registro de cambio para operaciones de almacenamiento a cualquiera de los 256 bloques de 4 Kilobytes de segmento. Cuando la modificación de registro de cambio en el STE es uno, es impredecible si el registro de cambio ocurre en cualquiera de los 256 bloques de 4 Kilobytes de segmento.
La modificación de registro de cambio no se aplica a direcciones reales o absolutas, o a una dirección virtual que es traducida por medio de una designación de espacio real.
A continuación se ha hecho referencia a la fig. 12 que ilustra un diagrama de flujo de una realización de obtención del campo de modificación de registro de cambio a partir de la entrada de la tabla de segmento utilizada en la traducción dinámica de dirección de una dirección virtual.
La traducción dinámica de dirección prosigue hasta el punto en el que una entrada de la tabla de segmento ha sido buscada a partir de una tabla de segmento utilizada en la traducción como se ha descrito en la fig. 6 al nodo 616. La traducción de dirección continúa como se ha descrito en la fig. 8 al nodo 822 en el que una dirección absoluta a un bloque de datos deseado en almacenamiento o memoria ha sido obtenida. El flujo de la fig. 12 comienza en el nodo
822.
En 1210, un campo de modificación de registro de cambio (CO) es obtenido a partir de la entrada de la tabla de segmento utilizada en la traducción. La modificación de registro de cambio permite que el bit de cambio de la clave de almacenamiento sea modificado. En 1212, se ha hecho una determinación de si el acceso realizado sobre el bloque de datos deseado direccionado por la dirección virtual traducida es una operación de tipo de memoria o una operación de tipo de búsqueda. Si el acceso es un acceso del tipo de búsqueda, en 1213, no ocurre el establecimiento del bit de cambio y no se aplica la modificación de registro de cambio. Si el acceso era una operación de tipo de memoria entonces, en 1214, se ha hecho una determinación en cuanto a si la modificación de registro de cambio en la entrada de la tabla de segmento está habilitada. Si, en 1214, la modificación de registro de cambio no está habilitada entonces, en 1218, el bit de cambio de la clave de almacenamiento asociada con el bloque deseado es establecido a 1. Si, en 1214, es habilitada la modificación de registro de cambio entonces, en 1216, el bit de cambio de la clave de almacenamiento asociada no es establecido. En 1220, se hace una indicación de que el bloque de datos deseado ha sido modificado.
En otra realización, si se aplica la DAT mejorada y el control de formato en el STE no está habilitado, se obtiene un origen de una tabla de página a partir de la entrada de la tabla de segmento. Una parte de índice de página de la dirección virtual es utilizada como referencia a una entrada de tabla de página en la tabla de página. Una dirección real de trama de página de un bloque de datos pequeño en almacenamiento principal y un campo de modificación de registro de cambio son obtenidos a partir de la entrada de la tabla de página. Cada pequeño bloque de datos tiene una clave de almacenamiento asociada que contiene un bit de cambio. El pequeño bloque de datos es de menor tamaño que el gran bloque de datos y consiste de un bloque de datos de 4 Kilobytes (4096 bytes). Una dirección traducida de un bloque de datos real deseado en almacenamiento principal contiene una combinación de la dirección real de trama de página y de la parte de índice de byte de la dirección virtual. Se ha hecho una determinación de si se ha realizado una operación de memoria o una operación de búsqueda, al bloque de datos real deseado. Si la operación de acceso era una operación de tipo de búsqueda entonces la modificación de registro de cambio no se aplica. Si el acceso era una operación de tipo de almacenamiento, entonces si el campo de modificación de registro de cambio asociado con la dirección virtual está inhabilitado entonces el bit de cambio de la clave de almacenamiento asociado con el bloque de 4 K deseado es establecido a 1. Se proporciona una indicación de que el bloque de 4 K deseado ha sido modificado.
En otra realización, si el campo de modificación de registro de cambio está habilitado, el bit de cambio de la clave de almacenamiento asociada con el bloque de 4 K deseado es impredecible.
Implantación o Puesta en Práctica Comercial
Aunque la arquitectura/z de IBM® está mencionada aquí, uno o más aspectos del presente invento son igualmente aplicables a otras arquitecturas de máquina y/o entornos informáticos que emplean entidades paginables o construcciones similares.
Las implantaciones comerciales de la función de eDAT y otros formatos, instrucciones, y atributos descritos aquí pueden ser puestas en práctica, bien en hardware o bien por programadores, tal como programadores de sistemas operativos, que escriben en, por ejemplo lenguaje ensamblador. Tales instituciones de programación pueden ser almacenadas sobre un medio de almacenamiento final destinadas a ser ejecutadas en forma nativa en un entorno informático tal como el servidor del Sistema z de IBM®, o alternativamente en máquinas que ejecutan otras arquitecturas. Las instrucciones puede ser emuladas en servidores existentes y en servidores futuros de IBM® y en otras máquinas u ordenadores centrales. Puede ser ejecutadas en máquinas en las que la ejecución generalmente es en un modo de emulación.
Uno más aspectos del presente invento son igualmente aplicables por ejemplo, a emulación virtual de máquina, en la que una o más entidades paginables (por ejemplo invitados) se ejecutan en uno o más procesadores. Como ejemplo, invitados paginables son definidos por la arquitectura de Ejecución de Comienzo Interpretativo (SIE) descrita en "IBM® System/370 Extended Architecture", IBM Pub. Nº SA22-7095 (1985).
En modo de emulación, la instrucción específica que está siendo emulada es descalificada, y una subrutina es ejecutada para poner en práctica la instrucción individual, como en una subrutina o unidad, o alguna otra técnica es utilizada para proporcionar una unidad para el hardware específico, como pertenece a la experiencia de los técnicos después de comprender la descripción. Distintas técnicas de emulación de software y hardware están descritas en numerosos Patentes Norteamericanas incluyendo: 5.551.013, 5.574.873, 5.790.825, 6.009.261, 6.308.255, y
6.463.582. Muchas otras enseñanzas ilustran además una variedad de modos para conseguir la emulación de un conjunto de instrucciones con arquitectura para una máquina objetivo.
Otras Variaciones y Arquitecturas
Las distintas realizaciones descritas aquí son sólo ejemplos. Puede haber muchas variaciones en esta realizaciones sin salir del marco del presente invento.
Una o más de las capacidades del presente invento puede ser puesta en práctica en software, firmware, hardware, o alguna combinación de los mismos. Aspectos del invento son beneficiosos para muchos tipos de entornos, incluyendo otros entornos que tienen una pluralidad de zonas, y entornos no divididos o compartimentados. Además pueden ser complejos procesadores no centrales, sino incluso, múltiples procesadores acoplados juntos. Distintos aspectos son aplicables aquí a entornos de un solo procesador.
Aunque se han descrito aquí entornos particulares, de nuevo, muchas variaciones a estos entornos pueden ser puestas en práctica sin salir del marco del presente invento. Por ejemplo si el entorno está dividido lógicamente, entonces pueden ser incluidas más o menos particiones lógicas en el entorno. Además, puede haber múltiples complejos de tratamiento centrales acoplados juntos. Éstas son sólo algunas de las variaciones que pueden hacerse sin salir del marco del presente invento. Adicionalmente son posibles otras variaciones.
Aunque el término "página" es utilizado como referencia a un tamaño fijo o a un área de tamaño previamente definido de almacenamiento, el tamaño de una página puede variar. De modo similar, el tamaño de un bloque puede variar. Puede haber diferentes tamaños de bloques y/o de páginas. Una página puede ser equivalente a un bloque. Otras estructuras pueden ser utilizadas alternativamente o puestas en práctica de otro modo mediante software y/o hardware. Además, en los ejemplos descritos aquí, puede haber muchas variaciones, incluyendo, pero no estando limitadas a palabras o direcciones de diferente tamaño; un número de bits diferente; bits en un orden diferente; más, menos o bits diferentes; más, menos campos o campos diferentes; campos en un orden diferente; diferentes tamaños de campos; etcétera. De nuevo, estas son sólo proporcionadas como ejemplo. Son posibles muchas variaciones.
Una unidad de tratamiento incluye entidades paginables, tales como invitados, anfitriones, otros procesadores, simuladores, máquinas virtuales, y/o otras construcciones similares. Una memoria tampón incluye un área de almacenamiento y/o memoria así como diferentes tipos de estructuras de datos incluyendo, pero no estando limitados a agrupaciones o entidades paginables. Una tabla puede incluir otras estructuras de datos también. Una instrucción puede hacer referencia a otros registros. Además, una página, un segmento, y/o una región pueden ser de tamaños variables diferentes a los descritos aquí.
Uno más aspectos del presente invento pueden estar incluidos en un artículo de fabricación (por ejemplo uno o más productos de programa de ordenador) que tienen, por ejemplo, un medio utilizable por ordenador o legible mediante máquina. Los medios han plasmado, por ejemplo, medios de código de programa legibles por ordenador o lógicos (por ejemplo instrucciones, código, comandos, etc.) para proporcionar y facilitar las capacidades del presente invento. El artículo de fabricación puede ser incluido como una parte de un sistema informático o ser vendido por separado. Adicionalmente, puede proporcionarse al menos un dispositivo de almacenamiento de programa legible mediante una máquina que encarna al menos de un programa de instrucciones ejecutables mediante la máquina para realizar las capacidades del presente invento.
Claims (11)
- REIVINDICACIONES1.- Un método para proteger datos en un sistema de ordenador (100) que tiene una jerarquía de tablas de traducción (410, 412, 414, 416) utilizadas para la traducción de una dirección virtual a una dirección traducida de un bloque de datos en almacenamiento principal, comprendiendo el método:obtener la dirección virtual que ha de ser traducida;obtener un origen inicial de una tabla de traducción de dicha jerarquía de tablas de traducción, comprendiendo dicha jerarquía de tablas de traducción una tabla de segmento;basándose en el origen inicial obtenido, obtener una entrada de tabla de segmento a partir de dicha tabla de segmento, configurada dicha entradas de tabla de segmento para contener un campo de control de formato;en respuesta a una función de DAT mejorada que es habilitada, determinar si dicho campo de control de formato en dicha entrada de tabla de segmento está habilitado; yen respuesta a dicho campo de control de formato que está habilitado, realizar:la determinación de si dicho campo de validez de acceso en dicha entrada de tabla de segmento está habilitado, comprendiendo dicha entrada de tabla de segmento dicho campo de validez de acceso, un campo de control de acceso de segmento, un campo de protección de búsqueda de segmento, y una dirección absoluta de trama de segmento de un gran bloque de datos deseado en el almacenamiento principal;en respuesta a que dicho campo de validez de acceso está habilitado, realizar:permitir memorias o almacenamientos a dicho gran bloque de datos, en el que las memorias están asociadas con la dirección virtual, dichas memorias permitidas solamente en respuesta a dicho campo de control de acceso de segmento que coincide con una clave de acceso de programa proporcionada por cualquiera de una palabra de estado de programa o un operando de una instrucción del programa que está siendo ejecutada; ypermitir búsquedas a partir de dicho gran bloque de datos deseado, en el que las búsquedas son asociadas con la dirección virtual, solamente en respuesta o bien a) que el campo de protección de búsqueda de segmento está inhabilitado, o bien b) en respuesta a que tanto el campo de protección de búsqueda de segmento está habilitado como que la clave de acceso del programa asociada con dicha dirección virtual es igual a dicho campo de control de acceso de segmento; yen respuesta a dicha función de DAT mejorada que no está habilitada, realizar:obtener a partir de dicha entradas de tabla de segmento un origen de una tabla de página y utilizar la parte de índice de página de dicha dirección virtual como referencia a una entrada de tabla de página en dicha tabla de página; yobtener a partir de dicha entrada de tabla de páginas, una dirección real de trama de página de un pequeño bloque de datos en el almacenamiento principal, siendo dicho pequeño bloque de datos menor de tamaño que dicho gran bloque de datos y consistiendo de un bloque de datos de 4 Kilobytes asociado con una clave de almacenamiento, comprendiendo la clave de almacenamiento el campo de control de acceso de almacenamiento y un campo de protección de búsqueda de almacenamiento, en el que una dirección traducida de un pequeño bloque de datos deseado en el almacenamiento principal comprende una combinación de dirección real de trama de página y dicha parte de índice de bytes de dicha dirección virtual; ypermitir memorias a dicho pequeño bloque de datos deseado, en el que las memorias están asociadas con la dirección virtual, siendo permitidas dichas memorias solo en respuesta a dicha clave de almacenamiento que coincide con una clave de acceso de programa proporcionada por cualquiera de una Palabra de Estado de Programao bien un operando de una instrucción de programa que está siendo ejecutada;en el que dicha dirección traducida es cualquiera de una dirección real o dirección absoluta, en el que la dirección real es sometida a prefijado para formar la dirección absoluta, en el que dicha jerarquía de tabla de traducción consiste de una o más de una primera tabla de región, una segunda tabla de región, una tercera tabla de región y dicha tabla de segmento, en el que obtener dicha entrada de tabla de segmento a partir de dicha tabla de segmento comprende cualquiera de A, B, C, D;A) basándose en dicha dirección de origen inicial obtenida de dicha primera tabla de región, utilizar una primera parte de índice de dicha dirección virtual como referencia a una entrada de primera tabla de región en dicha primera tabla de región que contiene una dirección de origen de dicha segunda tabla de región; basándose en dicha dirección de origen de dicha segunda tabla de región, utilizar una segunda parte de índice de dicha dirección virtual como referencia a una entrada de segunda tabla de región en dicha segunda tabla de región que contiene una dirección de origen de dicha tercera tabla de región; basándose en dicha dirección de origen de dicha tercera tabla de región, utilizar una tercera parte de índice de dicha dirección virtual como referencia a una entrada de tercera tabla de región en dicha tercera tabla de región que contiene una dirección de origen de dicha tabla de segmento; y basándose en dicha dirección de origen de dicha tabla de segmento, utilizar una parte de índice de segmento de dicha dirección virtual como referencia a una entrada de tabla de segmento en dicha tabla de segmento;B) basándose en dicha dirección origen inicial obtenida de dicha segunda tabla de región, utilizar la segunda parte de índice de dicha dirección virtual como referencia a dicha entrada de segunda tabla de región en dicha segunda tabla de región que contiene una dirección de origen de dicha tercera tabla de región; basándose en dicha dirección de origen de dicha tercera tabla de región, utilizar dicha tercera parte de índice de dicha dirección virtual como referencia a dicha entrada de tercera tabla de región en dicha tercera tabla de región que contiene la dirección de origen de dicha tabla de segmento; y basándose en dicha dirección de origen de dicha tabla de segmento, utilizar dicha parte de índice de segmento de dicha dirección virtual como referencia a dicha entrada de tabla de segmento en dicha tabla de segmento;C) basándose en dicha dirección de origen inicial obtenida de dicha tercera tabla de región, utilizar dicha tercera parte de índice de dicha dirección virtual como referencia a dicha entrada de tercera tabla de región en dicha tercera tabla de región que contiene la dirección de origen de dicha tabla de segmento; y basándose en dicha dirección de origen de dicha tabla de segmento, utilizar dicha parte de índice de segmento de dicha dirección virtual como referencia a dicha entrada de tabla de segmento en dicha tabla de segmento; yD) basándose en dicha dirección de origen inicial obtenida de dicha tabla de segmento, utilizar dicha parte de índice de segmento de dicha dirección virtual como referencia a dicha entrada de tabla de segmento.
- 2.- El método según la reivindicación 1, en el que en respuesta a que dicha función de DAT mejorada está habilitada y que dicho campo de control de formato no está habilitado, realiza:obtener a partir de dicha entrada de tabla de segmento un origen de una tabla de página y utilizar la parte de índice de paz y de dicha dirección virtual como referencia a una entrada de tabla de página en dicha tabla de página;obtener a partir de dicha entrada de tabla de página, una dirección real de trama de página de un pequeño bloque de datos en almacenamiento principal, siendo dicho pequeño bloque de datos de menor tamaño que dicho gran bloque de datos y consistiendo de un bloque de datos de 4 Kilobytes, estando dicho pequeño bloque de datos asociado con una clave de almacenamiento que comprende un campo de control de acceso de almacenamiento y un campo de protección de búsqueda de almacenamiento, en el que una dirección traducida de un bloque de datos real deseado en almacenamiento principal comprende una combinación de dicha dirección real de trama de página y dicha parte de índice de byte de dicha dirección virtual;permitir memorias a dicho bloque de memoria real deseada, en el que las memorias están asociadas con la dirección virtual, solo en respuesta a dicho campo de control de acceso de programa que coincide con dicho campo de control de acceso de almacenamiento, siendo proporcionado dicho campo de acceso de programa por una entidad de programa que comprende uno cualquiera de una Palabra de Estado de Programa o un operando de una instrucción de programa que está siendo ejecutada; ypermitir búsquedas a partir de dicho bloque de datos deseado en el que las búsquedas están asociadas con la dirección virtual solo en respuesta o bien a) estando el campo de protección de búsqueda de almacenamiento inhabilitado, o bien b) en respuesta tanto al campo de protección de búsqueda de almacenamiento que está habilitado como a que una clave de acceso de programa asociada con la dirección virtual es igual a dicho campo de control de acceso de almacenamiento, siendo proporcionada dicha clave de acceso de programa por cualquiera de una Palabra de Estado de Programa o bien de un operando de una instrucción de programa que está siendo ejecutada.
- 3.- El método según la reivindicación 1, en el que en respuesta a dicha función de DAT mejorada que no está habilitada, realiza:obtener a partir de dicha entrada de tabla de segmento un origen de una tabla de página y utilizar la parte de índice de página de dicha dirección virtual como referencia a una entrada de tabla de página en dicha tabla de página;obtener a partir de dicha entrada de tabla de página, una dirección real de trama de página de un pequeño bloque de datos en almacenamiento principal, siendo dicho pequeño bloque de datos de menor tamaño que dicho gran bloque de datos y consistiendo de un bloque de datos de 4 Kilobytes asociado con una clave de almacenamiento, comprendiendo la clave de almacenamiento un campo de control de acceso de almacenamiento y un campo de protección de búsqueda de almacenamiento, en el que una dirección traducida de un bloque de datos real deseado en almacenamiento principal comprende una combinación de dicha dirección real de trama de página y dicha parte de índice de byte de dicha dirección virtual;permitir memorias a dicho bloque de memoria real deseada, en el que las memorias están asociadas con la dirección virtual, solo en respuesta a que dicho campo de control de acceso de programa coincide con dicho campo de control de acceso de almacenamiento; ypermitir búsquedas a partir de dicho bloque de datos deseado en el que las búsquedas están asociadas con la dirección virtual solo en respuesta o bien a) estando el campo de protección de búsqueda de almacenamiento inhabilitado, o b) en respuesta tanto al campo de protección de búsqueda de almacenamiento que está habilitado, como a que una clave de acceso de programa asociada con la dirección virtual es igual a dicho campo de control de acceso de almacenamiento, siendo proporcionada dicha clave de acceso de programa por cualquiera de una Palabra de Estado de Programa o bien de un operando de una instrucción de programa que está siendo ejecutada.
- 4.- El método según la reivindicación 1, en el que en respuesta a que dicha clave de acceso de programa es cero, permitiendo memorias a dicho bloque de memoria y búsquedas a partir de dicho bloque de memoria deseado, en el que las memorias y las búsquedas son asociados con la dirección virtual.
- 5.- El método según la reivindicación 1, en el que en respuesta a que dicho campo de validez de acceso y dicho campo de protección de búsqueda están habilitados, indicando una excepción de protección en respuesta a que una operación de búsqueda es intentada desde dicho bloque de memoria deseado y a que dicho campo de control de acceso de segmento no coincide con dicho campo de control de acceso de programa, estando asociada dicha operación de búsqueda con dicha dirección virtual.
- 6.- El método según la reivindicación 1, en el que determinar si dicho campo de validez de acceso está habilitado comprende además determinar cualquiera de: a) si un campo de Modificación de Protección de Almacenamiento de un registro de control está inhabilitado o b) si dicho campo de Modificación de protección de Almacenamiento está habilitado y dicho campo de control de acceso de segmento no está habilitado.
- 7.- El método según la reivindicación 1, que comprende además:almacenar información utilizada en dicha traducción de dicha dirección virtual en al menos una memoria tampón de traducción rápida; yrealizar una traducción subsiguiente de una dirección virtual subsiguiente a dicha dirección absoluta de dicho bloque de datos en almacenamiento principal utilizando dicha información almacenada a partir de dicha memoria tampón de traducción rápida en vez de dicha jerarquía de tablas de traducción.
- 8.- El método según la reivindicación 1, en el que en respuesta a que dicha traducción no es nativa a dicha arquitectura de máquina, comprende además:identificar una rutina de software predeterminada para emular dicha traducción, comprendiendo dicha rutina de software predeterminada una pluralidad de instrucciones; yejecutar dicha rutina de software predeterminada.
- 9.- El método según la reivindicación 1, en el que dicho gran bloque de datos comprende un bloque de al menos 1 Megabyte de tamaño.
- 10.- Un sistema que comprende medios adaptados para realizar todas las operaciones del método de acuerdo con cualquier reivindicación de método precedente.
- 11.- Un programa de ordenador que comprende instrucciones para llevar a la práctica todas las operaciones del método de acuerdo con cualquier reivindicación de método precedente, cuando dicho programa de ordenador es ejecutado en un sistema informático.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US972688 | 2007-09-14 | ||
| US11/972,688 US8677098B2 (en) | 2008-01-11 | 2008-01-11 | Dynamic address translation with fetch protection |
| PCT/EP2009/050050 WO2009087133A1 (en) | 2008-01-11 | 2009-01-05 | Dynamic address translation with fetch protection |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2408189T3 true ES2408189T3 (es) | 2013-06-18 |
Family
ID=40473424
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES09700829T Active ES2408189T3 (es) | 2008-01-11 | 2009-01-05 | Traducción dinámica de dirección con protección de búsqueda y carga. |
Country Status (12)
| Country | Link |
|---|---|
| US (6) | US8677098B2 (es) |
| EP (1) | EP2229632B1 (es) |
| JP (1) | JP5373817B2 (es) |
| KR (1) | KR101175615B1 (es) |
| CN (1) | CN101911025B (es) |
| CY (1) | CY1114228T1 (es) |
| DK (1) | DK2229632T3 (es) |
| ES (1) | ES2408189T3 (es) |
| PL (1) | PL2229632T3 (es) |
| PT (1) | PT2229632E (es) |
| SI (1) | SI2229632T1 (es) |
| WO (1) | WO2009087133A1 (es) |
Families Citing this family (45)
| 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 |
| 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 |
| US8335906B2 (en) * | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
| 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 |
| US8041922B2 (en) * | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
| US8677098B2 (en) | 2008-01-11 | 2014-03-18 | 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 |
| 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 |
| US8082405B2 (en) * | 2008-01-11 | 2011-12-20 | International Business Machines Corporation | Dynamic address translation with fetch protection |
| 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 |
| US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
| US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
| US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
| US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
| US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
| US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
| US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
| US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
| GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
| WO2015075674A1 (en) * | 2013-11-21 | 2015-05-28 | Green Cache AB | Systems and methods for direct data access in multi-level cache memory hierarchies |
| US20150261693A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Dynamic storage key assignment |
| 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 |
| US10409725B2 (en) | 2014-05-29 | 2019-09-10 | Samsung Electronics Co., Ltd. | Management of shared pipeline resource usage based on level information |
| JP6504984B2 (ja) * | 2015-09-28 | 2019-04-24 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
| TWI570559B (zh) * | 2015-12-28 | 2017-02-11 | 點序科技股份有限公司 | 快閃記憶體及其存取方法 |
| US10496292B2 (en) * | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
| US10534719B2 (en) | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
| US10489304B2 (en) * | 2017-07-14 | 2019-11-26 | Arm Limited | Memory address translation |
| US10592424B2 (en) | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
| US10613989B2 (en) | 2017-07-14 | 2020-04-07 | Arm Limited | Fast address translation for virtual machines |
| US10353826B2 (en) | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
| US10467159B2 (en) | 2017-07-14 | 2019-11-05 | Arm Limited | Memory node controller |
| US10565126B2 (en) | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
| CN110096457B (zh) * | 2018-01-31 | 2023-05-23 | 联发科技股份有限公司 | 硬件控制系统及硬件控制方法 |
| US10884850B2 (en) | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
| GB2578099B (en) * | 2018-10-15 | 2021-05-12 | Advanced Risc Mach Ltd | Memory access control |
| US10831480B2 (en) | 2019-02-25 | 2020-11-10 | International Business Machines Corporation | Move data and set storage key instruction |
| US10838631B2 (en) * | 2019-02-25 | 2020-11-17 | International Business Machines Corporation | Detection of alteration of storage keys used to protect memory |
| US11151267B2 (en) | 2019-02-25 | 2021-10-19 | International Business Machines Corporation | Move data and set storage key based on key function control |
| JP7238178B2 (ja) * | 2020-02-04 | 2023-03-13 | キオクシア株式会社 | メモリ装置及びメモリ装置を制御する方法 |
| CN114070134B (zh) * | 2022-01-05 | 2022-05-06 | 山东汉德自动化控制设备有限公司 | 一种变频钻机电控装置及其控制方法 |
Family Cites Families (52)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1984002784A1 (en) * | 1982-12-30 | 1984-07-19 | Ibm | Virtual memory address translation mechanism with controlled data persistence |
| 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 |
| JPS62208147A (ja) | 1986-03-10 | 1987-09-12 | Hitachi Ltd | 拡張アドレス変換装置 |
| 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 |
| US5617554A (en) * | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
| 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 |
| 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 |
| JPH1091597A (ja) | 1996-08-13 | 1998-04-10 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ装置におけるトークンにもとづく命令の直列化 |
| 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 |
| US6415305B1 (en) | 1998-04-20 | 2002-07-02 | Microsoft Corporation | Method for displaying editable characters in a divided table cell |
| 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 |
| JP2004328771A (ja) | 1999-02-05 | 2004-11-18 | Sony Corp | エンコーディング装置及び方法、デコーディング装置及び方法、並びに記録媒体 |
| 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 |
| US6879989B2 (en) | 1999-08-16 | 2005-04-12 | International Business Machines Corporation | Modification system for supporting localized data changes in a mobile device |
| 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 |
| 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 |
| US7120746B2 (en) * | 2002-09-09 | 2006-10-10 | International Business Machines Corporation | Technique for data transfer |
| US7703097B2 (en) * | 2002-11-15 | 2010-04-20 | International Business Machines Corporation | Auto-commit processing in an IMS batch application |
| US6981125B2 (en) | 2003-04-22 | 2005-12-27 | International Business Machines Corporation | Method and apparatus for managing shared virtual storage in an information handling system |
| US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
| US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
| US7020761B2 (en) | 2003-05-12 | 2006-03-28 | International Business Machines Corporation | Blocking processing restrictions based on page indices |
| US7530067B2 (en) | 2003-05-12 | 2009-05-05 | International Business Machines Corporation | Filtering processor requests based on identifiers |
| 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 |
| GB2415578B (en) | 2004-06-23 | 2007-07-04 | Hewlett Packard Development Co | Restricting virus access to a network |
| CN100377117C (zh) * | 2005-07-14 | 2008-03-26 | 中国科学院计算技术研究所 | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 |
| 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 |
| JP4469783B2 (ja) * | 2005-11-28 | 2010-05-26 | 株式会社東芝 | メモリ保護装置、メモリ保護システムおよびメモリ保護方法 |
| US8041922B2 (en) * | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
| US8082405B2 (en) * | 2008-01-11 | 2011-12-20 | International Business Machines Corporation | Dynamic address translation with fetch protection |
| US8151083B2 (en) * | 2008-01-11 | 2012-04-03 | International Business Machines Corporation | Dynamic address translation with frame management |
| US8335906B2 (en) * | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
| US8019964B2 (en) * | 2008-01-11 | 2011-09-13 | International Buisness Machines Corporation | Dynamic address translation with DAT protection |
| 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 |
| 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 |
| 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 |
| US8677098B2 (en) | 2008-01-11 | 2014-03-18 | 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 |
| US8037278B2 (en) * | 2008-01-11 | 2011-10-11 | International Business Machines Corporation | Dynamic address translation with format control |
| US8095773B2 (en) * | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
-
2008
- 2008-01-11 US US11/972,688 patent/US8677098B2/en active Active
-
2009
- 2009-01-05 PL PL09700829T patent/PL2229632T3/pl unknown
- 2009-01-05 SI SI200930596T patent/SI2229632T1/sl unknown
- 2009-01-05 DK DK09700829.6T patent/DK2229632T3/da active
- 2009-01-05 ES ES09700829T patent/ES2408189T3/es active Active
- 2009-01-05 PT PT97008296T patent/PT2229632E/pt unknown
- 2009-01-05 KR KR1020107015298A patent/KR101175615B1/ko active Active
- 2009-01-05 CN CN200980101961.9A patent/CN101911025B/zh active Active
- 2009-01-05 EP EP09700829.6A patent/EP2229632B1/en active Active
- 2009-01-05 WO PCT/EP2009/050050 patent/WO2009087133A1/en not_active Ceased
- 2009-01-05 JP JP2010541763A patent/JP5373817B2/ja active Active
-
2013
- 2013-05-16 CY CY20131100390T patent/CY1114228T1/el unknown
- 2013-12-31 US US14/144,664 patent/US9021225B2/en active Active
-
2015
- 2015-02-27 US US14/634,020 patent/US9378128B2/en active Active
-
2016
- 2016-05-20 US US15/159,938 patent/US9934159B2/en active Active
-
2017
- 2017-12-04 US US15/830,160 patent/US10423539B2/en active Active
-
2019
- 2019-06-20 US US16/447,258 patent/US10977190B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US9934159B2 (en) | 2018-04-03 |
| WO2009087133A1 (en) | 2009-07-16 |
| US20160267017A1 (en) | 2016-09-15 |
| EP2229632A1 (en) | 2010-09-22 |
| DK2229632T3 (da) | 2013-06-03 |
| US10423539B2 (en) | 2019-09-24 |
| WO2009087133A9 (en) | 2009-09-24 |
| PT2229632E (pt) | 2013-05-28 |
| JP5373817B2 (ja) | 2013-12-18 |
| US9021225B2 (en) | 2015-04-28 |
| KR101175615B1 (ko) | 2012-08-22 |
| CN101911025A (zh) | 2010-12-08 |
| JP2011509470A (ja) | 2011-03-24 |
| US20140115295A1 (en) | 2014-04-24 |
| US8677098B2 (en) | 2014-03-18 |
| CY1114228T1 (el) | 2016-08-31 |
| EP2229632B1 (en) | 2013-04-10 |
| KR20100126269A (ko) | 2010-12-01 |
| CN101911025B (zh) | 2012-11-07 |
| SI2229632T1 (sl) | 2013-06-28 |
| US20190303301A1 (en) | 2019-10-03 |
| US10977190B2 (en) | 2021-04-13 |
| US20090182971A1 (en) | 2009-07-16 |
| PL2229632T3 (pl) | 2013-08-30 |
| US9378128B2 (en) | 2016-06-28 |
| US20180089103A1 (en) | 2018-03-29 |
| US20150169437A1 (en) | 2015-06-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| 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. | |
| ES2381432T3 (es) | Traducción dinámica de direcciones con calificador con excepción de traducción | |
| US9158711B2 (en) | Creating a program product or system for executing a perform frame management instruction | |
| US8930673B2 (en) | Load page table entry address instruction execution based on an address translation format control field | |
| US8041922B2 (en) | Enhanced dynamic address translation with load real address function | |
| US9244856B2 (en) | Dynamic address translation with translation table entry format control for identifying format of the translation table entry | |
| US9003134B2 (en) | Emulation of a dynamic address translation with change record override on a machine of another architecture | |
| US8335906B2 (en) | Perform frame management function instruction for clearing blocks of main storage | |
| WO2009087135A1 (en) | Dynamic address translation with dat protection |