ES2406056T3 - Traducción dinámica de direcciones con control de formato - Google Patents

Traducción dinámica de direcciones con control de formato Download PDF

Info

Publication number
ES2406056T3
ES2406056T3 ES09700213T ES09700213T ES2406056T3 ES 2406056 T3 ES2406056 T3 ES 2406056T3 ES 09700213 T ES09700213 T ES 09700213T ES 09700213 T ES09700213 T ES 09700213T ES 2406056 T3 ES2406056 T3 ES 2406056T3
Authority
ES
Spain
Prior art keywords
address
translation
entry
access
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES09700213T
Other languages
English (en)
Inventor
Dan Greiner
Lisa Heller
Damian Osisek
Timothy Slegel
Erwin Pfeffer
Charles Webb
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2406056T3 publication Critical patent/ES2406056T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Método de traducción de una dirección virtual en una dirección traducida de un bloque de datos enalmacenamiento principal en un sistema informático (100) de una arquitectura de máquina que tiene una jerarquíade tablas de traducción (410, 412, 414, 416) utilizada para la traducción de dicha dirección virtual, comprendiendo elmétodo: obtener una dirección virtual a traducir; obtener una dirección de origen de una tabla de traducción de dicha jerarquía de tablas de traducción; utilizar una parte de índice de dicha dirección virtual para hacer referencia a una entrada en dicha tabla detraducción; caracterizado por determinar si está habilitado un campo de control de formato en dicha entrada de tabla detraducción, en el que un campo de control formato no habilitado de la entrada de tabla de traducción indica que laentrada de tabla de traducción incluye una dirección de otra tabla de traducción, y en el que un campo de controlhabilitado de formato de la entrada de la tabla de traducción indica que la entrada de la tabla de traducción incluyeuna dirección de marco de un bloque grande de datos y bits de protección de acceso para permitir el acceso albloque grande de datos, y en el que, si dicho campo de control de formato no está habilitado, llevar a cabo: la obtención desde dicha entrada de tabla de traducción de una dirección de origen de otra tabla de traducción dedicha jerarquía de tablas de traducción; la utilización de una parte de índice de dicha dirección virtual para hacer referencia a una entrada en dicha otra tablade traducción y la obtención desde dicha otra entrada de tabla de una dirección de marco pequeño de un bloquepequeño de datos en almacenamiento principal, siendo dicho bloque pequeño de datos menor que dicho bloquegrande de datos; la combinación de dicha dirección real de marco pequeño con una parte de desplazamiento de dicha direcciónvirtual, para formar una dirección real traducida de dicho bloque pequeño deseado de datos en almacenamientoprincipal, estando sometida dicha dirección real a anteposición de prefijo; y en base a la determinación de que los bits de control de acceso de una clave de almacenamiento asociada condicho bloque pequeño deseado de datos coincide con una clave de acceso asociada con una solicitud de acceso,acceder a dicho bloque pequeño deseado de datos en almacenamiento principal al que está dirigida dicha direccióntraducida; si está habilitado dicho campo de control de formato, llevar a cabo: la obtención desde dicha entrada de tabla de traducción de una dirección de marco de un bloque grande de datos enalmacenamiento principal, en el que dicha entrada de tabla de traducción comprende un campo de control de acceso(ACC) y un bit de protección contra lectura (F); la combinación de dicha dirección de marco con una parte de desplazamiento de dicha dirección virtual para formaruna dirección absoluta traducida de un bloque deseado de datos dentro de dicho bloque grande de datos enalmacenamiento principal, en el que dicho bloque deseado de datos consiste en uno o varios bytes de datos, en elque dicha dirección absoluta no está sometida a anteposición de prefijo; y en base a una determinación de si la clave de almacenamiento o el campo de control de acceso de la entrada detabla de traducción coincide con la clave de acceso asociada con una solicitud de acceso, acceder a dicho bloquegrande deseado de datos al que está dirigida dicha dirección traducida.

Description

