BR112014031432B1 - Instrução de armazenamento não transacional - Google Patents

Instrução de armazenamento não transacional Download PDF

Info

Publication number
BR112014031432B1
BR112014031432B1 BR112014031432-2A BR112014031432A BR112014031432B1 BR 112014031432 B1 BR112014031432 B1 BR 112014031432B1 BR 112014031432 A BR112014031432 A BR 112014031432A BR 112014031432 B1 BR112014031432 B1 BR 112014031432B1
Authority
BR
Brazil
Prior art keywords
transaction
instruction
execution
transactional
program
Prior art date
Application number
BR112014031432-2A
Other languages
English (en)
Other versions
BR112014031432A2 (pt
Inventor
Christian Jacobi
Dan Greiner
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 BR112014031432A2 publication Critical patent/BR112014031432A2/pt
Publication of BR112014031432B1 publication Critical patent/BR112014031432B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Landscapes

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

Abstract

instrução de armazenamento não transacional. uma instrução de armazenamento não transacional, executada em modo de execuçao transacional, realiza armazenamentos que estão retidos, mesmo se uma operação associada a instrução aborta. os armazenamentos incluem informações especificadas pelo usuário que podem facilitar a depuração de uma transação abortada.

Description

Campo Técnico
[0001] A presente invenção refere-se, em geral, a ambientes de computação de multiprocessamento, e em particular, ao processamento transacional dentro de tais ambientes de computação. Antecedentes
[0002] Um desafio permanente na programação de multiprocessador é a de atualizações para o mesmo local de armazenamento por várias unidades de processamento central (CPUs). Muitas instruções que atualizam os locais de armazenamento, incluindo até mesmo operações lógicas simples, como E, o fazem com vários acessos ao local. Por exemplo, em primeiro lugar, o local de armazenamento é buscado e, em seguida, o resultado atualizado é armazenado de volta.
[0003] Para que várias CPUs atualizem com segurança o mesmo local de armazenamento, o acesso ao local é serializado. Uma instrução, a instrução TEST AND SET, introduzida com a arquitetura S/360 anteriormente oferecida pela International Business Machines Corporation, forneceu uma atualização entrelaçada de um local de armazenamento. Atualização entrelaçada significa que, tal como observado por outros CPU e subsistema de entrada/ saída (I/O) (por exemplo, o subsistema de canal), todo o acesso de armazenamento da instrução parece ocorrer atomicamente. Mais tarde, a arquitetura S/370 oferecida pela International Business Machines Corporation introduziu as instruções COMPARE AND SWAP e COMPARE DOUBLE AND SWAP que fornecem um meio mais sofisticado de realizar atualização entrelaçada, e permitir a implementação do que é comumente conhecido como uma palavra de bloqueio (ou semáforo). Instruções adicionadas recentemente têm fornecido capacidades de atualização entrelaçada adicionais, incluindo COMPARE AND SWAP AND PURGE, e COMPARE AND SWAP AND STORE. No entanto, todas estas instruções fornecem entrelaçamento para apenas um único local de armazenamento.
[0004] Técnicas de programa mais complexas podem exigir a atualização entrelaçada de vários locais de armazenamento, como ao adicionar um elemento a uma lista duplamente vinculada. Em tal operação, tanto um ponteiro para trás e para a frente estão a aparecer para serem atualizados em simultâneo, tal como observado por outras CPUs e o subsistema I/O. A fim de efetuar uma tal atualização da localização múltipla, o programa é forçado a utilizar um ponto de serialização único separado, tal como uma palavra de bloqueio. No entanto, as palavras de bloqueio podem fornecer um nível muito mais disciplinado de serialização do que é exigido; por exemplo, as palavras de bloqueio podem serializar uma fila inteira de milhões de elementos, embora apenas dois elementos estão sendo atualizados. O programa pode estruturar os dados para utilização de serialização de granulação mais fina (por exemplo, uma hierarquia de pontos de bloqueio), mas que apresenta problemas adicionais, como potenciais situações de impasse se a hierarquia é violada, e problemas de recuperação se o programa encontra um erro enquanto segura um ou mais bloqueios ou se o bloqueio não pode ser adquirido.
[0005] Em adição ao acima, existem inúmeras situações em que um programa pode executar uma sequência de instruções que podem ou não resultar numa condição de exceção. Se não ocorrer nenhuma condição de exceção, em seguida, o programa continua; no entanto, se uma exceção é reconhecida, então o programa pode tomar uma ação corretiva para eliminar a condição de exceção. Java, como um exemplo, pode explorar a execução do mesmo, por exemplo, a execução especulativa, alinhamento parcial de uma função, e/ ou na re-sequenciação da verificação de ponteiro nulo.
[0006] Em ambientes de sistema operacional clássicos, como z/OS e seus antecessores oferecidos pela International Business Machines Corporation, o programa estabelece um ambiente de recuperação para interceptar qualquer condição de exceção de programa que pode encontrar. Se o programa não interceptar a exceção, o sistema operacional normalmente termina de forma anormal o programa para exceções que o sistema operacional não está preparado para lidar. Estabelecer e explorar tal ambiente é custoso e complicado.
Sumário
[0007] As deficiências do estado da técnica são abordadas e vantagens são fornecidas através do fornecimento de um produto de programa de computador para a execução de uma instrução dentro de um ambiente de computação. O produto de programa de computador inclui um meio de armazenamento legível por computador legível por um circuito de processamento e armazenando instruções para execução pelo circuito de processamento para a realização de um método. O método inclui, por exemplo, a obtenção, por um processador, de uma instrução de máquina para execução, a instrução de máquina sendo definida para a execução de computador de acordo com uma arquitetura de computador, as instruções de máquina, incluindo: um código de operação para especificar uma operação de armazenamento não transacional; um primeiro operando; e um segundo operando para designar um local para o primeiro operando; e execução, pelo processador, da instrução de máquina, a execução incluindo:colocar, de modo não transacional, o primeiro operando no local especificado pelo segundo operando, em que a informação armazenada no segundo operando é mantida apesar de um aborto de uma transação associada com a instrução de máquina, e em que a colocação de modo não transacional é retardada até um fim do modo de execução transacional do processador.
[0008] Métodos e sistemas relacionados a uma ou mais concretizações, também são descritos e aqui reivindicados.
[0009] Características e vantagens adicionais são realizadas. Outras concretizações e aspectos são descritos em detalhes aqui e são consideradas como parte da invenção reivindicada.
Breve Descrição dos Desenhos
[0010] Concretizações da presente invenção serão agora descritas, apenas para fins de exemplo, com referência aos desenhos anexos, nos quais:
[0011] A figura 1 representa uma concretização de um ambiente de computação;
[0012] A figura 2A mostra um exemplo de uma instrução de Início de Transação (TBEGIN);
[0013] A figura 2B mostra uma concretização de maisdetalhes de um campo de instrução TBEGIN da figura 2A;
[0014] A figura 3A mostra em exemplo de uma instrução de Início de Transação restrita (TBEGINC);
[0015] A figura 3B representa uma concretização de mais detalhes de um campo de instrução TBEGINC da figura 3A;
[0016] A figura 4 representa um exemplo de umainstrução de Fim de Transação (TEND);
[0017] A figura 5 representa um exemplo de umainstrução de Aborto de Transação (TABORT);
[0018] A figura 6 representa um exemplo de transações agrupadas;
[0019] A figura 7 mostra um exemplo de uma instrução de Armazenamento Não Transacional (NTSTG);
[0020] A figura 8 ilustra um exemplo de uma instrução de Extrair o Profundidade de aninhamento de Transação (ETND);
[0021] A figura 9 representa um exemplo de um bloco de diagnóstico de transação;
[0022] A figura 10 ilustra um exemplo de razões para abortar, juntamente com códigos de abortagem associados e códigos de condição;
[0023] A figura 11A mostra um exemplo de lógica associada a uma instrução de armazenamento não transacional;
[0024] A figura 11B mostra um exemplo de lógica adicional associado com a instrução de armazenamento não transacional;
[0025] A figura 12 representa uma concretização de um produto de programa de computador;
[0026] A figura 13 representa uma concretização de um sistema de computador hospedeiro;
[0027] A figura 14 representa um outro exemplo de um sistema de computador;
[0028] A figura 15 mostra um outro exemplo de um sistema de computador compreendendo uma rede de computadores;
[0029] A figura 16 representa uma concretização de vários elementos de um sistema de computador;
[0030] A figura 17A mostra uma concretização daunidade de execução do sistema de computador da figura 16;
[0031] A figura 17B mostra uma concretização daunidade de ramificação do sistema de computador da figura 16;
[0032] A figura 17C ilustra uma concretização da unidade de carregamento/armazenamento do sistema de computador da figura 16; e
[0033] A figura 18 representa uma concretização de um sistema de computador hospedeiro emulado.
Descrição Detalhada
[0034] De acordo com uma concretização, uma instalação de execução transacional (TX) é fornecida. Esta instalação fornece processamento transacional para instruções, e em uma ou mais concretizações, oferece diferentes modos de execução, conforme descrito a seguir, bem como os níveis agrupados de processamento transacional.
[0035] A instalação de execução transacional introduz um estado CPU chamado o modo de execução transacional (TX). Seguindo uma reinicialização da CPU, a CPU não está no modo de TX. A CPU entra no modo de TX por uma instrução BEGIN TRANSACTION. A CPU deixa o modo de TX por qualquer uma dentre (a) uma instrução TRANSACTION END extrema (mais detalhes sobre interior e exterior a seguir), ou (b) a transação que está sendo abortada. Enquanto estiver no modo de TX, acessos de armazenamento pela CPU parecem ser bloco concorrente como observado por outras CPUs e o subsistema de I/O. Os acessos de armazenamento são quer (a) utilizados para armazenamento quando a transação mais exterior termina sem abortar (isto é, por exemplo, atualizações feitas numa cache ou buffer local para a CPU são propagadas e armazenado na memória real e visíveis para outras CPUs), ou (b) descartados se a transação for abortada.
[0036] As transações podem ser agrupadas. Isto é, enquanto a CPU está no modo de TX, que pode executar uma outra instrução TRANSACTION BEGIN. A instrução que faz com que a CPU entre no modo de TX é chamada o TRANSACTION BEGIN mais exterior; do mesmo modo, o programa é dito ser na transação mais exterior. Execuções subsequentes à TRANSACTION BEGIN são chamadas instruções internas; e o programa está executando uma transação interna. O modelo fornece um profundidade de aninhamento mínimo e um profundidade de aninhamento máximo dependente do modelo. Uma instrução EXTRACT TRANSACTION NESTING DEPTH devolve o valor atual de nível de agrupamento, e em uma outra concretização, pode devolver um valor máximo de profundidade de aninhamento. Esta técnica utiliza um modelo chamado "agrupamento achatado", no qual uma condição de abortar em qualquer profundidade de aninhamento faz com que todos os níveis da transação sejam abortados, e o controle é retornado para a instrução após a TRANSACTION BEGIN mais externa.
[0037] Durante o processamento de uma transação, um acesso transacional feita por uma CPU é dito em conflito com qualquer (a) um acesso transacional ou acesso não transacional feito por outra CPU, ou (b) um acesso não transacional feito pelo subsistema de I/O, se ambos os acessos são para qualquer localização dentro da mesma linha de memória cache, e um ou ambos dos acessos é um armazenamento. Em outras palavras, a fim de que a execução de transação seja produtiva, a CPU não deve ser observada fazendo acessos transacionais até que se aloque. 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, ele pode ser menos eficaz, se houver uma grande quantidade de contenção para os locais de armazenamento que estão sendo acessados de forma transacional.
[0038] Em um modelo de execução transacional (aqui referida como uma transação não restrita), quando uma transação é abortada, o programa pode ou tentar re- impulsionar a transação na esperança de que a condição de abortar não esteja mais presente, ou o programa pode "desviar" para um caminho não transacional equivalente. Em um outro modelo de execução de transação (aqui referido como uma transação restrita), uma transação abortada é automaticamente reconduzida pela CPU; na ausência de violações de restrição, a transação restrita é assegurada de eventual conclusão.
[0039] Ao iniciar uma transação, o programa pode especificar vários controles, tais como (a) que registradores gerais são restaurados para seus conteúdos originais, se a transação for anulada, (b) se a transação está autorizada a modificar o contexto do registrador de ponto-flutuante, incluindo, por exemplo, registradores de ponto flutuante e o registrador de controle de ponto flutuante, (c) se a transação tem permissão para modificar os registradores de acesso (ARs), e (d) se certas condições de exceção de programa estão a ser impedidas de causar uma interrupção. Se uma transação é abortada não restrita, várias informações de diagnóstico podem ser fornecidas. Por exemplo, a instrução TBEGIN mais externa que inicia uma transação não restrita pode designar um bloco de diagnóstico de transação de programa específico (TDB). Além disso, o TDB na área de prefixo da CPU ou designada por descrição de estado do hospedeiro podem também ser utilizado, se a transação é abortada devido a uma interrupção do programa ou uma condição que causa execução interpretativa para terminar, respectivamente.
[0040] Indicado acima são vários tipos de registradores. Estas são explicadas mais detalhadamente aqui em detalhes. Registradores gerais podem ser utilizados como acumuladores de operações de lógica e aritmética gerais. Numa concretização, cada registrador contém 64 posições de bits, e existem 16 registadores 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 fornecem o endereçamento de vários registradores gerais por ter vários campos R. Para algumas instruções, a utilização de um registrador geral específico está implícita em vez de explicitamente designado por um campo R da instrução.
[0041] Além de seu uso como acumuladores de operações lógicas e aritméticas gerais, 15 dos 16 registradores gerais são também usados como endereço de base e registradores de índice na geração de endereço. Nestes casos, os registradores são designados por um campo B ou campo X de quatro bits em uma instrução. Um valor de zero no campo B ou X especifica que nenhuma base ou índice deve ser aplicado, e assim, registrador geral 0 não deve ser designado como contendo um endereço de base ou índice.
[0042] Instruções de ponto flutuante usam um conjunto de registradores de ponto flutuante. A CPU 16 tem registradores de ponto flutuante, numa 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 é de 64 bits de comprimento e pode conter um operando de ponto flutuante curto (32-bit) ou longo (64- bit).
[0043] Um registrador de controle de ponto flutuante (FPC) é um registrador de 32 bits que contém os bits de máscara, bits de flag, um código de exceção de dados e bits de modo de arredondamento, e é usado durante o processamento de operações de ponto flutuante.
[0044] Além disso, numa concretização, a CPU 16 tem registradores de controle, cada um tendo posições de 64 bits. As posições de bits nos registradores são atribuídas a determinadas instalações no sistema, tais como gravação de do evento de programa (PER) (discutido abaixo), e são usados tanto para especificar que uma operação pode ser estabelecida ou a prestação de informação especial requerida pela instalação. Numa concretização, para a instalação transacional, CR0 (bits 8 e 9) e CR2 (bits 61-63) são utilizados, como descrito abaixo.
[0045] A CPU tem, por exemplo, 16 registradores de acesso numerados de 0-15. Um registrador de acesso consiste em posições de 32 bits contendo uma especificação indireta de um elemento de controle de espaço de endereço (ASCE). Um elemento de controle de espaço de endereço é um parâmetro utilizado pelo mecanismo de tradução de endereços dinâmicos (DAT) para traduzir as referências a um espaço de endereço correspondente. Quando a CPU está num modo de chamada de modo de registrador de acesso (controlado por bits na palavra de estado do programa (PSW)), um campo de instruções B, usado para especificar um endereço lógico para uma referência de operando de armazenamento, designa um registrador de acesso, e o elemento de controle de espaço de endereço especificado pelo registrador de acesso é usado por DAT para ser feita a referência. Para algumas instruções, um campo R é utilizado em vez de um campo B. São fornecidas instruções para o carregamento e o armazenamento dos conteúdos dos registradores de acesso e para deslocar o conteúdo de um registrador de acesso para outro.
[0046] Cada um dos registradores de acesso 1-15 pode designar qualquer espaço de endereço. O registrador de acesso 0 designa o espaço de 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 o conteúdo do registrador de acesso. Quando o registrador de acesso 0 é utilizado para designar um espaço de endereço, a CPU trata o registrador de acesso como designando o espaço de instrução primária, e não examina o conteúdo real do registrador de acesso. Por conseguinte, os 16 registradores de acesso podem designar, a qualquer momento, o espaço de instruções primária e um máximo de 15 outros espaços.
[0047] Numa concretização, existem vários tipos de espaços de endereços. Um espaço de endereço é uma sequência de números inteiros consecutivos (endereços virtuais), em conjunto com parâmetros de transformação específicos, que permitem a cada número ser associado a uma localização de byte no armazenamento. A sequência começa em zero e segue da esquerda para a direita.
[0048] Por exemplo, na z/Architecture, quando um endereço virtual é usado por um CPU para acessar o armazenamento principal (a.k.a, memória principal), ele é convertido em primeiro lugar, por meio de tradução de endereços dinâmicos (DAT), para um endereço real, e, em seguida, por meio de um prefixo, para um endereço absoluto. 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 mais alta para um espaço de endereço específico é chamado de um elemento de controle de espaço de endereço, e é encontrado para ser utilizado por DAT em um registro de controle ou conforme especificado por um registrador de acesso. Em alternativa, o elemento de controle de endereço de espaço para um espaço de endereço pode ser uma designação espaço real, o que indica que o DAT é traduzir os endereços virtuais simplesmente tratando-o como um endereço real e sem utilizar quaisquer tabelas.
[0049] DAT utiliza, em diferentes momentos, os elementos de controle de espaço de endereço em diferentes registradores de controle ou especificado pelos registradores de acesso. A escolha é determinada pelo modo especificado na tradução da PSW corrente. Quatro modos de tradução estão disponíveis: o modo de espaço primária, modo de espaço secundário, o modo de registrador de acesso e modo de espaço nativo. Espaços de endereços diferentes são endereçáveis, dependendo do modo de tradução.
[0050] Em qualquer instante em que o processador está no modo de espaço primário ou modo de espaço secundário, a CPU pode traduzir os endereços virtuais que pertencem a dois espaços de endereços - o espaço de endereço primário e o endereço de espaço secundário. A qualquer instante em que a CPU está no modo de registrador de acesso, pode traduzir os endereços virtuais de até 16 espaços de endereços - o espaço de endereço principal até 15 espaços de endereço AR- especificados. Em qualquer instante em que o processador está no modo de espaço nativo, pode traduzir os endereços virtuais do espaço de endereço nativo.
[0051] O espaço de endereço principal é identificado como tal porque consiste de endereços virtuais primários, que são traduzidos por meio do elemento de controle de espaço de endereço primário (ASCE). Do mesmo modo, o espaço de endereço secundário consiste de endereços virtuais secundários traduzidos por meio do ASCE secundário; os espaços de endereço especificado AR consistem de endereços virtuais especificados AR traduzidos por meio de ASCES especificados AR; e o espaço de endereço nativo consiste de endereços virtuais nativos traduzidos por meio do ASCE nativo. Os ASCES primários e secundários estão em registradores de controle 1 e 7, respectivamente. ASCES especificados AR estão em entradas da segunda tabela ASN que são localizados através de um processo chamado de tradução de registrador de acesso (ART) usando registrador de controle 2, 5 e 8. A ASCE nativa está no registrador de controle 13.
[0052] Uma concretização de um ambiente de computação para incorporar e utilizar um ou mais aspectos da instalação transacional descrito aqui é descrito com referência à figura 1.
[0053] Com referência à figura 1, num exemplo, o ambiente de computação 100 é baseado na z/Architecture, oferecido pela International Business Machines Corporation (IBM), Armonk, Nova Iorque. A z/Architecture descrita numa publicação intitulada IBM "z/Architecture - Principles of Operation," Publicação N° SA22-7932-08, 9a Edição, agosto de 2010, que é aqui incorporado por referência na sua totalidade.
[0054] As marcas Z/ARQUITECTURE, IBM, e Z/OS e z/VM (relacionado abaixo) são marcas registradas da International Business Machines Corporation, Armonk, Nova Iorque. Outros nomes usados aqui podem ser marcas registradas, marcas comerciais ou nomes de produtos da International Business Machines Corporation ou de outras empresas.
[0055] Como um exemplo, o ambiente de computação 100 inclui um complexo de processador central (CPC) 102 acoplado a um ou mais dispositivos de entrada/ saída (input/output - I/O) 106 através de uma ou mais unidades de controle 108.
[0056] Complexo de processador central 102 inclui, por exemplo, um ou mais processadores centrais 110, uma ou mais partições 112 (por exemplo, as partições lógicas (LP)), um hipervisor de partição lógica 114, e um subsistema de entrada/saída 115, cada um dos quais é descrito abaixo.
[0057] Processadores Centrais 110 são recursos físicos do processador atribuídos às partições lógicas. Em particular, cada partição lógica 112 tem um ou mais processadores lógicos, cada um dos quais representa a totalidade ou uma parte de um processador físico 110 alocado para a partição. Os processadores lógicos de uma partição específica 112 pode ser ou dedicado à partição, de modo a que o recurso de processador subjacente 101 é reservado para essa partição; ou partilhados com outra partição, de modo a que o recurso de processador subjacente está potencialmente disponível para outra partição.
[0058] A funções lógicas de partição como um sistema separado e tem uma ou mais aplicações, e opcionalmente, um sistema operacional residente nele, que pode ser diferente para cada partição lógica. Numa concretização, o sistema operativo é o sistema operativo z / OS, o sistema z / VM de funcionamento, o sistema operativo z / Linux, ou o sistema operativo TPF, oferecida pela International Business Machines Corporation, Armonk, Nova Iorque. Partições 1 lógico 12 são geridos por um hipervisor de partição lógica 114, que é implementado por firmware executados em processadores 110. Tal como é aqui utilizado, firmware inclui, por exemplo, o microcódigo e/ ou millicode do processador. Ele inclui, por exemplo, as instruções de nível de hardware e/ ou estruturas de dados usado na implementação do código de máquina nível superior. Numa concretização, que inclui, por exemplo, o código proprietário que é normalmente entregue como microcódigo que inclui software ou microcódigo site específico para o hardware e os controles do funcionamento de acesso do sistema para o hardware do sistema subjacente.
[0059] As partições lógicas e hipervisor de partição lógica cada um compreendem um ou mais programas residentes nas respectivas partições de armazenamento central associadas com os 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, Nova York.
[0060] O subsistema de entrada/ saída 15 direciona o fluxo de informações entre dispositivos de entrada/ saída 106 e armazenamento principal (a.k.a., a memória principal). É acoplado ao complexo de processamento central, na medida em que pode ser uma parte do complexo de processamento central ou separada das mesmas. O subsistema de I/O alivia os processadores centrais da tarefa de se comunicar diretamente com os dispositivos de entrada/ saída e permite o processamento de dados de proceder concorrentemente com o processamento de entrada/ saída. Para fornecer comunicações, o subsistema de I/O utiliza adaptadores I/O de comunicação. Existem vários tipos de adaptadores de comunicação, incluindo, por exemplo, canais, adaptadores I/O, placas PCI, placas Ethernet, placas de interface de armazenamento de computador pequeno (SCSI), etc. No exemplo particular aqui descrito, os adaptadores de I/O de comunicação são canais e, portanto, o subsistema de I/O é aqui referido como um subsistema de canal. No entanto, isto é apenas um exemplo. Outros tipos de subsistemas de I/O podem ser utilizados.
[0061] O subsistema de I/O utiliza um ou mais caminhos de entrada/ saída como links de comunicação na gestão do fluxo de informações para ou a partir de dispositivos de entrada/ saída 106. Neste exemplo particular, esses caminhos são chamados caminhos de canal, uma vez que os adaptadores de comunicação são canais.
[0062] O ambiente de computação acima descrito é apenas um exemplo de um ambiente de computação que pode ser utilizado. Outros ambientes, incluindo, mas não limitados a ambientes não particionados, outros ambientes particionados, e/ ou ambientes emulados, podem ser utilizados; concretizações não são limitadas a qualquer meio ambiente.
[0063] De acordo com um ou mais aspectos, a instalação de execução transacional é uma melhoria de CPU que fornece os meios pelos quais a CPU pode executar uma sequência de instruções -conhecida como uma transação - que podem acessar vários locais de armazenamento, incluindo a atualização desses locais. Como observado por outras CPUs e o subsistema de I/O, a transação é ou (a) completada na sua totalidade como uma única operação atômica, ou (b) abortada, potencialmente deixando nenhuma evidência de que jamais foi executada (com exceção de certas condições aqui descritas). Assim, uma operação concluída com êxito pode atualizar vários locais de armazenamento, sem qualquer bloqueio especial que é necessário no modelo de multiprocessamento clássico.
[0064] A instalação 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 interromper o processamento, cada um dos quais é ainda descrito abaixo.
[0065] Numa concretização, três controles para fins especiais, incluindo uma Palavra de Estado de Programa (PSW) de abortar transação, um endereço de bloco de diagnóstico de transação (TDB), e uma profundidade de aninhamento de transação; cinco bits do registrador de controle; e seis instruções gerais, incluindo TRANSACTION BEGIN (restrita e não restrita), TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT, e NONTRANSACTIONAL STORE, são usadas para controlar a instalação de execução transacional. Quando a instalação é instalada, ela é instalada, por exemplo, em todas as CPUs na configuração. Uma indicação de instalação, o bit 73 em uma concretização, quando um, indica que a instalação de execução da transação está instalada.
[0066] Quando a instalação de execução da transação está instalada, a configuração proporciona uma instalação de execução transacional não restrita, e, opcionalmente, uma instalação de execução transacional restrita, cada uma das quais é descrita abaixo. Quando indicações de instalações 50 e 73, como exemplos, são tanto um, a instalação de execução transacional restrita está instalada. Ambas as indicações da instalação são armazenadas na memória em locais específicos.
[0067] Tal como aqui usado, o nome de instrução BEGIN TRANSACTION refere-se as instruções de atendimento TBEGIN mnemónicas (Transaction Begin para uma transação não restrita) e TBEGINC (Transaction Begin para uma transação restrito). As discussões referentes a uma instrução específica são indicadas pelo nome de instrução seguido pelo mnemônico em parênteses ou colchetes, ou simplesmente pelo mnemônico.
[0068] Uma concretização de um formato de uma instrução TRANSACTION BEGIN (TBEGIN) está representada nas figuras 2A-2B. Como um exemplo, uma instrução TBEGIN 200 inclui um campo de código de operação (opcode) 202, que inclui um código de operação especificando uma operação não restrita de iniciar a operação; um campo base (B1) 204; um campo de deslocamento (D1) 206; e um campo imediato (I2) 208. Quando o campo B1 é diferente de zero, o conteúdo do registrador geral especificado por B1 204 são adicionados em D1 206 para se obter o primeiro endereço do operando.
[0069] Quando o campo B1 é diferente de zero, é aplicável o seguinte:• Quando a profundidade de aninhamento de transação é inicialmente zero, o primeiro endereço do operando designa a localização do bloco de diagnóstico de transação de 256 bytes, chamado a TDB de TBEGIN especificada (descrito mais adiante), no qual várias informações de diagnóstico podem ser armazenadas, se a transação é abortada. Quando a CPU está no modo de espaço primário ou no modo de registrador de acesso, o primeiro endereço do operando designa um local no espaço do endereço principal. Quando a CPU está no modo de espaço secundário ou de espaço nativo, o primeiro endereço de operando designa uma localização no espaço secundário ou endereço nativo, respectivamente. Quando DAT está desligado, o endereço do bloco de diagnóstico transação (TDB) (TDBA) designa um local no armazenamento real.Acessibilidade de armazenamento para o primeiro operando é determinada. Se acessível, o endereço lógico do operando é colocado no bloco de endereço de diagnóstico transação (TDBA), e o TDBA é válido.• Quando a CPU já está no modo de execução transacional não restrita, o TDBA não é modificado, e é imprevisível se o primeiro operando é testado quanto àacessibilidade.
[0070] 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.
[0071] Os bits do campo de I2 são definidos como se segue, num exemplo:
[0072] Máscara de Salvar Registro Geral (GRSM) 210 (figura 2B): Bits 0-7 do campo I2 contém a máscara de salvar registo geral (GRSM). Cada bit da GRSM representa um par par-ímpar de registradores gerais, onde o bit 0 representa registros 0 e 1, 1 bit representa registros 2 e 3, e assim por diante. Quando um pouco na GRSM da instrução TBEGIN mais externa é zero, o par de registro correspondente não é salvo. Quando um pouco na GRSM da instrução TBEGIN mais externa é um, o par de registro correspondente é salvo em um modelo de localização dependente que não é diretamente acessível pelo programa.
[0073] Se a transação for anulada, pares de registros salvos são restaurados para seu conteúdo quando a instrução TBEGIN mais externa foi executada. O conteúdo de todos os outros registradores gerais (não salvos) não é restaurado quando a transação é anulada.
[0074] A máscara de salvar registro geral é ignorada em todas as exceções TBEGINs para aquele mais exterior.
[0075] Permissão de Modificação de AR (A) 212: O controle A, bit 12 do campo de I2, controla se a transação tem permissão para modificar um registrador de acesso. O controle de modificação de AR de permissão efetiva é a lógica E do controle A na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores.
[0076] Se o controle A eficaz é zero, a transação será abortada com código de aborto 11 (instrução restrita) se for feita uma tentativa de modificar qualquer registrador de acesso. Se o controle A eficaz é um, a transação não será abortada se um registrador de acesso é modificado (ausente de qualquer outra condição de aborto).
[0077] Permissão de Operação de Ponto Flutuante (F) 214: O controle F, bit 13 do campo de I2, controla se a transação tem permissão para executar instruções de ponto flutuante especificados. A efetiva permissão do controle operação de ponto flutuante é a lógica E do controle F na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores.
[0078] Se o controle efetivo F é zero, então (a) a operação será abortada com o código de interrupção 11 (instrução restrita) se for feita uma tentativa de executar uma instrução de ponto flutuante, e (b) o código de exceção de dados (DXC) no byte 2 do registro de controle de ponto flutuante (FPCR) não será definida por qualquer condição de exceção do programa de exceção de dados. Se o controle efetivo F é um e, em seguida (a) a transação não será abortada se for feita uma tentativa de executar uma instrução de ponto flutuante (na ausência de qualquer outra condição de abortar), e (b) o DXC no FPCR pode ser definido por uma condição de exceção de programa de exceção de dados.
[0079] Controle de Filtragem de Interrupção de Programa (PIFC) 216: Bits 14-15 do campo I2 são o controle de filtragem interrupção do programa (PIFC). O controle das finanças públicas controla se determinadas classes de condições de exceção do 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 resultado do modo de execução transacional em uma interrupção.
[0080] O PIFC efetivo é o valor mais alto do PIFC na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores. Quando o PIFC eficaz é zero, todas as condições de exceção programa resultam em uma interrupção. Quando o PIFC eficaz é um, condições de exceção programa ter uma classe de execução transacional de 1 e 2 resultam em uma interrupção. (Cada condição de exceção programa é atribuída, pelo menos, uma classe de execução transacional, dependendo da gravidade da exceção. Gravidade baseia-se na probabilidade de recuperação durante a execução repetida da transação, e se o sistema operacional precisa ver a interrupção.) Quando o PIFC eficaz é dois, condições de exceção de programa tendo uma classe de execução transacional de um resultado em uma interrupção. Um PIFC de 3 é reservado.
[0081] Bits 8-11 do campo I2 (bits 40-43 da instrução) são reservados e devem conter zeros; caso contrário, o programa pode não funcionar a compatibilidade no futuro.
[0082] Uma concretização de um formato de uma instrução restrita de Trasaction Begin (TBEGINC) é descrita com referência às figuras 3A-3B. Num exemplo, TBEGINC 300 inclui um campo de código de operação 302, que inclui um código de operação especificando uma operação restrita de Transaction Begin; um campo base (B1) 304; um campo de deslocamento (D1) 306; e um campo imediato (I2) 308. O conteúdo do registrador geral especificado por B1 304 é adicionado em D1 306 para se obter o primeiro endereço do operando. No entanto, com a a instrução restrita de início de transação, o primeiro endereço de operando não é usado para acessar o armazenamento. Em vez disso, o campo B1 da instrução inclui zeros; caso contrário, uma exceção de especificação é reconhecida.
[0083] Numa concretização, o campo I2 inclui vários controles, um exemplo da qual é representado na figura 3B.
[0084] Os bits do campo de I2 são definidos como se segue, num exemplo:
[0085] Máscara de Salvar Registro Geral (GRSM) 310: Bits 0-7 do campo I2 contém a máscara de salvar o registro geral (GRSM). Cada bit da GRSM representa um par par-ímpar de registradores gerais, onde o bit 0 representa registros 0 e 1, bit 1 representa registradores 2 e 3, e assim por diante. Quando um bit na GRSM é zero, o par de registro correspondente não é salvo. Quando um bit na GRSM é um, o par de registro correspondente é salvo em um local dependente do modelo que não é diretamente acessível pelo programa.
[0086] Se a transação for anulada, pares de registros salvos são restaurados para seu conteúdo quando a instrução TRANSACTION BEGIN mais exterior for executada. O conteúdo de todos os outros registradores gerais (não salvos) não são restaurados quando uma transação restrita aborta.
[0087] Quando TBEGINC é usado para continuar a execução no modo de execução de transação não restrita, a máscara de salvar registro geral é ignorada.
[0088] Permissão de Modificação de AR (A) 312: O controle A, bit 12 do campo I2, controla se a transação tem permissão para modificar um registrador de acesso. O efetivo controle de permissão de modificação de AR é a lógica AND do controle A na instrução TBEGINC para o nível de aninhamento atual e para qualquer instrução TBEGIN ou TBEGINC exterior.
[0089] Se o controle A eficaz é zero, a transação será abortada com código de aborto 11 (instrução restrita) se for feita uma tentativa de modificar qualquer registrador de acesso. Se o controle A eficaz é um, a transação não será abortado se um registrador de acesso é modificada (ausente de qualquer outra condição de aborto).
[0090] Bits 08-11 e 13-15 do campo I2 (bits 40-43 e 45-47 da instrução) são reservados e devem conter zeros.
[0091] A fim de uma transação começar a instrução for especificado por um TRANSACTION END (TEND) de instruções, um formato de que está representada 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 especificando uma operação final de transação.
[0092] Um número de termos é usado no que diz respeito à instalação de execução de transações, e, por conseguinte, apenas por conveniência, uma lista de termos é fornecido abaixo em ordem alfabética. Numa concretização, esses termos têm a seguinte definição:
[0093] Aborto: Uma transação for anulada quando é encerrado antes de uma instrução END TRANSACTION que resulta em uma profundidade de aninhamento de transação de zero. Quando uma transação é abortada, ocorre o seguinte, numa concretização:
[0094] acessos de armazenamento Transacional feitos por qualquer e todos os níveis da transação são descartados (isto é, não confirmada).
[0095] acessos de armazenamento não transacional feitos por qualquer e todos os níveis da transação estão comprometidos.
[0096] Registradores designados pelo registrador geral save máscara (GRSM) da instrução BEGIN TRANSACTION mais exterior são restaurados para seu conteúdo antes da execução transacional (isto é, ao seu conteúdo em execução da instrução BEGIN TRANSACTION exterior). Geral não registra designado pelo Cadastro Geral de economia máscara da transação mais externa começar a instrução não são restauradas.
[0097] registradores de acesso, registros de ponto flutuante, e o registro de controle de ponto flutuante não são restaurados. Quaisquer alterações feitas a estes registradores durante a execução de transação são mantidos quando a transação for anulada.
[0098] Uma transação pode ser anulada devido a uma variedade de razões, incluindo a tentativa de execução de uma instrução restrito, tentativa de modificação de um recurso restrito, o conflito transacional, superando vários recursos da CPU, qualquer condição de interceptação interpretativa execução, qualquer interrupção, uma transação ABORTAR instrução, e outros motivos. Um código de transação- aborto fornece razões específicas para que uma transação pode ser abortada.
[0099] Um exemplo de um formato de um aborto (TABORT) instrução TRANSACTION é descrito com referência à figura 5. Como um exemplo, uma instrução de TABORTO 500 inclui um campo de código de operação 502, que inclui um código de operação especificando uma operação abortar operação; um campo base (B2) 504; e um campo de deslocamento (D2) 506. Quando o campo B2 é diferente de zero, o conteúdo do registrador geral abrangidos por B2 504 são adicionados a 506 D2 para obter um segundo endereço do operando; caso contrário, o segundo endereço do operando é formado exclusivamente a partir do domínio D2, e o campo B2 é ignorado. O segundo endereço do operando não é usado para o envio de dados; em vez disso, as formas de endereços da transação abortar código que é colocado em um bloco de diagnóstico transação durante o processamento abort. Computação do endereço para o segundo endereço de operando segue as regras da aritmética endereço: no modo de endereçamento de 24 bits, os bits 0-29 são definidas para zeros; no modo de endereçamento de bits 31, os bits 0-32 são ajustados para zero.
[0100] Commit: Na conclusão de uma instrução TRANSACTION END ultra periférica, a CPU compromete a loja acessos feito pela transação (ou seja, a transação mais externa e de quaisquer níveis aninhados) de tal forma que eles são visíveis para outras CPUs e o subsistema de I/O. Como observado por outros CPUs e pelo subsistema de I/O, todos buscar e armazenar os acessos feitos por todos os níveis aninhados da transação parecem ocorrer como uma única operação simultânea ocorre quando a cometer.
[0101] O conteúdo dos registradores gerais, registradores de acesso, registros de ponto flutuante, e o registro de controle de ponto flutuante não são modificados pelo processo de confirmação. Quaisquer alterações feitas a estes registradores durante a execução transacional são mantidas quando os armazenamentos da transação estão comprometidos.
[0102] Conflito: Um acesso transacional realizado por um conflito de CPU com (a) um acesso transacional ou acesso não transacional feita por outra CPU, ou (b) o acesso não-transacional feita pelo subsistema de I/O, se ambos os acessos são para qualquer local dentro da mesma linha de cache, e um ou mais dos acessos é uma loja.
[0103] Um conflito pode ser detectado por execução especulativa um CPU de instruções, mesmo que o conflito não pode ser detectado na sequência conceitual.
[0104] Transação restrita: Uma transação constrangida é uma transação que executa no modo de execução transacional restrita e está sujeita às seguintes limitações:
[0105] Um subconjunto das instruções gerais está disponível.
[0106] Um número limitado de instruções pode ser executado.
[0107] Um número limitado de locais de armazenamento de operando pode ser acessado.
[0108] A transação está limitada a um único nível de aninhamento.
[0109] Na ausência de interrupções ou conflitos com outras CPUs ou o subsistema de I/O repetidas, uma transação restrita, eventualmente, conclui, assim, uma rotina de aborto-manipulador não é necessária. Transações restritassão descritas em detalhe abaixo.
[0110] Quando uma instrução Transaction Begin restrita (TBEGINC) é executada enquanto a CPU já estiver no modo de execução da transação não restrita, a execução continua como uma transação não restrita aninhada.
[0111] Modo de execução Transacional restrito:Quando a profundidade de aninhamento transação é zero, e uma transação é iniciada por uma instrução TBEGINC, a CPU entra no modo de execução transacional restrita. Enquanto a CPU está no modo de execução transacional restrita, a profundidade de aninhamento transação é um.
[0112] Transação aninhada: Quando a instrução Transaction Begin é emitida enquanto a CPU está no modo de execução transacional não restrita, a transação está aninhada.
[0113] A instalação de execução transacional usa um modelo chamado achatada nidificação. No modo de nidificação achatada, armazenamentos feitos por uma transação interna não são observáveis por outros CPUs e pelo subsistema de I/O até que a transação mais externa compromete seus armazenamentos. Da mesma forma, se uma transação for anulada, todas as transações aninhadas abortar, e todas os armazenamentos transacionais de todas as transaçõesaninhadas são descartados.
[0114] Um exemplo de transações aninhadas está representado na figura 6. Como mostrado, um primeiro TBEGIN 600 inicia uma transação mais externa 601, TBEGIN 602 inicia uma primeira transação aninhada, e TBEGIN 604 inicia uma segunda transação aninhada. Neste exemplo, TBEGIN 604 e tendem 606 definir uma transação mais interna 608. Quando TEND 610 executa, armazenamentos transacionais estão comprometidos 612 para a transação mais externa e todas as transações internas.
[0115] Transação Não restrita: Uma transação não restrita é uma transação que executa no modo de execução transacional não restrita. Embora uma transação não restrita não se limita à maneira como uma transação restrita, ainda pode ser abortado devido a uma variedade de causas.
[0116] Modo de Execução Transacional Não restrita: Quando uma transação é iniciada pela instrução TBEGIN, a CPU entra no modo de execução transacional não restrita. Enquanto a CPU está no modo de execução transacional não restrita, a profundidade de aninhamento de transação podem variar de uma para a profundidade máxima de aninhamento de transação.
[0117] não transacional Acesso: acessos não- transacionais estão operando armazenamento acessos feitos pela CPU quando não está no modo de execução transacional(isto é, armazenamento clássico acessos transação). Além disso, os acessos feitos pelo subsistema de I/O são acessos não-transacionais. Além disso, a instrução de armazenamento não transacionais podem ser utilizados para causar um acesso de armazenamento não transacional enquanto a CPU está no modo de execução não restrita transacional.
[0118] Uma concretização de um formato de uma instrução de armazenamento não transacionais é descrito com referência à figura 7. Como um exemplo, uma instrução de armazenamento não transacional 700 inclui uma pluralidade de campos opcode 702a, 702b, especificando um código de operação que designa uma operação de armazenamento não transacional; um campo de registrador (Ri) 704 especificando um registrador, os conteúdos dos quais são chamados o primeiro operando; um campo de índice (X2) 706; um campo base (B2) 708; um campo primeiro deslocamento (DL2) 710; e um segundo campo de deslocamento (DH2) 712. Os conteúdos dos registradores gerais designadas pelos campos X2 e B2 são adicionados ao conteúdo de uma concatenação do conteúdo dos campos de DH2 e DL2 para formar o segundo endereço do operando. Quando um ou ambos os X2 ou campos B2 são iguais a zero, o registrador correspondente não participa na adição.
[0119] O primeiro operando de 64 bits é colocado nonde forma transacional inalterada no segundo localoperando.
[0120] O deslocamento, formada pela concatenação dos campos e DL2 DH2, é tratado como um inteiro assinado binária de 20 bits.
[0121] O segundo operando deve ser alinhado em um limite de palavra dupla; caso contrário, exceção especificação é reconhecido e a operação é suprimida.
[0122] Transação exterior / Ultra periféricas: Uma transação com uma profundidade de aninhamento de transação de número mais baixo é uma transação externa. A transação com um valor de profundidade de aninhamento de transação de um é a transação mais externa.
[0123] Uma transação mais externa começar a instrução é aquele que é executado quando a profundidade de aninhamento de transação é inicialmente zero. Uma instrução TRANSACTION END mais externa é aquele que faz com que a profundidade de aninhamento de transação para a transição de um para zero. Uma operação é restringida a operação mais exterior, nesta concretização.
[0124] Filtragem de Interrupção de Programa: Quando uma transação é abortada devido a determinadas condições de exceção programa, o programa pode, opcionalmente, evitar a interrupção ocorra. Essa técnica é chamada de filtragem interrupção do programa. Filtragem de interrupção do programa está sujeita à classe transacional da interrupção, a filtragem de controle interrupção programa efetivo da transação começar a instrução, e a interrupção do programa de execução transacional filtragem override no registrador de controle 0.
[0125] Transação: A transação inclui o armazenamento de operando acessos feitos, e registradores gerais selecionados alteradas, enquanto a CPU está no modo de execução da transação. Para uma transação não restrita, acessos de armazenamento operando podem incluir ambos os acessos transacionais e acessos não-transacionais. Para uma operação restrita, os acessos de armazenamento de operandos se limitam a acessos transacionais. Como observado por outros CPUs e pelo subsistema de I/O, todo o armazenamento-operando acessos feitos pelo CPU, enquanto no modo de execução de transação parecem ocorrer como uma única operação simultânea. Se uma transação é abortada, acessos loja transacionais são descartados, e eventuais registradores designados pelo registrador geral salvar máscara da transação mais externa BEGIN instruções são restaurados para seu conteúdo antes da execução transacional.
[0126] Acesso Transacional: acessos transacionais estão operando armazenamento acessos feitos enquanto a CPU está no modo de execução transacional, com exceção dos acessos feitos pela instrução STORE não transacionais.
[0127] Modo de Execução transacional: O modo de execução transacional prazo (aka, o modo de execução da transação) descreve a operação comum, tanto da não restrita e os modos de execução transacionais restritas. Assim, quando a operação é descrita, os termos não restrita e limitados são usados para qualificar o modo de execução transacional.
[0128] Quando a profundidade de aninhamento transação é zero, a CPU não está no modo de execução transacional (também chamado de modo de execução não transacional).
[0129] Como observado pelo CPU, buscas e armazenamentos feitas no modo de execução transacional não são diferentes do que as feitas enquanto não estiver em modo de execução transacional.
[0130] Numa concretização da arquitetura z/Architecture, a instalação de execução transacional está sob o controle de bits 8-9 0 do registrador de controle, os bits 61-63 do registrador de controle 2, a profundidade de aninhamento de transação, a transação de diagnóstico endereço de bloco, e a transação abortar palavra status do programa (PSW).
[0131] Na sequência de uma redefinição inicial CPU, o conteúdo de posições de bit 8-9 de controle de registro 0, posições de bits 62-63 de controle de registro 2, e a profundidade de aninhamento de transação são ajustados para zero. Quando o controle de execução transacional, 8 bits de controle de registro 0, é zero, a CPU não pode ser colocado em modo de execução transacional.
[0132] Maiores detalhes sobre os vários controles são descritos abaixo.
[0133] Como indicado, a instalação de execução transacional é controlada por dois bits de controle cadastre- se do zero e três bits de controle de registro dois. Por exemplo:
[0134] Registrador de Controle 0 Bits: As atribuições de bits são como se segue, numa concretização:
[0135] transacional de controle de execução (TXC):Bit 8 de registro de controle zero é o controle de execução transacional. Este bit fornece um mecanismo mediante o qual o programa de controle (por exemplo, sistema operativo) pode indicar se quer ou não a instalação de execução de transação é utilizável pelo programa. Bit 8 é ser um para entrar com sucesso o modo de execução transacional.
[0136] Quando o bit 8 de controle de registro 0 é zero, tentativa de execução do extrato OPERAÇÃO DO ASSENTAMENTO DE PROFUNDIDADE, Transaction Begin e instruções de transação de ponta resulta em uma execução especial operação.
[0137] Uma concretização de um formato de uma instrução ASSENTAMENTO DE PROFUNDIDADE EXTRACTO TRANSACTION é descrito com referência à figura 8. Como um exemplo, um extrato TRANSAÇÃO NESTING instrução PROFUNDIDADE 800 inclui um campo opcode 802 especificando um código de operação que indica a operação de extração profundidade de aninhamento de transação; e um campo de registrador Ri 804 que designa um registrador geral.
[0138] A profundidade de aninhamento transação atual é colocada em bits 48-63 do registrador geral Ri. Bits 0-31 do registrador permanecem inalteradas, e os bits 32-47 do registrador estão definidas para zero.
[0139] Numa outra concretização, a operação de assentamento de profundidade máxima, também é colocado no registrador geral Ri, tal como em bits 16-31.
[0140] Execução Transação Programa Interrupção Filtering Override (Pifo): Bit 9 de controle de registro zero é a interrupção do programa de execução transacional filtragem override. Este bit fornece um mecanismo pelo qual o programa de controle pode garantir que qualquer condição de exceção de programa que ocorre enquanto a CPU está no modo de execução transacionais resulta em uma interrupção, independentemente do controle de filtragem interrupção do programa de vigência especificada ou implícita pela Transaction Begin instrução(s).
[0141] Controle Register 2 Bits: As atribuições são as seguintes, numa concretização:
[0142] Transação Âmbito de diagnóstico (TDS): Bit 61 do registrador de controle 2 controla a aplicabilidade do controle diagnóstico transação (TDC) em bits 62-63 do registrador, como segue:
[0143] TDS Valor Significado 0 A TDC é aplicável independentemente de a CPU está no problema ou estado supervisor. O TDC 1 aplica-se apenas quando o processador está no estado de problema. Quando a CPU está no estado supervisor, o processamento é como se o TDC contido de zero.
[0144] Transação Controle de diagnóstico (TDC): Bits 62-63 de controle de registro 2 é um inteiro sem sinal de dois bits que pode ser usado para fazer com que as transações sejam abortadas aleatoriamente para fins de diagnóstico. A codificação do TDC é como se segue, num exemplo:
[0145] TDC Valor Significado 0 Operação normal; operações não são abortados como um resultado do TDC. 1 Abortar cada transação em uma instrução aleatória, mas antes da execução da instrução TRANSACTION END ultra periférica. Abortar operações aleatórias em uma instrução aleatória. 3Reservado
[0146] Quando uma transação é abortada devido a um TDC diferente de zero, então qualquer um pode ocorrer o seguinte:
[0147] [00126] O código de interrupção é definido como qualquer um dos códigos de 7-11, 13-16, ou 255, com o valor do código escolhido aleatoriamente pela CPU; o código de condição é definido correspondente ao código de abortar. Abortar códigos são adicionalmente descritos abaixo.
[0148] Para uma operação não restrita, o código de condição é ajustado para um. Neste caso, o código de interrupção não é aplicável.
[0149] É dependente se o valor TDC 1 é implementado modelo. Se não for implementada, um valor de 1 atua como se 2 foi especificado.
[0150] Para uma operação restrita, um valor TDC de 1 é tratado como se um valor de 2 TDC foi especificado.
[0151] Se um valor de 3 TDC é especificada, os resultados são imprevisíveis.
[0152] Transação diagnóstico Bloco de Endereço (TDBA)
[0153] O endereço de bloco de diagnóstico de transação válido (TDBA) é definido a partir do primeiro endereço do operando da transação mais externa BEGIN (TBEGIN) instrução quando o campo Bi da instrução é diferente de zero. Quando a CPU está no modo de registrador de acesso ou espaço principal, o TDBA designa um local no espaço do endereço principal. Quando a CPU está no espaço secundário, ou o modo de espaço nativo, o TDBA designa uma localização no espaço secundário ou endereço nativo, respectivamente. Quando DAT (Tradução de Endereços dinâmicos) está desligado, o TDBA designa um local no armazenamento real.
[0154] A TDBA é usada pela CPU para localizar o bloqueio diagnóstico transação - o chamado TDB especificado- TBEGIN - se a transação for abortada posteriormente. Os três bits mais à direita do TDBA são iguais a zero, o que significa que o TDB-TBEGIN é especificado em um limite de palavras duplas.
[0155] Quando o campo Bi de uma transação mais externa BEGIN (TBEGIN) instrução é zero, o endereço do bloco de diagnóstico transacional é inválido e não especificados pelo TBEGIN TDB é armazenado se a transação for abortada posteriormente.
[0156] Transaction Aborto PSW (TAPSW)
[0157] Durante a execução da operação BEGIN (TBEGIN) instrução quando a profundidade de aninhamento é inicialmente zero, a transação abortar PSW está definido para o conteúdo da PSW atual; e o endereço da instrução de operação abortar PSW designa a instrução sequencial seguinte (isto é, a instrução seguinte a TBEGIN mais exterior). Durante a execução do BEGIN TRANSACTION restrita instrução (TBEGINC) quando a profundidade de assentamento é inicialmente zero, a transação abortou PSW é definida como o conteúdo da PSW corrente, exceto que o endereço da instrução de operação abortar PSW designa a instrução TBEGIN (em vez de a próxima instrução sequencial seguindo o TBEGINC).
[0158] Quando uma transação é abortada, o código de condição na transação abortou PSW é substituído com um código que indica a severidade da condição de abortar. Posteriormente, se a operação foi abortada devido a causas que não resultam em uma interrupção, a PSW é carregado a partir da transação abortar PSW; se a operação foi abortada devido a causas que resultam em uma interrupção, a transação abortar PSW é armazenado como o velho PSW interrupção.
[0159] A transação abortar PSW não seja alterada durante a execução de qualquer interior BEGIN TRANSACTION instrução.
[0160] Assentamento Transação Profundidade (TND)
[0161] A profundidade de aninhamento de transação é, por exemplo, um valor não assinado de 16 bits que é incrementado cada vez que uma instrução Transaction Begin é completada com código de condição 0 e diminuído cada vez que uma instrução END TRANSACTION está concluída. A profundidade de aninhamento transação é zerado quando uma transação é abortada ou pela redefinição de CPU.
[0162] Numa concretização, um máximo de TND 15 é implementado.
[0163] Numa concretização, quando a CPU está no modo de execução transacional restrita, a profundidade de assentamento é uma transação. Além disso, embora o máximo TND pode ser representada como um valor de 4 bits, o TND é definido como sendo um valor de 16 bits para facilitar a sua inspeção no bloco de diagnóstico transação.
[0164] Transação diagnóstico bloco (TDB)
[0165] Quando uma transação é abortada, várias informações de status podem ser salvas em um bloco de transação de diagnóstico (TDB), como segue:
[0166] 1. TDB especificado-TBEGIN: Para que uma transação não restrita, quando o campo Bi da instrução TBEGIN mais exterior é diferente de zero, o primeiro operando endereço da instrução designa a TDB especificado-TBEGIN. Este é um programa de aplicação local especificado que pode ser examinado pelo manipulador de interrupção do aplicativo.
[0167] 2. Programa de interrupção (PI) TDB: Se uma transação é abortada não restrita devido a uma condição não- filtrada exceção de programa, ou se uma transação é abortada restritas devido a qualquer condição de exceção de programa (isto é, qualquer condição que resulte numa interrupção do programa que está sendo reconhecida), a PI-TDB é armazenado em locais na área de prefixo. Esta opção está disponível para o sistema operacional para inspecionar e fazer logout em qualquer relatório de diagnóstico que ele pode proporcionar.
[0168] 3. Intercepção TDB: Se a transação for anulada devido a qualquer exceção de programa condição que resulta na interceptação (isto é, a condição causa a execução interpretativa ao fim e controle para retornar ao programa de acolhimento), a TDB é armazenada em um local especificado na descrição do bloco de estado para o sistema operacional convidado.
[0169] O TDB especificado-TBEGIN só é armazenado, numa concretização, quando o endereço é válido TDB (isto é, quando o campo Bi da instrução TBEGIN mais exterior é diferente de zero).
[0170] Para abortar devido a condições de exceção programa não filtradas, apenas um, quer do PI-TDB ou Intercepção TDB será armazenado. Assim, não pode ser zero, um, dois ou TDBs armazenados para abortar.
[0171] Outros detalhes com respeito um exemplo de cada um dos TDBs são descritas a seguir:
[0172] Especificado pelo TBEGIN TDB: O local de 256 bytes especificado por uma transação válido endereço de bloco de diagnóstico. Quando o endereço do bloco de diagnóstico transação for válida, o TDB especificado-TBEGESf é armazenado em um aborto transação. A TDB TBEGESi- especificado está sujeito a todos os mecanismos de proteção de armazenamento que estão em vigor na execução da instrução TRANSACTION BEGIN mais externa. Um evento PER (Programa de Gravação de Evento) alteração de armazenamento para qualquer parte do TDB especificado-TBEGIN for detectado durante a execução do TBEGIN mais externa, e não durante a transação abortar o processamento.
[0173] Um dos propósitos do PER é para ajudar na depuração de programas. Ele permite que o programa a ser alertado para os seguintes tipos de eventos, como exemplos:
[0174] A execução de uma instrução de desvio de sucesso. A opção é fornecida de ter um evento ocorrer somente quando o local de destino de desvio está dentro da área de armazenamento designado.
[0175] Buscando de uma instrução a partir da área de armazenamento designado.
[0176] modificação do conteúdo da área de armazenagem designado. A opção é fornecida de ter um evento ocorrer somente quando a área de armazenamento está dentro de espaços de endereços designados.
[0177] Execução de uma Loja Utilizando instrução endereço real.
[0178] Execução da instrução TRANSACTION END.
[0179] O programa pode especificar que seletivamente um ou mais dos tipos de eventos acima ser reconhecido, exceto que o evento STORE utilizando o endereço real pode ser especificado apenas juntamente com o evento de alteração de armazenamento. A informação respeitante a um evento PER é fornecido para o programa, por meio de uma interrupção de programa, com a causa da interrupção a ser identificado no código de interrupção.
[0180] Quando a transação endereço de bloco de diagnóstico não é válido, uma TDB especificado-TBEGIN não é armazenada.
[0181] Programa-Interrupção TDB: localizações reais 6,144-6,399 (1800-18FF hex). A interrupção do programa TDB é armazenado quando uma transação é abortada devido a interrupção do programa. Quando uma transação é abortada devido a outras causas, o conteúdo do programa de interrupção TDB são imprevisíveis.
[0182] A interrupção do programa TDB não está sujeita a qualquer mecanismo de proteção. Eventos de alteração de armazenamento PER não são detectadas pela TDB interrupção do programa quando ele é armazenado durante uma interrupção do programa.
[0183] Intercepção TDB: O host real localização de 256 bytes especificado por locais 488-495 da descrição do estado. A interceptação TDB é armazenado quando uma transação anulada resulta em uma interceptação interrupção do programa convidado (isto é, o código de interceptação 8). Quando uma transação é abortada devido a outras causas, o conteúdo da intercepção TDB são imprevisíveis. O TDB intercepção não está sujeito a qualquer mecanismo de proteção.
[0184] Conforme representado na figura 9, os campos de um bloco de transação 900 de diagnóstico são como se segue, numa concretização:
[0185] Format 902: Byte 0 contém uma indicação de validade e formato, como segue:
[0186] Valor Significado 0 Os restantes campos da TDB são imprevisíveis. 1 1 Um Format- TDB, os campos restantes dos quais são descritos abaixo. 2-255 Reservado
[0187] Uma TDB na qual o campo de formato é zero, é referido como uma TDB nula.
[0188] Sinalizadores 904: Byte 1 contém várias indicações, como segue:
[0189] Conflito token Validade (CTV): Quando uma transação é abortada devido a um conflito busca ou armazenamento (ou seja, abortar códigos de 9 ou 10, respectivamente), o bit 0 de byte 1 é a indicação de validade token de conflito. Quando a indicação é um CTV, o conflito token de 910 bytes em 16-23 da TDB conter o endereço lógico em que o conflito foi detectado. Quando a indicação CTV é zero, os bytes 16-23 de TDB são imprevisíveis.
[0190] Quando uma transação é abortada devido a qualquer outra razão que não um conflito de busca ou armazenamento, o bit 0 de byte 1 é armazenado como zero.
[0191] Restrita-Transaction Indicação (CTI): Quando a CPU está no modo de execução transacional restrita, o bit 1 de 1 byte é definido como um. Quando a CPU está no modo de execução transacional não restrita, o bit 1 de 1 byte está definido para zero.
[0192] Reservado: Bits 2-7 de 1 byte são reservados, e armazenados como zeros.
[0193] Transação Profundidade do assentamento (TND) 906: 6-7 Bytes conter a profundidade de aninhamento de transação quando a operação foi abortada.
[0194] Transaction Aborto Código (TAC) 908: 8-15 Bytes conter uma transação não assinado de 64 bits abortar código. Cada ponto de código indica uma razão para uma transação que está sendo abortado.
[0195] Ela é dependente se o modelo de abortar transação código é armazenado no programa TDB interrupção quando uma transação é abortada devido a outros do que uma interrupção do programa condições.
[0196] Conflito de Token 910: Para transações que são abortadas devido a busca ou armazenamento de conflito (ou seja, abortar códigos 9 e 10, respectivamente), bytes 16-23 conter o endereço lógico do local de armazenamento no qual foi detectado o conflito. O token de conflito é significativo quando o bit CTV, o bit 0 de byte 1, é um deles.
[0197] Quando o bit é zero CTV, bytes 16-23 são imprevisíveis.
[0198] Por causa da execução especulativa pela CPU, o token de conflito pode designar um local de armazenamento que não seria necessariamente ser acessado por sequência de execução conceptual da transação.
[0199] Aborted Endereço Instrução Transação (ATIA) 912: 24-31 Bytes conter um endereço de instrução que identifica a instrução que estava sendo executado quando um aborto foi detectado. Quando uma transação é abortada devido a abortar códigos 2, 5, 6, 11, 13 ou 256 ou superior, ou quando uma transação é abortada devido a abortar códigos 4 ou 13 e a condição de exceção programa está anulando, a ATIA aponta diretamente para a instrução de que estava a ser executada. Quando uma transação é abortada devido a abortar códigos de 4 ou 12, e a condição de exceção programa não está anulando, os pontos Atia últimos a instrução que estava sendo executado.
[0200] Quando uma transação é abortada devido a abortar códigos 7-10, 14-16, ou 255, o ATIA não indica necessariamente a instrução exata causando a abortar, mas pode apontar para uma instrução cedo ou mais tarde dentro da transação.
[0201] Se uma transação é abortada devido a uma instrução que é o alvo de uma instrução tipo execute-, o ATIA identifica a executar instruções do tipo, seja apontando para a instrução ou passado, de acordo com o código de interrupção, como descrito acima. O ATIA não indica o alvo da instrução executar -tipo.
[0202] A ATIA está sujeito ao modo de endereçamento quando a transação for anulada. No modo de endereçamento de 24 bits, os bits 0-40 do campo conter zeros. No modo de endereçamento de 31 bit, os bits 0-32 do campo conter zeros.
[0203] É dependente se o endereço de instrução transação anulada é armazenada no programa de interrupção TDB quando uma transação é abortada devido a outros do que uma interrupção do programa condições modelos.
[0204] Quando uma transação é abortada devido a abortar código de 4 ou 12, e a condição de exceção programa não está anulando, a ATIA não aponta para a instrução fazendo com que a abortar. Subtraindo-se o número de meias palavras indicado pelo código de comprimento interrupção (ILC) do ATIA, a instrução causando a anulação pode ser identificado em condições que suprimem ou terminação, ou por eventos não- PER que estão completando. Quando uma transação é abortada devido a um evento por, e nenhuma outra condição de exceção programa está presente, o ATIA é imprevisível.
[0205] Quando o endereço do bloco de diagnóstico transação for válida, o ILC pode ser examinado na identificação exceção de programa (PUD) em bytes 36-39 da TDB especificado-TBEGIN. Ao filtrar não se aplica, o ILC pode ser examinado à DPU no local 140-143 no armazenamento real.
[0206] Exceção de acesso Identificação (eaid) 914: Para transações que são abortadas devido a determinadas condições de exceção programa filtrados, byte 32 da TDB especificado-TBEGIN contém a identificação de acesso de exceção. Num exemplo da arquitetura z/Architecture, o formato do eaid, e os casos em que é armazenado, são os mesmos que os descritos na localização real 160, quando a condição de exceção resulta numa interrupção, como descrito na acima incorporada por princípios de referência da Operação.
[0207] Para transações que são abortados por outras razões, incluindo quaisquer condições de exceção que resultam em uma interrupção do programa, byte 32 é imprevisível. Byte 32 é imprevisível na TDB interrupção do programa.
[0208] Este campo é armazenado apenas na TDB designado pelo bloco de diagnóstico transação endereço; caso contrário, o campo é reservado. O eaid é armazenado somente para lista de acesso controlado ou proteção DAT, do tipo ASCE, página de tradução, região primeira tradução, tradução segunda região, a região terceira tradução, e tradução segmento de condições de exceção programa.
[0209] Código de exceção de Dados (DXC) 916: Para transações que são abortadas devido a condições de exceção programa exceção dados filtrados, byte 33 da TBEGIN especificado TDB contém o código de exceção de dados. Num exemplo da arquitetura z/Architecture, o formato do DXC, e os casos em que é armazenado, são os mesmos que os descritos na localização real 147, quando a condição de exceção resulta numa interrupção, como descrito na acima incorporada por princípios de referência da Operação. Num exemplo, localização 147 inclui o DXC.
[0210] Para transações que são abortados por outras razões, incluindo quaisquer condições de exceção que resultam em uma interrupção do programa, byte 33 é imprevisível. Byte 33 é imprevisível na TDB interrupção do programa.
[0211] Este campo é armazenado apenas na TDB designado pelo bloco de diagnóstico transação endereço; caso contrário, o campo é reservado. O DXC é armazenado somente para condições de exceção programa dados.
[0212] Programa de Interrupção Identificação (PUD) 918: Para transações que são abortadas devido a condições de exceção programa filtrados, bytes 36-39 da TDB especificado- TBEGIN conter a identificação interrupção do programa. Num exemplo da arquitetura z/Architecture, o formato do PUD é o mesmo que o descrito em locais reais 140-143 quando a condição resulta em uma interrupção (tal como descrito na anteriormente incorporada por referência Princípios de funcionamento), com exceção de que o código de comprimento de instruções em bits 13-14 do PUD é respectivo para a instrução no qual foi detectada a condição de exceção.
[0213] Para transações que são abortados por outras razões, incluindo condições de exceção que resultam em uma interrupção do programa, bytes 36-39 são imprevisíveis. Bytes 36-39 são imprevisíveis na TDB interrupção do programa.
[0214] Este campo é armazenado apenas na TDB designado pelo bloco de diagnóstico transação endereço; caso contrário, o campo é reservado. A identificação interrupção programa só é armazenada para as condições de exceção do programa.
[0215] Tradução Exceção Identificação (TEID) 920: Para transações que são abortadas devido a qualquer uma das seguintes condições de exceção programa filtrados, bytes 4047 do TBEGIN- especificado TDB conter a identificação exceção tradução.
[0216] Lista de acesso proteção DAT controlada ou
[0217] tipo ASCE
[0218] Tradução Página
[0219] Região-primeira tradução
[0220] Região de segunda tradução
[0221] Região terço tradução
[0222] exceção tradução Segmento
[0223] Em um exemplo da arquitetura z/Architecture,o formato da TEID é a mesma que a descrito em localizações reais 168-175 quando a condição resulta em uma interrupção, tal como descrito na anteriormente incorporada por referência Princípios de funcionamento.
[0224] Para transações que são abortados por outras razões, incluindo condições de exceção que resultam em uma interrupção do programa, bytes 40-47 são imprevisíveis. Bytes 40-47 são imprevisíveis na TDB interrupção do programa.
[0225] Este campo é armazenado apenas na TDB designado pelo bloco de diagnóstico transação endereço; caso contrário, o campo é reservado.
[0226] Quebrando Evento Morada 922: Para transações que são abortadas devido a condições de exceção programa filtrados, bytes 48-55 da TDB especificado-TBEGIN conter o endereço do evento de ruptura. Num exemplo da arquitetura z/Architecture, o formato do endereço do evento de ruptura é a mesma que a descrita em locais reais 272-279 quando a condição resulta em uma interrupção, tal como descrito na anteriormente incorporada por referência Princípios de funcionamento.
[0227] Para transações que são abortados por outras razões, incluindo condições de exceção que resultam em uma interrupção do programa, bytes 48-55 são imprevisíveis. Bytes 48-55 são imprevisíveis na TDB interrupção do programa.
[0228] Este campo é armazenado apenas na TDB designado pelo bloco de diagnóstico transação endereço; caso contrário, o campo é reservado.
[0229] Mais detalhes relativos a eventos de ruptura são descritos abaixo.
[0230] Numa concretização da arquitetura z/Architecture, quando a instalação de PER-3 está instalada, fornece o programa com o endereço DAS últimAS instruções para causar uma ruptura na execução sequencial da CPU. Quebrando evento gravação endereço pode ser usado como uma depuração auxiliar para a detecção ramo selvagem. Esta instalação fornece, por exemplo, um registrador de 64 bits na CPU, chamada de registro de endereço evento de ruptura. Cada vez que uma instrução diferente de abortar transação provoca uma quebra na execução da instrução sequencial (isto é, o endereço da instrução no PSW for substituído, em vez de incrementado pelo comprimento da instrução), o endereço de que a instrução está colocada na quebra endereço de registro de eventos. Sempre que ocorre uma interrupção de programa, ou não PER é indicado, o conteúdo atual do cadastro de endereços evento de ruptura são colocados em locais de armazenamento reais 272-279.
[0231] Se a instrução fazendo com que o evento de ruptura é o alvo de uma execução do tipo de instruções (EXECUTAR ou executar RELATIVA LONG), então o endereço de instrução usado para buscar a instrução do tipo executar é colocado no registro de endereço evento de ruptura.
[0232] Numa concretização da arquitetura z/Architecture, um evento de ruptura é considerado ocorrer sempre que uma das seguintes instruções faz com ramificação: BRANCH AND LINK (BAL, BALR); BRANCH AND SAVE (BAS, BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH AND STACK (BAKR); BRANCH ON 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, CLGU).
[0233] Um evento de quebra também é considerado para ocorrer sempre que uma das seguintes instruções completa: 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).
[0234] Um evento de quebra não é considerado para ocorrer como resultado de (instrução de forma implícita ou como resultado da transação abortar) uma transação que está sendo abortado.
[0235] Modelo Dependente informações de diagnóstico 924: 112-127 Bytes conter informações de diagnóstico modelo dependente.
[0236] Para todos os códigos, exceto 12 (interrupçãodo programa filtrada) abortar, o modelo dependente informações de diagnóstico é salvo em cada TDB que está armazenado.
[0237] Numa concretização, o modelo de informações de diagnóstico dependente inclui o seguinte:
[0238] Bytes 112-1 19 conter um vetor de 64 bits chamado as indicações filial execução transacionais (TXBI). Cada um dos primeiros 63 bits do vector indica os resultados da execução de uma instrução de ramificação, enquanto a CPU estava no modo de execução de transação, como se segue:
[0239] Valor Significado
[0240] A instrução concluída sem ramificação.
[0241] 1 A instrução concluída com ramificação.
[0242] O bit 0 representa o resultado da primeira instrução de ramificação tal, o bit 1 representa o resultado do segundo tal instrução, e assim por diante.
[0243] Se menos do que 63 instruções de ramificação foram executados enquanto a CPU estava no modo de execução de transação, os bits mais à direita que não correspondem às instruções ramificadas são definidas como incluindo zeros (63 bits). Quando mais de 63 instruções de desvio foram executadas, bit 63 do TXBI está definido para um.
[0244] Bits no TXBI são definidas por instruções que são capazes de provocar um evento de ruptura, conforme listado acima, exceto para o seguinte:
[0245] Qualquer instrução restrita não causar um pouco para ser definido no TXBI.
[0246] - Para instruções de, por exemplo, na z/Architecture, quando o campo do BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, or BRANCH RELATIVE ON CONDITION LONG instrução LONGO é zero, ou quando o campo R2 das seguintes instruções é zero, ele é dependente modelo se a execução da instrução provoca um pouco para ser definido no TXBI.
[0247] BRANCH AND LINK (BALR);BRANCH AND SAVE(BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); and BRANCH ON COUNT (BCTR,BCTGR)
[0248] Para abortar condições que foram causadas por uma exceção de acesso ao host, posição de bit 0 de byte 127 é definido como um. Para todas as outras condições de abortagem, bit 0 de byte posição 127 está definido para zero.
[0249] Para abortar condições que foram detectados pela unidade de carga / loja (LSU), os mais à direita cinco pedaços de byte 127 conter a indicação da causa. Para abortar condições que não foram detectados pela LSU, byte 127 é reservado.
[0250] Geral Registradores 930: 128-255 Bytes conter o conteúdo de registradores gerais 0-15 no momento da operação foi abortada. Os registros são armazenados em ordem crescente, começando com registrador geral 0 em bytes 128135, registro geral 1 em bytes 136-143, e assim por diante.
[0251] Reservado: Todos os outros campos são reservados. A menos que indicado de outra forma, o conteúdo dos campos reservados são imprevisíveis.
[0252] Conforme observado por outros CPUs eo subsistema de I/O, armazenamento da TDB (s) durante uma transação abortar é uma referência de acesso múltiplo que ocorre após todas as armazenamentos não-transacionais.
[0253] Uma operação pode ser abortada devido a causas que estão fora do âmbito da configuração de imediato em que ele executa. Por exemplo, eventos transitórios reconhecidos por um hypervisor (como LPAR ou z / VM) pode causar uma transação a ser anulada.
[0254] A informação fornecida no bloco de diagnóstico transação é destinado para fins de diagnóstico e é substancialmente correta. No entanto, porque um aborto pode ter sido causado por um evento fora do âmbito da configuração imediata, informações como o código de abortar ou identificação interrupção do programa pode não refletir com precisão as condições dentro da configuração, e, portanto, não deve ser usado para determinar a ação programa.
[0255] Além da informação de diagnóstico salva naTDB, quando uma transação é abortada devido a qualquer condição de exceção programa exceção de dados e tanto a AFP cadastre-controle, bit 45 do controle de registro 0, e o efetivo permitem flutuante de controle de operação ponto ( F) são um, o código de exceção de dados (DXC) é colocado no byte 2 do registro de controle de ponto flutuante (FPCR), independentemente de filtragem aplica-se à condição de exceção programa. Quando uma transação é abortada, e um ou ambos da AFP controle registar ou eficaz de controle de operação ponto flutuante permitem são zero, o DXC não écolocado no FPCR.
[0256] Numa concretização, tal como é aqui indicado, quando a instalação de execução da transação for instalada, são fornecidas as seguintes instruções gerais.
[0257] EXTRACT TRANSACTION NESTING DEPTH
[0258] NONTRANSACTIONAL STORE
[0259] TRANSACTION ABORT
[0260] TRANSACTION BEGF
[0261] TRANSACTION END
[0262] Quando a CPU está no modo de execuçãotransacional, tentativa de execução de certas instruções é restrito e faz com que a operação seja anulada.
[0263] Quando emitido no modo de execução transacional restrita, tentativa de execução de instruções restritas também pode resultar em uma interrupção do programa restrição de operação, ou pode resultar em processo de execução, como se a transação não foi restringida.
[0264] Em um exemplo do z/Architecture, instruções restritas incluem, por exemplo, as seguintes instruções não privilegiadas: Compare e SWAP e armazenar; COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), quando o código no campo Mi é de 6 ou 7; ARMAZENAR PERSONAGENS sob máscara ALTA, quando o campo M3 é zero e o código no campo Ri é de 6 ou 7; LOJA DE LISTA DA INSTALAÇÃO DE EXTENSÃO; LOJA RUNTIME INSTRUMENTAÇÃO Controles; SUPERVISOR DE CHAMADA; e TEST RUNTIME INSTRUMENTATION controles.
[0265] Na lista acima, compare e SWAP e armazenar e executar a operação BLOQUEADO são instruções complexas que podem ser implementadas de forma mais eficiente com o uso de instruções básicas no modo de TX. Os casos de PREFETCH DATA e PREFETCH dados relativos LONGO são restritos como os códigos de 6 e 7 de liberação de uma linha de cache, necessitando o empenho dos dados potencialmente antes da conclusão de uma transação. SUPERVISOR CALL é restrito uma vez que provoca uma interrupção (que faz com que uma transação seja abortada).
[0266] Sob as condições listadas abaixo, as seguintes instruções são restritas:
[0267] FILIAL E LINK (BALR), agência e SAVE (basr) e ramificação E SALVAR E MODO SET, quando o campo da instrução R2 é diferente de zero e rastreamento ramo está habilitado.
[0268] RAMO E SALVAR E MODO SET e FILIAL E MODO SET, quando o campo R2 é diferente de zero e rastreamento modo é habilitado; SET modo de endereçamento, quando o rastreamento de modo está ativado.
[0269] monitor de chamada, quando uma condição deevento monitor é reconhecido.
[0270] A lista acima inclui instruções que podem formar entradas de rastreio. Se estas instruções foram autorizadas a executar entradas de rastreio Transacionalmente e formadas, e a transação abortada subsequentemente, o ponteiro tabela de rastreio no registrador de controle 12 seria avançada, mas os armazenamentos para a tabela de rastreio seriam descartados. Isto deixaria uma lacuna inconsistentes na tabela de rastreio; assim, as instruções são restritas nos casos em que eles formam entradas de rastreio.
[0271] Quando a CPU está no modo de execução transacional, é dependente se as seguintes instruções são restritas modelo: 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; and RUNTIME INSTRUMENTATION ON.;
[0272] Realizar cálculos CRYPTOGRAPHIC; RUNTIME INSTRUMENTATION OFF; e tempo de execução INSTRUMENTOS ON.
[0273] Cada uma das instruções acima ou é atualmente implementado pelo coprocessador de hardware, ou foi em máquinas do passado e, portanto, é considerado restrito.
[0274] Quando a (A) um controle efetivo permitir a modificação AR é zero, as seguintes instruções são restritas: cópia de acesso; CARGA DE ACESSO MÚLTIPLO; CARGA Endereço Estendido; e defina o acesso.
[0275] Cada uma das instruções acima faz com que o conteúdo de um registrador de acesso a ser modificado. Se o Um controle na instrução Transaction Begin é zero, então o programa indicou explicitamente que a modificação do registrador de acesso não deve ser permitida.
[0276] Quando a permitir a operação eficaz do ponto de controle (F) flutuante é zero, instruções de ponto flutuante são restritas.
[0277] Em determinadas circunstâncias, as instruções a seguir podem ser restringidas: TIME EXTRATO CPU; EXTRATO PSW; LOJA DE DISPARO; LOJA DE PULSO DE EXTENSÃO; e LOJA DE DISPARO RÁPIDO.
[0278] Cada uma das instruções acima está sujeita a um controle de interceptação na descrição interpretativa estado de execução. Se o hipervisor não definiu o controle de interceptação para estas instruções, em seguida, sua execução pode ser prorrogada devido à implementação hipervisor; Assim, eles são considerados restrito, se ocorre uma intercepção.
[0279] Quando uma transação não restrita é abortada por causa da tentativa de execução de uma instrução restrito, a transação abortar código na transação bloco de diagnóstico é definido como 1 1 (instrução restrita), e o código de condição é definido para 3, com as seguintes exceções : quando uma transação não restrita é abortada devido à tentativa de execução de uma instrução que de outro modo resultar em uma exceção operação privilegiada, é imprevisível se o código de interrupção é definido como 1 1 (instrução restrito) ou 4 (interrupção do programa não filtrada resultante da reconhecimento da interrupção do programa operação privilegiada). Quando uma transação não restrita é abortada devido à tentativa de execução de PREFETCH DATA (relativo LONG) quando o código no campo Mi é de 6 ou 7 ou armazenar caracteres sob máscara ALTA quando o campo M3 é zero eo código no campo Ri é 6 ou 7, é imprevisível se o código de interrupção é definido como 1 1 (instrução restrito) ou 16 (cache de outro). Quando uma transação não restrita é abortada devido à tentativa de execução de monitor de chamada, e tanto a condição de evento monitor e uma condição de exceção especificação estão presentes é imprevisível se o código de interrupção está definido para 11 ou 4, ou, se a interrupção do programa é filtrada, 12.
[0280] Instruções adicionais podem ser restringido em uma transação restrita. Embora estas instruções não estão atualmente definidas para ser restringida em uma transação não restrita, elas podem ser impedidas, em determinadas circunstâncias, em uma transação não restrita em processadores futuras.
[0281] Certas instruções restritas podem ser permitidas no modo de execução transacional em futuros processadores. Portanto, o programa não deve contar com a transação que está sendo abortado devido à tentativa de execução de uma instrução restrito. A instrução aborto transação deve ser usada para causar de forma confiável uma transação a ser anulada.
[0282] Em uma transação não restrita, o programa deve fornecer um caminho de código não transacional alternativa para acomodar uma transação que aborta devido a uma instrução restrito.
[0283] Em operação, quando a profundidade de aninhamento de transação for zero, a execução do BEGIN TRANSACTION (TBEGIN) instrução resultando em código de condição de zero faz com que a CPU para entrar no modo de execução transacional não restrita. Quando a profundidade de aninhamento transação é zero, a execução da Transaction Begin restrita instrução (TBEGINC), resultando em código de condição de zero faz com que a CPU para entrar no modo de execução transacional restrita.
[0284] Exceto quando expressamente indicado em contrário, todas as regras que se aplicam para a execução não transacional também se aplicam a execução transacional. Estes são características adicionais de processamento, enquanto a CPU está no modo de execução transacional.
[0285] Quando a CPU está no modo de execução transacional não restrita, a execução da instrução BEGIN TRANSACTION resultando em código de condição de zero faz com que a CPU para permanecer no modo de execução transacional não restrita.
[0286] Como observado pelo CPU, buscas e armazenamentos feitos no modo de execução de transações não são diferentes do que as feitas enquanto não estiver em modo de execução transacional. Como observado por outros CPUs e pelo subsistema de I/O, todos operando de armazenamento acessos feitos enquanto uma CPU está no modo de execução transacional parecem ser um único acesso simultâneo bloco. Ou seja, os acessos para todos os bytes dentro de uma meia palavra, palavra, doubleword, ou quadword são especificados para parecer ser de componente simultâneo como observado por outros processadores e (por exemplo, programas de canal) de I/O. O halfword, palavra, doubleword, ou quadword é referido nesta secção como um bloco. Quando é especificada uma referência do tipo buscar a aparecer para ser concorrente dentro de um bloco, sem acesso à loja para o bloco por outra CPU ou de I/O programa é permitido durante o tempo em que os bytes contidos no bloco estão sendo procurados. Quando uma referência loja do tipo é especificado a aparecer para ser concorrente dentro de um bloco, sem acesso ao bloco, quer buscar ou loja, é permitida por outra CPU ou programa I/O durante o tempo em que os bytes dentro do bloco estão sendo armazenados.
[0287] Armazenamento acessos para instrução e DAT e ART (Acesso Register Tabela) Mesa de busca seguir as regras não-transacionais.
[0288] A CPU deixa o modo de execução transacional normalmente por meio de um Instrução END TRANSACTION que faz com que a profundidade de aninhamento de transação para a transição para zero, caso em que, a transação seja concluída.
[0289] Quando a CPU deixa o modo de execução transacional por meio da conclusão de uma instrução TRANSACTION END, todas os armazenamentos feitos enquanto no modo de execução transacional estão comprometidos; isto é, as armazenamentos parecem ocorrer como um único bloco de operação concorrente como observado por outros CPU e o subsistema I/O.
[0290] Mais detalhes sobre o processamento associado com transações restritas e não restrita, incluindo o processamento associado a iniciar uma transação via TBEGINC e TBEGIN, respectivamente, são fornecidos abaixo.
[0291] Em um exemplo, o processamento associado a iniciar uma transação condicionados pela, por exemplo, TBEGINC é, como se segue:
[0292] Se já no modo restrito-TX, uma exceção de restrição de operação é reconhecida.
[0293] Se a corrente de TND (Transaction Profundidade do assentamento)> 0, a execução prossegue como se transação não restrita
[0294] o controle efetivo F definido como zero
[0295] o PIFC eficaz mantém-se inalterado
[0296] Permite o exterior não restrita TX para chamar a função de serviços que podem ou não podem usar restrita TX.
[0297] Se TND atual = 0:
[0298] o Transaction endereço de bloco de diagnóstico é inválido
[0299] - No TDB especificado-instrução armazenada emabort
[0300] o Transaction-aborto PSW conjunto de endereço do TBEGINC
[0301] - Não é a próxima instrução sequencial
[0302] o pares General-registrador designado pela GRSM salvo em um local dependente do modelo não acessível por programa
[0303] O símbolo Transação opcionalmente formado (de D2 operando). O símbolo transação é um identificador da transação. Pode ser igual ao endereço do operando de armazenamento ou outro valor.
[0304] Eficaz A = TBEGINC A & A qualquer exterior
[0305] TND incrementado
[0306] o Se transições TND de 0 a 1, CPU entra no modo de TX restrito
[0307] o Caso contrário, CPU permanece no modo de TX não restrita
[0308] Instrução completa com CCO
[0309] Exceções:
[0310] o Especificação de exceção (PIC (ProgramaCódigo Interrupção) 0006) se o campo Bi é diferente de zero
[0311] o exceção Especial operação (PIC 0013 hex) se o controle de transações de execução (CR0.8) é zero
[0312] o exceção de restrição Transação (PIC 0018 hex) se emitido no modo de TX restrito
[0313] o exceção de operação (PIC 0001), se a instalação de execução transacional restrita não está instalado
[0314] H Executar exceção (PIC 0003) se a instrução é o alvo de uma instrução executar -tipo
[0315] Abortar o código 13 se a profundidade de aninhamento excedido
[0316] Abortar condições em operação restrita:
[0317] o Aborto PSW aponta para instrução TBEGINC
[0318] Não é a instrução que se lhe segue
[0319] Abortar condição provoca TX inteira para serre-driven• Não deixar caminho
[0320] o CPU toma medidas especiais para garantir a conclusão bem-sucedida em re-drive
[0321] o Supondo que nenhum conflito persistente, interromper ou restrita violação, o transação é assegurada de uma eventual conclusão.
[0322] Violação de restrição:
[0323] o PIC 0018 hex - indica violação de restrição de operação o Ou, transação é executado como se não restrita
[0324] Além disso, numa concretização, o processamento associado a iniciar uma transação não restrita através de, por exemplo, TBEGIN é, como se segue:
[0325] Se TND = 0:
[0326] o Bi Se ^ 0, a transação de diagnóstico endereço de bloco definido a partir de primeiro endereço operando.
[0327] o de abortar transacção PSW definido para a próxima instrução sequencial endereço.
[0328] o pares de registro gerais Campo byh designados são salvos na modelagem de localização dependente.
[0329] - Não é diretamente acessível pelo programa
[0330] PIFC eficaz, A & F controles computadorizada
[0331] o eficaz A = TBEGIN A & A qualquer exterior
[0332] o efetivo F = TBEGIN F & F qualquer exterior
[0333] o efetivo PIFC = max (TBEGIN PIFC, qualquerPIFC exterior)
[0334] profundidade de aninhamento de transação(TND) incrementado
[0335] Se transições TND de 0 a 1, CPU entra no modo de execução transacional
[0336] Código de Condição definido como zero
[0337] o Quando instrução seguinte TBEGIN recebecontrole:
[0338] - o sucesso TBEGIN indicado por CC0
[0339] - Aborted transação indicado pelo CCdiferente de zero
[0340] Exceções:
[0341] o Aborto código 13 se a profundidade deaninhamento excedido
[0342] exceção o Access (um dos vários PICs) se o campo é Bi diferente de zero, e o operando de armazenamento não podem ser acessados por uma operação de loja
[0343] o Executar exceção (PIC 0003) se a instruçãoTBEGIN é o alvo de uma execução do tipo de instruções
[0344] o Operação exceção (PIC 0001), se a instalação de execução transacional não está instalado
[0345] o PIC 0006 se qualquer
[0346] - PIFC é inválido (valor de 3)
[0347] - endereço do segundo operando não doublewordalinhados
[0348] o PIC 0013 hex se o controle transacionalexecução (CR0.8) é zero
[0349] o PIC 0018 hex se emitido no modo de TXrestrito
[0350] Uma operação pode ser abortada implicitamente para uma variedade de causas, ou pode ser explicitamente anulada pela instrução de abortar transação. Exemplo causas possíveis de uma operação de abortar, o código de interrupção correspondente, e o código de condição que é colocado no abortar transação PSW são descritos abaixo.
[0351] A interrupção externa: A transação abortar código é definido como 2, e o código de condição na transação abortar PSW está definido para 2. A transação abortar PSW é armazenado como o velho PSW externa como parte do processamento de interrupção externa.
[0352] Programa de Interrupção (não filtrada): A condição de exceção programa que resulta em uma interrupção (isto é, uma condição não filtrada) faz com que a transação seja abortada com código 4. O código de condição na transação abortar PSW está definido específico para o programa código de interrupção. A transação abortar PSW é armazenado como o programa velho PSW como parte do processamento de interrupção do programa.
[0353] Uma instrução que de outro modo resultar em uma transação sendo anulada devido a uma exceção de operação pode produzir resultados alternativos: para uma transação não restrita, a transação pode abortar com código em vez de abortar 1 1 (instrução restrito); para uma transação restrita, uma interrupção do programa restrição transação pode ser reconhecida em vez da exceção de operação.
[0354] Quando um PER (Programa de Gravação de Evento) evento é reconhecido em conjunto com qualquer outra condição de exceção programa não filtrada, o código de condição é definido para 3.
[0355] Machine Check Interrupção: A transação abortar código é definido como 5, eo código de condição na transação abortar PSW está definido para 2. A transação abortar PSW é armazenado como a verificação de máquina velha PSW como uma parte de cheque processamento interrupção máquina .
[0356] I/O interrupção: A abortar transacção código é definido como 6, e o código de condição na transacção abortou PSW é ajustado para 2. A operação abortar PSW é armazenado como o I/O velho PSW como uma parte de I/O processamento de interrupção.
[0357] Fetch Overflow: Uma buscar condição de estouro é detectado quando a transação tenta buscar a partir de mais locais do que os suportes da CPU. A transação abortar código está definido para 7, eo código de condição é definido para 2 ou 3.
[0358] Loja Overflow: Uma condição loja estouro é detectado quando a transação tenta armazenar para mais locais do que os suportes da CPU. A transação abortar código é definido como 8, e o código de condição é definido para 2 ou3.
[0359] Permitir que o código de condição para ser 2 ou 3, em resposta a uma busca ou armazenamento de estouro aborto permite que a CPU para indicar situações potencialmente repetível (por exemplo, o código de condição 2 indica re-execução da operação pode ser produtivo, enquanto código de condição 3 não recomendo re-execução).
[0360] Fetch Conflito: Uma condição buscar conflito é detectado quando outra CPU ou o I/O subsistema tenta armazenar em um local que foi de forma transacional buscado por este processador. O código de abortar transação é ajustado para 9, e o código de condição é ajustado para 2.
[0361] Conflito da loja: A condição loja conflito é detectado quando outra CPU ou o I/O subsistema tenta acessar um local que foi armazenado durante a execução transacional por este processador. O código de abortar transação é ajustado para 10, e o código de condição é ajustado para 2.
[0362] Instrução Restrito: Quando a CPU está no modo de execução transacional, tentativa de execução de uma instrução restrita faz com que a operação seja anulada. O código de abortar transação é ajustado para 11, e o código de condição é ajustado para 3.
[0363] Quando a CPU está no modo de execução transacional restrita, é imprevisível se a tentativa de execução de um resultado de instrução de acesso restrito em uma interrupção do programa restrição transação ou um aborto devido a uma instrução restrito. A transação ainda é abortada, mas o código de interrupção pode indicar qualquer causa.
[0364] Exception Programa de Condição (filtrado): A condição de exceção programa que não resultar em uma interrupção (isto é, uma condição filtrada) faz com que a transação seja abortada com uma transação abortar código de 12. O código de condição é definido para 3.
[0365] Profundidade do assentamento Excedeu: A profundidade do assentamento excedeu condição é detectada quando a profundidade de aninhamento de transação está no valor máximo permitido para a configuração, e uma Transaction Begin instrução é executada. A transação é abortada com um código de abortar transação, de 13, e o código de condição é definido para 3.
[0366] Cache Fetch condição relacionada: Uma condição relacionada com locais de armazenamento buscados pela transação é detectada pelo circuito de cache da CPU. A transação é abortada com uma transação abortar código de 14, e o código de condição é definido para 2 ou 3.
[0367] Loja Cache condição relacionada: Uma condição relacionada com locais de armazenamento armazenados pela transação é detectada pelo circuito de cache da CPU. A transação é abortada com uma transação abortar código de 15, e o código de condição é definido para 2 ou 3.
[0368] Cache Outro Condição: Um cache outra condição é detectada pelo cache da CPU circuitos. A transação é abortada com uma transação abortar código de 16, e o código de condição é definido para 2 ou 3.
[0369] Durante a execução transacional, se a CPU acessa instruções ou operandos de armazenamento usando diferentes endereços lógicos que são mapeados para o mesmo endereço absoluto, é dependente se a transação for anulada modelo. Se a transação é abortada devido aos acessos usando diferentes endereços lógicos mapeados para o mesmo endereço absoluto, abortar código 14, 15, ou 16 é ajustado, dependendo da condição.
[0370] Diversos Estado: A condição é variado qualquer outra condição reconhecida pelo CPU que faz com que a transação para abortar. A transação abortar código é 255 e o código de condição é definido para 2 ou 3.
[0371] Quando várias configurações estão executando na mesma máquina (por exemplo, partições lógicas ou máquinas virtuais), uma operação pode ser abortada devido a um controle externo da máquina ou I/O interrupção que ocorreu em uma configuração diferente.
[0372] Embora exemplos são fornecidos acima, outras causas de uma transação abortar com pode ser fornecido correspondente aborto códigos e códigos de condição. Por exemplo, uma causa pode ser uma Interrupção de reinicialização, em que o código de abortar transação é ajustado para 1, e o código de condição na transação abortou PSW é ajustado para 2. A PSW abortar transação é armazenada como o PSW reinicialização de idade como um parte do processamento de reinício. Como um exemplo adicional, uma causa pode ser uma condição chamada de supervisor, em que o código de interrupção está definido para 3, e o código de condição na transação abortou PSW é definido como 3. Outros exemplos ou diferentes são também possíveis.
[0373] Notas:
[0374] 1. A condição variado pode resultar dequalquer dos seguintes procedimentos:
[0375] Instruções, tais como, no z/Architecture,compare e REPLACE DAT
[0376] Tabela de entrada, comparar e trocar e PURGE,invalidar DAT tabela de entrada, INVALIDATE PAGE tabela de entrada, executar a função GESTÃO quadro no qual o controle NQ é zero e o controle SK é um, SET STORAGE chave estendida em que o controle NQ é zero, realizada por outro processador na configuração; o código de condição é definido como 2.
[0377] Uma função de operador, como reinicialização, reiniciar ou parar, ou o sinal equivalente PROCESSADOR ordem é executada na CPU.
[0378] Qualquer outra condição não enumerada acima; o código de condição é definido como 2 ou 3.
[0379] 2. O local no qual buscar e armazenar os conflitos são detectados podem estar em qualquer lugar dentro da mesma linha de cache.
[0380] 3. Sob certas condições, a CPU pode não ser capaz de distinguir entre as condições de abortagem semelhantes. Por exemplo, uma busca ou armazenamento de estouro pode ser indistinguível de um respectivo conflito buscar ou loja.
[0381] 4. Execução especulativa de vários caminhos de instrução por parte da CPU pode resultar em uma transação que está sendo abortado devido a condições de conflito ou estouro, mesmo que tais condições não ocorrem na sequência conceitual. Enquanto no modo de execução transacional restrita, a CPU pode inibir temporariamente especulativo execução, permita que a operação para tentar completar sem detectar tais conflitos ou estouros especulativamente.
[0382] Quando várias condições abortar aplicar, é imprevisível o que abortar código é relatado pelo CPU.
[0383] A figura 10 resume exemplo abortar códigos armazenados em um bloco de diagnóstico transação, eo código de condição correspondente (CC). A descrição na figura 10 ilustra uma particular implementação. Outras implementações e codificações de valores são possíveis. Numa concretização, os códigos de abortar 1, 3, 17-254 e são reservados para os potenciais melhoramentos. Tais acessórios podem resultar na definição de qualquer código de condição 2 ou 3. Além disso, anular o código 0 reservado e não irá ser atribuído a uma indicação de interrupção significativa, nesta concretização. Dependendo do modelo, a CPU pode não ser capaz de distinguir entre certas razões para abortar. Por exemplo, uma busca / loja estouro e um conflito buscar / loja podem não ser distinguíveis pela CPU em todas as circunstâncias.
[0384] Em conflito acessa por outros CPUs ou o subsistema de I/O para locais de armazenamento transacional sendo acessados por uma CPU pode causar uma transação a ser anulada. Quando uma transação é abortada, armazenamentos transacionais realizadas pela transação são descartadas. Isso pode fazer a depuração de código transacional extremamente difícil. Assim, numa concretização, uma instrução NONTRANS acional STORE (NTSTG) é fornecida permite que armazena efetuadas no modo de transação para ser mantida, mesmo que a transação é abortada.
[0385] Conforme descrito acima com referência à figura 7, num exemplo, a instrução de armazenamento não transacional 700 inclui uma pluralidade de campos opcode 702a, 702b, especificando um código de operação que designa uma operação de armazenamento não transacional; um campo de registrador (Ri) 704 especificando um registrador, os conteúdos dos quais são chamados o primeiro operando; um campo de índice (X2) 706; um campo base (B2) 708; um campo primeiro deslocamento (DL2) 710; e um segundo campo de deslocamento (DH2) 712. Os conteúdos dos registradores gerais designadas pelos campos X2 e B2 são adicionados a um valor definido por uma concatenação do conteúdo dos campos de DH2 e DL2 para formar o segundo endereço do operando. Quando um ou ambos os X2 ou campos B2 são iguais a zero, o registrador correspondente não participa na adição.
[0386] O primeiro operando de 64 bits é colocado nonde forma transacional inalterada no segundo local operando. Numa concretização, o primeiro operando é especificado pelo usuário.
[0387] O deslocamento, formada pela concatenação do conteúdo dos campos e DL2 DH2, é tratado como um inteiro assinado binária de 20 bits.
[0388] O segundo operando deve ser alinhado em um limite de palavra dupla; caso contrário, um exceção especificação (Programa Código Interrupção (PIC) 0006) é reconhecido e a operação é suprimida.
[0389] Código Estado: O código permanece inalterado.
[0390] exceções do programa:
[0391] Acesso (loja, segundo operando)
[0392] Operação (instalação transacional execuçãonão for instalado)
[0393] Especificação
[0394] restrição de Transação (devido a instruçãorestrito); PIC 0018 hex
[0395] Além disso, numa concretização:
[0396] STORE não transacionais fornece um meio peloqual um programa em execução no modo de execução transacional não restrita pode realizar armazenamentos que serão retidos, mesmo se a transação for anulada. Isso pode facilitar a depuração da transação se for abortada.
[0397] Quando a CPU não está no modo de execução de transação, a operação de STORE não transacionais é o mesmo que uma instrução de armazenamento, tais como a loja (STG) de z/Architecture, exceto que, numa concretização, o segundo operando de STORE não transacionais é para ser num limite de palavras duplas (independentemente do modo de execução de transação), enquanto que o segundo operando de STG não temrequisitos de alinhamento. Assim, nesta situação, exceção não é fornecida se o processador não está no modo de execução transacional, mas em vez disso, a loja não transacional é executado como se fosse uma loja.
[0398] A instrução de armazenamento, quando executado por um processador, coloca o primeiro operando (por exemplo, o conteúdo de um registrador especificado por um campo de registrador de instrução) no segundo local, operando (formada por adição de conteúdos dos registradores gerais designados por X2 e campos B2 com um valor definido por uma concatenação do conteúdo de campos e DH2 DL2).
[0399] Dependendo do modelo do processador, o desempenho de não transacionais STORE pode ser mais lenta do que a de STORE (STG).
[0400] Se uma CPU faz armazenamentos transacionais e não transacionais para o mesmo local de armazenamento dentro de uma transação, e a transação aborta então, o conteúdo de todos os locais de armazenamento alterados por qualquer loja transacional ou não transacional são imprevisíveis.
[0401] Uma concretização da lógica associado com a loja não transacionais é descrito com referência à figura 1 1 A. Numa concretização, um processador (por exemplo, CPU) executa esta lógica.
[0402] Com referência à figura 11A, com base na execução da instrução STORE não transacionais, é feita uma verificação para certas exceções, STEP 1100, e se há uma exceção, A MENSAGEM 1102, ele é tratado, STEP 1104. Por exemplo, se o segundo operando é não alinhados sobre um limite de palavra dupla, uma exceção é reconhecido especificação e a execução da instrução é suprimida. Além disso, se a instalação de execução de transação não está instalado, uma exceção é reconhecido operação e execução de uma instrução é suprimida; se a transação é uma operação restrita, uma exceção de restrição de transação é reconhecido e execução é suprimida; e se houver um problema com o segundo operando de localização (por exemplo, exceção de proteção, endereço inválido, etc.), uma exceção de acesso é reconhecida e a execução da instrução é suprimida. Caso contrário, se não há exceções, o primeiro operando da instrução é colocado nonde forma transacional (isto é, armazenado) inalterada num local especificado pelo segundo operando, PASSO 1106.
[0403] Numa concretização, a instrução de armazenamento não transacionais é executada no modo de execução de transação, e a colocação nonde forma transacional é retardada até que o fim do modo de execução de transação, tal como até à conclusão da operação mais exterior por TEND ou abortar termina o modo de execução transacional . (Numa outra concretização, que é retardado apenas para o fim de uma transação em particular em que a instrução está sendo executada.) Além disso, pode haver múltiplas armazenamentos não transacionais e estas aparecem como armazenamentos simultâneas para outros processadores.
[0404] Numa outra concretização, o processamento da STORE não transacionais depende do modo de execução do processador e/ ou o tipo de transação que é uma parte, tal como descrito com referência à figura 11B.
[0405] Com referência à figura 11B, numa concretização, com base na execução do Instrução de armazenamento não transacionais por um processador, é feita uma determinação sobre se o processador está no modo de execução de transação (ou seja, a profundidade de assentamento operação maior do que zero), A MENSAGEM 1 150. Se o processador está no modo de execução de transação, em seguida, uma outra determinação é feita para saber se a instrução de armazenamento não transacionais faz parte de uma operação de não restrita (por exemplo, uma transação iniciada por TBEGIN), A MENSAGEM 1 152. Se a instrução é parte de uma transação não restrita, então a instrução é executada, como aqui descrito, PASSO 1154. No entanto, se a instrução é parte de uma transação restrita (por exemplo, iniciada por TBEGINC e não tratado como uma operação não restrita), em seguida, uma exceção de programa é fornecido e em seguida a execução da instrução é suprimida, PASSO 1156.
[0406] Voltando ao inquérito 1 150, se o processador não está no modo de execução transacional, a instrução de armazenamento não transacional é tratado como uma instrução de armazenamento e processamento continua como tal, STEP 1158.
[0407] Descritos acima é um modo de realização de uma capacidade para armazenar explicitamente informação, enquanto que no modo de execução de transação, que persiste mesmo depois de abortar de uma transação associado com a instrução (ou seja, uma anulação da operação que inclui diretamente a instrução, ou uma anulação de uma outra operação de que a transação que inclui a instrução é aninhada dentro). A informação é especificada pelo usuário.
[0408] Além disso, fornecida acima é um meio eficiente de atualizar várias, objetos adjacentes na memória sem clássica serialização (curso de grãos), como o bloqueio, que fornece um potencial de melhoria de desempenho significativa multiprocessador. Ou seja, múltiplos, objetos adjacentes são atualizados sem a aplicação de mais de grão curso de acesso ao armazenamento de ordenação que é fornecido por meio de técnicas clássicas, como bloqueios e semáforos. Operações restritas são oferecidos para atualizações simples, pequena pegada.
[0409] execução transacional pode ser usado numa variedade de cenários, incluindo, mas não se limitando a, inline parcial, processamento especulativo, e elisão de bloqueio. Em inline parcial, a zona parcial a ser incluído no caminho executado é envolto em TBEGIN / TEND. TABORTO podem ser incluídas reverter em um estado-saída lateral. Para especulação, tal como em Java, nullchecks sobre ponteiros referenciado-de pode ser retardada até a borda loop usando uma transação. Se o ponteiro é nulo, a transação pode abortar com segurança usando TABORT, que está incluído dentro TBEGIN / TEND.
[0410] Tal como aqui utilizado, o armazenamento, o armazenamento central, memória principal, memória e memória principal são usados indistintamente, salvo indicação em contrário implicitamente pelo uso ou explicitamente. Além disso, embora numa concretização, uma operação eficaz atrasando inclui atrasar cometer armazenamentos transacionais para a memória principal até à conclusão de uma operação selecionada; Em outra concretização, uma operação eficaz atrasando inclui permitir atualizações transacionais para a memória, mas mantendo os valores antigos e restauração da memória para os valores antigos em abortar.
[0411] Conforme será apreciado por um perito na especialidade, um ou mais aspectos pode ser concretizado como um sistema, método ou produto de programa de computador. Deste modo, um ou mais aspectos podem assumir a forma de uma concretização de hardware completamente, uma concretização totalmente software (incluindo firmware, software residente, microcódigo, etc.) ou uma concretização da combinação de hardware e software que podem todos os aspectos, geralmente, ser aqui referida como um "circuito", "módulo" ou "sistema". Além disso, um ou mais aspectos podem assumir a forma de um produto de programa de computador incorporado em um ou mais computador meio legível (s) de ter o código do programa de computador legível incorporada nela.
[0412] Pode ser utilizada qualquer combinação de um ou mais computador meio legível (s). O meio de leitura por computador pode ser um meio de armazenamento legível por computador. Um meio de armazenamento de leitura por computador pode ser, por exemplo, mas não limitado a, um electrónico, magnético, óptico, sistema eletromagnético, infravermelho ou semicondutor, um aparelho, ou dispositivo, ou qualquer combinação adequada destes materiais. Exemplos mais específicos (uma lista não exaustiva) do meio de computador de armazenamento de leitura incluem o seguinte: uma conexão elétrica com um ou mais fios, um disquete portátil de computador, um disco rígido, uma memória de acesso aleatório (RAM), um só de leitura memória (ROM), uma memória apagável programável só de leitura (EPROM ou memória Flash), uma fibra óptica, um disco compacto portátil memória só de leitura (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético, ou qualquer adequado combinação dos anteriores. No contexto deste documento, um meio de armazenamento de leitura por computador pode ser um qualquer suporte material, que pode conter ou armazenar um programa para uso por ou em ligação com um sistema de execução de instruções, aparelho ou dispositivo.
[0413] Com referência agora à figura 12, num exemplo, um produto de programa de computador 1200 inclui, por exemplo, um ou mais computador não transitório meios de armazenamento legível por computador para armazenar 1.202 código legível significa programa ou lógica 1204 no mesmo para proporcionar e facilitar uma ou mais concretizações.
[0414] O código de programa incorporado num meio de leitura por computador pode ser transmitido através de um meio adequado, incluindo mas não se limitando a dispositivos sem fio, cabo, cabo de fibra óptica, RF, etc., ou qualquer combinação adequada destes materiais.
[0415] Código de programa de computador para a realização de operações de uma ou mais concretizações podem ser escritos em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objetos, tais como Java, Smalltalk, C ++ ou semelhantes, e programação procedural convencional linguagens, como a linguagem "C" de programação, linguagens de programação assembler ou similares. O código de programa pode executar inteiramente no computador do usuário, em parte no computador do usuário, como um pacote de software stand-alone, em parte no computador do usuário e, em parte, um computador remoto ou inteiramente no computador ou servidor remoto. No último caso, o computador remoto pode ser ligado ao computador do usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de área alargada (WAN), ou a ligação pode ser feita para um computador externo (por exemplo, através da Internet usando um Internet Service Provider).
[0416] Uma ou mais concretizações são aqui descritos com referência ao fluxograma ilustrações e/ ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa de computador. Será compreendido que cada bloco das ilustrações de fluxograma e/ ou diagramas de blocos, e combinações de blocos nas figuras de fluxograma e/ ou diagramas de blocos, podem ser implementados por instruções de programa de computador. Estas instruções de programa de computador pode ser fornecida a um processador de um computador de aplicação geral, computador de objetivo especial, ou outro aparelho de processamento de dados programável para produzir uma máquina, de tal modo que as instruções, que são executados através do processador do computador ou outro aparelho de processamento de dados programável, criar meios para a execução das funções / atos especificados no bloco de fluxograma e/ ou diagrama de blocos ou blocos.
[0417] Estes programa de computador instruções podem também ser armazenados num meio de leitura por computador que pode dirigir um computador, outro aparelho de processamento de dados programáveis, ou outros dispositivos para funcionar de uma maneira particular, de tal modo que as instruções armazenadas no meio de leitura por computador produzem um artigo de fabrico incluindo instruções que implementam a função / act especificado no bloco de fluxograma e/ ou diagrama de blocos ou blocos.
[0418] O programa de computador instruções podem também ser carregadas num computador, outro aparelho de processamento de dados programável, ou outros dispositivos para causar uma série de etapas operacionais para serem executadas no computador, de outro aparelho programável ou outros dispositivos para produzir um processo implementado por computador de tal modo que as instruções que executam no computador ou outra equipamento programável proporcionar processos para a execução das funções / atos especificados no fluxograma e/ ou bloco de diagrama ou blocos.
[0419] Os diagramas de fluxograma e bloco na figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações. A este respeito, cada bloco nos fluxogramas ou diagramas de blocos podem representar um módulo, segmento, ou parte do código, que compreende uma ou mais instruções executáveis para implementar a função lógica especificado (s). Deve também notar-se que, em algumas implementações alternativas, as funções verificadas no bloco podem ocorrer fora da ordem observado nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de facto, ser executados em simultâneo, substancialmente, os blocos ou pode às vezes ser executados na ordem inversa, dependendo da funcionalidade envolvida. É também de notar que cada bloco do diagrama de blocos e/ ou fluxograma ilustração, e combinações de blocos nos diagramas de blocos e/ ou fluxograma ilustração, podem ser implementados por sistemas à base de hardware para fins especiais, que realizam as funções especificadas ou atos, ou combinações de instruções de hardware especiais propósito e computadores.
[0420] Além dos acima, um ou mais aspectos podem ser fornecidos, oferecidos, implantado, gerenciado, atendido, etc. por um prestador de serviços que oferece gerenciamento de ambientes de clientes. Por exemplo, o prestador de serviços pode criar, manter, suporte, etc. código de computador e/ ou de uma infraestrutura de computador que executa um ou mais aspectos de um ou mais clientes. Em troca, o prestador de serviços pode receber o pagamento do cliente no âmbito de um contrato de subscrição e/ ou taxa, como exemplos. Adicionalmente ou em alternativa, o prestador de serviço pode receber o pagamento da venda de conteúdo publicitário a um ou mais terceiros.
[0421] Em um aspecto, um aplicativo pode ser implantado para a realização de uma ou mais concretizações. Como um exemplo, o desdobramento de uma infraestrutura de aplicação compreende o fornecimento de computador operáveis para desempenhar uma ou mais concretizações.
[0422] Em outro aspecto, uma infraestrutura de computação pode ser implementada compreendendo computador integrando código legível num sistema de computação, em que o código em combinação com o sistema de computação é capaz de executar uma ou mais concretizações.
[0423] Como ainda um outro aspecto, pode ser proporcionado um processo para a integração de infraestrutura compreendendo computação integrando código legível de computador para um sistema de computador. O sistema de computador compreende um meio de leitura por computador, no qual o meio de computador compreende uma ou mais concretizações. O código em combinação com o sistema de computador é capaz de executar uma ou mais concretizações.
[0424] Embora várias concretizações são descritas acima, estes são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem ser usados. Podem ser utilizados outros, instruções diferentes, formatos de instrução, campos de instrução e/ ou valores de instrução. Além disso, pode ser fornecida / usados, outros diferentes, e/ ou restrições adicionais / restrições. Muitas variações são possíveis.
[0425] Além disso, outros tipos de ambientes de computação pode ser usado. Como um exemplo, um sistema de processamento de dados apropriado para armazenar e/ ou a execução de código de programa que pode ser utilizado inclui, pelo menos, dois processadores acoplados diretamente ou indiretamente, a elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, a memória local empregue durante a execução propriamente dita do código de programa, a armazenagem a granel, e a memória cache do que proporcionar o armazenamento temporário de, pelo menos, um código de programa, a fim de reduzir o número de vezes que o código deve ser recuperado do armazenamento de grandes quantidades durante execução.
[0426] Input / Output ou dispositivos I/O (incluindo, mas não limitado a, teclados, monitores, dispositivos apontadores, DASD, fitas, CDs, DVDs, pen drives e outras mídias de memória, etc.) podem ser acoplados ao sistema quer diretamente quer através de controladores de I/O intervenientes. Os adaptadores de rede também podem ser acoplados ao sistema para permitir que o sistema de processamento de dados para tornar-se acoplado a outros sistemas de processamento de dados remotos ou impressoras ou dispositivos de armazenamento através de intervir redes públicas ou privadas. Modems, cable modems e cartões de Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0427] Com referência à figura 13, os componentes representativos de um sistema de computador central 5000 para implementar uma ou mais concretizações são representados. O computador representante anfitrião 5000 compreende um ou mais CPUs 5001 em comunicação com a memória do computador (ou seja, o armazenamento central) 5002, bem como I interfaces de I/O para armazenamento de dispositivos de mídia 5011 e redes de 5010 para se comunicar com outros computadores ou SANs e afins. O CPU 5001 é compatível com uma arquitetura de ter arquitetado uma instrução definida e funcionalidade arquitetado. O CPU 5001 pode ter tradução registrador de acesso (ART) 5012, que inclui um buffer ART lookaside (ALB) 5013, para a seleção de um espaço de endereço a ser usado pela tradução do endereço dinâmico (DAT) 5003 para transformar endereços de programa (endereços virtuais) em reais endereços de memória. Um DAT inclui, tipicamente, um buffer de consulta da tradução (TLB) 5007, traduções de cache para que depois acede ao bloco de memória de computador 5002 não necessitam de o atraso de tradução de endereços. Normalmente, um cache de 5009 é empregada entre memória do computador 5002 e o processador 5001. O cache de 5009 pode ser hierárquica tendo um grande cache disponível para mais de uma CPU e menor, mais rápido (nível inferior) armazena em cache entre o cache grande e cada CPU. Em algumas implementações, os caches de nível mais baixo são divididos para fornecer caches de baixo nível de instrução separadas para buscar e acessos de dados. Numa concretização, para a instalação de TX, um bloco de diagnóstico transação (TDB) 5100 e um ou mais tampões 5101 pode ser armazenado em um ou mais de cache de memória 5009 e 5002. Num exemplo, no modo de TX, é dados inicialmente armazenado num tampão TX, TX e quando as extremidades de modo (por exemplo, mais externa TEND), os dados na memória intermédia é armazenado (comprometido) para a memória, ou se houver um aborto, os dados na memória intermédia é descartado.
[0428] Numa concretização, uma instrução é buscada a partir da memória 5002 por uma unidade de busca de instruções 5004 através de um cache 5009. A instrução é descodificada numa unidade de descodificação de instruções 5006 e entregue (com outras instruções em algumas concretizações) para a execução da instrução ou unidade Unidades de 5008. Tipicamente várias unidades de execução 5008 são utilizados, por exemplo, uma unidade de execução aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução da instrução de ramo. Além disso, numa concretização da instalação de TX, TX controla vários 5110 pode ser empregue. A instrução é executada pela unidade de execução, o acesso a operandos de memória de instrução registradores ou especificado, conforme necessário. Se um operando é para ser acedido (carregado ou armazenada) a partir da memória 5002, a unidade de carga / loja 5005 processa tipicamente o acesso sob controle da instrução serem executadas. As instruções podem ser executadas em hardware ou em circuitos microcódigo interno (firmware) ou por uma combinação de ambos.
[0429] De acordo com um aspecto da instalação de TX, o processador 5001 também inclui uma PSW 5102 (por exemplo, TXe/ ou abortar PSW), uma profundidade de assentamento 5104, um TDBA 5106, e um ou mais registradores de controle 5108.
[0430] Conforme mencionado, um sistema de computador inclui informação na memória local (ou principal), bem como a abordagem, a proteção, e de referência e de gravação de mudança. Alguns aspectos da abordagem incluem o formato de endereços, o conceito de espaços de endereço, os vários tipos de endereços, e a maneira pela qual um tipo de endereço é traduzido para um outro tipo de endereço. Alguns de armazenamento principal inclui permanentemente atribuído locais de armazenamento. Armazenamento principal fornece ao sistema de armazenamento de acesso rápido diretamente endereçável de dados. Ambos os dados e os programas que devem ser carregados na memória principal (a partir de dispositivos de entrada), antes de poderem ser processados.
[0431] O armazenamento principal pode incluir um ou mais menores, armazéns intermediário de acesso mais rápido, às vezes chamados de caches. Uma memória cache é tipicamente associada fisicamente com uma CPU ou um processador de I/O. Os efeitos, exceto no desempenho, da construção física e uso de mídia de armazenamento distinta geralmente não são visíveis para o programa.
[0432] Caches separadas pode ser mantida para instruções e operandos de dados. Informações dentro de um cache é mantido em bytes contíguos em um limite integrante chamado de bloco de cache ou linha de cache (ou linha, para abreviar). Um modelo pode fornecer uma instrução ATRIBUTO EXTRACTO CACHE que devolve o tamanho de uma linha de cache em bytes. A modelo também pode fornecer dados e PREFETCH PREFETCH DADOS instruções relativo a longo que efetua a pré- busca de armazenamento em cache de dados ou instrução ou a liberação de dados a partir do cache.
[0433] Armazenamento é visto como uma cadeia longa horizontal de bits. Para a maioria das operações, os acessos para o armazenamento numa sequência da esquerda para a direita. A sequência de bits é subdividida em unidades de oito bits. Uma unidade de oito bits é chamada um byte, que é o bloco de construção básico de todos os formatos de informação. Cada localização de byte no armazenamento é identificada por um número inteiro não negativo original, o qual é o endereço da localização de byte que ou, simplesmente, o endereço de byte. Localizações de byte adjacentes têm endereços consecutivos, começando com 0 do lado esquerdo e do processo numa sequência da esquerda para a direita. Endereços são inteiros binários não assinados e são 24, 31, ou 64 bits.
[0434] A informação é transmitida entre o armazenamento e uma CPU ou um subsistema de canal de um byte, ou um grupo de bytes, de cada vez. A menos que especificado de outra forma, em, por exemplo, na z/Architecture, um grupo de bytes de armazenamento é endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo está implícito ou explicitamente especificado pela operação a ser executada. Quando utilizado numa operação de CPU, um grupo de bytes é chamado um campo. Dentro de cada grupo de bytes, em, por exemplo, na z/Architecture, bits são contados numa sequência da esquerda para a direita. No z/Architecture, os bits mais à esquerda são por vezes referido como "os bits de alta ordem" e os bits mais à direita como os bits "low- ordem". Bit números não são endereços de armazenamento, no entanto. Somente bytes podem ser abordados. Para operar em pedaços individuais de um byte no armazenamento, todo o byte é acessado. Os bits de um byte são numerados de 0 a 7, da esquerda para a direita (em, por exemplo, na z/Architecture). Os bits em um endereço podem ser numerados 8-31 ou 40-63 para endereços de 24 bits, ou 1-31 ou 33-63 para 31 endereços de bits; eles são numeradas 0-63 para endereços de 64 bits. Num exemplo, os bits 8-31 e 1-31 aplica aos endereços que estão em um local (por exemplo, registrador) que é de 32 bits de largura, enquanto que os bits 40-63 e 33-63 para aplicar endereços que estão numa 64 bits largura de localização. Dentro de qualquer outro formato de comprimento fixo de bytes múltiplos, os bits que constituem o formato são numeradas consecutivamente a partir de 0. Para fins de detecção de erro, e em preferência para corrigir, 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 pode ser controlado diretamente pelo programa. Capacidade de armazenamento são expressos em número de bytes. Quando o comprimento de um Storage-campo operando é implícita no código de operação de uma instrução, o campo é dito ter um comprimento fixo, que pode ser um, dois, quatro, oito, dezesseis ou bytes. Campos maiores podem ser implícita para algumas instruções. Quando o comprimento de um campo de armazenamento operandos não está implícita mas é afirmado explicitamente, o campo é dito ter um comprimento variável. Operandos de comprimento variável pode variar em 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 é colocada em armazém, o conteúdo de apenas aqueles locais de byte que são substituídos estão incluídos no campo designado, mesmo que a largura do caminho físico ao armazenamento pode ser maior do que o comprimento do campo a ser armazenado.
[0435] Certas unidades de informação estão a ser em um limite de integrante no armazenamento. Um limite é chamado integrante para uma unidade de informação quando o seu endereço de armazenamento é um múltiplo do comprimento da unidade em bytes. Nomes especiais são dadas aos campos de 2, 4, 8, 16, e 32 bytes em um limite integral. A halfword é um grupo de dois bytes consecutivos em um limite de dois bytes e é o bloco de construção básico de instruções. Uma palavra é um grupo de quatro bytes consecutivos em um limite de quatro bytes. Uma palavra dupla é um grupo de oito bytes consecutivos em um limite de oito bytes. Um octoword é um grupo de 32 bytes consecutivos em um limite de 32 bytes. Um quadword é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Quando os endereços de armazenamento designar meias palavras, palavras, palavras duplas, quadwords e octowords, a representação binária do endereço contém um, dois, três, quatro ou cinco mais à direita zero bits, respectivamente. As instruções estão a ser sobre-byte dois limites integrais. Os operandos de armazenamento da maioria das instruções não têm requisitos de limite de alinhamento.
[0436] Em dispositivos que implementam caches separados para instruções e operandos de dados, um atraso significativo pode ser experimentado se o programa armazena em uma linha de cache a partir do qual as instruções são posteriormente buscado, independentemente de a loja altera as instruções que são posteriormente buscado.
[0437] Num exemplo, concretizações pode ser praticada por software (por vezes referido código licenciado interna, firmware, microcódigo, milicódigo, do pico do código e semelhantes, qualquer um dos quais seria consistente com uma ou mais concretizações). Com referência à figura 13, o código de programa de software que incorpora um ou mais aspectos podem ser acessados pelo processador 5001 do sistema host 5000 a partir de dispositivos de mídia de armazenamento de longo prazo 5011, como uma unidade de CD-ROM, unidade de fita ou disco rígido. O código de programa de software pode ser incorporado em qualquer de uma variedade de meios conhecidos para utilização com um conjunto de dados sistema de processamento, como um disquete, disco rígido ou CD-ROM. O código pode ser distribuído em tais meios, ou pode ser distribuído aos usuários da memória do computador 5002 ou armazenamento de um sistema de computador através de uma rede 5010 para outros sistemas de computador para utilização por usuários de tais outros sistemas.
[0438] O código de programa de software inclui um sistema operativo que controla a função e a interação de vários componentes do computador e um ou mais programas de aplicação. Código de programa é normalmente paginada a partir do dispositivo de armazenamento de mídia 501 1 para o armazenamento de computador relativamente maior velocidade 5002, onde ele está disponível para processamento pelo processador de 5001. As técnicas e métodos para que contém o código de programa de software na memória, em meios físicos e/ ou distribuição de código de software, através de redes são bem conhecidos e não irão ser mais discutidas aqui. Código do programa, quando criado e armazenado num suporte material (incluindo, mas não limitado a módulos eletrônicos de memória (RAM), memória flash, discos compactos (CDs), DVD, fita magnética e similares é muitas vezes referida como um "produto de programa de computador ". A forma do produto de programa de computador é tipicamente lido por um circuito de processamento, de preferência um sistema de computador para a execução pelo circuito de processamento.
[0439] A figura 14 ilustra um sistema de hardware de servidor ou estação de trabalho representativa em que uma ou mais concretizações pode ser praticada. O sistema 5020 da figura 14 compreende um sistema de computador de base representativa 5021, tal como um computador pessoal, estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema de computador 5021 inclui base de um ou mais processadores 5026 e um barramento empregue para ligar e permitir a comunicação entre o processador (s) 5026 e os outros componentes do sistema 5021de acordo com técnicas conhecidas. O ônibus conecta o processador à memória 5025 5026 e armazenamento de longo prazo 5027 que pode incluir uma unidade de disco rígido (incluindo qualquer um dos meios magnéticos, CD, DVD e memória flash por exemplo) ou uma unidade de fita, por exemplo. O sistema 5021 também pode incluir uma placa de interface de usuário, que conecta o microprocessador 5026 via o ônibus para um ou mais dispositivos de interface, como um teclado 5024, um rato 5023, uma impressora / scanner 5030 e ou outros dispositivos / interface, que pode ser qualquer dispositivo de interface do usuário, como uma tela sensível ao toque, teclado de entrada digitalizada, etc. O ônibus também se conecta um dispositivo de exibição 5022, como uma tela de LCD ou monitor, para o microprocessador 5026 através de um adaptador de vídeo.
[0440] O sistema 5021 pode comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar com uma rede de 5028 Exemplo de rede 5029. Adaptadores são canais de comunicação, Token Ring, Ethernet ou modems. Em alternativa, o sistema 5021 pode comunicar usando uma interface sem fios, tal como um cartão de CDPD (dados por pacotes digitais celulares). O sistema 5021 pode estar associado com tais outros computadores em uma rede local (LAN) ou uma rede de área ampla (WAN), ou o sistema 5021 pode ser um cliente em um arranjo de clientI/Oervidor com outro computador, etc. Todos estas configurações, assim como as comunicações apropriadas hardware e software, são conhecidos na arte.
[0441] A figura 15 ilustra uma rede de processamento de dados de 5040 em que uma ou mais concretizações pode ser praticada. 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 podem incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Além disso, como os peritos na arte apreciar, uma ou mais redes locais podem ser incluídos, se for uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acoplados a um processador do host.
[0442] Ainda com referência à figura 15, as redes também podem incluir mainframes ou servidores, como um computador gateway (servidor do cliente 5046) ou servidor de aplicação (servidor remoto 5048 que 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 de gateway 5046 serve como um ponto de entrada em cada rede individual. Um gateway é necessário ao conectar um protocolo de rede para outro. O gateway 5046 pode ser de preferência acoplado a uma outra rede (Internet, por exemplo, 5047) por meio de uma ligação de comunicações. O gateway 5046 também pode ser diretamente acoplado a uma ou mais estações de trabalho 5041, 5042, 5043, 5044, utilizando uma ligação de comunicações. A porta de entrada do computador pode ser implementada utilizando um servidor z IBM eServer System disponibilizado pela International Business Machines Corporation.
[0443] Com referência simultaneamente a figura 14 e figura 15, código de programação de software 5031 que pode incorporar um ou mais concretizações podem ser acessados pelo processador 5026 do sistema 5020 de mídia de armazenamento a longo prazo 5027, como uma unidade de CD-ROM ou disco rígido. O código de software de programação pode ser incorporado em qualquer de uma variedade de meios conhecidos para utilização com um sistema de processamento de dados, tais como um disquete, um disco rígido ou um CD- ROM. O código pode ser distribuído em tais meios, ou pode ser distribuída aos 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 utilização por usuários de tais outros sistemas.
[0444] Em alternativa, o código de programação pode ser incorporado na memória 5025, e acedido pelo processador 5026 usando a linha omnibus do processador. Tal código de programação inclui um sistema operativo que controla a função e a interação de vários componentes do computador e um ou mais programas de aplicação 5032. Programa de código é normalmente paginada a partir de meios de armazenamento de 5027 para a memória de alta velocidade 5025 onde se encontra disponível para o processamento pelo processador 5026. As técnicas e os métodos que contém o código de programação para o software na memória, em meios físicos e/ ou distribuição de código de software, através de redes são bem conhecidos e não irão ser mais discutidas aqui. Código do programa, quando criado e armazenado num suporte material (incluindo, mas não limitado a módulos eletrônicos de memória (RAM), memória flash, discos compactos (CDs), DVD, fita magnética e similares é muitas vezes referida como um "produto de programa de computador ". A forma do produto de programa de computador é tipicamente lida por um circuito de processamento, de preferência um sistema de computador para a execução pelo circuito de processamento.
[0445] O cache que é mais prontamente disponível para o processador (normalmente mais rápidos e menores do que os outros caches do processador) é a mais baixa (LI ou do nível um) cache e loja principal (memória principal) é o cache de nível mais alto (L3 se há 3 níveis). O cache de nível mais baixo é frequentemente dividida em um cache de instrução (I- Cache) segurando instruções de máquina a ser executado e um cache de dados (D-Cache) segurando operandos de dados.
[0446] Com referência à figura 16, uma concretização exemplar é descrita processador para o processador 5026. Tipicamente um ou mais níveis de cache de 5053 são utilizados para tamponar os blocos de memória, a fim de melhorar o desempenho do processador. O cache de 5053 é um buffer de alta velocidade segurando linhas de cache de dados de memória que são susceptíveis de serem utilizados. Linhas de cache típicas são 64, 128 ou 256 bytes de dados da memória. Caches separados são frequentemente utilizados para obter instruções de armazenamento em cache do que para os dados de cache. A coerência de cache (sincronização de linhas de cópias na memória e as caches) é muitas vezes fornecida por vários algoritmos "snoop" bem conhecidos na arte. Armazenamento de memória principal 5025 de um sistema de processador é muitas vezes referido como um cache. Em um sistema de processador com 4 níveis de cache de 5053, a memória principal 5025 é por vezes referido como o 5 (L5) cache de nível, uma vez que é tipicamente mais rápida e apenas ocupa uma parte de armazenamento não-volátil (DASD, fita, etc.) que é disponível para um sistema de computador. O armazenamento principal 5025 "caches" páginas de dados paginados dentro e para fora da memória principal 5025 pelo sistema operativo.
[0447] Um programa contador (contador de instruções) 5061 mantém o controle do endereço da instrução atual para ser executado. Um contador de programa no processador az / Arquitetura é 64 bits e pode ser truncado para 31 ou 24 bits para apoiar os limites anteriores de endereçamento. Um contador de programa é normalmente incorporado em um PSW (palavra de estado do programa) de um computador de tal forma que persiste durante a troca de contexto. Deste modo, um programa em curso, tendo um valor do contador do programa, pode ser interrompido, por exemplo, o sistema operativo (mudança de contexto a partir do ambiente do programa para o ambiente do sistema operativo). A PSW do programa mantém o valor do contador do programa enquanto o programa não estiver ativo, e o contador de programa (no PSW) do sistema operacional é usado enquanto o sistema operacional está em execução. Tipicamente, o contador de programa é incrementado por um valor igual ao número de bytes de a instrução corrente. RISC (Reduced Instruction Set Computing) instruções são geralmente de comprimento fixo, enquanto CISC (Complex Instruction Set Computing) instruções são tipicamente comprimento variável. As instruções da IBM z/Architecture são instruções CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador Programa 5061 é modificado por qualquer uma operação de mudança de contexto ou uma sucursal tomadas operação de uma instrução de desvio, por exemplo. Em uma operação de mudança de contexto, o valor de contador de programa atual é salvo na palavra de estado do programa, juntamente com outras informações de estado sobre o programa que está sendo executado (como códigos de condição), e um novo valor do contador de programa é carregado apontando para uma instrução de um novo módulo de programa para ser executado. Uma operação de desvio tomado é realizada a fim de permitir que o programa de tomar decisões ou ciclo dentro do programa, carregando o resultado da instrução de ramificação no contador de programa 5061.
[0448] Normalmente uma instrução buscar unidade 5055 é empregado para obter instruções em nome do processador de 5026. A unidade de busca tanto busca "próximas instruções sequenciais", instruções alvo da filial tomadas instruções, ou primeiras instruções de um programa na sequência de uma troca de contexto. Unidades de busca de instrução modernos costumam empregar técnicas de pré-busca para especulativamente que as instruções PREFETCHED pode ser usado instruções de pré-busca com base na probabilidade. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclui a instrução sequencial seguinte e bytes adicionais de mais instruções sequenciais.
[0449] As instruções são buscadas em seguida, executado pelo processador 5026. Numa concretização, a instrução buscada (s) é passada para uma unidade de envio 5056 da unidade de busca. A unidade de despacho decodifica a instrução (s) e encaminha informações sobre a instrução decodificada (s) para unidades apropriadas 5057, 5058, 5060. Uma execução unidade de 5057 será tipicamente receber informações sobre instruções aritméticas descodificados da busca de instrução unidade 5055 e irá executar a aritmética operações em operandos de acordo com o código de operação da instrução. Operandos são fornecidos para a unidade de execução de um modo preferido 5057, quer a partir da memória 5025, 5059 ou arquitectados registradores a partir de um campo de imediato a instrução a ser executada. Resultados da execução, quando armazenado, são armazenados na memória 5025, registra 5059 ou em outro hardware da máquina (como registros de controle, registros PSW e semelhantes).
[0450] Endereços virtuais são transformados em endereços reais utilizando tradução dinâmica de endereços 5062 e, opcionalmente, usando registrador de acesso transação 5063.
[0451] Um processador 5026 tem, tipicamente, uma ou mais unidades de 5057, 5058, 5060 para executar a função da instrução. Com referência à figura 17A, uma unidade de execução 5057 pode comunicar com 5071 registradores gerais arquitetado 5059, uma unidade de decodificação / expedição 5056, uma unidade de armazenamento de carga 5060, e outras 5065 unidades de processador por meio de interface lógica 5071. Uma unidade de execução 5057 pode empregar vários circuitos de registrador de 5067, 5068, 5069 para conter as informações de que a unidade lógica aritmética (ALU) 5066 irá operar. A ALU executa operações aritméticas tais como adicionar, subtrair, multiplicar e dividir, bem como função lógica, como e, ou e ou-exclusivo (XOR), rodar e turno.
[0452] De preferência, a ALU suporta operações especializadas que são dependentes design. Outros circuitos podem fornecer outras instalações arquitetado 5072, incluindo códigos de condição e lógica de sustentação da recuperação, por exemplo. Tipicamente, o resultado de uma operação ALU é realizada num circuito de registrador de saída 5070 que pode transmitir o resultado de uma variedade de outras funções de processamento. Existem muitos arranjos de unidades de processador, a presente descrição destina-se apenas a proporcionar uma compreensão representativa de uma concretização.
[0453] Uma instrução ADD por exemplo seria executado em uma unidade de execução 5057 tendo aritmética lógica e funcionalidade enquanto uma instrução de ponto flutuante por exemplo seria executado em uma execução de ponto flutuante tendo-se especializado flutuante capacidade ponto. De um modo preferido, uma unidade de execução opera em operandos identificados por uma instrução de execução de uma função definida opcode nos operandos. Por exemplo, uma instrução ADD pode ser executado por uma unidade de execução 5057 em operandos encontrados em dois registradores 5059 identificadas pelo registrador dos campos de instruções.
[0454] A unidade de execução 5057 executa a adição aritmética sobre dois operandos e armazena o resultado em um terceiro operando em que o terceiro operando pode ser um terceiro registrador ou um dos dois registradores de código. A unidade de execução utiliza de preferência uma Unidade Lógica Aritmética (ALU) 5066 que é capaz de executar uma variedade de funções lógicas, como Shift, Girar, AND, OR e XOR, bem como uma variedade de funções algébricas, incluindo qualquer um adicionar, subtrair, multiplicar, dividir. Alguns ALUs 5066 são projetados para operações escalares e alguns para ponto flutuante. Os dados podem ser Endian grande (onde o byte menos significativo é o mais elevado no endereço de byte) ou Little Endian (onde o byte menos significativo é o menor endereço de byte) dependendo da arquitetura. A IBM z/Architecture é Big Endian. Campos assinados pode ser sinal e magnitude, complemento 1 's ou complemento de 2 dependendo da arquitetura. Um número 2 do complemento é vantajosa na medida em que a ALU não precisam de conceber uma capacidade desde subtrair um valor negativo ou um valor positivo em complemento de 2 requer apenas uma adição dentro da ULA. Os números são comumente descritos em taquigrafia, onde um campo de 12 bits define um endereço de um bloco de 4096 bytes e é comumente descrito como um bloco de 4 Kbyte (Kilo-byte), por exemplo.
[0455] Com referência à figura 17B, informação instrução de desvio para a execução de uma instrução de desvio normalmente é enviada para uma unidade de ramificação 5058 que muitas vezes emprega um algoritmo de previsão de desvios, como uma tabela histórico de ramificação 5082 para prever o resultado do ramo antes de outras operações condicionais estão completos. O alvo da instrução de desvio atual será obtida e especulativamente executada antes das operações condicionais estão completos. Quando as operações condicionais são concluídas as instruções de desvio especulativamente executadas são concluídos ou descartadas com base nas condições da operação condicional e os resultados especulado. Uma instrução típica sucursal pode testar códigos de condição e ramificar para um endereço de destino se os códigos de condição cumprir a exigência ramo da instrução de desvio, um endereço de destino pode ser calculado com base em vários números, incluindo os encontrados em campos de registro ou um campo imediato da instrução por exemplo. A unidade de ramificação 5058 pode empregar uma ALU 5074 tendo uma pluralidade de circuitos de registrador de entrada 5075, 5076, 5077 e um circuito de registrador de saída 5080. A unidade de ramificação 5058 pode comunicar com 5081 registradores gerais 5059, decodificação unidade expedição 5056 ou outros circuitos 5073, para exemplo.
[0456] A execução de um conjunto de instruções pode ser interrompido por uma variedade de razões, incluindo um comutador de contexto iniciada por um sistema operativo, uma exceção de programa ou de erro causando uma mudança de contexto, um sinal de interrupção de I/O que causa uma mudança de contexto ou múltiplas atividade de uma pluralidade de programas (em um ambiente multi-threaded) -Threading, por exemplo. De preferência, uma ação de mudança de contexto salva informações de estado sobre um programa atualmente em execução e, em seguida, carrega informações de estado sobre outro programa que está sendo chamado. Informações de estado podem ser salvos em registros de hardware ou na memória, por exemplo. Informações sobre o estado de preferência, compreende um valor de contador de programa apontando para uma próxima instrução a ser executada, códigos de condição, a informação tradução memória e conteúdo do registro arquitetado. A atividade de troca de contexto pode ser exercida por circuitos de hardware, programas aplicativos, programas de sistema operacional ou código de firmware (microcódigo, pico-código ou código interno licenciado (LIC)) isoladamente ou em combinação.
[0457] Um processador acede a operandos de instrução de acordo com os métodos definidos. A instrução pode fornecer um operando imediato usando o valor de uma parte da instrução, pode fornecer um ou mais campos de registradores explicitamente apontando para quer registradores de uso geral ou de registradores para fins especiais (registradores de ponto flutuante por exemplo). A instrução pode utilizar registradores implícitas identificados por um campo opcode como operandos. A instrução pode utilizar locais de memória para operandos. A localização da memória de um operando pode ser fornecida por um registrador, um campo de imediato, ou uma combinação de registros e campo imediato como exemplificado pelo / Arquitetura instalação z longo deslocamento em que a instrução define um registrador base, um registrador de índice e um campo imediato (campo de deslocamento), que são adicionados em conjunto para fornecer o endereço do operando na memória, por exemplo. Localização aqui tipicamente implica uma posição na memória principal (memória principal), salvo indicação em contrário.
[0458] Com referência à figura 17C, um processador de acessos de armazenamento utilizando uma unidade de carga / armazenamento 5060. A unidade de carga / loja 5060 pode executar uma operação de carga, obtendo o endereço do operando de destino na memória 5053 e o carregamento do operando num registrador 5059 ou uma outra memória de localização 5053, ou pode executar uma operação de armazenamento, obtendo o endereço do operando de destino na memória 5053 e o armazenamento de dados obtidos a partir de um registrador ou uma outra memória 5059 5053 localização no local alvo operando na memória 5053. A unidade de carga / loja 5060 pode ser especulativo e pode memória de acesso em uma sequência que está fora de ordem em relação à sequência de instruções, porém a carga / unidade de armazenamento de 5060 é manter a aparência de programas que as instruções foram executadas em ordem. A unidade de carga / store 5060 pode comunicar com 5084 registradores gerais 5059, unidade de decodificação / expedição 5056, cache / interface com a memória 5053 ou outros elementos 5083 e compreende vários circuitos de registrador 5086, 5087, 5088 e 5089, ALUs 5085 e 5090 lógica de controle para calcular endereços de armazenamento e para fornecer gasoduto sequenciamento para manter as operações em ordem. Algumas operações podem estar fora de ordem, mas a unidade de carga / armazenamento fornece a funcionalidade para fazer a fora de operações a fim de aparecer para o programa como tendo sido realizada, a fim, como é bem conhecido na arte.
[0459] De preferência aborda um programa de aplicação que "vê" são muitas vezes referidos como endereços virtuais. Endereços virtuais são muitas vezes referidos como "endereços lógicos" e "endereços eficazes". Estes endereços virtuais são virtuais em que eles são redirecionados para localização de memória física por um de uma variedade de tradução de endereços dinâmicos tecnologias (DAT), incluindo, mas não se limitando a, simplesmente prefixar um endereço virtual com um valor de deslocamento, a tradução do endereço virtual através de uma ou mais tabelas de conversão, as tabelas de conversão de um modo preferido, compreendendo, pelo menos, uma tabela de segmentos e uma tabela de página isoladamente ou em combinação, de um modo preferido, a tabela de segmento que tem um apontador para a entrada da tabela da página. Na arquitetura z/Architecture, uma hierarquia de tradução é fornecida incluindo uma tabela de primeira região, uma segunda tabela de regiões, uma região terceira tabela, uma tabela de segmentos e uma tabela de página opcional. O desempenho da tradução de endereço é frequentemente melhorada através da utilização de um buffer de consulta da tradução (TLB) que compreende entradas mapear um endereço virtual para um local associado memória física. As entradas são criadas quando o DAT converte um endereço virtual utilizando as tabelas de conversão.
[0460] Uso subsequente do endereço virtual pode, então, utilizar a entrada do rápido TLB, em vez de a tabela de tradução sequencial lento acessos. TLB conteúdo pode ser gerido por uma variedade de algoritmos de substituição, incluindo LRU (Least Recently Used).
[0461] No caso em que o processador é um processador de um sistema multiprocessador, cada processador tem a responsabilidade de manter os recursos compartilhados, como I/O, caches, TLBs e memória, interligados por coerência. Tipicamente, as tecnologias de "snoop" irá ser utilizado para manter a coerência de cache. Em um ambiente de Snoop, cada linha de cache pode ser marcada como estando em qualquer uma de um estado comum, um estado exclusivo, um estado alterado, um estado inválido e semelhantes, a fim de facilitar a partilha.
[0462] Eu unidades de I/O 5054 (figura 16) fornecer o processador com meios para fixação em dispositivos periféricos, incluindo fita, disco, impressoras, monitores, e redes, por exemplo. I/O são muitas vezes unidades apresentado ao programa de computador por controladores de software. Em mainframes, como o System z de IBM, adaptadores de canal e adaptadores de sistemas abertos são unidades de I/O de mainframe que fornecem as comunicações entre o sistema operacional e os dispositivos periféricos.
[0463] Além disso, outros tipos de ambientes de computação podem beneficiar de um ou mais aspectos. Como um exemplo, um ambiente pode incluir um emulador (por exemplo, software ou outros mecanismos de emulação), em que uma arquitetura em particular (incluindo, por exemplo, a execução da instrução, funções arquitetadas, tais como a conversão de endereços, e os registradores arquitetados) ou um seu subconjunto é emulada (por exemplo, num sistema de computador que tem um processador nativo e memória). Num tal ambiente, uma ou mais funções de emulação do emulador podem implementar uma ou mais concretizações, mesmo que um computador executando o emulador possa ter uma arquitetura diferente das capacidades a ser emulado. Como um exemplo, no modo de emulação, a instrução ou operação específica que está sendo emulado é decodificado, e uma função de emulação apropriado é construído para implementar a instrução ou operação individual.
[0464] Em um ambiente de emulação, um computador hospedeiro inclui, por exemplo, uma memória para armazenar instruções e dados; uma instrução unidade de busca para buscar instruções da memória e, opcionalmente, fornecer o buffer local para a instrução buscada; uma unidade de descodificação de instruções para receber as instruções obtida e para determinar o tipo de instruções que tenham sido lidas; e uma unidade de execução de instruções para executar as instruções. Execução pode incluir o carregamento de dados em um registro da memória; o armazenamento de dados de volta à memória de um registrador; ou executar algum tipo de operação aritmética ou lógica, como determinado pela unidade de descodificação. Num exemplo, cada unidade é implementada em software. Por exemplo, as operações sendo executadas pelas unidades são implementadas como uma ou mais sub-rotinas no software emulador.
[0465] [00442] Mais particularmente, de uma unidade central, instruções de máquina arquitetados são utilizadas por programadores, normalmente hoje programadores de "C", muitas vezes por meio de uma aplicação de compilador. Estas instruções armazenadas no meio de armazenamento podem ser executadas nativamente na z/Architecture Servidor IBM, ou, em alternativa, máquinas que executam outras arquiteturas. Eles podem ser emulados em servidores de mainframe IBM® existentes e futuros em e em outras máquinas da IBM (por exemplo, servidores Power Systems e X Servidores System). Eles podem ser executados em máquinas rodando Linux em uma ampla variedade de máquinas que utilizam hardware fabricado pela IBM, Intel, AMD, e outros. Além de execução em que o hardware sob z/Architecture, Linux pode ser utilizado, bem como as máquinas que utilizam por emulação Hercules, UMX, ou FSI (Fundamental Software, Inc), onde é geralmente execução em um modo de emulação. No modo de emulação, software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
[0466] O processador nativo normalmente executa o software de emulação compreendendo ou 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 em um momento e converter uma ou mais instruções de máquina emulada a um grupo correspondente de instruções de máquina nativo para execução pelo processador nativo. Estas instruções podem ser convertidas em cache de tal modo que uma conversão mais rápida pode ser conseguida. Não obstante, o software de emulação é manter as regras de arquitetura da arquitetura do processador emulado, de modo a assegurar os sistemas operacionais e aplicativos escritos para o processador emulado operar corretamente. Além disso, o software de emulação é fornecer recursos identificados pela arquitetura do processador emulado incluindo, mas não se limitando a, registradores de controle, registradores de uso geral, flutuante registradores pontuais, a função de tradução de endereços dinâmicos incluindo tabelas de segmentos e tabelas de páginas por exemplo, mecanismos de interrupção, o contexto mecanismos de comutação, Hora do dia (TOD) relógios e interfaces arquitetado para subsistemas I/O de modo a que um sistema operacional ou um programa aplicativo projetado para ser executado no processador emulado, podem ser executados no processador nativo com o software de emulação.
[0467] Uma instrução específica a ser emulado é decodificado, e uma sub-rotina é chamada a executar a função da instrução individual. Uma função de software de emulação emulando uma função de um processador emulado é implementada, por exemplo, numa sub-rotina de "C" ou do condutor, ou qualquer outro método de fornecimento de um controlador para o hardware específico como estará dentro da habilidade dos peritos na arte após compreensão da descrição da concretização preferida. Vários de software e hardware de emulação de patentes, incluindo, mas não se limitando a Letters Patente US N ° 5,551, 013, intitulada "Multiprocessador para emulação de hardware", por Beausoleil et al .; e No. EUA Cartas Patentes 6.009.261, intitulada "Pré-processamento de Rotinas armazenados alvo para Emulando Incompatível Instruções sobre um processador de destino ", por Scalzi et al; e Letras patente US No. 5.574.873, intitulada" Decoding hóspedes instrução para acessar diretamente emulação Rotinas que emulam a Clientes Instruções ", de Davidian et al; e Letras patente US No. 6.308.255, intitulada" multiprocessamento simétrico Bus e chipset usado para suporte do coprocessador permitindo que o código não-nativo para execução em um sistema ", por Gorishek et al, e Patente dos Estados Unidos No. Letras 6.463.582, intitulada "dinâmico Otimizando Código Objeto Translator for Architecture Emulação e dinâmico otimização de código objeto Método Translation ", por Lethin et al; e Letras patente US No. 5.790.825, intitulada" Método para emular instruções de hóspedes em um computador host através de recompilação dinâmica das instruções do Host ", de Eric Traut, cada uma das quais é aqui incorporada por referência na sua totalidade, e muitos outros, ilustram uma variedade de modos conhecidos para alcançar a emulação de um formato de instrução arquitetados para uma máquina diferente para uma máquina de alvo disponível para os peritos na arte.
[0468] Na figura 18, um exemplo de um sistema de computador central emulado 5092 é fornecida que emula um sistema de computador central 5000 'de uma arquitetura de acolhimento. No sistema de computador central emulado 5092, o processador central (CPU) 5091 é um processador do host emulado (ou processador host virtual) e compreende um processador de emulação 5093 tendo um conjunto de instruções nativo diferente do que a do processador 5091 do computador hospedeiro 5000 '. O sistema de computador central emulado 5092 5094 tem memória acessível ao processador de emulação 5093. Na concretização exemplificativa, a memória 5094 é dividida numa memória do computador hospedeiro 5096 e uma porção rotinas 5097 de emulação porção. A memória do computador anfitrião 5096 está disponível para programas do computador host emulado 5092 de acordo com a sediar arquitetura de computadores. O processador de emulação 5093 executa as instruções nativas de um conjunto de instruções arquitetado de uma arquitetura diferente daquele do processador emulado 5091, as instruções nativas obtido a partir de rotinas de emulação de memória 5097, e pode aceder a uma instrução de acolhimento para a execução de um programa na memória de um computador hospedeiro 5096 empregando uma ou mais instruções (s) obtida numa sequência e acesso / rotina de descodificação que possa descodificar a instrução (s) hospedeiro acedido para determinar uma rotina de execução de instruções nativo para emular o funcionamento da instrução de acolhimento acessada. Outras instalações que são definidas para o sistema de computador host 5000 'arquitetura pode ser emulado por instalações arquitetado rotinas, incluindo instalações como registradores de propósito geral, registros de controle, tradução de endereço dinâmico e I/O subsistema de apoio 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 (como os registradores gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das rotinas de emulação. Podem também ser fornecidos motores de hardware especial e sem carga para auxiliar o processador 5093 na emular o funcionamento do computador hospedeiro 5000 '.
[0469] A terminologia utilizada aqui é para o propósito de descrever apenas concretizações particulares e não se destina a ser limitativa. Tal como aqui utilizado, as formas singulares "um", "uma" e "a" pretendem incluir as formas de plural, bem como, a menos que o contexto indique claramente o contrário. Será ainda entendido que os termos "compreende" e/ ou "compreendendo", quando utilizado na presente memória descritiva, especificar a presença de aspectos estabelecidos, números inteiros, etapas, operações, elementos e/ ou componentes, mas não excluem a presença ou adição de um ou mais outras características, números inteiros, passos, operações, elementos, componentes e/ ou grupos dos mesmos.
[0470] Os correspondentes estruturas, materiais, atos e equivalentes de todos os meios ou o passo mais a função de elementos nas reivindicações seguintes, se for o caso, pretendem incluir qualquer estrutura, material ou ato para executar a função em combinação com outros elementos reivindicados como especificamente reivindicado. A descrição de uma ou mais concretizações foi apresentada para fins de ilustração e descrição, mas não se destina a ser exaustiva ou limitada à forma divulgada. Muitas modificações e variações serão evidentes para os vulgares peritos na arte. A concretização foi escolhida e descrita a fim de explicar melhor vários aspectos e a aplicação prática, e para permitir que outros peritos na matéria compreender várias concretizações com várias modificações conforme são apropriados para o uso particular contemplado.

Claims (8)

1. Sistema de computador para a execução de uma instrução num ambiente de computação, compreendendo o referido sistema de computador:uma memória; eum processador em comunicação com a memória, em que o sistema de computador está configurado para executar um método, o referido método compreendendo:obter, pelo circuito de processamento, uma instrução de máquina (700) para execução, as instruções de máquina sendo definida para a execução de computador de acordo com uma arquitetura de computadores, as instruções de máquina compreendendo:um código de operação (702a) para especificar uma operação de armazenamento transacional;um campo (704) para especificar um registro, em que os conteúdos do registro são um primeiro operando;pelo menos um campo (706, 708, 710, 712) para especificar um endereço de segundo operando, o endereço de segundo operando para designar uma localização na memória;eexecutar, pelo processador, as instruções de máquina, a execução compreendendo: armazenar, de modo não transacional, o primeiro operando no local especificado pelo endereço do segundo operando, em que a o primeiro operando armazenado na localização é mantido apesar de um aborto de uma operação associada à instrução de máquina, e caracterizado pelo fato de que o armazenamento não transacional é retardada até que um final do modo de execução de operação do processador.
2. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o método compreende ainda:determinar se o processador está no modo de execução transacional;baseado no processador estar no modo de execução transacional, determinar se a operação é uma operação restrita que está sujeita a um conjunto de limitações compreendendo: um número limitado de instruções pode ser executado; um número limitado de operandos de armazenamento pode ser acessado; e a operação está limitada a um nível único, ou uma operação não restrita que não está sujeita ao conjunto de limitações; ecom base na operação sendo uma operação não restrita, continuar a execução da instrução de máquina.
3. Sistema de computador, de acordo com a reivindicação 2, caracterizado pelo fato de que com base na operação constitui uma operação restrita, proporcionar uma exceção de programa e terminar a execução da instrução de máquina.
4. Sistema de computador, de acordo com a reivindicação 2, caracterizado pelo fato de que, com base no processador estar no modo de execução de operação, executar a instrução de máquina como uma instrução de armazenamento.
5. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro operando compreende conteúdo de um registro especificado pela instrução da máquina, o conteúdo é especificado pelo usuário, e em que o segundo operando é formado a partir de uma combinação de conteúdo de um registro especificado por um índice campo de instrução da máquina, o conteúdo de um registro especificado por um campo de base de instrução da máquina, e o conteúdo de pelo menos um campo de deslocamento.
6. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a operação é uma operação não restrita no aninhamento de transações não restrita.
7. Método para executar uma instrução dentro de um ambiente de computação, o referido método compreendendo:obter, por um processador, uma instrução de máquina para execução, a instrução de máquina sendo definida para a execução de computador de acordo com uma arquitetura de computadores, a instrução de máquina compreendendo:um código de operação (702a) para especificar uma operação de armazenamento transacional;um campo (704) para especificar um registro, em que os conteúdos do registro são um primeiro operando;e pelo menos um campo (706, 708, 710, 712) paraespecificar um endereço de segundo operando, o endereço de segundo operando para designar uma localização na memória;eexecutar, pelo processador, as instruções de máquina, a execução compreendendo:armazenar, de modo não transacional, o primeiro operando no local especificado pelo endereço do segundo operando, em que a o primeiro operando armazenado na localização é mantido apesar de um aborto de uma operação associada à instrução de máquina, e caracterizado pelo fato de que o armazenamento não transacional é retardada até que um final do modo de execução de operação do processador.
8. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda:determinar se o processador está no modo de execução transacional;com base no processador estar no modo de execução transacional, determinar se a operação é uma operação restrita que está sujeita a um conjunto de limitações compreendendo: um número limitado de instruções pode ser executado; um número limitado de operandos de armazenamento pode ser acessado; e a operação está limitada a um nível único, ou uma operação não restrita que não está sujeita ao conjunto de limitações; ecom base na operação constitui uma operação não restrita, continua a execução da instrução de máquina.
BR112014031432-2A 2012-06-15 2012-11-22 Instrução de armazenamento não transacional BR112014031432B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/524,887 2012-06-15
US13/524,887 US20130339680A1 (en) 2012-06-15 2012-06-15 Nontransactional store instruction
PCT/IB2012/056625 WO2013186601A1 (en) 2012-06-15 2012-11-22 Nontransactional store instruction

Publications (2)

Publication Number Publication Date
BR112014031432A2 BR112014031432A2 (pt) 2017-06-27
BR112014031432B1 true BR112014031432B1 (pt) 2021-07-27

Family

ID=49757051

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014031432-2A BR112014031432B1 (pt) 2012-06-15 2012-11-22 Instrução de armazenamento não transacional

Country Status (23)

Country Link
US (3) US20130339680A1 (pt)
EP (1) EP2834736B1 (pt)
JP (1) JP6091608B2 (pt)
KR (1) KR101625322B1 (pt)
CN (1) CN104350468B (pt)
AU (1) AU2012382776B2 (pt)
BR (1) BR112014031432B1 (pt)
CA (1) CA2874176C (pt)
DK (1) DK2834736T3 (pt)
ES (1) ES2620704T3 (pt)
HR (1) HRP20170426T1 (pt)
HU (1) HUE033506T2 (pt)
IL (1) IL236251B (pt)
LT (1) LT2834736T (pt)
MX (1) MX355090B (pt)
PL (1) PL2834736T3 (pt)
PT (1) PT2834736T (pt)
RU (1) RU2568324C2 (pt)
SG (1) SG11201407473XA (pt)
SI (1) SI2834736T1 (pt)
TW (1) TWI574207B (pt)
WO (1) WO2013186601A1 (pt)
ZA (1) ZA201408078B (pt)

Families Citing this family (24)

* 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
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution 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
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9454370B2 (en) * 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US20160179550A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Fast vector dynamic memory conflict detection
US20160253118A1 (en) * 2015-02-26 2016-09-01 Kabushiki Kaisha Toshiba Electronic device, controlling method, and storage medium
TWI615709B (zh) * 2016-03-30 2018-02-21 凌陽科技股份有限公司 記憶體內容自動搬移方法以及使用其之微處理系統
US10496292B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10579377B2 (en) * 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10346315B2 (en) 2017-05-26 2019-07-09 Oracle International Corporation Latchless, non-blocking dynamically resizable segmented hash index
US11347678B2 (en) 2018-08-06 2022-05-31 Oracle International Corporation One-sided reliable remote direct memory operations
US10977193B2 (en) 2018-08-17 2021-04-13 Oracle International Corporation Remote direct memory operations (RDMOs) for transactional processing systems
US20240062284A1 (en) * 2022-08-19 2024-02-22 Serhii Yevhenovych Monashov Module for realizing precious metals and a method for selling precious metals by means of the module

Family Cites Families (272)

* 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
DE69026379T2 (de) 1990-08-07 1996-08-29 Bull Hn Information Syst Nachrichtenorientierte Fehlerbeseitigungsverfahren
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5274817A (en) * 1991-12-23 1993-12-28 Caterpillar Inc. Method for executing subroutine calls
US5359608A (en) 1992-11-24 1994-10-25 Amdahl Corporation Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions
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
JP3720371B2 (ja) 1995-10-06 2005-11-24 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
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
JPH10333908A (ja) 1997-05-30 1998-12-18 Mitsubishi Electric Corp 分岐予測方法
US5937199A (en) 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
US6073230A (en) 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6772419B1 (en) 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
JP3546678B2 (ja) 1997-09-12 2004-07-28 株式会社日立製作所 マルチos構成方法
US6094730A (en) 1997-10-27 2000-07-25 Hewlett-Packard Company Hardware-assisted firmware tracing method and apparatus
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US5938778A (en) 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
KR100246537B1 (ko) 1997-11-25 2000-03-15 정선종 코드분할 다중접속 시스템에서 파일럿 심벌을 이용한 동기식이중 채널 큐피에스케이 송수신기의 구조
SE9704476L (sv) 1997-12-02 1999-06-23 Ericsson Telefon Ab L M Utökad instruktionsavkodning
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
EP0944081B1 (en) 1998-03-17 2009-05-13 Panasonic Corporation Data transmission apparatus and method thereof using command adapted thereto
US6202067B1 (en) 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US6119129A (en) 1998-05-14 2000-09-12 Sun Microsystems, Inc. Multi-threaded journaling in a configuration database
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
EP0992907B1 (en) 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
EP0992916A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6151669A (en) 1998-10-10 2000-11-21 Institute For The Development Of Emerging Architectures, L.L.C. Methods and apparatus for efficient control of floating-point status register
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
JP3504519B2 (ja) * 1998-12-04 2004-03-08 富士通株式会社 取引支援システム及びこのシステムに接続される情報端末装置
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6604188B1 (en) 1999-10-20 2003-08-05 Transmeta Corporation Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction
US6738892B1 (en) 1999-10-20 2004-05-18 Transmeta Corporation Use of enable bits to control execution of selected instructions
JP3776653B2 (ja) 1999-11-24 2006-05-17 富士通株式会社 演算処理装置
US6601149B1 (en) * 1999-12-14 2003-07-29 International Business Machines Corporation Memory transaction monitoring system and user interface
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
US6581138B2 (en) 2000-02-29 2003-06-17 Stmicroelectronics, Inc. Branch-prediction driven instruction prefetch
US6665863B1 (en) 2000-05-31 2003-12-16 Microsoft Corporation Data referencing within a database graph
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
WO2002013068A1 (en) 2000-08-04 2002-02-14 Carr Scott Software Incorporated Automatic transaction management
SG99941A1 (en) 2000-08-30 2003-11-27 Ibm Transaction support on logical disks
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6671686B2 (en) 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7346632B2 (en) 2001-02-22 2008-03-18 International Business Machines Corporation Mechanism for executing nested transactions in an execution environment supporting flat transactions only
US6963919B1 (en) 2001-02-28 2005-11-08 Agilent Technologies, Inc. Method and system for improving computer network performance
US6745272B2 (en) 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7185234B1 (en) 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
US7165168B2 (en) 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
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
US6874081B2 (en) 2001-05-17 2005-03-29 Broadcom Corporation Selection of link and fall-through address using a bit in a branch address for the selection
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
US6898699B2 (en) 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
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
US20040049666A1 (en) 2002-09-11 2004-03-11 Annavaram Murali M. Method and apparatus for variable pop hardware return address stack
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
US7398355B1 (en) 2003-02-13 2008-07-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
US6938130B2 (en) 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
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
US7143273B2 (en) 2003-03-31 2006-11-28 Intel Corporation Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history
US7398359B1 (en) * 2003-04-30 2008-07-08 Silicon Graphics, Inc. System and method for performing memory operations in a computing system
EP1643356B1 (en) 2003-05-23 2010-01-06 Nippon Telegraph and Telephone Corporation Parallel processing device and parallel processing method
CA2472887A1 (en) 2003-06-30 2004-12-30 Gravic, Inc. Methods for ensuring referential integrity in multithreaded replication engines
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7197586B2 (en) 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
CN1947144A (zh) * 2004-02-24 2007-04-11 第一数据公司 事务处理的系统和方法
US8825615B2 (en) 2004-05-11 2014-09-02 Oracle International Corporation Simplifying implementation of custom atomic transactions in a programming environment
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
US7206903B1 (en) 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US7552302B1 (en) 2004-09-14 2009-06-23 Azul Systems, Inc. Ordering operation
US20060064508A1 (en) 2004-09-17 2006-03-23 Ramesh Panwar Method and system to store and retrieve message packet data in a communications network
US7373554B2 (en) 2004-09-24 2008-05-13 Oracle International Corporation Techniques for automatic software error diagnostics and correction
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
EP1657118A1 (en) 2004-11-11 2006-05-17 IEE INTERNATIONAL ELECTRONICS & ENGINEERING S.A. Collision recognition device for a vehicle
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7631073B2 (en) 2005-01-27 2009-12-08 International Business Machines Corporation Method and apparatus for exposing monitoring violations to the monitored application
US20060212757A1 (en) 2005-03-15 2006-09-21 International Business Machines Corporation Method, system, and program product for managing computer-based interruptions
US7421544B1 (en) 2005-04-04 2008-09-02 Sun Microsystems, Inc. Facilitating concurrent non-transactional execution in a transactional memory system
US7496726B1 (en) 2005-04-18 2009-02-24 Sun Microsystems, Inc. Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode
US7464161B2 (en) 2005-06-06 2008-12-09 International Business Machines Corporation Enabling and disabling byte code inserted probes based on transaction monitoring tokens
US7350034B2 (en) 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7702825B2 (en) 2005-06-29 2010-04-20 Intel Corporation Enhancements to universal serial bus (USB) suspend and resume operations
CA2551045C (en) 2005-06-30 2008-04-22 Hitachi, Ltd. Input-output control apparatus, input-output control method, process control apparatus and process control method
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控制器及数据传输方法
WO2007015925A1 (en) 2005-08-01 2007-02-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
US20070061555A1 (en) 2005-09-15 2007-03-15 St Clair Michael Call return tracking technique
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
CN100365604C (zh) 2005-12-02 2008-01-30 北京中星微电子有限公司 一种中断控制处理装置和方法
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
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
US7870545B2 (en) 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
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
US7617383B2 (en) 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
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
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7594094B2 (en) 2006-05-19 2009-09-22 International Business Machines Corporation Move data facility with optional specifications
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7849446B2 (en) 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
MY149658A (en) 2006-06-12 2013-09-30 Mobile Money Internat Sdn Bhd Transaction server
US20070300013A1 (en) 2006-06-21 2007-12-27 Manabu Kitamura Storage system having transaction monitoring capability
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080016325A1 (en) 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
US7617421B2 (en) 2006-07-27 2009-11-10 Sun Microsystems, Inc. Method and apparatus for reporting failure conditions during transactional execution
US7748618B2 (en) 2006-08-21 2010-07-06 Verizon Patent And Licensing Inc. Secure near field transaction
US7865885B2 (en) 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20080086516A1 (en) 2006-10-04 2008-04-10 Oracle International Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions
EP1918540B1 (en) 2006-11-06 2009-08-26 GM Global Technology Operations, Inc. Operating method for a particulate filter, data processor program product and control apparatus therefore
CN101178787A (zh) 2006-11-10 2008-05-14 上海市卢湾区东南医院 用于社区老干部保健管理的信息沟通方法
US7669040B2 (en) 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
JP2008165370A (ja) 2006-12-27 2008-07-17 Internatl Business Mach Corp <Ibm> オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8086827B2 (en) 2006-12-28 2011-12-27 Intel Corporation Mechanism for irrevocable transactions
US7627743B2 (en) 2007-01-12 2009-12-01 Andes Technology Corporation Method and circuit implementation for multiple-word transfer into/from memory subsystems
US20080244544A1 (en) 2007-03-29 2008-10-02 Naveen Neelakantam Using hardware checkpoints to support software based speculation
US8332374B2 (en) 2007-04-13 2012-12-11 Oracle America, Inc. Efficient implicit privatization of transactional memory
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US7814378B2 (en) 2007-05-18 2010-10-12 Oracle America, Inc. Verification of memory consistency and transactional memory
US20080320282A1 (en) 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US8266387B2 (en) 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US7779232B2 (en) 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US8209689B2 (en) 2007-09-12 2012-06-26 Intel Corporation Live lock free priority scheme for memory transactions in transactional memory
US7904434B2 (en) 2007-09-14 2011-03-08 Oracle International Corporation Framework for handling business transactions
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US20090127332A1 (en) 2007-11-16 2009-05-21 Kyung Yang Park System for processing payment employing off-line transaction approval mode of mobile card and method thereof
US20090138890A1 (en) 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
CN101170747A (zh) 2007-11-30 2008-04-30 中兴通讯股份有限公司 中继状态调节方法和装置
US9391789B2 (en) 2007-12-14 2016-07-12 Qualcomm Incorporated Method and system for multi-level distribution information cache management in a mobile environment
US8145878B2 (en) 2007-12-17 2012-03-27 Intel Corporation Accessing control and status register (CSR)
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
US8065491B2 (en) * 2007-12-30 2011-11-22 Intel Corporation Efficient non-transactional write barriers for strong atomicity
US8706982B2 (en) * 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
US7966459B2 (en) * 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US8140497B2 (en) 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US20090182983A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Compare and Branch Facility and Instruction Therefore
US8041900B2 (en) 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
US20090187906A1 (en) * 2008-01-23 2009-07-23 Sun Microsystems, Inc. Semi-ordered transactions
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8161273B2 (en) 2008-02-26 2012-04-17 Oracle America, Inc. Method and apparatus for programmatically rewinding a register inside a transaction
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
EP2096564B1 (en) 2008-02-29 2018-08-08 Euroclear SA/NV Improvements relating to handling and processing of massive numbers of processing instructions in real time
US8688628B2 (en) 2008-02-29 2014-04-01 Red Hat, Inc. Nested queued transaction manager
US8316366B2 (en) 2008-04-02 2012-11-20 Oracle America, Inc. Facilitating transactional execution in a processor that supports simultaneous speculative threading
US20090260011A1 (en) 2008-04-14 2009-10-15 Microsoft Corporation Command line transactions
JP5385545B2 (ja) 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US9367363B2 (en) 2008-05-12 2016-06-14 Oracle America, Inc. System and method for integrating best effort hardware mechanisms for supporting transactional memory
US8612950B2 (en) * 2008-06-19 2013-12-17 Intel Corporation Dynamic optimization for removal of strong atomicity barriers
US7996686B2 (en) 2008-07-07 2011-08-09 International Business Machines Corporation Branch trace methodology
US8407455B2 (en) 2008-07-28 2013-03-26 Advanced Micro Devices, Inc. Coexistence of advanced hardware synchronization and global locks
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
US20100205628A1 (en) 2009-02-12 2010-08-12 Davis Bruce L Media processing methods and arrangements
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
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
CN101710433A (zh) 2008-12-31 2010-05-19 深圳市江波龙电子有限公司 一种电子支付卡的交易方法及电子支付卡
US9170844B2 (en) 2009-01-02 2015-10-27 International Business Machines Corporation Prioritization for conflict arbitration in transactional memory management
CN101819518B (zh) 2009-02-26 2013-09-11 国际商业机器公司 在事务内存中快速保存上下文的方法和装置
US8266107B2 (en) 2009-03-11 2012-09-11 International Business Machines Corporation Method for mirroring a log file by threshold driven synchronization
US9940138B2 (en) 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US20100307689A1 (en) 2009-06-06 2010-12-09 Michael James Huebner Pivoting tape dispenser
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
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
BRPI0925055A2 (pt) 2009-06-26 2015-07-28 Intel Corp "otimizações para um sistema de memória transacional ilimitada (utm)"
US8973004B2 (en) 2009-06-26 2015-03-03 Oracle America, Inc. Transactional locking with read-write locks in transactional memory systems
US8281185B2 (en) 2009-06-30 2012-10-02 Oracle America, Inc. Advice-based feedback for transactional execution
US8229907B2 (en) 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8688964B2 (en) 2009-07-20 2014-04-01 Microchip Technology Incorporated Programmable exception processing latency
GB2472620B (en) 2009-08-12 2016-05-18 Cloudtran Inc Distributed transaction processing
US8392694B2 (en) 2009-09-15 2013-03-05 International Business Machines Corporation System and method for software initiated checkpoint operations
GB2474446A (en) 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US8327188B2 (en) 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US8516202B2 (en) 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US9529839B2 (en) 2009-12-07 2016-12-27 International Business Machines Corporation Applying limited-size hardware transactional memory to arbitrarily large data structure
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
US8290991B2 (en) 2009-12-15 2012-10-16 Juniper Networks, Inc. Atomic deletion of database data categories
US8521995B2 (en) 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US20110161371A1 (en) 2009-12-29 2011-06-30 Microgen Plc Sql generation
KR101639672B1 (ko) 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
CN101826000A (zh) 2010-01-29 2010-09-08 北京龙芯中科技术服务中心有限公司 流水线微处理器的中断响应确定方法、装置及微处理器核
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
US8438568B2 (en) 2010-02-24 2013-05-07 International Business Machines Corporation Speculative thread execution with hardware transactional memory
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
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US8402227B2 (en) 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US8631223B2 (en) * 2010-05-12 2014-01-14 International Business Machines Corporation Register file supporting transactional processing
US9626187B2 (en) 2010-05-27 2017-04-18 International Business Machines Corporation Transactional memory system supporting unbroken suspended execution
US20110302143A1 (en) 2010-06-02 2011-12-08 Microsoft Corporation Multi-version concurrency with ordered timestamps
US9880848B2 (en) 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US8560816B2 (en) 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
US8479053B2 (en) 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US8561033B2 (en) 2010-07-30 2013-10-15 International Business Machines Corporation Selective branch-triggered trace generation apparatus and method
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US8424015B2 (en) 2010-09-30 2013-04-16 International Business Machines Corporation Transactional memory preemption mechanism
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8788794B2 (en) 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US8442962B2 (en) 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
US8818867B2 (en) 2011-11-14 2014-08-26 At&T Intellectual Property I, L.P. Security token for mobile near field communication transactions
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
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8964390B2 (en) 2012-11-08 2015-02-24 International Business Machines Corporation Sectioned manifolds facilitating pumped immersion-cooling of electronic components
US9348522B2 (en) 2013-12-12 2016-05-24 International Business Machines Corporation Software indications and hints for coalescing memory transactions

Also Published As

Publication number Publication date
AU2012382776B2 (en) 2016-08-04
CA2874176A1 (en) 2013-12-19
KR20150004829A (ko) 2015-01-13
LT2834736T (lt) 2017-06-12
JP6091608B2 (ja) 2017-03-08
SG11201407473XA (en) 2015-01-29
TW201413592A (zh) 2014-04-01
WO2013186601A1 (en) 2013-12-19
US20130339669A1 (en) 2013-12-19
TWI574207B (zh) 2017-03-11
JP2015523653A (ja) 2015-08-13
RU2012148587A (ru) 2014-05-20
AU2012382776A1 (en) 2014-12-11
KR101625322B1 (ko) 2016-05-27
EP2834736A1 (en) 2015-02-11
EP2834736B1 (en) 2017-02-22
PL2834736T3 (pl) 2017-09-29
MX2014015284A (es) 2015-04-13
ES2620704T3 (es) 2017-06-29
HRP20170426T1 (hr) 2017-06-16
HUE033506T2 (en) 2017-12-28
ZA201408078B (en) 2016-05-25
US10599435B2 (en) 2020-03-24
RU2568324C2 (ru) 2015-11-20
IL236251A0 (en) 2015-01-29
CA2874176C (en) 2020-03-10
IL236251B (en) 2018-12-31
BR112014031432A2 (pt) 2017-06-27
CN104350468B (zh) 2017-11-14
EP2834736A4 (en) 2015-05-20
US20160124748A1 (en) 2016-05-05
US20130339680A1 (en) 2013-12-19
DK2834736T3 (en) 2017-04-10
SI2834736T1 (sl) 2017-04-26
PT2834736T (pt) 2017-04-03
US10606597B2 (en) 2020-03-31
MX355090B (es) 2018-04-04
CN104350468A (zh) 2015-02-11

Similar Documents

Publication Publication Date Title
BR112014031432B1 (pt) Instrução de armazenamento não transacional
AU2012382778B2 (en) Saving/restoring selected registers in transactional processing
AU2013276133B2 (en) Transactional processing
US9983882B2 (en) Selectively controlling instruction execution in transactional processing
AU2012382775B2 (en) Transaction diagnostic block
US20160357553A1 (en) Restricted instructions in transactional execution
AU2013276800B2 (en) Randomized testing within transactional execution
BR112014031350B1 (pt) Filtragem de interrupção de programa em execução transacional
BR112014031437B1 (pt) Indicações de ramificação de execução transacional
BR112014031353B1 (pt) Facilidade de assistência de processador

Legal Events

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

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 22/11/2012, OBSERVADAS AS CONDICOES LEGAIS.