MX2014015356A - Instrucción de aborto de la transacción. - Google Patents

Instrucción de aborto de la transacción.

Info

Publication number
MX2014015356A
MX2014015356A MX2014015356A MX2014015356A MX2014015356A MX 2014015356 A MX2014015356 A MX 2014015356A MX 2014015356 A MX2014015356 A MX 2014015356A MX 2014015356 A MX2014015356 A MX 2014015356A MX 2014015356 A MX2014015356 A MX 2014015356A
Authority
MX
Mexico
Prior art keywords
transaction
instruction
code
program
execution
Prior art date
Application number
MX2014015356A
Other languages
English (en)
Other versions
MX349710B (es
Inventor
Dan Greiner
Timothy Slegel
Marcel Mitran
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 MX2014015356A publication Critical patent/MX2014015356A/es
Publication of MX349710B publication Critical patent/MX349710B/es

Links

Classifications

    • 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/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/30098Register arrangements
    • G06F9/30101Special purpose 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Una institución de ABORTO DE LA TRANSACCIÓN se utiliza para abortar una transacción que se ejecuta en un entorno de computación. La institución de ABORTO DE LA TRANSACCIÓN incluye al menos un campo utilizado para especificar un código de aborto definido por el usuario que indica la razón para abortar la transacción. Basándose en la ejecución de la instrucción de ABORTO DE LA TRANSACCIÓN, se proporciona un código de la condición que indica si la reejecución de la transacción es recomendada.

Description

INSTRUCCIÓN DE ABORTO DE LA TRANSACCIÓN CAMPO TÉCNICO 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.
ANTECEDENTES 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. Java y todas las marcas y logotipos basados en Java son marcas o marcas registradas de Oracle y/o sus afiliadas.
En los entornos de un sistema operativo clásico, tal como z/OS® de IBM 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. IBM, z/OS, z/Architecture® (referidos a continuación), z/VM® (referido a continuación), Processor Resource/Systems Manager™ (referido a continuación), Power Systems™ (referido a continuación), y System x® (referido a continuación) son marcas de International Business Machines Corporation, registradas en muchas jurisdicciones en el mundo.
Por lo tanto, existe la necesidad en la téenica de tratar el problema mencionado anteriormente.
BREVE SUMARIO Las desventajas de la técnica previa son superadas y se proporcionan ventajas a través de la provisión de un producto de programa de computadora para ejecutar una instrucción 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, obtener, por un procesador, una instrucción de la máquina para la ejecución, la instrucción de la máquina se define para la ejecución por la computadora de acuerdo con una arquitectura de la computadora, la instrucción de la máquina incluye, por ejemplo, un código de operación para especificar una operación de aborto de la transacción; y al menos un campo para especificar un código de aborto; y ejecutar, por el procesador, la instrucción de la máquina, la ejecución incluye abortar una transacción que se está ejecutando, en donde la transacción termina antes de la terminación; y basándose en el aborto, proporcionar un código de la condición, el código de la condición es para indicar si se recomienda la reejecución de la transacción.
Visto desde un primer aspecto, la presente invención proporciona un método para ejecutar una instrucción dentro de un entorno de computación, el método comprende: obtener, por un procesador, una instrucción de la máquina para la ejecución, la instrucción de la máquina se define para la ejecución por la computadora de acuerdo con una arquitectura de la computadora, la instrucción de la máquina comprende: un código de operación para especificar una operación de aborto de la transacción; y al menos un campo para especificar un código de aborto; y ejecutar, por el procesador, la instrucción de la máquina, la ejecución comprende: abortar una transacción que se está ejecutando, en donde la transacción termina antes de la terminación; y basándose en el aborto, proporcionar un código de la condición, el código de la condición es para indicar si se recomienda la reejecución de la transacción.
Visto desde un aspecto adicional, la presente invención proporciona un sistema de computadora para ejecutar una instrucción dentro de un entorno de computación, el sistema de computadora comprende: una memoria; y un procesador en comunicación con la memoria, en donde el sistema de computadora está configurado para realizar un método, el método comprende: obtener, por un procesador, una instrucción de la máquina para la ejecución, la instrucción de la máquina se define para la ejecución por la computadora de acuerdo con una arquitectura de la computadora, la instrucción de la máquina comprende: un código de operación para especificar una operación de aborto de la transacción; y al menos un campo para especificar un código de aborto; y ejecutar, por el procesador, la instrucción de la máquina, la ejecución comprende: abortar una transacción que se está ejecutando, en donde la transacción termina antes de la terminación; y basándose en el aborto, proporcionar un código de la condición, el código de la condición es para indicar si se recomienda la reejecución de la transacción.
Visto desde un aspecto adicional, la presente invención proporciona un producto de programa de computadora para ejecutar una instrucción dentro de un entorno de computación, el producto de programa de computadora comprende 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 para ejecutar los pasos de la invención.
Visto desde un aspecto adicional, la presente invención proporciona un programa de computadora almacenado en un medio legible por computadora y que se carga en la memoria interna de una computadora digital, que comprende porciones del código del programa, cuando el programa se corre en una computadora, para ejecutar los pasos de la invención.
Visto desde un aspecto adicional, la presente invención proporciona un producto de programa de computadora para ejecutar una instrucción dentro de un entorno de computación, el producto de programa de computadora comprende: 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 que comprende: obtener, por un procesador, una instrucción de la máquina para la ejecución, la instrucción de la máquina se define para la ejecución por la computadora de acuerdo con una arquitectura de la computadora, la instrucción de la máquina comprende: un código de operación para especificar una operación de aborto de la transacción; y al menos un campo para especificar un código de aborto; y ejecutar, por el procesador, la instrucción de la máquina, la ejecución comprende: abortar una transacción que se está ejecutando, en donde la transacción termina antes de la terminación; y basándose en el aborto, proporcionar un código de la condición, el código de la condición es para indicar si se recomienda la reejecución de la transacció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 LOS DIBUJOS La presente invención se describirá ahora, a manera de ejemplo únicamente, con referencia a las modalidades preferidas como se ilustra en las siguientes Figuras: La Figura 1 describe una modalidad de un entorno de computación, de acuerdo con la téenica previa, y en la cual una modalidad preferida de la presente invención puede implementarse; La Figura 2A describe un ejemplo de una instrucción de Comienzo de la Transacción (TBEGIN), de acuerdo con una modalidad preferida de la presente invención; La Figura 2B describe una modalidad de los detalles adicionales del campo de la instrucción TBEGIN de la Figura 2A, de acuerdo con una modalidad preferida de la presente invención; La Figura 3A describe un ejemplo de una instrucción restringida de Comienzo de la Transacción (TBEGINC), de acuerdo con una modalidad preferida de la presente invención; La Figura 3B describe una modalidad de los detalles adicionales de un campo de la instrucción TBEGINC de la Figura 3 A, de acuerdo con una modalidad preferida de la presente invención; La Figura 4 describe un ejemplo de una instrucción de Fin de la Transacción (TEND), de acuerdo con una modalidad preferida de la presente invención; La Figura 5 describe un ejemplo de una instrucción de Aborto de la Transacción (TABORT), de acuerdo con una modalidad preferida de la presente invención; La Figura 6 describe un ejemplo de transacciones anidadas, de acuerdo con una modalidad preferida de la presente invención; La Figura 7 describe un ejemplo de una instrucción de ALMACENAMIENTO NO TRANSACCIONAL (NTSTG), de acuerdo con una modalidad preferida de la presente invención; La Figura 8 describe un ejemplo de una instrucción de EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN (ETND), de acuerdo con una modalidad preferida de la presente invención La Figura 9 describe un ejemplo de un bloque de diagnóstico de la transacción, de acuerdo con una modalidad preferida de la presente invención; La Figura 10 describe razones ejemplares para abortar, junto con los códigos de aborto y códigos de condición asociados, de acuerdo con una modalidad preferida de la presente invención; La Figura 11 describe una modalidad del lógico asociado con el procesamiento del aborto de la transacción, de acuerdo con una modalidad preferida de la presente invención; La Figura 12 describe un ejemplo de un listado del control efectivo de filtración de interrupción del programa (PIFC) y las clases de interrupción del programa de la ejecución transaccional, de acuerdo con una modalidad preferida de la presente invención; Las Figuras 13A-13B describen un ejemplo de clases de ejecución transaccional para varias condiciones de excepción del programa, de acuerdo con una modalidad preferida de la presente invención; La Figura 14 describe un ejemplo de la prioridad de las condiciones de aborto, de acuerdo con una modalidad preferida de la presente invención; Las Figuras 15A-15B describen un ejemplo de la prioridad de las condiciones de interrupción del programa, de acuerdo con una modalidad preferida de la presente invención; Las Figuras 16A-16B describen un ejemplo de insertar un elemento de la fila en una lista doblemente vinculada de elementos de la fila, de acuerdo con una modalidad preferida de la presente invención; La Figura 17 describe una modalidad de un sistema de computadora central, de acuerdo con una modalidad preferida de la presente invención; La Figura 18 describe una modalidad de un sistema de computador central, de acuerdo con la téenica previa, y en la cual una modalidad preferida de la presente invención puede implementarse; La Figura 19 describe un ejemplo adicional de un sistema de computadora; La Figura 20 describe otro ejemplo de un sistema de computadora que comprende una red de computadoras, de acuerdo con la téenica previa, y en el cual una modalidad preferida de la presente invención puede implementarse; La Figura 21 describe una modalidad de varios elementos de un sistema de computadora, de acuerdo con una modalidad preferida de la presente invención; La Figura 22A describe una modalidad de la unidad de ejecución del sistema de computadora de la Figura 21, de acuerdo con una modalidad preferida de la presente invención; La Figura 22B describe una modalidad de la unidad de bifurcación del sistema de computadora de la Figura 21, de acuerdo con una modalidad preferida de la presente invención; La Figura 22C describe una modalidad de la unidad de carga/almacenamiento del sistema de computadora de la Figura 21, de acuerdo con una modalidad preferida de la presente invención; y La Figura 23 describe una modalidad de un sistema de computadora central emulado, de acuerdo con una modalidad preferida de la presente invención.
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 1/0, 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 incorpora y utilizar una o más de las instalaciones transaccionales descritas 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. La z/Architecture se describe en una Publicación de IBM titulada "z/Architecture - Principies of Operación", Publicación No. SA22-7932-08, 9a Edición, Agosto del 2010.
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, Armonk, 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 I/O, 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 I/O 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 Di 206 para obtener la dirección del primer operando.
Cuando el campo B1 no es cero, se aplica lo siguiente: o 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. o 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 B1 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 12 se definen como sigue, en un ejemplo: Máscara para Guardar el Registro General (GRSM) 210 (Figura 2B): 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 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 (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 (Bc) 304; un campo de desplazamiento (Dx) 306; y un campo inmediato (I2) 308. El contenido del registro general especificado por Bx 304 se agrega a Dx 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 Bx 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 1/0. Como se observa por otras CPU y por el subsistema I/O, 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: o Está disponible un subconjunto de instrucciones generales. o Puede ejecutarse un número limitado de instrucciones. o Puede tenerse acceso a un número limitado de ubicaciones del operando de almacenamiento. o 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 1/0 son accesos no transaccionales. Además, la instrucción de ALMACENAMIENTO 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 agrega al contenido de una concatenación de los campos 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 DH2 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ó 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 está sometida 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 I/O, 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 terminos 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 Rx. 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 de anidación de la transacción máxima tambien se coloca en el registro general Rx, 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: o 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. o 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 Bi 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 B 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. T TDDBB especificado por TBEGIN: Para una transacción no restringida, cuando el campo B1 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 B1 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: o 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. o Búsqueda de una instrucción del área de almacenamiento designada. o 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. o Ejecución de una instrucción de ALMACENAR UTILIZANDO DIRECCIÓN REAL. o 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 (ATIA) 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 bits 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 eventos 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 (PIID) 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 transacciones 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 la longitud de la instrucción en los bits 13-14 de la PIID es con respecto a la instrucción en la cual se detectó la condición de la 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. o Lista de acceso controlada o protección DAT o Tipo ASCE o Traducción de la página o Región de la primera traducción o Región de la segunda traducción o Región de la tercera traducción o 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 (CIJ, 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.
J 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.
J 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. o EXTRAER PROFUNDIDAD DE ANIDACIÓN DE LA TRANSACCIÓN o ALMACENAMIENTO NO TRANSACCIONAL o ABORTO DE LA TRANSACCIÓN O COMIENZO DE LA TRANSACCIÓN o 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 Mi es 6 ó 7; ALMACENAR CARACTERES BAJO MÁSCARA ALTA, cuando el campo M3 es cero y el código en el campo R1 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: o 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. o 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, o 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 ALMACENA IENTO; RELOJ DE ALMACENAMIENTO EXTENDIDO; y RELOJ DE ALMACENAMIENTO 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 una 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 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 la ejecución intentada de DATOS DE PREBÚSQUEDA (RELATIVAMENTE LARGOS) cuando el código en el campo Mi 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 la 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 I/O (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 1/0 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 1/0.
Los detalles adicionales con respecto al procesamiento asociado con las transacciones restringidas y no restringidas, incluyendo el procesamiento asociado con el inicio de una transacción vía TBEGINC y TBEGIN, respectivamente, se proporcionan a continuación.
En un ejemplo, el procesamiento asociado con el inicio de una transacción restringida vía, por ejemplo, TBEGINC 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 Especificación excepción (PIC (Código de Interrupción del Programa) 0006) si el campo Bi 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 Además, en una modalidad, el procesamiento asociado con el inicio de una transacción no restringida vía, por ejemplo, TBEGIN es como sigue: • Si TND = 0: o Si Bi¹ 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 de registros generales 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 o A Efectivo = TBEGIN A y cualquier A externo o 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 PIC 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 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 i/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 I/O 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 I/O 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 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 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 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 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.
Cuando se aplican múltiples condiciones de aborto, es impredecible cuál código de aborto es reportado por la CPU.
Como se indicó anteriormente, una transacción may abortarse de manera implícita o abortarse de manera explícita. Si la CPU está en el modo de ejecución no restringida, una transacción puede abortarse de manera explícita por la ejecución de una instrucción de ABORTO DE LA TRANSACCIÓN. La dirección del segundo operando de la instrucción, formado combinando el contenido del registro especificado por el campo B2 y D2 cuando el campo B2 no es cero, no se utiliza para los datos de la dirección; en su lugar, la dirección especificada por los campos B2 y D2 forma el código de aborto de la transacción, que se coloca en el bloque de diagnóstico de la transacción durante el procesamiento del aborto. Cuando el campo B2 es cero, la dirección del segundo operando se forma únicamente del campo D2. 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, bits 0-39 se establecen a ceros; en el modo de direccionamiento de 31 bits, los bits 0-32 se establecen a ceros. El código de la condición en la PSW para aborto de la transacción se establece a 2 ó 3, dependiendo si el bit 63 de la dirección del segundo operando es cero o uno, respectivamente.
Cuando ABORTO DE LA TRANSACCIÓN es el objetivo de una instrucción del tipo ejecutar, la operación se suprime y se reconoce una excepción de la ejecución.
Una excepción de la especificación se reconoce y la operación se suprime si la dirección del segundo está entre 0 y 255.
Una excepción de operación especial se reconoce y la operación se suprime si la CPU no está en el modo de ejecución transaccional al inicio de la instrucción.
Si la CPU está en el modo de ejecución transaccional restringida, se reconoce una condición de excepción del programa de restricción de la transacción.
Código de la Condición: El código permanece sin cambio. Sin embargo, el código de la condición de la PSW para aborto de la transacción se establecerá por el procesamiento de aborto de la transacción subsiguiente.
Excepciones del Programa: • Ejecutar • 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) Notas: 1. Si un control de ejecución transaccional, bit 8 del registro de control 0, es cero, la CPU no puede estar en el modo de ejecución transaccional; la ejecución intentada de ABORTO DE LA TRANSACCIÓN en este caso, resulta en una excepción de operación especial. 2. Los códigos de aborto 0-255 se reservan para las transacciones que son abortadas de manera implícita por la CPU. Si el programa especifica cualquiera de estos códigos en la instrucción de ABORTO DE LA TRANSACCIÓN, una excepción de la especificación se reconoce, y la transacción se aborta con el código de aborto resultante que indica una interrupción del programa (código 4) o condición de interrupción del programa (código 12). 3. Las interrupciones del programa se someten al control efectivo de filtración de interrupción del programa. 4. La ejecución de TABORT puede causar una alta discusión, que a su vez, puede conducir a otras condiciones de aborto. 5. Después de la instrucción TABORT, la ejecución del programa continúa en la instrucción designada por la PSW para aborto de la transacción.
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.
Como se muestra en la Figura 10, en una modalidad, código de abortos 1, 3 y 17-254 se reservan para las mejoras potenciales. Tales mejoras pueden resultar en el establecimiento de cualquier código de la condición 2 ó 3. Además, código de aborto 0 está reservado y no se asignará a una indicación de aborto significativa, en esta modalidad. Dependiendo del modelo, la CPU puede no ser capaz de distinguir entre ciertas razones para el aborto. Por ejemplo, un búsqueda/almacenamiento en exceso y un conflicto de búsqueda/almacenamiento pueden no ser distinguibles por la CPU en todas las circunstancias.
El aborto (es decir, terminación anormal) de una transacción por la instrucción TABORT o de otra manera, incluye realizar varios pasos. Un ejemplo de los pasos para el procesamiento de aborto, en general, se describe con referencia a la Figura 11. Si hay una diferencia en el procesamiento, basándose en si se inicia por TABORT o de otra manera, se indica en la descripción siguiente. En un ejemplo, un procesador (por ejemplo, CPU), está realizando el lógico de la Figura 11.
Refiriéndose a la Figura 11, inicialmente, basándose en la ejecución de la instrucción TABORT o un aborto implícito, los accesos al almacenamiento no transaccionales hechos mientras la CPU está en el modo de ejecución transaccional son asignados, PASO 1100. Otros almacenamientos (por ejemplo, almacenamientos transaccionales) hechos mientras la CPU estaba en el modo de ejecución transaccional son descartados, PASO 1102.
La CPU deja el modo de ejecución transaccional, PASO 1104, y los almacenamientos subsiguientes ocurren de manera no transaccional. La PSW actual es reemplazada con el contenido de la PSW para aborto de la transacción, excepto que el código de la condición se establece como se describió anteriormente (aparte de la situación siguiente, en la cual si TDBA es válido, pero el bloque es inaccesible, el CC=l), PASO 1106. Como parte de, o posterior al procesamiento del aborto, el procesamiento se ramifica a la ubicación especificada por la PSW para aborto de la transacción para realizar una acción. En un ejemplo en el cual la transacción es una transacción restringida, la ubicación es la instrucción TBEGINC y la acción es la reejecución de esa instrucción; y en un ejemplo adicional en el cual la transacción no es una transacción no restringida, la ubicación es la instrucción después de TBEGIN, y la acción es la ejecución de esa instrucción, que puede, por ejemplo, ser una bifurcación a un manipulador del aborto.
A continuación, se hace una determinación de si el dirección del bloque de diagnóstico de la transacción es válida, PREGUNTA 1108. Cuando la dirección del bloque de diagnóstico de la transacción es válida, la información de diagnóstico que identifica la razón para el aborto y el contenido de los registros generales, se almacenan en el bloque de diagnóstico de la transacción especificado por TBEGIN, PASO 1110. Los campos del TDB almacenados y las condiciones bajo las cuales son almacenados, se describen anteriormente con referencia al bloque de diagnóstico de la transacción.
Si la dirección del bloque de diagnóstico de la transacción es válida, pero el bloque se ha vuelto inaccesible, posteriormente a la ejecución de la instrucción TBEGIN más externa, el bloque no es accesado, y el código de la condición 1 se aplica.
Para las transacciones que son abortadas debido a las condiciones de interrupción del programa que resultan en una interrupción, el TBD de interrupción del programa se almacena.
Regresando a la PREGUNTA 1108, si la dirección del bloque de diagnóstico de la transacción no es válida, ningún TDB especificado por TBEGIN se almacena y el código de la condición 2 ó 3 se aplica, dependiendo de la razón para el aborto.
Además de lo anterior, la profundidad de anidación de la transacción se establece igual a cero, PASO 1112. Además, cualesquier pares de los registros generales designados para guardarse por la instrucción TBEGIN más externa son restablecidos, PASO 1114. Los pares del registro general que no se designaron para ser guardados por la instrucción TBEGIN más externa no se restablecen cuando una transacción es abortada. Además, se realiza una función de serialización, PASO 1116. Una función u operación de serialización incluye terminar todos los accesos de almacenamiento conceptualmente previos (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 1/0, antes de que los accesos del almacenamiento conceptuales posteriores (y el bit de referencia relacionado y los ajustes del bit de cambio) ocurran. La serialización efectúa la secuencia de todos los accesos de la CPU para el almacenamiento y las claves del almacenamiento, excepto para aquéllos asociados 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 FIN DE LA TRANSACCIÓN que disminuye la profundidad de anidación de la transacción a cero (final normal) o como resultado de que la transacción es abortada.
Para el procesamiento del aborto iniciado diferente a TABORT, si la transacción es abortada debido a una condición de excepción que resulta en una interrupción, PREGUNTA 1118, los códigos o parámetros de interrupción asociados con la interrupción se almacenan con las ubicaciones de almacenamiento asignadas que corresponden al tipo de interrupción, PASO 1120. Además, la PSW actual, como se indicó anteriormente, se almacena en la PSW anterior de la interrupción, PASO 1122. Posteriormente, o si la transacción no se ha abortado debido a una condición de excepción que resultó en una interrupción, la instrucción termina con el código de la condición cero.
Además de lo anterior, en una modalidad para la ejecución interpretativa de la z/Architecture, cuando la CPU está en el modo de ejecución transaccional, y ocurre una condición invitada que normalmente resultaría en los códigos de intercepción 4, 12, 44, 56, 64, 68 ó 72, la intercepción no ocurre. En su lugar, la CPU permanece en el modo de ejecución interpretativa, y las condiciones de aborto son indicadas al invitado como sigue: Para una transacción no restringida, la transacción es abortada debido a una instrucción restringida (código de aborto 11). Si un evento PER concurrente se detectó y la CPU está habilitada para el PER, ocurre una interrupción del programa con el código de interrupción 0280 hex.
Para una transacción restringida, se reconoce una excepción de restricción de la transacción. Si un evento PER concurrente se detectó y la CPU está habilitada para el PER, ocurre una interrupción del programa con el código de interrupción 0298 hex.
Cuando una transacción se aborta debido a una condición de interrupción del programa, la filtración de interrupción del programa puede inhibir la presentación de una interrupción. Para las interrupciones del programa que pueden resultar en una intercepción, la filtración también inhibe la intercepción.
Para el procesamiento del aborto iniciado diferente a TABORT, para todas las otras condiciones de intercepción, la transacción se aborta con el código de aborto 255 y el código de la condición 2.
Además, en una modalidad de la z/Architecture, se aplica lo siguiente: 1. Para el procesamiento del aborto iniciado diferente a TABORT, la ejecución intentada de una instrucción de LLAMADA DEL SUPERVISOR mientras está en el modo de ejecución transaccional resulta en que la transacción es abortada debido a una instrucción restringida. Una interrupción SVC no ocurre en este caso. 2. Los registros del acceso, los registro del punto flotante, el registro de control del punto flotante y cualesquier registros generales no especificados 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 cuando una transacción se aborta. 3. Cuando la CPU estaba en el modo de ejecución transaccional no restringida, la dirección de la instrucción de la PSW para aborto de la transacción designa la ubicación de almacenamiento después de la instrucción de COMIENZO DE LA TRANSACCIÓN (TBEGIN) más externa. La secuencia de instrucciones en esta ubicación debería ser capaz de acomodar todos los cuatro códigos de la condición, aunque una transacción que falla sólo causa que se establezcan los códigos 1, 2 y 3. Un resumen de los significados del código de la condición es como sigue: CC Significado 0 La transacción se inició de manera exitosa. 1 La transacción se abortó debido a una condición miscelánea. El bloque de diagnóstico de la transacción no pudo almacenarse. La reejecución de la transacción es poco probable de ser productiva. 2 La transacción se abortó debido a una condición transitoria. La reejecución de la transacción puede ser productiva. 3 La transacción se abortó debido a una condición persistente. La reejecución de la transacción bajo las condiciones actuales, es poco probable de ser productiva. Si las condiciones cambian, por ejemplo, los datos que son manipulados transaccionalmente se rearreglan, entonces la reejecución puede ser más productiva.
Para el procesamiento del aborto iniciado diferente a TABORT, cuando la CPU estaba en el modo de ejecución transaccional restringida, la dirección de la instrucción de la PSW para aborto de la transacción designó la instrucción COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC). Por definición, una transacción restringida no proporciona una rutina del manipulador del aborto (diferente a regresar a la instrucción TBEGINC). 4. Cuando se utilizan transacciones anidadas, una transacción interna puede causar que ocurran condiciones de aborto que pueden de otra manera no ocurrir en la transacción más externa. Los ejemplos de tales condiciones incluyen lo siguiente: • La transacción más interna puede emitir la instrucción de ABORTO DE LA TRANSACCIÓN, especificando un código de aborto no anticipado.
• La transacción interna puede resultar en una condición de interrupción del programa no anticipada.
• La transacción interna puede filtrar las condiciones de interrupción del programa que no son filtradas por la transacción más externa, resultando así en un código de aborto diferente.
Cualquier rutina del manipulador del aborto de la transacción debe ser capaz de acomodar un aborto y condiciones de excepción no anticipados, que ocurren dentro de las transacciones internas, incluso si nunca ocurren en la transacción más externa.
Filtración de Interrupción del Programa en un Aborto de la Transacción Una condición de excepción del programa que se reconoce mientras está en el modo de ejecución transaccional resulta en que la transacción es abortada. Para una transacción no restringida, el programa puede especificar opcionalmente que ciertas condiciones de excepción del programa no resultan en una interrupción. Esta acción se llama filtración de interrupción del programa. La filtración de interrupción del programa se somete a los siguientes controles, en una modalidad: • La anulación de la filtración de interrupción del programa de la ejecución transaccional, bit 9 del registro de control 0.
• El control efectivo de filtración de interrupción del programa (PIFC).
• La condición de excepción que ocurrió.
Cuando la anulación de la filtración de interrupción del programa de la ejecución transaccional es cero, el programa especifica cuáles clases de condiciones de excepción se van a filtrar por medio del control de filtración de interrupción del programa (PIFC), bits 14-15 del campo I2 de la instrucción de COMIENZO DE LA TRANSACCIÓN (TBEGIN). El PIFC efectivo es el valor más alto en el PIFC en la instrucción TBEGIN para el nivel de anidación actual y para todos los niveles externos.
Para la mayoría de las condiciones de excepción del programa, hay una clase de ejecución transaccional correspondiente, definida para la condición de excepción y guardada dentro del procesador. El PIFC efectivo y las clases de ejecución transaccional interactúan como sigue, como un ejemplo: Efectivo PIFC Resultados basados en la Clase de Ejecución Transaccional 0 No ocurre filtración de interrupción del programa. Las condiciones de excepción que tienen clases 1, 2 ó 3 resultan en una interrupción. 1 Ocurre la filtración de interrupción del programa limitada. Las condiciones de excepción que tienen clases 1 ó 2 resultan en una interrupción; las condiciones que tienen la clase 3 no resultan en una interrupción. 2 Ocurre la filtración de interrupción del programa moderada. Sólo las condiciones de excepción que tienen clase 1 resultan en una interrupción; las condiciones que tienen las clases 2 ó 3 no resultan en una.
La instrucción de COMIENZO DE LA TRANSACCIÓN restringida (TBEGINC) no proporciona un control de filtración de interrupción del programa explícito; un PIFC implicado de cero se supone para TBEGINC. Así, cuando la CPU entra al modo de ejecución transaccional restringida como resultado de TBEGINC, el PIFC efectivo es cero; cuando la CPU permanece en el modo de ejecución transaccional no restringida como resultado de TBEGINC, el PIFC efectivo no cambia. La Figura 12 resume un ejemplo de la relación del PIFC efectivo, el tipo de filtración de interrupción del programa, la clase de ejecución transaccional, y si la excepción resulta en una interrupción. Además, las Figuras 13A-13B listan un ejemplo de las condiciones de excepción del programa, la clase de ejecución transaccional correspondiente y el código de la condición que se establece cuando la transacción es abortada debido a una condición de interrupción del programa.
Cuando una condición de excepción del programa no resulta en una interrupción (esto es, la condición se filtra), la nueva PSW del programa no se carga, y ninguna de las ubicaciones de almacenamiento asignadas, asociadas con una interrupción del programa se almacena; estas ubicaciones incluyen la identificación de la interrupción del programa, la dirección del evento de ruptura, la PSW del programa anterior, y cuando es aplicable, el código de excepción de los datos, código PER, dirección PER, identificación de acceso de la excepción, identificación del acceso PER, identificación del acceso del operando e identificación de la excepción de la traducción. Cuando una condición de excepción del programa resulta en una interrupción (esto es, la condición no está filtrada), la mayoría de las ubicaciones de almacenamiento asociadas con una interrupción del programa se almacenan como es normal; sin embargo, el código de la longitud de la instrucción en los bits 13-14 de la identificación de la interrupción del programa es respectivo a la instrucción en la cual se detectó la condición de excepción, y la PSW para aborto de la transacción se almacena como la PSW del programa anterior.
Cuando un evento PER se reconoce en conjunto con cualquier otra condición de excepción del programa filtrada, se aplica lo siguiente, en un ejemplo: • La clase de la transacción y el código de la condición para el evento PER se aplican. En este caso, la condición de excepción PER no puede filtrarse, y el código de la condición se establece a 3.
• El código de interrupción del programa en el área del prefijo no incluye la condición de excepción que no es PER, ni ninguno de los parámetros de interrupción del programa que no son PER almacenados en el área del prefijo.
Cuando la anulación de la filtración de interrupción del programa de la ejecución transaccional (bit 9 del registro de control 0) es uno, las condiciones de excepción del programa no se someten a la filtración de interrupción del programa. En este caso, la ejecución procede como si el PIFC efectivo fuera cero.
Las condiciones de excepción del acceso reconocidas durante una instrucción, en una modalidad, no se someten a la filtración de interrupción del programa. En estos casos, la condición de excepción resulta en que la transacción es abortada y en una interrupción del programa.
Además del código de interrupción del programa que representa la causa de la interrupción, el bit 6 del código de interrupción del programa en las ubicaciones reales 142-143 se establece a uno, indicando que la interrupción del programa ocurrió durante la ejecución transaccional. Los campos de la PSW del programa anterior se establecen como se describió anteriormente.
Además, en una modalidad: 1. Una instrucción de LLAMADA DEL MONITOR que de otra manera causa un evento del monitor es una instrucción restringida. Por lo tanto, una interrupción del programa del evento del monitor no ocurre mientras la CPU está en el modo de ejecución transaccional, así, el código del monitor en las ubicaciones reales 176-183 no se almacena cuando la transacción se aborta.
De manera similar, cualquier otra condición de excepción del programa listada en las Figuras 13A-13B que tenga una clase de la transacción no aplicable (-) y el código de la condición no puede ocurrir puesto que las instrucciones que causan estas excepciones son restringidas.
Así, ni la identificación de la interrupción del programa ni ninguna otra información auxiliara de interrupción del programa se almacena en las ubicaciones reales en el área del prefijo. 2. El siguiente ejemplo ilustra las instrucciones para iniciar y terminar una transacción. Nótese que si la transacción se aborta, en un ejemplo, es recupera varias veces antes de bifurcarse finalmente a la trayectoria de retroceso no transaccional en la etiqueta NO REINTENTAR.
LHI 15,0 Contador en cero.
BUCLE TBEGIN TDB, X'FOOO' Conservar GR 07.
JNZ ABORTO CC¹0: Abortado o no puede iniciar.
: Código de ejecución transaccional TEND Fin de la transacción ABORTO JC 5, NO_RE INTENTAR CC 1 ó 3 : No vale la pena reintentar AHI 15 , 1 Incrementar contador .
CIJNL 15, 6, NO REINTENTAR Intentar hasta 6 veces.
PPA 15,0,1 Solicitar Asistencia J BUCLE E intentar nuevamente.
NO_REINTENTAR DS OH Realizar trayectoria de retroceso. 3. La filtración de interrupción del programa puede ser útil en los programas que, por varias razones, difieren la validación de los datos - algunas veces llamada ejecución especulativa. En lugar de establecer un medio de recuperación potencialmente complicado, el programa simplemente ejecuta la transacción no restringida en la cual el control efectivo de filtración de interrupción del programa (PIFC) no es cero. Esto permite que la rutina del manipulador del aborto del programa reciba el control para ciertos tipos de condiciones de ejecución del programa directamente - sin intervención del sistema operativo.
Un PIFC efectivo de 1 indica que se va a realizar una filtración limitada por la CPU; esto puede ser útil en el reconocimiento de los datos inesperados o de las excepciones aritméticas. Un PIFC efectivo de 2 indica que se va a realizar una filtración moderada; esto puede ser útil en el reconocimiento de ubicaciones de almacenamiento inaccesibles.
Sin embargo, deberá notarse que si un programa se aborta debido a varios tipos de excepciones de acceso filtradas, no necesariamente indica que la ubicación sería inaccesible si el programa intenta la ejecución no transaccional. Por ejemplo, el programa puede especificar un PIFC de 2, y posteriormente, abortarse debido a una excepción de traducción de la página. Esta excepción puede indicar que la ubicación de almacenamiento no es parte del espacio de la dirección virtual, o puede indicar simplemente que el bloque de almacenamiento se ha desviado.
Durante la ejecución transaccional, pueden estar presentes múltiples condiciones de aborto de manera simultánea. Un ejemplo de la prioridad para cada condición de aborto se describe en la Figura 14.
Además, en una modalidad, las condiciones de aborto que tienen interrupciones correspondientes se respetan en el siguiente orden: Una condición exigente de verificación de la máquina tiene la prioridad más alta. Cuando ocurre, la operación actual se termina o se anula. Las interrupciones del programa y de llamada del supervisor que habrían ocurrido como resultado de la operación actual pueden eliminarse. Cualesquier condiciones de verificación de la máquina reprimidas pendientes pueden indicarse con la interrupción exigente de verificación de la máquina. Todo intento razonable se hace para limitar los efectos secundarios de una condición exigente de verificación de la máquina, y las solicitudes para interrupciones externas, I/O y de reinicio normalmente permanecen no afectadas.
En la ausencia de una condición exigente de verificación de la máquina, las solicitudes de interrupción que existen de manera concurrente al final de una unidad de operación son respetadas, en orden descendiente de prioridad, como sigue: • Llamada del supervisor • Programa • Verificación de la máquina reprimible • Externa • Entrada/Salida • Reinicio Excepto para la condición de aborto de la instrucción restringida, las condiciones de aborto que no corresponden a las interrupciones pueden ocurrir en cualquier orden. La prioridad de la condición de aborto de la instrucción restringida es equivalente a una prioridad de interrupción del programa 7.D mostrada en las Figuras 15A-15B, que describen un ejemplo de la prioridad de las condiciones de interrupción del programa.
En resumen, para la acción de aborto transaccional: • La mayoría de la actividad transaccional se descarta: o Los almacenamientos transaccionales se descartan o Los registros generales designados por la GRSM se restablecen a los valores previos a la transacción más externa • Posterior a un aborto, lo siguiente persiste: o Almacenamientos no transaccionales (instrucciones NTSTG) o Los registros de acceso y los registros del punto flotante retienen cualesquier modificaciones o Los registros generales no designados por la GRSM retienen cualesquier de la PSW establecida de la PSE de aborto TX o Apunta a la instrucción después de la instrucción TBEGIN o El código de la condición se establece para indicar la razón o Cuando se aborta debido a una interrupción, la PSW de aborto TX se almacena como la PSW de la interrupción anterior (con CC indicando la causa) • Si el campo Bi de TBEGIN más externa no es cero, el TDB se almacena • Para una transacción no restringida, la instrucción después de TBEGIN recibe el control o CC1 - no debe ocurrir (TDB inaccesible) o CC2 - condición transitoria; la reejecución de la transacción puede ser exitosa Puede querer limitar el número de redireceionamientos o CC3 - condición persistente; la reejecución de la transacción probablemente no es exitosa Puede querer bifurcarse a la trayectoria de retroceso que utiliza las téenicas de serialización convencionales NOTA: Si la trayectoria de retroceso utilizar los bloqueos del tipo comparar e intercambiar, la transacción también debe tocar estas ubicaciones de la palabra de bloqueo Como se describió anteriormente, una instrucción de ABORTO DE LA TRANSACCIÓN se proporciona, en la cual el operando de la instrucción está en la forma de un registro de base y un desplazamiento, y el valor del código de aborto, que es definido por el usuario en una modalidad, se forma según las reglas de resolución del operando de almacenamiento. Así, el código de aborto puede ser variable, basándose en el contenido del registro de base y/o del desplazamiento. Además, el código de aborto de la transacción se guarda en un bloque de diagnóstico de la transacción, como se designa por la instrucción de COMIENZO DE LA TRANSACCIÓN (TBEGIN) que inició la transacción, no en el registro del estado. El código de la condición se establece de acuerdo al bit más a la derecha del código de aborto.
En un ejemplo, la instrucción de ABORTO DE LA TRANSACCIÓN se obtiene por el procesador de una dirección del programa especificada por una PSW de la máquina. Posterior a la ejecución de ABORTO DE LA TRANSACCIÓN, la dirección del programa de la PSW se reemplaza por otra dirección del programa obtenida de una PSW de la transacción separada y diferente. A continuación, la ejecución de las instrucciones que empiezan con una instrucción en otra dirección del programa, continúa.
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 16A-16B y el fragmento del código proporcionado a continuación. La Figura 16A describe una lista doblemente vinculada 1600 de una pluralidad de elementos de la fila 1602a-1602d. Un nuevo elemento de la fila 1602e se va a insertar en la lista doblemente vinculada de los elementos de la fila 1600. Cada elemento de la fila 1602a-1602e incluye un puntero delantero 1604a-1604e y un puntero trasero 1606a-1606e. Como se muestra en la Figura 16B, para agregar un elemento a la fila 1602e entre los elementos de la fila 1602b y 1602c, (1) el puntero trasero 1606e se establece para apuntar al elemento de la fila 1602b, (2) el puntero delantero 1604e se establece para apuntar al elemento de la fila 1602c, (3) el puntero trasero 1606c se establece para apuntar al elemento de la fila 1602e, y (4) el puntero delantero 1604b se establece para apuntar al elemento de la fila 1602e.
Un fragmento del código ejemplar que corresponde a las Figuras 16A-16B está a continuación: * Rl 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) JNZ 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, NE .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 N0_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 17, en un ejemplo, un producto de programa de computadora 1700 incluye, por ejemplo, uno o más medios de almacenamiento legibles por computadora no transitorios 1702 para almacenar los medios del código del programa legible por computadora o lógico 1704 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 uno o más. 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 para incorporar y utilizar una o más modalidades. Además, pueden utilizarse diferentes instrucciones, formatos de instrucciones, campos de instrucciones y/o valores de instrucciones. Además, pueden proporcionarse/utilizarse otras restricciones/constricciones diferentes y/o adicionales. Muchas variaciones son posibles.
Además, otros tipos de entornos de computación pueden beneficiarse y utilizarse. 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 I/O (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 18, los componentes representativos de un sistema de Computadora Central 5000 para implementar una o más modalidades se representan. 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 I/O 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 I/O. 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 de 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 octopalabra es un grupo de 32 bytes consecutivos en un límite de 32 bytes. Una palabra cuádruple es un grupo de 16 bytes consecutivos en un límite de 16 bytes. Cuando las direcciones de 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 18, 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 19 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 19 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 20 ilustra una red de procesamiento de datos 5040 en la cual una o más modalidades (sic). 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 20, 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 19 y la Figura 20, 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 21, 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 (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 direcció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 22A, una unidad de ejecución 5057 puede comunicarse 5081 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 unidades del procesador 5065 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 22B, 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 1/0 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 métodos 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 22C, 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 tecnologí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 I/O 5054 (Figura 21) proporcionan al procesador con medios para unirse a los dispositivos periféricos, incluyendo cintas, discos, impresoras, pantallas y redes, por ejemplo. Las unidades I/O 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 z/Architecture IBM Server, 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® de IBM y Servidores System x® de IBM). Pueden ejecutarse en máquinas que corren Linux en una amplia variedad de máquinas , ® ® utilizando los elementos físicos fabricados por IBM , Intel , 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. Intel es una marca o marca registrada de Intel Corporation o sus subsidiarias en los Estados Unidos y otros países. Linux es una marca registrada de Linus Torvalds en los Estados Unidos, otros países o ambos. 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, US Patent No.5,551,013, titulado "Multiprocesador para Emulación de Elementos Físicos", por Beausoleil et al; y US Patent No. 6,009,261, titulado "Preprocesamiento de Rutinas Objetivo Almacenadas para Emular Instrucciones Incompatibles en un Procesador Objetivo", por Scalzi et al; y US Patent 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 US Patent 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 US Patent 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 23, 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 I/O 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 teenica. 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 (19)

REIVINDICACIONES
1. Un método para ejecutar una instrucción dentro de un entorno de computación, el método comprende: obtener, por un procesador, una instrucción de la máquina para la ejecución, la instrucción de la máquina se define para la ejecución por la computadora de acuerdo con una arquitectura de la computadora, la instrucción de la máquina comprende: un código de operación para especificar una operación de aborto de la transacción; y al menos un campo para especificar un código de aborto; y ejecutar, por el procesador, la instrucción de la máquina, la ejecución comprende: abortar una transacción que se está ejecutando, en donde la transacción termina antes de la terminación; y basándose en el aborto, proporcionar un código de la condición, el código de la condición es para indicar si se recomienda la reejecución de la transacción.
2. El método de conformidad con la reivindicación 1, en donde al menos un campo comprende un campo de base y un campo de desplazamiento, y en donde basándose en el campo de base que no es cero, combinar el contenido de un registro especificado por el campo de base y un valor del campo de desplazamiento para crear el código de aborto.
3. El método de conformidad con la reivindicación 2, en donde la combinación comprende agregar el contenido del registro con el valor del campo de desplazamiento para crear un código de aborto definido por el usuario.
4. El método de conformidad con cualquiera de las reivindicaciones anteriores, en donde la instrucción de la máquina comprende un campo de base, y en donde basándose en el campo de base que es cero, al menos un campo para especificar el código de aborto consiste de un campo de desplazamiento, en donde un valor del campo de desplazamiento especifica el código de aborto.
5. El método de conformidad con cualquiera de las reivindicaciones anteriores, en donde el código de aborto proporciona una razón específica definida por el usuario para abortar, y en donde la instrucción de la máquina es una instrucción de aborto de la transacción obtenida de una dirección del programa especificada por una palabra del estado del programa (PSW) de la máquina, y en donde el método comprende además: Posterior a la ejecución de la instrucción de la máquina, reemplazar la dirección del programa de la PSW de la máquina con otra dirección del programa obtenida de una PSW de la transacción separada y diferente; y continuar la ejecución de las instrucciones que empiezan con una instrucción en otra dirección del programa de la PSW de la máquina.
6. El método de conformidad con cualquiera de las reivindicaciones anteriores, en donde el código de la condición comprende un primer valor basado en un bit especificado del código de aborto que es un valor, y un segundo valor basado en el bit especificado que es otro valor.
7. El método de conformidad con la reivindicación 6, en donde el primer valor indica que la reejecución es recomendada, y el segundo valor indica que la reejecución no es recomendada.
8. El método de conformidad con cualquiera de las reivindicaciones anteriores, en donde el método comprende además, colocar el código de aborto en un bloque de diagnóstico de la transacción.
9. El método de conformidad con la reivindicación 8, en donde el bloque de diagnóstico de la transacción es especificado por una de una instrucción que la transacción sea abortada, o una instrucción que inició otra transacción, en la cual la transacción y otra transacción están anidadas.
10. El método de conformidad con cualquiera de las reivindicaciones anteriores, en donde el método comprende además, basándose en el aborto de la transacción, asignar a la memoria los accesos del almacenamiento no transaccional y descartar los accesos del almacenamiento transaccional.
11. Un sistema de computadora para ejecutar una instrucción dentro de un entorno de computación, el sistema de computadora comprende: una memoria; y un procesador en comunicación con la memoria, en donde el sistema de computadora está configurado para realizar un método, el método comprende: obtener, por un procesador, una instrucción de la máquina para la ejecución, la instrucción de la máquina se define para la ejecución por la computadora de acuerdo con una arquitectura de la computadora, la instrucción de la máquina comprende: un código de operación para especificar una operación de aborto de la transacción; y al menos un campo para especificar un código de aborto; y ejecutar, por el procesador, la instrucción de la máquina, la ejecución comprende: abortar una transacción que se está ejecutando, en donde la transacción termina antes de la terminación; y basándose en el aborto, proporcionar un código de la condición, el código de la condición es para indicar si se recomienda la reejecución de la transacción.
12. El sistema de computadora de conformidad con la reivindicación 11, en donde al menos un campo comprende un campo de base y un campo de desplazamiento, y en donde basándose en el campo de base que no es cero, combinar el contenido de un registro especificado por el campo de base y un valor del campo de desplazamiento para crear el código de aborto.
13. El sistema de computadora de conformidad con la reivindicación 12, en donde la combinación comprende agregar el contenido del registro con el valor del campo de desplazamiento para crear un código de aborto definido por el usuario.
14. El sistema de computadora de conformidad con la reivindicación 11, en donde la instrucción de la máquina comprende un campo de base, y en donde basándose en el campo de base que es cero, al menos un campo para especificar el código de aborto consiste de un campo de desplazamiento, en donde un valor del campo de desplazamiento especifica el código de aborto.
15. El sistema de computadora de conformidad con la reivindicación 11, en donde el código de la condición comprende un primer valor basado en un bit especificado del código de aborto que es un valor, y un segundo valor basado en el bit especificado que es otro valor.
16. El sistema de computadora de conformidad con la reivindicación 15, en donde el primer valor indica que la reejecución es recomendada y el segundo valor indica que la reejecución no es recomendada.
17. El sistema de computadora de conformidad con la reivindicación 11, en donde el método comprende además, colocar el código de aborto en un bloque de diagnóstico de la transacción.
18. Un producto de programa de computadora para ejecutar una instrucción dentro de un entorno de computación, el producto de programa de computadora comprende: 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 de conformidad con cualquiera de las reivindicaciones 1 a 10.
19. Un programa de computadora almacenado en un medio legible por computadora y que se carga en la memoria interna de una computadora digital, que comprende porciones del código del programa, cuando el programa se corre en una computadora, para realizar el método de conformidad con cualquiera de las reivindicaciones 1 a 10.
MX2014015356A 2012-06-15 2013-05-17 Instrucción de aborto de la transacción. MX349710B (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/524,855 US9436477B2 (en) 2012-06-15 2012-06-15 Transaction abort instruction
PCT/EP2013/060275 WO2013186012A1 (en) 2012-06-15 2013-05-17 Transaction abort instruction

Publications (2)

Publication Number Publication Date
MX2014015356A true MX2014015356A (es) 2015-07-06
MX349710B MX349710B (es) 2017-08-09

Family

ID=48470963

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2014015356A MX349710B (es) 2012-06-15 2013-05-17 Instrucción de aborto de la transacción.

Country Status (7)

Country Link
US (4) US9436477B2 (es)
EP (1) EP2724228B1 (es)
JP (1) JP6206886B2 (es)
CN (1) CN104350462B (es)
MX (1) MX349710B (es)
SI (1) SI2724228T1 (es)
WO (1) WO2013186012A1 (es)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
JP5901835B2 (ja) * 2013-02-22 2016-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アボート削減方法、アボート削減装置、及びアボート削減プログラム
US20140281236A1 (en) * 2013-03-14 2014-09-18 William C. Rash Systems and methods for implementing transactional memory
US9317379B2 (en) 2014-01-24 2016-04-19 International Business Machines Corporation Using transactional execution for reliability and recovery of transient failures
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9454370B2 (en) 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US9632555B2 (en) 2014-12-09 2017-04-25 Intel Corporation Techniques to route power to a USB host in dead battery condition
US10366013B2 (en) 2016-01-15 2019-07-30 Futurewei Technologies, Inc. Caching structure for nested preemption
US9772874B2 (en) 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
US20170371701A1 (en) * 2016-06-27 2017-12-28 Kshitij A. Doshi Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization
US11151267B2 (en) * 2019-02-25 2021-10-19 International Business Machines Corporation Move data and set storage key based on key function control

Family Cites Families (245)

* 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
IN169636B (es) * 1987-07-01 1991-11-23 Digital Equipment Corp
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
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
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
AU6629894A (en) 1993-05-07 1994-12-12 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
AU7550496A (en) 1995-10-06 1997-04-28 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構成方法
US6094730A (en) 1997-10-27 2000-07-25 Hewlett-Packard Company Hardware-assisted firmware tracing method and apparatus
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
EP0992907B1 (en) 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
EP0992916A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
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
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
US6738892B1 (en) 1999-10-20 2004-05-18 Transmeta Corporation Use of enable bits to control execution of selected instructions
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
WO2002013068A1 (en) 2000-08-04 2002-02-14 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
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
US6862664B2 (en) 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7398355B1 (en) 2003-02-13 2008-07-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
US7089374B2 (en) 2003-02-13 2006-08-08 Sun Microsystems, Inc. Selectively unmarking load-marked cache lines during transactional program execution
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
DE602004024995D1 (de) 2003-05-23 2010-02-25 Nippon Telegraph & Telephone Parallelverarbeitungseinrichtung und parallelverarbeitungsverfahren
CA2472887A1 (en) 2003-06-30 2004-12-30 Gravic, Inc. Methods for ensuring referential integrity in multithreaded replication engines
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
US8825615B2 (en) 2004-05-11 2014-09-02 Oracle International Corporation Simplifying implementation of custom atomic transactions in a programming environment
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 & 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控制器及数据传输方法
EP1913473A1 (en) 2005-08-01 2008-04-23 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
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
US20070198978A1 (en) 2006-02-22 2007-08-23 David Dice Methods and apparatus to implement parallel transactions
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
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
EP1918540B1 (en) 2006-11-06 2009-08-26 GM Global Technology Operations, Inc. Operating method for a particulate filter, data processor program product and control apparatus therefore
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> オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8086827B2 (en) 2006-12-28 2011-12-27 Intel Corporation Mechanism for irrevocable transactions
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 中兴通讯股份有限公司 中继状态调节方法和装置
US9391789B2 (en) 2007-12-14 2016-07-12 Qualcomm Incorporated Method and system for multi-level distribution information cache management in a mobile environment
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
US8065491B2 (en) 2007-12-30 2011-11-22 Intel Corporation Efficient non-transactional write barriers for strong atomicity
US8706982B2 (en) 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
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
US8176280B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
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
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
US8688628B2 (en) 2008-02-29 2014-04-01 Red Hat, Inc. Nested queued transaction manager
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
KR20110044884A (ko) * 2008-07-28 2011-05-02 어드밴스드 마이크로 디바이시즈, 인코포레이티드 가상화가능한 진보된 동기화 기능
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
US8672820B2 (en) 2008-12-04 2014-03-18 Honda Motor Co., Ltd. Tool stocker, machine tool system, and tool damage detecting apparatus
US20100153776A1 (en) 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
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
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
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
US20100307689A1 (en) 2009-06-06 2010-12-09 Michael James Huebner Pivoting tape dispenser
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
US8489864B2 (en) 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
JP5608738B2 (ja) 2009-06-26 2014-10-15 インテル・コーポレーション 無制限トランザクショナルメモリ(utm)システムの最適化
US8973004B2 (en) 2009-06-26 2015-03-03 Oracle America, Inc. Transactional locking with read-write locks in transactional memory systems
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
US9529839B2 (en) 2009-12-07 2016-12-27 International Business Machines Corporation Applying limited-size hardware transactional memory to arbitrarily large data structure
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
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
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8521995B2 (en) 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US20110161371A1 (en) 2009-12-29 2011-06-30 Microgen Plc Sql generation
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
US8424015B2 (en) 2010-09-30 2013-04-16 International Business Machines Corporation Transactional memory preemption mechanism
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
US8788794B2 (en) 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
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
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
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
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
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
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
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
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
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
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
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block

Also Published As

Publication number Publication date
EP2724228A1 (en) 2014-04-30
US9983883B2 (en) 2018-05-29
CN104350462B (zh) 2017-01-25
JP2015525405A (ja) 2015-09-03
US20130339676A1 (en) 2013-12-19
EP2724228B1 (en) 2015-07-01
US20160350128A1 (en) 2016-12-01
SI2724228T1 (sl) 2015-10-30
CN104350462A (zh) 2015-02-11
US9529598B2 (en) 2016-12-27
WO2013186012A1 (en) 2013-12-19
MX349710B (es) 2017-08-09
US9996360B2 (en) 2018-06-12
US20130339709A1 (en) 2013-12-19
US20160350129A1 (en) 2016-12-01
US9436477B2 (en) 2016-09-06
JP6206886B2 (ja) 2017-10-04

Similar Documents

Publication Publication Date Title
US10185588B2 (en) Transaction begin/end instructions
MX2014015356A (es) Instrucción de aborto de la transacción.
EP2862092B1 (en) Saving/restoring selected registers in transactional processing
AU2013276133B2 (en) Transactional processing
CA2874181C (en) Constrained transaction execution
US9983882B2 (en) Selectively controlling instruction execution in transactional processing
AU2012382775B2 (en) Transaction diagnostic block
AU2012382777B2 (en) Program interruption filtering in transactional execution
MX2014015353A (es) Instalación auxiliar del procesador.

Legal Events

Date Code Title Description
FG Grant or registration