Traducción dinámica de direcciones con control de formato
Campo de la invención
La presente invención se refiere, en términos generales, 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 para traducir una dirección virtual en una dirección real o absoluta de un bloque de datos en un sistema informático que tiene un servicio de traducción dinámica de direcciones, en el que la traducción de direcciones virtuales se produce a través de una jerarquía de tablas de traducción.
Antecedentes de la invención
La traducción dinámica de direcciones proporciona la capacidad de interrumpir la ejecución de un programa en un momento arbitrario, grabar el programa 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 almacenamiento principal y auxiliar puede llevarse a cabo de manera fragmentaria, y la devolución de la información al almacenamiento principal puede tener lugar en respuesta a un intento de la CPU de acceder a la misma en el momento en que se requiere su ejecución. Estas funciones pueden llevarse a cabo sin cambios o inspección del programa y sus datos, no requieren ningún convenio explícito de programación en el programa reasignado y no perturban la ejecución del programa excepto en lo que se refiere al retardo temporal involucrado.
Con el soporte adecuado de un sistema operativo, el servicio de traducción dinámica de direcciones puede utilizarse para proporcionar al 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 con mucho 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 (llamadas asimismo segmentos y regiones). Solamente las páginas consultadas más recientemente del almacenamiento virtual están asignadas a bloques ocupados de almacenamiento físico principal. Cuando el usuario consulta páginas de almacenamiento virtual que no figuran en el almacenamiento principal, éstas son incorporadas al almacenamiento principal sustituyendo páginas que es menos probable que se necesiten. En algunos casos, se asigna almacenamiento virtual al almacenamiento principal durante un periodo largo de tiempo (o permanentemente), independientemente de si el almacenamiento es consultado. El intercambio de páginas de almacenamiento puede llevarse a cabo mediante el sistema operativo sin conocimiento del usuario.
Los programas utilizan direcciones (o direcciones virtuales) para acceder al almacenamiento virtual. El programa puede leer instrucciones desde el almacenamiento virtual o cargar datos o almacenar datos desde el almacenamiento virtual utilizando direcciones virtuales. Las direcciones virtuales asociadas con un intervalo de almacenamiento virtual definen un espacio de direcciones. Con el soporte apropiado de un sistema operativo, el servicio de traducción dinámica de direcciones puede utilizarse para proporcionar una serie de espacios de direcciones. Estos espacios de direcciones pueden utilizarse para proporcionar grados de aislamiento entre usuarios. Dicho soporte puede consistir en un espacio de direcciones completamente diferente para cada usuario, proporcionando de este modo un aislamiento total, o puede proporcionarse un área compartida mapeando una parte de cada espacio de direcciones a una única área de almacenamiento común. Asimismo, se proporcionan 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 sirve para la traducción de direcciones virtuales de múltiples espacios de direcciones diferentes. Estos espacios de direcciones se denominan espacio de direcciones primario, espacio de direcciones secundario y espacios de direcciones especificados por registro de acceso. Un programa privilegiado puede asimismo provocar el acceso al espacio de direcciones local. La traducción dinámica de direcciones puede especificarse por direcciones de instrucciones y datos generadas por la CPU.
Lo que se necesita es un servicio de traducción dinámica de direcciones mejorada que proporcione funcionalidad, capacidad y protecciones mejoradas, desconocidas hasta ahora en esta técnica.
La memoria US 4992936 describe un método para la traducción de una dirección virtual a una dirección traducida de un bloque de datos, de acuerdo con la parte precaracterizadora de la reivindicación 1.
Compendio de la invención
Lo que se da a conocer es un método acorde con la reivindicación 1 y un sistema y un programa informático correspondientes para un servicio de traducción dinámica de direcciones mejorada que traduce una dirección virtual en una dirección real o absoluta de un bloque de datos deseado en el almacenamiento principal de un sistema de ordenador que tiene una arquitectura de máquina con una jerarquía de tablas de traducción utilizada para la traducción. Las direcciones reales pueden someterse a anteposición de prefijos para formar una dirección absoluta.
En una realización a modo de ejemplo, se obtiene en primer lugar una dirección virtual a traducir y se obtiene una dirección original inicial de una tabla de traducción de la jerarquía de tablas de traducción. Se utiliza una parte de índice de la dirección virtual para hacer referencia a una entrada en la tabla de traducción. Se adopta una determinación acerca de si se habilita el campo de control de formato en la entrada de la tabla de traducción. Si se habilita el campo de control de formato, se obtiene una dirección de marco de un bloque grande de datos en el almacenamiento principal a partir de la entrada de la tabla de traducción. El bloque grande de datos comprende un bloque de por lo menos 1 Megabyte de tamaño. A continuación, la dirección de marco se combina con una parte de desplazamiento de la dirección virtual para formar la dirección traducida de un bloque de datos deseado dentro del bloque grande de datos en el almacenamiento principal. A continuación, se accede al bloque grande de datos deseado al que se dirige la dirección traducida. En otra realización, se obtiene a partir de la entrada de la tabla de traducción un campo de entrada de tabla no válido. Se inicia una excepción si está habilitado el correspondiente campo de entrada de tabla no válido.
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 se utiliza para restringir el acceso a una parte restringida del bloque grande. A continuación, el acceso al bloque grande de datos deseado al que se dirige la dirección traducida se permite solamente a la parte restringida del bloque de datos.
A continuación se describirá la invención en relación con ciertas realizaciones mostradas. Debe entenderse que los expertos en la materia pueden realizar diversos cambios y modificaciones sin apartarse del alcance de la invención.
Breve descripción de los dibujos
Las figuras adjuntas, en las que los números referencia iguales se refieren a elementos funcionalmente idénticos o similares a través de las distintas vistas y que junto con la siguiente descripción detallada se incorporan a la memoria y forman parte de la misma, sirven para ilustrar diversas realizaciones y para explicar diversos principios y ventajas, todos ellos de acuerdo con la presente invención.
la figura 1 muestra una realización de un sistema de ordenador anfitrión 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 anfitrión emulado, que emula el sistema de ordenador anfitrión de una arquitectura de anfitrión;
la figura 3 muestra una realización de cómo se utiliza 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 determinado 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 una 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 desde el nodo 614 de la figura 6;
la figura 8 muestra una continuación del diagrama de flujo desde el nodo 616 de la figura 6;
la figura 9 muestra un diagrama de flujo de una realización de determinación del nivel de protección DAT a aplicar a un bloque deseado de datos al que se dirige la dirección virtual traducida;
la figura 10 muestra una continuación del diagrama de flujo desde el nodo 822 de la figura 8, que determina el nivel de protección de control de acceso a aplicar a un bloque deseado de datos al que se dirige la dirección virtual traducida;
la figura 11 muestra una continuación del diagrama de flujo desde el nodo 822 de la figura 8, que determina el nivel de protección contra lectura a aplicar a un bloque deseado de datos al que se dirige la dirección virtual traducida;
la figura 12 muestra una continuación del diagrama de flujo desde el nodo 822 de la figura 8, en la que se obtiene un campo de anulación de la grabación de modificación a partir de una entrada de la tabla de segmentos; la figura 13 muestra el formato del registro de control 1; la figura 14 muestra el formato del registro de control 7; la figura 15 muestra el formato del registro de control 13; la figura 16 muestra el formato de la palabra de estado de programa; la figura 17 muestra el formato del registro de prefijo; la figura 18 muestra el formato de la dirección virtual; la figura 19 muestra el formato de RX de la dirección virtual; la figura 20 muestra el formato de las entradas de tabla de regiones; la figura 21 muestra el formato I de una entrada de la tabla de segmentos; la figura 22 muestra el formato II de una entrada de la tabla de segmentos; la figura 23 muestra el formato de una entrada de tabla de páginas; la figura 24 muestra un formato de clave de almacenamiento; la figura 25 muestra el formato de la instrucción SSKE; y la figura 26 muestra el formato del campo M3.
Descripción detallada
Debe entenderse que las declaraciones realizadas en la descripción de la presente solicitud no limitan necesariamente ninguna de las diversas invenciones reivindicadas. Además, algunas declaraciones pueden aplicar a algunas características inventivas pero no a otras. Salvo que se indique lo contrario, los elementos singulares pueden considerarse en plural y viceversa, sin pérdida de generalidad.
Un experto en la materia estará claramente familiarizado con el almacenamiento de direcciones en un entorno informático y 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 en la materia de programas informáticos y estará al corriente del funcionamiento y las interrelaciones entre componentes de sistemas informáticos.
Resumen
Lo que se da a conocer es una realización a modo de ejemplo de un servicio de traducción dinámica de direcciones (DAT, Dynamic Address Translation) mejorada. Cuando el servicio de DAT mejorada está instalado y habilitado, la traducción DAT puede producir una dirección real de marco de página o una dirección absoluta de marco de segmento, determinada por el control de formato de la entrada de la tabla de segmentos (STE, Segment Table Entry) en la entrada de la tabla de segmentos. Tal como se utiliza en la presente memoria, el término "aplica DAT mejorada" significa que se cumplen los siguientes puntos: 1) el servicio EDAT está instalado; 2) el servicio EDAT está activado a través del bit 40 de registro de control 0 (CR0); y 3) la dirección se traduce mediante entradas de tabla de DAT.
Cuando aplica DAT mejorado, la siguiente función adicional está disponible en el proceso de DAT:
Se añade un bit de protección DAT a las entradas de tabla de regiones, que proporciona una función similar a los bits de protección DAT en las entradas de tabla de segmentos y de páginas.
Se añade un control de formato STE a la entrada de la tabla de segmentos Cuando el control de formato STE es cero, la DAT procede tal como está definido actualmente, excepto en que una anulación de la grabación de modificación en la entrada de tabla de páginas indica si puede omitirse la activación del bit de modificación para la página.
Cuando el control de formato STE es uno, la entrada de la tabla de segmentos contiene asimismo lo siguiente:
Una dirección absoluta de marco de segmentos (en lugar de un origen de tabla de páginas) que especifica la posición de almacenamiento absoluta en el bloque de 1 Megabyte.
Bits de control de acceso y un bit de protección contra lectura 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 lectura en la entrada de la tabla de segmentos.
Una anulación de la grabación de modificación que indica si puede omitirse la activación del bit de modificación en las claves de almacenamiento individuales del segmento.
Sistema de ordenador anfitrión
Haciendo referencia a la figura 1, se representan componentes representativos de un sistema de ordenador anfitrión
100. Pueden utilizarse asimismo otras disposiciones de componentes en un sistema informático que es bien conocido en la técnica.
El entorno informático anfitrión está basado preferiblemente en z/Architecture® ofrecida por International Business Machines Corporation (IBM®), Armonk, Nueva York. z/Architecture® se describe de manera más completa en el documento: z/Architecture® Principles of Operation, Publicaciones IBM®, número SA22-7832-05, sexta edition, (abril de 2007). Los entornos informáticos basados en z/Architecture® incluyen, por ejemplo, eServer y zSeries®, ambos de IBM®.
El ordenador anfitrión 100 representativo comprende una o varias CPUs 101 en comunicación con el almacenamiento principal (memoria del ordenador 102) así como interfaces de E/S a dispositivos de almacenamiento 111 y redes 110 para comunicar con otros ordenadores o redes de área de almacenamiento (SANs, storage area networks) y similares. La CPU puede tener un servicio (función o unidad) 103 de traducción dinámica de direcciones (DAT) para transformar direcciones de programa (direcciones virtuales) en direcciones reales de memoria. Un servicio DAT incluye habitualmente una memoria intermedia 107 de traducción anticipada para almacenar traducciones temporalmente de manera que los accesos posteriores al bloque de memoria 102 del ordenador no requieran el retardo de la traducción de direcciones. Habitualmente, se utiliza una memoria caché 109 entre una memoria 102 del ordenador y el procesador 101. La memoria caché 109 puede ser jerárquica, teniendo una gran memoria caché disponible para más de una CPU y memorias caché menores, más rápidas (de nivel inferior) 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 nivel inferior independientes para lectura de instrucciones y accesos a datos. En una realización, una instrucción se lee desde la memoria 102 mediante una unidad 104 de lectura de instrucciones a través de una memoria caché 109. Esta 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 de ejecución 108, por ejemplo una unidad de ejecución aritmética, una unidad de ejecución de punto flotante y una unidad de ejecución de instrucciones de bifurcación. La instrucción es ejecutada por la unidad de ejecución, accediendo a operandos a partir de registros especificados en la instrucción o de la memoria cuando se requiera. Si ha de accederse (cargarse o almacenarse) un operando desde la memoria 102, una unidad 105 de almacenamiento de carga maneja normalmente el acceso bajo el control de la instrucción en ejecución.
En una realización, la invención puede ponerse en práctica mediante software (en ocasiones, denominado un código interno con licencia (LIC, Licensed Internal Code), software inalterable, microcódigo, milli-código (milli-code), picocódigo y similares, cualquiera de los cuales sería consistente con la presente invención). Un código de programa de software 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 de ordenador 100 desde un medio 111 de almacenamiento a largo plazo, tal como una unidad de CD-ROM, una unidad de cinta o una unidad de disco duro. El código de programa de software puede realizarse en cualquiera de diversos medios conocidos para utilizar con un sistema de procesamiento de datos, tal como un disco flexible, un disco duro o un CD-ROM. El código puede distribuirse en dicho medio, o puede distribuirse a los usuarios desde la memoria 102 del ordenador o el almacenamiento de un sistema de ordenador sobre una red 110 hasta otros sistemas de ordenador, para ser utilizado por los usuarios de dichos otros sistemas.
Alternativamente, el código de programa puede estar incorporado 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 la función y la interacción de los diversos componentes informáticos y de uno o varios programas de aplicación. El código de programa es normalmente paginado desde medios 111 de almacenamiento denso a memoria 102 de alta velocidad, en la que está disponible para procesamiento mediante el procesador 101. Las técnicas y los métodos para realizar código de programas de software en la memoria, en medios físicos y/o para distribuir código de software a través de redes, son bien conocidos y no se describirán en mayor detalle en la presente memoria. El código de programa, cuando está creado y almacenado en un medio tangible (que incluye de forma no limitativa módulos de memoria electrónica (RAM), memoria flash, discos compactos (CDs), DVDs, cintas magnéticas y similares) se denomina a menudo un "producto de programa informático". El medio del producto de programa informático es legible habitualmente mediante un circuito de procesamiento, preferiblemente en un sistema informático, para su ejecución mediante el circuito de procesamiento.
En la figura 2, se muestra un sistema 201 del ordenador anfitrión emulado, a modo de ejemplo, que emula un sistema 100 de ordenador anfitrión de una arquitectura de anfitrión. En el sistema 201 de ordenador anfitrión emulado, el procesador central (CPU) 208 es un procesador anfitrión emulado (o procesador anfitrión 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 anfitrión 100. El sistema 201 de ordenador anfitrión emulado tiene memoria 202 accesible por el procesador 207 de emulación. En el ejemplo de realización, la memoria 207 está dividida en una parte de memoria 102 del ordenador anfitrión y una parte de rutinas 203 de emulación (las rutinas que proporcionan la emulación pueden formar parte de la memoria anfitrión). La memoria 102 del ordenador anfitrión está disponible para programas del ordenador anfitrión emulado 201, de acuerdo con la arquitectura del ordenador anfitrión. 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 de la memoria 203 de rutinas de emulación, y puede acceder a una instrucción del anfitrión para ejecución desde un programa en memoria 102 del ordenador anfitrión, utilizando una o varias instrucciones obtenidas en una rutina de secuencia y acceso/descodificación, que puede descodificar la instrucción o instrucciones del anfitrión accedidas, a efectos de determinar una rutina de ejecución de instrucciones nativas para emular la función de la instrucción de anfitrión accedida.
Otros servicios que están definidos por la arquitectura del sistema de ordenador anfitrión 100 pueden ser emulados mediante rutinas de servicios diseñados, incluyendo servicios tales como registros de propósito general, registros de control, traducción dinámica de direcciones y memoria caché de procesador y soporte del subsistema de E/S, por ejemplo. Las rutinas de emulación pueden asimismo beneficiarse de la función disponible en el procesador 207 de emulación (tal como registros generales y traducción dinámica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulación. Pueden preverse asimismo equipamiento físico y máquinas de descarga para ayudar al procesador 207 a emular la función del ordenador anfitrión 100.
Procesador del ordenador 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 de instrucción (opcode) determina qué tipo de registro ha de utilizarse en cualquier operación de instrucción de máquina concreta.
Registros generales
Las instrucciones pueden indicar 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 aritméticas y lógicas. Cada registro contiene 64 posiciones de bit. Los registros generales están identificados mediante los números 0-15 y están indicados mediante un campo R de cuatro bits en una instrucción. Algunas instrucciones sirven para direccionar múltiples registros generales al tener varios campos R. Para algunas instrucciones, se implica la utilización de un registro general específico en lugar de indicado explícitamente mediante un campo R de la instrucción.
Para algunas operaciones se acoplan los bits 32-63 o bien los bits 0-63 de dos registros generales adyacentes, proporcionando un formato de 64 bits o de 128 bits, respectivamente. En estas operaciones, el programa debe indicar un registro de número par, que contiene los 32 ó 64 bits situados más al izquierda (orden superior). El siguiente registro numerado más alto contiene los 32 ó 64 bits situados más a la derecha (orden inferior). Además de su utilización como acumuladores en operadores aritméticos y lógicos generales, 15 de los 16 registros generales se utilizan asimismo como registros de dirección base y registros de índice en la generación de direcciones. En estos casos, los registros se designan mediante un campo B de cuatro bits o un campo X en una instrucción. Un valor de cero en el campo B o X especifica que no debe aplicarse ninguna base o índice y, por lo tanto, el registro general 0 no puede designarse como conteniendo un índice o dirección base.
Registros de control
Los registros de control sirven para mantener y manipular información de control fuera de la palabra de estado de programa. La CPU tiene 16 registros de control, que tienen cada uno 64 posiciones de bit. Las posiciones de bit en los registros están asignadas a servicios concretos del sistema, tal como una grabación de eventos de programa, y se utilizan para especificar que una operación puede tener lugar o bien para proporcionar información especial requerida por el servicio. 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. Mediante estas instrucciones pueden direccionarse múltiples registros de control.
Registro de control 1
El registro de control 1 contiene el elemento del control del espacio de direcciones primario (PASCE, Primary Address Space Control Element). En una realización, el registro de control 1 tiene uno de los dos formatos mostrados en la figura 13, dependiendo del bit de control del espacio real (R) en el registro.
Los campos seleccionados en el elemento de control del espacio de direcciones primario (PASCE) se asignan como sigue:
Origen de la tabla de segmentos o de la tabla de regiones primaria: los bits 0-51 de la designación de tabla de regiones primaria o tabla de segmentos en el registro de control 1, con 12 ceros añadidos a la derecha, forman una dirección de 64 bits que designa el comienzo de la tabla de segmentos o de la tabla de regiones primaria. Es impredecible si la dirección es real o absoluta. Esta tabla se denomina la tabla de regiones primaria o tabla de
5 segmentos 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 vale cero, el registro contiene una designación de tabla de regiones o tabla de segmentos. Si el bit 58 vale uno, el registro contiene una designación de espacio real. Cuando el bit 58 vale uno, un valor de uno del bit de segmento común en una representación de memoria intermedia de traducción anticipada de una entrada de la tabla de segmentos impide que la entrada y la
10 copia de la tabla de páginas de memoria intermedia de traducción anticipada que ésta designa, se utilicen cuando se traducen referencias al espacio de direcciones primario, 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 intermedia de traducción anticipada.
Control del tipo de designación (DT, Designation Type) primario: cuando R es cero, el tipo de designación de tabla en el registro de control 1 se especifica mediante los bits 60 y 61 del 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
15 Bits de control del tipo de designación (DT) primario
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
20 está en las posiciones de bits 22-32 de la dirección. En otro caso, se reconoce una excepción de tipo ASCE.
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 especifican 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
25 segmentos o la tabla de regiones primaria, en unidades de 4096 bytes, es de uno más que el valor de TL. Los 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 queda dentro de la tabla.
Origen del símbolo de espacio real primario: los bits 0-51 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
30 usar entradas de memoria intermedia de traducción anticipada que proporcionan una traducción virtual igual a 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 intermedia de traducción anticipada incorrecta cuando se utilizan los contenidos del registro de control 1.
35 Los siguientes bits del registro de control 1 no están asignados o se ignoran: bits 52, 53 y 59 si el registro contiene 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
40 Address Space Control Element). En una realización, el registro de control 7 tiene uno de los dos formatos mostrados en la figura 14, dependiendo del bit de control del espacio real (R) 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 mostrados en la
45 figura 15, dependiendo del bit de control del espacio real (R) en el registro.
Registros de acceso La CPU tiene 16 registros de acceso numerados del 0 al 15. Un registro de acceso consiste en 32 posiciones de bit que contienen una especificación indirecta de un ASCE. Un ASCE es un parámetro utilizado por el mecanismo de traducción dinámica de 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 almacenar 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 estímulos externos y condiciones excepcionales. 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 lee una nueva palabra de estado de programa desde una segunda posición de almacenamiento asignada. Esta nueva palabra de estado de programa determina el siguiente 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 almacenando 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 que es efectiva al comienzo de la operación. Los bits 0-7 de la palabra de estado de programa se denominan colectivamente la máscara del sistema. En una realización, la palabra de estado de programa tiene el formato que se muestra en la figura 16.
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, la DAT está inactiva y las direcciones lógicas y de instrucciones se tratan como direcciones reales. Cuando el bit 5 es uno, la 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 lee 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 byte 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.
Dirección absoluta
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 posiciones 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.
Dirección real
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 se 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.
Dirección virtual
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 es 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 bien directamente a una dirección absoluta.
Dirección virtual primaria
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.
Dirección virtual secundaria
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.
Dirección virtual local
Una dirección virtual local es una dirección virtual 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 virtuales locales.
Dirección de instrucción
Las direcciones utilizadas para leer 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 de 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.
Dirección efectiva
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 mostrado en la figura 17.
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.
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 especificadas 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 especificadas por AR consiste en direcciones virtuales especificadas por AR traducidas por medio del elemento de control del espacio de direcciones especificadas 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.
Traducción dinámica de direcciones
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.
Modo de traducción de direccionamiento
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 de 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 direcciones
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
Modos de traducción
La palabra de estado de programa es una palabra de 128 bits que, en parte, proporciona 2 bits que indican el modo de direccionamiento. En una realización, el bit 31 es el bit de modo de direccionamiento extendido (EA, Extended 5 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 doble). Cuando la dirección de instrucción ocupa los segundos 64 bits de una entidad de 128 bits (una palabra 10 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 es 1, entonces se indica direccionamiento de 31 bits. La palabra apropiada de 64 bits contiene una dirección de 31
15 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.
Elemento de control del espacio de direcciones (ASCE)
A continuación se hace referencia a la figura 3, que muestra una realización de cómo se utiliza la palabra de estado
20 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 designación de espacio real provoca que la dirección virtual sea tratada como una dirección real en el
25 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 el elemento de control del espacio primario de direcciones (PASCE) 310. El 312, si el espacio de direcciones (AS) 30 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)
322.
35 Después de la selección del ASCE efectivo, el proceso de traducción dinámica de direcciones es preferiblemente 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.
Formato de direcciones virtuales
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 muestra en la figura 18.
Tal como se determina mediante su ASCE, un espacio direcciones virtuales pues 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-32 de la dirección virtual tienen el formato que se muestra en la figura 19.
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 el servicio EDAT activado, 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.
Traducción dinámica de la dirección virtual
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 tres (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á asignado 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 tercera 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 de 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 la 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 marco 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 marco 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 534 de índice de página (PX), de la dirección virtual, para hacer referencia a la entrada 542 de la tabla de páginas, en una tabla de páginas. La entrada de la tabla de páginas contiene una dirección real 546 de marco de página (PFRA, page frame real address). Cuando los bits situados más a la izquierda de la dirección real de marco 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.
Preferiblemente, la información utilizada en la traducción dinámica de una dirección virtual a una dirección de memoria es almacenada en una etiqueta de entrada de memoria intermedia 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 intermedia 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 intermedia 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 marco 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 intermedia 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 intermedia 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 marco de segmento (SFAA, segment frame absolute address). Cuando los bits situados más a la izquierda de la dirección absoluta del marco 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 del marco de segmento (SFAA) junto con las partes de RX y de SX de la dirección virtual, es almacenada en una memoria intermedia 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 intermedia de traducción anticipada.
Formatos de entrada de las tablas de traducción
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 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 20.
Origen de la segunda tabla de regiones, origen de la tercera tabla de regiones, y origen de la tabla de segmentos: una entrada de la primera tabla de regiones contiene un origen de una segunda tabla de regiones. Una entrada de la segunda tabla de regiones contiene un origen de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene un origen de la tabla de segmentos. La 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.
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 tabla de regiones, entrada de tabla de
5 segmentos, y, cuando aplica, entrada de la tabla de páginas 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 tabla de regiones. Cuando el servicio de DAT mejorada no está instalado, o cuando la servicio está instalado pero el control de habilitación de DAT es cero, el bit 54 de la entrada de tabla de regiones es ignorado.
Desplazamiento de la Segunda Tabla de Regiones, Desplazamiento de la Tercera Tabla de Regiones y 10 Desplazamiento de la Tabla de Segmentos (TF):
una entrada de la primera tabla de regiones contiene un desplazamiento de la segunda tabla de regiones. Una entrada de la segunda tabla de regiones contiene un desplazamiento de la tercera tabla de regiones. Una entrada de la tercera tabla de regiones contiene un desplazamiento de la tabla de segmentos. La siguiente descripción aplica a cada uno de los tres desplazamientos de tabla. Los bits 56 y 57 de la entrada especifican la longitud de una parte de 15 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 campo desplazamiento, junto con el campo de longitud, bits 62 y 63, se utilizan para determinar si la parte de la
20 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 una entrada de la tercera tabla de regiones controla si la única región asociada con la entrada está disponible. Cuando el
25 bit 58 es cero, la traducción de direcciones continúa 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, tal como sigue: los bits 60 y 61 deben identificar el nivel de la tabla correcto, considerando el tipo de designación de
30 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
Primero
10 Segundo
01 Tercero
Bits de tipo de tabla para entradas de tablas de regiones
Longitud de la segunda tabla de regiones, longitud de la tercera tabla de regiones y longitud de la tabla de
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 desplazamiento, 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 tabla de regiones están reservadas para posibles extensiones futuras y deben contener ceros; de lo
45 contrario, el programa puede no funcionar compatiblemente en el futuro. Cuando aplica DAT mejorada, las posiciones de bit reservadas de la entrada de 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 que se muestra en la figura 21.
Cuando aplica DAT mejorada y el control de formato de la 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 22.
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 de formato de la 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 del marco de segmento (SFAA): cuando aplica DAT mejorada y el control de formato de la 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 bit de control de acceso y control de validez del bit de protección contra lectura (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, se utilizan los bits 48 a 52 tal como se describe a continuación.
Bits de control de acceso (ACC): cuando aplica DAT mejorada, el control de formato de la 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 lectura (F): cuando aplica DAT mejorada, el control de formato de la 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 lectura 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 del marco de 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 lectura, y el bit 55 es la anulación de la grabación de 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 páginas 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 páginas.
Anulación de la grabación de modificación (CO): cuando aplica DAT mejorada y el control de formato de la STE es uno, el bit 55 de la entrada de la tabla de segmentos es la anulación de la grabación de modificación para el segmento. Cuando no aplica DAT mejorada, o cuando aplica DAT mejorada pero el control de formato de la 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 intermedia 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 intermedia 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 intermedia 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
10 segmento 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 tabla de regiones o una entrada de la tabla de segmentos, son los siguientes:
Bits 60 y 61 Nivel de la tabla
11 Primera 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
20 posiciones de bit de la entrada de la tabla de segmentos están reservadas para posibles extensiones futuras y deben 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.
Entradas de tablas de páginas
25 En una realización, la entrada leída desde la tabla de páginas tiene el formato que se muestra en la figura 23.
Los campos seleccionados en la entrada de la tabla de páginas están asignados como sigue:
Dirección real del marco 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.
30 Bit de página no válida (I): el bit 53 controla si la página asociada con la entrada de la tabla de páginas está disponible. Cuando el bit es cero, la traducción de direcciones prosigue utilizando la entrada de la tabla de páginas. Cuando el bit es uno, la entrada de la tabla de páginas 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
35 dirección baja. El bit no tiene consecuencias sobre los accesos de lectura. Si el bit es cero, se permiten 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.
40 Otros mecanismos de protección
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 modificación (CO): cuando no aplica DAT mejorada, el bit 55 de la entrada de la tabla de páginas 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 páginas es la anulación de la grabación de 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.
Otra realización de la traducción dinámica
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 se utilizan 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 desplazamiento 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 desplazamiento 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 páginas, se reconoce una excepción de traducción de página. La entrada de la tabla de páginas 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 páginas.
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 intermedia especial, la memoria intermedia de traducción anticipada, y las traducciones subsiguientes que involucran las mismas entradas de tabla pueden realizarse utilizando la información registrada en la memoria intermedia de traducción anticipada. La memoria intermedia 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
Primer índice de región 11
Primera tabla de regiones (bits 0 a 10)
Segundo índice de 10 Segunda tabla de regiones región (bits 11 a 21)
Tercer índice de región 01 Tercera tabla de regiones (bits 22 a 32)
Índice de segmentos 00 Tabla 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 20 primera tabla de regiones. La dirección de 64 bits de la entrada de la primera tabla de regiones en almacenamiento 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 de 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 25 63 de la designación de primera tabla de regiones, para determinar si la entrada direccionada está dentro de la 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 intermedia de traducción anticipada. La entrada leída desde la primera
30 tabla de regiones designa el comienzo y especifica el desplazamiento y la longitud de la segunda tabla de regiones correspondiente.
Cuando los bits 60 y 61 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 35 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 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 intermedia de traducción anticipada. Por lo demás, el proceso de búsqueda en la segunda tabla de regiones es igual que el
40 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 desplazamiento y la longitud de la tercera tabla de regiones correspondiente.
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 desplazamiento 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 tabla de segmentos en la memoria intermedia 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 del marco de segmento. Si el bit de protección de DAT es uno, ya sea en cualquier entrada de 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 tabla de regiones
Cuando el ASCE efectivo es una designación de tabla de regiones, se selecciona una entrada de 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 desplazamiento 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 desplazamiento 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 desplazamiento 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 desplazamiento 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 desplazamiento de la tabla es mayor que los bits 22 y 23, o si la longitud de la tabla es menor que los bits 22 y 23. 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 desplazamiento y la longitud de la tabla de segmentos correspondiente.
Cuando la entrada de la tabla seleccionada por medio del ASCE es una entrada de la tercera tabla de regiones, o si 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 desde 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 desplazamiento 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 desplazamiento de la tabla es mayor que los bits 33 y 34, o si la longitud de la tabla es menor que los bits 33 y 34. Se reconoce una 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 del marco de segmento. Si el bit de protección de DAT es uno, ya sea en cualquier entrada de 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 páginas 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 del marco 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. Si 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 páginas o, cuando aplica DAT, en cualquier entrada de 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 del marco de página se obtiene desde la entrada de la tabla de páginas. La dirección real del marco de página y la parte de índice de byte de la dirección virtual son concatenadas, con la dirección real del marco 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 control de formato de la STE es uno, la dirección absoluta del marco 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.
Reconocimiento de excepciones durante la traducción
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 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 direcció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 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, se obtiene a partir de la entrada de tabla el origen de una siguiente tabla inferior en la jerarquía de tablas de traducción. 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 de la dirección virtual 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 tabla de segmentos dentro de la tabla de segmentos. Se hace referencia a tablas sucesivas hasta que se ha leído la entrada de la tabla de segmentos.
Una vez que se ha leído 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 control de formato de la STE es cero entonces se produce la traducción dinámica de direcciones con respecto al nodo 614. Si el control de formato 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 control de formato 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 una 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 páginas, en la tabla de páginas. En 714, se obtiene una dirección real de marco de página (PFRA) a partir de la entrada de la tabla de páginas. A partir de la entrada de la tabla de páginas 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 páginas debido a que la entrada se ha marcado como no siendo válida. La traducción subsiguiente de dirección virtual utilizando esta entrada de la tabla de páginas se detiene 722. En 716, si el bit de no válido (I) es cero entonces, en 720, la dirección real de marco 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.
Traducción dinámica de direcciones (el control de formato de la STE es uno)
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 marco 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 subsiguiente 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 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 del marco 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 direcciones virtuales. 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 desplazamiento 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 se almacena en, por lo menos, una memoria intermedia 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 intermedia 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 el servicio de DAT mejorado, 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.
Protección de DAT
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 páginas y en cada entrada de tabla de segmentos y, cuando elservicio de DAT mejorada está instalado, en cada entrada de 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 páginas 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 almacenar en una página protegida, los contenidos de la página no cambian, la unidad de operación o de 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 almacenar en un segmento protegido, los contenidos del segmento no cambian, la unidad de operación o 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 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 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 tabla de regiones y en cada subsiguiente entrada de 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 páginas.
La protección de DAT aplica a todas las referencias de tipo almacenamiento que utilizan una dirección virtual.
A continuación se hace referencia a la figura 9, que muestra un diagrama de flujo de una realización de obtención del bit de protección de DAT a partir de la entrada de la tabla de segmentos utilizada en una traducción.
En 902, se obtiene una dirección virtual a traducir. En 904, se obtiene el origen de una primera tabla de traducción utilizada en la traducción de la dirección virtual. En 906, se utiliza una parte de la dirección virtual para hacer referencia a una entrada de la tabla de traducción, de una manera descrita previamente. En 908, se genera una dirección real o absoluta desde la dirección absoluta de marco de segmento (SFAA) obtenida o bien la dirección real de marco de página (PFRA).
En 910, se obtiene un bit de protección (P) de DAT desde cada entrada de las tablas de traducción utilizadas en la traducción de la dirección virtual. Debe entenderse que el nivel eficaz de la protección DAT es el OR lógico de múltiples bits P obtenidos desde cada una de las entradas de tabla utilizadas en la traducción. El 912, se examina el bit de protección DAT para determinar si el bloque de datos al que se dirige la dirección virtual traducida está 5 protegido por DAT. En 912, si el bit de protección (P) de DAT es cero entonces, en 914, se permiten operaciones de almacenamiento en el bloque de datos al que se dirige la dirección virtual traducida. En 912, si el bit de protección
(P) de DAT es uno entonces, en 916, se impiden operaciones de almacenamiento en el bloque de datos al que se dirige la dirección virtual traducida. Alternativamente, el nivel de protección indicado mediante el campo de protección de DAT se aplica a todas las referencias de tipo almacenamiento que utilizan la dirección virtual. Si el
10 campo de protección de DAT está habilitado entonces se indica una condición de excepción de protección si se intenta un almacenamiento en el bloque de datos deseado al que se dirige la dirección virtual traducida.
Protección controlada por claves
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
15 el acceso de almacenamiento; la lectura se permite cuando la clave coincide o cuando el bit de protección contra 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 resume 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 cuatro bits de control de acceso de la clave de almacenamiento son iguales a la clave de acceso, o la clave de acceso es cero. Se permite el acceso No se permite el acceso. En lectura, la información no se pone a disposición del programa; en almacenamiento, no se modifican los contenidos de la posición de almacenamiento.
Compendio de acción protectora
20 Cuando el acceso al almacenamiento es iniciado por la CPU y aplica la protección controlada por claves, la clave 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
25 programa actual.
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.
Claves de almacenamiento
30 Una clave de almacenamiento está asociada con cada bloque de 4 Kilobytes de almacenamiento que está disponible en la configuración. 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 24.
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 lee información desde una posición protegida contra lectura.
Bit de protección contra lectura (F): si una referencia está sujeta a protección controlada por claves, el bit de protección contra 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 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 almacena información en una posición en el bloque de almacenamiento correspondiente.
Cuando aplica DAT mejorada, rigen las siguientes condiciones adicionales:
Cuando el control de formato de la 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 páginas utilizada durante la traducción es la anulación de la grabación de modificación (CO) para la página. Cuando el bit de CO en la entrada de la tabla de páginas 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 modificación (CO) para el segmento. Cuando el bit de CO en la entrada de la tabla de segmentos es uno, es impredecible si el bit de modificación está activado para cualesquiera operaciones de almacenar en el segmento.
Accesos de clave de almacenamiento
Las referencias a la clave de almacenamiento se tratan 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 de formato de la 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 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 lectura, puede utilizarse una copia almacenada en memoria intermedia procedente de la memoria intermedia 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 modificación es uno en la entrada de la tabla de páginas utilizada por la DAT, o (b) el control de formato de STE es uno, y la anulación de la grabación de 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 modificación puede ser almacenada en memoria intermedia en la copia de la memoria intermedia 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 INSERTAR CLAVE 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 lectura.
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) se ordenan 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.
Control de acceso y protección contra lectura (ACC/F, Access Control and Fetch Protection)
Un bloque de datos en memoria o almacenamiento principal puede protegerse adicionalmente mediante bits de control de acceso y protección contra lectura proporcionados en la entrada de la tabla de segmentos.
Validez de acceso (AV, Access Validity) y control de acceso (ACC, Access Control)
A continuación se hace referencia a la figura 10, que muestra una realización de un diagrama de flujo que determina la protección de control de acceso a aplicar a un bloque de datos deseado al que se dirige la dirección virtual traducida.
La traducción dinámica de direcciones avanza al punto en que se ha leído una entrada de tabla de segmentos a partir de una tabla de segmentos utilizada en la traducción, tal como se ha descrito en la figura 6 para el nodo 616. La traducción de direcciones continúa tal como se ha descrito en la figura 8 para el nodo 822, en el que se ha obtenido una dirección absoluta a un bloque de datos deseado en almacenamiento o memoria. El flujo de la figura 10 comienza en el nodo 822.
En 1002, se ha obtenido un campo de validez de acceso (AV) a partir de la entrada de la tabla de segmentos. En 1004, se determina si el campo de validez de acceso en la entrada de la tabla de segmentos está habilitado (AV = 1). Si el campo de validez de acceso es cero entonces el campo de control de acceso (ACC) en la entrada de la tabla de segmentos no es válido. En 1006, se ignoran los bits del campo de control de acceso. Si el campo de validez de acceso está habilitado, entonces el campo de control de acceso es válido. En 1008, se obtienen los bits del campo de control de acceso a partir de la entrada de la tabla de segmentos. En 1010, el nivel de protección de control de acceso indicado mediante el campo ACC en la entrada de la tabla de segmentos se aplica al bloque de datos deseado al que se dirige la dirección virtual traducida.
En otra realización, se permiten operaciones de almacenamiento al bloque de datos deseado solamente si el campo de control de acceso coincide con una clave de acceso proporcionada mediante una entidad de programa, tal como una palabra de estado de programa o un operando de una instrucción de programa en ejecución. Se indica preferiblemente una excepción de protección si se intenta un almacenamiento en el bloque deseado de datos y el campo de control de acceso no coincide con la clave de acceso.
En otra realización, si el campo de validez de acceso está habilitado, se indica una excepción de protección si se intenta una operación de lectura o una operación de almacenamiento en el bloque de memoria deseado y el campo de control de acceso del segmento no coincide con el campo de control de acceso del programa.
Validez de acceso (AV) y protección contra lectura (F)
A continuación se hace referencia a la figura 11, que muestra una realización de un diagrama de flujo que determina la protección contra lectura a aplicar a un bloque de datos deseado al que se dirige la dirección virtual traducida.
La traducción dinámica de direcciones avanza al punto en que se ha leído una entrada de tabla de segmentos a partir de una tabla de segmentos utilizada en la traducción, tal como se ha descrito en la figura 6 para el nodo 616. La traducción de direcciones continúa tal como se ha descrito en la figura 8 para el nodo 822, en el que se ha obtenido una dirección absoluta a un bloque de datos deseado en almacenamiento o memoria. El flujo de la figura 11 comienza en el nodo 822.
En 1102, se ha obtenido un campo de validez de acceso (AV) a partir de la entrada de la tabla de segmentos. En 1104, se determina si el campo de validez de acceso en la entrada de la tabla de segmentos está habilitado (AV = 1). En 1104, si el campo de validez de acceso es cero entonces, en 1106, se ignora el bit de protección contra lectura. En 1104, si está habilitado el campo de validez de acceso entonces, en 1108, se obtiene el bit de protección contra lectura a partir de la entrada de la tabla de segmentos. En 1110, el nivel de protección contra lectura indicado mediante el campo F en la entrada de la tabla de segmentos se aplica al bloque de datos deseado al que se dirige la dirección virtual traducida. Las operaciones de lectura del bloque de datos al que se dirige la dirección virtual traducida se permiten solamente si el campo de protección contra lectura coincide con una clave de acceso. La clave de acceso se proporciona mediante una palabra de estado de programa o un operando de una instrucción de programa en ejecución. Las operaciones de lectura del bloque deseado de datos se permiten solamente si el campo de protección contra lectura está deshabilitado, o si el campo de protección contra lectura está habilitado y el campo de control de acceso asociado con la dirección virtual es igual a la clave de acceso. Si la clave de acceso es cero, se permiten lecturas del bloque deseado de datos.
En otra realización, si la clave de acceso del programa es cero, se permiten las operaciones de almacenamiento en el bloque de memoria deseado y las operaciones de lectura del bloque de memoria deseado.
En otra realización, si el campo de validez de acceso y el campo de protección contra lectura están habilitados, se indica una excepción de protección en respuesta al intento de una operación de lectura del bloque deseado de memoria y a que el campo de control de acceso del segmento y el campo de control de acceso del programa no coinciden.
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 25.
La clave de almacenamiento para uno o varios bloques de 4 Kilobytes es sustituida por el valor del primer registro de operando. Cuando el servicio de SSKE condicional está instalado, pueden ser omitidas ciertas funciones de la operación de activación de claves. Cuando el servicio SSKE condicional no está instalado, o cuando el servicio SSKE condicional está instalado 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 el servicio SSKE condicional está instalado y uno o ambos bits de MR y MC valen uno, los bits de control de acceso, el bit de protección contra lectura 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 el servicio de DAT mejorada está instalado, 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 26.
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 el servicio de DAT mejorada no está instalado, la posición del bit 3 del campo M3 está reservada.
Cuando el servicio de SSKE condicional está instalado, 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 el servicio SSKE condicional no estuviera instalado. 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 1 de condición. Cuando los bits de control de acceso y de protección contra lectura 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 1; 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 1; 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 el servicio DAT mejorada no está instalado, o cuando el servicio está instalado pero el control de bloques múltiples es cero, el registro general R2 contiene una dirección real. Cuando el servicio DAT mejorada está instalado 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á instalado el servicio 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 el servicio 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 se realiza asimismo 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 el servicio de DAT no está instalado, o cuando el servicio está instalado pero el control de múltiples bloques
5 es cero, la clave de almacenamiento para un solo bloque de 4 kB es activada, tal como se ha descrito anteriormente. Cuando el servicio DAT mejorada está instalado, 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
10 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.
15 Cuando la instrucción se completa sin interrupción, el registro general R2 ha sido actualizado al siguiente límite de 1 Megabyte. 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.
20 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.
25 Código de condición resultante:
Cuando el servicio de SSKE condicional no está instalado, o cuando los bits MR y MC del campo M3 son cero, el código de condición no cambia. Cuando el servicio SSKE condicional está instalado, 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
30 1- Clave de almacenamiento completa activa
2 - Clave de almacenamiento parcial activa
3 - Clave de almacenamiento completa activa; los bits 48 a 55 del registro general R1 son impredecibles.
Excepciones de programa:
Direccionamiento (dirección especificada por el registro general R2)
35 Operación privilegiada
Grabación de modificaciones
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
40 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 modificación (CO) en la entrada de la tabla de páginas utilizada por la DAT es cero.
El control de formato de STE en la entrada de la tabla de segmentos utilizada mediante DAT es uno, y la anulación 45 de la grabación de 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 de almacenamiento en memoria, incluyendo aquellos realizados por cualquier CPU (excepto cuando está suprimida por la anulación de la grabación de modificación, descrita en la presente memoria), por cualquier servicio de operador, o por el subsistemade canales. Ésta 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 a un valor especificado).
Los bits de modificación que han sido modificados de ceros a unos no son necesariamente restablecidos a ceros en un reintento de la CPU.
Anulación de la grabación de modificación (CO):
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 almacenar si el acceso está prohibido. La anulación de la grabación de 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 modificación (CO) en el bit 55 de la entrada de la tabla de segmentos y de la entrada de la tabla de páginas. 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 modificación en la entrada de la tabla de páginas. Cuando la anulación de la grabación de 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 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 de formato de la STE vale uno, aplica la anulación de la grabación de modificación en la STE. Cuando la anulación de la grabación de 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 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 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.
A continuación se hace referencia a la figura 12, que muestra un diagrama de flujo de una realización de obtención del campo de la anulación de la grabación de modificación a partir de la entrada de la tabla de segmentos utilizada en una traducción dinámica de direcciones de una dirección virtual.
La traducción dinámica de direcciones avanza al punto en que se ha leído una entrada de tabla de segmentos a partir de una tabla de segmentos utilizada en la traducción, tal como se ha descrito en la figura 6 para el nodo 616. La traducción de direcciones continúa tal como se ha descrito en la figura 8 para el nodo 822, en el que se ha obtenido una dirección absoluta para un bloque deseado de datos en almacenamiento o memoria. El flujo de la figura 12 comienza en el nodo 822.
En 1210, se obtiene un campo de anulación de la grabación de modificación (CO) a partir de la entrada de la tabla de segmentos utilizada en la traducción. La anulación de la grabación de modificación permite la anulación del bit de modificación de la clave de almacenamiento. En 1212, se determina si el acceso realizado sobre el bloque de datos deseado al que se dirige la dirección virtual traducida es una operación de tipo almacenamiento o de tipo lectura. Si el acceso es un acceso de tipo lectura entonces, en 1213, no se produce la activación del bit de modificación y no aplica la anulación de la grabación de modificación. Si el acceso ha sido una operación de tipo almacenamiento entonces, en 1214, se determina si está habilitada la anulación de la grabación de modificación en la entrada de la tabla de segmentos. En 1214, si no está habilitada la anulación de la grabación de modificación entonces, en 1218, el bit de modificación de la clave de almacenamiento asociada con el bloque deseado se pone a 1. En 1214, si la anulación de la grabación de modificación está habilitada entonces, en 1216, no se activa el bit de modificación de la clave de almacenamiento asociada. En 1220, se realiza una indicación sobre que el bloque de datos deseado ha sido modificado.
En otra realización, si aplica DAT mejorada y el control de formato en la STE no está habilitado, se obtiene un origen de una tabla de páginas a partir de la entrada de la tabla de segmentos. Se utiliza una parte de índice de página de la dirección virtual para hacer referencia a una entrada de la tabla de páginas en la tabla de páginas. A partir de la entrada de la tabla de páginas se obtienen una dirección real de marco de página de un bloque pequeño de datos en almacenamiento principal, y un campo de anulación de cambio de página. Cada bloque pequeño de datos tiene una clave de almacenamiento asociada que contiene un bit de modificación. El bloque pequeño de datos es de menor tamaño que el bloque grande de datos y consiste en un bloque de datos de 4 Kilobytes (4096 bytes). Una dirección traducida de un bloque de datos real deseado en el almacenamiento principal contiene una combinación de la dirección real de marco de página y la parte de índice de byte de la virtual. Se determina si se ha realizado una operación de tipo almacenamiento o de tipo lectura en el bloque de datos real deseado. Si la operación de acceso ha sido una operación de tipo lectura entonces no aplica la anulación de la grabación de modificación. Si el acceso ha sido una operación de tipo almacenamiento, entonces si el campo de la anulación de la grabación de modificación asociado con la dirección virtual está deshabilitado, el bit de modificación de la clave de almacenamiento asociada con el bloque de 4 K deseado se pone a 1. Se proporciona una indicación acerca de que el bloque de 4 K ha sido modificado.
En otra realización, si está activado el campo de la anulación de la grabación de modificación, el bit de modificación de la clave de almacenamiento asociada con el bloque de 4 K deseado es impredecible.
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/o a otros entornos informáticos que utilicen entidades paginables o construcciones similares.
Las implementaciones comerciales del servicio de eDAT y otros formatos, instrucciones y atributos dados a conocer en la presente memoria pueden ser implementadas en equipamiento físico o bien mediante 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 muestran 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
Las diversas realizaciones descritas en la presente memoria son solamente ejemplos. Pueden existir muchas variaciones a estas realizaciones sin apartarse del alcance de la presente invención.
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 diversas zonas, y entornos no particionados. Además, puede no haber complejos de procesadores centrales, sino múltiples procesadores acoplados entre ellos. Diversos aspectos de esto son aplicables a entornos de un sólo procesador.
Si bien en la presente memoria se describen entornos concretos, de nuevo, pueden implementarse muchas variaciones a estos entornos sin apartarse del alcance de la presente invención. Por ejemplo, si el entorno está particionado lógicamente, pueden incluirse en el entorno más o menos particiones lógicas. Además, puede habermúltiples complejos de procesamiento central acoplados entre ellos. Éstas son solamente algunas de las variaciones que pueden realizarse sin apartarse del alcance de la presente invención. Adicionalmente, son posibles otras variaciones.
Aunque el término 'página' se utiliza para hacer referencia a un área de almacenamiento de tamaño fijo o 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
5 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, éstas 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 intermedia incluye un área de
10 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 tamaños variables diferentes a los descritos en la presente memoria.
Uno o varios aspectos de la presente invención pueden incluirse en un producto manufacturado (por ejemplo, uno o
15 varios productos de programa informático) que tenga, por ejemplo, medios utilizables por ordenador o legibles a máquina. Dichos medios tienen incorporados, por ejemplo, lógica (por ejemplo, instrucciones, código, comandos, etc.) o medios de código de programa legibles por ordenador para proporcionar y facilitar las capacidades de la presente invención. El producto manufacturado 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
20 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 (10)

  1. REIVINDICACIONES
    1. Método de traducción de una dirección virtual en 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 de traducción (410, 412, 414, 416) utilizada para la traducción de dicha dirección virtual, comprendiendo el método:
    obtener una dirección virtual a traducir;
    obtener una dirección de origen de una tabla de traducción de dicha jerarquía de tablas de traducción;
    utilizar una parte de índice de dicha dirección virtual para hacer referencia a una entrada en dicha tabla de traducción;
    caracterizado por determinar si está habilitado un campo de control de formato en dicha entrada de tabla de traducción, en el que un campo de control formato no habilitado de la entrada de tabla de traducción indica que la entrada de tabla de traducción incluye una dirección de otra tabla de traducción, y en el que un campo de control habilitado de formato de la entrada de la tabla de traducción indica que la entrada de la tabla de traducción incluye una dirección de marco de un bloque grande de datos y bits de protección de acceso para permitir el acceso al bloque grande de datos, y
    en el que, si dicho campo de control de formato no está habilitado, llevar a cabo:
    la obtención desde dicha entrada de tabla de traducción de una dirección de origen de otra tabla de traducción de dicha jerarquía de tablas de traducción;
    la utilización de una parte de índice de dicha dirección virtual para hacer referencia a una entrada en dicha otra tabla de traducción y la obtención desde dicha otra entrada de tabla de una dirección de marco pequeño de un bloque pequeño de datos en almacenamiento principal, siendo dicho bloque pequeño de datos menor que dicho bloque grande de datos;
    la combinación de dicha dirección real de marco pequeño con una parte de desplazamiento de dicha dirección virtual, para formar una dirección real traducida de dicho bloque pequeño deseado de datos en almacenamiento principal, estando sometida dicha dirección real a anteposición de prefijo; y
    en base a la determinación de que los bits de control de acceso de una clave de almacenamiento asociada con dicho bloque pequeño deseado de datos coincide con una clave de acceso asociada con una solicitud de acceso, acceder a dicho bloque pequeño deseado de datos en almacenamiento principal al que está dirigida dicha dirección traducida;
    si está habilitado dicho campo de control de formato, llevar a cabo:
    la obtención desde dicha entrada de tabla de traducción de una dirección de marco de un bloque grande de datos en almacenamiento principal, en el que dicha entrada de tabla de traducción comprende un campo de control de acceso (ACC) y un bit de protección contra lectura (F);
    la combinación de dicha dirección de marco con una parte de desplazamiento de dicha dirección virtual para formar una dirección absoluta traducida de un bloque deseado de datos dentro de dicho bloque grande de datos en almacenamiento principal, en el que dicho bloque deseado de datos consiste en uno o varios bytes de datos, en el que dicha dirección absoluta no está sometida a anteposición de prefijo; y
    en base a una determinación de si la clave de almacenamiento o el campo de control de acceso de la entrada de tabla de traducción coincide con la clave de acceso asociada con una solicitud de acceso, acceder a dicho bloque grande deseado de datos al que está dirigida dicha dirección traducida.
  2. 2. El método según la reivindicación 1, en el que si dicho campo de control de formato está habilitado, la ejecución comprende adicionalmente:
    obtener de dicha entrada de tabla de traducción, información de restricción para restringir dicho acceso a dicha parte restringida de dicho bloque grande de datos; y
    restringir dicho acceso a dicho bloque grande deseado de datos al que se dirige dicha dirección traducida, a solamente dicha parte restringida de dicho bloque grande de datos.
  3. 3.
    El método según la reivindicación 2, en el que dicha información de restricción comprende cualquiera de un desplazamiento de tabla o una longitud de tabla.
  4. 4.
    El método según la reivindicación 1, en el que la jerarquía de tablas de traducción consiste en una o varias de una primera tabla de regiones que tiene una entrada de la primera tabla de regiones para localizar una segunda tabla de regiones, una segunda tabla de regiones que tiene una entrada de la segunda tabla de regiones para localizar una
    tercera tabla de regiones, una tercera tabla de regiones que tiene una entrada de la tercera tabla de regiones para localizar una tabla de segmentos, y una tabla de segmentos que tiene una entrada de la tabla de segmentos, comprendiendo el método adicionalmente:
    comenzando con una tabla de traducción predeterminada de la jerarquía de tablas de traducción, buscar secuencialmente una o varias de las entradas de tabla de traducción de la jerarquía de tablas de traducción hasta que se encuentra una entrada de tabla de traducción con un campo de control de formato habilitado, en el que la dirección de origen de tabla de traducción de la tabla de traducción que tiene la entrada de tabla de traducción con el campo de control de formato habilitado es la dirección de origen obtenida de la tabla de traducción de dicha jerarquía de tablas de traducción.
  5. 5. El método según la reivindicación 1, que comprende además:
    almacenar información utilizada en dicha traducción de dicha dirección virtual en, por lo menos, una memoria intermedia de traducción anticipada; y
    llevar a cabo una traducción subsiguiente de una dirección virtual subsiguiente en dicha dirección absoluta de dicho bloque de datos en almacenamiento principal, utilizando dicha información almacenada de dicha memoria intermedia de traducción anticipada y no de dicha jerarquía de tablas de traducción.
  6. 6. El método según la reivindicación 1, que si dicha traducción no es nativa de dicha arquitectura de máquina, comprende además:
    identificar una rutina de software predeterminada para emular dicha traducción, comprendiendo dicha rutina de software predeterminada una serie de instrucciones; y
    ejecutar dicha rutina de software predeterminada.
  7. 7.
    El método según la reivindicación 1, en el que dicho bloque grande de datos comprende un bloque de por lo menos 1 Megabyte de tamaño.
  8. 8.
    El método según la reivindicación 1, en el que
    cuando el acceso a dicho bloque grande deseado de datos es una operación de almacenamiento, el almacenamiento se permite solamente si el campo de control de acceso de la entrada de tabla de traducción coincide con la clave de acceso asociada con la solicitud de acceso; y
    cuando el acceso a dicho bloque grande deseado de datos es una operación de lectura, la lectura se permite en base a un bit de protección contra lectura de la entrada de tabla de traducción, en el que se permite la lectura si el bit de protección contra lectura de la entrada de la tabla de traducción es 0 o si el bit de protección contra lectura de la entrada de la tabla de traducción es 1 y el campo de control de acceso de la entrada de la tabla de traducción coincide con la clave de acceso asociada con una solicitud de acceso.
  9. 9.
    Un sistema que comprende medios adaptados para llevar a cabo todas las etapas del según cualquier reivindicación de método precedente.
  10. 10.
    Un programa informático que comprende instrucciones para llevar a cabo todas las etapas del método según cualquier reivindicación de método precedente, cuando dicho programa informático es ejecutado en un sistema informático.
ES09700213T 2008-01-11 2009-01-05 Traducción dinámica de direcciones con control de formato Active ES2406056T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US972706 1997-11-18
US11/972,706 US8037278B2 (en) 2008-01-11 2008-01-11 Dynamic address translation with format control
PCT/EP2009/050049 WO2009087132A1 (en) 2008-01-11 2009-01-05 Dynamic address translation with format control

Publications (1)

Publication Number Publication Date
ES2406056T3 true ES2406056T3 (es) 2013-06-05

Family

ID=40481750

Family Applications (1)

Application Number Title Priority Date Filing Date
ES09700213T Active ES2406056T3 (es) 2008-01-11 2009-01-05 Traducción dinámica de direcciones con control de formato

Country Status (12)

Country Link
US (1) US8037278B2 (es)
EP (1) EP2229630B1 (es)
JP (1) JP5602638B2 (es)
KR (1) KR101419578B1 (es)
CN (1) CN101911022B (es)
CY (1) CY1113979T1 (es)
DK (1) DK2229630T3 (es)
ES (1) ES2406056T3 (es)
PL (1) PL2229630T3 (es)
PT (1) PT2229630E (es)
SI (1) SI2229630T1 (es)
WO (1) WO2009087132A1 (es)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
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
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
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
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
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
US8239667B2 (en) * 2008-11-13 2012-08-07 Intel Corporation Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory
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
US9753860B2 (en) 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US9092359B2 (en) 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9811472B2 (en) * 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
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
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
WO2015023897A1 (en) * 2013-08-14 2015-02-19 Skyera, Inc. Address translation for a non-volatile memory storage device
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9514058B2 (en) * 2014-12-22 2016-12-06 Texas Instruments Incorporated Local page translation and permissions storage for the page window in program memory controller
EP3274824B1 (en) * 2015-03-27 2021-03-17 Intel Corporation Efficient address translation
US9658792B2 (en) * 2015-06-11 2017-05-23 International Business Machines Corporation Reserving a storage area and building page frame table entries
US11379371B2 (en) 2019-11-07 2022-07-05 Research & Business Foundation Sungkyunkwan University Method and system with improved memory input and output speed

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4669043A (en) * 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JPS6417137A (en) * 1987-07-13 1989-01-20 Nippon Telegraph & Telephone Control system for large-capacity page
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
US5008811A (en) * 1988-02-10 1991-04-16 International Business Machines Corp. Control mechanism for zero-origin data spaces
US5058003A (en) * 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
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
JPH10301848A (ja) * 1997-04-28 1998-11-13 Hitachi Ltd 多重ページサイズを有する仮想記憶装置
US6009261A (en) * 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
DE10002120B4 (de) * 1999-02-13 2006-04-20 International Business Machines Corp. Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
US7069412B2 (en) * 1999-02-17 2006-06-27 Elbrus International Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
US6574706B2 (en) * 2001-02-28 2003-06-03 International Business Machines Corporation Managing unvirtualized data pages in real storage
US6985951B2 (en) * 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
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
US7020761B2 (en) * 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
DE60311462T2 (de) * 2003-09-19 2008-01-03 Sun Microsystems, Inc., Santa Clara Verfahren und Vorrichtung zur Protokollverarbeitung in Computersystemen unter Verwendung der Übersetzung von Speicheradressen
US7234037B2 (en) 2003-11-25 2007-06-19 International Business Machines Corporation Memory mapped Input/Output operations
US8214622B2 (en) * 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
US7941799B2 (en) * 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
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 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8037278B2 (en) 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
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
US8417916B2 (en) 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
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
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
US8095773B2 (en) * 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier

Also Published As

Publication number Publication date
EP2229630B1 (en) 2013-04-03
JP2011509469A (ja) 2011-03-24
JP5602638B2 (ja) 2014-10-08
WO2009087132A1 (en) 2009-07-16
US20090182964A1 (en) 2009-07-16
DK2229630T3 (da) 2013-05-06
US8037278B2 (en) 2011-10-11
KR20100095629A (ko) 2010-08-31
SI2229630T1 (sl) 2013-06-28
EP2229630A1 (en) 2010-09-22
CY1113979T1 (el) 2016-07-27
KR101419578B1 (ko) 2014-07-25
PT2229630E (pt) 2013-05-13
PL2229630T3 (pl) 2013-07-31
CN101911022A (zh) 2010-12-08
CN101911022B (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
ES2406056T3 (es) Traducción dinámica de direcciones con control de formato
US10977190B2 (en) Dynamic address translation with access control in an emulator environment
ES2381428T3 (es) Traducción de dirección dinámica con gestión de trama.
US9244856B2 (en) Dynamic address translation with translation table entry format control for identifying format of the translation table entry
US8019964B2 (en) Dynamic address translation with DAT protection
US8909899B2 (en) Emulating execution of a perform frame management instruction
US8631216B2 (en) Dynamic address translation with change record override
US8041922B2 (en) Enhanced dynamic address translation with load real address function
US8082405B2 (en) Dynamic address translation with fetch protection
US8335906B2 (en) Perform frame management function instruction for clearing blocks of main storage
US20120011341A1 (en) Load Page Table Entry Address Instruction Execution Based on an Address Translation Format Control Field