BR112014031350B1 - Filtragem de interrupção de programa em execução transacional - Google Patents
Filtragem de interrupção de programa em execução transacional Download PDFInfo
- Publication number
- BR112014031350B1 BR112014031350B1 BR112014031350-4A BR112014031350A BR112014031350B1 BR 112014031350 B1 BR112014031350 B1 BR 112014031350B1 BR 112014031350 A BR112014031350 A BR 112014031350A BR 112014031350 B1 BR112014031350 B1 BR 112014031350B1
- Authority
- BR
- Brazil
- Prior art keywords
- transaction
- program
- interrupt
- instruction
- abort
- Prior art date
Links
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title description 7
- 238000001914 filtration Methods 0.000 claims abstract description 76
- 238000012545 processing Methods 0.000 claims description 70
- 238000000034 method Methods 0.000 claims description 41
- 238000001514 detection method Methods 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 description 174
- 230000014616 translation Effects 0.000 description 43
- 230000006870 function Effects 0.000 description 42
- 238000013519 translation Methods 0.000 description 42
- 238000007667 floating Methods 0.000 description 34
- 238000005192 partition Methods 0.000 description 20
- 238000004590 computer program Methods 0.000 description 19
- 230000008859 change Effects 0.000 description 15
- 230000001419 dependent effect Effects 0.000 description 15
- 206010000210 abortion Diseases 0.000 description 13
- 238000004891 communication Methods 0.000 description 13
- 238000009434 installation Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000011084 recovery Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 231100000176 abortion Toxicity 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000001010 compromised effect Effects 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 230000001343 mnemonic effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 102100032303 26S proteasome non-ATPase regulatory subunit 2 Human genes 0.000 description 1
- 101000590272 Homo sapiens 26S proteasome non-ATPase regulatory subunit 2 Proteins 0.000 description 1
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 1
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 1
- 101100496104 Mus musculus Clec2d gene Proteins 0.000 description 1
- 208000036758 Postinfectious cerebellitis Diseases 0.000 description 1
- 101100274534 Rattus norvegicus Clec2d11 gene Proteins 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013502 data validation Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- QWXYZCJEXYQNEI-OSZHWHEXSA-N intermediate I Chemical compound COC(=O)[C@@]1(C=O)[C@H]2CC=[N+](C\C2=C\C)CCc2c1[nH]c1ccccc21 QWXYZCJEXYQNEI-OSZHWHEXSA-N 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
filtragem de interrupção de programa em execução transacional. condições de execução de programa fazem com que uma transação aborte e tipicamente resulte em uma interrupção na qual o sistema operacional obtém controle. um controle de filtragem de interrupção de programa é fornecido para seletivamente apresentar uma interrupção. ou seja, a interrupção da condição de exceção de programa pode ou não ser apresentada dependendo pelo menos do controle de filtragem de interrupção de programa e classe de transação associada com a condição de exceção de programa. o controle de filtragem de interrupção de programa é fornecido por uma instrução transaction begin.
Description
[0001] A presente invenção refere-se, em geral, a ambientes de computação de multiprocessamento, e em particular, ao processamento transacional dentro de tais ambientes de computação. Antecedentes
[0002] Um desafio permanente na programação de multiprocessador é a de atualizações para o mesmo local de armazenamento por várias unidades de processamento central (CPUs). Muitas instruções que atualizam os locais de armazenamento, incluindo até mesmo operações lógicas simples, como AND, o fazem com vários acessos ao local. Por exemplo, em primeiro lugar, o local de armazenamento é buscado e, em seguida, o resultado atualizado é armazenado de volta.
[0003] Para que várias CPUs atualizem com segurança o mesmo local de armazenamento, o acesso ao local é serializado. Uma instrução, a instrução TEST AND SET, introduzida com a arquitetura S/360 anteriormente oferecida pela International Business Machines Corporation, forneceu uma atualização entrelaçada de um local de armazenamento. Atualização entrelaçada significa que, tal como observado por outros CPU e subsistema de entrada/ saída (E/S) (por exemplo, o subsistema de canal), todo o acesso de armazenamento da instrução parece ocorrer atomicamente. Mais tarde, a arquitetura S/370 oferecida pela International Business Machines Corporation introduziu as instruções COMPARE AND SWAP e COMPARE DOUBLE AND SWAP que fornecem um meio mais sofisticado de realizar atualização entrelaçada, e permitir a implementação do que é comumente conhecido como uma palavra de bloqueio (ou semáforo). Instruções adicionadas recentemente têm fornecido capacidades de atualização entrelaçada adicionais, incluindo COMPARE AND SWAP AND PURGE, e COMPARE AND SWAP AND STORE. No entanto, todas estas instruções fornecem entrelaçamento para apenas um único local de armazenamento.
[0004] Técnicas de programa mais complexas podem exigir a atualização entrelaçada de vários locais de armazenamento, como ao adicionar um elemento a uma lista duplamente vinculada. Em tal operação, tanto um ponteiro para trás e para a frente estão a aparecer para serem atualizados em simultâneo, tal como observado por outras CPUs e o subsistema E/S. A fim de efetuar uma tal atualização da localização múltipla, o programa é forçado a utilizar um ponto de serialização único separado, tal como uma palavra de bloqueio. No entanto, as palavras de bloqueio podem fornecer um nível muito mais disciplinado de serialização do que é exigido; por exemplo, as palavras de bloqueio podem serializar uma fila inteira de milhões de elementos, embora apenas dois elementos estão sendo atualizados. O programa pode estruturar os dados para utilização de serialização de granulação mais fina (por exemplo, uma hierarquia de pontos de bloqueio), mas que apresenta problemas adicionais, como potenciais situações de impasse se a hierarquia é violada, e problemas de recuperação se o programa encontra um erro enquanto segura um ou mais bloqueios ou se o bloqueio não pode ser adquirido.
[0005] Em adição ao acima, existem inúmeras situações em que um programa pode executar uma sequência de instruções que podem ou não resultar numa condição de exceção. Se não ocorrer nenhuma condição de exceção, em seguida, o programa continua; no entanto, se uma exceção é reconhecida, então o programa pode tomar uma ação corretiva para eliminar a condição de exceção. Java, como um exemplo, pode explorar a execução do mesmo, por exemplo, a execução especulativa, alinhamento parcial de uma função, e/ ou na re-sequenciação da verificação de ponteiro nulo.
[0006] Em ambientes de sistema operacional clássicos, como z/OS e seus antecessores oferecidos pela International Business Machines Corporation, o programa estabelece um ambiente de recuperação para interceptar qualquer condição de exceção de programa que pode encontrar. Se o programa não interceptar a exceção, o sistema operacional normalmente termina de forma anormal o programa para exceções que o sistema operacional não está preparado para lidar. Estabelecer e explorar tal ambiente é custoso e complicado.
[0007] As deficiências do estado da técnica são abordadas e vantagens são fornecidas através do fornecimento de um produto de programa de computador para a execução de uma instrução dentro de um ambiente de computação. O produto de programa de computador inclui um meio de armazenamento legível por computador legível por um circuito de processamento e armazenando instruções para execução pelo circuito de processamento para a realização de um método. O método inclui, por exemplo, realizar o processamento transacional de uma transação, a transação efetivamente comprometendo o retardo de armazenamentos transacionais em uma memória principal até o término de uma transação selecionada, o processamento transacional tendo um controle de filtragem associado; detectar, por um processador, durante o processamento transacional, uma condição de exceção de programa, a condição de exceção de programa sendo definida ao apresentar uma interrupção; determinar, com base na detecção de condição de exceção de programa, se uma interrupção deve ser apresentada, em que a determinação emprega o controle de filtragem; e com base na determinação indicando que a interrupção não deve ser apresentada, desviar a apresentação da interrupção. .
[0008] Métodos e sistemas relacionados a uma ou mais concretizações, também são descritos e aqui reivindicados. Ainda, os serviços relacionados a uma ou mais concretizações também são descritos e podem estar aqui reivindicados.
[0009] Características e vantagens adicionais são realizadas. Outras concretizações e aspectos são descritos em detalhes aqui e são considerados como parte da invenção reivindicada.
[0010] Um ou mais aspectos são particularmente apontados e reivindicados de forma distinta como exemplos nas reivindicações no término do relatório descritivo. Os objetos, características e vantagens acima e outros são evidentes a partir da descrição detalhada a seguir quando tomadas em conjunto com os desenhos anexos, nos quais:
[0011] A figura 1 representa uma concretização de um ambiente de computação;
[0012] A figura 2A mostra um exemplo de uma instrução de Início de Transação (TBEGIN);
[0013] A figura 2B mostra uma concretização de mais detalhes de um campo de instrução TBEGIN da figura 2A;
[0014] A figura 3A mostra em exemplo de uma instrução de Início de Transação restrita (TBEGINC);
[0015] A figura 3B representa uma concretização de mais detalhes de um campo de instrução TBEGINC da figura 3A;
[0016] A figura 4 representa um exemplo de uma instrução de Fim de Transação (TEND);
[0017] A figura 5 representa um exemplo de uma instrução de Aborto de Transação (TABORT);
[0018] A figura 6 representa um exemplo de transações aninhadas;
[0019] A figura 7 mostra um exemplo de uma instrução de Armazenamento Não Transacional (NTSTG);
[0020] A figura 8 ilustra um exemplo de uma instrução de Extrair o Profundidade de Aninhamento de Transação (ETND);
[0021] A figura 9 representa um exemplo de um bloco de diagnóstico de transação;
[0022] A figura 10 ilustra um exemplo de razões para abortar, juntamente com códigos de aborto associados e códigos de condição;
[0023] A figura 11 mostra uma concretização de lógica associada com a execução de uma instrução TBEGINC;
[0024] A figura 12 mostra uma concretização de lógica associada com a execução de uma instrução TBEGIN;
[0025] A figura 13 mostra uma concretização de lógica associada com a execução de uma instrução TEND;
[0026] A figura 14 mostra uma concretização de lógica associada com processamento de aborto de transação;
[0027] A figura 15 mostra um exemplo de níveis de filtragem de interrupção de programa;
[0028] As figuras 16A e 16B mostram um exemplo de condições de exceção de programa e classes de transações e códigos de condição associados;
[0029] As figuras 17A e 17B mostram um exemplo da lógica associada com as interrupções de filtragem;
[0030] As figuras 18A e 18B mostram um exemplo de inserção de um elemento de fila em uma lista duplamente ligada de elementos de fila.
[0031] A figura 19 representa uma concretização de um produto de programa de computador;
[0032] A figura 20 representa uma concretização de um sistema de computador hospedeiro;
[0033] A figura 21 representa um outro exemplo de um sistema de computador;
[0034] A figura 22 mostra um outro exemplo de um sistema de computador compreendendo uma rede de computadores;
[0035] A figura 23 representa uma concretização de vários elementos de um sistema de computador;
[0036] A figura 24A mostra uma concretização da unidade de execução do sistema de computador da figura 23;
[0037] A figura 24B mostra uma concretização da unidade de ramificação do sistema de computador da figura 23;
[0038] A figura 24C ilustra uma concretização da unidade de carregamento/armazenamento do sistema de computador da figura 23; e
[0039] A figura 25 representa uma concretização de um sistema de computador host emulado.
[0040] De acordo com uma concretização, uma instalação de execução transacional (TX) é fornecida. Esta instalação fornece processamento transacional para instruções, e em uma ou mais concretizações, oferece diferentes modos de execução, conforme descrito a seguir, bem como os níveis aninhados de processamento transacional.
[0041] A instalação de execução transacional introduz um estado CPU chamado o modo de execução transacional (TX). Seguindo uma reinicialização da CPU, a CPU não está no modo de TX. A CPU entra no modo de TX por uma instrução BEGIN TRANSACTION. A CPU deixa o modo de TX por qualquer uma dentre (a) uma instrução TRANSACTION END extrema (mais detalhes sobre interior e exterior a seguir), ou (b) a transação que está sendo abortada. Enquanto estiver no modo de TX, acessos de armazenamento pela CPU parecem ser bloco concorrente como observado por outras CPUs e o subsistema de E/S. Os acessos de armazenamento são quer (a) utilizados para armazenamento quando a transação mais exterior termina sem abortar (isto é, por exemplo, atualizações feitas numa cache ou buffer local para a CPU são propagadas e armazenado na memória real e visíveis para outras CPUs), ou (b) descartados se a transação for abortada.
[0042] As transações podem ser aninhadas. Isto é, enquanto a CPU está no modo de TX, que pode executar uma outra instrução TRANSACTION BEGIN. A instrução que faz com que a CPU entre no modo de TX é chamada o TRANSACTION BEGIN mais exterior; do mesmo modo, o programa é dito ser na transação mais exterior. Execuções subsequentes à TRANSACTION BEGIN são chamadas instruções internas; e o programa está executando uma transação interna. O modelo fornece uma profundidade de aninhamento mínimo e um profundidade de aninhamento máximo dependente do modelo. Uma instrução EXTRACT TRANSACTION NESTING DEPTH devolve o valor atual de nível de agrupamento, e em uma outra concretização, pode devolver um valor máximo de profundidade de aninhamento. Esta técnica utiliza um modelo chamado "agrupamento achatado", no qual uma condição de abortar em qualquer profundidade de aninhamento faz com que todos os níveis da transação sejam abortados, e o controle é retornado para a instrução após a TRANSACTION BEGIN mais externa.
[0043] Durante o processamento de uma transação, um acesso transacional feito por uma CPU é dito em conflito com qualquer (a) um acesso transacional ou acesso não transacional feito por outra CPU, ou (b) um acesso não transacional feito pelo subsistema de E/S, se ambos os acessos são para qualquer localização dentro da mesma linha de memória cache, e um ou ambos dos acessos é um armazenamento. Em outras palavras, a fim de que a execução de transação seja produtiva, a CPU não deve ser observada fazendo acessos transacionais até que se aloque. Este modelo de programação pode ser altamente eficaz em determinados ambientes; por exemplo, a atualização de dois pontos em uma lista duplamente vinculada de um milhão de elementos. No entanto, ele pode ser menos eficaz, se houver uma grande quantidade de contenção para os locais de armazenamento que estão sendo acessados de forma transacional.
[0044] Em um modelo de execução transacional (aqui referida como uma transação não restrita), quando uma transação é abortada, o programa pode ou tentar re- impulsionar a transação na esperança de que a condição de abortar não esteja mais presente, ou o programa pode "desviar" para um caminho não transacional equivalente. Em um outro modelo de execução de transação (aqui referido como uma transação restrita), uma transação abortada é automaticamente reconduzida pela CPU; na ausência de violações de restrição, a transação restrita é assegurada de eventual conclusão.
[0045] Ao iniciar uma transação, o programa pode especificar vários controles, tais como (a) que registradores gerais são restaurados para seus conteúdos originais, se a transação for anulada, (b) se a transação está autorizada a modificar o contexto do registrador de ponto flutuante, incluindo, por exemplo, registradores de ponto flutuante e o registrador de controle de ponto flutuante, (c) se a transação tem permissão para modificar os registradores de acesso (ARs), e (d) se certas condições de exceção de programa estão a ser impedidas de causar uma interrupção. Se uma transação é abortada não restrita, várias informações de diagnóstico podem ser fornecidas. Por exemplo, a instrução TBEGIN mais externa que inicia uma transação não restrita pode designar um bloco de diagnóstico de transação de programa específico (TDB). Além disso, o TDB na área de prefixo da CPU ou designada por descrição de estado do hospedeiro podem também ser utilizado, se a transação é abortada devido a uma interrupção do programa ou uma condição que causa execução interpretativa para terminar, respectivamente.
[0046] Indicados acima estão vários tipos de registradores. Estas são explicadas mais detalhadamente aqui em detalhes. Registradores gerais podem ser utilizados como acumuladores de operações de lógica e aritmética gerais. Numa concretização, cada registrador contém 64 posições de bits, e existem 16 registadores gerais. Os registradores gerais são identificados pelos números 0-15, e são designados por um campo R de quatro bits em uma instrução. Algumas instruções fornecem o endereçamento de vários registradores gerais por ter vários campos R. Para algumas instruções, a utilização de um registrador geral específico está implícita em vez de explicitamente designado por um campo R da instrução.
[0047] Além de seu uso como acumuladores de operações lógicas e aritméticas gerais, 15 dos 16 registradores gerais são também usados como endereço de base e registradores de índice na geração de endereço. Nestes casos, os registradores são designados por um campo B ou campo X de quatro bits em uma instrução. Um valor de zero no campo B ou X especifica que nenhuma base ou índice deve ser aplicado, e assim, registrador geral 0 não deve ser designado como contendo um endereço de base ou índice.
[0048] Instruções de ponto flutuante usam um conjunto de registradores de ponto flutuante. A CPU 16 tem registradores de ponto flutuante, numa concretização. Os registradores de ponto flutuante são identificados pelos números 0-15, e são designados por um campo R de quatro bits em instruções de ponto flutuante. Cada registrador de ponto flutuante é de 64 bits de comprimento e pode conter um operando de ponto flutuante curto (32-bit) ou longo (64- bit).
[0049] Um registrador de controle de ponto flutuante (FPC) é um registrador de 32 bits que contém os bits de máscara, bits de flag, um código de exceção de dados e bits de modo de arredondamento, e é usado durante o processamento de operações de ponto flutuante.
[0050] Além disso, numa concretização, a CPU tem 16 registradores de controle, cada um tendo posições de 64 bits. As posições de bits nos registradores são atribuídas a determinadas instalações no sistema, tais como gravação de do evento de programa (PER) (discutido abaixo), e são usados tanto para especificar que uma operação pode ser estabelecida ou a prestação de informação especial requerida pela instalação. Numa concretização, para a instalação transacional, CR0 (bits 8 e 9) e CR2 (bits 61-63) são utilizados, como descrito abaixo.
[0051] A CPU tem, por exemplo, 16 registradores de acesso numerados de 0-15. Um registrador de acesso consiste em posições de 32 bits contendo uma especificação indireta de um elemento de controle de espaço de endereço (ASCE). Um elemento de controle de espaço de endereço é um parâmetro utilizado pelo mecanismo de tradução de endereços dinâmicos (DAT) para traduzir as referências a um espaço de endereço correspondente. Quando a CPU está num modo de chamada de modo de registrador de acesso (controlado por bits na palavra de estado do programa (PSW)), um campo de instruções B, usado para especificar um endereço lógico para uma referência de operando de armazenamento, designa um registrador de acesso, e o elemento de controle de espaço de endereço especificado pelo registrador de acesso é usado por DAT para ser feita a referência. Para algumas instruções, um campo R é utilizado em vez de um campo B. São fornecidas instruções para o carregamento e o armazenamento dos conteúdos dos registradores de acesso e para deslocar o conteúdo de um registrador de acesso para outro.
[0052] Cada um dos registradores de acesso 1-15 pode designar qualquer espaço de endereço. O registrador de acesso 0 designa o espaço de instrução primária. Quando um dos registradores de acesso 1-15 é usado para designar um espaço de endereço, a CPU determina qual espaço de endereço é designado ao traduzir o conteúdo do registrador de acesso. Quando o registrador de acesso 0 é utilizado para designar um espaço de endereço, a CPU trata o registrador de acesso como designando o espaço de instrução primária, e não examina o conteúdo real do registrador de acesso. Por conseguinte, os 16 registradores de acesso podem designar, a qualquer momento, o espaço de instruções primária e um máximo de 15 outros espaços.
[0053] Numa concretização, existem vários tipos de espaços de endereços. Um espaço de endereço é uma sequência de números inteiros consecutivos (endereços virtuais), em conjunto com parâmetros de transformação específicos, que permitem a cada número ser associado a uma localização de byte no armazenamento. A sequência começa em zero e segue da esquerda para a direita.
[0054] Por exemplo, na z/Architecture, quando um endereço virtual é usado por um CPU para acessar o armazenamento principal (ou seja, memória principal), ele é convertido em primeiro lugar, por meio de tradução de endereços dinâmicos (DAT), para um endereço real, e, em seguida, por meio de um prefixo, para um endereço absoluto. DAT pode usar de um a cinco níveis de tabelas (página, segmento, terceira região, segunda região, e primeira região) como parâmetros de transformação. A designação (origem e comprimento) da tabela de nível mais alta para um espaço de endereço específico é chamado de um elemento de controle de espaço de endereço, e é encontrado para ser utilizado por DAT em um registro de controle ou conforme especificado por um registrador de acesso. Em alternativa, o elemento de controle de endereço de espaço para um espaço de endereço pode ser uma designação espaço real, o que indica que o DAT é traduzir os endereços virtuais simplesmente tratando-o como um endereço real e sem utilizar quaisquer tabelas.
[0055] DAT utiliza, em diferentes momentos, os elementos de controle de espaço de endereço em diferentes registradores de controle ou especificado pelos registradores de acesso. A escolha é determinada pelo modo especificado na tradução da PSW corrente. Quatro modos de tradução estão disponíveis: o modo de espaço primária, modo de espaço secundário, o modo de registrador de acesso e modo de espaço nativo. Espaços de endereços diferentes são endereçáveis, dependendo do modo de tradução.
[0056] Em qualquer instante em que o processador está no modo de espaço primário ou modo de espaço secundário, a CPU pode traduzir os endereços virtuais que pertencem a dois espaços de endereços - o espaço de endereço primário e o endereço de espaço secundário. A qualquer instante em que a CPU está no modo de registrador de acesso, pode traduzir os endereços virtuais de até 16 espaços de endereços - o espaço de endereço principal até 15 espaços de endereço AR- especificados. Em qualquer instante em que o processador está no modo de espaço nativo, pode traduzir os endereços virtuais do espaço de endereço nativo.
[0057] O espaço de endereço principal é identificado como tal porque consiste de endereços virtuais primários, que são traduzidos por meio do elemento de controle de espaço de endereço primário (ASCE). Do mesmo modo, o espaço de endereço secundário consiste de endereços virtuais secundários traduzidos por meio do ASCE secundário; os espaços de endereço especificado AR consistem de endereços virtuais especificados AR traduzidos por meio de ASCES especificados AR; e o espaço de endereço nativo consiste de endereços virtuais nativos traduzidos por meio do ASCE nativo. Os ASCES primários e secundários estão em registradores de controle 1 e 7, respectivamente. ASCES especificados AR estão em entradas da segunda tabela ASN que são localizados através de um processo chamado de tradução de registrador de acesso (ART) usando registrador de controle 2, 5 e 8. A ASCE nativa está no registrador de controle 13.
[0058] Uma concretização de um ambiente de computação para incorporar e utilizar um ou mais aspectos da instalação transacional descrito aqui é descrito com referência à figura 1.
[0059] Com referência à figura 1, num exemplo, o ambiente de computação 100 é baseado na z/Architecture, oferecido pela International Business Machines Corporation (IBM), Armonk, Nova Iorque. A z/Architecture descrita numa publicação intitulada IBM "z/Architecture - Principles of Operation," Publicação N° SA22-7932-08, 9a Edição, agosto de 2010, que é aqui incorporado por referência na sua totalidade.
[0060] As marcas Z/ARQUITECTURE, IBM, e Z/OS e Z/VM (relacionado abaixo) são marcas registradas da International Business Machines Corporation, Armonk, Nova Iorque. Outros nomes usados aqui podem ser marcas registradas, marcas comerciais ou nomes de produtos da International Business Machines Corporation ou de outras empresas.
[0061] Como um exemplo, o ambiente de computação 100 inclui um complexo de processador central (CPC) 102 acoplado a um ou mais dispositivos de entrada/ saída (input/output - E/S) 106 através de uma ou mais unidades de controle 108. Complexo de processador central 102 inclui, por exemplo, um ou mais processadores centrais 110, uma ou mais partições 112 (por exemplo, as partições lógicas (LP)), um hipervisor de partição lógica 114, e um subsistema de entrada/saída 115, cada um dos quais é descrito abaixo.
[0062] Processadores Centrais 110 são recursos físicos do processador atribuídos às partições lógicas. Em particular, cada partição lógica 112 tem um ou mais processadores lógicos, cada um dos quais representa a totalidade ou uma parte de um processador físico 110 alocado para a partição. Os processadores lógicos de uma partição específica 112 pode ser ou dedicado à partição, de modo a que o recurso de processador subjacente 101 é reservado para essa partição; ou partilhados com outra partição, de modo a que o recurso de processador subjacente está potencialmente disponível para outra partição.
[0063] Uma partição lógica funciona como um sistema separado e tem uma ou mais aplicações, e opcionalmente, um sistema operacional residente nela, que pode ser diferente para cada partição lógica. Numa concretização, o sistema operativo é o sistema operativo z / OS, o sistema z / VM de funcionamento, o sistema operativo z / Linux, ou o sistema operativo TPF, oferecida pela International Business Machines Corporation, Armonk, Nova Iorque. Partições 1 lógico 12 são geridos por um hipervisor de partição lógica 114, que é implementado por firmware executados em processadores 110. Tal como é aqui utilizado, firmware inclui, por exemplo, o microcódigo e/ ou millicode do processador. Ele inclui, por exemplo, as instruções de nível de hardware e/ ou estruturas de dados usado na implementação do código de máquina nível superior. Numa concretização, que inclui, por exemplo, o código proprietário que é normalmente entregue como microcódigo que inclui software ou microcódigo site específico para o hardware e controla o acesso ao do sistema operacional para o hardware do sistema.
[0064] As partições lógicas e hipervisor de partição lógica cada um compreendem um ou mais programas residentes nas respectivas partições de armazenamento central associadas com os processadores centrais. Um exemplo de hipervisor de partição lógica 114 é o Processor Resource/ System Manager (PR/ SM), oferecido pela International Business Machines Corporation, Armonk, Nova York.
[0065] O subsistema de entrada/ saída 15 direciona o fluxo de informações entre dispositivos de entrada/ saída 106 e armazenamento principal (ou seja, 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 E/S alivia os processadores centrais da tarefa de se comunicar diretamente com os dispositivos de entrada/ saída e permite o processamento de dados de proceder simultaneamente com o processamento de entrada/ saída. Para fornecer comunicações, o subsistema de E/S utiliza adaptadores de E/S de comunicação. Existem vários tipos de adaptadores de comunicação, incluindo, por exemplo, canais, adaptadores de E/S, placas PCI, placas Ethernet, placas de interface de armazenamento de computador pequeno (SCSI), etc. No exemplo particular aqui descrito, os adaptadores de E/S de comunicação são canais e, portanto, o subsistema de E/S é aqui referido como um subsistema de canal. No entanto, isto é apenas um exemplo. Outros tipos de subsistemas de E/S podem ser utilizados.
[0066] O subsistema de E/S 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.
[0067] O ambiente de computação acima descrito é apenas um exemplo de um ambiente de computação que pode ser utilizado. Outros ambientes, incluindo, mas não limitados a ambientes não particionados, outros ambientes particionados, e/ ou ambientes emulados, podem ser utilizados; concretizações não são limitadas a qualquer ambiente.
[0068] De acordo com um ou mais aspectos, a instalação de execução transacional é uma melhoria de CPU que fornece os meios pelos quais a CPU pode executar uma sequência de instruções - conhecida como uma transação - que podem acessar vários locais de armazenamento, incluindo a atualização desses locais. Como observado por outras CPUs e o subsistema de E/S, a transação é ou (a) completada na sua totalidade como uma única operação atômica, ou (b) abortada, potencialmente deixando nenhuma evidência de que jamais foi executada (com exceção de certas condições aqui descritas). Assim, uma operação concluída com êxito pode atualizar vários locais de armazenamento, sem qualquer bloqueio especial que é necessário no modelo de multiprocessamento clássico.
[0069] A instalação de execução transacional inclui, por exemplo, um ou mais controles; uma ou mais instruções; processamento transacional, incluindo execução restrita e não restrita; e interromper o processamento, cada um dos quais é ainda descrito abaixo.
[0070] Numa concretização, três controles para fins especiais, incluindo uma Palavra de Estado de Programa (PSW) de abortar transação, um endereço de bloco de diagnóstico de transação (TDB), e uma profundidade de aninhamento de transação; cinco bits do registrador de controle; e seis instruções gerais, incluindo TRANSACTION BEGIN (restrita e não restrita), TRANSACTION END, EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION ABORT, e NONTRANSACTIONAL STORE, são usadas para controlar a instalação de execução transacional. Quando a instalação é instalada, ela é instalada, por exemplo, em todas as CPUs na configuração. Uma indicação de instalação, o bit 73 em uma concretização, quando um, indica que a instalação de execução da transação está instalada.
[0071] Quando a instalação de execução da transação está instalada, a configuração proporciona uma instalação de execução transacional não restrita, e, opcionalmente, uma instalação de execução transacional restrita, cada uma das quais é descrita abaixo. Quando indicações de instalações 50 e 73, como exemplos, são tanto um, a instalação de execução transacional restrita está instalada. Ambas as indicações da instalação são armazenadas na memória em locais específicos.
[0072] Tal como aqui usado, o nome de instrução TRANSACTION BEGIN refere-se as instruções de atendimento TBEGIN mnemónicas (Transaction Begin para uma transação não restrita) e TBEGINC (Transaction Begin para uma transação restrito). As discussões referentes a uma instrução específica são indicadas pelo nome de instrução seguido pelo mnemônico em parênteses ou colchetes, ou simplesmente pelo mnemônico.
[0073] Uma concretização de um formato de uma instrução TRANSACTION BEGIN (TBEGIN) está representada nas figuras 2A-2B. Como um exemplo, uma instrução TBEGIN 200 inclui um campo opcode (opcode) 202, que inclui um código de operação especificando uma operação não restrita de iniciar a operação; um campo base (B1) 204; um campo de deslocamento (D1) 206; e um campo imediato (I2) 208. Quando o campo B1 é diferente de zero, o conteúdo do registrador geral especificado por B1 204 são adicionados em D1 206 para se obter o endereço do primeiro operando.
[0074] Quando o campo B1 é diferente de zero, é aplicável o seguinte: • Quando a profundidade de aninhamento de transação é inicialmente zero, o endereço do primeiro operando designa a localização do bloco de diagnóstico de transação de 256 bytes, chamado a TDB de TBEGIN especificada (descrito mais adiante), no qual várias informações de diagnóstico podem ser armazenadas, se a transação é abortada. Quando a CPU está no modo de espaço primário ou no modo de registrador de acesso, o endereço do primeiro operando designa um local no espaço do endereço principal. Quando a CPU está no modo de espaço secundário ou de espaço nativo, o primeiro endereço de operando designa uma localização no espaço secundário ou endereço nativo, respectivamente. Quando DAT está desligado, o endereço do bloco de diagnóstico de transação (TDB) (TDBA) designa um local no armazenamento real. Acessibilidade de armazenamento para o primeiro operando é determinada. Se acessível, o endereço lógico do operando é colocado no endereço de bloco de diagnóstico de transação (TDBA), e o TDBA é válido. • Quando a CPU já está no modo de execução transacional não restrita, o TDBA não é modificado, e é imprevisível se o primeiro operando é testado quanto à acessibilidade.
[0075] Quando o campo B1 é zero, nenhuma exceção de acesso é detectada para o primeiro operando e, para a instrução TBEGIN mais externa, o TDBA é inválido.
[0076] Os bits do campo de I2 são definidos como se segue, num exemplo:
[0077] Máscara de Salvar Registro Geral (GRSM) 210 (figura 2B): Bits 0-7 do campo I2 contém a máscara de salvar registro geral (GRSM). Cada bit da GRSM representa um par par-ímpar de registradores gerais, onde o bit 0 representa registros 0 e 1, 1 bit representa registros 2 e 3, e assim por diante. Quando um bit 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.
[0078] Se a transação for anulada, pares de registros salvos são restaurados para seu conteúdo quando a instrução TBEGIN mais externa foi executada. O conteúdo de todos os outros registradores gerais (não salvos) não é restaurado quando a transação é anulada.
[0079] A máscara de salvar registro geral é ignorada em todas as exceções TBEGINs para aquele mais exterior.
[0080] Permissão de Modificação de AR (A) 212: O controle A, bit 12 do campo de I2, controla se a transação tem permissão para modificar um registrador de acesso. O controle de modificação de AR de permissão efetiva é a lógica AND do controle A na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores.
[0081] Se o controle A eficaz é zero, a transação será abortada com código de aborto 11 (instrução restrita) se for feita uma tentativa de modificar qualquer registrador de acesso. Se o controle A eficaz é um, a transação não será abortada se um registrador de acesso é modificado (ausente de qualquer outra condição de aborto).
[0082] Permissão de Operação de Ponto Flutuante (F) 214: O controle F, bit 13 do campo de I2, controla se a transação tem permissão para executar instruções de ponto flutuante especificados. A efetiva permissão do controle operação de ponto flutuante é a lógica AND do controle F na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores.
[0083] Se o controle efetivo F é zero, então (a) a operação será abortada com o código de interrupção 11 (instrução restrita) se for feita uma tentativa de executar uma instrução de ponto flutuante, e (b) o código de exceção de dados (DXC) no byte 2 do registro de controle de ponto flutuante (FPCR) não será definida por qualquer condição de exceção do programa de exceção de dados. Se o controle efetivo F é um e, em seguida (a) a transação não será abortada se for feita uma tentativa de executar uma instrução de ponto flutuante (na ausência de qualquer outra condição de abortar), e (b) o DXC no FPCR pode ser definido por uma condição de exceção de programa de exceção de dados.
[0084] Controle de Filtragem de Interrupção de Programa (PIFC) 216: Bits 14-15 do campo I2 são o controle de filtragem interrupção do programa (PIFC). O controle das finanças públicas controla se determinadas classes de condições de exceção do programa (por exemplo, exceção de endereçamento, exceção de dados, exceção de operação, exceção de proteção, etc.) que ocorrem enquanto a CPU está no resultado do modo de execução transacional em uma interrupção.
[0085] O PIFC efetivo é o valor mais alto do PIFC na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores. Quando o PIFC eficaz é zero, todas as condições de exceção programa resultam em uma interrupção. Quando o PIFC eficaz é um, condições de exceção programa ter uma classe de execução transacional de 1 e 2 resultam em uma interrupção. (Cada condição de exceção programa é atribuída, pelo menos, uma classe de execução transacional, dependendo da gravidade da exceção. Gravidade baseia-se na probabilidade de recuperação durante a execução repetida da transação, e se o sistema operacional precisa ver a interrupção.) Quando o PIFC eficaz é dois, condições de exceção de programa tendo uma classe de execução transacional de um resultado em uma interrupção. Um PIFC de 3 é reservado.
[0086] Bits 8-11 do campo I2 (bits 40-43 da instrução) são reservados e devem conter zeros; caso contrário, o programa pode não funcionar a compatibilidade no futuro.
[0087] Uma concretização de um formato de uma instrução restrita de Trasaction Begin (TBEGINC) é descrita com referência às figuras 3A-3B. Num exemplo, TBEGINC 300 inclui um campo opcode 302, que inclui um código de operação especificando uma operação restrita de Transaction Begin; um campo base (B1) 304; um campo de deslocamento (D1) 306; e um campo imediato (I2) 308. O conteúdo do registrador geral especificado por B1 304 é adicionado em D1 306 para se obter o endereço do primeiro operando. No entanto, com a instrução restrita de início de transação, o primeiro endereço de operando não é usado para acessar o armazenamento. Em vez disso, o campo B1 da instrução inclui zeros; caso contrário, uma exceção de especificação é reconhecida.
[0088] Numa concretização, o campo I2 inclui vários controles, um exemplo da qual é representado na figura 3B.
[0089] Os bits do campo de I2 são definidos como se segue, num exemplo:
[0090] Máscara de Salvar Registro Geral (GRSM) 310: Bits 0-7 do campo I2 contém a máscara de salvar o registro geral (GRSM). Cada bit da GRSM representa um par par-ímpar de registradores gerais, onde o bit 0 representa registros 0 e 1, bit 1 representa registradores 2 e 3, e assim por diante. Quando um bit na GRSM é zero, o par de registro correspondente não é salvo. Quando um bit na GRSM é um, o par de registro correspondente é salvo em um local dependente do modelo que não é diretamente acessível pelo programa.
[0091] Se a transação for anulada, pares de registros salvos são restaurados para seu conteúdo quando a instrução TRANSACTION BEGIN mais exterior for executada. O conteúdo de todos os outros registradores gerais (não salvos) não são restaurados quando uma transação restrita aborta.
[0092] Quando TBEGINC é usado para continuar a execução no modo de execução de transação não restrita, a máscara de salvar registro geral é ignorada.
[0093] Permissão de Modificação de AR (A) 312: O controle A, bit 12 do campo I2, controla se a transação tem permissão para modificar um registrador de acesso. O efetivo controle de permissão de modificação de AR é a lógica AND do controle A na instrução TBEGINC para o nível de aninhamento atual e para qualquer instrução TBEGIN ou TBEGINC exterior.
[0094] Se o controle A eficaz é zero, a transação será abortada com código de aborto 11 (instrução restrita) se for feita uma tentativa de modificar qualquer registrador de acesso. Se o controle A eficaz é um, a transação não será abortada se um registrador de acesso é modificado (ausente de qualquer outra condição de aborto).
[0095] Bits 8-11 e 13-15 do campo I2 (bits 40-43 e 45-47 da instrução) são reservados e devem conter zeros.
[0096] 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 opcode 402, que inclui um código de operação especificando uma operação final de transação.
[0097] Um número de termos é usado no que diz respeito à instalação de execução de transações, e, por conseguinte, apenas por conveniência, uma lista de termos é fornecido abaixo em ordem alfabética. Numa concretização, esses termos têm a seguinte definição:
[0098] Aborto: Uma transação for anulada quando é encerrado antes de uma instrução TRANSACTION END que resulta em uma profundidade de aninhamento de transação de zero. Quando uma transação é abortada, ocorre o seguinte, numa concretização:
[0099] • acessos de armazenamento Transacional feitos por qualquer e todos os níveis da transação são descartados (isto é, não confirmada).
[0100] • acessos de armazenamento não transacional feitos por qualquer e todos os níveis da transação estão comprometidos.
[0101] • registradores designados pela máscara de salvar o registrador geral (GRSM) da instrução TRANSACTION BEGIN mais exterior são restaurados para seu conteúdo antes da execução transacional (isto é, ao seu conteúdo em execução da instrução TRANSACTION BEGIN exterior). Os registros gerais não designados pela máscara de salvar registrador da instrução TRANSACTION BEGIN mais externa não são restaurados.
[0102] • registradores de acesso, registros de ponto flutuante, e o registro de controle de ponto flutuante não são restaurados. Quaisquer alterações feitas a estes registradores durante a execução de transação são restaurados quando a transação for anulada.
[0103] 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 TRANSACTION ABORT, e outros motivos. Um código de transação- aborto fornece razões específicas para que uma transação pode ser abortada.
[0104] Um exemplo de um formato de uma instrução TRANSACTION ABORT (TABORT) é descrito com referência à figura 5. Como um exemplo, uma instrução TABORT 500 inclui um campo opcode 502, que inclui um código de operação especificando uma operação de aborto de transação; um campo base (B2) 504; e um campo de deslocamento (D2) 506. Quando o campo B2 é diferente de zero, o conteúdo do registrador geral abrangidos por B2 504 são adicionados a D2 506 para obter um endereço do segundo operando; caso contrário, o endereço do segundo operando é formado exclusivamente a partir do domínio D2, e o campo B2 é ignorado. O endereço do segundo 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 de transação durante o processamento de aborto. 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 definidos para zero; no modo de endereçamento de bits 31, os bits 0-32 são ajustados para zero.
[0105] Commit: Na conclusão de uma instrução TRANSACTION END mais externa, a CPU aloca os acessos de armazenamento feitos 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 E/S. Como observado por outros CPUs e pelo subsistema de E/S, 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 quando a alocação ocorre.
[0106] Os conteúdos dos registradores gerais, registradores de acesso, registros de ponto flutuante, e o registrador de controle de ponto flutuante não são modificados pelo processo de alocação. Quaisquer alterações feitas a estes registradores durante a execução transacional são mantidas quando os armazenamentos da transação estão alocados.
[0107] Conflito: Um acesso transacional realizado por uma CPU entra em conflito com (a) um acesso transacional ou acesso não transacional feito por outra CPU, ou (b) o acesso não transacional feito pelo subsistema de E/S, se ambos os acessos são para qualquer local dentro da mesma linha de cache, e um ou mais dos acessos é um armazenamento.
[0108] Um conflito pode ser detectado por execução especulativa de instruções da CPU, mesmo que o conflito não possa ser detectado na sequência conceitual.
[0109] Transação restrita: Uma transação restrita é uma transação que executa no modo de execução transacional restrito e está sujeita às seguintes limitações:
[0110] • Um subconjunto das instruções gerais está disponível.
[0111] • Um número limitado de instruções pode ser executado.
[0112] • Um número limitado de locais de armazenamento de operando pode ser acessado.
[0113] • A transação está limitada a um único nível de aninhamento.
[0114] Na ausência de interrupções ou conflitos com outras CPUs ou o subsistema de E/S repetidas, uma transação restrita, eventualmente, conclui, assim, uma rotina de manipulador de aborto não é necessária. Transações restritas são descritas em detalhes abaixo.
[0115] Quando uma instrução TRANSACTION BEGIN restrita (TBEGINC) é executada enquanto a CPU já estiver no modo de execução da transação não restrita, a execução continua como uma transação não restrita aninhada.
[0116] Modo de Execução Transacional restrita: Quando a profundidade de aninhamento de transação é zero, e uma transação é iniciada por uma instrução TBEGINC, a CPU entra no modo de execução transacional restrita. Enquanto a CPU está no modo de execução transacional restrita, a profundidade de aninhamento de transação é um.
[0117] Transação aninhada: Quando a instrução TRANSACTION BEGIN é emitida enquanto a CPU está no modo de execução transacional não restrita, a transação está aninhada.
[0118] A instalação de execução transacional usa um modelo chamado achatada nidificação. No modo de nidificação achatada, armazenamentos feitos por uma transação interna não são observáveis por outros CPUs e pelo subsistema de E/S até que a transação mais externa compromete seus armazenamentos. Da mesma forma, se uma transação for anulada, todas as transações aninhadas abortam, e todas os armazenamentos transacionais de todas as transações aninhadas são descartados.
[0119] 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 TEND 606 definem uma transação mais interna 608. Quando TEND 610 executa, armazenamentos transacionais estão alocados 612 para a transação mais externa e todas as transações internas.
[0120] 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 limite à maneira como uma transação restrita, ainda pode ser abortada devido a uma variedade de causas.
[0121] Modo de Execução Transacional Não Restrita: Quando uma transação é iniciada pela instrução TBEGIN, a CPU entra no modo de execução transacional não restrita. Enquanto a CPU está no modo de execução transacional não restrita, a profundidade de aninhamento de transação pode variar de um para a profundidade máxima de aninhamento de transação.
[0122] Acesso não transacional: acessos não transacionais estão operando armazenamento acessos feitos pela CPU quando não está no modo de execução transacional (isto é, acessos de armazenamento clássico fora de uma transação). Além disso, os acessos feitos pelo subsistema de E/S são acessos não transacionais. Além disso, a instrução NONTRANSACTIONAL STORE pode ser utilizada para causar um acesso de armazenamento não transacional enquanto a CPU está no modo de execução transacional não restrita.
[0123] Uma concretização de um formato de uma instrução NONTRANSACTIONAL STORE é descrito com referência à figura 7. Como um exemplo, uma instrução NONTRANSACTIONAL 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 registrador 704 especificando um registrador, os conteúdos dos quais são chamados o primeiro operando; um campo de índice (X2) 706; um campo base (B2) 708; um campo primeiro deslocamento (DL2) 710; e um segundo campo de deslocamento (DH2) 712. Os conteúdos dos registradores gerais designados 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 endereço do segundo operando. Quando um ou ambos os campos X2 ou B2 são iguais a zero, o registrador correspondente não participa na adição.
[0124] O primeiro operando de 64 bits é colocado de forma não transacional inalterado no local de segundo operando.
[0125] O deslocamento, formado pela concatenação dos campos DH2 e DL2, é tratado como um inteiro binário sinalizado de 20 bits.
[0126] O segundo operando deve ser alinhado em um limite de palavra dupla; caso contrário, exceção de especificação é reconhecida e a operação é suprimida.
[0127] Transação exterior/ mais externa: 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.
[0128] Uma instrução TRANSACTION BEGIN mais externa é aquela que é executada quando a profundidade de aninhamento de transação é inicialmente zero. Uma instrução TRANSACTION END mais externa é aquela que faz com que a profundidade de aninhamento de transação para a transição de um para zero. Uma transação restrita é a transação mais exterior, nesta concretização.
[0129] Filtragem de Interrupção de Programa: Quando uma transação é abortada devido a determinadas condições de exceção de programa, o programa pode, opcionalmente, evitar que a interrupção ocorra. Essa técnica é chamada de filtragem de interrupção de programa. Filtragem de interrupção do programa está sujeita à classe transacional da interrupção, o controle de filtragem de interrupção de programa efetivo da instrução TRANSACTION BEGIN, e a anulação da filtragem de interrupção do programa de execução transacional no registrador de controle 0.
[0130] Transação: A transação inclui os acessos de armazenamento de operando feitos, e registradores gerais selecionados alterados, enquanto a CPU está no modo de execução de transação. Para uma transação não restrita, acessos de armazenamento de operando podem incluir ambos os acessos transacionais e acessos não transacionais. Para uma transação restrita, os acessos de armazenamento de operandos se limitam a acessos transacionais. Como observado por outras CPUs e pelo subsistema de E/S, todos os acessos de armazenamento de operando feitos pela 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 de armazenamento transacionais são descartados, e eventuais registradores designados pela máscara de salvar registrador geral da instrução TRANSACTION BEGIN mais externa são restaurados para seu conteúdo antes da execução transacional.
[0131] Acesso Transacional: acessos transacionais são acessos de operando de armazenamento feitos enquanto a CPU está no modo de execução transacional, com exceção dos acessos feitos pela instrução NONTRANSACTIONAL STORE.
[0132] Modo de Execução Transacional: O termo modo de execução transacional (ou seja, o modo de execução da transação) descreve a operação comum, de ambos os modos de execução transacional não restrita e restrita. Assim, quando a operação é descrita, os termos não restrita e restrita são usados para qualificar o modo de execução transacional.
[0133] Quando a profundidade de aninhamento de 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).
[0134] Como observado pela CPU, buscas e armazenamentos feitos no modo de execução transacional não são diferentes do que os feitos enquanto não estavam em modo de execução transacional.
[0135] Numa concretização da arquitetura z/Architecture, a instalação de execução transacional está sob o controle de bits 8-9 0 do registrador de controle, os bits 61-63 do registrador de controle 2, a profundidade de aninhamento de transação, o endereço de bloco de diagnóstico de transação, e a palavra de estado do programa de aborto de transação (PSW).
[0136] Na sequência de uma redefinição inicial CPU, o conteúdo de posições de bit 8-9 de registrador de controle 0, posições de bits 62-63 de registrador de controle 2, e a profundidade de aninhamento de transação são ajustados para zero. Quando o controle de execução transacional, bit 8 do registrador de controle 0, é zero, a CPU não pode ser colocada em modo de execução transacional.
[0137] Maiores detalhes sobre os vários controles são descritos abaixo.
[0138] Como indicado, a instalação de execução transacional é controlada por dois bits no registrador de controle zero e três bits no registrador de controle dois. Por exemplo:
[0139] Registrador de Controle 0 Bits: As atribuições de bits são como se segue, numa concretização:
[0140] Controle de execução transacional (TXC): Bit 8 de registrador de controle zero é o controle de execução transacional. Este bit fornece um mecanismo mediante o qual o programa de controle (por exemplo, sistema operacional) pode indicar se quer ou não a instalação de execução de transação é utilizável pelo programa. Bit 8 deve ser um para entrar com sucesso no modo de execução transacional.
[0141] Quando o bit 8 do registrador de controle 0 é zero, tentativa de execução das instruções EXTRACT TRANSACTION NESTING DEPTH, TRANSACTION BEGIN e TRANSACVTION END resulta em uma execução de operação especial.
[0142] Uma concretização de um formato de uma instrução EXTRACT TRANSACTION NESTING DEPTH é descrita com referência à figura 8. Como um exemplo, uma instrução EXTRACT TRANSACTION NESTING DEPTH 800 inclui um campo opcode 802 especificando um código de operação que indica a operação de extração da profundidade de aninhamento de transação; e um campo de registrador R1 804 que designa um registrador geral.
[0143] A profundidade de aninhamento de transação atual é colocada nos bits 48-63 do registrador geral R1. Bits 0-31 do registrador permanecem inalterados, e os bits 32-47 do registrador são definidos para zero.
[0144] Numa outra concretização, a profundidade de aninhamento de transação máxima também é colocada no registrador geral R1, tal como nos bits 16-31.
[0145] Anulação de filtragem de Interrupção de Programa (Program Interruption Filtering Override - PIFO) de execução de transação: Bit 9 do registrador de controle zero é a anulação de filtragem de interrupção do programa de execução transacional. Este bit fornece um mecanismo pelo qual o programa de controle pode garantir que qualquer condição de exceção de programa que ocorra enquanto a CPU está no modo de execução transacional resulte em uma interrupção, independentemente do controle de filtragem de interrupção do programa efetivo especificado ou implícito pela instrução(s) TRANSACTION BEGIN.
[0146] Registrador de Controle de 2 Bits: As atribuições são as seguintes, numa concretização:
[0147] Âmbito de Diagnóstico de Transação (TDS): Bit 61 do registrador de controle 2 controla a aplicabilidade do controle de diagnóstico de transação (TDC) nos bits 62-63 do registrador, como segue:
[0148] Controle de Diagnóstico de Transação (TDC): Bits 62-63 do registrador de controle 2 são um inteiro sem sinal de dois bits que pode ser usado para fazer com que as transações sejam abortadas aleatoriamente para fins de diagnóstico. A codificação do TDC é como segue, num exemplo:
[0149] Quando uma transação é abortada devido a um TDC diferente de zero, então pode ocorrer qualquer um dentre o seguinte:
[0150] • O código de aborto é definido como qualquer um dos códigos de 7-11, 13-16, ou 255, com o valor do código escolhido aleatoriamente pela CPU; o código de condição é definido correspondente ao código de aborto. Os códigos de aborto são adicionalmente descritos abaixo.
[0151] • Para uma transação não restrita, o código de condição é ajustado para um. Neste caso, o código de aborto não é aplicável.
[0152] É dependente de modelo se o valor TDC de 1 é implementado. Se não for implementado, um valor de 1 atua como se 2 fosse especificado.
[0153] Para uma transação restrita, um valor TDC de 1 é tratado como se um valor TDC de 2 fosse especificado.
[0154] Se um valor TDC de 3 é especificado, os resultados são imprevisíveis.
[0155] Endereço de Bloco de Diagnóstico de Transação (TDBA)
[0156] O endereço de bloco de diagnóstico de transação válido (TDBA) é definido a partir do endereço do primeiro operando da instrução TRANSACTION BEGIN (TBEGIN) mais externa quando o campo B1 da instrução é diferente de zero. Quando a CPU está no modo de registrador de acesso ou espaço principal, o TDBA designa um local no espaço do endereço principal. Quando a CPU está no espaço secundário, ou o modo de espaço nativo, o TDBA designa uma localização no espaço de endereço secundário ou nativo, respectivamente. Quando DAT (Tradução Dinâmica de Endereços) está desligada, o TDBA designa um local no armazenamento real.
[0157] A TDBA é usada pela CPU para localizar o bloco de diagnóstico de transação - o chamado TDB de TBEGIN especificada - 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 de TBEGIN especificada é em um limite de palavras duplas.
[0158] Quando o campo B1 de uma instrução TRANSACTION BEGIN (TBEGIN) mais externa é zero, o endereço do bloco de diagnóstico transacional é inválido e nenhuma TDB de TBEGIN especificada é armazenada se a transação for abortada posteriormente.
[0159] Transaction Aborto PSW (TAPSW)
[0160] Durante a execução da instrução TRANSACTION BEGIN (TBEGIN) quando a profundidade de aninhamento é inicialmente zero, a PSW de aborto de transação é definida para o conteúdo da PSW atual; e o endereço da instrução de PSW de aborto de transação designa a instrução sequencial seguinte (isto é, a instrução seguinte a TBEGIN mais exterior). Durante a execução da instrução TRANSACTION BEGIN restrita (TBEGINC) quando a profundidade de aninhamento é inicialmente zero, a PSW de aborto de transação é definida com o conteúdo da PSW atual, exceto que o endereço da instrução da PSW de aborto de transação designa a instrução TBEGINC (em vez de a próxima instrução sequencial seguinte à TBEGINC).
[0161] Quando uma transação é abortada, o código de condição na PSW de aborto de transação é substituído com um código que indica a severidade da condição de aborto. Posteriormente, se a operação foi abortada devido a causas que não resultam em uma interrupção, a PSW é carregada a partir da PSW de aborto de transação; se a transação foi abortada devido a causas que resultam em uma interrupção, a PSW de aborto de transação é armazenada como a PSW de interrupção antiga.
[0162] A PSW de aborto de transação não é alterada durante a execução de qualquer instrução TRANSACTION BEGIN interna.
[0163] Profundidade de Aninhamento de Transação (TND)
[0164] A profundidade de aninhamento de transação é, por exemplo, um valor sem sinal de 16 bits que é incrementado cada vez que uma instrução TRANSACTION BEGIN é completada com o código de condição 0 e decrementado cada vez que uma instrução TRANSACTION END é concluída. A profundidade de aninhamento de transação é redefinida para zero quando uma transação é abortada ou por redefinição de CPU.
[0165] Numa concretização, uma TND máxima de 15 é implementada.
[0166] Numa concretização, quando a CPU está no modo de execução transacional restrita, a profundidade de aninhamento de transação é um. Além disso, embora a TND máxima possa ser representada como um valor de 4 bits, a TND é definida como sendo um valor de 16 bits para facilitar a sua inspeção no bloco de diagnóstico de transação.
[0167] Bloco de Diagnóstico de Transação (TDB)
[0168] Quando uma transação é abortada, várias informações de status podem ser salvas em um bloco de diagnóstico de transação (TDB), como segue:
[0169] 1. TDB com TBEGIN especificada: Para uma transação não restrita, quando o campo B1 da instrução TBEGIN mais exterior é diferente de zero, o endereço do primeiro operando da instrução designa o TDB com TBEGIN especificada. Este é um local especificado do programa de aplicativo que pode ser examinado pelo manipulador de aborto do aplicativo.
[0170] 2. TDB de interrupção de programa (PI): Se uma transação não restrita é abortada devido a uma condição de exceção de programa não filtrada, ou se uma transação restrita é abortada devido a qualquer condição de exceção de programa (isto é, qualquer condição que resulte em uma interrupção do programa que está sendo reconhecido), o PI- TDB é armazenado em locais na área de prefixo. Esta opção está disponível para o sistema operacional para inspecionar e fazer logout de qualquer relatório de diagnóstico que o mesmo pode proporcionar.
[0171] 3. Intercepção de TDB: Se a transação for abortada devido a qualquer condição de exceção de programa que resulta em intercepção (isto é, a condição faz com que a execução interpretativa termine e o controle retorne para o programa host), o TDB é armazenado em um local especificado no bloco de descrição do estado para o sistema operacional hóspede.
[0172] O TDB com TBEGIN especificada só é armazenado, numa concretização, quando o endereço TDB é válido (isto é, quando o campo B1 da instrução TBEGIN mais exterior é diferente de zero).
[0173] Para abortos devido às condições de exceção de programa sem filtro, apenas um dentre o PI-TDB ou TDB de Intercepção será armazenado. Assim, pode ser zero, um, ou dois TDBs armazenados para um aborto.
[0174] Outros detalhes com relação a um exemplo de cada um dos TDB são descritos a seguir:
[0175] TDB com TBEGIN especificada: O local de 256 bytes especificado por um endereço de bloco de diagnóstico de transação válido. Quando o endereço de bloco de diagnóstico de transação é válido, o TDB com TBEGIN especificada é armazenado em uma transação de aborto. O TDB com TBEGIN especificada está sujeito a todos os mecanismos de proteção de armazenamento que estão em vigor na execução da instrução TRANSACTION BEGIN mais externa. Um evento de alteração de armazenamento PER (Program Event Recording) de qualquer parte do TDB com TBEGIN especificada é detectado durante a execução da TBEGIN mais externa, e não durante o processamento de aborto de transação.
[0176] Um dos propósitos do PER é para ajudar na depuração de programas. Ele permite que o programa seja alertado para os seguintes tipos de eventos, como exemplos:
[0177] • A execução de uma instrução de desvio de sucesso. A opção é fornecida tendo uma ocorrência de evento apenas quando o local de destino de desvio está dentro da área de armazenamento designada.
[0178] • Busca de uma instrução a partir da área de armazenamento designada.
[0179] • Alteração dos conteúdos da área de armazenagem designado. A opção é fornecida tendo uma ocorrência de evento apenas quando a área de armazenamento está dentro de espaços de endereços designados.
[0180] • Execução de uma instrução STORE USING REAL ADDRESS.
[0181] • Execução da instrução TRANSACTION END.
[0182] O programa pode seletivamente especificar que um ou mais dos tipos de eventos acima são reconhecidos, exceto que o evento STORE USING REAL ADDRESS pode ser especificado apenas junto com o evento de alteração de armazenamento. A informação a respeito de um evento PER é fornecida para o programa por meio de uma interrupção de programa, com a causa da interrupção sendo identificada no código de interrupção.
[0183] Quando o endereço do bloco de diagnóstico de transação não é válido, a TDB com TBEGIN especificada não é armazenada.
[0184] TDB de Interrupção de Programa: locais reais 6,144-6,399 (1800-18FF hex). O TDB de interrupção do programa é armazenado quando uma transação é abortada devido a interrupção do programa. Quando uma transação é abortada devido a outras causas, os conteúdos do TDB de interrupção de programa são imprevisíveis.
[0185] O TDB de interrupção de programa TDB não está sujeito a qualquer mecanismo de proteção. Eventos de alteração de armazenamento PER não são detectados pelo TDB de interrupção de programa quando ele é armazenado durante uma interrupção do programa.
[0186] TDB de Intercepção: A localização real de host de 256 bytes especificada por locais 488- 495 da descrição do estado. O TDB de intercepção é armazenado quando uma transação abortada resulta em uma interceptação de interrupção do programa de hóspede (isto é, código de intercepção 8). Quando uma transação é abortada devido a outras causas, os conteúdos do TDB de intercepção são imprevisíveis. O TDB de intercepção não está sujeito a qualquer mecanismo de proteção.
[0187] Conforme representado na figura 9, os campos de um bloco de diagnóstico de transação 900 são como a seguir, numa concretização:
[0188] Formato 902: Byte 0 contém uma indicação de validade e formato, como segue:
[0190] Um TDB no qual o campo de formato é zero, é referido como um TDB nulo.
[0191] Sinalizadores 904: Byte 1 contém várias indicações, como segue:
[0192] Validade token de conflito (CTV): Quando uma transação é abortada devido a um conflito de busca ou armazenamento (ou seja, códigos de aborto 9 ou 10, respectivamente), o bit 0 de byte 1 é a indicação de validade de token de conflito. Quando a indicação CTV é um, o token de conflito 910 em bytes 16-23 do TDB contém o endereço lógico em que o conflito foi detectado. Quando a indicação CTV é zero, bytes 16-23 do TDB são imprevisíveis.
[0193] Quando uma transação é abortada devido a qualquer outra razão que não o conflito de busca ou armazenamento, o bit 0 do byte 1 é armazenado como zero.
[0194] Indicação de transação restrita (CTI): Quando a CPU está no modo de execução transacional restrita, o bit 1 do byte 1 é definido para um. Quando a CPU está no modo de execução transacional não restrita, o bit 1 do byte 1 é definido para zero.
[0195] Reservado: Bits 2-7 do byte 1 são reservados e armazenados como zeros.
[0196] A profundidade de aninhamento de transação (TND) 906: Bytes 6-7 contêm a profundidade de aninhamento de transação quando a transação foi abortada.
[0197] Código de Aborto de transação (TAC) 908: Bytes 8-15 contêm um código de aborto de transação de 64 bits não sinalizado. Cada ponto de código indica uma razão para uma transação ser abortada.
[0198] Depende do modelo se o código de aborto de transação é armazenado no TDB de interrupção de programa quando uma transação é abortada devido a outras condições do que uma interrupção do programa.
[0199] O token de conflito 910: Para as transações que são abortadas devido a conflitos de busca ou armazenamento (isto é, códigos de aborto 9 e 10, respectivamente), os bytes 16-23 contêm o endereço lógico do local de armazenamento no qual foi detectado o conflito. O token de conflito é significativo quando o bit CTV, bit 0 do byte 1, é um.
[0200] Quando o bit CTV é zero, bytes 16-23 são imprevisíveis.
[0201] Por causa da execução especulativa pela CPU, o token de conflito pode designar um local de armazenamento que não seria necessariamente acessado pela sequência de execução conceitual da transação.
[0202] Endereço de Instrução de Transação Abortada (ATIA) 912: Bytes 24-31 contêm um endereço de instrução que identifica a instrução que estava executando quando foi detectado um aborto. Quando uma transação é abortada devido a códigos de aborto 2, 5, 6, 11, 13 ou 256 ou superior, ou quando uma transação é abortada devido a códigos de aborto 4 ou 13 e a condição de exceção de programa é anulação, o ATIA aponta diretamente para a instrução que estava sendo executada. Quando uma transação é abortada devido a códigos de aborto 4 ou 12, e a condição de exceção programa não é anulação, os ATIA aponta após a instrução que estava sendo executada.
[0203] Quando uma transação é abortada devido a códigos de aborto 7-10, 14-16, ou 255, o ATIA não indica necessariamente a instrução exata causando o aborto, mas pode apontar para uma instrução anterior ou posterior, dentro da transação.
[0204] Se uma transação é abortada devido a uma instrução que é o alvo de uma instrução do tipo execução, o ATIA identifica a instrução do tipo execução, quer apontando para a instrução ou após a mesma, de acordo com o código de interrupção, como descrito acima. O ATIA não indica o alvo da instrução do tipo execução.
[0205] O ATIA está sujeito ao modo de endereçamento quando a transação for anulada. No modo de endereçamento de 24 bits, os bits 0-40 do campo contêm zeros. No modo de endereçamento de 31 bits, os bits 0-32 do campo contêm zeros.
[0206] Depende do modelo se o endereço de instrução de transação abortada é armazenado no TDB de interrupção de programa quando uma transação é abortada devido a condições outras do que uma interrupção do programa.
[0207] Quando uma transação é abortada devido aos códigos de aborto 4 ou 12, e a condição de exceção de programa não é anulação, o ATIA não aponta para a instrução causando o aborto. Subtraindo-se o número de meias palavras indicado pelo código de comprimento interrupção (ILC) do ATIA, a instrução causando o aborto pode ser identificada em condições que suprimem ou encerram, ou de eventos não PER que estão completando. Quando uma transação é abortada devido a um evento PER, e nenhuma outra condição de exceção de programa está presente, o ATIA é imprevisível.
[0208] Quando o endereço de bloco de diagnóstico de transação é válido, o ILC pode ser examinado na identificação de interrupção do programa (PIID), nos bytes 36-39 do TDB com TBEGIN especificada. Quando a filtragem não se aplica, o ILC pode ser examinado na PIID no local 140-143 no armazenamento real.
[0209] Identificação de Acesso de Exceção (EAID) 914: Para transações que são abortadas devido a determinadas condições de exceção de programa filtradas, byte 32 do TDB com TBEGIN especificada contém a identificação de acesso de exceção. Em um exemplo da arquitetura z/Architecture, o formato da 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 em uma interrupção, tal como descrito no incorporado acima por princípios de operação de referência.
[0210] Para transações que são abortadas por outros motivos, incluindo quaisquer condições de exceção que resultam em uma interrupção de programa, byte 32 é imprevisível. Byte 32 é imprevisível no TDB de interrupção do programa.
[0211] Este campo é armazenado apenas no TDB designado pelo endereço de bloco de diagnóstico de transação; caso contrário, o campo é reservado. O EAID é armazenado somente para lista de acesso controlado ou de proteção da DAT, do tipo ASCE, tradução da página, primeira tradução de região, segunda tradução de região, terceira tradução de região, e condições de exceção do programa de tradução de segmento.
[0212] Código de Exceção de Dados (DXC) 916: Para as operações que são abortadas devido a condições de exceção do programa de exceção de dados filtrados, byte 33 do TDB com TBEGIN especificada contém o código de exceção de dados. Em um 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 as condições de exceção resultam em uma interrupção, tal como descrito no incorporadas acima por princípios de operação de referência. Em um exemplo, localização 147 inclui o DXC.
[0213] Para transações que são abortados por outros motivos, incluindo quaisquer condições de exceção que resultam em uma interrupção de programa, byte 33 é imprevisível. Byte 33 é imprevisível no TDB de interrupção do programa.
[0214] Este campo é armazenado apenas no TDB designado pelo endereço de bloco de diagnóstico operação; caso contrário, o campo é reservado. O DXC é armazenado somente para condições de exceção de programa de dados.
[0215] Identificação de Interrupção de Programa (PIID) 918: Para as operações que são abortadas devido a condições de exceção de programa filtradas, bytes 36-39 do TDB com TBEGIN especificada contém a identificação interrupção do programa. Em um exemplo da arquitetura z/Architecture, o formato do PIID é o mesmo que o descrito em locais reais 140-143 quando a condição resulta em uma interrupção (tal como descrito na acima incorporado por Princípios de operação de referência), com exceção de que o código de comprimento de instrução em bits 13-14 do PIID é respectivo para a instrução na qual a condição de exceção foi detectada.
[0216] Para transações que são abortadas por outros motivos, 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 no TDB de interrupção do programa.
[0217] Este campo é armazenado apenas no TDB designado pelo endereço de bloco de diagnóstico de transação; caso contrário, o campo é reservado. A identificação de interrupção do programa é armazenada somente para condições de exceção do programa.
[0218] Identificação de Exceção de Tradução (TEID) 920: Para as operações que são abortadas devido a qualquer das seguintes condições de exceção de programa filtradas, bytes 40-47 do TDB com TBEGIN especificada contém a identificação de exceção de tradução.
[0219] • A lista de acesso controlado ou proteção DAT
[0220] • Tipo ASCE
[0221] • Tradução de página
[0222] • Primeira tradução de região
[0223] • Segunda tradução da região
[0224] • Terceira tradução da região
[0225] • Exceção de tradução de segmento
[0226] Em um exemplo da arquitetura z/Architecture, o formato da TEID é o mesmo que o descrito em localizações reais 168-175 quando a condição resulta em uma interrupção, como descrito nos princípios de funcionamento acima incorporados por referência.
[0227] Para transações que são abortadas por outros motivos, 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 no TDB de interrupção do programa.
[0228] Este campo é armazenado apenas no TDB designado pelo endereço de bloco de diagnóstico de transação; caso contrário, o campo é reservado.
[0229] Endereço de Evento de Ruptura 922: Para as operações que são abortadas devido às condições de exceção de programa filtradas, bytes 48-55 do TDB com TBEGIN especificada contém o endereço do evento de ruptura. Em um exemplo da arquitetura z/Architecture, o formato do endereço do evento de ruptura é o mesmo que o descrito em locais reais 272-279 quando a condição resulta em uma interrupção, como descrito nos princípios de funcionamento incorporados acima por referência.
[0230] Para transações que são abortadas por outros motivos, 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 no TDB de interrupção do programa.
[0231] Este campo é armazenado apenas no TDB designado pelo endereço de bloco de diagnóstico de transação; caso contrário, o campo é reservado.
[0232] Mais detalhes relativos a eventos de ruptura são descritos abaixo.
[0233] Em uma concretização da arquitetura z/Architecture, quando a instalação de PER-3 está instalada, ela fornece ao programa o endereço da última instrução para causar uma ruptura na execução sequencial da CPU. A gravação de endereço do evento de ruptura pode ser usada como um auxílio de depuração para a detecção de ramificação ampla. Esta instalação fornece, por exemplo, um registro de 64 bits na CPU, chamado o registrador de endereço de evento de ruptura. Cada vez que uma instrução diferente de TRANSACTION ABORT provoca uma ruptura na execução da instrução sequencial (isto é, o endereço da instrução na PSW é substituído, em vez de incrementado pelo comprimento da instrução), o endereço daquela instrução é colocado no registrador de endereço de evento de ruptura. Sempre que ocorre uma interrupção do programa, se PER é indicado ou não, o conteúdo atual do registro de endereço do evento de ruptura é colocado em locais de armazenamento reais 272-279.
[0234] Se a instrução causando o evento de ruptura é o alvo de uma instrução do tipo execução (EXECUTE ou EXECUTE RELATIVE LONG), então o endereço de instrução usado para buscar a instrução do tipo execução é colocado no registrador de endereço do evento de ruptura.
[0235] Em uma concretização do z/Architecture, um evento de ruptura é considerado a ocorrer sempre que uma das seguintes instruções causa ramificação: BRANCH AND LINK (BAL, BALR); BRANCH AND SAVE (BAS, BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH AND STACK (BAKR); BRANCH ON CONDITION (BC, BCR); BRANCH ON COUNT (BCT, BCTR, BCTG, BCTGR); BRANCH ON INDEX HIGH (BXH, BXHG); BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG); BRANCH RELATIVE ON CONDITION (BRC); BRANCH RELATIVE ON CONDITION LONG (BRCL); BRANCH RELATIVE ON COUNT (BRCT, BRCTG); BRANCH RELATIVE ON INDEX HIGH (BRXH, BRXHG); BRANCH RELATIVE ON INDEX LOW OR EQUAL (BRXLE, BRXLG); COMPARE AND BRANCH (CRB, CGRB); COMPARE AND BRANCH RELATIVE (CRJ, CGRJ); COMPARE IMMEDIATE AND BRANCH (CIB, CGIB); COMPARE IMMEDIATE AND BRANCH RELATIVE (CD, CGIJ); COMPARE LOGICAL AND BRANCH (CLRB, CLGRB); COMPARE LOGICAL AND BRANCH RELATIVE (CLRJ, CLGRJ); COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ).
[0236] Um evento de ruptura é considerado também ocorrer quando uma das seguintes instruções completa: BRANCH AND SET AUTHORITY (BSA); BRANCH IN SUBSPACE GROUP (BSG); BRANCH RELATIVE AND SAVE (BRAS); BRANCH RELATIVE AND SAVE LONG (BRASL); LOAD PSW (LPSW); LOAD PSW EXTENDED (LPSWE); PROGRAM CALL (PC); PROGRAM RETURN (PR); PROGRAM TRANSFER (PT); PROGRAM TRANSFER WITH INSTANCE (PTI); RESUME PROGRAM (RP); e TRAP (TRAP2, TRAP4).
[0237] Um evento de ruptura não é considerado como ocorrendo em resultado de uma transação sendo abortada (implícita ou como resultado da instrução TRANSACTION ABORT).
[0238] Informações de diagnóstico Dependente de Modelo 924: Bytes 112-127 contêm informações de diagnóstico dependente de modelo.
[0239] Para todas as exceções de código de aborto 12 (interrupção do programa filtrada), a informação de diagnóstico dependente de modelo é salva em cada TDB que está armazenado.
[0240] Numa concretização, a informação de diagnóstico dependente do modelo inclui o seguinte:
[0241] • Bytes 112-119 contém um vetor de 64 bits chamado as indicações de ramificação de execução transacional (TXBI). Cada um dos primeiros 63 bits do vetor indica os resultados da execução de uma instrução de ramificação, enquanto a CPU estava no modo de execução transacional, como segue:
[0243] O bit 0 representa o resultado do primeiro tal instrução de ramificação, o bit 1 representa o resultado da segunda tal instrução, e assim por diante.
[0244] Se menos do que 63 instruções de ramificação foram executadas enquanto a CPU estava no modo de execução de transações, os bits mais à direita que não correspondem com as instruções ramificadas são definidas como zero (incluindo o bit 63). Quando mais de 63 instruções de desvio foram executadas, bit 63 da TXBI está definido para um.
[0245] Os bits na TXBI são definidos por instruções que são capazes de provocar um evento de ruptura, conforme listado acima, exceto para o seguinte:
[0246] - Qualquer instrução restrita não faz com que um bit seja definido na TXBI.
[0247] - Para instruções de, por exemplo, na z/Architecture, quando o campo do M1 da instrução BRANCH ON CONDITION, BRANCH RELATIVE ON CONDITION, ou BRANCH RELATIVE ON CONDITION LONG é zero, ou quando o campo R2 das seguintes instruções é zero, ele é dependente do modelo se a execução da instrução faz com que um bit seja definido na TXBI.
[0248] • BRANCH AND LINK (BALR); BRANCH AND SAVE (BASR); BRANCH AND SAVE AND SET MODE (BASSM); BRANCH AND SET MODE (BSM); BRANCH ON CONDITION (BCR); e BRANCH ON COUNT (BCTR, BCTGR)
[0249] • Para as condições de aborto que foram causadas por uma exceção de acesso ao host, a posição de bit 0 do byte 127 é definida como um. Para todas as outras condições de aborto, posição de bit 0 do byte 127 é definida como zero.
[0250] • Para as condições de aborto que foram detectados pela unidade de carregamento/ armazenamento (LSU), cinco bits mais à direita do byte 127 contém a indicação da causa. Para as condições de aborto que não foram detectadas pela LSU, byte 127 é reservado.
[0251] Registros Gerais 930: Bytes 128-255 contém o conteúdo de registros gerais 0-15 no instante que a transação foi abortada. Os registros são armazenados em ordem crescente, começando com registro geral 0 nos bytes 128-135, registro geral 1 nos bytes 136-143, e assim por diante.
[0252] Reservado: Todos os outros campos são reservados. A menos que indicado de outra forma, os conteúdos dos campos reservados são imprevisíveis.
[0253] Como observado por outras CPUs e o subsistema de E/S, armazenamento do TDB(s) durante um aborto de transação é uma referência de acesso múltiplo que ocorre após todos os armazenamentos não transacionais.
[0254] A transação pode ser abortada devido a causas que estão fora do escopo da configuração imediata em que ela executa. Por exemplo, eventos transitórios reconhecidos por um hipervisor (como LPAR ou z/VM) pode fazer uma transação ser abortada.
[0255] A informação fornecida no bloco de diagnóstico de transação é destinada para fins de diagnóstico e é substancialmente correta. No entanto, devido a um aborto poder ter sido causado por um evento fora do escopo da configuração imediata, informações como o código de aborto ou identificação de interrupção do programa podem não refletir com precisão as condições dentro da configuração, e, portanto, não devem ser usadas na determinação da ação do programa.
[0256] Além da informação de diagnóstico salva no TDB, quando uma transação é abortada devido a qualquer condição de exceção de programa de exceção de dados e tanto o controle do registro AFP, bit 45 do registro de controle 0, e controle de operação de ponto flutuante de permissão efetivo (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 se a filtragem se aplica a condição de exceção de programa. Quando uma transação é abortada, e um ou ambos o controle de registro AFP ou controle de operação de ponto flutuante efetivo de permissão são zero, o DXC não é colocado no FPCR.
[0257] Numa concretização, tal como é aqui indicado, quando a instalação de execução da transação for instalada, são fornecidas as seguintes instruções gerais.
[0258] • EXTRACT TRANSACTION NESTING DEPTH
[0259] • NONTRANSACTIONAL STORE
[0260] • TRANSACTION ABORT
[0261] • TRANSACTION BEGIN
[0262] • TRANSACTION END
[0263] Quando a CPU está no modo de execução transacional, tentativa de execução de certas instruções é restrita e faz com que a transação seja abortada.
[0264] Quando emitida 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 de restrição de transação, ou pode resultar na execução procedendo como se a transação não fosse restrita.
[0265] Em um exemplo da z/Architecture, instruções restritas incluem, por exemplo, as seguintes instruções não privilegiadas: COMPARE AND SWAP AND STORE; MODIFY RUNTIME INSTRUMENTATION CONTROLS; PERFORM LOCKED OPERATION; PREFETCH DATA (RELATIVE LONG), quando o código no campo M1 é de 6 ou 7; STORE CHARACTERS UNDER MASK HIGH, quando o campo M3 é zero e o código no campo R1 é de 6 ou 7; STORE FACILITY LIST EXTENDED; STORE RUNTIME INSTRUMENTATION CONTROLS; SUPERVISOR CALL; e TEST RUNTIME INSTRUMENTATION CONTROLS.
[0266] Na lista acima, COMPARE AND SWAP AND STORE e PERFORM LOCKED OPERATION são instruções complexas que podem ser mais eficientes implementadas através da utilização de instruções básicas no modo de TX. Os casos de PREFETCH DATA e PREFETCH DATA RELATIVE LONG estão restritos à medida que os códigos de 6 e 7 liberam 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).
[0267] Sob as condições listadas abaixo, as seguintes instruções são restritas:
[0268] • BRANCH AND LINK (BALR), BRANCH AND SAVE (BASR), e BRANCH AND SAVE AND SET MODE, quando o campo R2 da instrução é diferente de zero e rastreamento de ramificação é habilitado.
[0269] • BRANCH AND SAVE AND SET MODE e BRANCH AND SET MODE, quando o campo R2 é diferente de zero e modo de rastreamento está habilitado; SET ADDRESSING MODE, quando o modo de rastreamento está habilitado.
[0270] • MONITOR CALL, quando uma condição de evento de monitoramento é reconhecida.
[0271] A lista acima inclui instruções que podem formar entradas de rastreamento. Se estas instruções foram autorizadas a executar de forma transacional e formar entradas de rastreamento, e a transação posteriormente abortada, o ponteiro tabela de rastreamento no registro de controle 12 iria avançar, mas os armazenamentos para a tabela de rastreamento seriam descartados. Isto deixaria uma lacuna inconsistente na tabela de rastreamento. Assim, as instruções são restritas nos casos em que elas formam entradas de rastreamento.
[0272] Quando a CPU está no modo de execução transacional, ela é dependente do modelo se as seguintes instruções são restritas: CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT UNICODE- 16 TO UNICODE-32; CONVERT UNICODE- 16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE- 16; CONVERT UNICODE-32 TO UNICODE-8; CONVERT UNICODE-8 TO UNICODE- 16; CONVERT UNICODE-8 TO UNICODE-32; PERFORM CRYPTOGRAPHIC COMPUTATION; RUNTIME INSTRUMENTATION OFF; e RUNTIME INSTRUMENTATION ON.
[0273] Cada uma das instruções acima ou é implementada atualmente pelo coprocessador de hardware, ou foi em máquinas anteriores e, portanto, é considerada restrita.
[0274] Quando o controle de modificação de AR (A) de permissão efetivo é zero, as seguintes instruções são restritas: COPY ACCESS; LOAD ACCESS MULTIPLE; LOAD ADDRESS EXTENDED; e SET ACCESS.
[0275] Cada uma das instruções acima faz com que o conteúdo de um registro de acesso seja modificado. Se o controle A na instrução TRANSACTION BEGIN é zero, então o programa indicou explicitamente que a modificação de registro de acesso não deve ser permitida.
[0276] Quando o controle (F) de operação de ponto flutuante efetivo de permissão é zero, instruções de ponto flutuante são restritas.
[0277] Em determinadas circunstâncias, as seguintes instruções podem ser restritas: EXTRACT CPU TIME; EXTRACT PSW; STORE CLOCK; STORE CLOCK EXTENDED; e STORE CLOCK FAST.
[0278] Cada uma das instruções acima está sujeita a um controle de intercepção na descrição de estado de execução interpretativa. Se o hipervisor definiu o controle de intercepção para estas instruções, em seguida, a sua execução pode ser prolongada devido a implementação do hipervisor; assim, elas são consideradas restritas se uma intercepção ocorre.
[0279] Quando uma transação não restrita é abortada por causa da tentativa de execução de uma instrução restrita, o código de aborto de transação no bloco de diagnóstico de transação é definido como 11 (instrução restrita), e o código de condição é definido para 3, exceto como a seguir: quando uma transação não restrita é abortada devido à tentativa de execução de uma instrução que de outro modo resultaria em uma exceção de operação privilegiada, é imprevisível se o código de aborto é ajustado para 11 (instrução restrita) ou 4 (interrupção do programa não filtrado resultante do reconhecimento da interrupção do programa de 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 é de 6 ou 7, é imprevisível se o código de interrupção está definido para 11 (instrução restrita) ou 16 (outro cache). Quando uma transação não restrita é abortada devido à tentativa de execução MONITOR CALL, e tanto uma condição de eventos de monitor e uma condição de exceção especificação estão presentes, é imprevisível se o código de aborto está definido para 11 ou 4, ou, se a interrupção do programa é filtrada, 12.
[0280] As instruções adicionais podem ser restritas em uma transação restrita. Embora estas instruções não sejam atualmente definidas para serem restritas em uma transação não restrita, elas podem ser restritas em determinadas circunstâncias, em uma transação não restrita em futuros processadores.
[0281] Certas instruções restritas podem ser permitidas no modo de execução de transações em futuros processadores. Portanto, o programa não deve depender se a transação sendo abortada 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 para ser abortada.
[0282] Em uma transação não restrita, o programa deve fornecer um caminho de código não transacional alternativo para acomodar uma transação que aborta devido a uma instrução restrita.
[0283] Em operação, quando a profundidade de aninhamento de transação é zero, a execução da instrução TRANSACTION BEGIN (TBEGIN) resultando em código de condição zero faz com que a CPU entre no modo de execução transacional não restrita. Quando a profundidade de aninhamento de transação é zero, a execução da instrução TRANSACTION BEGIN restrita (TBEGINC) resultando em código de condição zero faz com que a CPU entre no modo de execução transacional restrita.
[0284] Exceto onde expressamente de outra forma, todas as regras que se aplicam para execução não transacional também se aplicam a execução transacional. A seguir estão características adicionais do processamento enquanto a CPU está no modo de execução transacional.
[0285] Quando a CPU está no modo de execução transacional não restrita, a execução da instrução TRANSACTION BEGIN, resultando em código de condição zero faz com que a CPU permaneça no modo de execução transacional não restrita.
[0286] Como observado pela CPU, buscas e armazenamentos feitos no modo de execução de transação não são diferentes do que as feitas enquanto não estiver em modo de execução transacional. Como observado por outras CPUs e pelo subsistema de E/S, todos os acessos de operando de armazenamento feitos enquanto a CPU está no modo de execução transacional parecem ser um acesso simultâneo de bloco único. Ou seja, os acessos a todos os bytes dentro de uma meia palavra, palavra, palavra dupla (doubleword) ou palavra quádrupla (quadword) são especificados para parecerem ser de bloco simultâneo como observado por outras CPUs e (por exemplo, canal) programas de E/S. A meia palavra, palavra, palavra dupla ou palavra quádrupla é referida nesta seção como um bloco. Quando uma referência do tipo busca é especificada para parecer ser simultânea dentro de um bloco, nenhum acesso de armazenamento para o bloco por outra CPU ou programa de E/S é permitido durante o tempo em que os bytes contidos no bloco estão sendo buscados. Quando uma referência do tipo armazenamento é especificada para parecer ser simultânea dentro de um bloco, nenhum acesso ao bloco, ou busca ou armazenamento, é permitido por outra CPU ou programa de E/S durante o tempo em que os bytes dentro do bloco estão sendo armazenados.
[0287] Os acessos de armazenamento para instrução e buscas de Tabela DAT e ART (Tabela de Registro de Acesso) seguem as regras não transacionais.
[0288] 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 mude para zero, caso em que, a transação é concluída.
[0289] Quando a CPU deixa o modo de execução transacional por meio do término 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 uma única operação de bloco simultâneo como observado por outras CPUs e o subsistema de E/S.
[0290] Uma transação pode ser abortada implicitamente por uma variedade de causas, ou pode ser explicitamente abortada pela instrução TRANSACTION ABORT. Exemplos de causas possíveis de um aborto de transação, o código de aborto correspondente, e o código de condição que é colocado na PSW de aborto de transação são descritos abaixo.
[0291] Interrupção Externa: O código de aborto de transação é definido como 2, e o código de condição na PSW de aborto de transação é definido como 2. A PSW de aborto de transação é armazenada como a PSW anterior externa como parte do processamento de interrupção externa.
[0292] Interrupção de Programa (não filtrada): Uma condição de exceção de programa que resulta em uma interrupção (isto é, uma condição não filtrada) faz com que a transação seja abortada com código 4. O código de condição na PSW de aborto de transação é definido específico para o código de interrupção de programa. A PSW de aborto de transação é armazenada como a PSW antiga de programa como parte do processamento de interrupção do programa.
[0293] Uma instrução que de outro modo resultaria em uma transação que sendo abortada devido a uma exceção de operação pode produzir resultados alternativos: para uma transação não restrita, a transação pode, em alternativa abortar com o código de aborto 11 (instrução restrita); para uma transação restrita, uma interrupção de programa de restrição de transação pode ser reconhecida, em vez da exceção de operação.
[0294] Quando um evento PER (Gravação de evento de programa) é reconhecido em conjunto com qualquer outra condição de exceção de programa não filtrada, o código de condição é definido como 3.
[0295] Interrupção de Verificação de Máquina: O código de aborto de transação é definido para 5, e o código de condição na PSW de aborto de transação é definido como 2. A PSW de aborto de transação é armazenada como a PSW de verificação de máquina anterior como parte do processamento de interrupção de verificação de máquina.
[0296] Interrupção de E/S: O código de aborto de transação é definido como 6, e o código de condição na PSW de aborto de transação é definido como 2. A PSW de aborto de transação é armazenada como a PSW anterior de E/S como uma parte do processamento de interrupção de E/S.
[0297] Overflow de busca: Uma condição de overflow de busca é detectada quando a transação tenta buscar em mais locais do que a CPU suporta. A código de aborto de transação é definido como 7, e o código de condição é definido para 2 ou 3.
[0298] Overflow de armazenamento: Uma condição de overflow de armazenamento é detectada quando a transação tenta armazenar em mais locais do que a CPU suporta. O código de aborto de transação é definido como 8, e o código de condição é definido como 2 ou 3.
[0299] Permitir que o código de condição seja 2 ou 3 em resposta a um aborto de overflow de busca ou armazenamento permite que a CPU indique situações de potenciais novas tentativas (por exemplo, código de condição 2 indica que a re-execução da transação pode ser produtiva, enquanto código de condição 3 não recomenda a re-execução).
[0300] Conflito de busca: Uma condição de conflito de busca é detectada quando outra CPU ou o subsistema de E/S tenta armazenar em um local que foi buscado de forma transacional por esta CPU. O código de aborto de transação é definido como 9, e o código de condição é definido como 2.
[0301] Conflito de armazenamento: A condição de conflito de armazenamento é detectada quando outra CPU ou subsistema de E/S tenta acessar um local que foi armazenado durante a execução de transações por esta CPU. O código de aborto de transação é definido como 10, e o código de condição é definido como 2.
[0302] Instrução restrita: Quando a CPU está no modo de execução transacional, tentativa de execução de uma instrução restrita faz com que a transação seja abortada. O código de aborto de transação é definido como 11, e o código de condição é definido como 3.
[0303] 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 restrita em uma interrupção de programa de restrição de transação ou aborto devido a uma instrução restrita. A transação ainda é abortada, mas o código de aborto pode indicar qualquer causa.
[0304] Condição de Exceção de Programa (filtrado): Uma condição de exceção de programa que não resulta em uma interrupção (isto é, uma condição filtrada) faz com que a operação seja abortada com um código de aborto de transação de 12. O código de condição é definido como 3.
[0305] Profundidade do aninhamento excedida: A condição de profundidade de aninhamento excedida é detectada quando a profundidade de aninhamento de transação está no valor máximo permitido para a configuração, e uma instrução TRANSACTION BEGIN é executada. A transação é abortada com um código de aborto de transação de 13, e o código de condição é definido como 3.
[0306] Condição relacionada a busca de cache: Uma condição relacionada com os locais de armazenamento buscados pela transação é detectada pelo circuito de cache da CPU. A transação é abortada com um código de aborto de transação de 14, e o código de condição é definido como 2 ou 3.
[0307] Condição relacionada a armazenamento de cache: Uma condição relacionada com os locais de armazenamento armazenados pela transação é detectada pelo circuito de cache da CPU. A transação é abortada com um código de aborto de transação de 15, e o código de condição é definido como 2 ou 3.
[0308] Outro Condição de Cache: Uma outra condição de cache é detectada pelo circuito de cache da CPU. A transação é abortada com um código de aborto de transação de 16, e o código de condição é definido como 2 ou 3.
[0309] Durante a execução transacional, se a CPU acessa instruções ou operandos de armazenamento usando endereços lógicos diferentes que são mapeados para o mesmo endereço absoluto, ele é dependente de modelo se a transação é abortada. Se a transação é abortada devido aos acessos utilizando endereços lógicos diferentes mapeados para o mesmo endereço absoluto, o código de aborto 14, 15, ou 16 é ajustado, dependendo da condição.
[0310] Condições Diversas: Uma condição diversa é qualquer outra condição reconhecida pela CPU que faz com que a transação aborte. O código de aborto de transação é 255 e o código de condição é definido como 2 ou 3.
[0311] Quando várias configurações estão executando na mesma máquina (por exemplo, partições lógicas ou máquinas virtuais), uma transação pode ser abortada devido a uma verificação de máquina externa ou interrupção de E/S que ocorreu em uma configuração diferente.
[0312] Embora os exemplos sejam fornecidos acima, outras causas de um aborto de transação com os códigos de aborto correspondentes e códigos de condição podem ser fornecidas. Por exemplo, uma causa pode ser uma Interrupção de reinicialização, em que o código de aborto de transação é definido como 1, e o código de condição na PSW de aborto de transação é definido como 2. A PSW de aborto de transação é armazenada como a PSW de reinicialização anterior como uma parte do processamento de reinício. Como um exemplo adicional, uma causa pode ser uma condição de chamada de supervisor, em que o código de aborto é definido como 3, e o código de condição na PSW de aborto de transação é definido como 3. Outras ou diferentes exemplos também são possíveis.
[0313] Notas:
[0314] 1. A condição diversa pode resultar de qualquer das seguintes características:
[0315] • As instruções, tais como, na z/Architecture, COMPARE AND REPLACE DAT TABLE ENTRY, COMPARE AND SWAP AND PURGE, INVALIDATE DAT TABLE ENTRY, INVALIDATE PAGE TABLE ENTRY, PERFORM FRAME MANAGEMENT FUNCTION no qual o controle NQ é zero e o controle SK é um, SET STORAGE KEY EXTENDED no qual o controle NQ é zero, realizada por um outra CPU na configuração; o código de condição é definido como 2.
[0316] • Uma função de operador, como a redefinição, reinício ou parada, ou ordem SIGNAL PROCESSOR equivalente é executada na CPU.
[0317] • Qualquer outra condição não enumerada acima; o código de condição é definido como 2 ou 3.
[0318] 2. O local em que conflitos de busca e armazenamento são detectados podem estar em qualquer lugar dentro da mesma linha de cache.
[0319] 3. Sob certas condições, a CPU pode não ser capaz de distinguir entre as condições de aborto semelhantes. Por exemplo, um overflow de busca ou armazenamento pode ser indistinguível de um respectivo conflito de busca ou armazenamento.
[0320] 4. Execução especulativa de múltiplos caminhos de instrução por parte da CPU pode resultar em uma transação sendo abortada devido às condições de conflito ou overflow, mesmo que tais condições não ocorram na sequência conceitual. Enquanto no modo de execução transacional restrita, a CPU pode inibir temporariamente a execução especulativa, permitindo que a transação tente completar sem detectar tais conflitos ou overflows especulativamente.
[0321] Execução de uma instrução TRANSACTION ABORT faz com que a transação aborte. O código de aborto de transação é definido a partir do endereço de segundo operando. O código de condição é definido como 2 ou 3, dependendo se o bit 63 do endereço do segundo operando é zero ou um, respectivamente.
[0322] A figura 10 resume códigos de aborto exemplares armazenados em um bloco de diagnóstico de transação, e o código de condição correspondente (CC). A descrição na figura 10 ilustra uma implementação em particular. Outras implementações e codificações de valores são possíveis.
[0323] Numa concretização, e 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 com as mesmas. Inicialmente, as transações restritas são discutidas e depois transações não restritas.
[0324] A transação restrita executa no modo transacional sem um caminho de revogação. É um modo de processamento útil para funções compactas. Na ausência de interrupções ou conflitos repetidos com outras CPUs ou subsistema de E/S (ou seja, causado por condições que não permitirão que a transação seja concluída com êxito), uma transação restrita acabará por completo; assim, uma rotina de tratamento de aborto não é necessária e não é especificada. Por exemplo, na ausência de violação de uma condição que não pode ser endereçada (por exemplo, divisão por 0); uma condição que não permite que a operação termine (por exemplo, uma interrupção do temporizador que não permite que uma instrução execute; uma E/S quente, etc.); ou uma violação de uma restrição ou obrigação associada a uma transação restrita, a transação irá eventualmente terminar.
[0325] Uma transação restrita é iniciada por uma instrução TRANSACTION BEGIN restrita (TBEGINC) quando a profundidade de aninhamento de transação é inicialmente zero. Uma transação restrita é sujeita às seguintes restrições, numa concretização.
[0326] 1. A transação executa não mais de 32 instruções, não incluindo as instruções TRANSACTION BEGIN restrita (TBEGINC) e TRANSACTION END.
[0327] 2. Todas as instruções na transação devem estar dentro de 256 bytes contíguos de armazenamento, incluindo a TRANSACTION BEGIN restrita (TBEGINC) e quaisquer instruções TRANSACTION END.
[0328] 3. Além das instruções restrito, as seguintes restrições se aplicam a uma transação restrita.
[0329] a. As instruções são limitadas às referidas instruções gerais, incluindo, por exemplo, adição, subtração, multiplicação, divisão, deslocamento, rotação, etc.
[0330] b. instruções de ramificação estão limitadas ao seguinte (as instruções listadas são da arquitetura z/Architecture, em um exemplo):
[0331] • BRANCH RELATIVE ON CONDITION em que o M1 é diferente de zero e o campo RI2 contém um valor positivo.
[0332] • 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 envolvimento de endereço.
[0333] • COMPARE AND BRANCH RELATIVE, COMPARE IMMEDIATE AND BRANCH RELATIVE, COMPARE LOGICAL AND BRANCH RELATIVE, e COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE no qual o campo M3 é diferente de zero e o campo RI4 contém um valor positivo. (Isto é, só ramifica para a frente com máscaras de ramificação diferentes de zero.)
[0334] c. Exceto para TRANSACTION END e as instruções que causam uma serialização de operando especificado, instruções que causam uma função de serialização são restritas.
[0335] d. Operações de armazenamento e armazenamento (SS-), e operações de armazenamento e armazenamento com instruções de opcode estendido (SSE-) são restritas.
[0336] e. Todas as seguintes instruções gerais (que são da z/Architecture neste exemplo) são restritas: CHECKSUM; CIPHER MESSAGE; CIPHER MESSAGE WITH CFB; CIPHER MESSAGE WITH CHAINING; CIPHER MESSAGE WITH COUNTER; CIPHER MESSAGE WITH OFB; COMPARE AND FORM CODEWORD; COMPARE LOGICAL LONG; COMPARE LOGICAL LONG EXTENDED; COMPARE LOGICAL LONG UNICODE; COMPARE LOGICAL STRING; COMPARE UNTIL SUBSTRING EQUAL; COMPRESSION CALL; COMPUTE INTERMEDIATE MESSAGE DIGEST; COMPUTE LAST MESSAGE DIGEST; COMPUTE MESSAGE AUTHENTICATION CODE; CONVERT TO BINARY; CONVERT TO DECIMAL; CONVERT UNICODE- 16 TO UNICODE-32; CONVERT UNICODE- 16 TO UNICODE-8; CONVERT UNICODE-32 TO UNICODE- 16; CONVERT UNICODE-32 TO UNICODE-8; CONVERT UNICODE-8 TO UNICODE- 16; CONVERT UNICODE-8 TO UNICODE-32; DIVIDE; DIVIDE LOGICAL; DIVIDE SINGLE; EXECUTE; EXECUTE RELATIVE LONG; EXTRACT CACHE ATTRIBUTE; EXTRACT CPU TIME; EXTRACT PSW; EXTRACT TRANSACTION NESTING DEPTH; LOAD AND ADD; LOAD AND ADD LOGICAL; LOAD AND AND; LOAD AND EXCLUSIVE OR; LOAD AND OR; LOAD PAIR DISJOINT; LOAD PAIR FROM QUAD WORD; MONITOR CALL; MOVE LONG; MOVE LONG EXTENDED; MOVE LONG UNICODE; MOVE STRING; NON-TRANSACTIONAL STORE; PERFORM CRYPTOGRAPHIC COMPUTATION; PREFETCH DATA; PREFETCH DATA RELATIVE LONG; RUNTIME INSTRUMENTATION EMIT; RUNTIME INSTRUMENTATION NEXT; RUNTIME INSTRUMENTATION OFF; RUNTIME INSTRUMENTATION ON; SEARCH STRING; SEARCH; STRING UNICODE; SET ADDRESSING MODE; STORE CHARACTERS UNDER MASK HIGH, quando o campo M3 é zero, e o código no campo RI é 6 ou 7; STORE CLOCK; STORE CLOCK EXTENDED; STORE CLOCK FAST; STORE FACILITY LIST EXTENDED; STORE PAIR TO QUAD WORD; TEST ADDRESSING MODE; TRANSACTION ABORT; TRANSACTION BEGIN (tanto TBEGIN e 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.
[0337] 4. Os 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.
[0338] 5. A transação executando nesta CPU, ou armazena por outras CPUs ou o subsistema de E/S, não acessa operandos de armazenamento em quaisquer blocos de 4 K-bytes que contêm os 256 bytes de armazenamento começando com a instrução TRANSACTION BEGIN restrita (TBEGINC).
[0339] 6. A transação não acessa instruções ou operandos de armazenamento usando endereços lógicos diferentes que são mapeados para o mesmo endereço absoluto.
[0340] 7. Referências de operando feitas pela transação devem estar dentro de uma única doubleword, exceto aquela para LOAD ACCESS MULTIPLE, LOAD MULTIPLE, LOAD MULTIPLE HIGH, STORE ACCESS MULTIPLE, STORE MULTIPLE, e STORE MULTIPLE HIGH, referências de operando devem estar dentro de uma única octoword.
[0341] Se uma transação restrita violar qualquer das restrições de 1-7, listadas acima, então (a) uma interrupção do programa de restrição de transação é reconhecida, ou (b) a execução prossegue como se a transação não fosse restrita, exceto que as outras violações de restrição adicionais podem resultar numa interrupção do programa de transação restrita. É imprevisível qual ação será tomada, e a ação tomada pode variar com base em qual restrição é violada.
[0342] Na ausência de violações de restrição, interrupções repetidas ou conflitos com outras CPUs ou o subsistema de E/S, uma transação restrita acabará por completo, como descrito acima.
[0343] 1. A chance de completar com sucesso uma transação restrita melhora se a transação atende aos seguintes critérios:
[0344] a. As instruções emitidas são menores do que o máximo de 32.
[0345] b. As referências de armazenamento de operando são menores do que o máximo de 4 octowords.
[0346] c. As referências de armazenamento de operando estão na mesma linha de cache.
[0347] d. As referências de operando de armazenamento para os mesmos locais ocorrem na mesma ordem de todas as transações.
[0348] 2. Uma transação restrita não é necessariamente garantia de término bem-sucedido em sua primeira execução. No entanto, se uma transação restrita que não violar qualquer das restrições listadas é abortada, a CPU emprega circuitos para garantir que uma execução repetida da transação é posteriormente bem-sucedida.
[0349] 3. Dentro de uma transação restrita, TRANSACTION BEGIN é uma instrução restrita, assim, uma transação restrita não pode ser aninhada.
[0350] 4. A violação de qualquer das restrições 1-7 acima por uma transação restrita pode resultar em um loop de programa.
[0351] 5. As limitações de uma transação restrita são semelhantes às de um loop compare-and-swap. Devido a possíveis interferências de outras CPUs e o subsistema de E/S, não há garantia da arquitetura que uma instrução COMPARE AND SWAP jamais terminará com o código de condição 0. Uma transação restrita pode sofrer interferência semelhante na forma de aborto de conflito ou interrupções quentes de busca ou armazenamento.
[0352] A CPU utiliza algoritmos de equidade para garantir que, na ausência de quaisquer violações de restrição, uma transação restrita seja finalmente concluída.
[0353] 6. A fim de determinar o número de iterações repetidas necessárias para completar uma transação restrita, o programa pode empregar um contador em um registro geral, que não está sujeito à máscara de salvar o registro geral. Um exemplo é mostrado abaixo. * R15 agora contém contagem de tentativas transacionais repetidas
[0354] Note-se que ambos os registros 14 e 15 não são restaurados neste exemplo. Observe também que em alguns modelos, a contagem no registro geral 15 pode ser baixa se a CPU detecta a condição de aborto após a conclusão da instrução TBEGINC, mas antes da conclusão da instrução AHI.
[0355] Como observado pela CPU, buscas e armazenamentos feitos 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ção.
[0356] Numa concretização, o usuário (ou seja, aquele que cria a transação) seleciona se uma transação deve ou não ser restrita. 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 11. Execução da instrução TBEGINC faz com que a CPU entre no modo de execução transacional restrita ou permanecer no modo de execução não restrita. A CPU (isto é, o processador) executando TBEGINC executa a lógica da figura 11.
[0357] Com referência à figura 11, com base na execução de uma instrução TBEGINC, uma função de serialização é realizada, ETAPA 1100. Uma função de serialização ou operação inclui completar todos os acessos de armazenamento conceitualmente anteriores (e, para a arquitetura z/Architecture, como um exemplo, bits de referência relacionados e mudar configurações de bit) pela CPU, como observado por outras CPUs e pelo subsistema de E/S, antes dos acessos de armazenamento conceitualmente posteriores (e bit de referência relacionado e mudar configurações de bit) ocorrerem. Serialização afeta a sequência de todos os acessos da CPU ao armazenamento e aos códigos de armazenamento, exceto para aqueles associados com a busca da entrada da tabela ART e entrada da tabela DAT.
[0358] Conforme observado por um processador no modo de execução transacional, serialização opera normalmente (como descrito acima). Tal como observado por outras CPUs e o subsistema de E/S, uma operação de serialização realizada enquanto uma CPU está no modo de execução transacional ocorre quando o processador sai do modo de execução transacional, quer como resultado de uma instrução TRANSACTION END que decrementa a profundidade de aninhamento de transação para zero (final normal), ou como resultado da transação sendo abortada.
[0359] Após a realização de serialização, é feita uma determinação para saber se uma exceção é reconhecida, CONSULTA 1102. Se assim for, a exceção é processada, ETAPA 1104. Por exemplo, uma exceção de operação especial é reconhecida e a operação é suprimida se o controle de execução transacional, bit 8 do registro de controle 0, é 0. Como outros exemplos, uma exceção de especificação é reconhecida e a operação é suprimida, se o campo B1, bits 16-19 da instrução, é diferente de zero; uma exceção de execução é reconhecida e a operação é suprimida, se o TBEGINC é o alvo de uma instrução do tipo executar; e uma exceção de operação é reconhecida e a operação é suprimida, se a instalação de execução transacional não está instalada na configuração. Se a CPU já está no modo de execução de transação restrita, em seguida, uma exceção de programa de exceção de transação restrita é reconhecida e a operação é suprimida. Além disso, se a profundidade de aninhamento de transação, quando incrementado por 1, excederia uma profundidade de aninhamento de transação máxima dependendo do modelo, a transação é abortada com o código de aborto 13. Outras ou diferentes exceções podem ser reconhecidas e tratadas.
[0360] No entanto, se não houver uma exceção, em seguida, é feita uma determinação se a profundidade de aninhamento de transação é zero, a CONSULTA 1106. Se a profundidade de aninhamento de transação é zero, então o endereço do bloco de diagnóstico de transação é considerado inválido, ETAPA 1108; a PSW de aborto de transação é definida a partir do conteúdo da PSW atual, exceto que o endereço da instrução de PSW de aborto de transação designa a instrução TBEGINC, em vez de a instrução sequencial seguinte, ETAPA 1110; e os conteúdos dos pares de registro gerais, designados pelo máscara de salvar o registro geral são salvos em um local dependendo do modelo que não é diretamente acessível pelo programa, ETAPA 1112. Além disso, a profundidade de aninhamento é definida como 1, ETAPA 1114. Além disso, o valor efetivo da operação de ponto flutuante (F) de permissão e controles de filtragem de interrupção do programa (PIFC) são definidos em zero, ETAPA 1316. Além disso, o valor efetivo do controle a modificação AR (A) de permissão, campo de bit 12 do campo I2 da instrução, é determinado, ETAPA 1118. Por exemplo, o controle A efetivo é o AND lógico do controle A na instrução TBEGINC para o nível atual e para quaisquer instruções TBEGIN exteriores.
[0361] Voltando à CONSULTA 1106, se a profundidade de aninhamento de transações é maior do que zero, então a profundidade de aninhamento é incrementada por 1, ETAPA 1120. Além disso, o valor efetivo da operação de ponto flutuante (F) de permissão é definido para zero, e o valor efetivo do controle de filtragem de interrupção do programa (PIFC) mantém-se inalterado, ETAPA 1122. O processamento, em seguida, continua com a ETAPA 1118. Numa concretização, uma iniciação bem-sucedida dos resultados de transação no código de condição 0. Isto conclui uma concretização da lógica associada com a execução de uma instrução TBEGINC.
[0362] 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:
[0363] Exceções com a mesma prioridade que a prioridade das condições de interrupção de programa para o caso geral.
[0364] A exceção de especificação devido ao campo B1 contendo um valor diferente de zero.
[0365] Aborto devido à profundidade de aninhamento de transação excedente.
[0366] O código de condição 0 devido à conclusão normal.
[0367] Além disso, o seguinte aplica-se em uma ou mais concretizações:
[0368] 1. Registros designados para serem salvos pela máscara de salvar registro geral só são restaurados se a transação for abortada, 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 no aborto.
[0369] 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 abortada, os valores de registro de entrada serão restaurados para seus conteúdos originais quando a transação restrita é reexecutada.
[0370] 2. Na maioria dos modelos, o desempenho melhorado pode ser realizado, tanto em TRANSACTION BEGIN e quando uma transação aborta, especificando o número mínimo de registros necessários a serem salvos e restaurados na máscara de salvar registro geral.
[0372] Conforme aqui descrito, num aspecto, uma operaçã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) executando a transação pode tomar certas medidas. Por exemplo, se uma transação restrita tem uma condição de aborto, a CPU pode, temporariamente:
[0373] (a) inibir a execução fora de ordem;
[0374] (b) inibir outras CPUs de acessar os locais de armazenamento conflitantes;
[0375] (c) induzir atrasos aleatórios no processamento de aborto; e/ou
[0376] (d) invocar outras medidas para facilitar a conclusão bem-sucedida.
[0377] Para resumir, o processamento de uma transação restrita é, como se segue:
[0378] • Se já no modo de TX restrita, uma exceção de transação restrita é reconhecida.
[0379] • Se a TND (Transaction Nesting Depth) > 0 atual, a execução prossegue como se transação não restrita
[0380] o controle F efetivo definido como zero
[0381] o controlo PIFC efetivo é inalterado
[0382] o Permitir TX não restrita exterior chamar a função de serviços que pode ou não usar TX restrita.
[0383] • Se TND atual = 0:
[0384] o endereço de bloco de diagnóstico de transação é inválido
[0385] - Nenhuma TDB de instrução específica armazenada em aborto
[0386] o A PSW de aborto de transação definida para o endereço de TBEGINC
[0387] - Não é a próxima instrução sequencial
[0388] o Pares de registros gerais designados pela GRSM salvos em um local dependente de modelo não acessível pelo programa
[0389] o Token de transação opcionalmente formado (a partir do operando D2). O token de transação é um identificador da transação. Pode ser igual ao endereço do operando de armazenamento ou outro valor.
[0390] • A efetivo = TBEGINC A & qualquer A externo
[0391] • TND incrementado
[0392] o Se TND transita de 0 para 1, CPU entra no modo de TX restrita
[0393] o Caso contrário, CPU permanece no modo TX não restrita
[0394] • Instrução termina com CC0
[0395] • Exceções:
[0396] o Exceção de especificação (PIC (Program Interruption Code) 0006) se o campo B1 é diferente de zero
[0397] o Exceção de operação especial (PIC 0013 hex) se o controle de execução de transação (CR0.8) é zero
[0398] o Exceção de restrição de Transação (PIC 0018 hex) se emitidas no modo TX restrita
[0399] o Exceção de operação (PIC 0001) se a instalação de execução transacional restrita não está instalada
[0400] o Exceção de execução (PIC 0003) se a instrução é o alvo de uma instrução do tipo executar
[0401] o Código de aborto 13 se a profundidade de aninhamento excedeu
[0402] • Abortar condições na transação restrita:
[0403] a PSW de aborto aponta para a instrução TBEGINC
[0404] - Não a instrução que lhe segue
[0405] — Condição de aborto faz com que toda TX seja novamente acionada
[0406] * Nenhum caminho de falha
[0407] o CPU toma medidas especiais para garantir a conclusão bem sucedida no novo acionamento
[0408] o Supondo nenhum conflito persistente, interrupção ou violação restrita, a transação tem a garantia de eventual conclusão.
[0409] • Violação de restrição:
[0410] o PIC 0018 hex - indica violação de restrição de transação
[0411] o Ou, a transação é executada como se não restrita
[0412] Conforme descrito acima, além de processamento de transações restrita, que é opcional, numa concretização, a instalação transacional 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 descritos com referência à figura 12. Execução da instrução TBEGIN faz com que a CPU entre ou permaneça no modo de execução transacional não restritas. A CPU (isto é, o processador) que executa TBEGIN executa a lógica da figura 12.
[0413] Com referência à figura 12, com base na execução da instrução TBEGIN, uma função de serialização (descrito acima) é realizada, ETAPA 1200. Após a execução de serialização, é feita uma determinação para saber se uma exceção é reconhecida, CONSULTA 1202. Se assim for, então a exceção é tratada, ETAPA 1204. Por exemplo, uma exceção de operação especial é reconhecida e a operação é suprimida se o controle de execução transacional, bit 8 do registro de controle 0, é zero. Além disso, uma exceção de especificação é reconhecida e a operação é suprimida se o controle de filtragem de interrupção do programa, os bits 14-15 do campo I2 da instrução, contém o valor 3; ou o endereço do primeiro operando não designa um limite de palavra dupla. Uma exceção de operação é reconhecida e a operação é suprimida, se a instalação de execução transacional não está instalada na configuração; e uma exceção de executar é reconhecida e a operação é suprimida se TBEGIN é o alvo de uma instrução do tipo executar. Além disso, se a CPU está no modo de execução transacional restrita, em seguida, uma exceção de programa de exceção de operação restrita é reconhecida e a operação é suprimida. Além disso, se a profundidade de aninhamento de transação, quando incrementada por 1, excederia uma profundidade de aninhamento de transação máxima dependendo do modelo, a transação é abortada com o código de aborto 13.
[0414] Além disso, quando o campo B1 da instrução é diferente de zero e a CPU não está no modo de execução transacional, isto é, a profundidade de aninhamento de transação é igual a zero, em seguida, a acessibilidade de armazenamento para o primeiro operando é determinada. Se o primeiro operando não pode ser acessado para armazenamentos, em seguida, uma exceção de acesso é reconhecida e a operação é ou anulada, suprimida, ou encerrada, dependendo da condição da exceção de acesso específica. Além disso, qualquer evento de alteração de armazenamento PER para o primeiro operando é reconhecido. Quando o campo B1 é diferente de zero e a CPU já está no modo de execução transacional, é imprevisível se a acessibilidade de armazenamento ao primeiro operando é determinada, e eventos de alteração de armazenamento PER são detectados para o primeiro operando. Se o campo B1 é zero, em seguida, o primeiro operando não é acessado.
[0415] Em adição à verificação de exceção, é feita uma determinação sobre se a CPU está no modo de execução transacional (ou seja, a profundidade de aninhamento de transação é igual a zero), CONSULTA 1206. Se a CPU não está no modo de execução transacional, em seguida, o conteúdo de pares de registro geral selecionados são salvos, ETAPA 1208. Em particular, o conteúdo dos pares de registro geral designado pela máscara de salvar registro geral é salvo em uma localização dependente de modelo que não é diretamente acessível pelo programa.
[0416] Além disso, é feita uma determinação para saber se o campo B1 da instrução é zero, CONSULTA 1210. Se o campo B1 não é igual a zero, o endereço do primeiro operando é colocado no endereço de bloco de diagnóstico de transação, ETAPA 1214, e o endereço do bloco de diagnóstico de transação é válido. Além disso, a PSW de aborto de transação é definida a partir do conteúdo da PSW atual, ETAPA 1216. O endereço da instrução de PSW de aborto de transação designa a instrução sequencial seguinte (isto é, a instrução seguinte a TBEGIN mais exterior).
[0417] Além disso, é feita I2 uma determinação do valor efetivo do controle permitir a modificação AR (A), Bit 12 do campo I2 da instrução, ETAPA 1218. O controle A efetivo é a lógica AND do controle A na instrução TBEGIN para o nível atual e para todos os níveis exteriores. Além disso, um valor efetivo do controle (F) de operação de ponto flutuante de permissão, bit 13 do campo I2 da instrução, é determinado, ETAPA 1220. O controle efetivo F é o AND lógico 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 do controle de filtragem de interrupção do programa (PIFC), os bits 1415 do campo I2 da instrução, é determinado, ETAPA 1222. O valor PIFC efetivo é o maior valor na instrução TBEGIN para o nível atual e para todos os níveis exteriores.
[0418] Além disso, um valor de um é adicionado à profundidade de aninhamento de transação, ETAPA 1224, e a instrução termina com o código de condição 0 de configuração, ETAPA 1226. Se a profundidade de aninhamento de transição transita de zero para um, a CPU entra no modo de execução transacional não restrita; caso contrário, a CPU permanece no modo de execução transacional não restrita.
[0419] Voltando à CONSULTA 1210, se B1 for igual a zero, então o endereço do bloco de diagnóstico de transação é válido, ETAPA 1211, e o processamento continua com a ETAPA 1218. De modo semelhante, se a CPU está em modo de execução transacional, CONSULTA 1206, o processamento continua com ETAPA 1218.
[0420] Código de condição resultante de execução de TBEGIN incluem, por exemplo:
[0421] 0 Iniciação de Transação bem-sucedida
[0422] 1
[0423] 2
[0424] 3
[0425] Exceções de programa incluem, por exemplo:
[0426] • Acesso (armazenamento, primeiro operando)
[0427] • Operação (instalação de execução transacional não instalada)
[0428] • Operação especial
[0429] • Especificação
[0430] • Restrição de transação (devido à instrução restrita)
[0431] Numa concretização, a verificação de exceção fornecida acima pode ocorrer de forma variável. Uma ordem particular para a verificação de exceção é a seguinte:
[0432] • Exceções com a mesma prioridade que a prioridade das condições de interrupção do programa para o caso geral.
[0433] • Exceção de especificação devido ao valor PIFC reservado.
[0434] • Exceção de especificação devido ao endereço do primeiro operando não estar em um limite de palavras duplas.
[0435] • Exceção de acesso (quando o campo B1 é diferente de zero).
[0436] • Abortar devido à profundidade de aninhamento de transação máxima excedente.
[0437] • código de condição 0 devido à conclusão normal.
[0438] Notas:
[0439] 1. Quando o campo B1 é diferente de zero, é aplicável o seguinte:
[0440] • Um bloco de diagnóstico de transação (TDB) acessível, deve ser fornecido quando uma transação mais externa é iniciada - mesmo se a transação nunca aborta.
[0441] • Uma vez que é imprevisível se a acessibilidade da TDB é testada para transações aninhadas, um TDB acessível deve ser fornecido para qualquer instrução TBEGIN aninhada.
[0442] • O desempenho de qualquer TBEGIN em que o campo B1 é diferente de zero, e o desempenho de qualquer processamento de interrupção que ocorre em uma transação que foi iniciada por uma TBEGIN mais externa em que o campo B1 é diferente de zero, pode ser mais lenta do que quando o campo B1 é zero.
[0443] 2. Registros designados para serem salvos pela máscara de salvar registro geral só são restaurados, numa concretização, 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.
[0444] O campo I2 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 aborto é inserido.
[0445] 3. A instrução TRANSACTION BEGIN (TBEGIN) é esperada ser seguida por uma instrução de ramificação condicional que irá determinar se a operação foi iniciada com sucesso.
[0446] 4. Se uma transação é abortada devido a condições que não resultam em uma interrupção, a instrução designada pela PSW de aborto de transação recebe o controle (ou seja, a instrução após a TRANSACTION BEGIN (TBEGIN) mais externa). Além do código de condição definido pela instrução TRANSACTION BEGIN (TBEGIN), códigos de condição 1-3 são também definidos quando uma transação é anulada.
[0447] Portanto, a sequência de instruções após a instrução TRANSACTION BEGIN (TBEGIN) mais externa deve ser capaz de acomodar todos os quatro códigos de condição, mesmo que a instrução TBEGIN defina apenas código 0, neste exemplo.
[0448] 5. Na maioria dos modelos, o desempenho aperfeiçoado pode ser realizado, tanto no TRANSACTION BEGIN e quando a transação aborta, especificando o número mínimo de registros necessários para ser salvo e restaurado na máscara de salvar registro geral.
[0449] 6. Enquanto no modo de execução transacional não restrita, um programa pode chamar uma função de serviço que pode alterar registros de acesso ou registros de ponto flutuante (incluindo o registro de controle de ponto flutuante). Embora tal rotina de serviço possa salvar os registros alterados na entrada e restaurá-los na saída, a transação pode ser cancelada antes da saída normal da rotina. Se o programa de chamada não prevê a preservação destes registros, enquanto a CPU está no modo de execução transacional não restrita, pode não ser capaz de tolerar alteração da função de serviço dos registros.
[0450] Para evitar a alteração inadvertida de registros de acesso, enquanto no modo de execução transacional não restrita, o programa pode definir o controle de modificação de AR de permissão, bit 12 do campo I2 da instrução TRANSACTION BEGIN, para zero. Da mesma forma, para evitar a alteração inadvertida dos registros de ponto flutuante, o programa pode definir o controle de operação de ponto flutuante de permissão, bit 13 do campo I2 da instrução TBEGIN, para zero.
[0451] 7. Condições de exceção de programa reconhecidas durante a execução da instrução TRANSACTION BEGIN (TBEGIN) estão sujeitas ao controle de filtragem de interrupção de programa eficaz definido por quaisquer instruções TBEGIN exteriores. As condições de exceção de programa reconhecidas durante a execução da instrução TBEGIN mais externa não estão sujeitas a filtragem.
[0452] 8. Para atualizar vários locais de armazenamento de forma serializada, as sequências de códigos convencionais podem empregar uma palavra de bloqueio (semáforo). Se (a) execução transacional é usada para implementar atualizações de vários locais de armazenamento, (b) o programa também fornece um caminho alternativo (de "fall-back") a ser executado se a transação for anulada, e (c) o caminho alternativo emprega uma palavra de bloqueio, em seguida, o caminho de execução de transações também deve testar a disponibilidade do bloqueio, e, se o bloqueio estiver disponível, terminar a transação por meio da instrução TRANSACTION END e ramificar para o caminho alternativo. Isso garante acesso consistente aos recursos serializados, independentemente se eles são atualizados de forma transacional.
[0453] Alternativamente, o programa poderia abortar se o bloqueio não estiver disponível, no entanto, o processamento de abortar pode ser significativamente mais lento do que simplesmente acabar com a transação através de TEND.
[0454] 9. Se o controle de filtragem de interrupção do programa eficaz (PIFC) é maior do que zero, a CPU filtra a maioria das interrupções do programa de exceção dos dados. Se o controle (F) de operação de ponto flutuante de permissão efetivo (F) for zero, o código de exceção de dados (DXC) não vai ser definido no registro de controle de ponto flutuante, como resultado de um aborto devido a uma condição de exceção programa de exceção de dados. Neste cenário (filtragem se aplica e o controlo F eficaz é zero), o único local em que o DXC é inspecionado está no TDB com TBEGIN especificada. Se manipulador de aborto do programa é para inspecionar o DXC em tal situação, registro geral B1 deve ser diferente de zero, de modo que um endereço de bloco de diagnóstico de transação válido (TDBA) seja definido.
[0455] 10. Se uma alteração de armazenamento PER ou condição de detecção de endereço zero existe para o TDB com TBEGIN especificada da instrução TBEGIN mais externa, e supressão de evento PER não se aplica, o evento PER é reconhecido durante a execução da instrução, fazendo assim que a transação seja abortada imediatamente, independentemente de existir qualquer outra condição de aborto.
[0456] Numa concretização, a instrução TBEGIN implicitamente define o endereço de aborto de transação a ser a próxima instrução sequencial seguinte de TBEGIN. Este endereço destina-se a ser uma instrução de ramificação condicional que determina se ramifica ou não dependendo do código de condição (CC). A TBEGIN bem-sucedida define CCO, ao passo que uma transação abortada define CC1, CC2 ou CC3.
[0457] Numa concretização, a instrução TBEGIN fornece um operando de armazenamento opcional que designa o endereço de um bloco de diagnóstico de transação (TDB), no qual a informação é armazenada, se a transação for anulada.
[0458] Além disso, ele fornece um operando imediato incluindo o seguinte:
[0459] Uma máscara de salvar registro geral (GRSM), indicando quais pares de registros gerais devem ser salvos no início da execução transacional e restaurado se a transação é abortada;
[0460] Um bit (A) para permitir o aborto da transação se a transação modifica os registros de acesso;
[0461] Um bit (F) para permitir o aborto da transação se a transação tenta executar instruções de ponto flutuante; e
[0462] O controle de filtragem de interrupção do programa (PIFC) que permite que os níveis de transação individuais desviem a apresentação real de uma interrupção de programa, se uma transação é abortada.
[0463] Os controles A, F e PIFC podem ser diferentes em vários níveis de aninhamento e restaurados para o nível anterior, quando os níveis de transação interna são encerrados.
[0464] Além disso, a TBEGIN (ou em outra concretização, TBEGINC) é utilizada para formar um token de transação. Opcionalmente, o token pode ser combinado com um token formado pela instrução TEND. Para cada instrução TBEGIN (ou TBEGINC), como um exemplo, um token é formado a partir do endereço do primeiro operando. Esse token pode ser formado independentemente se o registro de base é zero (ao contrário da configuração do endereço TDB o que só ocorre quando o registro de base é diferente de zero). Para cada instrução TRANSACTION END executada com um registro de base diferente de zero, um token semelhante é formado a partir de seu operando de armazenamento. Se os sinais não forem iguais, uma exceção de programa pode ser reconhecida para alertar o programa de uma instrução não emparelhada.
[0465] A correspondência de token fornece um mecanismo destinado a melhorar a confiabilidade do software, garantindo que uma declaração de TEND está corretamente emparelhada com uma TBEGIN (ou TBEGINC). Quando uma instrução TBEGIN é executada em um nível de aninhamento particular, um token é formado a partir do endereço do operando de armazenamento que identifica este caso de uma transação. Quando uma instrução TEND correspondente é executada, um token é formado a partir do endereço de operando de armazenamento da instrução, e a CPU compara o token inicial para o nível de aninhamento com o token final. Se os tokens não corresponderem, uma condição de exceção é reconhecida. Um modelo pode implementar a correspondência de token para apenas um determinado número de níveis de aninhamento (ou nenhum nível de aninhamento). O token pode não envolver todos os bits do endereço de operando de armazenamento, ou os bits podem ser combinados através de hashing ou outros métodos. Um token pode ser formado pela instrução TBEGIN mesmo que o seu operando de armazenamento não seja acessado.
[0466] Para resumir, processamento de uma transação não restrita é, como se segue:
[0467] • Se TND = 0:
[0468] o Se Bi ± 0, endereço de bloco de diagnóstico de transação definido a partir de endereço do primeiro operando.
[0469] o PSW de aborto de transação definida para próximo endereço de instrução sequencial.
[0470] o pares de registro geral designados pelo campo I2 são salvos em local dependente de modelo.
[0471] - Não diretamente acessível pelo programa
[0472] Controles PIFC, A e F efetivos calculados
[0473] o A efetivo = TBEGIN A & qualquer A externo
[0474] o F efetivo = TBEGIN F & qualquer F externo
[0475] PIFC efetivo = max (TBEGIN PIFC, qualquer PIFC externo)
[0476] • Profundidade de aninhamento de transação (TND) incrementada
[0477] • Se TND muda de 0 para 1, CPU entra no modo de execução transacional
[0478] • Código de condição definido para zero
[0479] o Quando a instrução seguinte a TBEGIN recebe controle:
[0480] - sucesso de TBEGIN indicado por CC0
[0481] - transação abortada indicada por CC diferente de zero
[0482] Exceções:
[0483] o Código de aborto 13 se profundidade de aninhamento excedida
[0484] o Exceção de acesso (um dos vários PICs) se o campo B1 é diferente de zero, e o operando de armazenamento não pode ser acessado para uma operação de armazenamento
[0485] o Exceção de executar (PIC 0003) se a instrução TBEGIN é o alvo de uma instrução do tipo executar
[0486] o Exceção de operação (PIC 0001), se a instalação de execução transacional não está instalada
[0487] o PIC 0006 que a função
[0488] - PIFC é inválido (valor de 3)
[0489] - endereço de segundo operando não de doubleword alinhada
[0490] o PIC 0013 hex se o controle de execução transacional (CR0.8) é zero
[0491] o PIC 0018 hex se emitido no modo de TX restrita
[0492] Como indicado acima, uma transação, seja restrita ou não restrita, pode ser encerrada por uma instrução TRANSACTION END (TEND). Mais detalhes sobre a transformação de uma instrução TRANSACTION END (TEND) são descritos com referência à figura 13. A CPU (isto é, o processador) executando a TEND executa a lógica da figura 13.
[0493] Com referência à figura 13, inicialmente, com base na obtenção de processador (por exemplo, ir buscar, receber, etc.) da instrução TEND, várias verificações de exceção são realizadas e, se houver uma exceção, CONSULTA 1300, em seguida, a exceção é tratada, ETAPA 1302. Por exemplo, se TRANSACTION END é o alvo de uma instrução do tipo executar, a operação é suprimida e uma exceção de executar é reconhecida; e uma exceção de operação especial é reconhecida e a operação é suprimida se o controle de execução transacional, bit 8 de CR0, é zero. Ainda além disso, uma exceção de operação é reconhecida e a operação é suprimida, se a instalação de execução transacional não está instalada na configuração.
[0494] Voltando à CONSULTA 1300, se uma exceção não for reconhecida, então a profundidade de aninhamento de transações é diminuída (por exemplo, por um), ETAPA 1304. A determinação é feita para saber se a profundidade de aninhamento de transação é zero após o decremento, CONSULTA 1306. Se a profundidade de aninhamento transação é zero, então todos os acessos de armazenamento feitos 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, ETAPA 1308. Além disso, a CPU deixa o modo de execução transacional, ETAPA 1310, e a instrução termina, ETAPA 1312.
[0495] Voltando à CONSULTA 1306, se a profundidade de aninhamento de transação não é igual a zero, então a instrução TRANSACTION END apenas termina.
[0496] Se a CPU está 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.
[0497] Nota-se que o controle (F) de operação de ponto flutuante de permissão efetivo, controle (A) de modificação de AR de permissão e controle de filtragem de interrupção do programa (PIFC) são redefinidos para os respectivos valores antes da instrução TRANSACTION BEGIN que iniciou o nível sendo encerrada. Além disso, uma função de serialização é realizada após a conclusão da operação.
[0498] A busca de instruções PER e eventos de término de transação que são reconhecidas na conclusão da instrução TRANSACTION END mais externa não resultam na transação que está sendo abortada.
[0499] Em um 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, adicionados) para criar um endereço do segundo operando. Neste exemplo, token correspondente pode ser realizado. Por exemplo, quando B2 é diferente de zero, os bits selecionados do endereço do segundo operando são comparados com um token de transação formado pela TBEGIN correspondente. Se houver uma incompatibilidade, há uma exceção (por exemplo, PIC 0006).
[0500] Além disso, a operação pode ser abortada, implícita ou explicitamente por uma instrução TRANSACTION ABORT. Abortar uma transação por TABORT ou de outro modo inclui a realização de uma série de etapas. Um exemplo das etapas de processamento de aborto, em geral, é descrito com referência à figura 14. Se houver uma diferença no processamento com base em se o abortamento é iniciado por TABORT ou caso contrário, é indicado na descrição abaixo. Num exemplo, um processador (por exemplo, CPU) está executando a lógica da figura 14.
[0501] Com referência à figura 14, inicialmente, com base na execução da instrução TABORT ou um aborto implícito, acessos de armazenamento não transacional feitos enquanto a CPU estava no modo de execução transacional estão comprometidos, ETAPA 1400. Outros armazenamentos (por exemplo, armazenamentos transacionais) feitos enquanto a CPU estava no modo de execução transacional são descartados, ETAPA 1402.
[0502] A CPU deixa o modo de execução transacional, ETAPA 1404, e armazenamentos posteriores ocorrem de forma não transacional. A PSW atual é substituída com o conteúdo da PSW de aborto de transação, exceto que o código de condição é definido tal como descrito acima (exceto a situação abaixo, no qual se TDBA é válido, mas o bloco está inacessível, então CC = 1), ETAPA 1406. Como parte de ou subsequente ao processamento de aborto, processamento se ramifica para a localização especificada da PSW de aborto de transação para executar uma ação. Em um exemplo em que a transação é uma transação restrita, a localização é a instrução TBEGINC e a ação é a reexecução dessa instrução; e em um outro exemplo em que a transação é uma transação não restrita, a localização é 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 aborto.
[0503] Em seguida, é feita uma determinação se o endereço do bloco de diagnóstico de transação é válido, CONSULTA 1408. Quando o endereço do bloco de diagnóstico de transação é válido, a informação de diagnóstico para identificar o motivo para o aborto e os conteúdos dos registros gerais são armazenados no bloco de diagnóstico de transação de TBEGIN especificada, ETAPA 1410. Os campos de TDB armazenados e condições em que estão armazenados são as descritas acima com referência ao bloco de diagnóstico de transação.
[0504] Se o endereço de bloco de diagnóstico de 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 é acessado, e código de condição 1 se aplica.
[0505] Para transações que são abortadas devido às condições de exceção de programa que resultam em uma interrupção, o TDB de interrupção do programa é armazenado.
[0506] Voltando à CONSULTA 1408, se o endereço do bloco de diagnóstico de transação não é válido, nenhum TDB com TBEGIN especificado é armazenado e código de condição 2 ou 3 se aplica, dependendo da razão para abortar.
[0507] Além do acima, a profundidade de aninhamento de transação é igual a zero, ETAPA 1412. Além disso, quaisquer pares de registro geral designado para ser salvo pela instrução TBEGIN mais externa são restaurados, ETAPA 1414. Os pares de registro geral que não foram designados para serem salvos pela instrução TBEGIN mais externa não são restaurados quando uma transação é abortada.
[0508] Além disso, uma função de serialização é executada, ETAPA 1416. Uma função ou operação de serialização inclui completar todos os acessos de armazenamento conceitualmente anteriores (e, para o z/Architecture, como um exemplo configurações bit de referência e bit de mudança relacionados) pela CPU, como observado por outras CPUs e pelo subsistema de E/S, antes do acesso de armazenamento conceitualmente posterior (e as configurações de bit de referência e bit de mudança relacionados) ocorrer. A serialização efetua a sequência de todos os acessos da CPU ao armazenamento e às chaves de armazenamento, exceto para aquelas associadas com a busca de entrada da tabela de ART e entrada da tabela DAT.
[0509] Conforme observado por uma CPU no modo de execução transacional, a serialização opera normalmente (como descrito acima). Tal como observado por outras CPU e o subsistema de E/S, uma operação de serialização realizada enquanto uma CPU está no modo de execução transacional ocorre quando o processador deixa o modo de execução transacional, quer como resultado de uma instrução TRANSACTION END que diminui a profundidade de aninhamento de transação para zero (final normal) ou como resultado da transação sendo abortada.
[0510] Para o processamento de interrupção iniciada diferente por TABORT, se a transação for abortada devido a uma condição de exceção que resulta em uma interrupção, CONSULTA 1418, os códigos de interrupção ou parâmetros associados com a interrupção são armazenados nos locais de armazenamento atribuídos correspondentes ao tipo de interrupção, ETAPA 1420. Além disso, a PSW atual, conforme estabelecido acima, é armazenada na PSW de interrupção antiga, ETAPA 1422. Depois disso, ou se a operação não foi abortada devido a uma condição de exceção, que resultou em uma interrupção, a instrução termina com o código de condição zero.
[0511] Em adição ao acima, numa concretização para a execução interpretativa da arquitetura z/Architecture, quando a CPU está no modo de execução transacional, e uma condição hóspede ocorre que normalmente resultam em códigos de interceptação 4, 12, 44, 56, 64, 68 ou 72, a intercepção não ocorre. Pelo contrário, a CPU permanece no modo de execução interpretativo e as condições de aborto são indicadas para o hóspede como se segue:
[0512] • Para uma transação não restrita, a transação é abortada devido a uma instrução restrita (código de aborto 11). Se um evento PER concorrente foi detectado e a CPU está habilitada para PER, uma interrupção do programa ocorre com o código de interrupção 0280 hex.
[0513] • Para uma transação restrita, uma exceção de restrição de transação é reconhecida. Se um evento PER concorrente foi detectado e a CPU está habilitada para PER, uma interrupção do programa ocorre com o código de interrupção 0298 hex.
[0514] Quando uma transação é abortada devido a uma condição de exceção de programa, a filtragem de interrupção de programa pode inibir a apresentação de uma interrupção. Para interrupções do programa que podem resultar em intercepção, a filtragem também inibe a intercepção.
[0515] Numa concretização, durante a execução transacional, condições de exceção, incluindo as exceções de programa, fazem com que uma transação seja abortada e uma interrupção seja apresentada. No entanto, de acordo com um aspecto, uma transação, tal como uma transação não restrita, pode filtrar interrupções do programa; ou seja, transações que são abortadas devido a determinadas condições de exceção de programa não têm necessariamente que resultar em uma interrupção. Em vez disso, o programa pode, opcionalmente, especificar que determinadas condições de exceção de programa não resultam em uma interrupção. Isso facilita a execução especulativa, permitindo que o programa se recupere de certas exceções do programa sem o overhead custoso de estabelecer rotinas de recuperação.
[0516] Em um exemplo, a filtragem de interrupção do programa está sujeita aos seguintes controles:
[0517] • O override de filtragem de interrupção de programa de execução transacional, bit 9 do registro de controle 0. Este controle é definido pelo sistema operacional, seja permitindo ou bloqueando a filtragem por transações.
[0518] • O controle de filtragem de interrupção do programa (PIFC) efetivo na instrução TRANSACTION BEGIN.
[0519] • A condição de exceção que ocorreu.
[0520] Quando o override de filtragem de interrupção de programa de execução transacional é zero, o programa especifica quais classes das condições de exceção devem ser filtradas por meio do controle de filtragem de interrupção do programa (PIFC), os bits 14-15 do campo I2 da instrução TRANSACTION BEGIN (TBEGIN). O PIFC efetivo é o maior valor do PIFC na instrução TBEGIN para o nível de aninhamento atual e para todos os níveis exteriores.
[0521] Para a maioria das condições de exceção de programa, existe uma classe de execução transacional correspondente definida para a condição de exceção (ver figuras 16A-16B) e salva dentro do processador. O PIFC efetivo e as classes de execução transacionais interagem como a seguir:
[0522] PIFC Resultados com base na classe de execução efetivo transacional
[0523] 0 Nenhuma filtragem de interrupção de programa ocorre. As condições de exceção que tem classes 1, 2, ou 3 sempre resultam em uma interrupção
[0524] 1 Filtragem de interrupção do programa limitada ocorre. Condições de exceção que tem classes de interrupção 1 ou 2 resultam em uma interrupção; condições que têm de classe 3 não resultam em uma interrupção
[0525] 2 Filtragem de interrupção do programa moderada ocorre. As condições de exceção apenas com classe 1 resultam em uma interrupção; Condições com as classes 2 e 3 não resultam em uma interrupção
[0526] A instrução TRANSACTION BEGIN (TBEGINC) não fornece controle de filtragem de interrupção de programa explícito; um PIFC implícito de zero é assumido para TBEGINC. Assim, quando a CPU entra no modo de execução transacional limitada como resultado da TBEGINC, o PIFC efetivo é zero; quando a CPU permanece no modo de execução transacional não restrita como resultado de TBEGINC, o PIFC efetivo é inalterado.
[0527] Um exemplo de um resumo das relações do PIFC efetivo, o tipo de filtragem de interrupção do programa, a classe de execução transacional, e se os resultados de condição de exceção em uma interrupção, é fornecido na figura 15. Numa concretização, a instrução TRANSACTION BEGIN (TBEGIN) é definida para reconhecer uma exceção da especificação se PIFC = 3. No entanto, numa outra concretização, isto poderia ser alterada para permitir filtragem de interrupção de programa total quando PIFC = 3.
[0528] Um exemplo de uma lista de condições de exceção do programa, a classe de execução transacional correspondente, e o código de condição que é definido quando a transação for abortada devido a uma condição de exceção de programa, está representado na figura 16A-16B.
[0529] Mais detalhes associados com filtragem programa de interrupção estão descritos com referência às figuras 17A-17B, que ilustram uma concretização da lógica de processamento associada com a filtragem de interrupção de programa. Num exemplo, um processador efetua esta lógica.
[0530] Com referência inicialmente à figura 17A, numa concretização, uma ou mais transações iniciadas por uma ou mais instruções TRANSACTION BEGIN estão em execução. Durante o processamento transacional, uma condição de exceção de programa é reconhecida dentro de uma das transações, ETAPA 1700. Em seguida, é feita uma determinação para saber se uma interrupção causada pela condição de exceção de programa é para ser apresentado, CONSULTA 1702, como é descrito em maiores detalhes a seguir, com referência à figura 17B.
[0531] Quando uma condição de exceção de programa não resultar numa interrupção (isto é, a condição é filtrada), CONSULTA 1702, a nova PSW de programa não é carregada, ETAPA 1704. Além disso, nenhuma das localizações de armazenamento atribuídas associadas com uma interrupção de programa é armazenada, ETAPA 1706. Essas localizações incluem, por exemplo, a identificação de interrupção do programa, o endereço do evento de ruptura, a PSW antiga de programa, e, quando aplicável, o código de exceção de dados, código PER, endereço PER, identificação de acesso de exceção, identificação de acesso PER, identificação de acesso de operando, e identificação de exceção de tradução.
[0532] Quando uma condição de exceção de programa resulta em uma interrupção, CONSULTA 1702, ou quando uma condição de exceção de programa resulta em sair do modo de execução interpretativa devido à intercepção (isto é, a condição é não filtrada), locais de armazenamento mais atribuídos associados a um programa interrupção são armazenados como é normal, ETAPA 1708; no entanto, o código de comprimento de instrução nos bits 13-14 da identificação de interrupção do programa é respectivo para a instrução na qual a condição de exceção foi detectada, ETAPA 1710. Além disso, a PSW de aborto de transação é armazenada como a PSW antiga de programa, ETAPA 1712.
[0533] Em um exemplo, com referência à figura 17B, para determinar se a interrupção deve ser apresentada, é feita uma determinação para saber se o override de filtragem interrupção do programa, bit 9 do registro de controle 0, é definido para permitir a filtragem, CONSULTA 1750. Este controle é definido pelo sistema operacional para permitir ou bloquear a filtragem por transações. Se a filtragem é bloqueada, então a interrupção é apresentada, ETAPA 1752. Caso contrário, se o sistema operacional permite a filtragem, é feita uma determinação quanto ao valor do PIFC eficaz, CONSULTA 1754. Isto é, o que é o valor mais elevado do PIFC do nível de aninhamento atual e quaisquer níveis exteriores, se houver. Se o valor do PIFC efetivo é zero, CONSULTA 1752, em seguida, a interrupção é apresentada, ETAPA 1752.
[0534] Se o valor do PIFC efetivo é diferente de zero, então é feita uma verificação quanto à classe transacional da condição de exceção de programa no que diz respeito ao PIFC, ETAPA 1756. Por exemplo, para um PIFC efetivo = 1, se a classe da condição de exceção de programa é 1 ou 2, uma interrupção é apresentada, mas não para a classe 3; e para um PIFC efetivo = 2, uma interrupção é apresentada para a classe 1, e não para as classes 2 ou 3. (Em outra concretização, os blocos de decisão 1754 e 1756 podem ser condensados em uma única decisão por comparação do PIFC com o valor inverso da classe de exceção de transação (TXC). Por exemplo, se (PIFC> (3-TXC)), então a interrupção é filtrada, ou se (PIFC <= (3-TXC)), em seguida, interrompe.)
[0535] No caso da verificação indicar uma interrupção que está para ser apresentada, CONSULTA 1758, a interrupção é apresentada (isto é, uma interrupção é apresentada ao processador e o sistema operacional obtém o controle), ETAPA 1752. Caso contrário, é desviado (isto é, nenhuma interrupção é apresentada para o processador), ETAPA 1760. Isto conclui uma concretização da lógica de filtragem.
[0536] Em adição ao acima, numa concretização, quando um evento PER é reconhecido em conjunto com qualquer outra condição de exceção de programa filtrada, o seguinte aplica-se:
[0537] • A classe de transação e código de condição para o evento PER se aplicam. Neste caso, a condição de exceção PER não é filtrada, e o código de condição é definido como 3.
[0538] • O código de interrupção de programa na área de prefixo não inclui a condição de exceção não PER, nem quaisquer outros parâmetros de interrupção de programa não- PER armazenados na área de prefixo.
[0539] Quando o override de filtragem de interrupção do programa de execução transacional (bit 9 de controle de registro 0) é um, condições de interrupção do programa, não estão sujeitas à filtragem de interrupção do programa. Neste caso, a execução prossegue como se o PIFC efetivo fosse zero.
[0540] As condições de exceção de acesso reconhecidas durante a busca de uma instrução não estão sujeitas à filtragem de interrupção de programa. Nestes casos, a condição de exceção resulta tanto na transação sendo abortada quanto em uma interrupção de programa.
[0541] Além do código de interrupção do programa que representa a causa da interrupção, o bit 6 do código de interrupção do programa em localizações reais 142-143 é definido como um, indicando que a interrupção do programa ocorreu durante a execução transacional. Quando uma transação hóspede é abortada devido a uma interrupção do programa hospedeiro, os bits 5 e 6 do código de interrupção do programa hospedeiro são definidos para um. A PSW atual é substituída com o conteúdo da PSW de aborto de transação exceto que o código de condição é definido de acordo com as figuras 10 e 16A-16B.
[0542] A filtragem se aplica tanto em condições de exceção do programa hospedeiro e hóspede. Se uma condição de exceção de programa hóspede é filtrada, qualquer condição de intercepção associada à interrupção não ocorre.
[0543] Numa concretização:
[0544] 1. A instrução MONITOR CALL que de outra forma causaria um evento de monitor é uma instrução restrito. Portanto, uma interrupção do programa de eventos de monitor não ocorre enquanto a CPU está no modo de execução transacional, portanto, o código monitor em locais reais 176-183 não é armazenado quando a transação é abortada.
[0545] De modo semelhante, qualquer outra condição de exceção de programa listada nas figuras 16A-16B tendo uma classe de transação não-aplicável (-) e código de condição não pode ocorrer como as instruções que causam estas exceções são restritas. Assim, nem a identificação de interrupção do programa ou qualquer das outras informações de interrupção do programa auxiliar é armazenada em localizações reais na área de prefixo.
[0546] 2. A filtragem de interrupção de programa pode ser útil em programas que, por várias razões, adiam a validação dos dados - às vezes chamada de execução especulativa. Em vez de estabelecer um ambiente de recuperação potencialmente complicado, o programa simplesmente executa transações não restritas(s) em que o controle de filtragem de interrupção do programa (PIFC) efetivo é diferente de zero. Isso permite à rotina de tratamento de interrupção do programa receber o controle de certos tipos de condições de exceção programa diretamente - sem a intervenção do sistema operacional.
[0547] Um PIFC eficaz de 1 indica que o filtro é limitado a ser executada pela CPU; isto pode ser útil no reconhecimento de dados inesperados ou exceções aritméticas. Um PIFC eficaz de 2 indica que a filtragem moderada deve ser executada; isto pode ser útil no reconhecimento de locais de armazenamento inacessíveis.
[0548] No entanto, deve-se notar que, se um programa é abortado devido a vários tipos de exceções de acesso filtrado, isto não indica necessariamente que a localização seria inacessível se o programa tentasse a execução não transacional. Por exemplo, o programa pode especificar um PIFC de 2, e subsequentemente ser abortado devido a uma exceção de tradução principal. Esta exceção pode indicar que o local de armazenamento não faz parte do espaço de endereços virtuais, ou pode simplesmente indicar que o bloco de armazenamento foi paginado.
[0549] É fornecida acima uma concretização para o gerenciamento de interrupções em um ambiente transacional, em que as condições de exceção de programa que, de outra forma fornecem uma interrupção são filtrados, de tal forma que uma interrupção é desviada.
[0550] Além disso, é fornecido acima um meio eficiente de atualizar vários objetos, descontínuos na memória sem serialização clássica (granularidade alta), como o bloqueio, que fornece um potencial de melhoria significativa do desempenho do multiprocessador. Ou seja, objetos múltiplos, adjacentes são atualizados sem a execução de mais capacidade de armazenamento de acesso ordenação de granularidade alta que é fornecido através de técnicas clássicas, como bloqueios e semáforos. A execução especulativa é fornecida sem configuração de recuperação rígida, e as transações restritas são oferecidas para atualizações simples, de rastro pequeno.
[0551] A execução transacional pode ser utilizada numa variedade de cenários, incluindo, mas não se limitando a, incorporação parcial, processamento especulativo, e a elisão de bloqueio. Na incorporação parcial, a região parcial a ser incluída no caminho executado é envolta em TBEGIN/ TEND. TABORT pode ser incluída para reverter o estado em uma saída lateral. Para especulação, tal como em Java, verificações nulas sobre ponteiros de referenciados podem ser retardadas para a borda de loop usando uma transação. Se o ponteiro é nulo, a transação pode abortar com segurança usando TABORT, que está incluído dentro de TBEGIN/ TEND.
[0552] Quanto a elisão de bloqueio, um exemplo do seu uso é descrito com referência às figuras 18A-18B e o fragmento de código fornecido abaixo.
[0553] A figura 18A mostra uma lista duplamente ligada 1800 de uma pluralidade de elementos de fila 1802a- 1802d. Um novo elemento de fila 1802e é para ser inserido na lista duplamente ligada de elementos de fila 1800. Cada elemento de fila 1802a-1802e inclui um ponteiro para a frente 1804a-1804e e um ponteiro para trás 1806a-1806e. Como mostrado na figura 18B, para adicionar elemento de fila 1802e entre os elementos da fila 1802b e 1802c, (1) ponteiro para trás 1806e está definido para apontar para o elemento de fila 1802b, (2) ponteiro para a frente 1804e está definido para apontar para o elemento de fila 1802c, (3) ponteiro para trás 1806c está definido para apontar para o elemento de fila 1802e, e (4) ponteiro para a frente 1804b está definido para apontar para o elemento de fila 1802e.
[0554] Um fragmento de exemplo de código correspondente às figuras 18A-18B é abaixo:
[0555] * RL - endereço do novo elemento de fila a ser inserido.
[0556] * R2 - endereço do ponto de inserção; novo elemento é
[0557] NEW USING QEL, R1
[0558] CURR USING QEL, R2
[0559] LHI R15, 10 Carregar contagem de repetição
[0560] LOOP TBEGIN TDB, X’C000’ Iniciar transação (salvar GRs 0 -3)
[0561] JNZ ABORTED CC diferente de zero significa abortado
[0562] LG R3, CURR.BWD Apontar para
[0563] PREV USING QEL, R3 elemento anterior Torná-lo
[0564] STG R1, PREV.FWD endereçável Atualizar
[0565] STG R1, CURR.BWD ponteiro para frente anterior Atualizar
[0566] STG R2, NEW.FWD ponteiro para trás atual Atualizar novo
[0567] STG R2, NEW.FWD ponteiro para frente Atualizar novo
[0568] TEND Terminar ponteiro para trás
[0569] ...
[0570] ABORTED JO transação NO_RETRY CC3: Aborto sem
[0571] JCT R15,LOOP repetição Repetir
[0572] J NO_RETRY transação em poucos minutos Sem sucesso após
[0573] Em um exemplo 10x; fazer isto da forma difícil , se a transação for usada para elisão de bloqueio, mas o caminho de recuo usa um bloqueio, a transação é, pelo menos, para buscar a palavra de bloqueio para ver que está disponível. O processador garante que a transação é abortada, se outra CPU acessa o bloqueio não transacional.
[0574] Tal como aqui utilizado, o armazenamento, o armazenamento central, armazenamento principal, memória e memória principal são usados indistintamente, salvo indicação em contrário, implicitamente pelo uso ou explicitamente. Além disso, embora numa concretização, um atraso efetivo de transação inclui armazenamentos transacionais de comprometimento de atraso para a memória principal até à conclusão de uma transação selecionada, em outra concretização, um atraso efetivo de transação inclui permitir atualizações transacionais para a memória, mas mantendo os valores antigo e restaurando a memória para valores antigos no aborto.
[0575] Conforme será apreciado por um versado na técnica, 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 de software (incluindo firmware, software residente, microcódigo, etc.) ou uma concretização combinando os aspectos de software e de hardware que podem todos ser geralmente aqui referidos como um "circuito", "módulo" ou "sistema". Além disso, uma ou mais concretizações podem ter a forma de um produto de programa de computador incorporado em um ou mais meios legível(s) por computador tendo o código do programa legível por computador incorporado no mesmo.
[0576] Qualquer combinação de um ou mais meios legível(s) por computador pode ser utilizada. O meio legível por computador pode ser um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode ser, por exemplo, mas não limitado a um sistema eletrônico, magnético, óptico, eletromagnético, infravermelho ou semicondutor, um aparelho, ou dispositivo, ou qualquer combinação adequada dos anteriores. Exemplos mais específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluem o seguinte: uma conexão elétrica com um ou mais fios, um disquete de computador portátil, um disco rígido, a memória de acesso aleatório (RAM), um memória somente de leitura (ROM), uma memória somente de leitura programável e apagável (EPROM ou memória flash), uma fibra óptica, um disco compacto portátil de memória somente de leitura (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético, ou qualquer combinação adequada dos anteriores. No contexto deste documento, um meio de armazenamento legível por computador pode ser um meio tangível, que pode conter ou armazenar um programa para uso por ou em ligação com um sistema, aparelho ou dispositivo de execução de instruções.
[0577] Com referência agora à figura 19, num exemplo, um produto de programa de computador 1900 inclui, por exemplo, um ou mais meios de armazenamento legível por computador não transitório 1902 para armazenar os meios ou lógica de código de programa legível por computador 1904 no mesmo para proporcionar e facilitar uma ou mais concretizações.
[0578] O código de programa incorporado num meio legível por computador pode ser transmitido através de um meio adequado, incluindo mas não se limitando a dispositivos sem fio, cabeados, cabo de fibra óptica, RF, etc., ou qualquer combinação adequada dos anteriores.
[0579] O código de programa de computador para a realização de operações para uma ou mais concretizações pode ser escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objetos, tal como Java, Smalltalk, C++ ou semelhante, e linguagens de programação processuais convencionais, tais como a linguagem de programação "C", assembler ou linguagens de programação semelhantes. O código de programa pode executar inteiramente no computador do usuário, em parte no computador do usuário, como um pacote de software independente, em parte no computador do usuário e, em parte, em um computador remoto ou inteiramente no computador remoto ou servidor. No último caso, o computador remoto pode ser ligado ao computador do usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de longa distância (WAN), ou a ligação pode ser feita com um computador externo (por exemplo, através da Internet usando um provedor de serviço de Internet).
[0580] Uma ou mais concretizações são aqui descritas com referência às ilustrações de fluxograma e/ ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa de computador. Será compreendido que cada bloco das ilustrações de fluxograma e/ ou diagramas de blocos, e combinações de blocos nas figuras de fluxograma e/ ou diagramas de blocos, podem ser implementados por instruções de programa de computador. Estas instruções de programa de computador podem ser fornecidas a um processador de um computador de propósito geral, computador de aplicação específica, ou outro aparelho de processamento de dados programável para produzir uma máquina, de tal modo que as instruções, as quais executam por meio do processador do computador ou outro aparelho de processamento de dados programável, criar os meios para a execução das funções/ atos especificados no fluxograma e / ou bloco ou blocos de diagrama de blocos.
[0581] Estas instruções de programa de computador podem também ser armazenadas num meio legível por computador que pode dirigir um computador, outro aparelho de processamento de dados programável, ou outros dispositivos para funcionar de uma forma particular, de tal modo que as instruções armazenadas no meio legível por computador produzem um artigo de fabricação incluindo instruções que implementam a função/ ato especificado no fluxograma e/ ou bloco ou blocos do diagrama de blocos.
[0582] As instruções de programa de computador podem também ser carregadas num computador, outro aparelho de processamento de dados programável, ou outros dispositivos para realizar uma série de etapas operacionais para serem executadas no computador, de outro aparelho programável ou outros dispositivos para produzir um processo implementado por computador de tal modo que as instruções que executam no computador ou outro equipamento programável proporcionam processos para a execução das funções/ atos especificados no fluxograma e/ ou bloco ou blocos do diagrama de blocos.
[0583] O fluxograma e diagramas de blocos nas figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações. A este respeito, cada bloco nos fluxogramas ou diagramas de blocos podem representar um módulo, segmento, ou parte do código, que compreende uma ou mais instruções executáveis para implementar a função lógica especificada(s). Deve também notar-se que, em algumas implementações alternativas, as funções verificadas nos blocos podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados substancialmente simultaneamente, ou os blocos podem, por vezes, ser executados na ordem inversa, dependendo da funcionalidade envolvida. Deve-se também notar que cada bloco do diagrama de blocos e/ ou ilustração de fluxograma, e combinações de blocos nos diagramas de blocos e/ ou ilustração de fluxograma, podem ser implementados por sistemas à base de hardware para fins específicos, que realizam as funções ou atos especificados, ou combinações de instruções de hardware e computadores de fins específicos.
[0584] Além dos acima, um ou mais aspectos podem ser fornecidos, oferecidos, implantados, gerenciados, atendidos, etc. por um provedor de serviços que oferece gerenciamento de ambientes de clientes. Por exemplo, o provedor de serviços pode criar, manter, suporte, etc. código de computador e/ ou uma infraestrutura de computador que executa um ou mais aspectos de um ou mais clientes. Em contrapartida, o provedor de serviços pode receber o pagamento do cliente no escopo de um contrato de serviço e/ ou taxa, como exemplos. Adicionalmente ou em alternativa, o prestador de serviços pode receber o pagamento a partir da venda de conteúdo publicitário para um ou mais terceiros.
[0585] Em um aspecto, uma aplicação pode ser implantada para a realização de uma ou mais concretizações. Como um exemplo, o desdobramento de uma aplicação compreende o fornecimento de infraestrutura de computador operável para desempenhar uma ou mais concretizações.
[0586] Em outro aspecto, uma infraestrutura de computação pode ser implementada compreendendo integração de código legível por computador em um sistema de computação, em que o código em combinação com o sistema de computação é capaz de executar uma ou mais concretizações.
[0587] De acordo ainda com um outro aspecto, pode ser proporcionado um processo para integrar infraestrutura de computação compreendendo a integração de código legível por computador em um sistema de computador. O sistema de computador compreende um meio legível por computador, no qual o meio de computador compreende uma ou mais concretizações. O código em combinação com o sistema de computador é capaz de executar uma ou mais concretizações.
[0588] Embora várias concretizações sejam descritas acima, estas são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem ser usados para incorporar e utilizar uma ou mais concretizações. Podem ser utilizadas instruções diferentes, formatos de instrução, campos de instrução e/ ou valores de instrução. Além disso, diferentes, outros, e/ ou valores de filtragem adicionais e/ ou níveis de filtragem podem ser fornecidos/ usados. Muitas variações são possíveis.
[0589] Além disso, outros tipos de ambientes de computação podem se beneficiar e serem utilizados. Como um exemplo, um sistema de processamento de dados apropriado para armazenar e/ ou executar o código de programa é utilizável que inclui, pelo menos, dois processadores acoplados diretamente ou indiretamente, a elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, a memória local empregue durante a execução propriamente dita do código de programa, armazenamento em massa, e a memória cache que proporciona o armazenamento temporário de, pelo menos, um código de programa, a fim de reduzir o número de vezes que o código deve ser recuperado do armazenamento em massa durante a execução.
[0590] Os dispositivos de entrada/saída ou E/S (incluindo, mas não limitados a, teclados, monitores, dispositivos ponteiros, DASD, fita, CDs, DVDs, pen drives e outras mídias de memória, etc.) podem ser acoplados ao sistema diretamente ou através de controladores de E/S intermediários. Os adaptadores de rede também podem ser acoplados ao sistema para permitir que o sistema de processamento de dados se torne acoplado a outros sistemas de processamento de dados remotos ou impressoras ou dispositivos de armazenamento através de redes públicas ou privadas intermediárias. Modems, modems a cabo e placas de Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0591] Com referência à figura 20, os componentes representativos de um sistema de computador central 5000 para implementar uma ou mais concretizações são representados. O computador host representante 5000 compreende uma ou mais CPUs 5001 em comunicação com a memória do computador (ou seja, armazenamento central) 5002, bem como interfaces de E/S para dispositivos de mídia de armazenamento 5011 e redes 5010 para se comunicar com outros computadores ou SANs e semelhantes. A CPU 5001 é compatível com uma arquitetura que tem um conjunto de instruções arquitetado e funcionalidade arquitetada. A CPU 5001 pode ter tradução de registro acesso (ART) 5012, que inclui um buffer ART lookaside (ALB) 5013, para a seleção de um espaço de endereço para ser usado por tradução dinâmica de endereços (DAT) 5003 para transformar endereços de programa (endereços virtuais) em endereços reais de memória. Um DAT inclui, tipicamente, um buffer de consulta da tradução (TLB) 5007, armazenar temporariamente traduções de modo que acessos posteriores ao bloco de memória de computador 5002 não necessitem do atraso da tradução de endereços. Normalmente, uma cache 5009 é empregado entre a memória de computador 5002 e o processador 5001. A cache 5009 pode ser hierárquica tendo uma cache grande disponível para mais de uma CPU e caches menores, mais rápidas (nível inferior) entre a cache grande e cada CPU. Em algumas implementações, as caches de nível mais baixo são divididas para proporcionar caches de nível inferiores separadas para busca de instrução e acessos de dados. Numa concretização, para a instalação de TX, um bloco de diagnóstico de transação (TDB) 5100 e um ou mais buffers 5101 pode ser armazenado em um ou mais cache de memória 5009 e 5002. Num exemplo, no modo de TX, os dados são inicialmente armazenados em um buffer de TX, e quando termina o modo de TX (por exemplo, TEND mais externa), os dados na memória intermediária são armazenados (comprometidos) para a memória, ou se houver um aborto, os dados na memória intermediária são descartados.
[0592] Numa concretização, uma instrução é buscada a partir da memória 5002 por uma unidade de busca de instruções 5004 por meio de uma cache 5009. A instrução é decodificada na unidade de decodificação de instruções 5006 e expedida (com outras instruções em algumas concretizações) para a unidade ou unidades de execução da instrução 5008. Tipicamente várias unidades de execução 5008 são empregues, por exemplo uma unidade de execução aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução de instrução de ramificação. Além disso, numa concretização da instalação de TX, vários controles de TX 5110 podem ser empregues. A instrução é executada pela unidade de execução, acessando operandos de instrução de registros especificado ou a memória como necessário. Se um operando deve ser acessado (carregado ou armazenado) a partir da memória 5002, a unidade de carregamento/ armazenamento 5005 tipicamente processa o acesso sob controle da instrução sendo executada. As instruções podem ser executadas em circuitos de hardware ou em microcódigo interno (firmware) ou por uma combinação de ambos.
[0593] De acordo com um aspecto da instalação de TX, o processador 5001 também inclui uma PSW 5102 (por exemplo, PSW de TX e/ ou aborto), uma profundidade de aninhamento 5104, um TDBA 5106, e um ou mais registros de controle 5108.
[0594] Conforme mencionado, um sistema de computador inclui informação em armazenamento local (ou principal), bem como o endereçamento, a proteção, e gravação de referência e de alteração. Alguns aspectos da abordagem incluem o formato de endereços, o conceito de espaços de endereço, os vários tipos de endereços, e a maneira pela qual um tipo de endereço é traduzido para um outro tipo de endereço. Alguns de armazenamento principal inclui locais de armazenamento permanentemente atribuídos. O armazenamento principal fornece ao sistema de armazenamento de dados de acesso rápido diretamente endereçável. Ambos os programas e dados devem ser carregados na memória principal (a partir de dispositivos de entrada) antes que eles possam ser processados.
[0595] O armazenamento principal pode incluir um ou mais armazenamentos menores, intermediário de acesso mais rápido, às vezes chamados caches. Uma memória cache é geralmente fisicamente associada com um processador ou um processador de E/S. Os efeitos, exceto no desempenho, da construção física e uso de mídia de armazenamento distinta geralmente não são observáveis pelo programa.
[0596] Os caches separados podem ser mantidos por instruções e operandos de dados. Informação dentro de um cache é mantida em bytes contíguos num limite integral chamado um bloco de cache ou linha de cache (ou linha, para abreviar). Um modelo pode fornecer uma instrução EXTRACT CACHE ATTRIBUTE que retorna do tamanho de uma linha de cache em bytes. A modelo também pode fornecer instruções PREFETCH DATA e PREFETCH DATA RELATIVE LONG que efetua a pré-busca de armazenamento em cache de dados ou instrução ou a liberação de dados do cache.
[0597] O armazenamento é visto como uma cadeia horizontal longa de bits. Para a maioria das operações, os acessos para o armazenamento seguem numa sequência da esquerda para a direita. A cadeia de bits é subdividida em unidades de oito bits. Uma unidade de oito bits é chamada um byte, que é o bloco de construção básico de todos os formatos de informação. Cada localização de byte no armazenamento é identificada por um número inteiro não negativo original, o qual é o endereço dessa localização de byte ou, simplesmente, o endereço de byte. Localizações de byte adjacentes têm endereços consecutivos, começando com 0 na esquerda e prosseguindo em uma sequência da esquerda para a direita. Os endereços são inteiros binários não sinalizados e são de 24, 31 ou 64 bits.
[0598] A informação é transmitida entre o armazenamento e uma CPU ou um subsistema de canal de um byte, ou um grupo de bytes, de cada vez. A menos que especificado de outro modo, em, por exemplo, na z/Architecture, um grupo de bytes de armazenamento é endereçada pelo byte mais à esquerda do grupo. O número de bytes no grupo está implícita ou explicitamente especificado pela operação a ser executada. Quando utilizado numa operação de CPU, um grupo de bytes é chamado um campo. Dentro de cada grupo de bytes, em, por exemplo, na z/Architecture, bits são numerados numa sequência da esquerda para a direita. Na z/Architecture, os bits mais à esquerda são por vezes referidos como os bits de "ordem superior" e os bits mais à direita como os bits "de ordem inferior". Os números de bit não são endereços de armazenamento, no entanto. Apenas bytes podem ser abordados. Para operar em bits individuais de um byte de armazenamento, todo o byte é acessado. Os bits de um byte são numerados de 0 a 7, da esquerda para a direita (por exemplo, na z/Architecture). Os bits em um endereço podem ser numerados 8-31 ou 40-63 para endereços de 24 bits, ou 1-31 ou 33-63 para endereços de 31 bits; e são numerados de 0-63 para endereços de 64 bits. Num exemplo, os bits 8-31 e 1-31 se aplicam aos endereços que estão em uma localização (por exemplo, registro) que é de 32 bits de largura, enquanto que os bits 40-63 e 33-63 se aplicam a endereços que estão numa localização ampla de 64 bits. Dentro de qualquer outro formato de comprimento fixo de bytes múltiplos, os bits que constituem o formato são consecutivamente numerados a partir de 0. Para fins de detecção de erro, e em preferência para corrigir, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Esses bits de verificação são gerados automaticamente pela máquina e não podem ser controlados diretamente pelo programa. Capacidades de armazenamento são expressas em número de bytes. Quando o comprimento de um campo de operando de armazenamento é implicado pelo código de operação de uma instrução, o campo é dito tendo um comprimento fixo, que pode ser uma, duas, quatro, oito ou dezesseis bytes. Os campos maiores podem ser implícitos para algumas instruções. Quando o comprimento de um campo de operando de armazenamento não está implícito mas é afirmado explicitamente, o campo é dito tendo um comprimento variável. Os operandos de comprimento variável podem variar em comprimento, por incrementos de um byte (ou com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando a informação é colocada no armazenamento, o conteúdo de apenas aqueles locais de bytes são substituídos que estão incluídos no campo designado, mesmo que a largura do caminho físico ao armazenamento possa ser maior do que o comprimento do campo a ser armazenado.
[0599] Certas unidades de informação devem estar em um limite integral no armazenamento. Um limite é chamado integral 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 dados aos campos de 2, 4, 8, 16, e 32 bytes em um limite integral. A halfword é um grupo de dois bytes consecutivos num limite de dois bytes e é o bloco de construção de instruções básico. Uma word é um grupo de quatro bytes consecutivos em um limite de quatro bytes. Uma doubleword é um grupo de oito bytes consecutivos em um limite de oito bytes. Uma quadword é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Uma octoword é um grupo de 32 bytes consecutivos em um limite de 32 bytes. Quando os endereços de armazenamento designam halfwords, words, doublewords, quadwords e octowords, a representação binária do endereço contém um, dois, três, quatro, ou cinco mais à direita zero bits, respectivamente. As instruções devem ser integrais em limites de dois bytes. Os operandos de armazenamento da maioria das instruções não têm requisitos de alinhamento de borda.
[0600] 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 da qual as instruções são posteriormente obtidas, independentemente se o armazenamento altera as instruções que são posteriormente buscadas.
[0601] Em um exemplo, concretizações podem ser praticada por software (por vezes referido código licenciado interno, firmware, microcódigo, mili código, pico código e semelhantes, qualquer um dos quais seria consistente com uma ou mais concretizações). Com referência à figura 20, o código de programa de software que incorpora um ou mais aspectos pode ser acessado pelo processador 5001 do sistema host 5000 a partir de dispositivos de 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 concretizado 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 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 pelos usuários de tais outros sistemas.
[0602] 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. O código de programa é normalmente paginado a partir do dispositivo de mídia de armazenamento 5011 para o armazenamento de computador relativamente maior velocidade 5002 onde está disponível para processamento pelo processador 5001. As técnicas e métodos para incorporar o código de programa de software na memória, em mídia física, e/ ou código de software de distribuição via redes são bem conhecidos e não serão discutidos aqui. O código do programa, quando criado e armazenado num suporte material (incluindo, mas não limitado a módulos eletrônicos memória (RAM), memória flash, discos compactos (CDs), DVDs, fitas magnéticas e similares é muitas vezes referido como um "produto de programa de computador ". O meio do produto de programa de computador é tipicamente lido por um circuito de processamento, de preferência um sistema de computador para a execução pelo circuito de processamento.
[0603] A figura 21 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 21 compreende um sistema de computador base 5021 representativo, tal como um computador pessoal, estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema de computador de base 5021 inclui um ou mais processadores 5026 e um barramento utilizado para conectar e permitir a comunicação entre o processador(s) 5026 e os outros componentes do sistema 5021 de acordo com técnicas conhecidas. O barramento conecta o processador 5026 à memória 5025 e armazenamento de longo prazo 5027 que pode incluir uma unidade de disco rígido (incluindo qualquer um dos meios magnéticos, CD, DVD e de memória flash, por exemplo) ou uma unidade de fita, por exemplo. O sistema 5021 pode incluir também um adaptador de interface de usuário, que conecta o microprocessador 5026 através do barramento a um ou mais dispositivos de interface, tais como um teclado 5024, um mouse 5023, uma impressora/ scanner 5030 e/ ou outros dispositivos de interface, o que pode ser qualquer dispositivo de interface do usuário, como uma tela sensível ao toque, teclado de entrada digitalizada, etc. O barramento também se conecta um dispositivo de exibição 5022, como uma tela de LCD ou monitor, ao microprocessador 5026 através de um adaptador de vídeo.
[0604] O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar 5028 com uma rede. Os adaptadores de rede 5029 de exemplo são canais de comunicação, Token Ring, Ethernet ou modems. Em alternativa, o sistema 5021 pode se comunicar usando uma interface sem fio, tal como uma placa de CDPD (dados de pacotes de celular digitais). O sistema 5021 pode ser associado com quaisquer outros computadores em uma rede local (LAN) ou uma rede de longa distância (WAN), ou o sistema 5021 pode ser um cliente em um arranjo de cliente/ servidor com outro computador, etc. Todas estas configurações, assim como hardware e software apropriados de comunicações, são conhecidas na técnica.
[0605] A figura 22 ilustra uma rede de processamento de dados 5040 em que uma ou mais concretizações podem ser praticadas. A rede de processamento de dados 5040 pode incluir uma pluralidade de redes individuais, tais como uma rede sem fio e uma rede cabeada, cada uma das quais pode incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Além disso, como os versados na técnica apreciarão, uma ou mais redes locais podem ser incluídas, se for uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas a um processador host.
[0606] Ainda com referência à figura 22, as redes também podem incluir computadores mainframe 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 Gateway 5046 serve como um ponto de entrada em cada rede individual. Um gateway é necessário ao conectar- se um protocolo de rede a 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 pode também ser diretamente acoplado a uma ou mais estações de trabalho 5041, 5042, 5043, 5044, utilizando uma ligação de comunicações. O computador gateway pode ser implementado utilizando um servidor z de sistema IBM eServer disponibilizado pela International Business Machines Corporation.
[0607] Com referência simultânea à figura 21 e figura 22, código de programação de software 5031 que pode incorporar um ou mais aspectos pode ser acessado pelo processador 5026 do sistema 5020 de mídia de armazenamento de longo prazo 5027, como uma unidade de CD-ROM ou disco rígido. O código de programação 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 para os usuários 5050, 5051 da memória ou armazenamento de um sistema de computador através de uma rede para outros sistemas de computador para utilização pelos usuários de tais outros sistemas.
[0608] Em alternativa, o código de programação pode ser incorporado na memória 5025, e acessado pelo processador 5026 utilizando 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ção 5032. O programa de código é normalmente paginado a partir de 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 métodos para que contém o código de programação de software na memória, em meios físicos e/ ou código de software de distribuição através de redes são bem conhecidos e não serão discutidos aqui. O código do programa, quando criado e armazenado num meio material (incluindo, mas não limitado a módulos eletrônicos memória (RAM), memória flash, discos compactos (CDs), DVDs, fitas magnéticas e similares é muitas vezes referido 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.
[0609] A cache que é mais prontamente disponível para o processador (normalmente mais rápida e menor do que outras caches do processador) é a mais baixa (L1 ou nível um) cache e o armazenamento principal (memória principal) é a cache de nível mais elevado (L3 se há 3 níveis). A cache de nível mais baixa é frequentemente dividida em uma cache de instruções (I-Cache) suportando instruções de máquina a serem executadas e uma cache de dados (D-Cache) suportando operandos de dados.
[0610] Com referência à figura 23, uma concretização de processador exemplar é descrita para o processador 5026. Tipicamente um ou mais níveis de cache 5053 são utilizados para armazenar temporariamente os blocos de memória, a fim de melhorar o desempenho do processador. A cache 5053 é um buffer de alta velocidade suportando linhas de cache de dados de memória que são susceptíveis de serem utilizadas. As linhas de cache típicas são 64, 128 ou 256 bytes de dados da memória. As caches separadas são mais frequentemente utilizadas para obter instruções de armazenamento em cache do que para armazenar dados. A coerência de cache (sincronização de cópias de linhas na memória e as caches) é muitas vezes fornecida por vários algoritmos "snoop" bem conhecidos na técnica. O armazenamento de memória principal 5025 de um sistema de processador é muitas vezes referido como um cache. Num sistema de processador tendo 4 níveis de cache 5053, o armazenamento principal 5025 é por vezes referido como a cache de nível 5 (L5), uma vez que é geralmente mais rápida e só ocupa uma parte da memória não volátil (DASD, fita, etc.) que está disponível para um sistema de computador. O armazenamento principal 5025 armazena temporariamente ("caches") páginas de dados paginados em e a partir do armazenamento principal 5025 pelo sistema operacional.
[0611] Um contador de programa A (contador de instruções) 5061 mantém o controle do endereço da instrução atual a ser executada. Um contador de programa em um processador de z/Architecture é de 64 bits e pode ser truncado para 31 ou 24 bits para suportar os limites de endereçamento prévios. Um contador de programa é normalmente incorporado em uma 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 está ativo, e o contador de programa (na PSW) do sistema operacional é usado enquanto o sistema operacional está em execução. Tipicamente, o contador de programa é incrementado por um valor igual ao número de bytes da instrução atual. Instruções RISC (Reduced Instruction Set Computing) são tipicamente de comprimento fixo, enquanto instruções CISC (Complex Instruction Set Computing) são tipicamente de comprimento variável. As instruções da IBM z/Architecture são instruções CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado por qualquer uma operação de mudança de contexto ou uma operação de ramificação obtida de uma instrução de ramificação, 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 de contador de programa é carregado apontando para uma instrução de um novo módulo de programa a ser executado. Uma operação de ramificação obtida é executada, a fim de permitir que o programa tome decisões ou loop dentro do programa, ao carregar o resultado da instrução de ramificação no contador de programa 5061.
[0612] Tipicamente, uma unidade de busca de instrução 5055 é empregada para obter instruções em nome do processador 5026. A unidade de busca tanto busca "próximas instruções sequenciais", instruções alvo de instruções de ramificação obtidas, ou primeiras instruções de um programa na sequência de uma mudança de contexto. As unidades de busca de instrução modernas muitas vezes empregam técnicas de pré- busca para pré-busca especulativa de instruções com base na probabilidade de que as instruções de pré-busca possam ser utilizadas. Por exemplo, uma unidade de busca pode obter 16 bytes de instrução que incluem a instrução sequencial seguinte e adiciona bytes de mais instruções sequenciais.
[0613] As instruções buscadas são em seguida, executada pelo processador 5026. Numa concretização, a instrução(s) obtida é passada para uma unidade de encaminhamento 5056 da unidade de busca. A unidade de encaminhamento decodifica a instrução(s) e encaminha informações sobre a instrução decodificada(s) para unidades apropriadas 5057, 5058, 5060. Uma unidade de execução 5057 irá tipicamente receber informações sobre instruções aritméticas decodificadas a partir da unidade de busca de instrução 5055 e irá executar as operações aritméticas nos operandos de acordo com o código de operação da instrução. Os operandos são fornecidos para a unidade de execução 5057 de um modo preferido, quer a partir da memória 5025, registros arquitetados 5059 ou a partir de um campo imediato da instrução a ser executada. Os resultados da execução, quando armazenados, são armazenados na memória 5025, registros 5059 ou em outro hardware da máquina (como registros de controle, registros da PSW e similares).
[0614] Os endereços virtuais são transformados em endereços reais usando a tradução dinâmica de endereço 5062 e, opcionalmente, usando a tradução de registro de acesso 5063.
[0615] Um processador 5026 tem, tipicamente, uma ou mais unidades 5057, 5058, 5060 para executar a função da instrução. Com referência à figura 24A, uma unidade de execução 5057 pode se comunicar 5081 com registros gerais arquitetados 5059, uma unidade de decodificação/ encaminhamento 5056, uma unidade de armazenamento/ carregamento 5060, e outras 5065 unidades de processamento por meio da interface lógica 5071. Uma unidade de execução 5057 pode empregar vários circuitos de registro de 5067, 5068, 5069 para armazenar informações que a unidade lógica aritmética (ALU) 5066 irá operar. A ALU executa operações aritméticas tais como somar, subtrair, multiplicar e dividir, bem como função lógica, como AND, OR e EXCLUSIVE- OR (XOR), girar e deslocar. De preferência, a ALU suporta operações específicas que são dependentes do projeto. Outros circuitos podem fornecer outras facilidades arquitetadas 5072, incluindo códigos de condição e lógica de suporte à recuperação, por exemplo. Tipicamente, o resultado de uma operação da ALU é mantido em um circuito de registro de saída 5070 que pode encaminhar 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.
[0616] Uma instrução ADD, por exemplo, seria executada em uma unidade de execução 5057 tendo funcionalidade aritmética e lógica enquanto uma instrução de ponto flutuante por exemplo, seria executada em uma execução de ponto flutuante tendo capacidade de ponto flutuante específica. 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 por opcode sobre os operandos. Por exemplo, uma instrução ADD pode ser executada por uma unidade de execução 5057 em operandos encontrados em dois registros 5059 identificados pelos campos de registro da instrução.
[0617] A unidade de execução 5057 executa a adição aritmética sobre dois operandos e armazena o resultado em um terceiro operando em que o terceiro operando pode ser um terceiro registro ou um dos dois registros de origem. A unidade de execução de preferência utiliza uma Unidade Lógica Aritmética (ALU) 5066 que é capaz de executar uma variedade de funções lógicas, como Shift, Rotate, AND, OR e XOR, bem como uma variedade de funções algébricas incluindo qualquer um dentre adicionar, subtrair, multiplicar, dividir. Algumas ALUs 5066 são projetadas para operações escalares e algumas para ponto flutuante. Os dados podem ser Big Endian (onde o byte menos significativo está no endereço de byte mais alto) ou Little Endian (onde o byte menos significativo está no menor endereço de byte) dependendo da arquitetura. A IBM z/Architecture é Big Endian. Os campos sinalizados podem ser com sinal e magnitude, complemento de 1 ou complemento de 2 dependendo da arquitetura. O número em complemento de 2 é vantajoso em que a ALU não precisa projetar uma capacidade de subtrair uma vez que um valor negativo ou um valor positivo em complemento de 2 requer apenas uma adição dentro da ALU. Os números são comumente descritos 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 Kbytes (Kilobytes), por exemplo.
[0618] Com referência à figura 24B, informação instrução de ramificação para a execução de uma instrução de ramificação é normalmente enviada para uma unidade de ramificação 5058 que muitas vezes emprega um algoritmo de previsão de ramificação, como uma tabela de histórico de ramificação 5082 para prever o resultado da ramificação antes de outras operações condicionais estarem completas. O alvo da instrução de ramificação atual é obtido e executado de forma especulativa antes das operações condicionais estarem completas. Quando as operações condicionais são concluídas as instruções de ramificação executadas de forma especulativa são concluídas ou descartadas com base nas condições de operação condicional e os resultados especulados. A instrução de ramificação típica pode testar códigos de condição e ramificar para um endereço de destino se os códigos de condição atendem ao requisito de ramificação da instrução de ramificação, um endereço de destino pode ser calculado com base em vários números, incluindo os encontrados em campos de registro ou de um campo imediato da instrução por exemplo. A unidade de ramificação 5058 pode empregar uma ALU 5074 tendo uma pluralidade de circuitos de registro de entrada 5075, 5076, 5077 e um circuito de registro de saída 5080. A unidade de ramificação 5058 pode se comunicar com registros gerais 5059, unidade de decodificar e encaminhamento 5056 ou outros circuitos 5073, por exemplo.
[0619] A execução de um conjunto de instruções pode ser interrompida por uma variedade de razões, incluindo uma mudança de contexto iniciada por um sistema operacional, uma exceção ou erro de programa causando uma mudança de contexto, um sinal de interrupção de E/S que causa uma mudança de contexto ou atividade multi-threading de uma pluralidade de programas (em um ambiente multi-threaded), por exemplo. De preferência, uma ação de troca de contexto salva 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. As informações de estado podem ser salvas em registros de hardware ou na memória, por exemplo. A informação de estado compreende de preferência um valor de contador de programa apontando para uma próxima instrução a ser executada, códigos de condição, a informação de tradução de memória e conteúdo de registro arquitetado. A atividade de mudança de contexto pode ser exercida por circuitos de hardware, programas de aplicativos, programas de sistema operacional ou código de firmware (microcódigo, pico código ou código interno licenciado (LIC)) isoladamente ou em conjunto.
[0620] Um processador acessa os operandos de acordo com métodos de instrução definidos. A instrução pode fornecer um operando imediato utilizando o valor de uma parte da instrução, pode fornecer um ou mais campos de registro explicitamente apontando quer para registros de uso geral ou registros de uso específico (registros de ponto flutuante, por exemplo). A instrução pode utilizar registros implícitos identificados por um campo opcode como operandos. A instrução pode utilizar localizações de memória para operandos. A localização da memória de um operando pode ser fornecida por um registro, um campo imediato, ou uma combinação de registros e campos imediatos como exemplificado pela instalação de deslocamento longo z/Arquitecture em que a instrução define um registro 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 de memória, por exemplo. A localização aqui normalmente implica uma localização na memória principal (armazenamento principal), salvo indicação em contrário.
[0621] Com referência à figura 24C, um processador acessa o armazenamento utilizando uma unidade de carregamento/ armazenamento 5060. A unidade de carregamento/ armazenamento 5060 pode executar uma operação de carregamento através da obtenção do endereço do operando de destino na memória 5053 e o carregamento do operando num registro 5059 ou uma outra localização da memória 5053, ou pode executar uma operação de armazenamento, obtendo o endereço do operando de destino na memória 5053 e armazenando dados obtidos a partir de um registro 5059 ou uma outra localização da memória 5053 na localização de operando de destino na memória 5053. A unidade de carregamento/ armazenamento 5060 pode ser especulativa e pode acessar a memória em uma sequência que está fora de ordem em relação à sequência de instruções, no entanto, a unidade de carregamento/ armazenamento 5060 é para manter a aparência de programas que as instruções foram executadas em ordem. Uma unidade de carregamento/ armazenamento 5060 pode se comunicar 5084 com registros gerais 5059, unidade de decodificação/ encaminhamento 5056, interface de cache/ memória 5053 ou outros elementos 5083 e compreende vários circuitos de registro 5086, 5087, 5088 e 5089, ALUs 5085 e lógica de controle 5090 para calcular endereços de armazenamento e fornecer sequenciamento de preparação para manter as operações em ordem. Algumas operações podem estar fora de ordem, mas a unidade de carregamento/ armazenamento fornece a funcionalidade para fazer as operações fora de ordem para aparecer para o programa como tendo sido realizada em ordem, como é bem conhecido na técnica.
[0622] De preferência, endereços que um programa de aplicativo "vê" são muitas vezes referidos como endereços virtuais. Os endereços virtuais são muitas vezes referidos como "endereços lógicos" e "endereços efetivos". Estes endereços virtuais são virtuais pelo fato de que eles são redirecionados para localização de memória física por um de uma variedade de tecnologias de tradução dinâmica de endereço (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 tradução, as tabelas de tradução de um modo preferido, compreendendo, pelo menos, uma tabela de segmentos e uma tabela de página sozinhas ou em combinação, de um modo preferido, a tabela de segmentos tendo uma entrada apontando para a tabela de página. Na z/Architecture, uma hierarquia de tradução é fornecida incluindo uma tabela de primeira região, uma tabela de segunda região, uma tabela de terceira região, uma tabela de segmentos e uma tabela de página opcional. O desempenho da tradução de endereços é muitas vezes melhorado através da utilização de um translation lookaside buffer (TLB), que compreende entradas mapeando um endereço virtual para uma localização de memória física associada. As entradas são criadas quando o DAT traduz um endereço virtual utilizando as tabelas de tradução. A utilização posterior do endereço virtual pode então utilizar a entrada do TLB rápido ao invés dos acessos da tabela de tradução sequencial lenta. O conteúdo do TLB pode ser gerenciado por uma variedade de algoritmos de substituição, incluindo LRU (Least Recently Used).
[0623] No caso em que o processador é um processador de um sistema multiprocessadores, cada processador tem a responsabilidade de manter os recursos compartilhados, tais como E/S, caches, TLBs e memória, interligados por coerência. Normalmente, as tecnologias "snoop" serão utilizadas na manutenção da coerência de cache. Em um ambiente de snoop, cada linha de cache pode ser marcada como sendo de qualquer um dentre um estado comum, um estado exclusivo, um estado alterado, um estado inválido e semelhantes, a fim de facilitar o compartilhamento.
[0624] As unidades de E/S 5054 (figura 23) fornecem ao processador meios para conexão aos dispositivos periféricos, incluindo fita, disco, impressoras, monitores e redes, por exemplo. As unidades de E/S são frequentemente apresentadas ao programa de computador por drivers de software. Em mainframes, como o System z da IBM®, adaptadores de canal e adaptadores de sistemas abertos são unidades de E/S do mainframe que fornecem as comunicações entre o sistema operacional e os dispositivos periféricos.
[0625] Além disso, outros tipos de ambientes de computação podem se beneficiar de um ou mais aspectos. Como um exemplo, um ambiente pode incluir um emulador (por exemplo, software ou outros mecanismos de emulação), em que uma arquitetura particular (incluindo, por exemplo, a execução da instrução, funções arquitetadas, tais como a tradução de endereços, e os registros arquitetados) ou um subconjunto dos mesmos é emulado (por exemplo, num sistema de computador nativo tendo um processador e memória). Em tal ambiente, uma ou mais funções de emulação do emulador podem implementar uma ou mais concretizações, mesmo que um computador executando o emulador possa ter uma arquitetura diferente das capacidades sendo emuladas. Como um exemplo, no modo de emulação, a instrução ou operação específica sendo emulada é decodificada, e uma função de emulação apropriada é construída para implementar a instrução ou operação individual.
[0626] Em um ambiente de emulação, um computador hospedeiro inclui, por exemplo, uma memória para armazenar instruções e dados; uma unidade de busca de instrução para buscar instruções da memória e, opcionalmente, fornecer o armazenamento temporário local para a instrução buscada; uma unidade de decodificação de instruções para receber as instruções buscadas e para determinar o tipo de instruções que foram buscadas; e uma unidade de execução de instruções para executar as instruções. A execução pode incluir o carregamento de dados em um registro da memória; armazenar dados de volta para a memória de um registro; ou executar algum tipo de operação aritmética ou lógica, como determinado pela unidade de decodificação. Num exemplo, cada unidade é implementada em software. Por exemplo, as operações sendo executadas pelas unidades são implementadas como uma ou mais sub-rotinas no software emulador.
[0627] Mais particularmente, em um mainframe, instruções de máquina arquitetadas são utilizadas por programadores, normalmente hoje programadores de "C", muitas vezes por meio de um aplicativo compilador. Estas instruções armazenadas no meio de armazenamento podem ser executadas nativamente em um z/Architecture IBM <®> Server, ou, em alternativa, máquinas que executam outras arquiteturas. Elas podem ser emuladas nos servidores mainframe IBM <®> existentes e do futuro, e em outras máquinas da IBM <®> (por exemplo, Servidores Power Systems e System X Servers). Elas podem ser executadas em máquinas executando Linux em uma ampla variedade de máquinas que utilizam hardware fabricado pela IBM <®>, Intel <®>, AMD, e outros. Além da execução no hardware sob uma arquitetura z/Architecture, Linux pode ser utilizado, bem como as máquinas que utilizam emulação por Hercules, UMX ou FSI (Fundamental Software, Inc), onde geralmente a execução está num modo de emulação. No modo de emulação, o software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
[0628] 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 dos limites da instrução. O software de emulação pode buscar um ou mais instruções emuladas de máquina de cada vez e converter uma ou mais instruções de máquina emulada para um grupo correspondente de instruções de máquina nativa para execução pelo processador nativo. Estas instruções convertidas podem ser armazenadas em cache de tal modo que uma conversão mais rápida pode ser conseguida. Não obstante, o software de emulação é para manter as regras de arquitetura da arquitetura do processador emulado de forma a assegurar os sistemas operacionais e aplicativos escritos para o processador emulado funcionar corretamente. Além disso, o software de emulação é para fornecer recursos identificados pela arquitetura do processador emulado incluindo, mas não se limitando a, registros de controle, registros de uso geral, os registros de ponto flutuante, função de tradução dinâmica de endereços incluindo tabelas de segmentos e tabelas de páginas por exemplo, mecanismos de interrupção, o mecanismos de troca de contexto, relógios Time of Day (TOD) e interfaces arquitetadas para subsistemas de E/S de tal forma que um sistema operacional ou um programa aplicativo projetado para ser executado no processador emulado, possam ser executados no processador nativo tendo o software de emulação.
[0629] Uma instrução específica sendo emulada é decodificada, e uma sub-rotina é chamada para 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 ou controlador em "C", ou algum outro método de fornecimento de um controlador para o hardware específico como estará dentro do conhecimento dos versados na técnica após compreensão da descrição da concretização preferida. Várias patentes de emulação de software e hardware incluindo, mas não se limitando a Carta Patente dos EUA N° 5.551.013, intitulada "Multiprocessor for Hardware Emulation", por Beausoleil et ai; e Carta Patente dos EUA N° 6.009.261, intitulada "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor", de Scalzi et al; e Carta Patente dos EUA N° 5.574.873, intitulada "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", por Davidian et al; e Carta Patente dos EUA N° 6.308.255, intitulada "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", por Gorishek et al; e Carta Patente dos EUA N° 6.463.582, intitulada "Dynamic Optimizing Object Code Translator for Arhitecture Emulation and Dynamic Optimizing Object Code Translation Method", por Lethin et al; e Carta Patente dos EUA N° 5.790.825, intitulada "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", de Eric Traut; e muitos outros, ilustram uma variedade de modos conhecidos para alcançar a emulação de um formato de instrução arquitetado para uma máquina diferente para uma máquina de destino disponível para os versados na técnica.
[0630] Na figura 25, um exemplo de um sistema de computador hospedeiro emulado 5092 é fornecida que emula um sistema de computador hospedeiro 5000' de uma arquitetura de hospedeiro. No sistema de computador hospedeiro emulado 5092, o processador hospedeiro (CPU) 5091 é um processador hospedeiro emulado (ou processador hospedeiro 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 hospedeiro emulado 5092 tem memória 5094 acessível ao processador de emulação 5093. Na concretização exemplar, a memória 5094 é dividida numa porção de memória de um computador hospedeiro 5096 e uma porção de rotinas de emulação 5097. A memória do computador hospedeiro 5096 está disponível para programas do computador hospedeiro emulado 5092 de acordo com a arquitetura de computador hospedeiro. O processador de emulação 5093 executa as instruções nativas de um conjunto de instruções arquitetado de uma arquitetura diferente daquela do processador emulado 5091, as instruções nativas obtidas a partir de rotinas de emulação de memória 5097, e pode acessar uma instrução de hospedeiro para a execução de um programa na memória de um computador hospedeiro 5096 através do emprego de uma ou mais instruções obtidas de uma rotina de sequência e acesso/decodificação que possa decodificar a instrução(s) hospedeiro acessada para determinar uma rotina de execução de instrução nativa para emular a função da instrução de hospedeiro acessada. Outras facilidades que são definidas para a arquitetura do sistema de computador hospedeiro 5000' podem ser emuladas por rotinas de instalações arquitetadas, incluindo instalações como registros de uso geral, registros de controle, a tradução dinâmica de endereço e suporte de subsistema de E/S e cache do processador, por exemplo. As rotinas de emulação também podem tirar proveito de funções disponíveis no processador de emulação 5093 (como os registros gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das rotinas de emulação. Os mecanismos de hardware especial e sem carga também podem ser proporcionados para auxiliar o processador 5093 na emulação da função do computador hospedeiro 5000'.
[0631] A terminologia aqui utilizada é para fins 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 também incluir as formas plurais, a menos que o contexto indique claramente o contrário. Será ainda entendido que os termos "compreende" e/ ou "compreendendo", quando utilizado no presente relatório descritivo, especificam a presença de características, números inteiros, etapas, operações, elementos e/ ou componentes estabelecidos, mas não excluem a presença ou a adição de uma ou mais outras características, números inteiros, etapas, operações, elementos, componentes e/ ou grupos dos mesmos.
[0632] As estruturas, materiais, atos e equivalentes correspondentes de todos os meios ou etapa mais a função de elementos nas reivindicações abaixo, se for o caso, pretendem incluir qualquer estrutura, material ou ato para executar a função em combinação com outros elementos reivindicados conforme especificamente reivindicado. A descrição de uma ou mais concretizações foi apresentada para fins de ilustração e descrição, mas não se destina a ser exaustiva ou limitada à forma divulgada. Muitas modificações e variações serão evidentes para os vulgos versados na técnica. 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 com conhecimentos ordinários compreendam várias concretizações com várias modificações conforme são apropriadas para o uso particular contemplado.
Claims (10)
1. Método para gerenciar interrupções em um ambiente de computação, o método compreendendo as etapas de: iniciar, por um processador, uma transação pela execução de uma instrução de início de transação (200), a transação efetivamente atrasando compromisso transacional armazena para a memória principal até a conclusão de uma transação selecionada, o método caracterizado pelo fato de que compreende ainda: a instrução de início de transação inclui um campo (216) especificando um controle de filtro de interrupção controlando se certas classes de condições de exceção de programa que ocorrem enquanto o processador está em modo de execução transacional resultam em uma interrupção; detectar, pelo processador, durante o processamento da transação, uma condição de exceção de programa (1700), a condição de exceção do programa tendo pelo menos uma classe de execução transacional dependendo de uma variedade das condições de exceção de programa; abortar a transação, com base na detecção da condição de exceção de programa determinar, com base na detecção da condição de exceção de programa, se uma interrupção está sendo apresentada (1702), em que a determinação emprega o controle de filtro do programa de interrupção (1754) e uma classe de execução transacional da condição de exceção do programa (1756); e com base na determinação indicando que a interrupção não deve ser apresentada, condições de exceção de programa são bloqueadas de causar uma interrupção (1758, 1760); e re-executar um ou mais instruções da transação selecionada com base no abortamento da transação e determinar se a interrupção deve ser apresentada.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o controle de filtragem de interrupção de programa é ajustado para um valor de uma pluralidade de valores, a pluralidade de valores indicando uma pluralidade de níveis de filtragem de interrupção.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que um primeiro nível de uma pluralidade de níveis indica nenhuma filtragem em que as condições de exceção do programa resultam em uma interrupção, um segundo nível indica filtragem limitada em que as condições de exceção do programa de uma classe de transação selecionada não resulta em uma interrupção, e um terceiro nível indica filtragem moderada em que as condições de exceção do programa de uma pluralidade de classes de transação selecionadas não resulta em uma interrupção.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que para o segundo nível, as condições de exceção do programa tendo um valor de transação de classe três não resulta em uma interrupção, e para o terceiro nível, as condições de exceção do programa tendo um valor de transação de classe dois ou três não resultam numa interrupção.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que o valor de um controle de filtragem de interrupção de programa que é definido indica um nível de filtragem de uma pluralidade de níveis, e em que determinação compreende: determinar uma classe de transação para a condição de exceção do programa (1756); e verificar o nível de filtragem se a classe da transação resulta numa interrupção (1758), em que a determinação indica que a interrupção não deve ser apresentada com base na verificação que indica a classe de transação para esse nível de filtragem que não resulta numa interrupção (1760).
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o controle de filtragem de interrupção de programa é incluído em uma instrução para iniciar transação (216), a instrução para iniciar transação sendo uma instrução para iniciar a transação de uma pluralidade de instrução para iniciar a transação (600, 602, 604) utilizadas para criar um ninho de transações, e em que uma ou mais das instruções para começar a transação incluem um controle de filtragem de interrupção de programa, e em que o controle de filtragem de interrupção de programa utilizado é um valor mais alto de um ou mais controles de filtragem de interrupção de programa.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que em que a transação é uma transação restrita e o controle de filtragem de interrupção de programa é ajustado para um valor padrão.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que, com base na determinação indicando que a interrupção está sendo apresentada (1708), o método compreende ainda: armazenar o conteúdo de um ou mais locais de memória atribuído para a condição de exceção do programa (1708), em que o armazenamento inclui a fixação de um código de comprimento de instruções de um programa de interrupção respectivo à identificação para uma instrução em que a condição de exceção do programa ocorreu (1710); e armazenar uma palavra de estado de programa de aborto de transação como uma palavra de estado de programa do programa (1712).
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o método compreende ainda abortar uma operação baseada na detecção da condição de exceção do programa, a transação sendo uma transação sem restrição e o controle de filtragem de interrupção de programa indicando que a interrupção deve ser apresentada.
10. Sistema caracterizado pelo fato de que compreende meios adaptados para realizar todas as etapas do método como definido em qualquer uma das reivindicações 1 a 9.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/524,839 | 2012-06-15 | ||
US13/524,839 US10437602B2 (en) | 2012-06-15 | 2012-06-15 | Program interruption filtering in transactional execution |
PCT/IB2012/056732 WO2013186602A1 (en) | 2012-06-15 | 2012-11-26 | Program interruption filtering in transactional execution |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112014031350A2 BR112014031350A2 (pt) | 2017-06-27 |
BR112014031350B1 true BR112014031350B1 (pt) | 2021-09-21 |
Family
ID=49757066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112014031350-4A BR112014031350B1 (pt) | 2012-06-15 | 2012-11-26 | Filtragem de interrupção de programa em execução transacional |
Country Status (24)
Country | Link |
---|---|
US (2) | US10437602B2 (pt) |
EP (1) | EP2862057B1 (pt) |
JP (1) | JP6143025B2 (pt) |
KR (1) | KR101720402B1 (pt) |
CN (1) | CN104380246B (pt) |
AU (1) | AU2012382777B2 (pt) |
BR (1) | BR112014031350B1 (pt) |
CA (1) | CA2874178C (pt) |
DK (1) | DK2862057T3 (pt) |
ES (1) | ES2719685T3 (pt) |
HK (1) | HK1207442A1 (pt) |
HR (1) | HRP20190661T1 (pt) |
HU (1) | HUE042292T2 (pt) |
IL (1) | IL236254A0 (pt) |
LT (1) | LT2862057T (pt) |
MX (1) | MX344923B (pt) |
PL (1) | PL2862057T3 (pt) |
PT (1) | PT2862057T (pt) |
RU (1) | RU2568923C2 (pt) |
SG (1) | SG11201407462RA (pt) |
SI (1) | SI2862057T1 (pt) |
TW (1) | TWI554948B (pt) |
WO (1) | WO2013186602A1 (pt) |
ZA (1) | ZA201408081B (pt) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9348642B2 (en) * | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US10423191B2 (en) * | 2017-01-19 | 2019-09-24 | International Business Machines Corporation | Clock comparator sign control |
US11947978B2 (en) | 2017-02-23 | 2024-04-02 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
US10831509B2 (en) | 2017-02-23 | 2020-11-10 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
US11620153B2 (en) | 2019-02-04 | 2023-04-04 | International Business Machines Corporation | Instruction interrupt suppression of overflow exception |
US11182316B2 (en) | 2019-05-20 | 2021-11-23 | International Business Machines Corporation | Program interrupt code conversion |
US12118387B2 (en) * | 2021-08-05 | 2024-10-15 | International Business Machines Corporation | Query and update of processor boost information |
Family Cites Families (282)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1174370A (en) | 1980-05-19 | 1984-09-11 | Hidekazu Matsumoto | Data processing unit with pipelined operands |
US4488227A (en) | 1982-12-03 | 1984-12-11 | Honeywell Information Systems Inc. | Program counter stacking method and apparatus for nested subroutines and interrupts |
US4764861A (en) * | 1984-02-08 | 1988-08-16 | Nec Corporation | Instruction fpefetching device with prediction of a branch destination for each branch count instruction |
US4740893A (en) | 1985-08-07 | 1988-04-26 | International Business Machines Corp. | Method for reducing the time for switching between programs |
US5063497A (en) | 1987-07-01 | 1991-11-05 | Digital Equipment Corporation | Apparatus and method for recovering from missing page faults in vector data processing operations |
US5321823A (en) | 1988-07-20 | 1994-06-14 | Digital Equipment Corporation | Digital processor with bit mask for counting registers for fast register saves |
US5117498A (en) | 1988-08-19 | 1992-05-26 | Motorola, Inc. | Processer with flexible return from subroutine |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
JPH0437927A (ja) | 1990-06-01 | 1992-02-07 | Sony Corp | プロセッサの処理方法 |
US5471591A (en) | 1990-06-29 | 1995-11-28 | Digital Equipment Corporation | Combined write-operand queue and read-after-write dependency scoreboard |
US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
EP0470322B1 (en) | 1990-08-07 | 1996-04-03 | BULL HN INFORMATION SYSTEMS ITALIA S.p.A. | Message-based debugging method |
GB2256514B (en) | 1991-05-21 | 1994-11-16 | Digital Equipment Corp | Commitment ordering for guaranteeing serializability across distributed transactions |
US5701480A (en) | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
US5274817A (en) | 1991-12-23 | 1993-12-28 | Caterpillar Inc. | Method for executing subroutine calls |
US5423011A (en) * | 1992-06-11 | 1995-06-06 | International Business Machines Corporation | Apparatus for initializing branch prediction information |
US5359608A (en) | 1992-11-24 | 1994-10-25 | Amdahl Corporation | Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions |
WO1994027215A1 (en) | 1993-05-07 | 1994-11-24 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5925125A (en) | 1993-06-24 | 1999-07-20 | International Business Machines Corporation | Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions |
US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5748964A (en) | 1994-12-20 | 1998-05-05 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
US5655100A (en) | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
EP0870228B1 (en) | 1995-10-06 | 2003-08-13 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US5790825A (en) | 1995-11-08 | 1998-08-04 | Apple Computer, Inc. | Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions |
TW384447B (en) | 1996-01-22 | 2000-03-11 | Infinite Technology Inc | Processor with reconfigurable arithmetic data path |
KR100204027B1 (ko) * | 1996-02-16 | 1999-06-15 | 정선종 | 이중면 비휘발성 메모리를 이용한 데이타베이스 회복 장치 및 그 방법 |
JPH103416A (ja) | 1996-06-14 | 1998-01-06 | Canon Inc | 情報処理装置およびその方法 |
US6035313A (en) | 1997-03-24 | 2000-03-07 | Motorola, Inc. | Memory address generator for an FFT |
US5870582A (en) | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
JPH10333908A (ja) | 1997-05-30 | 1998-12-18 | Mitsubishi Electric Corp | 分岐予測方法 |
US5937199A (en) * | 1997-06-03 | 1999-08-10 | International Business Machines Corporation | User programmable interrupt mask with timeout for enhanced resource locking efficiency |
US6073230A (en) | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
JP3546678B2 (ja) | 1997-09-12 | 2004-07-28 | 株式会社日立製作所 | マルチos構成方法 |
US6772419B1 (en) | 1997-09-12 | 2004-08-03 | Hitachi, Ltd. | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS |
US6094730A (en) | 1997-10-27 | 2000-07-25 | Hewlett-Packard Company | Hardware-assisted firmware tracing method and apparatus |
US7076784B1 (en) | 1997-10-28 | 2006-07-11 | Microsoft Corporation | Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment |
US6000029A (en) | 1997-11-03 | 1999-12-07 | Motorola, Inc. | Method and apparatus for affecting subsequent instruction processing in a data processor |
US5938778A (en) | 1997-11-10 | 1999-08-17 | International Business Machines Corporation | System and method for tracing instructions in an information handling system without changing the system source code |
KR100246537B1 (ko) | 1997-11-25 | 2000-03-15 | 정선종 | 코드분할 다중접속 시스템에서 파일럿 심벌을 이용한 동기식이중 채널 큐피에스케이 송수신기의 구조 |
SE9704476L (sv) | 1997-12-02 | 1999-06-23 | Ericsson Telefon Ab L M | Utökad instruktionsavkodning |
TW346100U (en) * | 1997-12-15 | 1998-11-21 | wen-bin Cai | Assembling structure for Chan plate |
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 |
DE69940867D1 (de) | 1998-03-17 | 2009-06-25 | Panasonic Corp | Vorrichtung und Verfahren zur Datenübertragung unter Verwendung von angepassten Befehlen |
US6202067B1 (en) | 1998-04-07 | 2001-03-13 | Lucent Technologies, Inc. | Method and apparatus for correct and complete transactions in a fault tolerant distributed database system |
US6119129A (en) | 1998-05-14 | 2000-09-12 | Sun Microsystems, Inc. | Multi-threaded journaling in a configuration database |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
EP0992907B1 (en) | 1998-10-06 | 2005-09-28 | Texas Instruments Inc. | Trace fifo management |
EP0992916A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
US6151669A (en) | 1998-10-10 | 2000-11-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Methods and apparatus for efficient control of floating-point status register |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
JP3504519B2 (ja) | 1998-12-04 | 2004-03-08 | 富士通株式会社 | 取引支援システム及びこのシステムに接続される情報端末装置 |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6732307B1 (en) | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
US6604188B1 (en) | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
US6738892B1 (en) | 1999-10-20 | 2004-05-18 | Transmeta Corporation | Use of enable bits to control execution of selected instructions |
JP3776653B2 (ja) | 1999-11-24 | 2006-05-17 | 富士通株式会社 | 演算処理装置 |
US6601149B1 (en) | 1999-12-14 | 2003-07-29 | International Business Machines Corporation | Memory transaction monitoring system and user interface |
US6754809B1 (en) | 1999-12-30 | 2004-06-22 | Texas Instruments Incorporated | Data processing apparatus with indirect register file access |
US6934832B1 (en) * | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6581138B2 (en) | 2000-02-29 | 2003-06-17 | Stmicroelectronics, Inc. | Branch-prediction driven instruction prefetch |
US6665863B1 (en) | 2000-05-31 | 2003-12-16 | Microsoft Corporation | Data referencing within a database graph |
US6826682B1 (en) | 2000-06-26 | 2004-11-30 | Transmeta Corporation | Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state |
US7246123B2 (en) | 2000-08-04 | 2007-07-17 | Carr Scott Software Incorporated | Automatic transaction management |
SG99941A1 (en) | 2000-08-30 | 2003-11-27 | Ibm | Transaction support on logical disks |
US6886094B1 (en) | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US6671686B2 (en) | 2000-11-02 | 2003-12-30 | Guy Pardon | Decentralized, distributed internet data management |
US7346632B2 (en) | 2001-02-22 | 2008-03-18 | International Business Machines Corporation | Mechanism for executing nested transactions in an execution environment supporting flat transactions only |
US6963919B1 (en) | 2001-02-28 | 2005-11-08 | Agilent Technologies, Inc. | Method and system for improving computer network performance |
US6745272B2 (en) | 2001-04-04 | 2004-06-01 | Advanced Micro Devices, Inc. | System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system |
US7185234B1 (en) | 2001-04-30 | 2007-02-27 | Mips Technologies, Inc. | Trace control from hardware and software |
US7165168B2 (en) | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7305678B2 (en) | 2001-05-17 | 2007-12-04 | International Business Machines Corporation | Method and system for reducing synchronization waits when allocating sequenced identifiers in a multi-threaded server |
US6874081B2 (en) | 2001-05-17 | 2005-03-29 | Broadcom Corporation | Selection of link and fall-through address using a bit in a branch address for the selection |
US7613762B2 (en) | 2001-05-25 | 2009-11-03 | Sun Microsystems, Inc. | Floating point remainder with embedded status information |
KR100625595B1 (ko) | 2001-05-28 | 2006-09-20 | 한국전자통신연구원 | 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템 |
US6826681B2 (en) | 2001-06-18 | 2004-11-30 | Mips Technologies, Inc. | Instruction specified register value saving in allocated caller stack or not yet allocated callee stack |
US7185183B1 (en) | 2001-08-02 | 2007-02-27 | Mips Technologies, Inc. | Atomic update of CPO state |
US20060218556A1 (en) * | 2001-09-28 | 2006-09-28 | Nemirovsky Mario D | Mechanism for managing resource locking in a multi-threaded environment |
US7174463B2 (en) | 2001-10-04 | 2007-02-06 | Lenovo (Singapore) Pte. Ltd. | Method and system for preboot user authentication |
US6898699B2 (en) | 2001-12-21 | 2005-05-24 | Intel Corporation | Return address stack including speculative return address buffer with back pointers |
US7313734B2 (en) | 2002-01-14 | 2007-12-25 | International Business Machines Corporation | Method and system for instruction tracing with enhanced interrupt avoidance |
US7546446B2 (en) | 2002-03-08 | 2009-06-09 | Ip-First, Llc | Selective interrupt suppression |
US20040049666A1 (en) | 2002-09-11 | 2004-03-11 | Annavaram Murali M. | Method and apparatus for variable pop hardware return address stack |
US7496494B2 (en) | 2002-09-17 | 2009-02-24 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
US6892286B2 (en) | 2002-09-30 | 2005-05-10 | Sun Microsystems, Inc. | Shared memory multiprocessor memory model verification system and method |
US7103597B2 (en) | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US7634638B1 (en) | 2002-10-22 | 2009-12-15 | Mips Technologies, Inc. | Instruction encoding for system register bit set and clear |
US7149862B2 (en) * | 2002-11-18 | 2006-12-12 | Arm Limited | Access control in a data processing apparatus |
US8332464B2 (en) * | 2002-12-13 | 2012-12-11 | Anxebusiness Corp. | System and method for remote network access |
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 |
US6862664B2 (en) | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US6938130B2 (en) | 2003-02-13 | 2005-08-30 | Sun Microsystems Inc. | Method and apparatus for delaying interfering accesses from other threads during transactional program execution |
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 |
US7398355B1 (en) | 2003-02-13 | 2008-07-08 | Sun Microsystems, Inc. | Avoiding locks by transactionally executing critical sections |
US7089374B2 (en) | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US7143273B2 (en) | 2003-03-31 | 2006-11-28 | Intel Corporation | Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history |
US7398359B1 (en) | 2003-04-30 | 2008-07-08 | Silicon Graphics, Inc. | System and method for performing memory operations in a computing system |
US7480785B2 (en) | 2003-05-23 | 2009-01-20 | Nippon Telegraph And Telephone Corporation | Parallel processing device and parallel processing method |
CA2472887A1 (en) | 2003-06-30 | 2004-12-30 | Gravic, Inc. | Methods for ensuring referential integrity in multithreaded replication engines |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7197586B2 (en) | 2004-01-14 | 2007-03-27 | International Business Machines Corporation | Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler |
CN1947144A (zh) | 2004-02-24 | 2007-04-11 | 第一数据公司 | 事务处理的系统和方法 |
US8825615B2 (en) | 2004-05-11 | 2014-09-02 | Oracle International Corporation | Simplifying implementation of custom atomic transactions in a programming environment |
US7703098B1 (en) | 2004-07-20 | 2010-04-20 | Sun Microsystems, Inc. | Technique to allow a first transaction to wait on condition that affects its working set |
US7206903B1 (en) | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US7395382B1 (en) | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
US7836280B1 (en) * | 2004-09-14 | 2010-11-16 | Azul Systems, Inc. | Dynamic 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 |
EP1657118A1 (en) | 2004-11-11 | 2006-05-17 | IEE INTERNATIONAL ELECTRONICS & ENGINEERING S.A. | Collision recognition device for a vehicle |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7631073B2 (en) | 2005-01-27 | 2009-12-08 | International Business Machines Corporation | Method and apparatus for exposing monitoring violations to the monitored application |
US20060212757A1 (en) | 2005-03-15 | 2006-09-21 | International Business Machines Corporation | Method, system, and program product for managing computer-based interruptions |
US7421544B1 (en) | 2005-04-04 | 2008-09-02 | Sun Microsystems, Inc. | Facilitating concurrent non-transactional execution in a transactional memory system |
US7496726B1 (en) | 2005-04-18 | 2009-02-24 | Sun Microsystems, Inc. | Controlling contention via transactional timers among conflicting transactions issued by processors operating in insistent or polite mode |
GB0509738D0 (en) * | 2005-05-12 | 2005-06-22 | Cambridge Consultants | Processor and interface |
US7464161B2 (en) | 2005-06-06 | 2008-12-09 | International Business Machines Corporation | Enabling and disabling byte code inserted probes based on transaction monitoring tokens |
US7350034B2 (en) | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7702825B2 (en) | 2005-06-29 | 2010-04-20 | Intel Corporation | Enhancements to universal serial bus (USB) suspend and resume operations |
US20070005828A1 (en) | 2005-06-30 | 2007-01-04 | Nimrod Diamant | Interrupts support for the KCS manageability interface |
CN1713164A (zh) | 2005-07-21 | 2005-12-28 | 复旦大学 | 可自主处理多事务传输要求的dma控制器及数据传输方法 |
EP1913473A1 (en) | 2005-08-01 | 2008-04-23 | Sun Microsystems, Inc. | Avoiding locks by transactionally executing critical sections |
US20070061555A1 (en) | 2005-09-15 | 2007-03-15 | St Clair Michael | Call return tracking technique |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
CN100365604C (zh) | 2005-12-02 | 2008-01-30 | 北京中星微电子有限公司 | 一种中断控制处理装置和方法 |
US8799882B2 (en) * | 2005-12-07 | 2014-08-05 | Microsoft Corporation | Compiler support for optimizing decomposed software transactional memory operations |
US20070136289A1 (en) | 2005-12-14 | 2007-06-14 | Intel Corporation | Lock elision with transactional memory |
US7870545B2 (en) * | 2005-12-16 | 2011-01-11 | Intel Corporation | Protecting shared variables in a software transactional memory system |
US20070143755A1 (en) | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
US8117605B2 (en) | 2005-12-19 | 2012-02-14 | Oracle America, Inc. | Method and apparatus for improving transactional memory interactions by tracking object visibility |
US7730286B2 (en) | 2005-12-30 | 2010-06-01 | Intel Corporation | Software assisted nested hardware transactions |
US7810072B2 (en) | 2006-01-06 | 2010-10-05 | International Business Machines Corporation | Exception thrower |
US20070186056A1 (en) | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US7617383B2 (en) | 2006-02-16 | 2009-11-10 | Vns Portfolio Llc | Circular register arrays of a computer |
US8065499B2 (en) | 2006-02-22 | 2011-11-22 | Oracle America, Inc. | Methods and apparatus to implement parallel transactions |
US7533798B2 (en) * | 2006-02-23 | 2009-05-19 | Rockwell Automation Technologies, Inc. | Data acquisition and processing system for risk assessment |
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 |
US8180967B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US7930695B2 (en) | 2006-04-06 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for synchronizing threads on a processor that supports transactional memory |
US7636829B2 (en) | 2006-05-02 | 2009-12-22 | Intel Corporation | System and method for allocating and deallocating memory within transactional code |
US7594094B2 (en) | 2006-05-19 | 2009-09-22 | International Business Machines Corporation | Move data facility with optional specifications |
US7707394B2 (en) | 2006-05-30 | 2010-04-27 | Arm Limited | Reducing the size of a data stream produced during instruction tracing |
US7849446B2 (en) | 2006-06-09 | 2010-12-07 | Oracle America, Inc. | Replay debugging |
MY149658A (en) | 2006-06-12 | 2013-09-30 | Mobile Money Internat Sdn Bhd | Transaction server |
US20070300013A1 (en) | 2006-06-21 | 2007-12-27 | Manabu Kitamura | Storage system having transaction monitoring capability |
US20080005504A1 (en) | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US20080016325A1 (en) | 2006-07-12 | 2008-01-17 | Laudon James P | Using windowed register file to checkpoint register state |
US7617421B2 (en) | 2006-07-27 | 2009-11-10 | Sun Microsystems, Inc. | Method and apparatus for reporting failure conditions during transactional execution |
US7748618B2 (en) | 2006-08-21 | 2010-07-06 | Verizon Patent And Licensing Inc. | Secure near field transaction |
US7865885B2 (en) | 2006-09-27 | 2011-01-04 | Intel Corporation | Using transactional memory for precise exception handling in aggressive dynamic binary optimizations |
US20080086516A1 (en) | 2006-10-04 | 2008-04-10 | Oracle International | Automatically changing a database system's redo transport mode to dynamically adapt to changing workload and network conditions |
EP1918540B1 (en) | 2006-11-06 | 2009-08-26 | GM Global Technology Operations, Inc. | Operating method for a particulate filter, data processor program product and control apparatus therefore |
CN101178787A (zh) | 2006-11-10 | 2008-05-14 | 上海市卢湾区东南医院 | 用于社区老干部保健管理的信息沟通方法 |
US7669040B2 (en) | 2006-12-15 | 2010-02-23 | Sun Microsystems, Inc. | Method and apparatus for executing a long transaction |
JP2008165370A (ja) | 2006-12-27 | 2008-07-17 | Internatl Business Mach Corp <Ibm> | オンライントランザクション処理を分割し、分散環境で実行するための方法および装置。 |
US7802136B2 (en) | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8086827B2 (en) | 2006-12-28 | 2011-12-27 | Intel Corporation | Mechanism for irrevocable transactions |
US7627743B2 (en) | 2007-01-12 | 2009-12-01 | Andes Technology Corporation | Method and circuit implementation for multiple-word transfer into/from memory subsystems |
US20080244544A1 (en) | 2007-03-29 | 2008-10-02 | Naveen Neelakantam | Using hardware checkpoints to support software based speculation |
US8332374B2 (en) | 2007-04-13 | 2012-12-11 | Oracle America, Inc. | Efficient implicit privatization of transactional memory |
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 |
US8209689B2 (en) | 2007-09-12 | 2012-06-26 | Intel Corporation | Live lock free priority scheme for memory transactions in transactional memory |
US7904434B2 (en) | 2007-09-14 | 2011-03-08 | Oracle International Corporation | Framework for handling business transactions |
US7890472B2 (en) | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
US20090127332A1 (en) | 2007-11-16 | 2009-05-21 | Kyung Yang Park | System for processing payment employing off-line transaction approval mode of mobile card and method thereof |
US20090138890A1 (en) | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
CN101170747A (zh) | 2007-11-30 | 2008-04-30 | 中兴通讯股份有限公司 | 中继状态调节方法和装置 |
US9391789B2 (en) | 2007-12-14 | 2016-07-12 | Qualcomm Incorporated | Method and system for multi-level distribution information cache management in a mobile environment |
US8145878B2 (en) | 2007-12-17 | 2012-03-27 | Intel Corporation | Accessing control and status register (CSR) |
US8195898B2 (en) | 2007-12-27 | 2012-06-05 | Intel Corporation | Hybrid transactions for low-overhead speculative parallelization |
US8706982B2 (en) | 2007-12-30 | 2014-04-22 | Intel Corporation | Mechanisms for strong atomicity in a transactional memory system |
US8065491B2 (en) | 2007-12-30 | 2011-11-22 | Intel Corporation | Efficient non-transactional write barriers for strong atomicity |
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 |
US20090182983A1 (en) | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare and Branch Facility and Instruction Therefore |
US8041900B2 (en) | 2008-01-15 | 2011-10-18 | Oracle America, Inc. | Method and apparatus for improving transactional memory commit latency |
US20090187906A1 (en) | 2008-01-23 | 2009-07-23 | Sun Microsystems, Inc. | Semi-ordered transactions |
US8176280B2 (en) | 2008-02-25 | 2012-05-08 | International Business Machines Corporation | Use of test protection instruction in computing environments that support pageable guests |
US8380907B2 (en) | 2008-02-26 | 2013-02-19 | International Business Machines Corporation | Method, system and computer program product for providing filtering of GUEST2 quiesce requests |
US8161273B2 (en) | 2008-02-26 | 2012-04-17 | Oracle America, Inc. | Method and apparatus for programmatically rewinding a register inside a transaction |
US8688628B2 (en) | 2008-02-29 | 2014-04-01 | Red Hat, Inc. | Nested queued transaction manager |
EP2096564B1 (en) | 2008-02-29 | 2018-08-08 | Euroclear SA/NV | Improvements relating to handling and processing of massive numbers of processing instructions in real time |
US8316366B2 (en) | 2008-04-02 | 2012-11-20 | Oracle America, Inc. | Facilitating transactional execution in a processor that supports simultaneous speculative threading |
US20090260011A1 (en) | 2008-04-14 | 2009-10-15 | Microsoft Corporation | Command line transactions |
JP5385545B2 (ja) | 2008-04-17 | 2014-01-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションの実行を制御する装置及び方法 |
US9367363B2 (en) | 2008-05-12 | 2016-06-14 | Oracle America, Inc. | System and method for integrating best effort hardware mechanisms for supporting transactional memory |
US8612950B2 (en) | 2008-06-19 | 2013-12-17 | Intel Corporation | Dynamic optimization for removal of strong atomicity barriers |
US7996686B2 (en) | 2008-07-07 | 2011-08-09 | International Business Machines Corporation | Branch trace methodology |
EP2332043B1 (en) | 2008-07-28 | 2018-06-13 | Advanced Micro Devices, Inc. | Virtualizable advanced synchronization facility |
US9449314B2 (en) | 2008-10-02 | 2016-09-20 | International Business Machines Corporation | Virtualization of a central processing unit measurement facility |
US8191046B2 (en) | 2008-10-06 | 2012-05-29 | Microsoft Corporation | Checking transactional memory implementations |
US20100205628A1 (en) | 2009-02-12 | 2010-08-12 | Davis Bruce L | Media processing methods and arrangements |
US20100122073A1 (en) | 2008-11-10 | 2010-05-13 | Ravi Narayanaswamy | Handling exceptions in software transactional memory systems |
JP4702962B2 (ja) | 2008-11-12 | 2011-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ制御装置、プログラム及び方法 |
US8789057B2 (en) | 2008-12-03 | 2014-07-22 | Oracle America, Inc. | System and method for reducing serialization in transactional memory using gang release of blocked threads |
US20100153776A1 (en) | 2008-12-12 | 2010-06-17 | Sun Microsystems, Inc. | Using safepoints to provide precise exception semantics for a virtual machine |
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 |
US8914620B2 (en) | 2008-12-29 | 2014-12-16 | Oracle America, Inc. | Method and system for reducing abort rates in speculative lock elision using contention management mechanisms |
US9785462B2 (en) | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
US8799582B2 (en) | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
CN101710433A (zh) | 2008-12-31 | 2010-05-19 | 深圳市江波龙电子有限公司 | 一种电子支付卡的交易方法及电子支付卡 |
US9170844B2 (en) | 2009-01-02 | 2015-10-27 | International Business Machines Corporation | Prioritization for conflict arbitration in transactional memory management |
CN101819518B (zh) | 2009-02-26 | 2013-09-11 | 国际商业机器公司 | 在事务内存中快速保存上下文的方法和装置 |
US8266107B2 (en) | 2009-03-11 | 2012-09-11 | International Business Machines Corporation | Method for mirroring a log file by threshold driven synchronization |
US9940138B2 (en) | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
CN102460376B (zh) | 2009-06-26 | 2016-05-18 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US8356166B2 (en) | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US8489864B2 (en) | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8973004B2 (en) | 2009-06-26 | 2015-03-03 | Oracle America, Inc. | Transactional locking with read-write locks in transactional memory systems |
US8229907B2 (en) | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
US8281185B2 (en) | 2009-06-30 | 2012-10-02 | Oracle America, Inc. | Advice-based feedback for transactional execution |
US8688964B2 (en) | 2009-07-20 | 2014-04-01 | Microchip Technology Incorporated | Programmable exception processing latency |
GB2472620B (en) | 2009-08-12 | 2016-05-18 | Cloudtran Inc | Distributed transaction processing |
US8392694B2 (en) | 2009-09-15 | 2013-03-05 | International Business Machines Corporation | System and method for software initiated checkpoint operations |
GB2474446A (en) | 2009-10-13 | 2011-04-20 | Advanced Risc Mach Ltd | Barrier requests to maintain transaction order in an interconnect with multiple paths |
US8327188B2 (en) | 2009-11-13 | 2012-12-04 | Oracle America, Inc. | Hardware transactional memory acceleration through multiple failure recovery |
US8516202B2 (en) | 2009-11-16 | 2013-08-20 | International Business Machines Corporation | Hybrid transactional memory system (HybridTM) and method |
US9529839B2 (en) | 2009-12-07 | 2016-12-27 | International Business Machines Corporation | Applying limited-size hardware transactional memory to arbitrarily large data structure |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US8290991B2 (en) | 2009-12-15 | 2012-10-16 | Juniper Networks, Inc. | Atomic deletion of database data categories |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8521995B2 (en) | 2009-12-15 | 2013-08-27 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US9092253B2 (en) | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8301849B2 (en) | 2009-12-23 | 2012-10-30 | Intel Corporation | Transactional memory in out-of-order processors with XABORT having immediate argument |
US20110161371A1 (en) | 2009-12-29 | 2011-06-30 | Microgen Plc | Sql generation |
KR101639672B1 (ko) | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
CN101826000A (zh) | 2010-01-29 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 流水线微处理器的中断响应确定方法、装置及微处理器核 |
US8549468B2 (en) | 2010-02-08 | 2013-10-01 | National Tsing Hua University | Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
US20110208921A1 (en) | 2010-02-19 | 2011-08-25 | Pohlack Martin T | Inverted default semantics for in-speculative-region memory accesses |
US8438568B2 (en) | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Speculative thread execution with hardware transactional memory |
US8739164B2 (en) | 2010-02-24 | 2014-05-27 | Advanced Micro Devices, Inc. | Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof |
US8402227B2 (en) | 2010-03-31 | 2013-03-19 | Oracle International Corporation | System and method for committing results of a software transaction using a hardware transaction |
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 |
US8424015B2 (en) | 2010-09-30 | 2013-04-16 | International Business Machines Corporation | Transactional memory preemption mechanism |
US9552206B2 (en) | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US8788794B2 (en) | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US8442962B2 (en) | 2010-12-28 | 2013-05-14 | Sap Ag | Distributed transaction management using two-phase commit optimization |
US8818867B2 (en) | 2011-11-14 | 2014-08-26 | At&T Intellectual Property I, L.P. | Security token for mobile near field communication transactions |
US9442824B2 (en) | 2012-03-16 | 2016-09-13 | International Business Machines Corporation | Transformation of a program-event-recording event into a run-time instrumentation event |
US9158660B2 (en) * | 2012-03-16 | 2015-10-13 | International Business Machines Corporation | Controlling operation of a run-time instrumentation facility |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8966324B2 (en) * | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US8964390B2 (en) | 2012-11-08 | 2015-02-24 | International Business Machines Corporation | Sectioned manifolds facilitating pumped immersion-cooling of electronic components |
US9348522B2 (en) * | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Software indications and hints for coalescing memory transactions |
-
2012
- 2012-06-15 US US13/524,839 patent/US10437602B2/en active Active
- 2012-11-15 RU RU2012148586/08A patent/RU2568923C2/ru active
- 2012-11-26 MX MX2014015286A patent/MX344923B/es active IP Right Grant
- 2012-11-26 AU AU2012382777A patent/AU2012382777B2/en active Active
- 2012-11-26 BR BR112014031350-4A patent/BR112014031350B1/pt active IP Right Grant
- 2012-11-26 ES ES12878862T patent/ES2719685T3/es active Active
- 2012-11-26 KR KR1020147030098A patent/KR101720402B1/ko active IP Right Grant
- 2012-11-26 DK DK12878862.7T patent/DK2862057T3/en active
- 2012-11-26 CA CA2874178A patent/CA2874178C/en active Active
- 2012-11-26 SI SI201231580T patent/SI2862057T1/sl unknown
- 2012-11-26 LT LTEP12878862.7T patent/LT2862057T/lt unknown
- 2012-11-26 EP EP12878862.7A patent/EP2862057B1/en active Active
- 2012-11-26 PT PT12878862T patent/PT2862057T/pt unknown
- 2012-11-26 CN CN201280073582.5A patent/CN104380246B/zh active Active
- 2012-11-26 PL PL12878862T patent/PL2862057T3/pl unknown
- 2012-11-26 HU HUE12878862A patent/HUE042292T2/hu unknown
- 2012-11-26 SG SG11201407462RA patent/SG11201407462RA/en unknown
- 2012-11-26 JP JP2015516693A patent/JP6143025B2/ja active Active
- 2012-11-26 WO PCT/IB2012/056732 patent/WO2013186602A1/en active Application Filing
-
2013
- 2013-03-08 US US13/789,963 patent/US10430199B2/en active Active
- 2013-05-10 TW TW102116752A patent/TWI554948B/zh active
-
2014
- 2014-11-04 ZA ZA2014/08081A patent/ZA201408081B/en unknown
- 2014-12-14 IL IL236254A patent/IL236254A0/en unknown
-
2015
- 2015-08-20 HK HK15108073.6A patent/HK1207442A1/xx unknown
-
2019
- 2019-04-08 HR HRP20190661TT patent/HRP20190661T1/hr unknown
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2012382778B2 (en) | Saving/restoring selected registers in transactional processing | |
CA2874236C (en) | Transactional processing | |
US9983882B2 (en) | Selectively controlling instruction execution in transactional processing | |
CA2874175C (en) | Transaction diagnostic block | |
CA2874184C (en) | Processor assist facility | |
BR112014031350B1 (pt) | Filtragem de interrupção de programa em execução transacional | |
BR112014031437B1 (pt) | Indicações de ramificação de execução transacional | |
BR112014031432B1 (pt) | Instrução de armazenamento não transacional | |
BR112014031435B1 (pt) | Teste randomizado dentro de execução transacional |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B11A | Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing | ||
B15K | Others concerning applications: alteration of classification |
Ipc: G06F 9/06 (2006.01), G06F 9/44 (2018.01), G06F 9/5 |
|
B04C | Request for examination: application reinstated [chapter 4.3 patent gazette] | ||
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/11/2012, OBSERVADAS AS CONDICOES LEGAIS. |