ES2381428T3 - Traducción de dirección dinámica con gestión de trama. - Google Patents
Traducción de dirección dinámica con gestión de trama. Download PDFInfo
- Publication number
- ES2381428T3 ES2381428T3 ES09700560T ES09700560T ES2381428T3 ES 2381428 T3 ES2381428 T3 ES 2381428T3 ES 09700560 T ES09700560 T ES 09700560T ES 09700560 T ES09700560 T ES 09700560T ES 2381428 T3 ES2381428 T3 ES 2381428T3
- Authority
- ES
- Spain
- Prior art keywords
- address
- storage
- bit
- bits
- entry
- 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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation 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
-
- 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
-
- 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
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Machine Translation (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
Abstract
Un método para llevar a cabo una función de gestión de trama en un procesador (101) capaz de traducir una dirección virtual a una dirección traducida de un bloque de datos en almacenamiento principal en un sistema informático (100) de una arquitectura de máquina que tiene una jerarquía de tablas (410, 412, 414, 416) de traducción utilizadas para la traducción de dicha dirección virtual, estando definida dicha función de gestión de trama para dicha arquitectura de máquina, estando el método caracterizado por que comprende: obtener una instrucción de máquina que contiene un código de operación para una instrucción de activar clave de almacenamiento y borrar; y ejecutar la instrucción de máquina, comprendiendo: obtener un campo de gestión de trama con un campo de clave que comprende una serie de bits de protección de acceso y un campo de indicador del tamaño de bloque; obtener una dirección de operando de una trama de almacenamiento sobre la que ha de llevarse a cabo dicha instrucción de máquina, siendo dicha dirección de operando una entre una dirección de bloque grande de datos y una dirección de un bloque pequeño de datos; en respuesta a la habilitación de una función de activar clave de almacenamiento, poner los bits de protección de acceso de almacenamiento de cada clave de almacenamiento asociada con dicho bloque datos determinado, a un valor de dichos bits de protección de acceso de dicho campo de clave; y en respuesta a la habilitación de una función de borrar, borrar cada bloque datos al que se dirige dicha dirección de operando poniendo a cero todos los bytes de cada bloque de datos.
Description
Traducción de dirección dinámica con gestión de trama.
La presente invención se refiere en general a sistemas y métodos para traducir una dirección virtual en un sistema informático y, más en particular, a sistemas y métodos que llevan a cabo una función de gestión de trama en un sistema informático con capacidad para traducir direcciones virtuales.
La traducción dinámica de direcciones proporciona la capacidad de interrumpir la ejecución de un programa en un momento arbitrario, grabar éste y sus datos en almacenamiento auxiliar, tal como un dispositivo de almacenamiento de acceso directo, y en un momento posterior devolver el programa y los datos a posiciones diferentes del almacenamiento principal para reanudar la ejecución. La transferencia del programa y sus datos entre el almacenamiento principal y el auxiliar puede llevarse a cabo de manera fragmentaria, y la devolución de la información al almacenamiento principal puede producirse en respuesta a un intento por parte de la CPU de acceder a la misma en el momento en que se requiere para la ejecución. Estas funciones pueden llevarse a cabo sin modificación o inspección del programa y sus datos, no requieren ninguna convención de programación explícita en el programa trasladado, y no perturban la ejecución del programa excepto por el retardo temporal implicado.
Con el soporte adecuado por parte del sistema operativo, la capacidad de traducción dinámica de direcciones puede utilizarse para proporcionar a un usuario un sistema en el que el almacenamiento parece mayor que el almacenamiento principal que está disponible en la configuración. Este almacenamiento principal aparente se denomina a menudo almacenamiento virtual, y las direcciones utilizadas para designar posiciones en el almacenamiento virtual se denominan a menudo direcciones virtuales. El almacenamiento virtual de un usuario puede exceder considerablemente el tamaño del almacenamiento principal que está disponible en la configuración y normalmente se mantiene en almacenamiento auxiliar. Se considera que el almacenamiento virtual se compone de bloques de datos, denominados normalmente páginas (también llamados segmentos y regiones). Solamente las páginas del almacenamiento virtual a las que se ha hecho referencia más recientemente son asignadas para ocupar bloques de almacenamiento principal físico. Cuando el usuario hace referencia a páginas de almacenamiento virtual que no aparecen en el almacenamiento principal, éstas son incorporadas al almacenamiento principal sustituyendo páginas que es menos probable que se necesiten. En algunos casos, el almacenamiento virtual se asigna al almacenamiento principal durante un largo período de tiempo (o permanentemente), independientemente de si se hace o no referencia al almacenamiento. 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 recuperar instrucciones desde el almacenamiento virtual o cargar datos o almacenar datos desde el almacenamiento virtual utilizando direcciones virtuales. Las direcciones virtuales asociadas con un rango del almacenamiento virtual definen un espacio virtual. Con el soporte apropiado por parte de un sistema operativo, la capacidad de traducción dinámica de direcciones puede ser utilizada para proporcionar una serie de espacios de direcciones. Estos espacios de direcciones pueden ser utilizados para proporcionar grados de aislamiento entre usuarios. Dicho soporte puede consistir en un espacio de direcciones completamente diferente para cada usuario, proporcionando de ese modo un aislamiento completo, o puede proporcionarse un área compartida mapeando una parte de cada espacio de direcciones a una sola área de almacenamiento común. Asimismo, se prevén instrucciones que permiten a un programa semi-privilegiado acceder a más de uno de dichos espacios de direcciones.
La traducción dinámica de direcciones proporciona la traducción de direcciones virtuales desde múltiples espacios de direcciones diferentes. Estos espacios de direcciones se denominan espacio primario de direcciones, espacio secundario de direcciones y espacios de direcciones especificados por registro de acceso. Asimismo, un programa privilegiado puede provocar el acceso al espacio de direcciones locales. La traducción dinámica de direcciones puede especificarse para direcciones de datos e instrucciones generadas por la CPU.
Lo que se necesita es una capacidad de traducción dinámica de direcciones mejorada que proporcione funcionalidad, capacidad y protecciones adicionales, desconocidas hasta ahora en esta técnica.
La invención da a conocer un método acorde con la reivindicación 1, y un sistema y un programa informático correspondientes.
Lo que se da a conocer es una función de activar clave y una función de gestión de trama para borrado definidas para una arquitectura de máquina de un sistema informático que tiene una jerarquía de tablas de traducción utilizadas para la traducción de la dirección virtual en una dirección real o absoluta de un bloque de datos en una memoria o almacenamiento principal. Las direcciones reales pueden ser sometidas a anteposición de prefijo para formar direcciones absolutas.
En un ejemplo de realización, se obtiene una instrucción de máquina que contiene un código de operación para una instrucción de gestión de trama que tiene un primer campo que identifica un primer registro general y un segundo campo que identifica un segundo registro general. Obtenido por el primer registro general existe un campo de gestión de trama con un campo de clave que tiene una serie de bits de protección de acceso y un campo indicador del tamaño de bloque. A partir del segundo registro general se obtiene una dirección de operando de una trama de almacenamiento sobre la que ha de llevarse a cabo la instrucción de máquina. La dirección de operando es una dirección absoluta a un bloque grande de datos o una dirección real a un bloque pequeño de datos. Si la función activar clave de almacenamiento está habilitada, los bits de protección de acceso de almacenamiento de cada clave de almacenamiento asociada con el bloque de datos determinado se ponen al valor de los bits de protección de acceso del campo de clave. Si la función de borrado está habilitada, se borra cada bloque de datos al que se dirige la dirección de operando poniendo a cero todos los bytes de cada bloque de datos.
En otra realización, la clave de almacenamiento tiene bits de protección de almacenamiento, bits de referencia de almacenamiento y bits de modificación de almacenamiento. El campo de clave tiene un bit de protección contra lectura, un bit de referencia y un bit de modificación. El bloque grande de datos es mayor que el bloque pequeño de datos. Para el bloque pequeño de datos, se obtiene del segundo registro general una dirección de operando del bloque pequeño de datos que tiene una clave de almacenamiento con una serie de bits de protección de acceso de almacenamiento. Los bits de protección de acceso del campo de clave se ponen en los bits de protección de acceso de almacenamiento de la clave de almacenamiento.
A continuación se describirá la invención en relación con ciertas realizaciones ilustradas. Debe entenderse que los expertos en la materia pueden realizar diversos cambios y modificaciones sin apartarse del alcance de la invención.
Las figuras anexas, en las que los mismos números de referencia se refieren a elementos idénticos o funcionalmente similares a través de todas las diferentes vistas y que junto con la siguiente descripción detallada se incorporan a la especificación y forman parte de la misma, sirven para ilustrar diversas realizaciones y para explicar varios principios y ventajas, siempre de acuerdo con la presente invención. Las anteriores y otras características y ventajas de la materia objeto dada a conocer en la presente memoria resultarán evidentes a partir de la siguiente descripción detallada, tomada junto con los dibujos anexos, en los cuales:
la figura 1 muestra una realización de un sistema de ordenador central en el que se llevará a cabo traducción dinámica de direcciones;
la figura 2 da a conocer un ejemplo de sistema de ordenador central emulado, que emula el sistema de ordenador central de una arquitectura de central;
la figura 3 muestra 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 direcciones de la dirección virtual;
la figura 4 muestra una realización en la que se utiliza el ASCE efectivo en la figura 3, para determinar la tabla de traducción superior en la jerarquía de tablas de traducción utilizada en la traducción de la dirección virtual;
la figura 5A muestra una realización del proceso de traducción dinámica de direcciones de una dirección virtual, que utiliza la jerarquía de tablas de traducción al nivel de la tabla de segmentos;
la figura 5B muestra una continuación de la traducción dinámica de direcciones de la figura 5A, en la que el formato de control (FC) de la entrada de la tabla de segmentos (STE, Segment Table Entry) es cero;
la figura 5C muestra una continuación de la traducción dinámica de direcciones de la figura 5A, en la que el formato de control (FC) de la entrada de la tabla de segmentos (STE) es uno;
la figura 6 muestra un diagrama de flujo de una realización de traducción dinámica de direcciones mejorada (eDAT) para obtener un campo de control de formato en una entrada de la tabla de segmentos;
la figura 7 muestra una continuación del diagrama de flujo a partir del nodo 614 de la figura 6;
la figura 8 muestra una continuación del diagrama de flujo a partir del nodo 616 de la figura 6;
la figura 9 muestra un diagrama de flujo de una realización de Ejecutar Función de Gestión de Trama (PFMF, Perform Frame Management Function) en la que se activan las claves de almacenamiento indicadas;
la figura 10 muestra un diagrama de flujo de una realización de Ejecutar Función de Gestión de Trama (PFMF) en la que se borran las tramas indicadas;
la figura 11 ilustra el formato del registro de control 1;
la figura 12 ilustra el formato del registro de control 7;
la figura 13 ilustra el formato del registro de control 13;
la figura 14 muestra el formato de la palabra de estado de programa;
la figura 15 ilustra el formato del registro de prefijo;
la figura 16 ilustra la relación entre direcciones reales y absolutas;
la figura 17 ilustra el formato de la dirección virtual;
la figura 18 muestra el formato del RX de la dirección virtual;
la figura 19 muestra el formato de las entradas de la tabla de regiones;
la figura 20 muestra el formato I de una entrada de la tabla de segmentos;
la figura 21 muestra el formato II de una entrada de la tabla de segmentos;
la figura 22 muestra el formato de una entrada de la tabla de paginas;
la figura 23 muestra el formato de la clave de almacenamiento;
la figura 24 muestra el formato de la instrucción SSKE;
la figura 25 muestra el formato del campo M3; y
la figura 26 muestra el formato de la PFMF.
Debe entenderse que las declaraciones realizadas en la descripción de la presente solicitud no se limitan necesariamente a ninguna de las diversas invenciones reivindicadas. Además, algunas afirmaciones pueden aplicar a algunas características inventivas pero no a otras. Salvo que se indique lo contrario, los elementos singulares pueden estar en plural y viceversa, sin pérdida de generalidad.
Un experto en la materia estará familiarizado con el direccionamiento de almacenamiento en un entorno informático y con la utilización de bits en un campo de dirección o registro para indicar diferentes estados y actuar sobre dichos estados. Además, un experto en la materia estará al corriente de las técnicas de programación informática y del funcionamiento y las interrelaciones entre componentes de sistemas informáticos.
Lo que se da a conocer es un ejemplo de realización de una capacidad de traducción dinámica de direcciones (DAT, Dynamic Address Translation) mejorada. Cuando la capacidad de DAT mejorada está instalada y activa, la traducción DAT puede producir una dirección real de trama de página o una dirección absoluta de trama de segmento, determinadas por el control de formato de la entrada de la tabla de segmentos (STE) en la entrada de la tabla de segmentos. Tal como se utiliza en la presente memoria, los términos "aplica DAT mejorada" significa que son ciertos los puntos siguientes: 1) la capacidad EDAT está instalada; 2) la capacidad EDAT está activa a través del bit 40 del registro de control 0 (CR0); y 3) la dirección se traduce mediante entradas de tabla DAT.
Cuando aplica la DAT mejorada, en el proceso de DAT está disponible la siguiente función adicional:
Un bit de protección de DAT es añadido a las entradas de tabla de regiones, proporcionando una función similar a los bits de protección de DAT en las entradas de tabla de páginas y de segmentos.
Se añade un control de formato de STE a la entrada de la tabla de segmentos. Cuando el control de formato de STE es cero, la DAT procede tal como está definida actualmente, excepto por cuanto que una anulación de la grabación de la modificación en la entrada de la tabla de paginas indica si la activación del bit de modificación puede ser omitida para la página.
Cuando el control de formato de STE es uno, la entrada de la tabla de segmentos contiene asimismo lo siguiente:
Una dirección absoluta de trama de segmento (en lugar de un origen de tabla de páginas) que especifica la posición de almacenamiento absoluta del bloque de 1 megabyte.
Bits de control de acceso y un bit de protección contra escritura que pueden utilizarse opcionalmente en lugar de los bits correspondientes en las claves de almacenamiento individuales del segmento.
Un bit que determina la validez de los bits de control de acceso y un bit de protección contra escritura en la entrada de la tabla de segmentos.
Una anulación de la grabación de la modificación que indica si la configuración del bit de modificación puede ser omitida en las claves de almacenamiento individuales del segmento.
Haciendo referencia a la figura 1, se representan componentes representativos de un sistema 100 del ordenador central. Tal como es conocido en la técnica, en un sistema informático pueden utilizarse otras disposiciones de componentes.
El entorno informático central está basado preferentemente en la arquitectura z/Architecture® que ofrece International Business Machines Corporation (IBM®), Armonk, Nueva York. La arquitectura z/Architecture® se describe de manera más completa en el documento: z/Architecture® Principles of Operation, publicación de IBM® número SA22-7832-05, 6ª edición, (abril de 2007). Los entornos informáticos basados en la arquitectura z/Architecture® incluyen, por ejemplo eServer y zSeries®, ambos de IBM®.
El ordenador central representativo 100 comprende una o varias CPUs 101 en comunicación con el almacenamiento principal (memoria 102 del ordenador) así como interfaces de E/S a dispositivos 111 de almacenamiento y redes 110 para comunicar con otros ordenadores o con redes de área de almacenamiento (SANs, storage area networks) y similares. La CPU puede tener una capacidad (función o unidad) 103 de traducción dinámica de direcciones (DAT, Dynamic Address Translation) para transformar direcciones de programa (direcciones virtuales) en direcciones de memoria reales. Una capacidad DAT comprende habitualmente una memoria tampón 107 de traducción anticipada para almacenar en memoria caché traducciones, de manera que un posterior acceso al bloque de memoria informática 102 no requiere el retardo de la traducción de la dirección. Habitualmente, se utiliza una memoria caché 109 entre la memoria informática 102 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 (de menor nivel) entre la memoria caché grande y cada CPU. En algunas implementaciones las memorias caché de nivel inferior están divididas para proporcionar memorias caché de bajo nivel separadas para búsqueda de instrucciones y accesos de datos. En una realización, una instrucción es recuperada desde la memoria 102 mediante una unidad 104 de recuperación de instrucciones a través de una memoria caché 109. La instrucción es descodificada en una unidad (106) de descodificación de instrucciones y enviada (con otras instrucciones, en algunas realizaciones) a unidades 108 de ejecución de instrucciones. Habitualmente se utilizan varias unidades 108 de ejecución, por ejemplo una unidad de ejecución aritmética, una unidad de ejecución de punto flotante y una unidad de ejecución de instrucción de bifurcación. La instrucción es ejecutada mediante la unidad de ejecución, accediendo según se requiera a operandos desde la memoria o desde registros especificados por la instrucción. Si ha de de accederse a (cargar o memorizar) un operando desde la memoria 102, habitualmente una unidad 105 de almacenamiento de carga maneja el acceso bajo el control de la instrucción que está siendo ejecutada.
En una realización, la invención puede ponerse en práctica mediante soporte lógico (en ocasiones, denominado código interno autorizado (LIC, Licensed Internal Code), soporte lógico inalterable, microcódigo, milicódigo, picocódigo y similares, cualquiera de los cuales puede ser consistente con la presente invención). El código del programa de soporte lógico que realiza la presente invención es accedido habitualmente mediante el procesador, conocido asimismo como CPU (Central Processing Unit, unidad central de proceso) 101 del sistema informático 100 desde un medio 111 de almacenamiento a largo plazo, tal como una unidad de CD-ROM, una unidad de cinta o un disco duro. El código de programa de soporte lógico puede realizarse en cualquiera de una serie de medios conocidos para utilizar con un sistema de procesamiento de datos, tales como un disquete, un disco duro o un CD-ROM. El código puede ser distribuido en un medio de este tipo, o puede distribuirse a los usuarios desde la memoria informática 102 o el almacenamiento de un sistema informático, sobre una red 110, hasta otros sistemas informáticos para su utilización por los usuarios de dichos otros sistemas.
Alternativamente, el código de programa informático puede realizarse en la memoria 102, y ser accedido mediante el procesador 101 utilizando el bus del procesador. Dicho código de programa incluye un sistema operativo que controla el funcionamiento y la interacción de los diversos componentes informáticos y uno o varios programas de aplicación. Normalmente, el código de programa es paginado desde un medio 111 de almacenamiento denso a la memoria 102 de alta velocidad, en la que está disponible para ser procesado por el procesador 101. Las técnicas y métodos para realizar códigos de programa de soporte lógico en memoria, en un medio físico y/o distribuir código de soporte lógico a través de redes, son bien conocidos y no se describirán en mayor profundidad en la presente memoria. El código de programa, cuando ha sido creado y almacenado en un medio concreto (que incluye de forma no limitativa módulos de memoria electrónica (RAM), memoria flash, discos compactos (CD), DVDs, cinta magnética y similares) se denomina a menudo un "producto de programa informático". Habitualmente, el medio del producto de programa informático es legible mediante un circuito de procesamiento, preferentemente en un sistema informático, para su ejecución mediante el circuito de procesamiento.
En la figura 2 se proporciona en un ejemplo de sistema 201 de ordenador central emulado, que emula un sistema 100 de ordenador central de arquitectura central. En el sistema 201 de ordenador central emulado, el procesador central (CPU) 208 es un procesador central emulado (o procesador central virtual) y comprende un procesador 207 de emulación que tiene una arquitectura de conjunto de instrucciones nativas diferente a la utilizada por el procesador 101 del ordenador central 100. El sistema 201 de ordenador central emulado tiene una memoria 202 accesible al procesador 207 de emulación. En el ejemplo de realización, la memoria 207 está dividida en una parte de memoria 202 del ordenador central y una parte de rutinas 203 de emulación (las rutinas que proporcionan la emulación pueden ser parte de la memoria central). La memoria 102 del ordenador central está disponible para programas del ordenador central emulado 201 dependiendo de la arquitectura del ordenador central. El procesador 207 de emulación ejecuta instrucciones nativas de un conjunto de instrucciones diseñado, de una arquitectura diferente a la del procesador emulado 208, las instrucciones nativas obtenidas en la memoria 203 de rutinas de emulación, y puede acceder a una instrucción central para su ejecución desde un programa en una memoria 102 del ordenador central, mediante la utilización de una o varias instrucciones obtenidas en una rutina de secuencia y acceso/descodificación que puede descodificar la instrucción o instrucciones accedidas, para determinar una rutina de ejecución de instrucciones nativa con objeto de emular la función de la instrucción central accedida.
Otras capacidades que están definidas para la arquitectura del sistema 100 de ordenador central pueden ser emuladas mediante rutinas de capacidades diseñadas, que incluyen capacidades tales como registros de propósito general, registros de control, traducción dinámica de direcciones y soporte del subsistema de E/S y memoria caché del procesador, por ejemplo. Las rutinas de emulación pueden aprovechar asimismo 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. Puede disponerse asimismo equipamiento físico especial y motores de descarga para ayudar al procesador 207 a emular la función del ordenador central 100.
Procesador informático y registros
En una realización, una funcionalidad de instrucciones de programa de la CPU comunica con una serie 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 de sólo lectura. Otro equipamiento físico y/o soporte lógico puede asimismo leer/escribir en uno o varios de los registros accesibles por la CPU. Un código de operación (opcode) de instrucción determina qué tipo de registro ha de utilizarse en cualquier operación concreta de instrucción de la máquina.
Registros generales
Las instrucciones pueden designar información en uno o varios de 16 registros generales. Los registros generales pueden ser utilizados como registros de dirección base y registros de índice en aritmética de direcciones y como acumuladores en operaciones generales de aritmética y de lógica. Cada registro contiene 64 oposiciones de bit. Los registros generales están identificados por los números 0 a 15 y se designan mediante un campo R de cuatro bits en una instrucción. Algunas instrucciones proporcionan direccionamiento a múltiples registros generales teniendo para ello varios campos R. Para algunas instrucciones, la utilización de un registro general específico es implícita en lugar de estar designada explícitamente mediante un campo R de la instrucción.
Para algunas operaciones, los bits 32-63 o los bits 0-63 de dos registros generales adyacentes están acoplados, proporcionando respectivamente un formato de 64 bits o de 128 bits. En estas operaciones, el programa debe designar un registro de número par que contenga los 32 ó 64 bits situados más al izquierda (de orden superior). El siguiente registro de número mayor contiene los 32 ó 64 bits de la derecha (orden inferior). Además de su utilización como acumuladores en operaciones generales de aritmética y lógica, 15 de los 16 registros generales se utilizan asimismo como registros de dirección base y de índice en la generación de direcciones. En estos casos, los registros se designan mediante un campo B o un campo X de cuatro bits en una instrucción. Un valor cero en el campo B o X especifica que no ha de aplicarse base o índice y, por lo tanto, el registro general 0 no puede ser designado conteniendo un índice o una dirección base.
Registros de control
Los registros de control sirven para mantener y manipular información de control externa a la palabra de estado de programa. La CPU tiene 16 registros de control, cada uno de los cuales tiene 64 oposiciones de bit. Las posiciones de bit en los registros están asignadas a capacidades concretas en el sistema, tales como la grabación de eventos de programa, y son utilizadas para especificar que una operación puede tener lugar o para proporcionar información especial requerida por la capacidad. Los registros de control están identificados por los números 0-15 y se designan mediante campos R de cuatro bits en las instrucciones CONTROL DE CARGA y CONTROL DE ALMACENAMIENTO. Estas instrucciones pueden dirigirse a múltiples registros de control.
Registro de control 1
El registro de control 1 contiene el elemento de control del espacio primario de direcciones (PASCE, Primary Address Space Control Element). En una realización, el registro de control 1 tiene uno de los dos formatos que se muestran en la figura 11, dependiendo del bit (R) de control del espacio real en el registro.
Los campos seleccionados en el elemento de control del espacio primario de direcciones (PASCE) están asignados como sigue:
Origen de tabla de segmentos o de tabla de regiones primaria: los bits 0-51 de la designación de la tabla de segmentos o la tabla de regiones primaria en el registro de control 1, con 12 ceros añadidos a la derecha, forman una dirección de 64 bits que indica el comienzo de la tabla de segmentos o la tabla de regiones primaria. Es impredecible si la dirección es real o absoluta. Esta tabla se denomina tabla de segmentos o tabla de regiones
5 primaria puesto que se utiliza para traducir direcciones virtuales en el espacio primario de direcciones.
Control del espacio real primario (R): si el bit 58 del registro de control 1 es cero, el registro contiene una designación de tabla de segmentos o de tabla de regiones. 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 anticipada de una entrada de la tabla de segmentos impide que la entrada y la copia
10 de la tabla de páginas de memoria tampón de traducción anticipada que ésta designa, sean utilizadas cuando se traducen referencias al espacio primario de direcciones, incluso con una coincidencia entre el origen del símbolo en el registro de control 1 y el origen de la tabla en la entrada de la memoria tampón de traducción anticipada.
Control primario del tipo de designación (DT, Designation Type): cuando R es cero, el tipo de designación de tabla en el registro de control se especifica mediante los bits 60 y 61 en el registro, como sigue:
Bits 60 y 61 Tipo de designación
11 Primera tabla de regiones
10 Segunda tabla de regiones
01 Tercera tabla de regiones
00 Tabla de segmentos
Bits de control primario del tipo de designación (DT)
15 Cuando R es cero, los bits 60 y 61 deben ser 11 binario cuando se realiza un intento de utilizar el PASCE para traducir una dirección virtual en la que el bit situado más a la izquierda está en las posiciones de bits 0-10 de la dirección. De forma similar, los bits 60 y 61 deben ser 11 ó 10 binario cuando el bit situado más al izquierda está en las posiciones de bit 11-21 de la dirección, y deben ser 11, 10 ó 01 binario cuando el bit situado más a la izquierda está en las posiciones de bits 22-32 de la dirección. En otro caso, se reconoce una excepción de tipo ASCE.
20 Longitud de la tabla de segmentos o la tabla de regiones primaria (TL): los bits 62 y 63 de la designación de tabla de regiones primaria o la designación de tabla de segmentos en el registro de control 1 especifica la longitud de la tabla de regiones primaria o la tabla de segmentos en unidades de 4096 bytes, haciendo variable de ese modo la longitud de la tabla de regiones o la tabla de segmentos en múltiplos de 512 entradas. La longitud de la tabla de segmentos o la tabla de regiones primaria, en unidades de 4096 bytes, es de uno más que el valor de TL. Los
25 contenidos del campo de longitud se utilizan para determinar si la parte de la dirección virtual (RFX, RSX, RTX o SX) a traducir mediante la tabla designa una entrada que cae dentro de la tabla.
Origen del símbolo de espacio real primario: los bits 0-55 de la designación de espacio real primario 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 usar entradas de memoria tampón de traducción anticipada que proporcionan una traducción virtual igual a
30 real, para referencias del espacio primario de direcciones. Aunque esta dirección se utiliza solamente como símbolo y no se utiliza para realizar una referencia de almacenamiento, ha de seguir siendo una dirección válida; de lo contrario puede utilizarse una entrada de memoria tampón de traducción anticipada incorrecta cuando se utilizan los contenidos del registro de control 1.
Los siguientes bits del registro de control 1 no están asignados o se ignoran: bits 52, 53 y 59 si el registro contiene
35 una designación de tabla de regiones o designación de tabla de segmentos, y 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 del espacio secundario de direcciones (SASCE, Secondary Address Space Control Element). En una realización, el registro de control 7 tiene uno de los dos formatos que se
40 ilustran en la figura 12, dependiendo del bit (R) de control del espacio real en el registro.
Registro de control 13
El registro de control 13 contiene el elemento de control del espacio de direcciones locales (HASCE, Home Address Space Control Element). En una realización, el registro de control 13 tiene uno de los dos formatos que se ilustran en la figura 13, dependiendo del bit (R) de control del espacio real en el registro.
La CPU tiene 16 registros de acceso numerados del 0 al 15. Un registro de acceso consiste en 32 posiciones de bits 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 direcciones (DAT) para traducir referencias a un espacio de direcciones correspondiente. Cuando la CPU está en un modo denominado modo de registro de acceso (controlado por bits en la palabra de estado de programa), un campo de instrucción B, utilizado para especificar una dirección lógica para una referencia de operandos de almacenamiento, designa un registro de acceso, y el ASCE especificado por el registro de acceso es utilizado por la DAT para la referencia realizada. Para algunas instrucciones, se utiliza un campo R en lugar de un campo B. Se proporcionan instrucciones para cargar y memorizar los contenidos de los registros de acceso y para desplazar los contenidos de un registro de acceso a otro.
Cada uno de los registros de acceso 1-15 puede designar cualquier espacio de direcciones, incluyendo el espacio de instrucciones actual (el espacio primario de direcciones). El registro de acceso 0 designa el espacio de instrucciones primario. Cuando se utiliza uno de los registros de acceso 1-15 para designar un espacio de direcciones, la CPU determina qué espacio de direcciones se designa traduciendo los contenidos del registro de acceso. Cuando se utiliza el registro de acceso 0 para designar un espacio de direcciones, la CPU trata el registro de acceso como indicativo del espacio de instrucciones primario, y no examina los contenidos reales del registro de acceso. Por lo tanto, los 16 registros de acceso pueden designar, en cualquier momento, el espacio de instrucciones primario y un máximo de otros 15 espacios.
Palabra de estado de programa (PSW, program status word)
La palabra de estado de programa incluye la dirección de la instrucción, el código de condición y otra información utilizada para controlar la secuenciación de instrucciones y para determinar el estado de la CPU. La palabra deestado de programa activa o de control se denomina la palabra de estado de programa actual. Ésta rige el programa que se está ejecutando 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 estímulos externos. Cuando se produce una interrupción, la CPU sitúa la palabra de estado de programa actual en una posición de almacenamiento asignada, denominada la posición de la palabra de estado de programa antigua, para la clase concreta de interrupción. La CPU recupera una nueva palabra de estado de programa desde una segunda posición de almacenamiento asignada. Esta nueva palabra de estado de programa determina el nuevo programa a ejecutar. Cuando ha finalizado el procesamiento de la interrupción, el programa que maneja la interrupción puede recargar la palabra de estado de programa antigua, haciendo que sea de nuevo la palabra de estado de programa actual, de manera que puede proseguir el programa interrumpido.
Existen seis clases de interrupciones: externa, E/S, control de la máquina, programa, reinicio y llamada del supervisor. Cada clase tiene un par distinto de posiciones de palabra de estado de programa antigua y palabra de estado de programa nueva asignadas permanentemente en almacenamiento real.
Palabra de estado de programa actual
La palabra de estado de programa actual en la CPU contiene información necesaria para la ejecución del programa activo actualmente. La palabra de estado de programa tiene 128 bits de longitud e incluye la dirección de instrucción, el código de condición y otros campos de control. En general, la palabra de estado de programa se utiliza para controlar la secuenciación de instrucciones y para mantener e indicar gran parte del estado de la CPU, en relación con el programa actualmente en ejecución. En los registros de control se contiene información adicional de control y de estado, y es asignada permanentemente a posiciones de almacenamiento. El estado de la CPU puede ser modificado cargando una nueva palabra de estado de programa o parte de una palabra de estado de programa.
Durante una interrupción de la CPU el control se conmuta memorizando la palabra de estado de programa actual, para conservar el estado de la CPU, y cargando a continuación una nueva palabra de estado de programa. La ejecución de CARGAR PSW o CARGAR PSW EXTENDIDA, o la finalización satisfactoria de la secuencia de carga de programa inicial, introducen una nueva palabra de estado de programa. La dirección de la instrucción es actualizada mediante la ejecución secuencial de instrucciones y sustituida mediante bifurcaciones satisfactorias. Se prevén otras instrucciones que funcionan sobre una parte de la palabra de estado de programa.
Una palabra de estado de programa nueva o modificada se hace activa (es decir, la información introducida en la palabra de estado de programa actual asume el control sobre la CPU) cuando se ha completado la interrupción o la ejecución de una instrucción que cambia la palabra de estado de programa. La interrupción para la grabación del evento de programa (PER, Program Event Recording) asociada con una instrucción que cambia la palabra de estado de programa se produce bajo el control de la máscara PER efectiva al comienzo de la operación. Los bits 0-7 de la palabra de estado de programa se denominan colectivamente la máscara de sistema. En una realización, la palabra de estado de programa tiene el formato que se ilustra en la figura 14.
Lo que sigue es un breve compendio de las funciones de campos seleccionados de la palabra de estado de programa.
Modo DAT (T): el bit 5 controla si tiene lugar traducción dinámica de direcciones implícita de direcciones lógicas y de instrucciones utilizadas para acceder al almacenamiento. Cuando el bit 5 es cero, DAT está inactiva y las direcciones lógicas y de instrucciones se tratan como direcciones reales. Cuando el bit 5 es uno, DAT está activa, y se invoca el mecanismo de traducción dinámica de direcciones.
Clave PSW: los bits 8 a 11 constituyen la clave de acceso para referencias de almacenamiento mediante la CPU. Si la referencia está sujeta a protección controlada por clave, la clave PSW es emparejada con una clave de almacenamiento cuando se almacena información o cuando se recupera información desde una posición que está protegida contra lectura. Sin embargo, para cada uno de los operandos MOVER A PRIMARIO, MOVER A SECUNDARIO, MOVER CON CLAVE, MOVER CON CLAVE FUENTE y MOVER CON CLAVE DESTINO, se utiliza una clave de acceso específica como operando en lugar de la clave PSW.
Control del espacio de direcciones (AS, Address Space): los bits 16 y 17, junto 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 se fija al valor 0, 1, 2 ó 3, dependiendo del resultado obtenido en la ejecución de ciertas instrucciones. La mayor parte de las operaciones lógicas y aritméticas, así como algunas otras operaciones, activan el código de condición. Lainstrucción BIFURCACIÓN EN CONDICIÓN puede especificar cualquier selección de los valores del código de condición como criterio para la bifurcación.
Dirección de instrucción: los bits 64 a 127 de la palabra de estado de programa son la dirección de instrucción. Esta dirección indica la posición del bit más a la izquierda de la siguiente instrucción a ejecutar, salvo que la CPU esté en el estado de espera (el bit 14 de la palabra de estado de programa vale uno).
Tipos de direcciones y formatos
Con la finalidad de direccionar el almacenamiento principal, se reconocen tres tipos básicos de direcciones: absoluta, real y virtual. Las direcciones se distinguen en función de las transformaciones que se aplica a la dirección durante un acceso de almacenamiento. La traducción de direcciones convierte una dirección virtual en una dirección real. La anteposición de un prefijo convierte una dirección real en una dirección absoluta. Además de los tres tipos básicos de direcciones, se definen tipos adicionales que se tratan como uno u otro de los tres tipos básicos, en función 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 se utiliza para un acceso de almacenamiento sin ninguna transformación realizada sobre la misma. El subsistema de canales y todas las CPUs de la configuración se refieren a una posición de almacenamiento principal compartido mediante la utilización de la misma dirección absoluta. El almacenamiento principal disponible se asigna usualmente a direcciones absolutas contiguas que comienzan en 0, y las direcciones se asignan en bloques de 4 kilobytes completos sobre límites integrales. Se reconoce una excepción cuando se realiza un intento de utilizar una dirección absoluta en un bloque que no ha sido asignado a posiciones físicas. En algunos modelos, pueden disponerse controles de reconfiguración del almacenamiento que permiten al operador cambiar la correspondencia entre direcciones absolutas y direcciones físicas. Sin embargo, en todo momento, una posición física no está asociada a más de una dirección absoluta. El almacenamiento que consiste en posiciones de byte secuenciadas de acuerdo con sus direcciones absolutas se denomina almacenamiento absoluto.
Una dirección real identifica una posición en almacenamiento real. Cuando se utiliza una dirección real para un acceso al almacenamiento principal, ésta es transformada, mediante la anteposición de un prefijo, para formar una dirección absoluta. En todo momento existe un mapeo de dirección real a dirección absoluta para cada CPU en la configuración. Cuando es utilizada mediante una CPU una dirección real para acceder al almacenamiento principal, ésta puede ser transformada en una dirección absoluta mediante la anteposición de un prefijo. La transformación concreta está definida por el valor en el registro de prefijos para la CPU. El almacenamiento que consiste en posiciones de byte secuenciadas de acuerdo con sus direcciones reales se denomina almacenamiento real.
Una dirección virtual identifica una posición en el almacenamiento virtual. Cuando se utiliza una dirección virtual para un acceso al almacenamiento principal, ésta puede ser traducida mediante traducción dinámica de direcciones, a una dirección real que puede ser sometida a anteposición de prefijo para formar una dirección absoluta, o directamente a una dirección absoluta.
Una dirección virtual primaria es una dirección virtual que ha de ser traducida mediante el elemento de control del espacio primario de direcciones (PASCE). En el modo de espacio primario, las direcciones lógicas son tratadas como direcciones virtuales primarias. En el modo de espacio primario, el modo de espacio secundario o el modo de registros de acceso las direcciones de instrucción son tratadas como direcciones virtuales primarias. La primera dirección de operando de MOVER A PRIMARIO y la segunda dirección de operando de MOVER A SECUNDARIO se tratan como direcciones virtuales primarias.
Una dirección virtual secundaria es una dirección virtual que ha de ser traducida mediante el elemento de control del espacio secundario de direcciones (SASCE). En el modo de espacio secundario, las direcciones lógicas son tratadas como direcciones virtuales secundarias. La segunda dirección de operando de MOVER A PRIMARIO y la primera dirección de operando de MOVER A SECUNDARIO se tratan como direcciones virtuales secundarias.
Dirección virtual especificada por AR
Una dirección virtual especificada por AR es una dirección virtual que ha de ser traducida mediante un elemento de control del espacio direcciones especificado por registro de acceso. En el modo de registro de acceso las direcciones lógicas son tratadas como direcciones especificadas por AR.
Una dirección virtual local es una dirección que ha de ser traducida mediante el elemento de control del espacio de direcciones locales (HASCE). En el modo de espacio local, las direcciones lógicas y las direcciones de instrucciones son tratadas como direcciones de estructura virtuales locales.
Las direcciones utilizadas para recuperar instrucciones del almacenamiento son denominadas direcciones de instrucción. Las direcciones de instrucción se tratan como direcciones reales en el modo real, como direcciones virtuales primarias en el modo del espacio primario, el modo del espacio secundario o el modo de registros de acceso, y como direcciones virtuales locales en el modo del espacio local. 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 se lleve a cabo ninguna transformación mediante la traducción dinámica de direcciones o mediante la anteposición de prefijos. Una dirección efectiva puede especificarse directamente en un registro o puede ser el resultado de aritmética de direcciones. La aritmética de direcciones es la suma de la base y el desplazamiento, o de la base, el índice y el desplazamiento.
Anteposición de prefijos
La anteposición de prefijos proporciona la capacidad de asignar el intervalo de direcciones reales 0-8191 a un bloque diferente en almacenamiento absoluto para cada CPU, permitiendo por lo tanto que varias CPU compartan el almacenamiento principal para funcionar simultáneamente con un mínimo de interferencia, especialmente en el procesamiento de interrupciones. La anteposición de prefijos provoca que las direcciones reales en el intervalo 08191 correspondan, una a una, a un bloque de de direcciones absolutas de 8 kilobytes (área de prefijos) identificado por el valor en las posiciones de bit 0-50 del registro de prefijo para la CPU, y que el bloque de direcciones reales identificado por dicho valor en el registro de prefijo correspondan, una a una, a direcciones absolutas 0-8191. Las restantes direcciones reales son iguales que las correspondientes direcciones absolutas. Esta transformación permite que cada CPU acceda a la totalidad del almacenamiento principal, incluyendo los primeros 8 kilobytes y las posiciones designadas por los registros de prefijo de otras CPUs.
El prefijo es una cantidad de 51 bits contenida en las posiciones de bit 0-50 del registro de prefijos. En una realización, el registro de prefijos tiene el formato que se muestra en la figura 15.
Cuando se aplica anteposición de prefijos, la dirección real se transforma en una dirección absoluta utilizando una de las siguientes reglas, dependiendo de los bits 0-50 de la dirección real:
Si los bits 0-50 de la dirección son todo ceros, se sustituyen con los bits 0-50 del prefijo.
Si los bits 0-50 de la dirección son iguales a los bits 0-50 del prefijo, se sustituyen con ceros.
Si los bits 0-50 de la dirección no son todo ceros o no son iguales a los bits 0-50 del prefijo, no cambian.
Solamente la dirección presentada para el almacenamiento es traducida mediante la anteposición de prefijo. Los contenidos de la fuente de la dirección no cambian.
La distinción entre direcciones reales y absolutas se realiza incluso cuando el registro de prefijo contiene todo ceros, en cuyo caso una dirección real y su dirección absoluta correspondiente son idénticas.
La relación entre direcciones reales y absolutas se representa gráficamente tal como muestra la figura 16.
Un espacio de direcciones 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 el almacenamiento. La secuencia comienza en cero y avanza de izquierda a derecha.
Cuando una dirección virtual es utilizada por una CPU para acceder al almacenamiento principal, en primer lugar es transformada, mediante traducción dinámica de direcciones (DAT), a una dirección real o absoluta. Además, las direcciones reales pueden ser sometidas a anteposición de prefijo para formar una dirección absoluta. La DAT puede utilizar una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos y una tabla de páginas como parámetros de transformación. La designación (origen y longitud) de la tabla de nivel superior para un espacio de direcciones específico se denomina un elemento de control del espacio de direcciones (ASCE, Address Space Control Element) y se encuentra, para su utilización por la DAT, en un registro de control o especificada mediante un registro de acceso. Alternativamente, la ASCE para un espacio de direcciones puede ser una designación de espacio real, lo que indica que la DAT ha de traducir la dirección virtual simplemente tratándola como una dirección real y sin utilizar ninguna tabla.
La DAT utiliza, en momentos diferentes, la ASCE de diferentes registros de control o especificada por los registros de acceso. La elección está determinada por el modo de traducción especificado en la palabra de estado de programa actual. Están disponibles cuatro modos de traducción: modo del espacio primario, modo del espacio secundario, modo del registro de acceso y modo del espacio local. Dependiendo del modo de traducción son direccionables diferentes espacios de direcciones.
Cuando la CPU está en el modo del espacio primario o en el modo del espacio secundario, puede traducir en cualquier momento direcciones virtuales pertenecientes a los dos espacios de direcciones (el espacio primario de direcciones y el espacio secundario de direcciones). Cuando la CPU está en el modo de registro de acceso, en cualquier momento puede traducir direcciones virtuales de hasta 16 espacios de direcciones (el espacio primario de direcciones y hasta 15 espacios de direcciones especificados por AR). Cuando la CPU está en el modo de espacio local, en cualquier momento puede traducir direcciones virtuales del espacio de direcciones locales.
El espacio primario de direcciones se identifica como tal debido a que consiste en direcciones virtuales primarias, que son traducidas por medio del elemento de control del espacio primario de direcciones (PASCE). Análogamente, el espacio secundario de direcciones consiste en direcciones virtuales secundarias traducidas por medio del elemento de control del espacio secundario de direcciones (SASCE). El espacio de direcciones especificado por AR consiste en direcciones virtuales especificadas por AR traducidas por medio del elemento de control del espacio de direcciones especificado por registro de acceso (ASCE especificado por AR), y el espacio de direcciones locales consiste en direcciones virtuales locales traducidas por medio del elemento de control del espacio de direcciones local (HASCE). Los ASCEs primario y secundario están en los registros de control 1 y 7, respectivamente. Los ASCEs especificados por AR pueden estar en los registros de control 1 y 7, o en entradas de tabla denominadas segundas entradas de tabla ASN. El HASCE está en el registro de control 13.
La traducción dinámica de direcciones es el proceso de traducir una dirección virtual (durante una referencia de almacenamiento, por ejemplo) en la correspondiente dirección de memoria principal (dirección real o dirección absoluta, en la realización). La dirección virtual puede ser una dirección virtual primaria, una dirección virtual secundaria, una dirección virtual especificada por registro de acceso o una dirección virtual local. Estas direcciones son traducidas por medio del PASCE, el SASCE, el ASCE especificado por AR o el HASCE, respectivamente. Después de la selección del ASCE apropiado, el proceso de traducción es el mismo para los cuatro tipos de direcciones virtuales.
Una dirección efectiva es la dirección (dirección virtual) que existe antes de que se lleve a cabo cualquier transformación mediante traducción dinámica de direcciones o anteposición de prefijos. Los tres bits en la palabra de estado de programa que controlan la traducción dinámica de direcciones son el bit 5, bit de modo DAT, y los bits 16 y 17, bits de control del espacio de direcciones. Cuando el bit de modo DAT es cero, entonces la DAT está inactiva, y la CPU está en el modo real. Cuando el bit de modo DAT es uno, entonces la DAT está activa, y la CPU está en el modo de traducción indicado por los bits de control del espacio direcciones: 00 binario indica el modo del espacio primario, 01 binario indica el modo de registro de acceso, 10 binario indica el modo del espacio secundario y 11 binario indica el modo del espacio local. A continuación se muestran los diversos modos, junto con el manejo de direcciones en cada modo.
- Bit de PSW
- DAT Modo Manejo de instrucciones
- 5
- 16 17 Direcciones de instrucción Direcciones lógicas
- 0
- 0
- 0
- Inactiva Modo real Real Real
- 0
- 0
- 1 Inactiva Modo real Real Real
- 0
- 1 0 Inactiva Modo real Real Real
- 0
- 1 1 Inactiva Modo real Real Real
- 1
- 0 0 Activa Modo del espacio primario Virtual primaria Virtual primaria
- 1
- 0 1 Activa Modo de registro de acceso Virtual primaria Virtual especificada por AR
- 1
- 1
- 0 Activa Modo del espacio secundario Virtual primaria Virtual secundaria
- 1
- 1
- 1
- Activa Modo del espacio local Virtual local Virtual local
La palabra de estado de programa es una palabra de 128 bits que, en parte, proporciona 2 bits que indican el modo
5 de direccionamiento. En una realización, el bit 31 es el modo de direccionamiento extendido (EA, Extended Addressing) y el bit 32 es el bit del modo de direccionamiento básico (BA, Base Addressing). Estos dos bits indican el tamaño de las 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 se indica direccionamiento de 24 bits. Si se indica direccionamiento de 24 bits, la dirección está situada en los bits 40 a 63 de una palabra de 64 bits (una entidad de 64 bits se denomina normalmente una palabra
10 doble). 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 modo de 24 bits, la dirección de la instrucción está en los bits 104 a 127 de la palabra de estado de programa. En modo de 31 bits, la dirección de la instrucción está en los bits 97 a 127 de la palabra de estado de programa. En modo de 64 bits, la dirección de la instrucción está en los bits 64 a 127 de la palabra de estado de programa. Si el bit EA es 0 y el bit BA
15 es 1, entonces se indica direccionamiento de 31 bits. La palabra apropiada de 64 bits contiene una dirección de 31 bits situada en las posiciones de bit 33 a 63. Si el bit EA es 1 y el bit BA es 1 entonces los bits 0 a 63, que son la totalidad de los 64 bits de una palabra de 64 bits, contienen la dirección. De lo contrario, se indica una situación de excepción. Una vez que se ha obtenido el modo de direccionamiento, ha de determinarse el ASCE.
20 A continuación se hace referencia a la figura 3, que muestra una realización de cómo se utiliza la palabra de estado de programa para determinar el elemento de control del espacio de direcciones (ASCE) efectivo para la traducción dinámica de direcciones de la dirección virtual. El ASCE puede especificar, por ejemplo, un espacio de direcciones de 2 gigabytes (giga = 230). O puede especificar, por ejemplo, un espacio de direcciones de 4 terabytes (tera = 240), 8 petabytes (peta = 250), o 16 exabytes (exa = 260). O puede especificar una designación de espacio real. La
25 designación de espacio real provoca que la dirección virtual sea tratada como una dirección real en el almacenamiento, sin hacer referencia a una o varias tablas de traducción de direcciones.
La palabra 300 de estado de programa contiene un bit de traducción (T) 302 y bits 304 del espacio de direcciones (AS, Address Space). En 306, si el bit de traducción (T) es cero entonces la dirección es una dirección real 326. En 308, si el espacio de direcciones (AS) vale cero (00 binario) entonces el ASCE efectivo para esta dirección virtual es 30 el elemento de control del espacio primario de direcciones (PASCE) 310. El 312, si el espacio de direcciones (AS) vale uno (01 binario) entonces el ASCE efectivo es el elemento de control del espacio direcciones 314 especificado por registro de acceso. En 316, si el espacio de direcciones (AS) vale dos (10 binario) entonces el ASCE efectivo es el elemento de control del espacio direcciones secundario (SASCE) 318. En otro caso, el espacio de direcciones (AS) vale tres (11 binario) y el ASCE efectivo es el elemento de control del espacio direcciones locales (HASCE)
35 322.
Después de la selección del ASCE efectivo, el proceso de traducción dinámica de direcciones es preferente el mismo para los cuatro tipos de direcciones virtuales.
Una designación de tabla de segmentos o designación de tabla de regiones provoca que la traducción se lleve a cabo por medio de tablas establecidas por el sistema operativo en almacenamiento real o absoluto. Una designación de espacio real provoca que la dirección virtual sea tratada simplemente como una dirección real, sin la utilización de tablas en el almacenamiento.
En el proceso de traducción, cuando se utiliza una designación de tabla de segmentos o una designación de tabla de regiones, se reconocen tres tipos de unidades de información (regiones, segmentos y páginas). Una región es un bloque de direcciones virtuales secuenciales que abarca 2 gigabytes y comienza en un límite de 2 gigabytes. Un segmento es un bloque de direcciones virtuales secuenciales que abarca 1 megabyte y comienza en el límite de 1 megabyte. Una página es un bloque de direcciones virtuales secuenciales que abarca 4 kilobytes y comienza en un límite de 4 kilobytes.
La traducción de una dirección virtual puede involucrar hacer referencia a una serie 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 ser sometida además a una operación de anteposición de prefijo 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. En este sentido, la dirección virtual está dividida en cuatro campos principales. Los bits 0 a 32 son denominados el índice de región (RX), los bits 33 a 43 son denominados el índice de segmento (SX), los bits 44 a 51 son denominados el índice de página (PX), y los bits 52 a 63 son denominados el índice de byte (BX). En una realización, la dirección virtual tiene el formato que se muestra en la figura 17.
Determinado mediante su ASCE, un espacio de direcciones virtuales puede ser un espacio de 2 gigabytes que consiste en una región, o puede ser un espacio de hasta 16 exabytes que consiste en regiones de hasta 8 gigabytes. La parte de RX de una dirección virtual que aplica a un espacio de direcciones de 2 gigabytes debe ser todo ceros; de lo contrario, se reconoce una excepción. La parte de RX de una dirección virtual está dividida en tres campos. Los bits 0 a 10 se denominan el primer índice de región (RFX), los bits 11 a 21 se denominan el segundo índice de región (RSX) y los bits 22 a 32 se denominan el tercer índice de región (RTX). En una realización, los bits 0 a 32 de la dirección virtual tienen el formato que se muestra en la figura 18.
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 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 sea 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 traducirse en direcciones reales mediante dos tablas de traducción: una tabla de segmentos y una tabla de páginas. Con la capacidad EDAT activada, la traducción puede completarse con solamente la tabla de segmentos. El RFX puede ser distinto de cero, en cuyo caso son necesarias una primera tabla de regiones, una segunda tabla de regiones y una tercera tabla de regiones. Si el RFX es cero, pero el RSX puede ser distinto de cero, son necesarias una segunda tabla de regiones y una tercera tabla de regiones. Si el RFX y el RSX son cero, pero el RTX puede ser distinto de cero, es necesaria una tercera tabla de regiones.
Se reconoce una excepción si el ASCE para un espacio de direcciones no indica el nivel máximo de tabla (que comienza con la primera tabla de regiones descendiendo hasta la tabla de segmentos) necesario para traducir una referencia al espacio de direcciones.
A continuación se hace referencia a la figura 4, que muestra una realización en la que se utiliza el ASCE efectivo determinado en la figura 3, para determinar la primera tabla de traducción en la jerarquía de tablas de traducción utilizada 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 la tabla del segundo espacio de direcciones (ASTE, Address-Space-Second-table Entry) que se obtiene mediante el proceso de traducción por registro de acceso (ART, Access-Register-Translation) contiene un elemento de control del espacio de direcciones especificado por el registro de acceso. Se selecciona un ASCE efectivo 400 entre 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 una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones o una tabla de segmentos. Al origen de tabla (bits 0 a 51) se añaden 12 ceros binarios para formar una dirección de origen de 64 bits de la tabla de traducción de máximo nivel en la jerarquía de tablas de traducción a utilizar en la traducción de la dirección virtual. El ASCE efectivo 400 contiene asimismo un bit 404 de control del espacio real (R) y bits 406 de DT. Si el bit de control (R) del espacio real es cero, entonces los bits de DT son descodificados mediante el selector 408 para determinar qué dirección de origen concreta es el origen 402 de tabla. Si los bits de DT valen 3 (11 binario) entonces el origen 402 de tabla designa una primera tabla 410 de regiones. Si los bits de DT valen dos (10 binario) entonces el origen 402 de tabla designa una segunda tabla 412 de regiones. Si los bits de DT valen uno (01 binario) entonces el origen 402 de tabla designa una tercera tabla 414 de regiones. En otro caso, si los bits de DT valen cero (00 binario) entonces el origen 402 de tabla designa una tabla 416 de segmentos.
En ocasiones, una primera tabla de regiones, una segunda tabla de regiones o una tercera tabla de regiones es denominada simplemente una tabla de regiones. Análogamente, en ocasiones, una designación de primera tabla de regiones, una designación de segunda tabla de regiones o una designación de tercera tabla de regiones es denominada una designación de tabla de regiones. Las tablas de regiones, segmentos y páginas reflejan la asignación actual de almacenamiento real. Página es un término utilizado para la asignación de almacenamiento virtual. El almacenamiento real está ordenado en bloques fijos. Las páginas no tienen por qué ser adyacentes en el almacenamiento real, incluso aunque estén asignadas a un conjunto de direcciones virtuales secuenciales.
Cuando el ASCE utilizado en una traducción es una designación de primera tabla de regiones, el proceso de traducción consiste en una búsqueda multinivel utilizando, por ejemplo, una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos, y opcionalmente una tabla de páginas. Estas tablas residen en almacenamiento real o absoluto. Cuando el ASCE es una designación de segunda tabla de regiones, una designación de tercera tabla de regiones o una designación de tabla de segmentos, se omiten las búsquedas en los niveles de tablas que están por encima del nivel indicado, y se omiten las propias tablas de niveles superiores.
A continuación se hace referencia a la figura 5A, que muestra una realización de traducción dinámica de direcciones de una dirección virtual utilizando una jerarquía de tablas de traducción.
El ASCE efectivo 400 de la figura 4 contiene los bits 406 del tipo de designación (DT). Si el bit 404 de control del espacio real (R) del ASCE es cero, entonces los bits de DT son descodificados mediante el selector 408 para determinar qué dirección de origen designa el origen 402 de tabla. Si el bit de control del espacio real (R) es uno entonces tiene lugar la traducción dinámica de direcciones, tal como se muestra en el nodo D 564 de la figura 5B.
Si los bits de DT valen 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 regiones. El origen 402 de tabla se suma aritméticamente, en 502, con una parte 508 del primer índice de región (RFX) de la dirección virtual para hacer referencia a la entrada 506 de la primera tabla de regiones, en una primera tabla de regiones. El origen de tabla (con 12 ceros añadidos a la derecha,
o multiplicado por 4096) se suma al producto del índice multiplicado por 8 (o del índice con tres ceros añadidos a la derecha). La entrada de la primera tabla de regiones contiene un origen 504 de la segunda tabla de regiones, para una siguiente tabla inferior en la jerarquía de las tablas de traducción utilizadas en la traducción. La siguiente tabla inferior a la primera tabla de regiones es la segunda tabla de regiones. Si el bit de no inválido (I) de la entrada de la primera tabla de regiones es igual a uno, entonces la entrada de la primera tabla de regiones no es válida y no puede ser utilizada en la traducción. Se indica una condición de excepción.
Si los bits de DT valen 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 regiones. El origen 402 de la tabla se suma aritméticamente, en 510, con una parte 516 de segundo índice de regiones (RSX) de la dirección virtual, para hacer referencia a la entrada 514 de la segunda tabla de regiones, en una segunda tabla de regiones. El origen de tabla (con 12 ceros añadidos a la derecha, o multiplicado por 4096) se suma al producto del índice multiplicado por 8 (o del índice con tres ceros añadidos a la derecha). La entrada de la segunda tabla de regiones contiene un origen 512 de la segunda tabla de regiones, para una siguiente tabla inferior en la jerarquía de las tablas de traducción utilizadas en la traducción. La siguiente tabla inferior a la segunda tabla de regiones es la tercera tabla regiones. Si el bit de no válido (I) de la entrada de la segunda tabla de regiones es igual a uno, entonces la entrada de la segunda tabla de regiones es no válida y se indica una condición de excepción.
Si los bits DT valen uno (01 binario) en el selector 408, entonces la primera tabla designada en la jerarquía de las tablas de traducción es una tercera tabla de regiones. El origen 402 de tabla se suma aritméticamente, en 518, con una parte 524 de tercer índice de regiones (RTX) de la dirección virtual, para hacer referencia a la entrada 522 de la tercera tabla de regiones, en una tercera tabla de regiones. El origen de tabla (con 12 ceros añadidos a la derecha, o multiplicado por 4096) se suma al producto del índice multiplicado por 8 (o del índice con tres ceros añadidos a la derecha). La entrada de la tercera tabla de regiones contiene un origen 520 de la tabla de segmentos, para una siguiente tabla inferior en la jerarquía de las tablas de traducción utilizadas en la traducción. La siguiente tabla inferior a la tercera tabla de regiones es la tabla de segmentos. Si el bit de no válido (I) de la entrada de la tercera tabla de regiones es igual a uno, entonces la entrada de la tercera tabla de regiones no es válida y se indica una condición de excepción.
Si los bits DT valen 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 segmentos. El origen 402 de la tabla se suma aritméticamente, en 526, con una parte 532 de índice de segmentos (SX) de la dirección virtual para hacer referencia a entrada 530 de la tabla de segmentos, en una tabla de segmentos. El origen de tabla (con 12 ceros añadidos a la derecha, o multiplicado por 4096) se suma al producto del índice multiplicado por 8 (o del índice con tres ceros añadidos a la derecha). La entrada de la tabla de segmentos contiene una dirección de origen de una tabla de páginas o una dirección absoluta de trama de segmento (SFAA, segment frame absolute address), ambas mostradas en 528. Si el bit de no válido (I) de la entrada de la tabla de segmentos es igual a uno, entonces la entrada de la tabla de segmentos no es válida y se indica una condición de excepción.
En 538, se examina el bit de control de formato (FC, format control) STE de la tabla de segmentos. Si el control de formato de STE es uno, entonces la entrada 530 de la tabla de segmentos contiene una dirección absoluta 552 de trama de segmento (SFAA, segment frame absolute address) y la traducción dinámica de direcciones prosigue haciendo referencia al número 562 en la figura 5C. De lo contrario, la entrada de la tabla de segmentos obtenida de la tabla de segmentos contiene una dirección de origen de tabla de páginas, y la traducción dinámica de direcciones prosigue haciendo referencia al nodo 560 en la figura 5B.
A continuación se hace referencia a la figura 5B. Si el control de formato de STE en la entrada de la tabla de segmentos es cero, entonces la entrada de la tabla de segmentos obtenida desde la tabla de segmentos 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 segmentos es una tabla de páginas. El origen 528 de la tabla de páginas, obtenido de la entrada 530 de la tabla de segmentos de la figura 5A, se suma aritméticamente, en 538, con una parte de 534 de índice de página (PX), de la dirección virtual, para hacer referencia a la entrada 542 de la tabla de paginas, en una tabla de páginas. La entrada de la tabla de paginas contiene una dirección real 546 de trama de página (PFRA, page frame real address). Cuando los bits situados más a la izquierda de la dirección real de trama de página son concatenados, en 548, con una parte 536 de índice de byte (BX) de la dirección virtual, se obtiene una dirección real 550 de 64 bits. La dirección real de 64 bits puede ser sometida además a una operación de anteposición de prefijo para formar una dirección absoluta. La dirección virtual traducida hace referencia a un bloque deseado de 4 kilobytes (4096 bytes) de datos en memoria o almacenamiento principal.
Preferentemente, 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 anticipada, junto con la dirección del bloque de memoria asociada con la dirección virtual. El acceso de almacenamiento subsiguiente puede traducir rápidamente una dirección virtual mediante el recurso de comparar información ASCE e información de dirección virtual con etiquetas de memoria tampón de traducción anticipada. Si se encuentra que una etiqueta es la de la dirección virtual, puede utilizarse la dirección de la memoria tampón de traducción anticipada del bloque de memoria, en lugar de llevar a cabo el lento acceso secuencial de cada tabla de traducción implicada. En una realización, la dirección real de trama de página (PFRA, page frame real address) junto con una etiqueta que consiste, por ejemplo, en el ASCE y las partes de RX, SX y PX de la dirección virtual, son almacenadas en una entrada de la memoria tampón 544 de traducción anticipada. La traducción posterior de esta dirección virtual se obtiene a continuación a partir de la información almacenada en la memoria tampón de traducción anticipada.
A continuación se hace referencia a la figura 5C. Si el control de formato de la STE en la entrada 530 de la tabla de segmentos es uno, entonces la entrada de la tabla de segmentos contiene una dirección absoluta 552 de trama de segmento (SFAA, segment frame absolute address). Cuando los bits situados más a la izquierda de la dirección absoluta de la 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 hace referencia a un bloque grande de datos deseado en el almacenamiento o la memoria principal. El bloque grande de datos tiene por lo menos 1 megabyte (1 048 576 bytes) de tamaño.
En una realización, la dirección absoluta de la trama de segmento (SFAA) junto con las partes de RX y de SX de la dirección virtual, es almacenada en una memoria tampón 544 de traducción anticipada. La traducción posterior de esta dirección virtual se obtiene después a partir de la información almacenada en la memoria tampón de traducción anticipada.
Las realizaciones de las diversas entradas de las tablas de traducción en la jerarquía de tablas de traducción utilizada en la traducción, son las siguientes.
Entradas de las tablas de regiones
El término entrada de la tabla de regiones significa una entrada de la primera tabla de regiones, una entrada de la segunda tabla de regiones o una entrada de la tercera tabla de regiones. Las entradas extraídas de la primera tabla de regiones, la segunda tabla de regiones y la tercera tabla de regiones tienen los formatos siguientes. El nivel (primero, segundo o tercero) de la tabla que contiene una entrada está identificado por los bits de tipo de tabla (TT) en la entrada.
En una realización, los formatos de la entrada de la primera tabla de regiones, la entrada de la segunda tabla de regiones y la entrada de la tercera tabla de regiones son tal como se muestra en la figura 19.
entrada de la segunda tabla de regiones contiene un origen de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene un origen de la tabla de segmentos. La siguiente descripción aplica a cada uno de los tres orígenes de tabla. Los bits 0 a 51 de la entrada, con 12 ceros añadidos a la derecha, forman una dirección de 64 bits que indica el comienzo de la tabla del siguiente nivel inferior.
5 Bit de protección de DAT (P): cuando aplica DAT mejorada, el bit 54 se trata como estando sometido a la operación lógica OR con el bit de protección de DAT en cada subsiguiente entrada de la tabla de regiones, entrada de la tabla de segmentos, y, cuando aplica, entrada de la tabla de paginas utilizada en la traducción. Por lo tanto, cuando el bit es uno, la protección de DAT aplica a la región o regiones completas especificadas por la entrada de la tabla de regiones. Cuando la capacidad de DAT mejorada no está instalada, o cuando la capacidad está instalada
10 pero el control de habilitación de DAT es cero, el bit 54 de la entrada de la tabla de regiones es ignorado.
Offset de la segunda tabla de regiones, offset de la tercera tabla de regiones y offset de la tabla de segmentos (TF): una entrada de la primera tabla de regiones contiene un offset de la segunda tabla de regiones. Una entrada de la segunda tabla de regiones contiene un offset de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene un offset de la tabla de segmentos. La siguiente descripción aplica a cada uno de 15 los tres offsets de tabla. Los bits 56 y 57 de la entrada especifican la longitud de una parte de la tabla del siguiente nivel inferior, que falta al comienzo de la tabla, es decir, los bits especifican la posición de la primera entrada realmente existente en la tabla del siguiente nivel inferior. Los bits especifican la longitud de la parte que falta en unidades de 4096 bytes, haciendo de ese modo variable la longitud de la parte que falta en múltiplos de 512 entradas. La longitud de la parte que falta, en unidades de 4096 bytes, es igual al valor de TF. Los contenidos del
20 campo offset, junto con el campo de longitud, bits 62 y 63, se utilizan para determinar si la parte de la dirección virtual (RSX, RTX o SX) a traducir mediante la tabla del siguiente nivel inferior, designa una entrada que existe de hecho en la tabla.
Bits de región no válida (I): el bit 58 en una entrada de la primera tabla de regiones o en una entrada de la segunda tabla de regiones controla si el conjunto de regiones asociadas con la entrada está disponible. El bit 58 en
25 una entrada de la tercera tabla de regiones controla si la única región asociada con la entrada está disponible. Cuando el bit 58 es cero, la traducción de direcciones continua utilizando la entrada de la tabla de regiones. 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 regiones, la entrada de la segunda tabla de regiones, y la entrada de la tercera tabla de regiones identifican el nivel de la tabla que contiene la entrada,
30 tal como sigue: los bits 60 y 61 deben identificar el nivel de la tabla correcto, considerando el tipo de designación de tabla que constituye el ASCE que está siendo utilizado en la traducción y el número de niveles de tablas que han sido utilizados hasta el momento; en otro caso, se reconoce una excepción de especificación de la traducción. La tabla siguiente muestra los bits de tipo de tabla:
Bits 60 y 61 Nivel de la tabla de regiones
11 Primero
10 Segundo
01 Tercero
Bits de tipo de tabla para entradas de tablas de regiones
35 segmentos (TL, Table Length): una entrada de la primera tabla de regiones contiene una longitud de la segunda tabla de regiones. Una entrada de la segunda tabla de regiones contiene una longitud de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene una longitud de la tabla de segmentos. La siguiente descripción aplica a cada una de las tres longitudes de tabla. Los bits 62 y 63 de la entrada especifican la longitud de la siguiente tabla de nivel inferior en unidades de 4096 bytes, haciendo de ese modo variable la longitud de la tabla
40 en múltiplos de 512 entradas. La longitud de la siguiente tabla de nivel inferior, en unidades de 4096 bytes, es de uno más que el valor de TL. Los contenidos del campo longitud, junto con el campo de offset, bits 56 y 57, se utilizan para determinar si la parte de la dirección virtual (RSX, RTX o SX) a traducir mediante la tabla del siguiente nivel inferior, indica una entrada que existe de hecho en la tabla. Todas las demás posiciones de bit de la entrada de la tabla de regiones están reservadas para posibles extensiones futuras y deben contener ceros; de lo contrario, el
45 programa puede no funcionar compatiblemente en el futuro. Cuando aplica DAT mejorada, las posiciones de bit reservadas de la entrada de la tabla de regiones deben contener ceros, incluso si la entrada de la tabla no es válida.
Entradas de la tabla de segmentos
Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada y el control de formato de STE, bit 53 de la entrada de la tabla de segmentos, es cero, la entrada extraída de la tabla de segmentos, en una realización, tiene el formato
50 que se muestra en la figura 20.
Cuando aplica DAT mejorada y el control del formato de STE es uno, la entrada extraída de la tabla de segmentos, en una realización, tiene el formato que se muestra en la figura 21.
Los campos seleccionados en la entrada de la tabla de segmentos se asignan como sigue:
Origen de la tabla de páginas: cuando no aplica DAT mejorada, o cuando aplica DAT mejorada pero el control del formato de STE, bit 53 de la entrada de la tabla de segmentos, es cero, los bits 0 a 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áginas. Es impredecible si la dirección es real o absoluta.
Dirección absoluta de la trama de segmento (SFAA): cuando aplica DAT mejorada y el control del formato de STE es uno, los bits 0 a 43 de la entrada, con 20 ceros añadidos a la derecha, forman la dirección absoluta de 64 bits del segmento.
Control de validez de ACCF (AV): cuando aplica DAT mejorada y el control de formato de STE es uno, el bit 47 es el control de validez de los bits de control de acceso y del bit de protección contra escritura (ACCF). Cuando el control AV es cero, los bits 48 a 52 de la entrada de la tabla de segmentos son ignorados. Cuando el control AV es uno, los bits 48 a 52 son utilizados tal como se describe a continuación.
Bits de control de acceso (ACC): cuando aplica DAT mejorada, el control del formato de STE es uno y el control de AV es uno, los bits 48 a 51 de la entrada de la tabla de segmentos contienen los bits de control de acceso, que pueden ser utilizados para cualquier verificación de acceso controlada por clave, que aplique a la dirección.
Bit de protección contra escritura (F): cuando aplica DAT mejorada, el control del formato de STE es uno y el control AV es uno, el bit 52 de la entrada de la tabla de segmentos contiene el bit de protección contra escritura que puede ser utilizado para cualquier verificación de acceso controlada por clave, que aplique a la dirección.
Control del formato de STE (FC): cuando aplica DAT mejorada, el bit 53 es el control de formato para la entrada de la tabla de segmentos, tal como sigue:
Cuando el bit FC es cero, los bits 0 a 52 de la entrada forman el origen de la tabla de páginas, y el bit 55 está reservado.
Cuando el bit de FC es uno, los bits 0 a 43 de la entrada forman la dirección absoluta de la trama del segmento, el bit 47 es el control de validez ACCF, los bits 48 a 51 son los bits de control de acceso, el bit 52 es el bit de protección contra escritura, y el bit 55 es la anulación de la grabación de la modificación. Cuando no aplica DAT mejorada, el bit 53 se ignora.
Bit de protección de DAT (P): el bit 54, cuando vale uno, indica que la protección de DAT aplica a todo el segmento.
Cuando no aplica DAT mejorada, el bit 54 se trata como estando sometido a una operación lógica OR con el bit de protección de DAT en la entrada de la tabla de paginas utilizada en la traducción.
Cuando aplica DAT mejorada, el bit de protección de DAT en todas y cada una de las entradas de tabla utilizadas en la traducción, se trata como estando sometido a una operación lógica OR con el bit de protección de DAT en la entrada de la tabla de segmentos; cuando el control de formato de STE es cero, el bit de protección de DAT en la STE se trata asimismo como estando sometido a la operación lógica OR con el bit de protección de DAT en la entrada de la tabla de paginas.
Anulación de la grabación de la modificación (CO): cuando aplica DAT mejorada y el control del formato de STE es uno, el bit 55 de la entrada de la tabla de segmentos es la anulación de la grabación de la modificación para el segmento. Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada pero el control del formato de STE es cero, el bit 55 de la entrada de la tabla de segmentos se ignora.
Bit de segmento no válido (I): el bit 58 controla si el segmento asociado con la entrada de la tabla de segmentos está disponible.
Cuando el bit es cero, la traducción de la dirección continúa utilizando la entrada de la tabla de segmentos.
Cuando el bit es uno, la entrada de la tabla de segmentos no puede ser utilizada para la traducción.
Bit de segmento común (C): el bit 59 controla la utilización de las copias de la memoria tampón de traducción anticipada, de la entrada de la tabla de segmentos. Cuando no aplica DAT mejorada o cuando aplica DAT mejorada pero el control de formato es cero, el bit 59 controla asimismo la utilización de las copias de la memoria tampón de traducción anticipada de la tabla de páginas designada por la entrada de la tabla de segmentos.
Un cero identifica un segmento privado; en este caso, la entrada de la tabla de segmentos y cualquier tabla de páginas que designe, pueden ser utilizadas solamente en asociación con el origen de la tabla de segmentos que designa la tabla de segmentos en la que reside la entrada de la tabla de segmentos.
Un uno identifica un segmento común; en este caso, la entrada de la tabla de segmentos y cualquier tabla de 5 páginas que designe pueden seguir siendo utilizadas para traducir direcciones correspondientes al índice de segmento, incluso aunque se especifique una tabla de segmentos diferente.
Sin embargo, no son utilizables las copias de la memoria tampón de traducción anticipada de la entrada de la tabla de segmentos y cualquier tabla de páginas para un segmento común, si el control del espacio privado, bit 55, es uno en el ASCE utilizado en la traducción, o si dicho ASCE es una designación de espacio real. El bit de segmento
10 común debe ser cero si la entrada de la tabla de segmentos es extraída del almacenamiento durante una traducción cuando el control del espacio privado es uno en el ASCE que se está utilizando. De lo contrario, se reconoce una excepción de especificación de la traducción.
Bits de tipo de tabla (TT): los bits 60 y 61 de la entrada de la tabla de segmentos son 00 binario para identificar el nivel de la tabla que contiene la entrada. Los significados de todos los posibles valores de los bits 60 y 61 en una
15 entrada de la tabla de regiones o una entrada de la tabla de segmentos, son los siguientes:
Bits 60 y 61 Nivel de la tabla
11 Primeras de regiones
10 Segunda de regiones
01 Tercera de regiones
00 Segmentos
Bits de tipo de tabla 60, 61
Los bits 60 y 61 deben identificar el nivel de tabla correcto, considerando el tipo de designación de la tabla que constituye el ASCE que está siendo utilizado en la traducción y el número de niveles de tablas que ha sido utilizado por el momento; de lo contrario, se reconoce una excepción de especificación de la traducción. Todas las demás posiciones de bit de la entrada de tabla de segmentos están reservadas para posibles extensiones futuras y deben
20 contener ceros; de lo contrario, el programa puede no funcionar compatiblemente en el futuro. Cuando aplica DAT mejorada, las posiciones de bit reservadas de la entrada de la tabla de segmentos deben contener ceros, incluso si la entrada de la tabla no es válida.
En una realización, la entrada leída desde la tabla de páginas tiene un formato que se ilustra en la figura 22.
25 Los campos seleccionados en la entrada de la tabla de paginas están asignados como sigue:
Dirección real de la trama de página (PFRA): los bits 0 a 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 de página no válida (I): el bit 53 controla si la página asociada con la entrada de la tabla de paginas está
30 disponible. Cuando el bit es cero, la traducción de direcciones prosigue utilizando la entrada de la tabla de paginas. Cuando el bit es uno, la entrada de la tabla de paginas no puede ser utilizada para la traducción.
Bit de protección de DAT (P): el bit 54 controla si pueden realizarse accesos de almacenamiento en la página. Este mecanismo de protección se añade a los mecanismos de protección controlada por clave y de protección de dirección baja. El bit no tiene consecuencias sobre los accesos de lectura. Si el bit es cero, se permiten
35 almacenamientos en la página, sujetos a las siguientes limitaciones adicionales:
Que el bit de protección de DAT sea cero en la entrada de la tabla de segmentos utilizada en la traducción.
Cuando aplica DAT mejorada, que el bit de protección de DAT sea cero en todas las entradas de la tabla de regiones utilizadas en la traducción.
Otros mecanismos de protección
40 Si el bit es uno, los almacenamientos son denegados. Cuando no existen condiciones de excepción de prioridad superior, un intento de almacenamiento cuando el bit de protección de DAT es uno provoca que se reconozca una excepción de protección. El bit de protección de DAT en la entrada de la tabla de segmentos se trata como si estuviera sometido a una operación lógica OR con el bit 54, cuando se determina si aplica protección de DAT a la página. Cuando aplica DAT mejorada, el bit de protección de DAT en cualesquiera entradas de la tabla de regiones utilizada en la traducción se trata asimismo como si estuviera sometido a una operación lógica OR con el bit 54, cuando se determina si aplica protección de DAT.
Anulación de la grabación de la modificación (CO): cuando no aplica DAT mejorada, el bit 55 de la entrada de la tabla de paginas debe contener cero; de lo contrario, se reconoce una excepción de especificación de la traducción como parte de la ejecución de una instrucción que utiliza la entrada para la traducción de direcciones. Cuando aplica DAT mejorada y el control de formato de la STE es cero, el bit 55 de la entrada de la tabla de paginas es la anulación de la grabación de la modificación para la página.
La posición de bit 52 de la entrada debe contener cero; de lo contrario, se reconoce una excepción de especificación de la traducción como parte de la ejecución de la instrucción que utiliza dicha entrada para la traducción de direcciones. Las posiciones de bit 56 a 63 no están asignadas o se ignoran.
Esta sección describe el proceso de traducción cuando éste se lleva a cabo de manera implícita antes de que sea utilizada una dirección virtual para acceder al almacenamiento principal.
La traducción de la dirección virtual está controlada por el bit de modo de DAT y los bits de control del espacio de direcciones en la palabra de estado de programa y por los ASCE en los registros de control 1, 7 y 13 y de acuerdo con lo especificado por los registros de acceso. Cuando el ASCE utilizado en la traducción es una designación de primera tabla de regiones, la traducción se lleva a cabo por medio de una primera tabla de regiones, una segunda tabla de regiones, una tercera tabla de regiones, una tabla de segmentos y una tabla de páginas, que residen todas en almacenamiento real o absoluto. Cuando el ASCE es un tipo de designación de tabla de nivel inferior (designación de segunda tabla de regiones, designación de tercera tabla de regiones o designación de tabla de segmentos), la traducción se lleva a cabo mediante solamente los niveles de tabla que comienzan con el nivel designado, y los bits de dirección virtual que, si no fueran cero, requerirían la utilización de uno o varios niveles superiores de tabla deben ser todos cero; de lo contrario, se reconoce una excepción de tipo ASCE. Cuando el ASCE es una designación del espacio real, la dirección virtual se trata como una dirección real, y las entradas de tabla en almacenamiento real o absoluto no son utilizadas.
El ASCE utilizado para la traducción de una dirección concreta se denomina el ASCE efectivo. Por consiguiente, cuando se traduce una dirección virtual primaria, los contenidos del registro de control 1 son utilizados como el ASCE efectivo. Análogamente, para una dirección virtual secundaria, son utilizados los contenidos del registro de control 7; para una dirección virtual especificada por AR, se utiliza el ASCE especificado por el registro de acceso; y para una dirección virtual local, se utilizan los contenidos del registro de control 13.
Cuando el control del 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 regiones, segunda tabla de regiones, tercera tabla de regiones o tabla de segmentos. 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) se verifica con el campo longitud de tabla en la designación, y se añade al origen en la designación para seleccionar una entrada en la tabla designada. Si la entrada seleccionada está fuera de su tabla, según lo determinado mediante el campo longitud de tabla en la designación, o si el bit I vale uno en la entrada seleccionada, se reconoce una excepción de una primera traducción de región, una segunda traducción de región, una tercera traducción de región o 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, se reconoce una excepción de especificación de la traducción.
La entrada de tabla seleccionada por medio del ASCE efectivo designa la tabla del siguiente nivel inferior a utilizar. Si la tabla actual es una primera tabla de regiones, una segunda tabla de regiones o una tercera tabla de regiones, la siguiente parte de la dirección virtual (segundo índice de región, tercer índice de región o índice de segmento, respectivamente) se verifica con los campos de offset de la tabla y longitud de la tabla en la entrada de la tabla actual, y se añade al origen en la entrada, para seleccionar una entrada en la tabla del siguiente nivel inferior. Si la entrada seleccionada en la tabla siguiente está fuera de su tabla, según lo determinado mediante los campos de offset de la tabla y longitud de la tabla en la entrada de tabla actual, o si el bit I vale uno en la entrada seleccionada, se reconoce una excepción de la segunda traducción de región, la tercera traducción de región o la traducción del segmento, dependiendo del nivel de la tabla siguiente. Si los bits de tipo de tabla en la entrada seleccionada no indican el nivel de tabla esperado, se reconoce una excepción de especificación de la traducción.
El procesamiento de partes de la dirección virtual mediante niveles de tabla sucesivos prosigue hasta que ha sido seleccionada una entrada de la tabla de segmentos. La entrada de la tabla de segmentos contiene un bit de protección de página que 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 la tabla de páginas en la entrada de la tabla de segmentos, para seleccionar una entrada en la tabla de páginas. Si el bit I vale uno en la entrada de la tabla de paginas, se reconoce una excepción de traducción de página. La entrada de la tabla de paginas contiene los bits situados más a la izquierda de la dirección real que representa la traducción de dirección virtual, y contiene un bit de protección de página que aplica solamente a la página especificada por la entrada de la tabla de paginas.
El campo de índice de byte de la dirección virtual se utiliza sin cambios como las posiciones de bit de la dirección real situadas más a la derecha.
5 Para eliminar el retardo asociado con las referencias a las tablas de traducción en almacenamiento real o absoluto, la información extraída de las tablas es normalmente situada también en una memoria tampón especial, la memoria tampón de traducción anticipada, y las traducciones subsiguientes que involucran las mismas entradas de tabla pueden ser realizadas utilizando la información registrada en la memoria tampón de traducción anticipada. La memoria tampón de traducción anticipada puede registrar asimismo traducciones virtual igual a real, relacionadas
10 con una designación del espacio real.
Siempre que se realice un acceso a un almacenamiento real o absoluto durante el proceso de traducción de direcciones con el propósito de leer una entrada desde una tabla de regiones, una tabla de segmentos, o una tabla de páginas, no aplica la protección controlada por claves.
Búsqueda de una tabla designada por un ASCE
15 El control de DT, bits 60-61 del ASCE efectivo, especifica el tipo de designación de tabla del ASCE y la parte de la dirección virtual que ha de ser traducida mediante la tabla designada, tal como sigue:
Parte de dirección virtual Bits 60 y traducida mediante la 61 Tipo de designación tabla
11 Primera tabla de regiones
Primer índice de región (bits 0 a 10)
10 Segunda tabla de regiones Segundo índice de región (bits 11 a 21)
01 Tercera tabla de regiones Tercer índice de región (bits 22 a 32)
00 Tabla de segmentos Índice de segmentos (bits 33 a 43)
Traducción mediante una tabla designada
Cuando los bits 60 y 61 tienen el valor 11 binario, la parte del primer índice de región de la dirección virtual, junto con el origen de la primera tabla de regiones contenido en el ASCE, se utiliza para seleccionar una entrada a partir de la primera tabla de regiones. La dirección de 64 bits de la entrada de la primera tabla de regiones en almacenamiento 20 real o absoluto se obtiene añadiendo 12 ceros a la derecha de los bits 0-51 de la designación de la primera tabla de regiones, y añadiendo al primer índice de región tres ceros en la posición más a la derecha y 50 ceros en la posición más a la izquierda. Como parte del proceso de búsqueda en la primera tabla de regiones, los bits 0 y 1 de la dirección virtual (que son los bits 0 y 1 del primer índice de región) se comparan con la longitud de la tabla, bits 62 y 63 de la designación de primera tabla de regiones, para determinar si la entrada direccionada está dentro de la 25 primera tabla de regiones. Si el valor del campo longitud de la tabla es menor que el valor en las correspondientes posiciones de bits de la dirección virtual, se reconoce una excepción de la primera traducción de región. La comparación con la longitud de la tabla puede omitirse si en la traducción se utiliza el equivalente de la entrada de la primera tabla de regiones en la memoria tampón de traducción anticipada. La entrada leída desde la primera tabla de regiones designa el comienzo y especifica el offset y la longitud de la segunda tabla de regiones correspondiente.
30 Cuando los bits 60 y 61 de la ASCE tienen el valor binario 10, la parte del segundo índice de región de la dirección virtual, junto con el origen de la segunda tabla de regiones contenido en el ASCE, se utiliza para seleccionar una entrada desde la segunda tabla de regiones. Los bits 11 y 12 de la dirección virtual (que son los bits 0 y 1 del segundo índice de región) se comparan con la longitud de la tabla en el ASCE. Si el valor del campo longitud de la tabla es menor que el valor en las correspondientes posiciones de bits de la dirección virtual, se reconoce una
35 excepción de la segunda traducción de región. La comparación con la longitud de la tabla puede omitirse si en la traducción se utiliza el equivalente de la entrada de la segunda tabla de regiones en la memoria tampón de traducción anticipada. Por lo demás, el proceso de búsqueda en la segunda tabla de regiones es igual que el proceso de búsqueda en la primera tabla de regiones; la entrada extraída de la segunda tabla de regiones designa el comienzo y especifica el offset y la longitud de la tercera tabla de regiones correspondiente.
40 Cuando los bits 60 y 61 de la ASCE tienen el valor binario 01, la parte del tercer índice de región de la dirección virtual, junto con el origen de la tercera tabla de regiones contenido en el ASCE, se utiliza para seleccionar una entrada desde la tercera tabla de regiones. Los bits 22 y 23 de la dirección virtual (que son los bits 0 y 1 del tercer índice de región) se comparan con la longitud de la tabla en el ASCE. Si el valor del campo longitud de la tabla es menor que el valor en las correspondientes posiciones de bits de la dirección virtual, se reconoce una excepción de la tercera traducción de región. Por lo demás, el proceso de búsqueda en la tercera tabla de regiones es igual al proceso de búsqueda en la primera tabla de regiones; incluyendo la verificación de los bits de tipo de tabla en la entrada de la tercera tabla de regiones. La entrada extraída de la tercera tabla de regiones designa el comienzo y especifica el offset y la longitud de la tabla de segmentos correspondiente.
Cuando los bits 60 y 61 de la ASCE tienen el valor binario 00, la parte de índice de segmentos de la dirección virtual, junto con el origen de la tabla de segmentos contenido en el ASCE, se utiliza para seleccionar una entrada a partir de la tabla de segmentos. Los bits 33 y 34 de la dirección virtual (que son los bits 0 y 1 del índice de segmento) se comparan con la longitud de la tabla en el ASCE. Si el valor del campo longitud de la tabla es menor que el valor en las correspondientes posiciones de bits de la dirección virtual, se reconoce una excepción de la traducción del segmento. La comparación con la longitud de la tabla puede omitirse si en la traducción se utiliza el equivalente de una entrada de la tabla de segmentos en la memoria tampón de traducción anticipada. Por lo demás, el proceso de búsqueda en la tabla de segmentos es igual al proceso de búsqueda en la primera tabla de regiones, incluyendo la verificación de los bits del tipo de tabla en la entrada de la tabla de segmentos. El proceso es como sigue:
Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada pero el control de formato STE es cero, la entrada leída desde la tabla de segmentos designa el comienzo de la tabla de páginas correspondiente, y el proceso continúa tal como se describe a continuación en la "búsqueda en la tabla de páginas".
Cuando aplica DAT mejorada y el control de formato STE es uno, la entrada leída desde la tabla de segmentos contiene los bits situados más a la izquierda de la dirección absoluta de la trama de segmento. Si el bit de protección de DAT es uno, ya sea en cualquier entrada de la tabla de regiones utilizada en la traducción o en la entrada de la tabla de segmentos, y la referencia de almacenamiento para la que se está realizando la traducción es un almacenamiento, se reconoce una excepción de protección.
Búsqueda en una tabla designada mediante una entrada de la tabla de regiones
Cuando el ASCE efectivo es una designación de tabla de regiones, se selecciona una entrada de la tabla de regiones, tal como se describe en la sección precedente. A continuación, los contenidos de la entrada seleccionada y la siguiente parte de índice de la dirección virtual son utilizados para seleccionar una entrada en la tabla del siguiente nivel inferior, que puede ser otra tabla de regiones o una tabla de segmentos. Cuando la entrada de tabla seleccionada mediante el ASCE es una entrada de la primera tabla de regiones, la parte del segundo índice de región de la dirección virtual, junto con el origen de la segunda tabla de regiones contenido en la entrada de la primera tabla de regiones, se utiliza para seleccionar una entrada desde la segunda tabla de regiones. La dirección de 64 bits de la entrada de la segunda tabla de regiones en almacenamiento real o absoluto, se obtiene añadiendo 12 ceros a la derecha de los bits 0-51 de la entrada de la primera tabla de regiones, y añadiendo al segundo índice de región tres ceros en la posición más a la derecha y 50 ceros en la posición más a la izquierda.
Cuando se forma la dirección de una entrada de la segunda tabla de regiones, de la tercera tabla de regiones o de la tabla de segmentos, es impredecible si la anteposición de prefijo, si la hay, es aplicada al respectivo origen de la tabla contenido en la entrada de la tabla de nivel superior antes de la adición del valor del índice de la tabla, o si la anteposición de prefijo es aplicada a la dirección de la entrada de la tabla que se forma mediante la adición del origen de la tabla y el valor del índice de la tabla.
Como parte del proceso de búsqueda en la segunda tabla de regiones, los bits 11 y 12 de la dirección virtual (que son los bits 0 y 1 del segundo índice de región) se comparan con el offset de la tabla, bits 56 y 57 de la entrada de la primera tabla de regiones, y con la longitud de la tabla, bits 62 y 63 de la entrada de la primera tabla de regiones, para determinar si la entrada direccionada está dentro de la segunda tabla de regiones. Si el valor del campo de offset de la tabla es mayor que el valor en las posiciones de bits correspondientes de la dirección virtual, o si el valor del campo longitud de la tabla es menor que el valor en las correspondientes posiciones de bits de la dirección virtual, se reconoce una excepción de la segunda traducción de región.
La segunda tabla de regiones designa el comienzo y especifica el offset y la longitud de la tercera tabla de regiones correspondiente.
Cuando la entrada de tabla seleccionada mediante el ASCE es una entrada de la segunda tabla de regiones, o si la entrada de la segunda tabla de regiones ha sido seleccionada por medio de los contenidos de una entrada de la primera tabla de regiones, la parte del tercer índice de región de la dirección virtual, junto con el origen de la tercera tabla de regiones contenido en la entrada de la segunda tabla de regiones, se utiliza en para seleccionar una entrada desde la tercera tabla de regiones. Los bits 22 y 23 de la dirección virtual (que son los bits 0 y 1 del tercer índice de región) se comparan con el offset de la tabla y la longitud de la tabla en la entrada de la segunda tabla de regiones. Se reconoce una excepción de la tercera traducción de región si el offset 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. Por lo demás, el proceso de búsqueda en la tercera tabla de regiones es igual que el proceso de búsqueda en la segunda tabla de regiones. La entrada extraída de la tercera tabla de regiones designa el comienzo y especifica el offset y la longitud de la tabla de segmentos correspondiente.
Cuando la entrada de la tabla seleccionada por medio del ASCE es una entrada de la tercera tabla de regiones, o si ha sido seleccionada una entrada de la tercera tabla de regiones por medio de los contenidos de una entrada de la segunda tabla de regiones, la parte de índice de segmento de la dirección virtual, junto con el origen de la tabla de segmentos contenido en la entrada de la tercera tabla de regiones, se utiliza para seleccionar una entrada a partir de la tabla de segmentos. Los bits 33 y 34 de la dirección virtual (que son los bits 0 y 1 del índice de segmentos) se comparan con el offset de la tabla y la longitud de la tabla en la entrada de la tercera tabla de regiones. Se reconoce una excepción en la traducción del segmento si el offset de la tabla es mayor que los bits 33 y 34, o si la longitud de la tabla es menor que los bits 33 y 34. Se reconoce una excepción de especificación de la traducción si (1) el control de espacio privado, bit 55, en el ASCE es uno y (2) el bit de segmento común, bit 59, en la entrada extraída de la tabla de segmentos es uno. Por lo demás, el proceso de búsqueda en la tabla de segmentos es igual que el proceso de búsqueda en la segunda tabla de regiones. El proceso es como sigue:
Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada pero el control de formato STE es cero, la entrada leída desde la tabla de segmentos designa el comienzo de la tabla de páginas correspondiente, y el proceso continúa tal como se describe a continuación en la "búsqueda en la tabla de páginas".
Cuando aplica DAT mejorada y el control de formato STE es uno, la entrada leída desde la tabla de segmentos contiene los bits situados más a la izquierda de la dirección absoluta de la trama de segmento. Si el bit de protección de DAT es uno, ya sea en cualquier entrada de la tabla de regiones utilizada en la traducción o en la entrada de la tabla de segmentos, y la referencia de almacenamiento para la que se está realizando la traducción es un almacenamiento, se reconoce una excepción de protección.
Búsqueda en la tabla de páginas
Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada pero el control de formato de STE es cero, la parte de índice de página de la dirección virtual, junto con el origen de la tabla de páginas contenido en la entrada de la tabla de segmentos, se utiliza para seleccionar una entrada desde la tabla de páginas.
La dirección de 64 bits de la entrada de la tabla de paginas en almacenamiento real o absoluto se obtiene añadiendo 11 ceros a la derecha del origen de la tabla de páginas y sumando el índice de página, con tres ceros añadidos en la posición situada más a la derecha y 53 ceros añadidos en la posición situada más a la izquierda. No puede realizarse la posición de bit 0.
La entrada extraída de la tabla de páginas indica la disponibilidad de la página y contiene los bits situados más a la izquierda de la dirección real de la trama de página. El bit de página no válida, bit 53, es inspeccionado para determinar si la página correspondiente está disponible. Si el bit es uno, se reconoce una excepción de traducción de página. Se la posición 52 de bit contiene un uno, se reconoce una excepción de especificación de la traducción. Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada y el control de formato de STE es cero, si la posición 55 de bit contiene un uno se reconoce asimismo una excepción de especificación de la traducción. Si el bit de protección de DAT es uno ya sea en la entrada de la tabla de segmentos utilizada en la traducción, en la entrada de la tabla de paginas o, cuando aplica DAT, en cualquier entrada de la tabla de regiones utilizada durante la traducción, y la referencia de almacenamiento para la que se lleva a cabo la traducción es un almacenamiento, se reconoce 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 a 63 de la dirección virtual se utilizan directamente como la dirección de almacenamiento real. La dirección real puede someterse además a la anteposición de prefijo para formar una dirección absoluta. Cuando el ASCE efectivo no es una designación de espacio real y no se encuentran excepciones en el proceso de traducción, aplican las condiciones siguientes:
Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada pero el control de formato de STE es cero, la dirección real de la trama de página se obtiene desde la entrada de la tabla de paginas. La dirección real de la trama de página y la parte de índice de byte de la dirección virtual son concatenadas, con la dirección real de la trama de página formando 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 someterse además a la anteposición de prefijo para formar una dirección absoluta.
Cuando aplica DAT mejorado y el formato de control de STE es uno, la dirección absoluta de la trama de segmento y las partes del índice de página y del í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.
Las direcciones no válidas y los formatos no válidos pueden provocar excepciones que han de ser reconocidas durante el proceso de traducción. Las excepciones se reconocen cuando la información contenida en las entradas de tabla es utilizada para la traducción, y se detecta que es incorrecta.
A continuación se hace referencia a la figura 6, que ilustra un diagrama de flujo de una realización de traducción dinámica de direcciones hasta el momento de la obtención de un campo de control de formato a partir de una entrada de la tabla de segmentos.
En 602, se obtiene una dirección virtual a traducir. En 604, se obtiene la dirección de origen de la tabla de traducción de mayor nivel utilizada en la traducción de la traducción virtual. La dirección del origen de la primera tabla de traducción utilizada en la traducción depende de los bits del ASCE y del DT. En 606, se utiliza una parte de la dirección virtual para hacer referencia a la entrada de tabla apropiada en la tabla de traducción. En 608, si la entrada leída desde la tabla de traducción no es una entrada de la tabla de segmentos, entonces no se ha hecho aún referencia a la tabla de segmentos en la jerarquía de las tablas de traducción. En este caso, en 610, el origen de una siguiente tabla inferior en la jerarquía de tablas de traducción se obtiene a partir de la entrada de tabla. Se utiliza la parte apropiada de la dirección virtual para hacer referencia a la entrada de tabla correspondiente en la tabla del siguiente nivel inferior utilizada en la traducción.
Por ejemplo, si la dirección de origen de tabla de la primera tabla de traducción a utilizar en la traducción es una primera tabla de regiones, entonces se utiliza la parte de RFX de la dirección virtual para hacer referencia a la entrada de la primera tabla de regiones con la primera tabla de regiones. Si la dirección de origen de tabla apunta a una segunda tabla de regiones, entonces se utiliza la parte RSX de la dirección virtual para hacer referencia a una entrada de la segunda tabla de regiones dentro de la segunda tabla de regiones. Si la dirección de origen de tabla apunta a una tercera tabla de regiones, entonces se utiliza la parte RTX para hacer referencia a una entrada de la tercera tabla de regiones dentro de la tercera tabla de regiones. Si la dirección de origen de tabla apunta a una tabla de segmentos, entonces se utiliza la parte de SX de la dirección virtual para hacer referencia a una entrada de la tabla de segmentos dentro de la tabla de segmentos. Se hace referencia a tablas sucesivas hasta que se ha obtenido la entrada de la tabla de segmentos.
Una vez que ha sido leída la entrada de la tabla de segmentos, se examina el bit de control de formato de entrada de la tabla de segmentos (STE), en 612, para determinar si el control de formato está habilitado para esta dirección virtual concreta. Si el formato de control de la STE es cero entonces se produce la traducción dinámica de direcciones con respecto al nodo 614. Si el formato de control de la STE es uno, entonces se produce la traducción dinámica de direcciones con respecto al nodo 616.
Traducción dinámica de direcciones (el formato de control de la STE es cero)
A continuación se hace referencia a la figura 7, que muestra una continuación del diagrama de flujo desde el nodo 614 de la figura 6, cuando el control de formato de STE es cero.
En 710, se obtiene la dirección de origen para una tabla de páginas a partir de la entrada de la tabla de segmentos. En 712, se utiliza una parte de PX de la dirección virtual para hacer referencia a una entrada de la tabla de paginas, en la tabla de páginas. En 714, se obtiene una dirección real de trama de página (PFRA) a partir de la entrada de la tabla de paginas. A partir de la entrada de la tabla de paginas se obtiene un bit de no válido (I). En 716, si el bit de no válido (I) es uno entonces, en 718, la traducción de dirección virtual no puede seguir utilizando esta entrada de la tabla de paginas debido a que la entrada se ha marcado como no siendo válida. La traducción de dirección virtual utilizando esta entrada de la tabla de paginas se detiene 722. En 716, si el bit de no válido (I) es cero entonces, en 720, la dirección real de trama de página (PFRA) se combina con una parte de BX de la dirección virtual, para generar una dirección real. La dirección real puede ser sometida además a una operación de anteposición de prefijo para formar una dirección absoluta. En 724, se utiliza la dirección real para acceder a un bloque de datos al que hace referencia la dirección virtual traducida.
A continuación se hace referencia la figura 8, que muestra la continuación del diagrama de flujo a partir del nodo 616 de la figura 6.
En 810, se obtiene una dirección absoluta de trama de segmento (SFAA) a partir de una parte de la entrada de la tabla de segmentos. A partir de la entrada de la tabla de segmentos se obtiene un bit de no válido (I). En 812, si el bit de no válido (I) es uno entonces, en 814, la traducción de la dirección virtual no puede continuar utilizando la entrada de la tabla de segmentos, debido a que ha sido marcada como no siendo válida. En una realización, se devuelve un código de excepción a la entidad del programa que solicita la traducción. La traducción de esta dirección virtual utilizando esta entrada de la tabla de segmentos se detiene 818.
En 812, si el bit de no válido (I) es cero entonces, en 816, la dirección absoluta de la trama de segmento (SFAA) es combinada con la parte de PX y BX de la dirección virtual, para generar una dirección absoluta a un bloque grande de datos deseado en almacenamiento principal o en memoria. En 820, se accede al bloque grande de datos deseado al que se dirige la dirección virtual traducida.
En cada entrada de la tabla, se examina el bit de no válido para determinar la validez de la entrada de tabla obtenida. En la presente memoria, se describen más a fondo otros mecanismos de protección de la traducción que protegen el bloque de datos al que se dirige la dirección virtual traducida.
En otra realización, se obtiene información de restricción a partir de la entrada de la tabla de traducción. La información de restricción es utilizada para restringir el acceso a una parte restringida del rango de memoria virtual. Después, el acceso al bloque grande de datos deseado al que se dirige la dirección traducida, se permite solamente a la parte de restringida del rango de direcciones. La información de restricción es cualquiera de un offset de la tabla
o una longitud de la tabla.
En otra realización, la información utilizada en la traducción de dirección virtual es memorizada en, por lo menos, una memoria tampón de traducción anticipada. Se lleva a cabo una traducción subsiguiente de una dirección virtual subsiguiente en una dirección absoluta del bloque de datos en el almacenamiento principal, utilizando la información almacenada procedente de la memoria tampón de traducción anticipada, en lugar de la jerarquía de las tablas de traducción.
En otra realización, si la traducción no es nativa para la arquitectura de la máquina, se identifica una rutina de soporte lógico predeterminada para emular la traducción. La rutina de soporte lógico predeterminada contiene una serie de instrucciones. La rutina de soporte lógico predeterminada es ejecutada.
Protección del bloque de datos designado
Una vez que la dirección virtual ha sido traducida utilizando la capacidad de DAT mejorada, tal como se describe en la presente memoria, el bloque de datos deseado en memoria o almacenamiento principal designado 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 mediante la utilización del bit de protección de DAT en cada entrada de la tabla de paginas y en cada entrada de la tabla de segmentos y, cuando la capacidad de DAT mejorada está instalada, en cada entrada de la tabla de regiones. Ésta proporciona protección frente al almacenamiento indebido.
El bit de protección de DAT (bit 54) de la entrada de la tabla de paginas controla si el almacenamiento está permitido en la correspondiente página de 4 kilobytes. Cuando el bit es cero, se permiten la lectura y el almacenamiento; cuando el bit es uno, solamente se permite la lectura. Cuando se intenta guardar en una página protegida, los contenidos de la página no cambian, la unidad de operación de la ejecución de la instrucción es suprimida, y tiene lugar una interrupción del programa por protección.
El bit de protección de DAT (bit 54) de la entrada de la tabla de segmentos controla si se permite el almacenamiento en el correspondiente segmento de 1 megabyte, tal como sigue:
Cuando no aplica DAT mejorada, o cuando aplica 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 segmentos se trata como si estuviera sometido a la operación lógica OR en la posición del bit de protección de DAT de cada entrada en la tabla de páginas designada por la entrada de la tabla de segmentos. De este modo, cuando el bit de protección de DAT de la entrada de la tabla de segmentos es uno, el efecto es como si el bit de protección de DAT fuera uno en cada entrada, en la tabla de páginas designada.
Cuando aplica 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 segmentos controla si se permite el almacenamiento en el correspondiente segmento de 1 megabyte. Cuando el bit es cero, se permiten la lectura y el almacenamiento; cuando el bit es uno, solamente se permite la lectura. Cuando se intenta guardar en un segmento protegido, los contenidos del segmento no cambian, la unidad de operación de la ejecución de la instrucción es suprimida, y tiene lugar una interrupción del programa por protección.
Cuando aplica DAT mejorada, el bit de protección de DAT de la entrada de la tabla de regiones controla si se permite el almacenamiento en la región o regiones correspondientes. El bit de protección de DAT en una entrada de la tabla de regiones se trata como si estuviera sometido a una operación lógica OR en la posición del bit de protección de DAT en cada subsiguiente entrada de la tabla de regiones y en cada subsiguiente entrada de la tabla de segmentos que se utiliza en la traducción. Cuando el bit de control de formato STE es cero, el bit de protección de DAT se propaga además a la entrada de la tabla de paginas.
La protección de DAT aplica a todas las referencias de tipo almacenamiento que utilizan una dirección virtual.
Cuando la protección controlada por claves aplica a un acceso de almacenamiento, se permite el almacenamiento solamente cuando la clave de almacenamiento se corresponde con la clave de acceso asociada con la solicitud para el acceso de almacenamiento; la lectura se permite cuando la clave coincide o cuando el bit de protección de lectura 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. Esta acción de protección se resumen como sigue.
- Condiciones
- El acceso al almacenamiento se permite para
- Bit de protección contra lectura de la clave de almacenamiento
- Relación entre las claves
- Lectura
- Almacenamiento
- 0
- Coincidentes Sí Sí
- 0
- Diferentes Sí No
- 1
- Coincidentes Sí Sí
- 1
- Diferentes No No
- Explicación: Coincidentes Sí No Los 4 bits de control de acceso de la clave de almacenamiento son iguales a la clave de acceso, o la clave de almacenamiento vale cero. Se permite el acceso No se permite el acceso. En lectura, no se facilita la información al programa; en almacenamiento, no se modifican los contenidos de la posición de almacenamiento.
Cuando el acceso al almacenamiento es iniciado por la CPU y aplica la protección controlada por claves, la clave
10 PSW es la clave de acceso, excepto por cuanto 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 PRIMARIO, MOVER CON CLAVE y MOVER CON CLAVE DE ORIGEN, y para el primer o el segundo operando de MOVER PÁGINA. La clave PSW ocupa a las posiciones de bit 8 a 11 de la palabra de estado de programa actual.
15 Cuando se prohíbe un acceso de CPU debido a protección controlada por claves, se finaliza la ejecución de la instrucción, y tiene lugar una interrupción del programa por una excepción de protección. No obstante, la unidad de operación o la ejecución de la instrucción pueden suprimirse.
Una clave de almacenamiento está asociada con cada bloque de 4 kilobytes que está disponible en la configuración.
20 Las claves de almacenamiento no forman parte del almacenamiento direccionable. En una realización, la clave de almacenamiento tiene el formato que se muestra en la figura 23.
Las posiciones de bit de la clave de almacenamiento se asignan como sigue:
Bits de control de acceso (ACC): si una referencia está sujeta a protección controlada por claves, los cuatro bits de control de acceso se comparan con la clave de acceso de cuatro bits cuando se almacena información, y cuando se
25 lee información desde una posición protegida contra lectura.
Bit de protección contra lectura (F): si la referencia está sujeta a protección controlada por claves, el bit de protección de lectura controla si la protección controlada por claves aplica a las referencias de tipo lectura: un cero indica que son monitorizadas solamente las referencias de tipo almacenamiento y que se permite la lectura con cualquier clave de acceso; un uno indica que la protección controlada por claves aplica a lectura y a
30 almacenamiento.
Bit de referencia (R): el bit de referencia se pone normalmente a uno cada vez que se hace referencia a una posición en el bloque de almacenamiento correspondiente, ya sea para almacenamiento o para lectura de información.
Bit de modificación (C): el bit de modificación se pone a uno cada vez que se guarda información en una posición en el bloque de almacenamiento correspondiente.
Cuando aplica DAT mejorada, rigen las siguientes condiciones adicionales:
Cuando el formato de control de STE (FC, bit 53 de la entrada de la tabla de segmentos utilizada durante una traducción) es cero, el bit 55 de la entrada de la tabla de paginas utilizada durante la traducción es la anulación de la grabación de la modificación (CO) para la página. Cuando el bit de CO en la entrada de la tabla de paginas es uno, la grabación del cambio es impredecible para cualesquiera operaciones de almacenamiento en la página.
Cuando el bit de control de formato (FC) en la entrada de la tabla de segmentos es uno, aplica lo siguiente:
La posición 47 de bit de la entrada de la tabla de segmentos contiene el control de validez ACCF. El control de validez ACCF determina la validez de los bits de control de acceso y de protección contra lectura en la STE. Cuando el control de validez ACCF es cero, la protección controlada por claves utiliza los bits de control de acceso y de protección contra lectura en la clave de almacenamiento para el bloque de 4 kilobytes correspondiente a la dirección.
Cuando el control de validez ACCF es uno, las posiciones de bit 48 a 52 de la entrada de la tabla de segmentos contienen los bits de control de acceso y el bit de protección contra lectura para el segmento. Cuando se determina la accesibilidad para un operando de almacenamiento, es impredecible si son examinados los bits 48 a 52 de la STE o los bits 0 a 4 de las claves de almacenamiento individuales para los bloques de 4 kilobytes que componen el segmento.
El bit 55 de la entrada de la tabla de segmentos es la anulación de la grabación de la modificación (CO) para el segmento. Cuando el CO en la entrada de la tabla de segmentos es uno, es impredecible si el bit de cambio está activado para cualesquiera operaciones de guardar en el segmento.
Las referencias a la clave de almacenamiento se manejan como sigue:
Siempre que se realiza una referencia al almacenamiento y aplica protección controlada por claves a la referencia, los cuatro bits de control de acceso y el bit de protección contra lectura asociados con la posición de almacenamiento son inspeccionados simultáneamente, y simultáneamente a la referencia a la posición de almacenamiento. Cuando (1) no aplica DAT mejorada, (2) aplica DAT mejorada pero se accede al almacenamiento por medio de la entrada de la tabla de segmentos en la que el control de formato de STE es cero, o (3) aplica DAT mejorada, se accede al almacenamiento por medio de una entrada de la tabla de segmentos en la que el control del formato de STE es uno, pero el control de validez ACCF es 0, los bits de control de acceso y el bit de protección contra lectura están en los bits 0 a 4 de la clave de almacenamiento para el bloque de 4 kilobytes. Cuando aplica DAT mejorada y se accede al almacenamiento por medio de una entrada de la tabla de segmentos en la que el control de formato de STE y el control de validez ACCF valen uno, es impredecible si los bits 0 a 4 de la clave de almacenamiento o los bits 48 a 52 de la entrada de la tabla de segmentos proporcionan los bits de control de acceso y el bit de protección contra lectura. Además, cuando la entrada de la tabla de segmentos proporciona los bits de control de acceso y el bit de protección contra escritura, puede utilizarse una copia almacenada en memoria tampón procedente de la memoria tampón de traducción anticipada.
Cuando aplica DAT mejorada, y (a) el control de formato de STE es cero, y la anulación de la grabación de la modificación es uno en la entrada de la tabla de paginas utilizada por la DAT, o (b) el control de formato de clave STE es uno, y la anulación de la grabación de la modificación vale uno en la entrada de la tabla de segmentos utilizada por la DAT, es impredecible si la CPU activa el bit de modificación cuando lleva a cabo una operación de almacenamiento. La anulación de la grabación de la modificación puede ser almacenada en memoria tampón en la copia de la memoria tampón de traducción anticipada de la PTE o la STE.
Cuando la característica SSKE condicional no está instalada, la instrucción ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA provoca que los siete bits sean activados todos simultáneamente en la clave de almacenamiento. Cuando la característica SSKE condicional está instalada, la instrucción ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA puede ser utilizada para activar toda la clave de almacenamiento o partes de la misma, en base a criterios especificados por los programas.
La instrucción INSERTAR CLAVE DE ALMACENAMIENTO EXTENDIDA proporciona una imagen consistente de los bits 0 a 6 de la clave de almacenamiento para un bloque de 4 kilobytes. Análogamente, las instrucciones INSERTARCLAVE DE ALMACENAMIENTO VIRTUAL y PROTECCIÓN DE PRUEBA proporcionan una imagen consistente de los bits de control de acceso y del bit de protección contra escritura.
La instrucción REINICIAR BIT DE REFERENCIA EXTENDIDO modifica solamente 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 modificación son examinados simultáneamente para establecer el código de condición.
El registro de referencias proporcionadas por el bit de referencia no es necesariamente preciso. Sin embargo, en la mayor parte de las situaciones, el registro de referencias coincide aproximadamente con la referencia de almacenamiento relacionada. Puede activarse un bit de modificación en casos en los que no se ha producido almacenamiento.
Visto desde otras CPUs, las lecturas y los almacenamientos de claves de almacenamiento debidos a instrucciones que manipulan explícitamente una clave de almacenamiento (INSERTAR CLAVE DE ALMACENAMIENTO EXTENDIDA, INSERTAR CLAVE DE ALMACENAMIENTO VIRTUAL, REINICIAR BIT DE REFERENCIA EXTENDIDO, y ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA) son ordenados entre ellos mismos y entre referencias de operandos de almacenamiento, tal como si los accesos a las claves de almacenamiento fueran lecturas y almacenamientos de operandos de almacenamiento, respectivamente.
ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA (SSKE, SET STORAGE KEY EXTENDED)
Las claves de almacenamiento pueden ser activadas por medio de una instrucción ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA (SSKE). En una realización, la instrucción SSKE tiene el formato que se muestra en la figura 24.
La clave de almacenamiento para uno o varios bloques de 4 kilobytes es sustituida por el valor del primer registro de operando. Cuando la capacidad de SSKE condicional está instalada, pueden ser omitidas ciertas funciones de la operación de activación de claves. Cuando la capacidad SSKE condicional no está instalada, o cuando la capacidad SSKE condicional está instalada y los bits MR y MC del campo M3 son cero, la clave de almacenamiento para el bloque de 4 kB al que hacen referencia los contenidos del registro general R2 es sustituida por bits procedentes del registro general R1. La instrucción se completa sin cambiar el código de condición.
Cuando la capacidad SSKE condicional está instalada y uno o ambos bits de MR y MC valen uno, los bits de control de acceso, el bit de protección contra escritura y, ocasionalmente, el bit de referencia y el bit de modificación de la clave de almacenamiento a la que se dirigen los contenidos del registro general R2 se comparan con los bits correspondientes en el registro general R1. Si los bits comparados son iguales, entonces no se realizan cambios en la clave; de lo contrario, los bits seleccionados de la clave son sustituidos por los bits correspondientes en el registro general R1. La clave de almacenamiento previa a cualquier modificación es insertada en el registro general R1, y el resultado se indica mediante el código de condición.
Cuando la capacidad de DAT mejorada está instalada, las operaciones anteriores pueden repetirse para las claves de almacenamiento de múltiples bloques de 4 kB en el interior del mismo bloque de 1 MB, sometidas al control de múltiples bloques, descrito a continuación. En una realización, el campo M3 tiene el formato que se muestra en la figura 25.
Los bits del campo M3 se definen como sigue:
Reservado: el bit 0 está reservado.
Máscara de actualización del bit de referencia (MR): el bit MR, bit 1 del campo M3, controla si las actualizaciones para el bit de referencia en la clave de almacenamiento pueden ser omitidas, tal como se describe a continuación.
Máscara de actualización del bit de modificación (MC): el bit MC, bit 2 del campo M3, controla si las actualizaciones para el bit de modificación en la clave de almacenamiento pueden ser omitidas, tal como se describe a continuación.
Control de múltiples bloques (MB): el bit (MB), bit 3 del campo M3, controla si las claves de almacenamiento para múltiples bloques de almacenamiento de 4 kB pueden activarse, tal como se describe en el apartado activación de claves de almacenamiento en múltiples bloques de 4 kB.
Cuando la capacidad de DAT mejorada no está instalada, la posición del bit 3 del campo M3 está reservada. Cuando la capacidad de SSKE condicional está instalada, el proceso es como sigue:
Cuando los bits MR y MC, bits 1 y 2 del campo M3, son cero, la instrucción se completa como si la capacidad SSKE condicional no estuviera instalada. La clave de almacenamiento para el bloque de 4 kB al que se dirigen los contenidos del registro general R2 es sustituida por bits procedentes del registro general R1, y la instrucción se completa sin cambiar el código de condición.
Cuando uno o ambos bits MR y MC valen uno, el proceso es como sigue:
Antes de cualquier modificación, los contenidos de la clave de almacenamiento para el bloque de 4 kB al que se dirige el registro general R2 se colocan en las posiciones de bit 48 a 54 del registro general R1, y el bit 55 del registro general R1 se pone a cero. Los bits 0 a 47 y 56 a 63 del registro no cambian. Si se detecta un código de bloque de verificación (CBC, checking block code) no válido cuando se realiza una lectura de la clave de almacenamiento, entonces (a) toda la clave de almacenamiento para el bloque de 4 kB es sustituida por los bits 56 a 62 del registro general R1, (b) los contenidos de las posiciones de bit 48 a 55 del registro general R1 son impredecibles, y (c) la instrucción se completa activando el código de condición 3.
Los bits de control de acceso y el bit de protección contra lectura de la clave de almacenamiento para el bloque de 4 kB designado, son comparados con los campos correspondientes en los bits 56 a 60 del registro general R1. Si los campos respectivos no son iguales, toda la clave de almacenamiento para el bloque de 4 kB es sustituida mediante bits procedentes del registro general R1, y la instrucción se completa activando el código de condición. Cuando los bits de control de acceso y de protección contra escritura en la clave de almacenamiento son iguales a los bits respectivos en el registro general R1, el proceso continúa tal como se describe a continuación.
Cuando los bits de MR y de MC valen uno, la instrucción se completa activando el código de condición 0. La clave de almacenamiento no cambia 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 kB designado se compara con el bit 61 del registro general R1. Si los bits son iguales, la instrucción se completa activando el código de condición 0. La clave de almacenamiento no cambia en este caso. Si los bits no son iguales, entonces (a) toda la clave de almacenamiento para el bloque de 4 kB designado es sustituida por los bits del registro general R1, y la instrucción se completa activando el código de condición; o (b) el bit de referencia para la clave de almacenamiento es sustituido por el bit 61 del registro general R1, el bit de modificación para la clave es impredecible, y la instrucción se completa activando el código de condición 2. Es impredecible si el código de condición 1 ó 2 es activado.
Cuando el bit MC es cero y el bit MR es uno, entonces el bit de modificación de la clave de almacenamiento para el bloque de 4 kB designado se compara con el bit 62 del registro general R1. Si los bits son iguales, la instrucción se completa activando el código de condición 0. La clave de almacenamiento no cambia en este caso. Si los bits no son iguales, entonces (a) toda la clave de almacenamiento para el bloque de 4 kB designado es sustituida por los bits del registro general R1, y la instrucción se completa activando el código de condición; o (b) el bit de modificación para la clave de almacenamiento es sustituido por el bit 62 del registro general R1, el bit de referencia para la clave es impredecible, y la instrucción se completa activando el código de condición 2. Es impredecible si el código de condición 1 ó 2 es activado.
Cuando la capacidad DAT mejorada no está instalada, o cuando la capacidad está instalada pero el control de bloques múltiples es cero, el registro general R2 contiene una dirección real. Cuando la capacidad 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 a 51 del registro general R2 designan un bloque de 4 kB en almacenamiento real o absoluto, y los bits 0 a 39 y 52 a 63 del registro son ignorados. En el modo de direccionamiento de 31 bits, los bits 33 a 51 del registro general R2 designan un bloque de 4 kB en almacenamiento real o absoluto, y los bits 0 a 32 y 52 a 63 del registro son ignorados. En el modo de direccionamiento de 64 bits, los bits 0 a 51 del registro general R2 designan un bloque de 4 kB en almacenamiento real o absoluto, y los bits 52 a 63 del registro son ignorados. Puesto 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 direcciones. La referencia a la clave de almacenamiento no está sujeta a excepción de protección.
El nuevo valor de la clave de almacenamiento de siete bits, o bits seleccionados de los mismos, se obtienen a partir de las posiciones de bit 56 a 62 del registro general R1. Los contenidos de las posiciones de bit 0 a 55 y 63 del registro son ignorados. Cuando está instalada la capacidad SSKE condicional, y uno o ambos de los bits MR y MC valen uno, la posición de bit 63 deberá contener un cero; de lo contrario, el programa puede no funcionar de manera compatible del futuro.
Se realiza una función de serialización y sincronización del punto de control antes de que comience la operación y después de que la operación se ha completado, con la excepción de que cuando está instalada la capacidad de SSKE condicional y el código de condición resultante es 0, es impredecible si se lleva o no a cabo una función de serialización y sincronización del punto de control después de completarse la operación. Para cualquier acceso de almacenamiento, mediante una CPU o programa de canal, realizado al bloque de 4 kB designado antes o después de la activación de la clave mediante esta instrucción, la activación asociada de los bits de referencia y de modificación en la clave de almacenamiento para el bloque es asimismo realizada antes o después, respectivamente, de la ejecución de esta instrucción.
Activación de claves de almacenamiento en múltiples bloques de 4 kB
Cuando la capacidad de DAT no está instalada, o cuando la capacidad está instalada pero el control de múltiples bloques es cero, la clave de almacenamiento para un solo bloque de 4 kB es activada, tal como se ha descrito anteriormente. Cuando la capacidad DAT mejorada está instalada, y el control de múltiples bloques es uno, las claves de almacenamiento para múltiples bloques de 4 kB dentro de un bloque de 1 megabyte pueden activarse, comenzando con el bloque especificado mediante la segunda dirección de operando, y continuando hacia la derecha con cada bloque sucesivo hasta el límite del siguiente megabyte. En este caso, la instrucción ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA es interrumpible, y el proceso es como sigue:
Cuando se produce una interrupción (diferente de una que siga a la terminación), el registro general R2 ha sido actualizado de manera que la instrucción, cuando vuelve a ser ejecutada, se reanuda en el punto de interrupción. Si uno o ambos de los bits MR o MC valen uno, el código de condición es impredecible; de lo contrario, el código de condición no cambia.
Cuando la instrucción se completa sin interrupción, el registro general R2 ha sido actualizado al siguiente límite de 1 MB. Si uno o ambos de los bits MR o MC valen uno, se activa el código de condición 3; de lo contrario, el código de condición no cambia.
En cualquiera de los dos casos anteriores, cuando uno o ambos de los bits MR o MC valen uno, los bits 48 a 55 del registro general R1 son impredecibles.
Cuando se produce el procesamiento de múltiples bloques y los campos R1 y R2 designan el mismo registro, la segunda dirección de operando es situada en el registro. Cuando se produce el procesamiento de múltiples bloques en los modos de direccionamiento de 24 bits o de 31 bits, los bits situados más a la izquierda que no forman parte de la dirección en las posiciones de bit 32 a 63 del registro general R2 se ponen a cero; los bits 0 a 31 del registro no cambian.
Cuando la capacidad de SSKE condicional no está instalada, o cuando los bits MR y MC del campo M3 son cero, el código de condición no cambia. Cuando la capacidad SSKE condicional está instalada, y uno o ambos de los bits MR y MC valen uno, el código de condición se fija como sigue:
0 - Clave de almacenamiento no activa
1- Clave de almacenamiento completa activa
2 - Clave de almacenamiento parcial activa
3 - Clave de almacenamiento completa activa; los bits 48 a 51 del registro general R1 son impredecibles.
Excepciones de programa:
Direccionamiento (dirección especificada por el registro general R2)
Operación privilegiada
La grabación de modificaciones proporciona información sobre qué páginas han de ser guardadas en almacenamiento auxiliar cuando son reemplazadas en almacenamiento principal. La grabación de modificaciones utiliza el bit de modificación (bit 6) de la clave de almacenamiento. El bit de modificación se pone a uno cada vez que un acceso de almacenamiento provoca que los contenidos del bloque de almacenamiento correspondiente sean modificados, y (a) no aplica DAT mejorada, o (b) aplica DAT mejorada, y es cierta cualquiera de las siguientes:
El control de formato de STE de la entrada de la tabla de segmentos utilizada mediante DAT es cero, y la anulación de la grabación de la modificación (CO) en la entrada de la tabla de paginas utilizada por la DAT es cero.
El control de formato de STE de la entrada de la tabla de segmentos utilizada mediante DAT es uno, y la anulación de la grabación de la modificación (CO) en la entrada de la tabla de segmentos utilizada por la DAT es cero.
Un acceso de almacenamiento que no cambia los contenidos del almacenamiento puede, o no, poner a uno el bit de modificación. El bit de modificación no se pone a uno por un intento de almacenamiento si el acceso está prohibido. En particular:
Para la CPU, un acceso de almacenamiento está prohibido siempre que existe una excepción de acceso para dicho acceso, o siempre que existe una excepción que es de prioridad superior a la prioridad de una excepción de acceso para dicho acceso.
Para el subsistema de canales, el acceso de almacenamiento está prohibido siempre que exista una violación de protección controlada por clave para dicho acceso.
La grabación de la modificación está siempre activa y tiene lugar para todos los accesos para almacenamiento en la memoria, incluyendo aquellos realizados por cualquier CPU (excepto cuando está suprimida por la anulación de la grabación de la modificación, descrito en la presente memoria), por cualquier capacidad de operador, o por el subsistema de canales. Tiene lugar para referencias implícitas realizadas por la máquina, tales como aquellas que son parte de interrupciones.
La grabación de la modificación no tiene lugar para los operandos de las instrucciones siguientes, puesto que modifican directamente una clave de almacenamiento sin modificar una posición de almacenamiento:
REINICIAR BIT DE REFERENCIA EXTENDIDO
ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA (el bit de modificación se pone en un valor especificado).
Los bits de modificación que han sido modificados desde ceros a unos no son necesariamente restablecidos a ceros en un reintento de la CPU.
El bit de modificación de la clave de almacenamiento se pone a uno cada vez que un acceso de almacenamiento provoca que sean modificados los contenidos del correspondiente bloque de almacenamiento. Un acceso de almacenamiento que no cambia los contenidos del almacenamiento puede, o no, poner a uno el bit de modificación. El bit de modificación no se pone a uno en un intento de guardar si el acceso está prohibido. La anulación de la grabación de la modificación permite que se omita la activación del bit de modificación de la clave de almacenamiento.
Cuando aplica DAT mejorada, y se traduce la dirección virtual mediante las entradas de la tabla de DAT, se proporciona una anulación de la grabación de la modificación (CO) en el bit 55 de la entrada de la tabla de segmentos y de la entrada de la tabla de paginas. Cuando el bit 53 de control de formato (FC) de STE de la entrada de la tabla de segmentos es cero, aplica la anulación de la grabación de la modificación en la entrada de la tabla de paginas. Cuando la anulación de la grabación de la modificación en la PTE es cero, se produce la grabación de la modificación para las operaciones de almacenamiento en el bloque de 4 kB. Cuando la anulación de la grabación de la modificación vale uno, es impredecible si se produce grabación de la modificación para operaciones de almacenamiento en el bloque de 4 kB. Cuando el control del formato de STE vale uno, aplica la anulación de la grabación de la modificación en la STE. Cuando la anulación de la grabación de la modificación en la STE vale cero, se produce la grabación de la modificación para operaciones de almacenamiento en cualquiera de los 256 bloques de 4 kB del segmento. Cuando la anulación de la grabación de la modificación en la STE vale uno, es impredecible si se produce grabación de la modificación en cualquiera de los 256 bloques de 4 kB del segmento.
La anulación de la grabación de la modificación no aplica para direcciones reales o absolutas o para una dirección virtual que es traducida por medio de la designación de un espacio real.
Ejecutar Función de Gestión de Trama (PFMF)
El formato de la PFMF se muestra en la figura 26.
Sometida a los controles en el primer registro de operando, se lleva a cabo una función de gestión de trama para la trama de almacenamiento designada por la segunda dirección de operando. Los contenidos del registro general R1 son los siguientes:
Indicaciones de la función de gestión de trama:
Las posiciones de bit 44 a 47 del registro general R1 contienen las indicaciones de la función de gestión de trama (FMFI, frame management function indications), como sigue:
Control activar clave (SK, set key): el bit 46 controla si la clave de almacenamiento para cada bloque de 4 kB en la trama es activada a partir de los bits 56 a 62 del registro general R1. Cuando el control SK es cero, las claves no son activadas; cuando el control SK es uno, las claves son activadas.
Control borrar trama (CF, Clear Frame): el bit 47 controla si la trama se pone a ceros. Cuando el control CF es cero, no se lleva a cabo la operación de borrado. Cuando el control CF es uno, la trama se borra poniendo ceros.
Indicación de utilización (UI, Usage Indication): la posición de bit 48 del registro general R1 contiene la indicación de utilización (UI). Cuando el bit 48 es cero, esto indica que el programa no prevé la utilización inmediata de la trama. Cuando el bit 48 es uno, indica que el programa prevé la utilización de la trama en un futuro próximo.
Código de tamaño de trama (FSC, Frame Size Code): los bits 49 a 51 del registro general R1 contienen el código
- del tamaño de trama (FSC), como sigue:
- FSC
- Significado
- 0
- Trama de 4 kB
- 1
- Trama de 1 MB
- 2-7
- Reservado
Máscara de actualización del bit de referencia (MR): cuando el control de activar clave, bit 46 del registro general R1, vale uno, el bit 53 del registro general R1 controla si pueden omitirse las actualizaciones al bit de referencia en la clave de almacenamiento, tal como se describe a continuación.
5 Máscara de actualización del bit de modificación (MC): cuando el control de activar clave, bit 46 del registro general R1, vale uno, el bit 54 del registro general R1 controla si pueden omitirse las actualizaciones al bit de modificación en la clave de almacenamiento.
La manipulación de los bits de MR y MC es idéntica a la manipulación de los bits correspondientes del campo M3 de la instrucción ACTIVAR CLAVE DE ALMACENAMIENTO EXTENDIDA, excepto que el registro general R1 no se
10 actualiza con los contenidos de la clave previa, y el código de condición no se modifica.
Clave: cuando el control activar clave, bit 46 del registro general R1, vale uno, los bits 56 a 62 del registro contienen la clave de almacenamiento a activar para cada bloque de 4 kB en la trama, con los bits de protección de acceso, el bit de protección contra escritura, el bit de referencia y el bit de modificación en las posiciones de bit 56 a 59, 60, 61 y 62, respectivamente.
15 El registro general R2 contiene la dirección real o absoluta de la trama de almacenamiento sobre la que ha de llevarse a cabo la función de gestión de trama. Cuando el código del tamaño de trama indica un bloque de 4 kB, la segunda dirección de operando es real; cuando el código del tamaño de trama indica un bloque de 1 MB la segunda dirección de operando es absoluta. La manipulación de la dirección en el registro general R2 depende del modo de direccionamiento. En el modo de direccionamiento de 24 bits, los contenidos de las posiciones de bit 40 a 51 del
20 registro, con 12 ceros añadidos en la posición situada más a la derecha, constituyen la dirección, y se ignoran los bits 0 a 39 y 52 a 63 en el registro. En el modo de direccionamiento de 31 bits, los contenidos de las posiciones de bit 33 a 51 del registro, con 12 ceros añadidos en la posición situada más a la derecha, constituyen la dirección, y se ignoran los bits 0 a 32 y 52 a 63 en el registro. En el modo de direccionamiento de 64 bits, los contenidos de las posiciones de bit 0 a 51 del registro, con 12 ceros añadidos en la posición situada más a la derecha, constituyen la
25 dirección, y se ignoran los bits 52 a 63 en el registro.
A continuación se muestran los contenidos de los registros que se acaba de describir.
- Condiciones
- El acceso al almacenamiento se permite para
- Bit de protección contra lectura de clave de almacenamiento
- Relación entre las claves
- Lectura
- Almacenamiento
- 0
- Coincidentes Sí Sí
- 0
- Diferentes Sí No
- 1
- Coincidentes Sí Sí
- 1
- Diferentes No No
- Explicación: Coincidentes Sí No Los 4 bits de control de acceso de la clave de almacenamiento son iguales a la clave de acceso, o la clave de almacenamiento vale cero. Se permite el acceso No se permite el acceso. En lectura, no se facilita la información al programa; en almacenamiento, no se modifican los contenidos de la posición de almacenamiento.
Cuando el código del tamaño de trama es 0, las funciones de gestión de trama especificadas se llevan a cabo para la trama de 4 kB especificada por el segundo operando. El registro general R2 no cambia en este caso.
30 Cuando el código de tamaño de trama es 1, las funciones de gestión de trama especificadas se llevan a cabo para uno o varios bloques de 4 kB en el interior de la trama de 1 MB, comenzando por el bloque especificado por la dirección del segundo operando, y continuando hacia la derecha con cada bloque sucesivo hasta el siguiente límite de 1 MB.
En este caso, Ejecutar Función de Gestión de Trama es interrumpible, y el proceso es el siguiente: Cuando se produce una interrupción (diferente a la interrupción que sigue a la terminación), la dirección del segundo operando en el registro general R2 es actualizada mediante el número de bloques de 4 kB procesados, de manera que la instrucción, cuando vuelve a ser ejecutada, se reanuda en el punto de interrupción.
Cuando la instrucción se completa sin interrupción, la dirección del segundo operando en el registro general R2 es actualizada al siguiente límite de 1 MB.
Cuando el código del tamaño de trama es 1 en los modos de direccionamiento de 24 bits o de 31 bits, los bits situados más a la izquierda que no forman parte de la dirección en las posiciones de bit 32 a 63 del registro general R2 se ponen a cero; los bits 0 a 31 del registro no cambian.
Cuando el control de borrar trama vale uno, las referencias al almacenamiento principal en el interior del segundo operando no necesariamente son simples referencias de acceso y no necesariamente se llevan a cabo en sentido de izquierda a derecha, según se observa desde otras CPU y mediante los programas de canal. La operación de borrado no está sometida a protección controlada por claves.
Cuando el control de la clave de almacenamiento vale uno, la operación para cada bloque de 4 kB es similar a la descrita en relación SSKE excepto en que cuando las claves para múltiples bloques están activas, el código de condición y los contenidos del registro general R1 no cambian. Se lleva a cabo una función de serialización y de sincronización del punto de control, antes de que comience la operación y de nuevo después de que la operación se ha completado, excepto que cuando los siete bits de las claves de almacenamiento a activar son iguales a los bits 56 a 62 del registro general R1, o cuando los bits MR y MC permiten que las claves de almacenamiento permanezcan todas sin cambios, es impredecible si las operaciones de serialización y sincronización del punto de control se llevan a cabo después de que se complete la operación. Es impredecible si se lleva a cabo en primer lugar la operación de borrar trama o de activar clave, cuando los dos controles respectivos valen uno. Siempre que no exista otro acceso al almacenamiento mediante otras CPU o mediante el subsistema de canales, los resultados finales de la instrucción reflejan el valor de la clave especificada incluyendo los valores especificados de R y C cuando MR y MC valen cero.
Condiciones especiales
Se reconoce una excepción y se suprime la operación, para cualquiera de las condiciones siguientes:
Los bits 32 a 45, 52, 55 ó 63 del registro general R1 no son cero.
El código del tamaño de trama especifica un valor reservado.
Código de condición: el código no cambia.
Ejecutar Función de Gestión de Trama (PFMF) - Claves de almacenamiento
A continuación se hace referencia a la figura 9, que muestra una realización de un diagrama de flujo de Ejecutar Función de Gestión de Trama, en el que las claves de almacenamiento asociadas se activan de acuerdo con la instrucción.
En 910, se obtiene una instrucción de máquina definida para la arquitectura de la máquina. La instrucción de máquina contiene un código de operación para una instrucción de gestión de trama. La instrucción de máquina tiene un primer campo que identifica un primer registro general y un segundo campo que identifica un segundo registro general. En 912, se obtiene a partir del segundo registro general una dirección de un primer bloque inicial de datos en el interior de un bloque grande de datos en memoria o almacenamiento principal. En 914, se obtiene información de gestión de trama a partir del primer registro general. La información de gestión de trama tiene un campo de clave con un primer conjunto de bits de protección de acceso. Para un bloque grande de datos, a partir del segundo registro general se obtiene una segunda dirección de operando de un primer bloque de datos inicial del bloque grande de datos. El bloque grande de datos tiene una serie de bloques pequeños de datos. Cada uno de los bloques pequeños tiene una correspondiente clave de almacenamiento con bits de protección de acceso de almacenamiento. En 916, para el bloque grande de datos, los bits de protección de acceso para el campo de clave son activados en los bits de protección de acceso de almacenamiento de cada clave asociada con el bloque grande. Para el bloque pequeño de datos, se obtiene una dirección de operando de un primer bloque pequeño de datos a partir del segundo registro general. Cada bloque de datos tiene una clave de almacenamiento correspondiente. La clave de almacenamiento tiene bits de protección de acceso de almacenamiento. Los bits de protección de acceso se activan en los bits de protección de acceso de almacenamiento de la clave de acceso para el bloque pequeño.
Ejecutar Función de Gestión de Trama (PFMF) - Borrar trama
A continuación se hace referencia a la figura 10, que muestra un diagrama de flujo de una realización de Ejecutar Función de Gestión de Trama, en la que las tramas indicadas son borradas.
En 910, se obtiene una instrucción de máquina definida para la arquitectura de la máquina. La instrucción de máquina contiene un código de operación para una instrucción de gestión de trama. La instrucción de máquina tiene un primer campo que identifica un primer registro general y un segundo campo que identifica un segundo registro general. En 1012, se obtiene del primer registro general la información de borrar trama con un campo de tamaño de trama. En 1014, se determina si el campo de tamaño de trama indica que la trama de almacenamiento es una de un bloque pequeño de datos en memoria o de un bloque grande de datos en memoria. En 1016, se obtiene del segundo registro general una dirección del segundo operando de la trama de almacenamiento sobre la que ha de llevarse a cabo la instrucción de máquina. La dirección del segundo operando es una dirección real de un bloque pequeño de datos en memoria o una dirección absoluta de un bloque grande de datos en memoria. En 1018, si la trama de almacenamiento indicado es un bloque pequeño de datos, entonces se borra el bloque pequeño de datos poniendo a cero todos los bytes del bloque pequeño. Si la trama de almacenamiento indicado es un bloque grande de datos, se obtiene del segundo registro general una dirección de operando de un primer bloque inicial de datos del bloque grande de datos. El bloque grande de datos tiene una primera serie de bloques pequeños de datos. En 1020, se borra cada uno de los bloques pequeños poniendo a cero todos los bytes de datos a partir del primer bloque inicial de datos.
En otra realización de la función de gestión de trama, se obtiene una indicación del tamaño del bloque a partir de un campo de la instrucción de máquina o de un campo del primer registro general. En base a la indicación del tamaño de bloque, se determina si el operando a que se hace referencia es un operando del bloque grande de datos o del bloque pequeño de datos. La dirección del operando es una dirección absoluta del bloque grande de datos o la dirección real del bloque pequeño de datos. La dirección real es sometida a anteposición de prefijo para determinar la dirección absoluta. Para el bloque grande de datos, la dirección del siguiente bloque de datos se guarda en el segundo registro general. El siguiente bloque de datos es un bloque de datos siguiente al primer bloque de datos. La dirección del siguiente bloque de datos se determina encontrando un límite del bloque grande de datos, o en respuesta a un evento de interrupción de programa.
En otra realización de la función de gestión de trama, el campo de gestión de trama tiene un campo de control de referencia y un campo de control de modificaciones. El campo de clave tiene un bit de protección contra lectura, un bit de modificación y un bit de referencia. La clave de almacenamiento tiene un bit de protección contra lectura del almacenamiento, un bit de referencia de almacenamiento y un bit de modificación de almacenamiento. Si el campo de control de referencia y el campo de control de modificación no están habilitados, el bit de protección contra lectura, el bit de referencia y el bit de modificación del campo de clave son activados en los correspondientes bits de protección contra lectura del almacenamiento, bits de referencia de almacenamiento y bits de modificación de almacenamiento de la clave de almacenamiento asociada. Si cualquiera entre el campo de control de referencia o el campo de control de modificación están habilitados, y cualquiera de los bits de protección de acceso del campo de clave no son iguales a los bits de protección de acceso de almacenamiento del campo de almacenamiento, o el bit de protección no es igual al bit de protección de almacenamiento, el bit de protección contra lectura, el bit de referencia y el bit de modificación del campo de clave son activados en los correspondientes bits de protección contra lectura de almacenamiento, bits de referencia de almacenamiento y bits de modificación de almacenamiento de cada almacenamiento asociado.
En otra realización, si la instrucción de máquina no es nativa para la arquitectura de instrucciones de máquina del procesador, la instrucción de máquina se interpreta para identificar una rutina de soporte lógico predeterminada con objeto de emular la operación de la instrucción de máquina. La rutina de soporte lógico predeterminada contiene una serie de instrucciones. La rutina de soporte lógico predeterminada es ejecutada.
Implementación comercial
Si bien en la presente memoria se menciona la z/Architecture de IBM® , uno o varios aspectos de la presente invención son aplicables igualmente a otras arquitecturas de máquina y/u otros entornos informáticos que utilicen entidades paginables o construcciones similares.
Las implementaciones comerciales de la capacidad de eDAT y otros formatos, instrucciones y atributos dados a conocer en la presente memoria pueden ser implementadas en equipamiento físico o por programadores, tal como programadores de sistemas operativos, escribiendo, por ejemplo, en lenguaje ensamblador. Dichas instrucciones de programación pueden ser almacenadas en un medio de almacenamiento previsto para ser ejecutado de forma nativa en un entorno informático tal como el z server de IBM® System, o alternativamente en máquinas que ejecutan otras arquitecturas. Las instrucciones pueden ser emuladas en servidores IBM® existentes y futuros y en otras máquinas u ordenadores centrales. Pueden ser ejecutadas en máquinas en las que la ejecución es, generalmente, en modo de emulación.
Uno o varios aspectos de la presente invención son aplicables igualmente, por ejemplo, a emulación de máquina virtual, en donde una o varias entidades paginables (por ejemplo, huéspedes) ejecutan uno o varios procesadores. A modo de ejemplo, se definen huéspedes paginables mediante la arquitectura Start Interpretive Execution (SIE) descrita en "IBM® System/370 Extended Architecture", IBM® Pub, No. SA22-7095 (1985).
En el modo de emulación, la instrucción específica que está siendo emulada es descodificada, y se ejecuta una subrutina para implementar la instrucción individual, tal como en una subrutina o un controlador, o se utiliza alguna otra técnica para disponer un controlador para el equipamiento físico específico, tal como saben los expertos en la materia después de comprender la descripción de este documento. Se describen diversas técnicas de emulación de soporte lógico y equipamiento físico en numerosas patentes de Estados Unidos que incluyen las de números: 5.551.013, 5.574.873, 5.790.825, 6.009.261, 6.308.255 y 6.463.582. Muchas otras descripciones ilustran en mayor detalle diversas formas de conseguir la emulación de un conjunto de instrucciones diseñadas para una máquina objetivo.
Otras variaciones y arquitecturas
Una o varias de las capacidades de la presente invención pueden implementarse en soporte lógico, soporte lógico inalterable, equipamiento físico, o alguna combinación de los mismos. Los aspectos de la invención son beneficiosos para muchos tipos de entornos, incluyendo otros entornos que tienen una serie de zonas, y entornos no particionados. Además, puede no haber complejos de procesadores centrales y, aún así, múltiples procesadores acoplados entre ellos. Diversos aspectos de esto son aplicables a entornos de un sólo procesador.
Si el entorno está particionado lógicamente, entonces pueden incluirse en el entorno más o menos particiones lógicas. Además, puede haber múltiples complejos de procesamiento central acoplados entre ellos. Adicionalmente, son posibles otras variaciones.
Aunque el término 'página' se utiliza para hacer referencia a un almacenamiento de tamaño fijo o de un área de tamaño predefinido, el tamaño de una página puede variar. De forma 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. Alternativamente, pueden utilizarse otras estructuras o bien implementarse mediante soporte lógico y/o equipamiento físico. Además, en los ejemplos descritos en la presente memoria, puede haber muchas variaciones que incluyen, de forma no limitativa, direcciones y palabras de diferentes tamaños; un número diferente de bits; bits en un orden diferente; más o menos bits, o bits diferentes; más o menos campos, o campos diferentes; campos en un orden diferente; diferentes tamaños de campos; etc. De nuevo, estos se proporcionan solamente a modo de ejemplo. Son posibles muchas variaciones.
Una unidad de proceso incluye entidades paginables, tales como huéspedes, centrales, otros procesadores, emuladores, máquinas virtuales y/u otras construcciones similares. Una memoria tampón incluye un área de almacenamiento y/o de memoria así como diferentes tipos de estructuras de datos que incluyen, de forma no limitativa, matrices o entidades paginables. Una tabla puede incluir asimismo otras estructuras de datos. Una instrucción puede hacer referencia a otros registros. Además, una página, un segmento y/o una región pueden ser de diversos tamaños diferentes a los descritos en la presente memoria.
Uno o varios aspectos de la presente invención pueden incluirse en un artículo de fábrica (por ejemplo, uno o varios productos de programa informático) que tenga, por ejemplo, medios utilizables por ordenador o legibles a máquina. El medio tiene incorporados, por ejemplo, lógica (por ejemplo, instrucciones, código, comandos, etc.) o medios de código de programa legible por ordenador para proporcionar y facilitar las capacidades de la presente invención. El artículo de fábrica puede incluirse como parte de un sistema informático o venderse por separado. Adicionalmente, puede proporcionarse por lo menos un dispositivo de almacenamiento de programas legible mediante una máquina que incorpora por lo menos un programa de instrucciones ejecutables por la máquina para realizar las capacidades de la presente invención.
Claims (8)
- REIVINDICACIONES1. Un método para llevar a cabo una función de gestión de trama en un procesador (101) capaz de traducir una dirección virtual a una dirección traducida de un bloque de datos en almacenamiento principal en un sistema informático (100) de una arquitectura de máquina que tiene una jerarquía de tablas (410, 412, 414, 416) de traducción utilizadas para la traducción de dicha dirección virtual, estando definida dicha función de gestión de trama para dicha arquitectura de máquina, estando el método caracterizado por que comprende:obtener una instrucción de máquina que contiene un código de operación para una instrucción de activar clave de almacenamiento y borrar; yejecutar la instrucción de máquina, comprendiendo:obtener un campo de gestión de trama con un campo de clave que comprende una serie de bits de protección de acceso y un campo de indicador del tamaño de bloque;obtener una dirección de operando de una trama de almacenamiento sobre la que ha de llevarse a cabo dicha instrucción de máquina, siendo dicha dirección de operando una entre una dirección de bloque grande de datos y una dirección de un bloque pequeño de datos;en respuesta a la habilitación de una función de activar clave de almacenamiento, poner los bits de protección de acceso de almacenamiento de cada clave de almacenamiento asociada con dicho bloque datos determinado, a un valor de dichos bits de protección de acceso de dicho campo de clave; yen respuesta a la habilitación de una función de borrar, borrar cada bloque datos al que se dirige dicha dirección de operando poniendo a cero todos los bytes de cada bloque de datos.
-
- 2.
- El método acorde con la reivindicación 1, en el que la instrucción de máquina obtenida comprende además un primer campo que identifica un primer registro general y un segundo campo que identifica un segundo registro general; dicho campo de gestión de trama con un campo clave que comprende una serie de bits de protección de acceso y un campo indicador del tamaño del bloque, se obtienen desde dicho primer registro general, y en el que dicha dirección de operando de dicha trama de almacenamiento sobre la que ha de llevarse a cabo dicha instrucción de máquina se obtiene de dicho segundo registro general, en el que dicha dirección de operando es una entre una dirección absoluta de un bloque grande de datos y una dirección real de un bloque pequeño de datos, siendo dicha dirección real sometida a la anteposición de prefijo.
-
- 3.
- El método acorde con la reivindicación 1, en el que dicha clave de almacenamiento comprende además bits de protección de almacenamiento, bits de referencia almacenamiento y bits modificación de almacenamiento, y en el que dicho campo de clave comprende además un bit de protección contra lectura, un bit de referencia y un bit de modificación, y en el que dicho bloque grande de datos es mayor que dicho bloque pequeño de datos, comprendiendo además para dicho bloque pequeño de datos:
obtener de dicho segundo registro general una dirección de operando de dicho bloque pequeño de datos, teniendo dicho bloque pequeño de datos una clave de almacenamiento que comprende una serie de bits de protección de acceso de almacenamiento; yponer dichos bits de protección de acceso de dicho campo de clave en dichos bits de protección de acceso de almacenamiento de la clave de almacenamiento. -
- 4.
- El método acorde con la reivindicación 3, en el que para dicho bloque grande de datos, se guarda una dirección de un próximo bloque de datos en dicho segundo registro general, siendo dicho próximo bloque de datos un bloque de datos siguiente a dicho bloque grande de datos.
-
- 5.
- El método acorde con la reivindicación 1, en el que el campo de gestión de trama comprende además un indicador de activar clave de almacenamiento y un indicador de borrar almacenamiento, en el que la etapa de determinación comprende además, habilitar la función de clave de almacenamiento si el indicador de activar clave de almacenamiento está habilitado, inhabilitar la función de activar clave de almacenamiento si el indicador de activar clave de almacenamiento no está habilitado, habilitar la función de borrar si el indicador de borrar almacenamiento está habilitado, e inhabilitar la función de borrar si el indicador de borrar almacenamiento no está habilitado.
-
- 6.
- El método acorde con la reivindicación 1, en el que la instrucción de máquina no es nativa de la arquitectura de instrucciones de máquina del procesador, y que comprende además:
interpretar la instrucción de máquina para identificar una rutina de soporte lógico predeterminada para emular la operación de la instrucción de máquina, comprendiendo la rutina de soporte lógico predeterminada una serie de instrucciones; yejecutar la rutina soporte lógico predeterminada. -
- 7.
- Un sistema que comprende medios adaptados para llevar a cabo todas las etapas del método acorde con cualquier reivindicación anterior de método.
-
- 8.
- Un programa informático que comprende instrucciones para llevar a cabo todas las etapas del método acorde con cualquier reivindicación anterior de método, cuando dicho programa informático es ejecutado en un sistema informático.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US972725 | 2008-01-11 | ||
| US11/972,725 US8417916B2 (en) | 2008-01-11 | 2008-01-11 | Perform frame management function instruction for setting storage keys and clearing blocks of main storage |
| PCT/EP2009/050051 WO2009087134A1 (en) | 2008-01-11 | 2009-01-05 | Dynamic address translation with frame management |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2381428T3 true ES2381428T3 (es) | 2012-05-28 |
Family
ID=40428033
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES09700560T Active ES2381428T3 (es) | 2008-01-11 | 2009-01-05 | Traducción de dirección dinámica con gestión de trama. |
Country Status (16)
| Country | Link |
|---|---|
| US (1) | US8417916B2 (es) |
| EP (1) | EP2229631B1 (es) |
| JP (1) | JP4815539B2 (es) |
| KR (1) | KR101310412B1 (es) |
| CN (1) | CN101911024B (es) |
| AT (1) | ATE551653T1 (es) |
| BR (1) | BRPI0906426B1 (es) |
| CA (1) | CA2701086C (es) |
| CY (1) | CY1112694T1 (es) |
| DK (1) | DK2229631T3 (es) |
| ES (1) | ES2381428T3 (es) |
| IL (1) | IL206847A (es) |
| PL (1) | PL2229631T3 (es) |
| PT (1) | PT2229631E (es) |
| SI (1) | SI2229631T1 (es) |
| WO (1) | WO2009087134A1 (es) |
Families Citing this family (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8677098B2 (en) | 2008-01-11 | 2014-03-18 | International Business Machines Corporation | Dynamic address translation with fetch protection |
| US8019964B2 (en) | 2008-01-11 | 2011-09-13 | International Buisness Machines Corporation | Dynamic address translation with DAT protection |
| 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 |
| 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 |
| US8117417B2 (en) | 2008-01-11 | 2012-02-14 | International Business Machines Corporation | Dynamic address translation with change record override |
| US8041922B2 (en) * | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
| 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 |
| US8037278B2 (en) | 2008-01-11 | 2011-10-11 | International Business Machines Corporation | Dynamic address translation with format control |
| US8176280B2 (en) | 2008-02-25 | 2012-05-08 | International Business Machines Corporation | Use of test protection instruction in computing environments that support pageable guests |
| 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 |
| US8806179B2 (en) * | 2009-12-15 | 2014-08-12 | International Business Machines Corporation | Non-quiescing key setting facility |
| JP4915756B2 (ja) * | 2009-12-16 | 2012-04-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | アドレス変換を高速化する方法及びシステム |
| 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 |
| US9122873B2 (en) | 2012-09-14 | 2015-09-01 | 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 |
| DE102013216885B4 (de) | 2013-08-26 | 2025-03-27 | Volkswagen Aktiengesellschaft | Fahrzeugsitz mit einer Massageeinrichtung und mindestens einer Heizeinrichtung zur Umsetzung einer "Hot-Stone"-Massagefunktion" |
| US9996349B2 (en) | 2015-01-27 | 2018-06-12 | International Business Machines Corporation | Clearing specified blocks of main storage |
| US20190303743A1 (en) * | 2016-08-13 | 2019-10-03 | Intel Corporation | Apparatuses, methods, and systems for neural networks |
| US11481241B2 (en) | 2018-08-30 | 2022-10-25 | Micron Technology, Inc. | Virtual machine register in a computer processor |
| US11500665B2 (en) * | 2018-08-30 | 2022-11-15 | Micron Technology, Inc. | Dynamic configuration of a computer processor based on the presence of a hypervisor |
| US11182507B2 (en) | 2018-08-30 | 2021-11-23 | Micron Technology, Inc. | Domain crossing in executing instructions in computer processors |
| CN110837372B (zh) * | 2019-11-04 | 2021-01-26 | 贵阳动视云科技有限公司 | 汇编代码清除混淆的方法、装置、介质及设备 |
| CN112965724B (zh) * | 2021-03-22 | 2024-06-07 | 中国信息安全测评中心 | 一种固件的装载基址范围的确定方法及系统 |
Family Cites Families (45)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4972338A (en) * | 1985-06-13 | 1990-11-20 | Intel Corporation | Memory management for microprocessor system |
| JP2635058B2 (ja) * | 1987-11-11 | 1997-07-30 | 株式会社日立製作所 | アドレス変換方式 |
| US5058003A (en) * | 1988-12-15 | 1991-10-15 | International Business Machines Corporation | Virtual storage dynamic address translation mechanism for multiple-sized pages |
| US5237668A (en) | 1989-10-20 | 1993-08-17 | International Business Machines Corporation | Process using virtual addressing in a non-privileged instruction to control the copying of a page of data in or between multiple media |
| US5617554A (en) * | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
| JPH0715667B2 (ja) | 1992-02-14 | 1995-02-22 | 株式会社日立製作所 | データ処理装置 |
| JP3137747B2 (ja) | 1992-07-09 | 2001-02-26 | 株式会社リコー | 昇華型熱転写用受像シート |
| AU6629894A (en) * | 1993-05-07 | 1994-12-12 | 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 |
| GB2325061B (en) * | 1997-04-30 | 2001-06-06 | Advanced Risc Mach Ltd | Memory access protection |
| US6009261A (en) * | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
| US6308255B1 (en) * | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
| US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
| DE10002120B4 (de) * | 1999-02-13 | 2006-04-20 | International Business Machines Corp. | Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung |
| US7069412B2 (en) * | 1999-02-17 | 2006-06-27 | Elbrus International | Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture |
| FR2814557B1 (fr) * | 2000-09-27 | 2002-12-27 | Gemplus Card Int | Protection contre l'exploitation abusive d'une instruction dans une memoire |
| 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 |
| US7530067B2 (en) * | 2003-05-12 | 2009-05-05 | International Business Machines Corporation | Filtering processor requests based on identifiers |
| US7020761B2 (en) * | 2003-05-12 | 2006-03-28 | International Business Machines Corporation | Blocking processing restrictions based on page indices |
| US7284100B2 (en) * | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
| US6996698B2 (en) * | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
| US7234037B2 (en) * | 2003-11-25 | 2007-06-19 | International Business Machines Corporation | Memory mapped Input/Output operations |
| US7941799B2 (en) * | 2004-05-27 | 2011-05-10 | International Business Machines Corporation | Interpreting I/O operation requests from pageable guests without host intervention |
| 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 |
| 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 | 株式会社東芝 | メモリ保護装置、メモリ保護システムおよびメモリ保護方法 |
| JP5073417B2 (ja) | 2007-08-27 | 2012-11-14 | 株式会社ディスコ | チャックテーブル |
| US8335906B2 (en) * | 2008-01-11 | 2012-12-18 | International Business Machines Corporation | Perform frame management function instruction for clearing blocks of main storage |
| 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 |
| 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 |
| 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 |
| US8019964B2 (en) * | 2008-01-11 | 2011-09-13 | International Buisness Machines Corporation | Dynamic address translation with DAT protection |
| 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 |
| 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,725 patent/US8417916B2/en active Active
-
2009
- 2009-01-05 PT PT09700560T patent/PT2229631E/pt unknown
- 2009-01-05 SI SI200930236T patent/SI2229631T1/sl unknown
- 2009-01-05 AT AT09700560T patent/ATE551653T1/de active
- 2009-01-05 WO PCT/EP2009/050051 patent/WO2009087134A1/en not_active Ceased
- 2009-01-05 JP JP2010541764A patent/JP4815539B2/ja active Active
- 2009-01-05 EP EP09700560A patent/EP2229631B1/en active Active
- 2009-01-05 PL PL09700560T patent/PL2229631T3/pl unknown
- 2009-01-05 CA CA2701086A patent/CA2701086C/en active Active
- 2009-01-05 DK DK09700560.7T patent/DK2229631T3/da active
- 2009-01-05 KR KR1020107014444A patent/KR101310412B1/ko active Active
- 2009-01-05 ES ES09700560T patent/ES2381428T3/es active Active
- 2009-01-05 CN CN2009801017401A patent/CN101911024B/zh active Active
- 2009-01-05 BR BRPI0906426-5A patent/BRPI0906426B1/pt active IP Right Grant
-
2010
- 2010-07-07 IL IL206847A patent/IL206847A/en active IP Right Grant
-
2012
- 2012-04-20 CY CY20121100375T patent/CY1112694T1/el unknown
Also Published As
| Publication number | Publication date |
|---|---|
| PL2229631T3 (pl) | 2012-11-30 |
| US8417916B2 (en) | 2013-04-09 |
| US20090187724A1 (en) | 2009-07-23 |
| EP2229631B1 (en) | 2012-03-28 |
| KR20100101616A (ko) | 2010-09-17 |
| BRPI0906426B1 (pt) | 2020-12-01 |
| JP2011509471A (ja) | 2011-03-24 |
| CA2701086C (en) | 2017-09-19 |
| PT2229631E (pt) | 2012-05-11 |
| SI2229631T1 (sl) | 2012-05-31 |
| EP2229631A1 (en) | 2010-09-22 |
| IL206847A (en) | 2013-07-31 |
| IL206847A0 (en) | 2010-12-30 |
| CA2701086A1 (en) | 2009-07-16 |
| ATE551653T1 (de) | 2012-04-15 |
| DK2229631T3 (da) | 2012-05-07 |
| JP4815539B2 (ja) | 2011-11-16 |
| CN101911024A (zh) | 2010-12-08 |
| CY1112694T1 (el) | 2016-02-10 |
| CN101911024B (zh) | 2012-11-14 |
| WO2009087134A1 (en) | 2009-07-16 |
| KR101310412B1 (ko) | 2013-09-23 |
| BRPI0906426A2 (pt) | 2016-10-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2381428T3 (es) | Traducción de dirección dinámica con gestión de trama. | |
| ES2406056T3 (es) | Traducción dinámica de direcciones con control de formato | |
| ES2408189T3 (es) | Traducción dinámica de dirección con protección de búsqueda y carga. | |
| US8019964B2 (en) | Dynamic address translation with DAT protection | |
| US9244856B2 (en) | Dynamic address translation with translation table entry format control for identifying format of the translation table entry | |
| US8041922B2 (en) | Enhanced dynamic address translation with load real address function | |
| US8489853B2 (en) | Executing a perform frame management instruction | |
| US8335906B2 (en) | Perform frame management function instruction for clearing blocks of main storage | |
| US8117417B2 (en) | Dynamic address translation with change record override | |
| US8082405B2 (en) | Dynamic address translation with fetch protection | |
| US20120011341A1 (en) | Load Page Table Entry Address Instruction Execution Based on an Address Translation Format Control Field |