BR112014031335B1 - Bloco de diagnóstico transacional - Google Patents

Bloco de diagnóstico transacional Download PDF

Info

Publication number
BR112014031335B1
BR112014031335B1 BR112014031335-0A BR112014031335A BR112014031335B1 BR 112014031335 B1 BR112014031335 B1 BR 112014031335B1 BR 112014031335 A BR112014031335 A BR 112014031335A BR 112014031335 B1 BR112014031335 B1 BR 112014031335B1
Authority
BR
Brazil
Prior art keywords
transaction
abort
instruction
address
program
Prior art date
Application number
BR112014031335-0A
Other languages
English (en)
Other versions
BR112014031335A2 (pt
Inventor
Dan Greiner
Christian Jacobi
Timothy Slegel
Marcel Mitran
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 BR112014031335A2 publication Critical patent/BR112014031335A2/pt
Publication of BR112014031335B1 publication Critical patent/BR112014031335B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields

Abstract

bloco de diagnóstico transacional. quando um abortar de uma operação ocorre num sistema de computador, e feita uma determinação para saber se a informação de diagnostico e para ser armazenado em um ou mais blocos de diagnostico de transação (tdbs). existem diferentes tipos de blocos de diagnostico de transação para aceitar informação de diagnostico, dependendo do tipo de abortar e outras considerações. como exemplos, ha uma tdb especificada pelo programa em que a informação e armazenada se um endereço valido tdb e fornecido em uma transação começar a instrução; tdb uma interrupção de programa, que e armazenado em, quando o programa e abortado devido a uma interrupção; e uma tdb interceptação programa, que e armazenado em um aborto quando resulta em uma interceptação.

Description

Campo Técnico
[0001] A presente invenção refere-se, em geral, para o multiprocessamento ambientes de computação, e em particular, para o processamento de transação dentro de tais ambientes de computação. Antecedentes
[0002] Um desafio permanente na programação multiprocessador é a de atualizações para o mesmo local de armazenamento por várias unidades centrais de processamento (CPUs). Muitas instruções que atualizam os locais de armazenamento, incluindo até mesmo operações lógicas simples, como E, fazê-lo com vários acessos para o local. Por exemplo, em primeiro lugar, o local de armazenamento é buscada e, em seguida, o resultado atualizado é armazenado de volta.
[0003] Para que várias CPUs para atualizar com segurança o mesmo local de armazenamento, o acesso ao local é serializado. Uma instrução, o teste e conjunto de instruções, introduzido com a arquitetura S / 360 anteriormente oferecido pela International Business Machines Corporation, forneceu uma atualização entrelaçado de um local de armazenamento. Encaixado atualização significa que, tal como observado por outros CPU e da / saída (I/O) subsistema de entrada (por exemplo, o subsistema de canal), todo o acesso da instrução de armazenamento parece ocorrer atomicamente. Mais tarde, a arquitetura S / 370 oferecido pela International Business Machines Corporation introduziu o Compare e SWAP e COMPARAR instruções de casal e SWAP que fornecem um meio mais sofisticado de realizar atualização entrelaçado, 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 entrelaçado- atualização adicionais, incluindo Compare e SWAP e limpar, e comparar e SWAP e armazenar. No entanto, todas estas instruções fornecem entrelaçamento para apenas um único local de armazenamento.
[0004] Mais de técnicas complexas do programa podem exigir a atualização entrelaçado 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 a ser atualizada em simultâneo, tal como observado por outros CPU e o subsistema I/O. A fim de efetuar uma tal atualização da localização múltipla, o programa é forçado a usar um ponto distinto, único de serialização, como uma palavra de bloqueio. No entanto, as palavras de bloqueio podem fornecer um nível muito courser 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 de utilização de granulação mais fina serialização (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, parcial em função de um revestimento, e/ ou na re- sequenciação de ponteiro nulo verificação.
[0006] Em ambientes de sistema operacional clássicos, como z/OS e seus antecessores oferecido pela International Business Machines Corporation, o programa estabelece um ambiente de recuperação para interceptar qualquer condição programa de exceção que pode encontrar. Se o programa não interceptar a exceção, o sistema operacional normalmente termina de forma anormal do programa de exceções que o sistema operacional não está preparado para lidar. Estabelecer e explorar um ambiente como esse é caro e complicado.
Sumário
[0007] As deficiências do estado da técnica são abordados e vantagens são fornecidos através do fornecimento de um produto de programa de computador para fornecer informação de diagnóstico na transação for anulada. O produto de programa de computador inclui um meio de armazenamento legível por computador legível por um circuito de processamento e armazenamento de instruções para execução pelo circuito de processamento para a realização de um método. O método inclui, por exemplo, a detecção, por um processador, um abortar de uma transação, a transação eficaz atrasando cometer armazenamentos transacionais para a memória principal até à conclusão de uma operação selecionada; determinar, pelo processador, se a informação de diagnóstico é para ser armazenado em um bloco de diagnóstico transação (TDB) com base na Abortar; e com base na determinação indicando as informações de diagnóstico deve ser armazenado, armazenar as informações de diagnóstico no bloco de diagnóstico transação, as informações de diagnóstico para incluir um endereço de instrução operação abortada.
[0008] Métodos e sistemas de 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 detalhe aqui e são consideradas como parte da invenção reivindicada.
Breve Descrição dos Desenhos
[0010] Concretizações da invenção será agora descrita, por meio apenas de exemplo, com referência aos desenhos anexos, nos quais:A figura 1 representa uma concretização de um ambiente de computação;A figura 2A mostra um exemplo de um TRANSACTION Begin (TBEGIN) instrução;A figura 2B mostra uma concretização de mais detalhes de um campo de instrução TBEGIN da figura 2A;A figura 3A mostra em exemplo de uma instrução Transaction Begin restrita (TBEGINC);A figura 3B representa uma concretização de mais detalhes de um campo de instrução TBEGINC da figura 3A; A figura 4 representa um exemplo de uma final da transação (TEND) instrução;A figura 5 representa um exemplo de uma Abort Transação (T ABORT) instrução;A figura 6 representa um exemplo de transações aninhados;A figura 7 mostra um exemplo de um armazenamento NONTRANS acional de instruções (NTSTG);A figura 8 ilustra um exemplo de uma profundidade EXTRACTO OPERAÇÃO DO ASSENTAMENTO instrução (ETND);A figura 9 representa um exemplo de uma operação de bloqueio diagnóstico;A figura 10 ilustra um exemplo de razões para abortar, juntamente com códigos de abortagem associados e códigos de condição;A figura 11 mostra uma concretização da lógica associada a executar uma instrução TBEGINC;A figura 12 representa uma concretização da lógica associada a executar uma instrução TBEGIN;A figura 13 representa uma concretização da lógica associada a executar uma instrução TEND;A figura 14 representa uma concretização da lógica associadas com o processamento de abortar transação; A figura 15 representa uma concretização da lógica associada a armazenar seletivamente informação em blocos de diagnóstico mais uma ou de transação;As figuras 16A-16B mostram um exemplo de inserção de um elemento da fila em uma lista duplamente encadeada de elementos de fila;A figura 17 representa uma concretização de um produto de programa de computador;A figura 18 representa uma concretização de um sistema de computador central;A figura 19 representa um outro exemplo de um sistema de computador;A figura 20 representa um outro exemplo de um sistema de computador compreendendo uma rede de computadores;A figura 21 representa uma concretização de vários elementos de um sistema de computador;A figura 22A mostra uma concretização da unidade de execução do sistema de computador da fig. 21;A figura 22B mostra uma concretização da unidade de ramificação do sistema de computador da fig. 21;A figura 22C ilustra uma concretização da unidade de carga / armazenamento do sistema de computador da fig. 21; A figura 23 representa uma concretização de um sistema de computador central emulado.
Descrição Detalhada
[0011] De acordo com uma concretização, uma execução transacional (TX) facilidade é fornecida. Esta facilidade 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 aninhados de processamento transacional.
[0012] A facilidade 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 transação BEGIN instruções. A CPU deixa o modo de TX por qualquer um (a) uma instrução TRANSACTION END ultra periférica (mais detalhes sobre interior e exterior a seguir), ou (b) a operação que está sendo abortado. Enquanto estiver no modo TX, armazenamento acessa pela CPU parecem ser bloco concorrente como observado por outros CPUs e o subsistema de I/O. Os acessos de armazenamento são quer (a) utilizado para armazenamento quando a transação extremidades mais exteriores sem abortar (isto é, por exemplo, alterações feitas numa cache ou buffer local para a CPU são propagadas e armazenado na memória real e visíveis para os outros processadores), ou (b) descartados se a transação for anulada.
[0013] As transações podem ser aninhados. Isto é, enquanto a CPU está no modo de TX, que pode executar uma outra operação começar a instrução. A instrução que faz com que a CPU para entrar no modo TX é chamado o TRANSAÇÃO ultraperiférica BEGIN; Do mesmo modo, o programa é dito ser na operação de abertura máxima. Execuções subsequentes de operação BEGIN são chamados instruções internas; e o programa está executando uma transação interna. O modelo fornece uma profundidade mínima de nidificação e uma profundidade máxima de nidificação dependente do modelo. Uma instrução extracto TRANSACTION ASSENTAMENTO DE PROFUNDIDADE devolve o valor atual nível de encadeamento, e em uma outra concretização, pode devolver um valor máximo de profundidade de aninhamento. Esta técnica utiliza um modelo chamado "achatados aninhando", no qual uma condição de abortar em qualquer profundidade de assentamento faz com que todos os níveis da transação a ser anulada, e o controle é retornado para a instrução após a transação mais externa BEGIN.
[0014] Durante o processamento de uma operação, um acesso transacional feita por um CPU é dito conflito com qualquer um (a) um acesso transacional ou acesso não transacional feita 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 os acessos é umo armazenamento. Em outras palavras, a ordem de execução de transação para ser produtiva, a CPU não é para ser observado fazendo transacional acessos até que compromete. 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 a ser acedidos transacional.
[0015] 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 tentativa de re- impulsionar a transação na esperança de que a condição de abortar não está mais presente, ou o programa pode "cair" para um caminho não transacional equivalente. Em um outro modelo de execução de transação (aqui referido como uma operação restrita), uma transação abortada é automaticamente reconduzida pela CPU; na ausência de violações de restrição, a operação é restringida a certeza de eventual conclusão.
[0016] Ao iniciar uma transação, o programa pode especificar vários controles, tais como (a) que registra geral são restaurados para seus conteúdos originais, se a transação for anulada, (b) se a transação está autorizado a modificar o ponto-flutuante- cadastre contexto, incluindo, por exemplo, flutuante registradores de ponto e o registro de controle de ponto flutuante, (c) se a transação tem permissão para modificar o acesso registradoras (ARs), e (d) se certas condições programa de exceção estão a ser impedidos de causar uma interrupção. Se uma transação não restrita é abortada, 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 programa especificado transação (TDB). Além disso, o TDB na área prefixo da CPU ou designada por descrição de estado do hospedeiro podem também ser utilizados, se a transação é abortada devido a uma interrupção do programa ou uma condição que causa execução interpretativa para terminar, respectivamente.
[0017] Indicado acima são vários tipos de registos. Estas são explicadas mais detalhadamente aqui em pormenor. Registos gerais podem ser utilizados como acumuladores de aritmética geral e operações lógicas. Numa concretização, cada registo contém 64 posições de bits, e existem 16 registadores gerais. Os registos gerais são identificados pelos números 0-15, e são designados por um campo R quatro bits em uma instrução. Algumas instruções fornecem para abordar vários registos gerais por ter vários campos R. Para algumas instruções, a utilização de um registo geral específica está implícita em vez de explicitamente designada por um domínio R da instrução.
[0018] Além de seu uso como acumuladores de aritmética geral e operações lógicas, 15 dos 16 registos gerais são também usados como endereço de base e índice de registros na geração de endereço. Nestes casos, os registos são designados por um campo B quatro bits ou X no campo uma instrução. Um valor de zero no campo B ou X especifica que nenhuma base ou índice é para ser aplicado, e assim, registo geral 0 não é para ser designado como contendo um endereço de base ou índice.
[0019] instruções de ponto flutuante usar um conjunto de registros de ponto flutuante. A CPU 16 tem flutuantes registos pontuais, numa concretização. Os registos de ponto flutuante são identificados pelos números 0-15, e são designados por um campo R quatro bits em instruções de ponto flutuante. Cada registrador de ponto flutuante é 64 bits de comprimento e pode conter uma curta (32-bit) ou um longo (64-bit) operando ponto flutuante.
[0020] Um controle de ponto flutuante (FPC) registro é um registro de 32 bits que contém os bits de máscara, bits bandeira, um código de exceção de dados e de arredondamento modo bits, e é usado durante o processamento de operações de ponto flutuante.
[0021] Além disso, numa concretização, a CPU 16 tem registos de controlo, tendo cada um posições 64 bits. As posições de bits nos registros são atribuídas a determinadas instalações no sistema, tais como gravação de programa do evento (PER) (discutido abaixo), e são usados tanto para especificar que uma operação pode ter lugar ou a prestação de informações especial requerida pela facilidade. Numa concretização, para a instalação de transação, CR0 (bits 8 e 9) e CR2 (bits 61-63) são utilizados, como descrito abaixo.
[0022] A CPU tem, por exemplo, 16 registros de acesso numeradas de 0-15. Um registo de acesso consiste em posições de 32 bits contendo uma especificação indireta de um elemento de controle espaço de endereço (ASCE). Um elemento endereço de controle de espaç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 registo 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 operando armazenamento, designa um registo de acesso, e o elemento endereço de controle de espaço especificado pelo registo 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 registos de acesso e para deslocar o conteúdo de um registo de acesso para outro.
[0023] Cada um dos registos de acesso 1-15 pode designar qualquer espaço de endereço. Acesso registro 0 designa o espaço de instrução primária. Quando um dos registos de acesso 1-15 é usada para designar um espaço de endereço, a CPU determina qual espaço de endereço é designado por traduzir o conteúdo do registo de acesso. Quando o acesso registrador 0 é utilizado para designar um espaço de endereço, a CPU trata o registo de acesso como designando o espaço instrução primária, e não examinar o conteúdo real do registo de acesso. Por conseguinte, os registos de acesso 16 pode designar, a qualquer momento, o espaço de instruções primária e um máximo de 15 outros espaços.
[0024] 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 de (endereços virtuais), em conjunto com os parâmetros de transformação específicos, que permitem a cada número a ser associado a uma localização de byte de armazenamento. A sequência começa em zero e os montantes esquerda para a direita.
[0025] Em, por exemplo, na z/Architecture, quando um endereço virtual é usado por um CPU para aceder ao armazenamento principal (aka, memória principal), ele é convertido em primeiro lugar, por meio de tradução de endereços dinâmicos (DAT), para uma 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, segundo região, e região primeira) como parâmetros de transformação. A designação (origem e comprimento) da tabela de nível mais alto para um espaço de endereço específico é chamado de um elemento de controle espaço de endereço, e é encontrado para ser utilizado por DAT em um registro de controle ou conforme especificado por um registo de acesso. Em alternativa, o elemento de controlo 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.
[0026] DAT utiliza, em diferentes momentos, o endereço elementos de controle de espaço em diferentes registros de controle ou especificado pelos registos 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 registo de acesso e modo de espaço em casa. Espaços de endereços diferentes são endereçáveis, dependendo do modo de tradução.
[0027] Em qualquer instante em que o processador está no modo de espaço primário ou secundário modo de espaço, 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 segundo espaço de endereço. A qualquer instante em que a CPU está no modo de registo de acesso, pode traduzir os endereços virtuais de até 16 espaços de endereços - o espaço de endereço principal e até 15 espaços de endereço AR- especificados. Em qualquer instante em que o processador está no modo de espaço em casa, pode traduzir os endereços virtuais do espaço de endereço de casa.
[0028] O espaço de endereço principal é identificado como tal porque consiste de endereços virtuais primárias, que são traduzidas por meio do endereço principal elemento de controle de espaço (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 consistem AR AR especificado de endereços virtuais traduzidos por meio de AR especificados ASCES; e o espaço de endereço de casa consiste de endereços virtuais Início traduzidos por meio do ASCE casa. Os ASCES primárias e secundárias estão em registos de controlo 1 e 7, respectivamente. AR especificado ASCES estão em entradas ASN-segunda tabela que são localizados através de um processo chamado de acesso a registar tradução (ART), utilizando registos de controlo 2, 5 e 8. A ASCE casa está no registro de controle 13.
[0029] Uma concretização de um ambiente de computação para incorporar e utilizar um ou mais aspectos da instalação de transação descrito aqui é descrito com referência à figura 1.
[0030] Com referência à figura 1, num exemplo, o ambiente de computação 100 é baseado na z/Architecture, oferecido pela International Business Machines (IBM) Corporation, 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.
[0031]As marcas Z / ARQUITETURA, IBM, e Z/OS ez/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.
[0032] Como um exemplo, o ambiente de computação 100 inclui um complexo de processador central (CPC) acoplado a 102 um ou mais de entrada/ saída (I/O) 106 através de uma ou mais unidades de controle complexo 108. O processador central 102 inclui, por exemplo, um ou mais processadores centrais 1 10, 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 1 15, cada um dos quais é descrito abaixo.
[0033] processadores Central 110 são recursos do processador físicas atribuídas à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 1 10 alocado para a partição. Os processadores lógicos de uma partição específica 112 podem ser ou dedicado à partição, de modo a que o recurso de processador subjacente 10 1 é 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.
[0034] 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 operacional é o sistema operacional z/OS, o sistema z/VM de funcionamento, o sistema operacional z/Linux, ou o sistema operacional TPF, oferecida pela International Business Machines Corporation, Armonk, Nova Iorque.
[0035] As partições lógicas 112 são geridos por um hipervisor de partição lógica 114, que é implementado por firmware rodando em processadores 110. 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 controlos do funcionamento de acesso do sistema para o hardware do sistema subjacente.
[0036] As partições lógicas e hipervisor cada partição lógica compreendem um ou mais programas residentes nas respectivas partições de armazenamento central associado com os processadores centrais. Um exemplo de hipervisor de partição lógica 114 é o recurso Processor / System Manager (PR / SM), oferecido pela International Business Machines Corporation, Armonk, Nova York.
[0037] Entrada/ saída de um subsistema de 15 direciona o fluxo de informações entre dispositivos de entrada/ saída 106 e armazenamento principal (aka, 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 comunicar diretamente com os dispositivos de entrada/ saída e permite o processamento de dados para proceder simultaneamente com o processamento de entrada/ saída. Para fornecer comunicações, o subsistema de I/O utiliza I/O adaptadores de comunicação. Existem vários tipos de adaptadores de comunicação, incluindo, por exemplo, canais, I/O adaptadores, cartões PCI, placas Ethernet, pequeno computador de armazenamento de interface (SCSI) cartões, etc. No exemplo particular aqui descrito, os adaptadores de comunicação de I/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 I/O pode ser utilizada.
[0038] 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.
[0039] 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 limitado a, ambientes não-particionado, outros ambientes particionados, e/ ou ambientes emulados, podem ser utilizados; concretizações não são limitadas a um qualquer meio ambiente.
[0040] De acordo com um ou mais aspectos, a facilidade de execução transacional é uma melhoria de CPU que fornece os meios pelos quais a CPU pode executar uma sequência de instruções -conhecido como uma transação - que podem acessar vários locais de armazenamento, incluindo a atualização dos esses locais. Como observado por outros CPUs e o subsistema de I/O, a operação é ou (a) preenchido na sua totalidade como uma única operação atômica, ou (b) abortaram, potencialmente deixando nenhuma evidência de que ele nunca executado (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.
[0041] A facilidade de execução transacional inclui, por exemplo, um ou mais controles; uma ou mais instruções; processamento transacional, incluindo restrita e execução não restrita; e interromper o processamento, cada um dos quais é ainda descrito abaixo.
[0042] Numa concretização, três controles para fins especiais, incluindo uma transação abortar Programa Palavra de Estado (PSW), um endereço de bloco de diagnóstico transação (TDB), e um assentamento transação profundidade; cinco bits do registro de controle; e seis instruções gerais, incluindo BEGIN TRANSACTION (restrita e nonconstrained), transação END, PROFUNDIDADE EXTRATO DE OPERAÇÃO DO ASSENTAMENTO, abortar transação, e NONTRANS acional STORE, são usados para controlar a instalação de execução transacional. Quando a instalação está instalada, que é instalada, por exemplo, em todas as CPUs na configuração. Uma indicação de instalação, o bit 73 Numa concretização, quando um, indica que a instalação de execução da transação for instalada.
[0043] Quando a facilidade de execução da transação for instalado, a configuração proporciona uma facilidade de execução transacional não restrita, e, opcionalmente, uma instalação de execução transacional restrita, cada um dos quais é descrito abaixo. Quando indicações instalações 50 e 73, como exemplos, são tanto um, a instalação de execução transacional restrita está instalado. Ambas as indicações da instalação são armazenadas na memória em locais específicos.
[0044] Tal como aqui usado, o nome de instrução BEGIN TRANSACTION refere-se as instruções de atendimento TBEGIN mnemónicas (Transação 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 acelerador em parênteses ou suportes, ou simplesmente por o acelerador.
[0045] Uma concretização de um formato de uma operação BEGIN (TBEGIN) de instruções está representada nas figuras 2A-2B. Como um exemplo, uma instrução de TBEGIN 200 inclui um campo de código de operação 202, que inclui um código de operação especificando uma operação de iniciar a operação não restrita; um campo base (Bi) 204; um campo de deslocamento (Di) 206; e um campo de imediato (I2) 208. Quando o campo Bi é diferente de zero, o conteúdo do registo geral especificado pela BI 204 são adicionados em Di 206 para se obter o primeiro endereço do operando.
[0046] Quando o campo Bi é diferente de zero, é aplicável o seguinte:
[0047] Quando a profundidade de aninhamento de transação é inicialmente zero, o primeiro endereço do operando designa a localização do bloco 256 de diagnóstico transação byte, chamado a TDB especificado-TBEGIN (descrito mais adiante), no qual várias informações de diagnóstico pode ser armazenado, se a transação é abortada. Quando a CPU está no modo de acesso ou o modo espaço registo primário, 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 ou casa espaço secundário, o primeiro endereço operando designa uma localização no espaço secundário ou endereço de casa, respectivamente. Quando DAT está desligado, o diagnóstico bloco (TDB) TDBA endereço transação) designa um local no armazenamento real.
[0048] acessibilidade loja para o primeiro operando é determinado. 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.
[0049] 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.
[0050] Quando o campo Bi é zero, não há exceções de acesso são detectados para o primeiro operando e, para a instrução TBEGIN mais externa, o TDBA é inválido.
[0051] Os bits do campo de I2 são definidos como se segue, num exemplo:
[0052] Registro Geral Salvar Mask (GRSM) 210 (figura 2B): Bits 0-7 do campo I2 conter a registar salvar máscara geral (GRSM). Cada bit da GRSM representa um par par-ímpar de registos gerais, onde 0 representa pouco registros 0 e 1, 1 bit representa registos 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.
[0053] Se a transação for anulada, pares de registro salvos são restaurados para seu conteúdo quando a instrução TBEGIN mais externa foi executada. O conteúdo de todos os outros (não salvos) registos gerais não são restaurados quando a transação for anulada.
[0054] O registo geral de economia de máscara é ignorado em todos os TBEGINs exceto para o exterior.
[0055] Permita AR Modificação (A) 212: A Um controle, bit 12 do campo de I2, controla se a transação tem permissão para modificar um registo de acesso. O efetivo permitir o controle modificação AR é a lógica AND do Um controle na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores.
[0056] Se o eficaz Um controle é zero, a transação será abortada com código abort 11 (instrução restrita) se for feita uma tentativa de modificar qualquer registo de acesso. Se o eficaz Um controle é um, a transação não será abortado se um registo de acesso é modificada (ausente de qualquer outra condição abort).
[0057] Permita Floating Point Operação (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. O efetivo permitir o controle operação de ponto flutuante é a lógica AND do controle F na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores.
[0058] 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 programa exceção de dados. Se o controlo efetivo F é um e, em seguida (a) a operação não será abortado 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 pela uma condição de exceção programa exceção de dados.
[0059] Programa de Interrupção Filtragem Controle (PIFC) 216: Bits 14-15 do campo I2 são o controle de filtragem interrupção do programa (PIFC). O controlo das finanças públicas controla se determinadas classes de condições de exceção do programa (por exemplo, abordando exceção, exceção de dados, exceção de operação, proteção exceção, etc.) que ocorrem enquanto a CPU está no modo de execução resultado transacional em uma interrupção.
[0060] O efetivo controlo das finanças públicas é o valor mais alto do controlo das finanças públicas na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores. Quando o PIFC efetivo é zero, todas as condições de exceção programa resultar em uma interrupção. Quando o PIFC efetivo é uma só, condições de exceção programa ter uma aula de execução transacional de 1 e 2 resultam em uma interrupção. (Cada condição de exceção programa é atribuído, 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 execução de transação, e seo sistema operacional tem de ver a interrupção). Quando o PIFC efetivo é de dois, condições de exceção programa com uma classe execução transacional de um resultado em uma interrupção. Um controlo das finanças públicas, de 3 é reservado.
[0061] Bits 8-1 1 do campo de I2 (bits 40-43 da instrução) são reservados e deve conter zeros; caso contrário, o programa pode não funcionar a compatibilidade no futuro.
[0062] Uma concretização de um formato de uma Operação Begin restrita instrução (TBEGINC) é descrito 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 de iniciar a operação restrita; um campo base (Bi) 304; um campo de deslocamento (Di) 306; e um campo de imediato (I2) 308. Os conteúdos do registo geral especificado pela BI 304 são adicionados em Di 306 para se obter o primeiro endereço do operando. No entanto, com a transação começar a instrução restrita, o primeiro endereço operando não é usada para acessar o armazenamento. Em vez disso, o campo Bi da instrução inclui zeros; caso contrário, uma exceção especificação é reconhecido.
[0063] Numa concretização, o campo I2 inclui vários controlos, um exemplo da qual é representado na figura 3B.
[0064] Os bits do campo de I2 são definidos como se segue, num exemplo:
[0065] Registro Geral Salvar Mask (GRSM) 310: Bits 0-7 do campo I2 conter o registo geral salvar máscara (GRSM). Cada bit da GRSM representa um par par-ímpar de registos gerais, onde 0 representa pouco registros 0 e 1, 1 bit representa registos 2 e 3, e assim por diante. Quando um pouco na GRSM é zero, o par de registro correspondente não é salvo. Quando um pouco na GRSM é um, o par de registro correspondente é salvo em um local dependente do modelo que não é diretamente acessível pelo programa.
[0066] Se a transação for anulada, pares de registro salvos são restaurados para seu conteúdo quando o OPERAÇÃO ultra periférica começar a instrução foi executada. O conteúdo de todos os outros (não salvos) registos gerais não são restaurados quando uma transação restrita aborta.
[0067] Quando TBEGINC é usado para continuar a execução na transação não restrita modo de execução, o registo geral save máscara é ignorado.
[0068] Permita AR Modificação (A) 312: A Um controle, bit 12 ofthe campo I2, controla se a transação tem permissão para modificar um registo de acesso. O efetivo controle permitem-AR modificação é a lógica AND do Um controle na instrução TBEGINC para o nível de aninhamento atual e para qualquer TBEGIN exterior ou nas instruções TBEGINC.
[0069] Se o eficaz Um controle é zero, a transação será abortada com código abort 11 (instrução restrita) se for feita uma tentativa de modificar qualquer registo de acesso. Se o eficaz Um controle é um, a transação não será abortado se um registo de acesso é modificada (ausente de qualquer outra condição abort).
[0070] Bits 8-1 1 e 13-15 ofthe campo I2 (bits 40-43 e 45-47 ofthe instrução) são reservados e deve conter zeros.
[0071] 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.
[0072] Um número de termos são usados no que diz respeito à facilidade 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 o seguinte definição:
[0073] 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:
[0074] • loja Transactional acessos feita por qualquer e todos os níveis da transação são descartado (isto é, não confirmada).
[0075] loja não-transacional acessos feita por qualquer e todos os níveis da transação estão comprometidos.
[0076] Registos designados pelo registo geral save máscara (GRSM) da ultra periférica BEGIN TRANSACTION instrução são restaurados para seu conteúdo antes da execução transacional (isto é, ao seu conteúdo em execução da transação mais externa começar a instrução). 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.
[0077] registros 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 registos durante a execução de transação são mantidas quando a transação for anulada.
[0078] 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 instrução abort transação e outros motivos. Um código de transação- abort fornece razões específicas para que uma transação pode ser abortada.
[0079] Um exemplo de um formato de uma instrução de abortar transação (t abort) é descrito com referência à figura 5. Como um exemplo, uma instrução de TABORT 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 registo 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.
[0080] Commit: Na conclusão de uma instrução TRANSACTION END ultra periférica, a CPU compromete o armazenamento 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.
[0081] O conteúdo dos registos gerais, registros de acesso, registros de ponto flutuante, e o registro de controle de ponto flutuante não são modificados pelo processo de confirmação. Quaisquer alterações feitas a estes registos durante a execução transacional são mantidas quando os armazenamentos da transação estão comprometidos.
[0082] 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 é um armazenamento.
[0083] Um conflito pode ser detectado por execução especulativa um CPU de instruções, mesmo que o conflito não pode ser detectada na sequência conceitual.
[0084] 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:
[0085] Um subconjunto das instruções gerais está disponível.
[0086] Um número limitado de instruções podem ser executadas.
[0087] Um número limitado de locais de armazenamento de operando pode ser acessado.
[0088] • A transação está limitada a um único nível de aninhamento.
[0089] Na ausência de interrupções ou conflitos com outros CPUs ou o subsistema de I/O repetidas, uma transação restrita, eventualmente, conclui, assim, uma rotina de abort-manipulador não é necessária. Operações restritas são descritas em detalhes abaixo.
[0090] Quando uma transação BEGIN restrita instrução (TBEGINC) é executado 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.
[0091] Modo de Execução Transacional Restrita: Quando a profundidade de aninhamento transação é zero, e uma transação é iniciada por uma instrução TBEGINC, a CPU entra no restrito modo de execução transacional. Enquanto a CPU está no modo de execução transacional restrita, a profundidade de aninhamento transação é um.
[0092] transação aninhada: Quando a transação BEGIN instrução é emitido enquanto a CPU está no modo de execução transacional não restrita, a transação está aninhado.
[0093] A facilidade de execução transacional usa um modelo chamado achatada nidificação. No modo de nidificação achatada, armazenamentos feitas 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ções aninhadas são descartados.
[0094] 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.
[0095] 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.
[0096] 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 nonconstrained. Enquanto a CPU está no modo de execução transacional nonconstrained, a profundidade de aninhamento de transação podem variar de uma para a profundidade máxima de aninhamento de transação.
[0097] 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 fora de uma 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 transacional não restrita.
[0098] 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 não transacional STORE 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 registo (Ri) 704 especificando um registo, 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 registos 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 registo correspondente não participa na adição.
[0099] O primeiro operando de 64 bits é colocado de forma não transacional inalterado no segundo local operando.
[0100] O deslocamento, formada pela concatenação dos campos e DL2 DH2, é tratado como um inteiro assinado binária de 20 bits.
[0101] 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.
[0102] Transação exterior / Ultraperifé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.
[0103] 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 END TRANS AÇÃO 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.
[0104] Programa de Interrupção Filtering: 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 registo de controlo 0.
[0105] Transação: A transação inclui o armazenamento de operando acessos feitos, e registos 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 registos designados pelo registo geral salvar máscara da transação mais externa BEGIN instruções são restaurados para seu conteúdo antes da execução transacional.
[0106] 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 pelo instrução de armazenamento não transacional.
[0107] 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 dos modos de execução transacionais não restritos e restritos. Assim, quando a operação é descrita, os termos não restrito e restrito são usados para qualificar o modo de execução transacional.
[0108] 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).
[0109] 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.
[0110] Numa concretização da arquitetura z/Architecture, a facilidade de execução transacional está sob o controlo de bits 8-9 0 do registo de controlo, os bits 61-63 do registo de controlo 2, a profundidade de aninhamento de transação, o endereço do bloco de diagnóstico transação , e a palavra de estado do programa abortar transação (PSW).
[0111] 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.
[0112] Maiores detalhes sobre os vários controles são descritos abaixo.
[0113] Como indicado, a facilidade de execução transacional é controlado por dois bits de controle cadastre- se do zero e três bits de controle de registro dois. Por exemplo:
[0114] Controle Register 0 Bits: As atribuições de bits são como se segue, numa concretização:
[0115] 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 controlo (por exemplo, sistema operacional) pode indicar se quer ou não a facilidade de execução de transação é utilizável pelo programa. Bit 8 é ser um para entrar com sucesso o modo de execução transacional.
[0116] Quando obit 8 de controle de registro 0 é zero, tentativa de execução do extrato OPERAÇÃO DO ASSENTAMENTO DE PROFUNDIDADE, transação BEGIN e instruções de transação de ponta resulta em uma execução especial operação.
[0117] 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 extracto OPERAÇÃO DO ASSENTAMENTO instrução PROFUNDIDADE 800 inclui um campo opcode 802 especificando um código de operação que indica a operação de extração transação profundidade de nidificação; e um campo de registo R1 804 que designa um registo geral.
[0118] A profundidade de aninhamento transação atual é colocada em bits 48-63 do registo geral Ri. Bits 0-31 do registo permanecem inalteradas, e os bits 32-47 do registo estão definidas para zero.
[0119] Numa outra concretização, a operação de assentamento de profundidade máxima, também é colocado no registo geral Ri, tal como em bits 16-31.
[0120] 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 transação BEGIN instrução(s).
[0121] Controle Register 2 Bits: As atribuições são as seguintes, numa concretização:
[0122] Transação Âmbito de diagnóstico (TDS): Bit 61 do registo de controlo 2 controles a aplicabilidade do controlo diagnóstico transação (TDC) em bits 62-63 do registo, como segue:
[0123] 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.
[0124] 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 abortados aleatoriamente para fins de diagnóstico. A codificação do TDC é como se segue, num exemplo:
[0125] TDCValor Significado0 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 ultraperiférica.2 Abortar operações aleatórias em uma instrução aleatória.3 Reservado
[0126] Quando uma transação é abortada devido a um TDC diferente de zero, então qualquer um pode ocorrer o seguinte:
[0127] • O código de interrupção é definido comoqualquer 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 é definida correspondente ao código de abortar. Abortar códigos são adicionalmente descritos abaixo.
[0128] • Para uma transação não restrita, o código de condição é definido para um. Neste caso, o código de interrupção não é aplicável.
[0129] É dependente se o valor TDC 1 é implementado modelo. Se não for implementada, um valor de 1 atua como se 2 foi especificado.
[0130] Para uma operação restrita, um valor TDC de 1 é tratado como se um valor de 2 TDC foi especificado.
[0131] Se um valor de 3 TDC é especificada, os resultados são imprevisíveis.
[0132] Transação diagnóstico Bloco de Endereço (TDBA)
[0133] A transação válida endereço de bloco de diagnóstico (TDBA) é definida 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 registo 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 em casa, o TDBA designa uma localização no espaço secundário ou endereço de casa, respectivamente. Quando DAT (Tradução de Endereços dinâmicos) está desligado, o TDBA designa um local no armazenamento real.
[0134] A TDBA é usado 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.
[0135] 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álida e não especificados pelo TBEGIN TDB é armazenado se a transação for abortada posteriormente.
[0136] Transaction Abort PSW (TAPSW)
[0137] 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 aninhamento é inicialmente zero, a transação abortou PSW é definida como o conteúdo da atual PSW, exceto que o endereço da instrução de operação abortar PSW designa a instrução TBEGINC (em vez de a próxima instrução sequencial seguinte do TBEGINC).
[0138] 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.
[0139] A transação abortar PSW não seja alterada durante a execução de qualquer interior BEGIN TRANSACTION instrução.
[0140] Assentamento Transação Profundidade (TND)
[0141] A profundidade de aninhamento de transação é, por exemplo, um valor não assinado de 16 bits que é incrementado cada vez que uma transação BEGIN instrução é 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.
[0142] Numa concretização, um máximo de TND 15 é implementado.
[0143] 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.
[0144] Transação diagnóstico bloco (TDB)
[0145] Quando uma transação é abortada, várias informações de status pode ser salvo em um bloco de transação de diagnóstico (TDB), como segue:
[0146] 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.
[0147] 2. Interrupção-Programa (PI) TDB: Se uma transação não restrita é abortada devido a uma condição não- filtrada exceção de programa, ou se uma transação é abortada restrita 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.
[0148] 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 é armazenado emum local especificado na descrição do bloco de estado para o sistema operacional convidado.
[0149] 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).
[0150] 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.
[0151] Outros detalhes com respeito um exemplo de cada um dos TDBs são descritas a seguir:
[0152] 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-TBEGIN é armazenado em uma transação de aborto. A TDB especificado-TBEGIN está sujeito a todos os mecanismos de proteção de armazenamento que estão em vigor na execução da operação mais exterior começar a instrução. 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.
[0153] 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:
[0154] • 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.
[0155] • Buscando de uma instrução a partir da área de armazenamento designado.
[0156] • 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.
[0157] • Execução de um armazenamento utilizando instrução endereço real.
[0158] • Execução da instrução TRANSACTION END.
[0159] 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.
[0160] Quando a transação endereço de bloco de diagnóstico não é válido, uma TDB especificado-TBEGIN não é armazenada.
[0161] 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.
[0162] 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.
[0163] 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.
[0164] 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:
[0165] Format 902: Byte 0 contém uma indicação de validade e formato, como segue:
[0166] 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
[0167] Uma TDB na qual o campo de formato é zero, é referido como uma TDB nula.
[0168] Sinalizadores 904: Byte 1 contém várias indicações, como segue:
[0169] 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.
[0170] 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.
[0171] 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 nonconstrained, o bit 1 de 1 byte está definido para zero.
[0172] Reservado: Bits 2-7 de 1 byte são reservados, e armazenados como zeros.
[0173] Transação Profundidade do assentamento (TND) 906: 6-7 Bytes conter a profundidade de aninhamento de transação quando a operação foi abortada.
[0174] Transaction Abort 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.
[0175] 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.
[0176] 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.
[0177] Quando o bit é zero CTV, bytes 16-23 são imprevisíveis.
[0178] 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.
[0179] 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.
[0180] 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.
[0181] 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 indicam o alvo da instrução executar -tipo.
[0182] A ATIA está sujeita 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.
[0183] É 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 modelo.
[0184] Quando uma transação é abortada devido a abortar código de 4 ou 12, e a exceção de programa condição não se anulando, que o ATIA não apontam 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.
[0185] Quando o endereço do bloco de diagnóstico transação for válida, o ILC pode ser examinado na identificação interrupçã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.
[0186] 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.
[0187] 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.
[0188] Este campo é armazenado apenas na TDB designado pelo endereço de bloco de diagnóstico transacional; 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.
[0189] 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.
[0190] 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.
[0191] Este campo é armazenado apenas na TDB designado pelo endereço de bloco de diagnóstico transacional; caso contrário, o campo é reservado. O DXC é armazenado somente para condições de exceção programa dados.
[0192] 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.
[0193] 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.
[0194] Este campo é armazenado apenas na TDB designado pelo endereço de bloco de diagnóstico transacional; caso contrário, o campo é reservado. A identificação interrupção programa só é armazenada para as condições de exceção do programa.
[0195] 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.
[0196] A lista de acesso proteção DAT controlada ou
[0197] tipo ASCE
[0198] Tradução Página
[0199] Região-primeira tradução
[0200] Região de segunda tradução
[0201] Região terço tradução
[0202] exceção tradução Segmento
[0203] Em um exemplo da arquitetura z/Architecture, o formato da TEID é a mesma que a descrito em localizações reais 168-175 quando os condição resulta em uma interrupção, tal como descrito na anteriormente incorporada por referência Princípios de funcionamento.
[0204] 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.
[0205] Este campo é armazenado apenas na TDB designado pelo endereço de bloco de diagnóstico transacional; caso contrário, o campo é reservado.
[0206] 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.
[0207] 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.
[0208] Este campo é armazenado apenas na TDB designado pelo endereço de bloco de diagnóstico transacional; caso contrário, o campo é reservado.
[0209] Mais detalhes relativos a eventos de ruptura são descritos abaixo.
[0210] Numa concretização da arquitetura z/Architecture, quando a instalação de PER-3 está instalado, fornece o programa com o endereço do último 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 facilidade fornece, por exemplo, um registo 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.
[0211] 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.
[0212] Numa concretização da arquitetura z/Architecture, um evento de ruptura é considerado ocorrer sempre que uma das seguintes instruções faz com ramificação: FILIAL E LINK (BAL, BALR); FILIAL E SAVE (BAS, basr); FILIAL E SALVAR E SET MODE (BASSM); FILIAL E SET MODE (BSM); FILIAL E PILHA (Bakr); FILIAL NA CONDIÇÃO (BC, BCR); FILIAL NO COUNT (BCT, BCTR, BCTG, BCTGR); FILIAL NO ÍNDICE DE HIGH (BXH, BXHG); FILIAL NO ÍNDICE DE BAIXO ou igual (BXLE, BXLEG); FILIAL EM RELAÇÃO SOBRE A CONDIÇÃO (BRC); FILIAL EM RELAÇÃO SOBRE A CONDIÇÃO DE LONGO (BrCl); FILIAL EM RELAÇÃO COUNT (BRCT, BRCTG); FILIAL relativo no índice de alta (BRXH, BRXHG); FILIAL EM RELAÇÃO baixo índice OR EQUAL (BRXLE, BRXLG); Compare e FILIAL (CRB, CGRB); Compare e RAMO relativos (CRJ, CGRJ); COMPARAR IMEDIATA e ramo (CIB, CGIB); COMPARAR IMEDIATA e ramo relativo (CIJ, CGIJ); COMPARAR lógico e FILIAL (CLRB, CLGRB); COMPARAR lógico e RAMO relativos (CLRJ, CLGRJ); COMPARAR LÓGICO IMEDIATA e ramo (CLIB, CLGIB); e COMPARAR LÓGICO parente imediato e ramo (CLIJ, CLGU).
[0213] Um evento de quebra também é considerado para ocorrer sempre que uma das seguintes instruções completa: FILIAL E AUTORIDADE SET (BSA); FILIAL NO GRUPO Subspace (BSG); RELATIVA FILIAL E SAVE (BRAS); RELATIVA FILIAL E SALVAR LONGO (Brasl); PSW CARGA (LPSW); CARGA PSW ESTENDIDA (LPSWE); Chamada de programa (PC); Programa de Retorno (PR); PROGRAMA TRANSFERÊNCIA (PT); TRANSFERÊNCIA programa com INSTÂNCIA (PTI); PROGRAMA RESUME (RP); e TRAP (TRAP2, TRAP4).
[0214] Um evento de ruptura não é considerada como ocorrendo em resultado de uma transação sendo anulada (implícita ou como resultado da instrução abort transação).
[0215] Modelo Dependente informações de diagnóstico 924: 112-127 Bytes conter informações de diagnóstico modelo dependente.
[0216] Para todos os códigos, exceto 12 (interrupção do programa filtrada) abortar, o modelo dependente informações de diagnóstico é salvo em cada TDB que está armazenado.
[0217] Numa concretização, o modelo de informações de diagnóstico dependente inclui o seguinte:
[0218] • Bytes 112-1 19 conter um vetor de 64 bitschamado 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:
[0219] Valor Significado
[0220] A instrução concluída sem ramificação.
[0221] 1 A instrução concluída com ramificação.
[0222] 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.
[0223] Se menos de 63 instruções de desvio foram executados enquanto a CPU estava no modo de execução transacional, 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.
[0224] 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:
[0225] - Qualquer instrução restrita não causar um pouco para ser definido no TXBI.
[0226] - Para instruções de, por exemplo, naz/Architecture, quando o campo do M1 FILIAL NA CONDIÇÃO, RAMO DE RELATIVA EM CONDIÇÃO, ou FILIAL EM RELAÇÃO SOBRE A CONDIÇÃO DE LONGO instrução é igual a 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.
[0227] FILIAL E LINK (BALR); FILIAL E SAVE (basr); FILIAL E SALVAR E SET MODE (BASSM); FILIAL E SET MODE (BSM); FILIAL NA CONDIÇÃO (BCR); e FILIAL NO COUNT (BCTR, BCTGR)
[0228] 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.
[0229] 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.
[0230] Geral Registos 930: 128-255 Bytes conter o conteúdo de registos gerais 0-15 no momento da operação foi abortada. Os registros são armazenados em ordem crescente, começando com registo geral 0 em bytes 128-135, registro geral 1 em bytes 136-143, e assim por diante.
[0231] Reservado: Todos os outros campos são reservados. A menos que indicado de outra forma, o conteúdo dos campos reservados é imprevisível.
[0232] Como observado por outros CPUs e o 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 os armazenamentos não-transacionais.
[0233] 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 hipervisor (como LPAR ou z/VM) pode causar uma transação a ser anulada.
[0234] 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.
[0235] Além da informação de diagnóstico salva na TDB, 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.
[0236] Numa concretização, tal como é aqui indicado, quando a instalação de execução da transação for instalado, são fornecidos os seguintes instruções gerais.
[0237] EXTRACT TRANSACTION NESTING DEPTH
[0238] NONTRANSACTIONAL STORE
[0239] TRANSACTION ABORT
[0240] TRANSACTION BEGIN
[0241] TRANSACTION END
[0242] Quando a CPU está no modo de execução transacional, tentativa de execução de certas instruções é restrito e faz com que a operação seja anulada.
[0243] 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.
[0244] Em um exemplo do z/Architecture, instruções restritas incluem, por exemplo, as seguintes instruções não privilegiados: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), quando o código no campo M1 é de 6 ou 7; STORE CHARACTERS UNDER MASK HIGH, quando o campo M3 é zero e o código no campo R1 é de 6 ou 7; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; SUPERVISOR CALL; e TEST RUNTIME INSTRUMENTATION CONTROLS.
[0245] Na lista acima, COMPARE AND SWAP AND STORE e PERFORM LOCKED OPERATION são instruções complexas que podem ser implementadas de forma mais eficiente com o uso de instruções básicas no modo de TX. Os casos de PREFETCH DATA e PREFETCH DATA RELATIVE LONG 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).
[0246] Sob as condições listadas abaixo, as seguintes instruções são restritas:
[0247] BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR), e BRANCH AND SAVE AND SET MODE, quando o campo da instruçãoR2 é diferente de zero e rastreamento ramo está habilitado.
[0248] BRANCH AND SAVE AND SET MODE e BRANCH AND SET MODE, quando o campo R2 é diferente de zero e rastreamento modo é habilitado; SET ADRESSING MODE, quando o rastreamento de modo está ativado.
[0249] MONITOR CALL, quando uma condição de evento monitor é reconhecida.
[0250] A lista acima inclui instruções que podem formar entradas de rastreio. Se estas instruções foram autorizadas a executar entradas de rastreio de forma transacional e formadas, e a transação abortada subsequentemente, o ponteiro tabela de rastreio no registo de controlo 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.
[0251] 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; CONVERTUNICODE-32 TO UNICODE-16; CONVERT UNICODE-32 TO UNICODE-8; CONVERT UNICODE-8 TO UNICODE-16; CONVERT UNICODE-8 TO UNICODE-32; PERFORM CRYPTOGRAPHIC COMPUTATION; RUNTIME INSTRUMENTATION OFF; e RUNTIME INSTRUMENTATION ON..
[0252] Cada uma das instruções acima ou é atualmente implementado pelo co-processador de hardware, ou foi em máquinas do passado e, portanto, é considerado restrito.
[0253] Quando um controlo (A) efetivo de permitir a modificação de AR é zero, as seguintes instruções são restritas: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; e SET ACCESS.
[0254] Cada uma das instruções acima faz com que o conteúdo de um registo de acesso a ser modificado. Se o Um controle na instrução BEGIN TRANSACTION é zero, então o programa indicou explicitamente que a modificação registo de acesso não deve ser permitido.
[0255] Quando a permitir a operação eficaz do ponto de controle (F) flutuante é zero, instruções de ponto flutuante são restritas.
[0256] Em determinadas circunstâncias, as instruções a seguir podem ser restringidas: EXTRACT CPU TIME; EXTRACT PSW; STORE CLOCK; STORE CLOCK EXTENDED; e STORE CLOCK FAST.
[0257] 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.
[0258] 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 (RELATIVE LONG) quando o código no campo M1 é de 6 ou 7 ou STORE CHARACTERS UNDER MASK HIGH quando o campo M3 é zero e o código no campo R1 é 6 ou 7, é imprevisível se o código de 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.
[0259] 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.
[0260] Certas instruções restritas podem ser permitidos 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 TRANSACTION ABORT deve ser usada para causar de forma confiável uma transação a ser anulada.
[0261] 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 auma instrução restrito.
[0262] Em operação, quando a profundidade de aninhamento transação é zero, a execução da instrução BEGIN TRANSACTION (TBEGIN), 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 instrução TRANSACTION BEGIN restrita (TBEGINC), resultando em código de condição de zero faz com que a CPU para entrar no modo de execução transacional restrita.
[0263] 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.
[0264] Quando a CPU está no modo de execução transacional não restrito, a execução da instrução TRANSACTION BEGIN resultando em código de condição de zero faz com que a CPU para permanecer no modo de execução transacional não restrito.
[0265] Como observado pelo CPU, buscas e armazenamentos feitas 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 armazenamento 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.
[0266] Acessos de armazenamento para instrução e tabela DAT e ART (Acess Register Table) de busca seguem as regras não-transacionais.
[0267] A CPU deixa o modo de execução transacional normalmente por meio de uma instrução TRANSACTION END que faz com que a profundidade de aninhamento de transação para a transição para zero, caso em que, a transação seja concluída.
[0268] 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 é, os armazenamentos parecem ocorrer como um único bloco de operação concorrente como observado por outros CPU e o subsistema I/O.
[0269] Uma transaçã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.
[0270] 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.
[0271] 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.
[0272] Uma instrução que de outro modo resultar em uma transação que está sendo abortado 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.
[0273] 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.
[0274] Interrupção de Verificação de Máquina: A transação abortar código é definido como 5, e o 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.
[0275] Interrupção de I/O: A abortar transação código é definido como 6, e o código de condição na transaçã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.
[0276] Overflow de busca: 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, e o código de condição é definido para 2 ou3.
[0277] Overflow de armazenamento: 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 ou 3.
[0278] Permitir que o código de condição para ser 2 ou 3, em resposta a uma busca ou armazenamento de overflow de 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).
[0279] Conflito de busca: Uma condição buscar conflito é detectado quando outra CPU ou o subsistema I/O tenta armazenar em um local que foi buscado de forma transacional por este processador. O código de abortar transação é ajustado para 9, e o código de condição é ajustado para 2.
[0280] Conflito do armazenamento: A condição loja conflito é detectado quando outra CPU ou o subsistema IO 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.
[0281] 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.
[0282] 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.
[0283] Condição de Exceção de Programa (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.
[0284] 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 transação 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.
[0285] Condição relacionada a Busca de Cache: 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.
[0286] Condição relacionada ao armazenamento Cache: 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.
[0287] Outra Condição de Cache: Um cache outra condição é detectada pelos circuitos de cache da CPU. 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.
[0288] 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, é modelo dependente se a transação for anulada. 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.
[0289] Diversos Estado: A condição é variada qualquer outra condição reconhecida pelo CPU que faz com que a transação para abortar. A transação abortar código é 255 eo código de condição é definido para 2 ou 3.
[0290] 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 controlo externo da máquina ou I/O interrupção que ocorreu em uma configuração diferente.
[0291] Embora exemplos são fornecidos acima, outras causas de uma transação abortar com pode ser fornecido correspondente códigos de aborto 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 uma 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.
[0292] Notas:
[0293] 1. A condição variada pode resultar de qualquer dos seguintes procedimentos:
[0294] Instruções, tais como, no z/Architecture, COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION no qual o controle NQ é zero e o controle SK é um, SET STORAGE KEY EXTENDED em que o controle NQ é zero, realizada por outro processador na configuração; o código de condição é definido como 2.
[0295] Uma função de operador, como reinicialização, reiniciar ou parar, ou a ordem equivalente SIGNAL PROCESSADOR é executada na CPU.
[0296] Qualquer outra condição não enumerados acima; o código de condição é definido como 2 ou 3.
[0297] 2. O local no qual buscar e armazenar os conflitos são detectados podem estar em qualquer lugar dentro da mesma linha de cache.
[0298] 3. Sob certas condições, aCPUpodenã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 de busca ou armazenamento.
[0299] 4. Execução especulativa de vários caminhos de instrução pela CPU pode resultar em uma transação que está sendo abortada 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 a execução especulativa, permita que a operação para tentar completar sem detectar tais conflitos ou transborda especulativamente.
[0300] A execução de uma instrução de abortar transação faz com que a transação para abortar. O código de aborto transação é definida a partir do segundo endereço do operando. O código de condição é definido como 2 ou 3, dependendo do facto de bits 63 do segundo endereço do operando é zero ou um, respectivamente.
[0301] A figura 10 resume exemplo abortar códigos armazenados em um bloco de diagnóstico transação, e o código de condição correspondente (CC). A descrição na figura 10 ilustra uma implementação particular. Outras implementações e codificações de valores são possíveis.
[0302] Numa concretização tal como mencionado acima, a instalação transacional fornece para ambas as transações restritas e transações não restritas, assim como o processamento associado ao mesmo. Inicialmente, as operações restritas são discutidas e em seguida transações nãorestritas.
[0303] A operação restrita executa no modo transacional sem um caminho fall-back. É um modo de processamento úteis para funções compactos. Na ausência de interrupções ou conflitos com outros CPUs ou o subsistema de I/O repetidas (ou seja, causados por condições que não permitirá que a transação seja concluída com êxito), uma operação restrita acabará por completo; Assim, uma rotina de tratamento de interrupção não é necessário e não é especificado. Por exemplo, na ausência de violação de uma condição que não podem ser tratados (por exemplo, divisão por 0); uma condição que não permite a operação para completar (por exemplo, um temporizador de interrupção que não permite que uma instrução para executar; um eu quente / O, etc.); ou uma violação de restrição ou constrangimento associado a uma transação restrita, a operação acabará por completo.
[0304] A operação restrita é iniciada por uma instrução TRANSACTION BEGIN restrita (TBEGINC) quando a profundidade de aninhamento de transação é inicialmente zero. Uma transação restrita é sujeita às seguintes restrições, numa concretização.
[0305] 1. A transação executa não mais de 32 instruções, não incluindo instruções BEGIN TRANSACTION restrita (TBEGINC) e TRANSACTION END.
[0306] 2. Todas as instruções na transação devem estar dentro de 256 bytes contíguos de armazenamento, incluindo as instruções a TRANSACTION BEGIN restrita (TBEGINC) e qualquer TRANSACTION END.
[0307] 3. Além das instruções de acesso restrito, as seguintes restrições se aplicam a uma transação restrita.
[0308] a. As instruções são limitadas às instruções referidas como gerais, incluindo, por exemplo, adicionar, subtrair, multiplicar, dividir, transferência, rotação, etc.
[0309] b. Instruções de ramificação estão limitados ao seguinte (as instruções listadas são de z/Architecture num exemplo):
[0310] BRANCH RELATIVE ON CONDITION em que o M1 é diferente de zero e o campo RI2 contém um valor positivo.
[0311] BRANCH RELATIVE ON CONDITION LONG em que o campo M1 é diferente de zero, e o campo RI2 contém um valor positivo que não causa o envolvimento de endereço.
[0312] COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE em que o campo M3 é diferente de zeroeocampoRI4 contém um valor positivo. (Isto é, só para a frente ramos com máscaras de filiais diferentes de zero.)
[0313] c. Exceto para TRANSACTION END e instruções que causam uma serialização operando especificado, as instruções que causam uma função de serialização são restritas.
[0314] d. Operações de Armazenamento e Armazenamento (SS constitui), e operações de armazenamento-e-armazenagem com um código de operação estendida (SSE-) instruções são restritas.
[0315] e. Todas as seguintes instruções gerais (que são de z/Architecture, neste exemplo) são restritos: CHECKSUM; CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG; COMPARE LOGICAL LONG EXTENDED; COMPARE LOGICAL LONG UNICODE; COMPARE LOGICAL STRING; COMPARE UNTIL SUBSTRING EQUAL; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT TO BINARY; CONVERT TO DECIMAL; CONVERT UNICODE- 16 TO UNICODE-32; CONVERT UNICODE-16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE-16; CONVERT UNICODE-32 TO UNICODE-8; CONVERT UNICODE-8 TO UNICODE-16; CONVERT UNICODE-8 TO UNICODE-32; DIVIDE; DIVIDE LOGICAL; DIVIDE SINGLE; EXECUTE; EXECUTE RELATIVE LONG; EXTRACT CACHE ATTRIBUTE; EXTRACT CPU TIME; EXTRACT PSW; EXTRACT TRANSACTION NESTING DEPTH; LOADAND ADD; LOAD AND ADD LOGICAL; LOAD AND AND; LOAD AND EXCLUSIVE OR; LOAD AND OR; LOAD PAIR DISJOINT; LOAD PAIR FROM QUAD WORD; MONITOR CALL; MOVE LONG; MOVE LONG EXTENDED; MOVE LONG UNICODE; MOVE STRING; NON-TRANSACTIONAL STORE; PERFORM CRYPTOGRAPHIC COMPUTATION; PREFETCH DATA; PREFETCH DATA RELATIVE LONG; RUNTIME INSTRUMENTATION EMIT; RUNTIME INSTRUMENTATION NEXT; RUNTIME INSTRUMENTATION OFF; RUNTIME INSTRUMENTATION ON; SEARCH STRING; SEARCH; STRING UNICODE; SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HIGH, quando o campo M3 é zero, e o código no campo Ri é 6 ou 7; STORE CLOCK; STORE CLOCK EXTENDED; STORE CLOCK FAST; STORE FACILITY LIST EXTENDED; STORE PAIR TO QUADWORD; TEST ADDRESSING MODE; TRANSACTION ABORT; TRANSACTION BEGIN (both TBEGTN and TBEGINC); TRANSLATE AND TEST EXTENDED; TRANSLATE AND TEST REVERSE EXTENDED; TRANSLATE EXTENDED; TRANSLATE ONE TO ONE; TRANSLATE ONE TO TWO TRANSLATE TWO TO ONE; e TRANSLATE TWO TO TWO..
[0316] 4. Operandos de armazenamento da transação acessam não mais do que quatro octowords. Nota: LOAD ON CONDITION e STORE ON CONDITION são considerados como referência de armazenamento, independentemente do código de condição. Um octoword é, por exemplo, um grupo de 32 bytes consecutivos em um limite de 32 bytes.
[0317] 5. A transação execução nesta CPU, ou armazenamentos por outros CPUs ou o subsistema de I/O, não acessar operandos de armazenamento em quaisquer 4 blocos Kbytes que contêm os 256 bytes de armazenamento começando com a instrução TRANSACTION BEGIN restrita (TBEGINC).
[0318] 6. A operação não acessar instruções ou operandos de armazenamento usando diferente endereços lógicos que são mapeados para o mesmo endereço absoluto.
[0319] 7. Referências Operando feitas pela transação devem estar dentro de um único doubleword, exceto que para LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE, e STORE MULTIPLE HIGH, as referências são operando a ser dentro de um único octoword.
[0320] Se uma transação restrita violar qualquer das restrições de 1-7, listados acima, então qualquer um (a) numa interrupção do programa restrição de transação é reconhecido, ou (b) a execução prossegue como se a transação não foi restrita, exceto que mais violações de restrição ainda pode resultar numa transação restrita interrupção do programa. Ele é imprevisível qual ação será tomada, e as medidas tomadas podem variar de acordo com o qual restrição for violada.
[0321] Na ausência de violações de restrição, interrupções repetidas, ou conflitos com outros CPUs ou o subsistema de I/O, uma operação restrita acabará por completo, como descrito acima.
[0322] 1. A chance de concluir com sucesso uma operação restrita melhora se a transação atende aos seguintes critérios:
[0323] A. As instruções emitidas são menos do que o máximo de 32.
[0324] b. As referências operando armazenamento são menos do que o máximo de 4 octo palavras.
[0325] c. As referências operando armazenamento estiverem na mesma linha de cache.
[0326] d. Referências operando de armazenamento para os mesmos locais ocorrem na mesma ordem por todas as transações.
[0327] 2. Uma operação restrita não é necessariamente garantia de concluir com êxito em sua primeira execução. No entanto, se uma transação restrita que não violar qualquer das restrições listadas é abortada, o CPU emprega circuitos para garantir que a execução repetida de a transação é bem- sucedida posteriormente.
[0328] 3. No prazo de uma operação restrita, TRANSACTION BEGIN é uma instrução restrita, portanto, uma operação restrita não pode ser aninhada.
[0329] 4. A violação de qualquer dos constrangimentos 1-7 acima por uma transação restrita pode resultar em um loop de programa.
[0330] 5. As limitações de uma transação constrangida são semelhantes aos de um loop comparar-e- permuta. Devido a possíveis interferências de outros CPUs e o subsistema de I/O, não há garantia de arquitetura que uma instrução COMPARE AND SWAP jamais completa com código de condição 0. Uma operação restrita pode sofrer interferência semelhante na forma de fetch- ou store- conflito aborta ou interrupções quentes.
[0331] A CPU utiliza algoritmos de equidade para garantir que, na ausência de quaisquer violações de restrição, uma transação restrita, eventualmente, conclui.
[0332] 6. A fim de determinar o número de iterações repetidas necessárias para completar uma transação restrita, o programa pode contratar um contador em um cadastro geral que não está sujeita a registo geral save máscara. Um exemplo é mostrado abaixo.LH1 15,0 Contador derepetição ZeroLoop TBEGINC 0(0),C’ FE00’ Preserve RGs 0-13 AHI 15,1 Contador deincremento... Código transacional-execução... restrita... TEND* R15 agora contém a contagem de tentativas repetidas transacionais.
[0333] Note-se que ambos os registos 14 e 15 não são restauradas neste exemplo. Note também que em alguns modelos, a contagem no registo geral 15 pode ser baixo se a CPU detecta a condição de abortar após a conclusão da instrução TBEGINC, mas antes da conclusão da instrução AHI.
[0334] 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 de transações.
[0335] Numa concretização, o utilizador (ou seja, a criação de uma transação) seleciona se deve ou não uma transação está a ser restringida. Uma concretização da lógica associada com o processamento de transações restritas, e, em particular, o processamento associado a uma instrução TBEGINC, é descrito com referência à figura 1 1. A execução da instrução TBEGINC faz com que a CPU para entrar no modo de execução transacional restrita ou permanecer no modo de execução não restrito. ACPU (isto é, o processador) executar TBEGINC executa a lógica da figura 1 1.
[0336] Com referência à figura 1 1, com base na execução de uma instrução de TBEGINC, uma função de serialização é executado, passo 1 100. Uma função ou operação de serialização inclui completando todo o armazenamento anterior conceptualmente acessos (e, para o z/Architecture, como um exemplo, e de referência relacionados com pouco Alterar configurações de bits) pelo CPU, como observado por outros CPUs e pelo subsistema de I/O, antes de acessar o armazenamento conceitualmente subsequente (e definições de bits de referência e alteração de bit relacionados) ocorrer. Serialização afeta a sequência de toda a CPU acessa a armazenagem e as chaves de armazenamento, exceto para aqueles associados com a entrada da tabela de ART e DAT atraente entrada da tabela.
[0337] Conforme observado por um processador no modo de execução transacional, serialização opera normalmente (tal como descrito acima). Tal como observado por outros CPU e o subsistema I/O, uma operação de serialização realizada com uma CPU é na execução transacional modo ocorre quando o processador sai do modo de execução de transações, quer como resultado de uma instrução de transação de ponta que diminui o aninhamento de transação profundidade de zero (que termina normal), ou como um resultado da operação a ser abortada.
[0338] Após a realização de serialização, é feita uma determinação quanto a saber se uma exceção é reconhecido, A MENSAGEM 1 102. Se assim for, a exceção é tratada, STEP 1104. Por exemplo, uma exceção especial operação é reconhecido e a operação é suprimida se o controle de execução transacional, 8 bits de controle de registro 0, é 0. Como outros exemplos, uma exceção especificação é reconhecido e é suprimida a operação, se o campo Bi, bits 16-19 da instrução, é diferente de zero; executar uma exceção é reconhecido e é suprimida a operação, se o TBEGINC é o alvo de uma execução do tipo de instruções; e uma exceção de operação é reconhecido e é suprimida a operação, se a facilidade de execução de transação não está instalado na configuração. Se a CPU já está em operação no modo de execução restrita, em seguida, uma operação restrita exceção programa exceção é reconhecido e é suprimida a operação. Além disso, se a profundidade de aninhamento de transação, quando incrementado por um, excederia um modelo dependente do assentamento máximo transação profundidade, a transação é abortada com código abort 13. Outras exceções ou diferentes podem ser reconhecidas e tratadas.
[0339] No entanto, se não houver uma exceção, em seguida, é feita uma determinação para saber se a profundidade de aninhamento transação é zero, A MENSAGEM 1 106. Se a profundidade de aninhamento transação é zero, então o endereço do bloco de diagnóstico transação é considerada inválida, PASSO 1 108; a abortar transação PSW é definido a partir do conteúdo da atual PSW, exceto que o endereço da instrução de operação abortar PSW designa a instrução TBEGINC, em vez de a instrução sequencial seguinte, ETAPA 1110; e os conteúdos dos pares de registro gerais como designadas pelo Cadastro Geral de economia máscara são salvos em um modelo de localização dependente que não é diretamente acessível pelo programa, ETAPA 1112. Além disso, a profundidade de aninhamento é definido como 1, ETAPA 1114. Adicionalmente, o valor efetivo da operação de ponto flutuante permitir (F) e controles de filtragem interrupção do programa (PIFC) estão definidas para zero, ETAPA 1316. Além disso, o valor efetivo da alteração AR (A) permitem o controle, bit 12 do campo I2 campo da instrução, é determinado, ETAPA 1118. Por exemplo, o efetivo controle A é a lógica AND do Um controle na instrução TBEGINC para o nível atual e para quaisquer instruções TBEGIN exteriores.
[0340] Voltando ao INQUIRITY 1106, se a profundidade de aninhamento transação é maior do que zero, então a profundidade de aninhamento é incrementado por 1, STEP 1120. Além disso, o valor efetivo da operação de ponto flutuante permitir (F) está definido para zero, e o valor efetivo do controlo de filtragem de interrupção de programa (PIFC) mantém-se inalterado, ETAPA 1122. Processamento, em seguida, continua com a ETAPA 1118. Numa concretização, uma iniciação de sucesso dos resultados de transação no código de condição 0. Isto conclui uma concretização da lógica associada a executar uma instrução TBEGINC.
[0341] Numa concretização, a exceção à verificação fornecida acima pode ocorrer de forma variável. Uma ordem particular para a verificação de exceção é a seguinte:
[0342] Exceções com a mesma prioridade que a prioridade de condições interrupção do programa para o caso geral.
[0343] exceção Especificação devido ao campo Bi contendo um valor diferente de zero.
[0344] Abortar devido à profundidade superior a transação de nidificação.
[0345] código de condição 0, devido à conclusão normal.
[0346] Além disso, o seguinte aplica-se em uma ou mais concretizações:
[0347] 1. Registos designados para ser salvo peloregisto geral save máscara só são restaurados se a transação for anulada, não quando a transação termina normalmente por meio de TRANSACTION END. Apenas os registros designados pelo GRSM da instrução TRANSACTION BEGIN mais externa são restaurados em abortar.
[0348] O campo I2 deve designar todos os pares de registro que fornecem valores de entrada que são alterados por uma transação restrita. Assim, se a transação for anulada, os valores de registro de entrada serão restaurados para seus conteúdos originais quando a transação restrita é re-executado.
[0349] 2. Na maioria dos modelos, o desempenho melhorado pode ser realizado, tanto no TRANSACTION BEGIN e quando a transação for anulada, especificando o número mínimo de registros necessários para ser salvo e restaurado no registo geral salvar máscara.
[0350] 3. A seguir ilustra os resultados da transação BEGIN instrução (ambos TBEGIN e TBEGINC) com base na profundidade de aninhamento de transação corrente (TND) e, quando a é diferente de zero TND, se o processador está no modo de execução transacional não restrita ou restrita:Instrução TND = 0TBEGIN Entre no modo transacional de execução não restritaTBEGINC Entre no modo transacional de execução restrita Instrução TND> 0TBEGIN Modo NTX Mode CTXContinuar no modo de execução de transação não restritoexceção de restrição de transaçãoTBEGINC Continuar no modo de execução de transação n]ão restritoexceção de Transação restritatransacional execução exceção modo
Explicação:CTX CPU está no modo de execução restrita transacional-NTX CPU está no modo de execução transacional-não restritoTND Transação profundidade de assentamento no início da instrução.
[0351] Conforme aqui descrito, num aspecto, uma transação restrita tem a garantia de realização, partindo do princípio de que não contém uma condição que o torna incapaz de completar. Para garantir que ela seja concluída, o processador (por exemplo, CPU) irá executar a operação pode tomar certas medidas. Por exemplo, se uma transação restrita tem uma condição de abortar, a CPU pode temporariamente:
[0352] (a) inibir a execução fora de ordem;
[0353] (b) inibir a outros processadores de acessar os locais de armazenamento em conflito;
[0354] (c) induzir atrasos aleatórios em processamento de interrupção; e/ ou
[0355] (d) invocar outras medidas para facilitar aconclusão bem-sucedida.
[0356] Para resumir, o processamento de uma transação é restringida, como se segue:
[0357] • Se já no modo restrito-TX, uma exceção derestrição de operação é reconhecida.
[0358] • Se a corrente de TND (Profundidade do
Aninhamento de Transação)> 0, a execução prossegue como se transação não restrita
[0359] o controle efetivo F definido como zero
[0360] o PIFC efetivo mantém-se inalterado
[0361] Permite o TX não restrita exterior para chamar a função de serviços que podem ou não podem usar TX restrita.
[0362] • Se TND atual = 0:
[0363] o Transaction endereço de bloco de diagnóstico é inválido
[0364] - No TDB especificado-instrução armazenada em abort
[0365] o Transaction-abort PSW conjunto de endereço do
TBEGINC
[0366] - Não é a próxima instrução sequencial
[0367] o pares General-registo designado pela GRSM salvo em um local dependente do modelo não acessível por programa
[0368] 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.
[0369] • Eficaz A = TBEGINC A & A qualquer exterior
[0370] • TND incrementado
[0371] o Se transições TND de 0 a 1, CPU entra no modo de TX restrito
[0372] o contrário, CPU permanece no modo TX não restrito
[0373] • Instrução completa com CC0
[0374] • Exceções:
[0375] a especificação de exceção (PIC (Programa Código Interrupção) 0006) se o campo B i é diferente de zero
[0376] a exceção de operação especial (PIC 0013 hex) se o controle de transações em execução (CR0.8) é zero
[0377] a exceção de restrição de transação (PIC 0018 hex) se emitido no modo TX restrito
[0378] a exceção de operação (PIC 0001), se a facilidade de execução transacional restrita não está instalada
[0379] o Executar exceção (PIC 0003) se a instrução é o alvo de uma execução do tipo de instruções
[0380] o código de aborto 13 se a profundidade de aninhamento excedido
[0381] • Abortar condições em operação restrita:
[0382] O Abort PSW aponta para instrução TBEGINC
[0383] - Não é a instrução que se lhe segue
[0384] - Abortar condição faz com que todo TX para ser re-driven
[0385] * Sem falhar caminho
[0386] o CPU toma medidas especiais para garantir a conclusão bem-sucedida em re-drive Violação
[0387] o Supondo que nenhum conflito persistente, interromper, ou restringida, a transação é assegurada de uma eventual conclusão.
[0388] • Violação de restrição:
[0389] o PIC 0018 hex - indica violação de restrição de operação
[0390] o Ou, transação é executado como se não restrita
[0391] Conforme descrito acima, além de processamento de transações restrita, que é opcional, numa concretização, a facilidade de transação também proporciona processamento de transações não restritas. Mais detalhes sobre o processamento de transações não restritas, e, em particular, o processamento associado a uma instrução TBEGIN são descritas com referência à figura 12. Execução da instrução TBEGIN faz com que a CPU, quer para introduzir ou para permanecer no modo de execução transacional não restrito. A CPU (isto é, o processador) que executa TBEGIN executa a lógica da figura 12.
[0392] Com referência à figura 12, com base na execução da instrução TBEGIN, uma função de serialização (descrito acima) é realizada, PASSO 1200. Após a execução de serialização, é feita uma determinação para saber se uma exceção é reconhecida, PESQUISA 1202. Se assim for, então é a exceção manipulados, STEP 1204. Por exemplo, uma exceção especial operação é reconhecido e a operação é suprimida se o controle de execução transacional, 8 bits de controle de registro 0, é zero. Além disso, uma exceção especificação é reconhecido e a operação é suprimida se a interrupção do programa de controle de filtragem, bits 14-15 do campo I2 da instrução, contém o valor 3; ou o primeiro endereço do operando não designa um limite de palavra dupla. Uma exceção é reconhecida operação e a operação é suprimida, se a facilidade de execução de transação não está instalado na configuração; e uma exceção é reconhecido e executar a operação é suprimida se o TBEGIN é o alvo de uma execução do tipo de instruções. Além disso, se a CPU está no modo de execução transacional restrita, em seguida, uma operação restrita exceção programa exceção é reconhecido e é suprimida a operação. Além disso, se a profundidade de aninhamento de transação, quando incrementado por um, seria superior a um dependente modelo profundidade máxima de aninhamento transação, a transação é abortada com código de aborto 13.
[0393] Ainda para além disso, quando o campo Bi da instrução é diferente de zero e a CPU não está no modo de execução de transação, ou seja, a profundidade de aninhamento de transação for zero, então o armazenamento de acessibilidade para o primeiro operando é determinada. Se o primeiro operando não pode ser acessado para os armazenamentos, em seguida, uma exceção de acesso é reconhecido e a operação é ou anulado, suprimida, ou encerrado, dependendo da condição de acesso de exceção específica. Além disso, qualquer modo de armazenamento por alteração para o primeiro operando é reconhecido. Quando o campo Bi é diferente de zero e a CPU já está no modo de execução de transação, é imprevisível se armazenar a acessibilidade ao primeiro operando é determinada, e eventos de alteração de armazenamento PER são detectados para o primeiro operando. Se o campo Bi é zero, em seguida, o primeiro operando não é acedido.
[0394] Em adição ao controlo exceção, é feita uma determinação sobre se o processador está no modo de execução de transação (ou seja, a profundidade de aninhamento de transações é igual a zero), A MENSAGEM 1206. Se a CPU não está no modo de execução de transação, então o conteúdo do registo geral pares selecionados são guardados, PASSO 1208. Em particular, o conteúdo dos pares de registo geral designada pela registo geral save máscara são salvos em um modelo de localização dependente que não é diretamente acessível pelo programa.
[0395] Além disso, é feita uma determinação para saber se o campo Bi da instrução é zero, A MENSAGEM 1210. Se o campo Bi não é igual a zero, o primeiro endereço do operando é colocado no bloco de endereço de transação de diagnóstico, PASSO 1214, e o endereço do bloco de diagnóstico transação é válido. Além disso, a transação abortar PSW é definido a partir do conteúdo da PSW atual, STEP 1216. O endereço de instrução da transação abortar PSW designa a próxima instrução sequencial (isto é, a instrução após a TBEGIN mais externa).
[0396] Além disso, é feita uma determinação do valor efetivo da (A) controle de permitir a modificação AR, bit 12 do campo I2 da instrução, STEP 1218. O controle A efetivo é a lógica AND do Um controle na instrução TBEGIN para o nível atual e para todos os níveis exteriores. Além disso, um valor efetivo da operação de ponto flutuante permitem controle (F), bit 13 do campo I2 da instrução, é determinado, STEP 1220. O controle efetivo F é a lógica AND do controle F na instrução TBEGIN para o nível atual e para todos os níveis exteriores. Além disso, um valor efetivo da interrupção do programa de controle de filtragem (PIFC), os bits 14-15 do campo I2 da instrução, é determinado, STEP 1222. O valor efetivo controlo das finanças públicas é o maior valor na instrução TBEGIN para o nível atual por todas exterior níveis.
[0397] Além disso, um valor de um é adicionado à profundidade de aninhamento de transação, STEP 1224, e a instrução termina com a criação de código de condição 0, STEP 1226. Se as transições de profundidade de aninhamento transação de zero a um, a CPU entra no modo de execução transacional não restrito; caso contrário, a CPU permanece no modo de execução transacional não restrito.
[0398] Voltando ao inquérito 1210, seBi é igual a zero, então o endereço do bloco de diagnóstico transação é inválido, STEP 1121, e processamento continua com o passo 1218. Da mesma forma, se a CPU está no modo de execução transacional, A MENSAGEM 1206, o processamento continua como passo 1218.
[0399] Resultante Código de condição de execução de TBEGIN incluem, por exemplo:
[0400] 0 Transação iniciação bem-sucedida
[0401] 1
[0402]2
[0403] 3
[0404] Exceções de programa incluem, por exemplo:
[0405] • Acesso (loja, primeiro operando)
[0406] Operação (facilidade de execução transacional não for instalado)
[0407] •Operação Especial
[0408] • Especificação
[0409] restrição de Transação (devido a instrução restrito)
[0410] Numa concretização, a exceção à verificação fornecida acima pode ocorrer de forma variável. Uma ordem particular para a verificação de exceção é a seguinte:
[0411] • Exceções com a mesma prioridade que a prioridade de condições interrupção do programa para o caso geral.
[0412] • exceção Especificação devido ao valor PIFCreservada.
[0413] • exceção Especificação devido ao primeiroendereço operando não em um limite de palavras duplas.
[0414] • exceção Access (quando o campo Bi é diferente de zero).
[0415] • Abortar devido à transação superior aprofundidade máxima de nidificação.
[0416] • Código de Condição 0 devido à conclusão normal.
[0417] Notas:
[0418] 1. Quando o campo Bi é diferente de zero, éaplicável o seguinte:
[0419] • Um bloco de diagnóstico transação acessível (TDB), deve ser fornecida quando uma transação mais externa é iniciada - mesmo se a transação não aborta.
[0420] • Uma vez que é imprevisível saber se aacessibilidade do TDB é testada para transações aninhadas, uma TDB acessíveis devem ser fornecidos por qualquer instrução TBEGIN aninhada.
[0421] • O desempenho de qualquer TBEGIN em que o campo Bi é diferente de zero, e o desempenho de qualquer processamento abort que ocorre em uma transação que foi iniciada por um TBEGIN ultra periférica em que o campo Bi é diferente de zero, pode ser mais lenta do que quando a Bi campo é zero.
[0422] 2. Registos designados para ser salvo pelogeneral registar salvar máscara são apenas restaurado, numa concretização, se a transação for anulada, não quando a transação termina normalmente por meio de transação de ponta. Apenas os registros designados pelo GRSM da transação mais externa BEGIN instruções são restaurados em abortar.
[0423] O campo h deve designar todos os pares de registro que fornecem valores de entrada que são alterados pela transação. Assim, se a transação for anulada, os valores de registro de entrada serão restaurados para seus conteúdos originais quando o manipulador de interrupção é inserido.
[0424] 3. A transação BEGIN (TBEGIN) instrução deverá ser seguida por uma instrução condicional ramo que vai determinar se a operação foi iniciada com êxito.
[0425] 4. Se uma transação é abortada devido a condições que não resultam em uma interrupção, a instrução designada pela transação abortar PSW recebe controle (ou seja, a instrução após a transação mais externa BEGIN (TBEGIN)). Além do código de condição definido pela transação BEGIN (TBEGIN) instrução, códigos de condição 1-3 são também definir quando uma transação for anulada.
[0426] Portanto, a sequência de instruções Após a operação mais exterior BEGIN (TBEGIN) de instruções deve ser capaz de acomodar todos os quatro códigos de condição, mesmo que a instrução TBEGIN código define apenas 0, neste exemplo.
[0427] 5. Na maioria dos modelos, o desempenho melhorado pode ser realizado, tanto no TRANSAÇÃO BEGIN e quando a transação for anulada, especificando o número mínimo de registros necessários para ser salvo e restaurado no registo geral salvar máscara.
[0428] 6. Enquanto no modo de execução transacional não restrito, um programa pode chamar uma função de serviços que podem alterar registros de acesso ou registradores de ponto flutuante (incluindo o registro de controle de ponto flutuante). Embora tal rotina serviço pode salvar os registros alterados em matéria de entrada e restaurá-los na saída, a operação pode ser cancelada antes da saída normal da rotina. Se o programa de chamada não prevê a preservação destes registos, enquanto a CPU está no modo de execução transacional não restrito, pode não ser capaz de tolerar alteração da função de serviço dos registos.
[0429] Para evitar a alteração inadvertida de registros de acesso, enquanto no modo de execução transacional não restrito, o programa pode definir a permitir o controle modificação AR, bit 12 do campo I2 da transação BEGIN instrução, para zero. Da mesma forma, para impedir a alteração inadvertida de registros de ponto flutuante, o programa pode definir o controle permitem flutuante operação de ponto, bit 13 do campo I2 da instrução TBEGIN, para zero.
[0430] 7. condições de exceção Programa reconhecido durante a execução da TRANSACTION BEGIN (TBEGIN) instrução estão sujeitos ao controle de filtragem interrupção programa eficaz definir a quaisquer instruções TBEGIN exteriores. Condições exceção de programa reconhecidas durante a execução da instrução TBEGIN mais externa não estão sujeitos a filtragem.
[0431] 8. Para atualizar vários locais de armazenamento de uma forma serializada, sequências de códigos convencionais podem empregar uma palavra de bloqueio (semáforo). Se (a) execução transacional é usado para implementar atualizações de vários locais de armazenamento, (b) o programa também fornece um caminho de "fall-back" para ser invocada se a transação for anulada, e (c) o caminho fallback emprega uma palavra de bloqueio, em seguida, o caminho de execução transacional deve também testar a disponibilidade da fechadura, e, se o bloqueio não estiver disponível, terminar a transação por meio da instrução TRANSACTION END e ramo para o caminho de volta queda. Isso garante acesso consistente aos recursos serializados, independentemente se eles são atualizados transacional.
[0432] Alternativamente, o programa poderia abortar se o bloqueio não está disponível, no entanto, o processamento de abortar pode ser significativamente mais lento do que simplesmente acabar com a transação via TEND.
[0433] 9. Se o efetivo controle filtragem interrupção do programa (PIFC) é maior do que zero, o CPU filtra a maioria das interrupções do programa de exceção de dados. Se a efetiva permitir a operação de ponto flutuante de controle (F) for zero, o código de exceção de dados (DXC) não será definido no registro de controle de ponto flutuante, como resultado de um aborto devido a uma condição de exceção programa exceção de dados. Nesse cenário (filtragem e aplica- se a um controlo efetivo F é zero), o único local em que o DXC é inspecionado está no TBEGIN- especificado TDB. Se manipulador de interrupção do programa é para inspecionar o DXC em tal situação, cadastre-geral Bi deve ser diferente de zero, de tal forma que um endereço de bloco de diagnóstico de transação válido (TDBA) está definido.
[0434] 10. Se uma alteração de armazenamento PER ou zero condição detecção de endereço existe para o TBEGIN- specifled TDB da instrução TBEGIN mais externa, e supressão evento PER não se aplica, o evento PER é reconhecido durante a execução da instrução, provocando assim que a transação seja abortada imediatamente, independentemente de qualquer outra condição abort existe.
[0435] Numa concretização, a instrução TBEGIN implicitamente define a transação abortou endereço para a próxima instrução sequencial seguinte do TBEGIN. Este endereço destina-se a ser uma instrução de ramificação condicional que determina se ou não a ramificar dependendo do código de condição (CC). A TBEGIN sucesso define CCO, ao passo que uma transação abortada define CCl, CC2, CC3 ou.
[0436] Numa concretização, a instrução TBEGIN fornece um operando de armazenamento opcional designando o endereço de um bloco de transação de diagnóstico (TDB), no qual a informação é armazenada se a transação for abortada.
[0437] Além disso, ele fornece um operando imediato incluindo o seguinte:
[0438] A cadastre-se salvar máscara geral (GRSM) indicando que pares de registos gerais estão a ser salvo no início da execução transacional e restaurado se a transação for abortada;
[0439] Um pouco (A) para permitir o aborto da transação se a transação modifica registos de acesso;
[0440] Um pouco (F) para permitir o aborto da transação se a transação tenta executar instruções de ponto flutuante; e
[0441] A interrupção do programa de controle de filtragem (PIFC) que permite que os níveis de transação individuais para ignorar a apresentação real de uma interrupção de programa, se a transação for anulada.
[0442] Os controles A, F, e controlo das finanças públicas pode ser diferente em vários níveis de nidificação e restaurado para o nível anterior, quando os níveis de transação internas são terminou.
[0443] Além disso, o TBEGIN (ou noutra concretização, TBEGINC) é utilizado para formar um símbolo de transação. Opcionalmente, o testemunho pode ser combinado com um sinal formado pela instrução TEND. Para cada instrução TBEGIN (ou TBEGINC), como um exemplo, um sinal é formado a partir do primeiro endereço do operando. Esse sinal pode ser formado independente de se o registo de base é zero (ao contrário de definição do endereço TDB o que só ocorre quando a base cadastral é diferente de zero). Para cada instrução TRANSACTION END executado com um registo de base diferente de zero, um símbolo similar é formado a partir de seu operando armazenamento. Se os sinais não forem iguais, uma exceção de programa pode ser reconhecida para alertar o programa de uma instrução desemparelhado.
[0444] token correspondente fornece um mecanismo destinado a melhorar a confiabilidade do software, garantindo que uma declaração TEND está devidamente emparelhado com um TBEGIN (ou TBEGINC). Quando uma instrução de TBEGIN é executada a um nível de assentamento em particular, um sinal é formado a partir do endereço do operando de armazenamento que identifica neste caso de uma transação. Quando uma instrução correspondente TEND é executado, um sinal é formado a partir do endereço do operando de armazenamento de instruções, e o processador compara o sinal para começar o nível de sobreposição com o sinal final. Se os sinais não forem iguais, uma condição de exceção é reconhecida. Um modelo pode implementar correspondência token para apenas um determinado número de níveis de sobreposição (ou de nenhum nível de aninhamento). O sinal pode não envolver todos os bits do endereço do operando de armazenamento, ou os bits podem ser combinados através de hashing ou outros métodos. Um símbolo pode ser formado pela instrução TBEGIN mesmo que a sua operando de armazenamento não é acedido.
[0445] Para resumir, uma operação de processamento de não restrita é, como se segue:
[0446] Se TND = 0:
[0447] o Se Bi ^ 0, a transação de diagnóstico endereço de bloco definido a partir de primeiro endereço operando.
[0448] o de abortar transação PSW definido para a próxima instrução sequencial endereço.
[0449] o pares de registro geral designado pelo h campo são salvos na modelagem de localização dependente.
[0450] Não diretamente acessível pelo programa
[0451] Controles eficazes PIFC, A & F calculado
[0452] o Eficaz A = TBEGIN A & A qualquer exterior
[0453] o efetivo F = TBEGIN F & F qualquer exterior
[0454] PIFC efetiva = max (TBEGIN CIFP, qualquer CIFP exterior)
[0455] Profundidade de aninhamento de transação (TND) incrementado
[0456] • Se transições TND de 0 a 1, CPU entra no modo de execução transacional
[0457] • Código de Condição definido como zero
[0458] o Quando instrução seguinte TBEGIN recebe controle:
[0459] - o sucesso TBEGIN indicado por CC0
[0460] - Aborted transação indicado pelo CC diferente de zero
[0461] • Exceções:
[0462] o Abort código 13 se a profundidade de aninhamento excedido
[0463] exceção o Access (um dos vários PICs) se o campo B i é diferente de zero, e o operando de armazenamento não podem ser acessados por uma operação de loja
[0464] o Executar exceção (PIC 0003) se a instrução TBEGIN é o alvo de uma execução do tipo de instruções
[0465] o Operação exceção (PIC 0001), se a facilidade de execução transacional não está instalada
[0466] o PIC 0006 se qualquer
[0467] - PIFC é inválido (valor de 3)
[0468] - endereço do segundo operando não doubleword alinhados
[0469] o PIC 0013 hex se o controle transacional execução (CR0.8) é zero
[0470] o PIC 0018 hex se emitido no modo TX restrito
[0471] Como indicado acima, uma transação, seja restringida ou não restrita, pode ser encerrado por um TRANSACTION END (TEND) instrução. Mais detalhes sobre o processamento de uma transação final (TEND) instruções são descritas com referência à figura 13. A CPU (isto é, o processador) executar o TEND executa a lógica da figura 13.
[0472] Com referência à figura 13, inicialmente, com base na obtenção de processador (por exemplo, ir buscar, receber, etc.), a instrução TEND, vários exceção verificação é realizada e, se houver uma exceção, PESQUISA 1300, em seguida, a exceção é tratada, PASSO 1302. Por exemplo, se o TRANSACTION END é o alvo de uma execução do tipo de instrução, a operação é suprimida e uma exceção executar é reconhecida; e uma exceção especial operação é reconhecido e a operação é suprimida se o controle de execução transacional, 8 bits de CR0, é zero. Ainda para além disso, uma exceção é reconhecida operação e a operação é suprimida, se a facilidade de execução de transação não está instalada na configuração.
[0473] Voltando ao inquérito de 1300, se uma exceção não for reconhecido, então a profundidade de aninhamento transação é reduzido (por exemplo, por um), STEP 1304. A determinação é feita para saber se a profundidade de aninhamento de transação é zero após o decremento, PESQUISA 1306. Se a profundidade de aninhamento transação é zero, então toda o armazenamento de acessos feito pela transação (e outras transações dentro do ninho de transações, se houver, de que esta transação é uma parte) estão comprometidos, STEP 1308. Além disso, a CPU deixa o modo de execução transacional, STEP 1310, e completar as instruções, STEP 1312.
[0474] Voltando ao inquérito 1306, se a profundidade de aninhamento de transação não é igual a zero, então a instrução TRANSACTION END apenas concluída.
[0475] Se a CPU estiver no modo de execução da transação no início da operação, o código de condição é definido como 0; caso contrário, o código de condição é definido como 2.
[0476] Note-se que a efetiva permitir a operação de ponto flutuante (F) controle, permitem a modificação AR (A) controle e interrupção do programa de controlo (PIFC) filtrar são repostas para os respectivos valores antes da operação começar a instrução que iniciou o nível sendo encerrado. Além disso, uma função de serialização é realizada após a conclusão da operação.
[0477] Os eventos PER fetch instrução e finais transação que são reconhecidas na conclusão da instrução TRANSACTION END ultra periférica não resultar na transação que está sendo abortado.
[0478] Emum exemplo, a instrução TEND também inclui um campo de base B2 e um campo de deslocamento D2, que são combinados (por exemplo, adicionado) para criar um segundo endereço do operando. Neste exemplo, correspondente sinal pode ser realizado. Por exemplo, quando B2 é diferente de zero, os bits selecionados de o segundo endereço do operando são comparados com um sinal de transação formado pela TBEGIN correspondente. Se houver uma incompatibilidade, não é uma exceção (por exemplo, PIC 0006).
[0479] Em adição ao acima, uma transação pode ser interrompida, implícita ou explicitamente por uma instrução de abortar transação. Anulando uma transação por TABORT ou de outra forma inclui a realização de uma série de etapas. Um exemplo das etapas de processamento de interrupção, em geral, é descrito com referência à figura 14. Se houver uma diferença no processamento com base em se o abortamento é iniciada por TABORT ou caso contrário, é indicado na descrição abaixo. Num exemplo, um processador (por exemplo, CPU) está a executar a lógica da figura 14.
[0480] Com referência à figura 14, inicialmente, com base na execução da instrução TABORT ou um abort implícita, loja não transacional acessos feitos enquanto a CPU estava no modo de execução transacional estão comprometidos, Passo 1400. Outros armazenamentos (por exemplo, armazenamentos transacionais) feitas enquanto a CPU foi no modo de execução transacional são descartados, STEP 1402.
[0481] A CPU deixa o modo de execução transacional, STEP 1404, e armazenamentos subsequentes ocorrem não- transacional. A PSW corrente é substituído como conteúdo da transação abortou PSW, exceto que o código de condição é definido tal como descrito acima (para além da situação que se segue, na qual se TDBA é válido, mas o bloqueio é inacessível, então CC = 1), PASSO 1406. Como parte posterior ou para abortar o processamento, ramos de processamento da transação abortar PSW local especificado para executar uma ação. Em um exemplo em que a operação é uma operação restrita, a localização é a instrução TBEGINC e a ação é re- execução dessa instrução; e em um outro exemplo em que a transação éuma transação não restrita, o local éa instrução após TBEGIN, e a ação é a execução da referida instrução, o qual pode ser, por exemplo, uma ramificação para um manipulador de interrupção.
[0482] Em seguida, é feita uma determinação para saber se o endereço do bloco de diagnóstico operação é válida, PESQUISA 1408. Quando o endereço do bloco de diagnóstico operação é válida, a informação de diagnóstico para identificar o motivo para a abortar e os conteúdos dos registos gerais são armazenados em o bloco de diagnóstico de transação especificado-TBEGIN, STEP 1410. Os campos TDB armazenados e condições em que estão armazenadas são as descritas acima com referência ao bloco de diagnóstico transação.
[0483] Se o endereço do bloco de diagnóstico transação é válido, mas o bloco tornou-se inacessível, após a execução da instrução TBEGIN mais externa, o bloco não está acessível, e aplica-se o código de condição 1.
[0484] Para transações que são abortadas devido a condições de exceção programa que resultam em uma interrupção, a TDB interrupção do programa é armazenado.
[0485] Voltando ao inquérito 1408, se a transação endereço de bloco de diagnóstico não é válido, não especificado-TBEGIN TDB são armazenados e código de condição aplica-se 2 ou 3, dependendo da razão para abortar.
[0486] Além do acima, a transação nidificação profundidade é definido igual a zero, STEP 1412. Além disso, quaisquer pares de registro gerais designados para serem salvos pela instrução TBEGIN mais externa são restauradas, STEP 1414. pares Cadastro Geral que não foram designados para ser salvo pela instrução TBEGIN ultra periférica não são restaurados quando uma transação é abortada.
[0487] Além disso, uma função de serialização é realizada, PASSO 1416. Uma função ou operação de serialização inclui completando todo o armazenamento anterior concepcionalmente acessos (e, para o z/Architecture, como exemplo, as configurações de bit bit de referência relacionados e mudar) pelo processador, como observado por outros CPUs e pelo subsistema de I/O, antes de acessar o armazenamento concepcionalmente subsequente (e definições de bits de referência e alteração de bit relacionados) ocorrem. Efeitos de serialização a sequência de toda a CPU acessa a armazenagem e as chaves de armazenamento, exceto para aqueles associados com a entrada da tabela de ART e DAT atraente entrada da tabela.
[0488] Conforme observado por um processador no modo de execução transacional, serialização opera normalmente (tal como descrito acima). Tal como observado por outros CPU e o subsistema I/O, uma operação de serialização realizada com uma CPU está no modo de execução transacional ocorre quando o processador sai do modo de execução de transações, quer como resultado de uma instrução de transação de ponta que diminui a transação profundidade de aninhamento de zero (que termina normal) ou como um resultado da operação a ser abortada.
[0489] Para o processamento abort iniciado exceto por TABORT, se a transação for abortada devido a uma condição de exceção que resulta em uma interrupção, A MENSAGEM 1418, códigos de interrupção ou parâmetros associados com a interrupção são armazenadas nos locais de armazenamento atribuídos correspondentes ao tipo de interrupção, STEP 1420. Além disso, a PSW atual, conforme estabelecido acima, é armazenado na antiga PSW interrupção, STEP 1422. Daí em diante, ou se a operação não foi abortada devido a uma condição de exceção, que resultou em uma interrupção, as extremidades de instrução com o código de condição de zero.
[0490] Em adição ao acima, numa concretização para a execução da interpretativa z/Architecture, quando o processador está no modo de execução transacional, e uma condição de convidado ocorre que normalmente resultam em códigos de interceptação 4, 12, 44, 56, 64, 68 ou 72, a interceptação não ocorre. Em vez disso, a CPU permanece no modo de execução interpretativa, e as condições de abortagem são indicados para o hóspede como se segue:
[0491] • Para uma transação não restrita, a transação é abortada devido a um restrito instrução (abortar código 11). Se um evento PER concorrente foi detectado eo CPU está habilitado para PER, numa interrupção do programa ocorre com o código de interrupção 0280 hex.
[0492] • Para uma operação restrita, uma exceção de restrição de transação é reconhecido. Se um evento PER concorrente foi detectado e o CPU está habilitado para PER, numa interrupção do programa ocorre com o código de interrupção 0298 hex.
[0493] Quando uma transação é abortada devido a uma condição de exceção programa, filtragem de interrupção do programa pode inibir a apresentação de uma interrupção. Para interrupções de programas que podem resultar em intercepção, a filtragem também inibe a intercepção.
[0494] Conforme indicado acima, de acordo com um aspecto, quando um programa inicia uma transação não restrita (isto é, uma transação para a qual uma rotina de recuperação de manipulador de interrupção é fornecida), o programa pode designar um local de armazenamento no qual as informações de diagnóstico é a ser gravado se anula a transação. Informações de diagnóstico também pode ser fornecido, se uma transação é abortada devido a uma interrupção do programa ou se os resultados Abortar em uma interceptação execução interpretativo, como a intercepção programa de interrupção.
[0495] Numa concretização, com base em um abortar de uma transação, a informação de diagnóstico é proporcionado num bloco de diagnóstico transação (TDB). A informação inclui, por exemplo:transação profundidade de nidificação; transação abortar código; token de conflito (por transações que são abortadas devido a conflitos); abortando endereço de instrução transação; parâmetros de interrupção do programa para as operações que são abortadas devido a condições de exceção programa filtrada; modelo de informações de diagnóstico dependente; finalidade geral regista no momento da Abortar; e/ ou outras informações, tal como descrito acima com referência à figura 9.
[0496] Zero, um ou dois TDBs podem ser armazenados em um aborto, incluindo: a TDB especificado pelo programa (aka, TBEGIN-TDB), que podem ou não estar presentes para uma transação não restrita; um programa de interrupção de TDB fornecida para o programa de controlo, quando uma transação é abortada devido a uma condição de não-filtrada exceção de programa (isto é, uma condição que, na verdade resulta numa interrupção do programa); e/ ou um TDB interceptação fornecida a um programa hospedeiro (por exemplo, sistema operacional) quando uma transação é abortada devido a determinadas condições de interceptação.
[0497] Uma concretização do processamento associado com o armazenamento de zero ou mais TDBs é descrito com referência à figura 15. Esta lógica é executada por um processador, tal como o processador de detecção de uma condição de interrupção.
[0498] Com referência à figura 15, inicialmente um aborto (ie, um fim anormal) de uma transação for detectado, STEP 1500. A partir daí, é feita uma determinação sobre se um endereço de bloco de diagnóstico de transação válido (TDBA) foi especificado, PESQUISA 1502. Por exemplo, é o endereço de um bloco de diagnóstico de transação válido especificado por uma instrução TBEGIN (por exemplo, Bi de TBEGIN> 0). Se um TDBA válido é fornecido, a informação é armazenada na TDB especificado pelo programa, tal como descrito acima, o passo 1504.
[0499] Em seguida, ou se um TDBA válido não é fornecida, uma nova determinação é feita para saber se a condição de abortar é devido a uma interrupção, PESQUISA 1506. Se assim for, então a informação é armazenada no programa de interrupção TDB, conforme acima indicado, STEP 1508.
[0500] Em seguida, ou se o abortar não é devido a uma interrupção de programa, é feita uma determinação para saber se a abortar resultou em uma intercepção, PESQUISA 1510. Se o abortar não resultou em uma intercepção, esta transformação é completa. Caso contrário, a informação é armazenada numa intercepção TDB, conforme descrito acima, o passo 1512. Isto conclui processamento.
[0501] Conforme indicado, um ou mais TDBs ou mesmo nenhum TDBs pode ser armazenado como um resultado de um aborto. No entanto, cada TDB que é armazenada fornece a informação de diagnóstico relacionada com a abortar que pode facilitar a depuração.
[0502] Em adição ao fornecimento de informação de diagnóstico abrangente, como descrito acima, tamb proporcionado um meio eficiente de atualizar múltiplos, objetos adjacentes na memória sem clássico serialização (curso de granulação), tais como bloqueio, que fornece um potencial para significativos melhoria de desempenho multiprocessador. Ou seja, múltiplos, objetos adjacentes são atualizadas 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. Execução especulativa é fornecido sem configuração de recuperação rígida, e as operações restritas são oferecidos para atualizações simples, pequena pegada.
[0503] 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. TABORT 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.
[0504] Conforme por elisão de bloqueio, um exemplo do seu uso é descrito com referência às figuras 16A-16B e o fragmento de código fornecido abaixo.
[0505] A figura 16A mostra uma lista duplamente ligada 1600 de uma pluralidade de elementos de fila 1602A-1602d. Um novo elemento 1602e fila é para ser inserida na lista duplamente ligada de elementos de filas 1600. Cada elemento fila 1602A-1602e inclui um ponteiro para a frente 1604A- 1604e e um ponteiro para trás 1606a-1606e. Como mostrado na figura 16B, para adicionar elemento fila 1602e entre elementos de fila 1602b e 1602c, (1) para trás 1606e ponteiro está definido para apontar para a fila elemento 1602b, (2) ponteiro para a frente 1604e está definido para apontar para a fila elemento 1602c, (3) para trás 1606c ponteiro está definido para apontar para a fila elemento 1602e, e (4) para a frente 1604b ponteiro está definido para apontar para a fila elemento 1602e.
[0506] Um exemplo de código fragmento correspondente àsfiguras 16A-16B é abaixo:
[0507] * RL - endereço do novo elemento da fila a ser inserido.
[0508] * R2 - endereço do ponto de inserção; novo elemento é inserido antes do elemento apontada por R2.
[0509] NOVO USANDO QEL, Rl
[0510] CURR USANDO QEL, R2
[0511] LHI R15, contagem de repetição 10 Load.
[0512] LOOP TBEGIN TDB, X'COOO 'Begin transação (salvar RGs 0-3)
[0513] JNZ ABORTED Nonzero CC significa abortado.
[0514] LG R3, CURR.BWD Ponto para o elemento anterior.
[0515] PREV USANDO QEL, R3 Torná-lo endereçável.
[0516] STG Rl, PREV.FWD atualização anterior. ptr para a frente.
[0517] STG Rl, curr Atualização CURR.BWD. ptr para trás.
[0518] STG R2, NEW.FWD Atualização nova ptr para a frente.
[0519] STG R3, NEW.B WD Atualização nova ptr para trás.
[0520] TEND transação End.
[0522] ABORTED NÃO TENTE CC3: abort Nonretryable.
[0523] JCT R15, transação LOOP Repetir algumas vezes.
[0524] J NO REPET Nenhuma alegria após 1 Ox; fazê-lo da maneira mais difícil.
[0525] Em um exemplo, se a transação for usado para elisão bloqueio, mas o caminho fallback usa um bloqueio, a operação é, pelo menos, buscar a palavra de bloqueio para ver que ele está disponível. O processador garante que a transação for anulada, se outra CPU acessa o bloqueio não- transacional.
[0526] 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 ou explicitamente pelo uso. Além disso, embora numa concretização, atrasando de forma eficaz 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.
[0527] 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. maior do que o comprimento do campo a ser armazenado.
[0551] 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 quadword é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Um octoword é um grupo de 32 bytes consecutivos emum limite de 32 bytes. Quando os endereços de armazenamento designar meias palavras, palavras, palavras duplas, quadwords e palavras octo, a representação binária do endereço contém um, dois, três, quatro, cinco ou 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.
[0552] 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 o armazenamento altera as instruções que são posteriormente buscado.
[0553] Emum exemplo, concretizações pode ser praticada por software (por vezes referido código licenciado interna, firmware, microcódigo, Mili-código, do pico do código e semelhantes, qualquer um dos quais seria consistente com uma ou mais concretizações). Com referência à figura 18, o código de programa de software que incorpora um ou mais aspectos 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 sistema de processamento de dados, tais como um disquete, um disco rígido ou um CD- ROM. O código pode ser distribuído em tais meios, ou pode ser distribuído aos usuários 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.
[0554] O código de programa de software inclui um sistema operacional 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 lida por um circuito de processamento, de preferência um sistema de computador para a execução pelo circuito de processamento.
[0555] A figura 19 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 19 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 5021 de 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.
[0556] 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 clientI/Oervidor acordo com um outro computador, etc. Todas estas configurações, bem como o hardware e o software de comunicações apropriado, são conhecidos na arte.
[0557] A figura 20 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.
[0558] Ainda com referência à figura 20, 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 implementado utilizando um servidor z IBM eServer System disponibilizado pela International Business Machines Corporation.
[0559] Com referência simultaneamente a figura 19 e figura 20, 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.
[0560] Em alternativa, o código de programação pode ser incorporada na memória 5025, e acedido pelo processador 5026 usando a linha omnibus do processador. Tal código de programação inclui um sistema operacional que controla a função e a interação de vários componentes do computador e um ou mais programas de aplicações 5032. O código de programa é normalmente paginado dos meios de armazenamento 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 conhecidas e não serão mais aqui discutidos. 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.
[0561] 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 emum 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.
[0562] Com referência à figura 21, 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 operacional.
[0563] 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 é tipicamente consubstanciado num 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 operacional (mudança de contexto a partir do ambiente do programa para o ambiente do sistema operacional). 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.
[0564] 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.
[0565] As instruções são buscadas em seguida, executado pelo processador 5026. Numa concretização, a instrução buscada (s) são passadas 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 arquitetados registos 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).
[0566] endereços virtuais são transformados em endereços reais utilizando tradução dinâmica de endereços 5062 e, opcionalmente, usando registo de acesso tradução 5063.
[0567] 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 22A, uma unidade de execução 5057 pode comunicar com 5081 registos 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 registo 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. 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 registo 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.
[0568] 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 registos 5059 identificadas pelo registo dos campos de instruções.
[0569] 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 registo ou um dos dois registos de código. A unidade de execução utiliza de preferência uma unidade aritmética lógica (ALU) 5066 que é capaz de realizar 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 de 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 precisa 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.
[0570] Com referência à figura 22B, 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á obtido e especulativamente executado 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 que tem uma pluralidade de circuitos de registador de entrada 5075, 5076, 5077 e um circuito de registo de saída 5080. A unidade de ramificação 5058 pode comunicar com registos gerais 5059, 5056 decodificação unidade de despacho ou outros circuitos de 5073, por exemplo.
[0571] 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 operacional, 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.
[0572] 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 registos de uso geral ou de registos para fins especiais (registradores de ponto flutuante por exemplo). A instrução pode utilizar registos 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 registo, um campo de imediato, ou uma combinação de registros e campo imediato como exemplificado pelo / Arquitetura facilidade z longo deslocamento em que a instrução define um registo 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.
[0573] Com referência à figura 22C, 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 registo 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 registo 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 5084 com registos gerais 5059, unidade de decodificação / expedição 5056, interface de cache / memória 5053 ou outros elementos 5083 e compreende vários circuitos de registo 5086, 5087, 5088 e 5089, ALUs 5085 e lógicos de controle 5090 para calcular endereços de armazenamento e 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.
[0574] De preferência aborda um programa de aplicação que "vê" são muitas vezes referidos como endereços virtuais. "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 melhorado 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. 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).
[0575] No caso em que o processador é um processador de um sistema multi-processador, 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 exclusiva, um estado alterado, um estado inválido e semelhantes, a fim de facilitar a partilha.
[0576] Eu unidades de I/O 5054 (figura 21) 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 da 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.
[0577] 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 arquitetados, tais como a conversão de endereços, e os registos 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.
[0578] 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 registo; ou executar algum tipo de operação aritmética ou lógica, como determinado pela unidade de descodificação. Num exemplo, cada unidade é implementado em software. Por exemplo, as operações sendo executadas pelas unidades são implementadas como uma ou mais sub-rotinas no software emulador.
[0579] Mais particularmente, de uma unidade central, instruções 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 emulação por Hercules, UMX, ou FSI (Fundamental Software, Inc), em que geralmente está em execução 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.
[0580] 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, registos de controlo, registos de uso geral, flutuante registos 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.
[0581] Uma instrução específica a ser emulado é descodificado, 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 ", por et al Davidian; e Letras patente US No. 6.308.255, intitulada" Symmetrical Multiprocessamento 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 Letras patente US No. 6.463.582, intitulada" Dinâmica 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.
[0582] Na figura 23, 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 facilidades 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 registos 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'.
[0583] 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.
[0584] 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. Muitos 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 (9)

