BRPI0805218A2 - esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior - Google Patents
esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior Download PDFInfo
- Publication number
- BRPI0805218A2 BRPI0805218A2 BRPI0805218-2A BRPI0805218A BRPI0805218A2 BR PI0805218 A2 BRPI0805218 A2 BR PI0805218A2 BR PI0805218 A BRPI0805218 A BR PI0805218A BR PI0805218 A2 BRPI0805218 A2 BR PI0805218A2
- Authority
- BR
- Brazil
- Prior art keywords
- critical section
- access
- response
- withdrawal
- field
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F9/467—Transactional memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
A presente invenção refere-se a um método e aparelho para rastreamento híbrido de acesso por tentativa de pré- e pós-retirada são aquidescritos. Um rastreamento de acesso é freqúentemente realizado durante execução de seções críticas, que podem ser definidas por bloqueios tradicionais ou instruções de memória transacional. Acessos de pré-retirada à memória são realizados para atualizar informação de rastreamento para a- cesso durante execução de uma seção crítica. Contudo, atualizações de pós-retirada para a informação de rastreamento são realizadas para acessos de seções críticas consecutivas subseqúentes em um canal de processamento, quando uma operação prévia de seção crítica final é retirada.
Description
Relatório Descritivo da Patente de Invenção para "ESQUEMADE OMISSÃO DE TRAVA POR HARDWARE HÍBRIDA DE RETIRADAPRÉVIA-POSTERIOR".
Campo
A presente invenção refere-se ao campo de execução de pro-cessador e, em particular, ao rastreamento de acessos à memória durante aexecução.
Antecedentes
Avanços no processamento de semicondutores e desenho delógica têm permitido um aumento na quantidade de lógica que pode estarpresente em dispositivos de circuitos integrados. Como um resultado, asconfigurações do sistema de computador têm evoluído de um circuito sim-ples ou circuitos múltiplos integrados em um sistema para múltiplos núcleose múltiplos processadores lógicos presentes em circuitos integrados indivi-duais. Um processador ou circuito integrado, tipicamente, compreende umamatriz única de processador, onde a matriz pode incluir qualquer número denúcleos ou processadores lógicos.
O número sempre crescente de núcleos e processadores lógicosem circuitos integrados permite que mais encadeamentos de software sejamexecutados. Contudo, o aumento no número de encadeamentos de softwareque podem ser executados simultaneamente tem criado problemas com asincronização compartilhada entre os encadeamentos de software. Uma so-lução comum ao acesso de dados compartilhados em sistemas de proces-sadores lógicos múltiplos ou núcleos múltiplos compreende o uso de blo-queios para garantir exclusão mútua através de acessos múltiplos aos dadoscompartilhados. Contudo, a capacidade sempre crescente para executarmúltiplos encadeamentos de software resulta, potencialmente, em falsa con-tenção e uma serialização de execução.
Por exemplo, consideremos uma tabela de prova suportando osdados compartilhados. Com um sistema de bloqueio, um planejador podebloquear toda a tabela de prova, permitindo a um encadeamento acessartoda a tabela de prova. Contudo, o rendimento e o desempenho de outrosencadeamentos são, potencialmente, afetados de modo adverso, visto queeles são incapazes de acessar quaisquer entradas na tabela de prova, a en-trada na tabela de prova pode ser bloqueada. Contudo, isso aumenta acomplexidade de programação, visto que os planejadores têm que levar emconta mais bloqueios dentro de uma tabela de prova.
Outra técnica de sincronização de dados inclui o uso de memó-ria transacional (TM). Freqüentemente, a execução transacional inclui exe-cução, especulativamente, de um agrupamento de uma pluralidade de mi-crooperações, operações ou instruções. No exemplo acima, os encadea-mentos executam dentro da tabela de prova e seus acessos são monitora-dos/rastreados. Se os encadeamentos acessam/alteram a mesma entrada,uma das transações pode ser abortada para resolver o conflito. Contudo,algumas aplicações podem não tirar vantagem de programação de memóriatransacional. Como um resultado, uma técnica de sincronização de dados dehardware, que é referida, freqüentemente, como Hardware Lock Elision (HLE- Omissão de Bloqueio de Hardware), é utilizada para omitir bloqueios paraobter benefícios de sincronização similar à memória transacional. Portanto,problemas para rastrear acessos à memória eficientemente, com freqüência,se originam para execução de seções críticas de código através do uso dememória transacional e HLE.
Breve Descrição dos Desenhos
A presente invenção é ilustrada por meio de exemplo e não édestinada a ser limitada pelas figuras dos desenhos anexos.
A figura 1 ilustra uma modalidade de um processador de elemento de multiprocessamento capaz de realizar rastreamento de acesso àmemória de pré-retirada e pós-retirada.
A figura 2 ilustra uma modalidade de lógica de rastreamento pa-ra realizar rastreamento de acesso de pós-retirada para acessos à memóriade seção crítica consecutiva.
A figura 3 ilustra uma modalidade de um fluxograma para ummétodo de realização de rastreamento de acesso de pré-retirada e pós-retirada.A figura 4a ilustra uma modalidade de um íluxograma para ummétodo de rastreamento do início de seções críticas.
A figura 4b ilustra uma modalidade de um fluxograma para ummétodo de rastreamento do final de seções críticas.
A figura 4c ilustra uma modalidade de um fluxograma para ummétodo de realização de rastreamento de acesso de pré-retirada e pós-retirada.
Descrição Detalhada
Na descrição seguinte, numerosos detalhes específicos são a-presentados, tais como exemplos de suporte específico de hardware paraHardware Lock Elision (HLF - Omissão de Bloqueio de Hardware), métodosespecíficos de rastreamento/meta-dados, tipos específicos de local /memóriaem processadores e tipos específicos de acessos à memória e localizações,etc., a fim de proporcionar uma compreensão da presente invenção. Seráevidente, porém, para alguém habilitado na técnica que esses detalhes es-pecíficos não precisam ser empregados para a prática da presente invenção.
Em outros casos, componentes ou métodos bem conhecidos, tais como co-dificação de seções críticas em software, demarcação de seções críticas,arquiteturas específicas de processador de multinúcleos e multi-encadeamento, geração/manipulação de interrupção, organizações de cachee detalhes operacionais específicos de microprocessadores, não foram des-critos em detalhes, a fim de evitar obscurecer desnecessariamente a presen-te invenção.
O método e o aparelho aqui descritos são para um rastreamentohíbrido de pré-retirada e pós-retirada de acessos por tentativa durante exe-cução de seções críticas. Especificamente, o esquema híbrido é discutidoprincipalmente em referência aos sistemas de computador de processadorde múltiplos núcleos. Contudo, os métodos e aparelhos para rastreamentohíbrido de acesso não estão assim limitados, visto que eles podem ser im-plementados no ou em associação com qualquer dispositivo ou sistema decircuito integrado, como telefones celulares, assistentes pessoais digitais,controladores embutidos, plataformas móveis, plataformas de desktop e pia-taformas de servidores, bem como em conjunto com outros recursos, taiscomo encadeamentos de hardware/software que executam seções críticas.Além disso, o esquema híbrido também é discutido, principalmente, em refe-rência ao rastreamento de acesso durante HLE. Ainda, o rastreamento híbri-do de acesso à memória pode ser utilizado durante qualquer esquema deacesso à memória, tal como durante execução transacional.
Fazendo referência à figura 1, uma modalidade de processadorde múltiplos núcleos 100, que é capaz de realizar rastreamento híbrido deacesso de pré-retirada e pós-retirada, é ilustrada. Conforme mostrado, o pro-cessador físico 100 inclui qualquer número de elementos de processamento.Um elemento de processamento se refere a um encadeamento, a um pro-cesso, a um contexto, a um processador lógico, a um encadeamento dehardware, a um núcleo e/ou a qualquer elemento de processamento, que,potencialmente, compartilha acesso a recursos do processador, como uni-dades de reserva, unidades de execução, canais de processamento de da-dos e caches/memória de nível superior. Um processador físico, tipicamente,se refere a um circuito integrado, que pode incluir qualquer número de ele-mentos de processamento, como núcleos ou encadeamentos de hardware.
Um núcleo, freqüentemente, se refere à lógica localizada em umcircuito integrado capaz de manter um estado de arquitetura independenteem que cada estado de arquitetura mantido independentemente está asso-ciado com pelo menos alguns recursos de execução dedicados. Em contras-te aos núcleos, um encadeamento de hardware, tipicamente, se refere aqualquer lógica localizada em um circuito integrado capaz de manter um es-tado de arquitetura independente em que os estados de arquitetura mantidosindependentemente compartilham acesso aos recursos de execução. O pro-cessador físico 100, conforme ilustrado na figura 1, inclui dois núcleos, nú-cleo 101 e 102, que compartilham acesso à cache de nível superior 110. A-lém disso, o núcleo 101 inclui dois encadeamentos de hardware 101a e102b. Portanto, entidades de software, tais como um sistema operacional ouaplicação, potencialmente, vêem o processador 100 como quatro processa-dores separados, enquanto o processador 100 é capaz de executar quatroencadeamentos de software.
Como pode ser visto, quando certos recursos são compartilha-dos e outros são dedicados a um estado de arquitetura, a linha entre a no-menclatura de um encadeamento de hardware e sobreposições de núcleo.
Freqüentemente, um núcleo e um encadeamento de hardware são vistos porum sistema operacional como processadores lógicos individuais, onde o sis-tema operacional é capaz de esquematizar, individualmente, operações emcada processador lógico. Portanto, um elemento de limitação inclui qualquercomo núcleos, encadeamentos, encadeamentos de hardware, máquinasvirtuais ou outros recursos.
Em uma modalidade, o processador 100 é um processador demulti-núcleos capaz de executar múltiplos encadeamentos em paralelo. A-qui, um primeiro encadeamento está associado com registros 101a de esta-do de arquitetura, um segundo encadeamento está associado com registros101b de estado de arquitetura, um terceiro encadeamento está associadocom registros 102a de estado de arquitetura e um quarto encadeamento es-tá associado com registros 102b de estado de arquitetura. Referência aoselementos de processamento no processador 100, em uma modalidade, in-clui referência aos núcleos 101 e 102, bem como encadeamentos 101a,101b, 102a e 102b. Em outra modalidade, um elemento de processamentose refere aos elementos no mesmo nível em uma hierarquia de domínio deprocessamento. Por exemplo, o núcleo 101 e 102 estão no mesmo nível dedomínio dentro do núcleo 101 e os encadeamentos 101a e 101b, 102a e102b estão no mesmo nível de domínio.
Embora o processador 100 pode incluir núcleos assimétricos, is-to é, núcleos com diferentes configurações, unidades funcionais e/ou nú-cleos simétricos lógicos são ilustrados. Como um resultado, o núcleo 102,que está ilustrado como idêntico ao núcleo 101, não será discutido em deta-lhes para evitar obscurecer a discussão.
Conforme ilustrado, os registros de estados de arquitetura 101asão replicados em registros de estado de arquitetura 101b, assim, esta-dos/contextos de arquitetura individuais são capazes de serem armazenadospara processador lógico 101a e processador lógico 101b. Outros recursosmenores, tais como indicadores de instrução e lógica de renomeação na ló-gica de alocador de renomeação 130, também podem ser replicados para osencadeamentos 101a e 101b. Alguns recursos, tais como reordenar tampõesna unidade de reordenação/retirada 135, ILTB 120, carregar/armazenartampões e filas podem ser compartilhadas através de particionamento. Ou-tros recursos, tais como registros internos para fins gerais, registro de basede tabela de página cache de dados de baixo nível e TLB-dados 110, unida-de(s) de execução 140 e unidade de fora de ordem 135 são, potencialmente,compartilhadas completamente.
O módulo de interface de barramento 152 é para se comunicarcom dispositivos externos ao processador 100, tal como uma memória desistema 175, um conjunto de chips, uma ponte norte ou outro circuito inte-grado. A memória 175 pode ser dedicada ao processador 100 ou comparti-lhada com outros dispositivos em um sistema. Exemplos da memória 175incluem memória dinâmica de acesso randômico (DRAM), RAM estática (S-RAM), memória não volátil (NV memory ) e armazenamento a longo prazo.
Tipicamente, a unidade de interface de barramento 152 incluitampões de entrada/saída (l/O) para transmitir e receber sinais de barramen-to na interconexão 170. Exemplos de interconexão 170 incluem um barra-mento Gunning Transceiver Logic (GTL)1 um barramento GTL+, um barra-mento de taxa dupla de dados (DDR), um barramento bombeado, um bar-ramento diferencial, um barramento coerente com cache, um barramentoponto a ponto, um barramento "multidrop" ou outra interconexão, implemen-tando qualquer protocolo de barramento conhecido. A unidade de interfacede barramento 152, conforme mostrado, também é para se comunicar comcache de nível superior 110.
Cache de nível superior ou "further-out" 110 é a cache recente-mente recuperada e/ou operada em elementos. Note que nível superior ou"further-ou"t se refere a níveis de cache crescentes ou se afastando da(s)unidade(s) de execução. Em uma modalidade, a cache de nível superior 110é uma cache de dados de segundo nível. Contudo, a cache de nível superiornão está assim limitada, visto que ela pode ser ou incluir uma cache de ins-trução, que também pode ser referida como uma cache de traço. Uma cachede traço pode ser acoplada depois do decodificador 125, para armazenartraços recentemente decodificados. O módulo 120 também inclui, potencial-mente, um tampão alvo de bifurcação para predizer bifurcações a serem e-xecutadas/tomadas e um tampão de tradução de instrução (I-TLB) para ar-mazenar entradas de tradução de endereço para instruções. Aqui, um pro-cessador capaz de execução especulativa, potencialmente, de pré-buscas eque executa, especulativamente, bifurcações preditas.
O módulo de decodificação 125 é acoplado à unidade de busca120 para decodificação de elementos buscados. Em uma modalidade, o pro-cessador 100 está associado com uma Arquitetura de Conjunto de Instru-ções (ISA), que define/especifica instruções executáveis no processador100. Aqui, freqüentemente, instruções de codificação de máquina reconheci-das pela ISA incluem uma porção da instrução referida como um "opcode"código de operação, que referencia/especifica uma instrução ou operação aser realizada.
Em um exemplo, o bloco alocador e renomeador 130 inclui umalocador para reservar recursos, tais como arquivos de registro para arma-zenar resultados de processamento de instrução. Contudo, os encadeamen-tos 101a e 101b são potencialmente capazes de execução fora de ordem,onde o bloco alocador e renomeador 130 também reserva outros recursos,tais como reordenar tampões para rastrear resultados de instrução. A unida-de 130 também pode incluir um renomeador de registro para renomear re-gistros de referência de programa/instrução para outros registros internos aoprocessador 100. Conforme ilustrado, lógica de rastreamento 180 tambémestá associada com o módulo de alocação 130. Conforme discutido maistarde, a lógica de rastreamento 180, em uma modalidade, auxilia na deter-minação de limites de uma seção crítica de uma perspectiva de "extremida-de inicial".
A unidade de reordenação/retirada 135 inclui componentes, taiscomo os tampões de reordenação mencionados acima, tampões de carga etampões de armazenamento, para suportar execução fora de ordem e maistarde retirada em ordem de instruções executadas fora de ordem. Além dis-so, a lógica de rastreamento 180 também é distribuída na lógica de retirada135. Em uma modalidade, a lógica de rastreamento 180 determina limitespara as seções críticas para uma perspectiva de extremidade inicial. Emboraa lógica de rastreamento 180 seja mostrada distribuída através do processa-dor 100 e associada com lógica de alocação e de retirada, a lógica de ras-treamento 180 não está assim limitada. De fato, a lógica de rastreamento180 pode estar localizada em uma área, bem como associada com qualquerporção da extremidade frontal ou traseira de um canal de processamento dedados do processador. Além disso, porções da lógica de rastreamento 180podem ser incluídas na cache 150, na lógica de controle de cache ou na ca-che de nível superior 110.
O bloco de unidade(s) planejadora(s) e de execução 140, emuma modalidade, inclui uma unidade planejadora para esquematizar instru-ções; operações nas unidades de execução. De fato, as instru-ções/operações são potencialmente planejadas em unidades de execução,de acordo com sua disponibilidade de tipos. Por exemplo, uma instrução deponto de flutuação é planejada em uma porta de uma unidade de execuçãoque tem uma unidade de execução de ponto flutuante disponível. Arquivosde registro associados com as unidades de execução também estão incluí-dos para armazenar resultados de processamento de instrução de informa-ção. Unidades de execução exemplificativas incluem uma unidade de exe-cução de ponto de flutuação, uma unidade de execução de inteiro, uma uni-dade de execução de salto, uma unidade de execução de carga, uma unida-de de execução de armazenamento e outras unidades de execução conhecidas.
Observe do acima que, como ilustrado, o processador 100 é ca-paz de executar pelo menos quatro encadeamentos de software. Além disso,em uma modalidade, o processador 100 é capaz de execução transacional.A execução transacional, usualmente, inclui agrupamento de uma pluralida-de de instruções ou operações em uma transação, seção atômica de códigoou uma seção crítica de código. Em alguns casos, o uso de instrução de pa-lavra se refere a uma macroinstrução que é composta de uma pluralidade deoperações. Em um processador, uma transação, tipicamente, é executadaespeculativamente e comprometida no final da transação. Uma pendênciade uma transação, como aqui usado, se refere a uma transação que come-çou a execução e não foi comprometida ou abortada, isto é, pendente. Usu-almente, embora uma transação ainda esteja pendente, localizações carre-gadas de e escritas para dentro de uma memória são rastreadas.
Com a validação bem-sucedida daquelas localizações de memó-ria, a transação é comprometida e atualizações feitas durante a transaçãosão tornadas globalmente visíveis. Contudo, se a transação for invalidadadurante a sua pendência, a transação é reiniciada sem tornar as atualiza-ções globalmente visíveis. Com freqüência, a demarcação de software estáincluída no código para identificar uma transação. Por exemplo, as transa-ções podem ser agrupadas através de instruções indicando um começo deuma transação e um final de uma transação. Contudo, a execução transa-cional, freqüentemente, utiliza planejadores ou compiladores para inserir ins-truções de começo e fim para uma transação.
Portanto, em uma modalidade, um processador 100 é capaz deomissão de bloqueio de hardware (HLE), onde hardware é capaz de omitirbloqueios para seções críticas e executá-las simultaneamente. Aqui, bináriospré-compilados sem suporte transacional ou binários quase compilados, uti-lizando programação de bloqueio, são capazes de se beneficiar de execuçãosimultânea através de suporte de HLE. Como um resultado do fornecimentode compatibilidade transparente, HLE, com freqüência, inclui hardware paradetectar seções críticas e rastrear acessos à memória. De fato, uma vez quebloqueios assegurando exclusão de dados são omitidos, os acessos à me-mória podem ser rastreados de maneira similar àquela durante a execuçãode transações. Em conseqüência, o esquema híbrido de rastreamento deacesso de pré-retirada e pós-retirada aqui discutido pode ser utilizado duran-te a execução transacional, HLE, outro esquema de rastreamento de acessoà memória ou uma combinação desses. Portanto, a discussão de seçõescríticas abaixo, potencialmente, inclui referência a uma seção crítica de umatransação ou uma seção crítica detectada por HLE.
Em uma modalidade, um dispositivo de memória sendo acessa-do é utilizado para rastrear acessos de uma seção crítica. Por exemplo, ca-che de dados de nível inferior 150 é utilizada para rastrear acessos de se-ções críticas, em associação com execução transacional ou HLE. A cache150 é para armazenar elementos recentemente acessados, tais como ope-randos de dados, que são potencialmente mantidos em estados de coerên-cia de memória, tais como estados modificados, exclusivos, compartilhadose inválidos (MESI). A cache 150 pode ser organizada como uma organiza-ção de cache completamente associativa, uma associativa estabelecida,uma mapeada direta ou outra conhecida. Embora não ilustrado, D-TLB podeestar associado com a cache 150 para armazenar traduções recentes deendereços virtuais/lineares para físicos.
Conforme ilustrados, as linhas 151, 152 e 153 incluem porções ecampos, tais como porção 151a e campo 151b. Em uma modalidade, oscampos 151b, 152b e 153b e as porções 151a, 152a e 153a são parte de ummesmo arranjo de memória, compondo as linhas 151, 152 e 153. Em outramodalidade, os campos 151b, 152b e 153b são parte de um arranjo separa-do a ser acessado através de portas dedicadas separadas das linhas 151a,152a e 153a. Contudo, mesmo quando os campos 151b, 152b e 153b sãoparte de um arranjo separado, os campos 151b, 152b e 153b estão associa-dos com porções 151a, 152a e 153, respectivamente. Como um resultado,quando fazendo referência à linha 151 da cache 150, a linha 151, potencial-mente, inclui a porção 151a, 151b ou sua combinação. Por exemplo, quandodo carregamento da linha 151, a porção 151a pode ser carregada da mes-ma. Adicionalmente, quando da configuração de um campo de rastreamentopara rastrear uma carga da linha 151, o campo 151b é acessado.
Em uma modalidade, linhas, localizações, blocos ou palavras,tais como as linhas 151a, 152a e 153a são capazes de armazenar múltiploselementos. Um elemento se refere a qualquer instrução, operando, operandode dados, variável ou outro agrupamento de valores lógicos, que é comu-mente armazenado na memória. Como um exemplo, a linha de cache 151armazena quatro elementos na porção 151a, tais como quatro operandos.
Os elementos armazenados na linha de cache 151a podem estar em umestado empacotado ou comprimido, bem como em um estado não compri-mido. Além disso, os elementos podem ser armazenados na cache 150 ali-nhados ou desalinhados com limites de linhas, ajustes ou maneiras de cache150. A memória 150 será discutida em mais detalhes em referência às mo-dalidades exemplificativas abaixo.
A cache 150, bem como outras características e dispositivos noprocessador 100, armazenam e/ou operam em valores lógicos. Freqüente-mente, o uso de níveis lógicos, valores lógicos ou valores lógicos também éreferido como 1's e 0's, que simplesmente representam estados binários ló-gicos. Por exemplo, um 1 se refere a um nível lógico alto e 0 se refere a umnível lógico baixo. Outras representações de valores em sistemas de compu-tador têm sido usadas, tais como representação decimal e hexadecimal devalores lógicos ou valores binários. Por exemplo, tomar o número decimal10, que é representado em valores binários como 1010 e em hexadecimalcomo a letra A.
Na modalidade ilustrada na figura 1, acessos às linhas 151, 152e 153 são rastreados para suportar a execução de seções críticas. Acessosincluem operações, tais como leituras, escritas, armazenamentos, cargas,evicções, "snoops" ou outros acessos conhecidos às localizações da memó-ria. Campos de rastreamento de acessos, tais como os campos 151b, 152be 153b são utilizados para rastrear acessos às suas linhas de memória cor-respondentes. Por exemplo, linha/porção de memória 151 a está associadacom campo de rastreamento 151b correspondente. Aqui, o campo de rastre-amento de acesso 151b está associado com e corresponde à linha de cache151a, visto que o campo de rastreamento 151b inclui bits que são parte dalinha de cache 151. A associação pode ser através de colocação física, con-forme ilustrado, ou outra associação, tal como se referindo ou mapeandocampo de rastreamento de acesso 151b para a linha de memória 151a ou151b em uma tabela de conferência de hardware ou software.
Como um exemplo ilustrativo simplificado, suponhamos que oscampos de rastreamento de acessos 151b, 152b e 153b incluem dois bits detransação: um primeiro bit de rastreamento de leitura e um segundo bit derastreamento de escrita. Em um estado padrão, isto é, um primeiro valor ló-gico, o primeiro e o segundo bits em campo de rastreamento de acesso151b, 152b e 153b representam que as linhas de cache 151, 152 e 153, res-pectivamente, não foram acessadas durante a execução de uma seção crítica.
Suponhamos que uma operação de carga para carregar da linha151a é enfrentada em uma seção crítica. Utilizando um esquema híbrido derastreamento de pré-retirada e de pós-retirada, o primeiro bit de rastreamen-to de leitura é atualizado do estado padrão para um segundo estado aces-sado, tal como um segundo valor lógico. Como discutido abaixo, em um es-quema híbrido, a iniciação da atualização para o primeiro bit de rastreamen-to de leitura pode ser antes da retirada da operação de carga, isto é, pré-retirada, ou após a retirada da operação, isto é, na retirada ou após a retira-da. Aqui, o primeiro bit de rastreamento de leitura sustentando o segundovalor lógico representa que uma leitura/carga da linha 151 da cache ocorreudurante a execução da seção crítica. Uma operação de armazenação podeser trabalhada em uma maneira similar para atualizar o primeiro bit de ras-treamento de leitura para indicar um armazenamento para uma localizaçãode memória ocorrida durante execução da seção crítica.
Em conseqüência, se os bits de rastreamento no campo 151bassociado com a linha 151 são verificados e os bits de transação represen-tam o estado padrão, então, a linha de cache 151 não foi acessada duranteuma pendência de uma seção crítica. Inversamente, se o primeiro bit de ras-treamento de leitura representa o segundo valor, então, a linha 151 da cachefoi lida previamente, durante a execução de uma seção crítica. Além disso,se o primeiro bit de rastreamento de escrita representa o segundo valor, en-tão, uma escrita na linha 151 ocorreu durante a pendência da seção crítica.
Campos de acesso 151b, 152b e 153b são usados, potencial-mente, para suportar qualquer tipo de execução transacional ou HLE. Emuma modalidade, onde o processador 100 é capaz de execução transacionalde hardware, campos de acesso 151b, 152b e 153b são configurados poracessos de pré-retirada e pós retirada, conforme discutido abaixo, para de-tectar conflitos e realizar validação. Em outra modalidade, onde memóriatransacional de hardware (HTM), memória transacional de software (STM)ou um híbrido das mesmas é utilizado para execução transacional, camposde rastreamento de acesso 151b, 152b e 153b proporcionam uma função derastreamento híbrido de pré-retirada e pós-retirada.
Como um primeiro exemplo de como campos de acesso, e es-pecificamente bits de rastreamento, são usados, potencialmente, para auxili-ar a execução transacional, um pedido co-pendente, intitulado, "HardwareAcceleration for A Software Transactional Memory System," com o númerode série 11/349.787, divulga o uso de campos de acesso/bits de transaçãopara acelerar um STM. Como outro exemplo, extensão/virtualização de me-mória transacional, incluindo estados de armazenamento de campos de a-cesso/bits de rastreamento de transação em uma segunda memória são dis-cutidas no pedido co-pendente intitulado "Global Overflow Method for Virtua-Iized Transactional Memory," com o número de série 11/479.902 e númerode pasta do procurador 042390.P23547.
Em uma modalidade, a lógica de rastreamento 180 é para iniciarum acesso de pré-retirada para atualizar campos de rastreamento associa-dos com carga em seções críticas. Por exemplo, suponhamos uma operaçãode carga em uma linha de referência 151 de seção crítica. Por padrão, seuma operação de carga dentro de uma seção crítica for detectada, então,um acesso/atualização de pré-retirada para o campo de rastreamento 151devem ser realizados. Contudo, quando uma seção crítica é comprometida,executada com sucesso ou abortada, campos de acesso são reconfiguradospara seu estado padrão, a fim de preparar para o rastreamento de seçõescríticas subseqüentes ou uma re-execução de uma seção crítica abortada.Contudo, em processadores capazes de execução fora de ordem (000),operações de seções críticas subseqüentes podem ter já ajustado informa-ção de rastreamento na cache 150. Portanto, com o reajuste dos campos derastreamento, informação de rastreamento de seção crítica subseqüentepode ser perdida. Como um resultado, se a seção crítica, incluindo a opera-ção de carga for uma seção crítica consecutiva, isto é, uma seção críticasubseqüente, iniciada antes do final de uma seção crítica corrente, então,uma pós-retirada do acesso à operação de carga deve ser realizada paraatualizar o campo 151b a fim de assegura informação de rastreamento pre-cisa.
Voltando à figura 2, uma modalidade de lógica de rastreamentopara iniciar atualizações de campo de acesso de pós-retirada para seçõescríticas é ilustrada. Como mencionado acima, uma transação é, freqüente-mente, demarcada por instruções de transação inicial e transação final, oque permite fácil identificação de seções críticas. Contudo, HLE inclui detec-ção/identificação de seções críticas, omissão de blocos demarcando as se-ções críticas, indicação de verificação de estados de registro para voltar a-trás mediante aborto de seção crítica, rastreamento de atualizações da me-mória por tentativa e detecção de potenciais conflitos de dados. Uma dificul-dade na detecção/identificação de seções críticas é delinear entre instruçõesde bloqueio regulares e instruções de bloqueio/liberação de bloqueio quedemarcam uma seção crítica.
Em uma modalidade, para HLE1 uma seção crítica é definida poruma instrução de bloqueio, isto é, uma instrução de seção crítica inicial euma instrução de liberação de bloqueio correspondente, isto é, e instruçãode seção crítica final. Uma instrução de bloqueio pode incluir uma carga deuma localização de endereço, isto é, verificação se o bloqueio está disponí-vel e uma modificação/escrita na localização de endereço, isto é, uma atuali-zação na localização de endereço para ajustar o bloqueio. Uns poucos e-xemplos de instruções que podem ser usadas como instruções de bloqueioincluem uma instrução de comparação e troca, uma instrução de teste e a-juste de bit e uma instrução de troca e adição. No conjunto de instruções IA-32 e IA-64 da Intel, as instruções antes mencionadas incluem CMPXCHG,BTS, e XADD, conforme descrito nos documentos do conjunto de instruções64 e IA-32 da Intel , discutidos acima.
Como um exemplo, onde instruções predeterminadas, tais comoCMPXCHG, BTS, e XADD são detectadas/reconhecidas, a lógica de detec-ção e/ou lógica de decodificação detecta as instruções utilizando um campode opcode ou outro campo da instrução. Como um exemplo, CMPXCHG éassociado com os seguintes opcodes: OF BO/r, REX + OF BO/r, e REX.W +OF B1/r. Em outra modalidade, operações associadas com uma instruçãosão utilizadas para detectar uma instrução de bloqueio. Por exemplo, em x86as três microoperações de memória seguintes são usadas, freqüentemente,para realizar uma atualização de memória atômica indicando uma instruçãode bloqueio potencial: (1) Load_Store_lntent (L_S_I) com opcode 0x63; (2)STA com opcode 0x76; e (3) STD com opcode 0x7F. Aqui, L_S_I obtém lo-calização de memória em estado de propriedade exclusiva e faz uma leiturada localização de memória, enquanto as operações de STA e STD modifi-cam e escrevem na localização de memória. Em outras palavras, a lógica dedetecção está buscando por uma carga com intento de armazenar (L_S_I)para definir o começo de uma seção crítica. Note que as instruções podemter qualquer número de outra não-memória, bem como outra memória, ope-rações associadas com as operações de memória de ler, escrever, modificar.
Embora não ilustrado na figura 2, freqüentemente, uma pilha, talcomo uma pilha de bloqueio, é utilizada para manter uma entrada associadacom uma instrução de bloqueio, quando detectada. A entrada da instruçãode bloqueio (LIE) pode incluir qualquer número de campos para armazenarinformação relacionada com seção crítica, tal como um endereço físico dearmazenamento de instrução de bloqueio (LI Str PA), um valor de carga etamanho de carga de instrução de bloqueio, um valor e um tamanho de ar-mazenamento de instrução de bloqueio, uma contagem de microoperação,um "flag" de liberação, um "flag" de aquisição de bloqueio tardio e um campode indicador de instrução final.
Aqui, uma instrução de liberação de bloqueio, correspondendo àinstrução de bloqueio demarca o final de uma seção crítica. A lógica de de-tecção busca uma instrução de liberação de bloqueio que corresponde aoendereço modificado pela instrução de bloqueio. Note que o endereço modi-ficado pela instrução de bloqueio pode ser mantido em uma Entrada de Ins-trução de Bloqueio (LIE - Lock Instruction Entry). Como um resultado, emuma modalidade, uma instrução de liberação de bloqueio inclui qualquer o-peração de armazenamento que ajusta o endereço modificado pela instru-ção de bloqueio correspondente de volta para um valor desbloqueado. Umendereço referenciado por uma instrução de L_S_I que é armazenada napilha de bloqueio é comparado com instruções de armazenamento subse-qüentes para detectar uma instrução de liberação de bloqueio corresponden-te. Mais informação sobre detecção e predição de seções críticas pode serencontrada em um pedido co-pendente intitulado "A CRITICAL SECTIONDETECTION AND PREDICTION MECHANISM FOR HARDWARE LOCKELISION," com pedido número de série 11/599.009.
Em outras palavras, com HLE uma seção crítica é demarcadapor uma instrução de L_S_I e uma instrução de liberação de bloqueio cor-respondente. Similarmente, uma seção crítica de uma transação é definidapor uma instrução de transação inicial e uma instrução de transação final.
Portanto, referência a uma operação/instrução de seção crítica inicial incluiqualquer instrução iniciando um HLE, memória transacional ou outra seçãocrítica, enquanto referência a uma operação/instrução de seção crítica finalinclui o começo de HLE, memória transacional ou outras instruções de tér-mino de seção crítica.
"Fend" 205 é para manter uma contagem de extremidade inicialpara indicar quando a execução está dentro de uma seção crítica. Em umamodalidade, "fend" 205 inclui um contador de extremidade inicial. Como umexemplo, o contador de extremidade inicial é inicializado para um valor pa-drão de zero. Em resposta à detecção de uma instrução de seção crítica ini-cial, o contador de extremidade inicial é incrementado e, em resposta à de-tecção de uma instrução de seção crítica final, o contador de extremidadeinicial é decrementado. Como uma ilustração, suponhamos que uma instru-ção de L_S_I é detectada. Com a alocação da instrução, tal como mediantea alocação da carga, "fend" 205 é incrementado para um. Como um resulta-do, instruções subseqüentes, quando alocadas, são supostas estarem den-tro de uma seção crítica, uma vez que "fend" 205 inclui um valor não-zero de um.
Em uma modalidade, "fend" 205 também proporciona profundi-dade de embutimento de seções críticas. Aqui, se múltiplas operações deseção crítica inicial forem alocadas, então, fendo 205 é incrementado, con-seqüentemente, para representar a profundidade de embutimento de seçõescríticas. Por exemplo, suponhamos que há uma primeira seção crítica embu-tida dentro de uma segunda seção crítica, que está embutida dentro de umaterceira seção crítica. Em conseqüência, "fend" 205 é incrementado para ummediante alocação de L_S_I da terceira seção crítica, incrementado paradois mediante alocação de L_S_I da segunda seção crítica e incrementadopara três mediante alocação de L_S_I da primeira seção crítica. Além disso,em resposta à retirada de uma instrução de liberação de bloqueio, isto é,uma operação de armazenamento correspondente, "fend" 205 é decremen-tado.
Portanto, em resposta à retirada da operação de armazenamen-to da primeira seção crítica para realizar uma liberação de bloqueio, "fend"205 é decrementado para dois e assim por diante até a liberação de blo-queio da terceira seção crítica, decrementando "fend" 205 para zero. Aqui,instruções/operações subseqüentes são supostas não estarem dentro deuma seção crítica, enquanto "fend" 205 mantém um valor zero. Note que, emuma modalidade, um valor de "fend" 205 deve ser indicado por verificaçãoantes de uma bifurcação, enquanto "fend" 205 pode precisar ser recuperadodevido a um curso de predição errada, isto é, uma predição errada de bifurcação.
Em uma modalidade, um tampão de acesso, tal como um tam-pão de carga ou um tampão de armazenamento, é para manter entradas deacesso associadas com operações de acesso à memória. Cada entrada detampão de acesso inclui uma porção de campo de rastreamento e/ou campode atualização de memória. Por padrão, o campo de atualização de memóriaé para manter um primeiro valor, tal como um zero lógico, para indicar quenenhum rastreamento de acesso de pré-retirada deve ser realizado. Contu-do, quando "fend" 205 está indicando não-zero, uma operação está dentrode uma seção crítica, o campo de atualização de memória é atualizada paraum segundo valor, tal como uma lógica um, para indicar que um acesso depré-retirada para atualizar um campo de rastreamento de acesso deve serrealizado.
Embora o tampão de carga 220 esteja ilustrado na figura 2,qualquer tampão de acesso, tal como um tampão de armazenamento podeoperar de maneira similar. Portanto, o tampão de carga 220 será discutidoem detalhes abaixo para ilustrar operação exemplificativa de um tampão deacesso; O tampão de carga 220 inclui uma pluralidade de entradas de tam-pão de carga, tais como as entradas 226 - 233. Quando uma operação decarga é encontrada, uma entrada de tampão de carga é criada/armazenadaem tampão de carga 220. Em uma modalidade, o tampão de carga 220 ar-mazena entradas de tampão de carga em ordem de programas, isto é, umaordem em que as instruções ou operações são ordenadas no código de pro-grama. Aqui, entrada de tampão de carga mais nova 226, isto é, a entradade tampão de carga armazenada mais recentemente, é referenciada por in-dicador de final de carga 235. Em contraste, a entrada de tampão de cargamais antiga 230, que não é uma carga sênior, é referenciada por indicadorde início de carga 236.
Em um elemento de processamento de execução em ordem,operações de carga são executadas na ordem de programa armazenada notampão de carga. Como um resultado, as entradas de tampão mais antigassão executadas primeiro e indicador de início de carga 236 é redirecionadopara a entrada mais velha seguinte, tal como a entrada 229. Em contraste,em uma máquina fora de ordem, operações são executadas em qualquerordem, conforme programado. Contudo, entradas são, tipicamente, removi-das, isto é, desalocadas do tampão de carga, em ordem de programa. Comoum resultado, o indicador de inicio de carga 236 e indicador final de carga235 operam de maneira similar entre os dois tipos de execução.Em uma modalidade, cada entrada de tampão de carga, tal co-mo a entrada 230, inclui campo de atualização de memória 225, que tam-bém pode ser referido como um campo de rastreamento, um campo de bitsde cache ajustado e um campo de bits de transação de atualização. A entra-da de tampão de carga 230 pode incluir qualquer tipo de informação, tal co-mo o valor de atualização de memória, um valor de indicador, uma referên-cia a uma operação de carga associada, uma referência a um endereço as-sociado com a operação de carga, um valor carregado de um endereço eoutros valores de tampão de carga associados, flags ou referências.
Como um exemplo, suponhamos que uma operação de cargaassociada com entrada de carga 230 faz referência um endereço de memó-ria de sistema. Se originalmente possuído e localizado na linha 271a de ca-che ou buscado em resposta a uma falta na cache 270, suponhamos que oelemento referenciado pelo endereço de memória do sistema reside, corren-temente, na linha 271a de cache. Como um resultado, quando a linha 271ade cache está carregada durante execução de uma seção crítica, o bit derastreamento de leitura 271 r deve ser atualizado para indicar que a linha decache associada 271a foi acessada durante uma pendência da seção crítica.
Quando a operação de carga é alocada, o campo de atualizaçãode memória 225 é atualizado com base em um valor de "fend" 205. Em res-posta à "fend" 205, a manutenção de um valor zero para indicar que a ope-ração de carga não está dentro de uma seção crítica, o campo de atualiza-ção 225 é atualizado para um zero lógico, a fim de indicar que nenhum a-cesso de pré-retirada ao bit de rastreamento 271 deve ser feito. Note que aatualização de um bit, de um valor ou de um campo não indica, necessaria-mente, uma mudança no bit, no valor ou no campo. Por exemplo, se o cam-po 225 já estiver atualizado para um zero lógico, então, a atualização paraum zero lógico inclui, potencialmente, a reescrita de um zero lógico no cam-po 225, bem como nenhuma ação para deixar o campo 225 mantendo umzero lógico.
Em contraste ao cenário discutido acima, se "fend" 205 mantémum valor não-zero mediante alocação da operação de carga, então, o campo225 é ajustado para um valor de pré-retirada, tal como uma lógica um, paraindicar que um acesso de pré-retirada ao bit de rastreamento 271 r deve serrealizado. Em uma modalidade, a lógica de atualização 210 é atualizar ocampo 225 mediante alocação da operação de carga associada com a en-trada 230. Como um exemplo, a lógica de atualização 210 inclui um registroou outra lógica para ler/manter um valor corrente de "fend" 205 e lógica paraatualizar o campo 225 na entrada 230. Aqui, um acesso de pré-retirada incluiqualquer acesso para atualizar o bit de rastreamento de leitura 271 r antes daretirada da operação de carga associada com a entrada 230. Em uma moda-lidade, quando o campo 225 mantém o valor de pré-retirada; uma atualiza-ção para o bit 271 r é iniciada em resposta a uma expedição da operação decarga associada com a entrada 230. Em outras palavras, quando uma cargaassociada com a entrada 230 é expedida, um acesso ao bit de atualização271 r é programado, se o campo 225 mantém um valor de pré-retirada. Emcontraste, se o campo 225 mantém um valor de não pré-retirada, tal comoum zero lógico, então, nenhum acesso é programado com a expedição.
Contudo, em um processador de execução fora de ordem, ins-truções/operações podem ser executadas fora de ordem. Em uma instância,uma carga de seção não-crítica subseqüente pode ser alocada, antes queuma instrução de fim da seção crítica corrente seja retirada para decremen-tar "fend" 205. Como um resultado, a entrada de tampão de carga associadacom a carga de seção não-crítica inclui um valor de pré-retirada, que leva arastreamento de acesso espúrio, isto é, rastreamento da carga na cache a-inda que não esteja dentro de uma seção crítica. Contudo, rastreamento deacesso espúrio não leva a dados incorretos e pode resultar raramente emabortos espúrios devido à detecção de contenção de dados incorreta.
Alternativamente, suponhamos que uma carga de uma seçãocrítica subseqüente seja alocada antes da retirada da instrução de términoda seção crítica corrente. A entrada de tampão de carga associada com acarga manterá um valor de pré-retirada. Contudo, se a instrução de términofor agora retirada antes que a carga seja expedida, os campos de rastrea-mento de atualização no tampão de carga, incluindo a entrada de tampão decarga associada mantendo o valor de pré-retirada são reconfigurados. Emconseqüência, com a expedição da carga nenhum acesso de pré-retirada éprogramado. Aqui, outro elemento de processamento pode atualizar a locali-zação carregada e nenhum conflito de dados é detectado, porque os cam-pos de rastreamento de acesso não rastrearam um acesso.
Portanto, com a retirada de uma operação de carga, se campode atualização de memória 225 da entrada de tampão de carga 230, queestá associada com a operação de carga, inclui um valor de reajuste, tal co-mo um zero lógico, então, lógica de estágio final (Bend) 215 é verificada.Bend 215 opera de maneira similar à "fend" 205, exceto que Bend 215 é in-crementada quando uma instrução de seção crítica inicial é retirada, em lu-gar de alocada como para "fend" 205. Adicionalmente, Bend 215 é decre-mentada em resposta à retirada de uma operação de seção crítica final. SeBend mantém um valor não-zero, indicando uma execução dentro de umaseção crítica e o campo 225 mantém um valor de reajuste, como discutidoacima, então um acesso de pós-retirada à cache 270 para atualizar o bit derastreamento de leitura 271 r é programado.
A figura A inclui uma modalidade ilustrativa simplificada de se-ções críticas consecutivas. Note que operações/acesso, alocações e expedi-ções de instruções/operação têm sido omitidas para simplificar o exemplo eque essa operação pode ocorrer em qualquer ordem. No tempo 1 (t1), umainstrução/operação de seção crítica inicial 1 é alocada. Em resposta, "fend"205 é incrementada para um. A seguir, em t2, a operação de seção críticainicial é retirada, o que aumenta Bend 215 para um. Em t3, uma operação deseção crítica inicial dois é alocada, resultando em "fend" 205 para ser incre-mentada para dois. A seguir, uma carga de seção crítica dois é alocada notempo t4, que é para carga da linha 271a da cache 270. Uma vez que 205mantém um valor dedois, isto é, um valor não-zero, a lógica de atualização210 ajusta o campo de rastreamento de acesso 225 na entrada de tampãode carga 230 para um valor de pré-retirada de uma lógica um. Note que aentrada de tampão de carga 230 está associada com a carga da seção críti-ca dois.Em t5, embora alocação não fosse ilustrada, uma operação deseção crítica final um é retirada, o que resulta em "fend" 205 sendo decre-mentada para um e Bend 215 sendo decrementada para zero. Em respostaà Bend 215 sendo decrementada para zero, campo de rastreamento de a-cesso 225 é reajustado para zero. A carga da seção crítica dois é expedidaem t6; contudo, o campo de rastreamento de atualização/acesso mantémum zero, assim, nenhum acesso de pré-retirada à cache 270 é programado.Como um resultado, o bit 271 r permanece em um estado padrão, indicandonenhum acesso durante a seção crítica dois. Em t7, a operação da seçãocrítica inicial dois é retirada, o que incrementa Bend 215 para um.
Além disso, em t8, a carga da seção crítica dois é retirada. Aqui,o campo de atualização 225 mantém um valor de zero e Bend 215 mantémum valor não-zero, isto é, um. Como um resultado daquelas condições to-madas pela lógica de atualização 260, um acesso de pré-retirada à cache270 é programado. O bit 271 r é atualizado para indicar que um acesso à li-nha 271a ocorreu durante execução de seção crítica dois. Como pode servisto, o potencial de cargas de não rastreamento de seções críticas consecu-tivas pode ser evitado pela implementação de um sistema híbrido de pré-retirada e pós-retirada. Portanto, em uma modalidade, atualizações de pré-retirada são realizadas para acessos à memória de seção crítica, exceto pa-ra uma seção crítica consecutiva subseqüente, onde atualizações de pré-retirada são realizadas. No exemplo acima, seções críticas consecutivas sãodeterminadas do campo de atualização de memória 225 mantendo um valorzero e Bend 215 mantendo um valor não-zero. Em outras palavras, seçõescríticas consecutivas, em uma modalidade, estão onde um final de uma pri-meira operação de seção crítica não é retirado antes de um início de umasegunda operação de seção crítica ser alocado. Aqui, pode haver umaspoucas ou muitas operações não-transacionais alocadas e/ou executadasentre seções críticas. Contudo, qualquer método para detectar/determinarseções críticas consecutivas pode ser utilizado.
Figura A: Linha de tempo de Seção Crítica Consecutiva Exempli-ficativa<figure>figure see original document page 24</figure>
Acessos de pós-retirada para atualizar campos de rastreamentode acesso podem ser realizados de qualquer maneira. Em uma modalidade,tampões de acesso são capazes de maneira acessos seniores para permitiracessos de pós-retirada. Conforme ilustrado na figura 2, tampão de carga220 inclui porção de carga sênior 250 para manter entradas de tampão decarga sênior 231 - 233. Quando uma carga é retirada, tal como uma cargaassociada com a entrada de tampão de carga 230, indicador de início decarga 236 é dirigido para a entrada mais antiga seguinte 229 e a entrada 230se torna parte da porção de carga sênior 250. Se uma entrada de tampão decarga sênior não for designada para uma atualização de pós-retirada, isto é,um acesso de pré-retirada foi realizado como designado pelo campo 225mantendo um valor de pré-retirada ou o acesso não estava dentro de umaseção crítica, então, ela pode ser imediatamente desalocada do tampão decarga 220. Contudo, quando a entrada 230 é apontada pelo indicador deinício de carga 237, então, um acesso de pós-retirada é programado por umprogramados para atualizar o campo de rastreamento de leitura 271 r. Umpedido co-pendente intitulado "A POST-RETIRE SCHEME FOR TRACKINGTENTATIVE ACCESSES DURING TRANSACTIONAL EXECUTION," comnúmero de série de pedido 11/517.029 discute em mais detalhes entradasde tampão de acesso sênior e acesso de pós-retirada para rastreamento deacessos à memória por tentativa.
Fazendo referência a seguir à figura 3, uma modalidade de umfluxograma para um método de realização de atualizações híbridas de pré- epós-retirada para rastreamento de acessos por tentativa é ilustrada. Em 305no fluxo, é determinado se uma operação for parte de uma seção críticaconsecutiva. Em uma modalidade, a seção crítica é uma seção crítica dememória transacional. Em outra modalidade, a seção crítica é uma seçãocrítica detectada de HLE. Como mencionado acima, uma seção crítica con-secutiva, em uma modalidade, inclui uma operação de seção crítica de iníciode seção crítica alocada antes que outra seção crítica final de seção críticapendente seja retirada. Como um exemplo, a alocação e a retirada são de-terminadas de contadores, tais como um contador de estágio inicial e umcontador de estágio final, conforme descrito acima. Em conseqüência, se-ções críticas consecutivas podem seguir, imediatamente, uma à outra emcódigo, ou em contraste, pode haver operações não transacionais entre se-ções críticas consecutivas.
Se a operação for parte de uma seção crítica não-consecutiva,então, em 310 no fluxo, um acesso de pré-retirada à memória para atualizarinformação de rastreamento é realizado. Em uma modalidade, informaçãode rastreamento inclui bits/campos de leitura e escrita para indicar se leiturase escritas, respectivamente, ocorreram durante uma pendência da sêçãocrítica. Como um exemplo, com a expedição da operação, um acesso àmemória é planejado para atualizar bits/campos de leitura e escrita.
Em contraste, se a operação for parte de uma seção crítica con-secutiva, então, em 320 no fluxo, um acesso de pós-retirada à memória paraatualizar a informação de rastreamento é realizado. Em outras palavras, seuma operação de seção crítica final de seção crítica prévia não tiver sidoretirada e uma operação de transação de início de seção crítica consecutivacorrente tiver sido alocada, então, quando a seção crítica final prévia é reti-rada, os dados de rastreamento de pré-retirada para a seção crítica conse-cutiva corrente podem ser reajustados ou de outro modo afetados. Portanto,neste exemplo, acessos à memória da seção crítica consecutiva são rastre-ados pós-retirada. Em uma modalidade, com a retirada da operação, umaentrada de tampão de acesso , associada com a operação, é feita uma en-trada de tampão de acesso sênior. Em resposta à operação se tornar umacesso sênior, uma atualização para a informação de rastreamento é plane-jada em pós -retirada da operação.
As figuras 4a - 4c ilustram modalidades de fluxogramas para ummétodo de realização de rastreamento híbrido de acesso de pré- e pós-retirada. Fazendo referência à figura 4a, em 405 no fluxo, um início de umaoperação de seção crítica é detectado. Em uma modalidade, a operação deseção crítica inicial é uma operação de Carga com Intenção de Armazena-mento (L_S_I). Um exemplo de detecção e predição de seções críticas édiscutido no pedido co-pendente número de série 11/599.009, conforme dis-cutido acima.
Em outra modalidade, a operação de seção crítica inicial incluiuma operação de transação de início. Com freqüência, um compilador insereoperações de transação de início. Por exemplo, uma chamada de função detransação de início pode ser colocada antes que uma seção crítica desem-penhe funções específicas de transação, tais como indicação de verificação,validação e "logging". Em seguida, em 410 do fluxo, a operação de seçãocrítica de início é alocada. Note que mais de uma operação de seção críticade início podem ser incluídas e alocadas. Continuando o exemplo acima, aoperação de L_S_I é alocada.
Em 415 do fluxo, a contagem de "fend" é incrementada em res-posta à alocação de operação de seção crítica de início. Note que o fluxo-grama se bifurca para o fluxo A de decisão do fluxo 415. Isso é para ilustrar,em figuras posteriores, que a variável da contagem de "fend" é utilizada co-mo entrada em outras decisões no fluxo. Embora o fluxo 415 influencie ovalor de contagem de "fend" através do incremento de outros fluxos, taiscomo fluxo 440 da figura 4b, também influenciam o valor da contagem de"fend".
Em um ponto mais tarde, após a expedição, a operação de se-ção crítica de início é retirada no fluxo 420. Por exemplo, se a operação deseção crítica de início é um L_S_I, a entrada de carga é retirada e, potenci-almente, desalocada, mais tarde de um tampão de carga. Em 424 do fluxo,uma contagem de Bend é incrementada em resposta à retirada da operaçãode seção crítica de início. Similar ao fluxo A de decisão, o fluxo B de decisãotoma incrementos de Bend como uma entrada.
Fazendo referência em seguida à figura 4b, em 430 do fluxo,uma operação de seção crítica final é detectada em 430 do fluxo e retiradaem 435 do fluxo. Em uma modalidade, a operação de seção crítica final éuma instrução/operação de transação final. Similar a uma instrução de tran-sação de início, um compilador pode inserir operações para desempenhavárias tarefas, tais como validação, recuperação e restabelecimento.
Em 440 e 445 nos fluxos "fend" e Bend são decrementados emresposta à retirada da operação de seção crítica final. Aqui, com uma seçãocrítica de HLE, comparação de endereço pode ser requerida, conforme refe-rido acima, para determinar uma final de HLE de operação de seção críticade início. Freqüentemente, um endereço não está disponível com a alocaçãoda operação, ainda que, em uma modalidade, "fend" pode ser decrementadocom a alocação de uma operação de seção crítica final; aqui, "fend" tambémé decrementado na retirada de uma operação de seção crítica final. Comomencionado acima, os decrementos de "fend" e Bend são tomados comoentradas nos fluxos de decisão AeB, respectivamente. Embora não ilustra-do, um campo de acesso de atualização, que é discutido em mais detalhesem referência à figura 4c, pode ser reajustado, limpo ou atualizado em res-posta à Bend ser decrementado para zero.
Voltando à figura 4c, uma operação de carga é alocada em 450do fluxo. Em 455 do fluxo, é determinado se "fend" é não-zero. Os fluxos dedecisão A das figuras 4a e 4b são introduzidos em 455 do fluxo. Se "fend"mantém um valor zero, então, a execução normal de seção não-crítica conti-nua em 460 do fluxo. Caso contrário, se "fend" é incrementado por opera-ções de seções críticas de início e não decrementado para zero por opera-ções de seções críticas finais, então, é suposto que a operação de cargaestá dentro de uma seção crítica de execução. Aqui, um campo de acesso,campo de rastreamento de atualização ou outro campo em uma entrada detampão de carga associada com a operação de carga é atualizada para indi-car que um acesso de pré-retirada a um campo de rastreamento de cargadeve ser realizado em 465 do fluxo.
Em 470 de fluxo, a carga é expedida. Se o campo de acesso forajustado para um valor de acesso de pré-retirada em 465 do fluxo, conformedeterminado no fluxo de decisão 475, então, um acesso de pré-retirada aocampo de rastreamento de carga é iniciado em 480 do fluxo. Em uma moda-lidade, um planejador planeja um acesso com base no campo de acessosustentando um valor de pré-retirada mediante expedição de uma operaçãode carga associada. Após o acesso de pré-retirada ser iniciado ou após 475do fluxo de decisão diretamente, a operação de carga é para retirada em485 do fluxo.
Em resposta à retirada da operação de carga, é determinado seBend é não-zero e o campo de acesso indica nenhum acesso de pré-retiradaem 490 do fluxo. Note que o fluxo de decisão B é uma entrada em 490 dofluxo. Se Bend é não-zero e o campo de acesso indica nenhum acesso depré-retirada, então, em 495 do fluxo uma pós-retirada atualizada para ocampo de rastreamento de carga é iniciada. Caso contrário, a execução con-tinua como normal.
Conforme ilustrado acima, rastreamento de acesso de pré-retirada pode ser realizado para uma maioria de seções críticas. Contudo,para assegurar rastreamento de acesso válido, atualizações de pós-retiradapodem ser realizadas para seções críticas consecutivas. Portanto, atravésda realização de uma maioria de atualizações de pré-retirada, energia podeser poupada por não ter que acessar uma cache duas vezes, isto é, uma vezpara um acesso e uma vez para uma atualização de informação de rastrea-mento. Porém, a precisão do rastreamento de dados é mantida através douso de algumas atualizações de pós-retirada para a informação de rastrea-mento.
As modalidades de métodos, software, firmware ou código apre-sentadas acima podem ser implementadas via instruções ou código armaze-nado em um meio acessível por máquina ou legível em máquina, que sãoexecutáveis por um elemento de processamento. Um meio acessível/legívelem máquina inclui qualquer mecanismos que proporcione (isto é, armazenee/ou transmita) informação em uma forma legível por uma máquina, tal comoum computador ou sistema eletrônico. Por exemplo, um meio acessível pormáquina inclui memória de acesso randômico (RAM), tal como uma RAMestática (SRAM) ou RAM dinâmica (DRAM); memória somente de leitura(ROM); meio de armazenamento magnético ou ótico; e dispositivos de me-mória instantânea. Como outro exemplo, um meio acessível/legível por má-quina inclui qualquer mecanismo que receba, copie, armazene, transmita oude outro modo manipule sinais elétricos, óticos, acústicos ou de outra formapropagados (por exemplo, ondas portadoras, sinais de infravermelho, sinaisdigitais); etc., incluindo as modalidades de métodos, software, firmware oucódigo apresentados acima.
Referência por toda esta especificação a "uma modalidade" sig-nifica que um aspecto, estrutura ou característica particular descrita em co-nexão com a modalidade está incluído em uma modalidade da presente in-venção e não é requerido que esteja presente em todas as modalidades dis-cutidas. Desse modo, as aparências das frases "em uma modalidade" emvários locais por toda esta especificação não estão, necessariamente, sereferindo todas à mesma modalidade. Além disso, os aspectos, estruturas oucaracterísticas podem ser combinados em qualquer maneira adequada emuma ou mais modalidades.
Na especificação precedente, uma descrição detalhada foi dadacom referência às modalidades exemplificativas específicas. Portanto, seráevidente que várias modificações e mudanças podem ser feitas sem afasta-mento do espírito e do escopo mais amplos da invenção, conforme apresen-tado nas reivindicações anexas. A especificação e os desenhos são, emconseqüência, para serem considerados em um sentido ilustrativo em lugarde um sentido restritivo. Além disso, o uso precedente de modalidade e ou-tra linguagem exemplificativa não se refere, necessariamente, à mesma mo-dalidade ou ao mesmo exemplo, mas pode se referir à modalidades diferen-tes e distintas, bem como potencialmente à mesma modalidade.
Claims (23)
1. Aparelho compreendendo:um elemento de processamento para executar uma seção não-crítica de código e uma seção crítica de código;uma memória para estar associada com o elemento de proces-samento, em que uma linha da memória deve estar associada com um cam-po de rastreamento e em que a seção crítica de código deve incluir uma o-peração de referência à linha;lógica de rastreamento associada com a memória, que, em res-posta à seção crítica de código ser uma seção crítica consecutiva subse-qüente de código, deve iniciar uma pós-retirada da atualização da operaçãopara o campo de rastreamento indicar um acesso à linha ocorrido duranteexecução da seção crítica e, em resposta à seção crítica de código não seruma seção crítica consecutiva subseqüente, iniciar uma pré-retirada da atua-lização da operação do campo de rastreamento para indicar que um acessoà linha ocorreu durante a execução da seção crítica de código.
2. Aparelho, de acordo com a reivindicação 1, em que a lógicade rastreamento inclui lógica de rastreamento de estágio inicial para deter-minar se a operação está incluída na seção crítica de código.
3. Aparelho, de acordo com a reivindicação 2, em que a lógicade rastreamento de estágio inicial inclui um contador de estágio inicial, ocontador de estágio inicial sendo incrementado em resposta à alocação deum início de operação de seção crítica e em que a operação é determinadaestar incluída na seção crítica de código em resposta ao contador de estágioinicial mantendo um valor maior do que um valor predeterminado do conta-dor de estágio inicial.
4. Aparelho, de acordo com a reivindicação 3, em que o conta-dor de estágio inicial deve ser decrementado em reposta à retirada de umfinal da operação de seção crítica e em que o início da operação de seçãocrítica inclui uma carga com intenção de armazenar (L_S_I).
5. Aparelho, de acordo com a reivindicação 3, em que o conta-dor de estágio inicial deve ser decrementado em resposta à alocação de umfinal da operação de seção crítica e em que o início da operação de seçãocrítica inclui operação de transação de inicio e o final da operação de seçãocrítica inclui uma operação de transação final.
6. Aparelho, de acordo com a reivindicação 3, em que a lógicade rastreamento ainda inclui um contador de estágio final a ser incrementadoem resposta à retirada do início da operação de seção crítica e a ser decre-mentado em resposta à retirada do final da operação de seção crítica.
7. Aparelho, de acordo com a reivindicação 6, ainda compreen-der um tampão de acesso capaz de manter entradas de acesso seniores, otampão de acesso a incluir uma entrada de acesso correspondente à opera-ção, em que a entrada de acesso inclui uma porção de campo de rastreamento.
8. Aparelho, de acordo com a reivindicação 7, em que a opera-ção é uma operação de carga, o tampão de acesso inclui um tampão decarga capaz de manter entradas de carga seniores e a entrada de acessoinclui uma estrada de carga correspondente à operação de carga.
9. Aparelho, de acordo com a reivindicação 7, ainda compreen-dendo lógica de atualização acoplada ao contador de estágio inicial e aotampão de acesso, a lógica de atualização para atualizar a porção de campode rastreamento da entrada de acesso para indicar que uma pré-retirada daatualização da operação para o campo de rastreamento deve ser iniciadaem resposta ao contador de estágio inicial mantendo um valor maior do queo valor padrão mediante alocação da operação.
10. Aparelho, de acordo com a reivindicação 9, em que a lógicade atualização deve ser acoplada ao contador de estágio final, a lógica derastreamento para reconfigurar a porção de campo de rastreamento da en-trada de acesso para indicar que nenhuma pré-retirada da atualização deoperação para o campo de rastreamento deve ser iniciada em resposta aocontador de estágio final ser decrementado para um valor padrão.
11. Aparelho, de acordo com a reivindicação 10, em que a lógicade rastreamento, em resposta à seção crítica de código ser uma seção críti-ca consecutiva subseqüente de código, deve iniciar uma pós-retirada da a-tualização de operação para o campo de rastreamento, para indicar que umacesso à linha ocorreu durante execução da seção crítica compreende alógica de rastreamento, em resposta à porção de campo de rastreamento daentrada de acesso ser reajustada e o contador de estágio final mantendo umvalor maior do que o valor padrão, deve iniciar a pós-retirada da atualizaçãode operação para o campo de rastreamento.
12. Sistema compreendendo:um circuito integrado incluindo:uma unidade de execução capaz de executar uma seção crítica(CS) de código, a CS para incluir uma operação de carga referenciando umendereço, em que a CS deve ser demarcada por uma operação inicial de CSe uma operação final de CS;uma memória acoplada à unidade de execução, a memória in-cluindo uma linha de memória que deve estar associada com o endereço,em que o campo de rastreamento de carga deve estar associado com a li-nha de memória;lógica de seção crítica associada com a unidade de execuçãopara determinar se a seção crítica é uma seção crítica consecutiva; eum tampão de carga acoplado com a lógica de seção crítica pa-ra manter uma entrada de carga a ser associada com a operação de carga;em que a entrada de carga deve inclui um campo de atualizaçãode memória para manter um primeiro valor a fim de indicar que uma atuali-zação de pré-retirada para o campo de rastreamento de carga deve ser rea-lizada, em resposta à lógica de seção crítica, determinando que a seção crí-tica não é uma seção crítica consecutiva e manter um segundo valor paraindicar que uma atualização de pós -retirada para o campo de rastreamentode carga deve ser realizada, em resposta à lógica da seção crítica determi-nando que a seção crítica é uma seção crítica consecutiva; euma memória de nível superior acoplada à parte integrada paraarmazenar um elemento em uma localização de memória associada com oendereço.
13. Sistema, de acordo com a reivindicação 12, em que a lógicade seção crítica inclui:um primeiro contador a ser incrementado em resposta à detec-ção da operação de CS de início e a ser decrementado em resposta à retira-da da operação de CS final;um segundo contador a ser incrementado em resposta à retirada operação de CS de início e a ser decrementado em resposta à retiradada operação de CS final.
14. Sistema, de acordo com a reivindicação 13, em que o campode atualização de memória deve ser ajustado para o primeiro valor, em res-posta à detecção da operação de carga, quando o primeiro contador man-tém um valor não-zero e em que o campo de atualização de memória deveser reajustado para o segundo valor, em resposta ao segundo contador serdecrementado para um valor de zero.
15. Sistema, de acordo com a reivindicação 14, em que a lógicade seção crítica para determinar se a seção crítica é uma seção crítica con-secutiva compreende a determinação de se a seção crítica é uma seção crí-tica consecutiva em resposta ao campo de atualização de memória manter osegundo valor e o segundo contador manter um valor não-zero.
16. Sistema, de acordo com a reivindicação 15, em que a opera-ção de CS inicial é uma operação selecionada de um grupo que consiste emuma operação de transação inicial, uma operação de carga com intenção dearmazenar (L_S_I) e uma combinação de operação de carga e de armaze-namento e em que a operação de CS final é selecionada de um grupo queconsiste em uma operação de transação final, uma operação de armazena-mento correspondendo a uma operação prévia de L_S_I e uma operaçãocombinada de aritmética e armazenamento.
17. Sistema, de acordo com a reivindicação 15, em que o tam-pão de carga é capaz de manter entradas de carga seniores e em que umaatualização de pós-retirada para a linha de memória deve ser realizadaquando a entrada de carga é referenciada como uma entrada de carga sê-nior de início no tampão de carga.
18. Sistema, de acordo com a reivindicação 15, em que as atua-lizações de pré-retirada e pós-retirada para o campo de rastreamento decarga e para atualizar o campo de rastreamento para indicar que uma cargada linha de memória ocorreu durante a execução da seção crítica.
19. Método compreendendo:realização de uma atualização de pré-retirada para um primeirocampo de rastreamento de acesso para indicar que um acesso a uma pri-meira linha de memória, que está associado com o primeiro campo de ras-treamento de acesso, foi acessado durante execução de uma primeira seçãocrítica pendente; erealização de uma atualização de pós-retirada para o segundocampo de rastreamento de acesso para indicar que um acesso a uma se-gunda linha de memória, que está associado com o segundo campo de ras-treamento de acesso, foi acessado durante a execução de uma segundaseção crítica pendente.
20. Método, de acordo com a reivindicação 19, ainda compreen-dendo a determinação se a primeira seção crítica pendente é uma seçãocrítica pendente não-consecutiva e determinação se a segunda seção críticapendente é uma seção crítica pendente consecutiva.
21. Método, de acordo com a reivindicação 20, em que a deter-minação se a primeira seção crítica pendente é uma seção crítica pendentenão consecutiva compreende:incrementação de uma contagem de estágio inicial em respostaà alocação de uma operação de seção crítica inicial;decrementação da contagem de estágio inicial em resposta à re-tirada de uma operação de seção crítica final;atualização de um campo em uma entrada de tampão de aces-so, que corresponde a um acesso associado com a primeira linha de memó-ria, para um valor de pré-retirada, em resposta à contagem de estágio inicialrepresentando um valor não-zero, mediante alocação do acesso; edeterminação se a primeira seção crítica pendente é uma seçãocrítica não consecutiva em resposta ao campo na entrada do tampão de a-cesso manter o valor de pré-retirada mediante retirada do acesso.
22. Método, de acordo com a reivindicação 21, em que o campona primeira entrada de tampão de acesso mantendo o primeiro valor é paraindicar que a atualização de pré-retirada para o primeiro campo de rastrea-mento de acesso deve ser realizada, em resposta à expedição do primeiroacesso.
23. Método, de acordo com a reivindicação 20, em que a segun-da seção crítica pendente é uma seção crítica pendente consecutiva com-preende:incrementação de uma contagem de estágio final em resposta àretirada de uma operação de seção crítica inicial;decrementação da contagem de estágio final em resposta à reti-rada de uma operação de seção crítica final;atualização de um campo em uma entrada de tampão de aces-so, que corresponde a um acesso associado com a segunda linha de memó-ria, para um valor de não-acesso, em resposta à contagem de estágio finaldecrementando para zero; edeterminação se a segunda seção crítica pendente é uma seçãocrítica consecutiva em resposta ao campo na entrada do tampão de acessomanter o valor de não-acesso mediante retirada do acesso e a contagem deestágio final mantendo um valor não-zero.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/936,243 US20190065160A1 (en) | 2007-11-07 | 2007-11-07 | Pre-post retire hybrid hardware lock elision (hle) scheme |
| US11/936,243 | 2007-11-07 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| BRPI0805218A2 true BRPI0805218A2 (pt) | 2010-08-17 |
| BRPI0805218B1 BRPI0805218B1 (pt) | 2020-02-11 |
Family
ID=41103981
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| BRPI0805218-2A BRPI0805218B1 (pt) | 2007-11-07 | 2008-11-07 | “Aparelho, sistema e método para esquema de omissão de trava por hardware híbrida de retirada prévia-posterior”. |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20190065160A1 (pt) |
| CN (1) | CN101533363B (pt) |
| BR (1) | BRPI0805218B1 (pt) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9448799B2 (en) * | 2013-03-14 | 2016-09-20 | Samsung Electronics Co., Ltd. | Reorder-buffer-based dynamic checkpointing for rename table rebuilding |
| US10120805B2 (en) * | 2017-01-18 | 2018-11-06 | Intel Corporation | Managing memory for secure enclaves |
-
2007
- 2007-11-07 US US11/936,243 patent/US20190065160A1/en not_active Abandoned
-
2008
- 2008-11-07 BR BRPI0805218-2A patent/BRPI0805218B1/pt active IP Right Grant
- 2008-11-07 CN CN200810190809.XA patent/CN101533363B/zh not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| CN101533363A (zh) | 2009-09-16 |
| US20190065160A1 (en) | 2019-02-28 |
| CN101533363B (zh) | 2014-09-17 |
| BRPI0805218B1 (pt) | 2020-02-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8195898B2 (en) | Hybrid transactions for low-overhead speculative parallelization | |
| US8706982B2 (en) | Mechanisms for strong atomicity in a transactional memory system | |
| US8364911B2 (en) | Efficient non-transactional write barriers for strong atomicity | |
| US8838908B2 (en) | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM | |
| US8200909B2 (en) | Hardware acceleration of a write-buffering software transactional memory | |
| JP6342970B2 (ja) | トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 | |
| US9280397B2 (en) | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata | |
| EP2513779B1 (en) | Mechanisms to accelerate transactions using buffered stores | |
| US8078807B2 (en) | Accelerating software lookups by using buffered or ephemeral stores | |
| KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
| US8627030B2 (en) | Late lock acquire mechanism for hardware lock elision (HLE) | |
| US8769212B2 (en) | Memory model for hardware attributes within a transactional memory system | |
| US8132158B2 (en) | Mechanism for software transactional memory commit/abort in unmanaged runtime environment | |
| US20080065864A1 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
| BRPI0805218A2 (pt) | esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| B03A | Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette] | ||
| B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
| B06A | Patent application procedure suspended [chapter 6.1 patent gazette] | ||
| B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
| B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 11/02/2020, OBSERVADAS AS CONDICOES LEGAIS. |