ES2720133T3 - Guardar/restablecer registros seleccionados en procesamiento transaccional - Google Patents

Guardar/restablecer registros seleccionados en procesamiento transaccional Download PDF

Info

Publication number
ES2720133T3
ES2720133T3 ES12878930T ES12878930T ES2720133T3 ES 2720133 T3 ES2720133 T3 ES 2720133T3 ES 12878930 T ES12878930 T ES 12878930T ES 12878930 T ES12878930 T ES 12878930T ES 2720133 T3 ES2720133 T3 ES 2720133T3
Authority
ES
Spain
Prior art keywords
transaction
instruction
program
general
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12878930T
Other languages
English (en)
Inventor
Dan Greiner
Christian Jacobi
Timothy Slegel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2720133T3 publication Critical patent/ES2720133T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

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

Landscapes

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

Abstract

Un método para facilitar el procesamiento de transacciones dentro de un entorno de computación, comprendiendo dicho método: obtener una instrucción (200) de inicio de transacción, comprendiendo la instrucción de inicio de transacción un opcode (202) que especifica una instrucción de inicio de transacción de un tipo particular, y un campo que especifica una máscara (210) de guardar de registro general que tiene una pluralidad de bits, cada uno de los cuales representa un par de registros par-impar generales, y cuando el bit tiene un valor el par de registro par-impar correspondiente se guarda y cuando el bit tiene el otro valor el par de registro par-impar correspondiente no se guarda, para que la instrucción de inicio de transacción inicie una transacción, y la máscara de guardar de registro general especifique explícitamente el uno o más pares de registro seleccionados de registros generales para ser guardados al comienzo de una transacción, donde la transacción retarda de manera efectiva la asignación de almacenamientos transaccionales a la memoria principal hasta que se haya completado una transacción seleccionada, y ejecutar la instrucción de inicio de transacción, comprendiendo la ejecución de la instrucción de inicio de transacción determinar (1300) los pares de registro seleccionados para ser guardados y guardar (1302) el contenido de los uno o más pares de registro seleccionados de registros generales especificados explícitamente en la máscara de guardar de registro general de la instrucción de inicio de transacción, en donde guardar solamente guarda el contenido de los uno o más pares de registro seleccionados de registros generales especificados explícitamente en la máscara de guardar de registro general, e iniciar la ejecución de la transacción.

Description

