MX2014015351A - Guardar/restablecer los registros seleccionados en el procesamiento transaccional. - Google Patents

Guardar/restablecer los registros seleccionados en el procesamiento transaccional.

Info

Publication number
MX2014015351A
MX2014015351A MX2014015351A MX2014015351A MX2014015351A MX 2014015351 A MX2014015351 A MX 2014015351A MX 2014015351 A MX2014015351 A MX 2014015351A MX 2014015351 A MX2014015351 A MX 2014015351A MX 2014015351 A MX2014015351 A MX 2014015351A
Authority
MX
Mexico
Prior art keywords
transaction
instruction
program
execution
storage
Prior art date
Application number
MX2014015351A
Other languages
English (en)
Other versions
MX347774B (es
Inventor
Dan Greiner
Timothy Slegel
Christian Jacobi
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of MX2014015351A publication Critical patent/MX2014015351A/es
Publication of MX347774B publication Critical patent/MX347774B/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Retry When Errors Occur (AREA)
  • Pinball Game Machines (AREA)
  • Magnetic Record Carriers (AREA)

Abstract

Una instrucción de comienzo de la traducción empieza la ejecución de una transacción e incluye una máscara para guardar el registro general que tiene bits, que cuando se establecen, indican los registros a ser guardados en el evento de que una transacción se aborte. Al inicio de la transacción, el contenido delos registros se guardan en la memoria no accesible al programa, y si la transacción se aborta, el contenido guardado se copia en los registros.

Description

GUARDAR/RESTABLECER LOS REGISTROS SELECCIONADOS EN EL PROCESAMIENTO TRANSACCIONAL ANTECEDENTES Uno o más aspectos se relacionan, en general, con entornos de computación con procesamiento múltiple, y en particular, con el procesamiento transaccional dentro de entornos de computación.
Un desafío permanente en la programación de un multiprocesador es aquél de las actualizaciones a la misma ubicación de almacenamiento mediante múltiples unidades de procesamiento centrales (CPU). Muchas instrucciones que actualizan las ubicaciones de almacenamiento, incluyendo incluso operaciones lógicas simples, tales como AND, lo hacen con múltiples accesos a la ubicación. Por ejemplo, primero, la ubicación de almacenamiento es buscada, y a continuación, el resultado actualizado se almacena nuevamente.
Con el fin de que múltiples CPU actualicen de manera segura la misma ubicación de almacenamiento, el acceso a la ubicación se serializa. Una instrucción, la instrucción de PRUEBA Y AJUSTE, introducida con la arquitectura S/360 ofrecida anteriormente por International Business Machines Corporation, proporcionaba una actualización interconectada de una ubicación de almacenamiento. La actualización interconectada significa, que como se observa por otras CPU y el subsistema de entrada/salida (I/O) (por ejemplo, subsistema del canal), todo el acceso al almacenamiento de la instrucción, parece ocurrir de manera atómica. Posteriormente, la arquitectura S/370 ofrecida por International Business Machines Corporation, introdujo las instrucciones COMPARAR E INTERCAMBIAR y COMPARAR DOBLE E INTERCAMBIAR, que proporcionan un medio más sofisticado de realizar la actualización interconectada, y permiten la implementación de lo que se conoce comúnmente como una palabra de bloqueo (o semáforo). Recientemente las instrucciones agregadas han proporcionado capacidades de actualización interconectada adicionales, incluyendo COMPARAR E INTERCAMBIAR Y PURGAR, y COMPARAR E INTERCAMBIAR Y ALMACENAR. Sin embargo, todas estas instrucciones proporcionan la interconexión para sólo una ubicación de almacenamiento única.
Las téenicas de programación más complejas pueden requerir la actualización interconectada de múltiples ubicaciones de almacenamiento, tales como cuando se agrega un elemento a una lista doblemente vinculada. En tal operación, tanto un indicador delantero como uno trasero van a aparecer para ser actualizados de manera simultánea, como se observa por otras CPU y el subsistema 1/0. Con el fin de efectuar tal actualización de la ubicación múltiple, el programa es obligado a utilizar un punto de serialización único, separado, tal como una palabra de bloqueo. Sin embargo, las palabras de bloqueo pueden proporcionar un nivel de serialización mucho más grueso que está garantizado; por ejemplo, las palabras de bloqueo pueden serializar una fila completa de millones de elementos, aunque sólo dos elementos se actualicen. El programa puede estructurar los datos para utilizar una serialización de grano más fino (por ejemplo, una jerarquía de puntos de bloqueo), pero que introduce problemas adicionales, tales como situaciones de bloqueo potenciales si la jerarquía es violada, y problemas de recuperación si el programa encuentra un error mientras que mantiene uno o más bloqueos o si el bloqueo no puede adquirirse.
Además de lo anterior, existen numerosos escenarios en donde un programa puede ejecutar una secuencia de instrucciones que puede o no resultar en una condición de excepción. Si no ocurre una condición de excepción, entonces el programa continúa; sin embargo, si se reconoce una excepción, entonces el programa puede tomar una acción correctiva para eliminar la condición de excepción. Java, como un ejemplo, puede explotar tal ejecución, por ejemplo, en una ejecución especulativa, alineación parcial de una función y/o en el resecuenciamiento de la verificación nula del puntero.
En los entornos de un sistema operativo clásico, tal como z/OS y sus predecesores, ofrecidos por International Business Machines Corporation, el programa establece un medio de recuperación para interceptar cualquier condición de excepción del programa que pueda encontrar. Si el programa no intercepta la excepción, el sistema operativo típicamente termina de manera anormal el programa para las excepciones que el sistema operativo no está preparado para manejar. El establecimiento y la explotación de tal entorno son costosos y complicados.
BREVE SUMARIO Las desventajas de la téenica previa se superan y se proporcionan ventajas a través de la provisión de un producto de programa de computadora para facilitar el procesamiento de transacciones dentro de un entorno de computación. El producto de programa de computadora incluye un medio de almacenamiento legible por computadora, legible por un circuito de procesamiento e instrucciones de almacenamiento para la ejecución por el circuito de procesamiento para realizar un método. El método incluye, por ejemplo, determinar, por un procesador, de la información proporcionada por una instrucción, uno o más registros seleccionados para ser guardados en el procesamiento transaccional, la instrucción para empezar la ejecución de una transacción, la transacción retrasa de manera efectiva el almacenamiento transaccional asignado a la memoria principal hasta la terminación de una transacción seleccionada, y uno o más registros seleccionados son menos que todos los registros utilizados por la transacción en la ejecución de la transacción; y guardar el contenido de uno o más registros seleccionados, basándose en la ejecución de la instrucción.
Los métodos y sistemas que se relacionan con una o más modalidades también se describen y reclaman en el presente documento. Además, los servicios que se relacionan con una o más modalidades también se describen y pueden reclamarse en el presente documento.
Se consiguen características y ventajas adicionales. Otras modalidades y aspectos se describen con detalle en el presente documento, y se consideran una parte de la invención reclamada.
BREVE DESCRIPCIÓN DE LAS VARIAS VISTAS DE LOS DIBUJOS Uno o más aspectos son indicados particularmente y reclamados claramente como ejemplos en las reivindicaciones en la conclusión de la especificación. Los anteriores y otros objetos, características y ventajas son evidentes de la siguiente descripción detallada, tomada en conjunto con los dibujos acompañantes, en los cuales: La Figura 1 describe una modalidad de un entorno de computación; La Figura 2A describe un ejemplo de una instrucción de Comienzo de la Transacción (TBEGIN); La Figura 2B describe una modalidad de los detalles adicionales del campo de la instrucción TBEGIN de la Figura 2A; La Figura 3A describe un ejemplo de una instrucción restringida de Comienzo de la Transacción (TBEGINC); La Figura 3B describe una modalidad de los detalles adicionales de un campo de la instrucción TBEGINC de la Figura 3A; La Figura 4 describe un ejemplo de una instrucción de Fin de la Transacción (TEND); La Figura 5 describe un ejemplo de una instrucción de Aborto de la Transacción (TABORT); La Figura 6 describe un ejemplo de transacciones anidadas La Figura 7 describe un ejemplo de una instrucción de ALMACENAMIENTO NO TRANSACCIONAL (NTSTG); La Figura 8 describe un ejemplo de una instrucción de EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN (ETND); La Figura 9 describe un ejemplo de un bloque de diagnóstico de la transacción; La Figura 10 describe razones ejemplares para abortar, junto con los códigos de aborto y códigos de condición asociados; La Figura 11 describe una modalidad del lógico asociado con la ejecución de la instrucción TBEGINC; La Figura 12 describe una modalidad del lógico asociado con la ejecución de una instrucción TBEGIN; Las Figuras 13A-13B describen modalidades del lógico asociado con guardar/restablecer los registros seleccionados en el procesamiento transaccional; Las Figuras 14A-14B describen un ejemplo de insertar un elemento de la fila en una lista doblemente vinculada de elementos de la fila; La Figura 15 describe una modalidad de un producto de programa de computadora; La Figura 16 describe una modalidad de un sistema de computador central; La Figura 17 describe un ejemplo adicional de un sistema de computadora; La Figura 18 describe otro ejemplo de un sistema de computadora que comprende una red de computadoras; La Figura 19 describe una modalidad de varios elementos de un sistema de computadora; La Figura 20A describe una modalidad de la unidad de ejecución del sistema de computadora de la Figura 19; La Figura 20B describe una modalidad de la unidad de bifurcación del sistema de computadora de la Figura 19; La Figura 20C describe una modalidad de la unidad de carga/almacenamiento del sistema de computadora de la Figura 19; y La Figura 21 describe una modalidad de un sistema de computadora central emulado.
DESCRIPCIÓN DETALLADA De acuerdo con un aspecto, se proporciona una instalación de ejecución transaccional (TX). Esta instalación proporciona el procesamiento transaccional para las instrucciones, y en una o más modalidades, ofrece diferentes modos de ejecución, como se describe a continuación, así como niveles anidados del procesamiento transaccional.
La instalación de ejecución transaccional introduce un estado de la CPU llamado el modo de ejecución transaccional (TX). Después del reinicio de la CPU, la CPU no está en el modo TX. La CPU entra al modo TX mediante una instrucción de COMIENZO DE LA TRANSACCIÓN. La CPU deja el modo TX ya sea mediante (a) una instrucción de FIN DE LA TRANSACCIÓN más externa (más detalles sobre interno y externo a continuación), o (b) la transacción es abortada. Mientras está en el modo TX, los accesos al almacenamiento por la CPU parecen ser un bloque concurrente como se observa por otras CPU y el subsistema 1/0. Los accesos al almacenamiento son ya sea (a) asignados para el almacenamiento cuando la transacción más externa termina sin aborto (es decir, por ejemplo, las actualizaciones hechas en cada memoria caché o memoria intermedia local a la CPU, se propagan y almacenan en la memoria real y son visibles para otras CPU), o (b) se descartan si la transacción es abortada.
Las transacciones pueden ser anidadas. Esto es, mientras la CPU está en el modo TX, puede ejecutar otra instrucción de COMIENZO DE LA TRANSACCIÓN. La instrucción que causa que la CPU entre al modo TX, se llama COMIENZO DE LA TRANSACCIÓN más externa; de manera similar, se dice que el programa está en la transacción más externa. Las ejecuciones posteriores de COMIENZO DE LA TRANSACCIÓN se llaman instrucciones internas; y el programa está ejecutando una transacción interna. El modelo proporciona una profundidad de anidación mínima y una profundidad de anidación máxima dependiente del modelo. Una instrucción de EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN regresa el valor de la profundidad de anidación actual, y en una modalidad adicional, puede regresar un valor de profundidad de anidación máxima. Esta téenica utiliza un modelo llamado "anidación aplanada", en el cual una condición de aborto en cualquier profundidad de anidación causa que todos los niveles de la transacción se aborten, y el control es regresado a la instrucción después de COMIENZO DE LA TRANSACCIÓN más externa.
Durante el procesamiento de una transacción, un modo de acceso transaccional por una CPU, se dice que está en conflicto con (a) un acceso transaccional o un acceso no transaccional hecho por otra CPU, o (b) un acceso no transaccional hecho por el subsistema I/O, si ambos accesos están en cualquier ubicación dentro de la misma línea de la memoria caché, y uno ambos de los accesos es un almacenamiento. En otras palabras, con el fin de que la ejecución transaccional sea productiva, la CPU no se observa haciendo accesos transaccionales hasta que se asigna. Este modelo de programación puede ser altamente efectivo en ciertos entornos; por ejemplo, la actualización de dos puntos en una lista doblemente vinculada de un millón de elementos. Sin embargo, puede ser menos efectivo, si hay mucha contención para las ubicaciones de almacenamiento que son accesadas transaccionalmente.
En un modelo de ejecución transaccional (referido en el presente documento como una transacción no restringida), cuando una transacción es abortada, el programa puede intentar redirigir la transacción con la esperanza de que la condición de aborto ya no esté presente, o el programa puede "retroceder" a una trayectoria no transaccional equivalente. En otro modelo de ejecución transaccional (referido en el presente documento como una transacción restringida), una transacción abortada es redirigida automáticamente por la CPU; en la ausencia de violaciones de la restricción, la transacción restringida es asegurada para la terminación eventual.
Cuando se inicia una transacción, el programa puede especificar varios controles, tales como (a) cuales registros generales son restablecidos a su contenido original si la transacción es abortada, (b) si la transacción es permitida para modificar el contexto de registro de punto flotante, incluyendo, por ejemplo, registros de puntos flotantes y el registro del control del punto flotante, (c) si la transacción es permitida para modificar los registros de acceso (AR), y (d) si ciertas condiciones de excepción del programa se van a bloquear para que no causen una interrupción. Si una transacción no restringida se aborta, pueden proporcionarse varias informaciones de diagnóstico. Por ejemplo, la instrucción TBEGIN más externa que inicia una transacción no restringida, puede designar un bloque de diagnóstico de la transacción (TDB) especificado por el programa. Además, el TDB en el área de prefijo de la CPU o designado por la descripción del estado de la computadora central, también puede utilizarse si la transacción es abortada debido a una interrupción del programa o a una condición que cause que termine la ejecución interpretativa, respectivamente.
Varios tipos de registros están indicados anteriormente. Éstos son explicados adicionalmente con detalle en el presente documento. Los registros generales pueden utilizarse como acumuladores en las operaciones aritméticas y lógicas generales. En una modalidad, cada registro contiene 64 posiciones de bits, y por lo tanto hay 16 registros generales. Los registros generales se identifican por los números 0-15, y son designados por un campo R de cuatro bits en una instrucción. Algunas instrucciones se proporcionan para direccionar múltiples registros generales teniendo varios campos R. Para algunas instrucciones, el uso de un registro general específico está implicado, más que designado de manera explícita por un campo R de la instrucción.
Además de su uso como acumuladores en las operaciones aritméticas y lógicas generales, 15 de los 16 registros generales también se utilizan como registros de dirección y de índice de base en la generación de la dirección. En estos casos, los registros son designados por 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 hay base o índice a ser aplicado, y por lo tanto, el registro general 0 no se va a designar como que contiene una dirección o índice de base.
Las instrucciones del punto flotante utilizan un conjunto de registros del punto flotante. La CPU tiene 16 registros del punto flotante, en una modalidad. Los registros del punto flotante se identifican por los números 0-15, y se designan mediante un campo R de cuatro bits en las instrucciones del punto flotante. Cada registro del punto flotante es de 64 bits de largo, y puede contener ya sea un operando de punto flotante corto (32 bits) o largo (64 bits).
Un registro del control del punto flotante (FPC) es un registro de 32 bits que contiene bits enmascarados, bits de bandera, un código de excepción de los datos, y bits del modo de redondeo, y se utiliza durante el procesamiento de las operaciones del punto flotante.
Además, en una modalidad, la CPU tiene 16 registros de control, cada uno que tiene 64 posiciones de bits. Las posiciones del bit en los registros están asignadas a instalaciones particulares en el sistema, tales como Registro de Eventos del Programa (PER) (discutido a continuación), y se utilizan ya sea para especificar que una operación puede tener lugar o para proporcionar información especial requerida por la instalación. En una modalidad, para la instalación transaccional, se utilizan CRO (bits 8 y 9) y CR2 (bits 61-63), como se describe a continuación.
La CPU tiene, por ejemplo, 16 registros de acceso numerados 0-15. Un registro de acceso consiste de 32 posiciones de bits que contienen una especificación indirecta de un elemento de control del espacio de la dirección (ASCE). Un elemento de control del espacio de la dirección es un parámetro utilizado por el mecanismo de la traducción dinámica de la dirección (DAT) para traducir las referencias a un espacio de la dirección correspondiente. Cuando la CPU está en un modo llamado el modo de registro de acceso (controlado por los bits en la palabra del estado del programa (PSW)), un campo B de la instrucción, utilizado para especificar una dirección lógica para una referencia del operando de almacenamiento, designa un registro de acceso, y el elemento de control del espacio de la dirección especificado por el registro de acceso se utiliza por DAT para la referencia que se hace. Para algunas instrucciones, se utiliza un campo R en lugar de un campo B. Las instrucciones se proporcionan para cargar y almacenar el contenido de los registros de acceso y para mover el contenido de un registro de acceso a otro.
Cada uno de los registros de acceso 1-15 puede designar cualquier espacio de la dirección. El registro de acceso 0 designa el espacio de la instrucción primaria. Cuando uno de los registros de acceso 1-15 se utiliza para designar un espacio de la dirección, la CPU determina cual espacio de la dirección es designado traduciendo el contenido del registro de acceso. Cuando el registro de acceso 0 se utiliza para designar un espacio de la dirección, la CPU trata al registro de acceso como que designa el espacio de la instrucción primaria, y no examina el contenido real del registro de acceso. Por lo tanto, los 16 registros de acceso pueden designar, en cualquier momento, el espacio de la instrucción primaria y un máximo de 15 otros espacios.
En una modalidad, hay múltiples tipos de espacios de la dirección. Un espacio de la dirección es una secuencia consecutiva de números enteros (direcciones virtuales), junto con los parámetros de transformación específicos que permiten que cada número se asocie con una ubicación del byte en el almacenamiento. La secuencia empieza en cero y procede de izquierda a derecha.
En, por ejemplo, la z/Architecture, cuando una dirección virtual se utiliza por una CPU para tener acceso al almacenamiento principal (también conocido como memoria principal), se convierte primero, por medio de la traducción dinámica de la dirección (DAT), a una dirección real, y a continuación, por medio del prefijado, a una dirección absoluta. La DAT puede utilizar de uno a cinco niveles de tablas (página, segmento, región tercera, región segunda y región primera) como los parámetros de transformación. La designación (origen y longitud) de la tabla del nivel más alto para un espacio de la dirección específico, se llama un elemento de control del espacio de la dirección, y se encuentra para utilizarse por la DAT en un registro de control o como se especifica por un registro de acceso. De manera alterna, el elemento de control del espacio de la dirección para un espacio de la dirección puede ser una designación del espacio real, que indica que DAT va a traducir la dirección virtual simplemente tratándola como una dirección real y sin utilizar ninguna tabla.
La DAT utiliza, en diferentes momentos, los elementos de control del espacio de la dirección en diferentes registros de control o especificados por los registros de acceso. La elección se determina por el modo de traducción especificado en la PSW 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 de inicio. Diferentes espacios de la dirección son tratables dependiendo del modo de traducción.
En cualquier instante cuando la CPU está en el modo del espacio primario o el modo del espacio secundario, la CPU puede traducir las direcciones virtuales que pertenecen a dos espacios de la dirección - el espacio de la dirección primaria y el espacio de la dirección secundaria. En cualquier instante cuando la CPU está en el modo de registro de acceso, puede traducir las direcciones virtuales de hasta 16 espacios de la dirección - el espacio de la dirección primaria y hasta 15 espacios de la dirección especificados por AR. En cualquier instante cuando la CPU está en el modo del espacio de inicio, puede traducir las direcciones virtuales del espacio de la dirección de inicio.
El espacio de la dirección primaria se identifica como tal debido a que consiste de las direcciones virtuales primarias, que se traducen por medio del elemento de control del espacio de la dirección primaria (ASCE). De manera similar, el espacio de la dirección secundaria consiste de las direcciones virtuales secundarias traducidas por medio de ASCE secundario; los espacios de la dirección especificados por AR consisten de direcciones virtuales especificadas por AR traducidas por medio de ASCE especificados por AR; y el espacio de la dirección de inicio consiste de la dirección virtual de inicio traducida por medio del ASCE de inicio. Los ASCE primarios y secundarios están en los registros de control 1 y 7, respectivamente. Los ASCE especificados por AR están en las entradas de la segunda tabla ASN que se localizan a través de un proceso llamado traducción del registro de acceso (ART) utilizando los registros de control 2, 5 y 8. El ASCE de inicio está en el registro de control 13.
Una modalidad de un entorno de computación para incorporar y utilizar uno o más aspectos de la instalación transaccional descrita en el presente documento, se describe con referencia a la Figura 1.
Refiriéndose a la Figura 1, en un ejemplo, el entorno de computación 100 se basa en la z/Architecture, ofrecida por International Business Machines (IBM°) Corporation, Armonk, Nueva York. La z/Architecture se describe en una Publicación de IBM titulada "z/Architecture -Principies of Operación", No. de Publicación SA22-7932-08, 9a Edición, Agosto del 2010.
Z/ARCHITECTURE, IBM y Z/OS y Z/VM (referidos a continuación) son marcas comerciales registradas de International Business Machines Corporation, Armonk, Nueva York. Otros nombres utilizados en el presente documento pueden ser marcas comerciales registradas, marcas comerciales o marcas de productos de International Business Machines Corporation u otras compañías.
Como un ejemplo, el entorno de computación 100 incluye un complejo del procesador central (CPC) 102 acoplado a uno o más dispositivos de entrada/salida (I/O) 106 vía una o más unidades de control 108. El complejo del procesador central 102 incluye, por ejemplo, uno o más procesadores centrales 110, una o más divisiones 112 (por ejemplo, divisiones lógicas (LP)), un hipervisor de la división lógica 114, y un subsistema de entrada/salida 115, cada uno de los cuales se describe a continuación.
Los procesadores centrales 110 son recursos de un procesador físico asignado a las divisiones lógicas. En particular, cada división lógica 112 tiene uno o más procesadores lógicos, cada uno de los cuales representa todos o una parte de un procesador físico 110 asignado a la división. Los procesadores lógicos de una división particular 112 pueden ser dedicados a la división, de manera que el recurso del procesador 110 subyacente se reserva para esa división; o compartirse con otra división, de manera que el recurso del procesador subyacente está potencialmente disponible para otra división.
Una división lógica funciona como un sistema separado y tiene una o más aplicaciones, y opcionalmente, un sistema operativo residente en la misma, que puede diferir para cada división lógica. En una modalidad, el sistema operativo es el sistema operativo z/OS, el sistema operativo z/VM, el sistema operativo z/Linux, o el sistema operativo TPF, ofrecidos por International Business Machines Corporation, Armonk, Nueva York. Las divisiones lógicas 112 son administradas por un hipervisor de la división lógica 114, que se implementa por las instrucciones fijas que corren en los procesadores 110. Como se utiliza en el presente documento, instrucciones fijas incluyen, por ejemplo, el microcódigo y/o milicódigo del procesador. Incluyen, por ejemplo, las instrucciones a nivel de elementos físicos y/o las estructuras de datos utilizadas en la implementación de un código de la máquina de nivel superior. En una modalidad, incluye, por ejemplo, un código patentado que es suministrado típicamente como un microcódigo que incluye un programa o microcódigo probado específico para los elementos físicos subyacentes y controla el acceso al sistema operativo a los elementos físicos del sistema.
Las divisiones lógicas y el hipervisor de la división lógica comprenden cada uno, uno o más programas que residen en las divisiones respectivas del almacenamiento central, asociado con los procesadores centrales. Un ejemplo del hipervisor de la división lógica 114 es el Recurso del Procesador/Administrador del Sistema (PR/SM), ofrecido por International Business Machines Corporation, Ar onk, Nueva York.
El subsistema de entrada/salida 115 dirige el flujo de información entre los dispositivos de entrada/salida 106 y el almacenamiento principal (también conocido como memoria principal). Se acopla al complejo del procesamiento central, que puede ser una parte del complejo del procesamiento central o separado del mismo. El subsistema 1/0 alivia a los procesadores centrales de la tarea de comunicarse directamente con los dispositivos de entrada/salida, y permite que el procesamiento de datos proceda de manera concurrente con el procesamiento de entrada/salida. Para proporcionar comunicaciones, el subsistema I/O emplea adaptadores de las comunicaciones I/O. Existen varios tipos de adaptadores de las comunicaciones, incluyendo, por ejemplo, canales, adaptadores 1/0, tarjetas PCI, tarjetas de Ethernet, tarjetas de Interconexión de Almacenamiento de una Computadora Pequeña (SCSI), etc. En el ejemplo particular descrito en el presente documento, los adaptadores de las comunicaciones 1/0 son canales, y por lo tanto, el subsistema 1/0 es referido aquí como un subsistema de canal. Sin embargo, esto es sólo un ejemplo. Pueden utilizarse otros tipos de subsistemas 1/0.
El subsistema 1/0 utiliza una o más trayectorias de entrada/salida como enlaces de comunicación en la administración del flujo de información a, o de los dispositivos de entrada/salida 106. En este ejemplo particular, estas trayectorias son llamadas trayectorias de canal, puesto que los adaptadores de la comunicación son canales.
El entorno de computación descrito anteriormente es sólo un ejemplo de un entorno de computación que puede utilizarse. Otros entornos, incluyendo de manera no exclusiva, entornos no divididos, otros entornos divididos, y/o entornos emulados, pueden utilizarse,· las modalidades no están limitadas a ninguno de estos entornos.
De acuerdo con uno o más aspectos, la instalación de ejecución transaccional es una mejora de la CPU que proporciona los medios mediante los cuales la CPU puede ejecutar una secuencia de instrucciones - conocida como una transacción - que puede acceder a múltiples ubicaciones de almacenamiento, incluyendo la actualización de aquellas ubicaciones. Como se observa por otras CPU y el subsistema 1/0, la transacción es ya sea (a) terminada en su totalidad como una sola operación atómica, o (b) abortada, dejando potencialmente ninguna evidencia de que se ejecutó alguna vez (excepto para ciertas condiciones descritas en el presente documento). Así, una transacción terminada de manera exitosa puede actualizar numerosas ubicaciones de almacenamiento sin que se necesite ningún bloqueo especial en el modelo de multiprocesamiento clásico.
La instalación de ejecución transaccional incluye, por ejemplo, uno o más controles; una o más instrucciones; procesamiento transaccional, incluyendo la ejecución restringida y no restringida; y procesamiento de aborto, cada uno de los cuales se describe además a continuación.
En una modalidad, tres controles de propósito especial, incluyendo una Palabra del Estado del Programa (PSW) para el aborto de la transacción, una dirección del bloque de diagnóstico de la transacción (TDB), y una profundidad de anidación de la transacción; cinco bits de registro del control; y seis instrucciones generales, incluyendo COMIENZO DE LA TRANSACCIÓN (restringida y no restringida), FIN DE LA TRANSACCIÓN, EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN, ABORTO DE LA TRANSACCIÓN, y ALMACENAMIENTO NO TRANSACCIONAL, se utilizan para controlar la instalación de ejecución transaccional. Cuando la instalación se instala, se instala, por ejemplo, en todas las CPU en la configuración. Una indicación de la instalación, el bit 73 en una implementación, cuando es uno, indica que la instalación de ejecución transaccional está instalada.
Cuando la instalación de ejecución transaccional está instalada, la configuración proporciona una instalación de ejecución transaccional no restringida, y opcionalmente, una instalación de ejecución transaccional restringida, cada una de las cuales se describe a continuación. Cuando las indicaciones de la instalación 50 y 73, como ejemplos, son ambas uno, la instalación de ejecución transaccional restringida se instala. Ambas indicaciones de la instalación se almacenan en la memoria en ubicaciones especificadas.
Como se utiliza en el presente documento, el nombre de la instrucción COMIENZO DE LA TRANSACCIÓN se refiere a las instrucciones que tienen el nemotéenico TBEGIN (Comienzo de la Transacción para una transacción no restringida) y TBEGINC (Comienzo de la Transacción para una transacción no restringida). Las discusiones que pertenecen a una instrucción específica se indican por el nombre de la instrucción, seguida por el nemotécnico en paréntesis o corchetes, o simplemente por el nemotécnico.
Una modalidad de un formato de una instrucción de COMIENZO DE LA TRANSACCIÓN (TBEGIN) se describe en las Figuras 2A-2B. Como un ejemplo, una instrucción TBEGIN 200 incluye un campo opcode 202 que incluye un opcode que especifica una operación no restringida de comienzo de la transacción; un campo de base (Bi) 204; un campo de desplazamiento (Di) 206; y un campo inmediato (I2) 208. Cuando el campo Bi no es cero, el contenido del registro general especificado por Bi 204 se agrega a D1206 para obtener la dirección del primer operando.
Cuando el campo B1 no es cero, se aplica lo siguiente: • Cuando la profundidad de anidación de la transacción es inicialmente cero, la dirección del primer operando designa la ubicación del bloque de diagnóstico de la transacción de 256 bytes, llamado el TDB especificado por TBEGIN (descrito además a continuación), en el cual varias informaciones de diagnóstico pueden almacenarse si la transacción es abortada. Cuando la CPU está en el modo del espacio primario o el modo del registro de acceso, la dirección del primer operando designa una ubicación en el espacio de la dirección primaria. Cuando la CPU está en el espacio secundario o en el modo del espacio de inicio, la dirección del primer operando designa una ubicación en el espacio secundario o de la dirección inicial, respectivamente. Cuando la DAT está apagada, la dirección (TBDA) del bloque de diagnóstico de la transacción (TDB) designa una ubicación en el almacenamiento real.
La accesibilidad del almacenamiento para el primer operando se determina. Si es accesible, la dirección lógica del operando se coloca en la dirección del bloque de diagnóstico de la transacción (TDBA), y la TDBA es válida.
• Cuando la CPU ya está en el modo de ejecución transaccional no restringida, la TDBA no se modifica, y no es predecible si el primer operando se prueba para la accesibilidad.
Cuando el campo Bi es cero, no se detectan excepciones de acceso para el primer operando, y para la instrucción TBEGIN más externa, la TDBA es inválida.
Los bits del campo I2 se definen como sigue, en un ejemplo: Máscara para Guardar el Registro General (GRSM) 210 (Figura 2B): Los bits 0-7 del campo 12 contienen la máscara para guardar el registro general (GRSM). Cada bit de la GRSM representa un par par-impar de registros generales, en donde el bit 0 representa los registros 0 y 1, el bit 1 representa los registros 2 y 3, y así sucesivamente. Cuando un bit en la GRSM de la instrucción TBEGIN más externa es cero, el par de registro correspondiente no se guarda. Cuando un bit en la GRSM de la instrucción TBEGIN más externa es uno, el par de registro correspondiente se guarda en una ubicación dependiente del modelo que no es directamente accesible por el programa.
Si la transacción se aborta, los pares de registro guardados se restablecen a su contenido cuando la instrucción TBEGIN más externa se ejecutó. El contenido de todos los otros registros generales (no guardados) no se restablece cuando una transacción se aborta.
La máscara para guardar el registro general se ignora en todas las TBEGIN, excepto para la más externa.
Permitir la Modificación AR (A) 212: El control A, bit 12 del campo I2, controla si la transacción está permitida para modificar un registro de acceso. El control de permitir la modificación AR efectivo es el AND del lógico y el control A en la instrucción TBEGIN para el nivel de anidación actual y para todos los niveles externos.
Si el control A efectivo es cero, la transacción se abortará con el código de aborto 11 (instrucción restringida), si se hace un intento de modificar cualquier registro de acceso. Si el control A efectivo es uno, la transacción no se abortará si un registro de acceso se modifica (cualquier otra condición de aborto ausente).
Permitir la Operación del Punto Flotante (F) 214: El control F, bit 13 del campo I2, controla si la transacción está permitida para ejecutar las instrucciones del punto flotante especificadas. El control de permitir la operación del punto flotante efectivo es el AND lógico y el control F en la instrucción TBEGIN para el nivel de anidación actual y para todos los niveles externos.
Si el control F efectivo es cero, entonces (a) la transacción se abortará con el código de aborto 11 (instrucción restringida) si se hace un intento de ejecutar una instrucción del punto flotante, y (b) el código de excepción de datos (DXC) en el byte 2 del registro de control del punto flotante (FPCR) no se establecerá por ninguna condición de excepción del programa de excepción de datos. Si el control F efectivo es uno, entonces (a) la transacción no se abortará si se hace un intento de ejecutar una instrucción del punto flotante (cualquier otra condición de aborto ausente), y (b) el DXC en el FPCR puede establecerse mediante una condición de excepción del programa de excepción de datos.
Control de Filtración de Interrupción del Programa (PIFC) 216: Los bits 14-15 del campo I2 son el control de filtración de interrupción del programa (PIFC). El PIFC controla si ciertas clases de condiciones de excepción del programa (por ejemplo, excepción del direccionamiento, excepción de los datos, excepción de operación, excepción de protección, etc.), que ocurren mientras la CPU está en el modo de ejecución transaccional, resultan en una interrupción.
El PIFC efectivo es el valor más alto del PIFC en la instrucción TBEGIN para el nivel de anidación actual y para todos los niveles externos. Cuando el PIFC efectivo es cero, todas las condiciones de excepción del programa resultan en una interrupción. Cuando el PIFC efectivo es uno, las condiciones de excepción del programa que tienen una clase de ejecución transaccional de 1 y 2, resultan en una interrupción. (Cada condición de excepción del programa está asignada a al menos una clase de ejecución transaccional, dependiendo de la severidad de la excepción. La severidad se basa en la probabilidad de recuperación durante una ejecución repetida de la ejecución transaccional, y si el sistema operativo necesita ver la interrupción). Cuando el PIFC efectivo es dos, las condiciones de excepción del programa que tienen una clase de ejecución transaccional de 1 resultan en una interrupción. Un PIFC de 3 se reserva.
Los bits 8-11 del campo I2 (bits 40-43 de la instrucción), se reservan y deben contener ceros; de otra manera, el programa puede no operar de manera compatible en el futuro.
Una modalidad de un formato de una instrucción restringida de Comienzo de la Transacción (TBEGINC) se describe con referencia a las Figuras 3A-3B. En un ejemplo, TBEGINC 300 incluye un campo opcode 302 que incluye un opcode que especifica una operación de comienzo de la transacción restringida; un campo de base (Bi) 304; un campo de desplazamiento (Di) 306; y un campo inmediato (I2) 308. El contenido del registro general especificado por Bx 304 se agrega a ?c 306 para obtener la dirección del primer operando. Sin embargo, con la instrucción de comienzo de la transacción restringida, la dirección del primer operando no se utiliza para tener acceso al almacenamiento. En su lugar, el campo Bi de la instrucción incluye cero; de otra manera, se reconoce una excepción de la especificación.
En una modalidad, el campo I2 incluye varios controles, un ejemplo de lo cual se describe en la Figura 3B.
Los bits del campo I2 se definen como sigue, en un ejemplo: Máscara para Guardar el Registro General (GRSM) 310: Los bits 0-7 del campo I2 contienen la máscara para guardar el registro general (GRSM). Cada bit de la GRSM representa un par par-impar de registros generales, en donde el bit 0 representa los registros 0 y 1, el bit 1 representa los registros 2 y 3, y así sucesivamente. Cuando un bit en la GRSM es cero, el par del registro correspondiente no se guarda. Cuando un bit en la GRSM es uno, el par del registro correspondiente se guarda en una ubicación dependiente del modelo, que no es directamente accesible por el programa.
Si la transacción se aborta, los pares de registros guardados se restablecen a su contenido cuando la instrucción de COMIENZO DE LA TRANSACCIÓN más externa se ejecuta. El contenido de todos los otros registros generales (no guardados), no se restablece cuando una transacción restringida se aborta.
Cuando TBEGINC se utiliza para continuar la ejecución en el modo de ejecución de la transacción no restringida, la máscara para guardar el registro general se ignora.
Permitir la Modificación AR (A) 312: El control A, bit 12 del campo I2, controla si la transacción está permitida para modificar un registro de acceso. El control de permitir modificación AR efectivo es el AND lógico y el control A en la instrucción TBEGINC para el nivel de anidación actual o para cualesquier instrucciones TBEGIN o TBEGINC externas.
Si el control A efectivo es cero, la transacción se abortará con el código de aborto 11 (instrucción restringida), si se hace un intento de modificar cualquier registro de acceso. Si el control A efectivo es uno, la transacción no se abortará si un registro de acceso se modifica (cualquier otra condición de aborto ausente).
Los bits 8-11 y 13-15 del campo I2 (bits 40-43 y 45-47 de la instrucción) se reservan y deben contener ceros.
El fin de una instrucción de Comienzo de la Transacción se especifica por una instrucción de FIN DE LA TRANSACCIÓN (TEND), un formato de la cual se describe en la Figura 4. Como un ejemplo, una instrucción TEND 400 incluye un campo opcode 402 que incluye un opcode que especifica una operación de fin de la transacción.
Varios términos se utilizan con respecto a la instalación de ejecución transaccional, y por lo tanto, solamente por conveniencia, se proporciona a continuación una lista de términos en orden alfabético. En una modalidad, estos términos tienen la siguiente definición: Aborto: Una transacción se aborta cuando termina antes de una instrucción FIN DE LA TRANSACCIÓN que resulta en una profundidad de anidación de la transacción de cero. Cuando una transacción se aborta, ocurre lo siguiente, en una modalidad: • Los accesos al almacenamiento transaccional hechos por cualquiera y todos los niveles de la transacción se descartan (esto es, no se realizan).
• Los accesos al almacenamiento no transaccionales hechos por cualquiera y todos los niveles de la transacción son realizados.
• Los registros designados por la máscara para guardar el registro general (GRSM) de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa se restablecen a su contenido antes de la ejecución transaccional (esto es, a su contenido a la ejecución de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa). Los registros generales no designados por la máscara para guardar el registro general de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa no se restablecen.
• Los registros de acceso, los registros del punto flotante y el registro de control del punto flotante no se restablecen. Cualesquier cambios hechos a estos registros durante la ejecución de la transacción son retenidos cuando la transacción se aborta.
Una transacción puede abortarse debido a una variedad de razones, incluyendo una ejecución intentada de una instrucción restringida, una modificación intentada de un recurso restringido, conflicto transaccional, exceder varios recursos de la CPU, cualquier condición de intercepción de la ejecución interpretativa, cualquier interrupción, una instrucción de ABORTO DE LA TRANSACCIÓN, y otras razones. Un código de aborto de la transacción proporciona razones específicas por lo que una transacción puede abortarse.
Un ejemplo de un formato de una instrucción ABORTO DE LA TRANSACCIÓN (TABORT) se describe con referencia a la Figura 5. Como un ejemplo, una instrucción TABORT 500 incluye un campo opcode 502 que incluye un opcode que especifica una operación de aborto de la transacción; un campo de base (B2) 504; y un campo de desplazamiento (D2) 506. Cuando el campo B2 no es cero, el contenido del registro general especificado por B2504 se agrega a D2506 para obtener una dirección del segundo operando; de otra manera, la dirección del segundo operando se forma únicamente del campo D2, y el campo B2 se ignora. La dirección del segundo operando no se utiliza para los datos de la dirección; en su lugar, la dirección forma el código de aborto de la transacción que se coloca en un bloque de diagnóstico de la transacción durante el procesamiento del aborto. El cómputo de la dirección para la dirección del segundo operando sigue las reglas de aritmética de la dirección: en el modo de direccionamiento de 24 bits, los bits 0-29 se establecen a ceros; en el modo de direccionamiento de 31 bits, los bits 0-32 se establecen a ceros.
Asignar: Con la terminación de una instrucción de FIN DE LA TRANSACCIÓN más externa, la CPU asigna los accesos del almacenamiento hechos por la transacción (es decir, la transacción más externa y cualesquier niveles anidados), de manera que están visibles para otras CPU y el subsistema I/O. Como se observa por otras CPU y por el subsistema 1/0, todos los accesos de buscar y almacenar hechos por todos los niveles anidados de la transacción, parecen ocurrir como una sola operación concurrente cuando ocurre la asignación.
El contenido de los registros generales, los registros de acceso, los registros del punto flotante y el registro de control del punto flotante, no se modifican por el proceso de asignación. Cualesquier cambios hechos a estos registros durante la ejecución transaccional se retienen cuando se asignan los almacenamientos de la transacción.
Conflicto: Un acceso transaccional hecho por una CPU tiene conflicto con, ya sea (a) un acceso transaccional o un acceso no transaccional hecho por otra CPU, o (b) el acceso no transaccional hecho por el subsistema 1/0, si ambos accesos están en alguna ubicación dentro de la misma línea de la memoria caché, y uno o más de estos accesos es un almacenamiento.
Un conflicto puede detectarse por una ejecución especulativa de la CPU de las instrucciones, aunque el conflicto pueda no detectarse en la secuencia conceptual.
Transacción Restringida: Una transacción restringida es una transacción que se ejecuta en el modo de ejecución transaccional restringido y está sometida a las siguientes limitaciones: • Está disponible un subconjunto de instrucciones generales.
• Puede ejecutarse un número limitado de instrucciones.
• Puede tenerse acceso a un número limitado de ubicaciones del operando de almacenamiento.
• La transacción está limitada a un nivel de anidación único.
En la ausencia de interrupciones repetidas o conflictos con otras CPU o el subsistema 1/0, una transacción restringida eventualmente se termina, por lo tanto, no se requiere una rutina de un manipulador del aborto. Las transacciones restringidas se describen con detalle a continuación.
Cuando una instrucción de COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC) se ejecuta mientras que la CPU ya está en el modo de ejecución de la transacción no restringida, la ejecución continúa como una transacción no restringida anidada.
Modo de Ejecución Transaccional Restringida: Cuando la profundidad de anidación de la transacción es cero, y una transacción es iniciada por una instrucción TBEGINC, la CPU entra al modo de ejecución transaccional restringida. Mientras la CPU está en el modo de ejecución transaccional restringida, la profundidad de anidación de la transacción es uno.
Transacción Anidada: Cuando la instrucción de COMIENZO DE LA TRANSACCIÓN se emite mientras la CPU está en el modo de ejecución transaccional no restringida, la transacción está anidada.
La instalación de ejecución transaccional utiliza un modelo llamado anidación aplanada. En el modo de anidación aplanada, los almacenamientos hechos por una transacción interna no son observables por otras CPU y por el subsistema 1/0 hasta que la transacción más externa asigna sus almacenamientos. De manera similar, si una transacción se aborta, todas las transacciones anidadas se abortan, y todos los almacenamientos transaccionales de todas las transacciones anidadas se descartan.
Un ejemplo de las transacciones anidadas se describe en la Figura 6. Como se muestra, una primera TBEGIN 600 empieza en la transacción más externa 601, TBEGIN 602 empieza una primera transacción anidada, y TBEGIN 604 empieza una segunda transacción anidada. En este ejemplo, TBEGIN 604 y TEND 606 definen una transacción más interna 608. Cuando TEND 610 se ejecuta, los almacenamientos transaccionales son asignados 612 para la transacción más externa y todas las transacciones internas.
Transacción No Restringida: Una transacción no restringida es una transacción que se ejecuta en el modo de ejecución transaccional no restringida. Aunque una transacción no restringida no está limitada en la forma que una transacción restringida, puede todavía ser abortada debido a una variedad de causas.
Modo de Ejecución Transaccional No Restringida: Cuando una transacción se inicia por la instrucción TBEGIN, la CPU entra al modo de ejecución transaccional no restringida. Mientras la CPU está en el modo de ejecución transaccional no restringida, la profundidad de anidación de la transacción puede variar de uno a la profundidad de anidación de la transacción máxima.
Acceso No Transaccional: Los accesos no transaccionales son accesos del operando del almacenamiento hechos por la CPU cuando no está en el modo de ejecución transaccional (esto es, los accesos de almacenamiento clásicos fuera de una transacción). Además, los accesos hechos por el subsistema I/O son accesos no transaccionales. Además, la instrucción de ALMACENA IENTO NO TRANSACCIONAL puede utilizarse para causar un acceso al almacenamiento no transaccional, mientras que la CPU esté en el modo de ejecución transaccional no restringida.
Una modalidad de un formato de una instrucción de ALMACENAMIENTO NO TRANSACCIONAL se describe con referencia a la Figura 7. Como un ejemplo, una instrucción de ALMACENAMIENTO NO TRANSACCIONAL 700 incluye una pluralidad de campos opcode 702a, 702b que especifican un opcode que designa una operación del almacenamiento no transaccional, un campo de registro (Ri) 704 que especifica un registro, el contenido del cual se llama el primer operando; un campo de índice (X2) 706; un campo de base (B2) 708; un primer campo de desplazamiento (DL2) 710; y un segundo campo de desplazamiento (DH2) 712. El contenido de los registros generales designados por los campos X2 y B2 se agregan al contenido de una concatenación de los contenidos de los campos de DH2 y DL2 para formar la dirección del segundo operando. Cuando cualquiera o ambos de los campos X2 o B2 son cero, el registro correspondiente no toma parte en la adición.
El primer operando de 64 bits se coloca de manera no transaccional sin cambio en la ubicación del segundo operando.
El desplazamiento, formado por la concatenación de los campos D¾ y DL2, se trata como un entero binario signado de 20 bits.
El segundo operando se va a alinear en un límite de la palabra doble; de otra manera, la excepción de la especificación se reconoce y la operación es suprimida.
Transacción Externa/Más Externa: Una transacción con una profundidad de anidación de la transacción con el número más bajo es una transacción externa. Una transacción con un valor de profundidad de anidación de la transacción de uno es la transacción más externa.
Una instrucción de COMIENZO DE LA TRANSACCIÓN más externa es una que se ejecuta cuando la profundidad de anidación de la transacción es inicialmente cero. Una instrucción de FIN DE LA TRANSACCIÓN más externa es una que causa que la profundidad de anidación de la transacción pase de uno a cero. Una transacción restringida es la transacción más externa, en esta modalidad.
Filtración de Interrupción del Programa: Cuando una transacción es abortada debido a ciertas condiciones de excepción del programa, el programa puede prevenir opcionalmente que ocurra la interrupción. Esta téenica se llama filtración de interrupción del programa. La filtración de interrupción del programa se somete a la clase transaccional de la interrupción, el control de filtración de interrupción del programa efectivo de la instrucción de COMIENZO DE LA TRANSACCIÓN, y la anulación de la filtración de interrupción del programa de la ejecución transaccional en el registro de control 0.
Transacción: Una transacción incluye los accesos del operando de almacenamiento hechos, y los registros generales seleccionados alterados, mientras que la CPU está en el modo de ejecución de la transacción. Para una transacción no restringida, los accesos del operando del almacenamiento pueden incluir tanto los accesos transaccionales como los accesos no transaccionales. Para una transacción restringida, los accesos del operando del almacenamiento están limitados a los accesos transaccionales. Como se observa por otra CPU y por el subsistema 1/0, todos los accesos del operando del almacenamiento hechos por la CPU mientras esté en el modo de ejecución de la transacción, parecen ocurrir como una sola operación concurrente. Si la transacción se aborta, los accesos del almacenamiento transaccional se descartan, y cualesquier registros designados por la máscara para guardar el registro general de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa, se restablecen a su contenido antes de la ejecución transaccional.
Accesos Transaccionales: Los accesos transaccionales son accesos del operando de almacenamiento hechos mientras la CPU esté en el modo de ejecución transaccional, con la excepción de los accesos hechos por la instrucción de ALMACENAMIENTO NO TRANSACCIONAL.
Modo de Ejecución Transaccional: El término modo de ejecución transaccional (también conocido como modo de ejecución de la transacción), describe la operación común de los modos de ejecución transaccional no restringida y restringida. Así, cuando se describe la operación, los términos no restringida y restringida se utilizan para calificar el modo de ejecución transaccional.
Cuando la profundidad de anidación de la transacción es cero, la CPU no está en el modo de ejecución transaccional (también llamado el modo de ejecución no transaccional).
Como se observa por la CPU, las búsquedas y almacenamientos hechos en el modo de ejecución transaccional no son diferentes de aquéllos hechos mientras no está en el modo de ejecución transaccional.
En una modalidad de la z/Architecture, la instalación de ejecución transaccional está bajo el control de los bits 8-9 del registro de control 0, los bits 61-63 del registro de control 2, la profundidad de anidación de la transacción, la dirección del bloque de diagnóstico de la transacción, y la palabra del estado del programa (PSW) para abortar la transacción.
Después de un reinicio inicial de la CPU, el contenido de las posiciones de bits 8-9 del registro de control 0, las posiciones del bit 62-63 del registro de control 2, y la profundidad de anidación de la transacción se establecen a cero. Cuando el control de ejecución transaccional, bit 8 del registro de control 0, es cero, la CPU no puede colocarse en el modo de ejecución transaccional.
Los detalles adicionales con respecto a los varios controles se describen a continuación.
Como se indicó, la instalación de ejecución transaccional es controlada por dos bits en el registro de control cero, y tres bits en el registro de control dos. Por ejemplo: Registro de Control de 0 Bits: Las asignaciones del bit son como sigue, en una modalidad: Control de Ejecución Transaccional (TXC): El bit 8 del registro de control cero es el control de ejecución transaccional. Este bit proporciona un mecanismo mediante el cual el programa de control (por ejemplo, sistema operativo) puede indicar si la instalación de ejecución transaccional es utilizable o no por el programa. El bit 8 es uno que va a entrar de manera exitosa al modo de ejecución transaccional.
Cuando el bit 8 del registro de control 0 es cero, la ejecución intentada de las instrucciones EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN, COMIENZO DE LA TRANSACCIÓN y FIN DE LA TRANSACCIÓN resulta en una ejecución de la operación especial.
Una modalidad de un formato de una instrucción de EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN se describe con referencia a la Figura 8. Como un ejemplo, una instrucción de EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN 800 incluye un campo opcode 802 que especifica un opcode que indica la operación de extraer la profundidad de anidación de la transacción; y un campo de registro Ri 804 que designa un registro general.
La profundidad de anidación de la transacción actual se coloca en los bits 48-63 del registro general Ri. Los bits 0-31 del registro permanecen sin cambio, y los bits 32-47 del registro se establecen a cero.
En una modalidad adicional, la profundidad máxima de anidación de la transacción también se coloca en el registro general Ri, tal como en los bits 16-31.
Anulación de la Filtración de Interrupción del Programa de Ejecución de la Transacción (PIFO): El bit 9 del registro de control cero es la anulación de la filtración de interrupción del programa de ejecución transaccional. Este bit proporciona un mecanismo mediante el cual el programa de control puede asegurar que cualquier condición de excepción del programa que ocurra mientras la CPU está en el modo de ejecución transaccional, resulte en una interrupción, sin importar el control de filtración de interrupción del programa efectivo especificado o implicado por la instrucción de COMIENZO DE LA TRANSACCIÓN.
Registro de Control de 2 Bits: Las asignaciones son como sigue, en una modalidad: Alcance del Diagnóstico de la Transacción (TDS): El bit 61 del registro de control 2 controla la aplicabilidad del control de diagnóstico de la transacción (TDC) en los bits 62-63 del registro, como sigue: TDS Valor Significado 0 El TDC se aplica sin importar si la CPU está en el estado de problema o de supervisor. 1 El TDC se aplica sólo cuando la CPU está en el estado de problema. Cuando la CPU está en el estado de supervisor, el procesamiento es como si el TDC contuviera un cero.
Control de Diagnóstico de la Transacción (TDC): Los bits 62-63 del registro de control 2 son un entero no signado de 2 bits que puede utilizarse para causar que las transacciones se aborten de manera aleatoria para propósitos de diagnóstico. La codificación del TDC es como sigue, en un ejemplo: TDC Valor Significado 0 Operación normal; las transacciones no se abortan como resultado del TDC. 1 Aborta cada transacción en una instrucción aleatoria, pero antes de la ejecución de la instrucción de FIN DE LA TRANSACCIÓN más externa. 2 Aborta las transacciones aleatorias en una instrucción aleatoria. 3 Reservado Cuando una transacción se aborta debido a un TDC que no es cero, entonces puede ocurrir cualquiera de lo siguiente: • El código de aborto se establece para cualesquiera de los códigos 7-11, 13-16 ó 255, con el valor del código elegido de manera aleatoria por la CPU; el código de la condición se establece de manera correspondiente al código de aborto. Los códigos de aborto se describen adicionalmente a continuación.
• Para una transacción no restringida, el código de la condición se establece a uno. En este caso, el código de aborto no es aplicable.
Depende del modelo si el TDC de valor 1 se implementa. Si no se implementa, un valor de 1 actúa como si se especificará 2.
Para una transacción restringida, un valor del TDC de 1 se trata como si se especificará un valor de TDC de 2.
Si se especifica un valor del TDC de 3, los resultados son impredecibles.
Dirección del Bloque de Diagnóstico de la Transacción (TDBA) Una dirección válida del bloque de diagnóstico de la transacción (TDBA) se establece para la dirección del primer operando de la instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN) más externa, cuando el campo Bc de la instrucción no es cero. Cuando la CPU está en el espacio primario o el modo de registro del acceso, la TDBA designa una ubicación en el espacio de la dirección primaria. Cuando la CPU está en el espacio secundario, o en el modo del espacio de inicio, la TDBA designa una ubicación en el espacio secundario o el espacio de la dirección de inicio, respectivamente. Cuando la DAT (Traducción Dinámica de la Dirección) está apagada, la TDBA designa una ubicación en el almacenamiento real.
La TDBA se utiliza por la CPU para ubicar el bloque de diagnóstico de la transacción - llamado el TDB específico de TBEGIN - si la transacción se aborta posteriormente. Los tres bits más a la derecha de la TDBA son cero, significando que el TDB especificado por TBEGIN está en el límite de la palabra doble.
Cuando el campo Bi de una instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN) más externa es cero, la dirección del bloque de diagnóstico transaccional es inválida, y ningún TDB especificado por TBEGIN se almacena si la transacción es abortada posteriormente.
PSW para Aborto de la Transacción (TAPSW) Durante la ejecución de la instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN) cuando la profundidad de anidación es inicialmente cero, la PSW para aborto de la transacción se establece al contenido de la PSW actual; y la dirección de la instrucción de la PSW para aborto de la transacción designa la siguiente instrucción secuencial (esto es, la instrucción que sigue a TBEGIN más externa). Durante la ejecución de la instrucción COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC), cuando la profundidad de anidación es inicialmente cero, la PSW para aborto de la transacción se establece al contenido de la PSW actual, excepto que la dirección de la instrucción de la PSW para aborto de la transacción designa la instrucción TBEGINC (más que la siguiente instrucción secuencial después de TBEGINC).
Cuando una transacción se aborta, el código de la condición en la PSW para aborto de la transacción se reemplaza con un código que indica la severidad de la condición de aborto. Posteriormente, si la transacción se abortó debido a causas que no resultan en una interrupción, la PSW se carga de la PSW para aborto de la transacción; si la transacción se abortó debido a causas que resultan en una interrupción, la PSW para aborto de la transacción se almacena como la PSW anterior de la interrupción.
La PSW para aborto de la transacción no se altera durante la ejecución de ninguna instrucción de COMIENZO DE LA TRANSACCIÓN interna.
Profundidad de Anidación de la Transacción (TND) La profundidad de anidación de la transacción es, por ejemplo, un valor no signado de 16 bits que se incrementa cada vez que una instrucción de COMIENZO DE LA TRANSACCIÓN se termina con el código de la condición 0 y disminuye cada vez que una instrucción FIN DE LA TRANSACCIÓN se termina. La profundidad de anidación de la transacción se reinicia a cero cuando una transacción se aborta o por el reinicio de la CPU.
En una modalidad, se implementa una TND máxima de 15.
En una implementación, cuando la CPU está en el modo de ejecución transaccional restringida, la profundidad de anidación de la transacción es uno. Además, aunque la TND máxima puede representarse como un valor de 4 bits, la TND se define como un valor de 16 bits para facilitar su inspección en el bloque de diagnóstico de la transacción.
Bloque de Diagnóstico de la Transacción (TDB) Cuando una transacción se aborta, varias informaciones del estado pueden guardarse en un bloque de diagnóstico de la transacción (TDB), como sigue: 1. TDB especificado por TBEGIN: Para una transacción no restringida, cuando el campo Bi de la instrucción TBEGIN más externa no es cero, la dirección del primer operando de la instrucción designa el TDB especificado por TBEGIN. Esta es una ubicación especificada del programa de la aplicación que puede examinarse por el manipulador del aborto. 2. TDB de Interrupción del Programa (PI): Si una transacción no restringida se aborta debido a una condición de excepción del programa no filtrada, o si una transacción restringida se aborta debido a cualquier condición de excepción del programa (esto es, cualquier condición que resulte en una interrupción del programa que se reconozca), el PI-TDB se almacena en las ubicaciones en el área del prefijo. Esto está disponible para el sistema operativo para inspeccionarlo y registrarlo en cualquier reporte del diagnóstico que pueda proporcionar. 3. TDB de la Intercepción: Si la transacción se aborta debido a cualquier condición de excepción del programa que resulte en la intercepción (esto es, la condición causa que termine una ejecución interpretativa y que el control regrese al programa central), un TDB se almacena en una ubicación especificada en el bloque de descripción del estado para el sistema operativo invitado.
El TDB especificado por TBEGIN se almacena únicamente, en una modalidad, cuando la dirección del TDB es válida (esto es, cuando el campo Bi de la instrucción TBEGIN más externa no es cero).
Para los abortos debido a las condiciones de excepción del programa no filtradas, sólo uno del PI-TDB o el TDB de la Intercepción se almacenará. Así, puede haber cero, uno o dos TDB almacenados para un aborto.
Los detalles adicionales con respecto a un ejemplo de cada uno de los TDB se describen a continuación: TDB especificado por TBEGIN: La ubicación de 256 bytes especificada por una dirección del bloque de diagnóstico de la transacción válida. Cuando la dirección del bloque de diagnóstico de la transacción es válida, el TDB especificado por TBEGIN se almacena en un aborto de la transacción. El TDB especificado por TBEGIN se somete a todos los mecanismos de protección del almacenamiento que estén vigor durante la ejecución de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa. Un evento de alteración del almacenamiento PER (Registro del Evento del Programa) para cualquier porción del TDB especificado por TBEGIN, se detecta durante la ejecución de TBEGIN más externa, no durante el procesamiento de aborto de la transacción.
Un propósito del PER es ayudar a depurar los programas. Permite que el programa se alerte para los siguientes tipos de eventos, como ejemplos: • Ejecución de una instrucción de bifurcación exitosa. Se proporciona la opción de tener un evento que ocurra sólo cuando la ubicación objetivo de la bifurcación esté dentro del área de almacenamiento designada.
• Búsqueda de una instrucción del área de almacenamiento designada.
• Alteración del contenido del área de almacenamiento designada. Se proporciona la opción de tener un evento que ocurra sólo cuando el área de almacenamiento esté dentro de los espacios de la dirección designados.
• Ejecución de una instrucción de ALMACENAR UTILIZANDO DIRECCIÓN REAL.
• Ejecución de la instrucción FIN DE LA TRANSACCIÓN.
El programa puede especificar de manera selectiva que uno o más de los tipos de eventos anteriores se reconozcan, excepto que el evento para ALMACENAR UTILIZANDO LA DIRECCIÓN REAL puede especificarse únicamente junto con el evento de alteración del almacenamiento. La información con respecto a un evento PER se proporciona al programa por medio de una interrupción del programa, con la causa de la interrupción siendo identificada en el código de la interrupción.
Cuando la dirección del bloque de diagnóstico de la transacción es válida, el TDB especificado por TBEGIN no se almacena.
TDB de Interrupción del Programa: Ubicaciones reales 6, 144-6, 399 (1800-18FF hex). El TDB de interrupción del programa se almacena cuando una transacción se aborta debido a una interrupción del programa. Cuando una transacción se aborta debido a otras causas, el contenido del TDB de interrupción del programa es impredecible.
El TDB de interrupción del programa no está sometido a ningún mecanismo de protección. Los eventos de alteración del almacenamiento PER no se detectan para el TDB de interrupción del programa cuando se almacena durante una interrupción del programa.
TDB de la Intercepción: La ubicación real central de 256 bytes especificadas por las ubicaciones 488-495 de la descripción del estado. El TDB de la intercepción se almacena cuando una transacción abortada resulta en la intercepción de la interrupción de un programa invitado (esto es, código de intercepción 8). Cuando una transacción se aborta debido a otras causas, el contenido del TDB de la intercepción es impredecible. El TDB de la intercepción no se somete a ningún mecanismo de protección.
Como se describe en la Figura 9, los campos de un bloque de diagnóstico de la transacción 900 son como sigue, en una modalidad: Formato 902: El byte 0 contiene una indicación de validez y del formato, como sigue: Valor Significado 0 Los campos restantes para el TDB son impredecibles. 1 Un TDB de formato 1, los campos restantes del cual se describen a continuación. 2-255 Reservado Un TDB en el cual el campo del formato es cero, es referido como un TDB nulo.
Banderas 904: El byte 1 contiene varias indicaciones, como sigue: Validez de la Prueba del Conflicto (CTV): Cuando una transacción se aborta debido a un conflicto de la búsqueda o el almacenamiento (esto es, códigos de aborto 9 ó 10 respectivamente), el bit 0 del byte 1 es la indicación de la validez de la prueba del conflicto. Cuando la indicación CTV es uno, la prueba del conflicto 910 en los bytes 16-23 del TDB, contiene la dirección lógica en la cual se detectó el conflicto. Cuando la indicación CTV es cero, los bytes 16-23 del TDB son impredecibles.
Cuando una transacción se aborta debido a cualquier razón diferente a un conflicto de búsqueda o de almacenamiento, el bit 0 del byte 1 se almacena como cero.
Indicación de la Transacción Restringida (CTI): Cuando la CPU está en el modo de ejecución transaccional restringida, el bit 1 del byte 1 se establece a uno. Cuando la CPU está en el modo de ejecución transaccional no restringida, el bit 1 del byte 1 se establece a cero.
Reservado: Los bits 2-7 del byte 1 están reservados, y se almacenan como ceros.
Profundidad de Anidación de la Transacción (TND) 906: Los bytes 6-7 contienen la profundidad de anidación de la transacción cuando la transacción se abortó.
Código de Aborto de la Transacción (TAC) 908: Los bytes 8-15 contienen un código de aborto de la transacción no signado de 64 bits. Cada punto del código indica una razón por lo que una transacción es abortada.
Depende del modelo si el código de aborto de la transacción se almacena en el TDB de interrupción del programa cuando una transacción es abortada debido a condiciones diferentes a una interrupción del programa.
Prueba del Conflicto 910: Para las transacciones que son abortadas debido a un conflicto de búsqueda o almacenamiento (esto es, códigos de aborto 9 y 10, respectivamente), los bytes 16-23 contienen la dirección lógica de la ubicación de almacenamiento en la cual se detectó el conflicto. La prueba del conflicto es significativa cuando el bit de CTV, bit 0 del byte 1, es uno.
Cuando el bit de la CTV es cero, los bytes 16-23 son impredecibles.
Debido a la ejecución especulativa por la CPU, la prueba del conflicto puede designar una ubicación de almacenamiento que no necesariamente sería accesada por la secuencia de ejecución conceptual de la transacción.
Dirección de la Instrucción de Transacción Abortada (ATI A) 912: Los bytes 24-31 contienen una dirección de la instrucción que identifica la instrucción que se estaba ejecutando cuando se detectó un aborto. Cuando una transacción se aborta debido a los códigos de aborto 2, 5, 6, 11, 13 ó 256 o superior, o cuando una transacción se aborta debido a los códigos de aborto 4 ó 13 y la condición de excepción del programa es nulificante, la ATIA indica directamente a la instrucción que se estaba ejecutando. Cuando una transacción se aborta debido a los códigos de aborto 4 ó 12, y la condición de excepción del programa no es nulificante, la ATIA indica más allá de la instrucción que se estaba ejecutando.
Cuando una transacción se aborta debido a los códigos de aborto 7-10, 14-16 ó 255, la ATIA no necesariamente indica la instrucción exacta que causó el aborto, pero puede indicar una instrucción anterior o posterior dentro de la transacción.
Si la transacción se aborta debido a una instrucción que es el objetivo de una instrucción del tipo ejecutar, la ATIA identifica la instrucción del tipo ejecutar, ya sea apuntando a la instrucción o más allá de la misma, dependiendo del código de aborto como se describió anteriormente. La ATIA no indica el objetivo de la instrucción del tipo ejecutar.
La ATIA se somete al modo de direccionamiento cuando la transacción se aborta. En el modo de direccionamiento de 24 bits, los bits 0-40 del campo contienen ceros. En el modo de direccionamiento de 31 bits, los 0-32 del campo contienen ceros.
Depende del modelo si la dirección de la instrucción de transacción abortada se almacena en el TDB de interrupción del programa cuando una transacción se aborta debido a condiciones diferentes a una interrupción del programa.
Cuando una transacción se aborta debido a un código de aborto 4 ó 12, y la condición de excepción del programa no es nulificante, la ATIA no indica a la instrucción que causa el aborto. Al sustraer el número de medias palabras indicadas por el código de longitud de la interrupción (ILC) de la ATIA, la instrucción que causa el aborto puede identificarse en condiciones que son supresoras o terminantes, o para los evento que no son PER que se están terminando. Cuando una transacción se aborta debido a un evento PER, y ninguna otra condición de excepción del programa está presente, la ATIA es impredecible.
Cuando la dirección del bloque de diagnóstico de la transacción es válida, el ILC puede examinarse en la identificación de la interrupción del programa (PHD) en los bytes 36-39 del TDB especificado por TBEGIN. Cuando la filtración no se aplica, el ILC puede examinarse en la PIID en la ubicación 140-143 en el almacenamiento real.
Identificación del Acceso de la Excepción (EAID) 914: Para las transacciones que son abortadas debido a ciertas condiciones de excepción del programa filtradas, el byte 32 del TDB especificado por TBEGIN contiene la identificación del acceso de la excepción. En un ejemplo de la z/Architecture, el formato de la EAID, y los casos para los cuales no se almacena, son los mismos que aquéllos descritos en la ubicación real 160, cuando la condición de excepción resulta en una interrupción, como se describió en los Principios de Operación incorporados como referencia anteriores.
Para las transacciones que son abortadas por otras razones, incluyendo cualesquier condiciones de excepción que resulten en una interrupción del programa, el byte 32 es impredecible. El byte 32 es impredecible en el TDB de interrupción del programa.
Este campo es almacenado únicamente en el TDB designado por la dirección del bloque de diagnóstico de la transacción; de otra manera, el campo está reservado. La EAID se almacena sólo para la lista de acceso controlada o protección de la DAT, tipo ASCE, traducción de la página, región de la primera traducción, región de la segunda traducción, región de la tercera traducción y condiciones de excepción del programa de traducción del segmento.
Código de Excepción de los Datos (DXC) 916: Para las transacciones que son abortadas debido a condiciones de excepción del programa de excepción de los datos filtrados, el byte 33 del TDB especificado por TBEGIN contiene el código de excepción de los datos. En un ejemplo de la z/Architecture, el formato de DXC, y los casos para los cuales se almacena, son los mismos que aquéllos descritos en la ubicación real 147, cuando la condición de excepción resulta en una interrupción, como se describió en los Principios de Operación incorporados como referencia anteriores. En un ejemplo, la ubicación 147 incluye el DXC.
Para las transacciones que son abortadas por otras razones, incluyendo cualesquier condiciones de excepción que resulten en una interrupción del programa, el byte 33 es impredecible. El byte 33 es impredecible en el TDB de interrupción del programa.
Este campo es almacenado únicamente en el TDB designado por la dirección del bloque de diagnóstico de la transacción; de otra manera, el campo está reservado. El DXC se almacena únicamente para las condiciones de excepción del programa de datos.
Identificación de Interrupción del Programa (PHD) 918: Para las que son abortadas debido a las condiciones de excepción del programa filtradas, los bytes 36-39 del TDB especificado por TBEGIN contienen la identificación de interrupción del programa. En un ejemplo de la z/Architecture, el formato de la PIID es el mismo que aquél descrito en las ubicaciones reales 140-143, cuando la condición resulta en una interrupción (como se describió en los Principios de Operación incorporados como referencia anteriores), excepto que el código de longitud de la instrucción en los bits 13-14 de la PIID es respectiva a la instrucción en la cual se detectó la condición de excepción.
Para las transacciones que son abortadas por otras razones, incluyendo las condiciones de excepción que resultan en una interrupción del programa, los bytes 36-39 son impredecibles. Los bytes 36-39 son impredecibles en el TDB de interrupción del programa.
Este campo es almacenado únicamente en el TDB designado por la dirección del bloque de diagnóstico de la transacción; de otra manera, el campo está reservado. La identificación de interrupción del programa sólo se almacena para las condiciones de excepción del programa.
Identificación de la Excepción de la Traducción (TEID) 920: Para las transacciones que son abortadas debido a cualquiera de las siguientes condiciones de excepción del programa filtradas, los bytes 40-47 del TDB especificado por TBEGIN contienen la identificación de la excepción de la traducción.
• Lista de acceso controlada o protección DAT • Tipo ASCE • Traducción de la página • Región de la primera traducción • Región de la segunda traducción • Región de la tercera traducción • Excepción de traducción del segmento En un ejemplo de la z/Architecture, el formato de la TEID es el mismo que aquél descrito en las ubicaciones reales 168-175, cuando la condición resulta en una interrupción, como se describió en los Principios de Operación incorporados como referencia anteriores.
Para las transacciones que son abortadas por otras razones, incluyendo las condiciones de excepción que resultan en una interrupción del programa, los bytes 40-47 son impredecibles. Los bytes 40-47 son impredecibles en el TDB de interrupción del programa.
Este campo es almacenado únicamente en el TDB designado por la dirección del bloque de diagnóstico de la transacción; de otra manera, el campo está reservado.
Dirección de Eventos de Ruptura 922: Para las transacciones que son abortadas debido a las condiciones de excepción del programa filtradas, los bytes 48-55 del TDB especificado por TBEGIN contienen la dirección de eventos de ruptura. En un ejemplo de la z/Architecture, el formato de la dirección de eventos de ruptura es el mismo que aquél descrito en las ubicaciones reales 272-279 cuando la condición resulta en una interrupción, como se describió en los Principios de Operación incorporados como referencia anteriores.
Para las transacciones que son abortadas por otras razones, incluyendo las condiciones de excepción que resultan en una interrupción del programa, los bytes 48-55 son impredecibles. Los bytes 48-55 son impredecibles en el TDB de interrupción del programa.
Este campo es almacenado únicamente en el TDB designado por la dirección del bloque de diagnóstico de la transacción; de otra manera, el campo está reservado.
Los detalles adicionales que se relacionan con los eventos de ruptura se describen a continuación.
En una modalidad de la z/Architecture, cuando la instalación PER-3 se instala, proporciona al programa con la dirección de la última instrucción para causar una ruptura en la ejecución secuencial de la CPU. El registro de la dirección del evento de ruptura puede utilizarse como un auxiliar de depuración para la detección de la bifurcación silvestre. Esta instalación proporciona, por ejemplo, un registro de 64 bits en la CPU, llamado el registro de la dirección del evento de ruptura. Cada vez que una instrucción diferente a ABORTO DE LA TRANSACCIÓN causa una ruptura en la ejecución de la instrucción secuencial (esto es, la dirección de la instrucción en la PSW se reemplaza, más que incrementarse por la longitud de la instrucción), la dirección de esa instrucción se coloca en el registro de la dirección del evento de ruptura. Cada vez que ocurre una interrupción del programa, ya sea o no que se indique el PER, el contenido actual del registro de la dirección del evento de ruptura se coloca en las ubicaciones de almacenamiento real 272-279.
Si la instrucción que causa el evento de ruptura es el objetivo de una instrucción del tipo ejecutar (EJECUTAR o EJECUCIÓN RELATIVAMENTE LARGA), entonces la dirección de la instrucción utilizada para buscar la instrucción del tipo ejecutar se coloca en el registro de la dirección del evento de ruptura.
En una modalidad de la z/Architecture, se considera que un evento de ruptura ocurre cada vez que una de las siguientes instrucciones causa bifurcación: BIFURCAR Y VINCULAR (BAL, BALR); BIFURCAR Y GUARDAR (BAS, BASR); BIFURCAR Y GUARDAR Y ESTABLECER MODO (BASSM); BIFURCAR Y ESTABLECER MODO (BSM); BIFURCAR Y APILAR (BAKR); BIFURCAR EN LA CONDICIÓN (BC, BCR); BIFURCAR EN LA CUENTA (BCT, BCTR, BCTG, BCTGR); BIFURCAR EN EL ÍNDICE ALTO (BXH, BXHG); BIFURCAR EN EL ÍNDICE BAJO O IGUAL (BXLE, BXLEG); BIFURCACIÓN RELATIVA EN LA CONDICIÓN (BRC); BIFURCACIÓN RELATIVA EN LA CONDICIÓN LARGA (BRCL); BIFURCACIÓN RELATIVA EN EL CONTEO (BRCT, BRCTG); BIFURCACIÓN RELATIVA EN EL ÍNDICE ALTO (BRXH, BRXHG); BIFURCACIÓN RELATIVA EN EL ÍNDICE BAJO O IGUAL (BRXLE, BRXLG); COMPARAR Y BIFURCAR (CRB, CGRB); COMPARACIÓN Y BIFURCACIÓN RELATIVA (CRJ, CGRJ); COMPARACIÓN INMEDIATA Y BIFURCACIÓN (CIB, CGIB); COMPARACIÓN INMEDIATA Y BIFURCACIÓN RELATIVA (CD, CGIJ); COMPARACIÓN LÓGICA Y BIFURCACIÓN (CLRB, CLGRB); COMPARACIÓN LÓGICA Y BIFURCACIÓN RELATIVA (CLRJ, CLGRJ); COMPARACIÓN LÓGICA INMEDIATA Y BIFURCACIÓN (CLIB, CLGIB); y COMPARACIÓN LÓGICA INMEDIATA Y BIFURCACIÓN RELATIVA (CLIJ, CLGIJ).
También se considera que ocurre un evento de ruptura cada vez que una de las siguientes instrucciones se termina: BIFURCAR Y ESTABLECER AUTORIDAD (BSA); BIFURCAR EN EL GRUPO DEL SUBESPACIO (BSG); BIFURCACIÓN RELATIVA Y GUARDAR (BRAS); BIFURCACIÓN RELATIVA Y GUARDADO LARGO (BRASL); PSW DE CARGA (LPSW); PSW DE CARGA EXTENDIDA (LPSWE); LLAMADA DEL PROGRAMA (PC); RETORNO DEL PROGRAMA (PR); TRANSFERENCIA DEL PROGRAMA (PT); TRANSFERENCIA DEL PROGRAMA CON EJEMPLO (PTI); REANUDAR PROGRAMA (RP); y TRAMPA (TRAP2, TRAP4).
No se considera que ocurra un evento de ruptura como resultado de que una transacción se aborte (ya sea de manera implícita o como resultado de la instrucción de ABORTO DE LA TRANSACCIÓN).
Información de Diagnóstico Dependiente del Modelo 924: Los bytes 112-127 contienen la información de diagnóstico dependiente del modelo.
Para todos los códigos de aborto excepto 12 (interrupción del programa filtradas), la información de diagnóstico dependiente del modelo se guarda en cada TDB que se almacena.
En una modalidad, la información de diagnóstico dependiente del modelo incluye lo siguiente: • Los bytes 112-119 contienen un vector de 64 bits llamado las indicaciones de bifurcación de la ejecución transaccional (TXBI). Cada uno de los primeros 63 bits del vector indica los resultados de ejecutar una instrucción de bifurcación, mientras que la CPU estaba en el modo de ejecución transaccional, como sigue: Valor Significado 0 La instrucción se terminó sin bifurcación. 1 La instrucción se terminó con bifurcación.
El bit 0 representa el resultado de la primera de tal instrucción de bifurcación, el bit 1 representa el resultado de la segunda instrucción, y así sucesivamente.
Si menos de 63 instrucciones de bifurcación se ejecutaron mientras la CPU estaba en el modo de ejecución transaccional, los bits más a la derecha que no corresponden a las instrucciones de bifurcación se establecen a cero (incluyendo el bit 63). Cuando más de las 63 instrucciones de bifurcación se ejecutaron, el bit 63 de la TXBI se establece a uno.
Los bits en la TXBI se establecen por las instrucciones que son capaces de causar un evento de ruptura, como se listó anteriormente, excepto por lo siguiente: Cualquier instrucción restringida que no causa que un bit se establezca en la TXBI.
Para las instrucciones de, por ejemplo, la z/Architecture, cuando el campo Mi de la instrucción BIFURCAR EN LA CONDICIÓN, BIFURCACIÓN RELATIVA EN LA CONDICIÓN o BIFURCACIÓN RELATIVA EN LA CONDICIÓN LARGA es cero, o cuando el campo R2 de las siguientes instrucciones es cero, depende del modelo si la ejecución de la instrucción causa que un bit se establezca en la TXBI.
• BIFURCAR Y VINCULAR (BALR); BIFURCAR Y GUARDAR (BASR); BIFURCAR Y GUARDAR Y ESTABLECER MODO (BASSM); BIFURCAR Y ESTABLECER MODO (BSM); BIFURCAR EN LA CONDICIÓN (BCR); y BIFURCAR EN LA CUENTA (BCTR, BCTGR) • Para las condiciones de aborto que fueron causadas por una excepción de acceso central, la posición del bit 0 del byte 127 se establece a uno. Para las otras condiciones de aborto, el bit de la posición 0 del byte 127 se establece a cero.
• Para las condiciones de aborto que se efectuar por la unidad de carga/almacenamiento (LSU), los cinco bits más a la derecha del byte 127 contienen una indicación de la causa. Para las condiciones de aborto que no se detectaron por la LSU, el byte 127 está reservado.
Registros Generales 930: Los bytes 128-255 contienen el contenido de los registros generales 0-15 al momento en que se abortó la transacción. Los registros se almacenan en orden ascendente, empezando con el registro general 0 en los bytes 128-135, el registro general 1 en los bytes 136-143, y así sucesivamente.
Reservado: Todos los otros campos están reservados. A menos que se indique de otra manera, el contenido de los campos reservados es impredecible.
Como se observa por otra CPU y el subsistema 1/0, el almacenamiento de los TDB durante un aborto de la transacción es una referencia de acceso múltiple que ocurre después de cualquier almacenamiento no transaccional.
Una transacción puede abortarse debido a causas que están fuera del alcance de la configuración inmediata en la cual se ejecuta. Por ejemplo, los eventos transitorios reconocidos por un hipervisor (tal como LPAR o z/VM), pueden causar que una transacción se aborte.
La información proporcionada en el bloque de diagnóstico de la transacción está pretendida para propósitos de diagnóstico, y es sustancialmente correcta. Sin embargo, debido a que un aborto puede haberse causado por un evento fuera del alcance de la configuración inmediata, la información tal como el código de aborto o la identificación de interrupción del programa pueden no reflejar de manera exacta las condiciones dentro de la configuración, y por lo tanto, no deben utilizarse para determinar la acción del programa.
Además de la información de diagnóstico guardada en el TDB, cuando una transacción es abortada debido a cualquier condición de excepción del programa de excepción de datos y tanto el control de registro AFP, bit 45 del registro de control 0, como el control de permitir la operación del punto flotante efectivo (F) son uno, el código de excepción de datos (DXC) se coloca en el byte 2 del registro del control del punto flotante (FPCR), sin importar si la filtración se aplica a la condición de excepción del programa. Cuando una transacción se aborta, y cualquiera o ambos del control de registro AFP o el control para permitir la operación del punto flotante efectivo son cero, el DXC no se coloca en el FPCR.
En una modalidad, como se indica en el presente documento, cuando la instalación de ejecución transaccional se instala, se proporcionan las siguientes instrucciones generales.
• EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCION • ALMACENAMIENTO NO TRANSACCIONAL • ABORTO DE LA TRANSACCIÓN • COMIENZO DE LA TRANSACCIÓN • FIN DE LA TRANSACCIÓN Cuando la CPU está en el modo de ejecución transaccional, la ejecución intentada de ciertas instrucciones está restringida, y causa que la transacción se aborte.
Cuando se emite en el modo de ejecución transaccional restringida, la ejecución intentada de las instrucciones restringidas, puede también resultar en una interrupción del programa que restringe la transacción, o puede resultar en un procedimiento de ejecución como si la transacción no fuera restringida.
En un ejemplo de la z/Architecture, las instrucciones restringidas incluyen, como ejemplos, las siguientes instrucciones no privilegiadas: COMPARAR E INTERCAMBIAR Y ALMACENAR; MODIFICAR LOS CONTROLES DE INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN; REALIZAR OPERACIÓN BLOQUEADA; DATOS DE PREBÚSQUEDA (RELATIVAMENTE LARGOS), cuando el código en el campo M1 es 6 ó 7; ALMACENAR CARACTERES BAJO MÁSCARA ALTA, cuando el campo M3 es cero y el código en el campo Ri es 6 ó 7; LISTA DE LA INSTALACIÓN DEL ALMACENAMIENTO EXTENDIDA; ALMACENAR LOS CONTROLES DE INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN; LLAMADA DEL SUPERVISOR; y PROBAR LOS CONTROLES DE LA INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN.
En la lista anterior, COMPARAR E INTERCAMBIAR Y ALMACENAR y REALIZAR OPERACIÓN BLOQUEADA son instrucciones complejas que pueden implementarse de manera más eficiente mediante el uso de instrucciones básicas en el modo TX. Los casos para DATOS DE PREBÚSQUEDA y DATOS DE PREBÚSQUEDA RELATIVAMENTE LARGOS son restringidos puesto que los códigos de 6 y 7 liberan una línea de la memoria caché, necesitando que los datos se asignen potencialmente antes de la terminación de una transacción. LLAMADA DEL SUPERVISOR está restringida puesto que causa una interrupción (que causa que una transacción se aborte).
Bajo las condiciones listadas a continuación, las siguientes instrucciones están restringidas: • BIFURCAR Y VINCULAR (BALR), BIFURCAR Y GUARDAR (BASR), y BIFURCAR Y GUARDAR Y ESTABLECER MODO, cuando el campo R2 de la instrucción no es cero y el rastreo de la bifurcación está habilitado.
• BIFURCAR Y GUARDAR Y ESTABLECER MODO y BIFURCAR Y ESTABLECER MODO, cuando el campo R2 no es cero y el modo de rastreo está habilitado; ESTABLECER MODO DE DIRECCIONAMIENTO, cuando el modo de rastreo está habilitado.
• LLAMADA DEL MONITOR, cuando una condición de evento del monitor se reconoce.
La lista anterior incluye instrucciones que pueden formar entradas de rastreo. Si se permitiera que estas instrucciones se ejecuten transaccionalmente y formen entradas de rastreo, y la transacción se abortara posteriormente, el puntero de la tabla de rastreo en el registro de control 12 avanzaría, pero los almacenamientos en la tabla de rastreo se descartarían. Esto dejaría un hueco inconsistente en la tabla de rastreo; así, las instrucciones están restringidas en los casos en donde formarían entradas de rastreo Cuando la CPU está en el modo de ejecución transaccional, depende del modelo si las siguientes instrucciones están restringidas: CIFRAR MENSAJE; CIFRAR MENSAJE CON CFB; CIFRAR MENSAJE CON ENCADENAMIENTO; CIFRAR MENSAJE CON CONTADOR; CIFRAR MENSAJE CON OFB; LLAMADA DE COMPRESIÓN; CALCULAR RESUMEN DEL MENSAJE INTERMEDIO; CALCULAR ÚLTIMO RESUMEN DEL MENSAJE; CALCULAR EL CÓDIGO DE AUTENTIFICACIÓN DEL MENSAJE; CONVERTIR EL UNICÓDIGO 16 AL UNICÓDIGO 32; CONVERTIR EL UNICÓDIGO 16 AL UNICÓDIGO 8; CONVERTIR EL UNICÓDIGO 32 AL UNICÓDIGO 16; CONVERTIR EL UNICÓDIGO 32 AL UNICÓDIGO 8; CONVERTIR EL UNICÓDIGO 8 AL UNICÓDIGO 16; CONVERTIR EL UNICÓDIGO 8 AL UNICÓDIGO 32; REALIZAR CÁLCULO CRIPTOGRÁFICO; INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN APAGADA; e INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN ENCENDIDA.
Cada una de las instrucciones anteriores está implementada actualmente por el coprocesador de elementos físicos, o ha estado en máquinas pasadas, y por lo tanto, se consideran restringidas.
Cuando el control de permitir la modificación AR (A) efectivo es cero, las siguientes instrucciones están restringidas: COPIAR ACCESO; CARGAR MÚLTIPLES ACCESOS; CARGAR DIRECCIÓN EXTENDIDA; y ESTABLECER ACCESO.
Cada una de las instrucciones anteriores causa que el contenido de un registro de acceso se modifique. Si el control A en la instrucción de COMIENZO DE LA TRANSACCIÓN es cero, entonces el programa ha indicado de manera explícita que la modificación del registro de acceso no se permitirá.
Cuando el control de permitir la operación del punto flotante (F) efectivo es cero, las instrucciones del punto flotante están restringidas.
Bajo ciertas circunstancias, las siguientes instrucciones pueden restringirse: EXTRAER TIEMPO DE LA CPU; EXTRAER PSW; RELOJ DE ALMACENAMIENTO; RELOJ DE ALMACENAMIENTO EXTENDIDO; y RELOJ DE ALMACENA IENTO RÁPIDO.
Cada una de las instrucciones anteriores está sometida a un control de intercepción en la descripción del estado de ejecución interpretativo. Si el hipervisor ha establecido el control de intercepción para estas instrucciones, entonces su ejecución puede prolongarse debido a la implementación del hipervisor; así, se consideran restringidas si ocurre una intercepción.
Cuando una transacción no restringida se aborta debido a la ejecución intentada de una instrucción restringida, el código de aborto de la transacción en el bloque de diagnóstico de la transacción se establece a 11 (instrucción restringida), y el código de la condición se establece a 3, excepto como sigue: cuando una transacción no restringida se aborta debido a una ejecución intentada de una instrucción que de otra manera resultaría en una excepción de una operación privilegiada, es impredecible si el código de aborto se establece a 11 (instrucción restringida) o 4 (interrupción del programa no filtrada que resulta del reconocimiento de la interrupción del programa de la operación privilegiada). Cuando una transacción no restringida se aborta debido a una ejecución intentada de DATOS DE PREBÚSQUEDA (RELATIVAMENTE LARGOS) cuando el código en el campo Mx es 6 ó 7 o ALMACENAR CARACTERES BAJO MÁSCARA ALTA cuando el campo M3 es cero y el código en el campo Ri es 6 ó 7, es impredecible si el código de aborto se establece a 11 (instrucción restringida) o 16 (otra memoria caché). Cuando una transacción no restringida se aborta debido a una ejecución intentada de LLAMADA DEL MONITOR, y tanto la condición de evento del monitor como una condición de excepción de la especificación están presentes, es impredecible si el código de aborto se establece a 11 ó 4, o, si la interrupción del programa se filtra, 12.
Las instrucciones adicionales pueden restringirse en una transacción restringida. Aunque estas instrucciones no están definidas actualmente para estar restringidas en una transacción no restringida, pueden restringirse bajo ciertas circunstancias en una transacción no restringida en procesadores futuros.
Ciertas instrucciones restringidas pueden permitirse en el modo de ejecución transaccional en procesadores futuros. Por lo tanto, el programa no debe depender de la transacción que está siendo abortada debido a la ejecución intentada de una instrucción restringida. La instrucción de ABORTO DE LA TRANSACCIÓN debe utilizarse para causar de manera confiable que una transacción se aborte.
En una transacción no restringida, el programa debería proporcionar una trayectoria alterna del código no transaccional para acomodar una transacción que se aborta debido a una instrucción restringida.
En operación, cuando la profundidad de anidación de la transacción es cero, la ejecución de la instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN) resulta en un código de la condición cero que causa que la CPU entre al modo de ejecución transaccional no restringida. Cuando la profundidad de anidación de la transacción es cero, la ejecución de la instrucción COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC) que resulta en un código de la condición cero, causa que la CPU entre al modo de ejecución transaccional restringida.
Excepto en donde se indique de manera explícita de otra manera, todas las reglas que se aplican para la ejecución no transaccional, también se aplican para la ejecución transaccional. A continuación están características adicionales del procesamiento mientras que la CPU está en el modo de ejecución transaccional.
Cuando la CPU está en el modo de ejecución transaccional no restringida, la ejecución de la instrucción de COMIENZO DE LA TRANSACCIÓN que resulta en un código de la condición cero, causa que la CPU permanezca en el modo de ejecución transaccional no restringida.
Como se observa por la CPU, las búsquedas y almacenamientos hechos en el modo de ejecución de la transacción no son diferentes que aquéllos hechos mientras que no se está en el modo de ejecución transaccional. Como se observa por otras CPU y por el subsistema 1/0, todos los accesos del operando de almacenamiento hechos mientras que la CPU está en el modo de ejecución transaccional, parecen ser un solo bloque de acceso concurrente. Esto es, los accesos para todos los bytes dentro de una media palabra, palabra, palabra doble o palabra cuádruple, se especifican para aparecer como un bloque concurrente como se observa por otras CPU y programas 1/0 (por ejemplo, canal). La media palabra, palabra, palabra doble o palabra cuádruple es referida en esta sección como un bloque. Cuando una referencia del tipo búsqueda se especifica para que aparezca para ser concurrente dentro de un bloque, no se permite un acceso de almacenamiento al bloque por otra CPU o programa 1/0 durante el tiempo en que los bytes contenidos en el bloque son buscados. Cuando una referencia del tipo almacenamiento se especifica para que aparezca como concurrente dentro de un bloque, no se permite acceso al bloque, ya sea búsqueda o almacenamiento, por otra CPU o programa I/O durante el tiempo en que los bytes dentro del bloque están siendo almacenados.
Los accesos de almacenamiento para las instrucciones y para las búsquedas de la tabla DAT y ART (Tabla de Registro de Acceso) siguen las reglas no transaccionales.
La CPU deja el modo de ejecución transaccional normalmente por medio de una instrucción de FIN DE LA TRANSACCIÓN que causa que la profundidad de anidación de la transacción transite a cero, caso en el cual, la transacción se termina.
Cuando la CPU deja el modo de ejecución transaccional por medio de la terminación de una instrucción de FIN DE LA TRANSACCIÓN, todos los almacenamientos hechos mientras se está en el modo de ejecución transaccional son asignados; esto es, los almacenamientos parecen ocurrir como una operación concurrente de un solo bloque como se observa por otras CPU y por el subsistema I/O.
Una transacción puede abortarse de manera implícita por una variedad de causas, o puede abortarse de manera explícita mediante la instrucción de ABORTO DE LA TRANSACCIÓN. Las causas posibles ejemplares de un aborto de la transacción, el código de aborto correspondiente y el código de la condición que se coloca en la PSW para aborto de la transacción se describen a continuación.
Interrupción Externa: El código de aborto de la transacción se establece a 2, y el código de la condición en la PSW para aborto de la transacción se establece a 2. La PSW para aborto de la transacción se almacena como la PSW anterior externa como una parte del procesamiento de la interrupción externo.
Interrupción del Programa (No Filtrada): Una condición de excepción del programa que resulta en una interrupción (esto es, una condición no filtrada) causa que la transacción se aborte con el código 4. El código de la condición en la PSW para aborto de la transacción se establece específico para el código de interrupción del programa. La PSW para aborto de la transacción se almacena como la PSW anterior del programa como parte del procesamiento de interrupción del programa.
Una instrucción que de otra manera resultaría en una transacción siendo abortada debido a una excepción de operación, puede proporcionar resultados alternos: para una transacción no restringida, la transacción puede en su lugar, abortar con el código de aborto 11 (instrucción restringida); para una transacción restringida, una interrupción del programa para restringir la transacción puede reconocerse en lugar de la excepción de la operación.
Cuando un evento PER (Registro de Evento del Programa) se reconoce en conjunto con cualquier otra condición de excepción del programa no filtrada, el código de la condición se establece a 3.
Interrupción de Verificación de la Máquina: El código de aborto de la transacción se establece a 5, y el código de la condición en la PSW para aborto de la transacción se establece a 2. La PSW para aborto de la transacción se almacena como la PSW anterior de verificación de la máquina, como parte de un procesamiento de interrupción de verificación de la máquina.
Interrupción 1/0: El código de aborto de la transacción se establece a 6, y el código de la condición en la PSW para aborto de la transacción se establece a 2. La PSW para aborto de la transacción se almacena como la PSW anterior 1/0 como parte del procesamiento de interrupción l/O.
Exceso de Búsqueda: Una condición de exceso de búsqueda se detecta cuando la transacción intenta buscar más ubicaciones que las que la CPU soporta. El código de aborto de la transacción se establece a 7, y el código de la condición se establece a 2 ó 3.
Exceso de Almacenamiento: Una condición de exceso de almacenamiento se detecta cuando la transacción intenta almacenar en más ubicaciones que las que la CPU soporta. El código de aborto de la transacción se establece a 8, y el código de la condición se establece a 2 ó 3.
El permitir que el código de la condición sea 2 ó 3 en respuesta a un aborto por exceso de búsqueda o almacenamiento, permite que la CPU indique las situaciones potencialmente reintentables (por ejemplo, el código de la condición 2 indica que la reejecución de la transacción puede ser productiva; mientras que el código de la condición 3 no recomienda la reejecución).
Conflicto de Búsqueda: Una condición de conflicto de búsqueda se detecta cuando otra CPU o el subsistema 1/0 intenta almacenar en una ubicación que se ha buscado transaccionalmente por esta CPU. El código de aborto de la transacción se establece a 9, y el código de la condición se establece a 2.
Conflicto de Almacenamiento: Una condición de conflicto de almacenamiento se detecta cuando otra CPU o el subsistema 1/0 intenta tener acceso a una ubicación que se ha almacenado durante la ejecución transaccional por esta CPU. El código de aborto de la transacción se establece a 10, y el código de la condición se establece a 2.
Instrucción Restringida: Cuando la CPU está en el modo de ejecución transaccional, la ejecución intentada de una instrucción restringida causa que la transacción se aborte. El código de aborto de la transacción se establece a 11, y el código de la condición se establece a 3.
Cuando la CPU está en el modo de ejecución transaccional restringida, es impredecible si la ejecución intentada de una instrucción restringida resulta en una interrupción del programa para restringir la transacción, o un aborto debido a una instrucción restringida. La transacción es todavía abortada, pero el código de aborto puede indicar cualquier causa.
Condición de Excepción del Programa (Filtrada): Una condición de excepción del programa que no resulta en una interrupción (esto es, una condición filtrada), causa que la transacción se aborte con un código de aborto de la transacción de 12. El código de la condición se establece a 3.
Profundidad de Anidación Excedida: La condición de profundidad de anidación excedida se detecta cuando la profundidad de anidación de la transacción está al valor máximo permisible para la configuración, y se ejecuta una instrucción de COMIENZO DE LA TRANSACCIÓN. La transacción se aborta con un código de aborto de la transacción de 13, y el código de la condición se establece a 3.
Condición Relacionada con la Búsqueda en la Memoria Caché: Una condición relacionada con las ubicaciones de almacenamiento buscadas por la transacción se detecta por la circuítería de la memoria caché de la CPU. La transacción se aborta con un código de aborto de la transacción de 14, y el código de la condición se establece a 2 ó 3.
Condición Relacionada con el Almacenamiento en la Memoria Caché: Una condición relacionada con las ubicaciones de almacenamiento almacenadas por la transacción se detecta por la circuítería de la memoria caché de la CPU. La transacción se aborta con un código de aborto de la transacción de 15, y el código de la condición se establece a 2 ó 3.
Condición de Otra Memoria Caché: Una condición de otra memoria caché se detecta por la circuitería de la memoria caché de la CPU. La transacción se aborta con un código de aborto de la transacción de 16, y el código de la condición se establece a 2 ó 3.
Durante la ejecución transaccional, si la CPU tiene acceso a instrucciones u operandos de almacenamiento utilizando diferentes direcciones lógicas que se asignen a la misma dirección absoluta, depende del modelo si la transacción se aborta. Si la transacción es abortada debido a los accesos que utilizan diferentes direcciones lógicas asignadas a la misma dirección absoluta, el código de aborto 14, 15 ó 16 se establece, dependiendo de la condición.
Condición Miscelánea: Una condición miscelánea es cualquier otra condición reconocida por la CPU que cause que la transacción se aborte. El código de aborto de la transacción se establece a 255 y el código de la condición se establece a 2 ó 3.
Cuando múltiples configuraciones se están ejecutando en la misma máquina (por ejemplo, divisiones lógicas o máquinas virtuales), una transacción puede abortarse debido a una verificación de la máquina externa o interrupción 1/0 que ocurre en una configuración diferente.
Aunque los ejemplos se proporcionan anteriormente, pueden proporcionarse otras causas de un aborto de la transacción con códigos de aborto y códigos de condición correspondientes. Por ejemplo, una causa puede ser una Interrupción de Reinicio, en la cual el código de aborto de la transacción se establece a l, y el código de la condición en la PSW para aborto de la transacción se establece a 2. La PSW para aborto de la transacción se almacena como la PSW anterior al reinicio como parte del procesamiento del reinicio. Como un ejemplo adicional, una causa puede ser una condición de Llamada del Supervisor, en la cual el código de aborto se establece a 3, y el código de la condición en la PSW para aborto de la transacción se establece a 3. También son posibles otros o diferentes ejemplos.
Notas: 1. La condición miscelánea puede resultar de cualquiera de lo siguiente: • Instrucciones, tales como, en la z/Architecture, COMPARAR Y REEMPLAZAR ENTRADA DE TABLA DAT, COMPARAR E INTERCAMBIAR Y PURGAR, INVALIDAR ENTRADA DE TABLA DAT, INVALIDAR ENTRADA DE TABLA DE PÁGINA, REALIZAR FUNCIÓN DE MANEJO DEL MARCO, en las cuales el control NQ es cero y el control SK es uno, ESTABLECER ALMACENAMIENTO CLAVE EXTENDIDO, en el cual el control NQ es cero, realizado por otra CPU en la configuración; el código de la condición se establece a 2.
• Una función del operador, tal como restablecer, reiniciar o detener, o la orden de PROCESADOR DE LA SEÑAL equivalente se realiza en la CPU.
• Cualquier otra condición no numerada anteriormente; el código de la condición se establece a 2 ó 3. 2. La ubicación en la cual se detectan los conflictos de búsqueda y almacenamiento puede ser cualquier lugar dentro de la misma línea de la memoria caché. 3. Bajo ciertas condiciones, la CPU puede no ser capaz de distinguir entre condiciones de aborto similares. Por ejemplo, un exceso de búsqueda o almacenamiento puede ser indistinguible de un conflicto de búsqueda o almacenamiento respectivo. 4. La ejecución especulativa de múltiples trayectorias de instrucciones por la CPU, puede resultar en una transacción que es abortada debido a condiciones de conflicto o exceso, incluso si tales condiciones no ocurren en la secuencia conceptual. Mientras está en el modo de ejecución transaccional restringida, la CPU puede inhibir temporalmente la ejecución especulativa, permitiendo que la transacción intente terminarse sin detectar tales conflictos o excesos de manera especulativa.
La ejecución de una instrucción de ABORTO DE LA TRANSACCIÓN causa que la transacción se aborte. El código para abortar la transacción se establece de una dirección del segundo operando. El código de la condición se establece a 2 ó 3, dependiendo si el bit 63 de la dirección del segundo operando es cero o uno, respectivamente.
La Figura 10 resume códigos de aborto ejemplares almacenados en un bloque de diagnóstico de la transacción, y el código de la condición (CC) correspondiente. La descripción en la Figura 10 ilustra una implementación particular. Otras implementaciones y codificaciones de valores son posibles.
En una modalidad como se mencionó anteriormente, la instalación transaccional proporciona transacciones restringidas y transacciones no restringidas, así como el procesamiento asociada con las mismas. Inicialmente, se discuten las transacciones restringidas, y a continuación las transacciones no restringidas.
Una transacción restringida se ejecuta en el modo transaccional sin una trayectoria de retroceso. Es un modo de procesamiento útil para funciones compactas. En la ausencia de interrupciones o conflictos repetidos con otras CPU o el subsistema I/O (es decir, causadas por condiciones que no permitirán que la transacción se termine de manera exitosa), una transacción restringida se terminará eventualmente; así, no se requiere una rutina del manipulador del aborto y no se especifica. Por ejemplo, en la ausencia de violación de una condición que no puede tratarse (por ejemplo, dividir entre 0); una condición que no permita que la transacción se termine (por ejemplo, una interrupción del temporizador que no permite que una instrucción corra; un I/O caliente; etc.); o una violación de una restricción o limitación asociada con una transacción restringida, la transacción se terminará eventualmente.
Una transacción restringida se inicia por una instrucción de COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC), cuando la profundidad de anidación de la transacción es inicialmente cero. Una transacción restringida está sometida a las siguientes restricciones, en una modalidad. 1. La transacción ejecuta no más de 32 instrucciones, sin incluir las instrucciones COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC) y FIN DE LA TRANSACCIÓN. 2. Todas las instrucciones en la transacción deben de estar dentro de los 256 bytes contiguos de almacenamiento, incluyendo las instrucciones COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC) y cualquier FIN DE LA TRANSACCIÓN. 3. Además de las instrucciones restringidas, las siguientes restricciones se aplican a una transacción restringida. a. Las instrucciones están limitadas a aquéllas referidas como Instrucciones Generales, incluyendo, por ejemplo, sumar, restar, multiplicar, dividir, cambiar, girar, etc. b. Las instrucciones de bifurcación están limitadas a lo siguiente (las instrucciones listadas son de la z/Architecture en un ejemplo): • BIFURCACIÓN RELATIVA EN LA CONDICIÓN en la cual Mi no es cero y el campo RI2 contiene un valor positivo.
• BIFURCACIÓN RELATIVA EN LA CONDICIÓN LARGA en la cual el campo Mi no es cero, y el campo RI2 contiene un valor positivo que no causa una dirección envolvente.
• COMPARACIÓN Y BIFURCACIÓN RELATIVA, COMPARACIÓN INMEDIATA Y BIFURCACIÓN RELATIVA, COMPARACIÓN LÓGICA Y BIFURCACIÓN RELATIVA, y COMPARACIÓN LÓGICA INMEDIATA Y BIFURCACIÓN RELATIVA en la cual el campo M3 no es cero, y el campo RI4 contiene un valor positivo. (Esto es, sólo las bifurcaciones delanteras con máscaras de bifurcación que no son cero). c. Excepto por FIN DE LA TRANSACCIÓN y las instrucciones que causan una serialización del operando especificado, las instrucciones que causan una función de serialización están restringidas. d. Las operaciones de almacenamiento y almacenamiento (SS-), y operaciones de almacenamiento y almacenamiento con instrucciones de opcode extendidas (SSE-), están restringidas. e. Todas las siguientes instrucciones generales (que son de la z/Architecture en este ejemplo), están restringidas: SUMA DE COMPROBACIÓN; CIFRAR MENSAJE; CIFRAR MENSAJE CON CFB; CIFRAR MENSAJE CON ENCADENAMIENTO; CIFRAR MENSAJE CON CONTADOR; CIFRAR MENSAJE CON OFB; COMPARAR Y FORMAR PALABRA DEL CÓDIGO; COMPARACIÓN LÓGICA LARGA; COMPARACIÓN LÓGICA LARGA EXTENDIDA; COMPARACIÓN LÓGICA LARGA DEL UNICÓDIGO; COMPARACIÓN LÓGICA DE LA SERIE; COMPARACIÓN HASTA QUE LA SUBSERIE SEA IGUAL; LLAMADA DE COMPRESIÓN; CALCULAR RESUMEN DEL MENSAJE INTERMEDIO; CALCULAR ÚLTIMO RESUMEN DEL MENSAJE; CALCULAR EL CÓDIGO DE AUTENTIFICACIÓN DEL MENSAJE; CONVERTIR A BINARIO; CONVERTIR A DECIMAL; CONVERTIR EL UNICÓDIGO 16 AL UNICÓDIGO 32; CONVERTIR EL UNICÓDIGO 16 AL UNICÓDIGO 8; CONVERTIR EL UNICÓDIGO 32 AL UNICÓDIGO 16; CONVERTIR EL UNICÓDIGO 32 AL UNICÓDIGO 8; CONVERTIR EL UNICÓDIGO 8 AL UNICÓDIGO 16; CONVERTIR EL UNICÓDIGO 8 AL UNICÓDIGO 32; DIVISIÓN; DIVISIÓN LÓGICA; DIVISIÓN ÚNICA; EJECUTAR; EJECUCIÓN RELATIVAMENTE LARGA; EXTRAER ATRIBUTO DE LA MEMORIA CACHE; EXTRAER TIEMPO DE LA CPU; EXTRAER PSW; EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN; CARGAR Y SUMAR; CARGAR Y SUMA LÓGICA; CARGAR Y AND; CARGAR AND EXCLUSIVO OR; CARGAR AND OR; CARGAR PAR DESAGRUPADO; CARGAR PAR DE LA PALABRA CUÁDRUPLE; LLAMADA DEL MONITOR; MOVIMIENTO LARGO; MOVIMIENTO LARGO EXTENDIDO; MOVER UNICÓDIGO LARGO; MOVER SERIE; ALMACENA IENTO NO TRANSACCIONAL; REALIZAR CÁLCULO CRIPTOGRÁFICO; DATOS DE PREBÚSQUEDA; DATOS DE PREBÚSQUEDA RELATIVAMENTE LARGOS; EMITIR INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN; INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN SIGUIENTE; INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN APAGADA; INSTRUMENTACIÓN DEL TIEMPO DE EJECUCIÓN ENCENDIDA; BUSCAR SERIE; BUSCAR; UNICÓDIGO DE LA SERIE; ESTABLECER MODO DE DIRECCIONAMIENTO; ALMACENAR CARACTERES BAJO MÁSCARA ALTA, cuando el campo M3 es cero, y el código en el campo Ri es 6 ó 7; RELOJ DE ALMACENAMIENTO; RELOJ DE ALMACENAMIENTO EXTENDIDO; RELOJ DE ALMACENAMIENTO RÁPIDO; LISTA DE LA INSTALACIÓN DEL ALMACENAMIENTO EXTENDIDA; ALMACENAR PAR A LA PALABRA CUÁDRUPLE; PROBAR EL MODO DE DIRECCIONAMIENTO; ABORTO DE LA TRANSACCIÓN; COMIENZO DE LA TRANSACCIÓN (tanto TBEGIN como TBEGINC); TRADUCIR Y PRUEBA EXTENDIDA; TRADUCIR Y PRUEBA INVERSA EXTENDIDA; TRADUCCIÓN EXTENDIDA; TRADUCIR UNO A UNO; TRADUCIR UNO A DOS TRADUCIR DOS A UNO; y TRADUCIR DOS A DOS. 4. Los operandos de almacenamiento de la transacción no accesan a más de cuatro octopalabras. Nota: CARGAR EN LA CONDICIÓN y ALMACENAR EN LA CONDICIÓN se consideran como almacenamiento de referencia sin importar el código de la condición. Una octopalabra es, por ejemplo, un grupo de 32 bytes consecutivos en un límite de 32 bytes. 5. La transacción que se ejecuta en esta CPU, o que se almacena por otra CPU o el subsistema I/O, no accede a los operandos de almacenamiento en ningún bloque de 4 K-bytes que contengan los 256 bytes del almacenamiento que empiece con la instrucción COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC). 6. La transacción no accede a las instrucciones u operandos de almacenamiento utilizando diferentes direcciones lógicas que se corresponden con la misma dirección absoluta. 7. Las referencias del operando hechas por la transacción deben estar dentro de una palabra doble única, excepto para CARGAR MÚLTIPLES ACCESOS, CARGA MÚLTIPLE, CARGA MÚLTIPLE ALTA, ALMACENAR ACCESO MÚLTIPLE, ALMACENAMIENTO MÚLTIPLE, y ALMACENAMIENTO MÚLTIPLE ALTO, las referencias del operando están dentro de una sola octopalabra.
Si la transacción restringida viola cualquiera de las restricciones 1-7, listadas anteriormente, entonces (a) se reconoce una interrupción del programa de restricción de la transacción, o (b) la ejecución procede como si la transacción no estuviera restringida, excepto que la violación de la descripción adicional puede todavía resultar en una interrupción del programa para restringir la transacción. Es impredecible cual acción se toma, y la acción tomada puede diferir basándose en cual restricción se viola.
En la ausencia de violaciones de la restricción, interrupciones repetidas o conflictos con otras CPU o el subsistema 1/0, una transacción restringida terminará eventualmente, como se describió anteriormente. 1. La probabilidad de terminar de manera exitosa una transacción restringida, mejora si la transacción cumple con los siguientes criterios: a. Las instrucciones emitidas son menores que el máximo de 32. b. Las referencias del operando de almacenamiento son menores que el máximo de 4 octopalabras. c. Las referencias del operando de almacenamiento están en la misma línea de la memoria caché. d. Las referencias del operando de almacenamiento a las mismas ubicaciones ocurre en el mismo orden por todas las transacciones. 2. No se asegura necesariamente que una transacción restringida termine de manera exitosa en su primera ejecución. Sin embargo, si una transacción restringida no viola ninguna de las restricciones listadas se aborta, la CPU emplea la circuitería para asegurar que una ejecución repetida de la transacción sea exitosa posteriormente. 3. Dentro de una transacción restringida, COMIENZO DE LA TRANSACCIÓN es una instrucción restringida, por lo tanto, una transacción restringida no puede anidarse. 4. La violación de cualquiera de las restricciones 1-7 anteriores mediante una transacción restringida, puede resultar en un bucle del programa. 5. Las limitaciones de una transacción restringida son similares a aquéllas de un ciclo comparar e intercambiar. Debido a la interferencia potencial de otras CPU y el subsistema I/O, no hay una seguridad arquitectónica de que una instrucción COMPARAR E INTERCAMBIAR se terminará alguna vez con el código de la condición 0. Una transacción restringida puede sufrir de interferencia similar en la forma de abortos por conflicto de búsqueda o almacenamiento o interrupciones calientes.
La CPU emplea algoritmos de imparcialidad para asegurar que en la ausencia de cualesquier violaciones de las restricciones, una transacción restringida se terminará eventualmente. 6. Con el fin de determinar el número de iteraciones repetidas requeridas para terminar una transacción restringida, el programa puede emplear un contador en un registro general que no se someta a la máscara para guardar el registro general. Un ejemplo se muestra a continuación.
LH1 15,0 Contador de reentrada cero.
Bucle TBEGINC 0(0),X'FE00' Conservar GR 0-13 AHI 15,1 Contador incrementado ... Código de ejecución transaccional restringida TEND Fin de la transacción.
* R15 contiene ahora el conteo de intentos transaccionales repetidos.
Nótese que ambos registros 14 y 15 no se restablecen en este ejemplo. También nótese que en los mismos modelos, el conteo en el registro general 15 puede ser bajo si la CPU detecta la condición de aborto después de la terminación de la instrucción TBEGINC, pero antes de la terminación de la instrucción AHI.
Como se observa por la CPU, las búsquedas de almacenamiento hechas en el modo de ejecución transaccional no son diferentes de aquéllas hechas mientras no se está en el modo de ejecución transaccional.
En una modalidad, el usuario (es decir, el que crea la transacción), selecciona si una transacción va a estar restringida o no. Una modalidad del lógico asociado con el procesamiento de las transacciones restringidas y, en particular, el procesamiento asociado con una instrucción TBEGINC, se describe con referencia a la Figura 11. La ejecución de la instrucción TBEGINC causa que la CPU entre al modo de ejecución transaccional restringida o permanezca en un modo de ejecución no restringida. La CPU (es decir, el procesador que ejecuta TBEGINC realiza el lógico de la Figura 11.
Refiriéndose a la Figura 11, basándose en la ejecución de una instrucción TBEGINC, se realiza una función de serialización, PASO 1100. Una función u operación de serialización incluye terminar todos los accesos del almacenamiento previos conceptualmente (y, para la z/Architecture, como un ejemplo, el bit de referencia relacionado y los ajustes del bit de cambio) por la CPU, como se observa por otras CPU y por el subsistema I/O, antes de que ocurran los accesos de almacenamiento subsiguientes conceptualmente (y el bit de referencia relacionado y los ajustes del bit de cambio). La serialización afecta la secuencia de todos los accesos de la CPU al almacenamiento y a las claves de almacenamiento, excepto para aquéllas asociadas con la búsqueda de la entrada de la tabla ART y la entrada de la tabla DAT.
Como se observa por una CPU en el modo de ejecución transaccional, la serialización opera normalmente (como se describió anteriormente). Como se observa por otras CPU y por el subsistema I/O, una operación de serialización realizada mientras una CPU está en el modo de ejecución transaccional ocurre cuando la CPU deja el modo de ejecución transaccional, ya sea como resultado de una instrucción de FIN DE LA TRANSACCIÓN que disminuye la profundidad de anidación de la transacción a cero (terminación normal), o como resultado de la transacción siendo abortada.
Posterior a la realización de la serialización, se hace una determinación de si se reconoce una excepción, PREGUNTA 1102. Si es así, la excepción es manejada, PASO 1104. Por ejemplo, una excepción de operación especial se reconoce y la operación es suprimida si el control de ejecución transaccional, bit 8 del registro de control 0, es 0. Como ejemplos adicionales, una excepción de la especificación se reconoce y la operación es suprimida, si el campo Bi, bits 16-19 de la instrucción, no es cero; una excepción de ejecutar se reconoce y la operación es suprimida, si la TBEGINC es el objetivo de una instrucción del tipo ejecutar; y una excepción de operación se reconoce y la operación es suprimida, si la instalación de ejecución transaccional no se instala en la configuración. Si la CPU está ya en el modo de ejecución de la transacción restringida, entonces una excepción del programa de excepción de la transacción restringida se reconoce, y la operación se suprime. Además, si la profundidad de anidación de la transacción, cuando se incrementa por 1, excede una profundidad de anidación de la transacción máxima dependiente del modelo, la transacción se aborta con el código de aborto 13. Otras o diferentes excepciones pueden reconocerse y manejarse.
Sin embargo, si no hay una excepción, entonces se hace una determinación para si la profundidad de anidación de la transacción es cero, PREGUNTA 1106. Si la profundidad de anidación de la transacción es cero, entonces la dirección del bloque de diagnóstico de la transacción se considera como inválida, PASO 1108; la PSW para aborto de la transacción se establece del contenido de la PSW actual, excepto que la dirección de la instrucción de la PSW para aborto de la transacción designa la instrucción TBEGINC, más que la siguiente instrucción secuencial, PASO 1110; y el contenido de los pares del registro general designados por la máscara para guardar el registro general se guardan en una ubicación dependiente del modelo, que no es directamente accesible por el programa, PASO 1112. Además, la profundidad de anidación se establece a 1, PASO 1114. Además, el valor efectivo de la operación para permitir el punto flotante (F) y los controles de filtración de interrupción del programa (PIFC) se establecen a cero, PASO 1116. Además, el valor efectivo del control de permitir la modificación AR (A), bit 12 del campo I2 de la instrucción, se determina, PASO 1118. Por ejemplo, el control A efectivo es el lógico AND del control A en la instrucción TBEGINC para el nivel actual y para cualesquier instrucciones TBEGIN externas.
Regresando a la PREGUNTA 1106, si la profundidad de anidación de la transacción es mayor que cero, entonces la profundidad de anidación se incrementa por 1, PASO 1120. Además, el valor efectivo de la operación de permitir el punto flotante (F) se establece a cero, y el valor efectivo del control de filtración de interrupción del programa (PIFC) no cambia, PASO 1122. El procesamiento continúa entonces con el PASO 1118. En una modalidad, un inicio exitoso de la transacción resulta en el código de la condición 0. Esto concluye una modalidad del lógico asociado con la ejecución de una instrucción TBEGINC.
En una modalidad, la verificación de la excepción proporcionada anteriormente puede ocurrir en un orden variable. Un orden particular para verificar la excepción es como sigue: Las excepciones con la misma prioridad que la prioridad de las condiciones de interrupción del programa para el caso general.
Excepción de la especificación debido al campo B que contiene un valor que no es cero.
Aborto debido a una profundidad de anidación de la transacción excedida.
Código de la condición 0 debido a una terminación normal.
Además, lo siguiente se aplica en una o más modalidades: 1. Los registros designados para guardarse por la máscara para guardar el registro general sólo se restablecen si la transacción se aborta, no cuando la transacción termina normalmente por medio de FIN DE LA TRANSACCIÓN. Únicamente los registros designados por la GRSM de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa se restablecen con el aborto.
El campo I2 debe designar todos los pares de registro que proporcionan valores de entrada que son cambiados por una transacción restringida. Así, si la transacción se aborta, los valores del registro de entrada se restablecerán a su contenido original cuando la transacción restringida se reejecuta. 2. En la mayoría de los modelos, puede realizarse un desempeño mejorado, tanto en el COMIENZO DE LA TRANSACCIÓN como cuando una transacción se aborta, especificando el número mínimo de registros necesarios para guardarse y restablecerse en la máscara para guardar el registro general. 3. Lo siguiente ilustra los resultados de la instrucción de COMIENZO DE LA TRANSACCIÓN (tanto TBEGIN como TBEGINC), basándose en la profundidad de anidación de la transacción (TND) actual, y cuando la TND no es cero, ya sea que la CPU esté en el modo de ejecución transaccional no restringida o restringida: Instrucción TND=0 TBEGIN Entrar al modo de ejecución transaccional no restringida TBEGINC Entrar al modo de ejecución transaccional restringida Instrucción TND>0 TBEGIN Modo NTX Modo CTX Continúa en el modo Excepción de la de ejecución transacción transaccional no restringida restringida TBEGINC Continúa en el modo Excepción de la de ejecución transacción transaccional no restringida restringida Explicación: CTX La CPU está en el modo de ejecución transaccional restringida NTX La CPU está en el modo de ejecución transaccional no restringida TND La profundidad de anidación de la transacción al inicio de la instrucción.
Como se describe en el presente documento, en un aspecto, se asegura la terminación de una transacción restringida, suponiendo que no contiene una condición que la haga incapaz de terminarse. Para asegurar que se termina, el procesador (por ejemplo, CPU) que ejecuta la transacción, puede llevar a cabo ciertas acciones. Por ejemplo, si una transacción restringida tiene una condición de aborto, la CPU puede temporalmente: (a) inhibir la ejecución fuera de orden; (b) inhibir otras CPU que accesen a las ubicaciones de almacenamiento con conflicto; (c) inducir retrasos aleatorios en el procesamiento del aborto; y/o (d) invocar otras medidas para facilitar la terminación exitosa.
Para resumir, el procesamiento de una transacción restringida es como sigue: • Si ya está en el modo TX restringida, se reconoce una excepción de la transacción restringida.
• Si la TND (Profundidad de Anidación de la Transacción) actual > 0, la ejecución procede como si fuera una transacción no restringida o Control F efectivo establecido a cero o PIFC efectivo no cambia o Permite que una TX no restringida externa llame una función de servicio que puede o no utilizar la TX restringida.
• Si la TND actual = 0: o La dirección del bloque de diagnóstico de la transacción es inválida No hay un TDB especificado por la instrucción almacenado en el aborto o La PSW para abortar la transacción se establece para la dirección de TBEGINC No la siguiente instrucción secuencial o Los pares de registros generales designados por la GRSM guardados en una ubicación dependiente del modelo no accesible por el programa o Prueba de la transacción formada opcionalmente (del operando D2). La prueba de la transacción es un identificador de la transacción. Puede ser igual a la dirección del operando del almacenamiento u otro valor.
• A Efectivo = TBEGINC A y cualquier A externo • TND incrementada o Si la TND pasa de 0 a 1, la CPU entra al modo de TX restringida o De otra manera, la CPU permanece en el modo de TX no restringida • La instrucción se termina con CCO • Excepciones: o Excepción de la especificación (PIC (Código de Interrupción del Programa) 0006) si el campo Bc no es cero o Excepción de la operación especial (PIC 0013 hex) si el control de ejecución de la transacción (CR0.8) es cero o Excepción de restricción de la transacción (PIC 0018 hex) si se emite en el modo TX restringida o Excepción de operación (PIC 0001) si la instalación de la ejecución transaccional restringida no está instalada o Excepción de ejecución (PIC 0003) si la instrucción es el objetivo de una instrucción del tipo ejecutar o Código de aborto 13 si la profundidad de anidación se excede • Condiciones de aborto en una transacción restringida: o La PSW de aborto indica la instrucción TBEGINC No la instrucción que le sigue La instrucción de aborto causa que TX sea redirigida Sin trayectoria de falla o La CPU toma medidas especiales para asegurar la terminación exitosa con el redireccionamiento o Suponiendo que no hay un conflicto persistente, interrupción o violación restringida, se asegura la determinación eventual de la transacción.
• Violación de la restricción: o Pie 0018 hex - indica la violación de la restricción de la transacción o O, la transacción corre como si no fuera restringida Como se describió anteriormente, además del procesamiento de la transacción restringida, que es opcional, en una modalidad, la instalación transaccional tambien proporciona el procesamiento de la transacción no restringida. Los detalles adicionales con respecto al procesamiento de las transacciones no restringidas y, en particular, el procesamiento asociado con la instrucción TBEGIN se describen con referencia a la Figura 12. La ejecución de la instrucción TBEGIN causa que la CPU entre o permanezca en el modo de ejecución transaccional no restringida. La CPU (es decir, el procesador) que ejecuta TBEGIN, realiza el lógico de la Figura 12.
Refiriéndose a la Figura 12, basándose en la ejecución de la instrucción TBEGIN, se realiza una función de serialización (descrita anteriormente), PASO 1200. Posterior a la realización de la serialización, se hace una determinación de si se reconoce una excepción, PREGUNTA 1202. Si es así, entonces la excepción es manejada, PASO 1204. Por ejemplo, una excepción de operación especial se reconoce y la operación es suprimida si el control de ejecución transaccional, bit 8 del registro de control 0, es cero. Además, se reconoce una excepción de la especificación y la operación es suprimida si el control de filtración de interrupción del programa, bits 14-15 del campo de la instrucción, contiene el valor 3; o la dirección del primer operando no designa un límite de la palabra doble. Se reconoce una excepción de la operación y la operación es suprimida, si la instalación de ejecución transaccional no está instalada en la configuración; y se reconoce una excepción de ejecutar y la operación es suprimida si TBEGIN es el objetivo de una instrucción del tipo ejecutar. Además, si la CPU está en el modo de ejecución transaccional restringida, entonces una excepción del programa de excepción restringida de la transacción se reconoce, y la operación es suprimida. Además, si la profundidad de anidación de la transacción, cuando se incrementa por 1, excede una profundidad de anidación de la transacción máxima dependiente del modelo, la transacción se aborta con el código de aborto 13.
Aún además, cuando el campo Bi de la instrucción no es cero y la CPU no está en el modo de ejecución transaccional, es decir, la profundidad de anidación de la transacción es cero, entonces la accesibilidad al almacenamiento al primer operando se determina. Si el primer operando no puede accesarse para los almacenamientos, entonces se reconoce una instrucción de acceso, y la operación es nulificada, suprimida o terminada, dependiendo de la condición de excepción del acceso específico. Además, cualquier evento de alteración de almacenamiento PER para el primer operando se reconoce. Cuando el campo Bc no es cero y la CPU ya está en el modo de ejecución transaccional, es impredecible si la accesibilidad al almacenamiento al primer operando se determina, y los eventos de alteración del almacenamiento PER se detectan por el primer operando. Si el campo Bc es cero, entonces el primer operando no es accesado.
Además de la verificación de la excepción, se hace una determinación de si la CPU está en el modo de ejecución transaccional (es decir, la profundidad de anidación de la transacción es cero), PREGUNTA 1206. Si la CPU no está en el modo de ejecución transaccional, entonces el contenido de los pares de registros generales seleccionados se guardan, PASO 1208. En particular, el contenido de los pares de registros generales designados por la máscara para guardar el registro general, se guardan en una ubicación dependiente del modelo que no es accesible directamente por el programa.
Además, se hace una determinación de si el campo Bi de la instrucción es cero, PREGUNTA 1210. Si el campo Bi no es igual a cero, la dirección del primer operando se coloca en la dirección del bloque de diagnóstico de la transacción, PASO 1214, y la dirección del bloque de diagnóstico de la transacción es válida. Además, la PSW para aborto de la transacción se establece del contenido de la PSW actual, PASO 1216. La dirección de la instrucción de la PSW para aborto de la transacción designa la siguiente instrucción secuencial (esto es, la instrucción que sigue a TBEGIN más externa).
Además, se hace una determinación del valor efectivo del control para permitir la modificación AR (A), bit 12 del campo I2 de la instrucción, PASO 1218. El control A efectivo es el AND lógico del control A en la instrucción TBEGIN para el nivel actual y para todos los niveles externos. Además, se determina un valor efectivo del control de la operación de permitir el punto flotante (F), bit 13 del campo I2 de la instrucción,, PASO 1220. El control F efectivo es el AND lógico del control F en la instrucción TBEGIN para el nivel actual y para todos los niveles externos. Además, un valor efectivo del control de filtración de interrupción del programa (PIFC), bits 14-15 del campo I2 de la instrucción, se determina, PASO 1222. El valor PIFO efectivo es el valor más alto en la instrucción TBEGIN para el nivel actual y para todos los niveles externos.
Además, un valor de uno se agrega a la profundidad de anidación de la transacción, PASO 1224, y la instrucción se termina estableciendo el código de la condición 0, PASO 1226. Si la profundidad de anidación de la transacción pasa de cero a uno, la CPU entra al modo de ejecución transaccional no restringida; de otra manera, la CPU permanece en el modo de ejecución transaccional no restringida.
Regresando a la PREGUNTA 1210, si B1 es igual a cero, entonces la dirección del bloque de diagnóstico de la transacción es inválida, PASO 1211, y el procesamiento continúa con el PASO 1218. De manera similar, si la CPU está en el modo de ejecución transaccional, PREGUNTA 1206, el procesamiento continúa con el PASO 1218.
El Código de la Condición Resultante de la ejecución de TBEGIN incluye, por ejemplo: 0 Inicio de la transacción exitoso 1 2 3 Las Excepciones del Programa incluyen, por ejemplo: • Acceso (almacenamiento, primer operando) • Operación (instalación de ejecución transaccional no instalada) • Operación especial • Especificación • Restricción de la transacción (debido a una instrucción restringida) En una modalidad, la verificación de la excepción proporcionada anteriormente puede ocurrir en un orden variable. Un orden particular para la verificación de la excepción es como sigue: • Las excepciones con la misma prioridad que la prioridad de las condiciones de interrupción del programa para el caso general.
• Excepción de la especificación debido a un valor de PIFC reservado.
• Excepción de la especificación debido a que una dirección del primer operando no está en un límite de la palabra doble.
• Excepción del acceso (cuando el campo Bx no es cero).
• Aborto debido a una profundidad de anidación de la transacción máxima que se excede.
• Código de la condición 0 debido a una terminación normal.
Notas: 1. Cuando el campo Bi no es cero, se aplica lo siguiente: • Un bloque de diagnóstico de la transacción (TDB) accesible se va a proporcionar cuando se inicia una transacción más externa - incluso si la transacción nunca aborta.
• Puesto que es impredecible si la accesibilidad del TDB se prueba para las transacciones anidadas, debe proporcionarse un TDB accesible para cualquier instrucción TBEGIN anidada.
• El desempeño de cualquier TBEGIN en la cual el campo Bi no es cero, y el desempeño de cualquier procesamiento de aborto que ocurra para una transacción que se inició por una TBEGIN más externa en la cual el campo Bi no es cero, puede ser más lento que cuando el campo Bc es cero. 2. Los registros designados para ser guardados por la máscara para guardar el registro general se restablecen únicamente, en una modalidad, si la transacción se aborta, no cuando la transacción termina normalmente por medio de FIN DE LA TRANSACCIÓN. Únicamente los registros designados por la GRSM de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa se restablecen con el aborto.
El campo debe designar todos los pares de registro que proporcionan valores de entrada que se cambian por la transacción . Así, si la transacción es abortada, los valores del registro de entrada se restablecerán a su contenido original cuando el manipulador del aborto se introduzca. 3. Se espera que la instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN) sea seguida por una instrucción de bifurcación condicional que determinará si la transacción se inició de manera exitosa. 4. Si una transacción es abortada debido una condición que no resulta en una interrupción, la instrucción designada por la PSW para aborto de la transacción recibe el control (esto es, la instrucción siguiente a COMIENZO DE LA TRANSACCIÓN (TBEGIN) más externa). Además del código de la condición establecido por la instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN), los códigos de la condición 1-3 también se establecen cuando una transacción se aborta.
Por lo tanto, la secuencia de la instrucción que sigue a la instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN) más externa debería ser capaz de acomodar todos los cuatro códigos de la condición, aunque la instrucción TBEGIN sólo establezca el código 0, en este ejemplo. 5. En la mayoría de los modelos, puede realizarse un desempeño mejorado, tanto en el COMIENZO DE LA TRANSACCIÓN como cuando una transacción se aborta, especificando el número mínimo de registros necesarios para guardarse y restablecerse en la máscara para guardar el registro general. 6. Mientras está en el modo de ejecución transaccional no restringida, un programa puede llamar una función de servicio que puede alterar los registros de acceso o los registros del punto flotante (incluyendo el registro del control de punto flotante). Aunque tal rutina de servicio puede guardar los registros alterados con la entrada y restablecerlos a la salida, la transacción puede abortarse antes de una salida normal de la rutina. Si el programa que llama no toma provisiones para conservar estos registros mientras la CPU está en el modo de ejecución transaccional no restringida, puede no ser capaz de tolerar la alteración de las funciones de servicio de los registros.
Para evitar la alteración inadvertida de los registros de acceso mientras está en el modo de ejecución transaccional no restringida, el programa puede establecer el control para permitir la modificación AR, bit 12 del campo I2 de la instrucción de COMIENZO DE LA TRANSACCIÓN, a cero. De manera similar, para evitar la alteración inadvertida de los registros del punto flotante, el programa puede establecer el control para permitir la operación del punto flotante, bit 13 del campo I2 de la instrucción TBEGIN, a cero. 7. Las condiciones de excepción del programa reconocidas durante la ejecución de la instrucción COMIENZO DE LA TRANSACCIÓN (TBEGIN), se someten al control de filtración de interrupción del programa efectivo establecido por cualquier instrucción TBEGIN externa. Las condiciones de excepción del programa reconocidas durante la ejecución de la instrucción TBEGIN más externa no se someten a filtración. 8. Con el fin de actualizar múltiples ubicaciones de almacenamiento de una manera serializada, las secuencias del código convencionales pueden emplear una palabra de bloqueo (semáforo). Si (a) se utiliza la ejecución transaccional para implementar las actualizaciones de múltiples ubicaciones de almacenamiento, (b) el programa también proporciona una trayectoria de "retroceso" a ser invocada si la transacción se aborta, y (c) la trayectoria de retroceso emplea una palabra de bloqueo, entonces la trayectoria de ejecución transaccional debería también probar la disponibilidad del bloqueo y, si el bloqueo no está disponible, terminar la transacción por medio de la instrucción FIN DE LA TRANSACCIÓN y bifurcarse a la trayectoria de retroceso. Esto asegura un acceso consistente a los recursos serializados, sin importar si son actualizados transaccionalmente.
De manera alterna, el programa podría abortar si el bloqueo no está disponible, sin embargo, el procesamiento de aborto puede ser significativamente más lento que simplemente terminar la transacción vía TEND. 9. Si el control de filtración de interrupción del programa (PIFC) efectivo es mayor que cero, la CPU filtra la mayoría de las interrupciones del programa de excepción de datos. Si el control de la operación de permitir el punto flotante (F) efectivo es cero, el código de excepción de los datos (DXC) no se establecerá en el registro del control del punto flotante como resultado de un aborto, debido a una condición de excepción del programa de excepción de datos. En este escenario (la filtración se aplica y el control F efectivo es cero), la única ubicación en la cual el DXC es inspeccionado es en el TDB especificado por TBEGIN. Si el manipulador del aborto del programa inspecciona el DXC en tal situación, el registro general Bi debería no ser cero, de manera que una dirección del bloque de diagnóstico de la transacción (TDBA) válida se establece. 10. Si una alteración del almacenamiento PER o una condición de detección de la dirección cero existe para el TDB especificado por TBEGIN de la instrucción TBEGIN más externa, y la supresión del evento PER no se aplica, el evento PER es reconocido durante la ejecución de la instrucción, causando así que la transacción sea abortada inmediatamente, sin importar si existe cualquier otra condición de aborto.
En una modalidad, la instrucción TBEGIN establece de manera implícita la dirección para abortar la transacción para que sea la siguiente instrucción secuencial después de TBEGIN. Esta dirección pretende ser una instrucción bifurcada condicional que determina si o no bifurcarse, dependiendo del código de la condición (CC). Una TBEGIN exitosa establece CCO, mientras que una transacción abortada establece CC1, CC2 o CC3.
En una modalidad, la instrucción TBEGIN proporciona un operando de almacenamiento opcional que designa la dirección de un bloque de diagnóstico de la transacción (TDB) en el cual la información se almacena si la transacción es abortada.
Además, proporciona un operando inmediato que incluye lo siguiente: Una máscara para guardar el registro general (GRSM) que indica cuales pares de registros generales se van a guardar al inicio de la ejecución transaccional y restablecerse si la transacción es abortada; Un bit (A) para permitir abortar la transacción si la transacción modifica los registros de acceso; Un bit (F) para permitir abortar la transacción si la transacción intenta abortar las instrucciones del punto flotante; y Un control de filtración de interrupción del programa (PIFC) que permite que los niveles de la transacción individual eviten la presentación actual de una interrupción del programa si una transacción es abortada.
Los controles A, F y PIFC pueden ser diferentes a varios niveles de anidación, y restablecerse al nivel previo cuando los niveles de la transacción interna se terminan.
Además, la TBEGIN (o en otra modalidad, TBEGINC) se utiliza para formar una prueba de la transacción. Opcionalmente, la prueba puede hacerse coincidir con una prueba formada por la instrucción TEND. Para cada instrucción TBEGIN (o TBEGINC), como un ejemplo, se forma una prueba de la dirección del primer operando. Esta prueba puede formarse de manera independiente de si el registro de base es cero (a diferencia de la dirección del TDB que establece que sólo ocurre cuando el registro de base no es cero). Para cada instrucción FIN DE LA TRANSACCIÓN ejecutada con un registro de base que no es cero, se forma una prueba similar de su operando de almacenamiento. Si las pruebas no coinciden, puede reconocerse una excepción del programa para entrar al programa de una instrucción no apareada.
La coincidencia de las pruebas proporciona un mecanismo pretendido para mejorar la confiabilidad del programa asegurando que una declaración TEND se aparea de manera apropiada con una TBEGIN (o TBEGINC). Cuando una instrucción TBEGIN se ejecuta a un nivel de anidación particular, se forma una prueba de la dirección del operando de almacenamiento que identifica este caso de una transacción. Cuando una instrucción TEND correspondiente se ejecuta, se forma una prueba de la dirección del operando de almacenamiento de la instrucción, y la CPU compara la prueba inicial para el nivel de anidación con la prueba final. Si las pruebas no coinciden, se reconoce una condición de excepción. Un modelo puede implementar la coincidencia de la prueba para sólo ciertos números de niveles de anidación (o para ningún nivel de anidación). La prueba puede no involucrar todos los bits de la dirección del operando de almacenamiento, o los bits pueden combinarse vía funciones de hash u otros métodos. Una prueba puede formarse por la instrucción TBEGIN incluso si su operando de almacenamiento no es accesado.
Para resumir, el procesamiento de una transacción no restringida es como sigue: • Si TND = 0: o Si Bx ¹ 0, la dirección del bloque de diagnóstico de la transacción se establece de la dirección del primer operando. o La PSW para abortar la transacción se establece a la siguiente dirección de la instrucción secuencial. o Los pares del registro general designados por el campo I2 se guardan en una ubicación dependiente del modelo.
No directamente accesible por el programa Controles PIFC, A y F efectivos calculados A Efectivo = TBEGIN A y cualquier A externo F Efectivo = TBEGIN F y cualquier F externo o PIFC Efectivo = max(PIFC de TBEGIN, cualquier PIFC externo) • Profundidad de anidación de la transacción (TND) incrementada • Si la TND pasa de 0 a 1, la CPU entra al modo de ejecución transaccional • Código de la condición establecido a cero o Cuando la instrucción siguiente a TBEGIN recibe el control: TBEGIN exitosa indicada por CCO Transacción abortada indicada por CC que no es cero • Excepciones: o Código de aborto 13 si la profundidad de anidación se excede o Excepción del acceso (uno de varios PIC) si el campo Bi no es cero, y el operando de almacenamiento no puede accesarse para una operación de almacenamiento o Excepción de ejecución (PIC 0003) si la instrucción TBEGIN es el objetivo de una instrucción del tipo ejecutar o Excepción de operación (PIC 0001) si la instalación de ejecución transaccional no está instalada o PIC 0006 si cualquiera de PIFC es inválida (valor de 3) La dirección del segundo operando no está alineada con la palabra doble o Pie 0013 hex si el control de ejecución transaccional (CR0.8) es cero o pie 0018 hex si se emite en el modo TX restringida Como se indicó anteriormente, en una modalidad, los registros seleccionados pueden guardarse al inicio de la ejecución transaccional, y a continuación restablecerse en el caso de un aborto de la transacción. Una modalidad del lógico asociado con guardar/restablecer los registros seleccionados, en general, se describe con referencia a la Figura 13A. Las modalidades adicionales se describen a continuación con referencia a la Figura 13B. Como un ejemplo, un procesador está ejecutando este lógico.
Refiriéndose a la Figura 13A, se hace una determinación de uno o más registros seleccionados a ser guardados, PASO 1300. En un ejemplo, esta determinación se hace verificando los bits establecidos de una GRSM indicada por una instrucción de COMIENZO DE LA TRANSACCIÓN. Sin embargo, en otras modalidades, pueden utilizarse otras téenicas para indicar los registros seleccionados a ser guardados. El contenido de los registros seleccionados se almacena en una ubicación de la memoria predefinida que es inaccesible, en una modalidad, a los programas, PASO 1302.
A continuación, si hay un aborto de una transacción asociado con los registros, PREGUNTA 1304, los registros seleccionados se restablecen, PASO 1306. Por ejemplo, el contenido almacenado en la ubicación de la memoria predefinida se carga en los registros apropiados.
En una modalidad particular, los registros a ser almacenados se especifican por una instrucción de COMIENZO DE LA TRANSACCIÓN más externa, como se describió con referencia a la Figura 13B. En esta modalidad, una instrucción de COMIENZO DE LA TRANSACCIÓN se obtiene (por ejemplo, recibida, buscada, etc.) por un procesador, PASO 1350. Se hace una determinación de si es una instrucción de COMIENZO DE LA TRANSACCIÓN más externa, PREGUNTA 1352. Si la instrucción de COMIENZO DE LA TRANSACCIÓN no se inicia dentro de otra transacción, y ese por lo tanto, una instrucción de COMIENZO DE LA TRANSACCIÓN más externa, se hace una determinación utilizando la GRSM de la instrucción de uno o más registros a ser guardados, PASO 1354. En este ejemplo, los registros son registros generales, y como en lo anterior, se guardan copiando su contenido, antes del uso de los registros (por ejemplo, justo al inicio de la ejecución de la instrucción), a una ubicación de la memoria predefinida, PASO 1356.
Regresando a la PREGUNTA 1352, si no es una instrucción de COMIENZO DE LA TRANSACCIÓN más externa, entonces la GRSM se ignora, en esta modalidad.
Posterior a guardar cualesquier registros a ser guardados, el procesamiento de la transacción procede, y si la transacción se aborta, ya sea debido a que esta transacción especificada se aborta o, en esta modalidad, una transacción anidada interna se aborta, causando que esta transacción se aborte, PREGUNTA 1358, los registros seleccionados son restablecidos copiando el contenido de la ubicación de la memoria predefinida a los registros, PASO 1360. Esto termina el procesamiento.
Se describieron anteriormente modalidades de guardar/restablecer los registros, tales como los registros generales, en un aborto (es decir, terminación anormal). Cuando una transacción se aborta, los almacenamientos transaccionales hechos durante la ejecución de la transacción se descartan. Sin embargo, a menos que se especifique de otra manera, el contenido de los registros generales no se restablece. El contenido de los registros de acceso y el contexto del punto flotante tampoco se restablecen, en un ejemplo, si una transacción se aborta. Al no guardar los registros a menos que se solicite de manera específica por el programa, la velocidad de procesamiento de la ejecución de la instrucción de COMIENZO DE LA TRANSACCIÓN más externa se incrementa.
En una modalidad, los registros generales especificados por el programa se guardan durante la ejecución de una instrucción de COMIENZO DE LA TRANSACCIÓN más externa, y aquellos registros se restablecen si la transacción se aborta. En una modalidad adicional, los registros, diferentes de los registros generales, tales como los registros del punto flotante y/o los registros de acceso, se guardan y/o restablecen. Además, los registros generales individuales y/o agrupaciones de registros generales pueden guardarse/restablecerse. Además, en una modalidad, se utiliza un registro de propósito general que especifica una máscara del bit, para especificar cuál registro establecer.
En aún otra modalidad, uno o más de guardar/restablecer se realiza en los entornos transaccionales que implementan la anidación no aplanada. En tal entorno, cuando una transacción dentro de una anidación de transacciones se aborta, las otras transacciones dentro de la anidación pueden no abortarse. En tal entorno, cada nivel de anidación tiene una indicación de cuáles registros se guardan y/o restablecen.
Se proporcionó anteriormente un medio eficiente de actualizar múltiples objetos no contiguos en la memoria sin una serialización clásica (de grano grueso), tal como bloqueo, que proporciona un potencial para la mejora significativa del desempeño del multiprocesador. Esto es, múltiples objetos no contiguos son actualizados sin cumplir con la orden de un acceso de almacenamiento con grano más grueso que se proporciona por las téenicas clásicas, tales como los bloqueos y semáforos. La ejecución especulativa se proporciona sin un montaje de recuperación oneroso, y las transacciones restringidas son ofrecidas para actualizaciones simples, de espacio pequeño.
La ejecución transaccional puede utilizarse en una variedad de escenarios, incluyendo de manera no exclusiva, alineación parcial, procesamiento especulativo y elisión del bloque. En la alineación parcial, la región parcial a ser incluida en la trayectoria ejecutada se envuelve en TBEGIN/TEND. TABORT puede incluirse en la misma para el estado de retroceso en una salida lateral. Para la especulación, tal como en Java, las verificaciones nulas en los punteros no referenciados pueden retrasarse al borde del bucle utilizando una transacción. Si el puntero es nulo, la transacción puede abortarse de manera segura utilizando TABORT, que está incluida dentro de TBEGIN/TEND.
En cuando a la elisión del bloqueo, un ejemplo de su uso se describe con referencia a las Figuras 14A-14B y el fragmento del código proporcionado a continuación.
La Figura 14A describe una lista doblemente vinculada 1400 de una pluralidad de elementos de la fila 1402a-1402d. Un nuevo elemento de la fila 1402e se va a insertar en la lista doblemente vinculada de los elementos de la fila 1400. Cada elemento de la fila 1402a-1402e incluye un puntero delantero 1404a-1404e y un puntero trasero 1406a-1406e. Como se muestra en la Figura 14B, para agregar un elemento a la fila 1402e entre los elementos de la fila 1402b y 1402c, (1) el puntero trasero 1406e se establece para apuntar al elemento de la fila 1402b, (2) el puntero delantero 1404e se establece para apuntar al elemento de la fila 1402c, (3) el puntero trasero 1406c se establece para apuntar al elemento de la fila 1402e, y (4) el puntero delantero 1404b se establece para apuntar al elemento de la fila 1402e.
Un fragmento del código ejemplar que corresponde a las Figuras 14A-14B está a continuación: * R1 - dirección del nuevo elemento de la fila a ser insertado.
* R2 - dirección del punto de inserción; el elemento nuevo se inserta antes del elemento apuntado por R2. NUEVO UTILIZANDO QEL, R1 ACTUAL UTILIZANDO QEL, R2 LHI R15 10 Cargar el conteo de reintento.
BUCLE TBEGIN TDB, X'COOO' Comienzo de la transacción (guardar GR 0-3) J Z ABORTADO CC que no es cero significa abortado.
LG R3, CURR.BWD Apuntar al elemento previo.
PREVIO UTILIZANDO QEL, R3 Hacerlo direccionable.
STG R1, PREV.FWD Actualizar puntero delantero previo.
STG R1, CURR.BWD Actualizar puntero trasero actual.
STG R2, NEW.FWD Actualizar nuevo puntero delantero.
STG R3, NEW.BWD Actualizar nuevo puntero trasero.
TEND Fin de la transacción.
ABORTADO JO NO_REINTENTAR CC3: Aborto no reintentable.
JCT R15, BUCLE Reintentar la transacción unas cuantas veces.
J NO_REINTENTAR Sin éxito después de lOx; hacerlo de la manera difícil.
En un ejemplo, si la transacción se utiliza para la elisión del bloqueo, pero la trayectoria de retroceso utiliza un bloqueo, la transacción busca al menos la palabra del bloqueo para ver si está disponible. El procesador asegura que la transacción se aborte, si otra CPU tiene acceso al bloqueo de manera no transaccional.
Como se utiliza en el presente documento, almacenamiento, almacenamiento central, almacenamiento principal, memoria y memoria principal se utilizan de manera intercambiable, a menos que se indique de otra manera, de manera implícita mediante el uso, o de manera explícita. Además, mientras que en una modalidad, el retraso efectivo incluye retrasar la asignación de los almacenamientos transaccionales a la memoria principal hasta la terminación de una transacción seleccionada; en otra modalidad, un retraso efectivo de una transacción incluye permitir las actualizaciones transaccionales a la memoria, pero manteniendo los valores anteriores y restableciendo la memoria a los valores anteriores con el aborto.
Como se apreciará por alguien con experiencia en la téenica, uno o más aspectos pueden incorporarse como un sistema, método o producto de programa de computadora. En consecuencia, uno o más aspectos pueden tomar la forma de una modalidad de elementos físicos completamente, una modalidad de programas completamente (incluyendo instrucciones fijas, programa residente, microcódigo, etc.) o una modalidad que combina los aspectos de elementos físicos y programas, que pueden generalmente referirse en el presente documento como un "circuito", "módulo" o "sistema". Además, uno o más aspectos pueden tomar la forma de un producto de programa de computadora incorporado en uno o más medios legibles por computadora que tienen un código de programa legible por computadora incorporado en el mismo.
Cualquier combinación de uno o más medios legibles por computadora puede utilizarse. El medio legible por computadora puede ser un medio de almacenamiento legible por computadora. Un medio de almacenamiento legible por computadora puede, por ejemplo, de manera no exclusiva, ser un sistema, aparato o dispositivo electrónico, magnético, óptico, electromagnético, infrarrojo o semiconductor, o cualquier combinación adecuada de lo anterior. Los ejemplos más específicos (una lista no exhaustiva) del medio de almacenamiento legible por computadora incluye lo siguiente: una conexión eléctrica que tiene uno o más alambres, un disco de computadora portátil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de sólo lectura (ROM), una memoria de sólo lectura programable borrable (EPROM o memoria Instantánea), una fibra óptica, una memoria de sólo lectura de disco compacto o portátil (CD-ROM), un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento magnético, o cualquier combinación adecuada de lo anterior. En el contexto de este documento, un medio de almacenamiento legible por computadora puede ser cualquier medio tangible que pueda leer o almacenar un programa para utilizarse por, o con relación a un sistema, aparato o dispositivo de ejecución de la instrucción.
Refiriéndose ahora a la Figura 15, en un ejemplo, un producto de programa de computadora 1500 incluye, por ejemplo, uno o más medios de almacenamiento legibles por computadora no transitorios 1502 para almacenar los medios del código del programa legible por computadora o lógico 1504 en el mismo, para proporcionar y facilitar una o más modalidades.
El código del programa incorporado en un medio legible por computadora puede transmitirse utilizando un medio apropiado, incluyendo de manera no exclusiva, inalámbrico, alámbrico, cable de fibra óptica, RF, etc., o cualquier combinación adecuada de lo anterior.
El código del programa de computadora para llevar a cabo las operaciones para una o más modalidades puede escribirse en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado al objeto, tal como Java, Smalltalk, C++ o lo similar, y lenguajes de programación procesales convencionales, tales como el lenguaje de programación "C", ensamblador o lenguajes de programación similares. El código del programa puede ejecutarse totalmente en la computadora del usuario, parcialmente en la computadora del usuario, como un paquete de programas autónomo, parcialmente en la computadora del usuario, parcialmente en una computadora remota o completamente en una computadora o servidor remoto. En el último escenario, la computadora remota puede conectarse a la computadora del usuario a través de cualquier tipo de red, incluyendo una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede hacerse a una computadora externa (por ejemplo, a través de la Internet utilizando un Proveedor de Servicio de Internet).
Una o más modalidades se describen en el presente documento con referencia a las ilustraciones del diagrama de flujo y/o diagramas de bloque de los métodos, aparatos (sistemas) y productos del programa de computadora. Se entenderá que cada bloque de las ilustraciones del diagrama de flujo y/o diagramas de bloque, y las combinaciones de bloques en las ilustraciones del diagrama de flujo y/o diagramas de bloques, pueden implementarse por las instrucciones del programa de la computadora. Estas instrucciones del programa de computadora pueden proporcionarse a un procesador de una computadora de propósito general, computadora de propósito especial, u otro aparato de procesamiento de datos programable para producir una máquina, de manera que las instrucciones, que se ejecutan vía el procesador de la computadora u otros aparatos de procesamiento de datos programable, crea medios para implementar las funciones/actos especificados en el diagrama de flujo y/o el bloque o bloques del diagrama de bloques.
Estas instrucciones del programa de computadora también pueden almacenarse en un medio legible por computadora que puede dirigir una computadora, otro aparato de procesamiento de datos programable, u otros dispositivos para funcionar de una manera particular, de manera que las instrucciones almacenadas en el medio legible por computadora producen un artículo de fabricación que incluye las instrucciones que implementan la función/acto especificado en el diagrama de flujo y/o el bloque o bloques del diagrama de bloques.
Las instrucciones del programa de computadora pueden también cargarse en una computadora, otros aparatos de procesamiento de datos programables, u otros dispositivos para causar que una serie de pasos de operación se realicen en la computadora, otros aparatos programables u otros dispositivos para producir un proceso implementado por computadora, de manera que las instrucciones que se ejecutan en la computadora u otro aparato programable, proporciona procesos para implementar las funciones/actos especificados en el diagrama de flujo y/o el bloque o bloques del diagrama de bloques.
El diagrama de flujo y los diagramas de bloques en las Figuras ilustran la arquitectura, funcionalidad y operación de las posibles implementaciones de los sistemas, métodos y productos de programas de computadora de acuerdo con varias modalidades. A este respecto, cada bloque en el diagrama de flujo o diagramas de bloque puede representar un módulo, segmento o porción de un código, que comprende una o más instrucciones ejecutables para implementar las funciones lógicas especificadas. Deberá notarse que en algunas implementaciones alternas, las funciones indicadas en el bloque pueden ocurrir fuera del orden indicado en las Figuras. Por ejemplo, dos boques mostrados en sucesión pueden, de hecho, ejecutarse de manera sustancialmente concurrente o los bloques pueden ejecutarse algunas veces en el orden inverso, dependiendo de la funcionalidad involucrada. También se notará que cada bloque de los diagramas de bloques y/o ilustración del diagrama de flujo y combinaciones de bloques en los diagramas de bloques y/o la ilustración del diagrama de flujo, pueden implementarse mediante sistemas basados en los elementos físicos de propósito especial, que realizan las funciones o actos especificados, o combinaciones de los elementos físicos de propósito especial y las instrucciones de la computadora.
Además de lo anterior, pueden proporcionarse, ofrecerse, desplegarse, manejarse, dar servicio, etc., a uno o más aspectos, por un proveedor de servicio que ofrezca el manejo de los medios del cliente. Por ejemplo, el proveedor del servicio puede crear, mantener, soportar, etc., un código de computadora y/o una infraestructura de computadora que realiza uno o más aspectos para uno o más clientes. A su vez, el proveedor del servicio puede recibir un pago del cliente bajo una suscripción y/o acuerdo de tarifas, como ejemplos. De manera adicional o alterna, el proveedor del servicio puede recibir un pago de la venta del contenido de publicidad a una o más terceras partes.
En un aspecto, una aplicación puede desplegarse realizando una o más modalidades. Como un ejemplo, el despliegue de una aplicación comprende proporcionar una infraestructura de computadora para realizar una o más modalidades.
Como un aspecto adicional, una infraestructura de cómputo puede desplegarse, que comprende un código legible por computadora integrante en un sistema de computación, en el cual el código, en combinación con el sistema de computación es capaz de realizar una o más modalidades.
Como un aspecto aún adicional, puede proporcionarse un proceso para integrar una infraestructura de cómputo que comprende un código legible por computadora integrante en un sistema de computadora. El sistema de computadora comprende un medio legible por computadora, en el cual el medio de computadora comprende una o más modalidades. El código en combinación con el sistema de computadora es capaz de realizar una o más modalidades.
Aunque varias modalidades se describieron anteriormente, estas son únicamente ejemplos. Por ejemplo, los entornos de computación de otras arquitecturas pueden utilizarse. Además, pueden utilizarse diferentes instrucciones, formatos de instrucciones, campos de instrucciones y/o valores de instrucciones. Además, otras restricciones/constricciones diferentes y/o adicionales pueden proporcionarse/utilizarse. Aún más, los registros diferentes a los registros generales pueden guardarse/restablecerse. Además, el guardado/restablecimiento puede realizarse por diferentes procesadores, o por uno o más procesadores. Muchas variaciones son posibles.
Además, pueden utilizarse otros tipos de entornos de computación. Como un ejemplo, un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar un código de programa es útil, que incluye al menos dos procesadores acoplados de manera directa o indirecta a elementos de memoria a través de un bus de sistema. Los elementos de memoria incluyen, por ejemplo, una memoria local empleada durante la ejecución real del código del programa, un almacenamiento masivo y una memoria caché que proporciona un almacenamiento temporal de al menos algún código del programa, con el fin de reducir el número de veces que el código debe recuperarse del almacenamiento masivo durante la ejecución.
Los dispositivos de Entrada/Salida o 1/0 (incluyendo, de manera no exclusiva teclados, pantallas, dispositivos para apuntar, DASD, cintas, CD, DVD, unidades de memoria instantánea y otros medios de memoria, etc.), pueden acoplarse al sistema ya sea directamente o a través de los controladores 1/0 intermedios. Los adaptadores de la red también pueden acoplarse al sistema para permitir que el sistema de procesamiento de datos se acople a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a través de redes intermedias privadas o públicas. Los módems, módems de cable y las tarjetas de Ethernet son sólo unos cuantos tipos de adaptadores de la red disponibles.
Refiriéndose a la Figura 16, los componentes representativos de un sistema de Computadora Central 5000 para implementar una o más modalidades (sic). La computadora central 5000 representativa comprende una o más CPU 5001 en comunicación con una memoria de la computadora (es decir, almacenamiento central) 5002, así como interconexiones 1/0 para los dispositivos del medio de almacenamiento 5011 y las redes 5010 para comunicarse con otras computadoras o SAN y lo similar. La CPU 5001 cumple con una arquitectura que tiene un conjunto de instrucciones diseñadas y una funcionalidad diseñada. La CPU 5001 puede tener un traducción del registro de acceso (ART) 5012, que incluye una memoria intermedia de traducción anticipada de instrucciones ART (ALB) 5013, para seleccionar un espacio de la dirección a ser utilizado por la traducción de la dirección dinámica (DAT) 5003 para transformar las direcciones del programa (direcciones virtuales) en direcciones reales de la memoria. Una DAT incluye típicamente una memoria intermedia de traducción anticipada de instrucciones (TLB) 5007 para almacenar de manera provisional las traducciones de manera que los accesos posteriores al bloque de la memoria de la computadora 5002 no requieren el retraso de la traducción de la dirección. Típicamente, una memoria caché 5009 se emplea entre la memoria de la computadora 5002 y el procesador 5001. La memoria caché 5009 puede ser jerárquica, teniendo una gran memoria caché disponible para más de una CPU y memorias caché más pequeñas, más rápidas (nivel inferior) entre la memoria caché grande y cada CPU. En algunas implementaciones, las memorias caché de nivel inferior se dividen para proporcionar memorias caché de nivel inferior separadas para buscar las instrucciones y los accesos de los datos. En una modalidad, para la instalación TX, un bloque de diagnóstico de la transacción (TDB) 5100 y una o más memorias intermedias 5101, pueden almacenarse en una o más memorias caché 5009 y la memoria 5002. En un ejemplo, en el modo TX, los datos se almacenan inicialmente en una memoria intermedia TX, y cuando el modo TX termina (por ejemplo, TEND más externa), los datos en la memoria intermedia se almacenan (asignan) en la memoria, o si hay un aborto, los datos en la memoria intermedia se descartan.
En una modalidad, una instrucción se busca de la memoria 5002 mediante una unidad de búsqueda de la instrucción 5004 vía una memoria caché 5009. La instrucción es decodificada en una unidad de decodificación de la instrucción 5006 y enviada (con otras instrucciones en algunas modalidades) a la unidad o unidades de ejecución de la instrucción 5008. Típicamente, se emplean varias unidades de ejecución 5008, por ejemplo, una unidad de ejecución aritmética, una unidad de ejecución del punto flotante y una unidad de ejecución de la instrucción de bifurcación. Además, en una modalidad de la instalación TX, varios controles TX 5110 pueden emplearse. La instrucción es ejecutada por la unidad de ejecución, accesando a los operandos de los registros especificados de la instrucción o la memoria conforme se necesite. Si un operando se va a accesar (cargado o almacenado) de la memoria 5002, una unidad de carga/almacenamiento 5005 típicamente manipula el acceso bajo el control de la instrucción siendo ejecutada. Las instrucciones pueden ejecutarse en los circuitos de los elementos físicos o en un microcódigo interno (instrucciones fijas), o mediante una combinación de ambos.
De acuerdo con un aspecto de la instalación TX, el procesador 5001 también incluye una PSW 5002 (por ejemplo, TX y/o PSW de aborto), una profundidad de anidación 5104, una TDBA 5106, y uno o más registros de control 5108.
Como se indicó, un sistema de computadora incluye información en el almacenamiento local (o principal), así como direccionamiento, protección y referencia y registro del cambio. Algunos aspectos del direccionamiento incluyen el formato de las direcciones, el concepto de los espacios de la dirección, los varios tipos de direcciones, y la manera en la cual cada tipo de dirección se traduce a otro tipo de dirección. Algunos de los almacenamientos principales incluyen ubicaciones de almacenamiento asignadas de manera permanente. El almacenamiento principal proporciona al sistema con el almacenamiento de datos de rápido acceso directamente direccionable. Tanto los datos como los programas se cargan en el almacenamiento principal (de los dispositivos de entrada) antes de que puedan procesarse.
El almacenamiento principal puede incluir uno o más almacenamientos de memoria intermedia más pequeños, de acceso más rápido, algunas veces llamados memorias caché. Una memoria caché está asociada típicamente de manera física con una CPU o un procesador 1/0. Los efectos, excepto en el desempeño, de la construcción física y uso del medio de almacenamiento distintivo, generalmente no son observables por el programa.
Las memorias caché separadas pueden mantenerse para las instrucciones y para los operandos de los datos. La información dentro de una memoria caché se mantiene en los bytes contiguos en un límite integral llamado un bloque de memoria caché o línea de memoria caché (o línea, para abreviar). Un modelo puede proporcionar una instrucción de EXTRAER ATRIBUTO DE LA MEMORIA CACHE que regresa el tamaño de una línea de la memoria intermedia en bytes. Un modelo también puede proporcionar instrucciones de DATOS DE PREBÚSQUEDA y DATOS DE PREBÚSQUEDA RELATIVAMENTE LARGOS, que efectúa la prebúsqueda del almacenamiento en los datos o la memoria caché de la instrucción o la liberación de los datos de la memoria caché.
El almacenamiento se observa como una serie de bits horizontal larga. Para la mayoría de las operaciones, los accesos al almacenamiento proceden en una secuencia de izquierda a derecha. La serie de bits se subdivide en unidades de ocho bits. Cada unidad de ocho bits se llama un byte, que es el bloque de construcción básico de todos los formatos de la información, cada ubicación del byte en el almacenamiento se identifica por un entero no negativo único, que es la dirección de esa ubicación del byte, o simplemente, la dirección del byte. Las ubicaciones de bytes adyacentes tienen direcciones consecutivas, empezando con 0 en la izquierda, y procediendo en una secuencia de izquierda a derecha. Las direcciones son enteros binarios no signados y son de 24, 31 ó 64 bits.
La información se transmite entre el almacenamiento y una CPU o un subsistema de canal de un byte, o un grupos de bytes a la vez. A menos que se especifique de otra manera en, por ejemplo, la z/Architecture, un grupo de bytes en el almacenamiento es dirigido por el byte más izquierdo del grupo. El número de bytes en el grupo está especificado de manera implícita o explícita por la operación a ser realizada. Cuando se utiliza en una operación de la CPU, un grupo de bytes se llama un campo. Dentro de cada grupo de bytes, en, por ejemplo, la z/Architecture, los bits son numerados en una secuencia de izquierda a derecha. En la z/Architecture, los bits más a la izquierda son referidos algunas veces como los bits de "orden superior" y los bits más a la derecha como los bits de "orden inferior". Los números de bit no son direcciones de almacenamiento, sin embargo. Únicamente los bytes pueden ser dirigidos. Para operar en los bits individuales de un byte en el almacenamiento, todo el byte es accesado. Los bits en un byte se numeran de 0 hasta 7, de izquierda a derecha (en, por ejemplo, la z/Architecture). Los bits en una dirección pueden numerarse 8-31 ó 40-63 para las direcciones de 24 bits, o 1-31 ó 33-63 para las direcciones de 31 bits; se numeran 0-63 para las direcciones de 64 bits. En un ejemplo, los bits 8-31 y 1-31 se aplican a las direcciones que están en una ubicación (por ejemplo, registro), que es de 32 bits de ancho, mientras que los bits 40-63 y 33-63 se aplican a las direcciones que están en una ubicación de 64 bits de ancho. Dentro de cualquier otro formato de longitud fija de múltiples bytes, los bits que constituyen el formato se numeran de manera consecutiva empezando de 0. Para propósitos de detección de error, y de manera preferida para corrección, uno o más bits de verificación pueden transmitirse con cada byte o con un grupo de bytes. Tales bits de verificación son generados de manera automática por la máquina, y no pueden controlarse directamente por el programa. Las capacidades de almacenamiento se expresan en números de bytes. Cuando la longitud de un campo del operando de almacenamiento está implicada por el código de la operación de una instrucción, se dice que el campo tiene una longitud fija, que puede ser uno, dos, cuatro, ocho o dieciséis bytes. Los campos más grandes pueden implicarse para algunas instrucciones. Cuando la longitud de un campo del operando de almacenamiento no se implica sino que se indica de manera explícita, se dice que el campo tiene una longitud variable. Los operandos de longitud variable pueden variar en longitud por incrementos de un byte (o con algunas instrucciones, en múltiplos de dos bytes u otros múltiplos). Cuando la información se coloca en almacenamiento, el contenido de sólo aquellas ubicaciones del byte que están incluidas en el campo designado se reemplaza, aunque el ancho de la trayectoria física para el almacenamiento puede ser mayor que la longitud del campo siendo almacenado.
Ciertas unidades de información son para un límite integral en el almacenamiento. Un límite se llama integral para una unidad de información cuando su dirección de almacenamiento es un múltiplo de la longitud de la unidad en bytes. Se dan nombres especiales a los campos de 2, 4, 8, 16 y 32 bytes en un límite integral. Una media palabra es un grupo de dos bytes consecutivos en un límite de dos bytes y es el bloque de construcción básico de las instrucciones. Una palabra es un grupo de cuatro bytes consecutivos en un límite de cuatro bytes. Una palabra doble es un grupo de ocho bytes consecutivos en un límite de ocho bytes. Una palabra cuádruple es un grupo de 16 bytes consecutivos en un límite de 16 bytes. Una octopalabra es un grupo de 32 bytes consecutivos en un límite de 32 bytes. Cuando las direcciones del almacenamiento designan medias palabras, palabras, palabras dobles, palabras cuádruples y octopalabras, la representación binaria de la dirección contiene uno, dos, tres, cuatro o cinco bits cero más a la derecha, respectivamente. Las instrucciones van a ser límites integrales de dos bytes. Los operandos del almacenamiento de la mayoría de las instrucciones no tienen requisitos de alineación del límite.
En los dispositivos que implementan las memorias caché separadas para las instrucciones y operandos de los datos, puede experimentarse un retraso significativo si el programa se almacena en una línea de la memoria caché de la cual se buscan posteriormente las instrucciones, sin importar si el almacenamiento altera las instrucciones que se buscan posteriormente.
En un ejemplo, las modalidades pueden practicarse mediante un programa (algunas referido como un código interno autorizado, instrucciones fijas, microcódigo, milicódigo, picocódigo y lo similar, cualquiera de las cuales sería consistente con una o más modalidades). Refiriéndose a la Figura 16, el código del programa que incorpora uno o más aspectos, puede accesarse por el procesador 5001 el sistema central 5000 de los dispositivos del medio de almacenamiento a largo plazo 5011, tales como una unidad CD-ROM, una unidad de cinta o un disco duro. El código del programa puede incorporarse en cualquiera de una variedad de medios conocidos para utilizarse con el sistema de procesamiento de datos, tales como un disquete, disco duro o CD-ROM. El código puede distribuirse en tal medio, o puede distribuirse a los usuarios de la memoria de la computadora 5002 o el almacenamiento de un sistema de computadora en una red 5010 a otros sistemas de computadora para utilizarse por los usuarios de tales otros sistemas.
El código del programa incluye un sistema operativo que controla la función e interacción de los varios componentes de la computadora y uno o más programas de aplicación. El código del programa se pagina normalmente en el dispositivo del medio de almacenamiento 5011 al almacenamiento de computadora de velocidad relativamente más alta 5002, en donde está disponible para procesamiento por el procesador 5001. Las téenicas y métodos para incorporar el código del programa en la memoria, en el medio físico y/o distribuir el código del programa vía redes, son bien conocidos y no se discutirán adicionalmente en el presente documento. El código del programa, cuando se crea y almacena en un medio tangible (incluyendo de manera no exclusiva, los módulos de memoria electrónica (RAM), memoria instantánea, Discos Compactos (CD), DVD, Cinta Magnética y lo similar, con frecuencia se refiere como un "producto de programa de computadora". El medio del producto de programa de computadora es típicamente legible por un circuito de procesamiento, de manera preferida, en un sistema de computadora para la ejecución por el circuito de procesamiento.
La Figura 17 ilustra una estación de trabajo o sistema de elementos físicos del servidor representativo, en el cual una o más modalidades pueden practicarse. El sistema 5020 de la Figura 17 comprende un sistema de computadora base 5021 representativo, tal como una computadora personal, una estación de trabajo o un servidor, incluyendo los dispositivos periféricos opcionales. El sistema de computadora base 5021 incluye uno o más procesadores 5026 y un bus empleado para conectar y habilitar la comunicación entre el procesador 5026 y los otros componentes del sistema 5021, de acuerdo con téenicas conocidas. El bus conecta el procesador 5026 a la memoria 5025 y al almacenamiento a largo plazo 5027, que puede incluir un disco duro (incluyendo cualquiera de un medio magnético, CD, DVD y Memoria Instantánea, por ejemplo) o una unidad de cinta, por ejemplo. El sistema 5021 puede también incluir un adaptador de la interfaz del usuario, que conecta el microprocesador 5026 vía el bus a uno o más dispositivos de interconexión, tales como un teclado 5024, un ratón 5023, una impresora/escáner 5030 y/u otros dispositivos de interconexión, que pueden ser cualquier dispositivo de interfaz del usuario, tales como una pantalla sensible al tacto, almohadilla de entrada digitalizada, etc. El bus también conecta un dispositivo de representación 5022, tal como una pantalla o monitor LCD, al microprocesador 5026 vía un adaptador de la pantalla.
El sistema 5021 puede comunicarse con las otras computadores o redes de computadoras por medio de un adaptador de la red capaz de comunicarse 5028 con una red 5029. Los adaptadores de la red ejemplares son canales de comunicaciones, redes de anillo, Ethernet o módems. De manera alterna, el sistema 5021 puede comunicarse utilizando una interfaz inalámbrica, tal como una tarjeta CDPD (datos del paquete digital celular). El sistema 5021 puede asociarse con tales otras computadoras en una Red de Área Local (LAN), o una Red de Área Ancha (WAN), o el sistema 5021 puede ser un cliente en un arreglo de cliente/servidor con otra computadora, etc. Todas estas configuraciones, así como los elementos físicos y programas de comunicaciones apropiados, son conocidos en la téenica.
La Figura 18 ilustra una red de procesamiento de datos 5040 en la cual una o más modalidades pueden practicarse. La red de procesamiento de datos 5040 puede incluir una pluralidad de redes individuales, tales como una red inalámbrica y una red alámbrica, cada una de las cuales puede incluir una pluralidad de estaciones de trabajo individuales 5041, 5042, 5043, 5044. Además, como apreciarán aquellos con experiencia en la técnica, una o más LAN pueden incluirse, en donde una LAN puede comprender una pluralidad de estaciones de trabajo inteligentes acopladas a un procesador central.
Refiriéndose todavía a la Figura 18, las redes también pueden incluir computadoras o servidores centrales, tales como una computadora pasarela (servidor del cliente 5046) o servidor de la aplicación (servidor remoto 5048 que puede tener acceso a un depósito de datos, y puede también accesarse directamente de una estación de trabajo 5045). Una computadora pasarela 5046 sirve como un punto de entrada en cada red individual. Una pasarela se necesita cuando se conecta un protocolo de la red con otro. La pasarela 5046 puede acoplarse de manera preferida a otra red (la Internet 5047, por ejemplo), por medio de un enlace de comunicaciones. La pasarela 5046 también puede acoplarse directamente a una o más estaciones de trabajo 5041, 5042, 5043, 5044 utilizando un enlace de comunicación. La computadora pasarela puede implementarse utilizando un servidor z eServer System de IBM, disponible de International Business Machines Corporation.
Refiriéndose de manera concurrente a la Figura 17 y la Figura 18, el código de programación 5031 que puede incorporar una o más modalidades, puede accesarse por el procesador 5026 del sistema 5020 del medio de almacenamiento a largo plazo 5027, tal como una unidad CD-ROM o disco duro. El código de programación puede incorporarse en cualquiera de una variedad de medios conocidos para utilizarse con un sistema de procesamiento de datos, tal como un disquete, disco duro o CD-ROM. El código puede distribuirse en tal medio, o puede distribuirse a los usuarios 5050, 5051 de la memoria o el almacenamiento de un sistema de computadora sobre una red a otros sistemas de computadora para utilizarse por los usuarios de tales otros sistemas.
De manera alterna, el código de programación puede incorporarse en la memoria 5025, y accesarse por el procesador 5026 utilizando el bus del procesador. Tal código de programación incluye un sistema operativo que controla la función interacción de los varios componentes de la computadora y uno o más programas de aplicación 5032. El código del programa se pagina normalmente del medio de almacenamiento 5027 a una memoria de alta velocidad 5025, en donde está disponible para el procesamiento por el procesador 5026. Las téenicas y métodos para incorporar el código de programación en la memoria, en el medio físico, y/o distribuir el código del programa vía redes, son bien conocidos, y no se discutirán adicionalmente en el presente documento. El código del programa, cuando se crea y almacena en un medio tangible (incluyendo de manera no exclusiva, los módulos de memoria electrónica (RAM), memoria instantánea, Discos Compactos (CD), DVD, Cinta Magnética y lo similar, con frecuencia se refiere como un "producto de programa de computadora". El medio del producto de programa de computadora es típicamente legible por un circuito de procesamiento, de manera preferida, en un sistema de computadora para la ejecución por el circuito de procesamiento.
La memoria caché que está más fácilmente disponible al procesador (normalmente más rápida y más pequeña que otras memorias caché del procesador), es la memoria caché más baja (L1 o nivel uno) y el almacenamiento principal (memoria principal) es la memoria caché de nivel más alto (L3 si hay 3 niveles). La memoria caché de nivel más bajo se divide con frecuencia en una memoria caché de la instrucción (I-Memoria Caché) que mantiene las instrucciones de la máquina a ser ejecutadas y una memoria caché de datos (D-Memoria Caché) que mantiene los operandos de los datos.
Refiriéndose a la Figura 19, una modalidad del procesador ejemplar se describe para el procesador 5026. Típicamente, uno o más niveles de la memoria caché 5053 se emplean para los bloques de la memoria intermedia con el fin de mejorar el desempeño del procesador. La memoria caché 5053 es una memoria intermedia de alta velocidad que mantiene las líneas de la memoria caché de los datos de la memoria que se utilizan probablemente. Las líneas de la memoria caché típicas son de 64, 128 ó 256 bytes de datos de memoria. Las memorias caché separadas se emplean con frecuencia para el almacenamiento provisional de los datos. La coherencia de la memoria caché (sincronización de las copias de las líneas en la memoria y en las memorias caché), se proporciona con frecuencia por varios algoritmos "espía" bien conocidos en la téenica. El almacenamiento de la memoria principal 5025 de un sistema del procesador se refiere con frecuencia como una memoria caché. En un sistema de procesador que tiene 4 niveles de memoria caché 5053, el almacenamiento principal 5025 es referido algunas veces como la memoria caché de nivel 5 (L5), puesto que es típicamente más rápido y sólo mantiene una porción del almacenamiento no volátil (DASD, cinta, etc.), que está disponible para un sistema de computadora. El almacenamiento principal 5025 "almacena provisionalmente" las páginas de datos paginadas dentro y fuera del almacenamiento principal 5025 por el sistema operativo.
Un contador del programa (contador de la instrucción) 5061 mantiene el rastro de la dirección de la instrucción actual a ser ejecutada. Un contador del programa en un procesador de la z/Architecture es de 64 bits y puede truncarse a 31 ó 24 bits para soportar límites de direccionamiento previos. Un contador del programa es incorporado típicamente en una PSW (palabra de estado del programa) de una computadora, de manera que persiste durante el cambio del contexto. Así, un programa en progreso, que tiene un valor del contador del programa, puede interrumpirse, por ejemplo, por el sistema operativo (cambio del contexto del medio programa al medio del sistema operativo). La PSW del programa mantiene el valor del contador del programa mientras el programa no está activo, y el contador del programa (en la PSW) del sistema operativo se utiliza mientras que el sistema operativo se está ejecutando. Típicamente, el contador del programa se incrementa por una cantidad igual al número de bytes de la instrucción actual. Las instrucciones RISC (Cálculo del Conjunto de Instrucciones Reducidas) son típicamente de longitud fija, mientras que las instrucciones CISC (Cálculo del Conjunto de Instrucciones Complejas), son típicamente de longitud variable. Las instrucciones en la z/Architecture de IBM son instrucciones CISC que tienen una longitud de 2, 4 ó 6 bytes. El contador del Programa 5061 se modifica por una operación de cambio del contexto o una operación de tomar una bifurcación de una instrucción de bifurcación, por ejemplo. En una operación de cambio del contexto, el valor del contador del programa actual se guarda en la palabra de estado del programa junto con la otra información del estado sobre el programa que se está ejecutando (tales como los códigos de la condición), y un nuevo valor del contador del programa se carga apuntando a una instrucción de un nuevo módulo del programa a ser ejecutado. Una operación de bifurcación tomada se realiza con el fin de permitir que el programa tome decisiones o haga un bucle dentro del programa para cargar el resultado de la instrucción de bifurcación en el contador del programa 5061.
Típicamente, una unidad de búsqueda de la instrucción 5055 se emplea para buscar las instrucciones a nombre del procesador 5026. La unidad de búsqueda busca ya sea las "siguientes instrucciones secuenciales", las instrucciones objetivo de las instrucciones de tomar la bifurcación, o la primera instrucción de un programa después de un cambio del contexto. Las unidades de búsqueda de Instrucciones Modernas con frecuencia emplean téenicas de prebúsqueda para prebuscar de manera especulativa instrucciones basadas en la probabilidad de que las instrucciones prebuscadas puedan utilizarse. Por ejemplo, una unidad de búsqueda puede buscar 16 bytes de la instrucción que incluye la siguiente instrucción secuencial y los bytes adicionales de las instrucciones secuenciales más lejanas.
Las instrucciones buscadas son ejecutadas a continuación por el procesador 5026. En una modalidad, las instrucciones buscadas se pasan a una unidad de envío 5056 de la unidad de búsqueda. La unidad de envío decodifica las instrucciones y envía la información sobre las instrucciones decodificadas a las unidades apropiadas 5057, 5058, 5060. Una unidad de ejecución 5057 recibirá típicamente la información sobre las instrucciones aritméticas decodificadas de la unidad de búsqueda de instrucciones 5055, y realizará las operaciones aritméticas en los operandos de acuerdo con el opcode de la instrucción. Los operandos se proporcionan a la unidad de ejecución 5057 de manera preferida de la memoria 5025, los registros diseñados 5059 o del campo inmediato de la instrucción siendo ejecutada. Los resultados de la ejecución, cuando se almacenan, se almacenan ya sea en la memoria 5025, los registros 5059 o en otros elementos físicos de la máquina (tales como los registros de control, registros de PSW y lo similar).
Las direcciones virtuales se transforman en direcciones reales utilizando la traducción dinámica de la traducción 5062 y, opcionalmente, utilizando la transacción del registro de acceso 5063.
Un procesador 5026 típicamente tiene una o más unidades 5057, 5058, 5060 para ejecutar la función de la instrucción. Refiriéndose a la Figura 20A, una unidad de ejecución 5057 puede comunicarse 5071 con los registros generales diseñados 5059, una unidad de decodificación/envío 5056, una unidad de almacenamiento de la carga 5060, y otras 5065 unidades del procesador por medio de un lógico de interconexión 5071. Una unidad de ejecución 5057 puede emplear varios circuitos de registro 5067, 5068, 5069 para mantener la información que operará en la unidad del lógico aritmético (ALU) 5066. La ALU realiza las operaciones aritméticas tales como suma, resta, multiplicación y división, así como las funciones lógicas tales como and, or y exclusive-or (XOR), girar y cambiar. De manera preferida, la ALU apoya las operaciones especializadas que son dependientes del diseño. Otros circuitos pueden proporcionar otras instalaciones diseñadas 5072 incluyendo los códigos de la condición y el lógico de soporte de la recuperación, por ejemplo. Típicamente, el resultado de una operación ALU se mantiene en un circuito de registro de salida 5070 que puede enviar el resultado a una variedad de otras funciones de procesamiento. Existen muchos arreglos de unidades del procesador, la presente descripción sólo pretende proporcionar un entendimiento representativo de una modalidad.
Una instrucción SUMAR, por ejemplo, se ejecutaría en una unidad de ejecución 5057 que tiene funcionalidad aritmética y lógica, mientras que una instrucción del punto flotante, por ejemplo, se ejecutaría en una ejecución del punto flotante que tiene una capacidad de punto flotante especializada. De manera preferida, una unidad de ejecución opera en operandos identificados por una instrucción, realizando una función definida por el opcode en los operandos. Por ejemplo, una instrucción SUMAR puede ejecutarse por una unidad de ejecución 5057 en los operandos encontrados en los dos registros 5059 identificados por los campos del registro de la instrucción.
La unidad de ejecución 5057 realiza la adición aritmética de dos operandos y almacena el resultado en un tercer operando, en donde el tercer operando puede ser un tercer registro o uno de los dos registros de origen. La unidad de ejecución de manera preferida utiliza una Unidad Lógica Aritmética (ALU) 5066, que es capaz de realizar una variedad de funciones lógicas tales como Cambiar, Girar, And, Or y XOR, así como una variedad de funciones algebraicas incluyendo cualquiera de suma, resta, multiplicación, división. Algunas ALU 5066 se diseñan para operaciones escalares y algunas para el punto flotante. Los datos pueden ser de Formato Inverso (Big Endian) (en donde el byte menos significativo está en la dirección del byte más alta), o de Formato Directo (Little Endian) (en donde el byte menos significativo está en la dirección del byte más baja), dependiendo de la arquitectura. La z/Architecture de IBM es Big Endian. Los campos signados pueden ser signo y magnitud, complemento a l o complemento a 2 dependiendo de la arquitectura. Un número de complemento a 2 es ventajoso en que la ALU no necesita diseñar una capacidad de restar, puesto que un valor negativo o un valor positivo en el complemento a 2 requiere sólo una adición dentro de la ALU. Los números se describen comúnmente en forma abreviada, en donde un campo de 12 bits define una dirección de un bloque de 4,096 bytes y se describe comúnmente como un bloque de 4 Kbytes (Kilobyte), por ejemplo.
Refiriéndose a la Figura 20B, la información de la instrucción de bifurcación para ejecutar una instrucción de bifurcación se envía típicamente a una unidad de bifurcación 5058 que con frecuencia emplea un algoritmo de predicción de la bifurcación, tal como una tabla del historial de la bifurcación 5082 para predecir el resultado de la bifurcación antes de que otras operaciones condicionales se terminen. El objetivo de la instrucción de bifurcación actual se buscará y ejecutará de manera especulativa antes de que las operaciones condicionales se terminen. Cuando las operaciones condicionales se terminan, las instrucciones de bifurcación ejecutadas de manera especulativa se terminan o descargan basándose en las condiciones de la operación condicional y el resultado especulado. Una instrucción de bifurcación típica puede probar los códigos de la condición y bifurcarse a una dirección objetivo si los códigos de la condición cumplen con el requisito de bifurcación de la instrucción de bifurcación, una dirección objetivo puede calcularse basándose en varios números, incluyendo unos encontrados en los campos de registro o en un campo intermedio de la instrucción, por ejemplo. La unidad de bifurcación 5058 puede emplear una ALU 5074 que tiene una pluralidad de circuitos de registro de entrada 5075, 5076, 5077 y un circuito de registro de salida 5080. La unidad de bifurcación 5058 puede comunicarse 5081 con los registros generales 5059, la unidad de decodificación/envío 5056 u otros circuitos 5073, por ejemplo.
La ejecución de un grupo de instrucciones puede interrumpirse por una variedad de razones, incluyendo un cambio del contexto iniciado por un sistema operativo, una excepción del programa o un error que causa un cambio del contexto, una señal de interrupción I/O que causa un cambio del contexto o una actividad con múltiples subprocesos de una pluralidad de programas (en un medio con múltiples subprocesos), por ejemplo. De manera preferida una acción de cambio del contexto guarda la información del estado sobre un programa que se ejecuta actualmente, y a continuación carga la información del estado sobre otro programa que es invocado. La información del estado puede guardarse en los registros de los elementos físicos o en una memoria, por ejemplo. La información del estado comprende de manera preferida un valor del contador del programa que apunta a la siguiente instrucción a ser ejecutada, códigos de condición, información de traducción de la memoria y contenido del registro diseñado. Una actividad de cambio del contexto puede ejercerse por circuitos de los elementos físicos, programas de aplicación, programas del sistema operativo o código de las instrucciones fijas (microcódigo, picocódigo o código interno autorizado (LIC)), solos o en combinación.
Un procesador accede a los operandos de acuerdo con los metodos definidos por la instrucción. La instrucción puede proporcionar un operando inmediato utilizando el valor de una porción de la instrucción, puede proporcionar uno o más campos de registro apuntando de manera explícita a los registros de propósito general o a los registros de propósito especial (registros del punto flotante, por ejemplo). La instrucción puede utilizar los registros implicados identificados por un campo de opcode como operandos. La instrucción puede utilizar instrucciones de la memoria para los operandos. Una ubicación de la memoria de un operando puede proporcionarse por un registro, un campo inmediato o una combinación de registros y el campo inmediato como se ejemplifica por la instalación de desplazamiento largo de la z/Architecture, en donde la instrucción define un registro de base, un registro de índice y un campo inmediato (campo de desplazamiento), que se suman juntos para proporcionar la dirección del operando en la memoria, por ejemplo. La ubicación aquí, típicamente implica una ubicación en la memoria principal (almacenamiento principal), a menos que se indique de otra manera.
Refiriéndose a la Figura 20C, un procesador accesa al almacenamiento utilizando una unidad de carga/almacenamiento 5060. La unidad de carga/almacenamiento 5060 puede realizar una operación de carga obteniendo la dirección del operando objetivo en la memoria 5053, y cargando el operando en un registro 5059 u otra ubicación de la memoria 5053, o puede realizar una operación de almacenamiento, obteniendo la dirección del operando objetivo en la memoria 5053 y almacenando los datos obtenidos de un registro 5059 u otra ubicación de la memoria 5053 en la ubicación del operando objetivo, en la memoria 5053. La unidad de carga/almacenamiento 5060 puede ser especulativa y puede accesar a la memoria en una secuencia que está fuera del orden relativo a la secuencia de la instrucción, sin embargo, la unidad de carga/almacenamiento 5060 debe mantener la apariencia para los programas, de que las instrucciones se ejecutaron en orden. Una unidad de carga/almacenamiento 5060 puede comunicarse 5084 con los registros generales5059, la unidad de decodificación/envío 5056, la interconexión de la memoria caché/memoria 5053 u otros elementos 5083, y comprende varios circuitos de registro 5086, 5087, 5088 y 5089, ALU 5085 y lógico de control 5090 para calcular las direcciones de almacenamiento, y para proporcionar un secuenciamiento del flujo para mantener las operaciones en orden. Algunas operaciones pueden estar fuera del orden, pero la unidad de carga/almacenamiento proporciona la funcionalidad para hacer que las operaciones fuera del orden parezcan al programa como que se han realizado en orden, como es bien conocido en la téenica.
De manera preferida, las direcciones que un programa de aplicación "ve", son referidas con frecuencia como direcciones virtuales. Las direcciones virtuales son referidas algunas veces como direcciones lógicas" y "direcciones efectivas". Estas direcciones virtuales son virtuales en que están redirigidas a la ubicación de la memoria física por una de una variedad de teenologías de traducción dinámica de la dirección (DAT) incluyendo, de manera no exclusiva, simplemente prefijando una dirección virtual con un valor compensado, traducir la dirección virtual vía una o más tablas de traducción, las tablas de traducción de manera preferida, comprenden al menos una tabla del segmento y una tabla de la página, solas o en combinación , de manera preferida, la tabla del segmento tiene una indicación de entrada para la tabla de la página. En la z/Architecture, se proporciona una jerarquía de la traducción que incluye una primera tabla de la región, una segunda tabla de la región, una tercera tabla de la región, una tabla del segmento y una tabla de la página opcional. El desempeño de la traducción de la dirección se mejora con frecuencia utilizando una memoria intermedia de traducción anticipada de instrucciones (TLB), que comprende entradas que forman el mapa de una dirección virtual para una ubicación de la memoria física asociada. Las entradas se crean cuando la DAT traduce una dirección virtual utilizando las tablas de traducción. El uso posterior de la dirección virtual puede utilizar entonces, la entrada del TLB rápido más que los accesos secuenciales lentos de la tabla de traducción. El contenido del TLB puede manejarse por una variedad de algoritmos de reemplazo, incluyendo LRU (utilizado Menos Recientemente).
En el caso en donde el procesador es un procesador de un sistema con múltiples procesadores, cada procesador tiene la responsabilidad de mantener los recursos compartidos, tales como 1/0 , memorias intermedias, TLB y memoria, bloqueados para la coherencia. Típicamente, las teenologías "espía" se utilizarán para mantener la coherencia de la memoria caché. En un ambiente espía, cada línea de la memoria caché puede marcarse como que está en cualquiera de un estado compartido, un estado exclusivo, un estado cambiado, un estado inválido y lo similar, con el fin de facilitar el compartimiento.
Las unidades 1/0 5054 (Figura 19) proporcionan al procesador con medios para unirse a los dispositivos periféricos, incluyendo cintas, discos, impresoras, pantallas y redes, por ejemplo. Las unidades 1/0 se presentan con frecuencia al programa de la computadora por los controladores del programa. En las computadoras centrales, tales como el System z de IBM , los adaptadores del canal y los adaptadores del sistema abierto son unidades 1/0 de la computadora central, que proporcionan las comunicaciones entre el sistema operativo y los dispositivos periféricos.
Además, otros tipos de entornos de computación pueden beneficiarse de uno o más aspectos. Como un ejemplo, un entorno puede incluir un emulador (por ejemplo, programa u otros mecanismos de emulación), en el cual una arquitectura particular (incluyendo, por ejemplo, la ejecución de la instrucción, funciones diseñadas, tales como traducción de la dirección y registros diseñados), o un subconjunto de la misma se emula (por ejemplo, en un sistema de computadora nativa que tiene un procesador y una memoria). En tal entorno, una o más funciones de emulación del emulador pueden implementar una o más modalidades, aunque una computadora que ejecuta el emulador puede tener una arquitectura diferente que las capacidades siendo emuladas. Como un ejemplo, en el modo de emulación, la instrucción u operación específica siendo emulada se decodifica, y una función de emulación apropiada se construye para implementar la instrucción u operación individual.
En un entorno de emulación, una computadora central incluye, por ejemplo, una memoria para almacenar las instrucciones y datos, una unidad de búsqueda de las instrucciones para buscar las instrucciones de una memoria y opcionalmente, proporcionar el almacenamiento local para la instrucción buscada, una unidad de decodificación de la instrucción para recibir las instrucciones buscadas y determinar el tipo de instrucciones que se han buscado; y una unidad de ejecución de la instrucción para ejecutar las instrucciones. La ejecución puede incluir cargar los datos en un registro de la memoria, almacenar los datos nuevamente en la memoria de un registro, o realizar algún tipo de operación aritmética o lógica, como se determina por la unidad de decodificación. En un ejemplo, cada unidad se implementa en el programa. Por ejemplo, las operaciones siendo realizadas por las unidades se implementan como una o más subrutinas dentro de un programa del emulador.
Más particularmente, en una computadora central, las instrucciones de la máquina diseñadas se utilizan por los programadores, usualmente los programadores "C" actuales, con frecuencia por medio de una aplicación del recopilador. Estas instrucciones almacenadas en el medio de almacenamiento pueden ejecutarse de manera nativa en un Servidor de z/Architecture de IBM*, o de manera alterna, en máquinas que ejecutan otras arquitecturas. Pueden emularse en los servidores de computadora principal existente y futuros de IBM* y otras máquinas de IBM* (por ejemplo, servidores Power Systems y Servidores System x). Pueden ejecutarse en máquinas que corren Linux en una amplia variedad de máquinas utilizando los elementos físicos fabricados por IBM°, Intel8, AMD y otros. Además de la ejecución en esos elementos físicos bajo una z/Architecture, puede utilizarse Linux así como las máquinas que utilizan la emulación mediante Hercules, UMX o FSI (Fundamental Software, Inc.), en donde la ejecución generalmente está en un modo de emulación. En el modo de emulación, el programa de emulación se ejecuta por el procesador nativo para emular la arquitectura de un procesador emulado.
El procesador nativo típicamente ejecuta el programa de emulación que comprende las instrucciones físicas o un sistema operativo nativo para realizar la emulación del procesador emulado. El programa de emulación es responsable de buscar y ejecutar las instrucciones de la arquitectura del procesador emulado. El programa de emulación mantiene un contador del programa emulado para mantener el rastreo de los límites de la instrucción. El programa de emulación puede buscar una o más instrucciones de la máquina emulada a la vez, y convertir una o más instrucciones de la máquina emulada a un grupo correspondiente de instrucciones de la máquina nativa para la ejecución por el procesador nativo. Estas instrucciones convertidas puede almacenarse temporalmente de manera que puede lograrse una conversión más rápida. Sin embargo, el programa de emulación debe mantener las reglas de la arquitectura de la arquitectura del procesador emulado para asegurar que los sistemas de operación y las aplicaciones escritas por el procesador emulado operan correctamente. Además, el programa de emulación debe proporcionar recursos identificados por la arquitectura del procesador emulado incluyendo, de manera no exclusiva, registros del control, registros de propósito general, registros del punto flotante, función de traducción dinámica de la dirección, incluyendo tablas del segmento y tablas de la página, por ejemplo, mecanismos de interrupción, mecanismos de cambio del contexto, relojes de Hora del día (TOD) e interconexiones diseñadas para los subsistemas I/O, de manera que un sistema operativo o un programa de aplicación diseñado para correr en el procesador emulado, pueda correrse en el procesador nativo que tiene el programa de emulación.
Una instrucción específica siendo emulada se decodifica, y se llama a una subrutina para realizar la función de la instrucción individual. Una función del programa de emulación que emula una función de un procesador emulado, se implementa, por ejemplo, en una subrutina o controlador "C", o algún otro método para proporcionar un controlador para los elementos físicos específicos, como estará dentro de la experiencia de aquellos en la téenica después de entender la descripción de la modalidad preferida. Varias patentes de emulación del programa y elementos físicos incluyendo, de manera no exclusiva, el Documento de Patente de los Estados Unidos No. 5,551,013, titulado "Multiprocesador para Emulación de Elementos Físicos", por Beausoleil et al; y el Documento de Patente de los Estados Unidos No. 6,009,261, titulado "Preprocesamiento de Rutinas Objetivo Almacenadas para Emular Instrucciones Incompatibles en un Procesador Objetivo", por Scalzi et al; y el Documento de Patente de los Estados Unidos No. 5,574,873, titulado "Decodificación de una Instrucción Invitada para Tener Acceso Directamente a las Rutinas de Emulación que Emulan las Instrucciones Invitadas", por Davidian et al; y el Documento de Patente de los Estados Unidos No.6,308,255, titulado "Bus de Multiprocesamiento Simétrico y Microcircuito Utilizado para el Soporte del Coprocesador Permitiendo que el Código No Nativo Corra en un Sistema", por Gorishek et al; y el Documento de Patente de los Estados Unidos No. 6,463,582, titulado "Optimización Dinámica del Traductor del Código del Objeto para la Emulación de la Arquitectura y Método de Optimización Dinámica de la Traducción del Código del Objeto", por Lethin et al; y el Documento de Patente de los Estados Unidos No. 5,790,825, titulado "Método para Emular las Instrucciones Invitadas en una Computadora Central a Través de la Recopilación Dinámica de las Instrucciones Centrales", por Eric Traut,,- y muchas otras, ilustran una variedad de las maneras conocidas para lograr la emulación de un formato de la instrucción diseñado para una máquina diferente para una máquina objetivo disponible para aquellos con experiencia en la téenica.
En la Figura 21, se proporciona un ejemplo de un sistema de computadora central emulada 5092 que emula un sistema de computadora central 5000' de una arquitectura central. En el sistema de computadora central emulada 5092, el procesador central (CPU) 5091 es un procesador central emulado (o procesador central virtual), y comprende un procesador de emulación 5093 que tiene una arquitectura del conjunto de instrucciones nativas diferente que el procesador 5091 de la computadora central 5000'. El sistema de computadora central emulada 5092 tiene una memoria 5094 accesible al procesador de emulación 5093. En la modalidad ejemplar, la memoria 5094 está dividida en una porción de la memoria de la computadora 5096 y una porción de las rutinas de emulación 5097. La memoria de la computadora central 5096 está disponible a los programas de la computadora central emulada 5092 de acuerdo con la arquitectura de la computadora central. El procesador de emulación 5093 ejecuta las instrucciones nativas de un conjunto de instrucciones diseñadas de una arquitectura diferente a aquélla del procesador emulado 5091, las instrucciones nativas obtenidas de la memoria de rutinas de emulación 5097, y puede tener acceso a una instrucción central para la ejecución de un programa en una memoria de computadora central 5096, empleando una o más instrucciones obtenidas en una secuencia y rutina de acceso/decodificación, que puede decodificar las instrucciones centrales accesadas para determinar una rutina de ejecución de la instrucción nativa para emular la función de la instrucción central accesada. Otras instalaciones que se definen para la arquitectura del sistema de computadora central 5000', pueden emularse por las rutinas de las instalaciones diseñadas, incluyendo tales instalaciones como registros de propósito general, registros de control, traducción dinámica de la dirección y soporte del subsistema 1/0 y memoria caché del procesador, por ejemplo. Las rutinas de emulación también pueden aprovechar las funciones disponibles en el procesador de emulación 5093 (tales como los registros generales y la traducción dinámica de las direcciones virtuales) para mejorar el desempeño de las rutinas de emulación. Elementos físicos y motores sin carga especiales, también pueden proporcionarse para ayudar al procesador 5093 en la emulación de la función de la computadora central 5000'.
La terminología utilizada en el presente documento es para el propósito de describir las modalidades particulares únicamente, y no pretende ser limitante. Como se utiliza en el presente documento, las formas singulares "un, una" y "el, la", pretenden incluir las formas plurales también, a menos que el contexto lo indique claramente de otra manera. Se entenderá además que los términos "comprende" y/o "que comprende", cuando se utilizan en esta especificación, especifican la presencia de características, enteros, pasos, operaciones, elementos y/o componentes indicados, pero no excluyen la presencia o adición de una o más de otras características, enteros, pasos, operaciones, elementos, componentes y/o grupos de los mismos.
Las estructuras, materiales, actos y equivalentes correspondientes de todos los medios o elementos de paso más función en las reivindicaciones siguientes, si los hay, pretenden incluir cualquier estructura, material o acto para realizar la función, en combinación con otros elementos reclamados como se reclama de manera específica. La descripción de una o más modalidades se ha presentado para propósitos de ilustración y descripción, pero no pretende ser exhaustiva o limitada a la forma descrita. Muchas modificaciones y variaciones serán evidentes para aquellos con experiencia ordinaria en la téenica. La modalidad se eligió y describió con el fin de explicar mejor varios aspectos y la aplicación práctica, y para permitir a otros de experiencia ordinaria en la técnica, entender varias modalidades con varias modificaciones que son adecuadas para el uso particular contemplado.

Claims (6)

REIVINDICACIONES
1. Un metodo para facilitar el procesamiento de transacciones dentro de un entorno de computación, el método comprende los pasos de: obtener una instrucción de comienzo de la transacción, la instrucción de comienzo de la transacción comprende un opcode que especifica una instrucción de comienzo de la transacción de un tipo particular, y un campo que especifica una máscara para guardar el registro general (210) que tiene una pluralidad de bits, cada uno de los cuales representa un par de registros generales, y cuando el bit tiene un valor, el par del registro correspondiente se guarda y cuando el bit tiene otro valor, el par del registro correspondiente no se guarda, la instrucción de comienzo de la transacción es para iniciar una transacción, y la máscara para guardar el registro general especifica por lo tanto, de manera explícita, uno o más registros seleccionados del conjunto de registros generales a ser guardados al inicio de la transacción, la transacción retrasa de manera efectiva el almacenamiento transaccional asignado a la memoria principal hasta la terminación de una transacción seleccionada; y ejecutar la instrucción de comienzo de la transacción, la ejecución de la instrucción de comienzo de la transacción comprende guardar el contenido de uno o más registros seleccionados del conjunto de registros generales especificado de manera explícita en la máscara para guardar el registro general de la instrucción de comienzo de la transacción, en donde el guardado sólo guarda el contenido de uno o más registros seleccionados del conjunto de registros generales especificado de manera explícita en la máscara para guardar el registro general, e iniciar la ejecución de la transacción.
2. El método de conformidad con la reivindicación 1, en donde el método comprende además: determinar que la transacción se ha abortado; y basándose en la determinación de que la transacción se ha abortado, restablecer uno o más registros seleccionados.
3. El método de conformidad con la reivindicación 2, en donde el guardado comprende copiar el contenido de uno o más registros seleccionados a una ubicación de la memoria designada, y en donde el restablecimiento comprende copiar el contenido de la ubicación de la memoria designada a uno o más registros seleccionados.
4. El método de conformidad con la reivindicación 1, en donde la instrucción es una instrucción de comienzo de la transacción anidada más externa, de una transacción anidada, y en donde el método comprende además, abortar una transacción de la transacción anidada, y basándose en el aborto, restablecer uno o más registros seleccionados al contenido guardado, basándose en la ejecución de la instrucción de comienzo de la transacción anidada más externa.
5. Un sistema que comprende medios adaptados para llevar a cabo todos los pasos del método de conformidad con cualquier reivindicación del método anterior.
6. Un programa de computadora que comprende instrucciones para llevar a cabo todos los pasos del método de conformidad con cualquier reivindicación del método anterior, en donde el programa de computadora se ejecuta en un sistema de computadora.
MX2014015351A 2012-06-15 2012-11-26 Guardar/restablecer los registros seleccionados en el procesamiento transaccional. MX347774B (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/524,882 US9361115B2 (en) 2012-06-15 2012-06-15 Saving/restoring selected registers in transactional processing
PCT/IB2012/056733 WO2013186603A1 (en) 2012-06-15 2012-11-26 Saving/restoring selected registers in transactional processing

Publications (2)

Publication Number Publication Date
MX2014015351A true MX2014015351A (es) 2015-07-06
MX347774B MX347774B (es) 2017-05-12

Family

ID=49757037

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2014015351A MX347774B (es) 2012-06-15 2012-11-26 Guardar/restablecer los registros seleccionados en el procesamiento transaccional.

Country Status (24)

Country Link
US (3) US9361115B2 (es)
EP (1) EP2862092B1 (es)
JP (1) JP6086406B2 (es)
KR (1) KR101625323B1 (es)
CN (1) CN104364778B (es)
AU (1) AU2012382778B2 (es)
BR (1) BR112014031415B1 (es)
CA (1) CA2874179C (es)
DK (1) DK2862092T3 (es)
ES (1) ES2720133T3 (es)
HK (1) HK1207700A1 (es)
HR (1) HRP20190671T1 (es)
HU (1) HUE044044T2 (es)
IL (1) IL236250A0 (es)
LT (1) LT2862092T (es)
MX (1) MX347774B (es)
PL (1) PL2862092T3 (es)
PT (1) PT2862092T (es)
RU (1) RU2562424C2 (es)
SG (1) SG11201407471TA (es)
SI (1) SI2862092T1 (es)
TW (1) TWI559225B (es)
WO (1) WO2013186603A1 (es)
ZA (1) ZA201408073B (es)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9898330B2 (en) * 2013-11-11 2018-02-20 Intel Corporation Compacted context state management
GB2528115B (en) * 2014-07-11 2021-05-19 Advanced Risc Mach Ltd Dynamic saving of registers in transactions
US20160048679A1 (en) 2014-08-18 2016-02-18 Bitdefender IPR Management Ltd. Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine
US10061746B2 (en) * 2014-09-26 2018-08-28 Intel Corporation Instruction and logic for a vector format for processing computations
US9501386B2 (en) * 2014-12-26 2016-11-22 Microsoft Technology Licensing, Llc System testing using nested transactions
GB2549774B (en) * 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
US20180004511A1 (en) * 2016-07-01 2018-01-04 Roman Dementiev Apparatus and method for reentering a transactional sequence with hardware transactional memory
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10534609B2 (en) * 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
EP3462312B1 (en) 2017-09-29 2022-08-17 ARM Limited Permitting unaborted processing of transaction after exception mask update instruction
KR102485812B1 (ko) * 2017-12-19 2023-01-09 에스케이하이닉스 주식회사 메모리 시스템과 메모리 시스템의 동작방법 및 메모리 시스템을 포함하는 데이터 처리 시스템
US11036654B2 (en) * 2018-04-14 2021-06-15 Microsoft Technology Licensing, Llc NOP sled defense
US11113061B2 (en) * 2019-09-26 2021-09-07 Advanced Micro Devices, Inc. Register saving for function calling
US20230097279A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Convolutional neural network operations

Family Cites Families (234)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1174370A (en) 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4488227A (en) 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
US4740893A (en) * 1985-08-07 1988-04-26 International Business Machines Corp. Method for reducing the time for switching between programs
US5063497A (en) 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
US5321823A (en) * 1988-07-20 1994-06-14 Digital Equipment Corporation Digital processor with bit mask for counting registers for fast register saves
US5117498A (en) 1988-08-19 1992-05-26 Motorola, Inc. Processer with flexible return from subroutine
JPH0437927A (ja) 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
US5471591A (en) 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
JPH05197604A (ja) 1991-05-21 1993-08-06 Digital Equip Corp <Dec> マルチプロセッサ・コンピュータ及びその動作方法
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5274817A (en) 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
US5359608A (en) 1992-11-24 1994-10-25 Amdahl Corporation Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5925125A (en) 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5748964A (en) 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5655100A (en) 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
EP0870228B1 (en) 1995-10-06 2003-08-13 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
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
TW384447B (en) 1996-01-22 2000-03-11 Infinite Technology Inc Processor with reconfigurable arithmetic data path
JPH103416A (ja) 1996-06-14 1998-01-06 Canon Inc 情報処理装置およびその方法
US6035313A (en) 1997-03-24 2000-03-07 Motorola, Inc. Memory address generator for an FFT
US5870582A (en) 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US5937199A (en) 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
JP3546678B2 (ja) 1997-09-12 2004-07-28 株式会社日立製作所 マルチos構成方法
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US5938778A (en) 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
KR100246537B1 (ko) 1997-11-25 2000-03-15 정선종 코드분할 다중접속 시스템에서 파일럿 심벌을 이용한 동기식이중 채널 큐피에스케이 송수신기의 구조
SE9704476L (sv) 1997-12-02 1999-06-23 Ericsson Telefon Ab L M Utökad instruktionsavkodning
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
US6202067B1 (en) 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US6119129A (en) 1998-05-14 2000-09-12 Sun Microsystems, Inc. Multi-threaded journaling in a configuration database
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
EP0992916A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
EP0992907B1 (en) 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
US6151669A (en) 1998-10-10 2000-11-21 Institute For The Development Of Emerging Architectures, L.L.C. Methods and apparatus for efficient control of floating-point status register
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6738892B1 (en) 1999-10-20 2004-05-18 Transmeta Corporation Use of enable bits to control execution of selected instructions
US6604188B1 (en) 1999-10-20 2003-08-05 Transmeta Corporation Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction
JP3776653B2 (ja) 1999-11-24 2006-05-17 富士通株式会社 演算処理装置
US6754809B1 (en) 1999-12-30 2004-06-22 Texas Instruments Incorporated Data processing apparatus with indirect register file access
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6665863B1 (en) 2000-05-31 2003-12-16 Microsoft Corporation Data referencing within a database graph
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
AU2001283163A1 (en) 2000-08-04 2002-02-18 Carr Scott Software Incorporated Automatic transaction management
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US7111141B2 (en) * 2000-10-17 2006-09-19 Igt Dynamic NV-RAM
US6671686B2 (en) 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7346632B2 (en) 2001-02-22 2008-03-18 International Business Machines Corporation Mechanism for executing nested transactions in an execution environment supporting flat transactions only
US6963919B1 (en) 2001-02-28 2005-11-08 Agilent Technologies, Inc. Method and system for improving computer network performance
US6745272B2 (en) 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7185234B1 (en) 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
US7305678B2 (en) 2001-05-17 2007-12-04 International Business Machines Corporation Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server
US7613762B2 (en) 2001-05-25 2009-11-03 Sun Microsystems, Inc. Floating point remainder with embedded status information
KR100625595B1 (ko) 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7185183B1 (en) 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US20060218556A1 (en) 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7174463B2 (en) 2001-10-04 2007-02-06 Lenovo (Singapore) Pte. Ltd. Method and system for preboot user authentication
US7313734B2 (en) 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US7546446B2 (en) 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US7496494B2 (en) 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US6892286B2 (en) 2002-09-30 2005-05-10 Sun Microsystems, Inc. Shared memory multiprocessor memory model verification system and method
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7634638B1 (en) 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
US7568023B2 (en) 2002-12-24 2009-07-28 Hewlett-Packard Development Company, L.P. Method, system, and data structure for monitoring transaction performance in a managed computer network environment
US7089374B2 (en) * 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US6862664B2 (en) 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7398355B1 (en) 2003-02-13 2008-07-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7398359B1 (en) 2003-04-30 2008-07-08 Silicon Graphics, Inc. System and method for performing memory operations in a computing system
CA2472887A1 (en) 2003-06-30 2004-12-30 Gravic, Inc. Methods for ensuring referential integrity in multithreaded replication engines
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7197586B2 (en) 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
US7206903B1 (en) 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US7703098B1 (en) 2004-07-20 2010-04-20 Sun Microsystems, Inc. Technique to allow a first transaction to wait on condition that affects its working set
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US8544020B1 (en) 2004-09-14 2013-09-24 Azul Systems, Inc. Cooperative preemption
US20060064508A1 (en) 2004-09-17 2006-03-23 Ramesh Panwar Method and system to store and retrieve message packet data in a communications network
US7373554B2 (en) 2004-09-24 2008-05-13 Oracle International Corporation Techniques for automatic software error diagnostics and correction
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
EP1657118A1 (en) 2004-11-11 2006-05-17 IEE INTERNATIONAL ELECTRONICS &amp; ENGINEERING S.A. Collision recognition device for a vehicle
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7631073B2 (en) 2005-01-27 2009-12-08 International Business Machines Corporation Method and apparatus for exposing monitoring violations to the monitored application
US20060212757A1 (en) 2005-03-15 2006-09-21 International Business Machines Corporation Method, system, and program product for managing computer-based interruptions
US7421544B1 (en) 2005-04-04 2008-09-02 Sun Microsystems, Inc. Facilitating concurrent non-transactional execution in a transactional memory system
US7496726B1 (en) 2005-04-18 2009-02-24 Sun Microsystems, Inc. Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode
US7464161B2 (en) 2005-06-06 2008-12-09 International Business Machines Corporation Enabling and disabling byte code inserted probes based on transaction monitoring tokens
US7350034B2 (en) 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US20070005828A1 (en) 2005-06-30 2007-01-04 Nimrod Diamant Interrupts support for the KCS manageability interface
CN1713164A (zh) * 2005-07-21 2005-12-28 复旦大学 可自主处理多事务传输要求的dma控制器及数据传输方法
JP2009508187A (ja) * 2005-08-01 2009-02-26 サン・マイクロシステムズ・インコーポレーテッド クリティカルセクションをトランザクション的に実行することによるロックの回避
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US20070136289A1 (en) 2005-12-14 2007-06-14 Intel Corporation Lock elision with transactional memory
US20070143755A1 (en) 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
US8117605B2 (en) 2005-12-19 2012-02-14 Oracle America, Inc. Method and apparatus for improving transactional memory interactions by tracking object visibility
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US7810072B2 (en) 2006-01-06 2010-10-05 International Business Machines Corporation Exception thrower
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US7669015B2 (en) 2006-02-22 2010-02-23 Sun Microsystems Inc. Methods and apparatus to implement parallel transactions
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7594094B2 (en) * 2006-05-19 2009-09-22 International Business Machines Corporation Move data facility with optional specifications
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7849446B2 (en) 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
MY149658A (en) 2006-06-12 2013-09-30 Mobile Money Internat Sdn Bhd Transaction server
US20070300013A1 (en) 2006-06-21 2007-12-27 Manabu Kitamura Storage system having transaction monitoring capability
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080016325A1 (en) 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
US7617421B2 (en) 2006-07-27 2009-11-10 Sun Microsystems, Inc. Method and apparatus for reporting failure conditions during transactional execution
US7748618B2 (en) 2006-08-21 2010-07-06 Verizon Patent And Licensing Inc. Secure near field transaction
US7865885B2 (en) 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20080086516A1 (en) 2006-10-04 2008-04-10 Oracle International Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions
DE602006008802D1 (de) 2006-11-06 2009-10-08 Gm Global Tech Operations Inc Verfahren zum Betreiben eines Partikelfilters, Programm für einen Rechner und dafür vorgesehene Regelvorrichtung
CN101178787A (zh) * 2006-11-10 2008-05-14 上海市卢湾区东南医院 用于社区老干部保健管理的信息沟通方法
US7669040B2 (en) 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
JP2008165370A (ja) 2006-12-27 2008-07-17 Internatl Business Mach Corp <Ibm> オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。
US8086827B2 (en) 2006-12-28 2011-12-27 Intel Corporation Mechanism for irrevocable transactions
US7802136B2 (en) * 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US7627743B2 (en) 2007-01-12 2009-12-01 Andes Technology Corporation Method and circuit implementation for multiple-word transfer into/from memory subsystems
US20080244544A1 (en) 2007-03-29 2008-10-02 Naveen Neelakantam Using hardware checkpoints to support software based speculation
US8332374B2 (en) 2007-04-13 2012-12-11 Oracle America, Inc. Efficient implicit privatization of transactional memory
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US7814378B2 (en) 2007-05-18 2010-10-12 Oracle America, Inc. Verification of memory consistency and transactional memory
US20080320282A1 (en) 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US8266387B2 (en) 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US7779232B2 (en) 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US8209689B2 (en) 2007-09-12 2012-06-26 Intel Corporation Live lock free priority scheme for memory transactions in transactional memory
US7904434B2 (en) 2007-09-14 2011-03-08 Oracle International Corporation Framework for handling business transactions
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US20090127332A1 (en) 2007-11-16 2009-05-21 Kyung Yang Park System for processing payment employing off-line transaction approval mode of mobile card and method thereof
US20090138890A1 (en) 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
CN101170747A (zh) 2007-11-30 2008-04-30 中兴通讯股份有限公司 中继状态调节方法和装置
US20090177530A1 (en) 2007-12-14 2009-07-09 Qualcomm Incorporated Near field communication transactions in a mobile environment
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
US8706982B2 (en) 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
US8065491B2 (en) 2007-12-30 2011-11-22 Intel Corporation Efficient non-transactional write barriers for strong atomicity
US7966459B2 (en) 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US8140497B2 (en) 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US20090182983A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Compare and Branch Facility and Instruction Therefore
US8041900B2 (en) 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8380907B2 (en) 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8161273B2 (en) * 2008-02-26 2012-04-17 Oracle America, Inc. Method and apparatus for programmatically rewinding a register inside a transaction
US8688628B2 (en) 2008-02-29 2014-04-01 Red Hat, Inc. Nested queued transaction manager
EP2096564B1 (en) 2008-02-29 2018-08-08 Euroclear SA/NV Improvements relating to handling and processing of massive numbers of processing instructions in real time
US8316366B2 (en) 2008-04-02 2012-11-20 Oracle America, Inc. Facilitating transactional execution in a processor that supports simultaneous speculative threading
US20090260011A1 (en) 2008-04-14 2009-10-15 Microsoft Corporation Command line transactions
JP5385545B2 (ja) 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US9367363B2 (en) 2008-05-12 2016-06-14 Oracle America, Inc. System and method for integrating best effort hardware mechanisms for supporting transactional memory
US8612950B2 (en) 2008-06-19 2013-12-17 Intel Corporation Dynamic optimization for removal of strong atomicity barriers
US7996686B2 (en) 2008-07-07 2011-08-09 International Business Machines Corporation Branch trace methodology
US9372718B2 (en) 2008-07-28 2016-06-21 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8191046B2 (en) 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
US20100122073A1 (en) 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
JP4702962B2 (ja) 2008-11-12 2011-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ制御装置、プログラム及び方法
US8789057B2 (en) 2008-12-03 2014-07-22 Oracle America, Inc. System and method for reducing serialization in transactional memory using gang release of blocked threads
US20100153776A1 (en) 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
US8914620B2 (en) 2008-12-29 2014-12-16 Oracle America, Inc. Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
CN101710433A (zh) 2008-12-31 2010-05-19 深圳市江波龙电子有限公司 一种电子支付卡的交易方法及电子支付卡
US9170844B2 (en) 2009-01-02 2015-10-27 International Business Machines Corporation Prioritization for conflict arbitration in transactional memory management
CN101819518B (zh) 2009-02-26 2013-09-11 国际商业机器公司 在事务内存中快速保存上下文的方法和装置
US8266107B2 (en) 2009-03-11 2012-09-11 International Business Machines Corporation Method for mirroring a log file by threshold driven synchronization
US9940138B2 (en) 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US8356166B2 (en) 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8973004B2 (en) 2009-06-26 2015-03-03 Oracle America, Inc. Transactional locking with read-write locks in transactional memory systems
US8489864B2 (en) 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
KR101370314B1 (ko) 2009-06-26 2014-03-05 인텔 코포레이션 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화
US8229907B2 (en) 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8281185B2 (en) 2009-06-30 2012-10-02 Oracle America, Inc. Advice-based feedback for transactional execution
US8688964B2 (en) 2009-07-20 2014-04-01 Microchip Technology Incorporated Programmable exception processing latency
GB2472620B (en) 2009-08-12 2016-05-18 Cloudtran Inc Distributed transaction processing
US8392694B2 (en) 2009-09-15 2013-03-05 International Business Machines Corporation System and method for software initiated checkpoint operations
GB2474446A (en) 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US8327188B2 (en) 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US8516202B2 (en) 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US8290991B2 (en) 2009-12-15 2012-10-16 Juniper Networks, Inc. Atomic deletion of database data categories
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8549468B2 (en) 2010-02-08 2013-10-01 National Tsing Hua University Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US20110208921A1 (en) 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US8739164B2 (en) 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8438568B2 (en) 2010-02-24 2013-05-07 International Business Machines Corporation Speculative thread execution with hardware transactional memory
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US8402227B2 (en) 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US8631223B2 (en) 2010-05-12 2014-01-14 International Business Machines Corporation Register file supporting transactional processing
US9626187B2 (en) 2010-05-27 2017-04-18 International Business Machines Corporation Transactional memory system supporting unbroken suspended execution
US20110302143A1 (en) 2010-06-02 2011-12-08 Microsoft Corporation Multi-version concurrency with ordered timestamps
US9880848B2 (en) 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US8560816B2 (en) * 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
US8479053B2 (en) 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US8561033B2 (en) 2010-07-30 2013-10-15 International Business Machines Corporation Selective branch-triggered trace generation apparatus and method
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8442962B2 (en) 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
US8818867B2 (en) 2011-11-14 2014-08-26 At&T Intellectual Property I, L.P. Security token for mobile near field communication transactions
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9348642B2 (en) * 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing

Also Published As

Publication number Publication date
ZA201408073B (en) 2017-08-30
EP2862092A4 (en) 2017-06-14
US20130339704A1 (en) 2013-12-19
HK1207700A1 (en) 2016-02-05
KR101625323B1 (ko) 2016-05-27
BR112014031415A2 (pt) 2017-06-27
WO2013186603A1 (en) 2013-12-19
US20130339642A1 (en) 2013-12-19
JP6086406B2 (ja) 2017-03-01
DK2862092T3 (en) 2019-04-29
TWI559225B (zh) 2016-11-21
US9361115B2 (en) 2016-06-07
RU2562424C2 (ru) 2015-09-10
IL236250A0 (en) 2015-01-29
RU2012148585A (ru) 2014-05-20
BR112014031415B1 (pt) 2021-08-10
AU2012382778B2 (en) 2016-08-18
CA2874179A1 (en) 2013-12-19
SG11201407471TA (en) 2015-01-29
KR20150016234A (ko) 2015-02-11
HUE044044T2 (hu) 2019-09-30
MX347774B (es) 2017-05-12
SI2862092T1 (sl) 2019-05-31
US9792125B2 (en) 2017-10-17
CN104364778B (zh) 2017-02-08
ES2720133T3 (es) 2019-07-18
CA2874179C (en) 2020-02-18
LT2862092T (lt) 2019-04-25
EP2862092B1 (en) 2019-03-13
PT2862092T (pt) 2019-05-13
US9367324B2 (en) 2016-06-14
AU2012382778A1 (en) 2014-12-11
US20160266907A1 (en) 2016-09-15
TW201413581A (zh) 2014-04-01
CN104364778A (zh) 2015-02-18
JP2015526790A (ja) 2015-09-10
HRP20190671T1 (hr) 2019-05-31
EP2862092A1 (en) 2015-04-22
PL2862092T3 (pl) 2019-06-28

Similar Documents

Publication Publication Date Title
US10558465B2 (en) Restricted instructions in transactional execution
US10185588B2 (en) Transaction begin/end instructions
MX2014015351A (es) Guardar/restablecer los registros seleccionados en el procesamiento transaccional.
CA2874236C (en) Transactional processing
US9983882B2 (en) Selectively controlling instruction execution in transactional processing
DK2834739T3 (en) TRANSACTION DIAGNOSTICS BLOCK
MX2014015359A (es) Ejecucion de la transaccion restringida.
DK2862057T3 (en) PROGRAM INTERRUPTION FILTERING IN TRANSACTION EXECUTION
MX2014015356A (es) Instrucción de aborto de la transacción.
MX2014015353A (es) Instalación auxiliar del procesador.

Legal Events

Date Code Title Description
FG Grant or registration