1. Sistema de computador para fornecer informações de diagnóstico sobre abortamento de transação, o sistema de computador compreende: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:detectar, por um processador, um abortamento de uma transação, a transação que compreende uma ou mais instruções;caracterizado pelo fato de que determinar, pelo processador, se a informação de diagnóstico é para ser armazenada em um bloco de diagnóstico de transação (900) com base no abortamento; ecom base na determinação indicando informação de diagnóstico a ser armazenada, armazenar informação de diagnóstico (912) no bloco de diagnóstico de transação, a informação de diagnóstico, incluindo um endereço de uma instrução que estava sendo executada quando o abortamento foi detectado, o endereço da instrução dependendo de uma razão para o abortamento da transação, a razão prevista num código de abortamento (908), e em que: com base no código de abortamento que tem um primeiro valor de um ou mais primeiros valores, a informação de diagnóstico, incluindo um endereço de uma instrução que foi executada quando o abortamento foi detectado; com base no código de abortamento tendo um segundo valor de um ou mais segundos valores e a condição de exceção do programa não sendo nulificante, a informação de diagnóstico, incluindo um endereço de uma instrução que é posterior à execução de instruções quando a abortamento foi detectado; e com base no código de abortamento com um terceiro valor de um ou mais terceiros valores de, a informação de diagnóstico, incluindo um endereço de uma instrução que é anterior ou posterior do que a execução de instruções quando a abortamento foi detectado.
2. Sistema de computador de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco de diagnóstico transação compreende ainda um ou mais dos seguintes: uma profundidade de aninhamento de transação, um código de abortamento de transação, um token de conflito, um ou mais parâmetros de interrupção do programa, o conteúdo de um ou mais registradores de propósito geral no momento do abortamento, e informação de diagnóstico dependente do modelo.
3. Sistema de computador de acordo com a reivindicação 2, caracterizado pelo fato de que o bloco de transação compreende ainda um ou mais dos seguintes: uma identificação de acesso de exceção, um código de dados de exceção, uma identificação de interrupção do programa, uma identificação de exceção de transação, e um endereço de evento de quebra.
4. Sistema de computador de acordo com a reivindicação 2, caracterizado pelo fato de que o método compreende ainda a execução de uma instrução de abortamento da transação para abortar a transação, a instruções de abortamento da transação especificando o código de abortamento da transação.
5. Sistema de computador de acordo com a reivindicação 1, caracterizado pelo fato de que a determinação compreende determinar se um endereço de um bloco de diagnóstico de transação válida é fornecido numa instrução para começar transação, em que com base em um endereço de bloco de diagnóstico de transação válido ser fornecido, a informação de diagnóstico é armazenada em um bloco de diagnóstico de transação especificado pelo programa, a instrução para começar transação inicia uma transação sem restrição, a transação sem restrição sendo uma operação externa, e em que a determinação se o endereço de um bloco de diagnóstico de transação válido é fornecido inclui a verificação de um campo base da instrução para começar transação da transação mais externa, onde um campo de base diferente de zero indica um endereço de bloco de diagnóstico de transação válida.
6. Sistema de computador de acordo com a reivindicação 1, caracterizado pelo fato de que há uma pluralidade de tipos de blocos de diagnóstico de transação, e em que o armazenamento compreende a determinação de onde a pluralidade de tipos de blocos de diagnóstico deve ser armazenada, a determinação compreendendo:verificar se o endereço de um bloco de diagnóstico de transação válido é fornecido em uma instrução para começar transação, e com base na verificação indicando um endereço de bloco de diagnóstico de transação válido, a determinação indicando onde o bloco de diagnóstico de transação especificado pelo programa deve ser armazenada;verificar se o abortamento é devido a um abortamento, e com base no abortamento ser devido a um abortamento, a determinação indicando onde um abortamento de programa de bloco de diagnóstico de transação deve ser armazenado; everificar se o abortamento é devido a uma condição de interceptação e com base no dito abortamento ser devido à condição de interceptação, e a determinação adicionalmente indicar onde um bloco de diagnóstico de transação de interceptação deve ser armazenado.
7. Método para fornecer informações de diagnóstico sobre abortamentos de transação, o método compreende:detectar, por um processador, um abortamento de uma transação, a transação que compreende uma ou mais instruções;caracterizado pelo fato de que determinar, pelo processador, se a informação de diagnóstico é para ser armazenada em um bloco de diagnóstico de transação (900) com base no abortamento; ecom base na determinação indicando informação de diagnóstico a ser armazenada, armazenar informação de diagnóstico (912) no bloco de diagnóstico de transação, a informação de diagnóstico, incluindo um endereço de uma instrução que estava executando quando o abortamento foi detectado, o endereço da instrução dependendo de uma razão para o abortamento da transação, a razão prevista num código de abortamento, e em que: com base no código de abortamento que tem um primeiro valor de um ou mais primeiros valores, a informação de diagnóstico, incluindo um endereço de umainstrução que foi executada quando o abortamento foidetectado; com base no código de abortamento ter um segundovalor de um ou mais segundos valores e a condição de exceçãode programa não sendo nulificante, a informação de diagnóstico, incluindo um endereço de uma instrução que é posterior à execução de instruções quando a abortamento foi detectado; e com base no código de abortamento com um terceiro valor de um ou mais terceiros valores de, a informação de diagnóstico, incluindo um endereço de uma instrução que é anterior ou posterior do que a execução de instruções quando a abortamento foi detectado.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que a determinação compreende determinar se um endereço de um bloco de diagnóstico de transação válida é fornecido numa instrução para começar transação, em que com base em um endereço de bloco de diagnóstico de transação válido ser fornecido, a informação de diagnóstico é armazenada em um bloco de diagnóstico de transação especificado pelo programa, a instrução para começar transação inicia uma transação sem restrição, a transação sem restrição sendo uma operação externa, e em que a determinação se o endereço de um bloco de diagnóstico de transação válido é fornecido inclui a verificação de um campo base da instrução para começar transação da transação mais externa, onde um campo de base diferente de zero indica um endereço de bloco de diagnóstico de transação válida.
9. Método, de acordo com a reivindicação 7, caracterizado pelo fato de queque há uma pluralidade de tipos de blocos de diagnóstico de transação, e em que o armazenamento compreende a determinação de onde a pluralidade de tipos de blocos de diagnóstico deve ser armazenada, a determinação compreendendo:verificar se o endereço de um bloco de diagnóstico de transação válido é fornecido em uma instrução para começar transação, e com base na verificação indicando um endereço de bloco de diagnóstico de transação válido, a determinação indicando onde bloco de diagnóstico de transação especificada pelo programa deve ser armazenada;verificar se o aborto é devido a uma interrupção, e com base no aborto ser devido a uma interrupção, a determinação que indica um bloco de diagnóstico de transação de interrupção de programa deve ser armazenada; everificar se o aborto é devido a uma condição de interceptação e com base no aborto ser devido à condição de interceptação, a determinação que indica um bloco de diagnóstico de transação de interceptação deve ser armazenado..
BR112014031335-0A 2012-06-15 2012-11-22 Bloco de diagnóstico transacional BR112014031335B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/524,916 US8880959B2 (en) 2012-06-15 2012-06-15 Transaction diagnostic block
US13/524916 2012-06-15
PCT/IB2012/056622 WO2013186600A1 (en) 2012-06-15 2012-11-22 Transaction diagnostic block