DESCRIPCIÓN
Guardar/restablecer registros seleccionados en procesamiento transaccional
Antecedentes
Uno o más aspectos se refieren, en general, a entornos informáticos de multiprocesamiento y, en particular, a procesamiento transaccional dentro de tales entornos informáticos.
Un reto permanente en la programación de un microprocesador es el de las actualizaciones en la misma localización de almacenaje por parte de múltiples unidades centrales de procesamiento (CPUs). Muchas instrucciones que actualizan localizaciones de almacenamiento, incluyendo también operaciones lógicas simples, tal como AND, lo hacen con múltiples accesos a la localización. Por ejemplo, en primer lugar, se busca la localización de almacenamiento, y después, se almacena de nuevo el resultado actualizado.
Con el fin de que múltiples CPUs actualicen de forma segura la misma localización de almacenamiento, se serializa el acceso a la localización. Una instrucción, la instrucción TEST AND SET, introducida con la arquitectura S/360 ofrecida anteriormente por International Business Machines Corporation, proporcionó una actualización entrelazada de una localización de almacenamiento. Actualización entrelazada significa que, según se observa mediante otras CPUs y el subsistema de entrada/salida (E/S) (por ejemplo, subsistema de canal), el acceso de la instrucción al almacenamiento completo parece ocurrir de forma automática. Más tarde, la arquitectura S/370 ofrecida por International Business Machines Corporation, introdujo las instrucciones COMPARE AND SWAP y COMPARE DOUBLE AND SWAP que proporcionan un medio más sofisticado de realización de actualización entrelazada, y permiten la implementación de lo que se conoce habitualmente como palabra de bloqueo (o semáforo). Instrucciones añadidas recientemente han proporcionado capacidades adicionales de actualización entrelazada, incluyendo COMPARE AND SWAP AND PURGE, y COMPARE AND SWAP AND STORE. Sin embargo, todas esas instrucciones proporcionan entrelazado solamente para una única localización de almacenamiento.
Técnicas de programa más complejas pueden requerir la actualización entrelazada de múltiples localizaciones de almacenamiento, tal como cuando se añade un elemento a una lista doblemente enlazada. En una operación de ese tipo, ambos punteros de avance y de retroceso deben aparecer de modo que sean actualizados simultáneamente, según se observa desde otras CPUs y desde el subsistema de E/S. Con el fin de efectuar dicha actualización múltiple, el programa se ve obligado a usar un punto de serialización único, separado, tal como una palabra de bloqueo. Sin embargo, las palabras de bloqueo pueden proporcionar un nivel mucho más alto de serialización que el garantizado; por ejemplo, las palabras de bloqueo pueden serializar una cola completa de millones de elementos incluso aunque solamente se estén actualizando dos elementos. El programa puede estructurar los datos para usar una serialización de grado más fino (por ejemplo, una jerarquía de puntos de bloqueo), pero eso introduce problemas adicionales, tal como situaciones de estancamiento potencial si se infringe la jerarquía, y problemas de recuperación si el programa encuentra un error mientras mantiene uno o más bloqueos o si no se puede conseguir el bloqueo.
Adicionalmente a lo anterior, existen numerosos escenarios en los que un programa puede ejecutar una secuencia de instrucciones que pueden dar o no como resultado una condición de excepción. Si no ocurre ninguna condición de excepción, entonces el programa continúa; sin embargo, si se reconoce una excepción, entonces el programa puede emprender una acción correctora para eliminar la condición de excepción. Java, por ejemplo, puede aprovechar tal ejecución, por ejemplo, en ejecución especulativa, recubrimiento parcial de una función, y/o en resecuenciación de comprobación de puntero nulo.
En entornos de sistema operativo clásico, tal como z/OS y sus predecesores ofrecidos por International Business Machines Corporation, el programa establece un entorno de recuperación para interceptar cualquier condición de excepción de programa que éste pueda encontrar. Si el programa no intercepta la excepción, el sistema operativo termina de manera típicamente anormal el programa respecto a las excepciones que el sistema operativo no está preparado para manejar. Establecer y aprovechar un entorno de ese tipo es costoso y complicado. La publicación de solicitud de Patente de los Estados Unidos número US 2012/005461 A1 presenta sistemas y métodos para realizar verificación de registro incremental que puede emplear un registro especial para indicar cuáles de los registros han sido ya verificados. La publicación de solicitud de Patente de los Estados Unidos número US 2011/167222 A1 se refiere a un sistema de memoria transaccional ilimitado que puede procesar desbordamiento de datos. La publicación de Patente de los Estados Unidos número US 2010306512 A1 describe un método y un aparato para verificación eficiente de registros.
Compendio de la invención
Los inconvenientes de la técnica anterior son subsanados y se proporcionan ventajas mediante la provisión de un producto de programa informático para facilitar el procesamiento de transacciones dentro de un entorno informático. El producto de programa informático incluye un medio de almacenamiento legible con ordenador, legible mediante un circuito de procesamiento, y almacenaje de instrucciones para su ejecución por medio del circuito de procesamiento para llevar a cabo un método. Según un aspecto de la invención, se proporciona un método para facilitar el procesamiento de transacciones dentro de un entorno informático según la reivindicación 1.
También se describen y reivindican en la presente memoria métodos y sistemas relacionados con una o más realizaciones. Además, se describen y pueden ser reivindicados en la presente memoria, servicios relacionados con una o más realizaciones.
Se logran características y ventajas adicionales. Otras realizaciones y aspectos se describen en detalle en la presente memoria y se consideran parte de la invención reivindicada.
Breve descripción de las diversas vistas de los dibujos
Uno o más aspectos van a ser indicados y reivindicados de manera separada como ejemplos en las reivindicaciones al final de la descripción. Los objetos, características y ventajas que anteceden, resultan evidentes a partir de la descripción detallada que sigue tomada junto con los dibujos que se acompañan, en los que:
La Figura 1 representa una realización de un entorno informático;
La Figura 2A representa un ejemplo de una instrucción de Inicio de Transacción (TBEGIN);
La Figura 2B representa una realización de detalles adicionales de un campo de la instrucción TBEGIN de la Figura 2A;
La Figura 3A representa un ejemplo de una instrucción de Inicio de Transacción restringida (TBEGINC)
La Figura 3B representa una realización de detalles adicionales de un campo de la instrucción TBEGINC de la Figura 3A;
La Figura 4 representa un ejemplo de una instrucción de Fin de Transacción (TEND);
La Figura 5 representa un ejemplo de una instrucción de Abortar Transacción (TABORT);
La Figura 6 representa un ejemplo de transacciones anidadas;
La Figura 7 representa un ejemplo de una instrucción NONTRANSACTIONAL STORE (NTSTG);
La Figura 8 representa un ejemplo de una instrucción de EXTRACT TRANSACTION NESTING DEPTH (ETND); La Figura 9 representa un ejemplo de bloque de diagnóstico de transacción;
La Figura 10 representa ejemplos de motivos para abortar, junto con códigos de aborto asociados y códigos de condición;
La Figura 11 representa una realización de la lógica asociada a la ejecución de una instrucción TBEGINC;
La Figura 12 representa una realización de la lógica asociada a la ejecución de una instrucción TBEGIN;
Las Figuras 13A - 13B representan realizaciones de la lógica asociada a guardar/restaurar registros seleccionados en procesamiento transaccional;
Las Figuras 14A - 14B representan un ejemplo de inserción de un elemento de cola en una lista doblemente enlazada de elementos de cola;
La Figura 15 representa una realización de un producto de programa informático;
La Figura 16 representa una realización de un sistema de ordenador anfitrión;
La Figura 17 representa un ejemplo adicional de sistema informático;
La Figura 18 representa otro ejemplo de sistema informático que comprende una red informática;
La Figura 19 representa una realización de varios elementos de un sistema informático;
La Figura 20A representa una realización de la unidad de ejecución del sistema informático de la Figura 19;
La Figura 20B representa una realización de la unidad de ramificación del sistema informático de la Figura 19;
La Figura 20C representa una realización de la unidad de carga/almacenaje del sistema informático de la Figura 19, y
La Figura 21 representa una realización de un sistema informático anfitrión emulado.
Descripción detallada
Conforme a un aspecto, se proporciona un servicio de ejecución transaccional (TX). Este servicio proporciona procesamiento transaccional para instrucciones, y en una o más realizaciones, ofrece diferentes modos de ejecución, según se describe más adelante, así como niveles anidados de procesamiento transaccional.
El servicio de ejecución transaccional introduce un estado de CPU denominado modo de ejecución transaccional (TX). A continuación de un reseteo de la CPU, la CPU no está en modo TX. La CPU entra en el modo TX mediante una instrucción TRANSACTION BEGIN. La CPU deja el modo TX en virtud de: (a) una instrucción de TRANSACTION END más externa (a continuación se dan más detalles sobre más interna y más externa), o (b) siendo abortada la transacción. Mientras está en modo TX, los accesos de almacenamiento por la CPU parecen estar en bloqueo simultáneo según se observa mediante otras CPUs y por el subsistema de E/S. Los accesos de almacenamiento están: (a) asignados a almacenamiento cuando la transacción más externa termina sin abortar (es decir, p. ej., las actualizaciones hechas en una caché o memoria intermedia local en la CPU son propagadas y almacenadas en memoria real y visibles para otras CPUs), o (b) descartados si se aborta la transacción.
Las transacciones pueden estar anidadas. Es decir, mientras la CPU esté en modo TX, ésta puede ejecutar otra instrucción de TRANSACTION BEGIN. La instrucción que provoca que la CPU entre en el modo TX se conoce como TRANSACTION BEGIN más externa; de manera similar, se dice que el programa está en la transacción más externa. Las ejecuciones posteriores de TRANSACTION BEGIN se denominan transacciones internas; y, el programa está ejecutando una transacción interna. El modelo proporciona una profundidad de anidamiento mínima y una profundidad de anidamiento máxima dependiente del modelo. Una instrucción de EXTRACT TRANSACTION NESTING DEPTH retorna al valor de profundidad de anidamiento normal, y en una realización adicional, puede retornar a un valor de profundidad de anidamiento máxima. La técnica utiliza un modelo denominado “anidamiento aplanado” en el que una condición de aborto a cualquier profundidad de anidamiento provoca que sean abortados todos los niveles de la transacción, y el control se devuelve a la instrucción siguiente a la TRANSACTION BEGIN más externa.
Durante el procesamiento de una transacción, un acceso transaccional realizado por una CPU se dice que entra en conflicto con: (a) un acceso transaccional y un acceso no transaccional realizado por otra CPU, o (b) un acceso no transaccional realizado por el subsistema de E/S, si ambos accesos están en cualquier posición dentro de la misma línea caché, y uno o ambos accesos son un almacén. En otras palabras, con el fin de que la ejecución transaccional sea productiva, la CPU no debe ser observada realizando accesos transaccionales hasta que la misma los cometa. El modelo de programación puede ser altamente efectivo en determinados entornos; por ejemplo, la actualización de dos puntos una lista doblemente enlazada de un millón de elementos. Sin embargo, puede resultar menos efectivo, si existe mucha contención para las localizaciones de almacenamiento a las que se está accediendo transaccionalmente.
En un modelo de ejecución transaccional (mencionado en la presente memoria como transacción no restringida), cuando se aborta una transacción, el programa puede intentar ya sea reactivar la transacción con la esperanza de que la condición de aborto no esté ya presente, o el programa puede “retroceder” a una ruta no transaccional equivalente. En otro modelo de ejecución transaccional (mencionado en la presente memoria como transacción restringida), se reactiva automáticamente una transacción abortada por medio de la CPU; en ausencia de violaciones de la restricción, se asegura la eventual terminación de la transacción restringida.
Cuando se inicia una transacción, el programa puede especificar varios controles, tal como: (a) que los registros generales sean restablecidos a sus contenidos originales si se aborta la transacción, (b) si se permite que la transacción modifique el contexto de registro de punto flotante, incluyendo, por ejemplo, registros de punto flotante y el registro de control de punto flotante, (c) si se permite que la transacción modifique registros de acceso (ARs), y (d) si se debe impedir que determinadas condiciones de excepción de programa causen una interrupción. Si se aborta una transacción no restringida, se puede proporcionar diversa información 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 transacción (TDB) específico del programa. Además, el TDB del área de prefijo de la CPU o diseñado por la descripción del estado del anfitrión, puede ser también usado si se aborta la transacción debido a una interrupción del programa o a una condición que provoque que la ejecución interpretativa termine, respectivamente.
Según se ha indicado con anterioridad existen varios tipos de registros. Éstos se explican con mayor detalle en la presente memoria. Se pueden usar registros generales como acumuladores en operaciones aritméticas y lógicas generales. En una realización, cada registro contiene posiciones de 64 bits, y existen 16 registros generales. Los registros generales están identificados mediante los números 0-15, y están diseñados mediante un campo R de cuatro bits en una instrucción. Algunas instrucciones proporcionan el direccionamiento de múltiples registros generales al tener varios campos R. Para algunas instrucciones está implícito el uso de un registro general específico en vez de designado explícitamente por un campo R de la instrucción.
Adicionalmente a su uso como acumuladores en operaciones aritméticas y lógicas generales, se usan también 15 de los 16 registros generales como dirección de base y registros de índice en la generación de la dirección. En esos casos, los registros son designados mediante un campo B o un campo X, de cuatro bits, en una instrucción. Un valor cero en el campo B o X especifica que no se va a aplicar ninguna base o índice, y por lo tanto, el registro 0 general no va a ser designado como que contiene una dirección de base o un índice.
Las instrucciones de punto flotante usan un conjunto de registros de punto flotante. La CPU tiene 16 registros de punto flotante, en una realización. Los registros de punto flotante están identificados mediante los números 0-15, y son designados por un campo R de cuatro bits en instrucciones de punto flotante. Cada registro de punto flotante tiene una longitud de 64 bits y puede contener un operando de punto flotante corto (32 bits) o largo (64 bits).
Un registro de control de punto flotante (FPC) es un registro de 32 bits que contiene bits de enmascaramiento, bits de banderola, un código de excepción de datos, y bits de modo de redondeo, y se usa durante el procesamiento de operaciones de punto flotante.
Además, en una realización, la CPU tiene 16 registros de control, teniendo cada uno de ellos 64 posiciones de bit. Las posiciones de bit en los registros están asignadas a servicios particulares en el sistema, tal como Registro de Evento de Programa (PER) (que se discute más adelante), y se usan tanto para especificar que puede tener lugar una operación, como para suministrar información especial requerida por el servicio. En una realización, para el servicio transaccional, se usan CR0 (bits 8 y 9) y CR2 (bits 61-63), según se describe más adelante.
La CPU tiene, por ejemplo, 16 registros de acceso numerados como 0-15. Un registro de acceso consiste en posiciones de 32 bits que contienen una especificación indirecta de un elemento de control de espacio de dirección (ASCE). Un elemento de control de espacio de dirección es un parámetro usado por el mecanismo de traducción de dirección dinámica (DAT) para traducir referencias en un espacio de dirección correspondiente. Cuando la CPU está en un modo denominado modo de registro de acceso (controlado por bits en la palabra de estado de programa (PSW)) un campo B de instrucción, usado para especificar una dirección lógica para una referencia de operando de almacenamiento, designa un registro de acceso, y el elemento de control de espacio de dirección especificado por el registro de acceso se usa por parte de la DAT para la referencia que se está haciendo. Para algunas instrucciones, se usa un campo R en vez de un campo B. Se proporcionan instrucciones para cargar y almacenar el contenido de los registros de acceso y para transferir el contenido de un registro de acceso a otro.
Cada uno de los registros de acceso 1-15 puede designar cualquier espacio de dirección. El registro de acceso 0 designa el espacio de instrucción primaria. Cuando se usa uno de los registros de acceso 1-15 para designar un espacio de dirección, la CPU determina qué espacio de dirección se designa mediante la traducción del contenido del registro de acceso. Cuando se usa el registro de acceso 0 para designar un espacio de dirección, la CPU trata el registro de acceso como una designación del espacio de 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 instrucción primaria y un máximo de otros 15 espacios.
En una realización, existen múltiples tipos de espacios de dirección. Un espacio de dirección es una secuencia consecutiva de números enteros (direcciones virtuales), junto con parámetros de transformación específicos que permiten que se asocie cada número a una localización de byte en el almacenamiento. La secuencia se inicia en cero y avanza de izquierda a derecha.
Por ejemplo, en z/Arquitectura, cuando se usa una dirección virtual por parte de una CPU para acceder al almacenamiento principal (conocido también como memoria principal), se convierte en primer lugar, por medio de traducción de dirección dinámica (DAT), en una dirección real, y a continuación, por medio de un prefijo, en una dirección absoluta. La DAT puede usar de uno a cinco niveles de tablas (página, segmento, tercera región, segunda región y primera región) como parámetros de transformación. La designación (origen y longitud) de la tabla de nivel más alto para un espacio de dirección específica, se denomina elemento de control de espacio de dirección, y se encuentra para su uso por parte de la DAT en un registro de control o se especifica mediante un registro de espacio. Alternativamente, el elemento de control de espacio de dirección para un espacio de dirección puede ser una designación de espacio real, que indique que la DAT sirve para traducir la dirección virtual simplemente tratándola como una dirección real y sin usar ninguna de las tablas.
La DAT usa, en momentos diferentes, los elementos de control de espacio de dirección en registros de control diferentes o especificados por los registros de acceso. La opción se determina mediante el modo de traducción especificado en la PSW actual. Se encuentran disponibles cuatro modos de traducción: modo de espacio primario, modo de espacio secundario, modo de registro de acceso y modo de espacio doméstico. Los diferentes espacios de dirección son direccionables dependiendo del modo de traducción.
En cualquier instante en que la CPU esté en el modo de espacio primario o en modo de espacio secundario, la CPU puede traducir direcciones virtuales pertenecientes a dos espacios de dirección: el espacio de dirección primario y el espacio de dirección secundario. En cualquier instante en que la CPU esté en el modo de registro de acceso, puede traducir direcciones virtuales de hasta 16 espacios de dirección (el espacio de dirección primario y hasta 15 espacios de dirección específicos de AR). En cualquier instante en que la CPU esté en el modo de espacio doméstico, ésta puede traducir direcciones virtuales del espacio de dirección doméstico.
El espacio de dirección primaria se identifica como tal debido a que consiste en direcciones virtuales primarias, las cuales son traducidas por medio del elemento de control de espacio de dirección primario (ASCE). De forma similar, el espacio de dirección secundaria consiste en direcciones virtuales secundarias traducidas por medio del ASCE secundario; Los espacios de dirección específicos de AR consisten en direcciones virtuales específicas de AR traducidas por medio de ASCEs específicos de AR; y, el espacio de dirección doméstica consiste en direcciones virtuales domésticas traducidas por medio del ASCE doméstico. Los ASCEs primario y secundario están en los registros de control 1 y 7, respectivamente. Los ASCEs específicos de AR están en las entradas ASN-de-segundatabla que son localizadas por medio de un proceso denominado traducción de registro de acceso (ART) usando los registros de control 2, 5 y 8. El ASCE doméstico está en el registro de control 13.
Una realización de un entorno informático para incorporar y usar uno o más aspectos del servicio transaccional descrito en la presente memoria, se describe con referencia a la Figura 1.
Con referencia a la Figura 1, en un ejemplo, el entorno informático 100 se basa en la z/Arquitectura, ofrecida por International Business Machines (IBM®) Corporation, Armonk, Nueva York. La z/Arquitectura se ha descrito en una publicación de IBM titulada “z/Architecture - Principles of Operation”, Publicación núm. SA22-7932-08, 9a Edición, agosto de 2010.
Z/ARCHITECTURE, IBM Y Z/OS Y Z/VM (referenciadas más adelante), son marcas registradas de International Business Machines Corporation Armonk, Nueva York. Otros nombres usados en la presente memoria pueden ser marcas registradas, nombres de marcas o de producto de International Business Machines Corporation o de otras compañías.
Como ejemplo, el entorno informático 100 incluye un complejo central de proceso (CPC) 102 acoplado a uno o más dispositivos 106 de entrada/salida (E/S) a través de una o más unidades 108 de control. El complejo central de proceso 102 incluye, por ejemplo, uno o más procesadores 110 centrales, una o más particiones 112 (por ejemplo, particiones lógicas (LP)), un hipervisor 114 de partición y un subsistema 115 de entrada/salida, cada uno de los cuales se describe a continuación.
Los procesadores 110 centrales son recursos de procesador físico asignados a las particiones lógicas. En particular, cada partición 112 lógica tiene uno o más procesadores lógicos, cada uno de los cuales representa todo o un recurso compartido de un procesador 110 físico asignado a la partición. Los procesadores lógicos de una partición 112 particular pueden estar dedicados a la partición, de modo que el recurso 110 de procesador subyacente está reservado para esa partición, o bien compartido con otra partición, de modo que el recurso de procesador subyacente está potencialmente disponible para otras particiones.
Una partición lógica funciona a modo de un sistema separado y tiene una o más aplicaciones, y opcionalmente, un sistema operativo residente en la misma, que puede ser diferente para cada partición lógica. En un ejemplo, 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 particiones 112 lógicas son gestionadas por medio de un hipervisor 114 de partición lógica, el cual se implementa mediante firmware que se ejecuta en procesadores 110. Según se utiliza en la presente memoria, firmware incluye, p. ej., el microcódigo y/o el milicódigo del procesador. Éste incluye, por ejemplo, las instrucciones a nivel de hardware y/o las estructuras de datos usadas en la implementación de código máquina de nivel más alto. En un ejemplo, incluye, por ejemplo, código propietario que se suministra típicamente como microcódigo que incluye software de confianza o como microcódigo específico para el hardware subyacente, y controla el acceso del sistema operativo al hardware del sistema.
Las particiones lógicas y el hipervisor de partición lógica comprenden, cada uno de ellos, uno o más programas residentes en particiones respectivas de un almacenaje central asociado a los procesadores centrales. Un ejemplo de hipervisor 114 de partición lógica es el Recurso de Procesador/Gestor de Sistema (PR/SM), ofrecido por International Business Machines Corporation, Armonk, Nueva York.
El subsistema 115 de entrada/salida dirige el flujo de información entre dispositivos 106 de entrada/salida y de almacenaje principal (conocido también como memoria principal). Está acoplado al complejo central de procesamiento, ya que puede ser parte de un proceso central de procesamiento o estar separado del mismo. El subsistema de E/S exonera a los procesadores centrales de la tarea de comunicar directamente con los dispositivos de entrada/salida y permite que el procesamiento de datos continúe simultáneamente con el procesamiento de entrada/salida. Para proporcionar comunicaciones, el subsistema de E/S emplea adaptadores de comunicaciones de E/S. Existen varios tipos de adaptadores de comunicaciones que incluyen, por ejemplo, canales, adaptadores de E/S, tarjetas PCI, tarjetas Ethernet, tarjetas de Interfaz de Almacenaje de Ordenador Pequeño (SCSI), etc. En el ejemplo particular que se describe en la presente memoria, los adaptadores de comunicaciones de E/S son canales, y por lo tanto, el subsistema de E/S se menciona en la presente memoria como subsistema de canal. Sin embargo, esto es solamente un ejemplo. Se pueden usar otros tipos de subsistemas de E/S.
El subsistema de E/S usa una o más rutas de entrada/salida como enlaces de comunicación en la gestión del flujo de información hacia, o desde, los dispositivos 106 de entrada/salida. En este ejemplo particular, estas rutas se denominan rutas de canal, puesto que los adaptadores de comunicación son canales.
El entorno informático descrito con anterioridad es solamente un ejemplo de un entorno informático que puede ser utilizado. Se pueden usar otros entornos, incluyendo, aunque sin limitación, entornos no particionados, otros entornos particionados, y/o entornos emulados; las realizaciones no están limitadas a ningún entorno.
Conforme a uno o más aspectos, la instalación de ejecución transaccional es un refuerzo de CPU que proporciona los medios mediante los que la CPU puede ejecutar una secuencia de instrucciones, conocida como transacción, que pueden acceder a múltiples localizaciones de almacenamiento, incluyendo la actualización de esas localizaciones. Según puede ser observado por otras CPUs y por el subsistema de E/S, la transacción: (a) o bien se completa en su totalidad en una única operación atómica, o bien (b) se aborta, sin dejar potencialmente ninguna evidencia de que se haya ejecutado alguna vez (salvo para determinadas condiciones descritas en la presente memoria). De ese modo, una transacción completada con éxito puede actualizar numerosas localizaciones de almacenaje 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; de procesamiento transaccional, que incluyen ejecución restringida y no restringida; y, procesamiento de aborto, cada uno de los cuales se va a describir mejor más adelante.
En una realización, tres controles de propósito especial, que incluyen una Palabra de Estado de Programa (PSW) de aborto de transacción, una dirección de bloque de diagnóstico de transacción (TDB), y una profundidad de anidamiento de transacción; cinco bits de registro de control, y seis instrucciones generales, que incluyen TRANSACTION BEGIN (restringida y no restringida); TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT y NONTRANSACTIONAL STORE, se utilizan para controlar la instalación de ejecución transaccional. Cuando la instalación ha sido instalada, se encuentra instalada, por ejemplo, en todas las CPUs de la configuración. Una indicación de instalación, el bit 73 en una implementación, cuando es uno, indica que la instalación de ejecución transaccional se encuentra 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 va a describir en lo que sigue. Cuando las indicaciones 50 y 73 de instalación, como ejemplos, son ambas uno, la instalación de ejecución transaccional restringida se encuentra instalada. Ambas indicaciones de instalación se almacenan en memoria en posiciones específicas.
Según se utiliza en la presente memoria, el nombre de la instrucción TRANSACTION BEGIN se refiere a las instrucciones que tienen las mnemotecnias TBEGIN (Inicio de Transacción para una transacción no restringida) y TBEGINC (Inicio de Transacción para una transacción restringida). Las discusiones pertenecientes a una instrucción específica están indicadas por el nombre de la transacción seguido por la mnemotecnia entre paréntesis o corchetes, o simplemente por la mnemotecnia.
Una realización de un formato de una instrucción de TRANSACTION BEGIN (TBEGIN) ha sido representada en las Figuras 2A-2B. Según un ejemplo, una instrucción 200 de TBEGIN incluye un campo 202 de opcode que especifica una operación no restringida de inicio de transacción; un campo (B1) 204 de base; un campo (D1) 206 de desplazamiento, y un campo (I2) 208 inmediato. Cuando el campo B1 no es cero, los contenidos del registro general especificado mediante B1204 se añaden a D1206 para obtener la primera dirección de operando.
Cuando el campo B1 no es cero, se aplica lo siguiente:
• Cuando la profundidad de anidamiento de transacción es inicialmente cero, la primera dirección de operando designa la localización del bloque de diagnóstico de transacción de 256 bytes, llamado TDB especificado por TBEGIN (mejor descrito más adelante) en el que puede ser almacenada una información diversa de diagnóstico si se aborta la transacción. Cuando la CPU está en el modo de espacio primario o en modo de registro de acceso, la primera dirección de operando designa una localización en el espacio de dirección primaria. Cuando la CPU está en el espacio secundario o modo de espacio doméstico, la primera dirección de operando designa una localización en el espacio de dirección secundaria o doméstica, respectivamente. Cuando DAT está desactivada, la dirección (TDBA) del bloque de diagnóstico de transacción (TDB) designa una localización en almacenaje real.
Se determina almacenar accesibilidad en el primer operando”. Si es accesible, la dirección lógica del operando se dispone en la dirección de bloque de diagnóstico de transacción (TDBA), y la TDBA es válida.
• Cuando la CPU está ya en el modo de ejecución transaccional no restringida, la TDBA no se modifica, y es impredecible si el primer operando ha sido probado en cuanto a accesibilidad.
Cuando el campo B1 es cero, no se detecta ninguna excepción de acceso para el primer operando y, para la instrucción TBEGIN más externa, la TDBA es válida.
Los bits del campo I2 se definen como sigue, en un ejemplo:
Máscara de Guardar de Registro General (GRSM) 210 (Figura 2B): los bits 0-7 del campo I2 contienen la máscara de guardar de registro general (GRSM). Cada bit de la GRSM representa un par de registros generales par-impar, donde el bit 0 representa registros 0 y 1, el bit 1 representa registros 2 y 3, y así sucesivamente. Cuando un bit en la GRSM de la instrucción TBEGIN más externa es cero, no se guarda el par de registro correspondiente. Cuando un bit en la GRSM de la instrucción TBEGIN más externa es uno, se guarda el par de registro correspondiente en una posición dependiente del modelo que no es directamente accesible para el programa.
Si se aborta la transacción, se restablecen los pares de registro guardados a sus contenidos cuando se ejecuta la instrucción TBEGIN más externa. Los contenidos (no guardados) de los otros registros generales no se restablecen cuando aborta una transacción.
La máscara de guardar de registro general se ignora en todos los TBEGINs excepto para el más externo.
Permitir Modificación de AR (A) 212: El control A, bit 12 del campo I2, controla si se permite que la transacción modifique un registro de acceso. El control efectivo de modificación de AR es la AND lógica del control A en la instrucción TBEGIN para el nivel de anidamiento actual y para todos los niveles externos.
Si el control efectivo A es cero, la transacción será abortada con un código de aborto 11 (instrucción restringida) si se hace algún intento de modificar cualquier registro de acceso. Si el control efectivo A es uno, la transacción no será abortada si se modifica un registro de acceso (en ausencia de cualquier otra condición).
Permitir Operación de Punto Flotante (F) 214: El control F, bit 13 del campo I2, controla si se permite que la transacción ejecute instrucciones específicas de punto flotante. El control efectivo de operación permitida de punto flotante es la AND lógica del control F en la instrucción TBEGIN para el nivel de anidamiento actual y para todos los niveles externos.
Si el control efectivo F es cero, entonces (a) la transacción será abortada con el código de aborto 11 (instrucción restringida) si se hace algún intento de ejecutar una instrucción de punto flotante, y (b) el código de excepción de datos (DXC) en el byte 2 del registro de control de punto flotante (FPCR) no será establecido por ninguna condición de excepción del programa de excepción de datos. Si el control efectivo F es uno, entonces (a) la transacción no será abortada si se hace algún intento de ejecutar una instrucción de punto flotante (en ausencia de cualquier otra condición de aborto), y (b) el DXC en el FPCR puede ser establecido mediante una condición de excepción del programa de excepción de datos.
Control de Filtraje de Interrupción de Programa (PIFC) 216: Los bits 14-15 del campo I2 son el control de filtraje de interrupción de programa (PIFC). El PIFC controla si determinadas clases de condiciones de excepción de programa (p.ej., excepción de direccionamiento, excepción de datos, excepción de operación, excepción de protección, etc.) que ocurren mientras la CPU está en modo de ejecución transaccional dan como resultado una interrupción.
El PIFC efectivo es el valor más alto del PIFC en la instrucción TBEGIN para el nivel de anidamiento actual y para todos los niveles externos. Cuando el PIFC efectivo es cero, todas las condiciones de excepción de programa dan como resultado una interrupción. Cuando el PIFC efectivo es uno, las condiciones de excepción de programa que tienen una clase de excepción transaccional de 1 y 2 dan como resultado una interrupción. (Cada condición de excepción de 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 restablecimiento durante una ejecución repetida de la excepción transaccional, y de 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 dan como resultado una interrupción. Un PIFC de 3 está reservado.
Los bits 8-11 de campo I2 (bits 40-43 de la instrucción), están reservados y podrían contener ceros; en otro caso, el programa puede que no opere de manera compatible en el futuro.
Una realización de un formato de una instrucción de Inicio de Transacción restringida (TBEGINC) se describe con referencia a las Figuras 3A-3B. En un ejemplo, TBEGINC 300 incluye un campo 302 de opcode que incluye un opcode que especifica una operación restringida de inicio de transacción; un campo (B1 ) 304 de base; un campo (D1 ) 306 de desplazamiento, y un campo (I2) 308 inmediato. Los contenidos del registro general especificado mediante B1 304 se añaden a D1306 para obtener la primera dirección de operando. Sin embargo, con la instrucción restringida de inicio de transacción, la primera dirección de operando no se usa para acceder al almacenamiento. En cambio, el campo B1 de la instrucción incluye ceros; en otro caso, se reconoce una excepción de especificación.
En una realización, el campo I2 incluye varios controles, de los que se ha representado un ejemplo en la Figura 3B. Los bits del campo I2 se definen como sigue, en un ejemplo.
Máscara de Guardar de Registro General (GRSM) 310: los bits 0-7 del campo I2 contienen la máscara de guardar de registro general (GRSM). Cada bit de la GRSM representa un par de registros generales parimpar, 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 de registro correspondiente no se guarda.
Cuando un bit en la GRSM es uno, se guarda el par de registro correspondiente en una posición dependiente del modelo que no es accesible directamente para el programa.
Si aborta la transacción, los pares de registro guardados se restablecen con sus contenidos de cuando se ejecutó la instrucción TRANSACTION BEGIN más externa. Los contenidos de los otros registros generales (no guardados) no se restablecen cuando aborta la transacción.
Cuando se usa TBEGINC para que continúe la ejecución en el modo de ejecución de transacción no restringida, se ignora la máscara de guardar de registro general.
Permitir Modificación de AR (A) 312: El control A, bit 12 del campo I2, controla si se ha permitido que la transacción modifique un registro de acceso. El control de modificación de AR de admisión es la AND lógica del control A en la instrucción TBEGINC para el nivel de anidamiento actual y para cualquier TBEGIN externa o instrucciones TBEGINC.
Si el control A efectivo es cero, la transacción será abortada con el código 11 de aborto (instrucción restringida) si se hace algún intento de modificar cualquier registro de acceso. Si el control A efectivo es uno, la transacción no será abortada si se modifica un registro de acceso (en ausencia de cualquier otra condición de aborto).
Los bits 8-11 y 13-15 del campo I2 (bits 40-43 y 45-47 de la instrucción), están reservados y podrán contener ceros.
El fin de una instrucción de Inicio de Transacción se especifica mediante una instrucción de TRANSACTION END (TEND), de la que se ha representado un formato en la Figura 4. Como ejemplo, una instrucción 400 TEND incluye un campo 402 de opcode que incluye un opcode que especifica una operación de fin de transacción.
Con respecto a la instalación de ejecución transaccional se usa un número de términos y, por lo tanto, solamente por motivos de conveniencia, se proporciona a continuación una lista de términos por orden alfabético. En una realización, estos términos tienen la siguiente definición:
Aborto: Una transacción aborta cuando finaliza con anterioridad a una instrucción de TRANSACTION END que dé como resultado una profundidad de anidamiento de cero. Cuando una transacción aborta, ocurre lo siguiente, en una realización:
• Accesos de almacenamiento transaccional realizados por algunos y por todos los niveles de la transacción son descartados (es decir, no asignados).
• Accesos de almacenamiento no transaccional realizados por algunos y por todos los niveles de la transacción son asignados.
• Registros designados por la máscara de guardar registro general (GRSM) de la instrucción de TRANSACTION BEGIN más externa son restablecidos a sus contenidos anteriores a la ejecución transaccional (es decir, a sus contenidos a la ejecución de la instrucción TRANSACTION BEGIN más externa). Los registros generales no designados por la máscara de guardar registro general de la instrucción de TRANSACTION BEGIN más externa, no son restablecidos.
• Los registros de acceso, registros de punto flotante y el registro de control de punto flotante no son restablecidos. Cualquier cambio realizado en estos registros durante la ejecución de la transacción se conservan cuando transacción aborta.
Una transacción puede ser abortada debido a una diversidad de razones, incluyendo el intento de ejecución de una instrucción restringida, el intento de modificación de un recurso restringido, un conflicto transaccional, exceder varios recursos de CPU, cualquier condición de intercepción de ejecución interpretativa, cualquier interrupción, una instrucción de TRANSACTION ABORT, y otros motivos. Un código de aborto de transacción proporciona razones específicas de porqué puede ser abortada una transacción.
Se va a describir un ejemplo de formato de una instrucción de TRANSACTION ABORT (TABORT) con referencia a la Figura 5. Como ejemplo, una instrucción 500 de TABORT incluye un campo 502 de opcode que incluye un opcode que especifica una operación de aborto de transacción; un campo (B2) 504 de base, y un campo (D2) 506 de desplazamiento. Cuando el campo B2 no es cero, los contenidos del registro general especificados por B2504 se añaden a D2506 para obtener una segunda dirección de operando; en otro caso, la segunda dirección de operando se forma únicamente a partir del campo D2, y el campo B2 se ignora. La segunda dirección de operando no se usa para datos de dirección; en cambio, la dirección forma el código de aborto de transacción que se coloca en un bloque de diagnóstico de transacción durante el proceso de aborto. El cálculo de dirección para la segunda dirección de operando sigue las reglas de la aritmética de direcciones: en el modo de direccionamiento de 24 bits, los bits 0-29 se establecen en cero; en el modo de direccionamiento de 31 bits, los bits 0-32 se establecen en cero.
Asignación: A la terminación de una instrucción de TRANSACTION END más externa, la CPU asigna los accesos de almacenamiento realizados por la transacción (es decir, la transacción más externa y algunos niveles anidados) de tal modo que los mismos sean visibles para otras CPUs y para el subsistema de E/S. Según se observa por parte de otras CPUs y por el subsistema de E/S, todos los accesos de búsqueda y de almacenamiento realizados por todos los niveles anidados de la transacción parecen ocurrir como una única operación concurrente cuando ocurre la asignación.
Los contenidos de los registros generales, registros de acceso, registros de punto flotante y registro de control de punto flotante, no son modificados por el proceso de asignación. Cualquier cambio realizado en estos registros durante la ejecución transaccional se conserva cuando son asignados los almacenamientos de la transacción.
Conflicto: Un acceso transaccional realizado por una CPU entra en conflicto con cualquiera de (a) un acceso transaccional o un acceso no transaccional realizado por otra CPU, o (b) el acceso no transaccional realizado por el subsistema de E/S, si ambos accesos están en alguna posición dentro de la misma línea de caché, y uno o más de los accesos es un almacén.
Se puede detectar un conflicto por medio de una ejecución especulativa de instrucciones de la CPU, incluso aunque el conflicto no pueda ser detectado 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 restringida y que está sujeta a las siguientes limitaciones:
• Un subconjunto de las instrucciones generales se encuentra disponible.
• Se puede ejecutar un número limitado de instrucciones.
• Se puede acceder a un número limitado de localizaciones de operando de almacenamiento.
• La transacción está limitada a un único nivel de anidamiento.
En ausencia de interrupciones repetidas o de conflictos con otras CPUs o con el subsistema de E/S, se completa eventualmente una transacción restringida, por lo que no se requiere una rutina de manipulador de aborto. Se describen transacciones restringidas con mayor detalle más adelante.
Cuando se ejecuta una instrucción de TRANSACTION BEGIN restringida (TBEGINC) mientras la CPU está ya en el modo de ejecución de transacción no restringida, la ejecución continúa como transacción no restringida anidada. Modo de Ejecución Transaccional Restringida: Cuando la profundidad de anidamiento de la transacción es cero, y se inicia una transacción mediante una instrucción TBEGINC, la CPU entra en el modo de ejecución transaccional restringida. Mientras la CPU esté en el modo de ejecución transaccional restringida, la profundidad de anidamiento de la transacción es uno.
Transacción Anidada: Cuando se emite la instrucción TRANSACTION BEGIN 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 usa un modelo denominado anidamiento aplanado. En el modo de anidamiento aplanado, los almacenamientos realizados por una transacción interna no son observables por otras CPUs ni por el subsistema de E/S hasta que la transacción más externa asigna sus almacenes. De forma similar, si aborta una transacción, todas las transacciones anidadas abortan, y se descartan todos los almacenamientos transaccionales de todas las transacciones anidadas.
Un ejemplo de transacciones anidadas ha sido representado en la Figura 6. Según se muestra, una primera TBEGIN 600 inicia una transacción 601 más externa, TBEGIN 602 inicia una primera transacción anidada, y TBEGIN 604 inicia una segunda transacción anidada. En este ejemplo, TBEGIN 604 y TEND 606 definen una transacción 608 más interna. Cuando se ejecuta TEND 610, 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 limitada a la manera de como una transacción restringida, puede ser aún abortada debido a una diversidad de motivos.
Modo de Ejecución Transaccional No Restringida: cuando se inicia una transacción por medio de la instrucción TBEGIN, la CPU entra en el modo de ejecución transaccional no restringida. Mientras la CPU está en el modo de ejecución transaccional no restringida, la profundidad de anidamiento de la transacción puede variar desde uno hasta la máxima profundidad de anidamiento de transacción.
Acceso No Transaccional: Los accesos no transaccionales son accesos de operando de almacenaje realizados por la CPU cuando no está en el modo de ejecución transaccional (es decir, los accesos clásicos de almacenaje fuera de una transacción). Además, los accesos realizados por el subsistema de E/S son accesos no transaccionales. Adicionalmente, la instrucción de NONTRANSACTIONAL STORE puede ser usada para provocar un acceso de almacenamiento no transaccional mientras la CPU está en el modo de ejecución transaccional no restringida.
Una realización de un formato de una instrucción de NONTRANSACTIONAL STORE va a ser descrita con referencia a la Figura 7. Como ejemplo, una instrucción 700 de NONTRANSACTIONAL STORE incluye una pluralidad de campos 702a, 702b de opcode que especifican un opcode que designa una operación de almacenamiento no transaccional: un campo (R1) 704 que especifica un registro, cuyos contenidos se denominan primer operando; un campo (X2) 706 de índice; un campo (B2) 708 de base; un primer campo (DL2) 710 de desplazamiento, y un segundo campo (DH2) 712 de desplazamiento. Los contenidos de los registros generales designados por los campos X2 y B2 se añaden a los contenidos de una concatenación de contenidos de los campos DH2 y DL2 para formar la segunda dirección de operando. Cuando alguno de los, o ambos, campos X2 o B2 son cero, el registro correspondiente no toma parte en la adición.
El primer operando de 64 bits se coloca no transaccionalmente sin cambio en la segunda localización de operando. El desplazamiento, formado por la concatenación de los campos DH2 y DL2, se trata como un número entero binario signado de 20 bits.
El segundo operando debe ser alineado sobre un límite de doble palabra; en otro caso, se reconoce excepción de especificación y se suprime la operación.
Transacción Externa/Más Externa: Una transacción con una profundidad de anidamiento de transacción de número más bajo, es una transacción externa. Una transacción con un valor de profundidad de anidamiento de transacción de uno, es la transacción más externa.
Una instrucción de TRANSACTION BEGIN más externa es una que se ejecuta cuando la profundidad de anidamiento de la transacción es inicialmente cero. Una instrucción de TRANSACTION END más externa es uno que provoca que la profundidad de anidamiento de la transacción evolucione desde uno a cero. Una transacción restringida es la transacción más externa, en esta realización.
Filtraje de Interrupción de Programa: Cuando se aborta una transacción debido a condiciones de una determinada excepción de programa, el programa puede impedir opcionalmente que ocurra la interrupción. Esta técnica se denomina filtraje de interrupción de programa. El filtraje de interrupción de programa está sujeto a la clase transaccional de la interrupción, al control de filtraje efectivo de interrupción de programa a partir de la instrucción de TRANSACTION BEGIN, y a la invalidación del filtraje de interrupción de programa de ejecución transaccional en el registro de control 0.
Transacción: Una transacción incluye los accesos de operando de almacenamiento realizados, y los registros generales seleccionados alterados, mientras la CPU está en el modo de ejecución de transacción. Para una transacción no restringida, los accesos de operando de almacenamiento pueden incluir tanto accesos transaccionales como accesos no transaccionales. Para una transacción restringida, los accesos de operando de almacenamiento están limitados a accesos transaccionales. Según se observa por parte de otras CPUs y por el subsistema de E/S, todos los accesos de operando de almacenamiento realizados por la CPU mientras está en el modo de ejecución de transacción parecen ocurrir a modo de una simple operación concurrente. Si se aborta una transacción, los accesos de almacenamiento transaccional son descartados, y se restablecen cualesquiera registros designados por la máscara de salvar registro general de la instrucción de TRANSACTION BEGIN más externa a sus contenidos anteriores a la ejecución transaccional.
Accesos Transaccionales: Los accesos transaccionales son accesos de operando de almacenaje realizados mientras la CPU está en el modo de ejecución transaccional, con la excepción de los accesos realizados por la instrucción de NONTRANSACTIONAL STORE.
Modo de Ejecución Transaccional: El término modo de ejecución transaccional (conocido también como., modo de ejecución de transacción), describe la operación común de ambos modos de ejecución transaccional no restringida y restringida. De ese modo, cuando se describe la operación, los términos no restringida y restringida se usan para calificar el modo de ejecución transaccional.
Cuando la profundidad de anidamiento de la transacción es cero, la CPU no está en el modo de ejecución transaccional (también denominado modo de ejecución no transaccional).
Según se observa por parte de la CPU, las búsquedas y los almacenamientos realizados en el modo de ejecución transaccional no son diferentes de los realizados mientras no está en el modo de ejecución transaccional.
En un ejemplo de la z/Arquitectura, 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 anidamiento de la transacción, la dirección del bloque de diagnóstico de transacción, y la palabra de estado de programa (PSW) de aborto de transacción.
A continuación de un reseteo inicial de la CPU, los contenidos de las posiciones 8-9 de bits del registro de control 0, las posiciones 62-63 de bits del registro de control 2, y la profundidad de anidamiento de transacción se establecen en cero. Cuando el control de ejecución transaccional, el bit 8 del registro de control 0, es cero, la CPU no puede ser llevada al modo de ejecución transaccional.
Otros detalles relativos a los diversos controles se describen más adelante.
Según se ha indicado, la instalación de ejecución transaccional está controlada por dos bits en el registro de control cero y tres bits en el registro de control dos. Por ejemplo:
Bits del Registro de Control 0: Las asignaciones de bits son como sigue, en una realización:
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 con el que el programa de control (p. ej., el sistema operativo) puede indicar si es o no utilizable la instalación de ejecución transaccional por el programa. El bit 8 debe ser uno para entrar con éxito en el modo de ejecución transaccional.
Cuando el bit 8 del registro de control 0 es cero, el intento de ejecución de las instrucciones EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION BEGIN y TRANSACTION END da como resultado una ejecución de operación especial.
Una realización de un formato de una instrucción de EXTRACT TRANSACTION NESTING DEPTH va a ser descrita con referencia a la Figura 8. Como ejemplo, una instrucción 800 de EXTRACT TRNSACTION NESTING DEPTH incluye un campo 802 de opcode que especifica un opcode que indica la operación de extracción de la profundidad de anidamiento de la transacción; y un campo R1804 de registro que designa un registro general.
La profundidad actual de anidamiento de la transacción se dispone en los bits 48-63 del registro R1 general. Los bits 0-31 del registro permanecen sin cambio, y los bits 32-47 del registro se establecen en cero.
En una realización adicional, la profundidad máxima de anidamiento de la transacción se dispone también en el registro R1 general, tal como en los bits 16-31.
Invalidación de Filtraje de Interrupción del Programa de Ejecución de Transacción (PIFO): El bit 9 del registro de control cero es la invalidación de filtraje de interrupción del programa de ejecución transaccional. Este bit proporciona un mecanismo con el que el programa de control puede asegurar que cualquier condición de excepción de programa que ocurra mientras la CPU está en el modo de ejecución transaccional da como resultado una interrupción, con independencia del control efectivo de filtraje de interrupción de programa especificado o implicado por la(s) instrucción(es) de TRANSACTION BEGIN. Bits del Registro de Control 2: Las asignaciones son como sigue, en una realización:
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 transacción (TDC) en los bits 62-63 del registro, como sigue:
TDS
Valor Significado
0 Se aplica el TDC con independencia de si la CPU está en un estado de problema o de supervisor 1 Se aplica el TDC solamente cuando la CPU está en el estado de problema. Cuando la CPU está en estado de supervisor, el proceso es como si el TDC contuviera cero.
Control de Diagnóstico de Transacción (TDC): Los bits 62-63 del registro de control 2 son un número entero sin signar de 2 bits que puede ser usado para provocar que las transacciones sean abortadas aleatoriamente para fines diagnósticos. La codificación del TDC es como siguen, en un ejemplo:
TDC
Valor Significado
0 Operación normal; las transacciones no son abortadas como resultado del TDC.
1 Abortar cada transacción en una instrucción aleatoria, pero con anterioridad a la ejecución de la instrucción TRANSACTION END más externa.
2 Abortar transacciones aleatorias en una instrucción aleatoria
3 Reservado.
Cuando se aborta una transacción debido a un TDC que no es cero, entonces puede ocurrir cualquiera de lo siguiente:
• El código de aborto se establece en cualquiera de los códigos 7-11, 13-16 o 255, con el valor del código elegido aleatoriamente por la CPU; el código de condición se establece en correspondencia con el código de aborto. Los códigos de aborto se describen mejor más adelante.
• Para una transacción no restringida, el código de condición se establece en uno. En este caso, el código de aborto no es aplicable.
Éste es un modelo dependiente de si se implementa el valor 1 de TDC. Si no se implementa, un valor de 1 actúa como si se hubiera especificado 2.
Para una transacción restringida, un valor de TDC de 1 se trata como si se hubiera especificado un valor de TDC de 2.
Si se especifica un valor de TDC de 3, los resultados son impredecibles.
Dirección de Bloque de Diagnóstico de Transacción (TDBA)
Una dirección de bloque de diagnóstico de transacción (TDBA) válida se establece a partir de la primera dirección de operando de la instrucción de TRANSACTION BEGIN (TBEGIN) más externa cuando el campo B1 de la instrucción no es cero. Cuando la CPU está en el modo de espacio primario o de registro de acceso, la TDBA designa una ubicación en el espacio de dirección primaria. Cuando la CPU está en el espacio secundario, o en el modo de espacio doméstico, la TDBA designa una ubicación en el espacio de dirección secundaria o doméstica, respectivamente. Cuando DAT (Traducción de Dirección Dinámica) está inactiva, la TDBA designa una ubicación en almacenamiento real.
La TDBA se usa por parte de la CPU para localizar el bloque de diagnóstico de traducción, denominado TDB específico de TBEGIN, si la traducción se aborta posteriormente. Los tres bits más a la derecha de la TDBA son cero, lo que significa que el TDB específico de TBEGIN está sobre un límite de una doble palabra.
Cuando el campo B1 de una instrucción de TRANSACTION BEGIN (TBEGIN) más externa es cero, la dirección de bloque de diagnóstico transaccional es inválida, y no se almacena ningún TDB específico de TBEGIN si la transacción es abortada posteriormente.
PSW de Aborto de Transacción (TAPSW)
Durante la ejecución de la instrucción TRANSACTION BEGIN (TBEGIN) cuando la profundidad de anidamiento es inicialmente cero, la PSW de aborto de transacción se establece en los contenidos de la PSW actual; y la dirección de instrucción de la PSW de aborto de transacción designa la siguiente instrucción secuencial (es decir, la instrucción que sigue a la TBEGIN más externa). Durante la ejecución de la instrucción de TRANSACTION BEGIN restringida (TBEGINC) cuando la profundidad de anidamiento es inicialmente cero, la PSW de aborto de transacción se establece en los contenidos de la PSW actual, salvo que la dirección de instrucción de la PSW de aborto de transacción designe la instrucción de TBEGINC (en vez de la siguiente instrucción secuencial a continuación de la TBEGINC).
Cuando se aborta una transacción, el código de condición en la PSW de aborto de transacción se reemplaza por un código que indica la severidad de la condición de aborto. Posteriormente, si la transacción ha sido abortada debido a causas que no dan como resultado una interrupción, la PSW se carga desde la PSW de aborto de transacción; si la transacción fue abortada debido a causas que dan como resultado una interrupción, la PSW de aborto de transacción se almacena en la antigua PSW de interrupción.
La PSW de aborto de transacción no se altera durante la ejecución de ninguna instrucción de TRANSACTION BEGIN interna.
Profundidad de Anidamiento de Transacción (TND)
La profundidad de anidamiento de transacción es, por ejemplo, un valor sin signar de 16 bits que se incrementa cada vez que se completa una instrucción de TRANSACTION BEGIN con el código 0 de condición, y se decrementa cada vez que se completa una instrucción de TRANSACTION END. La profundidad de anidamiento de transacción se resetea a cero cuando se aborta una transacción o mediante reseteo de la CPU.
En una realización, 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 anidamiento de transacción es uno. Adicionalmente, aunque la TND máxima puede ser representada como un valor de 4 bits, la TND se define de modo que sea un valor de 16 bits para facilitar su inspección en el bloque de diagnóstico de transacción.
Bloque de Diagnóstico de Transacción (TDB)
Cuando se aborta una transacción, se puede guardar diversa información de estado en un bloque de diagnóstico de transacción (TDB), como sigue:
1. TDB específico de TBEGIN: Para una transacción no restringida, cuando el campo B1 de la instrucción TBEGIN más externa no es cero, la primera dirección de operando de la instrucción designa el TDB específico de TBEGIN. Ésta es una localización específica del programa de aplicación que puede ser examinada por el manipulador de aborto de la aplicación.
2. TDB de Interrupción de Programa (PI): Si se aborta una transacción no restringida debido a una condición de excepción de programa no filtrado, o si se aborta una transacción restringida debido a alguna condición de excepción de programa (es decir, cualquier condición que dé como resultado que se reconozca una interrupción de programa), la PI-TDB se almacena en posiciones del área de prefijo. Esto se encuentra disponible para que el sistema operativo inspeccione y cierre sesión en cualquier informe de diagnóstico que pueda proporcionar.
3. TDB de Intercepción: Si se aborta la transacción debido a alguna condición de excepción del programa que dé como resultado la intercepción (es decir, la condición hace que termine la ejecución interpretativa y que el control vuelva al programa anfitrión), se almacena un TDB en una posición específica en el bloque de descripción de estado para el sistema operativo huésped.
El TDB específico de TBEGIN se almacena solamente, en una realización, cuando la dirección de TDB es válida (es decir, cuando el campo B1 de la instrucción TBEGIN más externa no es cero).
Para abortos debidos a condiciones no filtradas de excepción del programa, solamente se almacenará uno de entre PI-TDB o TDB de Intercepción. De ese modo, pueden estar cero, uno o dos TDBs almacenados para un aborto. Los detalles adicionales con relación a un ejemplo de cada uno de los TDBs se describen a continuación:
TDB específico de TBEGIN: Localización de 256 bytes especificada por una dirección de bloque de diagnóstico de transacción válida. Cuando la dirección de bloque de diagnóstico de transacción es válida, el TDB específico de TBEGIN se almacena sobre un aborto de transacción. El TDB específico de TBEGIN está sujeto a todos los mecanismos de protección de almacenamiento que están, en efecto, en la ejecución de la instrucción de TRANSACTION BeGIN más externa. Un evento de alteración de almacenaje de PER (Registro de Evento de Programa) para cualquier porción del TDB específico de TBEGIN, se detecta durante la ejecución del TBEGIN más externo, no durante el proceso de aborto de la transacción.
Un propósito del PER consiste en ayudar a depurar programas. Éste permite que el programa sea alertado para los siguientes tipos de eventos, como ejemplos:
• Ejecución de una instrucción de ramificación con éxito. La opción se proporciona para lograr que un evento ocurra solamente cuando la localización objetivo de la ramificación está dentro de la zona de almacenamiento designada.
• Búsqueda de una instrucción a partir del área de almacenamiento designada.
• Alteración de los contenidos del área de almacenamiento designada. Se proporciona la opción de lograr que un evento ocurra solamente cuando el área de almacenamiento esté dentro de espacios de dirección designados.
• Ejecución de una instrucción de STORE USING REAL ADDRESS.
• Ejecución de la instrucción TRANSACTION END.
El programa puede especificar selectivamente que uno o más de los tipos de eventos anteriores sean reconocidos, excepto si el evento para STORE USING REAL ADDRESS puede ser especificado solamente junto con el evento de alteración de almacenamiento. La información concerniente a un evento de PER se proporciona al programa por medio de una interrupción de programa, con motivo de que la interrupción sea identificada en el código de interrupción.
Cuando la dirección de bloque de diagnóstico de transacción no es válida, no se almacena ningún TDB específico de TBEGIN.
TDB de Interrupción de Programa: Localizaciones reales 6,144-6,399 (1800-18FF hex.). El TDB de interrupción de programa se almacena cuando se aborta una transacción debido a interrupción de programa. Cuando se aborta una transacción debido a otras causas, los contenidos del TDB de interrupción del programa son impredecibles.
El TDB de interrupción de programa no está sujeto a ningún mecanismo de protección. Los eventos de alteración de almacenamiento de PER no son detectados para el TDB de interrupción de programa cuando se almacenan durante una interrupción del programa.
TDB de Intercepción: La localización real de anfitrión de 256 bytes está especificada por las localizaciones 488-495 de la descripción de estado. El TDB de intercepción se almacena cuando una transacción abortada da como resultado una intercepción de interrupción del programa huésped (es decir, el código 8 de intercepción). Cuando se aborta una transacción debido a otras causas, los contenidos del TDB de intercepción son impredecibles. El TDB de intercepción no está sujeto a ningún mecanismo de protección.
Según se ha representado en la Figura 9, los campos de un bloque 900 de diagnóstico de transacción son como sigue, en una realización:
Formato 902: El Byte 0 contiene una indicación de validez y de formato, como sigue:
Valor Significado
0 Los campos restantes del TDB son impredecibles.
1 Un TDB de formato 1, cuyos campos restantes se describen más adelante.
2-255 Reservado.
Un TDB en el que el campo de formato es cero, se conoce como un TDB nulo.
Banderolas 904: El Byte 1 contiene varias indicaciones, como sigue:
Validez de Indicios de Conflicto (CTV): Cuando se aborta una transacción debido a un conflicto de búsqueda o de almacenamiento (es decir, los códigos 9 o 10 de aborto, respectivamente), el bit 0 del byte 1 es la indicación de validez de indicios de conflicto. Cuando la indicación de CTV es uno, el indicio 910 de conflicto en los bytes 16-23 del TDB contiene la dirección lógica en la que fue detectado el conflicto. Cuando la indicación de CTV es cero, los bytes 16-23 del TDB son impredecibles.
Cuando se aborta una transacción debido a cualquier motivo distinto de un conflicto de búsqueda o de almacenamiento, el bit 0 del byte 1 se almacena como cero.
Indicación de Transacción Restringida (CTI). Cuando la CPU está en el modo de ejecución transaccional restringida, el bit 1 del byte 1 se establece en uno. Cuando la CPU está en el modo de ejecución transaccional no restringida, el bit 1 del byte 1 se establece en cero.
Reservados: Los bits 2-7 del byte 1 están reservados, y se almacenan como ceros.
Profundidad de Anidamiento de Transacción (TND) 906: Los bytes 6-7 contienen la profundidad de anidamiento de la transacción cuando la transacción fue abortada.
Código de Aborto de Transacción (TAC) 908: Los bytes 8-15 contienen un código de aborto de transacción sin signar de 64 bits. Cada punto de código indica una razón para que una transacción sea abortada.
Éste es dependiente del modelo si el código de aborto de transacción está almacenado en el TDB de interrupción de programa cuando se aborta una transacción debido a condiciones distintas de una interrupción de programa.
Indicio de Conflicto 910: Para transacciones que son abortadas debido a un conflicto de búsqueda o de almacenamiento (es decir, los códigos 9 y 10 de aborto, respectivamente), los bytes 16-23 contienen la dirección lógica de la localización de almacenamiento en la que fue detectado el conflicto. El indicio de conflicto es significativo cuando el bit de CVT, bit 0 del byte 1, es uno.
Cuando el bit de CTV es cero, los bytes 16-23 son impredecibles.
Debido a la ejecución especulativa por parte de la CPU, el indicio de conflicto puede designar una localización de almacenaje que podría no ser necesariamente accesible por la secuencia de ejecución conceptual de la transacción.
Dirección de Instrucción de Transacción Abortada (ATIA) 912: Los bytes 24-31 contienen una dirección de instrucción que identifica la instrucción que se estaba ejecutando cuando se detectó un aborto. Cuando se aborta una transacción debido a los códigos 2,5,6, 11, 13, o 256 o mayor, de aborto, o cuando se aborta una transacción debido a los códigos 4 o 13 de aborto y la condición de excepción de programa es invalidante, la ATIA apunta directamente a la instrucción que se estaba ejecutando. Cuando se aborta una transacción debido a códigos 4 o 12 de aborto, y la condición de excepción de programa no es invalidante, la ATI apunta más allá de la instrucción que se estaba ejecutando.
Cuando se aborta una transacción debido a los códigos 7-10, 14-16 o 255 de aborto, la ATIA no indica necesariamente la instrucción exacta que causa el aborto, pero puede apuntar a una instrucción anterior o posterior dentro de la transacción.
Si se aborta una transacción debido a una instrucción que es el objetivo de una instrucción de tipo ejecutar, la ATIA identifica la instrucción de tipo ejecutar, ya sea apuntando a la instrucción o ya sea pasada la misma, dependiendo del código de aborto según se ha descrito con anterioridad. La ATIA no indica el objetivo de la instrucción de tipo ejecutar.
La ATIA está sujeta 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.
Esto es dependiente del modelo si la dirección de instrucción de la transacción abortada está almacenada en el TDB de interrupción de programa cuando se aborta una transacción debido a condiciones distintas de una interrupción del programa.
Cuando se aborta debido al código 4 o 12 de aborto, y la condición de excepción de programa no es invalidante, la ATIA no apunta a la instrucción que causa el aborto. Restando el número de semi-palabras indicado por el código de longitud de interrupción (ILC) desde la ATIA, la instrucción que causa el aborto puede ser identificada en condiciones que sean supresoras o terminantes, o para eventos de no PER que se competen. Cuando se aborta una transacción debido a un evento de PER, y no está presente ninguna otra condición de excepción de programa, la ATIA es impredecible.
Cuando la dirección de bloque de diagnóstico de transacción es válida, el ILC puede ser examinado en identificación de interrupción de programa (PIID) en los bytes 36-39 del TEB específico de TBEGIN. Cuando no se aplica filtraje, el ILC puede ser examinado en la PIID en una posición 140-143 en el almacenamiento real.
Identificación de Acceso de Excepción (EAID) 914: Para transacciones que sean abortadas debido a determinadas condiciones filtradas de excepción de programa, el byte 32 del TDB específico de TBEGIN contiene la identificación de acceso de excepción. En un ejemplo de z/Arquitectura, el formato de la EAID, y los casos para los que se almacena, son los mismos que se han descrito en la localización 160 real cuando la condición de excepción da como resultado una interrupción, según se ha descrito en los Principios de Operación referenciados con anterioridad.
Para transacciones que son abortadas por otras razones, incluyendo cualesquiera condiciones de excepción que den como resultado una interrupción de programa, el byte 32 es impredecible. El byte 32 es impredecible en el TDB de interrupción de programa.
El campo se almacena solamente en el TDB designado por la dirección de bloque de diagnóstico de transacción; en otro caso, el campo se reserva. La EAID se almacena solamente para condiciones de excepción de programa de lista de acceso controlada o protección de DAT, de tipo ASCE, de traducción de página, de primera traducción de región, de segunda traducción de región, de tercera traducción de región, y de traducción de segmento.
Código de Excepción de Datos (DXC) 916: Para transacciones que son abortadas debido a condiciones de excepción de programa de excepción de datos filtrados, el byte 33 del TDB específico de TBEGIN contiene el código de excepción de datos. En un ejemplo de z/Arquitectura, el formato del DXC, y los casos para los que se almacena, son los mismos que los descritos en la posición 147 real cuando la condición de excepción da como resultado una interrupción, según se describe en los Principios de Operación mencionados con anterioridad. En un ejemplo, la localización 147 incluye el DXC.
Para transacciones que son abortadas por otras razones, incluyendo cualesquiera condiciones de excepción que dan como resultado una interrupción de programa, el byte 33 es impredecible. El byte 33 es impredecible en el TDB de interrupción de programa.
Este campo se almacena solamente en el TDB designado por la dirección de bloque de diagnóstico de transacción; en otro caso, el campo se reserva. El DXC se almacena solamente para condiciones de excepción de programa de datos.
Identificación de Interrupción de Programa (PIID) 918: para transacciones que sean abortadas debido a condiciones de interrupción de programa filtrado, los bytes 36-39 del TDB específico de TBEGIN contienen la identificación de excepción de programa. En un ejemplo de z/Arquitectura, el formato de la PIID es el mismo que el descrito en localizaciones 140-143 reales cuando la condición da como resultado una interrupción (según se ha descrito en los Principios de Operación referenciados con anterioridad), salvo en que el código de longitud de instrucción en los bits 13-14 de la PIID sea respectivo de la instrucción en la que se detectó la condición de excepción.
Para transacciones que son abortadas por otras razones, incluyendo condiciones que den como resultado una interrupción de programa, los bytes 36-39 son impredecibles. Los bytes 36-39 son impredecibles en el TDB de interrupción de programa.
Este campo se almacena solamente en el TDB designado por la dirección de bloque de diagnóstico de transacción; en otro caso, el campo se reserva. La identificación de interrupción de programa se almacena solamente para condiciones de excepción de programa.
Identificación de Excepción de Traducción (TEID) 920: Para transacciones que son abortadas debido a cualesquiera de las siguientes condiciones de excepción de programa filtrado, los bytes 40-47 del TDB específico de TBEGIN contienen la identificación de excepción de traducción:
Lista de acceso controlada o protección de DAT
Tipo ASCE
Traducción de página
Traducción de primera región
Traducción de segunda región
Traducción de tercera región
Excepción de traducción de segmento
En un ejemplo de z/Arquitectura, el formado de la TEID es el mismo que el descrito en las posiciones 168­ 175 reales cuando la condición da como resultado una interrupción, según se ha descrito en los Principios de Operación anteriormente referenciados.
Para transacciones que sean abortadas por otras razones, incluyendo condiciones de excepción que den como resultado una interrupción de programa, los bytes 40-47 son impredecibles. Los bytes 40-47 son impredecibles en el TDB de interrupción de programa
Este campo se almacena solamente en el TDB designado por la dirección de bloque de diagnóstico de transacción; en otro caso, el campo se reserva.
Dirección de Evento de Ruptura 922: Para transacciones que sean abortadas debido a condiciones de excepción de programa filtrado, los bytes 48-55 del TDB específico de TBEGIN contienen la dirección de evento de ruptura. En un ejemplo de z/Arquitectura, el formato de la dirección de evento de ruptura es el mismo que el descrito en las localizaciones 272-279 reales cuando la condición da como resultado una interrupción, según se ha descrito en los Principios de Operación mencionados con anterioridad.
Para transacciones que sean abortadas por otras razones, incluyendo condiciones de excepción que den como resultado una interrupción de programa, los bytes 48-55 son impredecibles, Los bytes 48-55 son impredecibles en el TDB de interrupción de programa.
El campo se almacena solamente en el TDB designado por la dirección de bloque de diagnóstico de transacción; en otro caso, el campo se reserva.
A continuación, se describen otros detalles relativos a eventos de ruptura.
En un ejemplo de z/Arquitectura, cuando se instala la instalación de PER-3, ésta proporciona el programa junto con la dirección de la última instrucción para provocar una ruptura en la ejecución secuencial de la CPU. El registro de la dirección de evento de ruptura puede ser usado como ayuda de depuración para detección de ramificación. Esta instalación proporciona, por ejemplo, un registro de 64 bits en la CPU, denominado registro de dirección de evento de ruptura. Cada vez que una instrucción distinta de TRANSACTION ABORT provoca una ruptura en la ejecución de instrucción secuencial (es decir, la dirección de instrucción en la PSW se reemplaza, en vez de ser incrementada en la longitud de la instrucción), la dirección de esa instrucción se dispone en el registro de dirección de evento de ruptura. Siempre que ocurra una interrupción de programa, si se indica o no el PER, los contenidos actuales del registro de dirección de evento de ruptura se disponen en las localizaciones 272-279 del almacenamiento real.
Si la instrucción que provoca el evento de ruptura es el objetivo de una instrucción de tipo ejecutar (EXECUTE o EXECUTE RELATIVE LONG), entonces la dirección de instrucción usada para la búsqueda de la instrucción de tipo ejecutar se dispone en el registro de dirección de evento de ruptura.
En un ejemplo de z/Arquitectura, un evento de ruptura se considera que ocurre siempre que una de las instrucciones siguientes provoque una ramificación: BRANCH AND LINK (BAL, BALR); BrANCH AND SAVE (BAS, BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SEAT MODE (BSM); BRANCH AND STACK (BAKR); BRANCH ON CONDITION (BC, BCR); BRANCH ON COUNT (BCT, BCTR, BCTG, BCTGR); BRANCH ON INDEX HIGH (BXH, BXHG); BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG); BRANCH RELATIVE ON CONDITION (BRC); BRANCH RELATIVE ON CONDITION LONG (BRCL); BRANCH RELATIVE ON COUNT (BRCT, BRCTG); BRANCH RELATIVE ON INDEX HIGH (BRXH, BRXHG); BRANCH RELATIVE ON INDEX LOW OR EQUAL (BRXLE, BRXLG); COMPARE AND BRANCH (CRB, CGRB); COMPARE AND BRANCH RELATIVE (CRJ, CGRJ); COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ); COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); y COMPARE LOGIAL IMMEDIATE AND BNRANCH RELATIVE (CLIJ, CLGIJ).
También se considera que ocurre un evento de ruptura siempre que se complete una de las siguientes instrucciones: BRANCH SET AUTHORITY (BSA); BRANCH IN SUBSPACE GROUP (BSG); BRANCH RELATIVE AND SAVE (BRAS); BRANCH RELATIVE AND SAVE LONG (BRASL); LOAD PSW (LPSW); LOAD PSW EXTENDED (LPSWE); PROGRAM CALL (PC); PROGRAM RETURN (PR); PROGRAM TRANSFER (PT); PROGRAM TRANSFER WITH INSTANCE (PTI); RESUME PROGRAM (RP), y TRAP (TRAP2, TRAP4).
No se considera que ocurra un evento de ruptura como resultado de una transacción que haya sido abortada (ya sea de manera implícita o ya sea como resultado de la instrucción de TRANSACTION ABORT).
Información de Diagnóstico Dependiente del Modelo 924: Los bytes 112-127 contienen información de diagnóstico dependiente del modelo.
Para todos los códigos de aborto excepto el 12 (interrupción de programa filtrado), la información de diagnóstico dependiente del modelo se guarda en cada TDB que se almacena.
En una realización, la información de diagnóstico dependiente del modelo incluye lo siguiente:
• Los bytes 112-119 contienen un vector de 64 bits denominado indicaciones de ramificación de ejecución transaccional (TXBI). Cada uno de los primeros 63 bits del vector indica los resultados de ejecutar una instrucción de ramificación mientras la c Pu está en el modo de ejecución transaccional, como sigue:
Valor Significado
0 La instrucción se ha completado sin ramificación
1 La instrucción se ha completado con ramificación
El bit 0 representa el resultado de la primera de dichas instrucciones de ramificación, el bit 1 representa el resultado de la segunda de tales instrucciones, y así sucesivamente.
Si es menor de 63, las instrucciones de ramificación se ejecutaron mientras la CPU estaba en el modo de ejecución transaccional, sin que los bits más a la derecha que no corresponden a instrucciones de ramificación se hayan establecido en cero (incluyendo el bit 63). Cuando se ejecuten más de 63 instrucciones de ramificación, el bit 63 de la TXBI se establece en uno.
Los bits en la TXBI son establecidos mediante instrucciones que están capacitadas para provocar un evento de ruptura, según se ha listado con anterioridad, excepto para lo siguiente:
- Cualquier instrucción restringida no provoca que un bit sea establecido en la TXBI,
- Para instrucciones de, por ejemplo, z/Arquitectura, cuando el campo M1 de la instrucción BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION o BRANCH RELATIVE ON CONDITION LONG es cero, o cuando el campo R2 de las siguientes instrucciones es cero, ésta es dependiente del modelo si la ejecución de la instrucción provoca que un bit sea establecido en la TXBI.
• BRANCH AND LINK (BALR); BRANCH AND SAVE (BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR), y BRANCH ON COUNT (BCTR, BCTGR).
• Para condiciones de aborto que fueron causadas por una excepción de acceso de anfitrión, la posición de bit 0 del byte 127 se establece en uno. Para otras condiciones de aborto, la posición de bit 0 del byte 127 se establece en cero.
• Para condiciones de aborto que fueron detectadas por la unidad de carga/almacenaje (LSU), los cinco bits más a la derecha del byte 127 contienen una indicación de la causa. Para condiciones de aborto que no fueron detectadas por la LSU, el byte 127 se reserva.
Registros Generales 930: Los bytes 128-255 contienen los contenidos de los registros generales 0-15 en el momento en que fue abortada la transacción. Los registros están almacenados por orden ascendente, empezando por el registro general 0 en los bytes 128-135, el registro general 1 en los bytes 136-143, y así sucesivamente.
Reservados: Todos los demás campos se reservan. A menos que se indique lo contrario, los contenidos de los campos reservados son impredecibles.
Según son observados por otras CPUs y por el subsistema de E/S, el almacenaje del (de los) TDB(s) durante un aborto de transacción es una referencia de acceso múltiple que ocurre después de se almacena cualquiera no transaccional.
Una transacción puede ser abortada debido a causas que estén fuera del alcance de la configuración inmediata en la que se ejecute. Por ejemplo, eventos transitorios reconocidos por un hipervisor (tal como LPAR o z/VM) pueden provocar que una transacción sea abortada.
La información proporcionada en el bloque de diagnóstico de transacción está destinada a fines de diagnóstico y es sustancialmente correcta. Sin embargo, debido a que un aborto puede haber sido 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 de programa puede que no reflejen de manera precisa las condiciones dentro de la configuración y de ese modo, no deben ser usadas en la determinación de la acción del programa.
Adicionalmente a la información de diagnóstico guardada en el TDB, cuando se aborta una transacción debido a cualquier condición de excepción de programa de excepción de datos y tanto el control de registro de AFP, bit 45 del registro de control 0, como el control (F) de operación de punto flotante de admisión efectivo son uno, el código de excepción de datos (DXC) se dispone en el byte 2 del registro de control de punto flotante (FPCR), con independencia de si se aplica filtraje a la condición de excepción de programa. Cuando se aborta una transacción, y cualquier o ambos de entre el control de registro de AFP o el control de operación de punto flotante de admisión efectivo son cero, el DXC no se sitúa en el FPCR.
En una realización, según se indica en la presente descripción, cuando se instala la instalación de ejecución transaccional, se proporcionan las siguientes instrucciones generales.
• EXTRACT TRANSACTION NESTING DEPTH
• NONTRANSACTIONAL STORE
• TRANSACTION ABORT
• TRANSACTION BEGIN
• TRANSACTION END
Cuando la CPU está en el modo de ejecución transaccional, el intento de ejecución de ciertas instrucciones se restringe y provoca que la transacción sea abortada.
Cuando se emite en el modo de ejecución transaccional restringida, el intento de ejecución de instrucciones restringidas puede dar también como resultado una interrupción de programa de restricción de transacción, o puede dar como resultado un procedimiento de ejecución como si la transacción no estuviera restringida.
En un ejemplo de z/Arquitectura, las instrucciones restringidas incluyen, a título de ejemplo, las siguientes instrucciones no privilegiadas: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), cuando el código en el campo M1 es 6 o 7; STORE CHARACTERS UNDER MASK HIGH, cuando el campo M3 es cero y el código en el campo R1 es 6 o 7; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; SUPERVISOR CALL; y TEST RUNTIME INSTRUMENTATION CONTROLS.
En la lista que antecede COMPARE AND SWAP AND STORE y PERFORM LOCKED OPERATION son instrucciones complejas que pueden ser implementadas de manera más eficiente mediante el uso de instrucciones de base en el modo TX. Los casos para PREFETCH DATA y PREFETCH DATA RELATIVE LONG están restringidos como códigos de emisión 6 y 7 de una línea caché, que necesitan la asignación de los datos potencialmente anteriores a la terminación de una transacción. SUPERVISOR CALL está restringida debido a que causa una interrupción (que provoca que una transacción sea abortada).
Bajo las condiciones que se relacionan a continuación, las siguientes instrucciones están restringidas:
• BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR), y BRANCH AND SAVE AND SET MODE, donde el campo R2 de la instrucción no es cero y se permite el rastreo de ramificación.
• BRANCH AND SAVE AND SET MODE y BRANCH AND SET MODE, cuando el campo R2 no es cero y se permite el rastreo de modo; SET ADRRESSING MODE, cuando se permite el rastreo de modo.
• MONITOR CALL, cuando se reconoce una condición de evento de monitor.
La lista anterior incluye instrucciones que pueden formar entradas de rastreo. Si se ha permitido que estas instrucciones se ejecuten transaccionalmente y formen entradas de rastreo, y la transacción se aborta posteriormente, el puntero de la tabla de rastreo en el registro de control 12 podrá avanzar, pero los almacenamientos en la tabla de rastreo podrían ser descartados. Esto podría conducir a un hueco inconsistente en la tabla de rastreo; de ese modo, las instrucciones están restringidas en los casos en que las mismas podrían formar entradas de rastreo.
Cuando la CPU está en el modo de ejecución transaccional, ésta es dependiente del modelo si las instrucciones siguientes están restringidas: CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE SITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGES WITH OFB; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT UNICODE-16 TO UNICODE-32; CONVERT UNICODE-16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE-16; CONVERT UNICODE-32 TO UNICODE-8; CONVERT UNICODE-8 TO UNICODE-16; CONVERT UNICODE-8 TO UNICODE-32; PERFORM CRWYPTOGRAPHIC COMPUTATION; RUNTIME INSTRUMENTATION OFF; y RUNTIME INSTRUMENTATION ON.
Cada una de las instrucciones anteriores se implementa normalmente ya sea por el co-procesador de hardware, o bien ha estado en máquinas antiguas, y por lo tanto, se considera restringida.
Cuando el control de modificación (A) de AR de admisión efectivo es cero, las siguientes instrucciones están restringidas: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; y SET ACCESS.
Cada una de las instrucciones anteriores provoca que los contenidos de un registro de acceso sean modificados. Si el control A en la instrucción TRANSACTION BEGIN es cero, entonces el programa ha indicado explícitamente que la modificación del registro de acceso no va a ser permitida.
Cuando el control de operación (F) de punto flotante de admisión efectivo es cero, las instrucciones de punto flotante están restringidas.
Bajo determinadas condiciones, las instrucciones siguientes pueden estar restringidas: EXTRAXCT CPU TIME; EXTRAXCT PSW; STORE CLOCK; STORE CLOCK EXTENDED; y STORE CLOCK FAST.
Cada una de las instrucciones anteriores está sujeta a un control de intercepción en la descripción de estado de ejecución interpretativa. Si el hipervisor ha establecido el control de intercepción para esas instrucciones, entonces su ejecución puede ser prolongada debido a la implementación del hipervisor; de ese modo, éstas se consideran restringidas si ocurre una intercepción.
Cuando se aborta una transacción no restringida debido a un intento de ejecución de una instrucción restringida, el código de aborto de transacción presente en el bloque de diagnóstico de transacción se establece en 11 (instrucción restringida), y el código de condición se establece en 3, salvo como sigue: cuando una transacción no restringida es abortada debido a un intento de ejecución de una instrucción que en otro caso podría haber dado como resultado una excepción de operación privilegiada, ésta es impredecible si el código de aborto está establecido en 11 (instrucción restringida) o en 4 (interrupción de programa no filtrado resultante del reconocimiento de la interrupción de programa de operación privilegiado). Cuando se aborta una transacción no restringida debido a un intento de ejecución de PREFETCH D a t a (RELATIVE LONG) cuando el código en el campo M1 es 6 o 7, o STORE CHARACTERS UNDER MASK HIGH cuando el campo M3 es cero y el código en el campo R1 es 6 o 7, es impredecible si el código de aborto está establecido en 11 (instrucción restringida) o en 16 (otra caché). Cuando se aborta una transacción no restringida debido a un intento de ejecución de MONITOR CALL, y están presentes tanto una condición de evento de monitor como una condición de excepción de especificación, ésta es impredecible si el código de aborto está establecido en 11 o en 4, o, si la interrupción de programa se ha filtrado, en 12.
Las instrucciones adicionales pueden estar restringidas en una transacción restringida. Aunque esas instrucciones no están normalmente definidas para ser restringidas en una transacción no restringida, éstas pueden estar restringidas bajo unas determinadas circunstancias en una transacción no restringida en futuros procesadores. Se pueden permitir determinadas instrucciones restringidas en el modo de ejecución transaccional en futuros procesadores. Por lo tanto, el programa no debería basarse en que la transacción sea abortada debido a un intento de ejecución de una instrucción restringida. La instrucción de TRANSACTION ABORT deberá ser usada para provocar de manera fiable que una transacción sea abortada.
En una transacción no restringida, el programa debería proporcionar una ruta de código no transaccional alternativa para acomodar una transacción que se aborte debido a una instrucción restringida.
En operación, cuando la profundidad de anidamiento de transacción es cero, la ejecución de la instrucción TRANBSACTION BEAGIN (TBEGIN) que da como resultado un código de condición cero, provoca que la CPU entre en el modo de ejecución transaccional no restringido. Cuando la profundidad de anidamiento de transacción es cero, la ejecución de la instrucción TRANSACTION BEGIN restringida (TBEGINC) que da como resultado un código de condición cero, provoca que la CPU entre en el modo de ejecución transaccional restringido.
Salvo en el caso de que se indique explícitamente lo contrario, todas las reglas que se apliquen para ejecución no transaccional se aplican también a ejecución transaccional. Lo que sigue son características adicionales de procesamiento mientras la CPU está en el modo de ejecución transaccional.
Cuando la CPU está en el modo de ejecución transaccional no restringido, la ejecución de la instrucción TRANSACTION BEGIN que da como resultado el código de condición cero, provoca que la CPU permanezca en el modo de ejecución transaccional no restringido.
Según se observa por parte de la CPU, las búsquedas y los almacenamientos realizados en el modo de ejecución de transacción no son diferentes de los realizados mientras no está en el modo de ejecución transaccional. Según se observa mediante otras CPUs y mediante el subsistema de E/S, todos los accesos de operando de almacenamiento realizados mientras una CPU está en el modo de ejecución transaccional parecen ser un acceso concurrente de bloque único. Es decir, los accesos a todos los bytes dentro de una semi-palabra, una palabra, una doble palabra o una cuádruple palabra, están especificados para que parezcan ser concurrentes en bloque según se observa por parte de otras CPUs y programas de E/S (p. ej., canal). La semi-palabra, la palabra, la doble palabra o la cuádruple palabra, son mencionadas en la presente sección como bloque. Cuando se especifica que una referencia de tipo búsqueda parece ser concurrente dentro de un bloque, no se permite ningún acceso de almacenamiento en el bloque por parte de otra CPU o programa de E/S durante el tiempo que estén siendo buscados los bytes contenidos en el bloque. Cuando se especifica que una referencia de tipo almacenamiento parece ser concurrente dentro de un bloque, no se permite ningún acceso al bloque, ya sea búsqueda o ya sea almacenamiento, por parte de otra CPU o programa de E/S durante el tiempo que los bytes del interior del bloque están siendo almacenados.
Los accesos de almacenamiento para búsquedas de tabla de instrucción y de DAT y ART (Tabla de Registro de Acceso), siguen las reglas no transaccionales.
La CPU sale del modo de ejecución transaccional normalmente por medio de una instrucción de TRANSACTION END que provoca que la profundidad de anidamiento de transacción evolucione a cero, en cuyo caso la transacción se completa.
Cuando la CPU abandona el modo de ejecución transaccional por medio de la terminación de una instrucción de TRANSACTION END, todos los almacenamientos realizados mientras está en el modo de ejecución transaccional son asignados; es decir, los almacenamientos parecen ocurrir a modo de una única operación concurrente de bloque según se observa por parte de otras CPUs y mediante el subsistema de E/S.
Una instrucción puede ser implícitamente abortada por una diversidad de causas, o puede ser explícitamente abortada por medio de la instrucción TRANSACTION ABORT. A continuación se describe un ejemplo de posibles causas de aborto de una transacción, el correspondiente código de aborto y el código de condición que se dispone en la PSW de aborto de transacción.
Interrupción Externa: El código de aborto de transacción se establece en 2, y el código de condición en la PSW de aborto de transacción se establece en 2. La PSW de aborto de transacción se almacena como la antigua PSW externa, como una parte del procesamiento de interrupción externa.
Interrupción de Programa (No Filtrada): Una condición de excepción de programa que da como resultado una interrupción (es decir, una condición no filtrada) provoca que la transacción sea abortada con código 4. El código de condición en la PSW de aborto de transacción se establece como específico para el código de interrupción de programa. La PSW de aborto de transacción está almacenada como la antigua PSW de programa como una parte del procesamiento de interrupción de programa.
Una instrucción que podría, en su caso, dar como resultado que una instrucción sea abortada debido a una excepción de operación, puede producir resultados alternos: para una transacción no restringida, la transacción puede en cambio abortar con el código de aborto 11 (instrucción restringida); para una transacción restringida, se puede reconocer una interrupción de programa de restricción de transacción en vez de la excepción de operación.
Cuando se reconoce un evento de PER (Registro de Evento de Programa) junto con cualquier otra condición de excepción de programa no filtrado, el código de condición se establece en 3.
Interrupción de Comprobación de Máquina: El código de aborto de transacción se establece en 5, y el código de condición en la PSW de aborto de transacción se establece en 2. La PSW de aborto de transacción se almacena como la antigua PSW de comprobación de máquina como una parte del proceso de interrupción de comprobación de máquina.
Interrupción de E/S: El código de aborto de transacción se establece en 6, y el código de condición en la PSW de aborto de transacción se establece en 2. La PSW de aborto de transacción se almacena como la antigua PSW de E/S como una parte del proceso de interrupción de E/S.
Desbordamiento de Búsqueda: Se detecta una condición de desbordamiento de búsqueda cuando la transacción intenta buscar a partir de más localizaciones de las que soporta la CPU. El código de aborto de transacción se establece en 7, y el código de condición se establece en 2 o bien en 3.
Desbordamiento de Almacenamiento: Una condición de desbordamiento de almacenamiento se detecta cuando la transacción intentas almacenar en más localizaciones de las que soporta la CPU. El código de aborto de transacción se establece en 8, y el código de condición se estable en 2 o bien en 3.
Permitir que el código de condición sea 2 o bien 3 en respuesta a un aborto de desbordamiento de búsqueda o de almacenamiento, permite que la CPU indique situaciones potencialmente reutilizables (p. ej., el código de condición 2 indica que la re-ejecución de la transacción puede ser productiva; mientras que el código de condición 3 no recomienda la re-ejecución).
Conflicto de Búsqueda: Se detecta una condición de conflicto de búsqueda cuando otra CPU o el subsistema de E/S intenta almacenar en una localización que ha sido buscada transaccionalmente por esta CPU. El código de aborto de transacción se establece en 9, y el código de condición se establece en 2. Conflicto de Almacenamiento: Se detecta una condición de conflicto de almacenamiento cuando otra CPU o el subsistema de E/S intenta acceder a una posición que ha sido almacenada durante la ejecución transaccional por esta CPU. El código de aborto de transacción se establece en 10, y el código de condición se establece en 2.
Instrucción Restringida: Cuando la CPU está en el modo de ejecución transaccional, el intento de ejecución de una instrucción restringida provoca que la transacción sea abortada. El código de aborto de transacción se establece en 11, y el código de condición se establece en 3.
Cuando la CPU está en el modo de ejecución transaccional restringida, ésta es impredecible si el intento de ejecución de una instrucción restringida da como resultado una interrupción de programa de restricción de transacción o un aborto debido a una instrucción restringida. La transacción está ya abortada pero el código de aborto puede indicar cualquier causa.
Condición de Excepción de Programa (Filtrada): Una condición de excepción de programa que no da como resultado una interrupción (es decir, una condición filtrada) provoca que la transacción sea abortada con un código de aborto de transacción de 12. El código de condición se establece en 3.
Profundidad de Anidamiento Excedida: La condición de profundidad de anidamiento excedida se detecta cuando la profundidad de anidamiento de la transacción está en el máximo valor admisible para la configuración, y se ejecuta una instrucción de TRANSACTION BEGIN. La transacción se aborta con un código de aborto de transacción de 13, y el código de condición se establece en 3.
Condición Relacionada con Búsqueda de Caché: Una condición relacionada con posiciones de almacenaje buscadas por la transacción se detecta mediante la circuitería caché de la CPU. La transacción se aborta con un código de aborto de transacción de 14, y el código de condición se estable en 2 o bien en 3.
Condición Relacionada con Almacenamiento de Caché: Una condición relacionada con posiciones de almacenaje almacenadas mediante la transacción, se detecta por medio de la circuitería caché de la CPU. La transacción se aborta con un código de aborto de transacción de 15, y el código de condición se estable en 2 o bien en 3.
Otra Condición de Caché: Otra condición de caché se detecta por medio de la circuitería caché de la CPU.
La transacción se aborta con un código de aborto de transacción de 16, y el código de condición se establece en 2 o bien en 3.
Durante la ejecución transaccional, si la CPU accede a instrucciones o a operandos de almacenaje utilizando diferentes direcciones lógicas que son mapeadas a la misma dirección absoluta, es dependiente del modelo que la transacción sea abortada. Si la transacción es abortada debido a accesos que usan diferentes direcciones lógicas mapeadas a la misma dirección absoluta, se establece el código de aborto 14, 15 o 16, dependiendo de la condición.
Condición Miscelánea: Una condición miscelánea es cualquier otra condición reconocida por la CPU que provoque que la transacción aborte. El código de aborto de transacción se establece en 255 y el código de condición se establece en 2 o bien en 3.
Cuando se ejecutan múltiples configuraciones en la misma máquina (por ejemplo, particiones lógicas o máquinas virtuales), una transacción puede ser abortada debido a una comprobación de máquina externa o interrupción de E/S que haya ocurrido en una configuración diferente.
Aunque se han proporcionado ejemplos en lo que antecede, se pueden proporcionar otras causas de aborto de 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 que el código de aborto de transacción se establece en 1, y el código de condición en la PSW de aborto de transacción se establece en 2. La PSW de aborto de transacción se almacena como la PSW antigua de reinicio, como parte del proceso de reinicio. Como ejemplo adicional, una causa puede ser una condición de Supervisor Call, en la que el código de aborto se establece en 3, y el código de condición en la PSW de aborto de transacción se establece en 3. También son posibles otros ejemplos o diferentes.
Notas:
1. La condición miscelánea puede resultar a partir de cualquiera de lo siguiente:
o Instrucciones tales como, en z/Arquitectura, COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION en las que el control NQ es cero y el control SK es uno, SET STORAGE KEY EXTENDED en la que el control NQ es cero, realizada por otra CPU en la configuración; el código de condición se establece en 2.
o Una función de operador, tal como reseteo, reinicio o detención, o la orden de SIGNAL PROCESSOR equivalente, se realiza en la CPU.
o Cualquier otra condición no enumerada con anterioridad; el código de condición se establece en 2 o 3.
2. La localización en la se detectan conflictos de búsqueda y almacenamiento puede estar en cualquier punto dentro de la misma línea caché.
3. Bajo determinadas condiciones, la CPU puede no estar capacitada para distinguir entre condiciones de aborto similares. Por ejemplo, un desbordamiento de búsqueda o de almacenamiento puede ser indistinguible de un conflicto de búsqueda o almacenamiento respectivo.
4. La ejecución especulativa de múltiples rutas de instrucción por parte de la CPU puede dar como resultado que una transacción sea abortada debido a condiciones de conflicto o de desbordamiento, incluso aunque tales condiciones no ocurran 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 completarse sin detectar tales conflictos o desbordamientos especulativamente.
La ejecución de una instrucción de TRANSACTION ABORT provoca que la transacción aborte. El código de aborto de transacción se establece a partir de la segunda dirección de operando. El código de condición se establece en 2 o 3, dependiendo de si el bit 63 de la segunda dirección de operando es cero o uno, respectivamente.
La Figura 10 resume un ejemplo de códigos de aborto almacenados en el bloque de diagnóstico de transacción, y el código de condición (CC) correspondiente. La descripción de la Figura 10 ilustra una implementación particular. Son posibles otras implementaciones y codificaciones de valores.
En una realización según se ha mencionado con anterioridad, la instalación transaccional proporciona tanto transacciones restringidas como transacciones no restringidas, así como el procesamiento asociado a las mismas. Inicialmente, se discuten las transacciones restringidas y a continuación las transacciones no restringidas.
Una transacción restringida se ejecuta en modo transaccional sin una ruta de retroceso. Éste es un modo de procesamiento útil para funciones compactas. En ausencia de interrupciones o conflictos repetidos con otras CPUs o con el subsistema de E/S (es decir, causados por condiciones que no permitan que la transacción sea completada con éxito), una transacción restringida se completará eventualmente; de ese modo, no se requiere una rutina de manipulador de aborto y no está especificada. Por ejemplo, en ausencia de vulneración de una condición que no pueda ser direccionada (por ejemplo, dividir por 0); una condición que no permita que la transacción se complete (p. ej., la interrupción de un temporizador que no permita que una instrucción se ejecute; una E/S caliente; etc.); o una violación de una restricción o limitación asociada a una transacción restringida, la transacción se completará eventualmente.
Una transacción restringida se inicia mediante una instrucción de TRANSACTION BEGIN restringida (TBEGINC) cuando la profundidad de anidamiento de transacción es inicialmente cero. Una transacción restringida está sujeta a las siguientes limitaciones, en una realización:
1. La transacción ejecuta no más de 32 instrucciones, que no incluyen las instrucciones de TRANSACTION BEGIN restringida (TBEGINC) ni TRANSACTION END.
2. Todas las instrucciones de la transacción deben estar dentro de 256 bytes contiguos de almacenaje, incluyendo las instrucciones de TRANSACTION BEGIN restringida (TBEGINC) y cualquier TRANSACTION END.
3. Adicionalmente a las instrucciones restringidas, se aplican las siguientes limitaciones a una transacción restringida:
a. Las instrucciones se limitan a las mencionadas como Instrucciones Generales, incluyendo, por ejemplo, sumar, restar, multiplicar, dividir, desplazamiento, giro, etc.
b. Las instrucciones de ramificación se limitan a las siguientes (las instrucciones listadas son las de z/Arquitectura en un ejemplo):
• BRANCH RELATIVE ON CONDITION en la que M1 no es cero y el campo RI2 contiene un valor positivo.
• BRANCH RELATIVE ON CONDITION LONG en la que el campo M1 no es cero, y el campo RI2 contiene un valor positivo que no causa envolvente de dirección.
• COMPARE AND BRANCH RELATIVE, COMPARE INMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE y COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE en las que el campo M3 no es cero y el campo RI4 contiene un valor positivo. (Es decir, solamente ramificaciones de avance con máscaras de ramificación distintas de cero).
c. Excepto para TRANSACTION END e instrucciones que causen una serialización de operando específica, las instrucciones que causen una función de serialización están restringidas.
d. Las operaciones de amacenaje-y-almacenaje (SS-), y operaciones de almacenaje-y-almacenaje con instrucciones de opcode ampliado (SSE-), están restringidas.
e. Todas las instrucciones generales siguientes (que son de z/Arquitectura en este ejemplo), están restringidas: CHECKSUM; CIPHER MESSAGE; CIPHER MESSASGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG; COMPARE LOGICAL LONG EXTENDED; COMPARE LOGICAL STRING; COMPARE UNTIL SUBSTRING EQUAL; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUETE LAST MESSAGE DIGEST; COMUTE MESSAGE AUTHENTCATION CODE; CONVERT TO BINARY; CONVERT TO DECIMAL; CONVERT UNICODE-16 TO UNICODE-32; CONVERT UNICODE-16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE-16; CONVERT UNICODE-32 TO UNICODE-8; CONVERT UNICODE-8 TO UNICODE-16; CONVERT UNICODE-8 TO UNICODE-32; DIVIDE; DIVIDE LOGICAL; DIVIDE SINGLE; EXECUTE; EXECUTE RELATIVE LONG; EXTRACT caché ATTRIBUTE; EXTRACT CPU TIME; EXTRACT PSW; EXTRACT TRANSACTION NESTING DEPTH; LOAD AND ADD; LOAD AND ADD LOGICAL; LOAD AND AND; LOAD AND EXCLUSIVE OR; LOAD AND OR; LOAD PAIR DISJOINT; LOAD PAIR FROM QUADWORD; MONITOR CALL; MOVE LONG; MOVE LONG EXTENDED; MOVE LONG UNICODE; MOVE STRING; NON-TRANSACTIONAL STORE; PERFORM CRYPTOGRAPHIC COMPUTATION; PREFETCH DATA; PREFETCH DATA RELATIVE LONG; RUNTIME INSTRUMENTATION EMIT; RUNTIME INSTRUMENTATION NEXT; RUNTIME INSTRUMENTATION OFF; RUNTIME INSTRUMENTATION ON; SEARCH STRING; SEARCH; STRING UNICODE; SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HAIGH, cuando el campo M3 es cero, y el código en el campo Ri es 6 o 7; STORE CLOCK; STORE CLOCK EXTENDED; STORE CLOCK FAST; STORE FACILITY LIST EXTENDED; STORE PAIR TO QUADWORD; TEST ADDRESSING MODE; TRANSACTION ABORT; TRANSACTION BEGIN (tanto TBEGIN como TBEGINC); TRANSLATE AND TEST EXTENDED; TRANSLATE AND TEST REVERSE EXTENDED; TRANSLATE EXTENDED; TRANSLATE ONE TO ONE; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE; y, TRANSLATE TWO TO TWO.
4. Los operandos de almacenaje de transacción acceden a no más de cuatro octopalabras.
Nota: LOAD ON CONDITION y STORE ON CONDITION se consideran almacenaje de referencia con independencia del código de condición. Una octopalabra es, por ejemplo, un grupo de 32 bytes consecutivos sobre un límite del byte 32.
5. La transacción que se ejecuta en esta CPU, o se almacena mediante otras CPUs o por el subsistema de E/S, no accede a operandos de almacenaje en ninguno de los bloques de 4 K-bytes que contienen los 256 bytes de almacenaje que empiezan con la instrucción TRANSACTION BEGIN restringida (TBEGINC).
6. La transacción no accede a instrucciones o a operandos de almacenaje usando direcciones lógicas diferentes que son mapeadas a la misma dirección absoluta.
7. Las referencias de operando realizadas por la transacción deben estar dentro de una única doble palabra, salvo que para LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE, y STORE MULTIPLE HIGH, las referencias de operando deben estar dentro de una única octopalabra.
Si una transacción restringida infringe cualquiera de las restricciones 1-7, listadas con anterioridad, entonces (a) o bien se reconoce una interrupción de programa de restricción de transacción, o (b) o bien la ejecución avanza como si la transacción no estuviera restringida, salvo que otras violaciones de restricción pudieran aún dar como resultado una interrupción de programa restringida de transacción. Es impredecible la acción que se va a emprender, y la acción adoptada puede diferir en base a la restricción que haya sido infringida.
En ausencia de violaciones de restricción, interrupciones repetidas o conflictos con otras CPUs o con el subsistema de E/S, una transacción restringida se completará eventualmente, según se ha descrito con anterioridad.
1. La opción de completar con éxito una transacción restringida mejora si la transacción cumple los siguientes criterios:
a. Las instrucciones emitidas son menos que el máximo de 32.
b. Las referencias de operando de almacenaje son menos que el máximo de 4 octopalabras. c. Las referencias de operando de almacenaje están en la misma línea de caché. d. Las referencias de operando de almacenaje en las mismas posiciones ocurren en el mismo orden mediante todas las operaciones.
2. Una transacción restringida no asegura necesariamente su terminación con éxito en su primera ejecución. Sin embargo, si una transacción restringida que no infringe ninguna de las restricciones listadas es abortada, la CPU emplea circuitería para asegurar que una ejecución repetida de la transacción tiene posteriormente éxito.
3. Dentro de una transacción restringida, TRANSACTION BEGIN es una instrucción restringida, de modo que una transacción restringida no puede ser anidada.
4. La violación de cualquiera de las restricciones 1-7 anteriores por parte de una transacción restringida puede dar como resultado un bucle de programa.
5. Las limitaciones de una transacción restringida son similares a las de un bucle de comparar-y-cambiar.
Debido a la interferencia potencial desde otras CPUs y desde el subsistema de E/S, no existe ningún aseguramiento arquitectónico de que una instrucción de COMPARE AND SWAP sea siempre completada con el código de condición 0. Una transacción restringida puede adolecer de interferencia similar en forma de abortos de conflictos de búsqueda o de almacenamiento, o de interrupciones en caliente.
La CPU emplea algoritmos de equidad para asegurar que, en ausencia de cualesquiera violaciones de restricción, una transacción restringida se complete eventualmente.
6. Con el fin de determinar el número de iteraciones repetidas requeridas para completar una transacción restringida, el programa puede emplear un contador en un registro general que no esté sometido a la máscara de guardar de registro general. A continuación se muestra un ejemplo:
LH1 15,0 Contador de reutilización de cero
Bucle TBEGINC 0(0),X'FE00' Conservar GRs 0-13
AHI 15,1 Incrementar Contador
.... Código de ejecución transaccional restringida
TEND Fin de la transacción
* R15 contiene ahora el conteo de repetidos intentos transaccionales.
Obsérvese que ambos registros 14 y 15 no están restaurados en este ejemplo. También obsérvese que en algunos modelos, el conteo en el registro general 15 puede ser bajo si la CPU detecta la condición de aborto a continuación de que se haya completado la instrucción TBEGINC, pero con anterioridad a la terminación de la instrucción AHI. Según se observa por la CPU, las búsquedas y los almacenamientos realizados en el modo de ejecución transaccional no son diferentes de los realizados mientras no está en el modo de ejecución de transacción.
En una realización, el usuario (es decir, el que crea la transacción) selecciona si una transacción debe ser o no restringida. Una realización de lógica asociada a procesamiento de transacciones restringidas y, en particular, a procesamiento asociado a la instrucción TBEGINC, se describe con referencia a la Figura 11. La ejecución de la instrucción TBEGINC hace que la CPU entre en el modo de ejecución transaccional restringida o permanezca en el modo de ejecución no restringida. La CPU (es decir el procesador) que ejecuta TBEGINC realiza la lógica de la Figura 11.
Con referencia a la Figura 11, en base a la ejecución de una instrucción TBEGINC, se realiza una función de serialización, ETAPA 1100, Una función u operación de serialización incluye completar todos los accesos de almacenaje conceptualmente previos (y, para la z/Arquitectura, como ejemplo, relacionados con ajustes del bit de referencia y del bit de cambio) por medio de la CPU, según es observado por otras CPUs y por el subsistema de E/S, con anterioridad a que ocurran accesos de almacenaje conceptualmente posteriores (y ajustes relacionados con el bit de referencia y con el bit de cambio). La serialización afecta a la secuencia de todos los accesos de la CPU al almacenaje y a las claves de almacenaje, excepto para los asociados a la búsqueda de entrada de la tabla ART y de la tabla DAT.
Según se observa por parte de una CPU en el modo de ejecución transaccional, la serialización opera normalmente (según se ha descrito con anterioridad). Según se observa por medio de otras CPUs y por el subsistema de E/S, una operación de serialización realizada mientras una CPU está en el modo de ejecución transaccional ocurre cuando la CPU abandona el modo de ejecución transaccional, ya sea como resultado de una instrucción de TRANSACTION END que decrementa la profundidad de anidamiento de transacción hasta cero (terminación normal), o ya sea como resultado de que la transacción haya sido abortada.
A continuación de realizar la serialización, se realiza una determinación respecto a si se reconoce una excepción, INQUIRY 1102. Si es así, se maneja la excepción, ETAPA 1104. Por ejemplo, se reconoce una excepción de operación especial y la operación se suprime si el control de ejecución transaccional, el bit 8 del registro 0, es 0. Como ejemplos adicionales, se reconoce una excepción de especificación y la operación se suprime, si el campo B1, bits 16-19 de la instrucción, no es cero; se reconoce una excepción de ejecutar y la operación se suprime, si TBEGINC es el objetivo de una instrucción de tipo ejecutar; y, se reconoce una excepción de operación y la operación se suprime, si la instalación de ejecución transaccional no está instalada en la configuración. Si la CPU está ya en el modo de ejecución de transacción restringida, entonces se reconoce una excepción de programa de excepción restringida de transacción y se suprime la operación. Además, si la profundidad de anidamiento de la transacción, cuando se incrementa en 1 , excediera una profundidad de anidamiento de transacción máxima dependiente del modelo, la transacción se aborta con el código de aborto 13. Otras excepciones, o excepciones diferentes, pueden ser reconocidas y manipuladas.
Sin embargo, si no existe ninguna excepción, entonces se realiza una determinación respecto a si la profundidad de anidamiento de transacción es cero, INQUIRY 1106. Si la profundidad de anidamiento de transacción es cero, entonces se considera que la dirección de bloque de diagnóstico de transacción es inválida, ETAPA 1108; se establece la PSW de aborto de transacción a partir de los contenidos de la PSW actual, salvo que la dirección de instrucción de la PSW de aborto de transacción designe la instrucción TBEGINC, en vez de la siguiente instrucción secuencial, ETAPA 1110; y, se guardan los pares de registro general como designados por la máscara de guardar de registro general, en una posición dependiente del modelo que no es directamente accesible por el programa, ETAPA 1112. Además, la profundidad de anidamiento se establece en 1, ETAPA 1114. Adicionalmente, el valor efectivo de la operación (F) de punto flotante admitida y los controles de filtraje de interrupción de programa (PIFC) se establecen en cero, ETAPA 1116. Además, se determina el valor efectivo del control de modificación (A) de AR de admisión, bit 12 del campo I2 de la instrucción, ETAPA 1118. Por ejemplo, el control A efectivo es la AND lógica del control A en la instrucción TBEGINC para el nivel actual y para cualesquiera instrucciones TBEGIN externas. Volviendo a INQUIRY 1106, si la profundidad de anidamiento de transacción es mayor que cero, entonces la profundidad de anidamiento se incrementa en 1, ETAPA 1120. Además, el valor efectivo de la operación (F) de punto flotante de admisión se establece en cero, y el valor efectivo del control de filtraje de interrupción de programa (PIFC) se mantiene sin cambio, ETAPA 1122. El procesamiento continúa a continuación con la ETAPA 1118. En una realización, una iniciación con éxito de la transacción da como resultado el código de condición 0. Esto concluye una realización de la lógica asociada a la ejecución de una instrucción TBEGINC.
En una realización, la comprobación de excepción proporcionada con anterioridad puede ocurrir en orden variable. Un orden articular para la comprobación de la excepción es como sigue:
Excepciones con la misma prioridad que la prioridad de condiciones de interrupción de programa para el caso general.
Excepción de especificación debido a que el campo B1 contiene un valor distinto de cero.
Aborto debido a exceder la profundidad de anidamiento de la transacción.
Código de condición 0 debido a una terminación normal.
Adicionalmente, lo que sigue se aplica en una o más realizaciones:
1. Los registros designados para ser guardados por la máscara de guardar de registro general son restablecidos solamente si la transacción aborta, no cuando la transacción termina normalmente por medio de TRANSACTION END. Solamente los registros designados por la GRSM de la instrucción TRANSACTION BEGIN más externa son restablecidos con el aborto.
El campo I2 debería designar todos los pares de registro que proporcionan valores de entrada que son cambiados por una transacción restringida. De ese modo, si la transacción se aborta, los valores de registro de entrada serán restablecidos a sus contenidos originales cuando la transacción restringida se re-ejecute.
2. En la mayor parte de los modelos, se puede obtener un mejor rendimiento, tanto sobre TRANSACTION BEGIN como cuando una transacción aborta, especificando el mínimo número de registros necesarios para ser guardados y restablecidos en la máscara de guardar de registro general.
3. Lo que sigue ilustra los resultadas de la instrucción TRANSACTION BEGIN (tanto TBEGIN como TBEGINC) en base a la profundidad de anidamiento de la transacción actual (TND) y, cuando la TND no es cero, si la CPU está en el modo de ejecución transacción no restringida o restringida:
Instrucción TND = 0
TBEGIN Entrar en el modo de ejecución transaccional no restringida
TBEGINC Entrar en el modo de ejecución de transacción restringida
Instrucción TND > 0
TBEGIN Modo NTX Modo CTX
Continuar en el modo de ejecución Excepción de transacción
transaccional no restringida restringida
TBEGINC Continuar en el modo de ejecución Excepción de transacción
transaccional no restringida restringida
Explicación:
CTX La CPU está en el modo de ejecución transaccional restringida
NTX La CPU está en el modo de ejecución transaccional no restringida
TND Profundidad de anidamiento de transacción al comienzo de la instrucción
Según se describe en la presente memoria, en un aspecto, se asegura que una transacción restringida se completa, suponiendo que no contiene ninguna condición que la incapacite para ser completada. Para asegurar que ésta se completa, el procesador (p. ej., la CPU) que ejecuta la transacción puede emprender algunas acciones. Por ejemplo, si una transacción restringida tiene una condición de aborto, la CPU puede temporalmente:
(a) inhibir la ejecución fuera de orden;
(b) inhibir que otras CPUs accedan a posiciones de almacenaje conflictivas;
(c) inducir retardos aleatorios en procesos de aborto, y/o
(d) invocar otras medidas para facilitar la terminación con éxito.
Para resumir, el procesamiento de una transacción restringida es como sigue:
• Si ya está en el modo TX restringido, se reconoce una excepción restringida de transacción.
• Si la TND (Profundidad de Anidamiento de Transacción) actual > 0, la ejecución avanza como si fuera una transacción no restringida
o El control efectivo F se establece en cero
o El PIFC efectivo se mantiene sin cambio
o Permite que la TX no restringida externa llame a la función de servicio que pueda o no pueda usar TX restringida.
• Si la TND actual = 0:
o La dirección de bloque de diagnóstico de transacción es inválida
■ Ningún TDB específico de la instrucción almacenado con el aborto o PSW de aborto de transacción establecida para la dirección de TBEGINC
■ No es la siguiente instrucción secuencial
o Los pares de registro general designados por GRSM son guardados en una posición dependiente del modelo no accesible para el programa
o Indicio de transacción opcionalmente formado (a partir del operando D2). El indicio de transacción es un identificador de la transacción. Éste puede ser igual a la dirección de operando de almacenaje u otro valor.
• Efectivo A = TBEGINC A & cualquier A externa
• TND incrementada
o Si la TND evoluciona desde 0 a 1, la CPU entra en el modo de TX restringida
o En otro caso, la CPU permanece en el modo de TX no restringida
• La instrucción se completa con CC0
• Excepciones:
o Excepción de especificación (PIC (Código de Interrupción de Programa) 0006) si el campo B1 no es cero
o Excepción de operación especial (PIC 0013 hex) si el control de ejecución de transacción (CR0.8) es cero
o Excepción de restricción de transacción (PIC 0018 hex) si emite en modo de TX restringida o Excepción de operación (PIC 0001) si la instalación de ejecución transaccional restringida no está instalada
o Excepción de ejecutar (PIC 0003) si la instrucción es el objetivo de una instrucción de tipo ejecutar o Código de aborto 13 si se ha excedido la profundidad de anidamiento
• Condiciones de aborto en transacción restringida:
o La PSW de aborto apunta a la instrucción TBEGINC
■ No sigue la instrucción
■ La condición de aborto ocasiona que la TX completa sea reconducida
• No hay ruta de falla
o La CPU toma medidas especiales para asegurar la terminación con éxito en la reconducción o Suponiendo que no hay ningún conflicto persistente, interrupción o violación restringida, se asegura la terminación eventual de la transacción
• Violación de restricción
o PIC 0018 hex - indica violación de restricción de transacción
o O, la transacción se ejecuta como si no estuviera restringida
Según se ha descrito con anterioridad, adicionalmente al procesamiento de transacción restringida, el cual es opcional, en una realización, la instalación transaccional proporciona también procesamiento de transacción no restringida. Los detalles adicionales con relación al procesamiento de transacciones no restringidas y, en particular, el procesamiento asociado a la instrucción TBEGIN, se describen con referencia a la Figura 12. La ejecución de la instrucción TBEGIN provoca que la CPU entre, o bien permanezca, en el modo de ejecución transaccional no restringida. La CPU (es decir, el procesador) que ejecuta TBEGIN ejecuta la lógica de la Figura 12.
Con referencia a la Figura 12, en base a la ejecución de la instrucción TBEGIN, se realiza una función de serialización (descrita con anterioridad), ETAPA 1200. A continuación de realizar la serialización, se toma una determinación respecto a si se reconoce una excepción, INQUIRY 1202. Si es así, entonces se maneja la excepción, ETAPA 1204. Por ejemplo, se reconoce una excepción de operación especial y la operación se suprime si el control de ejecución transaccional, el bit 8 del registro de control 0, es cero. Además, se reconoce una excepción de especificación y la operación se suprime si el control de filtraje de interrupción de programa, los bits 14-15 del campo I2 de la instrucción, contiene el valor 3; o, la primera dirección de operando no designa un límite de doble palabra. Se reconoce una excepción de operación, y la operación se suprime, si la instalación de ejecución transaccional no está instalada en la configuración; y, se reconoce una excepción de ejecutar y la operación se suprime si la TBEGIN es el objetivo de la instrucción de tipo ejecutar. Adicionalmente, si la CPU está en el modo de ejecución transaccional restringida, entonces se reconoce una excepción de programa de excepción restringida de transacción y la operación se suprime. Además, si la profundidad de anidamiento de transacción, cuando se incrementa en 1, excediera una profundidad de anidamiento de transacción máxima dependiente del modelo, la transacción se aborta con el código de aborto 13.
Más aún, cuando el campo B1 de la instrucción no es cero y la CPU no está en el modo de ejecución transaccional, es decir, la profundidad de anidamiento de transacción es cero, entonces se determina la accesibilidad de almacenamiento para el primer operando. Si no se puede acceder al primer operando para los almacenamientos, entonces se reconoce una excepción de acceso y la operación se invalida, o bien se suprime, o bien se termina, dependiendo de la condición de excepción de acceso específica. Adicionalmente, se reconoce cualquier evento de alteración de almacenaje de PER para el primer operando. Cuando el campo B1 no es cero y la CPU está ya en el modo de ejecución transaccional, es impredecible si se determina la accesibilidad de almacenamiento al primer operando, y se detectan eventos de alteración de almacenaje de PER para el primer operando. Si el campo B1 es cero, entonces no se accede al primer operando.
Adicionalmente a la comprobación de excepción, se realiza una determinación respecto a si la CPU está en el modo de ejecución transaccional (es decir, la profundidad de anidamiento de transacción es cero), INQUIRY 1206. Si la CPU no está en el modo de ejecución transaccional, entonces los contenidos de los pares de registro general seleccionados son guardados, ETAPA 1208. En particular, los contenidos de los pares de registro general designados por la máscara de guardar de registro general se guardan en una posición dependiente del modelo que no es directamente accesible por el programa.
Además, se toma una decisión respecto a si el campo B1 de la instrucción es cero, INQUIRY 1210. Si el campo B1 no es igual a cero, la primera dirección de operando se dispone en la dirección de bloque de diagnóstico de transacción, ETAPA 1214, y la dirección de bloque de diagnóstico de transacción es válida. Además, la PSW de aborto de transacción se establece a partir de los contenidos de la PSW actual, ETAPA 1216. La dirección de instrucción de la PSW de aborto de transacción designa la siguiente instrucción secuencial (es decir, la instrucción siguiente a la TBEGIN más externa).
Además, se toma una determinación del valor efectivo del control de modificación (A) de AR de admisión, el bit 12 del campo I2 de la instrucción, ETAPA 1218. El control A efectivo es la AND lógica del control A en la instrucción TBEGIN para el nivel actual y para todos los niveles externos. Adicionalmente, se determina el valor efectivo del control de operación (F) de punto flotante de admisión, el bit 13 del campo I2 de la instrucción, ETAPA 1220. El control F efectivo es la AND lógica del control F en la instrucción TBEGIN para el nivel actual y para todos los niveles externos. Además, se determina un valor efectivo del control de filtraje de interrupción de programa (PIFC), los bits 14-15 del campo I2 de la instrucción, ETAPA 1222. El valor PIFC efectivo es el valor más alto en la instrucción TBEGIN para el nivel actual y para todos los niveles externos.
Adicionalmente, se añade un valor de uno a la profundidad de anidamiento de transacción, ETAPA 1224, y la instrucción se completa con el establecimiento del código de condición 0, ETAPA 1226. Si la profundidad de anidamiento de transacción evoluciona desde cero hasta uno, la CPU entra en el modo de ejecución transaccional no restringida; en otro caso, la CPU permanece en el modo de ejecución transaccional no restringida.
Volviendo a INQUIRY 1210, si B1 es igual a cero, entonces la dirección de bloque de diagnóstico de transacción es inválida, ETAPA 1211, y el procesamiento continúa en la ETAPA 1218. De forma similar, si la CPU está en modo de ejecución transaccional, INQUIRY 1206, el procesamiento continúa en la ETAPA 1218.
El Código de Condición resultante de la ejecución de TBEGIN incluye, por ejemplo:
0 Iniciación de transacción con éxito
1 -­
2 -­
3 -­
Las Excepciones de Programa incluyen, por ejemplo:
• Acceso (almacenamiento, primer operando)
• Operación (la instalación de ejecución transaccional no está instalada)
• Operación especial
• Especificación
• Restricción de transacción (debido a una instrucción restringida)
En una realización, la comprobación de excepción proporcionada con anterioridad puede ocurrir en un orden variable. Un orden particular para la comprobación de excepción es como sigue:
• Excepciones con la misma prioridad que la prioridad de condiciones de interrupción de programa para el caso general.
• Excepción de especificación debido a valor de PIFC reservado.
• Excepción de especificación debido a una primera dirección de operando que no está sobre un límite de doble palabra.
• Excepción de acceso (cuando el campo B1 no es cero).
• Aborto debido a exceder una profundidad de anidamiento de transacción máxima.
• Código de condición 0 debido a un acabado normal.
Notas:
1. Cuando el campo B1 no es cero, se aplica lo siguiente;
• Se proporciona un bloque de diagnóstico de transacción (TDB) accesible cuando se inicia una transacción más externa, incluso si la transacción nunca aborta.
• Puesto que es impredecible si se prueba la accesibilidad del TDB para transacciones anidadas, se debe proporcionar un t Db accesible para cualquier instrucción TBEGIN anidada.
• El rendimiento de cualquier TBEGIN en la que el campo B1 no es cero, y el rendimiento de cualquier proceso de aborto que ocurra para una transacción que haya sido iniciada por un TBEGIN más externo en el que el campo B1 no es cero, puede ser más bajo que cuando el campo B1 es cero.
2. Los registros designados para ser guardados por la máscara de guardar de registro general son solamente restablecidos, en una realización, si la transacción aborta, no cuando la transacción termina normalmente por medio de TRANSACTION END. Solamente los registros designados por la GRSM de la instrucción TRANSACTION BEGIN más externa se restauran con el aborto.
El campo I2 debe designar todos los pares de registro que proporcionen valores de entrada que sean cambiados por la transacción. De ese modo, si la transacción se aborta, los valores de registro de entrada podrán ser restablecidos a sus contenidos originales cuando se introduzca el manipulador de aborto.
3. La instrucción TRANSACTION BEGIN (TBEGIN) se espera que vaya seguida de una instrucción de ramificación condicional que determine si la transacción se inició con éxito.
4. Si una transacción se aborta debido a condiciones que no dan como resultado una interrupción, la instrucción designada por la PSW de aborto de transacción recibe control (es decir, la instrucción que sigue a la TRANSACTION BEGIN (TBEGIN) más externa). Adicionalmente al código de condición establecido por la instrucción TRANSACTION B E G i N (TBEGIN), los códigos de condición 1-3 se establecen también cuando una transacción aborta.
Por lo tanto, la secuencia de instrucción que sigue a la instrucción TRANSACTION BEGIN (TBEGIN) más externa debe estar capacitada para albergar la totalidad de los cuatro códigos de condición incluso aunque la instrucción TBEGIN solamente establezca el código 0, en este ejemplo.
5. En la mayor parte de los modelos, se puede obtener un rendimiento mejorado, tanto en TRANSACTION BEGIN como cuando una transacción aborta, especificando el número mínimo de registros que necesitan ser guardados y restablecidos en la máscara de salvar de registro general.
6. Mientras está en el modo de ejecución transaccional no restringido, un programa puede llamar una función de servicio que puede alterar registros de acceso o registros de punto flotante (incluyendo el registro de control de punto flotante). Aunque una rutina de servicio de ese tipo puede guardar los registros alterados a la entrada y restablecerlos a la salida, la transacción puede ser abortada con anterioridad a la salida normal de la rutina. Si el programa de llamada no hace ninguna provisión para conservar esos registros mientras la CPU está en el modo de ejecución transaccional no restringida, puede no estar capacitado para tolerar la alteración de la función de servicio de los registros.
Para impedir la alteración inadvertida de registros de acceso mientras está en el modo de ejecución transaccional no restringida, el programa puede establecer el control de modificación de AR de admisión, bit 12 del campo I2 de la instrucción TRANSACTION BEGIN, en cero. De forma similar, para impedir la alteración inadvertida de los registros de punto flotante, el programa puede establecer el control de operación de punto flotante de admisión, bit 13 del campo I2 de la instrucción TBEGIN, en cero.
7. Las condiciones de excepción de programa reconocidas durante la ejecución de la instrucción TRANSACTION BEGIN (TBEGIN) están sujetas al control de filtraje de interrupción de programa efectivo establecido por cualquiera de las instrucciones TBEGIN externas. Las condiciones de excepción de programa reconocidas durante la ejecución de la instrucción TBEGIN más externa no están sujetas a filtraje.
8. Con el fin de actualizar múltiples localizaciones de almacenaje de una manera serializada, las secuencias de código convencionales pueden emplear una palabra de bloqueo (semáforo) si (a) se usa ejecución transaccional para implementar actualizaciones de múltiples localizaciones de almacenaje, (b) el programa proporciona también una ruta de “retroceso” a ser invocada si la transacción aborta, y (c) la ruta de retroceso emplea una palabra de bloqueo, entonces la ruta de ejecución transaccional debe probar también la disponibilidad del bloqueo, y si el bloqueo no está disponible, finalizar la transacción por medio de la instrucción TRNSACTION END y ramificar la ruta de retroceso. Esto asegura un acceso consistente a recursos serializados, con independencia de si están transaccionalmente actualizados.
Alternativamente, el programa podría abortar si el bloqueo no está disponible, sin embargo el proceso de aborto puede ser significativamente más lento que simplemente terminar la transacción vía TEND.
9. Si el control de filtraje de programa efectivo (PIFC) es mayor que cero, la CPU filtra la mayor parte de las interrupciones de programa de excepción de datos. Si el control de operación (F) de punto flotante de admisión es cero, el código de excepción de datos (DXC) no será establecido en el registro de control de punto flotante como resultado de un aborto debido a una condición de excepción de programa de excepción de datos. En este escenario (se aplica filtraje y el control F efectivo es cero), la única posición en la que se inspecciona el DXC es en el TDB específico de TBEGIN. Si el manipulador de aborto del programa debe inspeccionar el DXC en esa situación, el registro B1 general no podrá ser cero, de tal modo que se establece una dirección de bloqueo de diagnóstico de transacción (TDBA) válida.
10. Si existe una condición de alteración de almacenaje de PER o de detección de dirección cero para el TDB específico de TBEGIN de la instrucción TBEGIN más externa, y no se aplica supervisión de evento de PER, se reconoce el evento de PER durante la ejecución de las instrucciones, causando de ese modo que la transacción sea abortada inmediatamente, con independencia de si existe cualquier otra condición de aborto.
En una realización, la instrucción TBEGIN establece implícitamente la dirección de aborto de transacción de modo que sea la siguiente instrucción secuencial que sigue a TBEGIN. Esta dirección está destinada a ser una instrucción de ramificación condicional que determina si se realiza o no la ramificación dependiendo del código de condición (CC). Una TBEGIN con éxito establece CC0, mientras que una transacción abortada establece CC1, CC2 o CC3. En una realización, la instrucción TBEGIN proporciona un operando de almacenaje opcional que designa la dirección de un bloque de diagnóstico de transacción (TDB) en el que se almacena la información si aborta la transacción. Además, ésta proporciona un operando intermedio que incluye lo siguiente:
Una máscara de salvar de registro general (GRSM) que indica qué pares de registros generales han de ser guardados al comienzo de la ejecución transaccional y restablecidos si se aborta la transacción;
Un bit (A) para permitir el aborto de la transacción si la transacción modifica registros de acceso;
Un bit (F) para permitir el aborto de la transacción si la transacción intenta ejecutar instrucciones de punto flotante, y
Un control de filtraje de interrupción de programa (PIFC) que permite niveles de transacción individual para desviar la presentación real de una interrupción de programa si se aborta una transacción.
Los controles, A, F y PIFC pueden ser diferentes a distintos niveles de anidamiento, y restablecidos a los niveles previos cuando finalicen los niveles de transacción interna.
Además, la TBEGIN (o en otra realización, la TBEGINC) se usa para formar un indicio de transacción. Opcionalmente, el indicio puede ser emparejado con un indicio formado por la instrucción TEND. Para cada instrucción TBEGIN (o TBEGINC), como ejemplo, se forma un indicio a partir de la primera dirección de operando. Este indicio puede ser formado como independiente si el registro de base es cero (a diferencia con la configuración de dirección de TDB que solamente ocurre cuando el registro de base no es cero). Para cada instrucción de TRANSACTION END ejecutada con un registro de base distinto de cero se forma un indicio similar a partir de su operando de almacenaje. Si los indicios no se emparejan, se puede reconocer una excepción de programa para alertar al programa de una instrucción desemparejada.
El emparejamiento de indicios proporciona un mecanismo destinado a mejorar la fiabilidad del software asegurando que una indicación de TEND se empareja apropiadamente con TBEGIN (o TBEGINC). Cuando se ejecuta una instrucción TBEGIN a un nivel de anidamiento particular, se forma un indicio a partir de la dirección de operando de almacenaje que identifica la instancia de una transacción. Cuando se ejecuta una transacción TEND correspondiente, se forma un indicio a partir de la dirección de operando de almacenaje de la instrucción, y la CPU compara el indicio de inicio para el primer nivel de anidamiento con el indicio de finalización. Si los indicios no se emparejan se reconoce una condición de excepción. Un modelo puede implementar emparejamiento de indicios sólo para un cierto número de niveles de anidamiento (o para ninguno de los niveles de anidamiento). El indicio puede que no incluya todos los bits de la dirección de operando de almacenaje, o los bits pueden ser combinados a través de hashing o de otros métodos. Un indicio puede ser formado por la instrucción TBEGIN incluso aunque no se tenga acceso a su operando de almacenaje.
Para resumir, el procesamiento de una transacción no restringida, es como sigue:
• Si TND = 0
o Si Bi t 0, la dirección de bloque de diagnóstico de transacción se establece a partir de la primera dirección de operando.
o La PSW de aborto de transacción se establece en la siguiente dirección de instrucción secuencial
o Los pares de registro general designados por el campo I2 se guardan en una posición dependiente del modelo
- No es directamente accesible por el programa
• Controles efectivos de PIFC, A & F calculados
o A efectivo = TBEGIN A & cualquier A externa
o F efectivo = TBEGIN F & cualquier F externa
o PIFC efectivo = máx(TBEGIN PIFC, cualquier PIFC externa)
• Profundidad de anidamiento de transacción (TND) incrementada
• Si la TND evoluciona de 0 a 1, la CPU entra en el modo de ejecución transaccional
• El código de condición se establece en cero
° Cuando la instrucción que sigue a TBEGIN recibe control:
- TBEGIN es indicada con éxito por CC0
- La transacción abortada se indica mediante CC distinto de cero
• Excepciones:
° Código de aborto 13 si se ha excedido la profundidad de anidamiento
° Excepción de acceso (uno de varios PICs) si el campo Bi no es cero, y no se puede acceder al operando de almacenaje para una operación de almacenamiento
° Excepción de ejecutar (PIC 0003) si la instrucción TBEGIN es el objetivo de una instrucción de tipo ejecutar
° Excepción de operación (PIC 0001) si la instalación de ejecución transaccional no está instalada
° PIC 0006 si cualquiera de:
- PIFC es inválido (valor de 3)
- Segunda dirección de operando no alineada en doble palabra
° PIC 0013 hex si control de ejecución transaccional (CR0.8) es cero
° PIC 008 hex si se ha emitido en modo de TX restringida
Según se ha indicado con anterioridad, en una realización, los registros seleccionados pueden ser guardados al comienzo de la ejecución transaccional, y a continuación restablecidos en el curso de un aborto de transacción. Una realización de la lógica asociada a guardar/restablecer registros seleccionados, en general, se describe con referencia a la Figura 13A. Otras realizaciones se describen después con referencia a la Figura 13B. Como ejemplo, un procesador ejecuta esta lógica.
Con referencia a la Figura 13A, se realiza una determinación de uno o más registros seleccionados para ser guardados, ETAPA 1300. En un ejemplo, esta determinación se realiza comprobando el conjunto de bits de una GRSM indicada por medio de una instrucción de TRANSACTION BEGIN. Sin embargo, en otras realizaciones, se pueden usar otras técnicas que indiquen los registros seleccionados para ser guardados. El contenido de los registros seleccionados se almacena en una posición de memoria predefinida que es inaccesible, en una realización, para los programas, ETAPA 1302.
A continuación, si existe un aborto de una transacción asociada a los registros, INQUIRY 1304, los registros seleccionados son restablecidos, ETAPA 1306. Por ejemplo, los contenidos almacenados en la posición de memoria predefinida son cargados en los registros apropiados.
En una realización particular, los registros a ser almacenados se especifican mediante una instrucción TRANSACTION BEGIN, según se describe con referencia a la Figura 13B. En esta realización, se obtiene una instrucción TRANSACTION BEGIN (p. ej., recibida, buscada, etc.) por medio de un procesador, ETAPA 1350. Se realiza una determinación respecto a si ésta es una instrucción TRANSACTION BEGIN más externa, INQUIRY 1352. Si la instrucción TRANSACTION BEGIN no ha sido iniciada dentro de otra transacción, y por lo tanto es una instrucción TRANSACTION BEGIN más externa, se realiza una determinación usando la GRSM de la instrucción de los uno o más registros que se van a guardar, ETAPA 1354. En este ejemplo, los registros son registros generales, y según lo anterior, éstos son guardados copiando sus contenidos, con anterioridad al uso de los registros (p. ej., justo al principio de la ejecución de la instrucción), en una posición de memoria predefinida, ETAPA 1356.
Volviendo a INQUIRY 1352, si ésta no es una instrucción TRANSACTION BEGIN más externa, entonces se ignora la GRSM en esta realización.
A continuación de guardar cualesquiera registros a ser guardados, el procesamiento de la transacción avanza, y si la transacción aborta, ya sea debido a que esta transacción especificada aborta o ya sea, en esta realización, debido a que una transacción anidada interna aborta causando que esta transacción aborte, INQUIRY 1358, los registros seleccionados se restauran copiando los contenidos desde la posición de memoria predefinida hasta los registros, ETAPA 1360. Esto completa el procesamiento.
Con anterioridad se han descrito realizaciones de guardar/restablecer registros, tal como registros generales, en un aborto (es decir, terminación anormal). Cuando se aborta una transacción, los almacenamientos transaccionales realizados durante la ejecución de la transacción se desechan. Sin embargo, a menos que se especifique otra cosa, los contenidos de los registros generales no se restablecen. Los contenidos de los registros de acceso y del contexto de punto flotante no son tampoco restablecidos, en un ejemplo, si una transacción aborta. Al no salvar registros a menos que sea requerido específicamente por el programa, la velocidad de ejecución del proceso de la instrucción TRANsAcTION BEGIN más externa se incrementa.
En una realización, los registros generales específicos del programa son guardados durante la ejecución de una instrucción TRANSACTION BEGIN más externa, y estos registros son restablecidos en caso de la transacción sea abortada. En una realización adicional, los registros, distintos de los registros generales, tal como los registros de punto flotante y/o los registros de acceso, son guardados y/o restablecidos. Además, los registros generales individuales y/o los agrupamientos de registros generales pueden ser guardados/restablecidos. Adicionalmente, en una realización, un registro de propósito general que especifique una máscara de bit, se usa para especificar los registros a establecer.
En otra realización adicional más, uno o más de guardar/restablecer se realiza en entornos transaccionales que implementan anidamiento no aplanado. En un entorno de ese tipo, cuando una transacción dentro de un anidamiento de transacción aborta, las otras instrucciones del interior del anidamiento puede que no aborten. En un entorno de ese tipo, cada nivel de anidamiento tiene una indicación de cuál (cuáles) registro(s) han de ser guardados y/o restablecidos.
Dado que lo anterior es un medio eficiente de actualización múltiple, los objetos no contiguos en la memoria sin serialización clásica (de grano grueso) tal como bloqueo, proporcionan un potencial para un mejora significativa del rendimiento del procesador. Es decir, múltiples objetos no contiguos son actualizados sin imposición de orden de acceso de almacenaje de grano más grueso que se proporciona mediante las técnicas clásicas, tal como bloqueos y semáforos. Se proporciona ejecución especulativa sin configuración de recuperación onerosa, y se ofrecen transacciones restringidas para actualizaciones simples, de pequeña huella.
La ejecución transaccional puede ser usada en una diversidad de escenarios incluyendo aunque sin limitación, recubrimiento parcial, procesamiento especulativo y elisión de bloqueo. En recubrimiento parcial, la región parcial a ser incluida en la ruta ejecutada está en torno a TBEGIN/TEND. TARBOT puede estar incluida en la misma para un estado de retroceso por una salida lateral. Para especulación, tal como en Java, los null-checks en los punteros de no referencia pueden ser retardados hasta el límite del bucle usando una transacción. Si el puntero es nulo, la transacción puede abortar de manera segura usando TABORT, la cual está incluida dentro de TBEGIN/TEND. En cuanto a elisión de bloqueo, se describe un ejemplo de uso del mismo con referencia a las Figuras 14A-14B y del fragmento de código que se proporciona más adelante.
La Figura 14A representa una lista 1400 doblemente enlazada, de una pluralidad de elementos de cola 1402a-1402d. Un nuevo elemento de cola 1402e va a ser insertado en la lista 1400 doblemente enlazada de elementos de cola. Cada elemento de cola 1402a-1402e incluye un puntero 1404a-1404e delantero y un puntero 1406a-1406e trasero. Según se ha mostrado en la Figura 14B, para añadir un elemento de cola 1402e entre los elementos de cola 1402b y 1402c, (1) el puntero 1406e trasero se establece de modo que apunte al elemento de cola 1402b, (2) el puntero 1404e delantero se establece de modo que apunte al elemento de cola 1402c, (3) el puntero 1406c trasero se establece de modo que apunte al elemento de cola 1402e, y (4) el puntero 1404b delantero se establece de modo que apunte al elemento de cola 1402e.
Un ejemplo de fragmento de código correspondiente a las Figuras 14A-14B es como sigue:
R1 - dirección del nuevo elemento de cola a ser insertado
R2 - dirección del punto de inserción; el nuevo elemento se inserta antes de que se apunte al elemento mediante R2.
NUEVO USAR QEL, R1
CURR USAR QEL, R2
LHI R15, 10 Cargar conteo de reutilización
BUCLE TBEGIN TDB, X'C000' Transacción de inicio (guardar GRs 0-3)
JNZ ABORTADA CC distinto de cero significa abortado
LG R3, CURR.BWD Apuntar a elemento previo
PREV USAR QEL, R3 Hacerlo direccionable
STG R1, PREV.FWD Actualizar puntero delantero previo
STG R1, CURR.BWD Actualizar puntero trasero actual
STG R2, NEW.FWD Actualizar nuevo puntero delantero
STG R3, NEW.BWD Actualizar nuevo puntero trasero
TEND Fin de transacción
ABORTADO JO NO_RETRY CC3: Aborto no recuperable
JCT R15, BUCLE Reutilizar transacción unas pocas veces
J NO_RETRY Ningún resultado después de 10x; hacerlo de forma difícil.
En un ejemplo, si se usa la transacción para elisión de bloqueo, pero la ruta de retroceso usa un bloqueo, la transacción debe buscar al menos la palabra de bloqueo para ver que la misma está disponible. El procesador asegura que la transacción aborta, si la CPU accede al bloqueo de manera no transaccional.
Según se utiliza en la presente memoria, almacenaje, almacenaje central, almacenaje principal, memoria y memoria principal, se usan de manera intercambiable, a menos que se indique otra cosa, implícitamente mediante uso o explícitamente. Además, mientras en una realización, una transacción efectivamente retardante incluye retardar almacenamientos transaccionales asignados en la memoria principal hasta la terminación de una transacción seleccionada, en otra realización, una transacción efectivamente retardante incluye permitir actualizaciones transaccionales en la memoria, pero manteniendo los antiguos valores y restableciendo la memoria en los valores antiguos con el aborto.
Como podrá apreciar un experto en la materia, uno o más aspectos pueden ser materializados a modo de sistema, método o producto de programa informático. Por consiguiente, uno o más aspectos pueden adoptar forma de una realización completamente en hardware, y de una realización completamente en software (incluyendo firmware, software residente, microcódigo, etc.) o una realización que combine aspectos de software y de hardware que puedan ser todos ellos mencionados en general en la presente memoria como un “circuito”, “módulo” o “sistema”. Además, uno o más aspectos pueden adoptar forma de un producto de programa informático materializado en uno o más medios legibles con ordenador que tengan un código informático legible con ordenador incorporado en los mismos.
Se puede utilizar cualquier combinación de uno o más medios legibles con ordenador. El medio legible con ordenador puede ser un medio de almacenaje legible con ordenador. Un medio de almacenaje legible con ordenador puede ser, por ejemplo, aunque sin limitación, un sistema, aparato o dispositivo electrónico, magnético, óptico, electromagnético, infrarrojo o semiconductor, o cualquier combinación adecuada de los anteriores. Ejemplos más específicos (una lista no exhaustiva) de medios de almacenaje legibles con ordenador incluyen los siguientes: una conexión eléctrica que tiene uno o más cables, un disquete portátil de ordenador, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de sólo lectura (ROM), una memoria de sólo lectura programable y borrable (EPROM o memoria Flash), una fibra óptica, una memoria de sólo lectura de disco compacto portable (CD-ROM), un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento magnético, o cualquier combinación adecuada de los anteriores. En el contexto del presente documento, un medio de almacenaje legible con ordenador puede ser un medio tangible que pueda contener o almacenar un programa para su uso por, o en, conexión con un sistema, aparato o dispositivo de ejecución de instrucciones.
Haciendo ahora referencia a la Figura 15, en un ejemplo, un producto 1500 de programa informático incluye, por ejemplo, uno o más medios 1502 de almacenaje no transitorios legibles con ordenador para almacenar medios de código informático legibles con ordenador o lógica 1504 en los mismos, para proporcionar y facilitar una o más realizaciones.
El código informático materializado en un medio legible con ordenador puede ser transmitido usando un medio apropiado, incluyendo aunque sin limitación un medio inalámbrico, alámbrico, un cable de fibra óptica, RF, etc., o cualquier combinación adecuada de los anteriores.
El código de programa informático para llevar a cabo operaciones para una o más realizaciones, puede estar escrito 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 similar, y lenguajes de programación procedimentales convencionales tales como el lenguaje de programación “C”, ensamblador o lenguajes de programación similares. El código de programa puede ejecutarse completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, a modo de paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente en un ordenador remoto o completamente en el ordenador remoto o servidor. En este último escenario, el ordenador remoto puede estar conectado al ordenador 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 realizarse hasta un ordenador externo (por ejemplo, a través de Internet usando un Proveedor de Servicios de Internet).
En la presente se describen una o más realizaciones con referencia a las ilustraciones de diagrama de flujo y/o a los diagramas de bloque de métodos, aparatos (sistemas) y productos de programa informático. Se comprenderá que cada bloque de las ilustraciones de diagrama de flujo y/o los diagramas de bloques, y combinaciones de bloques en las ilustraciones del diagrama de flujo y/o diagramas de bloques, pueden ser implementados mediante instrucciones de programa informático. Las instrucciones de programa informático pueden ser proporcionadas a un procesador de un ordenador de propósito general, un ordenador de propósito especial, u otro aparato de procesamiento de datos programable para producir una máquina, de tal modo que las instrucciones, que se ejecutan a través del procesador del ordenador o de otro aparato de procesamiento de datos programable, crean medios para implementar las funciones/actos especificados en el diagrama de flujo y/o en el bloque o bloques del diagrama de bloques.
Estas instrucciones de programa informático pueden estar también almacenadas en un medio legible con ordenador que pueda dirigir un ordenador, otro aparato de procesamiento de datos programable, u otros dispositivos que funcionen de una manera particular, de tal modo las instrucciones almacenadas en el medio legible con ordenador produzcan un artículo de fabricación que incluya instrucciones que implementen la funcionalidad/el acto especificados en el bloque o bloques del diagrama de flujo y/o del diagrama de bloques.
Las instrucciones de programa informático pueden estar también cargadas en un ordenador, en otro aparato de procesamiento de datos programable, o en otros dispositivos que hagan que una serie de etapas operacionales sean llevadas a cabo en el ordenador, en otro aparato programable o en otros dispositivos para producir un proceso implementado por ordenador de tal modo que las instrucciones que se ejecutan en el ordenador u otro aparato programable proporcionen procesos para la implementación de las funciones/actos especificados en el bloque o bloques del diagrama de flujo y/o del diagrama de bloques
El diagrama de flujo y los diagramas de bloques de las Figuras, ilustran la arquitectura, funcionalidad y operación de posibles implementaciones de sistemas, métodos y productos de programa informático conforme a varias realizaciones. A este respecto, cada bloque del diagrama de flujo o de los diagramas de bloques puede representar un módulo, segmento o porción de código, que comprenda una o más instrucciones ejecutables para implementar la(s) función(es) lógica(s) especificada(s). También se podrá apreciar que, en algunas implementaciones alternativas, las funciones observadas en el bloque pueden ocurrir fuera del orden indicado en las Figuras. Por ejemplo, dos bloques mostrados en sucesión pueden, de hecho, ser ejecutados de forma sustancialmente concurrente, o los bloques pueden a veces ser ejecutados en orden inverso dependiendo de la funcionalidad involucrada. También se podrá observar que cada bloque de los diagramas de bloques y/o de las ilustraciones de diagrama de flujo, y combinaciones de los bloques de los diagramas de bloques y/o de la ilustración de diagrama de flujo, pueden ser implementados mediante sistemas basados en hardware de propósito especial que realizan las funciones o los actos especificados, o combinaciones de hardware de propósito especial e instrucciones de ordenador.
Adicionalmente a lo anterior se puede proporcionar, ofrecer, desplegar, gestionar, poner en servicio, etc., uno o más aspectos por medio de un proveedor de servicios que ofrezca gestiones de entornos de consumidor. Por ejemplo, el proveedor de servicios puede crear, mantener, soportar, etc., un código informático y/o una infraestructura de ordenador que realice uno o más aspectos para uno o más usuarios. A su vez, el proveedor del servicio puede recibir el pago del consumidor bajo una suscripción y/o un acuerdo de precio, por ejemplo. Adicional o alternativamente, el proveedor del servicio puede recibir el pago por la venta de contenidos publicitarios para una o más terceras partes.
En un aspecto, se puede desplegar una aplicación para realizar una o más realizaciones. Como ejemplo, el despliegue de una aplicación comprende proporcionar infraestructura de ordenador operable para llevar a cabo una o más realizaciones.
Como aspecto adicional, se puede desplegar una infraestructura de computación que comprenda integrar un código legible con ordenador en un sistema de computación, en el que el código, en combinación con el sistema de computación, sea capaz de llevar a cabo una o más realizaciones.
Según otro aspecto adicional más, se puede proporcionar un proceso para integrar una infraestructura de computación que comprenda integrar un código legible con ordenador en un sistema de ordenador. El sistema de ordenador comprende un medio legible con ordenador, en donde el medio informático comprende una o más realizaciones. El código en combinación con el sistema de ordenador está capacitado para realizar una o más realizaciones.
Aunque se han descrito varias realizaciones con anterioridad, éstas son solamente ejemplos. Por ejemplo, se pueden usar entornos de computación de otras arquitecturas. Además, se pueden usar diferentes instrucciones, formatos de instrucciones, campos de instrucciones y/o valores de instrucciones. Además, se pueden proporcionar/usar otras restricciones/limitaciones, diferentes. Más aún, se pueden guardar/restablecer registros distintos de los registros generales. Además, el guardado/restablecimiento se puede realizar mediante diferentes procesadores, o mediante uno o más procesadores. Son posibles muchas variaciones.
Además, se pueden usar otros tipos de entornos de computación. Como ejemplo, se puede usar un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar un código informático que incluya al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de un bus de sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecución real del código de programa, almacenaje masivo, y memoria caché, que proporcionan almacenaje temporal de al menos algún código informático con el fin de reducir el número del que el código debe ser recuperado desde el almacenaje masivo durante la ejecución.
Dispositivos de Entrada/Salida o de E/S (incluyendo, aunque sin limitación, teclados, visualizadores, dispositivos de puntero, DASD, cinta, CDs, DVDs, dispositivos de reconocimiento del pulgar y otros medios de memoria, etc.) pueden estar acoplados al sistema tanto directamente como a través de controladores de E/S intervinientes. También se pueden acoplar al sistema adaptadores de red que permitan que el sistema de procesamiento de datos quede acoplado a otros sistemas de procesamiento de datos o a impresoras remotas o dispositivos de almacenaje a través de redes intervinientes privadas o públicas. Los módems, módems por cable y tarjetas de Ethernet son solamente unos pocos de los tipos disponibles de adaptadores de red.
Con referencia a la Figura 16, se muestran los componentes representativos de un sistema 5000 de Ordenador Anfitrión para implementar una o más realizaciones. El ordenador 5000 anfitrión representativo comprende una o más CPUs 5001 en comunicación con memoria de ordenador (es decir, un almacenaje central) 5002, así como con interfaces de E/S para dispositivos 5011 de medios de almacenaje y redes 5010 para comunicar con otros ordenadores o SANs y similares. La CPU 5001 es compatible con una arquitectura que tiene un conjunto de instrucción diseñado y configurado y una funcionalidad diseñada y configurada. La CPU 5001 puede tener traducción de registro de acceso (ART) 5012, que incluya una memoria búfer de traducción anticipada (ALB) 5013 de ART, para seleccionar un espacio de dirección a ser usado por traducción de dirección dinámica (DAT) 5003 para transformar direcciones de programa (direcciones virtuales) en direcciones reales de memoria. Una DAT incluye típicamente una memoria búfer de traducción anticipada (TLB) 5007 para traducción de caché de modo que los accesos posteriores al bloque de memoria de ordenador 5002 no requieren el retardo de traducción de dirección. Típicamente, se emplea una caché 5009 entre la memoria de ordenador 5002 y el procesador 5001. La caché 5009 puede ser jerárquica de modo que tenga una gran caché disponible para una CPU y cachés más pequeñas, más rápidas (nivel más bajo) entre la caché grande y cada CPU. En algunas implementaciones, las cachés de nivel más bajo están divididas para proporcionar cachés de nivel bajo separadas para búsqueda de instrucción y accesos de datos. En una realización, para la instalación de TX, pueden estar almacenados un bloque de diagnóstico de traducción (TDB) 5100 y una o más memorias búfer 5101 en una o más cachés 5009 y memorias 5002. En un ejemplo, en modo TX, los datos se almacenan inicialmente en una memoria búfer de TX, y cuando el modo TX termina (p. ej., TEND más externa), los datos de la memoria búfer se almacenan (se asignan) en la memoria, o en caso de que exista un aborto, los datos de la memoria búfer se desechan.
En una realización, se busca una instrucción en la memoria 5002 por medio de una unidad 5004 de búsqueda de instrucción a través de una caché 5009. La instrucción se descodifica en una unidad 5006 de descodificación de instrucción y se envía (con otras instrucciones en algunas realizaciones) a la unidad o unidades 5008 de ejecución de instrucción. Típicamente, se emplean varias unidades 5008 de ejecución, por ejemplo una unidad de ejecución aritmética, una unidad de ejecución de punto flotante y una unidad de ejecución de instrucción de ramificación. Además, en una realización de la instalación de TX, se pueden emplear varios controles 5110 de TX. La instrucción se ejecuta por medio de una unidad de ejecución, accediendo a operandos desde registros o memoria específicos de la instrucción, según se necesite. Si se ha de acceder a un operando (cargado o almacenado) desde la memoria 5002, una unidad 5005 de carga/almacenamiento maneja típicamente el acceso bajo el control de la instrucción que se está ejecutando. Las instrucciones pueden ser ejecutadas en circuitos de hardware o en microcódigo interno (firmware) o mediante una combinación de ambos.
Según un aspecto de la instalación de TX, el procesador 5001 incluye también una PSW 5102 (p. ej., TX y/o PSW de aborto), una profundidad 5104 de anidamiento, una TDBA 5106, y uno o más registros 5108 de control.
Según se aprecia, un sistema informático incluye información en un almacenaje local (o principal), así como registro de direccionamiento, protección y referencia y cambio. Algunos aspectos del direccionamiento incluyen el formato de las direcciones, el concepto de espacios de dirección, los diversos tipos de direcciones, y la manera en que un tipo de dirección se traduce en otro tipo de dirección. Algún almacenaje principal incluye localizaciones de almacenaje asignadas de forma permanente. El almacenaje principal dota al sistema de almacenaje de datos de acceso rápido directamente direccionable. Tanto los datos como los programas han de ser cargados en el almacenaje principal (desde dispositivos de entrada) con anterioridad a que los mismos puedan ser procesados.
El almacenaje principal puede incluir uno o más almacenajes de memoria búfer más pequeña, de acceso más rápido, denominados a veces cachés. Una caché está típicamente asociada físicamente a una CPU o a un procesador de E/S. Los efectos, salvo el comportamiento, de la construcción física y del uso de distintos medios de almacenaje no son generalmente observables por el programa.
Se pueden mantener cachés separadas para instrucciones y para operandos de datos. La información del interior de una caché se mantiene en bytes contiguos sobre un límite integral conocido como bloque de caché o línea de caché (o línea, para acortar). Un modelo puede proporcionar una instrucción de EXTRACT caché ATTRIBUTE que devuelva el tamaño de una línea de caché en bytes. Un modelo puede proporcionar instrucciones de PREFETCH DATA y de PREFETCH DATA RELATIVE LONG que efectúen la búsqueda de almacenaje en la caché de datos o de instrucción o la liberación de datos desde la caché.
El almacenaje se ve a modo de una cadena larga horizontal de bits. Para la mayor parte de las operaciones, los accesos al almacenaje avanzan según una secuencia de izquierda a derecha. La cadena de bits se subdivide en unidades de ocho bits. Una unidad de ocho bits se denomina byte, la cual es un bloque básico de construcción de todos los formatos de información. Cada posición de byte en el almacenaje está identificada por un único número entero no negativo, que es la dirección de esa posición de byte o, simplemente, la dirección de byte. Las posiciones de byte adyacentes tienen direcciones consecutivas, empezando con 0 a la izquierda y avanzando en secuencia de izquierda a derecha, Las direcciones son números enteros binarios no signados, y son de 24, 31 o 64 bits.
La información se transmite entre el almacenaje y una CPU o un byte, o grupo de bytes, del subsistema de canal, de una vez. A menos que se especifique otra cosa, en z/Arquitectura por ejemplo, un grupo de bytes en el almacenaje se direcciona por medio del byte más a la izquierda del grupo. El número de bytes en el grupo está ya sea implicado o ya sea especificado por la operación que va a ser realizada. Cuando se usa en una operación de la CPU, un grupo de bytes se denomina campo. Dentro de cada grupo de bytes, por ejemplo en z/Arquitectura, los bits están numerados en una secuencia de izquierda a derecha. En z/Arquitectura, los bits más a la izquierda son mencionados a veces como bits de “orden alto” y los bits más a la derecha como bits de “orden bajo”. Los números de bits no son direcciones de almacenaje, sin embargo. Solamente los bytes pueden ser direccionados. Para operar sobre bits individuales de un byte en almacenaje, se accede al byte completo. Los bits en un byte están numerados de 0 a 7, de izquierda a derecha (p. ej., en z/Arquitectura). Los bits de una dirección pueden estar numerados de 8­ 31 o de 40-63 para direcciones de 24 bits, o de 1-31 o de 33-63 para direcciones de 31 bits; están numerados de 0­ 63 para direcciones de 64 bits. En un ejemplo, los bits 8-31 y 1-31 se aplican a direcciones que están en una posición (p. ej., un registro) que es de 32 bits de anchura, mientras que los bits 40-63 y 33-63 se aplican a direcciones que están en una posición de 64 bits de anchura. Dentro de cualquier otro formato de longitud fija de múltiples bytes, los bits que constituyen el formato están numerados consecutivamente empezando a partir de 0. A efectos de detección de error, y preferiblemente para corrección, se puede transmitir uno o más bits de comprobación con cada byte o con un grupo de bytes. Tales bits de comprobación son generados automáticamente por la máquina y no pueden ser controlados directamente por el programa. Las capacidades de almacenaje se expresan en número de bytes. Cuando la longitud de un campo de operando de almacenaje está implicado por el código de operación de una instrucción, se dice que el campo tiene una longitud fija, que puede ser de uno, dos, cuatro, ocho o dieciséis bytes. Campos más grandes pueden ser implicados para algunas instrucciones. Cuando la longitud de un campo de operando de almacenaje no está implicado pero se indica explícitamente, se dice que el campo tiene una longitud variable. Los operandos de longitud variable pueden variar de longitud mediante incrementos de un byte (o con algunas instrucciones, en múltiplos de dos bytes u otros múltiplos). Cuando la información se dispone en un almacén, solamente se reemplazan los contenidos de aquellas posiciones que están incluidas en el campo designado, incluso aunque la anchura de la ruta física hasta el almacenaje pueda ser mayor que la longitud del campo que se está almacenando.
Algunas unidades de información deben estar en un límite integral en el almacén. Un límite se denomina integral para una unidad de información cuando su dirección de almacenaje 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 semi-palabra es un grupo de dos bytes consecutivos sobre un límite de dos bytes y el bloque de construcción básico de instrucciones. Una palabra es un grupo de cuatro bytes consecutivos sobre un límite de cuatro bytes. Una doble palabra es un grupo de ocho bytes consecutivos sobre un límite de ocho bytes. Una cuádruple palabra es un grupo de 16 bytes consecutivos sobre un límite de 16 bytes. Una octo-palabra es un grupo de 32 bytes consecutivos sobre un límite de 32 bytes. Cuando las direcciones de almacenaje designan semi-palabras, palabras, dobles palabras, cuádruples palabras y octo-palabras, la representación binaria de las direcciones contiene uno, dos, tres, cuatro o cinco bits cero más a la derecha, respectivamente. Las instrucciones han de estar sobre límites integrales de dos bytes. Los operandos de almacenaje de la mayor parte de las instrucciones no tienen requisitos de límite de alineamiento.
En dispositivos que implementan cachés separadas para instrucciones y operandos de datos, se puede experimentar un retardo significativo si el programa se almacena en una línea de caché desde la que se buscan posteriormente las instrucciones, con independencia de si el almacenamiento altera las instrucciones que posteriormente sean buscadas.
En un ejemplo, las realizaciones pueden ser puestas en práctica mediante software (a veces denominado código interno licenciado, firmware, micro-código, mili-código, pico-código y similares, cualquiera de los cuales podría ser consistente con una o más realizaciones). Con referencia a la Figura 16, el código de programa informático que materializa uno o más aspectos puede ser accedido por el procesador 5001 del sistema 5000 anfitrión desde dispositivos 5011 de medios de almacenaje de largo plazo, tal como una unidad CD-ROM, una unidad de cinta o un disco duro. El código de programa informático puede ser materializado en uno de una diversidad de medios conocidos para su uso con un sistema de procesamiento de datos, o puede ser distribuido a usuarios desde una memoria 5002 de ordenador o un almacén de un sistema informático a través de una red 5010 hasta otros sistemas informáticos para su uso por usuarios de esos otros sistemas.
El código de programa informático incluye un sistema operativo que controla la función y la interacción de los diversos componentes informáticos y uno o más programas de aplicación. El código informático se busca normalmente desde un dispositivo 5011 de medios de almacenaje hasta el almacenaje 5002 de ordenador de velocidad relativamente más alta donde está disponible para su procesamiento por medio del procesador 5001. Las técnicas y los métodos para materializar un código de programa informático en la memoria, sobre medios físicos y/o distribuir un código informático a través de redes, son bien conocidos y no van a ser discutidos aquí con mayor detalle. El código informático, cuando se crea y se almacena en una medio tangible (incluyendo, aunque sin limitación, módulos (RAM) de memoria electrónica, memoria flash, Discos Compactos (CDs), DVDs, Cinta Magnética y similares), se menciona con frecuencia como “producto de programa informático”. El medio de producto de programa informático es típicamente legible por medio de un circuito de procesamiento, con preferencia en un sistema de ordenador para su ejecución por el circuito de procesamiento.
La Figura 17 ilustra una estación de trabajo representativa o un sistema de hardware de servidor en el que se pueden poner en práctica una o más realizaciones. El sistema 5020 de la Figura 17 comprende un sistema 5021 de ordenador de base representativo, tal como un ordenador personal, una estación de trabajo o un servidor, que incluye dispositivos periféricos opcionales. El sistema 5021 de ordenador de base incluye uno o más procesadores 5026 y un bus empleado para conectar y habilitar la comunicación entre el (los) procesador(es) 5026 y otros componentes del sistema 5021 conforme a técnicas conocidas. El bus conecta el procesador 5026 a la memoria 5025 y al almacén 5027 de largo plazo que puede incluir un disco duro (incluyendo cualquier medio magnético, CD, DVD y Memoria Flash, por ejemplo) o una unidad de cinta, por ejemplo. El sistema 5021 podría incluir también un adaptador de interfaz de usuario, que conecte el microprocesador 5026 a través del bus a uno o más dispositivos de interfaz, tal como un teclado 5024, un ratón 5023, una impresora/escáner 5030 y/u otros dispositivos de interfaz, que pueden ser cualquier dispositivo de interfaz de usuario, tal como una pantalla sensible al tacto, un teclado de entrada digitalizado, etc. El bus conecta también un dispositivo 5022 de visualización, tal como una pantalla o monitor de LCD, al microprocesador 5026 a través de un adaptador de visualización.
El sistema 5021 puede comunicar con otros ordenadores o redes de ordenadores a través de un adaptador de red capaz de comunicar 5028 con una red 5029. Ejemplos de adaptadores de red son canales de comunicación, token ring, Ethernet o módems. Alternativamente, el sistema 5021 puede comunicar usando una interfaz inalámbrica, tal como una tarjeta de CDPD (Datos de paquete digital celular). El sistema 5021 puede estar asociado a otros de esos ordenadores en una Red de Área Local (LAN) o una Red de Área Amplia (WAN), o el sistema 5021 puede ser un cliente en una disposición de cliente/servidor con otro ordenador, etc. Todas esas configuraciones, así como el hardware y el software de comunicaciones apropiadas, son conocidos en el estado de la técnica.
La Figura 18 ilustra una red 5040 de procesamiento de datos en la que pueden ponerse en práctica una o más realizaciones. La red 5040 de procesamiento de datos puede incluir una pluralidad de redes individuales, tal como una red inalámbrica y una red cableada, cada una de las cuales puede incluir una pluralidad de estaciones de trabajo 5041, 5042, 5043, 5044 individuales. Adicionalmente, como podrán apreciar los expertos en la materia, pueden estar incluidas una o más LANs, donde una LAN puede comprender una pluralidad de estaciones de trabajo inteligentes acopladas a un procesador anfitrión.
Haciendo aún referencia a la Figura 18, las redes pueden incluir también ordenadores centrales o servidores, tal como una computadora de entrada (servidor 5046 de cliente) o un servidor de aplicación (servidor 5048 remoto que puede acceder a un depósito de datos y al que también se puede acceder directamente desde una estación de trabajo 5045). Una computadora de entrada 5046 sirve como puerto de entrada en cada red individual. Se necesita una pasarela cuando se conecta un protocolo de red a otro. La pasarela 5046 puede estar preferiblemente acoplada a otra red (Internet 5047 por ejemplo) por medio de un enlace de comunicaciones. La pasarela 5046 puede también estar acoplada directamente a una o más estaciones de trabajo 5041, 5042, 5043, 5044 usando un enlace de comunicaciones. La computadora de entrada puede ser implementada utilizando un servidor eServer System z de IBM®, disponible en International Business Machines Corporation.
Haciendo simultáneamente referencia a la Figura 17 y a la Figura 18, el código 5031 de programación de software que puede materializar una o más realizaciones, puede ser accedido por parte del procesador 5026 del sistema 5020 desde medios 5027 de almacenaje de largo plazo, tal como una unidad de CD-ROM o un disco duro. El código de programación de software puede estar materializado sobre una diversidad de medios conocidos para su uso con un sistema de procesamiento de datos, o puede ser distribuido a usuarios 5050, 5051 desde la memoria o el almacenaje de un sistema informático a través de una red, hasta otros sistemas informáticos para su uso por usuarios de esos otros sistemas.
Alternativamente, el código de programación puede ser materializado en la memoria 5025, y ser accedido por el procesador 5026 usando el bus de procesador. Dicho código de programación incluye un sistema operativo que controla la función y la interacción de varios componentes de ordenador y uno o más programas 5032 de aplicación. El código informático se pagina normalmente desde medios 5027 de almacenaje hasta la memoria 5025 de alta velocidad donde está disponible para su procesamiento por medio del procesador 5026. Las técnicas y los métodos para materializar el código de programación de software en una memoria, en medios físicos, y/o distribuir el código informático a través de redes, son bien conocidos y no se van a discutir aquí con mayor detalle- El código informático, cuando se crea y se almacena en un medio tangible (incluyendo, aunque sin limitación, módulos (RAM) de memoria electrónica, memoria flash, Discos Compactos (CDs), DVDs, Cinta Magnética y similares,), se menciona con frecuencia como “producto de programa informático”. El medio de producto de programa informático es típicamente legible por un circuito de procesamiento, preferiblemente en un sistema de ordenador para su ejecución por medio del circuito de procesamiento.
La caché que está más fácilmente disponible para el procesador (normalmente más rápida y más pequeña que otras cachés del procesador) es la caché más baja (L1 o nivel uno), y el almacenamiento principal (memoria principal) es la caché de nivel más alto (L3 si hay 3 niveles). La caché de nivel más bajo se divide con frecuencia en una caché de instrucción (I-Caché) que mantiene instrucciones de máquina a ser ejecutadas, y una caché de datos (D-Caché) que mantiene operandos de datos.
Con referencia a la Figura 19, se ha representado un ejemplo de realización de procesador para el procesador 5026. Típicamente, se emplea uno o más niveles de caché 5053 para bloques de memoria búfer con el fin de mejorar el rendimiento del procesador. La caché 5053 es una memoria búfer de alta velocidad que contiene líneas de caché de datos de memoria que van a ser probablemente usados. Las líneas típicas de caché son de 64, 128 o 256 bytes de datos de memoria. Con frecuencia se emplean cachés separadas para almacenar instrucciones en caché y para almacenar datos en caché. Con frecuencia se proporciona coherencia de caché (sincronización de copias de líneas) en memoria y en las cachés) mediante varios algoritmos “snoop” bien conocidos en el estado de la técnica. El almacenaje 5025 de memoria principal de un sistema de procesador se menciona con frecuencia como caché. En un sistema de procesador que tiene 4 niveles de caché 5053, el almacenaje 5025 principal se menciona a veces como caché de nivel 5 (L5) puesto que típicamente es más rápida y solamente mantiene una porción de almacenaje no volátil (DASD, cinta, etc.) que está disponible para un sistema de ordenador. El almacenaje 5025 principal almacena en caché páginas de datos paginadas en y fuera del almacenaje 5025 principal por el sistema operativo.
Un contador 5061 de programa (contador de instrucciones) mantiene el rastreo de la dirección de la instrucción actual a ser ejecutada. Un contador de programa en un procesador de z/Arquitectura es de 64 bits y puede ser reducido a 31 o 24 bits para soportar límites de direccionamiento más antiguos. Un contador de programa está típicamente materializado en una PSW (palabra de estado de programa) de un ordenador de tal modo que persiste durante conmutación de contexto. De ese modo, un programa en progreso, que tiene un valor de contador de programa, puede ser interrumpido, por ejemplo, por el sistema operativo (conmutación de contexto desde el entorno de programa hasta el entorno de sistema operativo). La PSW del programa mantiene el valor de contador de programa mientras el programa no está activo, y el contador de programa (en la PSW) del sistema operativo se usa mientras el sistema operativo se está ejecutando. Típicamente, el contador de programa se incrementa en una cantidad igual al número de bytes de la instrucción actual. Las instrucciones RISC (Computación de Conjunto de Instrucción Reducida) son típicamente de longitud fija mientras que las instrucciones CISC (Computación de Conjunto de Instrucción Compleja) son típicamente de longitud variable. Las instrucciones de la z/Arquitectura de IBM son instrucciones CISC que tienen una longitud de 2, 4 o 6 bytes. El contador 5061 de programa se modifica ya sea mediante una operación de conmutación de contexto o ya sea mediante una operación de toma de ramificación de una instrucción de ramificación, por ejemplo. En una operación de conmutación de contexto, el valor de programa actual se guarda en la palabra de estado de programa con otra información de estado acerca del programa que se está ejecutando (tal como códigos de condición), y se carga un nuevo valor de contador de programa que apunta a una instrucción de un nuevo módulo de programa a ser ejecutado. Una operación de toma de ramificación se realiza con el fin de permitir que el programa tome decisiones o forme bucle dentro del programa cargando el resultado de la instrucción de ramificación en el contador 5061 de programa.
Típicamente, una unidad 5055 de búsqueda de instrucción se emplea para buscar instrucciones en favor del procesador 5026. La unidad de búsqueda, o bien busca “siguientes instrucciones secuenciales”, instrucciones objetivo de instrucciones de toma de ramificación, o bien primeras instrucciones de un programa que sigue una conmutación de contexto. Las unidades modernas de búsqueda de instrucción emplean con frecuencia técnicas de búsqueda para buscar especulativamente instrucciones basadas en la probabilidad de que las instrucciones previamente buscadas puedan ser usadas. Por ejemplo, una unidad de búsqueda puede buscar 16 bytes de una instrucción que incluya la siguiente instrucción secuencial y bytes adicionales o instrucciones secuenciales adicionales.
Las instrucciones buscadas se ejecutan entonces mediante el procesador 5026. En una realización, la(s) instrucción(es) buscada(s) se hace(n) pasar a una unidad 5056 de envío de la unidad de búsqueda. La unidad de envío descodifica las(s) instrucción(es) y reenvía información acerca de la(s) instrucción(es) descodificada(s) hasta unidades 5057, 5058, 5060 apropiadas. Una unidad 5057 de ejecución recibirá típicamente información acerca de las instrucciones aritméticas descodificadas desde la unidad 5055 de búsqueda de instrucción y realizará operaciones aritméticas sobre operandos conforme al opcode de la instrucción. Se proporcionan operandos a la unidad 5057 de ejecución preferiblemente desde la memoria 5025, los registros 5059 diseñados y configurados, o bien desde un campo inmediato de la instrucción que se está ejecutando. Los resultados de la ejecución, cuando se almacenan, son almacenados ya sea en una memoria 5025, en registros 5059 o ya sea en otro hardware de máquina (tal como registros de control, registros de PSW y similares).
Las direcciones virtuales son transformadas en direcciones reales usando traducción 5062 de dirección dinámica y, opcionalmente, usando traducción 5063 de registro de acceso.
Un procesador 5026 tiene típicamente una o más unidades 5057, 5058, 5060 para ejecutar la función de la instrucción. Con referencia a la Figura 20A, una unidad 5057 de ejecución puede comunicar 5071 con registros 5059 generales diseñados y configurados, una unidad 5056 de descodificación/envío, una unidad 5060 de almacenamiento de carga, y otras unidades 5065 de procesador a través de la lógica 5071 de interfaz. Una unidad 5057 de ejecución puede emplear varios circuitos 5067, 5068, 5069 de registro para mantener información sobre la que podrá operar la unidad lógica aritmética (ALU) 5066. La ALU realiza operaciones aritméticas tales como suma, resta, multiplicación y división así como la función lógica tal como AND, OR y OR-Exclusiva (XOR), giro y desplazamiento. Con preferencia, la ALU soporta operaciones especializadas que son dependientes del diseño. Otros circuitos pueden proporcionar otras instalaciones 5072 diseñadas y configuradas que incluyan códigos de condición y recuperen lógica de soporte, por ejemplo. Típicamente, el resultado de una operación de la ALU se mantiene en un circuito 5070 de registro de salida que puede enviar el resultado a una diversidad de otras funciones de procesamiento. Existen muchas disposiciones de unidades de procesador, estando la presente descripción destinada únicamente a proporcionar una comprensión representativa de una realización.
Una instrucción de ADD, por ejemplo, podría ser ejecutada en una unidad 5057 de ejecución que tenga funcionalidad aritmética y lógica mientras que una instrucción de punto flotante, por ejemplo, podría ser ejecutada en una ejecución de punto flotante que tenga capacidad de punto flotante especializada. Con preferencia, una unidad de ejecución opera sobre operandos identificados mediante una instrucción llevando a cabo una función definida de opcode sobre los operandos. Por ejemplo, una instrucción de ADD puede ser ejecutada por medio de una unidad 5057 de ejecución sobre operandos encontrados en dos registros 5059 identificados por campos de registro de la instrucción.
La unidad 5057 de ejecución realiza la adición aritmética sobre dos operandos y almacena el resultado en un tercer operando donde el tercer operando puede ser un tercer registro o uno de los dos registros fuente. La unidad de ejecución, utiliza, con preferencia, una Unidad Lógica Aritmética (ALU) 5066 que está capacitada para llevar a cabo una diversidad de funciones lógicas tal como Desplazamiento, Giro, AND, OR y XOR, así como una diversidad de funciones algebraicas incluyendo cualquiera de entre suma, resta, multiplicación, división. Algunas ALUs 5066 están diseñadas para operaciones escalares y algunas para punto flotante. Los datos pueden ser Big Endian (donde el byte menos significativo está en la dirección del byte más alto) o Litle Endian (donde el byte menos significativo está en la dirección del byte más bajo), dependiendo de la arquitectura. La z/Arquitectura de IBM es Big Endian. Los campos signados pueden ser de signo y magnitud, complemento de 1 o complemento de 2 dependiendo de la arquitectura. Un número complemento de 2 resulta ventajoso debido a que la ALU no necesita diseñar una capacidad de resta puesto que cualquier valor negativo o valor positivo en complemento de 2 requiere solamente una adición en el interior de la ALU. Los números se describen normalmente en abreviatura, donde un campo de 12 bits define una dirección de un bloque de 4.096 bytes y se describe normalmente como un bloque de 4 Kbytes (kilobytes), por ejemplo.
Con referencia a la Figura 20B, la información de instrucción de ramificación para ejecutar una instrucción de ramificación se envía típicamente a una unidad 5058 de ramificación que con frecuencia emplea un algoritmo de predicción de ramificación tal como una tabla 5082 de histórico de ramificación para predecir el resultado de la ramificación con anterioridad a que se completen otras operaciones condicionales. El objetivo de la instrucción actual de ramificación será buscado y ejecutado especulativamente con anterioridad a que se completen las operaciones condicionales. Cuando se han completado las operaciones condicionales, las instrucciones de ramificación ejecutadas especulativamente están ya sea completadas o ya sea desechadas en base a las condiciones de la operación condicional y al resultado especulado. Una instrucción de ramificación típica puede probar códigos de condición y ramificación para una dirección objetivo si los códigos de condición cumplen el requisito de ramificación de la instrucción de ramificación, pudiendo una dirección objetivo ser calculada en base a varios números que incluyen unos encontrados en campos de registro o en un campo inmediato de la instrucción, por ejemplo. La unidad 5058 de ramificación puede emplear una ALU 5074 que tenga una pluralidad de circuitos 5075, 5076, 5077 de registro de entrada y un circuito 5080 de registro de salida. La unidad 5058 de ramificación puede comunicar 5081 con registros 5059 generales, con la unidad 5056 de envío de descodificación o con otros circuitos 5073, por ejemplo.
La ejecución de un grupo de instrucciones se puede interrumpir por una diversidad de razones que incluyen una conmutación de contexto iniciada por un sistema operativo, una excepción de programa o un error que cause una conmutación de contexto, una señal de interrupción de E/S que cause una conmutación de contexto o una actividad multihilo de una pluralidad de programas (en un entorno de multi-hilo), por ejemplo. Con preferencia, una acción de conmutación de contexto guarda información de estado acerca de un programa de ejecución actual y a continuación carga información de estado acerca de otro programa que sea invocado. La información de estado puede ser guardada en registros de hardware o en memoria, por ejemplo. La información de estado comprende, con preferencia, un valor de contador de programa que apunta a una siguiente instrucción a ser ejecutada, códigos de condición, información de traducción de memoria y contenido de registro diseñado y configurado. Se puede ejercitar una actividad de conmutación de contexto mediante circuitos de hardware, programas de aplicación, programas de sistema operativo o código de firmware (microcódigo, pico-código o código interno licenciado (LIC)) por sí solos o en combinación.
Un procesador accede a operandos conforme a métodos definidos de instrucción. La instrucción puede proporcionar un operando inmediato usando el valor de una porción de la instrucción, puede proporcionar uno o más campos de registro que apunten explícitamente a registros de propósito general o bien a registros de propósito especial (registros de punto flotante por ejemplo). La instrucción puede utilizar registros implicados, identificados por un campo de opcode como operandos. La instrucción puede utilizar posiciones de memoria para operandos. Se puede proporcionar una posición de memoria de un operando por medio de un registro, un campo inmediato, o una combinación de registros y de un campo inmediato según se ejemplifica mediante la instalación de desplazamiento largo de z/Arquitectura en donde la instrucción define un registro de base, un registro de índice y un campo inmediato (campo de desplazamiento) que se suman entre sí para proporcionar la dirección del operando en la memoria, por ejemplo. La posición implica aquí típicamente una posición en la memoria principal (almacenaje principal) a menos que se indique otra cosa.
Con referencia a la Figura 20C, un procesador accede al almacenaje usando una unidad 5060 de carga/almacenamiento. La unidad 5060 de carga/almacenamiento puede realizar una operación de carga obteniendo la dirección del operando objetivo en la memoria 5053, y cargar el operando en un registro 5059 u otra posición de memoria 5053, o puede realizar una operación de almacenamiento obteniendo la dirección del operando objetivo en la memoria 5053 y almacenando datos obtenidos a partir del registro 5059 o de otra posición de memoria 5053 en la posición de operando objetivo en la memoria 5053. La unidad 5060 de carga/almacenamiento puede ser especulativa y puede acceder a memoria en una secuencia que esté fuera de orden con relación a la secuencia de instrucción; sin embargo la unidad 5060 de carga/almacenamiento sirve para mantener la apariencia en programas donde las instrucciones fueron ejecutadas por orden. Una unidad 5060 de carga/almacenamiento puede comunicar 5084 con registros 5059 generales, con la unidad 5056 de descodificación/envío, con la interfaz 5053 de caché/memoria, o con otros elementos 5083, y comprende varios circuitos 5086, 5087, 5088 y 5089 de registro, ALUs 5085 y lógica 5090 de control para calcular direcciones de almacenaje y para proporciona secuenciación de análisis para mantener las operaciones en orden. Algunas operaciones pueden estar fuera de orden, pero la unidad de carga/almacenamiento proporciona la funcionalidad de hacer que las operaciones fuera de orden aparezcan para el programa como que han sido realizadas en orden, según se conoce bien en el estado de la técnica.
Preferiblemente, las direcciones que un programa de aplicación “ve” se mencionan con frecuencia como direcciones virtuales. Las direcciones virtuales se mencionan a veces como “direcciones lógicas” y “direcciones efectivas”. Estas direcciones virtuales son virtuales debido a que las mismas son redirigidas a una posición de memoria física por medio de una de una diversidad de tecnologías de traducción de dirección dinámica (DAT) que incluyen, aunque sin limitación, pre-fijar simplemente una dirección virtual con un valor de desviación, traducir la dirección virtual por medio de una o más tablas de traducción, comprendiendo preferiblemente las tablas de traducción al menos una tabla de segmento y una tabla de página, por sí solas o en combinación, preferiblemente, teniendo la tabla de segmento una entrada que apunta a la tabla de página. En z/Arquitectura, se proporciona una jerarquía de traducción que incluye una primera tabla de región, una segunda tabla de región, una tercera tabla de región, una tabla de segmento y una tabla de página opcional. El rendimiento de la traducción de dirección se mejora con frecuencia utilizando una memoria búfer de traducción anticipada (TLB) que comprende entradas de mapeo de una dirección virtual a una posición de memoria física asociada. Las entradas se crean cuando la DAT traduce una dirección virtual usando las tablas de traducción. El uso posterior de la dirección virtual puede utilizar entonces la entrada de la TLB rápida en vez de los accesos de tabla de traducción secuencial lenta. El contenido de la TLB puede ser gestionado por medio de una diversidad de algoritmos de sustitución que incluyen LRU (Recientemente Menos Usado).
En el caso de que el procesador sea un procesador de un sistema multi-procesador, cada procesador tiene la responsabilidad de mantener recursos compartidos, tal como E/S, cachés, TLBs y memoria, entrelazados por coherencia. Típicamente, las tecnologías “snoop” serán utilizadas en el mantenimiento de coherencia de caché. En un entorno snoop, cada línea de caché puede ser marcada como que está en uno cualquiera de un estado compartido, un estado exclusivo, un estado cambiado, un estado inválido y similares, con el fin de facilitar la compartición.
Unidades 5054 de E/S (Figura 19) dotan al procesador de medios para unirse a dispositivos periféricos incluyendo cinta, disco, impresoras, visualizadores, y redes, por ejemplo. Las unidades de E/S son presentadas con frecuencia al programa informático por controladores de software. En los ordenadores centrales, tales como el System z de IBM®, los adaptadores de canal y los adaptadores de sistema abierto son unidades de E/S del ordenador 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 ejemplo, un entorno puede incluir un emulador (p. ej., mecanismos de emulación de software u otros), en conde se emule una arquitectura particular (incluyendo, por ejemplo, ejecución de instrucción, funciones diseñadas y configuradas, tales como traducción de dirección, y registros diseñados y configurados) o un subconjunto de los mismos (por ejemplo, sobre un sistema informático nativo que tenga un procesador y una memoria). En un entorno de ese tipo, una o más funciones de emulación del emulador pueden implementar una o más realizaciones, incluso aunque un ordenador que ejecuta el emulador pueda tener una arquitectura diferente de las capacidades que están siendo emuladas. Como ejemplo, en modo de emulación, la instrucción específica u operación que esté siendo emulada se descodifica, y se construye una función de emulación apropiada para implementar la instrucción u operación individual.
En un entorno de emulación, un ordenador anfitrión incluye, por ejemplo, una memoria para almacenar instrucciones y datos; una unidad de búsqueda de instrucción para buscar instrucciones a partir de la memoria y para proporcionar, opcionalmente, memoria búfer local para la instrucción buscada; una unidad de descodificación de instrucción para recibir las instrucciones buscadas y para determinar el tipo de instrucciones que han sido buscadas; y, una unidad de ejecución de instrucción para ejecutar las instrucciones. La ejecución puede incluir cargar datos en un registro desde la memoria, almacenar datos de nuevo en la memoria desde un registro, o realizar algún tipo de operación aritmética o lógica, según sea determinado por la unidad de descodificación. En un ejemplo, cada unidad se implementa en software. Por ejemplo, las operaciones que son realizadas por las unidades se implementan como una o más rutinas dentro del software de emulador.
Más en particular, en un ordenador central, las instrucciones de máquina configurada son usadas por programadores, habitualmente en la actualidad programadores de “C”, con frecuencia a través de una aplicación de compilador. Estas instrucciones almacenadas en el medio de almacenaje pueden ser ejecutadas nativamente en un Servidor de z/Arquitectura de IBM®, o alternativamente en máquinas que ejecutan otras arquitecturas. Éstas pueden ser emuladas en servidores de ordenador central de IBM® actuales y futuros y en otras máquinas de IBM® (p. ej., servidores de Power Systems y System x Servers). Éstas pueden ser ejecutadas en máquinas que ejecutan Linux sobre una amplia diversidad de máquinas que usan hardware fabricado por IBM®, Intel®, AMD y otros. Además de la ejecución sobre ese hardware bajo una z/Arquitectura, se puede usar Linux así como máquinas que usen emulación mediante Hercules, UMX, o FSI (Fundamental Software, Inc.), donde generalmente la ejecución es un modo de emulación. En modo emulación, el software de emulación se ejecuta por medio de un procesador nativo para emular la arquitectura de un procesador emulado.
El procesador nativo típicamente ejecuta software de emulación que comprende ya sea firmware o ya sea un sistema operativo nativo para realizar emulación del procesador emulado. El software de emulación es responsable de buscar y ejecutar instrucciones de la arquitectura de procesador emulado. El software de emulación mantiene un contador de programa emulado para mantener el rastreo de límites de instrucción. El software de emulación puede buscar una o más instrucciones de máquina emulada en un instante y convertir las una o más instrucciones emuladas en un grupo correspondiente de instrucciones de máquina nativa para su ejecución por el procesador nativo. Estas instrucciones convertidas pueden ser almacenadas en caché de tal modo que se pueda realizar una conversión más rápida. No obstante, el software de emulación sirve para mantener las reglas de arquitectura de la arquitectura de procesador emulado con el fin de asegurar que los sistemas operativos y las aplicaciones escritas para el procesador emulado, operen correctamente. Además, el software de emulación sirve para proporcionar recursos identificados por la arquitectura del procesador emulado incluyendo, aunque sin limitación, registros de control, registros de propósito general, registros de punto flotante, función de traducción de dirección dinámica que incluye tablas de segmento y tablas de página por ejemplo, mecanismos de interrupción, mecanismos de conmutación de contexto, relojes de Hora y Día (TOD) e interfaces diseñadas y configuradas para subsistemas de E/S tal como un sistema operativo o un programa de aplicación diseñado para que se ejecute en el procesador emulado, pueda ser ejecutado en el procesador nativo que tenga el software de emulación.
Una instrucción específica que sea emulada se descodifica, y se llama a una subrutina para que realice la función de la instrucción individual. Se implementa una función de software de emulación que emula una función de un procesador emulado, por ejemplo, en una subrutina o controlador de “C”, o algún otro método de provisión de un controlador para el hardware específico según caerá dentro de la experiencia de los expertos en la materia tras la comprensión de la descripción de la realización preferida. Diversas patentes de emulación de software y de hardware que incluyen, aunque sin limitación, las Cartas de Patente de U.S. núm. 5.551.013, titulada “Multiprocesador para Emulación de Hardware”, de Beausoleil et al.; y las Cartas de Patente de U.S. núm.
6.009.261, titulada “Pre-procesamiento de Rutinas Objetivo Almacenadas para Emular Instrucciones Incompartibles sobre un Procesador Objetivo”, de Sclazi et al.; y las Cartas de Patente de U.S. núm. 5.574.873, titulada “Descodificación de Instrucción Huésped para Acceder Directamente a Rutinas de Emulación que Emulan las Instrucciones Huésped”, de Davidian et al.; y las Cartas de Patente de U.S. núm. 6.308.255, titulada “Bus Simétrico de Multiprocesamiento y Conjunto de Chips Usado para Soporte de Coprocesador que Permite que un Código No-Nativo se Ejecute en un Sistema”, de Gorishck et al.; y las Cartas de Patente de U.S. núm. 6.463.582, titulada “Traductor de Código de Objeto de Optimización Dinámica para Emulación de Arquitectura y Método de Traducción de Código de Objeto de Optimización Dinámica”, de Lethin et al.; y las Cartas de Patente núm. 5.790.825, titulada “Método para Emular Instrucciones Huésped en un Ordenador Anfitrión Mediante Re-compilación Dinámica de Instrucciones Anfitrión”, de Eric Traut; y muchas otras, ilustran una diversidad de formas conocidas de conseguir emulación de un formato de instrucción diseñado y configurado para una máquina diferente para una máquina objetivo disponible para los expertos en la materia.
En la Figura 21, se proporciona un ejemplo de sistema 5092 de ordenador anfitrión emulado que emula un sistema 5000' de ordenador anfitrión de una arquitectura de anfitrión. En el sistema 5092 de ordenador anfitrión emulado, el procesador anfitrión (CPU) 5091 es un procesador anfitrión emulado (o procesador anfitrión virtual) y comprende un procesador 5093 de emulación que tiene una arquitectura de conjunto de instrucción nativa diferente a la del procesador 5091 del ordenador 5000' anfitrión. El sistema 5092 de ordenador anfitrión emulado tiene memoria 5094 accesible para el procesador 5093 de emulación. En el ejemplo de realización, la memoria 5094 está particionada en una porción de memoria 5096 de ordenador anfitrión y una porción de rutinas 5097 de emulación. La memoria 5096 de ordenador anfitrión está disponible para programas del ordenador 5092 anfitrión emulado según la arquitectura de ordenador anfitrión. El procesador 5093 de emulación ejecuta instrucciones nativas de una instrucción diseñada y configurada de una arquitectura distinta a la del procesador 5091 emulado, con las instrucciones nativas obtenidas a partir de la memoria 5097 de rutinas de emulación, y puede acceder a la instrucción anfitrión para su ejecución desde un programa presente en la memoria 5096 de ordenador anfitrión empleando una o más instrucciones obtenidas en una rutina de secuencia & acceso/descodificación que puede descodificar la(s) instrucción(es) anfitrión accedidas para determinar una rutina de ejecución de instrucción nativa para emular la función de la instrucción anfitrión accedida. Otras instalaciones que han sido definidas para la arquitectura del sistema 5000' de ordenador anfitrión pueden ser emuladas por rutinas de instalaciones diseñadas y configuradas, incluyendo instalaciones tales como registros de propósito general, registros de control, traducción de dirección dinámica y soporte de subsistemas de E/S y caché de procesador, por ejemplo. Las rutinas de emulación tienen también las ventajas de funciones disponibles en el procesador 5093 de emulación (tal como registros generales y traducción dinámica de direcciones virtuales) para mejorar el rendimiento de las rutinas de emulación. También se pueden proporcionar motores especiales de hardware y de descarga para ayudar al procesador 5093 en la emulación de la función del ordenador 5000' anfitrión.
La terminología usada en la presente descripción se usa a efectos de describir realizaciones particulares solamente, y no se pretende que sea una limitación. Según se usa en la presente memoria, las formas en singular “un”, “una” y “el” está previsto que incluyan las formas en plural también, a menos que el contexto indique claramente otra cosa. Se comprenderá además que los términos “comprende” y/o “comprendiendo”, cuando se usan en la presente descripción, especifican la presencia de las características, números enteros, etapas, operaciones, elementos y/o componentes que se indican, pero no impiden la presencia o la adición de una o más de otras características, números enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Se ha presentado la descripción de una o más realizaciones con fines de ilustración y de descripción, pero no se pretende que sea exhaustiva o que se limite a la forma descrita. Muchas modificaciones y variaciones resultarán evidentes para los expertos en la materia. La realización fue elegida y descrita con el fin de explicar mejor los diversos aspectos y la aplicación práctica, y para permitir que otros expertos en la materia entiendan las diversas realizaciones con las diversas modificaciones que sean adecuadas para el uso particular contemplado.

