BRPI0805218B1 - “Aparelho, sistema e método para esquema de omissão de trava por hardware híbrida de retirada prévia-posterior”. - Google Patents

“Aparelho, sistema e método para esquema de omissão de trava por hardware híbrida de retirada prévia-posterior”. Download PDF

Info

Publication number
BRPI0805218B1
BRPI0805218B1 BRPI0805218-2A BRPI0805218A BRPI0805218B1 BR PI0805218 B1 BRPI0805218 B1 BR PI0805218B1 BR PI0805218 A BRPI0805218 A BR PI0805218A BR PI0805218 B1 BRPI0805218 B1 BR PI0805218B1
Authority
BR
Brazil
Prior art keywords
critical section
access
withdrawal
tracking
response
Prior art date
Application number
BRPI0805218-2A
Other languages
English (en)
Inventor
Haitham Akkary
Shlomo Raikin
Ravi Rajwar
Gad S. Shaeffer
Srikanth T. Srinivasan
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=41103981&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BRPI0805218(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BRPI0805218A2 publication Critical patent/BRPI0805218A2/pt
Publication of BRPI0805218B1 publication Critical patent/BRPI0805218B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

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 APARELHO, SISTEMA E MÉTODO PARA ESQUEMA DE OMISSÃO DE TRAVA POR HARDWARE HÍBRIDA DE RETIRADA PRÉVIAPOSTERIOR.
Campo [001] A presente invenção refere-se ao campo de execução de processador e, em particular, ao rastreamento de acessos à memória durante a execução.
Antecedentes [002] Avanços no processamento de semicondutores e desenho de lógica têm permitido um aumento na quantidade de lógica que pode estar presente em dispositivos de circuitos integrados. Como um resultado, as configurações do sistema de computador têm evoluído de um circuito simples ou circuitos múltiplos integrados em um sistema para múltiplos núcleos e múltiplos processadores lógicos presentes em circuitos integrados individuais. Um processador ou circuito integrado, tipicamente, compreende uma matriz única de processador, onde a matriz pode incluir qualquer número de núcleos ou processadores lógicos.
[003] O número sempre crescente de núcleos e processadores lógicos em circuitos integrados permite que mais encadeamentos de software sejam executados. Contudo, o aumento no número de encadeamentos de software que podem ser executados simultaneamente tem criado problemas com a sincronização compartilhada entre os encadeamentos de software. Uma solução comum ao acesso de dados compartilhados em sistemas de processadores lógicos múltiplos ou núcleos múltiplos compreende o uso de bloqueios para garantir exclusão mútua através de acessos múltiplos aos dados compartilhados. Contudo, a capacidade sempre crescente para executar múltiplos encadeamentos de software resulta, potencialmente, em falsa contenção
Petição 870190116745, de 12/11/2019, pág. 9/53
2/33 e uma serialização de execução.
[004] Por exemplo, consideremos uma tabela de prova suportando os dados compartilhados. Com um sistema de bloqueio, um planejador pode bloquear toda a tabela de prova, permitindo a um encadeamento acessar toda a tabela de prova. Contudo, o rendimento e o desempenho de outros encadeamentos são, potencialmente, afetados de modo adverso, visto que eles são incapazes de acessar quaisquer entradas na tabela de prova, a entrada na tabela de prova pode ser bloqueada. Contudo, isso aumenta a complexidade de programação, visto que os planejadores têm que levar em conta mais bloqueios dentro de uma tabela de prova.
[005] Outra técnica de sincronização de dados inclui o uso de memória transacional (TM). Frequentemente, a execução transacional inclui execução, especulativamente, de um agrupamento de uma pluralidade de micro-operações, operações ou instruções. No exemplo acima, os encadeamentos executam dentro da tabela de prova e seus acessos são monitorados/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ória transacional. Como um resultado, uma técnica de sincronização de dados de hardware, que é referida, frequentemente, como Hardware Lock Elision (HLE - Omissão de Bloqueio de Hardware), é utilizada para omitir bloqueios para obter benefícios de sincronização similar à memória transacional. Portanto, problemas para rastrear acessos à memória eficientemente, com frequência, se originam para execução de seções críticas de código através do uso de memória transacional e HLE.
Breve Descrição dos Desenhos [006] A presente invenção é ilustrada por meio de exemplo e não é destinada a ser limitada pelas figuras dos desenhos anexos.
Petição 870190116745, de 12/11/2019, pág. 10/53
3/33 [007] 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.
[008] A figura 2 ilustra uma modalidade de lógica de rastreamento para realizar rastreamento de acesso de pós-retirada para acessos à memória de seção crítica consecutiva.
[009] A figura 3 ilustra uma modalidade de um fluxograma para um método de realização de rastreamento de acesso de pré-retirada e pós-retirada.
[0010] A figura 4a ilustra uma modalidade de um fluxograma para um método de rastreamento do início de seções críticas.
[0011] A figura 4b ilustra uma modalidade de um fluxograma para um método de rastreamento do final de seções críticas.
[0012] A figura 4c ilustra uma modalidade de um fluxograma para um método de realização de rastreamento de acesso de pré-retirada e pós-retirada; e [0013] A figura 5 ilustra uma linha de tempo de Seção Crítica Consecutiva Exemplificativa.
Descrição Detalhada [0014] Na descrição seguinte, numerosos detalhes específicos são apresentados, tais como exemplos de suporte específico de hardware para Hardware Lock Elision (HLF - Omissão de Bloqueio de Hardware), métodos específicos de rastreamento/metadados, tipos específicos de local /memória em 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 especí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 codificação de seções críticas em software, demarcação de seções críticas, arquitetu
Petição 870190116745, de 12/11/2019, pág. 11/53
4/33 ras específicas de processador de multinúcleos e multiencadeamento, geração/manipulação de interrupção, organizações de cache e detalhes operacionais específicos de microprocessadores, não foram descritos em detalhes, a fim de evitar obscurecer desnecessariamente a presente invenção.
[0015] O método e o aparelho aqui descritos são para um rastreamento híbrido de pré-retirada e pós-retirada de acessos por tentativa durante execução de seções críticas. Especificamente, o esquema híbrido é discutido principalmente em referência aos sistemas de computador de processador de múltiplos núcleos. Contudo, os métodos e aparelhos para rastreamento híbrido de acesso não estão assim limitados, visto que eles podem ser implementados no ou em associação com qualquer dispositivo ou sistema de circuito integrado, como telefones celulares, assistentes pessoais digitais, controladores embutidos, plataformas móveis, plataformas de desktop e plataformas de servidores, bem como em conjunto com outros recursos, tais como encadeamentos de hardware/software que executam seções críticas. Além disso, o esquema híbrido também é discutido, principalmente, em referência ao rastreamento de acesso durante HLE. Ainda, o rastreamento híbrido de acesso à memória pode ser utilizado durante qualquer esquema de acesso à memória, tal como durante execução transacional.
[0016] Fazendo referência à figura 1, uma modalidade de processador de múltiplos núcleos 100, que é capaz de realizar rastreamento híbrido de acesso de pré-retirada e pós-retirada, é ilustrada. Conforme mostrado, o processador físico 100 inclui qualquer número de elementos de processamento. Um elemento de processamento se refere a um encadeamento, a um processo, a um contexto, a um processador lógico, a um encadeamento de hardware, a um núcleo e/ou a qualquer elemento de processamento, que, potencialmente, compartilha acesso
Petição 870190116745, de 12/11/2019, pág. 12/53
5/33 a recursos do processador, como unidades de reserva, unidades de execução, canais de processamento de dados 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 elementos de processamento, como núcleos ou encadeamentos de hardware.
[0017] Um núcleo, frequentemente, se refere à lógica localizada em um circuito integrado capaz de manter um estado de arquitetura independente em que cada estado de arquitetura mantido independentemente está associado com pelo menos alguns recursos de execução dedicados. Em contraste aos núcleos, um encadeamento de hardware, tipicamente, se refere a qualquer lógica localizada em um circuito integrado capaz de manter um estado de arquitetura independente em que os estados de arquitetura mantidos independentemente compartilham acesso aos recursos de execução. O processador 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. Além disso, o núcleo 101 inclui dois encadeamentos de hardware 101a e 102b. Portanto, entidades de software, tais como um sistema operacional ou aplicação, potencialmente, veem o processador 100 como quatro processadores separados, enquanto o processador 100 é capaz de executar quatro encadeamentos de software.
[0018] Como pode ser visto, quando certos recursos são compartilhados e outros são dedicados a um estado de arquitetura, a linha entre a nomenclatura de um encadeamento de hardware e sobreposições de núcleo. Frequentemente, um núcleo e um encadeamento de hardware são vistos por um sistema operacional como processadores lógicos individuais, onde o sistema operacional é capaz de esquematizar, individualmente, operações em cada processador lógico. Portanto, um elemento de limitação inclui qualquer uma das entidades antes mencionadas, capazes de manter um contexto, como núcleos, enca
Petição 870190116745, de 12/11/2019, pág. 13/53
6/33 deamentos, encadeamentos de hardware, máquinas virtuais ou outros recursos.
[0019] Em uma modalidade, o processador 100 é um processador de multinúcleos capaz de executar múltiplos encadeamentos em paralelo. Aqui, um primeiro encadeamento está associado com registros 101a de estado de arquitetura, um segundo encadeamento está associado com registros 101b de estado de arquitetura, um terceiro encadeamento está associado com registros 102a de estado de arquitetura e um quarto encadeamento está associado com registros 102b de estado de arquitetura. Referência aos elementos de processamento no processador 100, em uma modalidade, inclui referência aos núcleos 101 e 102, bem como encadeamentos 101a, 101b, 102a e 102b. Em outra modalidade, um elemento de processamento se refere aos elementos no mesmo nível em uma hierarquia de domínio de processamento. Por exemplo, o núcleo 101 e 102 estão no mesmo nível de domínio dentro do núcleo 101 e os encadeamentos 101a e 101b, 102a e 102b estão no mesmo nível de domínio.
[0020] Embora o processador 100 pode incluir núcleos assimétricos, isto é, 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 detalhes para evitar obscurecer a discussão.
[0021] Conforme ilustrado, os registros de estados de arquitetura
101a são replicados em registros de estado de arquitetura 101b, assim, estados/contextos de arquitetura individuais são capazes de serem armazenados para processador lógico 101a e processador lógico 101b. Outros recursos menores, 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 os encadeamentos 101a e 101b. Alguns recursos, tais como reordenar elementos de armazenamento
Petição 870190116745, de 12/11/2019, pág. 14/53
7/33 temporário na unidade de reordenação/retirada 135, ILTB 120, carregar/armazenar elementos de armazenamento temporário e filas podem ser compartilhadas através de particionamento. Outros recursos, tais como registros internos para fins gerais, registro de base de tabela de página cache de dados de baixo nível e TLB-dados 110, unidade(s) de execução 140 e unidade de fora de ordem 135 são, potencialmente, compartilhadas completamente.
[0022] O módulo de interface de barramento 152 é para se comunicar com dispositivos externos ao processador 100, tal como uma memória de sistema 175, um conjunto de chips, uma ponte norte ou outro circuito integrado. A memória 175 pode ser dedicada ao processador 100 ou compartilhada com outros dispositivos em um sistema. Exemplos da memória 175 incluem memória dinâmica de acesso randômico (DRAM), RAM estática (SRAM), memória não volátil (NV memory ) e armazenamento a longo prazo.
[0023] Tipicamente, a unidade de interface de barramento 152 inclui elementos de armazenamento temporário de entrada/saída (I/O) para transmitir e receber sinais de barramento na interconexão 170. Exemplos de interconexão 170 incluem um barramento Gunning Transceiver Logic (GTL), um barramento GTL+, um barramento de taxa dupla de dados (DDR), um barramento bombeado, um barramento diferencial, um barramento coerente com cache, um barramento ponto a ponto, um barramento multidrop ou outra interconexão, implementando qualquer protocolo de barramento conhecido. A unidade de interface de barramento 152, conforme mostrado, também é para se comunicar com cache de nível superior 110.
[0024] Cache de nível superior ou further-out 110 é a cache recentemente recuperada e/ou operada em elementos. Note que nível superior ou further-out se refere a níveis de cache crescentes ou se afastando da(s) unidade(s) de execução. Em uma modalidade, a ca
Petição 870190116745, de 12/11/2019, pág. 15/53
8/33 che de nível superior 110 é uma cache de dados de segundo nível. Contudo, a cache de nível superior não está assim limitada, visto que ela pode ser ou incluir uma cache de instrução, que também pode ser referida como uma cache de traço. Uma cache de traço pode ser acoplada depois do decodificador 125, para armazenar traços recentemente decodificados. O módulo 120 também inclui, potencialmente, um elemento de armazenamento temporário alvo de bifurcação para predizer bifurcações a serem executadas/tomadas e um elemento de armazenamento temporário de tradução de instrução (I-TLB) para armazenar entradas de tradução de endereço para instruções. Aqui, um processador capaz de execução especulativa, potencialmente, de prébuscas e que executa, especulativamente, bifurcações preditas.
[0025] O módulo de decodificação 125 é acoplado à unidade de busca 120 para decodificação de elementos buscados. Em uma modalidade, o processador 100 está associado com uma Arquitetura de Conjunto de Instruções (ISA), que define/especifica instruções executáveis no processador 100. Aqui, frequentemente, instruções de codificação de máquina reconhecidas 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 a ser realizada.
[0026] Em um exemplo, o bloco alocador e renomeador 130 inclui um alocador para reservar recursos, tais como arquivos de registro para armazenar resultados de processamento de instrução. Contudo, os encadeamentos 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 elementos de armazenamento temporário para rastrear resultados de instrução. A unidade 130 também pode incluir um renomeador de registro para renomear registros de referência de programa/instrução para outros registros internos ao processador 100. Conforme ilustrado, lógica de rastreamen
Petição 870190116745, de 12/11/2019, pág. 16/53
9/33 to 180 também está associada com o módulo de alocação 130. Conforme discutido mais tarde, a lógica de rastreamento 180, em uma modalidade, auxilia na determinação de limites de uma seção crítica de uma perspectiva de extremidade inicial.
[0027] A unidade de reordenação/retirada 135 inclui componentes, tais como os elementos de armazenamento temporário de reordenação mencionados acima, elementos de armazenamento temporário de carga e elementos de armazenamento temporário de armazenamento, para suportar execução fora de ordem e mais tarde retirada em ordem de instruções executadas fora de ordem. Além disso, a lógica de rastreamento 180 também é distribuída na lógica de retirada 135. Em uma modalidade, a lógica de rastreamento 180 determina limites para as seções críticas para uma perspectiva de extremidade inicial. Embora a lógica de rastreamento 180 seja mostrada distribuída através do processador 100 e associada com lógica de alocação e de retirada, a lógica de rastreamento 180 não está assim limitada. De fato, a lógica de rastreamento 180 pode estar localizada em uma área, bem como associada com qualquer porção da extremidade frontal ou traseira de um canal de processamento de dados do processador. Além disso, porções da lógica de rastreamento 180 podem ser incluídas na cache 150, na lógica de controle de cache ou no cache de nível superior 110.
[0028] O bloco de unidade(s) planejadora(s) e de execução 140, em uma 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 de ponto de flutuação é planejada em uma porta de uma unidade de execução que tem uma unidade de execução de ponto flutuante disponível. Arquivos de registro associados com as unidades de execução também estão incluídos para armazenar resultados
Petição 870190116745, de 12/11/2019, pág. 17/53
10/33 de processamento de instrução de informação. Unidades de execução exemplificativas incluem uma unidade de execução de ponto de flutuação, uma unidade de execução de inteiro, uma unidade de execução de salto, uma unidade de execução de carga, uma unidade de execução de armazenamento e outras unidades de execução conhecidas. [0029] Observe do acima que, como ilustrado, o processador 100 é capaz 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 pluralidade de instruções ou operações em uma transação, seção atômica de código ou uma seção crítica de código. Em alguns casos, o uso de instrução de palavra se refere a uma macroinstrução que é composta de uma pluralidade de operações. Em um processador, uma transação, tipicamente, é executada especulativamente e comprometida no final da transação. Uma pendência de 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. Usualmente, embora uma transação ainda esteja pendente, localizações carregadas de e escritas para dentro de uma memória são rastreadas.
[0030] Com a validação bem-sucedida daquelas localizações de memória, a transação é comprometida e atualizações feitas durante a transação são tornadas globalmente visíveis. Contudo, se a transação for invalidada durante a sua pendência, a transação é reiniciada sem tornar as atualizações globalmente visíveis. Com frequê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 de uma transação e um final de uma transação. Contudo, a execução transacional, frequentemente, utiliza planejadores ou compiladores para inserir instruções de começo e fim
Petição 870190116745, de 12/11/2019, pág. 18/53
11/33 para uma transação.
[0031] Portanto, em uma modalidade, um processador 100 é capaz de omissão de bloqueio de hardware (HLE), onde hardware é capaz de omitir bloqueios para seções críticas e executá-las simultaneamente. Aqui, binários pré-compilados sem suporte transacional ou binários quase compilados, utilizando programação de bloqueio, são capazes de se beneficiar de execução simultânea através de suporte de HLE. Como um resultado do fornecimento de compatibilidade transparente, HLE, com frequência, inclui hardware para detectar seções críticas e rastrear acessos à memória. De fato, uma vez que bloqueios assegurando exclusão de dados são omitidos, os acessos à memória podem ser rastreados de maneira similar àquela durante a execução de transações. Em consequência, o esquema híbrido de rastreamento de acesso de pré-retirada e pós-retirada aqui discutido pode ser utilizado durante a execução transacional, HLE, outro esquema de rastreamento de acesso à memória ou uma combinação desses. Portanto, a discussão de seções críticas abaixo, potencialmente, inclui referência a uma seção crítica de uma transação ou uma seção crítica detectada por HLE.
[0032] Em uma modalidade, um dispositivo de memória sendo acessado é utilizado para rastrear acessos de uma seção crítica. Por exemplo, cache 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 cache 150 é para armazenar elementos recentemente acessados, tais como operandos de dados, que são potencialmente mantidos em estados de coerência de memória, tais como estados modificados, exclusivos, compartilhados e 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 pode estar associa
Petição 870190116745, de 12/11/2019, pág. 19/53
12/33 do com a cache 150 para armazenar traduções recentes de endereços virtuais/lineares para físicos.
[0033] Conforme ilustrados, as linhas 151, 152 e 153 incluem porções e campos, tais como porção 151a e campo 151b. Em uma modalidade, os campos 151b, 152b e 153b e as porções 151a, 152a e 153a são parte de um mesmo arranjo de memória, compondo as linhas 151, 152 e 153. Em outra modalidade, os campos 151b, 152b e 153b são parte de um arranjo separado 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ão parte de um arranjo separado, os campos 151b, 152b e 153b estão associados com porções 151a, 152a e 153, respectivamente. Como um resultado, quando fazendo referência à linha 151 da cache 150, a linha 151, potencialmente, inclui a porção 151a, 151b ou sua combinação. Por exemplo, quando do carregamento da linha 151, a porção 151a pode ser carregada da mesma. Adicionalmente, quando da configuração de um campo de rastreamento para rastrear uma carga da linha 151, o campo 151b é acessado.
[0034] Em uma modalidade, linhas, localizações, blocos ou palavras, tais como as linhas 151a, 152a e 153a são capazes de armazenar múltiplos elementos. Um elemento se refere a qualquer instrução, operando, operando de dados, variável ou outro agrupamento de valores lógicos, que é comumente armazenado na memória. Como um exemplo, a linha de cache 151 armazena quatro elementos na porção 151a, tais como quatro operandos. Os elementos armazenados na linha de cache 151a podem estar em um estado empacotado ou comprimido, bem como em um estado não comprimido. Além disso, os elementos podem ser armazenados no cache 150 alinhados ou desalinhados com limites de linhas, ajustes ou maneiras de cache 150. A memória 150 será discutida em mais detalhes em referência às modaPetição 870190116745, de 12/11/2019, pág. 20/53
13/33 lidades exemplificativas abaixo.
[0035] A cache 150, bem como outras características e dispositivos no processador 100, armazenam e/ou operam em valores lógicos. Frequentemente, 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 um nível lógico baixo. Outras representações de valores em sistemas de computador têm sido usadas, tais como representação decimal e hexadecimal de valores lógicos ou valores binários. Por exemplo, tomar o número decimal 10, que é representado em valores binários como 1010 e em hexadecimal como a letra A.
[0036] Na modalidade ilustrada na figura 1, acessos às linhas 151,
152 e 153 são rastreados para suportar a execução de seções críticas. Acessos incluem 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, 152b e 153b são utilizados para rastrear acessos às suas linhas de memória correspondentes. Por exemplo, linha/porção de memória 151a está associada com campo de rastreamento 151b correspondente. Aqui, o campo de rastreamento de acesso 151b está associado com e corresponde à linha de cache 151a, visto que o campo de rastreamento 151b inclui bits que são parte da linha de cache 151. A associação pode ser através de colocação física, conforme ilustrado, ou outra associação, tal como se referindo ou mapeando campo de rastreamento de acesso 151b para a linha de memória 151a ou 151b em uma tabela de conferência de hardware ou software.
[0037] Como um exemplo ilustrativo simplificado, suponhamos que os campos de rastreamento de acessos 151b, 152b e 153b incluem dois bits de transação: um primeiro bit de rastreamento de leitura e um segundo bit de rastreamento de escrita. Em um estado padrão, isto é,
Petição 870190116745, de 12/11/2019, pág. 21/53
14/33 um primeiro valor lógico, o primeiro e o segundo bits em campo de rastreamento de acesso 151b, 152b e 153b representam que as linhas de cache 151, 152 e 153, respectivamente, não foram acessadas durante a execução de uma seção crítica.
[0038] Suponhamos que uma operação de carga para carregar da linha 151a é enfrentada em uma seção crítica. Utilizando um esquema híbrido de rastreamento de pré-retirada e de pós-retirada, o primeiro bit de rastreamento de leitura é atualizado do estado padrão para um segundo estado acessado, tal como um segundo valor lógico. Como discutido abaixo, em um esquema híbrido, a iniciação da atualização para o primeiro bit de rastreamento 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 retirada. Aqui, o primeiro bit de rastreamento de leitura sustentando o segundo valor lógico representa que uma leitura/carga da linha 151 da cache ocorreu durante a execução da seção crítica. Uma operação de armazenamento pode ser trabalhada em uma maneira similar para atualizar o primeiro bit de rastreamento de leitura para indicar um armazenamento para uma localização de memória ocorrida durante execução da seção crítica.
[0039] Em consequência, se os bits de rastreamento no campo
151b associado com a linha 151 são verificados e os bits de transação representam o estado padrão, então, a linha de cache 151 não foi acessada durante uma pendência de uma seção crítica. Inversamente, se o primeiro bit de rastreamento de leitura representa o segundo valor, então, a linha 151 da cache foi 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, então, uma escrita na linha 151 ocorreu durante a pendência da seção crítica.
[0040] Campos de acesso 151b, 152b e 153b são usados, potencialmente, para suportar qualquer tipo de execução transacional ou
Petição 870190116745, de 12/11/2019, pág. 22/53
15/33
HLE. Em uma modalidade, onde o processador 100 é capaz de execução transacional de hardware, campos de acesso 151b, 152b e
153b são configurados por acessos de pré-retirada e pós retirada, conforme discutido abaixo, para detectar conflitos e realizar validação. Em outra modalidade, onde memória transacional de hardware (HTM), memória transacional de software (STM) ou um híbrido das mesmas é utilizado para execução transacional, campos de rastreamento de acesso 151b, 152b e 153b proporcionam uma função de rastreamento híbrido de pré-retirada e pós-retirada.
[0041] Como um primeiro exemplo de como campos de acesso, e especificamente bits de rastreamento, são usados, potencialmente, para auxiliar a execução transacional, um pedido copendente, intitulado, “Hardware Acceleration for A Software Transactional Memory System,” com o número de série 11/349.787, divulga o uso de campos de acesso/bits de transação para acelerar um STM. Como outro exemplo, extensão/virtualização de memória transacional, incluindo estados de armazenamento de campos de acesso/bits de rastreamento de transação em uma segunda memória são discutidas no pedido copendente intitulado “Global Overflow Method for Virtualized Transactional Memory,” com o número de série 11/479.902 e número de pasta do procurador 042390.P23547.
[0042] Em uma modalidade, a lógica de rastreamento 180 é para iniciar um acesso de pré-retirada para atualizar campos de rastreamento associados com carga em seções críticas. Por exemplo, suponhamos uma operação de carga em uma linha de referência 151 de seção crítica. Por padrão, se uma 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 151 devem ser realizados. Contudo, quando uma seção crítica é comprometida, executada com sucesso ou abortada, campos de acesso são reconfigurados para seu
Petição 870190116745, de 12/11/2019, pág. 23/53
16/33 estado padrão, a fim de preparar para o rastreamento de seções críticas subsequentes ou uma re-execução de uma seção crítica abortada. Contudo, em processadores capazes de execução fora de ordem (OOO), operações de seções críticas subsequentes podem ter já ajustado informação de rastreamento na cache 150. Portanto, com o reajuste dos campos de rastreamento, informação de rastreamento de seção crítica subsequente pode 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ítica subsequente, 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 para atualizar o campo 151b a fim de assegura informação de rastreamento precisa.
[0043] Voltando à figura 2, uma modalidade de lógica de rastreamento para iniciar atualizações de campo de acesso de pós-retirada para seções críticas é ilustrada. Como mencionado acima, uma transação é, frequentemente, demarcada por instruções de transação inicial e transação final, o que 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 atrás mediante aborto de seção crítica, rastreamento de atualizações da memória por tentativa e detecção de potenciais conflitos de dados. Uma dificuldade na detecção/identificação de seções críticas é delinear entre instruções de bloqueio regulares e instruções de bloqueio/liberação de bloqueio que demarcam uma seção crítica.
[0044] Em uma modalidade, para HLE, uma seção crítica é definida por uma instrução de bloqueio, isto é, uma instrução de seção crítica inicial e uma instrução de liberação de bloqueio correspondente, isto é, e instrução de seção crítica final. Uma instrução de bloqueio pode incluir uma carga de uma localização de endereço, isto é, verifi
Petição 870190116745, de 12/11/2019, pág. 24/53
17/33 cação se o bloqueio está disponível e uma modificação/escrita na localização de endereço, isto é, uma atualização na localização de endereço para ajustar o bloqueio. Uns poucos exemplos de instruções que podem ser usadas como instruções de bloqueio incluem uma instrução de comparação e troca, uma instrução de teste e ajuste 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ções 64 e IA-32 da Intel®, discutidos acima.
[0045] Como um exemplo, onde instruções predeterminadas, tais como CMPXCHG, 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 campo de opcode ou outro campo da instrução. Como um exemplo, CMPXCHG é associado com os seguintes opcodes: 0F B0/r, REX + 0F B0/r, e REX.W + 0F B1/r. Em outra modalidade, operações associadas com uma instrução são utilizadas para detectar uma instrução de bloqueio. Por exemplo, em x86 as três micro-operações de memória seguintes são usadas, frequentemente, para realizar uma atualização de memória atômica indicando uma instrução de bloqueio potencial: (1) Load_Store_Intent (L_S_I) com opcode 0x63; (2) STA com opcode 0x76; e (3) STD com opcode 0x7F. Aqui, L_S_I obtém localização de memória em estado de propriedade exclusiva e faz uma leitura da localização de memória, enquanto as operações de STA e STD modificam e escrevem na localização de memória. Em outras palavras, a lógica de detecçã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 podem ter qualquer número de outra nãomemória, bem como outra memória, operações associadas com as operações de memória de ler, escrever, modificar.
[0046] Embora não ilustrado na figura 2, frequentemente, uma pi
Petição 870190116745, de 12/11/2019, pág. 25/53
18/33 lha, tal como uma pilha de bloqueio, é utilizada para manter uma entrada associada com uma instrução de bloqueio, quando detectada. A entrada da instrução de bloqueio (LIE) pode incluir qualquer número de campos para armazenar informação relacionada com seção crítica, tal como um endereço físico de armazenamento de instrução de bloqueio (LI Str PA), um valor de carga e tamanho de carga de instrução de bloqueio, um valor e um tamanho de armazenamento de instrução de bloqueio, uma contagem de micro-operação, um flag de liberação, um flag de aquisição de bloqueio tardio e um campo de indicador de instrução final.
[0047] 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 detecção busca uma instrução de liberação de bloqueio que corresponde ao endereço modificado pela instrução de bloqueio. Note que o endereço modificado pela instrução de bloqueio pode ser mantido em uma Entrada de Instrução de Bloqueio (LIE - Lock Instruction Entry). Como um resultado, em uma modalidade, uma instrução de liberação de bloqueio inclui qualquer operação de armazenamento que ajusta o endereço modificado pela instrução de bloqueio correspondente de volta para um valor desbloqueado. Um endereço referenciado por uma instrução de L_S_I que é armazenada na pilha de bloqueio é comparado com instruções de armazenamento subsequentes para detectar uma instrução de liberação de bloqueio correspondente. Mais informação sobre detecção e predição de seções críticas pode ser encontrada em um pedido copendente intitulado “A CRITICAL SECTION DETECTION AND PREDICTION MECHANISM FOR HARDWARE LOCK ELISION,” com pedido número de série 11/599.009.
[0048] Em outras palavras, com HLE uma seção crítica é demarcada por uma instrução de L_S_I e uma instrução de liberação de bloqueio correspondente. Similarmente, uma seção crítica de uma tranPetição 870190116745, de 12/11/2019, pág. 26/53
19/33 sação é definida por 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 inclui qualquer instrução iniciando um HLE, memória transacional ou outra seção crítica, enquanto referência a uma operação/instrução de seção crítica final inclui o começo de HLE, memória transacional ou outras instruções de término de seção crítica. [0049] Fend 205 é para manter uma contagem de extremidade inicial para indicar quando a execução está dentro de uma seção crítica. Em uma modalidade, fend 205 inclui um contador de extremidade inicial. Como um exemplo, o contador de extremidade inicial é inicializado para um valor padrão de zero. Em resposta à detecção de uma instrução de seção crítica inicial, o contador de extremidade inicial é incrementado e, em resposta à detecção de uma instrução de seção crítica final, o contador de extremidade inicial é decrementado. Como uma ilustração, suponhamos que uma instrução de L_S_I é detectada. Com a alocação da instrução, tal como mediante a alocação da carga, fend 205 é incrementado para um. Como um resultado, instruções subsequentes, quando alocadas, são supostas estarem dentro de uma seção crítica, uma vez que fend 205 inclui um valor não-zero de um.
[0050] Em uma modalidade, fend 205 também proporciona profundidade de embutimento de seções críticas. Aqui, se múltiplas operações de seção crítica inicial forem alocadas, então, fendo 205 é incrementado, consequentemente, para representar a profundidade de embutimento de seções críticas. Por exemplo, suponhamos que há uma primeira seção crítica embutida dentro de uma segunda seção crítica, que está embutida dentro de uma terceira seção crítica. Em consequência, fend 205 é incrementado para um mediante alocação de L_S_I da terceira seção crítica, incrementado para dois mediante alocação de L_S_I da segunda seção crítica e incrementado para três mediante alocação de LS I da primeira seção crítica. Além disso, em
Petição 870190116745, de 12/11/2019, pág. 27/53
20/33 resposta à retirada de uma instrução de liberação de bloqueio, isto é, uma operação de armazenamento correspondente, fend 205 é decrementado.
[0051] Portanto, em resposta à retirada da operação de armazenamento 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 bloqueio da terceira seção crítica, decrementando fend 205 para zero. Aqui, instruções/operações subsequentes são supostas não estarem dentro de uma seção crítica, enquanto fend 205 mantém um valor zero. Note que, em uma modalidade, um valor de fend 205 deve ser indicado por verificação antes de uma bifurcação, enquanto fend 205 pode precisar ser recuperado devido a um curso de predição errada, isto é, uma predição errada de bifurcação.
[0052] Em uma modalidade, um elemento de armazenamento temporário de acesso, tal como um elemento de armazenamento temporário de carga ou um elemento de armazenamento temporário de armazenamento, é para manter entradas de acesso associadas com operações de acesso à memória. Cada entrada de elemento de armazenamento temporário de acesso inclui uma porção de campo de rastreamento e/ou campo de 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 que nenhum rastreamento de acesso de pré-retirada deve ser realizado. Contudo, quando fend 205 está indicando não-zero, uma operação está dentro de uma seção crítica, o campo de atualização de memória é atualizado para um segundo valor, tal como uma lógica um, para indicar que um acesso de préretirada para atualizar um campo de rastreamento de acesso deve ser realizado.
[0053] Embora o elemento de armazenamento temporário de carga 220 esteja ilustrado na figura 2, qualquer elemento de armazena
Petição 870190116745, de 12/11/2019, pág. 28/53
21/33 mento temporário de acesso, tal como um elemento de armazenamento temporário de armazenamento pode operar de maneira similar. Portanto, o elemento de armazenamento temporário de carga 220 será discutido em detalhes abaixo para ilustrar operação exemplificativa de um elemento de armazenamento temporário de acesso; O elemento de armazenamento temporário de carga 220 inclui uma pluralidade de entradas de elemento de armazenamento temporário de carga, tais como as entradas 226 - 233. Quando uma operação de carga é encontrada, uma entrada de elemento de armazenamento temporário de carga é criada/armazenada em elemento de armazenamento temporário de carga 220. Em uma modalidade, o elemento de armazenamento temporário de carga 220 armazena entradas de elemento de armazenamento temporário de carga em ordem de programas, isto é, uma ordem em que as instruções ou operações são ordenadas no código de programa. Aqui, entrada de elemento de armazenamento temporário de carga mais nova 226, isto é, a entrada de elemento de armazenamento temporário de carga armazenada mais recentemente, é referenciada por indicador de final de carga 235. Em contraste, a entrada de elemento de armazenamento temporário de carga mais antiga 230, que não é uma carga sênior, é referenciada por indicador de início de carga 236.
[0054] Em um elemento de processamento de execução em ordem, operações de carga são executadas na ordem de programa armazenada no elemento de armazenamento temporário de carga. Como um resultado, as entradas de elemento de armazenamento temporário mais antigas são executadas primeiro e indicador de início de carga 236 é redirecionado para 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 qualquer ordem, conforme programado. Contudo, entradas são, tipicamente, removidas, isto é, desalocadas do
Petição 870190116745, de 12/11/2019, pág. 29/53
22/33 elemento de armazenamento temporário de carga, em ordem de programa. Como um resultado, o indicador de início de carga 236 e indicador final de carga 235 operam de maneira similar entre os dois tipos de execução.
[0055] Em uma modalidade, cada entrada de elemento de armazenamento temporário de carga, tal como a entrada 230, inclui campo de atualização de memória 225, que também pode ser referido como um campo de rastreamento, um campo de bits de cache ajustado e um campo de bits de transação de atualização. A entrada de elemento de armazenamento temporário de carga 230 pode incluir qualquer tipo de informação, tal como o valor de atualização de memória, um valor de indicador, uma referência a uma operação de carga associada, uma referência a um endereço associado com a operação de carga, um valor carregado de um endereço e outros valores de elemento de armazenamento temporário de carga associados, flags ou referências.
[0056] Como um exemplo, suponhamos que uma operação de carga associada 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 cache ou buscado em resposta a uma falta na cache 270, suponhamos que o elemento referenciado pelo endereço de memória do sistema reside, correntemente, na linha 271a de cache. Como um resultado, quando a linha 271a de cache está carregada durante execução de uma seção crítica, o bit de rastreamento de leitura 271r deve ser atualizado para indicar que a linha de cache associada 271a foi acessada durante uma pendência da seção crítica.
[0057] Quando a operação de carga é alocada, o campo de atualização de memória 225 é atualizado com base em um valor de fend 205. Em resposta à fend 205, a manutenção de um valor zero para indicar que a operaçã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
Petição 870190116745, de 12/11/2019, pág. 30/53
23/33 indicar que nenhum acesso de pré-retirada ao bit de rastreamento 271 deve ser feito. Note que a atualização de um bit, de um valor ou de um campo não indica, necessariamente, uma mudança no bit, no valor ou no campo. Por exemplo, se o campo 225 já estiver atualizado para um zero lógico, então, a atualização para um zero lógico inclui, potencialmente, a reescrita de um zero lógico no campo 225, bem como nenhuma ação para deixar o campo 225 mantendo um zero lógico.
[0058] Em contraste ao cenário discutido acima, se fend 205 mantém um valor não-zero mediante alocação da operação de carga, então, o campo 225 é ajustado para um valor de pré-retirada, tal como uma lógica um, para indicar que um acesso de pré-retirada ao bit de rastreamento 271r deve ser realizado. Em uma modalidade, a lógica de atualização 210 é atualizar o campo 225 mediante alocação da operação de carga associada com a entrada 230. Como um exemplo, a lógica de atualização 210 inclui um registro ou outra lógica para ler/manter um valor corrente de fend 205 e lógica para atualizar o campo 225 na entrada 230. Aqui, um acesso de pré-retirada inclui qualquer acesso para atualizar o bit de rastreamento de leitura 271r antes da retirada da operação de carga associada com a entrada 230. Em uma modalidade, quando o campo 225 mantém o valor de préretirada; uma atualização para o bit 271r é iniciada em resposta a uma expedição da operação de carga associada com a entrada 230. Em outras palavras, quando uma carga associada com a entrada 230 é expedida, um acesso ao bit de atualização 271r é programado, se o campo 225 mantém um valor de pré-retirada. Em contraste, se o campo 225 mantém um valor de não pré-retirada, tal como um zero lógico, então, nenhum acesso é programado com a expedição.
[0059] Contudo, em um processador de execução fora de ordem, instruções/operações podem ser executadas fora de ordem. Em uma instância, uma carga de seção não-crítica subsequente pode ser alo
Petição 870190116745, de 12/11/2019, pág. 31/53
24/33 cada, antes que uma instrução de fim da seção crítica corrente seja retirada para decrementar fend 205. Como um resultado, a entrada de elemento de armazenamento temporário de carga associada com a carga de seção não-crítica inclui um valor de pré-retirada, que leva a rastreamento de acesso espúrio, isto é, rastreamento da carga no cache ainda que não esteja dentro de uma seção crítica. Contudo, rastreamento de acesso espúrio não leva a dados incorretos e pode resultar raramente em abortos espúrios devido à detecção de contenção de dados incorreta.
[0060] Alternativamente, suponhamos que uma carga de uma seção crítica subsequente seja alocada antes da retirada da instrução de término da seção crítica corrente. A entrada de elemento de armazenamento temporário de carga associada com a carga manterá um valor de pré-retirada. Contudo, se a instrução de término for agora retirada antes que a carga seja expedida, os campos de rastreamento de atualização no elemento de armazenamento temporário de carga, incluindo a entrada de elemento de armazenamento temporário de carga associada mantendo o valor de pré-retirada são reconfigurados. Em consequência, com a expedição da carga nenhum acesso de préretirada é programado. Aqui, outro elemento de processamento pode atualizar a localização carregada e nenhum conflito de dados é detectado, porque os campos de rastreamento de acesso não rastrearam um acesso.
[0061] Portanto, com a retirada de uma operação de carga, se campo de atualização de memória 225 da entrada de elemento de armazenamento temporário de carga 230, que está associada com a operação de carga, inclui um valor de reajuste, tal como 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 é incrementada quando uma instrução de seção crítica inicial é retirada, em
Petição 870190116745, de 12/11/2019, pág. 32/53
25/33 lugar de alocada como para fend 205. Adicionalmente, Bend 215 é decrementada em resposta à retirada de uma operação de seção crítica final. Se Bend mantém um valor não-zero, indicando uma execução dentro de uma seção crítica e o campo 225 mantém um valor de reajuste, como discutido acima, então um acesso de pós-retirada à cache 270 para atualizar o bit de rastreamento de leitura 271r é programado. [0062] 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 e que essa operação pode ocorrer em qualquer ordem. No tempo 1 (t1), uma instruçã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ítica inicial é retirada, o que aumenta Bend 215 para um. Em t3, uma operação de seção crítica inicial dois é alocada, resultando em fend 205 para ser incrementada para dois. A seguir, uma carga de seção crítica dois é alocada no tempo t4, que é para carga da linha 271a da cache 270. Uma vez que 205 mantém um valor de dois, isto é, um valor não-zero, a lógica de atualização 210 ajusta o campo de rastreamento de acesso 225 na entrada de elemento de armazenamento temporário de carga 230 para um valor de préretirada de uma lógica um. Note que a entrada de elemento de armazenamento temporário de carga 230 está associada com a carga da seção crítica dois.
[0063] Em t5, embora alocação não fosse ilustrada, uma operação de seção crítica final um é retirada, o que resulta em fend 205 sendo decrementada para um e Bend 215 sendo decrementada para zero. Em resposta à Bend 215 sendo decrementada para zero, campo de rastreamento de acesso 225 é reajustado para zero. A carga da seção crítica dois é expedida em t6; contudo, o campo de rastreamento de atualização/acesso mantém um zero, assim, nenhum acesso de pré
Petição 870190116745, de 12/11/2019, pág. 33/53
26/33 retirada à cache 270 é programado. Como um resultado, o bit 271r permanece em um estado padrão, indicando nenhum acesso durante a seção crítica dois. Em t7, a operação da seção crítica inicial dois é retirada, o que incrementa Bend 215 para um.
[0064] 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ém um valor não-zero, isto é, um. Como um resultado daquelas condições tomadas pela lógica de atualização 260, um acesso de pré-retirada à cache 270 é programado. O bit 271r é atualizado para indicar que um acesso à linha 271a ocorreu durante execução de seção crítica dois. Como pode ser visto, o potencial de cargas de não rastreamento de seções críticas consecutivas 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 para uma seção crítica consecutiva subsequente, onde atualizações de pré-retirada são realizadas. No exemplo acima, seções críticas consecutivas são determinadas do campo de atualização de memória 225 mantendo um valor zero e Bend 215 mantendo um valor não-zero. Em outras palavras, seções críticas consecutivas, em uma modalidade, estão onde um final de uma primeira operação de seção crítica não é retirado antes de um início de uma segunda operação de seção crítica ser alocado. Aqui, pode haver umas poucas ou muitas operações nãotransacionais alocadas e/ou executadas entre seções críticas. Contudo, qualquer método para detectar/determinar seções críticas consecutivas pode ser utilizado.
[0065] A figura 5 ilustra a linha de tempo de Seção Crítica Consecutiva Exemplificativa [0066] Acessos de pós-retirada para atualizar campos de rastreamento de acesso podem ser realizados de qualquer maneira. Em uma
Petição 870190116745, de 12/11/2019, pág. 34/53
27/33 modalidade, elementos de armazenamento temporário de acesso são capazes de maneira acessos seniores para permitir acessos de pósretirada. Conforme ilustrado na figura 2, elemento de armazenamento temporário de carga 220 inclui porção de carga sênior 250 para manter entradas de elemento de armazenamento temporário de carga sênior 231 - 233. Quando uma carga é retirada, tal como uma carga associada com a entrada de elemento de armazenamento temporário de carga 230, indicador de início de carga 236 é dirigido para a entrada mais antiga seguinte 229 e a entrada 230 se torna parte da porção de carga sênior 250. Se uma entrada de elemento de armazenamento temporário de carga 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 225 mantendo um valor de pré-retirada ou o acesso não estava dentro de uma seção crítica, então, ela pode ser imediatamente desalocada do elemento de armazenamento temporário de carga 220. Contudo, quando a entrada 230 é apontada pelo indicador de início de carga 237, então, um acesso de pós-retirada é programado por um programados para atualizar o campo de rastreamento de leitura 271r. Um pedido copendente intitulado “A POSTRETIRE SCHEME FOR TRACKING TENTATIVE ACCESSES DURING TRANSACTIONAL EXECUTION,” com número de série de pedido 11/517.029 discute em mais detalhes entradas de elemento de armazenamento temporário de acesso sênior e acesso de pós-retirada para rastreamento de acessos à memória por tentativa.
[0067] Fazendo referência a seguir à figura 3, uma modalidade de um fluxograma para um método de realização de atualizações híbridas de pré- e pós-retirada para rastreamento de acessos por tentativa é ilustrada. Em 305 no fluxo, é determinado se uma operação for parte de uma seção crítica consecutiva. Em uma modalidade, a seção crítica é uma seção crítica de memória transacional. Em outra modalidade, a
Petição 870190116745, de 12/11/2019, pág. 35/53
28/33 seção crítica é uma seção crítica detectada de HLE. Como mencionado acima, uma seção crítica consecutiva, em uma modalidade, inclui uma operação de seção crítica de início de seção crítica alocada antes que outra seção crítica final de seção crítica pendente seja retirada. Como um exemplo, a alocação e a retirada são determinadas de contadores, tais como um contador de estágio inicial e um contador de estágio final, conforme descrito acima. Em consequência, seções críticas consecutivas podem seguir, imediatamente, uma à outra em código, ou em contraste, pode haver operações não transacionais entre seções críticas consecutivas.
[0068] Se a operação for parte de uma seção crítica nãoconsecutiva, então, em 310 no fluxo, um acesso de pré-retirada à memória para atualizar informação de rastreamento é realizado. Em uma modalidade, informação de rastreamento inclui bits/campos de leitura e escrita para indicar se leituras e escritas, respectivamente, ocorreram durante uma pendência da seção crítica. Como um exemplo, com a expedição da operação, um acesso à memória é planejado para atualizar bits/campos de leitura e escrita.
[0069] Em contraste, se a operação for parte de uma seção crítica consecutiva, então, em 320 no fluxo, um acesso de pós-retirada à memória para atualizar a informação de rastreamento é realizado. Em outras palavras, se uma operação de seção crítica final de seção crítica prévia não tiver sido retirada e uma operação de transação de início de seção crítica consecutiva corrente tiver sido alocada, então, quando a seção crítica final prévia é retirada, os dados de rastreamento de pré-retirada para a seção crítica consecutiva corrente podem ser reajustados ou de outro modo afetados. Portanto, neste exemplo, acessos à memória da seção crítica consecutiva são rastreados pós-retirada. Em uma modalidade, com a retirada da operação, uma entrada de elemento de armazenamento temporário de acesso , associada com a
Petição 870190116745, de 12/11/2019, pág. 36/53
29/33 operação, é feita uma entrada de elemento de armazenamento temporário de acesso sênior. Em resposta à operação se tornar um acesso sênior, uma atualização para a informação de rastreamento é planejada em pós -retirada da operação.
[0070] As figuras 4a - 4c ilustram modalidades de fluxogramas para um mé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 uma operação de seção crítica é detectado. Em uma modalidade, a operação de seção crítica inicial é uma operação de Carga com Intenção de Armazenamento (L_S_I). Um exemplo de detecção e predição de seções críticas é discutido no pedido copendente número de série 11/599.009, conforme discutido acima.
[0071] Em outra modalidade, a operação de seção crítica inicial inclui uma operação de transação de início. Com frequência, um compilador insere operações de transação de início. Por exemplo, uma chamada de função de transação de início pode ser colocada antes que uma seção crítica desempenhe 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ção crítica de início é alocada. Note que mais de uma operação de seção crítica de início podem ser incluídas e alocadas. Continuando o exemplo acima, a operação de L_S_I é alocada.
[0072] Em 415 do fluxo, a contagem de fend é incrementada em resposta à alocação de operação de seção crítica de início. Note que o fluxograma 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 como entrada em outras decisões no fluxo. Embora o fluxo 415 influencie o valor de contagem de fend através do incremento de outros fluxos, tais como fluxo 440 da figura 4b, também influenciam o valor da contagem de fend.
Petição 870190116745, de 12/11/2019, pág. 37/53
30/33 [0073] 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 de seção crítica de início é um L_S_I, a entrada de carga é retirada e, potencialmente, desalocada, mais tarde de um elemento de armazenamento temporário de carga. Em 424 do fluxo, uma contagem de Bend é incrementada em resposta à retirada da operação de seção crítica de início. Similar ao fluxo A de decisão, o fluxo B de decisão toma incrementos de Bend como uma entrada.
[0074] 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 retirada em 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 transação de início, um compilador pode inserir operações para desempenha várias tarefas, tais como validação, recuperação e restabelecimento.
[0075] Em 440 e 445 nos fluxos fend e Bend são decrementados em resposta à retirada da operação de seção crítica final. Aqui, com uma seção crítica de HLE, comparação de endereço pode ser requerida, conforme referido acima, para determinar uma final de HLE de operação de seção crítica de início. Frequentemente, um endereço não está disponível com a alocação da operação, ainda que, em uma modalidade, fend pode ser decrementado com 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. Como mencionado acima, os decrementos de fend e Bend são tomados como entradas nos fluxos de decisão A e B, respectivamente. Embora não ilustrado, um campo de acesso de atualização, que é discutido em mais detalhes em referência à figura 4c, pode ser reajustado, limpo ou atualizado em resposta à Bend ser decrementado para zero.
[0076] Voltando à figura 4c, uma operação de carga é alocada em
Petição 870190116745, de 12/11/2019, pág. 38/53
31/33
450 do fluxo. Em 455 do fluxo, é determinado se fend é não-zero. Os fluxos de decisã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 continua 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 carga está 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 de elemento de armazenamento temporário de carga associada com a operação de carga é atualizada para indicar que um acesso de pré-retirada a um campo de rastreamento de carga deve ser realizado em 465 do fluxo.
[0077] Em 470 de fluxo, a carga é expedida. Se o campo de acesso for ajustado para um valor de acesso de pré-retirada em 465 do fluxo, conforme determinado no fluxo de decisão 475, então, um acesso de pré-retirada ao campo de rastreamento de carga é iniciado em 480 do fluxo. Em uma modalidade, um planejador planeja um acesso com base no campo de acesso sustentando um valor de pré-retirada mediante expedição de uma operação de carga associada. Após o acesso de pré-retirada ser iniciado ou após 475 do fluxo de decisão diretamente, a operação de carga é para retirada em 485 do fluxo.
[0078] Em resposta à retirada da operação de carga, é determinado se Bend é não-zero e o campo de acesso indica nenhum acesso de pré-retirada em 490 do fluxo. Note que o fluxo de decisão B é uma entrada em 490 do fluxo. Se Bend é não-zero e o campo de acesso indica nenhum acesso de pré-retirada, então, em 495 do fluxo uma pósretirada atualizada para o campo de rastreamento de carga é iniciada. Caso contrário, a execução continua como normal.
[0079] Conforme ilustrado acima, rastreamento de acesso de préretirada pode ser realizado para uma maioria de seções críticas. Con
Petição 870190116745, de 12/11/2019, pág. 39/53
32/33 tudo, para assegurar rastreamento de acesso válido, atualizações de pós-retirada podem ser realizadas para seções críticas consecutivas. Portanto, através da realização de uma maioria de atualizações de pré-retirada, energia pode ser poupada por não ter que acessar uma cache duas vezes, isto é, uma vez para um acesso e uma vez para uma atualização de informação de rastreamento. Porém, a precisão do rastreamento de dados é mantida através do uso de algumas atualizações de pós-retirada para a informação de rastreamento.
[0080] As modalidades de métodos, software, firmware ou código apresentadas acima podem ser implementadas via instruções ou código armazenado em um meio acessível por máquina ou legível em máquina, que são executáveis por um elemento de processamento. Um meio acessível/legível em máquina inclui quaisquer mecanismos que proporcione (isto é, armazene e/ou transmita) informação em uma forma legível por uma máquina, tal como um computador ou sistema eletrônico. Por exemplo, um meio acessível por máquina inclui memória de acesso randômico (RAM), tal como uma RAM estática (SRAM) ou RAM dinâmica (DRAM); memória somente de leitura (ROM); meio de armazenamento magnético ou ótico; e dispositivos de memória instantânea. Como outro exemplo, um meio acessível/legível por máquina inclui qualquer mecanismo que receba, copie, armazene, transmita ou de outro modo manipule sinais elétricos, óticos, acústicos ou de outra forma propagados (por exemplo, ondas portadoras, sinais de infravermelho, sinais digitais); etc., incluindo as modalidades de métodos, software, firmware ou código apresentados acima.
[0081] Referência por toda esta especificação a uma modalidade significa que um aspecto, estrutura ou característica particular descrita em conexão com a modalidade está incluído em uma modalidade da presente invenção e não é requerido que esteja presente em todas as modalidades discutidas. Desse modo, as aparências das frases em
Petição 870190116745, de 12/11/2019, pág. 40/53
33/33 uma modalidade em vários locais por toda esta especificação não estão, necessariamente, se referindo todas à mesma modalidade. Além disso, os aspectos, estruturas ou características podem ser combinados em qualquer maneira adequada em uma ou mais modalidades. [0082] Na especificação precedente, uma descrição detalhada foi dada com referência às modalidades exemplificativas específicas. Portanto, será evidente que várias modificações e mudanças podem ser feitas sem afastamento do espírito e do escopo mais amplos da invenção, conforme apresentado nas reivindicações anexas. A especificação e os desenhos são, em consequência, para serem considerados em um sentido ilustrativo em lugar de um sentido restritivo. Além disso, o uso precedente de modalidade e outra linguagem exemplificativa não se refere, necessariamente, à mesma modalidade ou ao mesmo exemplo, mas pode se referir às modalidades diferentes e distintas, bem como potencialmente à mesma modalidade.

Claims (16)

1/8
REIVINDICAÇÕES
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 processamento, em que uma linha da memória deve estar associada com um campo de rastreamento e em que a seção crítica de código deve incluir uma operação de referência à linha;
lógica de rastreamento associada com a memória, que, em resposta à seção crítica de código ser uma seção crítica consecutiva subsequente de código, deve iniciar uma pós-retirada da atualização da operação para o campo de rastreamento indicar um acesso à linha ocorrido durante execução da seção crítica e, em resposta à seção crítica de código não ser uma seção crítica consecutiva subsequente, iniciar uma pré-retirada da atualizaçã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;
em que a lógica de rastreamento inclui lógica de rastreamento de estágio inicial para determinar se a operação está incluída na seção crítica de código;
em que a lógica de rastreamento de estágio inicial inclui um contador de estágio inicial, o contador de estágio inicial sendo incrementado em resposta à alocação de um início de operação de seção crítica e em que a operação é determinada estar incluída na seção crítica de código em resposta ao contador de estágio inicial mantendo um valor maior do que um valor predeterminado do contador de estágio inicial;
em que a lógica de rastreamento ainda inclui um contador de estágio final a ser incrementado em resposta à retirada do início da operação de seção crítica e a ser decrementado em resposta à retiraPetição 870190116745, de 12/11/2019, pág. 42/53
2/8 da do final da operação de seção crítica;
ainda compreendendo um elemento de armazenamento temporário de acesso capaz de manter entradas de acesso seniores, o elemento de armazenamento temporário 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.
caracterizado pelo fato de que ainda compreende lógica de atualização acoplada ao contador de estágio inicial e ao elemento de armazenamento temporário de acesso, a lógica de atualização para atualizar a porção de campo de rastreamento da entrada de acesso para indicar que uma pré-retirada da atualização da operação para o campo de rastreamento deve ser iniciada em resposta ao contador de estágio inicial mantendo um valor maior do que o valor padrão mediante alocação da operação.
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o contador de estágio inicial deve ser decrementado em reposta à retirada de um final da operação de seção crítica e em que o início da operação de seção crítica inclui uma carga com intenção de armazenar (L_S_I).
3. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o contador de estágio inicial deve ser decrementado em resposta à alocação de um final da operação de seção crítica e em que o início da operação de seção crítica inclui operação de transação de início e o final da operação de seção crítica inclui uma operação de transação final.
4. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a operação é uma operação de carga, o elemento de armazenamento temporário de acesso inclui um elemento de armazenamento temporário de carga capaz de manter entradas de carga seniores e a entrada de acesso inclui uma estrada de carga corres-
Petição 870190116745, de 12/11/2019, pág. 43/53
3/8 pondente à operação de carga.
5. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a lógica de atualização deve ser acoplada ao contador de estágio final, a lógica de rastreamento para reconfigurar a porção de campo de rastreamento da entrada de acesso para indicar que nenhuma pré-retirada da atualização de operação para o campo de rastreamento deve ser iniciada em resposta ao contador de estágio final ser decrementado para um valor padrão.
6. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que a lógica de rastreamento, em resposta à seção crítica de código ser uma seção crítica consecutiva subseqüente de código, deve iniciar uma pós-retirada da atualização de operação para o campo de rastreamento, para indicar que um acesso à linha ocorreu durante execução da seção crítica compreende a lógica de rastreamento, em resposta à porção de campo de rastreamento da entrada de acesso ser reajustada e o contador de estágio final mantendo um valor maior do que o valor padrão, deve iniciar a pós-retirada da atualização de operação para o campo de rastreamento.
7. Sistema compreendendo um circuito integrado, o 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 um endereço, em que a CS deve ser demarcada por uma operação inicial de CS e uma operação final de CS;
uma memória acoplada à unidade de execução, a memória incluindo 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 linha de memória;
caracterizado pelo fato de que lógica de seção crítica associada com a unidade de execu
Petição 870190116745, de 12/11/2019, pág. 44/53
4/8 ção para determinar se a seção crítica é uma seção crítica consecutiva; e um elemento de armazenamento temporário de carga acoplado com a lógica de seção crítica para 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ção de memória para manter um primeiro valor a fim de indicar que uma atualização de pré-retirada para o campo de rastreamento de carga deve ser realizada, 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 para indicar que uma atualização de pós retirada para o campo de rastreamento de carga deve ser realizada, em resposta à lógica da seção crítica determinando que a seção crítica é uma seção crítica consecutiva; e uma memória de nível superior acoplada à parte integrada para armazenar um elemento em uma localização de memória associada com o endereço.
8. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que a lógica de 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 à retirada da operação de CS final;
um segundo contador a ser incrementado em resposta à retira da operação de CS de início e a ser decrementado em resposta à retirada da operação de CS final.
9. Sistema, de acordo com a reivindicação 8, caracterizado pelo fato de que o campo de atualização de memória deve ser ajustado para o primeiro valor, em resposta à detecção da operação de carga, quando o primeiro contador mantém um valor não-zero e em que o campo de atualização de memória deve ser reajustado para o
Petição 870190116745, de 12/11/2019, pág. 45/53
5/8 segundo valor, em resposta ao segundo contador ser decrementado para um valor de zero.
10. Sistema, de acordo com a reivindicação 9, caracterizado pelo fato de que a lógica de seção crítica para determinar se a seção crítica é uma seção crítica consecutiva 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 o segundo valor e o segundo contador manter um valor não-zero.
11. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que a operação de CS inicial é uma operação selecionada de um grupo que consiste em uma operação de transação inicial, uma operação de carga com intenção de armazenar (L_S_I) e uma combinação de operação de carga e de armazenamento e em que a operação de CS final é selecionada de um grupo que consiste em uma operação de transação final, uma operação de armazenamento correspondendo a uma operação prévia de L_S_I e uma operação combinada de aritmética e armazenamento.
12. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o elemento de armazenamento temporário de carga é capaz de manter entradas de carga seniores e em que uma atualização de pós-retirada para a linha de memória deve ser realizada quando a entrada de carga é referenciada como uma entrada de carga sênior de início no elemento de armazenamento temporário de carga.
13. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que as atualizações de pré-retirada e pós-retirada para o campo de rastreamento de carga e para atualizar o campo de rastreamento para indicar que uma carga da linha de memória ocorreu durante a execução da seção crítica.
14. Método compreendendo:
realização de uma atualização de pré-retirada para um pri
Petição 870190116745, de 12/11/2019, pág. 46/53
6/8 meiro campo de rastreamento de acesso para indicar que um acesso a uma primeira linha de memória, que está associado com o primeiro campo de rastreamento de acesso, foi acessado durante execução de uma primeira seção crítica pendente; e realização de uma atualização de pós-retirada para o segundo campo de rastreamento de acesso para indicar que um acesso a uma segunda linha de memória, que está associado com o segundo campo de rastreamento de acesso, foi acessado durante a execução de uma segunda seção crítica pendente;
ainda compreendendo a determinação se a primeira seção crítica pendente é uma seção crítica pendente não-consecutiva e determinação se a segunda seção crítica pendente é uma seção crítica pendente consecutiva;
caracterizado pelo fato de que a determinação se a primeira seção crítica pendente é uma seção crítica pendente nã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 à retirada de uma operação de seção crítica final;
atualização de um campo em uma entrada de elemento de armazenamento temporário de acesso, 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 inicial representando um valor não-zero, mediante alocação do acesso; e determinação se a primeira seção crítica pendente é uma seção crítica não consecutiva em resposta ao campo na entrada do elemento de armazenamento temporário de acesso manter o valor de pré-retirada mediante retirada do acesso.
15. Método, de acordo com a reivindicação 14, caracteri
Petição 870190116745, de 12/11/2019, pág. 47/53
7/8 zado pelo fato de que o campo na primeira entrada de elemento de armazenamento temporário de acesso mantendo o primeiro valor é para indicar que a atualização de pré-retirada para o primeiro campo de rastreamento de acesso deve ser realizada, em resposta à expedição do primeiro acesso.
16. Método compreendendo:
realização de uma atualização de pré-retirada para um primeiro campo de rastreamento de acesso para indicar que um acesso a uma primeira linha de memória, que está associado com o primeiro campo de rastreamento de acesso, foi acessado durante execução de uma primeira seção crítica pendente; e realização de uma atualização de pós-retirada para o segundo campo de rastreamento de acesso para indicar que um acesso a uma segunda linha de memória, que está associado com o segundo campo de rastreamento de acesso, foi acessado durante a execução de uma segunda seção crítica pendente;
ainda compreendendo a determinação se a primeira seção crítica pendente é uma seção crítica pendente não-consecutiva e determinação se a segunda seção crítica pendente é uma seção crítica pendente consecutiva;
caracterizado pelo fato de que a segunda seção crítica pendente é uma seção crítica pendente consecutiva compreende:
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 à retirada de uma operação de seção crítica final;
atualização de um campo em uma entrada de elemento de armazenamento temporário de acesso, que corresponde a um acesso associado com a segunda linha de memória, para um valor de nãoacesso, em resposta à contagem de estágio final decrementando para
Petição 870190116745, de 12/11/2019, pág. 48/53
8/8 zero; e determinação se a segunda seção crítica pendente é uma seção crítica consecutiva em resposta ao campo na entrada do elemento de armazenamento temporário de acesso manter o valor de não-acesso mediante retirada do acesso e a contagem de estágio final mantendo um valor não-zero.
BRPI0805218-2A 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”. BRPI0805218B1 (pt)

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 BRPI0805218A2 (pt) 2010-08-17
BRPI0805218B1 true 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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
US20190065160A1 (en) 2019-02-28
CN101533363A (zh) 2009-09-16
CN101533363B (zh) 2014-09-17
BRPI0805218A2 (pt) 2010-08-17

Similar Documents

Publication Publication Date Title
EP2075690B1 (en) Mechanism for strong atomicity in a transactional memory system
US8195898B2 (en) Hybrid transactions for low-overhead speculative parallelization
US8838908B2 (en) Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US8627030B2 (en) Late lock acquire mechanism for hardware lock elision (HLE)
EP2513779B1 (en) Mechanisms to accelerate transactions using buffered stores
US8364911B2 (en) Efficient non-transactional write barriers for strong atomicity
US8200909B2 (en) Hardware acceleration of a write-buffering software transactional memory
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8209689B2 (en) Live lock free priority scheme for memory transactions in transactional memory
US8132158B2 (en) Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US20080005504A1 (en) Global overflow method for virtualized transactional memory
TW201037524A (en) Registering a user-handler in hardware for transactional memory event handling
BRPI0805218B1 (pt) “Aparelho, sistema e método para 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.