Publications (2)

Publication Number Publication Date
BR112014031335A2 BR112014031335A2 (pt) 2017-06-27
BR112014031335B1 true BR112014031335B1 (pt) 2022-01-04

Family

ID=49757118

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014031335-0A BR112014031335B1 (pt) 2012-06-15 2012-11-22 Bloco de diagnóstico transacional

Country Status (23)

Country Link
US (2) US8880959B2 (pt)
EP (1) EP2834739B1 (pt)
JP (1) JP6138249B2 (pt)
KR (1) KR101599181B1 (pt)
CN (1) CN104335181B (pt)
AU (1) AU2012382775B2 (pt)
BR (1) BR112014031335B1 (pt)
CA (1) CA2874175C (pt)
DK (1) DK2834739T3 (pt)
ES (1) ES2689560T3 (pt)
HR (1) HRP20181576T8 (pt)
HU (1) HUE040014T2 (pt)
IL (1) IL236253B (pt)
LT (1) LT2834739T (pt)
MX (1) MX338375B (pt)
PL (1) PL2834739T3 (pt)
PT (1) PT2834739T (pt)
RU (1) RU2571397C2 (pt)
SG (1) SG11201407475QA (pt)
SI (1) SI2834739T1 (pt)
TW (1) TWI537718B (pt)
WO (1) WO2013186600A1 (pt)
ZA (1) ZA201408077B (pt)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
EP3084615B1 (en) * 2013-12-17 2020-06-24 Intel Corporation Detection of unauthorized memory modification and access using transactional memory
US10152540B2 (en) 2014-10-10 2018-12-11 Qualcomm Incorporated Linking thumbnail of image to web page
US10496311B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
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
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams

