BR112014031415B1 - Salvar/ restaurar registradores selecionados em processamento transacional - Google Patents

Salvar/ restaurar registradores selecionados em processamento transacional Download PDF

Info

Publication number
BR112014031415B1
BR112014031415B1 BR112014031415-2A BR112014031415A BR112014031415B1 BR 112014031415 B1 BR112014031415 B1 BR 112014031415B1 BR 112014031415 A BR112014031415 A BR 112014031415A BR 112014031415 B1 BR112014031415 B1 BR 112014031415B1
Authority
BR
Brazil
Prior art keywords
transaction
instruction
memory
program
registers
Prior art date
Application number
BR112014031415-2A
Other languages
English (en)
Other versions
BR112014031415A2 (pt
Inventor
Dan Greiner
Christian Jacobi
Timothy Slegel
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 BR112014031415A2 publication Critical patent/BR112014031415A2/pt
Publication of BR112014031415B1 publication Critical patent/BR112014031415B1/pt

Links

Classifications

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

Landscapes

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

Abstract

salvar/ restaurar registradores selecionados em processamento transacional. uma instrução de iniciar transação inicia a execução de uma transação e inclui uma máscara de salvar registrador geral que tem bits os quais, quando definidos, indicam registradores a serem salvos no caso em que a transação é abortada. no início da transação, os conteúdos dos registradores são salvos na memória não acessível para o programa e, se a transação é abortada, os conteúdos salvos são copiados para os registradores.

Description

ANTECEDENTES
[0001] Um ou mais aspectos se referem, em geral, a ambientes de computação multiprocessamento e, em particular, ao processamento transacional dentro de tais ambientes de computação.
[0002] Um desafio persistente em programação de múltiplos processadores é aquele de atualizações no mesmo local na memória por múltiplas unidades de processamento centrais (em inglês, CPUs). Muitas instruções que atualizam as locais na memória, incluindo até mesmo operações lógicas simples, tal como AND, fazem isto com múltiplos acessos ao local. Por exemplo, primeiro, o local na memória é buscado e, então, o resultado atualizado é armazenado novamente.
[0003] Para que múltiplas CPUs atualizem com segurança o mesmo local na memória, 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, forneceu uma atualização interligada de um local na memória. A atualização interligada significa que, conforme observado pelas outras CPUs e o subsistema de entrada/saída (em inglês, E/S) (por exemplo, subsistema de canal), todo o acesso à memória da instrução parece ocorrer de forma atômica. Posteriormente, 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 para executar atualizações interligadas e permitem a implementação daquilo que é comumente conhecido como uma palavra de bloqueio (lock) (ou semáforo). As instruções recentemente adicionadas conferiram capacidades adicionais de atualização interligada, incluindo COMPARE AND SWAP AND PURGE e COMPARE AND SWAP AND STORE. No entanto, todas estas instruções permitem interligação para apenas um único local na memória.
[0004] Técnicas de programas mais complexos podem requerer a atualização interligada de múltiplos locais na memória, tal como quando da adição de um elemento a uma lista duplamente vinculada. Em tal operação, tanto um ponteiro para frente como para trás devem parecer ser atualizados simultaneamente, conforme observado pelas outras CPUs e o subsistema de E/S. Para executar uma atualização de múltiplos locais, o programa é obrigado a usar um ponto de serialização separado, tal como uma palavra de bloqueio. No entanto, as palavras de bloqueio podem fornecer um nível muito mais alto de serialização do que o necessário; por exemplo, as palavras de bloqueio podem serializar uma fila inteira de milhões de elementos, mesmo que apenas dois elementos estejam sendo atualizados. O programa pode estruturar os dados para usar serialização mais detalhada (por exemplo, uma hierarquia de pontos de bloqueio), mas isto introduz problemas adicionais, tais como situações potenciais de impasse se a hierarquia for violada e problemas de recuperação se o programa encontra um erro enquanto executa um ou mais bloqueios ou se o bloqueio não pode ser adquirido.
[0005] Além do acima, há várias 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, 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, integração parcial de uma função e/ou no re-sequenciamento de verificação nula de ponteiro.
[0006] Em ambientes de sistemas operacionais clássicos, tal como o 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 ele possa encontrar. Se o programa não intercepta a exceção, o sistema operacional, tipicamente, termina anormalmente o programa para exceções com as quais o sistema operacional não está preparado para lidar. Estabelecer e explorar tal ambiente é dispendioso e complicado.
BREVE SUMÁRIO
[0007] As deficiências do estado da técnica são superadas e vantagens são fornecidas ao fornecer de um produto de programa de computador para facilitar o processamento transacional dentro de um ambiente de computação. O produto de programa de computador inclui um meio de armazenamento legível em computador legível por um circuito de processamento e que armazena instruções para execução pelo circuito de processamento para executar um método. O método inclui, por exemplo, determinar, por um processador, a partir da informação fornecida por uma instrução, um ou mais registradores selecionados a serem salvos no processamento transacional, a instrução iniciar execução de uma transação, a transação adiando efetivamente a confirmação (committ) de memórias transacionais na memória principal até conclusão de uma transação selecionada e o um ou mais registradores selecionados sendo menos do que todos os registradores usados pela transação na execução da transação; e salvar os conteúdos de um ou mais registradores selecionados com base na execução das instruções.
[0008] Métodos e sistemas relacionados a uma ou mais concretizações são também descritos e reivindicados aqui. Além disso, os serviços relacionados 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 parte da invenção reivindicada.
BREVE DESCRIÇÃO DAS VARIAS VISTAS DOS DESENHOS
[0010] Um ou mais aspectos são particularmente destacados e reivindicados distintamente como exemplos nas reivindicações na conclusão do relatório descritivo. Os objetivos, características e vantagens precedentes e outros são evidentes a partir da descrição detalhada a seguir, em conjunto com os desenhos anexos, nos quais:a Figura 1 representa uma concretização de um ambiente de computação; a Figura 2A representa um exemplo de uma instrução Iniciar Transação (TBEGIN);a Figura 2B representa uma concretização de mais detalhes de um campo da instrução TBEGIN da Figura 2A;a Figura 3A representa no exemplo de uma instrução Iniciar Transação restrita (TBEGINC);a Figura 3B representa uma concretização de mais detalhes de um campo da instrução TBEGINC da Figura 3A;a Figura 4 representa um exemplo de uma instruçãoTerminar Transação (TEND);a Figura 5 representa um exemplo de uma instruçãoAbortar Transação (TABORT);a Figura 6 representa um exemplo de transações agrupadas;a Figura 7 representa um exemplo de uma instruçãoMEMÓRIA NÃO TRANSACIONAL (NTSTG);a Figura 8 representa um exemplo de uma instruçãoEXTRAIR PROFUNDIDADE DE AGRUPAMENTO DE TRANSAÇÃO (ETND);a Figura 9 representa um exemplo de um bloco diagnóstico de transação;a Figura 10 representa razões exemplificativas para abortar, juntamente com códigos de aborto e códigos de condição;a Figura 11 representa uma concretização da lógicaassociada à execução de uma instrução TBEGINC;a Figura 12 representa uma concretização da lógicaassociada à execução de uma instrução TBEGIN; as Figuras 13A-13B representam concretizações da lógica associada ao salvamento/ restauração de registradores selecionados no processamento transacional;as Figuras 14A-14B representam um exemplo de inserção de um elemento de fila em uma lista duplamente vinculada de elementos de fila;a Figura 15 representa uma concretização de um produto de programa de computador;a Figura 16 representa uma concretização de um sistema de computador host;a Figura 17 representa um exemplo adicional de um sistema de computador;a Figura 18 representa outro exemplo de um sistema de computador que compreende uma rede de computador;a Figura 19 representa uma concretização de múltiplos elementos de um sistema de computador;a Figura 20A representa uma concretização da unidade de execução do sistema de computador da Figura 19;a Figura 20B representa uma concretização da unidade de ramificação do sistema de computador da Figura 19;a Figura 20C representa uma concretização da unidade de carregamento/armazenamento do sistema de computador da Figura 19; ea Figura 21 representa uma concretização de um sistema de computador host emulado.
DESCRIÇÃO DETALHADA
[0011] De acordo com um aspecto, é fornecida uma unidade de execução transacional (TX). Esta unidade permite processamento transacional de 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.
[0012] 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 de uma instrução INICIAR TRANSAÇÃO. A CPU deixa o modo TX através de (a) uma instrução TERMINAR TRANSAÇÃO mais externa (maiores detalhes sobre interna e externa a seguir) ou (b) aborto da transação. Enquanto no modo TX, os acessos à memória pela CPU parecem ser concorrentes em blocos, conforme observado pelas outras CPUs e o subsistema de E/S. Os acessos à memória são (a) confirmados na memória quando a transição mais externa termina sem abortar (isto é, 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.
[0013] As transações podem ser agrupadas. Isto é, enquanto a CPU está no modo TX, ela pode executar outra instrução INICIAR TRANSAÇÃO. A instrução que faz com que a CPU entre no modo TX é denominada INICIAR TRANSAÇÃO mais externa; da mesma forma, diz-se que o programa está na transação mais externa. As execuções subsequentes de INICIAR TRANSAÇÃO são denominadas instruções internas; e o programa está executando uma transação interna. O modelo fornece uma profundidade mínima de agrupamento e uma profundidade máxima de agrupamento dependente do modelo. Uma instrução EXTRAIR PROFUNDIDADE DE AGRUPAMENTO DE TRANSAÇÃO retorna o valor da profundidade de agrupamento atual e, em uma outra concretização, pode retornar um valor máximo de profundidade de agrupamento. Esta técnica usa um modelo denominado "agrupamento achatado", no qual uma condição de aborto em qualquer profundidade de agrupamento faz com que todos os níveis da transação sejam abortados e o controle é retornado para a instrução após INICIAR TRANSAÇÃO mais externa.
[0014] Durante o processamento de uma transação, diz-se que um acesso transacional feito por uma CPU está 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 de E/S se ambos os acessos estão em qualquer local dentro da mesma linha de cache e um ou ambos os acessos é uma memória. Em outras palavras, para que a execução transacional seja produtiva, a CPU não deve ser observada fazendo acessos transacionais até que eles sejam confirmados. Este modelo de programação pode ser altamente eficaz em determinados ambientes; por exemplo, a atualização de dois pontos em uma lista duplamente vinculada de um milhão de elementos. No entanto, ela será menos efetiva se houver muita disputa por locais na memória que estão sendo acessados de forma transacional.
[0015] Em um modelo de execução transacional (dito aqui como uma transação não restrita), quando uma transação é abortada, o programa pode tentar prosseguir novamente com transação na esperança de que a condição de aborto não esteja mais presente ou o programa pode "retroceder" para um caminho não transacional equivalente. Em outro modelo de execução transacional (dito aqui como uma transação restrita), uma transação abortada é automaticamente prosseguida novamente pela CPU; na ausência de violações de restrições, uma eventual conclusão da transação restrita é assegurada.
[0016] Ao iniciar uma transação, o programa pode especificar vários controles, tais como: (a) quais registradores gerais são restaurados para seus conteúdos originais se a transação é abortada, (b) se é permitido que a transação modifique o contexto de registrador de ponto flutuante incluindo, por exemplo, registradores de ponto flutuante e o registrador de controle de ponto flutuante, (c) se é permitido que a transação modifique registradores de acesso (em inglês, ARs) e (d) se deve ser evitado que determinadas condições de exceção de programa causem 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 (em inglês, TDB) especificado pelo programa. Além disso, o TDB na área de prefixo da CPU ou designado pela descrição de estado de host também pode ser usado se a transação é abortada em virtude de uma interrupção do programa ou uma condição que faça com que a execução interpretativa termine, respectivamente.
[0017] São indicados acima vários tipos de registradores. Estes são explicados mais detalhadamente aqui. Os registradores gerais podem ser usados como acumuladores em operações aritméticas e lógicas gerais. Em uma concretização, cada registrador contém posições de 64 bits e há 16 registradores gerais. Os registradores 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 endereçamento de múltiplos registradores gerais ao ter vários campos R. Para algumas instruções, o uso de um registrador geral específico está implícito, em vez de explicitamente designado por um campo R da instrução.
[0018] Além de seu uso como acumuladores em operações aritméticas e lógicas gerais, 15 dos 16 registradores gerais também são usados como registradores de endereço de base e índice na geração de endereços. Nestes casos, os registradores são designados por um campo B de quatro bits ou um campo X 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 registrador geral 0 não deve ser designado como contendo um endereço de base ou índice.
[0019] As instruções de ponto flutuante usam um conjunto de registradores de ponto flutuante. A CPU tem 16 registradores de ponto flutuante em uma concretização. Os registradores 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 pequeno (32 bits) ou longo (64 bits).
[0020] Um registrador de controle de ponto flutuante (em inglês, FPC) é um registrador de 32 bits que contém bits de máscara, bits de 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.
[0021] Além disso, em uma concretização, a CPU tem 16 registradores de controle, cada um tendo posições de 64 bits. As posições de bits nos registradores são atribuídas a unidades particulares no sistema, tal como Escrita de Eventos de Programa (em inglês, PER) (discutida abaixo), e são usadas para especificar que uma operação pode ser executada ou fornecer informações especiais requeridas pela unidade. Em uma concretização, para a unidade transacional, são usados CR0 (bits 8 e 9) e CR2 (bits 61-63), conforme descrito abaixo.
[0022] A CPU tem, por exemplo, 16 registradores de acesso numerados de 0-15. Um registrador 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 (em inglês, 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 (em inglês, DAT) para traduzir referências para um espaço de endereço correspondente. Quando a CPU está em um modo denominado modo de registrador de acesso (controlado por bits na Palavra de Estado de Programa (em inglês, PSW)), um campo B da instrução, usado para especificar um endereço lógico para uma referência de operando de memória, designa um registrador de acesso e o elemento de controle de espaço de endereço especificado pelo registrador de acesso é usado pela DAT para 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 carregar e armazenar os conteúdos dos registradores de acesso e para mover os conteúdos de um registrador de acesso para outro.
[0023] Cada um dos registradores de acesso 1-15 pode designar qualquer um espaço de endereço. O registrador de acesso 0 designa o espaço da instrução primária. Quando um dos registradores 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 os conteúdos do registrador de acesso. Quando o registrador de acesso 0 é usado para designar um espaço de endereço, a CPU gere o registrador de acesso ao designar o espaço da instrução primária e não examina os conteúdos reais do registrador de acesso. Portanto, os 16 registradores de acesso podem designar, a qualquer momento, o espaço da instrução primária e um máximo de 15 outros espaços.
[0024] 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 os quais permitem que cada número seja associado a um local de bytes na memória. A sequência começa em zero e prossegue da esquerda para a direita.
[0025] Por exemplo, na z/Architecture, quando um endereço virtual é usado por uma CPU para acessar a memória principal (também conhecida como memória primária), ele é primeiro convertido, por meio de Tradução Dinâmica de Endereços (em inglês, DAT), em um endereço real e, por meio de prefixação, em 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 nível superior para um espaço de endereço específico é denominada um elemento de controle de espaço de endereço e é encontrada para uso, pela DAT, em um registrador de controle ou conforme especificado por um registrador 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 deve traduzir o endereço virtual simplesmente tratando-o como um endereço real e sem usar quaisquer tabelas.
[0026] A DAT usa, em diferentes momentos, os elementos de controle de espaço de endereço em diferentes registradores de controle ou especificados pelos registradores de acesso. A escolha é determinada pelo modo de tradução especificado na PSW atual. Quatro modos de tradução estão disponíveis: modo de espaço primário, modo de espaço secundário, modo de registrador de acesso e modo de espaço de residência. Diferentes espaços de endereço são endereçáveis dependendo do modo de tradução.
[0027] A qualquer momento quando a CPU está no modo de espaço primário ou no modo de espaço secundário, a CPU pode traduzir endereços virtuais pertencentes a dois espaços de endereço: o espaço de endereço primário e o espaço de endereço secundário. A qualquer momento quando a CPU está no modo de registrador de acesso, ela pode traduzir endereços virtuais de até 16 espaços de endereço - o espaço de endereço primário e até 15 espaços de endereço especificados pelo AR. A qualquer momento quando a CPU está no modo de espaço de residência, ela pode traduzir endereços virtuais do espaço de endereço de residência.
[0028] 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 (em inglês, ASCE). Da mesma forma, 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 especificados pelo AR consistem em endereços virtuais especificados pelo AR traduzidos por meio de ASCEs especificados; e o espaço de endereço de residência consiste em endereços virtuais de residência traduzidos por meio de ASCEs de residência. Os ASCEs primário e secundário estão nos registradores de controle 1 e 7, respectivamente. Os ASCEs especificados por AR estão em entradas de tabela de ASN secundário que são localizadas através de um processo denominado Tradução de Registrador de Acesso (em inglês, ART) usando os registradores de controle 2, 5 e 8. O ASCE de residência está no registrador de controle 13.
[0029] 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.
[0030] Em referência à Figura 1, em um exemplo, o ambiente de computação 100 é baseado na z/Architecture, oferecida pela International Business Machines (IBM®) Corporation, Armonk, New York. A z/Architecture é descrita em uma publicação da IBM intitulada "z/Architecture - Principles of Operation", Publicação N° SA22-7932- 08, 9a Edição, agosto de 2010.
[0031] Z/ARCHITECTURE, 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 comerciais registradas ou nomes de produtos da International Business Machines Corporation ou outras empresas.
[0032] Como um exemplo, o ambiente de computação 100 inclui um complexo de processador central (em inglês, CPC) 102 acoplado a um ou mais dispositivos de entrada/saída (em inglês, E/S) 106 através de uma ou mais unidades de controle 108. O complexo de processador central 102 inclui, por exemplo, um ou mais processadores centrais 110, uma ou mais partições 112 (por exemplo, partições lógicas (em inglês, LPs)), um hipervisor de partição lógica 114 e um subsistema de entrada/saída 115, cada um dos quais é descrito abaixo.
[0033] Os processadores centrais 110 são recursos de processador físico confirmados para as 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 confirmado para a partição. Os processadores lógicos de uma partição 112 particular podem ser dedicados à partição, de modo que o recurso de processador 110 subjacente seja reservado para esta partição; ou compartilhados com outra partição, de modo que o recurso de processador subjacente esteja potencialmente disponível para outra partição.
[0034] Uma partição lógica funciona como um sistema separado e tem uma ou mais aplicações e, opcionalmente, um sistema operacional residente, o qual pode diferir 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, oferecido pela International Business Machines Corporation, Armonk, New York. As partições lógicas 112 são gerenciadas por um hipervisor de partição lógica 114, o qual é implementado pelo firmware executado nos processadores 110. Conforme usado aqui, o firmware inclui, por exemplo, o microcódigo e/ou o milicódigo do processador. Ele inclui, por exemplo, as instruções de nível de hardware e/ou estruturas de dados usadas na implementação do código de máquina de nível superior. Em uma concretização, ele inclui, por exemplo, o código proprietário que normalmente é distribuído como microcódigo que inclui um software confiável ou o microcódigo específico para o hardware subjacente e controla o acesso do sistema operacional ao hardware do sistema.
[0035] As partições lógicas e o hipervisor de partição lógica compreendem um ou mais programas que residem nas respectivas partições da memória central associadas aos processadores centrais. Um exemplo de hipervisor de partição lógica 114 é o Processor Resource/System Manager (PR/SM), oferecido pela International Business Machines Corporation, Armonk, New York.
[0036] O subsistema de entrada/saída 115 direciona o fluxo de informações entre os dispositivos de entrada/saída 106 e a memória principal (também conhecida como memória primária). Ele está acoplado ao complexo de processamento central pelo fato de que pode ser parte do complexo de processamento central ou separado do mesmo. O subsistema de E/S alivia os processadores centrais da tarefa de se comunicar diretamente com os dispositivos de entrada/saída e permite que o processamento de dados prossiga simultaneamente com o processamento de entrada/saída. Para permitir comunicações, o subsistema de E/S emprega adaptadores de comunicações de E/S. Há múltiplos tipos de adaptadores de comunicação incluindo, por exemplo, canais, adaptadores de E/S, placas PCI, placas Ethernet, placas de Pequena Interface de Memória para Computador (em inglês, SCSI), etc. No exemplo específico descrito aqui, os adaptadores de comunicação de E/S são canais e, portanto, o subsistema de E/S é dito aqui como um subsistema de canal. No entanto, este é apenas um exemplo. Podem ser usados outros tipos de subsistemas de E/S.
[0037] O subsistema de E/S usa um ou mais caminhos de entrada/saída como links de comunicação no gerenciamento do fluxo de informações para ou a partir de 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.
[0038] 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 limitações, ambientes não particionados, outros ambientes particionados e/ou ambientes emulados, podem ser usados; as concretizações não se limitam a nenhum ambiente.
[0039] De acordo com um ou mais aspectos, a unidade de execução transacional é uma CPU aprimorada que constitui o meio pelo qual a CPU pode executar uma sequência de instruções - conhecida como uma transação - que pode acessar múltiplos locais na memória, incluindo a atualização destes locais. Conforme observado por outras CPUs e o subsistema de E/S, a transação é (a) concluída na íntegra como uma operação atômica única ou (b) abortada, não deixando potencialmente nenhuma evidência de que ela tenha sido executada (exceto quanta a determinadas condições descritas aqui). Assim, uma transação concluída com sucesso pode atualizar múltiplos locais na memória sem que qualquer bloqueio especial que seja necessário no modelo de multiprocessamento clássico.
[0040] A unidade de execução transacional inclui, por exemplo, um ou mais controles; uma ou mais instruções; processamento transacional, incluindo execução restrita e não restrita; e processamento de aborto, cada um dos quais é adicionalmente descrito abaixo.
[0041] Em uma concretização, três controles de finalidade especial, 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 agrupamento de transação; cinco bits de registrador de controle; e seis instruções gerais, incluindo INICIAR TRANSAÇÃO (restrita e não restrita), TERMINAR TRANSAÇÃO, EXTRAIR PROFUNDIDADE DE AGRUPAMENTO DE TRANSAÇÃO, ABORTAR TRANSAÇÃO e MEMÓRIA NÃO TRANSACIONAL, são usados 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 implementação, quando uma, indica que a unidade de execução transacional está instalada.
[0042] Quando a unidade de execução transacional está instalada, a configuração constitui 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 as indicações de unidade 50 e 73, como exemplos, são ambas uma, a unidade de execução de transação restrita está instalada. Ambas as indicações de unidade são armazenadas na memória em locais especificados.
[0043] Conforme usado aqui, o nome de instrução INICIAR TRANSAÇÃO se refere a instruções que têm a mnemô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 relativas a uma instrução específica são indicadas pelo nome da instrução, seguido pela mnemônica entre parênteses ou colchetes, ou simplesmente pela mnemônica.
[0044] Uma concretização de um formato de uma instrução INICIAR TRANSAÇÃO (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 (E) 208. Quando o campo B1 é diferente de zero, os conteúdos do registrador geral especificado por B1 204 são adicionados a D1 206 para obter o primeiro endereço de operando.
[0045] Quando o campo B1 é diferente de zero, o seguinte se aplica:
[0046] • Quando a profundidade de agrupamento de transação é inicialmente zero, o primeiro endereço de operando designa o local do bloco diagnóstico de transação de 256 bytes, denominado o TDB especificado por TBEGIN (adicionalmente descrito abaixo) no qual várias informações sobre diagnóstico podem ser armazenadas se a transação é abortada. Quando a CPU está no modo de espaço primário ou modo de registrador 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 de residência, o primeiro endereço de operando designa um local no espaço de endereço secundário ou de residência, respectivamente. Quando a DAT está desativada, o endereço do bloco diagnóstico de transação (TDB) designa um local na memória real.
[0047] A acessibilidade à memória para o primeiro operando é determinada. Se acessível, o endereço lógico do operando é colocado no endereço do bloco diagnóstico de transação (em inglês, TDBA) e o TDBA é válido.
[0048] • 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.
[0049] 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.
[0050] Os bits do campo I2 são definidos como segue, em um exemplo:
[0051] Máscara de Salvar Registrador Geral (GRSM) 210 (Figura 2B): Os bits 0-7 do campo I2 contêm a máscara de salvar registrador geral (em inglês, GRSM). Cada bit da GRSM representa um par ímpar-par de registradores gerais, onde o bit 0 representa os registradores 0 e 1, o bit 1 representa os registradores 2 e 3 e assim por diante. Quando um bit na GRSM da instrução TBEGIN mais externa é zero, o par de registradores correspondente não é salvo. Quando um bit na GRSM da instrução TBEGIN mais externa é um, o par de registradores correspondente é salvo em um local dependente de modelo que não é acessível diretamente pelo programa.
[0052] Se a transação é abortada, os pares de registradores salvos são restaurados para seus conteúdos quando a instrução TBEGIN mais externa foi executada. Os conteúdos de todos os outros registradores gerais (não salvos) não são restaurados quando uma transação é abortada.
[0053] A máscara de salvar registrador geral é ignorada em todas as TBEGINs, exceto quanto a mais externa.
[0054] Permitir Modificação pelo AR (A) 212: O controle A, bit 12 do campo I2, controla se é permitido que a transação modifique um registrador de acesso. O controle permitir modificação pelo AR efetivo é a lógica AND lógico do controle A na instrução TBEGIN para o nível de agrupamento atual e para todos os níveis externos.
[0055] Se o controle A efetivo é zero, a transação será abortada com o código de aborto 11 (instrução restrita) se for feita uma tentativa para modificar qualquer registrador de acesso. Se o controle A efetivo é um, a transação não será abortada se um registrador de acesso é modificado (ausência de qualquer condição de aborto).
[0056] Permitir Operação de Ponto Flutuante (F) 214: O controle F, bit 13 do campo I2, controla se é permitido que a transação execute instruções de ponto flutuante específicas. O controle de operação de ponto flutuante efetivo é a lógica AND do controle F na instrução TBEGIN para o nível de agrupamento atual e para todos os níveis externos.
[0057] Se o controle F efetivo é zero, então, (a) a transação será abortada com o código de aborto 11 (instrução restrita) se for feita uma tentativa para executar uma instrução de ponto flutuante e (b) o código de exceção de dados (em inglês, DXC) no byte 2 do registrador de controle de ponto flutuante (em inglês, FPCR) não será configurado por qualquer condição de exceção de programa por exceção de dados. Se o controle F efetivo é um, então (a) a transação não será abortada se for feita uma tentativa para executar uma instrução de ponto flutuante (ausência de qualquer outra condição de aborto) e (b) o DXC no FPCR pode ser configurado por uma condição de exceção de programa por exceção de dados.
[0058] Controle de Filtração de Interrupção de Programa (PIFC) 216: Os bits 14-15 do campo I2 são o controle de filtração de interrupção de programa (em inglês, PIFC). O PIFC controla se determinadas classes de condições de exceção de programa (por exemplo, exceção de endereçamento, 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.
[0059] O PIFC efetivo é o valor mais alto do PIFC na instrução TBEGIN para o nível de agrupamento 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 que têm uma classe de execução transacional de 1 e 2 resultam em uma interrupção. (A cada condição de exceção de programa é atribuída 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 que têm uma classe de execução transacional de 1 resultam em uma interrupção. Um PIFC de 3 é reservado.
[0060] Os bits 8-11 do campo I2 (bits 40-43 das instruções) são reservados e devem conter zeros; caso contrário, o programa pode não funcionar de forma compatível no futuro.
[0061] Uma concretização de um formato de uma instrução Iniciar Transação restrita (TBEGINC) é descrita com referência às Figuras 3A-3B. Em um exemplo, a 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 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 registrador geral especificado por B1 304 são adicionados a D1 306 para 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 a memória. Em vez disso, o campo B1 da instrução inclui zeros; caso contrário, uma exceção de especificação é reconhecida.
[0062] Em uma concretização, o campo I2 inclui vários controles, um exemplo dos quais está representado na Figura 3B.
[0063] Os bits do campo I2 são definidos da forma a seguir em um exemplo:
[0064] Máscara de Salvar Registrador Geral (GRSM) 310: Os bits 0-7 do campo I2 contêm a Máscara de Salvar Registrador Geral (em inglês, GRSM). Cada bit da GRSM representa um par ímpar-par de registradores gerais, onde o bit 0 representa os registradores 0 e 1, o bit 1 representa os registradores 2 e 3 e assim por diante. Quando um bit na GRSM é zero, o par de registradores correspondente não é salvo. Quando um bit na GRSM é um, o par de registradores correspondente é salvo em um local dependente de modelo que não é acessível diretamente pelo programa.
[0065] Se a transação é abortada, os pares de registradores salvos são restaurados para seus conteúdos quando a instrução INICIAR TRANSAÇÃO mais externa foi executada. O conteúdo de todos os outros registradores gerais (não salvos) não é restaurado quando uma transação restrita é abortada.
[0066] Quando a TBEGINC é usada para continuar a execução no modo de execução de transação não restrita, a máscara de salvar registrador geral é ignorada.
[0067] Permitir Modificação pelo AR (A) 312: O controle A, bit 12 do campo I2, controla se é permitido que a transação modifique um registrador de acesso. O controle efetivo de permitir modificação pelo AR é a lógica AND do controle A na instrução TBEGINC para o nível de agrupamento atual e para quaisquer instruções TBEGIN ou TBEGINC externas.
[0068] Se o controle A efetivo é zero, a transação será abortada com o código de aborto 11 (instrução restrita) se for feita uma tentativa para modificar qualquer registrador de acesso. Se o controle A efetivo é um, a transação não será abortada se um registrador de acesso for modificado (ausência de qualquer outra condição de aborto).
[0069] Os bits 8-11 e 13-15 do campo I2 (bits 40-43 e 45-47 das instruções) são reservados e devem conter zeros.
[0070] O final de uma instrução Iniciar Transação é especificado por uma instrução TERMINAR TRANSAÇÃO (TEND), cujo formato está 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 terminar transação.
[0071] 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 definição a seguir:
[0072] Abortar: Uma transação é abortada quando termina antes de uma instrução TERMINAR TRANSAÇÃO que resulta em uma profundidade de agrupamento de transação zero. Quando uma transação é abortada, ocorre o seguinte, em uma concretização:
[0073] • Os acessos à memória transacional feitos por quaisquer e todos os níveis da transação são descartados (isto é, não confirmados).
[0074] • Os acessos à memória não transacional feitos por quaisquer e todos os níveis da transação são confirmados.
[0075] • Os registradores designados pela máscara de salvar registrador geral (GRSM) da instrução INICIAR TRANSAÇÃO mais externa são restaurados para seu conteúdo antes da execução transacional (isto é, para seus conteúdos na execução da instrução INICIAR TRANSAÇÃO mais externa). Os registradores gerais não designados pela máscara de salvar registrador geral da instrução INICIAR TRANSAÇÃO mais externa não são restaurados.
[0076] • Os registradores de acesso, registradores de ponto flutuante e registrador de controle de ponto flutuante não são restaurados. Quaisquer alterações feitas nestes registradores durante execução da transação são retidos quando a transação é abortada.
[0077] Uma transação pode ser abortada em virtude de uma variedade de motivos, incluindo tentativa de execução de uma instrução restrita, tentativa de modificação de um recurso restrito, conflito de transações, exceder vários recursos de CPU, qualquer condição de intercepção de interpretação e execução, qualquer interrupção, uma instrução ABORTAR TRANSAÇÃO e outros motivos. Um código de abortar transação fornece razões específicas pelas quais uma transação pode ser abortada.
[0078] Um exemplo de um formato de uma instrução ABORTAR TRANSAÇÃO (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 aborto de 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 registrador 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 do campo D2 e o campo B2 é ignorado. O segundo endereço de operando não é usado para endereçar dados; em vez disso, o endereço forma o código de aborto de transação o qual é colocado em um bloco diagnóstico de transação durante processamento do aborto. A computação de endereço para o segundo endereço de operando segue as regras de aritmética do 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.
[0079] Confirmação: Na conclusão de uma instrução TERMINAR TRANSAÇÃO mais externa, a CPU confirma os acessos à memória feitos pela transação (isto é, a transição mais externa e os níveis agrupados), de modo que eles sejam visíveis para outras CPUs e o subsistema de E/S. Conforme observado por outras CPUs e pelo subsistema de E/S, todos os acessos de buscas e escritas na memória feitos por todos os níveis agrupados da transação aparecem como uma única operação simultânea quando a confirmação ocorre.
[0080] O conteúdo dos registradores gerais, registradores de acesso, registradores de ponto flutuante e o registrador de controle de ponto flutuante não são modificados pelo processo de confirmação. Quaisquer alterações feitas nestes registradores durante execução da transação são retidas quando as memórias transacionais são confirmadas.
[0081] Conflito: Um acesso transacional feito por um conflito de CPU com (a) um acesso transacional ou acesso não transacional feito por outra CPU ou (b) o acesso não transacional feito pelo subsistema de E/S, se ambos os acessos são em qualquer local dentro da mesma linha de cache e um ou mais dos acessos é uma memória.
[0082] Um conflito pode ser detectado pela execução especulativa de instruções de uma CPU, mesmo que o conflito não seja detectado na sequência conceitual.
[0083] Transação Restrita: Uma transação restrita é uma transação que é executada no modo de execução transacional restrita e está sujeita às seguintes limitações:
[0084] • Um subconjunto das instruções gerais está disponível.
[0085] • Um número limitado de instruções pode ser executado.
[0086] • Um número limitado de locais de operando de memória pode ser acessado.
[0087] • A transação é limitada a um único nível de agrupamento.
[0088] Na ausência de interrupções repetidas ou conflitos com outras CPUs ou o subsistema de E/S, uma transação restrita eventualmente é concluída, assim, uma rotina para lidar com um aborto não é necessária. As transações restritas são descritas em detalhes abaixo.
[0089] Quando uma instrução INICIAR TRANSAÇÃO restrita (TBEGINC) é executada enquanto a CPU já está no modo de execução de transação não restrita, a execução continua como uma transação não restrita agrupada.
[0090] Modo de Execução Transacional Restrita: Quando a profundidade de agrupamento 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 agrupamento de transação é um.
[0091] Transação Agrupada: Quando a instrução INICIAR TRANSAÇÃO é emitida enquanto a CPU está no modo de execução transacional não restrita, a transação é agrupada.
[0092] A unidade de execução transacional usa um modelo denominado agrupamento achatado. No modo de agrupamento achatado, as memória feitas por uma transação interna não são observáveis por outras CPUs e pelo subsistema de E/S até a transação mais externa confirmar sua memória. Da mesma forma, se uma transação é abortada, todas as transações agrupadas são abortadas e todas memórias transacionais de todas as transações agrupadas são descartadas.
[0093] Um exemplo de transações agrupadas é representado na Figura 6. Conforme mostrado, uma primeira TBEGIN 600 inicia uma transação mais externa 601, a TBEGIN 602 inicia uma primeira transação agrupada e a TBEGIN 604 inicia uma segunda transação agrupada. Neste exemplo, TBEGIN 604 e TEND 606 definem uma transação mais interna 608. Quando TEND 610 é executada, as memórias transacionais são confirmadas 612 para a transação mais externa e todas as transações internas.
[0094] 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 limitada da maneira como uma transação restrita, ela ainda pode ser abortada em virtude de uma variedade de causas.
[0095] 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 agrupamento de transação pode variar a partir de um para a profundidade máxima de agrupamento de transação.
[0096] Acesso Não Transacional: Acessos não transacionais são acessos ao operando de memória feitos pela CPU quando ela não está no modo de execução transacional (isto é, acessos à memória clássicos fora de uma transação). Além disso, os acessos feitos pelo subsistema de E/S são acessos não transacionais. Adicionalmente, a instrução MEMÓRIA NÃO TRANSACIONAL pode ser usada para causar um acesso à memória não transacional enquanto a CPU está no modo de execução transacional não restrita.
[0097] Uma concretização de um formato de uma instrução MEMÓRIA NÃO TRANSACIONAL é descrita com referência à Figura 7. Como um exemplo, uma instrução MEMÓRIA NÃO TRANSACIONAL 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 memória não transacional; um campo de registrador (R1) 704 que especifica um registrador, cujos conteúdos 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. O conteúdo dos registradores 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 zero, o registrador correspondente não participa na adição.
[0098] O primeiro operando de 64 bits permanece inalterado de forma não transacional no segundo local de operando.
[0099] O deslocamento, formado pela concatenação dos campos DH2 e DL2, é tratado como um número inteiro binário assinado de 20 bits.
[0100] O segundo operando deve ser alinhado em um limite de palavra dupla; caso contrário, a exceção de especificação é reconhecida e a operação é suprimida.
[0101] Transação Externa/Mais Externa: Uma transação com uma profundidade de agrupamento de transação de número menor é uma transação externa. Uma transação com um valor de profundidade de agrupamento de transação de um é a transação mais externa.
[0102] Uma instrução INICIAR TRANSAÇÃO mais externa é aquela que é executada quando a profundidade de agrupamento de transação é inicialmente zero. Uma instrução TERMINAR TRANSAÇÃO mais externa é aquela que faz com que a profundidade de agrupamento de transação mude de um para zero. Uma transação restrita é a transação mais externa nesta incorporação.
[0103] Filtração 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 filtração de interrupção de programa. A filtração de interrupção de programa está sujeita à classe transacional da interrupção, o controle efetivo de filtração de interrupção de programa da instrução INICIAR TRANSAÇÃO e a substituição de filtração de interrupção de programa de execução transacional no registrador de controle 0.
[0104] Transação: Uma transação inclui os acessos ao operando de memória feitos e os registradores gerais selecionados alterados enquanto a CPU está no modo de execução de transação. Para uma transação não restrita, os acessos ao operando de memória podem incluir acessos transacionais e acessos não transacionais. Para uma transação restrita, os acessos ao operando de memória são limitados aos acessos transacionais. Conforme observado por outras CPUs e pelo subsistema de E/S, todos os acessos ao operando de memória feitos pela CPU enquanto no modo de execução de transação aparecem como uma única operação simultânea. Se uma transação é abortada, os acessos às memórias transacionais são descartados e quaisquer registradores designados pela máscara de salvar registrador geral da instrução INICIAR TRANSAÇÃO mais externa são restaurados para seus conteúdos antes da execução transacional.
[0105] Acessos Transacionais: Acessos transacionais são acessos ao operando de memória feitos enquanto a CPU está no modo de execução transacional, com exceção dos acessos feitos pela instrução MEMÓRIA NÃO TRANSACIONAL.
[0106] 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 dos modos de execução transacional não restrita e restrita. Assim, quando a operação é descrita, os termos não restrita e restrita são usados para qualificar o modo de execução transacional.
[0107] Quando a profundidade de agrupamento de transação é zero, a CPU não está no modo de execução transacional (também denominado modo de execução não transacional).
[0108] Conforme observado pela CPU, as buscas e as escritas nas memórias feitas no modo de execução transacional não são diferentes daquelas feitas enquanto não está no modo de execução transacional.
[0109] Em uma concretização da z/Architecture, a unidade de execução transacional está sob o controle dos bits 8-9 do registrador de controle 0, bits 61-63 do registrador de controle 2, a profundidade de agrupamento de transação, o endereço do bloco diagnóstico de transação e a palavra de estado de programa (em inglês, PSW) de abortar transação.
[0110] Após uma reinicialização inicial da CPU, os conteúdos das posições de bits 8-9 do registrador de controle 0, posições de bit 62-63 do registrador de controle 2 e a profundidade de agrupamento de transação são definidos para zero. Quando o controle de execução transacional, bit 8 do registrador de controle 0, é zero, a CPU não pode ser colocada no modo de execução transacional.
[0111] Mais detalhes sobre os vários controles estão descritos abaixo.
[0112] Conforme indicado, a unidade de execução transacional é controlada por dois bits no registrador de controle zero e três bits no registrador de controle dois. Por exemplo:
[0113] Registrador de Controle 0 Bits: As atribuições de bit são as seguintes em uma concretização:
[0114] Controle de Execução Transacional (TXC): O bit 8 do registrador de controle zero é o controle de execução transacional. Este bit constitui 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.
[0115] Quando o bit 8 do registrador de controle 0 é zero, a tentativa de execução das instruções EXTRAIR PROFUNDIDADE DE AGRUPAMENTO DE TRANSAÇÃO, INICIAR TRANSAÇÃO e TERMINAR TRANSAÇÃO resulta em uma execução de operação especial.
[0116] Uma concretização de um formato de uma instrução EXTRAIR PROFUNDIDADE DE AGRUPAMENTO DE TRANSAÇÃO é descrita com referência à Figura 8. Como um exemplo, uma instrução de EXTRAIR PROFUNDIDADE DE AGRUPAMENTO DE TRANSAÇÃO 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 extrair profundidade de agrupamento de transação; e um campo de registrador R1 804 que designa um registrador geral.
[0117] A profundidade de agrupamento de transação atual é colocada nos bits 48-63 do registrador geral R1. Os bits 0-31 do registrador permanecem inalterados e os bits 32-47 do registrador são definidos para zero.
[0118] Em outra concretização, a profundidade máxima de agrupamento de transação também é colocada no registrador geral R1, tal como nos bits 16-31.
[0119] Substituição de Filtração de Interrupção de Programa de Execução Transacional (PIFO): O bit 9 do registrador de controle zero é a substituição de filtração de interrupção de programa de execução transacional. Este bit constitui um mecanismo pelo qual o programa de controle pode assegurar que qualquer condição de exceção de programa que ocorre enquanto a CPU está no modo de execução transacional resulte em uma interrupção, independentemente do controle de filtração de interrupção de programa efetivo especificado ou implícito pela instrução INICIAR TRANSAÇÃO.
[0120] Registrador de Controle 2 Bits: As atribuições são como segue em uma concretização:
[0121] Escopo de Diagnóstico de Transação (TDS): O bit 61 do registrador de controle 2 controla a aplicabilidade do controle de diagnóstico de transação (TDC) nos bits 6263 do registrador da seguinte maneira:
[0122] TDSValor Significado0 O TDC se aplica independentemente se aCPU está no estado de problema ou supervisor.1 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.
[0123] Controle de Diagnóstico de Transação (TDC):Os bits 62-63 do registrador de controle 2 são um número inteiro não assinado de 2 bits que pode ser usado para fazer com que as transações sejam aleatoriamente abortadas para fins de diagnóstico. A codificação do TDC é como segue em um exemplo:
[0124] TDCValor Significado0 Operação normal; as transações não sãoabortadas como um resultado do TDC.1 Abortar cada transação em uma instruçãoaleatória, mas antes de execução da instrução TERMINAR TRANSAÇÃO mais externa. 2 Abortar transações aleatórias em uma instrução aleatória.3 Reservado
[0125] Quando uma transação é abortada em virtude de um TDC diferente de zero, pode ocorrer uma das seguintes situações:
[0126] • O código de aborto é definido para qualquer um dos códigos 7-11, 13-16 ou 255, com o valor do código escolhido aleatoriamente pela CPU; o código de condição está definido de forma correspondente ao código de aborto. Os códigos de aborto são ainda descritos abaixo.
[0127] • Para uma transação não restrita, o código de condição é definido como um. Neste caso, o código de aborto não é aplicável.
[0128] Depende do modelo se o valor TDC de 1 é implementado. Se não implementado, um valor de 1 atua como se 2 fosse especificado.
[0129] Para uma transação restrita, um valor TDC de 1 é tratado como se um valor TDC de 2 fosse especificado.
[0130] Se um valor TDC de 3 é especificado, os resultados são imprevisíveis.
[0131] Endereço de Bloco Diagnóstico de Transação (TDBA)
[0132] 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 INICIAR TRANSAÇÃO (TBEGIN) mais externa quando o campo B1 da instrução é diferente de zero. Quando a CPU está no modo de espaço primário ou modo de registrador de acesso, 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 interno, o TDBA designa um local no espaço de endereço secundário ou de residência, respectivamente. Quando DAT (Tradução Dinâmica de Endereços) está desativada, o TDBA designa um local na memória real.
[0133] O TDBA é usado pela CPU para localizar o bloco diagnóstico de transação - denominado TDB especificado por TBEGIN - se a transação é posteriormente abortada. Os três bits mais à direita do TDBA são zero, o que significa que o TDB especificado pela TBEGIN está em um limite de palavra dupla.
[0134] Quando o campo B1 de uma instrução INICIAR TRANSAÇÃO (TBEGIN) mais externa é zero, o endereço do bloco diagnóstico de transação é inválido e nenhum TDB especificado por TBEGIN é armazenado se a transação é posteriormente abortada.
[0135] PSW de Abortar Transação (TAPSW)
[0136] Durante execução da instrução INICIAR TRANSAÇÃO (TBEGIN) quando a profundidade de agrupamento é 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 (isto é, a instrução após a TBEGIN mais externa). Durante execução da instrução INICIAR TRANSAÇÃO restrita (TBEGINC) quando a profundidade de agrupamento é 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).
[0137] 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 aborto. Posteriormente, 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.
[0138] A PSW de abortar transação não é alterada durante a execução de qualquer instrução INICIAR TRANSAÇÃO interna.
[0139] Profundidade de Agrupamento de Transação (TND)
[0140] A profundidade de agrupamento de transação é, por exemplo, um valor sem assinatura de 6 bits que é incrementado cada vez que uma instrução INICIAR TRANSAÇÃO é concluída com o código de condição 0 e diminuída cada vez que uma instrução TERMINAR TRANSAÇÃO é concluída. A profundidade de agrupamento de transação é redefinida para zero quando uma transação é abortada ou quando de reinicialização da CPU.
[0141] Em uma concretização, é implementado uma TND máxima de 15.
[0142] Em uma implementação, quando a CPU está no modo de execução transacional restrita, a profundidade de agrupamento de transação é um. Além disso, embora a TND máxima possa ser representada como um valor de 4 bits, a TND é definida como um valor de 16 bits para facilitar sua inspeção no bloco diagnóstico de transação.
[0143] Bloco Diagnóstico de Transação (TDB)
[0144] Quando uma transação é abortada, múltiplas informações sobre estado podem ser salvas em um bloco diagnóstico de transação (TDB) da seguinte maneira:1. TDB especificado por TBEGIN: 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 um TDB especificado por TBEGIN. Este é um local especificado pelo programa de aplicativo que pode ser examinado pelo manipulador de aborto de aplicativo.2. TDB de Interrupção de programa (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 (isto é, qualquer condição que resulte em uma interrupção de programa sendo reconhecida), o PI-TDB é armazenado em locais na área de prefixo. Este está disponível para que o sistema operacional inspecione e faça log out em qualquer relatório diagnóstico que ele possa fornecer.3. TDB de Interceptação: Se a transação é abortada em virtude de qualquer condição de exceção de programa que resulte em interceptação (isto é, a condição faz com que a execução interpretativa termine e o controle retorne para o programa host), um TDB é armazenado em um local especificado no bloco de descrição de estado para o sistema operacional convidado.
[0145] O TDB especificado por TBEGIN é armazenado apenas, em uma concretização, quando o endereço de TDB é válido (isto é, quando o campo B1 da instrução TBEGIN é diferente de zero).
[0146] Para abortos em virtude de condições de exceção de programa não filtradas, somente um do PI-TDB ou TDB de Interceptação será armazenado. Assim, pode haver zero, um ou dois TDBs armazenados para um aborto.
[0147] Mais detalhes sobre um exemplo de cada um dos TDBs são descritos abaixo:
[0148] TDB especificado por TBEGIN: O local de 256 bytes especificado por um endereço de bloco diagnóstico de transação válido. Quando o endereço de bloco diagnóstico de transação é válido, o TDB especificado por TBEGIN é armazenado em um aborto de transação. O TDB especificado por TBEGIN está sujeito a todos os mecanismos de proteção de memória que estão em vigor quando de execução da instrução INICIAR TRANSAÇÃO mais externa. Um evento de alteração de memória PER (Registro de Evento de Programa) para qualquer parte do TDB especificado por TBEGIN é detectado durante a execução da TBEGIN mais externa, não durante o processamento de aborto de transação.
[0149] Uma finalidade do PER é auxiliar na depuração de programas. Ele permite que o programa seja alertado quanto aos seguintes tipos de eventos como exemplos:[0001] Execução de uma instrução de ramificação bem sucedida. A opção é fornecida se um evento ocorre apenas quando o local do alvo 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. A opção é fornecida se um evento ocorre apenas quando a área de armazenamento está dentro de espaços de endereço designados.[0004] Execução de uma instrução ARMAZENAR USANDO ENDEREÇO REAL.[0005] Execução da instrução TERMINAR TRANSAÇÃO.
[0150] O programa pode especificar seletivamente que um ou mais dos tipos de eventos acima são reconhecidos, exceto que o evento para ARMAZENAR USANDO ENDEREÇO REAL pode ser especificado apenas junto com o evento de alteração de memória. As informações relativas a um evento PER são fornecidas ao programa por meio de uma interrupção de programa, com a causa da interrupção sendo identificada no código de interrupção.
[0151] Quando o endereço do bloco diagnóstico de transação não é válido, um TDB especificado por TBEGIN não é armazenado.
[0152] TDB por Interrupção de Programa: Locais reais 6.144-6.399 (1800-18FF hex). O TDB por interrupção de programa é armazenado quando uma transação é interrompida em virtude de uma interrupção de programa. Quando uma transação é interrompida em virtude de outras causas, os conteúdos do TDB por interrupção de programa são imprevisíveis.
[0153] O TDB por interrupção de programa não está sujeito a nenhum mecanismo de proteção. Eventos PER de alteração de memória não são detectados para o TDB por interrupção de programa quando ele é armazenado durante uma interrupção de programa.
[0154] TDB de Intercepção: O local real host de 256 bytes especificado pelos locais 488-495 da descrição de estado. O TDB de interceptação é armazenado quando uma transação abortada resulta em uma intercepção de interrupção de programa convidado (isto é, código de intercepção 8). Quando uma transação é abortada em virtude de outras causas, os conteúdos do TDB de interceptação são imprevisíveis. O TDB de intercepção não está sujeito a nenhum mecanismo de proteção.
[0155] Conforme ilustrado na Figura 9, os campos de um bloco diagnóstico de transação 900 são os seguintes em uma concretização:
[0156] Formato 902: O byte 0 contém uma indicação de validade e formato como segue:
[0157] Valor Significadoi. Os campos restantes do TDB são imprevisíveis.ii. Um TDB de formato 1, cujos campos restantes sãodescritos abaixo.
[0158] 2-255 Reservado
[0159] Um TDB cujo campo de formato é zero é dito como um TDB nulo.
[0160] Flags 904: O byte 1 contém múltiplas indicações como segue:
[0161] Validade de Token de Conflito (CTV): Quando uma transação é abortada em virtude de um conflito de busca ou escrita na memória (isto é, códigos de aborto 9 ou 10, respectivamente), o bit 0 do byte 1 é a indicação de validade de token de conflito. Quando a indicação CTV é um, o token de conflito 910 nos bytes 16-23 do TDB contém o endereço lógico no qual o conflito foi detectado. Quando a indicação CTV é zero, os bytes 16, 23 do TDB são imprevisíveis.
[0162] Quando uma transação é abortada em virtude de qualquer outro motivo que não um conflito de busca ou escrita na memória, o bit 0 do byte 1 é armazenado como zero.
[0163] Indicação de Transação Restrita (CTI): Quando a CPU está no modo de execução transacional restrita, o bit 1 do byte 1 é definido como um. Quando a CPU está no modo de execução transacional não restrita, o bit 1 do byte 1 é definido como zero.
[0164] Reservado: Os bits 2-7 do byte 1 são reservados e armazenados como zeros.
[0165] Profundidade de Agrupamento de Transação (TND) 906: Os bytes 6-7 contêm a profundidade de agrupamento de transação quando a transação foi abortada.
[0166] Código de Aborto de Transação (TAC) 908: Os bytes 8-15 contêm um código de aborto de transação não assinado de 64 bits. Cada ponto de código indica uma razão para que a transação seja abortada.
[0167] Depende do modelo se o código de aborto de 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.
[0168] Token de Conflito 910: Para as transações que são abortadas em virtude de conflitos de busca ou escrita na memória (isto é, códigos de aborto 9 e 10, respectivamente), os bytes 16-23 contêm o endereço lógico do local na memória no qual o conflito foi detectado. O token de conflito é significativo quando o bit de CTV, bit 0 do byte 1, é um.
[0169] Quando o bit de CTV é zero, os bytes 16-23 são imprevisíveis.
[0170] Em virtude da execução especulativa pela CPU, o token de conflito pode designar um local na memória que não é necessariamente acessado pela sequência de execução conceitual da transação.
[0171] Endereço de Instrução de Transação Abortada (ATIA) 912: Os bytes 24-31 contêm um endereço de instrução que identifica a instrução que estava sendo executada quando um aborto foi detectado. Quando uma transação é abortada em virtude dos códigos de aborto 2, 5, 6, 11, 13 ou 256 ou maior ou quando uma transação é abortada em virtude dos códigos de aborto 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 aborto 4 ou 12 e a condição de exceção de programa não é nula, o ATIA aponta para a instrução que estava sendo executada.
[0172] Quando uma transação é abortada em virtude de códigos de aborto 7-10, 14-16 ou 255, o ATIA não indica necessariamente a instrução exata que causou o aborto, mas pode indicar uma instrução anterior ou posterior dentro da transação.
[0173] Se uma transação é abortada em virtude de uma instrução que é o alvo de uma instrução de tipo execução, o ATIA identifica a instrução de tipo execução ao apontar para a instrução ou passá-la, dependendo do código de aborto conforme descrito acima. O ATIA não indica o alvo da instrução de tipo execução.
[0174] 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.
[0175] Depende do modelo se o endereço da 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.
[0176] Quando uma transação é abortada em virtude do código de aborto 4 ou 12 e a condição de exceção de programa não é nula, o ATIA não apontará para a instrução que causou o aborto. Ao subtrair o número de meias-palavras indicadas pelo Código de Comprimento de Interrupção (em inglês, ILC) do ATIA, a instrução que causa o aborto pode ser identificada em condições que estão sendo suprimidas ou encerradas ou para eventos não PER que estão sendo concluídos. 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.
[0177] Quando o endereço do bloco diagnóstico de transação é válido, o ILC pode ser examinado na Identificação de Interrupção de Programa (em inglês, PHD) nos bytes 36-39 do TDB especificado por TBEGIN. Quando a filtração não se aplica, o ILC pode ser examinado na PHD no local 140-143 na memória real.
[0178] Identificação de Acesso à Exceção (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 especificado por TBEGIN contém a identificação de acesso à exceção. Em um exemplo da z/Architecture, o formato da EAID e os casos para os quais ela é armazenada são os mesmos que aqueles descritos no local real 160 quando a condição de exceção resulta em uma interrupção, conforme descrito em Princípios de Operação acima incorporado por referência.
[0179] Para as 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 por interrupção de programa.
[0180] Este campo é armazenado apenas no TDB designado pelo endereço do bloco diagnóstico de transação; caso contrário, o campo é reservado. A EAID é armazenada apenas para a lista de acesso controlada ou proteção de DAT, tipo ASCE, tradução de página, tradução de primeira região, tradução de segunda região, tradução de terceira região e condições de exceção de programa de tradução de segmento.
[0181] Código de Exceção de Dados (DXC) 916: Para transações que são abortadas em virtude de condições de exceção de programa por exceção de dados filtrados, o byte 33 do TDB especificado por TBEGIN contém o código de exceção de dados. Em um exemplo da z/Architecture, o formato do DXC e os casos para os quais ele é armazenado são os mesmos que aqueles descritos no local real 147 quando a condição de exceção resulta em uma interrupção, conforme descrito em Princípios de Operação acima incorporado por referência. Em um exemplo, o local 147 inclui o DXC.
[0182] Para as 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 por interrupção de programa.
[0183] Este campo é armazenado apenas no TDB designado pelo endereço do bloco diagnóstico de transação; caso contrário, o campo é reservado. O DXC é armazenado apenas para condições de exceção de programa de dados.
[0184] Identificação de Interrupção de Programa (PHD) 918: Para as transações que são abortadas em virtude de condições de interrupção de programa filtradas, os bytes 36-39 do TDB especificado por TBEGIN contêm a identificação de exceção de programa. Em um exemplo da z/Architecture, o formato da PHD é o mesmo que aquele descrito em locais reais 140-143 quando a condição resulta em uma interrupção (conforme descrito em Princípios de Operação acima incorporado por referência), exceto que o código de comprimento de instrução nos bits 13-14 da PHD corresponde à instrução na qual a condição de exceção foi detectada.
[0185] Para as 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 por interrupção de programa.
[0186] Este campo é armazenado apenas no TDB designado pelo endereço do bloco diagnóstico de transação; caso contrário, o campo é reservado. A identificação da interrupção de programa é armazenada apenas para condições de exceção de programa.
[0187] Identificação de Exceção de Tradução (TEID) 920: Para transações que são abortadas em virtude de uma das condições de exceção de programa filtradas a seguir, os bytes 40-47 do TDB especificado por TBEGIN contêm a identificação de exceção de tradução.a. Lista de acesso controlada ou proteção de DATb. Tipo ASCEc. Tradução de páginad. Tradução de primeira regiãoe. Tradução de segunda regiãof. Tradução de terceira regiãog. Exceção de tradução de segmento
[0188] Em um exemplo da z/Architecture, o formato da TEID é o mesmo que aquele descrito em locais reais 168-175 quando a condição resulta em uma interrupção, conforme descrito em Princípios de Operação acima incorporado por referência.
[0189] Para as 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 por interrupção de programa.
[0190] Este campo é armazenado apenas no TDB designado pelo endereço do bloco diagnóstico de transação; caso contrário, o campo é reservado.
[0191] 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 especificado por TBEGIN contêm o endereço de evento de ruptura. Em um exemplo da z/Architecture, o formato do endereço de evento de ruptura é o mesmo que aquele descrito em locais reais 272-279 quando a condição resulta em uma interrupção, conforme descrito em Princípios de Operação acima incorporado por referência.
[0192] Para as 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 48-55 são imprevisíveis. Os bytes 48-55 são imprevisíveis no TDB por interrupção de programa.
[0193] Este campo é armazenado apenas no TDB designado pelo endereço do bloco diagnóstico de transação; caso contrário, o campo é reservado.
[0194] Mais detalhes sobre eventos de ruptura são descritos abaixo.
[0195] 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 que causou uma interrupção na execução sequencial da CPU. O registro de endereço de evento de ruptura pode ser usado como um auxiliar de depuração para detecção de ramificação selvagem. Esta unidade fornece, por exemplo, um registrador de 64 bits na CPU, denominado registrador de endereço de evento de ruptura. Cada vez que uma instrução diferente de ABORTAR TRANSAÇÃO causa uma interrupção na execução da instrução sequencial (isto é, o endereço da instrução na PSW é substituído, em vez de incrementado pelo comprimento da instrução), o endereço desta instrução é colocado no registrador de endereço de evento de ruptura. Sempre que ocorre uma interrupção de programa, quer o PER seja ou não indicado, os conteúdos atuais do registrador de endereço de evento de ruptura são registrados em locais 272-279 na memória real.
[0196] Se a instrução que causa o evento de ruptura é o alvo de uma instrução de tipo execução (EXECUTE ou EXECUTE RELATIVE LONG), então, o endereço de instrução usado para buscar a instrução de tipo execução é colocado no registrador de endereço de evento de ruptura.
[0197] Em uma concretização da z/Architecture, considera-se que um evento de quebra ocorre sempre que uma das seguintes instruções provoca uma 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 CONDITION (BC, BCR); BRANCH ON COUNT (BCT, BCTR, BCTG, BCTGR); BRANCH ON INDEX HIGH (BXH, BXHG); BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG); BRANCH RELATIVE ON CONDITION (BRC); BRANCH RELATIVE ON CONDITION LONG (BRCL); BRANCH RELATIVE ON COUNT (BRCT, BRCTG); BRANCH RELATIVE ON INDEX HIGH (BRXH, BRXHG); BRANCH RELATIVE ON INDEX LOW OR EQUAL (BRXLE, BRXLG); COMPARE AND BRANCH (CRB, CGRB); COMPARE AND BRANCH RELATIVE (CRJ, CGRJ); COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ); COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ).
[0198] Um evento de ruptura também é considerado como ocorrendo sempre que 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).
[0199] Não se considera que um evento de ruptura ocorre como um resultado de aborto de uma transação (implícito ou como um resultado da instrução ABORTAR TRANSAÇÃO).
[0200] Informação Sobre Diagnóstico Dependente de Modelo 924: Os bytes 112-127 contêm informação sobre diagnóstico dependente de modelo.
[0201] Para todos os códigos de aborto, exceto 12 (interrupção de programa filtrada), a informação sobre diagnóstico dependente de modelo é salva em cada TDB que é armazenado.
[0202] Em uma concretização, a informação sobre diagnóstico dependente de modelo inclui o seguinte:[0001] Os bytes 112-119 contêm um vetor de 64 bits denominado indicações de ramificação de execução transacional (em inglês, TXBI). Cada um dos primeiros 63 bits do vetor indica os resultados da execução de uma instrução de ramificação enquanto a CPU estava no modo de execução transacional da seguinte forma:
[0203] Valor Significadoi. As instruções são concluídas sem ramificação.ii. As instruções concluídas com ramificação.
[0204] 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.
[0205] 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 para zeros (incluindo o bit 63). Quando mais de 63 instruções de ramificação foram executadas, o bit 63 da TXBI é definido para um.
[0206] Os bits na TXBI são definidos por instruções que são capazes de causar um evento de ruptura, conforme listado acima, exceto o seguinte:
[0207] - Qualquer instrução restrita não faz com que um bit seja definido na TXBI.
[0208] - Para instruções, por exemplo, da z/Architecture, quando o campo M1 DE BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, ou BRANCH RELATIVE ON CONDITION LONG é zero ou quando o campo R2 das instruções seguintes é 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 aborto que foram causadas por uma exceção de acesso do host, a posição de bit 0 do byte 127 é definida como um. Para todas as outras condições de aborto, a posição do bit 0 do byte 127 é definida para zero.[0003] Para condições de aborto que foram detectadas pela unidade de carregamento/armazenamento (em inglês, LSU), os cinco bits do byte 127 mais à direita contêm uma indicação da causa. Para condições de aborto que não foram detectadas pela LSU, o byte 127 é reservado.
[0209] Registradores gerais 930: Os bytes 128-255 contêm os conteúdos dos registradores gerais 0 15 no momento em que a transação foi abortada. Os registradores são armazenados em ordem crescente, começando pelo registrador geral 0 nos bytes 128-135, registrador geral 1 nos bytes 136-143 e assim por diante.
[0210] Reservado: Todos os outros campos são reservados. Salvo indicação em contrário, o conteúdo dos campos reservados é imprevisível.
[0211] Conforme observado por outras CPUs e o subsistema de E/S, armazenamento do(s) TDB(s) durante o aborto de uma transação é uma referência de acesso múltiplo que ocorre após as memórias não transacionais.
[0212] 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 (tal como LPAR ou z/VM) podem fazer com que uma transação seja abortada.
[0213] A informação fornecida no bloco diagnóstico de transação se destina a fins diagnósticos e é substancialmente correta. No entanto, uma vez que um aborto pode ter sido causado por um evento fora do escopo da configuração imediata, informações tal como o código de aborto ou a identificação da interrupção de programa podem não refletir com precisão as condições dentro da configuração e, assim, não devem ser usadas na determinação da ação do programa.
[0214] Além das informações sobre diagnóstico salvas no TDB, quando uma transação é abortada em virtude de qualquer condição de exceção de programa por exceção de dados e o controle de registrador AFP, o bit 45 do registrador de controle 0 e o controle de operação de ponto flutuante (F) efetivo são um, o código de exceção de dados (em inglês, DXC) está colocado no byte 2 do registrador de controle de ponto flutuante (em inglês, FPCR), independentemente se filtração se aplica à condição de exceção de programa. Quando uma transação é abortada e qualquer um, ou ambos, do controle de registrador AFP ou controle de operação de ponto flutuante efetivo são zero, o DXC não está colocado no FPCR.
[0215] 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] EXTRAIR PROFUNDIDADE DE AGRUPAMENTO DE TRANSAÇÃO [0002] MEMÓRIA NÃO TRANSACIONAL[0003] ABORTAR TRANSAÇÃO[0004] INICIAR TRANSAÇÃO[0005] TERMINAR TRANSAÇÃO
[0216] 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.
[0217] Quando emitida 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 restrição de transação ou pode resultar em prosseguir a execução como se a transação não fosse restrita.
[0218] Em um exemplo da z/Architecture, as instruções restritas incluem, como exemplos, 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 é 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.
[0219] Na lista acima, COMPARE AND SWAP AND STORE ePERFORM 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 para PREFETCH DATA e PREFETCH DATA RELATIVE LONG são eliminados porque os códigos de 6 e 7 liberam uma linha de cache, requerendo a confirmação dos dados potencialmente antes da conclusão de uma transação. SUPERVISOR CALL é restrito porque causa uma interrupção (o que faz com que uma transação seja abortada).
[0220] 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 o rastreamento de ramificação está habilitado.[0002] BRANCH AND SAVE AND SET MODE e BRANCH AND SET MODE quando o campo R2 é diferente de zero e o rastreamento de modo está habilitado; SET ADDRESSING MODE quando o rastreamento de modo está habilitado.[0003] MONITOR CALL quando uma condição de evento do monitor é reconhecida.
[0221] A lista acima inclui instruções que podem formar entradas de rastreamento. Se for permitido que estas instruções sejam executadas de forma transacional e formem entradas de rastreamento, e a transação é posteriormente abortada, o ponteiro da tabela de rastreamento no registrador de controle 12 seria avançado, mas as memórias na tabela de rastreamento seriam descartadas. Isto deixaria uma lacuna inconsistente na tabela de rastreamento; assim, as instruções são restritas nos casos onde elas formam entradas de rastreamento.
[0222] Quando a CPU está no modo de execução transacional, depende do modelo se as seguintes instruções estã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.
[0223] Cada uma das instruções acima é atualmente implementada pelo coprocessador de hardware, ou estava na máquina anteriormente e, assim, é considerada restrita.
[0224] Quando o controle permitir modificação por AR (A) efetivo é zero, as seguintes instruções são restritas:COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; e SET ACCESS.
[0225] Cada uma das instruções acima faz com que o conteúdo de um registrador de acesso seja modificado. Se o controle A na instrução INICIAR TRANSAÇÃO é zero, o programa indicou explicitamente que a modificação do registrador de acesso não deve ser permitida.
[0226] Quando o controle de operação de ponto flutuante (F) efetivo é zero, as instruções de ponto flutuante são restritas.
[0227] 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.
[0228] 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 tiver configurado o controle de intercepção para estas instruções, então, sua execução poderá ser prolongada em virtude de implementação do hipervisor; portanto, elas são consideradas restritas se ocorrer uma interceptação.
[0229] Quando uma tentativa não restrita é abortada em virtude de uma tentativa de execução de uma instrução restrita, o código de aborto da transação no bloco diagnóstico de transação é definido como 11 (instrução restrita) e o código da condição é definido como 3, exceto como segue: quando uma transação não restrita é abortada em virtude de uma tentativa de execução de uma instrução a qual, de outra forma, resultaria em uma exceção de operação privilegiada, é imprevisível se o código de aborto é definido como 11 (instrução restrita) ou 4 (interrupção de programa não filtrada resultante do reconhecimento da interrupção de programa por operação privilegiada). Quando uma transação não restrita é abortada em virtude de uma 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, é imprevisível se o código de aborto é definido como 11 (instrução restrita) ou 16 (outro cache). Quando uma transação não restrita é abortada em virtude de uma tentativa de execução de MONITOR CALL, e tanto uma condição de evento de monitor como uma condição de exceção de especificação estão presentes, é imprevisível se o código de aborto é definido para 11 ou 4 ou, se a interrupção de programa for filtrada, 12.
[0230] Instruções adicionais podem ser restritas em uma transação restrita. Embora estas instruções não estejam atualmente definidas como restritas em uma transação não restrita, elas podem ser restritas em determinadas circunstâncias em uma transação não restrita em futuros processadores.
[0231] Determinadas instruções restritas podem ser permitidas no modo de execução transacional em futuros processadores. Portanto, o programa não deve confiar que a transação seja abortada em virtude de uma tentativa de execução de uma instrução restrita. A instrução ABORTAR TRANSAÇÃO deve ser usada para fazer com que uma transação seja abortada de forma confiável.
[0232] Em uma transação não restrita, o programa deve fornecer um caminho de código não transacional alternativo para acomodar uma transação que é abortada em virtude de uma instrução restrita.
[0233] Em operação, quando a profundidade de agrupamento de transação é zero, a execução da instrução INICIAR TRANSAÇÃO (TBEGIN) que resulta em um 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 agrupamento de transação é zero, a execução da instrução INICIAR TRANSAÇÃO (TBEGINC) que resulta em um código de condição zero faz com que a CPU entre no modo de execução transacional restrita.
[0234] Exceto onde explicitamente indicado de outra forma, todas as regras que se aplicam à execução não transacional também se aplicam à execução transacional. Abaixo estão as características adicionais do processamento enquanto a CPU está no modo de execução transacional.
[0235] Quando a CPU está no modo de execução transacional não restrita, a execução da instrução INICIAR TRANSAÇÃO que resulta em um código de condição zero faz com que a CPU permaneça no modo de execução transacional não restrita.
[0236] Conforme observado pela CPU, as buscas e as escritas na memória feitas no modo de execução transacional não são diferentes daquelas feitas enquanto não está no modo de execução transacional. Conforme observado por outras CPUs e pelo subsistema de E/S, todos os acessos ao operando de memória feitos enquanto uma CPU está no modo de execução transacional aparecem como um único acesso simultâneo ao bloco. Isto é, os acessos a todos os bytes dentro de uma meia palavra, palavra, palavra dupla ou palavra quádrupla (quadword) são especificados para parecer serem concorrentes dentro do bloco, conforme observado por outras CPUs e programas de E/S (por exemplo, canal). A meia palavra, palavra, palavra-chave ou palavra quádrupla é dita nesta seção como bloco. Quando uma referência de tipo busca é especificada como parecer ser concorrente dentro de um bloco, nenhum acesso à memória ao bloco por outra CPU ou programa de E/S é permitido durante o tempo que os bytes contidos no bloco estão sendo buscados. Quando uma referência de tipo memória é especificada como parecer ser concorrente dentro de um bloco, nenhum acesso ao bloco, seja busca ou escrita na memória, é permitido por outra CPU ou programa de E/S durante o tempo que os bytes dentro do bloco estão sendo escritos na memória.
[0237] Os acessos à memória para instrução e buscas em tabelas de DAT e ART (Tabela de Registrador de Acesso) seguem regras não transacionais.
[0238] A CPU sai do modo de execução transacional normalmente por meio de uma instrução TERMINAR TRANSAÇÃO que faz com que a profundidade de agrupamento de transação mude para zero, caso no qual a transação é concluída.
[0239] Quando a CPU sai do modo de execução transacional por meio da conclusão de uma instrução TERMINAR TRANSAÇÃO, todas as escritas na memória feitas no modo de execução transacional são confirmadas; isto é, as escritas na memória parecem ocorrer como uma única operação concorrente dentro de um bloco, conforme observado por outras CPUs e pelo subsistema de E/S.
[0240] Uma transação pode ser abortada implicitamente por uma variedade de causas ou pode ser abortada explicitamente pela instrução ABORTAR TRANSAÇÃO. Possíveis causas exemplificativas para aborto de uma transação, o código de aborto correspondente e o código de condição que é colocado na PSW de abortar transação são descritos abaixo.
[0241] Interrupção Externa: O código de aborto de 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.
[0242] Interrupção de Programa (Não Filtrada): Uma condição de exceção de programa que resulta em uma interrupção (isto é, uma condição não filtrada) faz com que a transação seja abortada com o código 4. O código de condição na PSW de abortar transação é definido especificamente 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.
[0243] Uma instrução a qual, de outra forma, resultaria em aborto de uma transação 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 código de aborto 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.
[0244] Quando um evento PER (Registro de Evento de Programa) é reconhecido conjuntamente com qualquer outra condição de exceção de programa não filtrada, o código de condição é definido como 3.
[0245] Interrupção de Verificação de Máquina: O código de aborto de 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 parte do processamento de interrupção de verificação de máquina.
[0246] Interrupção de E/S: O código de aborto de 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 parte do processamento de interrupção de E/S.
[0247] Excesso de Buscas: Uma condição de excesso de busca é detectada quando a transação tenta obter mais locais do que a CPU suporta. O código de aborto de transação é definido como 7 e o código de condição é definido como 2 ou 3.
[0248] Estouro de Memória: Uma condição de estouro de memória é detectada quando a transação tenta armazenar em mais locais do que a CPU suporta. O código de aborto de transação é definido como 8 e o código de condição é definido como 2 ou 3.
[0249] Permitir que o código de condição seja 2 ou 3 em resposta a um aborto por excesso de buscas ou estouro de memória permite que a CPU indique situações potencialmente passíveis de repetição (por exemplo, o código de condição 2 indica que a nova execução da transação pode ser produtiva, enquanto que o código de condição 3 não recomendar uma nova execução).
[0250] Conflito de Busca: Uma condição de conflito de busca é detectada quando outra CPU ou o subsistema de E/S tentam armazenar em um local que foi processado de forma transacional por esta CPU. O código de aborto de transação é definido como 9 e o código de condição é definido como 2.
[0251] Conflito de Memória: Uma condição de conflito de memória é detectada quando outra CPU ou o subsistema de E/S tenta acessar um local que foi escrito na memória durante a execução transacional por esta CPU. O código de aborto de transação é definido como 10 e o código de condição é definido como 2.
[0252] 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 aborto de transação é definido como 11 e o código de condição é definido como 3.
[0253] Quando a CPU está no modo de execução transacional restrita, é imprevisível se a tentativa de execução de uma instrução restrita resultará em uma interrupção de programa por restrição de transação ou um aborto em virtude de uma instrução restrita. A transação ainda é abortada, mas o código de aborto pode indicar qualquer causa.
[0254] Condição de Exceção de Programa (Filtrada): Uma condição de exceção de programa que não resulta em uma interrupção (isto é, uma condição filtrada) faz com que a transação seja abortada com um código de aborto de transação de 12. O código de condição é definido como 3.
[0255] Profundidade de Agrupamento Excedida: A condição de profundidade de agrupamento excedida é detectada quando a profundidade de agrupamento de transação está no valor máximo permitido para a configuração e uma instrução INICIAR TRANSAÇÃO é executada. A transação é interrompida com um código de aborto de transação de 13 e o código de condição é definido como 3.
[0256] Condição Relacionada à Busca de Cache: Uma condição relacionada aos locais de armazenamento obtidos pela transação é detectada pelos circuitos de cache da CPU. A transação é abortada com um código de aborto de transação de 14 e o código de condição é definido como 2 ou 3.
[0257] Condição Relacionada à Memória de Cache: Uma condição relacionada aos locais na memória escritos pela transação é detectada pelos circuitos de cache da CPU. A transação é abortada com um código de aborto de transação de 15 e o código de condição é definido como 2 ou 3.
[0258] Outra Condição de Cache: Uma outra condição de cache é detectada pelos circuitos de cache da CPU. A transação é abortada com um código de aborto de transação de 16 e o código de condição é definido como 2 ou 3.
[0259] Durante a execução transacional, se a CPU acessa instruções ou operandos de memória usando diferentes endereços lógicos que são mapeados para o mesmo endereço absoluto, depende do modelo se a transação é abortada. Se a transação é abortada em virtude de acessos usando diferentes endereços lógicos mapeados para o mesmo endereço absoluto, o código de aborto 14, 15 ou 16 é definido, dependendo da condição.
[0260] 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 aborto de transação é definido como 255 e o código de condição é definido como 2 ou 3.
[0261] Quando múltiplas 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 de máquina externa ou uma interrupção de E/S que ocorreu em uma configuração diferente.
[0262] Embora exemplos sejam fornecidos acima, outras causas para aborto de uma transação com códigos de aborto correspondentes e códigos de condição podem ser fornecidos. Por exemplo, uma causa pode ser uma Interrupção de Reinicialização, na qual o código de aborto de 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 a PSW de reinicialização antiga como uma parte do processo de reinicialização. Como um exemplo adicional, uma causa pode ser uma condição de Chamada pelo Supervisor, na qual o código de aborto é 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.
[0263] Notas:1. A condição diversa pode resultar de qualquer um dos seguintes:[0002] Instruções, tal 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 na qual o controle NQ é zero, executada por outra CPU na configuração; o código de condição é definido como 2.[0003] Uma função de operador, tal como redefinir, reiniciar ou parar, 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.
[0264] 2. O local no qual os conflitos de busca e escrita na memória são detectados pode ser qualquer lugar dentro da mesma linha de cache.
[0265] 3. Sob determinadas condições, a CPU pode não ser capaz de distinguir entre condições de aborto similares. Por exemplo, um excesso de buscas ou estouro de memória pode ser indistinguível de um conflito de busca ou escrita na memória.
[0266] 4. A execução especulativa de múltiplos caminhos de instruções pela CPU pode resultar em aborto de uma transação em virtude de condições de conflito ou estouro, 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 tentativa seja concluída sem detectar tais conflitos ou estouros de forma especulativa.
[0267] A execução de uma instrução ABORTAR TRANSAÇÃO faz com que a transação seja abortada. O código de aborto da transação é definido a partir do segundo endereço de operando. O código de condição é definido para 2 ou 3, dependendo se o bit 63 do segundo endereço de operando é zero ou um, respectivamente.
[0268] A Figura 10 resume os códigos de aborto exemplificativos armazenados no bloco diagnóstico de transação e o código de condição (em inglês, CC) correspondente. A descrição na Figura 10 ilustra uma implementação específica. Outras implementações e codificações de valores são possíveis.
[0269] Em uma concretização conforme mencionado acima, a unidade transacional permite transações restritas e transações não restritas, bem como processamento associado às mesmas. Inicialmente, as transações restritas são discutidas e, então, transações não restritas.
[0270] Uma transação restrita executa no modo transacional sem um caminho de fail-back. Este é um modo de processamento útil para funções compactas. Na ausência de interrupções ou conflitos repetidos com outras CPUs ou o subsistema de E/S (isto é, causadas por condições que não permitirão que a transação seja concluída com sucesso), uma transação restrita acabará sendo concluída; portanto, uma rotina para lidar com um aborto não é necessária nem 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 do temporizador que não permite que uma instrução seja executada; uma 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.
[0271] Uma transação restrita é iniciada por uma instrução INICIAR TRANSAÇÃO restrita (TBEGINC) quando a profundidade de agrupamento de transação é inicialmente zero. Uma transação restrita está sujeita às seguintes restrições em uma concretização.1. A transação não executa mais de 32 instruções, não incluindo as instruções INICIAR TRANSAÇÃO restrita (TBEGINC) e TERMINAR TRANSAÇÃO. 2. Todas as instruções na transação devem estar dentro de 256 bytes contíguos de memória, incluindo as instruções INICIAR TRANSAÇÃO restrita (TBEGINC) e TERMINAR TRANSAÇÃO.3. Além das instruções restritas, as seguintes restrições se aplicam a uma transação restrita.i. As instruções estão limitadas àquelas ditas como Instruções Gerais incluindo, por exemplo, adicionar, subtrair, multiplicar, dividir, mudar, girar, etc.ii. As instruções de ramificação são limitadas às seguintes (as instruções listadas são da z/Architecture em um exemplo):[0002] BRANCH RELATIVE ON CONDITION na qual M1 é diferente de zero e o campo RI2 contém um valor positivo.[0003] 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.[0004] 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. (Isto é, apenas ramificações diretas com máscaras de ramificação diferentes de zero).
[0272] c. Exceto para a instrução TERMINAR TRANSAÇÃO e instruções as quais causam uma serialização de operando especificada, as instruções que causam uma função de serialização são restritas.
[0273] d. As instruções de operações de armazenamento-e-armazenamento (SS-) e operações de armazenamento-e-armazenamento de código aberto (SSE-) são restritas.
[0274] e. Todas as instruções gerais a seguir (as quais são da z/Architecture neste exemplo) são restritas: CHECKSUM; CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG; COMPARE LOGICAL LONG EXTENDED; COMPARE LOGICAL LONG UNICODE; COMPARE LOGICAL STRING; COMPARE UNTIL SUBSTRING 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 QUAD WORD; TEST ADDRESSING MODE; TRANSACTION ABORT; TRANSACTION BEGIN (tanto TBEGIN como TBEGINC); TRANSLATE AND TEST EXTENDED; TRANSLATE AND TEST REVERSE EXTENDED; TRANSLATE EXTENDED; TRANSLATE ONE TO ONE; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE; e TRANSLATE TWO TO TWO.
[0275] 4. Os operandos de memória da transação acessam não mais do que quatro palavras.
[0276] 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.
[0277] 5. A transação em execução nesta CPU, ou armazenada por outras CPUs ou o subsistema de E/S, não acessa os operandos de memória em quaisquer blocos de 4 bytes que contenham os 256 bytes de memória que começam com a instrução INICIAR TRANSAÇÃO restrita (TBEGINC).
[0278] 6. A transação não acessa instruções ou operandos de memória usando diferentes endereços lógicos que são mapeados para o mesmo endereço absoluto.
[0279] 7. As referências de operandos feitas pela transação devem estar dentro de uma única palavra dupla, exceto quanto a LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE e STORE MULTIPLE HIGH, as referências de operandos devem estar dentro de uma única octoword.
[0280] 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 outras violações de restrições ainda podem resultar em uma interrupção de programa por restrição de transação. É imprevisível qual ação será tomada e a ação executada pode variar de acordo com a violação da restrição.
[0281] Na ausência de violações de restrições, interrupções ou conflitos repetidos com outras CPUs ou com o subsistema de E/S, uma transação restrita eventualmente será concluída, conforme descrito acima.1. A chance de concluir com êxito uma transação restrita melhora se a transação atende aos seguintes critérios:i. As instruções emitidas são menos do que o máximo de 32.ii. As referências de operando de memória são menores do que o máximo de 4 octowords.iii. As referências de operando de memória estão na mesma linha de cache.iv. As referências de operando de memória para os mesmos locais ocorrem na mesma ordem por todas as transações.2. A conclusão de uma transação restrita não é necessariamente assegurada com sucesso em sua primeira execução. No entanto, se uma transação restrita que não viola nenhuma das restrições listadas é abortada, a CPU emprega circuitos para garantir que uma execução repetida da transação seja subsequentemente bem sucedida.3. Dentro de uma transação restrita, a instrução INICIAR TRANSAÇÃO é uma instrução restrita, portanto, uma transação restrita não pode ser agrupada.4. A violação de qualquer uma das restrições 1-7 acima por uma transação restrita pode resultar em um loop de programa.5. As limitações de uma transação restrita são similares àquelas de um loop COMPARE-AND-SWAP. Em virtude da interferência potencial de outras CPUs e do subsistema de E/S, não há garantia arquitetônica de que uma instrução COMPARE-AND-SWAP nunca seja concluída com o código de condição 0. Uma transação restrita pode sofrer interferências similares na forma de abortos por conflitos de busca ou memória ou interrupções quentes.
[0282] A CPU emprega algoritmos de equidade para garantir que, na ausência de violações de restrições, uma transação restrita seja eventualmente concluída.
[0283] 6. Para determinar o número de iterações repetidas necessárias para concluir uma transação restrita, o programa pode empregar um contador em um registrador geral que não está sujeito à máscara de salvar registrador geral. Um exemplo é mostrado abaixo.
[0284]
[0285] LH 1
[0286] 5,0
[0287] Contador detentativa zero.
[0288] oop
[0289] BEGINC
[0290] (0),X 'FE00'
[0291] Preservar GRs 0-13
[0292]
[0293] HI
[0294] 5,1
[0295] Incrementarcontador
[0296]
[0297]. .
[0298]
[0299]
[0300]
[0301]. .
[0302] Código deexecução de transação restrita
[0303]
[0304]. .
[0305]
[0306]
[0307]
[0308] END
[0309]
[0310] Fim de transação
[0311] Observe que ambos os registradores 14 e 15 não são restaurados neste exemplo. Observe também que, em alguns modelos, a contagem no registrador geral 15 pode ser baixa se a CPU detectar a condição de aborto após a conclusão da instrução TBEGINC, mas antes da conclusão da instrução AHI.
[0312] Conforme observado pela CPU, as buscas e escritas na memórias feitas no modo de execução transacional não são diferentes daquelas feitas enquanto não está no modo de execução transacional.
[0313] Em uma concretização, o usuário (isto é, aquele que cria a transação) escolhe se uma transação deve ou não ser restrita. Uma concretização da lógica associada ao processamento transacional restrita e, em particular, processamento associado a uma instrução TBEGINC, é descrita com referência à Figura 11. A execução da instrução TBEGINC faz com que a CPU entre no modo de execução transacional restrito ou permaneça no modo de execução não restrita. A CPU (isto é, o processador) que executa a TBEGINC executa a lógica da Figura 11.
[0314] Com referência à Figura 11, com base na execução de uma instrução TBEGINC, uma função de serialização é executada, ETAPA 1100. Uma função ou operação de serialização inclui concluir todos os acessos à memória conceitualmente anteriores (e, para a z/Architecture, como exemplo, definições do bit de referência e bit de alteração) pela CPU, conforme observado por outras CPUs e pelo subsistema de E/S, antes que ocorram os acessos à memória conceitualmente subsequentes (e definições do bit de referência e bit de alteração). A serialização afeta a equidade de todos os acessos da CPU à memória e às chaves de memória, exceto aqueles associados a buscas por entradas na tabela de ART e entradas na tabela de DAT.
[0315] Quando observado por uma CPU no modo de execução transacional, a serialização funciona normalmente (conforme descrito acima). Quando observado por outras CPUs e pelo subsistema de E/S, uma operação de serialização executada enquanto uma CPU está no modo de execução transacional ocorre quando a CPU sai do modo de execução transacional como um resultado de uma instrução TERMINAR TRANSAÇÃO que diminui a profundidade de agrupamento de transações para zero (finalização normal) ou como um resultado de aborto da transação.
[0316] Após execução da serialização, é feita uma determinação se uma exceção é reconhecida, CONSULTA 1102. Se assim for, a exceção é tratada, 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 registrador 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, não é zero; uma exceção de execução é reconhecida e a operação é suprimida se TBEGINC é 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 estiver instalada na configuração. Se a CPU já está no modo de execução transacional restrita, uma exceção de programa por exceção com restrições de transação é reconhecida e a operação é suprimida. Além disso, se a profundidade de agrupamento de transação, quando incrementada em 1, excede uma profundidade de agrupamento de transação máxima dependente de modelo, a transação é abortada com o código de aborto 13. Exceções adicionais ou diferentes podem ser reconhecidas e tratadas.
[0317] No entanto, se não houver uma exceção, então, é feita uma determinação se a profundidade de agrupamento de transação é zero, CONSULTA 1106. Se a profundidade de agrupamento de transação é zero, o endereço do bloco diagnóstico de transação será considerado inválido, ETAPA 1108; a PSW de abortar transação é definida a partir do conteúdo 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, ETAPA 1110; e os conteúdos dos pares de registradores gerais conforme designado pela máscara de salvar registrador geral são salvos em um local dependente de modelo que não é acessível diretamente pelo programa, ETAPA 1112. Além disso, a profundidade de agrupamento é definida como 1, ETAPA 1114. Além disso, o valor efetivo dos controles permitir operação de ponto flutuante (F) e filtração de interrupção de programa (em inglês, PIFC) são definidos como zero, ETAPA 1116. Além disso, o valor efetivo do controle permitir modificação de AR (A), campo de 12 bits 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 todas as instruções TBEGIN externas.
[0318] Voltando à CONSULTA 1106, se a profundidade de agrupamento de transação é maior do que zero, então, a profundidade de agrupamento é incrementada em 1, ETAPA 1120. Além disso, o valor efetivo da operação de ponto flutuante (F) é definido como zero e o valor efetivo do controle de filtração de interrupção de programa (em inglês, PIFC) não é alterado, ETAPA 1122. O processamento continua com a ETAPA 1118. Em uma concretização, um início bem sucedido 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.
[0319] Em uma concretização, a verificação de exceção fornecida acima pode ocorrer em múltiplas ordens. Uma ordem específica para a verificação de exceção é como segue:
[0320] Exceções com a mesma prioridade que a prioridade das condições de interrupção de programa para o caso geral.
[0321] Exceção de especificação em virtude do campo B1 conter um valor diferente de zero.
[0322] Aborto em virtude de exceder a profundidade de agrupamento de transação.
[0323] Além disso, o seguinte se aplica a uma ou mais concretizações:1. Os registradores designados para serem salvos pela máscara de salvar registrador geral são restaurados apenas se a transação é abortada e não quando a transação termina normalmente por TERMINAR TRANSAÇÃO. Somente os registradores designados pela GRSM da instrução INICIAR TRANSAÇÃO mais externa são restaurados quando de um aborto.
[0324] O campo I2 deve designar todos os pares de registradores que fornecem valores de entrada que são alterados por uma transação restrita. Assim, se a transação é abortada, os valores do registrador de entrada serão restaurados para seus conteúdos originais quando a transação restrita é novamente executada.
[0325] 2. Na maioria dos modelos, um desempenho aprimorado pode ser obtido, tanto em INICIAR TRANSAÇÃO quanto no momento em que uma transação é abortada ao especificar o número mínimo de registradores necessários a serem salvos e restaurados na máscara de salvar registrador geral.
[0326] 3. O seguinte ilustra os resultados da instrução INICIAR TRANSAÇÃO (TBEGIN e TBEGINC) com base na profundidade de agrupamento de transação atual (em inglês, TND) e, quando a TND é diferente de zero, se a CPU está no modo de execução transacional restrita ou não restrita.
[0327] Instrução
[0328] TND = 0
[0329] TBEGIN
[0330] Introduz ode execução transacional restrita modonão
[0331] TBEGINC
[0332] Introduz o modode execução transacional restrita
[0333]rução Inst
[0334] TND > 0
[0335]IN TBEG
[0336] Modo NTX
[0337] Modo CTX
[0338]
[0339] Contínua no modo de execução transacional não restrita
[0340] Exceção por restrição de transação
[0341]INC TBEG
[0342] Continua no modo de execução
[0343] Exceção por restrição detransacional não transaçãorestrita
[0344] Explicação:
[0345] CTX CPU está no modo de execuçãotransacional restrita
[0346] NTX CPU está no modo de execuçãotransacional não restrita
[0347] TND Profundidade de agrupamento detransação no início da instrução
[0348] Conforme descrito aqui, em um aspecto, aconclusão de uma transação restrita é assegurada ao garantir que ela não contém uma condição que a torne incapaz de ser concluída. Para garantir que ela seja concluída, o processador (por exemplo, CPU) que executa a transação pode tomar determinadas medidas. Por exemplo, se uma transação restrita tem uma condição de aborto, a CPU pode temporariamente:1. inibir a execução fora de ordem;2. impedir que outras CPUs acessem os locais conflitantes na memória;3. induzir a atrasos aleatórios no processamento de aborto; e/ou4. invocar outras medidas para facilitar a conclusão.
[0349] Para resumir, o processamento de uma transação restrita é como segue:[0001] Se já está no modo TX restrito, uma exceção por restrição de transação é reconhecida.[0002] Se TND (Profundidade de Agrupamento de Transação) atual > 0, a execução prossegue como se uma transação não restrita
[0350] ° Controle F efetivo definido como zero
[0351] ° PIFC efetivo é inalterado
[0352] ° Permite que a TX externa não restrita chamea função de serviço que pode ou não usar TX restrita. [0001] Se TND atual = 0:
[0353] ° Endereço do bloco diagnóstico de transaçãoé inválido
[0354] - Nenhum TDB especificado pela instruçãoarmazenado quando de aborto
[0355] ° PSW de abortar transação definida paraendereço de TBEGINC
[0356] - Não é a próxima instrução sequencial
[0357] ° Os pares de registradores geraissão assinados pela GRSM salvos em um local dependente de modelo não acessível pelo programa
[0358] ° Token de transação opcionalmente formado (apartir do operando D2). O token de transação é um identificador da transação. Ele pode ser igual ao endereço de operando de memória ou outro valor.[0001] A efetivo = TBEGINC A & qualquer A externo[0002] TND incrementado
[0359] ° Se TND muda de 0 para 1, a CPU entra no modoTX restrita
[0360] ° Caso contrário, a CPU permanece no modo TXnão restrita[0001] A instrução é concluída com CC0[0002] Exceções:
[0361] ° Exceção de especificação (PIC (Código deInterrupção de Programa) 0006) se o campo B1 é diferente dezero
[0362] ° Exceção de operação especial (PIC 0013 hex)se o controle de execução transacional (CR0.8) é zero
[0363] ° Exceção por restrição de transação (PIC 0018hex) se emitida em modo TX restrita
[0364] ° Exceção de operação (PIC 0001) se a unidadede execução transacional restrita não está instalada
[0365] ° Exceção de executar (PIC 0003) se ainstrução é alvo de uma instrução de tipo executar
[0366] ° Código de aborto 13 se a profundidade deagrupamento é excedida[0001] Condições para aborto em transação restrita:
[0367] ° PSW de aborto aponta para instrução TBEGINC
[0368] - Não é a próxima instrução
[0369] - A condição de aborto faz com que a TXinteira seja reiniciadaa. Nenhum caminho de falha
[0370] ° CPU toma medidas especiais para garantir aconclusão bem sucedida quando de reinicialização
[0371] ° Supondo que não exista nenhum conflito,interrupção ou violação de restrição persistente, a eventual conclusão de uma transação é assegurada.[0001] Violação de restrição:
[0372] ° PIC 0018 hex - indica violação de restriçãode transação
[0373] Conforme descrito acima, além do processamento transacional restrito, 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ção não restrita e, em particular, processamento associado a uma instrução TBEGIN, são descritos com referência à Figura 12. A 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 (isto é, o processador) que executa TBEGIN executa a lógica da Figura 12.
[0374] Com referência à Figura 12, com base na execução da instrução TBEGIN, é executada uma função de serialização (descrita acima), ETAPA 1200. Após execução da serialização, é feita uma determinação 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 registrador de controle 0, é zero. Além disso, uma exceção de especificação é reconhecida e a operação é suprimida se o controle de filtração de interrupção de programa, bits 14-15 do campo I2 da instrução, contém o valor 3; ou o primeiro endereço de operando não designa um limite de palavra dupla. 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 execução é reconhecida e a operação é suprimida se TBEGIN é alvo de uma instrução de execução. Além disso, se a CPU está no modo de execução transacional restrita, uma exceção de programa por exceção de restrição de transação é reconhecida e a operação é suprimida. Além disso, se a profundidade de agrupamento de transação, quando incrementada em 1, excede uma profundidade de agrupamento de transação máxima dependente de modelo, a transação é abortada com o código de aborto 13.
[0375] 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, isto é, a profundidade de agrupamento de transação é zero, então, a acessibilidade à memória pelo primeiro operando é determinada. Se o primeiro operando não é acessado, então, uma exceção de acesso é reconhecida e a operação é anulada, suprimida ou terminada, dependendo da condição de exceção de acesso específica. Além disso, qualquer evento de alteração de memória PER para o primeiro operando é reconhecido. 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 à memória pelo primeiro operando é determinada e eventos de alteração de memória PER são detectados para primeiro operando. Se o campo B1 é zero, então, o primeiro operando não será acessado.
[0376] Além da verificação de exceção, é determinado se a CPU está no modo de execução transacional (isto é, a profundidade de agrupamento de transação é zero), CONSULTA 1206. Se a CPU não está no modo de execução transacional, então, os conteúdos dos pares de registradores gerais selecionados são salvos, ETAPA 1208. Em particular, os conteúdos dos pares de registradores gerais designados pela máscara de salvar registrador geral são salvos em um local dependente de modelo que não é acessível diretamente pelo programa.
[0377] Além disso, é feita uma determinação 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 do bloco diagnóstico de transação, ETAPA 1214 e o endereço do bloco diagnóstico de transação é válido. Além disso, a PSW de abortar transação é definida a partir do conteúdo da PSW atual, ETAPA 1216. O endereço de instrução da PSW de abortar transação designa a próxima instrução sequencial (isto é, a instrução após TBEGIN mais externa).
[0378] Além disso, é determinado o valor efetivo do controle permitir modificação de AR (A), bit 12 do campo I2 da instrução, ETAPA 1218. O controle de efetivo A é 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 operação de ponto flutuante (F), bit 13 do campo I2 da instrução, é descartado, ETAPA 1220. O controle F efetivo é 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 de filtração de interrupção de programa (em inglês, PIFC), bits 14-15 do campo I2 da instrução, é determinado, ETAPA 1222. O valor PIFC efetivo é o valor mais alto na instrução TBEGIN para o nível atual e para todos os níveis externos.
[0379] Além disso, um valor de um é adicionado à profundidade de agrupamento de transação, ETAPA 1224, e a instrução é concluída com o código de condição de configuração 0, ETAPA 1226. Se a profundidade de agrupamento de transação muda de zero para um, a CPU entra no modo de execução transacional restrita; caso contrário, a CPU permanece no modo de execução transacional não restrita.
[0380] Voltando à CONSULTA 1210, se B1 é igual a zero, o endereço do bloco diagnóstico de transação é inválido, ETAPA 1211 e o processamento continua com a ETAPA 1218. Da mesma forma, se a CPU está no modo de execução transacional, CONSULTA 1206, o processamento continua com a ETAPA 1218.
[0381] O Código de Condição de execução de TBEGIN resultante inclui, por exemplo:i. Início de transação com sucesso iv. -
[0382] Exceções de programa incluem, por exemplo:[0001] Acesso (memória, primeiro operando)[0002] Operação (unidade de execução transacionalnão instalada)[0003] Operação especial[0004] Especificação[0005] Restrição de transação (em virtude deinstruções restritas)
[0383] Em uma concretização, a verificação deexceção fornecida acima pode ocorrer em uma ordem diferente. Uma ordem específica para a verificação de exceção é como segue:[0001] Exceções com a mesma prioridade que a prioridade das condições de interrupção de programa para o caso geral.[0002] Exceção de especificação em virtude de valor PIFC reservado. [0003] Exceção de especificação em virtude do primeiro endereço de operando não estar em um limite de palavra dupla.[0004] Aborto em virtude de exceder a profundidade máxima de agrupamento de transação.[0005] Código de condição 0 em virtude de conclusão normal.
[0384] Notas:1. Quando o campo B1 é diferente de zero, o seguinte se aplica:[0002] Um bloco diagnóstico de transação (em inglês, TDB) acessível deve ser fornecido quando uma transição mais externa é iniciada - mesmo se a transação nunca é abortada.[0003] Uma vez que é imprevisível se a acessibilidade ao TDB é testada para as transações agrupadas, um TDB acessível deve ser fornecido para qualquer instrução TBEGIN agrupada.[0004] O desempenho de qualquer TBEGIN na qual o campo B1 é diferente de zero e o desempenho de qualquer processamento de aborto que ocorre para uma transação iniciada por uma TBEGIN externa na qual o campo B1 é diferente de zero podem ser mais lentos do que quando o campo B1 é zero.
[0385] 2. Os registradores designados para serem salvos pela máscara de salvar registrador geral são restaurados, em uma concretização, se a transação é abortada, e não quando a transação termina normalmente por TERMINAR TRANSAÇÃO. Somente os registradores designados pela GRSM da instrução INICIAR TRANSAÇÃO mais externa são restaurados quando de um aborto.
[0386] O campo I2 deve designar todos os pares de registradores que fornecem valores de entrada que são alterados pela transação. Assim, se a transação é abortada, os valores do registrador de entrada serão restaurados para seus conteúdos originais quando o gerenciador de aborto é introduzido.
[0387] 3. A instrução INICIAR TRANSAÇÃO (TBEGIN) deve ser seguida por uma instrução de ramificação condicional que determinará se a transação foi iniciada com sucesso.
[0388] 4. Se uma transação é abortada em virtude de condições que não resultam em uma interrupção, as instruções designadas pela PSW de abortar transação recebem controle (isto é, as instruções que seguem INICIAR TRANSAÇÃO (TBEGIN) mais externa). Além do código de condição definido pela instrução INICIAR TRANSAÇÃO (TBEGIN), códigos de condição 13 também são definidos quando uma transação é abortada.
[0389] Portanto, a sequência de instruções que segue a instrução INICIAR TRANSAÇÃO (TBEGIN) mais externa deve ser capaz de acomodar todos os quatro códigos de condição, mesmo que a instrução TBEGIN defina apenas o código 0 neste exemplo.
[0390] 5. Na maioria dos modelos, um desempenho aprimorado pode ser obtido, tanto em INICIAR TRANSAÇÃO como quando uma transação é abortada, ao especificar o número mínimo de registradores que precisam ser salvos e restaurados na máscara de salvar registrador geral.
[0391] 6. Enquanto no modo de execução transacional não restrita, um programa pode chamar uma função de serviço que pode alterar registradores de acesso ou registradores de ponto flutuante (incluindo o registrador de controle de ponto flutuante). Embora tal rotina de serviço possa salvar os registradores alterados na entrada e restaurá-los na saída, a transação pode ser abortada antes de saída normal da rotina. Se o programa que faz a chama não prevê a preservação destes registradores enquanto a CPU está no modo de execução transacional não restrita, talvez ele não seja capaz de tolerar a alteração da função de serviço dos registradores.
[0392] Para evitar a alteração inadvertida de registradores de acesso enquanto está no modo de execução transacional não restrita, o programa pode definir o controle de permitir modificação de AR, bit 12 do campo I2 da instrução INICIAR TRANSAÇÃO, para zero. Da mesma forma, para evitar a alteração inadvertida dos registradores de ponto flutuante, o programa pode definir o controle de permitir ponto flutuante, bit 13 do campo I2 da instrução TBEGIN, para zero.
[0393] 7. Condições de exceção de programa reconhecidas durante a execução da instrução INICIAR TRANSAÇÃO (TBEGIN) estão sujeitas ao controle de filtração de interrupção de programa efetivo definido por quaisquer instruções TBEGIN externas. As condições de exceção de programa reconhecidas durante a execução da instrução TBEGIN mais externa não estão sujeitas à filtração.
[0394] 8. Para atualizar múltiplos locais na memória de forma 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 na memória, (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 TERMINAR TRANSAÇÃO e ramificar para o caminho de "fall-back". Isto assegura um acesso consistente aos recursos serializados, independentemente se eles são atualizados de forma transacional.
[0395] Alternativamente, o programa pode abortar se o bloqueio não está disponível, no entanto, o processamento do aborto pode ser significativamente mais lento do que simplesmente terminar a transação através de TEND.
[0396] 9. Se o controle de filtração de interrupção de programa (em inglês, PIFC) efetivo é maior do que zero, a CPU filtra a maioria das interrupções de programa por exceção de dados. Se o controle efetivo de operação de ponto flutuante (F) é zero, o código de exceção de dados (em inglês, DXC) não será definido no registrador de controle de ponto flutuante como resultado de um aborto em virtude de uma condição de exceção de programa por exceção de dados. Neste cenário (a filtração se aplica e o controle F efetivo é zero), o único local em que o DXC é inspecionado é no TDB especificado por TBEGIN. Se o gerenciador de aborto do programa inspeciona o DXC em tal situação, o registrador geral B1 deve ser diferente de zero, de modo que um endereço de bloco diagnóstico de transação (em inglês, TDBA) válido seja definido.
[0397] 10. Se há uma alteração de memória PER ou condição de detecção de endereço zero para o TDB especificado por TBEGIN 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, fazendo com que a transação seja abortada imediatamente, independentemente de existir ou não qualquer outra condição de aborto.
[0398] Em uma concretização, a instrução TBEGIN define implicitamente o endereço de aborto da transação como a próxima instrução sequencial após TBEGIN. Este endereço se destina a ser uma instrução de ramificação condicional a qual determina se deve ou não se ramificar 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.
[0399] Em uma concretização, a instrução TBEGIN fornece um operando de memória opcional que designa o endereço de um bloco diagnóstico de transação (TDB) no qual as informações são armazenadas se a transação é abortada.
[0400] Além disso, ela fornece um operando imediato que inclui o seguinte:
[0401] - uma máscara de salvar registrador geral (GRSM) que indica quais pares de registradores gerais devem ser salvos no início da execução transacional e restaurados se a transação é abortada;
[0402] - um bit (A) para permitir aborto da transação se a transação modifica registradores de acesso;
[0403] - um bit (F) para permitir aborto da transação se a transação tenta executar instruções de ponto flutuante; e
[0404] - um controle de filtração de interrupção de programa (PIFC) que permite que os níveis de transação individuais ignorem a apresentação real de uma interrupção de programa se uma transação é abortada.
[0405] Os controles A, F e PIFC podem ser diferentes em múltiplos níveis de agrupamento e restaurados para o nível anterior quando os níveis de transação internos são finalizados.
[0406] 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 registrador de base é zero ( diferente da definição do endereço de TDB que ocorre apenas quando o registrador de base é diferente de zero). Para cada instrução TERMINAR TRANSAÇÃO executada com um registrador de base diferente de zero, um token similar é formado a partir de seu operando de memória. Se os tokens não coincidem, uma exceção de programa pode ser reconhecida para alertar o programa sobre uma instrução não compartilhada.
[0407] Um token coincidente constitui um mecanismo destinado a melhorar a confiabilidade do software, assegurando que uma definição TEND seja adequadamente emparelhada com uma TBEGIN (ou TBEGINC). Quando uma instrução TBEGIN é executada em um determinado nível de agrupamento, um token é formado a partir do endereço de operando de memória que identifica este caso de uma transação. Quando uma instrução TEND correspondente é executada, um token é formado a partir do endereço de operando de memória da instrução e a CPU compara o token inicial para o nível de agrupamento com o token final. Se os tokens não coincidem, uma condição de exceção é reconhecida. Um modelo pode implementar a combinação de token para apenas um determinado número de níveis de agrupamento (ou para nenhum nível de agrupamento). O token pode não envolver todos os bits do endereço de operando de memória ou os bits podem ser combinados através de hashing ou outros métodos. Um token pode ser formado pela instrução TBEGIN, mesmo que seu operando de memória não seja acessado.
[0408] Para resumir, o processamento de uma transação não restrita é o seguinte:[0001] Se TND = 0:
[0409] ° Se B1 Φ 0, endereço do bloco diagnóstico detransação definido a partir do primeiro endereço de operando.
[0410] ° PSW de abortar transação definida paraendereço da próxima instrução sequencial.
[0411] ° Pares de registradores gerais designadospelo campo I2 são salvos no local dependente de modelo.
[0412] - Não diretamente acessível pelo programa.[0001] Comandos PIFC, A, & F efetivos calculados
[0413] ° A efetivo = TBEGIN A & qualquer A externo
[0414] ° F efetivo = TBEGIN F & qualquer F externo
[0415] ° PIFC efetivo = max (TBEGIN PIFC, qualquerPIFC externo)[0001] Profundidade de agrupamento de transação(TND) incrementada[0002] Se TND muda de 0 para 1, a CPU entra no modo de execução transacional[0003] Definir código de condição para zero
[0416] ° Quando instrução após TBEGINrecebe controle:
[0417] - TBEGIN com sucesso indicada por CC0
[0418] - Transação abortada indicada por CCdiferente de zero[0001] Exceções:
[0419] ° Código de aborto 13 se a profundidade deagrupamento é excedida
[0420] ° Exceção de acesso (um de vários PICs) se ocampo B1 é diferente de zero e o operando de memória não pode ser acessado para uma operação de armazenamento
[0421] ° Exceção de executar (PIC 0003) se ainstrução TBEGIN é o alvo de uma instrução de tipo executar
[0422] ° Exceção de operação (PIC 0001) se a unidadede execução transacional não está instalada
[0423] ° PIC 0006 se
[0424] - PIFC é inválido (valor de 3)
[0425] - Endereço do segundo operando não alinhadoem palavra dupla
[0426] ° PIC 0013 hex se o controle de execuçãotransacional (CR0.8) é zero
[0427] Conforme indicado acima, em uma concretização, os registradores selecionados podem ser salvos no início da execução transacional e, então, restaurados no caso de aborto de uma transação. Uma concretização da lógica associada à operação de salvar/restaurar registradores selecionados em geral é descrita com referência à Figura 13A. Outras concretizações são, então, descritas com referência à Figura 13B. Como um exemplo, um processador está executando tal lógica.
[0428] Com referência à Figura 13 A, é feita uma determinação sobre um ou mais registradores selecionados a serem salvos, ETAPA 1300. Em um exemplo, esta determinação é feita ao verificar os bits definidos de uma GRSM indicada por uma instrução INICIAR TRANSAÇÃO. No entanto, em outras concretizações, outras técnicas podem ser usadas para indicar registradores selecionados a serem salvos. O conteúdo dos registradores selecionados é armazenado em um local predefinido na memória o qual, em uma concretização, não é acessível pelos programas, ETAPA 1302.
[0429] Então, se houver um aborto de uma transação associada aos registradores, CONSULTA 1304, os registradores selecionados são restaurados, ETAPA 1306. Por exemplo, os conteúdos armazenados no local predefinido na memória são carregados nos registradores apropriados.
[0430] Em uma concretização particular, os registradores a serem armazenados são especificados por uma instrução INICIAR TRANSAÇÃO mais externa, conforme descrito com referência à Figura 13B. Nesta concretização, é obtida uma instrução INICIAR TRANSAÇÃO (por exemplo, recebida, buscada, etc.) por um processador, ETAPA 1350. É feita uma determinação para saber se ela é uma instrução INICIAR TRANSAÇÃO mais externa, CONSULTA 1352. Se a instrução INICIAR TRANSAÇÃO não é iniciada dentro de outra transação e, portanto, é uma instrução INICIAR TRANSAÇÃO mais externa, é feita uma determinação usando a GRSM da instrução do um ou mais registradores a serem salvos, ETAPA 1354. Neste exemplo, os registradores são registradores gerais e, conforme acima, eles são salvos ao copiar seus conteúdos, antes de uso dos registradores (por exemplo, no início de execução da instrução), para um local predefinido na memória, ETAPA 1356.
[0431] Voltando à CONSULTA 1352, se ela não é uma instrução INICIAR TRANSAÇÃO mais externa, então, a GRSM é ignorada nesta concretização.
[0432] Após salvar quaisquer registradores a serem salvos, o processamento da transação prossegue e, se a transação é abortada, quer porque tal transação especificada é abortada ou, nesta concretização, um aborto de uma transação agrupada interna faz com que esta transação seja abortada, CONSULTA 1358, os registradores selecionados são restaurados ao copiar o conteúdo para o local predefinido na memória para os registradores, ETAPA 1360. Isto conclui o processamento.
[0433] São descritas acima concretizações para salvar/restaurar registradores, tais como registradores gerais, em um aborto (isto é, término anormal). Quando uma transação é abortada, as memórias transacionais executadas durante execução da transação são descartadas. No entanto, a menos que especificado de outra forma, o conteúdo dos registradores gerais não são restaurados. Os conteúdos dos registradores de acesso e o contexto de ponto flutuante também não são restaurados, em um exemplo, se uma transação é abortada. Ao não salvar os registradores, a menos que o programa exija especificamente, a velocidade de processamento de execução da instrução INICIAR TRANSAÇÃO mais externa é aumentada.
[0434] Em uma concretização, os registradores gerais especificados pelo programa são salvos durante a execução de uma instrução INICIAR TRANSAÇÃO mais externa e estes registradores são restaurados caso a transação seja abortada. Em outra concretização, registradores que não os registradores gerais, tais como registradores de ponto flutuante e/ou registradores de acesso, são salvos e/ou restaurados. Além disso, registradores gerais individuais e/ou grupos de registradores gerais podem ser salvos/restaurados. Além disso, em uma concretização, um registrador de finalidade geral que especifica uma máscara de bits é usado para especificar quais registradores definir.
[0435] Em ainda outra concretização, uma ou mais das operações de salvar/restaurar são executadas em ambientes transacionais que implementam agrupamento não achatado. Em tal ambiente, quando uma transação dentro de um agrupamento de transações é abortada, as outras transações dentro do agrupamento podem não ser abortadas. Em tal ambiente, cada nível de agrupamento tem uma indicação de quais registradores devem ser salvos e/ou restaurados.
[0436] É fornecido acima um meio eficiente para atualizar objetos múltiplos e descontínuos na memória sem a serialização clássica (refinada), tal como bloqueio, que oferece um potencial para aprimoramento de desempenho multiprocessador significativo. Isto é, múltiplos objetos descontínuos são atualizados sem forçar uma ordenação de acesso à memória mais refinada que é fornecida pelas técnicas clássicas, tais como bloqueios e semáforos. A execução especulativa é fornecida sem uma configuração de recuperação onerosa e transações restritas são oferecidas para atualizações simples e de pequena escala.
[0437] A execução transacional pode ser usada em uma variedade de situações incluindo, porém sem limitações, integração parcial, processamento especulativo e supressão de bloqueio. Em particular, a região parcial a ser incluída no caminho executado está sobreposta em TBEGIN/TEND. TABORT pode ser incluída no mesmo para reverter o estado em uma saída lateral. Para especulações, tal como em Java, verificações nulas em ponteiros de referência podem ser retardadas para borda de loop usando uma transação. Se o ponteiro é nulo, a transação pode ser abortada com segurança usando TABORT, que está incluída em TBEGIN/TEND.
[0438] Quanto à supressão de bloqueio, um exemplo de seu uso é descrito em referência às Figuras 14A-14B e o fragmento de código fornecido abaixo.
[0439] A Figura 14A representa uma lista duplamente vinculada 1400 de uma pluralidade de elementos de fila 1402a- 1402d. Um novo elemento de fila 1402e deve ser inserido na lista duplamente vinculada de elementos de fila 1400. Cada elemento de fila 1402a-1402e inclui um ponteiro para a frente 1404a-1404e e um ponteiro para trás 1406a-1406e. Conforme mostrado na Figura 14B, para adicionar o elemento de fila 1402e entre os elementos de fila 1402b e 1402c, (1) oponteiro para trás 1406e é configurado para apontar para o elemento de fila 1402b, (2) o ponteiro para a frente 1404e é configurado para apontar para o elemento de fila 1402c, (3) ponteiro para trás 1406c é configurado para apontar para o elemento de fila 1402e e (4) o ponteiro para a frente 1404b é configurado para apontar para o elemento de fila 1402e.
[0440] Um exemplo de fragmento de código que corresponde às Figuras 14A-14B está abaixo:a. R1 - endereço do novo elemento de fila a ser inserido.b. R2 - endereço do ponto de inserção; novo elemento é inserido antes do elemento apontado por R2.
[0441] EW
[0442] SING
[0443] EL, R1
[0444]
[0445] URR
[0446] SING
[0447] EL, R2
[0448]
[0449]
[0450] HI
[0451] 15, 10
[0452] Carrega contagemde repetição.
[0453] OOP
[0454] BEGIN
[0455] DB, X'C000'
[0456] Inicia transação(salvar GRs 0-3)
[0457]
[0458] NZ
[0459] BORTADO
[0460] Inicia transação(salvar GRs 0-3)
[0461]
[0462] G
[0463] 3, CURR.BWD
[0464] Aponta para oelementoanterior.
[0465] REV
[0466] SINg
[0467] EL, R3
[0468] Tornaendereçável.
[0469]
[0470] TG
[0471] PREV.FWD
[0472] Atualizaponteiro para afrente anterior
[0473]
[0474] TG
[0475] 1, CURR.BWD
[0476] Atualizaponteiro paratrás atual
[0477]
[0478] TG
[0479] 2, NEW.FWD
[0480] Atualiza novoponteiro para afrente
[0481]
[0482] TG
[0483] 3, NEW.BWD
[0484] Atualiza novoponteiro paratrás.
[0485]
[0486] END
[0487] erminartransação
[0488]
[0489]
[0490] . .
[0491]
[0492]
[0493]
[0494] BORTED JO
[0495] BORTED JO
[0496] CC3: aborto nãopassível denova tentativa
[0497]
[0498] CT
[0499] 15, LOOP
[0500] Tenta atransaçãomúltiplas vezes
[0501]
[0502]
[0503] O RETRY
[0504] Sem sucesso após10x; torna maisdifícil
[0505] Em um exemplo, se a transação é usada para supressão de bloqueio, mas o caminho de "fall-back" usa um bloqueio, a transação deve pelo menos buscar a palavra de bloqueio para ver se ela está disponível. O processador garante que a transação será abortada se outra CPU acessa o bloqueio de forma não transacional.
[0506] Conforme usado aqui, memória, memória central, memória principal, memória e memória primária são usados de forma alternada, a menos que indicado, implicitamente pelo uso ou explicitamente. Além disso, embora, em uma concretização, uma transação que é efetivamente atrasada inclua atraso de confirmação de memórias transacionais na memória principal até conclusão de uma transação selecionada, em outra concretização, atrasar efetivamente uma transação inclui fornecer atualizações transacionais à memória, mas manter os valores antigos e restaurar a memória para os valores antigos abortados.
[0507] Conforme será apreciado por aqueles versados na técnica, um ou mais aspectos da presente invenção podem ser concretizados como um sistema, método ou produto de programa de computador. Deste modo, um ou mais aspectos da presente invenção podem tomar 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 podem todos ser, em geral, ditos aqui como um "circuito", "módulo" ou "sistema". Além disso, um ou mais aspectos da presente invenção podem tomar a forma de um produto de programa de computador incorporado em um ou mais meios legíveis em computador que têm um código de programa legível em computador incorporada nos mesmos.
[0508] 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, um 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, um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (em inglês, RAM), uma memória de leitura apenas (em inglês, Read-Only Memory - ROM), uma memória de leitura apenas programável e apagável (em inglês, Erasable Programmable Read-Only Memory - EPROM ou memória flash), uma fibra óptica, uma memória de leitura apenas em disco compacto portátil (em inglês, Compact Disc Read-Only Memory - 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 qualquer meio tangível que possa conter ou armazenar um programa para uso por ou em conexão com um sistema, aparelho ou dispositivo que executa uma instrução.
[0509] Em referência agora à Figura 15, em um exemplo, um produto de programa de computador 1500 inclui, por exemplo, um ou mais meios de armazenamento legíveis em computador não transitórios 1502 para armazenar meios de código de programa legíveis em computador ou lógica 1504 nos mesmos para fornecer e facilitar um ou mais aspectos da presente invenção.
[0510] O código de programa incorporado em um meio legível em computador pode ser transmitido usando um meio apropriado incluindo, porém sem limitações, dispositivos sem fio, cabos, cabos de fibra óptica, RF, etc., ou qualquer combinação adequada dos anteriores.
[0511] O código de programa de computador para realização de operações para um ou mais aspectos da presente invenção 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", Assembler ou linguagens de programação similares. O código de programa pode ser inteiramente executado no computador do usuário, parcialmente no computador do usuário, como um pacote de software autônomo, parcialmente no computador do usuário e parcialmente em um computador remoto ou inteiramente no computador ou servidor remoto. No último caso, o computador remoto pode ser conectado ao computador do usuário através de qualquer tipo de rede, incluindo uma rede de área local (em inglês, Local Area Network - LAN) ou uma rede de longa distância (em inglês, Wide Area Network - WAN), ou a conexão pode ser feita para um computador externo (por exemplo, através da Internet usando um Provedor de Serviços da Internet).
[0512] Um ou mais aspectos da presente invenção são descritos aqui com referência às ilustrações do fluxograma e/ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa de computador de acordo com concretizações da invenção. 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 finalidade geral, um computador de finalidades especiais 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 através do processador do computador ou outro aparelho de processamento de dados programável, criem meios para implementar as funções/atos especificados no bloco ou blocos do fluxograma e/ou diagrama de blocos.
[0513] 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 que implementam a função/ato especificado no bloco ou bloco do fluxograma e/ou diagrama de blocos.
[0514] As instruções do programa do computador também podem ser carregadas em um computador, outro aparelho de processamento de dados programável ou outros dispositivos para 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 em computador, de modo que as instruções que são executadas no computador ou outro aparelho programável forneçam processos para a implementação das funções/atos especificados no bloco ou blocos do fluxograma e/ou diagrama de blocos.
[0515] 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 de um ou mais aspectos da presente invenção. A este respeito, cada bloco no fluxograma 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 concretizações alternativas, as funções indicadas no bloco podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, na verdade, ser executados de forma substancialmente simultânea ou os blocos podem, algumas vezes, ser executados na ordem inversa, dependendo da funcionalidade envolvida. Também deverá ser observado que cada bloco dos diagramas 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 executam as funções ou atos especificados ou combinações de hardware de finalidade específica e instruções de computador.
[0516] Além do acima, um ou mais aspectos da presente invenção podem ser fornecidos, oferecidos, implantados, gerenciados, mantidos, etc. por um provedor de serviços que oferece gerenciamento de ambientes de clientes. Por exemplo, o provedor de serviços pode criar, manter, dar suporte, etc., o código de computador e/ou uma infraestrutura de computador que executa um ou mais aspectos da presente invenção para um ou mais clientes. Em retorno, o provedor 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 provedor de serviços pode receber o pagamento pela venda de conteúdo publicitário para uma ou mais empresas terceirizadas.
[0517] Em um aspecto da presente invenção, um aplicativo pode ser implantado para executar um ou mais aspectos da presente invenção. Como um exemplo, a implantação de um aplicativo compreende o fornecimento de infraestrutura de computador operável para executar um ou mais aspectos da presente invenção.
[0518] Como um outro aspecto da presente invenção, uma infraestrutura de computação podem ser implementada compreendendo a integração de código legível em computador para um sistema de computação, em que o código, em combinação com o sistema de computação, é capaz de executar um ou mais aspectos da presente invenção.
[0519] Como ainda um outro aspecto da presente invenção, pode ser fornecido um processo para a integração de infraestrutura de computação que compreende a integração do código legível em computador em um sistema de computador. O sistema de computador compreende um meio legível em computador, no qual o meio de legível em computador compreende um ou mais aspectos da presente invenção. O código, em combinação com o sistema de computador, é capaz de executar um ou mais aspectos da presente invenção.
[0520] Embora várias concretizações sejam descritas acima, essas são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem incorporar e usar um ou mais aspectos da presente invenção. Além disso, embora determinados campos e/ou bits sejam descritos, outros também podem ser usados. Além disso, algumas etapas dos fluxogramas podem ser executadas em paralelo ou em uma ordem diferente. Muitas modificações e/ou adições podem ser feitas sem se afastar do escopo da presente invenção.
[0521] Além disso, outros tipos de ambientes de computação podem se beneficiar de um ou mais aspectos da presente invenção. 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, memória local empregada durante a execução real do código de programa, memória em massa e memória cache que permite armazenamento temporário de pelo menos algum código de programa, de modo a reduzir o número de vezes em que o código deve ser recuperado da memória em massa durante a execução.[0001] Dispositivos de Entrada/Saída (Input/Output - E/S) (incluindo, porém sem limitações, teclados, monitores, dispositivos apontadores, DASD, fita, CDs, DVDs, pen drives e outros meios de memória, etc.) podem ser acoplados ao sistema diretamente ou através controladores de E/S intervenientes. Adaptadores de rede também podem ser acoplados ao sistema para permitir que o sistema de processamento de dados se torne acoplado a outros sistemas de processamento de dados ou impressoras remotas ou dispositivos de armazenamento através da intervenção de redes privadas ou públicas. Modems, modems a cabo e cartões de Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0522] Em referência à Figura 16, componentes representativos de um sistema de computador central 5000 para implementar um ou mais aspectos da presente invenção são representados. O computador host 5000 representativo compreende uma ou mais CPUs 5001 em comunicação com a memória do computador (isto é, memória central) 5002, bem como as 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 uma instrução arquitetada definida e uma funcionalidade arquitetada. A CPU 5001 pode ter um registrador de acesso de tradução (ART) 5012 que inclui um buffer de ART Lookaside (ALB) 5013 para selecionar um espaço de endereço a ser usado pela tradução dinâmica de endereços (DAT) 5003 para transformar endereços de programas (endereços virtuais) em endereços reais de memória. A DAT geralmente inclui um buffer de conversão à parte (Translation Lookaside Buffer - TLB) 5007 para armazenamento em cache de conversões, de modo que, posteriormente, acessos ao bloco de memória do computador 5002 não venham a requerer o retardo da conversão de endereços. Tipicamente, um cache 5009 é empregado entre a memória do computador 5002 e o processador 5001. O cache 5009 pode ser hierárquico, tendo uma grande cache disponível para mais do que 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 fornecer caches de nível inferior separados para busca de instruções e acessos de dados. Em uma concretização, para a unidade 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 memória 5002. Em um exemplo, no modo TX, os dados são inicialmente armazenados em um buffer de TX e quando o modo TX termina (por exemplo, TEND externao), os dados no buffer são armazenados (confirmados) na memória, ou se há um aborto, os dados no buffer são descartados.
[0523] Em uma concretização, uma instrução é buscada a partir da memória 5002 por uma unidade de busca de instrução 5004 através de um cache 5009. A instrução é decodificada em uma unidade de decodificação de instruções 5006 e enviada (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 um unidade de execução de instrução de ramificação. A instrução é executada pela unidade de execução ao acessar operandos de registradores de instrução especificados ou a memória, conforme necessário. Se um operando deve ser acessado (carregado ou armazenado) a partir da memória 5002, tipicamente, a unidade de carregamento/armazenamento 5005 processa o acesso sob o controle da instrução que está sendo executada. As instruções podem ser executadas em circuitos de hardware ou no microcódigo interno (firmware) ou por uma combinação de ambos.
[0524] De acordo com um aspecto da unidade TX, o processador 5001 também inclui uma PSW 5102 (por exemplo, PSW de TX e/ou aborto), uma profundidade de agrupamento 5104, um TDBA 5106 e um ou mais registradores de controle 5108.
[0525] Conforme observado, um sistema de computador inclui informações na memória local (ou principal), bem como endereçamento, proteção e registrador de referência e gravação. Alguns aspectos do endereçamento incluem o formato dos 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 é convertido em outro tipo de endereço. Algumas das memórias principais incluem locais de armazenamento permanentemente atribuídos. A memória principal permite ao sistema armazenamento de acesso rápido diretamente endereçável de dados. Tanto dados como programas devem ser carregados na memória principal (a partir de dispositivos de entrada) antes que possam ser processados.
[0526] A memória principal pode incluir uma ou mais memórias intermediárias menores de acesso mais rápido, algumas vezes denominadas de caches. Um cache está, tipicamente, associado fisicamente a um processador ou um processador 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.
[0527] Caches separados podem ser mantidos para instruções e operandos de dados. A informação dentro de um cache é mantida em bytes contíguos em um limite integral denominado bloco de cache ou linha de cache (ou linha, para abreviar). Um modelo pode fornecer uma instrução EXTRAIR ATRIBUTO DE CACHE a qual retorna o tamanho de uma linha de cache em bytes. Um modelo também pode fornecer instruções PRÉ-BUSCAR DADOS e PRÉ-BUSCAR DADOS RELATIVAMENTE LONGOS que executam a pré-busca de memória no cache de dados ou instruções ou a liberação de dados do cache.
[0528] A memória é considerada como uma sequência horizontal longa de bits. Para a maioria das operações, os acessos à memória se processam em uma sequência da esquerda para a direita. A sequência 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 localização de byte na memória é identificada por um número inteiro não negativo único, o qual é o endereço de localização de byte ou, simplesmente, o endereço de byte. Localizações de byte adjacentes têm endereços consecutivos, começando com 0 à esquerda e prosseguindo em uma sequência da esquerda para a direita. Endereços são inteiros binários sem sinal e têm 24, 31 ou 64 bits.
[0529] A informação é transmitida entre a memória 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 na memória é endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo é implícita ou explicitamente especificado pela operação a ser 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, muitas vezes, ditos como os bits de "ordem superior" e os bits mais à direita como os bits de "ordem inferior". Os números de bits não são endereços de armazenamento, no entanto. Somente bytes podem ser endereçados. Para operar em bits individuais de um byte na memória, todo o byte é acessado. Os bits de um byte são numerados de 0 a 7, da esquerda para a direita (por exemplo, na z/Architecture) . Os bits de um endereço podem ser numerados 8-31 ou 40-63 para endereços de 24 bits ou 131 ou 33-63 para endereços de 31 bits; eles são numerados 063 para endereços de 64 bits. Dentro de qualquer outro formato de comprimento fixo de múltiplos bytes, os bits que constituem o formato são numerados consecutivamente 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. Esses 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 armazenamento- operando é 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 armazenamento de operando não está implícito, mas é afirmado explicitamente, o campo é dito como tendo um comprimento variável. Operandos de comprimento variável podem variar, quanto ao comprimento, por incrementos de um byte (ou, com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando a informação está colocada na memória, é substituído apenas o conteúdo das localizações de byte que estão incluídas na área designada, mesmo que a largura do trajeto físico da memória possa ser maior do que o comprimento do campo a ser armazenado.
[0530] Determinadas unidades de informação devem estar sobre um limite integral na memória. 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 fornecidos dadas aos campos de 2, 4, 8 e 16 bytes em um limite integral. Uma meia palavra é um grupo de dois bytes consecutivos em um limite de dois bytes e é o bloco de construção básico das instruções. Uma palavra é um grupo de quatro bytes consecutivos em um limite de quatro bytes. Uma palavra dupla é um grupo de oito bytes consecutivos em um limite de oito bytes. Uma palavra quádrupla é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Quando os endereços de armazenamento designam meias palavras, palavras, palavras duplas e palavras quádruplas, a representação binária do endereço contém um, dois, três, quatro ou mais bits zero à direita, respectivamente. As instruções devem estar sobre os limites integrais de dois bytes. Os operandos de armazenamento da maioria das instruções não têm requisitos quanto ao alinhamento de limites.
[0531] Em dispositivos que implementam caches separados para instruções e operandos de dados, um retardo significativo pode ser experimentado se o programa armazena em uma linha de cache a partir da qual as instruções são posteriormente obtidas, independentemente se a memória altera as instruções que são posteriormente buscadas.
[0532] Em uma concretização, a invenção pode ser praticada por software (algumas vezes dito como código interno licenciado, firmware, microcódigo, milicódigo, pico- código e assim por diante, qualquer um dos quais seria consistente com um ou mais aspectos da presente invenção). Em referência à Figura 10, o código do programa de software que incorpora um ou mais aspectos da presente invenção pode ser acessado pelo processador 5001 do sistema host 5000 a partir de dispositivos de meios 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 incorporado em qualquer um de uma variedade de meios conhecidos para uso com um sistema de processamento de dados, tal como um disquete, disco rígido ou CD-ROM. O código pode ser distribuído em tais meios ou pode ser distribuído para os usuários a partir da memória de computador 5002 ou memória de um sistema de computador através de uma rede 5010 para outros sistemas de computador para uso por usuários desses outros sistemas.
[0533] O código de programa de software inclui um sistema operacional que controla a função e interação dos vários componentes de computador e um ou mais programas de aplicativos. O código de programa tipicamente é paginado a partir do dispositivo de meio de armazenamento 5011 para a memória de computador de velocidade relativamente superior 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 código de software de distribuição através de redes são bem conhecidos e não serão adicionalmente 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ônica (RAM), memória flash, discos compactos (CDs), DVDs, fitas magnéticas e assim por diante, muitas vezes é dito como um "produto de programa de computador". O meio do produto de programa de computador é, tipicamente, lido por um circuito de processamento, de preferência em um sistema de computador, para execução pelo circuito de processamento.
[0534] A Figura 17 ilustra um sistema de hardware de servidor ou estação de trabalho representativo no qual pode ser praticado um ou mais aspectos da presente invenção. O sistema 5020 da Figura 17 compreende um sistema de computador de base 5021 representativo, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo 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 a 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 memória de longo prazo 5027, a 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, o qual pode ser qualquer dispositivo de interface de usuário, tal como uma tela sensível ao toque, pad de entrada digitalizado, etc. O barramento também conecta um dispositivo de exibição 5022, tal como uma tela de LCD ou um monitor, ao microprocessador 5026 através de um adaptador de vídeo.
[0535] O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar com uma rede 5029. Exemplos de adaptadores de rede 5028 são canais de comunicação, Token Ring, Ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar usando uma interface sem fios, tal como um cartão de dados de pacote digital para celular (em inglês, CDPD). O sistema 5021 pode estar associado a esses outros computadores em uma rede de área local (em inglês, LAN) ou uma rede de longa distância (em inglês, WAN), ou o sistema 5021 pode ser um cliente em uma configuração de cliente/servidor com outro computador, etc. Todas essas configurações, bem como hardware e software de comunicação apropriados, são conhecidos na técnica.
[0536] A Figura 18 ilustra uma rede de processamento de dados 5040 na qual pode ser praticado um ou mais aspectos da presente invenção. A rede de processamento de dados 5040 pode incluir uma pluralidade de redes individuais, tais como uma rede sem fios e uma rede com fios, cada uma das quais pode incluir uma pluralidade de estações de trabalho 5041, 5042, 5043, 5044 individuais. Além disso, conforme aqueles versados na técnica reconhecerão, uma ou mais redes locais podem ser incluídas, onde uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas a um processador host.
[0537] Ainda com referência à Figura 18, as redes também podem incluir computadores ou servidores mainframe, tal como um computador gateway (servidor cliente 5046) ou servidor de aplicativos (servidor remoto 5048 o qual pode acessar um repositório de dados e também pode ser acessado diretamente a partir de uma estação de trabalho 5045). Um computador gateway 5046 serve como um ponto de entrada em cada rede individual. Uma porta de entrada é necessária quando de conexão de um protocolo de rede a outro. O gateway 5046 pode, de preferência, ser acoplado à 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 estações de trabalho 5041, 5042, 5043, 5044 usando um link de comunicações. O computador gateway pode ser implementado usando um servidor IBM eServer™ System z® disponível a partir da International Business Machines Corporation.
[0538] Em referência simultaneamente à Figura 17 e Figura 18, o código de programação de software o qual podem concretizar um ou mais aspectos da presente invenção pode ser acessado pelo processador 5026 do sistema 5020 a partir de meios 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, disco rígido ou 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 por usuários desses outros sistemas.
[0539] 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 dos vários componentes de computador e um ou mais programas de aplicativos 5032. O código de programa tipicamente é paginado a partir de meios de armazenamento 5027 para a memória de alta velocidade 5025, onde ele está disponível para processamento pelo processador 5026. As técnicas e os métodos para incorporação do código de programação de software na memória, em meios físicos e/ou código de software de distribuição através de redes são bem conhecidos e não serão adicionalmente 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ônica (RAM), memória flash, discos compactos (CDs), DVDs, fita magnética e assim por diante é, muitas vezes, dito como um "produto de programa de computador". O meio de 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.
[0540] O cache que está mais prontamente disponível para o processador (tipicamente mais rápido e menor do que outros caches do processador) é o cache de menor nível (L1 ou nível um) e a memória principal (memória principal) é o cache de nível mais elevado (L3 se há três níveis). O de cache menor nível é, muitas vezes, 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 operandos de dados.
[0541] Em referência à Figura 19, uma concretização exemplificativa do processador está representada para o processador 5026. Tipicamente, um ou mais níveis de cache 5053 são empregados para armazenar temporariamente blocos de memória de modo a aprimorar o desempenho do processador. O cache 5053 é um buffer de alta velocidade que contém linhas de cache de dados de memória que provavelmente serão usados. As linhas de cache típicas têm 64, 128 ou 256 bytes de dados de memória. Caches separados são frequentemente usados para obter instruções de cache em vez de armazenamento de dados. A coerência de cache (sincronização de cópias de linhas na memória e os caches) é, muitas vezes, fornecida por vários algoritmos "snoop" bem conhecidos na técnica. O armazenamento na memória principal 5025 de um sistema de processador é, muitas vezes, dito como um cache. Em um sistema de processador que tem 4 níveis de cache 5053, a memória principal 5025 é, algumas vezes, dita como o cache de nível 5 (L5), uma vez que tipicamente ela é mais rápida e contém apenas uma parte da memória não volátil (DASD, fita, etc.) que está disponível para um sistema de computador. A memória principal 5025 "armazena" páginas de dados paginados dentro e fora da memória principal 5025 pelo sistema operacional.
[0542] Um contador de programa (contador de instruções) 5061 mantém o controle do endereço da instrução atual a ser executada. Um contador de programa no processador az/Architecture tem 64 bits e pode ser truncado para 31 ou 24 bits para dar suporte a limites de endereçamento anteriores. Um contador de programa é, tipicamente, incorporado em uma palavra de estado de programa (em inglês, Program Status Word - PSW) de um computador, de modo que ele persiste durante troca de contexto. Assim, um programa em curso que tem um valor de contador de programa pode ser interrompido, por exemplo, o sistema operacional (troca de contexto do ambiente de programa para o ambiente do sistema operacional). A PSW do programa mantém o valor de 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 um valor igual ao número de bytes da instrução atual. Instruções RISC (em inglês, Reduced Instruction Set Computing) são, tipicamente, de comprimento fixo, enquanto que instruções CISC (em inglês, Complex Instruction Set Computing) são, tipicamente, de comprimento variável. As instruções da IBM z/Architecture são instruções CISC que têm um comprimento de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado por uma operação de troca de contexto ou uma operação de tomada de desvio de uma instrução de desvio, por exemplo. Em uma operação de troca de contexto, o valor de 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 que aponta para uma instrução de um novo módulo de programa a ser executado. Uma operação de ramificação é realizada de modo a permitir que o programa tome decisões ou faça um "loop" dentro do programa ao carregar o resultado da instrução de desvio no contador de programa 5061.
[0543] Tipicamente, uma unidade de busca de instruções 5055 é empregada para buscar instruções em nome do processador 5026. A unidade de busca recupera "próximas instruções sequenciais", instruções alvo de instruções de tomada de desvio ou primeiras instruções de um programa após uma troca de contexto. Unidades de busca de instrução em modem muitas vezes empregam técnicas de pré-busca especulativamente com base na probabilidade de que as instruções de pré-busca possam ser usadas. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclui a próxima instrução sequencial e bytes adicionais de outras instruções sequenciais.
[0544] As instruções buscadas são, então, executadas pelo processador 5026. Em uma concretização, a(s) instrução(ões) obtida(s) é/são passada(s) para uma unidade de envio 5056 da unidade de busca. A unidade de envio decodifica 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ções sobre instruções aritméticas decodificadas a partir da unidade de busca de instrução 5055 e executará operações aritméticas em operandos de acordo com o código de operação da instrução. Operandos são fornecidos para a unidade de execução 5057, de preferência a partir da memória 5025, registradores arquitetados 5059 ou a partir de um campo imediato da instrução a ser executada. Os resultados da execução, quando armazenados, são armazenados na memória 5025, registrador 5059 ou em outro hardware da máquina (tais como registradores de controle, registradores de PSW e assim por diante).
[0545] Os endereços virtuais são transformados em endereços reais usando a tradução dinâmica de endereços 5062 e, opcionalmente, usando o registrador de acesso de tradução 5063.
[0546] Um processador 5026 tem, tipicamente, uma ou mais unidades 5057, 5058, 5060 para executar a função de instrução. Em referência à Figura 20A, uma unidade de execução 5057 pode se comunicar com registradores gerais arquitetados 5059, uma unidade de decodificação/envio 5056, uma unidade de armazenamento de carregamento 5060 e outras unidades de processador 5065 por meio de uma interface lógica 5071. Uma unidade de execução 5057 pode empregar vários circuitos de registrador 5067, 5068, 5069 para armazenar informações sobre as quais a unidade de lógica aritmética (em inglês, Arithmetic Logic Unit - ALU) 5066 irá operar. A ALU executa operações aritméticas tais como adicionar, subtrair, multiplicar e dividir, bem como a função lógica, tais como E, OU e OU-exclusivo (em inglês, XOR), girar e deslocar. De preferência, a ALU dá suporte a operações especializadas as quais são dependentes do design. Outros circuitos podem conferir outras instalações arquitetadas 5072, incluindo códigos de condição e lógica de suporte à recuperação, por exemplo. Tipicamente, o resultado de uma operação na ALU é mantido em um circuito de registrador de saída 5070 o qual pode transmitir o resultado para 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.
[0547] Uma instrução ADD, por exemplo, seria executada em uma unidade de execução 5057 que tem funcionalidade aritmética e lógica, enquanto que uma instrução de ponto flutuante, por exemplo, seria executada em uma unidade de ponto flutuante que tem capacidade de ponto flutuante especializada. De preferência, uma unidade de execução opera em operandos identificados por uma instrução ao executar uma função de código de operação definida sobre os operandos. Por exemplo, uma instrução ADD pode ser executada por uma unidade de execução 5057 em operandos encontrados em dois registradores 5059 identificados por campos de registrador da instrução.
[0548] A unidade de execução 5057 executa a adição aritmética sobre dois operandos e armazena o resultado em um terceiro operando, onde o terceiro operando pode ser um terceiro registrador ou um dos dois registradores de origem. A unidade de execução usa, de preferência, uma unidade lógica e aritmética (em inglês, ALU) 5066 a qual é capaz de executar uma variedade de funções lógicas, tais como Desviar, Girar, E, OU 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 é ao endereço de byte mais elevado) ou Little Endian (onde o byte menos significativo é o endereço de byte mais baixo), dependendo da arquitetura. A IBM z/Architecture é Big Endian. Os campos com sinal podem ser ter um sinal e magnitude, complemento de 1 ou complemento de 2, dependendo da arquitetura. O número de complemento de 2 é vantajoso pelo fato de que a ALU não precisa conceber uma capacidade de subtração, uma vez que um valor negativo ou um valor positivo em complemento de 2 requer apenas uma adição dentro da ALU. Os números são comumente descritos de forma abreviada, onde um campo de 12 bits define um endereço de um bloco de 4.096 bytes e é comumente descrito como um bloco de 4 Kbytes (quilo-bytes), por exemplo.
[0549] Em referência à Figura 20B, a informação instrução de desvio para execução de uma instrução de desvio é, tipicamente, enviada para uma unidade de desvio 5058 a qual, muitas vezes, emprega um algoritmo de previsão de desvios, tal como uma tabela de histórico de desvio 5082, para prever o resultado do desvio antes que outras operações condicionais sejam concluídas. O alvo da instrução de desvio 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 desvio especulativamente executadas são concluídas ou descartadas com base nas condições da operação condicional e no resultado especulado. A instrução de desvio típica pode testar códigos de condição e desviar para um endereço de destino se os códigos de condição cumprem a exigência de desvio da instrução de desvio, um endereço de destino pode ser calculado com base em vários números, incluindo aqueles encontrados em campos de registrador ou um campo imediato da instrução, por exemplo. A unidade de desvio 5058 pode empregar uma ALU 5074 que tem uma pluralidade de circuitos de registrador de entrada 5075, 5076, 5077 e um circuito de registrador de saída 5080. A unidade de desvio 5058 pode se comunicar com registradores gerais 5059, decodificar a unidade de envio 5056 ou outros circuitos 5073, por exemplo.
[0550] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões, incluindo troca de contexto iniciada por um sistema operacional, uma exceção de programa ou erro que causa uma troca de contexto, um sinal de interrupção E/S que causa uma troca de contexto ou atividade multi-threading de uma pluralidade de programas (em um ambiente multi-threaded), por exemplo. De preferência, uma ação de troca de contexto salva as informações de estado sobre um programa atualmente em execução e, então, carrega as informações de estado sobre outro programa que está sendo chamado. As informações de estado podem ser salvas em registradores de hardware ou na memória, por exemplo. As informações de 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 conversão de memória e conteúdo de registrador arquitetado. A atividade de troca 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 interno licenciado (em inglês, Licensed Internal Code - LIC)) isoladamente ou em combinação.
[0551] 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 porção da instrução, pode fornecer um ou mais campos de registrador que apontam explicitamente para registradores de finalidade geral ou registradores de finalidades especiais (registradores de ponto flutuante, por exemplo). A instrução pode usar registradores implícitos identificados por um campo código de operação como operandos. A instrução pode usar posições de memória para operandos. Uma localização de memória de um operando pode ser fornecida por um registrador, um campo imediato ou uma combinação de registradores e campos imediatos, conforme exemplificado pela instalação de deslocamento longo da z/Architecture, em que a instrução define um registrador de base, um registrador de índice e um campo imediato (campo de deslocamento), os quais são adicionados juntos para fornecer o endereço do operando na memória, por exemplo. Localização aqui implica, tipicamente, uma localização na memória principal (armazenamento principal), a menos que indicado de outra forma.
[0552] Em referência à Figura 20C, um processador acessa a memória 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 o carregamento do operando em um registrador 5059 ou outra memória de localização 5053, ou pode executar uma operação de armazenamento ao obter o endereço do operando de destino na memória 5053 e o armazenamento de dados obtidos a partir de um registrador 5059 ou outra localização na memória 5053 na localização do operando de destino 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 deve manter a aparência, para os programas, de que as instruções foram executadas na ordem. Uma unidade de carregamento/armazenamento 5060 pode se comunicar com registradores gerais 5059, unidade de decodificação/envio 5056, interface de cache/memória 5053 ou outros elementos 5083 e compreende vários circuitos de registrador, ALUs 5085 e lógica de controle 5090 para calcular endereços de armazenamento e permitir sequenciamento concatenado para manter a ordem das operações. Algumas operações podem estar fora de ordem, mas a unidade de carregamento/armazenamento fornece a funcionalidade de fazer com que as operações fora de ordem apareçam para o programa como tendo sido executadas na ordem, conforme é bem conhecido na técnica.
[0553] De preferência, os 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 a localização de memória física através de uma de uma variedade de tecnologias de conversão de endereço dinâmico (em inglês, DAT) incluindo, porém sem limitações, simplesmente prefixar um endereço virtual com um valor de desvio, converter o endereço virtual através de uma ou mais tabelas de conversão, as tabelas de conversão compreendendo, de preferência, pelo menos uma tabela de segmentos e uma tabela de página individualmente ou em combinação, de preferência, a tabela de segmentos tendo uma entrada que aponta para a tabela de página. Na z/Architecture, uma hierarquia de conversã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ágina opcional. O desempenho da conversão de endereços é, muitas vezes, aprimorado mediante uso de um buffer de conversão à parte (em inglês, TLB) que compreende entradas que mapeiam um endereço virtual para uma localização de memória física associada. As entradas são criadas quando a DAT converte um endereço virtual usando tabelas de conversão. Subsequente uso do endereço virtual pode, então, usar a entrada do TLB rápido em vez de acessar a tabela de conversão sequencial lento. O conteúdo do TLB pode ser gerido por uma variedade de algoritmos de substituição, incluindo LRU (em inglês, Least Recently Used).
[0554] No caso em que o processador é um processador de um sistema multiprocessador, cada processador tem a responsabilidade de manter os 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 sendo 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.
[0555] Unidades E/S 5054 (Figura 19) fornecem ao processador meios para conexão a dispositivos periféricos, incluindo fita, disco, impressoras, monitores, e redes, por exemplo. Unidades E/S são, frequentemente, apresentadas ao programa de computador através de drivers de software. Em computadores centrais, tal como o System z® da IBM®,, adaptadores de canal e adaptadores de sistema aberto são unidades E/S da unidade central que permitem as comunicações entre o sistema operacional e os dispositivos periféricos.
[0556] Além disso, outros tipos de ambientes de computação podem se beneficiar de um ou mais aspectos da presente invenção. Como um exemplo, conforme mencionado aqui, um ambiente pode incluir um emulador (por exemplo, software ou outros mecanismos de emulação), no qual uma arquitetura particular (incluindo, por exemplo, execução de instrução, funções arquitetadas, tais como conversão de endereços, e registradores 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 um ou mais aspectos da presente invenção, 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.
[0557] 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 a partir da memória e, opcionalmente, fornecer o armazenamento temporário local para a instrução buscada; uma unidade de decodificação de instrução para receber as instruções buscadas e determinar o tipo de instrução que foi buscada; e uma unidade de execução de instrução para executar as instruções. A execução pode incluir o carregamento de dados em um registrador a partir da memória; armazenamento de dados novamente na memória de um registrador; ou execução de algum tipo de operação aritmética ou lógica, conforme determinado pela unidade de decodificação.
[0558] Em um exemplo, cada unidade é implementada em software. Por exemplo, as operações executadas pelas unidades são implementadas como uma ou mais sub-rotinas dentro do software emulador.
[0559] Mais particularmente, em um mainframe, instruções de máquina arquitetadas são usadas por programadores, geralmente hoje programadores "C", muitas vezes por meio de um aplicativo compilador.
[0560] Estas instruções armazenadas no meio de armazenamento podem ser executadas nativamente em um z/Architecture® IBM® Server ou, alternativamente, em máquinas que executam outras arquiteturas. Elas podem ser emuladas em servidores mainframe IBM® existentes e futuros e em outras máquinas da IBM (por exemplo, servidores Power Systems e servidores System x). Elas podem ser executadas em máquinas que executam o Linux em uma ampla variedade de máquinas que usam hardware fabricado pela IBM®, Intel®, AMD™ e outros. Além de execução desse hardware sob a z/Architecture, o Linux pode ser usado, bem como máquinas que usam emulação por Hercules, UMX ou FSI (Fundamental Software, Inc.), onde geralmente 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.
[0561] O processador nativo, tipicamente, executa o software de emulação que compreende 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 emulada de cada vez e convertê-las em uma ou mais instruções de máquina emulada para um grupo correspondente de instruções nativas da máquina 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 contém as regras de arquitetura da arquitetura do processador emulado de forma a assegurar que sistemas operacionais e aplicativos escritos para o processador emulado funcionem corretamente. Além disso, o software de emulação fornece recursos identificados pela arquitetura do processador emulado incluindo, porém sem limitações, registradores de controle, registradores de finalidade geral, registradores de ponto flutuante, função de conversão dinâmica de endereços, incluindo tabelas de segmentos e tabelas de páginas, por exemplo, mecanismos de interrupção, mecanismos de troca de contexto, relógios de hora e data (em inglês, Time Of Day - TOD) e interfaces arquitetadas para subsistemas E/S, de modo que um sistema operacional ou um programa de aplicativos concebido para ser executado no processador emulado possa ser executado no processador nativo que tem o software de emulação.
[0562] A instrução específica a ser emulada é decodificada e uma sub-rotina é chamada 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 ou driver "C" ou qualquer outro método de fornecimento de um driver para o hardware específico, conforme estará dentro da capacidade daqueles versados na técnica após compreensão da descrição da concretização preferida. Várias patentes de software e hardware de emulação incluindo, porém sem limitações, Patente dos Estados Unidos N° 5.551.013 intitulada "Multiprocessor for Hardware Emulation", por Beausoleil et al.; e 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 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 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 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 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 formas conhecidas para alcançar a emulação de um formato de instrução arquitetada para uma máquina diferente para uma máquina de destino disponível para aqueles versados na técnica.
[0563] Na Figura 21, é fornecido um exemplo de um sistema de computador host emulado 5092 que emula um sistema de computador host 5000' de uma arquitetura hospedeira. No sistema de computador host emulado 5092, o processador host (CPU) 5091 é um processador central emulado (ou processador host virtual) e compreende um processador de emulação 5093 que tem um conjunto de instruções nativa 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.
[0564] 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 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 na memória 5097, e pode acessar uma instrução do host para execução de um programa a partir da memória do computador host 5096 ao empregar de uma ou mais instruções obtidas em uma rotina de sequência & acesso/decodificação que pode decodificar a(s) instrução(ões) do host acessado para determinar uma rotina de execução de instruções nativas para emular a função da instrução do host acessada. Outras funções que são definidas para a arquitetura do sistema de computador host 5000' podem ser emuladas por rotinas de funções arquitetadas, incluindo funções como registradores de finalidade geral, registradores de controle, conversão dinâmica de endereço e suporte ao subsistema 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 registradores gerais e conversão dinâmica de endereços virtuais) para aprimorar o desempenho das rotinas de emulação. Hardware e mecanismos "off-load" especiais também podem ser fornecidos para ajudar o processador 5093 a emular a função do computador host 5000'.
[0565] A terminologia usada aqui é para fins de descrição apenas de concretizações particulares e não se destina a ser limitativa da invenção. 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 características, inteiros, etapas, operações, elementos e/ou componentes indicados, mas não excluem a presença ou adição de uma ou mais de outras características, inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[0566] As estruturas correspondentes, materiais, atos e equivalentes de todos os meios ou etapas mais a função de elementos nas reivindicações abaixo, se for o caso, se destinam a incluir qualquer estrutura, material ou ato para executar a função em combinação com outros elementos reivindicados, conforme especificamente reivindicados. A descrição de um ou mais aspectos da presente invenção foi apresentada para fins de ilustração e descrição, mas não se destina a ser exaustiva ou limitar a invenção à forma descrita. Muitas modificações e variações serão evidentes para aqueles versados na técnica sem se afastar do âmbito da invenção. A concretização foi escolhida e descrita de modo a explicar melhor os princípios da invenção e sua aplicação prática e permitir que outras pessoas com conhecimentos normais na técnica compreendam a invenção para várias concretizações com várias modificações, conforme apropriado para o uso particular considerado.

Claims (5)

1. Método para facilitar o processamento de transações dentro de um ambiente de computação, o referido método caracterizado pelo fato de que compreende as etapas de:obter uma instrução para começar a transação (200), a instrução para começar a transação compreendendo um código de operação (202), que especifica uma instrução para começar a transação de um tipo específico, e um campo que indica uma máscara de salvamento de registro geral (210) que tem uma pluralidade de bits, cada um dos quais representa um par par-ímpar dos registradores gerais, e quando o bit tiver um valor, o par de registradores par- ímpar correspondente é salvo e quando o bit tem outro valor, o par de registradores par-ímpar correspondente não é salvo, a instrução para começar a transação inicia uma transação, bem como a máscara de salvamento do registador geral, assim, especificando explicitamente um ou mais registros selecionados do conjunto de registradores geral a ser salvo em um início da transação, a transação efetivamente atrasando o armazenamento de compromissos transacionais para a memória principal até a conclusão de uma transação selecionada; eexecutar a instrução para começar a transação, a execução da instrução para começar a transação compreendendo determinar (1300) os pares de registro selecionados a serem salvos e salvar (1302) o conteúdo de um ou mais registradores selecionados do conjunto de registradores gerais explicitamente especificados na máscara de salvamento de registrador geral da instrução para começar a transação, em que o salvamento só salva conteúdo dos um ou mais registradores selecionados do conjunto de registradores gerais explicitamente especificados na máscara de salvamento de registrador geral, e iniciando a execução da transação.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o método compreende ainda: determinar (1304) que a transação foi abortada; e com base na determinação de que a transação foi abortada e um ou mais pares de registro selecionados dos registradores gerais especificados pela máscara de salvamento de registrador, restaurar (1306) o um ou mais registradores selecionados.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o salvamento compreende copiar os conteúdos de um ou mais pares de registradores selecionados para uma localização de memória designada, e em que a restauração compreende copiar os conteúdos da localização de memória designada para o um ou mais registradores selecionados.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a instrução é uma instrução para começar a transação aninhada exterior de uma transação aninhada, e em que o método compreende ainda abortar a transação da transação aninhada, e com base em abortar, restaurar (1306) o um ou mais registradores selecionados para os conteúdos gravados com base na execução da instrução para começar a transação aninhada exterior.
5. Sistema caracterizado pelo fato de que compreende meios adaptados para realizar todas as etapas do método como definido em qualquer uma das reivindicações 1 a 4.
BR112014031415-2A 2012-06-15 2012-11-26 Salvar/ restaurar registradores selecionados em processamento transacional BR112014031415B1 (pt)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
BR112014031415A2 BR112014031415A2 (pt) 2017-06-27
BR112014031415B1 true BR112014031415B1 (pt) 2021-08-10

Family

ID=49757037

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014031415-2A BR112014031415B1 (pt) 2012-06-15 2012-11-26 Salvar/ restaurar registradores selecionados em processamento transacional

Country Status (24)

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

Families Citing this family (37)

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

Family Cites Families (234)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
US9792125B2 (en) Saving/restoring selected registers in transactional processing
US10185588B2 (en) Transaction begin/end instructions
EP2862070B1 (en) Transactional processing
US9983881B2 (en) Selectively controlling instruction execution in transactional processing
EP2834739B1 (en) Transaction diagnostic block
BR112014031353B1 (pt) Facilidade de assistência de processador
EP2862081B1 (en) Transactional execution branch indications
US10430199B2 (en) Program interruption filtering in transactional execution
BR112014031432B1 (pt) Instrução de armazenamento não transacional
BR112014031435B1 (pt) Teste randomizado dentro de execução transacional
US9223687B2 (en) Determining the logical address of a transaction abort

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B04C Request for examination: application reinstated [chapter 4.3 patent gazette]
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 26/11/2012, OBSERVADAS AS CONDICOES LEGAIS.