Claims (6)

REIVINDICACIONES
1. - Un método para facilitar el procesamiento de transacciones dentro de un entorno de computación, comprendiendo dicho método:
obtener una instrucción (200) de inicio de transacción, comprendiendo la instrucción de inicio de transacción un opcode (202) que especifica una instrucción de inicio de transacción de un tipo particular, y un campo que especifica una máscara (210) de guardar de registro general que tiene una pluralidad de bits, cada uno de los cuales representa un par de registros par-impar generales, y cuando el bit tiene un valor el par de registro par-impar correspondiente se guarda y cuando el bit tiene el otro valor el par de registro par-impar correspondiente no se guarda, para que la instrucción de inicio de transacción inicie una transacción, y la máscara de guardar de registro general especifique explícitamente el uno o más pares de registro seleccionados de registros generales para ser guardados al comienzo de una transacción, donde la transacción retarda de manera efectiva la asignación de almacenamientos transaccionales a la memoria principal hasta que se haya completado una transacción seleccionada, y
ejecutar la instrucción de inicio de transacción, comprendiendo la ejecución de la instrucción de inicio de transacción determinar (1300) los pares de registro seleccionados para ser guardados y guardar (1302) el contenido de los uno o más pares de registro seleccionados de registros generales especificados explícitamente en la máscara de guardar de registro general de la instrucción de inicio de transacción, en donde guardar solamente guarda el contenido de los uno o más pares de registro seleccionados de registros generales especificados explícitamente en la máscara de guardar de registro general, e iniciar la ejecución de la transacción.
2. - El método de la reivindicación 1, en donde el método comprende además:
determinar (1304) que la transacción ha abortado, y
en base a la determinación de que la transacción ha abortado y al uno o más pares de registro seleccionados de registros generales especificados por la máscara de guardar de registro general, restablecer (1306) los uno o más pares de registro seleccionados.
3. - El método de la reivindicación 2, en donde guardar comprende copiar los contenidos de los uno o más pares de registro seleccionados de registros generales en una posición de memoria designada, y en donde restablecer comprende copiar el contenido desde la posición de memoria designada hasta los uno o más pares de registro seleccionados.
4. - El método de la reivindicación 1, en donde la instrucción es una instrucción de inicio de transacción anidada más externa de una transacción anidada, y en donde el método comprende además abortar una transacción de la transacción anidada, y en base al aborto y a los uno o más pares de registro seleccionados de registros generales que están especificados por la máscara de salvar de registro general, restablecer (1306) los uno o más pares de registro seleccionados a los contenidos guardados en base a la instrucción de inicio de transacción anidada más externa.
5. - Un sistema que comprende medios adaptados para llevar a cabo todas las etapas del método según cualquier reivindicación de método precedente.
6. - Un programa informático que comprende instrucciones para llevar a cabo todas las etapas del método según cualquiera de las reivindicaciones de método precedentes, cuando dicho programa informático se ejecuta en un sistema informático.
ES12878930T 2012-06-15 2012-11-26 Guardar/restablecer registros seleccionados en procesamiento transaccional Active ES2720133T3 (es)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
ES2720133T3 true ES2720133T3 (es) 2019-07-18

Family

ID=49757037

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12878930T Active ES2720133T3 (es) 2012-06-15 2012-11-26 Guardar/restablecer registros seleccionados en procesamiento transaccional

Country Status (24)

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

Families Citing this family (37)

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

Family Cites Families (234)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
ES2720133T3 (es) Guardar/restablecer registros seleccionados en procesamiento transaccional
US11080087B2 (en) Transaction begin/end instructions
US10684863B2 (en) Restricted instructions in transactional execution
ES2717480T3 (es) Control de manera selectiva de ejecución de instrucciones en procesamiento transaccional
ES2689560T3 (es) Bloque de diagnóstico de transacción
ES2719685T3 (es) Filtrado de interrupción de programa en ejecución transaccional
US9766925B2 (en) Transactional processing
US9336007B2 (en) Processor assist facility
BR112014031435B1 (pt) Teste randomizado dentro de execução transacional