BR112014031437B1 - Indicações de ramificação de execução transacional - Google Patents

Indicações de ramificação de execução transacional Download PDF

Info

Publication number
BR112014031437B1
BR112014031437B1 BR112014031437-3A BR112014031437A BR112014031437B1 BR 112014031437 B1 BR112014031437 B1 BR 112014031437B1 BR 112014031437 A BR112014031437 A BR 112014031437A BR 112014031437 B1 BR112014031437 B1 BR 112014031437B1
Authority
BR
Brazil
Prior art keywords
transaction
instruction
branch
program
abort
Prior art date
Application number
BR112014031437-3A
Other languages
English (en)
Other versions
BR112014031437A2 (pt
Inventor
Dan Greiner
Christian Jacobi
Timothy Slegel
Donald William Schmidt
Original Assignee
International Business Machines Corporation
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 Corporation filed Critical International Business Machines Corporation
Publication of BR112014031437A2 publication Critical patent/BR112014031437A2/pt
Publication of BR112014031437B1 publication Critical patent/BR112014031437B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61PSPECIFIC THERAPEUTIC ACTIVITY OF CHEMICAL COMPOUNDS OR MEDICINAL PREPARATIONS
    • A61P13/00Drugs for disorders of the urinary system
    • A61P13/12Drugs for disorders of the urinary system of the kidneys
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61PSPECIFIC THERAPEUTIC ACTIVITY OF CHEMICAL COMPOUNDS OR MEDICINAL PREPARATIONS
    • A61P9/00Drugs for disorders of the cardiovascular system
    • A61P9/12Antihypertensives
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • General Chemical & Material Sciences (AREA)
  • Medicinal Chemistry (AREA)
  • Pharmacology & Pharmacy (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Veterinary Medicine (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Organic Chemistry (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Chemical & Material Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Cardiology (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Urology & Nephrology (AREA)
  • Executing Machine-Instructions (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

indicações de ramificação de execução transacional. indicações de ramificação de execução transacional são colocadas em um ou mais blocos diagnósticos de transação quando uma transação é abortada. cada indicação de ramificação especifica se uma ramificação foi feita como um resultado de execução de uma instrução de ramificação dentro da transação. à medida que a transação é executada e uma instrução de ramificação é encontrada, uma indicação de ramificação está definida em um vetor que indica se a ramificação foi seguida. então, se a transação é abortada, os indicadores são armazenados em um ou mais blocos diagnósticos de transação que fornecem um histórico de ramificação utilizável no diagnóstico da falha.

Description

Antecedentes
[0001] Um ou mais aspectos se referem, em geral, a ambientes de computação de multiprocessamento e, em particular, ao processamento transacional dentro de tais ambientes de computação.
[0002] Um desafio permanente na programação de multiprocessador é aquele de atualizações no mesmo local de armazenamento por múltiplas unidades de processamento central (Central Processing Units - CPUs). Muitas instruções que atualizam locais de armazenamento, incluindo até mesmo operações lógicas simples, tal como AND, o fazem com múltiplos acessos ao local. Por exemplo, primeiro, o local de armazenamento é buscado e, então, o resultado atualizado é novamente armazenado.
[0003] Para que múltiplas CPUs atualizem com segurança o mesmo local de armazenamento, o acesso ao local é serializado. Uma instrução, a instrução TEST AND SET, introduzida com a arquitetura S/360 anteriormente oferecida pela International Business Machines Corporation, permitia uma atualização encadeada de um local de armazenamento. Atualização encadeada significa que, conforme observado por outras CPUs e o subsistema de entrada/saída (E/S) (por exemplo, subsistema de canal), todo o acesso ao armazenamento da instrução parece ocorrer atomicamente. Depois, a arquitetura S/370 oferecida pela International Business Machines Corporation introduziu as instruções COMPARE AND SWAP e COMPARE DOUBLE AND SWAP que constituem um meio mais sofisticado de realizar atualização encadeada e permitem a implementação daquilo que é comumente conhecido como uma palavra de bloqueio (ou semáforo). Instruções adicionadas recentemente têm fornecido capacidades de atualização encadeada adicionais, incluindo COMPARE AND SWAP AND PURGE e COMPARE AND SWAP AND STORE. No entanto, todas estas instruções permitem encadeamento para apenas um único local de armazenamento.
[0004] Técnicas de programas mais complexos podem requerer a atualização encadeada de múltiplos locais de armazenamento, tal como quando se adiciona um elemento a uma lista duplamente vinculada. Em tal operação, tanto um ponteiro progressivo quanto regressivo parecem ser simultaneamente atualizados, conforme observado por outras CPUs e o subsistema E/S. De modo a realizar tal atualização de múltiplos locais, o programa é forçado a usar um ponto de serialização único separado, tal como uma palavra de bloqueio. No entanto, palavras de bloqueio podem fornecer um nível de serialização muito mais grosseiro do que é necessário; por exemplo, as palavras de bloqueio podem serializar uma fila inteira de milhões de elementos, ainda que apenas dois elementos estejam sendo atualizados. O programa pode estruturar os dados para usar a serialização de grão mais fino (por exemplo, uma hierarquia de pontos de palavra de bloqueio), mas que introduz problemas adicionais, tais como potenciais situações de impasse se a hierarquia é violada e problemas de recuperação se o programa encontra um erro enquanto mantém uma ou mais bloqueios ou se a palavra de bloqueio não pode ser adquirida.
[0005] Além do acima, há inúmeras situações onde um programa pode executar uma sequência de instruções que podem ou não resultar em uma condição de exceção. Se não ocorre nenhuma condição de exceção, então, o programa continua; no entanto, se uma exceção é reconhecida, então, o programa pode tomar medidas corretivas para eliminar a condição de exceção. O Java, como um exemplo, pode explorar tal execução, por exemplo, em execução especulativa, inlining parcial de uma função e/ou novo sequenciamento de verificação nula de indicador.
[0006] Em ambientes de sistemas operacionais clássicos, tais como z/OS e seus antecessores oferecidos pela International Business Machines Corporation, o Programa estabelece um ambiente de recuperação para interceptar qualquer condição de exceção de programa que possa ser encontrada. Se o programa não intercepta a exceção, o sistema operacional, tipicamente, termina de forma anormal o programa para exceções com as quais o sistema operacional não está preparado para lidar. O estabelecimento e exploração de tal ambiente são caros e complicados.
Breve Sumário
[0007] As deficiências da técnica anterior são superadas e vantagens são fornecidas através do fornecimento de um produto de programa de computador para fornecer informação diagnóstica sobre transação anulada. O produto de programa de computador inclui um meio de armazenamento legível em computador legível por um circuito de processamento e instruções de armazenamento para execução pelo circuito de processamento para realização de um método. O método inclui, por exemplo, executar uma transação, a transação retardando efetivamente a confirmação de armazenamentos transacionais para a memória principal até conclusão de uma transação selecionada; com base na execução transacional, determinar se a transação inclui uma ou mais instruções de ramificação; com base na determinação para saber se a transação inclui ou mais instruções de ramificação, definir um ou mais indicadores que correspondem a uma ou mais instruções de ramificação, em que um indicador indica se uma ramificação foi feita; determinar que a transação foi abortada; e, com base na determinação de que a transação foi abortada, armazenamento dos um ou mais indicadores em um bloco diagnóstico de transação (Transaction Diagnostic Block - TDB) associado à transação.
[0008] Métodos e sistemas relacionados a uma ou mais concretizações também são descritos e reivindicados aqui. Além disso, os serviços relativos a uma ou mais concretizações também são descritos e podem ser reivindicados aqui.
[0009] Características e vantagens adicionais são obtidas. Outras concretizações e aspectos são descritos em detalhes aqui e são considerados como parte da invenção reivindicada.
Breve Descrição das Diversas Vistas dos Desenhos
[0010] Um ou mais aspectos são particularmente destacados e distintamente reivindicados como exemplos nas reivindicações ao final do relatório descritivo. Os objetivos, características e vantagens precedentes e outros são evidentes a partir da descrição detalhada a seguir, tomada em conjunto com os desenhos anexos, nos quais:
[0011] A figura 1 representa uma concretização de um ambiente de computação;
[0012] A figura 2A representa um exemplo de uma instrução TRANSACTION BEGIN (TBEGIN);
[0013] A figura 2B representa uma concretização mais detalhada de um campo da instrução TBEGIN da figura 2A;
[0014] A figura 3A representa um exemplo de uma instrução TRANSACTION BEGIN restrita (TBEGINC);
[0015] A figura 3B representa uma concretização mais detalhada de um campo da instrução TBEGINC da figura 3A;
[0016] A figura 4 representa um exemplo de uma instrução TRANSACTION END (TEND);
[0017] A figura 5 representa um exemplo de uma instrução Abortar Transação (TABORT);
[0018] A figura 6 representa um exemplo de transações agrupadas;
[0019] A figura 7 representa um exemplo de uma instrução NONTRANSACTIONAL STORE (NTSTG);
[0020] A figura 8 representa um exemplo de uma instrução EXTRACT TRANSACTION NESTING DEPTH (ETND);
[0021] A figura 9 representa um exemplo de um bloco diagnóstico de transação;
[0022] A figura 10 representa um exemplo de razões para abortar, juntamente com códigos de abortar e códigos de condição associados;
[0023] A figura 11 representa uma concretização da lógica associada à execução de uma instrução TBEGINC;
[0024] A figura 12 representa uma concretização da lógica associada à execução de uma instrução TBEGIN;
[0025] A figura 13 representa uma concretização da lógica associada à execução de uma instrução TEND;
[0026] A figura 14 representa uma concretização da lógica associada ao processamento de abortar transação;
[0027] A figura 15A representa uma concretização da lógica associada ao armazenamento seletivo de informação em um ou mais blocos diagnósticos de transação;
[0028] A figura 15B representa uma concretização da lógica associada ao fornecimento de indicações de ramificação;
[0029] As figuras 16A-16B representam um exemplo de inserção de um elemento de fila em uma lista duplamente vinculada de elementos de fila;
[0030] A figura 17 representa uma concretização de um produto de programa de computador;
[0031] A figura 18 representa uma concretização de um sistema de computador central;
[0032] A figura 19 representa um outro exemplo de um sistema de computador;
[0033] A figura 20 representa um outro exemplo de um sistema de computador que compreende uma rede de computadores;
[0034] A figura 21 representa uma concretização de vários elementos de um sistema de computador;
[0035] A figura 22A representa uma concretização da unidade de execução do sistema de computador da figura 21;
[0036] A figura 22B representa uma concretização da unidade de ramificação do sistema de computador da figura 21;
[0037] A figura 22C representa uma concretização da unidade de carregamento/armazenamento do sistema de computador da figura 21; e
[0038] A figura 23 representa uma concretização de um sistema de computador central emulado.
Descrição Detalhada
[0039] De acordo com um aspecto, é fornecida uma unidade de execução transacional (TX). Esta unidade permite processamento transacional para instruções e, em uma ou mais concretizações, oferece diferentes modos de execução, conforme descrito abaixo, bem como níveis agrupados de processamento transacional.
[0040] A unidade de execução transacional introduz um estado de CPU denominado o modo de execução transacional (TX). Após uma reinicialização da CPU, a CPU não está no modo TX. A CPU entra no modo TX através da instrução TRANSACTION BEGIN. A CPU sai do modo TX através de (a) uma instrução TRANSACTION END mais externa (maiores detalhes sobre interna e externa a seguir) ou (b) a operação sendo abortada. Enquanto no modo TX, acessos ao armazenamento pela CPU parecem ser bloco-concorrentes, conforme observado por outras CPUs e o subsistema E/S. Os acessos ao armazenamento são (a) confirmados para armazenamento quando a transação mais externa termina sem abortar (ou seja, por exemplo, atualizações feitas em um cache ou buffer local para a CPU são propagadas e armazenadas na memória real e visíveis para outras CPUs) ou (b) descartados se a transação é abortada.
[0041] As transações podem ser agrupadas. Ou seja, enquanto a CPU está no modo TX, ela pode executar outra instrução TRANSACTION BEGIN. A instrução que faz com que a CPU entre no modo TX é denominada de TRANSACTION BEGIN mais externa; similarmente, o programa é dito como estando na transação mais externa. Subsequentes execuções de TRANSACTION BEGIN são denominadas instruções internas; e o programa está executando uma transação interna. O modelo fornece uma profundidade de aninhamento mínima e uma profundidade de aninhamento máxima dependentes de modelo. Uma instrução EXTRACT TRANSACTION NESTING DEPTH retorna o valor de profundidade de aninhamento atual e, em uma outra concretização, pode retornar um valor de profundidade de aninhamento máxima. Esta técnica usa um modelo denominado "aninhamento nivelado", no qual uma condição de abortar em qualquer profundidade de aninhamento faz com que todos os níveis da transação sejam abortados e o controle é retornado para a instrução após TRANSACTION BEGIN mais externa.
[0042] Durante o processamento de uma transação, um acesso transacional feito por uma CPU é dito como em conflito com (a) um acesso transacional ou acesso não transacional feito por outra CPU ou (b) um acesso não transacional feito pelo subsistema E/S se ambos os acessos estão em qualquer local dentro da mesma linha de cache e um ou ambos os acessos são um armazenamento. Em outras palavras, para que a execução transacional seja produtiva, a CPU não deve ser observada fazendo acessos transacionais até confirmação. Este modelo de programação pode ser altamente eficaz em determinados ambientes; por exemplo, a atualização dos dois pontos em uma lista duplamente vinculada de um milhão de elementos. No entanto, ele pode ser menos eficaz se há uma grande quantidade de contenção para os locais de armazenamento que estão sendo acessados para transação.
[0043] Em um modelo de execução transacional (dita aqui como uma transação não restrita), quando uma transação é abortada, o programa pode tentar reiniciar a transação na esperança de que a condição para abortar já não esteja presente ou o programa pode "cair" em um caminho não transacional equivalente. Em um outro modelo de execução transacional (dito aqui como uma transação restrita), uma transação abortada é automaticamente reiniciada pela CPU; na ausência de violações de restrição, a transação restrita é assegurada até uma eventual conclusão.
[0044] Quando se inicia uma transação, o programa pode especificar vários controles, tais como (a) quais registros gerais são restaurados para seus conteúdos originais se a transação é abortada, (b) se a transação tem permissão para modificar o contexto de ponto de registro flutuante incluindo, por exemplo, registros de ponto flutuante e o registro de controle de ponto flutuante, (c) se a transação tem permissão para modificar os registros de acesso (Acess Registers - ARs) e (d) se determinadas condições de exceção de programa estão sendo restritas ao causar uma interrupção. Se uma transação não restrita é abortada, várias informações diagnósticas podem ser fornecidas. Por exemplo, a instrução TBEGIN mais externa que inicia uma transação não restrita pode designar um bloco diagnóstico de transação (Transaction Diagnostic Block - TDB) de programa especificado. Além disso, o TDB na área de prefixo da CPU ou designado pela descrição de estado do host pode também ser usado se a transação é abortada em virtude de uma interrupção de programa ou uma condição que faz com que a execução interpretativa termine, respectivamente.
[0045] São indicados acima são vários tipos de registros. Estes são explicados mais detalhadamente aqui. Registros gerais podem ser usados como acumuladores em operações lógicas e aritméticas em geral. Em uma concretização, cada registro contém posições de 64 bits e há 16 registradores gerais. Os registros gerais são identificados pelos números 0-15 e são designados por um campo R de quatro bits em uma instrução. Algumas instruções permitem abordar vários registros gerais ao ter vários campos R. Para algumas instruções, o uso de um registro geral específico está implícito, em vez de explicitamente designado por um campo R da instrução.
[0046] Além de seu uso como acumuladores em operações lógicas e aritméticas em geral, 15 dos 16 registros gerais também são usados como endereço de base e registros de índice na geração de endereço. Nestes casos, os registros são designados por um campo B ou campo X de quatro bits em uma instrução. Um valor de zero no campo B ou X especifica que nenhuma base ou índice deve ser aplicado e, assim, o registro geral 0 não deve ser designado como contendo um endereço de base ou índice.
[0047] Instruções de ponto flutuante usam um conjunto de registros de ponto flutuante. A CPU 16 tem registros de ponto flutuante em uma concretização. Os registros de ponto flutuante são identificados pelos números 0-15 e são designados por um campo R de quatro bits em instruções de ponto flutuante. Cada registrador de ponto flutuante tem 64 bits de comprimento e pode conter um operando de ponto flutuante curto (32 bits) ou longo (64 bits).
[0048] Um registro de controle de ponto flutuante (Floating Point Control - FPC) é um registro de 32 bits que contém bits mask, bits flag, um código de exceção de dados e bits de modo de arredondamento, e é usado durante processamento de operações de ponto flutuante.
[0049] Além disso, em uma concretização, a CPU 16 tem registros de controle, cada um tendo posições de 64 bits. As posições de bits nos registros são atribuídas a unidades particulares no sistema, tal como Registro de Eventos de Programas (Program Event Recording - PER) (discutida abaixo), e são usadas para especificar que uma operação pode ocorrer ou fornecer informação especial requerida pela unidade. Em uma concretização, para a unidade transacional, CR0 (8 e 9 bits) e CR2 (61-63 bits) são usados, conforme descrito abaixo.
[0050] A CPU tem, por exemplo, 16 registros de acesso numerados de 0-15. Um registro de acesso consiste em posições de 32 bits que contêm uma especificação indireta de um elemento de controle de espaço de endereço (Address Space Control Element - ASCE). Um elemento de controle de espaço de endereço é um parâmetro usado pelo mecanismo de tradução dinâmica de endereços (Dynamic Address Translation - DAT) para traduzir referências a um espaço de endereço correspondente. Quando a CPU está em um modo denominado modo de registro de acesso (controlado por bits na palavra de estado de programa (Program Status Word - PSW)), um campo de instrução B, usado para especificar um endereço lógico para uma referência de operando de armazenamento, designar um registro de acesso e o elemento de controle espaço de endereço especificado pelo registro de acesso é usado pela DAT a referência que está sendo feita. Para algumas instruções, um campo R é usado em vez de um campo B. São fornecidas instruções para carregamento e armazenamento dos conteúdos dos registros de acesso e para mover o conteúdo de um registro de acesso para outro.
[0051] Cada um dos registros de acesso 1-15 pode designar qualquer espaço de endereço. O registro de acesso 0 designa o espaço de instrução primário. Quando um dos registros de acesso 1-15 é usado para designar um espaço de endereço, a CPU determina qual espaço de endereço é designado ao traduzir o conteúdo do registro de acesso. Quando o registro de acesso 0 é usado para designar um espaço de endereço, a CPU trata o registro de acesso como designando o espaço de instrução primário e não examina os conteúdos reais do registro de acesso. Portanto, o registro de acesso 16 pode designar, a qualquer momento, o espaço de instrução primário e um máximo de 15 outros espaços.
[0052] Em uma concretização, há múltiplos tipos de espaços de endereço. Um espaço de endereço é uma sequência consecutiva de números inteiros (endereços virtuais), juntamente com os parâmetros de transformação específicos que permitem que cada número seja associado a uma posição de byte de armazenamento. A sequência começa em zero e progride da esquerda para a direita.
[0053] Por exemplo, na z/Architecture, quando um endereço virtual é usado por uma CPU para acessar o armazenamento principal (também conhecido como memória principal), ele é primeiro convertido, por meio de tradução dinâmica de endereços (DAT), para um endereço real e, então, por meio de um prefixação, para um endereço absoluto. A DAT pode usar de um a cinco níveis de tabelas (página, segmento, terceira região, segunda região e primeira região) como parâmetros de transformação. A designação (origem e comprimento) da tabela de maior nível para um espaço de endereço específico é denominada um elemento de controle espaço de endereço e é encontrada para uso pela DAT em um registro de controle ou conforme especificado por um registro de acesso. Alternativamente, o elemento de controle de espaço de endereço para um espaço de endereço pode ser uma designação de espaço real, a qual indica que a DAT é para traduzir o endereço virtual simplesmente ao tratá-lo como um endereço real e sem usar quaisquer tabelas.
[0054] A DAT usa, em momentos diferentes, os elementos de controle de espaço de endereço em diferentes registros de controle ou especificados pelos registros de acesso. A escolha é determinada pelo modo de tradução especificado na PSW atual. Quatro modos de tradução estão disponíveis: o modo de espaço primário, o modo de espaço secundário, o modo de registro de acesso e o modo de espaço home. Diferentes espaços de endereços são endereçáveis, dependendo do modo de tradução.
[0055] A qualquer momento quando a CPU está no modo de espaço primário ou modo de espaço secundário, a CPU pode traduzir endereços virtuais pertencentes a dois espaços de endereços - o espaço de endereço primário e o espaço de endereço secundário. A qualquer instante quando a CPU está no modo de acesso de registro, ela pode traduzir endereços virtuais de até 16 espaços de endereços - o espaço de endereço primário e até 15 espaços de endereço AR- especificados. A qualquer instante quando a CPU está no modo de espaço home, ela pode traduzir endereços virtuais do espaço de endereço de home.
[0056] O espaço de endereço primário é identificado como tal porque ele consiste em endereços virtuais primários, os quais são traduzidos por meio do elemento de controle de espaço de endereço primário (ASCE). Similarmente, o espaço de endereço secundário consiste em endereços virtuais secundários traduzidos por meio do ASCE secundário; os espaços de endereço AR-especificados consistem em endereços virtuais AR-especificados traduzidos por meio de ASCEs AR-especificados; e o espaço de endereço home consiste em endereços virtuais home traduzidos por meio do ASCE home. Os ASCEs primário e secundários estão nos registros de controle 1 e 7, respectivamente. Os ASCEs AR-especificados estão em entradas de tabela de ASN secundária que são localizadas através de um processo denominado tradução de registro de acesso (Access Register Translation - ART) que usa registros de controle 2, 5 e 8. O ASCE home está no registro de controle 13.
[0057] Uma concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da unidade transacional descrita aqui é descrita com referência à figura 1.
[0058] Com referência à figura 1, em um exemplo, o ambiente de computação 100 é com base na z/Architecture, oferecida pela International Business Machines (IBMR) Corporation, Armonk, New York. A z/Architecture é descrita em uma publicação intitulada "z/Architecture -Principles of Operation", Publicação N° SA22-7932-08, 9a Edição, agosto de 2010.
[0059] Z/ARCHrrECTURE, IBM, e Z/OS e Z/VM (citados abaixo) são marcas registradas da International Business Machines Corporation, Armonk, New York. Outros nomes usados aqui podem ser marcas registradas, marcas ou nomes de produtos da International Business Machines Corporation ou de outras empresas.
[0060] Como um exemplo, o ambiente de computação 100 inclui um complexo processador central (Central Processor Complex - CPC) 102 acoplado a um ou mais dispositivos de entrada/saída (E/S) 106 através de uma ou mais unidades de controle 108. O complexo processador central 102 inclui, por exemplo, um ou mais processadores centrais 110, uma ou mais partições 112 (por exemplo, partições lógicas (Logical Partition - LP)), um hipervisor de partição lógica 114 e um subsistema de entrada/saída 115, cada um dos quais é descrito abaixo.
[0061] Processadores centrais 110 são recursos de processador físico alocados às partições lógicas. Em particular, cada partição lógica 112 tem um ou mais processadores lógicos, cada um dos quais representa a totalidade ou uma parte de um processador físico 110 alocado à partição. Os processadores lógicos de uma partição 112 particular podem ser ou dedicados à partição, de modo que o recurso de processador 110 subjacente está reservado para esta partição; ou compartilhados com outra partição, de modo que o recurso de processador subjacente está potencialmente disponível para outra partição.
[0062] Uma partição lógica funciona como um sistema separado e tem uma ou mais aplicações e, opcionalmente, um sistema operacional residente na mesma, o qual pode ser diferente para cada partição lógica. Em uma concretização, o sistema operacional é o sistema operacional z/OS, o sistema operacional z/VM, o sistema operacional z/Linux ou o sistema operacional TPF, oferecidos pela International Business Machines Corporation, Armonk, New York. As partições lógicas 112 são geridas por um hipervisor de partição lógica 114, o qual é implementado por firmware executado nos processadores 110. Conforme usado aqui, firmware inclui, por exemplo, o microcódigo e/ou milicódigo do processador. Ele inclui, por exemplo, as instruções a nível de hardware e/ou estruturas de dados usadas na implementação de um código de máquina de maior nível. Em uma concretização, ele inclui, por exemplo, o código proprietário que é tipicamente distribuído como microcódigo que inclui um software confiável ou microcódigo específico para o hardware subjacente e controla o acesso do sistema operacional ao hardware do sistema.
[0063] As partições lógicas e hipervisor de partição lógica compõem, cada um, um ou mais programas residentes nas respectivas partições de armazenamento central associadas aos processadores centrais. Um exemplo de hipervisor partição lógica 114 é o recurso Processor Resource/System Manager (PR/SM), oferecido pela International Business Machines Corporation, Armonk, New York.
[0064] O subsistema de entrada/saída 115 direciona o fluxo de informações entre dispositivos de entrada/saída 106 e armazenamento principal (também conhecido como memória principal). Ele é acoplado ao complexo de processamento central pelo fato de que ele pode ser uma parte do complexo de processamento central ou separado do mesmo. O subsistema E/S alivia os processadores centrais da tarefa de se comunicar diretamente com os dispositivos de entrada/saída e permite que processamento de dados ocorra simultaneamente com o processamento de entrada/saída. Para permitir comunicações, o subsistema E/S emprega adaptadores de comunicação E/S. Há vários tipos de adaptadores de comunicação incluindo, por exemplo, canais, adaptadores E/S, placas PCI, placas Ethernet, cartões Small Computer Storage Interface (SCSI), etc. No exemplo particular descrito aqui, os adaptadores de comunicação E/S são canais e, portanto, o subsistema E/S é dito aqui como um subsistema de canal. No entanto, ou seja apenas um exemplo. Podem ser usados outros tipos de subsistemas E/S.
[0065] O subsistema E/S usa um ou mais caminhos de entrada/saída como links de comunicação no gerenciador de fluxo de informações para ou a partir dos dispositivos de entrada/saída 106. Neste exemplo particular, estes caminhos são denominados caminhos de canal, uma vez que os adaptadores de comunicação são canais.
[0066] O ambiente de computação descrito acima é apenas um exemplo de um ambiente de computação que pode ser usado. Outros ambientes incluindo, porém sem restrições, ambientes não particionados, outros ambientes particionados e/ou ambientes emulados podem ser usados; as concretizações não estão restritas a qualquer ambiente.
[0067] De acordo com um ou mais aspectos, a unidade de execução transacional é um aprimoramento de CPU que fornece os meios pelos quais a CPU pode executar uma sequência de instruções - conhecida como uma transação - que pode acessar múltiplos locais de armazenamento, incluindo a atualização destes locais. Conforme observado por outras CPUs e o subsistema E/S, a transação é (a) concluída em sua totalidade como uma única operação atômica ou (b) abortada, não deixando potencialmente nenhuma evidência de que ela tenha sido executada (exceto para determinadas condições descritas aqui). Assim, uma transação concluída com êxito pode atualizar numerosos locais de armazenamento, sem qualquer bloqueio especial que é necessário no modelo de multiprocessamento clássico.
[0068] A unidade de execução transacional inclui, por exemplo, um ou mais controles; uma ou mais instruções; processamento transacional, incluindo transação restrita e não restrita; e processamento de abortar, cada um dos quais é ainda descrito abaixo.
[0069] Em uma concretização, três controles de finalidades especiais, incluindo uma Palavra de Estado de Programa (PSW) de abortar transação, um endereço de bloco diagnóstico de transação (TDB) e uma profundidade de aninhamento de transação; cinco bits de registro de controle; e seis instruções gerais, incluindo TRANSACTION BEGIN (bloqueada e não restrita), TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT e NONTRANSACTIONAL STORE, são usadas para controlar a unidade de execução transacional. Quando a unidade está instalada, ela é instalada, por exemplo, em todas as CPUs na configuração. Uma indicação de unidade, o bit 73 em uma aplicação, quando um, indica que a unidade de execução transacional está instalada.
[0070] Quando a unidade de execução transacional está instalada, a configuração fornece uma unidade de execução transacional não restrita e, opcionalmente, uma unidade de execução transacional restrita, cada uma das quais é descrita abaixo. Quando indicações de unidade 50 e 73, como exemplos, são ambos um, a unidade de execução transacional restrita está instalada. Ambas as indicações de unidades são armazenadas na memória em locais específicos.
[0071] Conforme usado aqui, o nome de instrução TRANSACTION BEGIN se refere a instruções que têm a mneumônica TBEGIN (Iniciar Transação para uma transação não restrita) e TBEGINC (Iniciar Transação para uma transação restrita). As discussões referentes a uma instrução específica são indicadas pelo nome da instrução seguido pela mneumônica entre parênteses ou colchetes, ou simplesmente pela mneumônica.
[0072] Uma concretização de um formato de uma instrução TRANSACTION BEGIN (TBEGIN) está representada nas figuras 2A-2B. Como um exemplo, uma instrução TBEGIN 200 inclui um campo de código de operação 202 que inclui um código de operação que especifica uma operação de iniciar transação não restrita; um campo de base (B1) 204; um campo de deslocamento (D1) 206; e um campo imediato (I2) 208. Quando o campo B1 é diferente de zero, os conteúdos do registro geral especificado por B1 204 são adicionados em D1 206 para se obter o primeiro endereço de operando.
[0073] Quando o campo B1 é diferente de zero, o seguinte se aplica:
[0001] Quando a profundidade de aninhamento de transação é inicialmente zero, o primeiro endereço de operando designa o local do bloco diagnóstico de transação no 256 byte, denominado o TDB TBEGIN-especificado (descrito mais adiante), no qual várias informações diagnósticas podem ser armazenadas se a operação é abortada. Quando a CPU está no modo de espaço primário ou no modo de registro de acesso, o primeiro endereço de operando designa um local no espaço de endereço primário. Quando a CPU está no modo de espaço secundário ou no modo de espaço home, o primeiro endereço de operando designa um local no espaço de endereço secundário ou home, respectivamente. Quando a DAT está desligada, o endereço do bloco diagnóstico de transação (TDB) (Transaction Diagnostic Block Address - TDBA) designa um local no armazenamento real.
[0074] A acessibilidade ao armazenamento para o primeiro operando é determinada. Se acessível, o endereço lógico do operando é colocado no endereço de bloco diagnóstico de transação (TDBA) e o TDBA é válido.
[0001] Quando a CPU já está no modo de execução transacional não restrita, o TDBA não é modificado e não se pode prever se o primeiro operando é testado quanto à acessibilidade.
[0075] Quando o campo B1 é zero, nenhuma exceção de acesso é detectada para o primeiro operando e, para a instrução TBEGIN mais externa, o TDBA é inválido.
[0076] Os bits do campo I2 são definidos como segue, em um exemplo:
[0077] Máscara de Salvamento de Registro Geral (General Register Save Mask - GRSM) 210 (figura 2B): Bits 0-7 do campo I2 contêm a Máscara de Salvamento de Registro Geral (General Register Save Mask - GRSM). Cada bit da GRSM representa um par par-ímpar de registros gerais, onde o bit 0 representa registros 0 e 1, bit 1 representa os registros 2 e 3 e assim por diante. Quando um bit na GRSM da instrução TBEGIN mais externa é zero, o par de registro correspondente não é salvo. Quando um bit na GRSM de instrução TBEGIN mais externa é um, o par de registro correspondente é salvo em um local depende de modelo que não é diretamente acessível pelo programa.
[0078] Se a transação é abortada, pares de registro salvos são restaurados para seus conteúdos quando a instrução TBEGIN mais externa foi executada. Os conteúdos de todos os outros registros gerais (não salvos) não são restaurados quando uma transação é abortada.
[0079] A máscara de salvamento de registro geral é ignorada em todas as TBEGINs, exceto para a mais externa.
[0080] Permitir Modificação de AR (A) 212: O controle A, no bit 12 do campo I2, controla se a transação tem permissão para modificar um registro de acesso. O controle permitir modificação de AR efetivo é a lógica AND do controle A na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis externos.
[0081] Se o controle A efetivo é zero, a transação será abortada com o código de interrupção 11 (instrução restrita) se é feita uma tentativa de modificar qualquer registro de acesso. Se o controle A efetivo é um, a transação não será abortada se um registro de acesso é modificado (ausente de qualquer outra condição de abortar).
[0082] Permitir Operação de Ponto Flutuante (F) 214: O controle F, no bit 13 do campo I2, controla se a transação tem permissão para executar instruções de ponto flutuante especificadas. O controle permitir operação de ponto flutuante efetivo é a lógica AND do controle F na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis externos.
[0083] Se o controle efetivo F é zero, então, (a) a operação será abortada com o código de abortar 11 (instrução restrita) se é feita uma tentativa de executar uma instrução de ponto flutuante e (b) o código de exceção de dados (DXC) no byte 2 do registro de controle de ponto flutuante (Floating Point Control Register - FPCR) não será definido por qualquer condição de exceção de programa por exceção de dados. Se o controle F efetivo é um, então, (a) a operação não será abortada se é feita uma tentativa para executar uma instrução de ponto flutuante (na ausência de qualquer outra condição de abortar) e (b) o DXC no FPCR pode ser definido pela uma condição de exceção de programa por exceção de dados.
[0084] Controle de Filtragem de Interrupção de Programa (PIFC) 216: Os bits 14-15 do campo I2 são o controle de filtragem de interrupção de programa (Program Interruption Filtering Control - PIFC). O PIFC controla se determinadas classes de condições de exceção de programa (por exemplo, exceção de endereço, exceção de dados, exceção de operação, exceção de proteção, etc.) que ocorrem enquanto a CPU está no modo de execução transacional resultam em uma interrupção.
[0085] O PIFC efetivo é o maior valor do PIFC na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis externos. Quando o PIFC efetivo é zero, todas as condições de exceção de programa resultam em uma interrupção. Quando o PIFC efetivo é um, condições de exceção de programa tendo uma classe de execução transacional de 1 e 2 resultam em uma interrupção. (Cada condição de exceção de programa é atribuída a pelo menos uma classe de execução transacional, dependendo da gravidade da exceção. A gravidade se baseia na probabilidade de recuperação durante uma execução repetida da execução transacional e se o sistema operacional precisa ver a interrupção). Quando o PIFC efetivo é dois, condições de exceção de programa tendo uma classe de execução transacional de 1 resultam em uma interrupção. Um PIFC de 3 é reservado.
[0086] Os bits 8-11 do campo I2 (bits 40-43 da instrução) são reservados e conterão zeros; caso contrário, o programa pode não operar a compatibilidade no futuro.
[0087] Uma concretização de um formato de uma instrução TRANSACTION BEGIN restrita (TBEGINC) é descrito com referência às figuras 3A-3B. Em um exemplo, TBEGINC 300 inclui um campo de código de operação 302 que inclui um código de operação que especifica uma operação de iniciar a transação restrita; um campo de base (B1) 304; um campo de deslocamento (D1) 306; e um campo imediato (I2) 308. Os conteúdos do registro geral especificado por B1 304 são adicionados em D1 306 para se obter o primeiro endereço de operando. No entanto, com a instrução iniciar transação restrita, o primeiro endereço de operando não é usado para acessar o armazenamento. Em vez disso, o campo B1 da instrução inclui zeros; caso contrário, uma exceção de especificação é reconhecida.
[0088] Em uma concretização, o campo I2 inclui vários controles, um exemplo dos quais é representado na figura 3B.
[0089] Os bits do campo I2 são definidos como segue, em um exemplo:
[0090] Máscara de Salvamento de Registro Geral (General Register Save Mask - GRSM) 310: Os bits 0-7 do campo I2 contêm a Máscara de Salvamento de Registro Geral (General Register Save Mask - GRSM). Cada bit da GRSM representa um par par-ímpar de registros gerais, onde o bit 0 representa registros 0 e 1, bit 1 representa os registros 2 e 3 e assim por diante. Quando um bit na GRSM é zero, o par de registro correspondente não é salvo. Quando um bit na GRSM é um, o par de registro correspondente é salvo em um local depende de modelo que não é diretamente acessível pelo programa.
[0091] Se a transação é abortada, pares de registro salvos são restaurados para seus conteúdos quando a instrução TRANSACTION BEGESf mais externa foi executada. Os conteúdos de todos os outros registros gerais (não salvos) não são restaurados quando uma transação restrita é abortada.
[0092] Quando TBEGINC é usada para continuar a execução no modo de execução de transação não restrita, a máscara de salvamento de registro geral é ignorada.
[0093] Permitir Modificação de AR (A) 312: O controle A, no bit 12 do campo I2, controla se a transação tem permissão para modificar um registro de acesso. O controle permitir modificação de AR efetivo é a lógica AND do controle A na instrução TBEGINC para o nível de aninhamento atual e para quaisquer instruções TBEGIN ou TBEGINC externas.
[0094] Se o controle A efetivo é zero, a transação será abortada com o código de interrupção 11 (instrução restrita) se é feita uma tentativa de modificar qualquer registro de acesso. Se o controle A efetivo é um, a transação não será abortada se um registro de acesso é modificado (ausente de qualquer outra condição de abortar).
[0095] Os bits 8-11 e 13-15 do campo I2 (bits 40-43 e 45-47 da instrução) são reservados e deverão conter zeros.
[0096] O término de uma instrução iniciar transação é especificado por uma instrução TRANSACTION END (TEND), um formato da qual é representado na figura 4. Como um exemplo, uma instrução TEND 400 inclui um campo de código de operação 402 que inclui um código de operação que especifica uma operação de término de transação.
[0097] Uma série de termos são usados em relação à unidade de execução transacional e, portanto, apenas por conveniência, uma lista de termos é fornecida abaixo em ordem alfabética. Em uma concretização, estes termos têm a seguinte definição:
[0098] Abortar: Uma transação é abortada quando é ela encerrada antes de uma instrução TRANSACTION END que resulta em uma profundidade de aninhamento de transação de zero. Quando uma transação é abortada, ocorre o seguinte, em uma concretização:
[0001] Acessos ao armazenamento transacional feitos por qualquer e todos os níveis da transação são descartados (ou seja, não confirmados).
[0002] Acessos ao armazenamento não transacional feitos por qualquer e todos os níveis da transação são confirmados.
[0003] Registros designados pela máscara de salvamento de registro geral (GRSM) da instrução TRANSACTION BEGIN mais externa são restaurados para seus conteúdos antes da execução transacional (ou seja, para seus conteúdos em execução da instrução TRANSACTION BEGIN mais externa). Registros gerais não designados pela máscara de salvamento de registro geral da instrução TRANSACTION BEGIN mais externa não são restaurados.
[0004] Registros de acesso, registros de ponto flutuante e o registro de controle de ponto flutuante não são restaurados. Quaisquer alterações feitas nestes registros durante a execução transacional são mantidas quando a transação é abortada.
[0099] Uma transação pode ser abortada em virtude de uma variedade de razões, incluindo tentativa de execução de uma instrução restrita, tentativa de modificação de um recurso restrito, conflito transacional, exceder vários recursos da CPU, qualquer condição de intercepção interpretativa de execução, qualquer interrupção, uma instrução TRANSACTION ABORT e outras razões. Um código de abortar transação fornece razões específicas pelas quais uma transação pode ser abortada.
[0100] Um exemplo de um formato de uma instrução TRANSACTION ABORT (TABORT) é descrito com referência à figura 5. Como um exemplo, uma instrução TABORT 500 inclui um campo de código de operação 502 que inclui um código de operação que especifica uma operação de abortar transação; um campo de base (B2) 504; e um campo de deslocamento (D2) 506. Quando o campo B2 é diferente de zero, os conteúdos do registro geral especificado por B2 504 são adicionados a D2 506 para obter um segundo endereço de operando; caso contrário, o segundo endereço de operando é formado unicamente a partir do campo D2 e o campo B2 é ignorado. O segundo endereço de operando não é usado para o envio de dados; em vez disso, o endereço forma o código de abortar transação, o qual é colocado em um bloco diagnóstico de transação durante processamento de abortar. A computação de endereço para o segundo endereço de operando segue as regras da aritmética de endereço: no modo de endereçamento de 24 bits, os bits 0-29 são definidos como zeros; no modo de endereçamento de 31 bits, os bits 0-32 são definidos como zeros.
[0101] Confirmar (Commit): Na conclusão de uma instrução TRANSACTION END mais externa, a CPU confirma os acessos ao armazenamento feitos pela transação (ou seja, a transação mais externa e quaisquer níveis agrupados), de modo que eles são visíveis para outras CPUs e o subsistema E/S. Conforme observado por outras CPUs e pelo subsistema E/S, todos os acessos de busca e armazenamento feitos por todos os níveis agrupados da transação parecem ocorrer como uma única operação simultânea quando uma confirmação ocorre.
[0102] Os conteúdos dos registros gerais, registros de acesso, registros de ponto flutuante e o registro de controle de ponto flutuante não são modificados pelo processo de confirmação. Quaisquer alterações feitas nestes registros durante a execução transacional são mantidas quando os armazenamentos da transação são confirmados.
[0103] Conflito: Um acesso transacional realizado por uma CPU está em conflito com (a) um acesso transacional ou acesso não transacional feito por outra CPU ou (b) o acesso não transacional feito pelo subsistema E/S, se ambos acessos estão em qualquer local dentro da mesma linha de memória cache e um ou mais dos acessos é um armazenamento.
[0104] Um conflito pode ser detectado por uma execução de instruções especulativa de uma CPU, mesmo embora o conflito não possa ser detectado na sequência conceitual.
[0105] Transação restrita: Uma transação restrita é uma transação que é executada no modo de execução transacional restrita e está sujeita às seguintes restrições:
[0001] Um subconjunto das instruções gerais está disponível.
[0002] Um número restrito de instruções podem ser executadas.
[0003] Um número restrito de locais operando de armazenamento pode ser acessado.
[0004] A transação está restrita a um único nível de aninhamento.
[0106] Na ausência de interrupções repetidas ou conflitos com outras CPUs ou o subsistema E/S, uma transação restrita eventualmente é concluída, assim, não é necessária uma rotina de gerenciador de abortar. Transações restritas operações são descritas em detalhes abaixo.
[0107] Quando uma instrução TRANSACTION BEGIN restrita (TBEGINC) é executada enquanto a CPU já está no modo de execução transacional não restrita, a execução continua como uma transação não restrita agrupada.
[0108] Modo de Execução Transacional restrita: Quando a profundidade de aninhamento de transação é zero e uma transação é iniciada por uma instrução TBEGINC, a CPU entra no modo de execução transacional restrita. Enquanto a CPU está no modo de execução transacional restrita, a profundidade de aninhamento de transação é um.
[0109] Transação Agrupada: Quando a instrução TRANSACTION BEGIN é emitida enquanto a CPU está no modo de execução transacional não restrita, a transação é agrupada.
[0110] A unidade de execução transacional usa um modelo denominado aninhamento nivelado. No modo de aninhamento nivelado, armazenamentos feitos por uma transação interna não são observáveis por outras CPUs e pelo subsistema E/S até que a transação mais externa confirme seus armazenamentos. Similarmente, se uma transação é abortada, todas as transações agrupadas são abortadas e todos os armazenamentos transacionais de todas as transações agrupadas são descartados.
[0111] Um exemplo de transações agrupadas é representado na figura 6. Conforme mostrado, uma primeira TBEGIN 600 começa uma transação mais externa 601, TBEGIN 602 começa a primeira transação agrupada e TBEGIN 604 começa uma segunda transação agrupada. Neste exemplo, TBEGIN 604 e TEND 606 definem uma transação mais interna 608. Quando TEND 610 é executada, armazenamentos transacionais são confirmados 612 para a transação mais externa e todas as transações internas.
[0112] Transação não restrita: Uma transação não restrita é uma transação que é executada no modo de execução transacional não restrita. Embora uma transação não restrita não seja restrita da maneira como uma transação restrita, ela ainda pode ser abortada em virtude de uma variedade de razões.
[0113] Modo de Execução Transacional não restrita: Quando uma transação é iniciada pela instrução TBEGIN, a CPU entra no modo de execução transacional não restrita. Enquanto a CPU está no modo de execução transacional não restrita, a profundidade de aninhamento de transação pode variar de um para a profundidade máxima de aninhamento de transação.
[0114] Acesso Não Transacional: Acessos não transacionais são acessos de operando de armazenamento feitos pela CPU quando ela não está no modo de execução transacional (ou seja, acessos de armazenamento clássico fora de uma transação). Além disso, os acessos feitos pelo subsistema E/S são acessos não transacionais. Além disso, a instrução NONTRANSACTIONAL STORE pode ser usada para provocar um acesso de armazenamento não transacional enquanto a CPU está no modo de execução transacional não restrita.
[0115] Uma concretização de um formato de uma instrução NONTRANSACTIONAL STORE é descrita com referência à figura 7. Como um exemplo, uma instrução NONTRANSACTIONAL STORE 700 inclui uma pluralidade de campos de código de operação 702a, 702b que especificam um código de operação que designa uma operação de armazenamento não transacional; um campo de registro (R1) 704 que especifica um registro, os conteúdos do qual são denominados o primeiro operando; um campo de índice (X2) 706; um campo de base (B2) 708; um primeiro campo de deslocamento (DL2) 710; e um segundo campo de deslocamento (DH2) 712. Os conteúdos dos registros gerais designados pelos campos X2 e B2 são adicionados aos conteúdos de uma concatenação de conteúdos dos campos DH2 e DL2 para formar o segundo endereço de operando. Quando um ou ambos os campos X2 ou B2 são iguais a zero, o registro correspondente não participa na adição.
[0116] O primeiro operando de 64 bits é colocado de forma não transacional inalterado no segundo local de operando.
[0117] O deslocamento, formado pela concatenação dos campos DL2 e DH2, é tratado como um número inteiro binário com assinatura de 20 bits.
[0118] O segundo operando deve ser alinhado em um limite de doubleword; caso contrário, a exceção de especificação é reconhecida e a operação é suprimida.
[0001] Transação Externa/Mais Externa: Uma transação com uma profundidade de aninhamento de transação de número inferior é uma transação externa. Uma transação com um valor de profundidade de aninhamento de transação de um é a transação mais externa.
[0119] Uma instrução TRANSACTION BEGIN mais externa é aquela que é executada quando a profundidade de aninhamento de transação é inicialmente zero. Uma instrução TRANSACTION END mais externa é uma que faz com que a profundidade de aninhamento de transação vá de um para zero. Uma transação restrita é a transação mais externa nesta concretização.
[0120] Filtragem de Interrupção de Programa: Quando uma transação é abortada em virtude de determinadas condições de exceção de programa, o programa pode, opcionalmente, evitar que a interrupção ocorra. Esta técnica é denominada filtragem de interrupção de programa. A filtragem de interrupção de programa está sujeita à classe transacional da interrupção, ao controle de filtragem de interrupção de programa efetivo proveniente da instrução TRANSACTION BEGIN e ignorar a filtragem de interrupção de programa de execução transacional no registro de controle 0.
[0121] Transação: Uma transação inclui os acessos de operando de armazenamento feitos, e registros gerais selecionados alterados, enquanto a CPU está no modo de execução transacional. Para uma transação não restrita, os acessos de operando de armazenamento podem incluir tanto acessos transacionais quanto acessos não transacionais. Para uma transação restrita, os acessos de operando de armazenamento estão restritos a acessos transacionais. Conforme observado por outras CPUs e pelo subsistema E/S, todos os acessos de operando de armazenamento feitos pela CPU enquanto no modo de execução transacional parecem ocorrer como uma única operação simultânea. Se uma transação é abortada, acessos de armazenamentos transacionais são descartados e quaisquer registros designados pela máscara de salvamento de registro geral da instrução TRANSACTION BEGIN mais externa são restaurados para seus conteúdos antes da execução transacional.
[0122] Acessos Transacionais: Acessos transacionais são acessos de operando de armazenamento feitos enquanto a CPU está no modo de execução transacional, com exceção dos acessos feitos pela instrução NONTRANSACTIONAL STORE.
[0123] Modo de Execução Transacional: O termo modo de execução transacional (também conhecido como modo de execução de transação) descreve a operação em comum de ambos os modos de execução transacional restrita e não restrita. Assim, quando a operação é descrita, os termos restrita e não restrita são usados para qualificar o modo de execução transacional.
[0124] Quando a profundidade de aninhamento transação é zero, a CPU não está no modo de execução transacional (também denominado modo de execução não transacional).
[0125] Conforme observado pela CPU, buscas e armazenamentos feitos no modo de execução transacional não são diferentes daqueles feitos enquanto ela não está no modo de execução transacional.
[0126] Em uma concretização da z/Architecture, a unidade de execução transacional está sob o controle dos bits 8-9 do registro de controle 0, bits 61-63 do registro de controle 2, da profundidade de aninhamento de transação, do endereço do bloco diagnóstico de transação e da palavra de estado de programa (PSW) para abortar transação.
[0127] Após uma reinicialização da CPU inicial, os conteúdos de posições dos bits 8-9 de registro de controle 0, posições dos bits 62-63 do registro de controle 2 e a profundidade de aninhamento de transação são definidos como zero. Quando o controle de execução transacional, o bit 8 do registro de controle 0, é zero, a CPU não pode ser colocada no modo de execução transacional.
[0128] Maiores detalhes sobre os vários controles são descritos abaixo.
[0129] Conforme indicado, a unidade de execução transacional é controlada por dois bits no registro de controle zero e três bits no registro de controle dois. Por exemplo:
[0130] Registro de Controle 0 Bits: As atribuições de bits são como segue, em uma concretização:
[0131] Controle de Execução Transacional (TXC): Bit 8 de registro de controle zero é o controle de execução transacional. Este bit fornece um mecanismo pelo qual o programa de controle (por exemplo, sistema operacional) pode indicar se a unidade de execução transacional é ou não utilizável pelo programa. O bit 8 deve ser um para entrar com sucesso no modo de execução transacional.
[0132] Quando o bit 8 do registro de controle 0 é zero, a tentativa de execução de instruções EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION BEGIN e TRANSACTION END resulta em uma execução de operação especial.
[0133] Uma concretização de um formato de uma instrução EXTRACT TRANSACTION NESTING DEPTH é descrita com referência à figura 8. Como um exemplo, uma instrução EXTRACT TRANSACTION NESTING DEPTH 800 inclui um campo de código de operação 802 que especifica um código de operação que indica a operação de extração de profundidade de aninhamento de transação; e um campo de registro R1 804 que designa um registro geral.
[0134] A profundidade de aninhamento de transação atual está colocada nos bits 48-63 do registro geral R1. Os bits 0-31 do registro permanecem inalterados e os bits 3247 do registro são definidos como zero.
[0135] Em uma outra concretização, a profundidade máxima de aninhamento de transação também está colocada no registro geral R1, tal como nos bits 16-31.
[0136] Anular Filtragem de Interrupção de Programa (Program Interruption Filtering Override - PIFO) de Execução de Transação: O bit 9 do registro de controle zero é para anular a filtragem de interrupção de programa de execução transacional. Este bit fornece um mecanismo pelo qual o programa de controle pode assegurar que qualquer condição de exceção de programa que ocorra enquanto a CPU está no modo transacional resulte em uma interrupção, independentemente do controle de filtragem de interrupção de programa efetivo especificado ou implícito pela(s) instrução(ões) TRANSACTION BEGIN.
[0137] Registro de Controle de 2 Bits: As atribuições são as seguintes, em uma concretização:
[0138] Escopo de Diagnóstico de Transação (Transaction Diagnostic Scope - TDS): O bit 61 do registro de controle 2 controla a aplicabilidade do controle diagnóstico de transação (Transaction Diagnosis Control - TDC) nos bits 62-63 do registro, como segue:
[0139] TDS
[0140] V
[0141] Significado alor
[0142] 0
[0143] O TDC se aplica independentemente se a CPU está no estado de problema ou supervisor.
[0144] 1
[0145] O TDC se aplica apenas quando a CPU está no estado de problema. Quando a CPU está no estado de supervisor, o processamento é como se o TDC contivesse zero.
[0146] Controle Diagnóstico de Transação (TDC): Os bits 62-63 do registro de controle 2 são um número inteiro sem assinatura de 2-bits que pode ser usado para fazer com que as transações sejam aleatoriamente abortadas para fins diagnóstico. A codificação do TDC é como segue, em um exemplo:
[0147] TDC
[0148] V
[0149] Significado alor
[0150] 0
[0151] Operação normal; transações não são abortadas como um resultado do TDC.
[0152] 1
[0153] Abortar cada transação em uma instrução aleatória, mas antes de execução da instrução TRANSACTION END mais externa.
[0154] 2
[0155] Abortar transações aleatórias em uma instrução aleatória.
[0156] 3
[0157] Reservado.
[0158] Quando uma transação é abortada em virtude de um TDC diferente de zero, então, qualquer dos seguintes pode ocorrer:
[0001] O código de abortar é definido como qualquer um dos códigos 7-11, 13-16 ou 255, com o valor do código aleatoriamente escolhido pela CPU; o código de condição é definido de acordo com o código de abortar. Códigos de abortar são adicionalmente descritos abaixo.
[0002] Para uma transação não restrita, o código de condição é definido em um. Neste caso, o código de abortar não é aplicável.
[0159] Depende do modelo se o valor de TDC 1 é implementado. Se não implementado, um valor de 1 atua como se 2 fosse especificado.
[0160] Para uma transação restrita, um valor de TDC de 1 é tratado como se um valor de TDC de 2 fosse especificado.
[0161] Se um valor de TDC de 3 é especificado, não se pode prever os resultados.
[0162] Endereço de Bloco Diagnóstico de Transação (Transaction Diagnostic Block Address - TDBA)
[0163] Um endereço de bloco diagnóstico de transação (TDBA) válido é definido a partir do primeiro endereço de operando da instrução TRANSACTION BEGIN mais externa (TBEGIN) quando o campo B1 da instrução é diferente de zero. Quando a CPU está no modo de registro de acesso ou espaço primário, o TDBA designa um local no espaço de endereço primário. Quando a CPU está no modo de espaço secundário, ou modo de espaço home, o TDBA designa um local no espaço de endereço secundário ou home, respectivamente. Quando a tradução dinâmica de endereços (Dynamic Address Translation -DAT) está desativada, o TDBA designa um local em armazenamento real.
[0164] O TDBA é usado pela CPU para localizar o bloco diagnóstico de transação - denominado o TDB TBEGIN- especificado - se a transação é subsequentemente abortada. Os três bits mais à direita do TDBA são iguais a zero, o que significa que o TDB TBEGIN-especificado está sobre um limite de doubleword.
[0165] Quando o campo B1 de uma instrução TRANSACTION BEGPN mais externa (TBEGPN) é zero, o endereço do bloco diagnóstico transacional é inválido e nenhum TDB TRANSACTION TBEGIN-especificado é armazenado se a transação é subsequentemente abortada.
[0166] PSW de Abortar Transação (TAPSW)
[0167] Durante execução da instrução TRANSACTION BEGIN (TBEGIN) quando a profundidade de aninhamento é inicialmente zero, a PSW de abortar transação é definida para os conteúdos da PSW atual; e o endereço de instrução da PSW de abortar transação designa a próxima instrução sequencial (ou seja, a instrução após a TBEGIN mais externa). Durante execução da instrução TRANSACTION BEGIN restrita (TBEGINC) quando a profundidade de aninhamento é inicialmente zero, a PSW de abortar transação é definida para os conteúdos da PSW atual, exceto que o endereço de instrução da PSW de abortar transação designa a instrução TBEGINC (em vez da próxima instrução sequencial após a TBEGINC).
[0168] Quando uma transação é abortada, o código de condição na PSW de abortar transação é substituído por um código que indica a gravidade da condição de abortar. Subsequentemente, se a transação foi abortada em virtude de causas que não resultam em uma interrupção, a PSW é carregada a partir da PSW de abortar transação; se a transação foi abortada em virtude de causas que resultam em uma interrupção, a PSW de abortar transação é armazenada como a PSW de interrupção antiga.
[0169] A PSW de abortar transação não é alterada durante a execução de qualquer instrução TRANSACTION BEGIN interna.
[0170] Profundidade de Aninhamento de Transação (TND)
[0171] A profundidade de aninhamento de transação é, por exemplo, um valor sem assinatura de 16 bits que é incrementado cada vez que uma instrução TRANSACTION BEGESf é concluída com o código de condição 0 e diminuído cada vez que uma instrução TRANSACTION END é concluída. A profundidade de aninhamento de transação é reiniciada quando uma transação é abortada ou quando de reinicialização da CPU.
[0172] Em uma concretização, um TND máximo de 15 é implementado.
[0173] Em uma concretização, quando a CPU está no modo de execução transacional restrita, a profundidade de aninhamento de transação é um. Além disso, embora o TND máximo possa ser representado como um valor de 4 bits, o TND é definido como sendo um valor de 16 bits para facilitar sua inspeção no bloco diagnóstico de transação.
[0174] Bloco Diagnóstico de Transação (TDB)
[0175] Quando uma transação é abortada, várias informações de estado podem ser salvas em um bloco diagnóstico de transação (TDB), como segue:
[0001] TDB TBEGIN-especificado: Para uma transação não restrita, quando o campo B1 da instrução TBEGIN mais externa é diferente de zero, o primeiro endereço de operando da instrução designa o TDB TBEGIN-especificado. Este é um local especificado do programa de aplicativo que pode ser examinado pelo gerenciador de interrupção de aplicativo.
[0002] TDB de Interrupção de Programa (Program-Interruption - PI): Se uma transação não restrita é abortada em virtude de uma condição de exceção de programa não filtrada ou se uma transação restrita é abortada em virtude de qualquer condição de exceção de programa (ou seja, qualquer condição que resulte em uma interrupção de programa que está sendo reconhecido), o PI-TDB é armazenado em locais na área de prefixo. Isto está disponível para o sistema operacional para inspecionar e fazer logout em qualquer relatório diagnóstico que ele possa fornecer.
[0003] TDB de Intercepção: Se a transação é abortada em virtude de qualquer condição de exceção de programa que resulte em intercepção (ou seja, a condição faz com que a execução interpretativa termine e controla para retornar ao programa host), um TDB é armazenado em um local especificado no bloco de descrição de estado para o sistema operacional visitante.
[0176] O TDB TBEGIN-especificado é, em uma concretização, armazenado apenas quando o endereço de TDB é válido (ou seja, quando o campo B1 da instrução TBEGIN mais externa é diferente de zero).
[0177] Para procedimentos de abortar em virtude de condições de exceção de programa não filtradas, apenas um do PI-TDB ou TDB de Intercepção será armazenado. Assim, pode haver zero, um ou dois TDBs armazenados para um procedimento de abortar.
[0178] Outros detalhes em relação a um exemplo de cada um dos TDB são descritos abaixo:
[0179] TDB TBEGIN-especificado: O local do 256 byte especificado por um endereço de bloco diagnóstico de transação válida. Quando o endereço de bloco diagnóstico de transação é válido, o TDB TBEGIN-especificado é armazenado quando de um procedimento de abortar transação. O TDB TBEGIN-especificado está sujeito a todos os mecanismos de proteção de armazenamento que estão em vigor na execução da instrução TRANSACTION BEGIN mais externa. Um evento de alteração de armazenamento de Registro de Evento de Programa (Program Event Recording - PER) de qualquer parte do TDB TBEGIN-especificado é detectado durante a execução de TBEGIN mais externa e não durante o processamento de abortar transação.
[0180] Uma das finalidades do PER é auxiliar em debugging de programas. Ele permite que o programa seja alertado quanto aos seguintes tipos de eventos, como exemplos:
[0001] A execução de uma instrução de ramificação de sucesso. É fornecida a opção de que um evento ocorra somente quando o local de destino de ramificação está dentro da área de armazenamento designada.
[0002] Busca de uma instrução a partir da área de armazenamento designada.
[0003] Alteração dos conteúdos da área de armazenamento designada. É fornecida a opção de que um evento ocorra somente quando a área de armazenamento está dentro de espaços de endereços designados.
[0004] Execução de uma instrução STORE USING REAL ADDRESS.
[0005] Execução da instrução TRANSACTION END.
[0181] O programa pode especificar que seletivamente que um ou mais dos tipos de eventos acima sejam reconhecidos, exceto que o evento para STORE USING REAL ADDRESS pode ser especificado apenas junto com o evento de alteração de armazenamento. A informação referente a um evento de PER é fornecida ao programa por meio de uma interrupção de programa, com a causa da interrupção sendo identificada no código de interrupção.
[0182] Quando o endereço do bloco diagnóstico de transação não é válido, o TDB TBEGIN-especificado não é armazenado.
[0183] TDB de Interrupção de Programa: Os locais reais 6.144-6.399 (1800-18FF hex). O TDB de interrupção de programa é armazenado quando uma transação é abortada em virtude de interrupção de programa. Quando uma transação é abortada em virtude de outras causas, os conteúdos do TDB de interrupção de programa são imprevisíveis.
[0184] O TDB de interrupção de programa não está sujeito a qualquer mecanismo de proteção. Eventos de alteração de armazenamento PER não são detectados pelo TDB de interrupção de programa quando ele é armazenado durante uma interrupção de programa.
[0185] TDB de Intercepção: O local real do host no 256 byte especificada pelos locais 488-495 da descrição de estado. O TDB de intercepção é armazenado quando uma transação abortada resulta em uma intercepção de interrupção de programa de visitante (ou seja, código de intercepção 8). Quando uma transação é abortada em virtude de outras causas, os conteúdos do TDB de intercepção são imprevisíveis. O TDB de intercepção não está sujeito a qualquer mecanismo de proteção.
[0186] Conforme representado na figura 9, os campos de um bloco diagnóstico de transação 900 são como segue, em uma concretização:
[0187] Formato 902: Byte 0 contém uma indicação de validade e formato, como segue:
[0188] V
[0189] Significado alor
[0190] 0
[0191] Os campos restantes do TDB são imprevisíveis.
[0192] 1
[0193] Um TDB de formato-1, os campos restantes do qual são descritos abaixo.
[0194] 2
[0195] Reservado. -255
[0196] Um TDB no qual o campo de formato é zero é dito como um TDB nulo.
[0197] Flags 904: Byte 1 contém várias indicações, como segue:
[0198] Validade de Token em Conflito (Conflict Token Validity - CTV): Quando uma transação é abortada em virtude de uma busca ou conflito de armazenamento (ou seja, códigos de abortar 9 ou 10, respectivamente), o bit 0 do byte 1 é uma indicação de validade de Token em conflito. Quando a indicação CTV é um, o Token em conflito 910 nos bytes 16-23 do TDB contém o endereço lógico em que foi detectado como em conflito. Quando a indicação CTV é zero, os bytes 16-23 do TDB são imprevisíveis.
[0199] Quando uma transação é abortada em virtude de qualquer outra razão que não uma busca ou conflito de armazenamento, o bit 0 do byte 1 é armazenado como zero.
[0200] Indicação de Transação restrita (Constrained-Transaction Indication - CTI): Quando a CPU está no modo de execução transacional restrita, o bit 1 do byte 1 é definido em um. Quando a CPU está no modo de execução transacional não restrita, o bit 1 do 1 byte é definido em zero.
[0201] Reservado: Bits 2-7 do byte 1 são reservados e armazenados como zeros.
[0202] Profundidade de Aninhamento de Transação (TND) 906: Bytes 6-7 contêm a profundidade de aninhamento de transação quando a operação foi abortada.
[0203] Código de Abortar Transação (Transaction Abort Code - TAC) 908: Bytes 8-15 contêm um código de abortar transação de 64-bits sem assinatura. Cada ponto de código indica uma razão para uma transação que está sendo abortada.
[0204] Depende do modelo se o código de abortar transação é armazenado no TDB de interrupção de programa quando uma transação é abortada em virtude de outras condições que não uma interrupção de programa.
[0205] Token 910 em Conflito: Para transações que são abortadas em virtude de busca ou conflito de armazenamento (ou seja, códigos de abortar 9 e 10, respectivamente), os bytes 16-23 contêm o endereço lógico do local de armazenamento no qual se detectou o conflito. O Token em conflito é significativo quando o bit de CTV, bit 0 do byte 1, é um.
[0206] Quando o bit de CTV é zero, os bytes 16-23 são imprevisíveis.
[0207] Em virtude da execução especulativa pela CPU, o Token em conflito pode designar um local de armazenamento que não seria necessariamente acessado pela sequência de execução conceitual da transação.
[0208] Endereço de Instrução de Transação Abortada (Aborted Transaction Instruction Address - ATIA) 912: Bytes 24-31 contêm um endereço de instrução que identifica a instrução que estava sendo executada quando foi detectado um procedimento de abortar. Quando uma transação é abortada em virtude dos códigos de abortar 2, 5, 6, 11, 13 ou 256 ou maior, ou quando uma transação é abortada em virtude dos códigos de abortar 4 ou 13 e a condição de exceção de programa é nula, o ATIA aponta diretamente para a instrução que estava sendo executada. Quando uma transação é abortada em virtude dos códigos de abortar 4 ou 12, e a condição de exceção de programa não é nula, o ATIA aponta para a última instrução que estava sendo executada.
[0209] Quando uma transação é abortada em virtude dos códigos de abortar 7-10, 14-16 ou 255, o ATIA não indica necessariamente a instrução exata que está causando o procedimento de abortar, mas pode apontar para uma instrução anterior ou posterior dentro da transação.
[0210] Se uma transação é abortada em virtude de uma instrução que é o alvo de uma instrução de tipo executar, o ATIA identifica a instrução de tipo executar apontando para a instrução ou passando por ela, de acordo com o código de abortar, conforme descrito acima. O ATIA não indica o alvo da instrução de tipo executar.
[0211] O ATIA está sujeito ao modo de endereçamento quando a transação é abortada. No modo de endereçamento de 24 bits, os bits 0-40 do campo contêm zeros. No modo de endereçamento de 31 bits, os bits 0-32 do campo contêm zeros.
[0212] Depende do modelo se o endereço de instrução de transação abortada é armazenado no TDB de interrupção de programa quando uma transação é abortada em virtude de outras condições que não uma interrupção de programa.
[0213] Quando uma transação é abortada em virtude do código de abortar 4 ou 12 e a condição de exceção de programa não é nula, o ATIA não aponta para a instrução que está causando o procedimento de abortar. Ao subtrair o número de halfwords indicado pelo código de comprimento de interrupção (Interruption Length Code - ILC) do ATIA, a instrução que está causando o procedimento de abortar pode ser identificada em condições que estão sendo suprimidas ou terminando ou, para eventos não-PER, que estão sendo concluídas. Quando uma transação é abortada em virtude de um evento PER, e nenhuma outra condição de exceção de programa está presente, o ATIA é imprevisível.
[0214] Quando o endereço de bloco diagnóstico de transação é válido, o ILC pode ser examinado na identificação de interrupção de programa (PUD) nos bytes 36-39 do TDB TBEGIN-especificado. Quando filtragem não se aplica, o ILC pode ser examinado na PUD no local 140-143 no armazenamento real.
[0215] Identificação de Acesso de Exceção (Exception Access IDentification - EAID) 914: Para transações que são abortadas em virtude de determinadas condições de exceção de programa filtradas, o byte 32 do TDB TBEGIN-especificado contém a identificação de acesso de exceção. Em um exemplo da z/Architecture, o formato do EAID, e os casos para os quais ela é armazenada, são os mesmos conforme aqueles descritos no local real 160 quando as condições de exceção resultam em uma interrupção, conforme descrito no incorporado acima através de referência aos Princípios de Operação.
[0216] Para transações que são abortadas por outros motivos, incluindo quaisquer condições de exceção que resultem em uma interrupção de programa, o byte 32 é imprevisível. O byte 32 é imprevisível no TDB de interrupção de programa.
[0217] Este campo é armazenado apenas no TDB designado pelo endereço de bloco diagnóstico de transação; caso contrário, o campo é reservado. A EIAD é armazenada somente para a lista de acesso controlado ou proteção de DAT, tipo de ASCE, tradução de página, tradução de primeira região, tradução de segunda região, tradução de região terceira e condições de exceção de programa de tradução de segmento.
[0218] Código de Exceção de Dados (Data EXception Code - DXC) 916: Para transações que são abortadas em virtude de condições de exceção de programa por exceção de dados filtradas, o byte 33 do TDB TBEGIN-especificado contém o código de exceção de dados. Em um exemplo da z/Architecture, o formato do DXC, e os casos nos quais ele é armazenado, são os mesmos conforme aqueles os descritos no local real 147 quando as condições de exceção resultam em uma interrupção, conforme descrito no incorporado acima através de referência aos Princípios de Operação. Em um exemplo, o local 147 inclui o DXC.
[0219] Para transações que são abortadas por outros motivos, incluindo quaisquer condições de exceção que resultem em uma interrupção de programa, o byte 33 é imprevisível. O byte 33 é imprevisível no TDB de interrupção de programa.
[0220] Este campo é armazenado apenas no TDB designado pelo endereço de bloco diagnóstico de transação; caso contrário, o campo é reservado. O DXC é armazenado somente para condições de exceção de programa por exceção de dados.
[0221] Identificação de Interrupção de Programa (PUD) 918: Para transações que são abortadas em virtude de condições de exceção de programa filtradas, os bytes 36-39 do TDB TBEGIN-especificado contêm a identificação de interrupção de programa. Em um exemplo da z/Architecture, o formato da PUD é o mesmo conforme aquele descrito nos locais reais 140-143 quando as condições resultam em uma interrupção (conforme descrito no incorporado acima através de referência aos Princípios de Operação), exceto que o código de comprimento de instrução nos bits 13-14 da PUD é referente à instrução na qual a condição de exceção foi detectada.
[0222] Para transações que são abortadas por outros motivos, incluindo condições de exceção que resultem em uma interrupção de programa, os bytes 36-39 são imprevisíveis. Os bytes 36-39 são imprevisíveis no TDB de interrupção de programa.
[0223] Este campo é armazenado apenas no TDB designado pelo endereço de bloco diagnóstico de transação; caso contrário, o campo é reservado. A identificação de interrupção de programa é armazenada somente para condições de exceção de programa.
[0224] Identificação de Exceção de Tradução (Translation Exception IDentification - TEID) 920: Para transações que são abortadas em virtude de qualquer uma das seguintes condições de exceção de programa filtradas, os bytes 40-47 do TDB TBEGIN-especificado contêm a identificação de exceção de tradução.
[0001] Lista de acesso controlada ou proteção de DAT
[0002] Tipo de ASCE
[0003] Tradução de página
[0004] Tradução de primeira região
[0005] Tradução de segunda região
[0006] Tradução de terceira região
[0007] Exceção de tradução de segmento
[0225] Em um exemplo da z/Architecture, o formato da TEID é o mesmo conforme aquele descrito nos locais reais 168-175 quando as condições resultam em uma interrupção, conforme descrito no incorporado acima através de referência aos Princípios de Operação.
[0226] Para transações que são abortadas por outros motivos, incluindo condições de exceção que resultem em uma interrupção de programa, os bytes 40-47 são imprevisíveis. Os bytes 40-47 são imprevisíveis no TDB de interrupção de programa.
[0227] Este campo é armazenado apenas no TDB designado pelo endereço de bloco diagnóstico de transação; caso contrário, o campo é reservado.
[0228] Endereço de Evento de Ruptura 922: Para transações que são abortadas em virtude de condições de exceção de programa filtradas, os bytes 48-55 do TDB TBEGIN-especificado contêm o endereço do evento de ruptura. Em um exemplo da z/Architecture, o formato de endereço do evento de ruptura é o mesmo conforme aquele descrito nos locais reais 272-279 quando as condições resultam em uma interrupção, conforme descrito no incorporado acima através de referência aos Princípios de Operação.
[0229] Para transações que são abortadas por outros motivos, incluindo condições de exceção que resultam em uma interrupção de programa, os bytes 48-55 são imprevisíveis. Os bytes 48-55 são imprevisíveis no TDB de interrupção de programa.
[0230] Este campo é armazenado apenas no TDB designado pelo endereço de bloco diagnóstico de transação; caso contrário, o campo é reservado.
[0231] Maiores detalhes referentes a eventos de ruptura são descritos abaixo.
[0232] Em uma concretização da z/Architecture, quando a unidade PER-3 está instalada, ela fornece ao programa o endereço da última instrução para causar uma ruptura na execução sequencial da CPU. O registro de endereço do evento de ruptura pode ser usado como um auxiliar de debugging para detecção de ramificação wild. Esta unidade fornece, por exemplo, um registro de 64 bits na CPU, denominado o registro de endereço de evento de ruptura. Cada vez que uma instrução diferente de abortar transação provoca uma ruptura na execução da instrução sequencial (ou seja, o endereço de instrução na PSW é substituído, em vez de incrementado pelo comprimento da instrução), o endereço desta instrução é colocado no registro de endereço de evento de ruptura. Sempre que ocorre uma interrupção de programa, quer a PER seja ou não indicada, os conteúdos atuais do registro de endereço de evento de ruptura são colocados nos locais de armazenamento reais 272-279.
[0233] Se a instrução que está causando o evento de ruptura é o alvo de uma instrução de tipo executar (EXECUTE ou EXECUTE RELATIVE LONG), então, o endereço de instrução usado para buscar a instrução de tipo executar é colocado no registro de endereço de evento de ruptura.
[0234] Em uma concretização da z/Architecture, um evento de ruptura é considerado como ocorrendo sempre que uma das seguintes instruções causa com ramificação: BRANCH AND LINK (BAL, BALR); BRANCH AND SAVE (BAS, BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH AND STACK (BAKR); BRANCH ON CONDHION (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 CONDHION (BRC); BRANCH RELATIVE ON CONDHION 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); e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ).
[0235] Um evento de ruptura também é considerado como ocorrendo quando uma das seguintes instruções é concluída: BRANCH AND 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); e TRAP (TRAP2, TRAP4).
[0236] Um evento de ruptura não é considerado como ocorrendo como um resultado de uma transação que está sendo abortada (implicitamente ou como resultado da instrução TRANSACTION ABORT).
[0237] Informação Diagnóstica Dependente de Modelo 924: Os bytes 112-127 contêm a instrução diagnóstica dependente de modelo.
[0238] Para todos os códigos de abortar exceto 12 (interrupção de programa filtrada), a instrução diagnóstica dependente de modelo é salva em cada TDB que é armazenado.
[0239] Em uma concretização, a informação diagnóstica dependente de modelo inclui o seguinte:
[0001] Bytes 112-119 contêm um vetor de 64 bits denominado indicações de ramificação de execução transacional (Transactional eXecution Branch Indications - TXBI). Cada um dos primeiros 63 bits do vetor indica os resultados de execução de uma instrução de ramificação enquanto a CPU estava no modo de execução transacional, como segue: Valor Significado 0 A instrução foi concluída sem ramificação. 1 A instrução foi concluída com ramificação.
[0240] O bit 0 representa o resultado da primeira de tais instruções de ramificação, o bit 1 representa o resultado da segunda de tais instruções e assim por diante.
[0241] Se menos de 63 instruções de ramificação foram executadas enquanto a CPU estava no modo de execução transacional, os bits mais à direita que não correspondem às instruções de ramificação são definidos como zeros (incluindo o bit 63). Quando mais de 63 instruções de ramificação foram executadas, o bit 63 da TXBI é definido como um.
[0242] Os bits na TXBI são definidos por instruções as quais são capazes de provocar um evento de ruptura, conforme listado acima, exceto quanto ao seguinte:
[0243] - Qualquer instrução restrita não faz com que um bit seja definido na TXBI.
[0244] - Para obter instruções, por exemplo, na z/Architecture, quando o campo M1 da instrução BRANCH ON CONDITION, BRANCH RELATIVE ON CONDHION ou BRANCH RELATIVE ON CONDHION LONG é zero ou quando o campo R2 das seguintes instruções é zero, depende do modelo se a execução da instrução faz com que um bit seja definido na TXBI.
[0001] BRANCH AND LINK (BALR); BRANCH AND SAVE (BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); e BRANCH ON COUNT (BCTR, BCTGR)
[0002] Para condições de abortar que foram causadas por uma exceção de acesso ao host, a posição de bit 0 do byte 127 é definida como um. Para todas as outras condições de abortar, a posição de bit 0 do byte 127 é definida como zero.
[0003] Para condições de abortar que foram detectadas pela unidade de carregamento/ armazenamento (LSU), os cinco bits mais à direita do byte 127 contêm a indicação da causa. Para condições de abortar que não foram detectadas pela LSU, o byte 127 é reservado.
[0245] Registros Gerais 930: Os bytes 128-255 contêm os conteúdos de registros gerais 0-15 no momento em que a transação foi abortada. Os registros são armazenados na ordem crescente, começando com registro geral 0 nos bytes 128-135, registro geral 1 nos bytes 136-143 e assim por diante.
[0246] Reservado: Todos os outros campos são reservados. A menos que indicado de outra forma, os conteúdos dos campos reservados são imprevisíveis.
[0247] Conforme observado por outras CPUs e o subsistema E/S, o armazenamento do(s) TDB(s) durante um procedimento de abortar transação é uma referência de acesso múltiplo que ocorre após quaisquer armazenamentos não transacionais.
[0248] Uma transação pode ser abortada em virtude de causas que estão fora do escopo da configuração imediata na qual ela é executada. Por exemplo, eventos transitórios reconhecidos por um hipervisor (tais como LPAR ou z/VM) podem fazer com que uma transação seja abortada.
[0249] A informação fornecida no bloco diagnóstico de transação é destinada a fins diagnósticos e é substancialmente correta. No entanto, uma vez que um procedimento de abortar pode ter sido causado por um evento fora do âmbito da configuração imediata, informação tal como o código de abortar ou identificação de interrupção de programa podem não refletir com precisão as condições dentro da configuração e, assim, não deverá ser usada em determinação de ação do programa.
[0250] Além da informação diagnóstica salva no TDB, quando uma transação é abortada em virtude de qualquer condição de exceção de programa por exceção de dados e tanto o controle de registro AFP, bit 45 do registro de controle 0, quanto permitir controle de operação de ponto flutuante efetivo (F) são um, o código exceção de dados (DXC) é colocado no byte dois do registro de controle de ponto flutuante (FPCR), independentemente se filtragem se aplica à condição de exceção de programa. Quando uma transação é abortada e um ou ambos do registro de controle AFP ou permitir controle de operação de ponto flutuante efetivo são zero, o DXC não é colocado no FPCR.
[0251] Em uma concretização, conforme indicado aqui, quando a unidade de execução transacional está instalada, são fornecidas as seguintes instruções gerais.
[0001] EXTRACT TRANSACTION NESTING DEPTH
[0002] NONTRANSACTIONAL STORE
[0003] TRANSACTION ABORT
[0004] TRANSACTION BEGIN
[0005] TRANSACTION END
[0252] Quando a CPU está no modo de execução transacional, a tentativa de execução de determinadas instruções é restrita e faz com que a transação seja abortada.
[0253] Quando feita no modo de execução transacional restrita, a tentativa de execução de instruções restritas também pode resultar em uma interrupção de programa por transação restrita ou pode resultar em procedimento de execução como se a transação não fosse restrita.
[0254] Em um exemplo da zArchitecture, instruções restritas incluem, por exemplo, as seguintes instruções não privilegiadas: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), quando o código no campo M1 é de 6 ou 7; STORE CHARACTERS UNDER MASK HIGH, quando o campo M3 é zero e o código no campo R1 é 6 ou 7; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; SUPERVISOR CALL; e TEST RUNTIME INSTRUMENTATION CONTROLS.
[0255] Na lista acima, COMPARE AND SWAP AND STORE e PERFORM LOCKED OPERATION são instruções complexas que podem ser implementadas de forma mais eficiente com o uso de instruções básicas no modo TX. Os casos de PREFETCH DATA e PREFETCH DATA RELATIVE LONG são restritos à medida que os códigos 6 e 7 liberam uma linha de cache, requerendo a confirmação dos dados potencialmente antes de conclusão de uma transação. SUPERVISOR CALL é restrito, uma vez que provoca uma interrupção (o que faz com que uma transação seja abortada).
[0256] Sob as condições listadas abaixo, as seguintes instruções são restritas:
[0001] BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR) e BRANCH AND SAVE AND SET MODE quando o campo R2 da instrução é diferente de zero e rastreamento de modo está habilitado.
[0002] BRANCH AND SAVE AND SET MODE e BRANCH AND SET MODE quando o campo R2 é diferente de zero e rastreamento de modo está habilitado.
[0003] MONITOR CALL, quando uma condição de evento de monitor é reconhecida.
[0257] A lista acima inclui instruções que podem formar entradas de rastreio. Se é permitido que estas instruções sejam executadas de forma transacional e formem entradas de rastreio, e a transação subsequentemente abortada, o indicador de tabela de rastreio no registro de controle 12 seria avançado, mas os armazenamentos para a tabela de rastreio seriam descartados. Isto deixaria uma lacuna inconsistente na tabela de rastreio. Assim, as instruções são restritas nos casos onde elas formam entradas de rastreio.
[0258] Quando a CPU está no modo de execução transacional, depende do modelo se as seguintes instruções são restritas: CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE 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 CRYPTOGRAPHIC COMPUTATION; RUNTIME INSTRUMENTATION OFF; e RUNTIME INSTRUMENTATION ON.
[0259] Cada uma das instruções acima é implementada atualmente pelo coprocessador de hardware ou estava em máquinas antigamente e, portanto, são consideradas restritas.
[0260] Quando o controle permitir modificação de AR (A) efetiva é zero, as seguintes instruções são restritas: cópia de acesso; COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; e SET ACCESS.
[0261] Cada uma das instruções acima faz com que os conteúdos de um registro de acesso sejam modificados. Se o controle A na instrução TRANSACTION BEGIN é zero, então, o programa indicou explicitamente que a modificação de registro de acesso não deve ser permitida.
[0262] Quando o controle permitir operação de ponto flutuante (F) efetiva é zero, instruções de ponto flutuante são restritas.
[0263] Sob determinadas circunstâncias, as seguintes instruções podem ser restritas: EXTRACT CPU TIME; EXTRACT PSW; STORE CLOCK; STORE CLOCK EXTENDED; e STORE CLOCK FAST.
[0264] Cada uma das instruções acima está sujeita a um controle de intercepção na descrição de estado de execução interpretativa. Se o hipervisor definiu o controle de intercepção para estas instruções, então, sua execução pode ser prolongada em virtude de implementação pelo hipervisor; assim, elas são consideradas restritas se uma intercepção ocorre.
[0265] Quando uma transação não restrita é abortada em virtude da tentativa de execução de uma instrução restrita, o código de abortar transação no bloco diagnóstico de transação é definido como 11 (instrução restrita) e o código de condição é definido como 3, exceto como segue: quando uma transação não restrita é abortada em virtude da tentativa de execução de uma instrução a qual, de outro modo, resultaria em uma exceção de operação privilegiada, não se pode prever se o código de abortar é definido como 11 (instrução restrita) ou 4 (interrupção de programa não filtrada resultante de reconhecimento da interrupção de programa de operação privilegiada). Quando uma transação não restrita é abortada em virtude da tentativa de execução de PREFETCH DATA (RELATIVE LONG) quando o código no campo M1 é 6 ou 7 ou STORE CHARACTERS UNDER MASK HIGH quando o campo M3 é zero e o código no campo R1 é 6 ou 7, não se pode prever se o código de abortar é definido como 11 (instrução restrita) ou 16 (outro cache). Quando uma transação não restrita é abortada em virtude da tentativa de execução de MONHOR CALL e tanto uma condição de evento de monitor quanto uma condição de exceção de especificação estão presentes, não se pode prever se o código de abortar é definido como 11 ou 4 ou se a interrupção de programa é filtrada, 12.
[0266] Instruções adicionais podem ser restritas em uma transação restrita. Embora estas instruções não sejam, na verdade, definidas para ser restritas em uma transação não restrita, elas podem ser restritas, sob determinadas circunstâncias, em uma transação não restrita em futuros processadores.
[0267] Podem ser permitidas determinadas instruções restritas no modo de execução transacional em futuros processadores. Portanto, o programa não deverá depender de a transação ser abortada em virtude da tentativa de execução de uma instrução restrita. A instrução TRANSACTION ABORT deverá ser usada para fazer com que uma transação para seja abortada de forma confiável.
[0268] Em uma transação não restrita, o programa deverá fornecer um caminho de código não transacional alternativo para acomodar uma transação que é abortada em virtude de uma instrução restrita.
[0269] Em operação, quando a profundidade de aninhamento de transação é zero, a execução da instrução TRANSACTION BEGIN (TBEGIN) que resulta em código de condição zero faz com que a CPU entre no modo de execução transacional não restrita. Quando a profundidade de aninhamento de transação é zero, a execução da instrução TRANSACTION BEGIN restrita (TBEGINC) que resulta em um código de condição zero faz com que a CPU entre no modo de execução transacional restrita.
[0270] Exceto onde expressamente indicado de outra forma, todas as regras que se aplicam à execução não transacional também se aplicam à execução transacional. Estas são características adicionais de processamento enquanto a CPU está no modo de execução transacional.
[0271] Quando a CPU está no modo de execução transacional não restrita, a execução da instrução TRANSACTION BEGIN que resulta em código de condição zero faz com que a CPU permaneça no modo de execução transacional não restrita.
[0272] Conforme observado pela CPU, buscas e armazenamentos feitos no modo de execução transacional não são diferentes daqueles feitos enquanto não está no modo de execução transacional. Conforme observado por outras CPUs e pelo subsistema E/S, todos os acessos de operando de armazenamento feitos enquanto a CPU está no modo de execução transacional parecem ser um acesso concorrente de bloco único. Ou seja, os acessos a todos os bytes dentro de uma halfword, word, doubleword ou quadword são especificados para parecerem ser de bloco concorrente, conforme observado por outras CPUs e programas de E/S (por exemplo, canal). A halfword, word, doubleword ou quadword são citadas nesta seção como um bloco. Quando uma referência de tipo busca é especificada para parecer ser concorrente dentro de um bloco, nenhum acesso a armazenamento para o bloco por outra CPU ou programa E/S é permitido durante o tempo em que os bytes contidos no bloco estão sendo usados para a busca. Quando uma referência de tipo armazenamento é especificada para parecer ser concorrente dentro de um bloco, nenhum acesso ao bloco, quer busca ou armazenamento, é permitido por outra CPU ou programa E/S durante o tempo em que os bytes dentro do bloco estão sendo armazenados.
[0273] Acessos ao armazenamento para instrução e buscas em DAT e tabela ART (Tabela de Registro de Acesso) seguem as regras não transacionais.
[0274] A CPU sai do modo de execução transacional normalmente por meio de uma instrução TRANSACTION END que faz com que a profundidade de aninhamento de transação vá para zero, caso no qual a transação é concluída.
[0275] Quando a CPU sai do modo de execução transacional por meio de conclusão de uma instrução TRANSACTION END, todos os armazenamentos feitos enquanto no modo de execução transacional são confirmados; ou seja, os armazenamentos parecem ocorrer como uma operação de bloco- concorrente único, conforme observado por outras CPU e o subsistema E/S.
[0276] Uma transação pode ser implicitamente abortada por uma variedade de causas ou pode ser explicitamente abortada pela instrução TRANSACTION ABORT. Exemplos de possíveis causas de um procedimento de abortar transação, o código de abortar correspondente e o código de condição que é colocada na PSW de abortar transação são descritos abaixo.
[0277] Interrupção Externa: O código de abortar transação é definido como 2 e o código de condição na PSW de abortar transação é definido como 2. A PSW de abortar transação é armazenada como a PSW antiga externa como parte do processamento de interrupção externa.
[0278] Programa de Interrupção (Não Filtrada): Uma condição de exceção de programa que resulta em uma interrupção (ou seja, uma condição não filtrada) faz com que a transação seja abortada com código 4. O código de condição na PSW de abortar transação é definido específico para o código de interrupção de programa. A PSW de abortar transação é armazenada como a PSW de programa antiga como parte do processamento de interrupção de programa.
[0279] Uma instrução que, de outro modo, resultaria em uma transação sendo abortada em virtude de uma exceção de operação pode produzir resultados alternativos: para uma transação não restrita, a transação pode, em vez disso, abortar com o código de abortar 11 (instrução restrita); para uma transação restrita, uma interrupção de programa por restrição de transação pode ser reconhecida, em vez da exceção de operação.
[0280] Quando um evento de PER (Registro de Evento de Programa) é reconhecido em conjunto com qualquer outra condição de exceção de programa não filtrada, o código de condição é definido como 3.
[0281] Interrupção de Verificação de Máquina: O código de abortar transação é definido como 5 e o código de condição na PSW de abortar transação é definido como 2. A PSW de abortar transação é armazenada como a PSW de verificação de máquina antiga como uma parte do processamento de interrupção de verificação de máquina.
[0282] Interrupção de E/S: O código de abortar transação é definido como 6 e o código de condição na PSW de abortar transação é definido como 2. A PSW de abortar transação é armazenada como a PSW de E/S antiga como uma parte do processamento de interrupção de E/S.
[0283] Overflow de Busca: Uma condição overflow de busca é detectada quando a transação tenta buscar em mais locais do que a CPU suporta. O código de abortar transação é definido como 7 e o código de condição é definido como 2 ou 3.
[0284] Overflow de Armazenamento: Uma condição de overflow de armazenamento é detectada quando a transação tenta armazenar em mais locais do que a CPU suporta. O código de abortar transação é definido como 8 e o código de condição é definido como 2 ou 3.
[0285] Permitir que o código de condição seja 2 ou 3 em resposta a um overflow de busca ou store permite que a CPU indique situações potencialmente repetidas (por exemplo, o código de condição 2 indica que nova execução da transação pode ser produtiva, enquanto que o código de condição 3 não recomenda nova execução).
[0286] Conflito de Busca: Uma condição de conflito de busca é detectada quando outra CPU ou subsistema E/S tenta armazenar em um local que sofreu uma busca transacional por esta CPU. O código de abortar transação é definido como 9 e o código de condição é definido como 2.
[0287] Conflito de Armazenamentos: Uma condição de conflito de armazenamento é detectada quando outra CPU ou subsistema E/S tenta acessar um local que foi armazenado durante execução transacional por esta CPU. O código de abortar transação é definido como 10 e o código de condição é definido como 2.
[0288] Instrução Restrita: Quando a CPU está no modo de execução transacional, a tentativa de execução de uma instrução restrita faz com que a transação seja abortada. O código de abortar transação é definido como 11 e o código de condição é definido como 3.
[0289] Quando a CPU está no modo de execução transacional restrita, não se pode prever se a tentativa de execução de uma instrução restrita resulta em uma interrupção de programa por restrição de transação ou um procedimento de abortar em virtude de uma instrução restrita. A transação ainda é abortada, mas o código de interrupção pode indicar qualquer causa.
[0290] Condição de Exceção de Programa (Filtrada): Uma condição de exceção programa que não resulta em uma interrupção (ou seja, uma condição filtrada) faz com que a transação seja abortada com um código de abortar transação de 12. O código de condição é definido como 3.
[0291] Profundidade de Aninhamento Excedida: A condição profundidade de aninhamento excedida é detectada quando a profundidade de aninhamento de transação está no valor máximo permitido para a configuração, e uma instrução TRANSACTION BEGIN é executada. A transação é abortada com um código de abortar transação de 13 e o código de condição é definido como 3.
[0292] Condição Relacionada à Busca de Cache: Uma condição relacionada aos locais de armazenamento buscados pela transação é detectada pelo circuito de cache da CPU. A transação é abortada com um código de abortar transação de 14 e o código de condição é definido como 2 ou 3.
[0293] Condição Relacionada ao Armazenamento de Cache: Uma condição relacionada aos locais de armazenamento armazenados pela transação é detectada pelo circuito de cache da CPU. A transação é abortada com um código de abortar transação de 15 e o código de condição é definido como 2 ou 3.
[0294] Outra Condição de Cache: Uma outra condição de cache é detectada pelo circuito de cache da CPU. A transação é abortada com um código de abortar transação de 16 e o código de condição é definido como 2 ou 3.
[0295] Durante execução transacional, se a CPU acessa instruções ou operandos de armazenamento usando diferentes endereços lógicos que são mapeados ao mesmo endereço absoluto, depende do modelo se a transação é abortada. Se a transação é abortada em virtude de acessos que usam diferentes endereços lógicos mapeados ao mesmo endereço absoluto, o código de abortar 14, 15 ou 16 é definido, dependendo da condição.
[0296] Condições Diversas: Uma condição diversa é qualquer outra condição reconhecida pela CPU que faz com que a transação seja abortada. O código de abortar transação é 255 e o código de condição é definido como 2 ou 3.
[0297] Quando várias configurações estão sendo executadas na mesma máquina (por exemplo, partições lógicas ou máquinas virtuais), uma transação pode ser abortada em virtude de uma verificação externa da máquina ou interrupção de E/S que ocorreu em uma configuração diferente.
[0298] Embora exemplos sejam fornecidos acima, outras causas para abortar uma transação com os códigos de abortar e códigos de condição correspondentes podem ser fornecidas. Por exemplo, uma causa pode ser uma Interrupção de Reinicialização, na qual o código de abortar transação é definido como 1 e o código de condição na PSW de abortar transação é definido como 2. A PSW de abortar transação é armazenada como ao PSW de reinicialização antiga como uma parte do processamento de reinicialização. Como um exemplo adicional, uma causa pode ser uma condição SUPERVISOR CALL, na qual o código de abortar é definido como 3 e o código de condição na PSW de abortar transação é definido como 3. Exemplos adicionais ou diferentes também são possíveis.
[0299] Notas:
[0001] As condições diversas podem resultar de qualquer um dos seguintes:
[0002] Instruções tais como, na z/Architecture, COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION nas quais o controle NQ é zero e o controle SK é um, SET STORAGE KEY EXTENDED, nas quais o controle NQ é zero, realizadas por outra CPU na configuração; o código de condição é definido como 2.
[0003] Uma função de operando, tal como reset, restart ou stop, ou a ordem SIGNAL PROCESSOR equivalente é executada na CPU.
[0004] Qualquer outra condição não enumerada acima; o código de condição é definido como 2 ou 3. 2. O local no qual conflitos de busca e armazenamento são detectados pode estar em qualquer parte dentro da mesma linha de cache. 3. Sob determinadas condições, a CPU pode não ser capaz de distinguir entre condições de abortar similares. Por exemplo, um overflow de busca ou armazenamento pode ser indistinguível de um respectivo conflito busca ou armazenamento. 4. Execução especulativa de múltiplos caminhos de instrução pela CPU pode resultar em um procedimento de abortar transação em virtude de condições de conflito ou overflow, mesmo que tais condições não ocorram na sequência conceitual. Enquanto no modo de execução transacional restrita, a CPU pode inibir temporariamente a execução especulativa, permitindo que a transação tente ser concluída sem detectar tais conflitos ou overflows especulativamente.
[0300] A execução de uma instrução TRANSACTION ABORT faz com que a transação seja abortada. O código de abortar transação é definido a partir do segundo endereço de operando. O código de condição é definido como 2 ou 3, dependendo se o bit 63 do segundo endereço de operando é zero ou um, respectivamente.
[0301] A figura 10 resume os códigos de abortar exemplificativos armazenados em um bloco diagnóstico de transação e o código de condição (Condition Code - CC) correspondente. A descrição na figura 10 ilustra uma implementação particular. Outras implementações e codificações de valores são possíveis.
[0302] Em uma concretização, e conforme mencionado acima, a unidade transacional permite tanto transações restritas quanto não restritas, bem como o processamento associado às mesmas. Inicialmente, as transações restritas são discutidas então e, então, as transações não restritas.
[0303] Uma transação restrita é executada no modo transacional sem um caminho fall-back. Ela é um modo de processamento útil para funções compactas. Na ausência de interrupções ou conflitos repetidos com outras CPUs ou o subsistema E/S (ou seja, causados por condições que não permitirão que a transação seja concluída com êxito), uma transação restrita eventualmente será concluída; assim, uma rotina de gerenciador de interrupção não é necessária e não é especificada. Por exemplo, na ausência de violação de uma condição que não pode ser endereçada (por exemplo, dividir por 0); uma condição que não permite que a transação seja concluída (por exemplo, uma interrupção de timer que não permite que uma instrução seja executada; um E/S quente, etc.); ou uma violação de uma restrição ou restrição associada a uma transação restrita, a transação eventualmente será concluída.
[0304] A transação restrita é iniciada por uma instrução TRANSACTION BEGIN restrita (TBEGINC) quando a profundidade de aninhamento de transação é inicialmente zero. Uma transação restrita está sujeita às seguintes restrições, em uma concretização.
[0305] 1. A transação executa não mais do que 32 instruções, não incluindo as instruções TRANSACTION BEGIN restrita (TBEGINC) e TRANSACTION END.
[0306] 2. Todas as instruções na transação devem estar dentro de 256 bytes contíguos de armazenamento, incluindo a TRANSACTION BEGIN restrita (TBEGINC) e quaisquer instruções TRANSACTION END.
[0307] 3. Além das instruções restritas, as restrições a seguir se aplicam a uma transação restrita.
[0308] a. As instruções estão restritas àquelas citadas como Instruções Gerais incluindo, por exemplo, adicionar, subtrair, multiplicar, dividir, deslocar, girar, etc.
[0309] b. Instruções de ramificação estão restritas ao seguinte (as instruções listadas são da z/Architecture, em um exemplo):
[0310] • BRANCH RELATIVE ON CONDITION, na qual o campo M1 é diferente de zero e o campo RI2 contém um valor positivo.
[0311] • BRANCH RELATIVE ON CONDITION LONG, na qual o campo M1 é diferente de zero e o campo RI2 contém um valor positivo que não causa sobreposição de endereço.
[0312] • COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE, nas quais o campo M3 é diferente de zero e o campo RI4 contém um valor positivo (ou seja, apenas ramificações forward com máscaras de ramificação diferentes de zero.)
[0313] c. Exceto para TRANSACTION END e instruções as quais causam uma serialização de operando especificada, instruções que causam uma função de serialização são restritas.
[0314] d. instruções de operações de Storage-and- storage (SS-) e operações de storage-and-storage com um código de operação estendido (SSE-) são restritas.
[0315] e. Todas as instruções gerais a seguir (as quais são de z/Architecture neste exemplo) são restritas: CHECKSUM; CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAPNING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG; COMPARE LOGICAL LONG EXTENDED; COMPARE LOGICAL LONG UNICODE; COMPARE LOGICAL STRING; COMPARE UNTIL SUBSTRTNG EQUAL; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION 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 CACHE 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 QUAD WORD; 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 HIGH, quando o campo M3 é zero e o código no campo R1 é 6 ou 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 quanto TBEGINC); TRANSLATE AND TEST EXTENDED; TRANSLATE AND TEST REVERSE EXTENDED; TRANSLATE EXTENDED; TRANSLATE ONE TO ONE; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE; e TRANSLATE TWO TO TWO.
[0316] 4. Operandos de armazenamento de transação acessam não mais do que quatro octowords. Nota: LOAD ON CONDITION e STORE ON CONDITION são considerados como armazenamento de referência, independentemente do código de condição. Uma octoword é, por exemplo, um grupo de 32 bytes consecutivos em um limite de 32 bytes.
[0317] 5. A transação que está sendo executada nesta CPU, ou armazenamentos por outras CPUs ou o subsistema E/S, não acessa operandos de armazenamento em quaisquer blocos de 4 K-bytes que contêm os 256 bytes de armazenamento que começam com a instrução TRANSACTION BEGEM restrita (TBEGINC).
[0318] 6. A transação não acessa instruções ou operandos de armazenamento usando diferentes endereços lógicos que são mapeados ao mesmo endereço absoluto.
[0319] 7. Referências de operando feitas pela transação devem estar dentro de uma única doubleword, exceto quanto a LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE e STORE MULTIPLE HIGH, as referências de operando devem estar dentro de uma única octoword.
[0320] Se uma transação restrita viola qualquer uma das restrições 1-7 listadas acima, então (a) uma interrupção de programa por restrição de transação é reconhecida ou (b) a execução prossegue como se a transação não fosse restrita, exceto que as outras violações de restrição ainda podem resultar em uma interrupção de programa por transação restrita. Não se pode prever qual ação será tomada e as medidas tomadas podem variar com base em qual restrição foi violada.
[0321] Na ausência de violações de restrição, interrupções repetidas ou conflitos com outras CPUs ou o subsistema E/S, uma transação restrita eventualmente será concluída, conforme descrito acima.
[0322] 1. A chance de concluir uma transação restrita com sucesso melhora se a transação atende aos seguintes critérios:
[0323] a. As instruções emitidas são menos do que o máximo de 32.
[0324] b. As referências de operando de armazenamento são menos do que o máximo de 4 octowords.
[0325] c. As referências de operando de armazenamento estão na mesma linha de cache.
[0326] d. As referências de operando de armazenamento para os mesmos locais ocorrem na mesma ordem para todas as transações.
[0327] 2. Não se pode assegurar necessariamente que uma transação restrita será concluída com êxito em sua primeira execução. No entanto, se uma transação restrita que não viola qualquer uma das restrições listadas é abortada, a CPU emprega circuitos para assegurar que uma execução repetida da transação seja substancialmente bem- sucedida.
[0328] 3. Dentro de uma transação restrita, TRANSACTION BEGIN é uma instrução restrita, assim, uma transação restrita não pode ser agrupada.
[0329] 4. A violação de qualquer uma das restrições 1 -7 acima por uma transação restrita pode resultar em um circuito de programa.
[0330] 5. As limitações de uma transação restrita são similares àquelas de um circuito COMPARE-AND-SWAP. Em virtude de possíveis interferências de outras CPUs e do subsistema E/S, não há garantia, quanto à arquitetura, de que uma instrução COMPARE AND SWAP jamais será concluída com código de condição 0. A transação restrita pode sofrer interferência similar na forma de conflitos de busca ou armazenamento ou interrupções quentes.
[0331] A CPU emprega algoritmos de equidade para assegurar que, na ausência de quaisquer violações de restrição, uma transação restrita seja eventualmente concluída.
[0332] 6. De modo a determinar o número de iterações repetidas necessárias para concluir uma transação restrita, o programa pode empregar um contador em um registro geral que não está sujeito à máscara de salvamento de registro geral. Um exemplo é mostrado abaixo. LH1 15,0 Contador retorna para zero. Circuito TBEGINC 0(0),X'FE00' Preservar GRs 0-13 AHI 15,1 Incrementar contador ... ... Código de execução transacional restrita ... TEND Final de transação *R15 agora contém contagem de tentativas repetidas de transação
[0333] Observe que ambos os registros 14 e 15 não são restaurados neste exemplo. Observe também que, em alguns modelos, a contagem no registro geral 15 pode ser baixa se a CPU detecta a condição de abortar após conclusão da instrução TBEGINC, mas antes de conclusão da instrução AHI.
[0334] Como observado pela CPU, buscas e armazenamentos feitos no modo de execução transacional não são diferentes daqueles feitos enquanto não no modo de execução transacional.
[0335] Em uma concretização, o usuário (ou seja, aquele que cria a transação) escolhe se se uma transação deve ou não ser restrita. Uma concretização da lógica associada ao processamento de transações restritas e, em particular, ao processamento associado a uma instrução TBEGINC, é descrita com referência à figura 11. Execução da instrução TBEGINC faz com que a CPU entre no modo de execução transacional restrita ou permaneça no modo de execução não restrita. A CPU (ou seja, o processador) que executa TBEGINC realiza a lógica da figura 11.
[0336] Com referência à figura 11, com base na execução de uma instrução TBEGINC, uma função de serialização é realizada, ETAPA 1100. Uma função ou operação de serialização inclui concluir todos os acessos ao armazenamento conceitualmente anterior (e, para a z/Architecture, como um exemplo, configurações bit de mudança e bit de referência relacionadas) pela CPU, conforme observado por outras CPUs e pelo subsistema E/S, antes que acessos ao armazenamento conceitualmente anterior (e configurações de bit de mudança e bit de referência relacionadas) ocorram. A serialização afeta a sequência de todos os acessos da CPU ao armazenamento e às teclas de armazenamento, exceto quanto àqueles associados à busca por entradas na tabela ART e entradas na tabela DAT.
[0337] Conforme observado por uma CPU no modo de execução transacional, a serialização opera normalmente (conforme descrito acima). Conforme observado por outras CPUs e o subsistema E/S, uma operação de serialização realizada enquanto uma CPU está no modo de execução transacional modo ocorre quando a CPU sai do modo de execução transacional, quer como um resultado de uma instrução TRANSACTION END que diminui a profundidade de aninhamento de transação para zero (conclusão normal) ou como um resultado da transação ser abortada.
[0338] Após a realização de serialização, é feita uma determinação para saber se uma exceção é reconhecida, CONSULTA 1102. Se assim for, a exceção é gerida, ETAPA 1104. Por exemplo, uma exceção de operação especial é reconhecida e a operação é suprimida se o controle de execução transacional, bit 8 do registro de controle 0, é 0. Como outros exemplos, uma exceção de especificação é reconhecida e a operação é suprimida se o campo B1, bits 16-19 da instrução, é diferente de zero; uma exceção de executar é reconhecida e a operação é suprimida se TBEGINC é o alvo de uma instrução de tipo executar; e uma exceção de operação é reconhecida e a operação é suprimida se a unidade de execução transacional não está instalada na configuração. Se a CPU já está no modo de execução transacional restrita, então, uma exceção de programa por exceção de transação restrita é reconhecida e a operação é suprimida. Além disso, se a profundidade de aninhamento de transação, quando incrementado em 1, excede uma profundidade máxima de aninhamento de transação dependente de modelo, a transação é abortada com o código de abortar 13. Outras ou diferentes exceções podem ser reconhecidas e geridas.
[0339] No entanto, se não há uma exceção, então, é feita uma determinação para saber se a profundidade de aninhamento transação é zero, CONSULTA 1106. Se a profundidade de aninhamento transação é zero, então, o endereço do bloco diagnóstico de transação é considerado inválida, ETAPA 1108; a PSW de abortar transação é definida a partir dos conteúdos da PSW atual, exceto que o endereço de instrução da PSW de abortar transação designa a instrução TBEGINC, em vez da instrução sequencial seguinte, ETAPA 1110; e os conteúdos dos pares de registro gerais, conforme designado pela máscara de salvamento de registro geral, são salvos em um local dependente de modelo que não é diretamente acessível pelo programa, ETAPA 1112. Além disso, a profundidade de aninhamento é definida como 1, ETAPA 1114. Adicionalmente, o valor efetivo do controle de permitir operação de ponto flutuante (F) e controle de filtragem de interrupção de programa (PIFC) são definidos como zero, ETAPA 1316. Além disso, o valor efetivo do controle permitir modificação de AR (A), bit 12 do campo do campo I2 da instrução, é determinado, ETAPA 1118. Por exemplo, o controle A efetivo é a lógica AND do controle A na instrução TBEGINC para o nível atual e para quaisquer instruções TBEGIN externas.
[0340] Voltando à CONSULTA 1106, se a profundidade de aninhamento de transação é maior do que zero, então, a profundidade de aninhamento é incrementada em 1, ETAPA 1120. Além disso, o valor efetivo de permitir operação de ponto flutuante (F) é definido como zero e o valor efetivo do controle filtragem de interrupção de programa (PIFC) se mantém inalterado, ETAPA 1122. O processamento, então, continua com a ETAPA 1118. Em uma concretização, uma iniciação bem-sucedida da transação resulta no código de condição 0. Isto conclui uma concretização da lógica associada à execução de uma instrução TBEGINC.
[0341] Em uma concretização, a verificação de exceção fornecida acima pode ocorrer de forma variável. Uma ordem particular para a verificação de exceção é a seguinte:
[0342] Exceções com a mesma prioridade que a prioridade de condições de interrupção de programa para o caso geral.
[0343] Exceção de especificação em virtude do campo B1 conter um valor diferente de zero.
[0344] Abortar em virtude de profundidade de aninhamento de transação excedida.
[0345] Código de condição 0 em virtude de conclusão normal.
[0346] Além disso, o seguinte se aplica em uma ou mais concretizações:
[0347] 1. Registros designados para serem salvos pela máscara de salvamento de registro geral são restaurados apenas se a transação é abortada, não quando a transação termina, normalmente por meio de TRANSACTION END. Apenas os registros designados pela GRSM da instrução TRANSACTION BEGIN mais externa são restaurados quando de um procedimento de abortar.
[0348] O campo I2 designará todos os pares de registro que fornecem valores de entrada que são alterados por uma transação restrita. Assim, se a transação é abortada, os valores de registro de entrada serão restaurados para seus conteúdos originais quando a transação restrita é novamente executada.
[0349] 2. Na maioria dos modelos, desempenho aprimorado pode ser obtido, tanto em TRANSACTION BEGIN quanto quando a transação é abortada, ao especificar o número mínimo de registros necessários para serem salvos e restaurados na máscara de salvamento de registro geral.
[0350] 3. O seguinte ilustra os resultados da instrução TRANSACTION BEGIN (tanto TBEGIN quanto TBEGINC) com base na profundidade atual de aninhamento de transação (TND) e, quando a TND é diferente de zero, se a CPU está no modo de execução transacional não restrita ou restrita: Instrução TND=0 TBEGIN Entrar no modo de execução transacional não restrita TBEGINC Entrar no modo de execução transacional restrita Instrução TND>0 TBEGIN Modo NTX Modo CTX Continuar no modo de execução Exceção de transacional não restrita transação restrita TBEGINC Continuar no modo de execução Exceção de transacional não restrita transação restrita Explicação: CTX CPU está no modo de execução transacional restrita NTX CPU está no modo de execução transacional não restrita TND Profundidade de aninhamento de transação no início da instrução
[0351] Conforme descrito aqui, em um aspecto, uma transação restrita tem garantia de conclusão partindo do princípio de que não ela contém uma condição que a torna incapaz de ser concluída. Para garantir que ela seja concluída, o processador (por exemplo, CPU) que está executando a operação pode tomar certas medidas. Por exemplo, se uma transação restrita tem uma condição de abortar, a CPU pode, temporariamente:
[0352] (a) impedir execução fora de ordem;
[0353] (b) impedir que outras CPUs acessem os locais de armazenamento com conflito;
[0354] (c) induzir a retardos aleatórios no processamento de abortar; e/ou
[0355] (d) invocar outras medidas para facilitar a conclusão bem-sucedida.
[0356] Para resumir, o processamento de uma transação restrita é como segue:
[0357] • Se já no modo restrito-TX, uma exceção de transação restrita é reconhecida.
[0358] • Se a TND atual (Profundidade de Aninhamento de Transação) > 0, a execução prossegue como se transação não restrita:
[0359] o Definir controle F efetivo como zero
[0360] o PIFC efetivo se mantém inalterado
[0361] o Permitir TX não restrito externo chame a função de serviço que pode ou não usar TX restrito.
[0362] • Se TND atual = 0:
[0363] O Endereço de bloco diagnóstico TRANSACTION END é inválido
[0364] - Nenhum TDB instrução-especificado armazenado quando do procedimento de abortar
[0365] o Definir PSW de abortar transação para endereço de TBEGINC
[0366] - Não é a próxima instrução sequencial
[0367] o Pares de registro geral designados pela GRSM salvos em um local dependente de modelo não acessível por programa
[0368] o Token de transação opcionalmente formado (a partir do operando D2). O Token de transação é um identificador da transação. Ele pode ser igual ao endereço de operando de armazenamento ou outro valor.
[0369] • A efetivo = TBEGINC A & qualquer A externo
[0370] • TND incrementado
[0371] o Se TND vai de 0 a 1, a CPU entra no modo TX restrito
[0372] o Caso contrário, a CPU permanece no modo TX não restrito
[0373] • Instrução completa com CC0
[0374] • Exceções:
[0375] o Exceção de especificação (PIC (Código de Interrupção de Programa) 0006) se campo B1 é diferente de zero
[0376] o Exceção de operação especial (PIC 0013 hex) se controle de execução de transação (CR0.8) é zero
[0377] o Exceção de transação restrita (PIC 0018 hex) se emitido no modo TX restrito
[0378] o Exceção de operação (PIC 0001) se a unidade de execução transacional restrita não está instalada
[0379] o Exceção de executar (PIC 0003) se a instrução é o alvo de uma instrução de tipo executar
[0380] o Código de abortar 13 se profundidade de aninhamento excedida
[0381] • Condições de procedimento de abortar em transação restrita:
[0382] o PSW de abortar aponta para instrução TBEGINC
[0383] - Não é a próxima instrução
[0384] - Condição de abortar faz com que todo TX seja reiniciado
[0385] * Nenhuma falha de caminho
[0386] o A CPU toma medidas especiais para assegurar conclusão bem sucedida quando de reinicialização
[0387] o Supondo que não exista nenhum conflito persistente, interrupções ou violação restrita, uma eventual conclusão da transação é assegurada.
[0388] • Violação de restrição:
[0389] o PIC 0018 hex - indica violação de restrição de transação
[0390] o Ou transação é executada como se não restrita
[0391] Conforme descrito acima, além de processamento de transações restrita, o qual é opcional, em uma concretização, a unidade transacional também permite processamento de transação não restrita. Maiores detalhes sobre o processamento de transações não restritas e, em particular, o processamento associado a uma instrução TBEGIN, são descritos com referência à figura 12. Execução da instrução TBEGIN faz com que a CPU entre ou permaneça no modo de execução transacional não restrita. A CPU (ou seja, o processador) que executa TBEGIN executa a lógica da figura 12.
[0392] Com referência à figura 12, com base na execução da instrução TBEGIN, uma função de serialização (descrita acima) é realizada, ETAPA 1200. Após execução de serialização, é feita uma determinação para saber se uma exceção é reconhecida, CONSULTA 1202. Se assim for, então, a exceção é gerida, ETAPA 1204. Por exemplo, uma exceção de operação especial é reconhecida e a operação é suprimida se o controle de execução transacional, bit 8 do registro de controle 0, é zero. Além disso, uma exceção de especificação é reconhecida e a operação é suprimida se o controle de filtragem de interrupção de programa, bits 1415 do campo I2 da instrução, contém o valor 3; ou o primeiro endereço de operando não designa um limite de doubleword. Uma exceção de operação é reconhecida e a operação é suprimida se a unidade de execução transacional não está instalada na configuração; e uma exceção de executar é reconhecida e a operação é suprimida se TBEGIN é o alvo de uma instrução de tipo executar. Além disso, se a CPU está no modo de execução transacional restrita, então, uma exceção de programa por exceção de transação restrita é reconhecida e a operação é suprimida. Além disso, se a profundidade de aninhamento de transação, quando incrementada em 1, excede uma profundidade máxima de aninhamento de transação dependente de modelo, a transação é abortada com o código de abortar 13.
[0393] Além disso, quando o campo B1 da instrução é diferente de zero e a CPU não está no modo de execução transacional, ou seja, a operação de aninhamento de profundidade é igual a zero, então, a acessibilidade ao armazenamento para o primeiro operando é determinada. Se o primeiro operando não pode ser acessado para armazenamentos, então, uma exceção de acesso é reconhecida e a operação é ou anulada, suprimida ou encerrada, dependendo da condição de exceção de acesso específica. Adicionalmente, qualquer evento de alteração de armazenamento PER para o primeiro operando é reconhecida. Quando o campo B1 é diferente de zero e a CPU já está no modo de execução transacional, não se pode prever se a acessibilidade ao armazenamento do primeiro operando é determinada e eventos de alteração de armazenamento PER são detectados para o primeiro operando. Se o campo B1 é zero, então, o primeiro operando não é acessado.
[0394] Além de verificação de exceção, é feita uma determinação para saber se o processador está no modo de execução de transação (ou seja, a profundidade de aninhamento de transação é igual a zero), CONSULTA 1206. Se a CPU não está no modo de execução transacional, então, os conteúdos de pares de registro geral selecionados são salvos, ETAPA 1208. Em particular, os conteúdos dos pares gerais registro designados pela máscara de salvamento de registro geral são salvos em um local dependente de modelo que não é diretamente acessível pelo programa.
[0395] Além disso, é feita uma determinação para saber se o campo B1 da instrução é zero, CONSULTA 1210. Se o campo B1 não é igual a zero, o primeiro endereço de operando é colocado no endereço de bloco diagnóstico de transação, ETAPA 1214 e o endereço de bloco diagnóstico de transação é válido. Além disso, a PSW de abortar transação é definida a partir dos conteúdos da PSW atual, ETAPA 1216. O endereço de instrução da PSW de abortar transação designa a próxima instrução sequencial (ou seja, a instrução após a TBEGIN mais externa).
[0396] Além disso, é feita uma determinação do valor efetivo do controle de permitir modificação AR (A), bit 12 do campo I2 da instrução, ETAPA 1218. O controle A efetivo é a lógica AND do controle A na instrução TBEGIN para o nível atual e para todos os níveis externos. Além disso, um valor efetivo do controle de permitir operação de ponto de flutuante (F), bit 13 do campo I2 da instrução, é determinado, ETAPA 1220. O controle efetivo F é a lógica AND do controle F na instrução TBEGIN para o nível atual e para todos os níveis externos. Além disso, um valor efetivo do controle filtragem de interrupção de programa (PIFC), bits 14-15 do campo I2 da instrução, é determinado, ETAPA 1222. O valor efetivo de PIFC é o maior valor na instrução TBEGIN para o nível atual e para todos os níveis externos.
[0397] Adicionalmente, um valor de um é adicionado à profundidade de aninhamento de transação, ETAPA 1224, e a instrução é concluída com definição do código de condição 0, ETAPA 1226. Se a profundidade de aninhamento de transição vai de zero a um, a CPU entra no modo de execução transacional não restrita; caso contrário, a CPU permanece no modo de execução transacional não restrita.
[0398] Voltando à CONSULTA 1210, se B1 é igual a zero, então, o endereço do bloco diagnóstico de transação é válido, ETAPA 1211, e o processamento continua com a ETAPA 1218. Similarmente, se a CPU está no modo de execução transacional, CONSULTA 1206, o processamento continua com a ETAPA 1218.
[0399] O Código de Condição resultante da execução de TBEGIN inclui, por exemplo:
[0400] 0 Início de transação bem-sucedido.
[0401] 1 --
[0402] 2 --
[0403] 3 --
[0404] Exceções de programa incluem, por exemplo:
[0405] • Acesso (store, primeiro operando)
[0406] • Operação (unidade de execução transaciona não instalada)
[0407] • Operação especial
[0408] • Especificação
[0409] • Transação restrita (em virtude de instrução restrita)
[0410] Em uma concretização, a verificação de exceção fornecida acima pode ocorrer de forma variável. Uma ordem particular para a verificação de exceção é a seguinte:
[0411] • Exceções com a mesma prioridade que a prioridade das condições de interrupção de programa para o caso geral.
[0412] • Exceção de especificação em virtude de valor de PIFC reservado.
[0413] • Exceção de especificação em virtude do primeiro endereço de operando não estar em um limite de doubleword.
[0414] • Exceção de acesso (quando o campo B1 é diferente de zero).
[0415] • Abortar em virtude de profundidade máxima de aninhamento de transação excedida.
[0416] • Código de condição 0 em virtude de conclusão normal.
[0417] Notas:
[0418] 1. Quando o campo B1 é diferente de zero, é aplicável o seguinte:
[0419] • Um bloco diagnóstico de transação (TDB) acessível deve ser fornecido quando uma transação mais externa é iniciada - mesmo se a transação nunca é abortada.
[0420] • Uma vez que não se pode prever se a acessibilidade do TDB é testada quanto a transações agrupadas, um TDB acessível deve ser fornecido para qualquer instrução TBEGIN agrupada.
[0421] • O desempenho de qualquer TBEGIN no qual o campo B1 é diferente de zero e o desempenho de qualquer processamento de abortar que ocorre para uma transação que foi iniciada por uma TBEGIN mais externa na qual o campo B1 é diferente de zero podem ser mais lentos do que quando o campo B1 é zero.
[0422] 2. Registros designados para serem salvos pela máscara de salvamento de registro geral são restaurados, em uma concretização, apenas se a transação é abortada e não quando a operação termina normalmente por meio de TRANSACTION END. Apenas os registros designados pela GRSM da instrução TRANSACTION BEGIN mais externa são restaurados quando de um procedimento de abortar.
[0423] O campo I2 deve designar todos os pares de registros que fornecem valores de entrada que são alterados pela transação. Assim, se a transação é abortada, os valores de registro de entrada serão restaurados para seus conteúdos originais quando o gerenciador de interrupção é introduzido.
[0424] 3. Espera-se que a instrução TRANSACTION BEGIN (TBEGIN) seja seguida por uma instrução de ramificação condicional que determinará se a transação foi iniciada com sucesso.
[0425] 4. Se uma transação é abortada em virtude de condições que não resultam em uma interrupção, a instrução designada pela PSW de abortar transação recebe o controle (ou seja, a instrução após TRANSACTION BEGIN mais externa (TBEGIN)). Além do código de condição definido pela instrução TRANSACTION BEGIN (TBEGIN), os códigos de condição 1-3 também são definidos quando uma transação é abortada.
[0426] Portanto, a sequência de instruções após a instrução TRANSACTION BEGIN mais externa (TBEGIN) deve ser capaz de acomodar todos os quatro códigos de condição, mesmo embora a instrução TBEGIN defina apenas o código 0 neste exemplo.
[0427] 5. Na maioria dos modelos, desempenho aprimorado pode ser obtido, tanto em TRANSACTION BEGIN quanto quando a transação é abortada, ao especificar o número mínimo de registros necessários para serem salvos e restaurados na máscara de salvamento de registro geral.
[0428] 6. Enquanto no modo de execução transacional não restrita, um programa pode chamar uma função de serviço a qual pode alterar os registros de acesso ou registros de ponto flutuante (incluindo o registro de controle de ponto flutuante). Embora tal rotina de serviço possa salvar os registros alterados na entrada e restaurá-los na saída, a transação pode ser cancelada antes de saída normal da rotina. Se o programa que faz a chamada não toma nenhuma medida para preservação destes registros enquanto a CPU está no modo de execução transacional não restrita, ele pode não ser capaz de tolerar a alteração da função de serviço dos registros.
[0429] Para evitar a alteração inadvertida de registros de acesso enquanto no modo de execução transacional não restrita, o programa pode definir o controle permitir modificação de AR, bit 12 do campo I2 da instrução TRANSACTION BEGIN, como zero. Similarmente, para evitar alteração inadvertida dos registros de ponto flutuante, o programa pode definir o controle permitir operação de ponto flutuante, bit 13 do campo I2 da instrução TBEGIN, para zero.
[0430] 7. Condições de exceção de programa reconhecidas durante execução da instrução TRANSACTION BEGIN (TBEGIN) estão sujeitas ao controle de filtragem de interrupção de programa efetivo definido por quaisquer instruções TBEGIN externas. Condições de exceção de programa reconhecidas durante a execução da instrução TBEGIN mais externa não estão sujeitas à filtragem.
[0431] 8. Para atualizar vários locais de armazenamento de uma maneira serializada, sequências de códigos convencionais podem empregar uma palavra de bloqueio (semáforo). Se (a) a execução transacional é usada para implementar atualizações de múltiplos locais de armazenamento, (b) o programa também fornece um caminho "fall-back" a ser invocado se a transação é abortada e (c) o caminho fall-back emprega uma palavra de bloqueio, então, o caminho de execução transacional também deve testar a disponibilidade do bloqueio e, se o bloqueio não está disponível, terminar a transação por meio da instrução TRANSACTION END e ramificar para o caminho fall-back. Isto assegura acesso consistente aos recursos serializados, independentemente se eles são atualizados de forma transacional.
[0432] Alternativamente, o programa poderia abortar se o bloqueio não está disponível, no entanto, o processamento de abortar pode ser significativamente mais lento do que simplesmente terminar a transação através de TEND.
[0433] 9. Se o controle de filtragem de interrupção de programa (PIFC) efetivo é maior do que zero, a CPU filtra a maioria das interrupções de programa por exceção de dados. Se o controle permitir operação de ponto flutuante (F) efetivo é zero, o código de exceção de dados (DXC) não será definido no registro de controle de ponto flutuante como um resultado de um procedimento de abortar em virtude de uma condição de exceção de programa por exceção de dados. Neste cenário (filtragem se aplica e o controle F efetivo é zero), o único local no qual o DXC é inspecionado é no TDB TBEGIN-especificado. Se o gerenciador de abortar do programa é para inspecionar o DXC em tal situação, registro geral B1 deve ser diferente de zero, de modo que um endereço de bloco diagnóstico de transação (TDBA) válido seja definido.
[0434] 10. Se uma alteração de armazenamento PER ou condição de detecção de endereço zero existe para o TDB TBEGIN-especificado da instrução TBEGIN mais externa e supressão de evento PER não se aplica, o evento PER é reconhecido durante execução da instrução, assim, fazendo com que a transação seja abortada imediatamente, independentemente de existir qualquer outra condição de abortar.
[0435] Em uma concretização, a instrução TBEGIN define implicitamente o endereço de abortar transação como sendo a próxima instrução sequencial após TBEGIN. Este endereço se destina a ser uma instrução de ramificação condicional que determina se ramificar ou não dependendo do código de condição (CC). Uma TBEGIN bem-sucedida define CC0, enquanto que uma transação abortada define CC1, CC2 ou CC3.
[0436] Em uma concretização, a instrução TBEGIN fornece um operando de armazenamento opcional que designa o endereço de um bloco diagnóstico de transação (TDB) no qual a informação é armazenada se a transação é abortada.
[0437] Além disso, ela fornece um operando imediato que inclui o seguinte:
[0438] Uma máscara de salvamento de registro geral (GRSM) que indica quais pares de registros gerais devem ser salvos no início da execução transacional e restaurados se a transação é abortada;
[0439] Um bit (A) para permitir a abortar a transação se a transação modifica registros de acesso;
[0440] Um bit (F) para permitir abortar a transação se a transação tenta executar instruções de ponto flutuante; e
[0441] Um controle de filtragem de interrupção de programa (PIFC) que permite que os níveis individuais de transação sejam ignorados pela apresentação real de uma interrupção de programa se uma transação é abortada.
[0442] Os controles A, F e PIFC podem ser diferentes em vários níveis de aninhamento e restaurados para o nível anterior quando os níveis de transação interna são terminados.
[0443] Além disso, a TBEGIN (ou, em outra concretização, TBEGINC) é usada para formar um Token de transação. Opcionalmente, o Token pode ser combinado com um Token formado pela instrução TEND. Para cada instrução TBEGIN (ou TBEGINC), como um exemplo, um Token é formado a partir do primeiro endereço de operando. Este Token pode ser formado independentemente se o registro de base é zero (ao contrário da definição de endereço de TDB, a qual só ocorre quando o registro de base é diferente de zero). Para cada instrução TRANSACTION END executada com um registro de base diferente de zero, um Token similar é formado a partir de seu operando de armazenamento. Se os Tokens não combinam, uma exceção de programa pode ser reconhecida para alertar o programa quanto a uma instrução com incompatibilidade.
[0444] A correspondência de Token fornece um mecanismo destinado a aprimorar a confiabilidade do software, assegurando que uma declaração TEND está corretamente emparelhada com uma TBEGIN (ou TBEGINC). Quando uma instrução TBEGIN é executada em um nível de aninhamento particular, um Token é formado a partir do endereço de operando de armazenamento que identifica, neste caso, uma transação. Quando uma instrução TEND correspondente é executada, um Token é formado a partir do endereço de operando de armazenamento da instrução e a CPU compara o Token inicial para o nível de aninhamento com o Token final. Se os Tokens não correspondem, uma condição de exceção é reconhecida. Um modelo pode implementar a correspondência de Token somente para um determinado número de níveis de aninhamento (ou nenhum nível de aninhamento). O Token pode não envolver todos os bits do endereço de operando de armazenamento ou os bits podem ser combinados através de indexação ou outros métodos. Um Token pode ser formado pela instrução TBEGIN mesmo que seu operando de armazenamento não seja acessado.
[0445] Para resumir, uma operação de processamento é não restrita como segue:
[0446] • Se TND = 0:
[0447] o Se B1 Φ 0, endereço de bloco diagnóstico de transação definido a partir do primeiro endereço de operando.
[0448] o PSW de abortar transação definida para o próximo endereço de instrução sequencial.
[0449] o Pares gerais registro designados pelo campo I2 são salvos em local dependente de modelo.
[0450] - Não são diretamente acessíveis pelo programa
[0451] • Controles PIFC, A & F efetivos calculados
[0452] o A efetivo = TBEGIN A & qualquer A externo
[0453] o F efetivo = TBEGIN F & qualquer F externo
[0454] o PIFC efetivo = max (TBEGIN PIFC, qualquer PIFC externo)
[0455] • Profundidade de aninhamento de transação (TND) incrementada
[0456] • Se TND vai de 0 para 1, a CPU entra no modo de execução transacional
[0457] • Definir código de condição como zero
[0458] o Quando a instrução TBEGIN seguinte recebe o controle:
[0459] - TBEGIN bem sucedida indicada por CC0
[0460] - Transação abortada indicada por CC diferente de zero
[0461] • Exceções:
[0462] o Código de abortar 13 se profundidade de aninhamento excedida
[0463] o Exceção de acesso (um dos vários PICs) se o campo B1 é diferente de zero e o operando de armazenamento não pode ser acessado para uma operação de armazenamento
[0464] o Executar exceção (PIC 0003) se a instrução TBEGIN é o alvo de uma instrução de tipo executar
[0465] o Exceção de operação (PIC 0001) se a unidade de execução transacional não está instalada
[0466] o PIC 0006 se
[0467] - PIFC é inválido (valor de 3)
[0468] - Segundo endereço de operando não tem doubleword alinhadas
[0469] o PIC 0013 hex se o controle de execução transacional (CR0.8) é zero
[0470] o PIC 0018 hex se emitido no modo TX restrito
[0471] Conforme indicado acima, uma transação, seja restrita ou não restrita, pode ser terminada por uma instrução TRANSACTION END (TEND). Maiores detalhes sobre o processamento de uma instrução TRANSACTION END (TEND) são descritos com referência à figura 13. A CPU (ou seja, o processador) que executa TEND executa a lógica da figura 13.
[0472] Com referência à figura 13, inicialmente, com base no processador (por exemplo, busca, recebimento, etc.) a instrução TEND, várias verificações de exceção são realizadas e, se há uma exceção, CONSULTA 1300, então, a exceção é gerida, ETAPA 1302. Por exemplo, se TRANSACTION END é o alvo de uma instrução de tipo executar, a operação é suprimida e uma exceção de executar é reconhecida; e uma exceção de operação especial é reconhecida e a operação é suprimida se o controle de execução transacional, bit 8 de CR0, é zero. Ainda além disso, uma exceção de operação é reconhecida e a operação é suprimida se a unidade de execução transacional não está instalada na configuração.
[0473] Voltando à CONSULTA 1300, se uma exceção não é reconhecida, então, a profundidade de aninhamento de transação é diminuída (por exemplo, em um), ETAPA 1304. Uma determinação é feita para saber se a profundidade de aninhamento de transação é zero após a diminuição, CONSULTA 1306. Se a profundidade de aninhamento transação é zero, então, todos os acessos aos armazenamentos feitos pela transação (e outras transações dentro do aninhamento de transações, se houver, das quais esta transação é uma parte) são confirmados, ETAPA 1308. Além disso, a CPU sai do modo de execução transacional, ETAPA 1310, e conclui as instruções, ETAPA 1312.
[0474] Voltando à CONSULTA 1306, se a profundidade de aninhamento de transação não é igual a zero, então, a instrução TRANSACTION END é apenas concluída.
[0475] Se a CPU está no modo de execução transacional no início da operação, o código de condição é definido como 0; caso contrário, o código de condição é definido como 2.
[0476] Observe que controle permitir operação de ponto flutuante (F) efetivo, o controle permitir modificação de AR (A) e o controle de filtragem de interrupção de programa (PIFC) são redefinidos como seus respectivos valores antes da instrução TRANSACTION BEGIN que iniciou o nível que está sendo terminado. Além disso, uma função de serialização é realizada quando de conclusão da operação.
[0477] Os eventos de busca de instrução PER e conclusão de transação que são reconhecidos quando a conclusão da instrução TRANSACTION END mais externa não resulta em um procedimento de abortar transação.
[0478] Em um exemplo, a instrução TEND também inclui um campo de base B2 e um campo de deslocamento D2, os quais são combinados (por exemplo, adicionados) para criar um segundo endereço de operando. Neste exemplo, a correspondência de Token pode ser realizada. Por exemplo, quando B2 é diferente de zero, bits selecionados do segundo endereço de operando são comparados com um Token de transação formado pela TBEGIN correspondente. Se houver uma incompatibilidade, há uma exceção (por exemplo, PIC 0006).
[0479] Além do acima, uma transação pode ser abortada, implícita ou explicitamente, por uma instrução de abortar transação. Abortar uma transação por TABORT ou de outro modo inclui realização de uma série de etapas. Um exemplo das etapas para processamento de abortar, em geral, é descrito com referência à figura 14. Se há uma diferença no processamento com base em se o procedimento de abortar é iniciado por TABORT ou de outro modo é indicado na descrição abaixo. Em um exemplo, um processador (por exemplo, CPU) está executando a lógica da figura 14.
[0480] Com referência à figura 14, inicialmente, com base na execução da instrução TABORT ou um procedimento de abortar implícito, acessos aos armazenamentos não transacionais feitos enquanto a CPU estava no modo de execução transacional são confirmados, ETAPA 1400. Outros armazenamentos (por exemplo, armazenamentos transacionais) feitos enquanto a CPU estava no modo de execução transacional são descartados, ETAPA 1402.
[0481] A CPU sai do modo de execução transacional, ETAPA 1404, e armazenamentos subsequentes ocorrem de forma não transacional. A PSW atual é substituída pelos conteúdos da PSW de abortar transação, exceto que o código de condição é definido conforme descrito acima (exceto a situação abaixo na qual, se o TDBA é válido, mas o bloqueio é inacessível, então CC = 1), ETAPA 1406. Como parte de ou subsequente ao processamento de abortar, o processamento ramifica para o local especificado pela PSW de abortar transação para executar uma ação. Em um exemplo no qual a transação é uma transação restrita, o local é a instrução TBEGINC e a ação é nova execução desta instrução; e, em um outro exemplo no qual a transação é uma transação não restrita, o local é a instrução após TBEGIN e a ação é execução da dita instrução a qual pode ser, por exemplo, uma ramificação para um gerenciador de abortar.
[0482] Então, é feita uma determinação para saber se o endereço do bloco diagnóstico de transação é válido, CONSULTA 1408. Quando o endereço do bloco diagnóstico de transação é válido, a informação diagnóstica que identifica o motivo para o procedimento de abortar e os conteúdos dos registros gerais são armazenados no bloco diagnóstico de transação TBEGIN-especificado, ETAPA 1410. Os campos TDB armazenados e condições sob as quais eles são armazenados são aquelas descritas acima com referência ao bloco diagnóstico de transação.
[0483] Se o endereço do bloco diagnóstico de transação é válido, mas o bloco se tornou inacessível após a execução da instrução TBEGIN mais externa, o bloco não é acessado e código de condição 1 se aplica.
[0484] Para transações que são abortadas em virtude de condições de exceção de programa que resultam em uma interrupção, o TDB de interrupção de programa é armazenado.
[0485] Voltando à CONSULTA 1408, se o endereço do bloco diagnóstico de transação não é válido, nenhum TDB TBEGIN-especificado é armazenado e o código de condição 2 ou 3 se aplica, dependendo da razão para abortar.
[0486] Além do acima, a profundidade de aninhamento de transação é igual a zero, ETAPA 1412. Além disso, quaisquer pares de registros gerais designados para serem salvos pela instrução TBEGIN mais externa são restaurados, ETAPA 1414. Pares de registros gerais que não foram designados para serem salvos pela instrução TBEGIN mais externa não são restaurados quando uma transação é abortada.
[0487] Ainda, uma função de serialização é executada, ETAPA 14 16. Uma função ou operação de serialização inclui concluir todos os acessos de armazenamento conceitualmente anteriores (e, para a z/Architecture , como um exemplo, conf igurações bit de mudança e bit de referência relacionados) pela CPU, conforme observado por outras CPUs e pelo subsistema E/S, antes que acessos ao armazenamento conceitualmente subsequente (e as configurações de bit de mudança e bit de referência relacionados) ocorram. A serialização afeta a sequência de todos os acessos da CPU ao armazenamento e às teclas de armazenamento, exceto quanto àqueles associados à busca de entradas na tabela ART e entradas na tabela DAT.
[0488] Conforme observado por uma CPU no modo de execução transacional, a serialização opera normalmente (conforme descrito acima). Conforme observado por outras CPU e o subsistema E/S, uma operação de serialização realizada enquanto uma CPU está no modo de execução transacional ocorre quando a CPU sai do modo de execução transacional, quer como um resultado de uma instrução TRANSACTION END que diminui a profundidade de aninhamento de transação para zero (conclusão normal) ou como um resultado de um procedimento de abortar transação.
[0489] Para o processamento de abortar iniciado de outra forma que não através de TABORT, se a transação é abortada em virtude de uma condição de exceção que resulta em uma interrupção, CONSULTA 1418, os códigos de interrupção ou parâmetros associados à interrupção são armazenados nos locais de armazenamento atribuídos correspondentes ao tipo de interrupção, ETAPA 1420. Além disso, a PSW atual, conforme definido acima, é armazenada na PSW de interrupção antiga, ETAPA 1422. Depois disso, ou se a operação não foi abortada em virtude de uma condição de exceção que resultou em uma interrupção, a instrução termina com o código de condição zero.
[0490] Além do acima, em uma concretização para execução interpretativa da z/Architecture, quando a CPU está no modo de execução transacional e uma condição do visitante ocorre que normalmente resulta nos códigos de intercepção 4, 12, 44, 56, 64, 68 ou 72, a intercepção não ocorre. Pelo contrário, a CPU permanece no modo de execução interpretativo e as condições para abortar são indicadas para o visitante como segue:
[0491] • Para uma transação não restrita, a transação é abortada em virtude de uma instrução restrita (código de abortar 11). Se um evento PER concorrente foi detectado e a CPU está habilitada para PER, uma interrupção de programa ocorre com o código de interrupção 0280 hex.
[0492] • Para uma transação restrita, uma exceção de restrição de transação é reconhecida. Se um evento PER concorrente foi detectado e a CPU está habilitada para PER, uma interrupção de programa ocorre com o código de interrupção 0298 hex.
[0493] Quando uma transação é abortada em virtude de uma condição de exceção de programa, a filtragem de interrupção de programa pode inibir a apresentação de uma interrupção. Para interrupções de programa que possam resultar em intercepção, a filtragem também inibe a intercepção.
[0494] Conforme indicado acima, em uma concretização, quando um programa inicia uma transação não restrita (ou seja, uma transação para a qual é fornecida uma rotina de recuperação de gerenciador de abortar), o programa pode designar um local de armazenamento no qual a informação diagnóstica deve ser registrada se a transação é abortada. A informação diagnóstica também pode ser fornecida se uma transação é abortada em virtude de uma interrupção de programa ou se o procedimento de abortar resulta em uma intercepção de execução interpretativa, tal como uma intercepção de interrupção de programa.
[0495] Em uma concretização, com base em um procedimento de abortar de uma transação, a informação diagnóstica é fornecida em um bloco diagnóstico de transação (TDB). A informação incluiu, por exemplo: a profundidade de aninhamento de transação; código de abortar transação; Token de conflito (para transações que são abortadas em virtude de conflitos); endereço de instrução de abortar transação; parâmetros de interrupção de programa para transações que são abortadas em virtude de condições de exceção de programa filtradas; informação diagnóstica dependente de modelo, incluindo indicações de ramificação de execução transacional; registros de finalidade geral no momento do procedimento de abortar; e/ou outras informações, conforme descrito acima com referência à figura 9.
[0496] Zero, um ou dois TDBs podem ser armazenados quando de um procedimento de abortar, incluindo: um TDB especificado pelo programa (também conhecido como TBEGIN- TDB) que pode ou não estar presente para uma transação não restrita; um TDB de interrupção de programa fornecido ao programa de controle quando uma transação é abortada em virtude de uma condição de exceção de programa não filtrada (ou seja, uma condição que, na verdade, resulta em uma interrupção de programa); e/ou um TDB de intercepção fornecido a um programa host (por exemplo, sistema operacional) quando uma transação é abortada em virtude de determinadas condições de intercepção.
[0497] Uma concretização do processamento associado ao armazenamento de zero ou mais TDBs é descrito com referência à figura 15 A. Esta lógica é executada por um processador, tal como o processador que faz a detecção de uma condição de abortar.
[0498] Com referência à figura 15A, inicialmente, um procedimento de abortar (ou seja, uma conclusão anormal) de uma transação é detectada, ETAPA 1500. Então, é feita uma determinação para saber se um endereço de bloco diagnóstico transação (TDBA) válido foi especificado, CONSULTA 1502. Por exemplo, se ele é um endereço de bloco diagnóstico de transação válido especificado por uma instrução TBEGIN (por exemplo, B1 de TBEGIN > 0). Se um TDBA válido é fornecido, a informação é armazenada no TDB especificado pelo programa, conforme descrito acima, ETAPA 1504.
[0499] Depois disso, ou se um TDBA válido não é fornecido, uma nova determinação é feita para saber se a condição de abortar é em virtude de uma interrupção, CONSULTA 1506. Se assim for, então, a informação é armazenada no TDB de interrupção de programa, conforme acima indicado, ETAPA 1508.
[0500] Depois disso, ou se o procedimento de abortar não é em virtude de uma interrupção de programa, é feita uma determinação para saber se o procedimento de abortar resultou em uma intercepção, CONSULTA 1510. Se o procedimento de abortar não resultou em uma intercepção, este processamento é concluído. Caso contrário, a informação é armazenada em um TDB de intercepção, conforme descrito acima, ETAPA 1512. Isto conclui o processamento.
[0501] Conforme indicado aqui, um ou mais TDBs ou mesmo nenhum TDB pode ser armazenado como um resultado de um procedimento de abortar. No entanto, cada TDB que é armazenado fornece a informação diagnóstica relacionada a um procedimento de abortar que pode facilitar o debugging. Em uma concretização, a informação diagnóstica inclui indicações de ramificação de execução transacional que forneceram um histórico de ramificação que pode ser útil em debugging de uma transação falha.
[0502] Detalhes adicionais em relação ao fornecimento de indicações de ramificação são descritos com referência à figura 15B. Em uma concretização, esta lógica é executada por um processador, tal como o processador que está executando a transação.
[0503] Com referência à figura 15B, inicialmente, uma transação é iniciada, por exemplo, através de uma instrução TRANSACTION BEGIN, ETAPA 1550. Em um exemplo, a transação é uma transação não restrita e, portanto, a instrução TBEGIN é empregada. Durante execução da transação, é feita uma determinação para saber se uma ou mais instruções de ramificação são executadas, CONSULTA 1552. À medida que uma instrução de ramificação é encontrada, um bit em um vetor, denominado uma indicação de ramificação de execução transacional (TXBI), é definido para indicar se a ramificação foi seguida, ETAPA 1554. Se a ramificação foi seguida, então, o bit é definido, por exemplo, como um e, se a ramificação não foi seguida, então, o bit é definido, por exemplo, como zero. Isto é realizado para cada instrução de ramificação encontrada.
[0504] Em particular, em um exemplo, o vetor inclui 64 bits. Cada um dos primeiros 63 bits do vetor indica os resultados de execução de uma instrução de ramificação enquanto a CPU estava no modo de execução transacional como se segue: 0 - a instrução concluída sem ramificação; e 1 - a instrução concluída com ramificação. O bit 0 representa o resultado da primeira de tais instruções de ramificação, o bit 1 representa o resultado da segunda de tais instruções e assim por diante. Isto não significa necessariamente que instruções de ramificação separadas estão presentes. Se a transação é em circuito, a mesma ramificação pode ser executada várias vezes, resultando na definição de múltiplos bits no vetor.
[0505] Se menos de 63 instruções de ramificação são executadas enquanto a CPU estava no modo de execução transacional, os bits mais à direita que não correspondem às instruções de ramificação são definidos como zeros (incluindo o bit 63). Quando mais de 63 instruções de ramificação são executadas, o bit 63 do TXBI é definido como um. Assim, em um exemplo, se uma transação executada em linha reta de código (ou seja, sem circuitos) que contém lotes de ramificações - nenhuma das quais foram seguidas - é possível que o vetor contenha todos os zeros, exceto quanto ao bit mais à direita.
[0506] Se, durante processamento da transação, a transação é abortada, CONSULTA 1556, então, em um exemplo, o vector é armazenado em um bloco diagnóstico de transação, ETAPA 1558. Em um exemplo, há uma pluralidade de blocos diagnósticos de transação, conforme descrito acima, e o vetor pode ser armazenado em zero ou mais destes blocos, dependendo do tipo de procedimento de abortar e/ou se um endereço de bloco diagnóstico de transação válido é fornecido na instrução transação TRANSACTION BEGIN. Por exemplo, se TBEGIN fornece um TDB de endereço válido, então, o vetor é armazenado em um TDB especificado pelo programa, conforme descrito acima; se o procedimento de abortar foi em virtude de uma interrupção, então, o vetor é armazenado em um TDB de interrupção de programa, conforme descrito acima; e/ou se o procedimento de abortar resulta em uma intercepção, então, o vetor é armazenado em um TDB de intercepção, conforme descrito acima.
[0507] Ao fornecer os bits em um bloco diagnóstico de transação, é fornecido um histórico de ramificação que pode ser usado em diagnóstico de transação falha.
[0508] Além de fornecimento de informação diagnóstica, conforme descrito acima, também é fornecido um meio eficiente para atualizar múltiplos objetos não adjacentes na memória sem serialização clássica ("coursegrained"), tal como bloqueio, que confere um potencial para aprimoramento de desempenho de multiprocessador significativo. Ou seja, múltiplos objetos não adjacentes são atualizados sem forçar mais a ordenação de acesso ao armazenamento "course-grained" que é fornecida pelas técnicas clássicas, tais como bloqueios e semáforos. A execução especulativa é permitida sem configuração de recuperação onerosa e as transações restritas são oferecidas para atualizações de footprint pequenas, simples.
[0509] A execução transacional pode ser usada em uma variedade de cenários incluindo, porém sem limitações, inlining parcial, processamento especulativo e a elisão de bloqueio. Em inlining parcial, a região parcial a ser incluída no caminho executado está embutida em TBEGIN/TEND. TABORT pode ser incluído no mesmo para reverter um estado em um lado de saída. Para especulação, tal como em Java, verificações nulas sobre indicadores sem referência podem ser retardadas para a borda de circuito usando uma transação. Se o indicador é nulo, a transação pode ser abortada com segurança usando TABORT, o qual está incluído dentro de TBEGIN/TEND.
[0510] Quanto a elisão de bloqueio, um exemplo de seu uso é descrito com referência às figuras 16A-16B e o fragmento de código fornecido abaixo.
[0511] A figura 16A mostra uma lista duplamente vinculada 1600 de uma pluralidade de elementos de fila 1602a-1602d. Um novo elemento de fila 1602e deve ser inserido na lista duplamente vinculada de elementos de fila 1600. Cada elemento de fila 1602a-1602e inclui um ponteiro progressivo 1604a-1604e e um ponteiro regressivo 1606a- 1606e. Conforme mostrado na figura 16B, para adicionar o elemento fila 1602e entre os elementos de fila 1602b e 1602c, (1) o ponteiro regressivo 1606e é definido para apontar para o elemento de fila 1602b, (2) o ponteiro progressivo 1604e é definido para apontar para o elemento de fila 1602c, (3) o ponteiro regressivo 1606c é definido para apontar para o elemento de fila 1602e e (4) o ponteiro progressivo 1604b é definido para apontar para o elemento de fila 1602e.
[0512] Um fragmento de código exemplificativo que corresponde às figuras 16A-16B está abaixo:
[0513] * R1 - endereço do novo elemento de fila a ser inserido.
[0514] * R2 - endereço do ponto de inserção; novo elemento é inserido antes do elemento apontado por R2.
[0515] NEW USING QEL, R1
[0516] CURR USING QEL, R2
[0517] LH1 R15, 10 Carregar contagem de
[0518] tentativas. LOOP TBEGIN TDB, X'C000' Começar transação
[0519] (salvar GRs 0-3) JNZ ABORTED CC diferente de zero
[0520] significa abortada. LG R3, CURR.BWD Apontar para elemento
[0521] anterior. PREV USING QEL, R3 Torná-lo endereçável.
[0522] STG R1, PREV.FWD Atualizar ponteiro
[0523] progressivo anterior. STG R1, CURR.BWD Atualizar ponteiro
[0524] regressivo atual. STG R1, NEW.FWD Atualizar novo ponteiro progressivo.
[0525] STG R1, NEW.BWD Atualizar novo ponteiro regressivo.
[0526] TEND Terminar transação
[0527] ...
[0528] ABOR JO NO_RETRY CC3: abortar sem TED tentativa.
[0529] JCT R15, LOOP Tentar transação umas poucas vezes.
[0530] J NO_RETRY Nenhuma tarefa após 10x; fazer desta forma. hard
[0531] Em um exemplo, se a transação é usada para elisão de bloqueio, mas o caminho fallback usa um bloqueio, a transação é pelo menos para buscar a palavra de bloqueio para ver que ela está disponível. O processador assegura que a transação é abortada se outra CPU acessa o bloqueio não transacional.
[0532] Conforme usado aqui, armazenamento, armazenamento central, armazenamento principal, memória e memória principal são usados alternadamente, salvo indicação em contrário, implicitamente pelo uso ou explicitamente. Além disso, embora, em uma concretização, uma transação de retardo efetivo inclua retardar a confirmação de armazenamentos transacionais para a memória principal até conclusão de uma transação selecionada, em outra concretização, o retardo eficaz de transação inclui permitir atualizações transacionais na memória, mas manter os valores antigos e restaurar a memória para os valores antigos quando de um procedimento de abortar.
[0533] Conforme será apreciado por aqueles versados na técnica, um ou mais aspectos podem ser concretizados como um sistema, método ou produto de programa de computador. Deste modo, um ou mais aspectos podem assumir a forma de uma concretização totalmente de hardware, uma concretização totalmente de software (incluindo firmware, software residente, microcódigo, etc.) ou uma concretização que combina os aspectos de software e hardware que pode, em geral, ser dita aqui como um "circuito", "módulo" ou "sistema". Além disso, um ou mais aspectos podem assumir a forma de um produto de programa de computador incorporado em uma ou mais meios legíveis em computador tendo o código de programa legível em computador incorporado nos mesmos.
[0534] Qualquer combinação de um ou mais meios legíveis em computador pode ser usada. O meio legível em computador pode ser um meio de armazenamento legível em computador. Um meio de armazenamento legível em computador pode ser, por exemplo, porém sem limitações, um sistema eletrônico, magnético, óptico, eletromagnético, infravermelho ou semicondutor, aparelho, ou dispositivo, ou qualquer combinação adequada dos anteriores. Exemplos mais específicos (uma lista não exaustiva) do meio de armazenamento legível em computador incluem os seguintes: uma conexão elétrica que tem um ou mais fios, uma disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (Random Access Memory - RAM), uma memória de leitura apenas (Read Only Memory - ROM), uma memória de leitura apenas programável apagável (EPROM ou memória flash), uma fibra óptica, uma memória de leitura apenas em compact disk portátil (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético ou qualquer combinação adequada dos anteriores. No contexto do presente documento, um meio de armazenamento legível em computador pode ser um qualquer meio material que possa conter ou armazenar um programa para uso por ou em relação a um sistema, aparelho ou dispositivo de execução de instruções.
[0535] Com referência agora à figura 17, em um exemplo, um produto de programa de computador 1700 inclui, por exemplo, um ou mais meios de armazenamento legíveis em computador não transitórios para armazenar o meio de código de programa legível em computador ou lógica 1702 no mesmo para fornecer e facilitar um ou mais aspectos.
[0536] O código de programa incorporado em um meio legível em computador pode ser transmitido usando um meio adequado incluindo, porém sem limitações, dispositivos sem fio, cabos, cabos de fibra óptica, RF, etc., ou qualquer combinação adequada dos anteriores.
[0537] O código de programa de computador para realização de operações para um ou mais aspectos pode ser escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objetos, tal como Java, Smalltalk, C++ ou similar, e linguagens de programação processual convencionais, tal como a linguagem de programação "C", as linguagens de programação "assembler" ou similar. O código de programa pode ser totalmente executado no computador do usuário, parcialmente no computador do usuário, como um pacote de software independente, parcialmente no computador do usuário e parcialmente em um computador remoto ou inteiramente no computador remoto ou servidor. No último caso, o computador remoto pode estar conectado ao computador do usuário através de qualquer tipo de rede, incluindo uma rede de área local (Local Area Network - LAN) ou uma rede de longa distância (Wide Area Network - WAN) ou a conexão pode ser feita a um computador externo (por exemplo, através da Internet usando um provedor de serviço de Internet).
[0538] Um ou mais aspectos são descritos aqui com referência a ilustrações de fluxograma e/ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa de computador. Será entendido que cada bloco das ilustrações de fluxograma e/ou diagramas de blocos, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de blocos, pode ser implementado por instruções de programa de computador. Estas instruções de programa de computador podem ser fornecidas a um processador de um computador de aplicação geral, computador de finalidade especial ou outro aparelho de processamento de dados programável para produzir uma máquina, de modo que as instruções, as quais são executadas por meio do processador do computador ou outro aparelho de processamento de dados programável, criam meios para implementação das funções/medidas especificadas no bloco ou blocos do fluxograma e/ou diagrama de blocos.
[0539] Estas instruções de programa de computador também podem ser armazenadas em um meio legível em computador que pode controlar um computador, outro aparelho de processamento de dados programável ou outros dispositivos para funcionar de uma forma particular, de modo que as instruções armazenadas no meio legível em computador produzam um artigo de manufatura que inclui instruções as quais implementam a função/medida especificada no bloco ou blocos do fluxograma e/ou diagrama de blocos.
[0540] As instruções do programa de computador também podem ser carregadas em um computador, outro aparelho de processamento de dados programável ou outros dispositivos ao fazer com que uma série de etapas operacionais sejam executadas no computador, outro aparelho programável ou outros dispositivos para produzir um processo implementado por computador, de modo que as instruções as quais são executadas no computador ou outro equipamento programável permitam processos para execução das funções/medidas especificadas no bloco ou blocos do fluxograma e/ou diagrama de blocos.
[0541] O fluxograma e diagramas de blocos nas figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações. A este respeito, cada bloco nos fluxogramas ou diagramas de blocos pode representar um módulo, segmento ou parte de código que compreende uma ou mais instruções executáveis para implementar a(s) função(ões) lógica(s) especificada(s). Também deverá ser observado que, em algumas implementações alternativas, as funções citadas no bloco podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, na verdade, ser executados de modo substancialmente simultâneo ou os blocos podem, algumas vezes, ser executados na ordem inversa, dependendo da funcionalidade envolvida. Também deverá ser notado que cada bloco do diagrama de blocos e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de blocos e/ou ilustração de fluxograma, pode ser implementado por sistemas com base em hardware para finalidades especiais que realizam as funções ou medidas especificadas, ou combinações de instruções de hardware de finalidades especiais e computador.
[0542] Além dos acima, um ou mais aspectos podem ser fornecidos, oferecidos, implantados, gerenciados, solicitados, etc. por um prestador de serviços que oferece gerenciamento de ambientes de clientes. Por exemplo, o prestador de serviços pode criar, manter, suportar, etc. um código de computador e/ou uma infraestrutura de computador que executa um ou mais aspectos de um ou mais clientes. Em contrapartida, o prestador de serviços pode receber o pagamento do cliente no âmbito de um contrato de subscrição e/ou taxa, como exemplos. Adicional ou alternativamente, o prestador de serviços pode receber o pagamento pela venda de conteúdo publicitário para uma ou mais empresas terceirizadas.
[0543] Em um aspecto, um aplicativo pode ser implantado para realização de uma ou mais concretizações. Como um exemplo, a implementação de um aplicativo compreende o fornecimento de infraestrutura de computador operável para desempenhar uma ou mais concretizações.
[0544] Em outro aspecto, uma infraestrutura de computação pode ser implementada compreendendo integração de código legível em computador em um sistema de computação, na qual o código, em combinação com o sistema de computação, é capaz de desempenhar uma ou mais concretizações.
[0545] Como ainda um outro aspecto, pode ser fornecido um processo para a integração de infraestrutura de computação que compreende integração de código legível em computador para um sistema de computador. O sistema de computador compreende um meio legível em computador, no qual o meio legível em computador compreende uma ou mais concretizações. O código, em combinação com o sistema de computador, é capaz de desempenhar uma ou mais concretizações.
[0546] Embora várias concretizações sejam descritas acima, estas são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem ser usados para incorporar e usar uma ou mais concretizações. Ainda, podem ser usadas diferentes instruções, formatos de instrução, campos de instrução e/ou valores de instrução. Além disso, informação diagnóstica e/ou tipos de blocos diagnósticos de transação diferentes e/ou adicionais podem ser fornecidos/usados. Muitas variações são possíveis.
[0547] Além disso, outros tipos de ambientes de computação podem se beneficiar e ser usados. Como um exemplo, um sistema de processamento de dados apropriado para armazenar e/ou executar um código de programa é utilizável, o qual inclui pelo menos dois processadores acoplados direta ou indiretamente, a elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, a memória local empregada durante execução real do código de programa, armazenamento em massa e a memória cache, os quais permitem o armazenamento temporário de pelo menos um código de programa, de modo a reduzir o número de vezes em que um código deve ser recuperado de armazenamento em massa durante execução.
[0548] Dispositivos de Entrada/Saída ou E/S (incluindo, porém sem limitações, teclados, monitores, dispositivos indicadores, DASD, fita, CDs, DVDs, pen drives e outros meios de memória, etc.) podem ser acoplados ao sistema diretamente ou através de controladores de E/S intermediários. Adaptadores de rede também podem ser acoplados ao sistema para permitir que o sistema de processamento de dados seja acoplado a outros sistemas de processamento de dados ou impressoras ou dispositivos de armazenamento remotos através de redes públicas ou privadas intermediárias. Modems, modems a cabo e cartões de Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0549] Com referência à figura 18, os componentes representativos de um sistema de computador Host 5000 para implementar uma ou mais concretizações são representados. Os representantes do computador Host 5000 compreendem uma ou mais CPUs 5001 em comunicação com a memória do computador (ou seja, armazenamento central) 5002, bem como interfaces de E/S para dispositivos de meios de armazenamento 5011 e redes 5010 para se comunicar com outros computadores ou SANs e assim por diante. A CPU 5001 é compatível com uma arquitetura que tem um conjunto de instruções arquitetada e funcionalidade arquitetada. A CPU 5001 pode ter tradução de registro de acesso (ART) 5012, a qual inclui um buffer de consulta de ART (ALB) 5013, para seleção de um espaço de endereço a ser usado para tradução dinâmica de endereços (DAT) 5003 para transformar endereços de programa (endereços virtuais) em endereços de memória reais. Uma DAT inclui, tipicamente, um buffer de consulta da tradução (Translation Lookaside Buffer - TLB) 5007 para caching de traduções, de modo que acessos posteriores ao bloco de memória de computador 5002 não venham a requerer o retardo de tradução de endereços. Tipicamente, um cache 5009 é empregado entre a memória de computador 5002 e o processador 5001. O cache 5009 pode ser hierárquico tendo um grande cache disponível para mais de uma CPU e caches menores, mais rápidos (nível inferior) entre o cache grande e cada CPU. Em algumas implementações, os caches de nível inferior são divididos para proporcionar caches de nível inferior separados para busca de instrução e acessos de dados. Em uma concretização, para a instalação TX, um bloco diagnóstico de transação (TDB) 5100 e um ou mais buffers 5101 podem ser armazenados em um ou mais do cache 5009 e da memória 5002. Em um exemplo, no modo TX, os dados são inicialmente armazenados em um buffer TX e, quando o modo TX termina (por exemplo, TEND mais externa), os dados na memória intermediária são armazenados (confirmados) na memória ou, se houver um procedimento de abortar, os dados na memória intermediária são descartados.
[0550] Em uma concretização, uma instrução é buscada a partir da memória 5002 por uma unidade de busca de instrução 5004 por meio de um cache 5009. A instrução é decodificada na unidade de decodificação de instrução 5006 e encaminhada (com outras instruções em algumas concretizações) para a unidade ou unidades de execução de instrução 5008. Tipicamente, várias unidades de execução 5008 são empregadas, por exemplo, uma unidade de execução aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução de instrução de ramificação. Além disso, em uma concretização da instalação TX, vários controles TX 5110 podem ser empregados. A instrução é executada pela unidade de execução, que acesso operandos a partir de registros específicos para instrução ou memória, conforme necessário. Se um operando deve ser acessado (carregado ou armazenado) a partir da memória 5002, a unidade de carregamento/armazenamento 5005, tipicamente, processa o acesso sob controle da instrução que está sendo executada. As instruções podem ser executadas em circuitos de hardware ou em microcódigo interno (firmware) ou por uma combinação de ambos.
[0551] De acordo com um aspecto da unidade TX, o processador 5001 também inclui uma PSW 5102 (por exemplo, TX e/ou PSW de abortar), uma profundidade de aninhamento 5104, um TDBA 5106 e um ou mais registros de controle 5108.
[0552] Conforme mencionado, um sistema de computador inclui informação em armazenamento local (ou principal), bem como endereçamento, proteção e referência e registro de alteração. Alguns aspectos do endereçamento incluem o formato de endereços, o conceito de espaços de endereço, os vários tipos de endereços e a maneira pela qual um tipo de endereço é traduzido para outro tipo de endereço. Alguns dos armazenamentos principais incluem locais de armazenamento permanentemente atribuídos. O armazenamento principal confere ao sistema armazenamento de dados de acesso rápido diretamente endereçável. Tanto programa quanto dados devem ser carregados no armazenamento principal (a partir de dispositivos de entrada) antes que eles possam ser processados.
[0553] O armazenamento principal pode incluir um ou mais armazenamentos de buffer menores, de acesso mais rápido, às vezes denominados caches. Um cache está, tipicamente, fisicamente associado a uma CPU ou um processador de E/S. Os efeitos, exceto quanto ao desempenho, da construção física e uso de meios de armazenamento distintos geralmente não são observáveis pelo programa.
[0554] Caches separados podem ser mantidos por instruções e para operandos de dados. A informação dentro de um cache é mantida em bytes contíguos em um limite integral denominado um bloco de cache ou linha de cache (ou linha para abreviar). Um modelo pode fornecer uma instrução EXTRACT CACHE ATTRIBUTE a qual retorna do tamanho de uma linha de cache em bytes. Um modelo também pode fornecer instruções PREFETCH DATA e PREFETCH DATA RELATIVE LONG as quais realizam a pré-busca de armazenamento no cache de dados ou instrução ou a liberação de dados a partir do cache.
[0555] O armazenamento é visto como uma cadeia horizontal longa de bits. Para a maioria das operações, os acessos ao armazenamento ocorrem em uma sequência da esquerda para a direita. A cadeia de bits é subdividida em unidades de oito bits. Uma unidade de oito bits é denominada um byte, o qual é o bloco de construção básico de todos os formatos de informação. Cada local de byte no armazenamento é identificado por um número inteiro não negativo único, o qual é o endereço deste local de byte ou, simplesmente, o endereço de byte. Locais de byte adjacentes têm endereços consecutivos, começando com 0 do lado esquerdo e prosseguindo em uma sequência da esquerda para a direita. Os endereços são números inteiros binários sem assinatura e têm 24, 31 ou 64 bits.
[0556] A informação é transmitida entre o armazenamento e uma CPU ou um subsistema de canal de um byte, ou um grupo de bytes, de cada vez. A menos que especificado de outro modo, por exemplo, na z/Architecture, um grupo de bytes no armazenamento é endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo é especificado de forma implícita ou explícita pela operação que está sendo executada. Quando usado em uma operação de CPU, um grupo de bytes é denominado um campo. Dentro de cada grupo de bytes, por exemplo, na z/Architecture, os bits são contados em uma sequência da esquerda para a direita. Na z/Architecture, os bits mais à esquerda são, algumas vezes, ditos como os bits "de ordem superior" e os bits mais à direita como os bits "de ordem inferior". Os números de bit não são endereços de armazenamento, no entanto. Apenas bytes podem ser endereçados. Para operar sobre bits individuais de um byte no armazenamento, o byte inteiro é acessado. Os bits em um byte são numerados de 0 a 7, da esquerda para a direita (por exemplo, na z/Architecture). Os bits em um endereço podem ser numerados 8-31 ou 40-63 para endereços de 24 bits, ou 1-31 ou 33-63 para endereços de 31bits; eles são numerados 0-63 para endereços de 64 bits. Em um exemplo, os bits 8-31 e 1-31 se aplicam a endereços que estão em um local (por exemplo, registro) que tem 32 bits de largura, enquanto que os bits 40-63 e 33-63 se aplicam a endereços que estão em um local amplo de 64 bits. Dentro de qualquer outro formato de comprimento fixo de múltiplos bytes, os bits que constituem o formato são consecutivamente numerados a partir de 0. Para fins de detecção de erro e, de preferência, para correção, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Tais bits de verificação são gerados automaticamente pela máquina e não podem ser controlados diretamente pelo programa. As capacidades de armazenamento são expressas em número de bytes. Quando o comprimento de um campo de operando de armazenamento é implicado pelo código de operação de uma instrução, o campo é dito como tendo um comprimento fixo, o qual pode ser um, dois, quatro, oito ou dezesseis bytes. Campos maiores podem ser implícitos para algumas instruções. Quando o comprimento de um campo de operando de armazenamento não está implícito, mas é declarado explicitamente, o campo é dito como tendo um comprimento variável. Operandos de comprimento variável podem variar, quanto ao comprimento, em incrementos de um byte (ou, com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando a informação é colocada em armazenamento, são substituídos somente os conteúdos daqueles locais de bytes que estão incluídos no campo designado, mesmo que a largura do caminho físico ao armazenamento possa ser maior do que o comprimento do campo que está sendo armazenado.
[0557] Determinadas unidades de informação estarão em um limite integral no armazenamento. Um limite é denominado integral para uma unidade de informação quando seu endereço de armazenamento é um múltiplo do comprimento da unidade em bytes. Nomes especiais são fornecidos a campos de 2, 4, 8, 16 e 32 bytes em um limite integral. Uma halfword é um grupo de dois bytes consecutivos em um limite de dois bytes e é o bloco de construção básico de instruções. Uma palavra é um grupo de quatro bytes consecutivos em um limite de quatro bytes. Uma doubleword é um grupo de oito bytes consecutivos em um limite de oito bytes. Uma quadword é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Uma octoword é um grupo de 32 bytes consecutivos em um limite de 32 bytes. Quando os endereços de armazenamento designam halfwords, words, doublewords, quadwords e octowords, a representação binária do endereço contém um, dois, três, quatro ou cinco bits zero mais à direita, respectivamente. As instruções estarão sobre limites integrais de dois bytes. Os operandos de armazenamento da maioria das instruções não têm exigências quanto ao alinhamento de limites.
[0558] Em dispositivos que implementam caches separados para instruções e operandos de dados, um retardo significativo pode ser experimentado se armazenamentos de programa em uma linha de cache a partir da qual as instruções são posteriormente obtidas, independentemente se o armazenamento altera as instruções que são posteriormente buscadas.
[0559] Em um exemplo, as concretizações podem ser praticadas por software (algumas vezes dito como código interno licenciado, firmware, microcódigo, milicódigo, código de pico e assim por diante, qualquer um dos quais seria consistente com uma ou mais concretizações). Com referência à figura 18, o código de programa de software que incorpora um ou mais aspectos pode ser acessado pelo processador 5001 do sistema host 5000 a partir de dispositivos de meio de armazenamento a longo prazo 5011, tal como um drive de CD-ROM, drive de fita ou disco rígido. O código de programa de software pode ser concretizado em qualquer um de uma variedade de meios conhecidos para uso com um sistema de processamento de dados, tais como um disquete, um disco rígido ou um CD-ROM. O código pode ser distribuído em tais meios ou pode ser distribuído aos usuários a partir da memória do computador 5002 ou armazenamento de um sistema de computador através de uma rede 5010 para outros sistemas de computador para uso pelos usuários de tais outros sistemas.
[0560] O código de programa de software inclui um sistema operacional que controla a função e interação de vários componentes do computador e um ou mais programas de aplicativos. O código de programa normalmente é paginado a partir do dispositivo de meio de armazenamento 5011 ao armazenamento de computador de velocidade relativamente maior 5002 onde ele está disponível para processamento pelo processador 5001. Técnicas e métodos para incorporar o código de programa de software na memória, em meios físicos e/ou distribuição do código de software através de redes são bem conhecidos e não serão discutidos aqui. O código de programa, quando criado e armazenado em um meio material (incluindo, porém sem limitações, módulos de memória eletrônicos (RAM), memória flash, compact disks (CDs), DVDs, fitas magnéticas e similares) é, muitas vezes, dito como um "produto de programa de computador". O meio do produto de programa de computador é, tipicamente, legível por um circuito de processamento, de preferência um sistema de computador, para execução pelo circuito de processamento.
[0561] A figura 19 ilustra um sistema de hardware de servidor ou workstation representativo no qual uma ou mais concretizações podem ser praticadas. O sistema 5020 da figura 19 compreende um sistema de computador de base representativo 5021, tal como um computador pessoal, workstation ou um servidor, que inclui dispositivos periféricos opcionais. O sistema de computador de base 5021 inclui um ou mais processadores 5026 e um barramento usado para conectar e permitir comunicação entre o(s) processador(es) 5026 e os outros componentes do sistema 5021 de acordo com técnicas conhecidas. O barramento conecta o processador 5026 à memória 5025 e armazenamento a longo prazo 5027, o qual pode incluir uma unidade de disco rígido (incluindo qualquer um de meios magnéticos, CD, DVD e memória flash, por exemplo) ou uma unidade de fita, por exemplo. O sistema 5021 pode incluir também um adaptador de interface de usuário, o qual conecta o microprocessador 5026 através do barramento a um ou mais dispositivos de interface, tais como um teclado 5024, um mouse 5023, uma impressora/scanner 5030 e/ou outros dispositivos de interface, os quais podem ser qualquer dispositivo de interface de usuário, tal como uma tela sensível ao toque, teclado de entrada digitalizada, etc. O barramento também conecta um dispositivo de exibição 5022, tal como uma tela ou monitor de LCD, ao microprocessador 5026 através de um adaptador de vídeo.
[0562] O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de comunicação 5028 com uma rede 5029. Adaptadores de rede exemplificativos são canais de comunicação, Token Ring, Ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar usando uma interface sem fio, tal como um cartão de pacote de dados digitais para celular (Cellular Digital Packet Data - CDPD). O sistema 5021 pode ser associado a quaisquer outros computadores em uma rede local (LAN) ou uma rede de longa distância (WAN) ou o sistema 5021 pode estar em uma configuração de cliente/servidor com outro computador, etc. Todas estas configurações, bem como o hardware e software de comunicação apropriados, são conhecidos na técnica.
[0563] A figura 20 ilustra uma rede de processamento de dados 5040 na qual uma ou mais concretizações podem ser praticadas. A rede de processamento de dados 5040 pode incluir uma pluralidade de redes individuais, tal como uma rede sem fio e uma rede cabeada, cada uma das quais pode incluir uma pluralidade de workstations individuais 5041, 5042, 5043, 5044. Além disso, conforme aqueles versados na técnica apreciarão, uma ou mais redes locais podem ser incluídas, onde uma LAN pode compreender uma pluralidade de workstations inteligentes acopladas a um processador host.
[0564] Ainda com referência à figura 20, as redes também podem incluir computadores mainframe ou servidores, tal como um computador gateway (servidor de cliente 5046) ou servidor de aplicativo (servidor remoto 5048 o qual pode acessar um repositório de dados e também pode ser acessado diretamente a partir de uma workstation 5045). Um computador gateway 5046 serve como um ponto de entrada em cada rede individual. Um gateway é necessário quando de conexão de um protocolo de rede a outro. O gateway 5046 pode, de preferência, ser acoplado a outra rede (Internet 5047, por exemplo) por meio de um link de comunicações. O gateway 5046 também pode ser diretamente acoplado a uma ou mais workstations 5041, 5042, 5043, 5044 usando um link de comunicações. O computador gateway pode ser implementado usando um servidor IBM eServer System z disponibilizado pela International Business Machines Corporation.
[0565] Com referência simultaneamente à figura 19 e figura 20, o código de programação de software 5031 o qual pode incorporar um ou mais aspectos pode ser acessado pelo processador 5026 do sistema 5020 a partir do meio de armazenamento a longo prazo 5027, tal como uma unidade de CD-ROM ou disco rígido. O código de programação de software pode ser incorporado em qualquer um de uma variedade de meios conhecidos para uso com um sistema de processamento de dados, tal como um disquete, um disco rígido ou um CD- ROM. O código pode ser distribuído em tais meios ou pode ser distribuído para os usuários 5050, 5051 a partir da memória ou armazenamento de um sistema de computador através de uma rede para outros sistemas de computador para uso pelos usuários de tais outros sistemas.
[0566] Alternativamente, o código de programação pode ser incorporado na memória 5025 e acessado pelo processador 5026 usando o barramento do processador. Tal código de programação inclui um sistema operacional que controla a função e interação de vários componentes do computador e um ou mais programas de aplicativo 5032. O código de programa normalmente é paginado a partir de meios de armazenamento 5027 para a memória de alta velocidade 5025 onde ele se encontra disponível para processamento pelo processador 5026. As técnicas e métodos para que contém o código de programação de software na memória, em meios físicos e/ou distribuição de código de software através de redes são bem conhecidos e não serão discutidos aqui. O código de programa, quando criado e armazenado em um suporte material (incluindo, porém sem limitações, módulos de memória eletrônicos (RAM), memória flash, compact disk (CDs), DVDs, fitas magnéticas e similares é, muitas vezes, dito como um "produto de programa de computador". O meio do produto de programa de computador é, tipicamente, legível por um circuito de processamento, de preferência um sistema de computador, para execução pelo circuito de processamento.
[0567] O cache que está mais prontamente disponível para o processador (normalmente mais rápido e menor do que outros caches do processador) é o cache mais inferior (L1 ou nível um) e o armazenamento principal (memória principal) é o cache de nível mais elevado (L3 se há 3 níveis). O cache de nível inferior é frequentemente dividido em um cache de instruções (I-Cache) que contém instruções de máquina a serem executadas e um cache de dados (D-Cache) que contém os operandos de dados.
[0568] Com referência à figura 21, uma concretização exemplificativa do processador é descrita para o processador 5026. Tipicamente, um ou mais níveis de cache 5053 são usados para armazenamento temporário em blocos de memória de modo a aprimorar o desempenho do processador. O cache 5053 é um buffer de alta velocidade que contém as linhas de cache de dados de memória que são suscetíveis de serem usadas. As linhas de cache típicas têm 64, 128 ou 256 bytes de dados da memória. Caches separados são, frequentemente, empregados para caching de instruções do que para caching de dados. A coerência de cache (sincronização de cópias de linhas na memória e dos caches) é, muitas vezes, fornecida por vários algoritmos "snoop" bem conhecidos na técnica. O armazenamento de memória principal 5025 de um sistema de processador é, muitas vezes, dito como um cache. Em um sistema de processador tendo 4 níveis de cache 5053, o armazenamento principal 5025 é, algumas vezes, dito como o nível 5 (L5) do cache, uma vez que ele é geralmente mais rápido e ocupa apenas uma parte do armazenamento não volátil (DASD, fita, etc.) que está disponível para um sistema de computador. O armazenamento principal 5025 "caches" páginas de dados paginadas para dentro e para fora do armazenamento principal 5025 pelo sistema operacional.
[0569] Um contador de programa (contador de instruções) 5061 mantém o rastreio do endereço da instrução atual que está sendo executada. Um contador de programa em um processador de z/Architecture tem 64 bits e pode ser truncado para 31 ou 24 bits para suportar os limites de endereçamento anteriores. Um contador de programa é, tipicamente, incorporado em uma PSW (palavra de estado de programa) de um computador, de modo que ele persiste durante mudança de contexto. Assim, um programa em curso, tendo um valor de contador de programa, pode ser interrompido, por exemplo, o sistema operacional (mudança de contexto do ambiente do programa para o ambiente do sistema operacional). A PSW do programa mantém o valor do contador de programa enquanto o programa não está ativo e o contador de programa (na PSW) do sistema operacional é usado enquanto o sistema operacional está em execução. Tipicamente, o contador de programa é incrementado em uma quantidade igual ao número de bytes da instrução atual. Instruções RISC (Reduced Instruction Set Computing) são, tipicamente, de comprimento fixo, enquanto que instruções CISC (Complex Instruction Set Computing) são, tipicamente, de comprimento variável. As instruções da IBM z/Architecture são instruções CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado por uma operação de mudança de contexto ou uma operação de ramificação seguida de uma instrução de ramificação, por exemplo. Em uma operação de mudança de contexto, o valor do contador de programa atual é salvo na palavra de estado de programa, juntamente com outras informações de estado sobre o programa que está sendo executado (tais como códigos de condição) e um novo valor de contador de programa é carregado apontando para uma instrução de um novo módulo de programa a ser executado. Uma operação de ramificação seguida é executada de modo a permitir que o programa de tome decisões ou um loop dentro do programa ao carregar o resultado da instrução de ramificação no contador de programa 5061.
[0570] Tipicamente, uma unidade de busca de instrução 5055 é empregada para obter instruções sobre o comportamento do processador de 5026. A unidade de busca realiza busca pelas "próximas instruções sequenciais", instruções alvo de instruções de ramificação seguidas ou primeiras instruções de um programa após uma mudança de contexto. As unidades de busca de instrução modernas, muitas vezes, empregam técnicas de pré-busca a instruções de busca especulativamente com base na probabilidade de que instruções PREFETCHED poderiam ser usadas. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclui a instrução sequencial seguinte e bytes adicionais de outras instruções sequenciais.
[0571] As instruções buscadas são, então, executadas pelo processador 5026. Em uma concretização, a(s) instrução(ões) buscada(s) é/são passada(s) para uma unidade de encaminhamento 5056 da unidade de busca. A unidade de encaminhamento descodifica a(s) instrução(ões) e encaminha informações sobre a(s) instrução(ões) decodificada(s) para unidades 5057, 5058, 5060 apropriadas. Uma unidade de execução 5057, tipicamente, receberá informação sobre instruções aritméticas decodificadas provenientes da unidade busca de instrução 5055 e executará as operações aritméticas em operandos de acordo com o código de operação da instrução. Os operandos são fornecidos à unidade de execução 5057, de preferência a partir da memória 5025, registros arquitetados 5059 ou de um campo imediato da instrução que está sendo executada. Os resultados da execução, quando armazenados, são armazenados na memória 5025, registros 5059 ou em outro hardware de máquina (tais como registros de controle, registros PSW e assim por diante).
[0572] Os endereços virtuais são transformados em endereços reais usando a tradução dinâmica de endereços 5062 e, opcionalmente, usando a tradução de registro de acesso 5063.
[0573] Um processador 5026 tem, tipicamente, uma ou mais unidades 5057, 5058, 5060 para executar a função da instrução. Com referência à figura 22A, uma unidade de execução 5057 pode se comunicar com registros gerais arquitetados 5059, uma unidade de decodificação/ encaminhamento 5056, uma unidade de carregamento/ armazenamento 5060 e outras unidades de processamento 5065 por meio de interface lógica 5071. Uma unidade de execução 5057 pode empregar vários circuitos de registro 5067, 5068, 5069 para armazenar informações que a unidade lógica aritmética (Arithmetic Logic Unit - ALU) 5066 operará. A ALU executa operações aritméticas tais como somar, subtrair, multiplicar e dividir, bem como função lógica, tais como AND, OR ou AND EXCLUSIVE-OR (XOR), girar e deslocar. De preferência, a ALU suporta operações especializadas que são dependentes do design. Outros circuitos podem fornecer outras unidades arquitetadas 5072, incluindo códigos de condição e lógica de suporte à recuperação, por exemplo. Tipicamente, o resultado de uma operação da ALU é mantido em um circuito de registro de saída 5070 que pode transmitir o resultado de uma variedade de outras funções de processamento. Há muitas configurações de unidades de processador, a presente descrição se destina apenas a fornecer uma compreensão representativa de uma concretização.
[0574] Uma instrução ADD, por exemplo, seria executada em uma unidade de execução 5057 tendo funcionalidade lógica e aritmética, enquanto que uma instrução de ponto flutuante, por exemplo, seria executada em uma execução de ponto flutuante tendo-se especializado capacidade de ponto flutuante. De preferência, uma unidade de execução opera em operandos identificados por uma instrução de execução de uma função definida por código de operação sobre os operandos. Por exemplo, uma instrução ADD pode ser executada por uma unidade de execução 5057 em operandos encontrados em dois registros 5059 identificados pelos campos de registro da instrução.
[0575] A unidade de execução 5057 executa a adição aritmética sobre dois operandos e armazena o resultado em um terceiro operando, em que o terceiro operando pode ser um terceiro registro ou um dos dois registros de código. A unidade de execução usa, de preferência, uma Unidade Lógica Aritmética (ALU) 5066 que é capaz de executar uma variedade de funções lógicas, tais como Deslocar, Girar, AND, OR e XOR, bem como uma variedade de funções algébricas, incluindo qualquer um de adicionar, subtrair, multiplicar, dividir. Algumas ALUs 5066 são concebidas para operações escalares e algumas para ponto flutuante. Os dados podem ser Big Endian (onde o byte menos significativo está no endereço de byte mais superior) ou Little Endian (onde o byte menos significativo está no endereço de byte mais inferior) dependendo da arquitetura. A IBM z/Architecture é Big Endian. Campos assinados podem ser sinal e magnitude, 1's complemento ou 2's complemento, dependendo da arquitetura. Um número de complemento 2's é vantajoso pelo fato de que a ALU não precisa projetar uma capacidade de subtrair, uma vez que um valor negativo ou um valor positivo no complemento 2' requer apenas uma adição dentro da ALU. Os números são comumente descritos abreviados, onde um campo de 12 bits define um endereço de um bloco de 4096 bytes e é comumente descrito como um bloco de 4 Kbyte (quilo-byte), por exemplo.
[0576] Com referência à figura 22B, a informação instrução de ramificação para execução de uma instrução de ramificação é, tipicamente, enviada para uma unidade de ramificação 5058 a qual, muitas vezes, emprega um algoritmo de previsão de ramificação, tal como uma tabela de histórico ramificação 5082 para prever o resultado de ramificação antes que outras operações condicionais sejam concluídas. O alvo da instrução de ramificação atual será obtido e especulativamente executado antes que as operações condicionais sejam concluídas. Quando as operações condicionais são concluídas, as instruções de ramificação especulativamente executadas são concluídas ou descartadas com base nas condições da operação condicional e nos resultados especulados. A instrução de ramificação típica pode testar códigos de condição e ramificar para um endereço de destino se os códigos de condição satisfazem a exigência de ramificação da instrução de ramificação, um endereço de destino pode ser calculado com base em vários números, incluindo aqueles encontrados em campos de registro ou em um campo imediato da instrução, por exemplo. A unidade de ramificação 5058 pode empregar uma ALU 5074 que tem uma pluralidade de circuitos de registro de entrada 5075, 5076, 5077 e um circuito de registro de saída 5080. A unidade de ramificação 5058 pode se comunicar 5081 com registros gerais 5059, decodificar a unidade de encaminhamento 5056 ou outros circuitos 5073, por exemplo.
[0577] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões, incluindo um comutador de contexto iniciado por um sistema operacional, uma exceção de programa ou erro que causa uma mudança de contexto, um sinal de interrupção de E/S que causa uma mudança de contexto ou atividade de multi-threading de uma pluralidade de programas (em um ambiente de multithreading), por exemplo. De preferência, uma ação de mudança de contexto salva informações de estado sobre um programa atualmente em execução e, então, carrega a informação de estado em outro programa que está sendo denominado. Informações de estado podem ser salvas em registros de hardware ou na memória, por exemplo. Informações sobre o estado compreendem, de preferência, um valor de contador de programa que aponta para uma próxima instrução a ser executada, códigos de condição, informação de tradução de memória e conteúdo de registro arquitetado. A atividade de mudança de contexto pode ser exercida por circuitos de hardware, programas de aplicativos, programas de sistema operacional ou código de firmware (microcódigo, pico-código ou código licenciado interno (Licensed Internal Code - LIC)) isoladamente ou em combinação.
[0578] Um processador acessa operandos de acordo com métodos de instrução definidos. A instrução pode fornecer um operando imediato usando o valor de uma parte da instrução, pode fornecer um ou mais campos de registro que apontam explicitamente para registros de uso geral ou registros de finalidade específico (registros de ponto flutuante, por exemplo). A instrução pode usar registros implícitos identificados por um campo de código de operação como operandos. A instrução pode usar locais de memória para operandos. Um local de memória de um operando pode ser fornecido por um registro, um campo imediato ou uma combinação de registros e campo imediato, conforme exemplificado pela unidade de deslocamento longo da z/Architecture, em que a instrução define um registro de base, um registro de índice e um campo imediato (campo de deslocamento) que são adicionados juntos para fornecer o endereço do operando na memória, por exemplo. O local aqui implica, tipicamente, um local na memória principal (armazenamento principal), salvo indicação em contrário.
[0579] Com referência à figura 22C, um processador acessa o armazenamento usando uma unidade de carregamento/armazenamento 5060. A unidade de carregamento/ armazenamento 5060 pode executar uma operação de carregamento ao obter o endereço do operando de destino na memória 5053 e carregar o operando em um registro 5059 ou outro local na memória 5053 ou pode executar uma operação de armazenamento ao obter o endereço do operando de destino na memória 5053 e armazenar os dados obtidos a partir de um registro 5059 ou outro local na memória 5053 no local do operando alvo na memória 5053. A unidade de carregamento/ armazenamento 5060 pode ser especulativa e pode acessar a memória em uma sequência que está fora de ordem em relação à sequência de instruções; no entanto, a unidade de carregamento/ armazenamento 5060 é para manter a aparência a programas que as instruções foram executadas na ordem. Uma unidade de carregamento/ armazenamento 5060 pode se comunicar 5084 com registros gerais 5059, unidade de decodificação/expedição 5056, interface de cache/memória 5053 ou outros elementos 5083 e compreende vários circuitos de registro 5086, 5087, 5088 e 5089, ALUs 5085 e lógica de controle 5090 para calcular endereços de armazenamento e fornecer sequenciamento para manter as operações na ordem. Algumas operações podem estar fora de ordem, mas a unidade de carregamento/ armazenamento fornece a funcionalidade para fazer com que operações fora da ordem pareçam ao programa como tendo sido realizadas na ordem, conforme é bem conhecido na técnica.
[0580] De preferência endereços que um programa de aplicativos "vê" são, muitas vezes, ditos como endereços virtuais. Endereços virtuais são, muitas vezes, ditos como "endereços lógicos" e "endereços eficazes". Estes endereços virtuais são virtuais pelo fato de que eles são redirecionados para o local da memória física através de uma de uma variedade de tecnologias de conversão dinâmicas de endereços (DAT) incluindo, porém sem limitações, simplesmente prefixar um endereço virtual com um valor de deslocamento, tradução do endereço virtual através de uma ou mais tabelas de conversão, de preferência tabelas de conversão que compreendem pelo menos uma tabela de segmentos e uma tabela de páginas individualmente ou em combinação, de preferência uma tabela de segmentos tendo uma entrada que aponta para a tabela de página. Na z/Architecture, uma hierarquia de tradução é fornecida, incluindo uma tabela de primeira região, uma tabela de segunda região, uma tabela de terceira região, uma tabela de segmentos e uma tabela de páginas opcional. O desempenho da tradução de endereços é, muitas vezes, aprimorado ao usar um buffer de consulta da tradução (Translation Lookaside Buffer - TLB) o qual compreende entradas de mapeamento de um endereço virtual para um local de memória física associado. As entradas são criadas quando o DAT traduz um endereço virtual usando as tabelas de conversão. Subsequente uso do endereço virtual pode, então, usar a entrada do TLB rápido, em vez dos acessos à tabela de tradução sequencial lenta. O conteúdo do TLB pode ser gerido por uma variedade de algoritmos de substituição, incluindo LRU (Least Recently Used).
[0581] No caso onde o processador é um processador de um sistema com múltiplos processadores, cada processador tem a responsabilidade de manter recursos compartilhados, tais como E/S, caches, TLBs e memória, interligados por coerência. Tipicamente, tecnologias "snoop" serão usadas na manutenção da coerência de cache. Em um ambiente "snoop", cada linha de cache pode ser marcada como estando em qualquer um de um estado compartilhado, um estado exclusivo, um estado alterado, um estado inválido e assim por diante, de modo a facilitar o compartilhamento.
[0582] Unidades de E/S 5054 (figura 21) fornecem ao processador meios para conexão a dispositivos periféricos, incluindo fita, disco, impressoras, monitores e redes, por exemplo. Unidades de E/S são frequentemente apresentadas ao programa de computador através de drivers de software. Em mainframes, tal como o System z da IBM®, adaptadores de canal e adaptadores de sistemas abertos são unidades E/S de mainframe que permitem comunicações entre o sistema operacional e dispositivos periféricos.
[0583] Além disso, outros tipos de ambientes de computação podem se beneficiar de um ou mais aspectos. Como um exemplo, um ambiente pode incluir um emulador (por exemplo, software ou outros mecanismos de emulação), em que uma arquitetura particular (incluindo, por exemplo, execução de instrução, funções arquitetadas, tal como conversão de endereços, e registros arquitetados) ou um subconjunto da mesma é emulado (por exemplo, em um sistema de computador nativo que tem um processador e memória). Em tal ambiente, uma ou mais funções de emulação do emulador podem implementar uma ou mais concretizações, mesmo que um computador que executa o emulador possa ter uma arquitetura diferente das capacidades a serem emuladas. Como um exemplo, no modo de emulação, a instrução ou operação específica a ser emulada é decodificada e uma função de emulação apropriada é construída para implementar a instrução ou operação individual.
[0584] Em um ambiente de emulação, um computador host inclui, por exemplo, uma memória para armazenar instruções e dados; uma unidade de busca de instrução para buscar instruções de memória e, opcionalmente, fornecer o buffer local para a instrução buscada; uma unidade de decodificação de instruções para receber as instruções obtidas e determinar o tipo de instrução que foi buscada; e uma unidade de execução de instrução para executar a instruções. Execução pode incluir carregar dados em um registro da memória; armazenar dados novamente na memória de um registro; ou executar algum tipo de operação aritmética ou lógica, conforme determinado pela unidade de decodificação. Em um exemplo, cada unidade é implementada em software. Por exemplo, as operações que estão sendo executadas pelas unidades são implementadas como uma ou mais sub-rotinas dentro do software emulador.
[0585] Mais particularmente, em um mainframe, instruções de máquina arquitetadas são usadas por programadores, usualmente hoje "C" programadores, muitas vezes por meio de um aplicativo compilador. Estas instruções armazenadas no meio de armazenamento podem ser executadas nativamente em um z/Architecture IBMR Server ou, alternativamente, máquinas que executam outras arquiteturas. Elas podem ser emuladas em servidores de mainframe IBM® existentes e futuros e em outras máquinas da IBMR (por exemplo, servidores Power Systems e Servidores X System). Elas podem ser executadas em máquinas que rodam o Linux em uma ampla variedade de máquinas que usam hardware fabricado pela IBM®, IntelR, AMD e outros. Além de execução deste hardware sob uma z/Architecture, o Linux pode ser usado, bem como máquinas que usam emulação por Hercules, UMX ou FSI (Fundamental Software, Inc.) onde, em geral, a execução está em um modo de emulação. No modo de emulação, o software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
[0586] O processador nativo normalmente executa o software de emulação compreendendo firmware ou um sistema operacional nativo para executar a emulação do processador emulado. O software de emulação é responsável por buscar e executar instruções da arquitetura do processador emulado. O software de emulação mantém um contador de programa emulado para manter o controle de limites de instrução. O software de emulação pode buscar uma ou mais instruções de máquina emuladas de cada vez e converter uma ou mais instruções de máquina emuladas em um grupo correspondente de instruções de máquina nativas para execução pelo processador nativo. Estas instruções podem ser convertidas em cache, de modo que uma conversão mais rápida possa ser conseguida. Não obstante, o software de emulação é para manter as regras de arquitetura da arquitetura do processador emulado de modo a assegurar que os sistemas operacionais e aplicativos escritos para o processador emulado funcionem corretamente. Além disso, o software de emulação é para fornecer recursos identificados pela arquitetura do processador emulado incluindo, porém sem limitações, registros de controle, registros de uso geral, registros de ponto flutuante, função de tradução dinâmica de endereços, incluindo tabelas de segmentos e tabelas de páginas, por exemplo, mecanismos de interrupção, mecanismos de mudança de contexto, relógios "Time of Day" (TOD) e interfaces arquitetadas para subsistemas de E/S, de modo que um sistema operacional ou um programa de aplicativo concebido para ser executado no processador emulado possa ser executado no processador nativo que tem o software de emulação.
[0587] Uma instrução específica a ser emulada é descodificada e uma sub-rotina é denominada para executar a função da instrução individual. Uma função de software de emulação que emula uma função de um processador emulado é implementada, por exemplo, em uma sub-rotina "C" ou controlador, ou algum outro método de fornecimento de um controlador para o hardware específico, conforme estará dentro da habilidade daqueles versados na técnica após compreensão da descrição da concretização preferida. Várias patentes de emulação de software e hardware incluindo, porém sem limitações, a Carta Patente dos Estados Unidos N° 5.551.013, intitulada "Multiprocessor for Hardware Emulation", por Beausoleil et al.; e Carta Patente dos Estados Unidos N° 6.009.261, intitulada "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", por Scalzi et al.; e a Carta Patente dos Estados Unidos N° 5.574.873, intitulada "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", por Davidian et al.; e Carta Patente dos Estados Unidos N° 6.308.255, intitulada "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", por Gorishek et al.; e Carta Patente dos Estados Unidos N° 6.463.582, intitulada "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", por Lethin et al.; e Carta Patente dos Estados Unidos N° 5.790.825, intitulada "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", por Eric Traut; e muitas outras, ilustram uma variedade de modos conhecidos para obter emulação de um formato de instrução arquitetada para uma máquina diferente para uma máquina alvo disponível para aqueles versados na técnica.
[0588] Na figura 23, é fornecido um exemplo de um sistema de computador host emulado 5092 que emula um sistema de computador host 5000' de uma arquitetura host. No sistema de computador host emulado 5092, o processador central (CPU) 5091 é um processador host emulado (ou processador host virtual) e compreende um processador de emulação 5093 que tem um conjunto de instruções nativas diferente daquela do processador 5091 do computador host 5000'. O sistema de computador host emulado 5092 tem uma memória 5094 acessível ao processador de emulação 5093. Na concretização exemplificativa, a memória 5094 é dividida em uma porção de memória de computador host 5096 e uma porção de rotinas de emulação 5097. A memória de computador host 5096 está disponível para programas do computador host emulado 5092 de acordo com a arquitetura do computador host. O processador de emulação 5093 executa as instruções nativas de um conjunto de instruções arquitetadas de uma arquitetura diferente daquela do processador emulado 5091, as instruções nativas obtidas a partir de rotinas de emulação de memória 5097 e podendo acessar uma instrução host para a execução de um programa na memória de um computador host 5096 ao empregar uma ou mais instruções obtidas em uma rotina de sequência & acesso/decodificação que possa decodificar a(s) instrução(ões) host acessada(s) para determinar uma rotina de execução de instrução nativa para emular a função da instrução host acessada. Outras unidades que são definidas para a arquitetura do sistema de computador host 5000' podem ser emuladas por rotinas de unidades arquitetadas, incluindo unidades tais como registros de finalidade geral, registros de controle, tradução dinâmica de endereços e suporte de subsistema de E/S e cache do processador, por exemplo. As rotinas de emulação também podem tirar proveito de funções disponíveis no processador de emulação 5093 (tais como os registros gerais e tradução dinâmica de endereços virtuais) para aprimorar o desempenho das rotinas de emulação. Motores de hardware e "off-load" especiais também podem ser fornecidos para auxiliar o processador 5093 a emular o funcionamento do computador host 5000'.
[0589] A terminologia aqui usada é para fins de descrição apenas de concretizações particulares e não se destina a ser limitativa. Conforme usado aqui, as formas no singular "um", "uma", "o" e "a" se destinam incluir as formas no plural também, a menos que o contexto indique claramente o contrário. Será ainda entendido que os termos "compreende" e/ou "compreendendo", quando usados no presente relatório descritivo, especificam a presença de aspectos estabelecidos, números inteiros, etapas, operações, elementos e/ou componentes, mas não excluem a presença ou adição de um ou mais de outras características, números inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[0590] As estruturas, materiais, medidas correspondentes e equivalentes de todos os meios ou etapas mais a função de elementos nas reivindicações abaixo, se houver, se destinam incluir qualquer estrutura, material ou medida para executar a função em combinação com outros elementos reivindicados, conforme especificamente reivindicado. A descrição de uma ou mais concretizações foi apresentada para fins de ilustração e descrição, mas não se destina a ser exaustiva ou estar limitada à forma descrita. Muitas modificações e variações serão evidentes para aqueles versados na técnica. A concretização foi escolhida e descrita de modo a explicar melhor vários aspectos e a aplicação prática e permitir que aqueles versados na técnica compreendam as várias concretizações com várias modificações, conforme apropriado para o uso particular considerado.

Claims (6)

1. Método para fornecimento de informação de diagnóstico em aborto de transação, o método caracterizado pelo fato de que compreende as etapas de: executar (1500) uma transação, a transação efetivamente atrasando armazenamentos transacionais de compromisso para a memória principal até a conclusão de uma transação selecionada; com base na execução da operação, determinar (1550) se a transação inclui uma ou mais instruções de ramificação; em que com base na determinação de que a transação inclui uma ou mais instruções de ramificação, definir (1554) um ou mais bits correspondendo a uma ou mais instruções de ramificação, na qual um bit corresponde a uma instrução de ramificação e indica se uma ramificação foi feita pela instrução de ramificação, em que a configuração do bit inclui definir o bit para um primeiro valor se a instrução de ramificação correspondente ao bit leva uma ramificação, e definir o bit para um segundo valor se a instrução de ramificação correspondente ao bit não leva a ramificação; determinar (1556) que a transação foi abortada; e com base na determinação de que a transação foi abortada, armazenar o um ou mais bits em um bloco de diagnóstico de transação (TDB) associados com a transação, em que um endereço do bloco de diagnóstico de transação é especificado pela transação e o bloco de diagnóstico de transação fornece um histórico de ramificação que indica que instruções de desvio tomaram o ramo e que instruções de desvio não tomaram a ramificação durante um modo de execução transacional que inclui a transação; e utilizar (1558) o histórico de ramificação fornecido pelos um ou mais bits no bloco de diagnóstico de transação (TDB) para diagnosticar falhas da transação.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o método compreende ainda de iniciação da (1558) transação através de uma instrução para começar a transação, a instrução para começar a transação especificando um endereço para o bloco de diagnóstico de transação.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que há uma pluralidade de tipos de blocos de diagnóstico de transação, e o método compreende ainda a seleção (1558) de um ou mais tipos de blocos de diagnóstico de transação para armazenar um ou mais bits, a seleção sendo baseada em informações fornecidas em iniciar a transação.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que o bloco de transação de diagnóstico compreende uma TDB especificado pelo programa
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o um ou mais indicadores armazenados no bloco de diagnóstico de transação proporcionam um histórico de ramificação da transação.
6. Sistema caracterizado pelo fato de que compreende meios adaptados para realizar todas as etapas do método definido em qualquer reivindicação anterior de método.
BR112014031437-3A 2012-06-15 2013-06-12 Indicações de ramificação de execução transacional BR112014031437B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/524,779 US8966324B2 (en) 2012-06-15 2012-06-15 Transactional execution branch indications
US13/524,779 2012-06-15
PCT/EP2013/062173 WO2013186272A1 (en) 2012-06-15 2013-06-12 Transactional execution branch indications

Publications (2)

Publication Number Publication Date
BR112014031437A2 BR112014031437A2 (pt) 2017-06-27
BR112014031437B1 true BR112014031437B1 (pt) 2021-11-09

Family

ID=48628660

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014031437-3A BR112014031437B1 (pt) 2012-06-15 2013-06-12 Indicações de ramificação de execução transacional

Country Status (9)

Country Link
US (2) US8966324B2 (pt)
EP (1) EP2862081B1 (pt)
JP (1) JP6234448B2 (pt)
CN (1) CN104335184B (pt)
BR (1) BR112014031437B1 (pt)
CY (1) CY1119620T1 (pt)
HK (1) HK1207446A1 (pt)
PL (1) PL2862081T3 (pt)
WO (1) WO2013186272A1 (pt)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
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
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
WO2015094189A1 (en) * 2013-12-17 2015-06-25 Intel Corporation Detection of unauthorized memory modification and access using transactional memory
US9720667B2 (en) * 2014-03-21 2017-08-01 Intel Corporation Automatic loop vectorization using hardware transactional memory
US20160034401A1 (en) * 2014-08-01 2016-02-04 Google Inc. Instruction Cache Management Based on Temporal Locality
US9672354B2 (en) 2014-08-18 2017-06-06 Bitdefender IPR Management Ltd. Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
GB2533416A (en) * 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
US9792124B2 (en) 2015-02-13 2017-10-17 International Business Machines Corporation Speculative branch handling for transaction abort
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
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
EP3462308B1 (en) * 2017-09-29 2022-03-02 ARM Limited Transaction nesting depth testing instruction
CN110362258B (zh) * 2019-07-19 2021-05-25 航天科工网络信息发展有限公司 一种交互式协同想定系统实现方法

Family Cites Families (142)

* 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
US5471591A (en) 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
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
WO1997013201A1 (en) 1995-10-06 1997-04-10 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
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
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
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
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
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
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
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
US6665863B1 (en) 2000-05-31 2003-12-16 Microsoft Corporation Data referencing within a database graph
AU2001283163A1 (en) 2000-08-04 2002-02-18 Carr Scott Software Incorporated Automatic transaction management
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
KR100625595B1 (ko) 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
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
US7546446B2 (en) 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
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
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7398355B1 (en) 2003-02-13 2008-07-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
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
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7206903B1 (en) 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US7865701B1 (en) 2004-09-14 2011-01-04 Azul Systems, Inc. Concurrent atomic execution
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
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
US8117605B2 (en) 2005-12-19 2012-02-14 Oracle America, Inc. Method and apparatus for improving transactional memory interactions by tracking object visibility
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US7810072B2 (en) 2006-01-06 2010-10-05 International Business Machines Corporation Exception thrower
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US20070198978A1 (en) 2006-02-22 2007-08-23 David Dice Methods and apparatus to implement parallel transactions
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
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
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
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
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
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
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
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 中兴通讯股份有限公司 中继状态调节方法和装置
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
US8140497B2 (en) 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US7966459B2 (en) 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
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
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
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
US7996686B2 (en) * 2008-07-07 2011-08-09 International Business Machines Corporation Branch trace methodology
JP2011529603A (ja) 2008-07-28 2011-12-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド バーチャル化可能な高度な同期機構
US20100057427A1 (en) * 2008-09-04 2010-03-04 Anthony Dean Walker Simulated processor execution using branch override
US8191046B2 (en) 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
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
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
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
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
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
US8327188B2 (en) 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8290991B2 (en) 2009-12-15 2012-10-16 Juniper Networks, Inc. Atomic deletion of database data categories
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
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
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
CN102073540B (zh) * 2010-12-15 2013-05-08 北京新媒传信科技有限公司 分布式事务提交方法和装置
US8442962B2 (en) 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization

Also Published As

Publication number Publication date
CN104335184B (zh) 2017-05-24
CN104335184A (zh) 2015-02-04
JP6234448B2 (ja) 2017-11-22
BR112014031437A2 (pt) 2017-06-27
HK1207446A1 (en) 2016-01-29
US20130339690A1 (en) 2013-12-19
US8966324B2 (en) 2015-02-24
JP2015523652A (ja) 2015-08-13
WO2013186272A1 (en) 2013-12-19
US8887002B2 (en) 2014-11-11
PL2862081T3 (pl) 2019-02-28
EP2862081B1 (en) 2018-10-17
EP2862081A1 (en) 2015-04-22
US20130339796A1 (en) 2013-12-19
CY1119620T1 (el) 2018-04-04

Similar Documents

Publication Publication Date Title
US10719415B2 (en) Randomized testing within transactional execution
US9792125B2 (en) Saving/restoring selected registers in transactional processing
BR112014031437B1 (pt) Indicações de ramificação de execução transacional
US9983881B2 (en) Selectively controlling instruction execution in transactional processing
DK2834739T3 (en) TRANSACTION DIAGNOSTICS BLOCK
US20160357553A1 (en) Restricted instructions in transactional execution
BR112014031353B1 (pt) Facilidade de assistência de processador
DK2862057T3 (en) PROGRAM INTERRUPTION FILTERING IN TRANSACTION EXECUTION
BR112014031432B1 (pt) Instrução de armazenamento não transacional
CA2874236A1 (en) Transactional processing

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 12/06/2013, OBSERVADAS AS CONDICOES LEGAIS.