Family Cites Families (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1174370A (en) 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US5471591A (en) 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
DE4216871C2 (de) 1991-05-21 2001-09-06 Digital Equipment Corp Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5925125A (en) 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5748964A (en) 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5655100A (en) 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
DE69629495T2 (de) 1995-10-06 2004-06-09 Advanced Micro Devices, Inc., Sunnyvale Vereinheitlichter multifunktions-operationsverteiler für die ungeordnete befehlsexekution in einem superskalaren prozessor
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
JPH103416A (ja) * 1996-06-14 1998-01-06 Canon Inc 情報処理装置およびその方法
US6035313A (en) 1997-03-24 2000-03-07 Motorola, Inc. Memory address generator for an FFT
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6119129A (en) * 1998-05-14 2000-09-12 Sun Microsystems, Inc. Multi-threaded journaling in a configuration database
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
EP0992916A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
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
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6738892B1 (en) 1999-10-20 2004-05-18 Transmeta Corporation Use of enable bits to control execution of selected instructions
JP3776653B2 (ja) 1999-11-24 2006-05-17 富士通株式会社 演算処理装置
US6754809B1 (en) 1999-12-30 2004-06-22 Texas Instruments Incorporated Data processing apparatus with indirect register file access
US6665863B1 (en) 2000-05-31 2003-12-16 Microsoft Corporation Data referencing within a database graph
AU2001283163A1 (en) 2000-08-04 2002-02-18 Carr Scott Software Incorporated Automatic transaction management
US6671686B2 (en) 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7346632B2 (en) 2001-02-22 2008-03-18 International Business Machines Corporation Mechanism for executing nested transactions in an execution environment supporting flat transactions only
US6963919B1 (en) 2001-02-28 2005-11-08 Agilent Technologies, Inc. Method and system for improving computer network performance
US6745272B2 (en) 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7185234B1 (en) 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
US7305678B2 (en) 2001-05-17 2007-12-04 International Business Machines Corporation Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server
KR100625595B1 (ko) 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
US7185183B1 (en) 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US20060218556A1 (en) 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
US7546446B2 (en) 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US6892286B2 (en) 2002-09-30 2005-05-10 Sun Microsystems, Inc. Shared memory multiprocessor memory model verification system and method
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7634638B1 (en) 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
US20040117689A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corporation Method and system for diagnostic approach for fault isolation at device level on peripheral component interconnect (PCI) bus
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
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores to support transactional program execution
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7398359B1 (en) 2003-04-30 2008-07-08 Silicon Graphics, Inc. System and method for performing memory operations in a computing system
US7801851B2 (en) 2003-06-30 2010-09-21 Gravic, Inc. Method for ensuring referential integrity in multi-threaded 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
US7269607B2 (en) * 2003-09-29 2007-09-11 International Business Machines Coproartion Method and information technology infrastructure for establishing a log point for automatic recovery of federated databases to a prior point in time
US7206903B1 (en) 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US7395382B1 (en) * 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
US7865701B1 (en) 2004-09-14 2011-01-04 Azul Systems, Inc. Concurrent atomic execution
US20060064508A1 (en) 2004-09-17 2006-03-23 Ramesh Panwar Method and system to store and retrieve message packet data in a communications network
US7373554B2 (en) 2004-09-24 2008-05-13 Oracle International Corporation Techniques for automatic software error diagnostics and correction
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7631073B2 (en) * 2005-01-27 2009-12-08 International Business Machines Corporation Method and apparatus for exposing monitoring violations to the monitored application
US20060212757A1 (en) 2005-03-15 2006-09-21 International Business Machines Corporation Method, system, and program product for managing computer-based interruptions
US7421544B1 (en) 2005-04-04 2008-09-02 Sun Microsystems, Inc. Facilitating concurrent non-transactional execution in a transactional memory system
US7496726B1 (en) 2005-04-18 2009-02-24 Sun Microsystems, Inc. Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US8117605B2 (en) 2005-12-19 2012-02-14 Oracle America, Inc. Method and apparatus for improving transactional memory interactions by tracking object visibility
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US7810072B2 (en) 2006-01-06 2010-10-05 International Business Machines Corporation Exception thrower
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US20070198978A1 (en) 2006-02-22 2007-08-23 David Dice Methods and apparatus to implement parallel transactions
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7930695B2 (en) 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7849446B2 (en) 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
US20070300013A1 (en) 2006-06-21 2007-12-27 Manabu Kitamura Storage system having transaction monitoring capability
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US20080016325A1 (en) 2006-07-12 2008-01-17 Laudon James P Using windowed register file to checkpoint register state
US7617421B2 (en) 2006-07-27 2009-11-10 Sun Microsystems, Inc. Method and apparatus for reporting failure conditions during transactional execution
US7865885B2 (en) 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20080086516A1 (en) 2006-10-04 2008-04-10 Oracle International Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions
US7669040B2 (en) 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
JP2008165370A (ja) 2006-12-27 2008-07-17 Internatl Business Mach Corp <Ibm> オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。
US8086827B2 (en) 2006-12-28 2011-12-27 Intel Corporation Mechanism for irrevocable transactions
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US7627743B2 (en) 2007-01-12 2009-12-01 Andes Technology Corporation Method and circuit implementation for multiple-word transfer into/from memory subsystems
GB2446831B (en) * 2007-02-22 2011-06-15 Advanced Risc Mach Ltd Selective disabling of diagnostic functions within a data processing system
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
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US7814378B2 (en) 2007-05-18 2010-10-12 Oracle America, Inc. Verification of memory consistency and transactional memory
US20080320282A1 (en) 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US8266387B2 (en) 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US7779232B2 (en) 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US7904434B2 (en) 2007-09-14 2011-03-08 Oracle International Corporation Framework for handling business transactions
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US20090138890A1 (en) 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
CN101170747A (zh) 2007-11-30 2008-04-30 中兴通讯股份有限公司 中继状态调节方法和装置
US8195898B2 (en) 2007-12-27 2012-06-05 Intel Corporation Hybrid transactions for low-overhead speculative parallelization
US8706982B2 (en) * 2007-12-30 2014-04-22 Intel Corporation Mechanisms for strong atomicity in a transactional memory system
US8140497B2 (en) 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US7966459B2 (en) 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US8041900B2 (en) 2008-01-15 2011-10-18 Oracle America, Inc. Method and apparatus for improving transactional memory commit latency
US8176280B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8161273B2 (en) 2008-02-26 2012-04-17 Oracle America, Inc. Method and apparatus for programmatically rewinding a register inside a transaction
US8688628B2 (en) 2008-02-29 2014-04-01 Red Hat, Inc. Nested queued transaction manager
US20090260011A1 (en) 2008-04-14 2009-10-15 Microsoft Corporation Command line transactions
JP5385545B2 (ja) 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US9367363B2 (en) 2008-05-12 2016-06-14 Oracle America, Inc. System and method for integrating best effort hardware mechanisms for supporting transactional memory
US7996686B2 (en) 2008-07-07 2011-08-09 International Business Machines Corporation Branch trace methodology
CN102144218A (zh) 2008-07-28 2011-08-03 超威半导体公司 可虚拟化的先进同步设备
US8191046B2 (en) 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
JP4702962B2 (ja) 2008-11-12 2011-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ制御装置、プログラム及び方法
US8789057B2 (en) 2008-12-03 2014-07-22 Oracle America, Inc. System and method for reducing serialization in transactional memory using gang release of blocked threads
US20100153776A1 (en) 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US9274855B2 (en) 2008-12-24 2016-03-01 Intel Corporation Optimization for safe elimination of weak atomicity overhead
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
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
CN101819518B (zh) 2009-02-26 2013-09-11 国际商业机器公司 在事务内存中快速保存上下文的方法和装置
US8266107B2 (en) 2009-03-11 2012-09-11 International Business Machines Corporation Method for mirroring a log file by threshold driven synchronization
US9940138B2 (en) 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US8973004B2 (en) 2009-06-26 2015-03-03 Oracle America, Inc. Transactional locking with read-write locks in transactional memory systems
US8489864B2 (en) 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8229907B2 (en) 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8281185B2 (en) 2009-06-30 2012-10-02 Oracle America, Inc. Advice-based feedback for transactional execution
US8688964B2 (en) 2009-07-20 2014-04-01 Microchip Technology Incorporated Programmable exception processing latency
GB2472620B (en) 2009-08-12 2016-05-18 Cloudtran Inc Distributed transaction processing
US8392694B2 (en) 2009-09-15 2013-03-05 International Business Machines Corporation System and method for software initiated checkpoint operations
US8327188B2 (en) 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US8290991B2 (en) 2009-12-15 2012-10-16 Juniper Networks, Inc. Atomic deletion of database data categories
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US20110208921A1 (en) 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US8739164B2 (en) 2010-02-24 2014-05-27 Advanced Micro Devices, Inc. Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof
US8438568B2 (en) 2010-02-24 2013-05-07 International Business Machines Corporation Speculative thread execution with hardware transactional memory
US8464261B2 (en) 2010-03-31 2013-06-11 Oracle International Corporation System and method for executing a transaction using parallel co-transactions
US8631223B2 (en) 2010-05-12 2014-01-14 International Business Machines Corporation Register file supporting transactional processing
US9626187B2 (en) 2010-05-27 2017-04-18 International Business Machines Corporation Transactional memory system supporting unbroken suspended execution
US20110302143A1 (en) 2010-06-02 2011-12-08 Microsoft Corporation Multi-version concurrency with ordered timestamps
US9880848B2 (en) 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US8560816B2 (en) 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
US8479053B2 (en) 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US8561033B2 (en) 2010-07-30 2013-10-15 International Business Machines Corporation Selective branch-triggered trace generation apparatus and method
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US8442962B2 (en) * 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization

Also Published As

Publication number Publication date
LT2834739T (lt) 2018-10-10
CA2874175A1 (en) 2013-12-19
SG11201407475QA (en) 2014-12-30
CN104335181B (zh) 2017-08-15
US20130339806A1 (en) 2013-12-19
RU2571397C2 (ru) 2015-12-20
IL236253A0 (en) 2015-01-29
TW201413441A (zh) 2014-04-01
PL2834739T3 (pl) 2018-12-31
HRP20181576T1 (hr) 2018-11-30
KR20150008392A (ko) 2015-01-22
ES2689560T3 (es) 2018-11-14
US20130339804A1 (en) 2013-12-19
SI2834739T1 (sl) 2018-11-30
WO2013186600A1 (en) 2013-12-19
DK2834739T3 (en) 2018-10-22
BR112014031335A2 (pt) 2017-06-27
MX2014015290A (es) 2015-04-10
RU2012148400A (ru) 2014-05-20
AU2012382775B2 (en) 2016-09-22
ZA201408077B (en) 2016-05-25
US8880959B2 (en) 2014-11-04
HUE040014T2 (hu) 2019-02-28
MX338375B (es) 2016-04-13
EP2834739A1 (en) 2015-02-11
KR101599181B1 (ko) 2016-03-02
EP2834739A4 (en) 2015-07-08
US8887003B2 (en) 2014-11-11
IL236253B (en) 2018-08-30
PT2834739T (pt) 2018-11-02
TWI537718B (zh) 2016-06-11
EP2834739B1 (en) 2018-08-22
CA2874175C (en) 2020-04-14
JP6138249B2 (ja) 2017-05-31
AU2012382775A1 (en) 2014-12-11
HRP20181576T8 (hr) 2018-12-14
CN104335181A (zh) 2015-02-04
JP2015526788A (ja) 2015-09-10

Similar Documents

Publication Publication Date Title
AU2012382778B2 (en) Saving/restoring selected registers in transactional processing
AU2013276133B2 (en) Transactional processing
EP2862080B1 (en) Program event recording within a transactional environment
BR112014031335B1 (pt) Bloco de diagnóstico transacional
US9983881B2 (en) Selectively controlling instruction execution in transactional processing
US8887002B2 (en) Transactional execution branch indications
AU2012382780B2 (en) Processor assist facility
US10430199B2 (en) Program interruption filtering in transactional execution
BR112014031432B1 (pt) Instrução de armazenamento não transacional
BR112014031435B1 (pt) Teste randomizado dentro de execução transacional

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]
B06A Patent application procedure suspended [chapter 6.1 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.