BR112017017306A2 - método para acessar diretório de dados de visitante em um sistema com múltiplos núcleos, dispositivo, sistema com múltiplos núcleos e unidade de armazenagem de diretório - Google Patents

método para acessar diretório de dados de visitante em um sistema com múltiplos núcleos, dispositivo, sistema com múltiplos núcleos e unidade de armazenagem de diretório Download PDF

Info

Publication number
BR112017017306A2
BR112017017306A2 BR112017017306A BR112017017306A BR112017017306A2 BR 112017017306 A2 BR112017017306 A2 BR 112017017306A2 BR 112017017306 A BR112017017306 A BR 112017017306A BR 112017017306 A BR112017017306 A BR 112017017306A BR 112017017306 A2 BR112017017306 A2 BR 112017017306A2
Authority
BR
Brazil
Prior art keywords
entry
share
single pointer
data block
visitor
Prior art date
Application number
BR112017017306A
Other languages
English (en)
Other versions
BR112017017306B1 (pt
Inventor
Fang Lei
Liu Peng
Cai Weiguang
Gu Xiongli
Original Assignee
Huawei Tech Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Tech Co Ltd filed Critical Huawei Tech Co Ltd
Publication of BR112017017306A2 publication Critical patent/BR112017017306A2/pt
Publication of BR112017017306B1 publication Critical patent/BR112017017306B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

a presente invenção refere-se a um método para acessar um diretório de dados de visitante em um sistema com múltiplos núcleos, um dispositivo de cachê de diretório, um sistema com múltiplos núcleos e uma unidade de armazenamento de diretório. o método inclui: receber (s610) um primeiro pedido de acesso enviado por um primeiro núcleo do processador, no qual o primeiro pedido de acesso é usado para acessar uma entrada, a qual corresponde a um primeiro bloco de dados, em um diretório; determinar (s620), de acordo com o primeiro pedido de acesso, que um arranjo de entrada com um único ponteiro possui uma primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados; ao determinar (s630), de acordo com a primeira entrada de ponteiro único, que um arranjo de entrada de compartilhamento possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar múltiplos visitantes do primeiro bloco de dados de acordo com a primeira entrada de compartilhamento. de acordo com modalidades da presente invenção, os recursos de armazenagem ocupados por um diretório podem ser reduzidos.

Description

Relatório Descritivo da Patente de Invenção para MÉTODO PARA ACESSAR DIRETÓRIO DE DADOS DE VISITANTE EM UM SISTEMA COM MÚLTIPLOS NÚCLEOS, DISPOSITIVO, SISTEMA COM MÚLTIPLOS NÚCLEOS E UNIDADE DE ARMAZENAGEM DE DIRETÓRIO.
CAMPO TÉCNICO [001] A presente invenção refere-se ao campo das tecnologias de informação e mais especificamente, a um método para acessar um diretório de dados de visitante em um sistema com múltiplos núcleos, um dispositivo de cachê de diretório, um sistema com múltiplos núcleos e uma unidade de armazenamento de diretório.
ANTECEDENTES [002] Na aplicação de um processador com múltiplos núcleos (Multi-Core) ou um processador com vários núcleos (Many Core), existem alguns cenários nos quais um bloco de dados é acessado por um ou mais núcleos de processador do processador. Neste cenário, o bloco de dados é geralmente armazenado em um espaço de armazenagem compartilhada para ser acessado por um ou mais desses núcleos de processador. Para acelerar o acesso ao bloco de dados, uma cópia do bloco de dados é criada em cachês privados em um ou mais núcleos de processador que acessaram o bloco de dados (ou seja, o bloco de dados é armazenado no cachê privado do núcleo do processador). Desse modo, quando um núcleo que havia acessado o bloco de dados precisa acessar o bloco de dados novamente, o núcleo só precisa ler o bloco de dados no cachê privado do núcleo. Visto que a cópia do bloco de dados é armazenada nos cachês privados que estão em um ou mais desses núcleos de processador e que foram acessados, a coerência das cópias do bloco de dados que estão em cachês privados em múltiplos núcleos precisa ser mantida para que se resolva um problema de coerência das cópias, o qual é referido como um pro
Petição 870170057952, de 11/08/2017, pág. 10/157
2/54 blema de coerência de cachê (Coerência de Cachê). Um princípio básico de resolução do problema de coerência de cachê é: quando uma cópia do bloco de dados em um núcleo é mudada, as cópias do bloco de dados em outros núcleos precisam ser atualizadas ou o bloco de dados precisa ser invalidado (ou seja, o bloco de dados é deletado). Portanto, um núcleo no processador com múltiplos núcleos que armazena uma cópia do bloco de dados precisa ser determinado (ou seja, um visitante do bloco de dados é determinado).
[003] Uma solução de coerência de cachê comumente usada inclui uma solução de coerência baseada em Snooping e uma solução de coerência baseada em diretório. Em relação à primeira, quando uma cópia de um bloco de dados em um núcleo é mudada, uma mensagem de transmissão indicando que o bloco de dados foi mudado precisa ser enviada para outros núcleos nos quais as cópias do bloco de dados estão armazenadas para instruir esses núcleos a atualizar as cópias do bloco de dados ou invalidar o bloco de dados. Em relação à última, um diretório de acesso de um bloco de dados é usado para registrar um visitante (ou seja, um núcleo no qual o bloco de dados é armazenado em uma lista de processadores com múltiplos núcleos) do bloco de dados. Quando uma cópia do bloco de dados em um núcleo é mudada, uma mensagem de notificação indicando que o bloco de dados foi mudado é enviada apenas para os outros visitantes. À medida que a quantidade de núcleos de processador aumenta continuamente, a solução de coerência baseada em Snooping sofre com gargalos de desempenho e largura de banda (a transmissão da mensagem precisa ocupar uma grande quantidade de recursos de processamento e uma grande quantidade de largura de banda), enquanto um protocolo de coerência baseado em diretório é amplamente aplicado em virtude de sua melhor escalabilidade.
[004] Em uma solução convencional de coerência baseada em
Petição 870170057952, de 11/08/2017, pág. 11/157
3/54 diretório, uma lista de visitantes de um bloco de dados é registrada em um diretório na forma de um vetor. Para um sistema de processador com múltiplos núcleos que contém N núcleos, cada entrada no diretório no diretório inclui um vetor de N-bit e se cada bit no vetor for 1, isso indica se há uma cópia de um bloco de dados nos N núcleos. Neste mecanismo, a quantidade de entradas no diretório cresce linearmente de acordo com o aumento na quantidade de núcleos, porém, o tamanho do cachê que é usado para armazenar uma cópia de um bloco de dados não cresce de acordo com o aumento na quantidade de núcleos. Como um resultado, a proporção entra a quantidade de bits ocupados pelo diretório e a quantidade de bits ocupados pelo bloco de dados cresce de acordo com o aumento na quantidade de núcleos. Consequentemente, o espaço de armazenagem usado para armazenar um diretório se torna maior, o que geral um desafio de espaço de cachê em um processador em chip com múltiplos núcleos.
SUMÁRIO [005] As modalidades da presente invenção provêm um método para acessar um diretório de dados de visitante em um sistema com múltiplos núcleos, um dispositivo de cachê de diretório, um sistema com múltiplos núcleos e uma unidade de armazenamento de diretório, a qual pode reduzir os recursos de armazenagem ocupados por um diretório de dados de visitante.
[006] De acordo com um primeiro aspecto, um método para acessar um diretório de dados de visitante em um sistema com múltiplos núcleos é provido e aplicado ao sistema com múltiplos núcleos, no qual o sistema com múltiplos núcleos inclui um cachê de dados compartilhados e múltiplos núcleos de processador, um bloco de dados no cachê de dados compartilhados é copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador, o sistema com múltiplos núcleos também inclui o diretório de dados de visi
Petição 870170057952, de 11/08/2017, pág. 12/157
4/54 tante, o diretório de dados de visitante é usada para registrar as informações sobre um visitante do bloco de dados no cachê de dados compartilhados e o visitante do bloco de dados é o núcleo do processador no qual uma cópia do bloco de dados é armazenada;
o diretório inclui um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento, no qual cada entrada de ponteiro único no arranjo de entrada com um único ponteiro é usada para registrar as informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento, e cada entrada de compartilhamento no arranjo de entrada de compartilhamento é usada para registrar as informações sobre múltiplos visitantes de um bloco de dados; e o método inclui:
receber um primeiro pedido de acesso enviado por um primeiro núcleo do processador, no qual o primeiro pedido de acesso é usado para acessar uma entrada, a qual corresponde a um primeiro bloco de dados, no diretório;
determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro possui uma primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados; e ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar múltiplos visitantes do primeiro bloco de dados de acordo com a primeira entrada de compartilhamento.
[007] Com referência ao primeiro aspecto, em um primeiro modo
Petição 870170057952, de 11/08/2017, pág. 13/157
5/54 de implantação possível, a entrada de ponteiro único no arranjo de entrada com um único ponteiro também é usada para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos e o método também inclui:
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, um único visitante do primeiro bloco de dados ou que o primeiro bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
[008] Com referência ao primeiro aspecto ou ao primeiro modo de implantação possível do primeiro aspecto, em um segundo modo de implantação possível, depois do recebimento de um primeiro pedido de acesso enviado por um primeiro núcleo do processador, o método também inclui:
determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro não possui nenhuma entrada de ponteiro único que corresponde ao primeiro bloco de dados; e alocar, no arranjo de entrada com um único ponteiro, a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados no primeiro bloco de dados e registrar as informações sobre o primeiro núcleo do processador na primeira entrada de ponteiro único. [009] Com referência ao segundo modo de implantação possível do primeiro aspecto, em um terceiro modo de implantação possível, a alocação no arranjo de entrada com um único ponteiro da primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados no primeiro bloco de dados e o registro das informações sobre o primeiro núcleo do processador na primeira entrada de ponteiro único
Petição 870170057952, de 11/08/2017, pág. 14/157
6/54 incluem:
se o arranjo de entrada com um único ponteiro possuir uma entrada de ponteiro único não utilizada, selecionar a entrada de ponteiro único a partir da entrada de ponteiro único não utilizada como a primeira entrada de ponteiro único e registrar as informações sobre o primeiro núcleo do processador; ou selecionar a entrada de ponteiro único de acordo com um princípio do menos recentemente usado se o arranjo de entrada com um único ponteiro não possuir nenhuma entrada de ponteiro único não utilizada e se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento, registrar as informações sobre o único visitante, enviar uma mensagem de invalidação para o único visitante registrado e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro; ou se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento e indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos, transmitir uma mensagem de invalidação para todos os núcleos de processador e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro; ou se a entrada selecionada do único ponteiro estiver associada com uma entrada de compartilhamento, determinar, de acordo com a entrada de compartilhamento associada com a entrada selecionada do único ponteiro, os múltiplos visitantes registrados na entrada associada de compartilhamento, enviar uma mensagem de invalidação para os múltiplos visitantes registrados e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro.
Petição 870170057952, de 11/08/2017, pág. 15/157
7/54 [0010] Com referência ao segundo ou ao terceiro modo de implantação possível do primeiro aspecto, em um quarto modo de implantação possível, o método também inclui:
receber um segundo pedido de acesso enviado por um segundo núcleo do processador, no qual o segundo pedido de acesso é usado para acessar a entrada, a qual corresponde ao primeiro bloco de dados, no diretório;
determinar, de acordo com o segundo pedido de acesso, que o arranjo de entrada com um único ponteiro possui a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados;
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui nenhuma entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, que o único visitante do primeiro bloco de dados é o primeiro núcleo do processador; e alocar a primeira entrada de compartilhamento no arranjo de entrada de compartilhamento, estabelecer uma relação associativa entre a primeira entrada de ponteiro único e a primeira entrada de compartilhamento e registrar, na primeira entrada de compartilhamento, as informações sobre o primeiro núcleo do processador e as informações sobre o segundo núcleo do processador.
[0011] Com referência ao quarto modo de implantação possível do primeiro aspecto, em um quinto modo de implantação possível, a alocação da primeira entrada de compartilhamento no arranjo de entrada de compartilhamento inclui:
se o arranjo de entrada de compartilhamento possuir uma entrada de compartilhamento não utilizada, selecionar uma entrada de compartilhamento a partir da entrada de compartilhamento não utilizada como a primeira entrada de compartilhamento; ou
Petição 870170057952, de 11/08/2017, pág. 16/157
8/54 se o arranjo de entrada de compartilhamento não possuir nenhuma entrada de compartilhamento não utilizada e possuir uma entrada de compartilhamento que registra informações sobre um único visitante, selecionar a entrada de compartilhamento que registra as informações sobre o único visitante e gravar as informações registradas sobre o visitante na entrada de ponteiro único associada com a entrada selecionada de compartilhamento; ou selecionar uma entrada de compartilhamento de acordo com o princípio do menos recentemente usado se o arranjo de entrada de compartilhamento não possuir nem uma entrada de compartilhamento não utilizada nem uma entrada de compartilhamento que registra informações sobre um único visitante; e se a quantidade de visitantes registrados na entrada selecionada de compartilhamento for maior que um limite predeterminado, definir a entrada de ponteiro único associada com a entrada selecionada de compartilhamento para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos; ou se a quantidade de visitantes registrados na entrada selecionada de compartilhamento não for maior que um limite predeterminado, gravar as informações sobre um visitante dos visitantes registrados na entrada de ponteiro único associada com a entrada selecionada de compartilhamento e enviar uma mensagem de invalidação para os outros visitantes dos visitantes registrados.
[0012] Com referência a qualquer um dentre o primeiro aspecto ou o modo supracitados de implantação possíveis do primeiro aspecto, em um sexto modo de implantação possível, a entrada de ponteiro único inclui uma etiqueta, um bit de associação de compartilhamento e entrada e um único ponteiro, no qual uma etiqueta é usada para corresponder ao bloco de dados, o bit de associação de compartilhamento e entrada é usado para indicar se a entrada de ponteiro único está
Petição 870170057952, de 11/08/2017, pág. 17/157
9/54 associada com a entrada de compartilhamento e o único ponteiro é usado para registrar as informações sobre o único visitante do bloco de dados quando o bloco de dados possuir o único visitante e para registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento quando a entrada de ponteiro único estiver associada com a entrada de compartilhamento; e a entrada de compartilhamento inclui uma estrutura de registro do compartilhador e uma estrutura de associação, na qual a estrutura de registro do compartilhador é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados e a estrutura de associação é usada para associar a entrada de ponteiro único. [0013] Com referência ao sexto modo de implantação possível do primeiro aspecto, em um sétimo modo de implantação possível, a entrada de ponteiro único também inclui um bit de todos os compartilhamentos; e o bit de todos os compartilhamentos é usado para: quando a entrada de ponteiro único não estiver associada com a entrada de compartilhamento, indicar que o bloco de dados possui o único visitante ou indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
[0014] De acordo com um segundo aspecto, um dispositivo de cachê de diretório é provido, o qual inclui:
uma unidade de armazenamento de diretório configurada para armazenar um diretório de dados de visitante que está em um sistema com múltiplos núcleos, no qual o sistema com múltiplos núcleos inclui um cachê de dados compartilhados e múltiplos núcleos de processador, um bloco de dados no cachê de dados compartilhados é copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador, o diretório é usado para registrar as informações sobre um visitante do bloco de dados no cachê de dados compartilhados e o visitante do bloco de dados é o núcleo do processador no qual
Petição 870170057952, de 11/08/2017, pág. 18/157
10/54 uma cópia do bloco de dados é armazenada; e o diretório inclui um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento, no qual cada entrada de ponteiro único no arranjo de entrada com um único ponteiro é usada para registrar as informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento e cada entrada de compartilhamento no arranjo de entrada de compartilhamento é usada para registrar as informações sobre múltiplos visitantes de um bloco de dados; e uma unidade de execução configurada para:
receber um primeiro pedido de acesso enviado por um primeiro núcleo do processador, no qual o primeiro pedido de acesso é usado para acessar uma entrada, a qual corresponde a um primeiro bloco de dados, no diretório;
determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro possui uma primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados; e ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar múltiplos visitantes do primeiro bloco de dados de acordo com a primeira entrada de compartilhamento.
[0015] Com referência ao segundo aspecto, em um primeiro modo de implantação possível, a entrada de ponteiro único no arranjo de entrada com um único ponteiro também é usada para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos e a unidade de execução também é confi
Petição 870170057952, de 11/08/2017, pág. 19/157
11/54 gurada para:
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, um único visitante do primeiro bloco de dados ou que o primeiro bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
[0016] Com referência ao segundo aspecto ou ao primeiro modo de implantação possível do segundo aspecto, em um segundo modo de implantação possível, depois que a unidade de execução recebe o primeiro pedido de acesso enviado pelo primeiro núcleo do processador, a unidade de execução também é configurada para:
determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro não possui nenhuma entrada de ponteiro único que corresponde ao primeiro bloco de dados; e alocar, no arranjo de entrada com um único ponteiro, a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados no primeiro bloco de dados e registrar as informações sobre o primeiro núcleo do processador na primeira entrada de ponteiro único. [0017] Com referência ao segundo modo de implantação possível do segundo aspecto, em um terceiro modo de implantação possível, a unidade de execução também é configurada para:
se o arranjo de entrada com um único ponteiro possuir uma entrada de ponteiro único não utilizada, selecionar a entrada de ponteiro único a partir da entrada de ponteiro único não utilizada como a primeira entrada de ponteiro único e registrar as informações sobre o primeiro núcleo do processador; ou selecionar a entrada de ponteiro único de acordo com um
Petição 870170057952, de 11/08/2017, pág. 20/157
12/54 princípio do menos recentemente usado se o arranjo de entrada com um único ponteiro não possuir nenhuma entrada de ponteiro único não utilizada; e se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento e registrar as informações sobre o único visitante, enviar uma mensagem de invalidação para o único visitante registrado e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro; ou se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento e indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos, transmitir uma mensagem de invalidação para todos os núcleos de processador e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro; ou se a entrada selecionada do único ponteiro estiver associada com uma entrada de compartilhamento, determinar, de acordo com a entrada de compartilhamento associada com a entrada selecionada do único ponteiro, os múltiplos visitantes registrados na entrada associada de compartilhamento, enviar uma mensagem de invalidação para os múltiplos visitantes registrados e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro.
[0018] Com referência ao segundo ou ao terceiro modo de implantação possível do segundo aspecto, em um quarto modo de implantação possível, a unidade de execução também é configurada para: receber um segundo pedido de acesso enviado por um segundo núcleo do processador, no qual o segundo pedido de acesso é usado para acessar a entrada, a qual corresponde ao primeiro bloco de dados, no diretório;
Petição 870170057952, de 11/08/2017, pág. 21/157
13/54 determinar, de acordo com o segundo pedido de acesso, que o arranjo de entrada com um único ponteiro possui a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados;
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui nenhuma entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, que o único visitante do primeiro bloco de dados é o primeiro núcleo do processador; e alocar a primeira entrada de compartilhamento no arranjo de entrada de compartilhamento, estabelecer uma relação associativa entre a primeira entrada de ponteiro único e a primeira entrada de compartilhamento, e registrar, na primeira entrada de compartilhamento, as informações sobre o primeiro núcleo do processador e as informações sobre o segundo núcleo do processador.
[0019] Com referência ao quarto modo de implantação possível do segundo aspecto, em um quinto modo de implantação possível, a unidade de execução é configurada para:
se o arranjo de entrada de compartilhamento possuir uma entrada de compartilhamento não utilizada, selecionar uma entrada de compartilhamento a partir da entrada de compartilhamento não utilizada como a primeira entrada de compartilhamento; ou se o arranjo de entrada de compartilhamento não possuir nenhuma entrada de compartilhamento não utilizada e possuir uma entrada de compartilhamento que registra informações sobre um único visitante, selecionar a entrada de compartilhamento que registra as informações sobre o único visitante e gravar as informações registradas sobre o visitante na entrada de ponteiro único associada com a entrada selecionada de compartilhamento; ou selecionar uma entrada de compartilhamento de acordo
Petição 870170057952, de 11/08/2017, pág. 22/157
14/54 com o princípio do menos recentemente usado se o arranjo de entrada de compartilhamento não possuir nem uma entrada de compartilhamento não utilizada nem uma entrada de compartilhamento que registra um único visitante; e se a quantidade de visitantes registrados na entrada selecionada de compartilhamento for maior que um limite predeterminado, definir a entrada de ponteiro único associada com a entrada selecionada de compartilhamento para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos; ou se a quantidade de visitantes registrados na entrada selecionada de compartilhamento não for maior que um limite predeterminado, gravar as informações sobre um visitante dos visitantes registrados na entrada de ponteiro único associada com a entrada selecionada de compartilhamento e enviar uma mensagem de invalidação para os outros visitantes dos visitantes registrados.
[0020] Com referência a qualquer um do segundo aspecto ou omodo supracitados de implantação possíveis do segundo aspecto, em a sexto modo de implantação possível, a entrada de ponteiro único inclui uma etiqueta, um bit de associação de compartilhamento e entrada, e um único ponteiro, no qual a etiqueta é usada para corresponder ao bloco de dados, o bit de associação de compartilhamento e entrada é usado para indicar se a entrada de ponteiro único está associada com a entrada de compartilhamento, e o único ponteiro é usado para registrar as informações sobre o único visitante do bloco de dados quando o bloco de dados possuir o único visitante e para registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento quando a entrada de ponteiro único estiver associada com a entrada de compartilhamento; e a entrada de compartilhamento inclui uma estrutura de registro do compartilhador e uma estrutura de associação, no qual a estrutura de registro do compartilhador é usada para registrar as infor
Petição 870170057952, de 11/08/2017, pág. 23/157
15/54 mações sobre os múltiplos visitantes do bloco de dados e a estrutura de associação é usada para associar a entrada de ponteiro único.
[0021] Com referência ao sexto modo de implantação possível do segundo aspecto, em um sétimo modo de implantação possível, a entrada de ponteiro único também inclui um bit de todos os compartilhamentos, no qual o bit de todos os compartilhamentos é usado para: quando a entrada de ponteiro único não estiver associada com a entrada de compartilhamento, indicar que o bloco de dados possui o único visitante ou indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
[0022] De acordo com um terceiro aspecto, um sistema com múltiplos núcleos é provido, incluindo múltiplos núcleos de processador, um cachê de dados compartilhados e o dispositivo do cachê de diretório de acordo com o segundo aspecto ou qualquer modo de implantação possível do segundo aspecto.
[0023] De acordo com um quarto aspecto, uma unidade de armazenamento de diretório é provida configurada para armazenar um diretório que está em um sistema com múltiplos núcleos, no qual o sistema com múltiplos núcleos inclui um cachê de dados compartilhados e múltiplos núcleos de processador, um bloco de dados no cachê de dados compartilhados é copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador, o diretório é usado para registrar as informações sobre um visitante do bloco de dados no cachê de dados compartilhados e o visitante do bloco de dados é o núcleo do processador no qual uma cópia do bloco de dados é armazenada; e o diretório inclui:
um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento, no qual cada entrada de ponteiro único no arranjo de entrada com
Petição 870170057952, de 11/08/2017, pág. 24/157
16/54 um único ponteiro é usada para registrar as informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento; e cada entrada de compartilhamento no arranjo de entrada de compartilhamento é usada para registrar as informações sobre múltiplos visitantes de um bloco de dados.
[0024] Com referência ao quarto aspecto, em um primeiro modo de implantação possível, a entrada de ponteiro único inclui uma etiqueta, um bit de associação de compartilhamento e entrada, e um único ponteiro, no qual a etiqueta é usada para corresponder ao bloco de dados, o bit de associação de compartilhamento e entrada é usado para indicar se a entrada de ponteiro único está associada com a entrada de compartilhamento, e o único ponteiro é usado para registrar as informações sobre o único visitante do bloco de dados quando o bloco de dados possuir o único visitante e para registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento quando a entrada de ponteiro único estiver associada com a entrada de compartilhamento; e a entrada de compartilhamento inclui uma estrutura de registro do compartilhador e uma estrutura de associação, no qual a estrutura de registro do compartilhador é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados e a estrutura de associação é usada para associar a entrada de ponteiro único. [0025] Com referência ao primeiro modo de implantação possível do quarto aspecto, em um segundo modo de implantação possível, a entrada de ponteiro único inclui um bit de todos os compartilhamentos, no qual o bit de todos os compartilhamentos é usado para: quando a entrada de ponteiro único não estiver associada com a entrada de
Petição 870170057952, de 11/08/2017, pág. 25/157
17/54 compartilhamento, indicar que o bloco de dados possui o único visitante ou indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
[0026] Com referência ao primeiro ou o segundo modo de implantação possível do quarto aspecto, em um terceiro modo de implantação possível, a estrutura de registro do compartilhador é um vetor.
[0027] Com base nas soluções técnicas supracitadas, nas modalidades da presente invenção, uma estrutura de diretório incluindo um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento é usado. Quando um bloco de dados apenas possui um único visitante, apenas a entrada de ponteiro único é usada para registrar as informações sobre o visitante. Quando o bloco de dados possuir múltiplos visitantes, as informações sobre os visitantes são registradas em um modo que associa a entrada de ponteiro único com uma entrada de compartilhamento. No modo supracitado, o tamanho médio de uma entrada no diretório em um diretório pode ser relativamente consideravelmente comprimido e a perda de desempenho é relativamente pequena. Portanto, os recursos de armazenagem ocupados pelo diretório podem ser reduzidos e a escalabilidade do sistema pode ser aprimorada.
BREVE DESCRIÇÃO DOS DESENHOS [0028] Para descrever as soluções técnicas contidas nas modalidades da presente invenção com mais clareza, o trecho a seguir descreve brevemente os desenhos em anexo necessários para ilustrar as modalidades da presente invenção. Evidentemente, os desenhos em anexo mencionados na descrição a seguir mostram meramente algumas modalidades da presente invenção, e uma pessoa versada na técnica ainda pode derivar outros desenhos a partir desses desenhos em anexo sem esforços criativos.
[0029] A figura 1 é um diagrama esquemático de um sistema com
Petição 870170057952, de 11/08/2017, pág. 26/157
18/54 múltiplos núcleos ao qual as soluções técnicas contidas nas modalidades da presente invenção podem ser aplicadas;
[0030] A figura 2 é um diagrama esquemático de um diretório de acordo com uma modalidade da presente invenção;
[0031] A figura 3 é um diagrama esquemático da entrada de ponteiro único de acordo com uma modalidade da presente invenção;
[0032] A figura 4 é um diagrama esquemático de uma entrada de compartilhamento de acordo com uma modalidade da presente invenção;
[0033] A figura 5 é um diagrama esquemático de um diretório de acordo com outra modalidade da presente invenção;
[0034] A figura 6 é um fluxograma esquemático de um método de acesso ao diretório de acordo com uma modalidade da presente invenção;
[0035] A figura 7a é um fluxograma esquemático de um método de acesso ao diretório de acordo com outra modalidade da presente invenção;
[0036] A figura 7b é um fluxograma esquemático de um método de acesso ao diretório de acordo com outra modalidade da presente invenção;
[0037] A figura 8 é um fluxograma esquemático de um método de acesso ao diretório de acordo com outra modalidade da presente invenção;
[0038] A figura 9a é um fluxograma esquemático de um método de acesso ao diretório de acordo com outra modalidade da presente invenção;
[0039] A figura 9b é um diagrama esquemático da compressão de uma entrada de compartilhamento de acordo com uma modalidade da presente invenção;
[0040] A figura 10 é um diagrama em bloco esquemático de um
Petição 870170057952, de 11/08/2017, pág. 27/157
19/54 dispositivo de cachê de diretório de acordo com uma modalidade da presente invenção; e [0041] Afigura 11 é um diagrama esquemático de um sistema com múltiplos núcleos de acordo com uma modalidade da presente invenção.
DESCRIÇÃO DAS MODALIDADES [0042] O trecho a seguir descreve clara e completamente as soluções técnicas contidas nas modalidades da presente invenção com referência aos desenhos em anexo das modalidades da presente invenção. Evidentemente, as modalidades descritas são uma parte e não todas as modalidades da presente invenção. Desse modo, todas as outras modalidades obtidas por uma pessoa versada na técnica com base nas modalidades da presente invenção sem esforços criativos devem estar compreendidas dentro do escopo de proteção da presente invenção.
[0043] Ao longo deste relatório descritivo, o termo sistema de processador com múltiplos núcleos ou sistema com múltiplos núcleos refere-se a um sistema de processamento que inclui múltiplos núcleos de processador (Core). O sistema pode ser apresentado como um processador em chip com múltiplos núcleos ou um sistema de processamento de bordo com múltiplos núcleos. O processador em chip com múltiplos núcleos é um processador (Processador) no qual múltiplos núcleos de processador (Core) são integrados a um chip (Chip). O sistema de processamento de bordo com múltiplos núcleos refere-se a um sistema de processamento que é formado acondicionando-se separadamente cada núcleo de múltiplos núcleos de processador dentro de um processador e integrando-se os processadores a uma placa de circuito.
[0044] Um núcleo (Core) também é referido como um cerne e é o componente mais importante de uma CPU (Unidade de Processamen
Petição 870170057952, de 11/08/2017, pág. 28/157
20/54 to Central). O núcleo é composto por silício monocristalino por meio de um processo de produção particular. Toda a computação, comandos de recebimento/armazenagem e processamento de dados na CPU são executados por um núcleo do processador. O termo múltiplos núcleos de processador significa que pelo menos dois núcleos de processador estão inclusos. Os múltiplos núcleos de processador abrangem o escopo de aplicações de múltiplos núcleos (Múltiplos núcleos) e vários núcleos (Many Core) da técnica anterior.
[0045] Ao longo deste relatório descritivo, o termo cachê de diretório, também referido como dispositivo do cachê de diretório, refere-se a um dispositivo de armazenagem usado para armazenar um diretório de dados de visitante em um sistema com múltiplos núcleos. Para aumentar a taxa de acesso do diretório, o dispositivo de armazenagem é geralmente implantado na forma de um cachê (Cachê). O cachê de diretório é implantado em pelo menos dois modos de implantação. Em um modo, o cachê de diretório é implantado de forma independente em relação a um núcleo do processador, ou seja, uma parte do espaço de armazenagem em um cachê (Cachê) em um chip de processamento de múltiplos núcleos em chip é alocada em ser usado como um cachê para armazenagem de diretório. Em outro modo, o cachê de diretório é implantado em um modo distribuído, ou seja, um diretório é dividido em vários blocos e os blocos de diretório são separadamente armazenados em um cachê dentro de cada núcleo do processador em um chip de processamento de múltiplos núcleos em chip.
[0046] Ao longo deste relatório descritivo, o termo cachê de dados compartilhados refere-se a um dispositivo de armazenagem usado para armazenar um bloco de dados compartilhado por múltiplos núcleos. Para aumentar a taxa de acesso do bloco de dados, o dispositivo de armazenagem é geralmente implantado na forma de um cachê (Cachê). Em um processo de implantação específico, o cachê de da
Petição 870170057952, de 11/08/2017, pág. 29/157
21/54 dos compartilhados geralmente refere-se a um cachê de nível 2 (L2) ou um cachê de nível 3 (L3) em um sistema de processador com múltiplos núcleos.
[0047] Ao longo deste relatório descritivo, o termo cachê de dados privados refere-se a um dispositivo de armazenagem localizado dentro de um núcleo do processador usado para armazenar dados privados do núcleo do processador. Em um processo de implantação específico, o cachê de dados privados geralmente refere-se a um cachê de nível 1 (L1) em um processador com múltiplos núcleos. Em uma implantação de um processador com múltiplos núcleos para aumentar a eficiência de acesso do núcleo do processador a um bloco de dados, o núcleo do processador pode obter uma parte dos dados compartilhados e armazenar essa parte dos dados compartilhados dentro do cachê de dados privados.
[0048] Ao longo deste relatório descritivo, o termo bloco de dados refere-se à granularidade na qual cada núcleo do processador acessa os dados em um sistema de processador com múltiplos núcleos. Em uma implantação específica, o bloco de dados é armazenado em um cachê de dados compartilhados no sistema de processador com múltiplos núcleos. Portanto, em um caso genérico, a granularidade do bloco de dados é uma linha de cachê (ou seja, linha de cachê). Em uma implantação específica, a granularidade do bloco de dados pode ser apresentada em outra forma, tal como parte de uma linha de cachê ou múltiplas linhas de cachê. Tais detalhes não são limitados por este relatório descritivo.
[0049] Ao longo deste relatório descritivo, o termo diretório, também referido como uma estrutura de diretório ou um diretório de dados de visitante, refere-se a uma estrutura de dados na qual as informações sobre um visitante de um bloco de dados são registradas. Em uma implantação específica, o diretório de dados de visitante inclui um
Petição 870170057952, de 11/08/2017, pág. 30/157
22/54 arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento. O arranjo de entrada com um único ponteiro inclui múltiplas entradas com um único ponteiro. O arranjo de entrada de compartilhamento inclui múltiplas entradas de compartilhamento. O conteúdo registrado em cada entrada de ponteiro único varia de acordo com a quantidade de visitantes de um bloco de dados. Quando o bloco de dados possui um único visitante, as informações sobre o único visitante do bloco de dados são registradas na entrada de ponteiro único. Quando o bloco de dados possuir múltiplos visitantes, a entrada de ponteiro único também é usada para registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento que corresponde à entrada de ponteiro único. Quando o bloco de dados possuir múltiplos (dois ou mais) visitantes, a entrada de compartilhamento é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados. O termo diretório de dados de visitante inclui uma ou mais entradas de diretório de dados de visitante.
[0050] Ao longo deste relatório descritivo, o termo entrada de diretório de dados de visitante refere-se a uma unidade constituinte de um diretório de dados de visitante. Cada entrada no diretório corresponde a cada bloco de dados em um cachê de dados compartilhados. Em uma implantação específica, o diretório de dados de visitante inclui um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento. Portanto, quando um bloco de dados possui um único dado de visitante, uma entrada de diretório de dados de visitante que corresponde ao bloco de dados refere-se à entrada de ponteiro único na qual as informações sobre o único visitante do bloco de dados são registradas. Quando um bloco de dados possui múltiplos (dois ou mais) visitantes, uma entrada de diretório de dados de visitante que corresponde ao bloco de dados refere-se à entrada de ponteiro único
Petição 870170057952, de 11/08/2017, pág. 31/157
23/54 na qual as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento que corresponde à entrada de ponteiro único são registradas e uma entrada de compartilhamento na qual as informações sobre os múltiplos visitantes do bloco de dados são registradas.
[0051] Ao longo deste relatório descritivo, o termo visitante refere-se a um núcleo do processador que acessa um bloco de dados. Por exemplo, quando um bloco de dados é acessado por três núcleos de processador, os três núcleos de processador são referidos como visitantes do bloco de dados.
[0052] Ao longo deste relatório descritivo, o termo pedido de acesso refere-se a um pedido de acesso ao diretório que é enviado por um núcleo do processador e que é uma solicitação usada para consultar informações sobre um visitante de um bloco de dados.
[0053] Ao longo deste relatório descritivo, o termo informações sobre uma associação significa que quando um bloco de dados possui pelo menos dois visitantes na entrada de ponteiro único que corresponde ao bloco de dados, um índice de acesso de uma entrada de compartilhamento que corresponde à entrada de ponteiro único é registrado. O índice de acesso é referido comas informações sobre uma associação entre a entrada de ponteiro único do bloco de dados e a entrada de compartilhamento que corresponde à entrada de ponteiro único. As informações sobre a associação indicam que existe uma relação associativa entre a entrada de ponteiro único do bloco de dados e a entrada de compartilhamento que corresponde à entrada de ponteiro único.
[0054] Ao longo deste relatório descritivo, o termo princípio do menos recentemente usado (O Menos Recentemente Usado, LRU) significa que quando uma entrada (a entrada de ponteiro único ou uma entrada de compartilhamento) deve ser alocada em um bloco de da
Petição 870170057952, de 11/08/2017, pág. 32/157
24/54 dos, o princípio é usado para selecionar, a partir de um arranjo de entrada com um único ponteiro ou um arranjo de entrada de compartilhamento, uma entrada que é a menos acessada em um período recente para que ela seja usada como uma entrada do bloco de dados. [0055] Ao longo deste relatório descritivo, o termo mensagem de invalidação significa que durante uma realocação da entrada, uma mensagem de invalidação é enviada para um visitante originalmente registrado em uma entrada para invalidar um bloco de dados original. [0056] A figura 1 é um diagrama esquemático de um sistema com múltiplos núcleos ao qual as soluções técnicas contidas nas modalidades da presente invenção podem ser aplicadas.
[0057] Conforme mostrado na figura 1, um sistema com múltiplos núcleos 100 inclui múltiplos núcleos de processador 110, um cachê de dados compartilhados 120 e um cachê de diretório 130. Os múltiplos núcleos de processador 110 podem acessar um bloco de dados 121 no cachê de dados compartilhados 120. Uma cópia do bloco de dados 121 é criada em um cachê privado 111 no núcleo do processador 110 que havia acessado o bloco de dados 121. No cachê de diretório 130, uma entrada correspondente no diretório 131 é usada para registrar, no bloco de dados 121, uma lista de visitantes do bloco de dados 121. [0058] Em outras palavras, o bloco de dados 121 no cachê de dados compartilhados 120 pode ser copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador 110. Um visitante do bloco de dados 121 é um núcleo do processador no qual a cópia do bloco de dados 121 é armazenada.
[0059] Um diretório é uma estrutura na qual uma lista de visitantes é registrada. Com base nisso, o diretório também pode ser expresso como uma estrutura de diretório.
[0060] O diretório é armazenado no cachê de diretório 130 e, de maneira específica, pode ser armazenado em uma unidade de arma
Petição 870170057952, de 11/08/2017, pág. 33/157
25/54 zenamento de diretório no cachê de diretório 130.
[0061] O cachê de diretório pode ser centralizado ou pode ser distribuído. De maneira correspondente, o diretório pode ser um diretório centralizado, ou seja, uma área de cachê é definida em um sistema com múltiplos núcleos (por exemplo, um chip de processador com múltiplos núcleos) para armazenar o diretório. O diretório também pode ser um diretório distribuído, ou seja, o diretório é dividido em blocos e cada parte do diretório obtida depois da divisão de bloco é armazenada em cada núcleo do processador. Por exemplo, supondo que o sistema com múltiplos núcleos inclui 128 núcleos de processador, um diretório pode ser dividido em 128 partes que são armazenadas nos 128 núcleos de processador respectivamente.
[0062] A figura 2 é um diagrama esquemático de um diretório 200 de acordo com uma modalidade da presente invenção.
[0063] Conforme mostrado na figura 2, o diretório 200 inclui um arranjo de entrada com um único ponteiro 210 e um arranjo de entrada de compartilhamento 220.
[0064] O arranjo de entrada com um único ponteiro 210 inclui múltiplas entradas com um único ponteiro e o arranjo de entrada de compartilhamento 220 inclui múltiplas entradas de compartilhamento.
[0065] A entrada de ponteiro único no arranjo de entrada com um único ponteiro 210 é usada para registrar as informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento 220, ou seja, a entrada de ponteiro único pode registrar as informações sobre o único visitante do bloco de dados quando o bloco de dados possuir o único visitante ou registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento no arranjo de entrada de compartilhamento 220 quando o bloco de dados
Petição 870170057952, de 11/08/2017, pág. 34/157
26/54 possuir múltiplos visitantes. A entrada de compartilhamento é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados.
[0066] Em uma aplicação de escalonamento horizontal (escalonamento horizontal), a maioria dos dados possui um único visitante. Os dados podem ser dados privados ou podem apresentar uma funcionalidade privada dentro de um período de tempo. Com base nisso, a maioria das entradas de diretório só precisa registrar as informações sobre um núcleo do processador, por exemplo, o número do núcleo do processador, usando um único ponteiro, e a entrada no diretório é referida como a entrada de ponteiro único na presente invenção. Além disso para rastrear os dados que possuem múltiplos visitantes, algumas entradas de diretório ainda usam uma estrutura de hardware (por exemplo, um vetor, um ponteiro limitado ou outra forma) para rastrear múltiplos visitantes e a entrada no diretório é referida como uma entrada de compartilhamento na presente invenção. Todas as entradas com um único ponteiro constituem um arranjo de entrada com um único ponteiro e todas as entradas de compartilhamento constituem um arranjo de entrada de compartilhamento. Pode haver uma quantidade relativamente grande de entradas no arranjo de entrada com um único ponteiro e uma quantidade relativamente pequena de entradas no arranjo de entrada de compartilhamento.
[0067] A entrada de ponteiro único pode usar relativamente poucos bits (bit) para registrar um visitante. A entrada de compartilhamento pode usar relativamente vários bits para registrar múltiplos visitantes. Quando um bloco de dados possui um único visitante, apenas a entrada de ponteiro único é usada para registrar o único visitante do bloco de dados. Neste caso, a entrada de ponteiro único não está associada com uma entrada de compartilhamento. Quando um bloco de dados possui múltiplos visitantes, a entrada de ponteiro único que cor
Petição 870170057952, de 11/08/2017, pág. 35/157
27/54 responde ao bloco de dados está associada com uma entrada de compartilhamento e a entrada associada de compartilhamento é usada para registrar os múltiplos visitantes do bloco de dados.
[0068] De maneira opcional para reduzir o espaço de armazenagem ocupado pela entrada de compartilhamento, um bit de todos os compartilhamentos também pode ser definido na entrada de ponteiro único. Quando o bit de compartilhamento é definido como 1, o bloco de dados é compartilhado por todos os núcleos de processador em um sistema com múltiplos núcleos. Neste caso, a entrada de ponteiro único não está associada com a entrada de compartilhamento, ou seja, quando o bloco de dados é compartilhado por todos os núcleos de processador, apenas a entrada de ponteiro único precisa ser usada e a entrada de compartilhamento não precisa estar associada.
[0069] O diretório de acordo com esta modalidade da presente invenção usa uma estrutura que inclui um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento. Quando há um único visitante, apenas a entrada de ponteiro único é usada para registrar as informações sobre o visitante; quando há múltiplos visitantes, as informações sobre os visitantes são registradas em um modo que associa a entrada de ponteiro único com uma entrada de compartilhamento. No modo supracitado, o tamanho médio de uma entrada no diretório pode ser consideravelmente comprimido e a perda de desempenho é muito pequena. Portanto, os recursos de armazenagem ocupados pelo diretório podem ser reduzidos e a escalabilidade do sistema pode ser aprimorada.
[0070] A figura 3 é um diagrama esquemático da entrada de ponteiro único de acordo com uma modalidade da presente invenção. Conforme mostrado na figura 3, a entrada de ponteiro único pode incluir uma etiqueta 301, um bit de associação de compartilhamento e entrada 302, um bit de todos os compartilhamentos 303 e um único
Petição 870170057952, de 11/08/2017, pág. 36/157
28/54 ponteiro 304.
[0071] A etiqueta 301 é usada para corresponder a um bloco de dados. Por exemplo, uma etiqueta pode corresponder a o endereço de um bloco de dados e, de maneira específica, pode corresponder a alguns bits de endereço do bloco de dados. Portanto, a entrada de ponteiro único que corresponde ao bloco de dados pode ser pesquisada de acordo com uma correspondência entre o endereço do bloco de dados e a etiqueta.
[0072] O bit de associação de compartilhamento e entrada 302 é usado para indicar se a entrada de ponteiro único está associada com uma entrada de compartilhamento. Por exemplo, um valor do bit de associação de compartilhamento e entrada definido como 1 indica que há uma entrada de compartilhamento associada com a entrada de ponteiro único; um valor definido como 0 indica que não há nenhuma entrada de compartilhamento associada com a entrada de ponteiro único.
[0073] O bit de todos os compartilhamentos 303 é usado para indicar que um bloco de dados é compartilhado por todos os núcleos de processador ou indicar que um bloco de dados possui um único visitante. Por exemplo, quando um valor do bit de todos os compartilhamentos 303 é 1, o bloco de dados é compartilhado por todos os núcleos de processador; quando o bit de associação de compartilhamento e entrada é 0, ou seja, uma entrada de compartilhamento não está associada e o bit de todos os compartilhamentos também é 0, o bloco de dados possui um único visitante.
[0074] O único ponteiro 304 é usado para registrar as informações sobre um único visitante de um bloco de dados quando o bloco de dados possui um único visitante. Quando há múltiplos visitantes, o único ponteiro 304 é usado para registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilha
Petição 870170057952, de 11/08/2017, pág. 37/157
29/54 mento para apontar a entrada de compartilhamento. As informações sobre o único visitante podem ser representadas como um identificador do visitante; em um exemplo, o número do visitante (um núcleo do processador) ou outras informações do identificador podem ser usadas. As informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento podem ser representadas como um ponteiro ou informações de índice. Tais detalhes não estão limitados a esta modalidade da presente invenção.
[0075] Por exemplo, quando o bit de associação de compartilhamento e entrada é 0, ou seja, quando nenhuma entrada de compartilhamento está associada e o bit de todos os compartilhamentos é 0, ou seja, há um único visitante, o único visitante do bloco de dados é registrado no único ponteiro; quando o bit de associação de compartilhamento e entrada é 1, ou seja, uma entrada de compartilhamento está associada, as informações sobre uma associação com a entrada de compartilhamento são registradas no único ponteiro 304. As informações sobre a associação são usadas para apontar a entrada de compartilhamento associada com a entrada de ponteiro único.
[0076] A figura 4 é um diagrama esquemático de uma entrada de compartilhamento de acordo com uma modalidade da presente invenção. Conforme mostrado na figura 4, a entrada de compartilhamento pode incluir uma estrutura de registro do compartilhador 401, um endereço de ordem elevada 402 e um bit de seleção de caminho 403. O endereço de ordem elevada 402 e o bit de seleção de caminho 403 são uma estrutura de associação que indica as informações sobre uma associação.
[0077] A estrutura de registro do compartilhador 401 é usada para registrar as informações sobre múltiplos visitantes de um bloco de dados. A estrutura de registro do compartilhador pode ser um vetor ou outra estrutura na qual os múltiplos visitantes podem ser registrados.
Petição 870170057952, de 11/08/2017, pág. 38/157
30/54 [0078] A estrutura de associação (o endereço de ordem elevada 402 e o bit de seleção de caminho 403) é usada para apontar a entrada de ponteiro único.
[0079] Há relativamente vários casos nos quais um bloco de dados possui um único visitante e relativamente poucos casos nos quais um bloco de dados possui múltiplos visitantes. Portanto, nesta modalidade da presente invenção, um arranjo de entrada com um único ponteiro é usado como um arranjo primário e um arranjo de entrada de compartilhamento é usado como um arranjo secundário. Conforme mostrado na figura 5, um arranjo de entrada com um único ponteiro 510 e um arranjo de entrada de compartilhamento 520 utilizam uma estrutura associativa em série similar àquela de um cachê. A quantidade de séries (cada fileira de um arranjo é uma série) é referida como uma profundidade. A quantidade de caminhos (cada coluna de um arranjo é um caminho) é referida como uma correlação. O arranjo de entrada com um único ponteiro possui uma profundidade relativamente grande, porém, uma correlação moderada para reduzir o consumo de energia por acesso. O arranjo de entrada de compartilhamento possui uma profundidade relativamente pequena, porém, uma correlação relativamente grande para aumentar a utilização de uma entrada de compartilhamento. Durante o acesso ao diretório, o arranjo de entrada com um único ponteiro é pesquisado de acordo com as informações de endereço contidas em um pedido de acesso, por exemplo, uma etiqueta de entrada de ponteiro único é pesquisada para determinar se há uma entrada de ponteiro único. Subsequentemente, o acesso a uma entrada de compartilhamento de acordo com a entrada de ponteiro único e o acesso à entrada de ponteiro único de acordo com uma entrada de compartilhamento podem ser implantados no formato de um número de uma série mais um número de um caminho e em uma implantação específica, podem ser implantados primeiramente determinando-se o
Petição 870170057952, de 11/08/2017, pág. 39/157
31/54 número de uma série e em seguida, determinando-se o número de um caminho.
[0080] É válido observar que em todos os campos da entrada supracitada de ponteiro único, o bit de todos os compartilhamentos 303 é um campo opcional. Quando um bloco de dados é compartilhado por todos os núcleos de processador em um sistema com múltiplos núcleos, a estrutura de registro do compartilhador 401 na entrada de compartilhamento pode ser usada para indicar que o bloco de dados é compartilhado por todos os núcleos de processador. Para reduzir o espaço de armazenagem da entrada de compartilhamento, o bit de todos os compartilhamentos 303 é adicionado à entrada de ponteiro único. O bit de todos os compartilhamentos 303 é definido como 1 para indicar um cenário de compartilhamento no qual um bloco de dados é compartilhado por todos os núcleos de processador em um sistema com múltiplos núcleos.
[0081] Afigura 6 é um fluxograma esquemático de um método 600 para acessar um diretório de dados de visitante em um sistema com múltiplos núcleos de acordo com uma modalidade da presente invenção. O diretório é o diretório da supracitada modalidade da presente invenção. O método 600 pode ser executado por um cachê de diretório.
[0082] S610. Receber um primeiro pedido de acesso enviado por um primeiro núcleo do processador, no qual o primeiro pedido de acesso é usado para acessar uma entrada, a qual corresponde a um primeiro bloco de dados, no diretório.
[0083] O primeiro pedido de acesso pode conter informações de endereço do bloco de dados. O diretório pode ser acessado de acordo com as informações de endereço contidas no pedido de acesso, e a entrada que corresponde ao bloco de dados é pesquisada no diretório. [0084] S620. Determinar, de acordo com o primeiro pedido de
Petição 870170057952, de 11/08/2017, pág. 40/157
32/54 acesso, que um arranjo de entrada com um único ponteiro possui uma primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados.
[0085] Quando o primeiro pedido de acesso é recebido, o arranjo de entrada com um único ponteiro é primeiramente acessado para determinar se há uma entrada de ponteiro único que corresponda ao bloco de dados. De maneira específica, o arranjo de entrada com um único ponteiro pode ser pesquisado de acordo com as informações de endereço contidas no pedido de acesso para determinar se há uma entrada de ponteiro único que corresponda ao bloco de dados. Por exemplo, usando a estrutura da entrada de ponteiro único mostrada na figura 3 como um exemplo, as informações de endereço contidas no pedido de acesso podem ser comparadas com uma etiqueta na entrada de ponteiro único para determinar se há uma entrada de ponteiro único que corresponda ao bloco de dados. Nesta modalidade, o arranjo de entrada com um único ponteiro possui a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados.
[0086] S630. Quando for determinado, de acordo com a primeira entrada de ponteiro único, que um arranjo de entrada de compartilhamento possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar múltiplos visitantes do primeiro bloco de dados de acordo com a primeira entrada de compartilhamento.
[0087] Quando o bloco de dados (o qual é representado como o primeiro bloco de dados) possui uma entrada correspondente do único ponteiro (a qual é representada como a primeira entrada de ponteiro único), é determinado se o arranjo de entrada de compartilhamento possui uma entrada de compartilhamento associada com a primeira entrada de ponteiro único de acordo com a primeira entrada de ponteiro único. Por exemplo, usando a estrutura da entrada de ponteiro úni
Petição 870170057952, de 11/08/2017, pág. 41/157
33/54 co mostrada na figura 3 como um exemplo, pode ser determinado se há uma entrada de compartilhamento associada com a entrada de ponteiro único de acordo com um bit de associação de compartilhamento e entrada na entrada de ponteiro único. Quando há uma entrada de compartilhamento associada com a primeira entrada de ponteiro único, ou seja, a primeira entrada de ponteiro único está associada com a entrada de compartilhamento (a qual é representada como a primeira entrada de compartilhamento), os múltiplos visitantes do primeiro bloco de dados são determinados de acordo com a primeira entrada de compartilhamento. De maneira específica, a entrada associada de compartilhamento pode ser determinada de acordo com as informações sobre uma associação registradas na entrada de ponteiro único, por exemplo, as informações sobre a associação registradas no único ponteiro na estrutura mostrada na figura 3, e a entrada de compartilhamento é acessada para obter-se os múltiplos visitantes do bloco de dados a partir da entrada de compartilhamento.
[0088] Usando a estrutura do diretório mostrada na figura 5 como um exemplo, a entrada de compartilhamento pode ser acessada de acordo com a entrada de ponteiro único do seguinte modo.
1. Um bit de ordem baixa é extraído de um número de uma série ao qual a entrada de ponteiro único pertence para a obtenção de um número de série da entrada de compartilhamento.
[0089] Há uma quantidade relativamente grande de séries no arranjo de entrada com um único ponteiro e uma quantidade relativamente pequena de séries no arranjo de entrada de compartilhamento. Portanto, o número da série da entrada de compartilhamento pode ser determinado de acordo com o bit de ordem baixa do número da série da entrada de ponteiro único.
[0090] Assume-se que o arranjo de entrada com um único ponteiro inclui quatro caminhos e 64 séries e o arranjo de entrada de comparti
Petição 870170057952, de 11/08/2017, pág. 42/157
34/54 lhamento inclui oito caminhos e 16 séries.
[0091] Se um bit de associação de compartilhamento e entrada da entrada de ponteiro único atualmente acessada for 1, a entrada de compartilhamento é associada e o arranjo de entrada de compartilhamento precisa ser acessado. O número de uma série no arranjo de entrada de 64 séries com um único ponteiro inclui 6 bits (bit), a entrada de ponteiro único que pertence a uma 55esimasérie e o número da série é representado como b_110111 (b_ representando um binário). O arranjo de entrada de compartilhamento inclui um total de 16 séries e um número de série contendo quatro bits é necessário para indexação. Quatro bits inferiores b_0111 são extraídos de b_110111 para a obtenção dessa entrada correspondente de compartilhamento que pertence a uma 7esima série no arranjo de entrada de compartilhamento.
2. O arranjo de entrada de compartilhamento é acessado para leitura dos múltiplos caminhos de entradas de compartilhamento que existem em uma série.
[0092] A 7esima série no arranjo de entrada de compartilhamento é acessada de acordo com o número da série obtido na etapa anterior para a obtenção de oito entradas de compartilhamento (oito caminhos) na série.
3. A seleção do caminho é efetuada nos múltiplos caminhos de entradas de compartilhamento de acordo com um único ponteiro na entrada de ponteiro único.
[0093] A seleção a partir dos oito caminhos precisa de 3 bits. Supondo que um valor do único ponteiro é b_1100, três bits inferiores b_100 no valor do único ponteiro, ou seja, um 4esimo caminho, podem ser usados para a obtenção da entrada associada de compartilhamento.
[0094] Nesta modalidade da presente invenção, de maneira opcional e conforme mostrado na figura 7a, o método 600 também pode in
Petição 870170057952, de 11/08/2017, pág. 43/157
35/54 cluir:
[0095] S640. Quando for determinado, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, um único visitante do primeiro bloco de dados ou que o primeiro bloco de dados é compartilhado por todos os núcleos de processador em um sistema com múltiplos núcleos.
[0096] Ou seja, quando a primeira entrada de ponteiro único não está associada com a primeira entrada de compartilhamento, um visitante do primeiro bloco de dados é determinado apenas de acordo com a primeira entrada de ponteiro único. De maneira específica, a primeira entrada de ponteiro único pode ser usada para registrar o único visitante do primeiro bloco de dados ou para indicar que o primeiro bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos. Em ambos os casos, nenhuma entrada de compartilhamento precisa ser associada e relativamente poucos bits podem ser usados para representação. Para um exemplo específico, consultar a modalidade supracitada, pois tais detalhes não serão descritos aqui novamente.
[0097] No método de acesso ao diretório de acordo com esta modalidade da presente invenção, a entrada de ponteiro único é primeiramente acessada; quando a entrada de ponteiro único está associada com uma entrada de compartilhamento, a entrada associada de compartilhamento é então acessada; quando um bloco de dados possui um único visitante, o único visitante pode ser obtido a partir da entrada de ponteiro único; e quando o bloco de dados possui múltiplos visitantes, os múltiplos visitantes podem ser obtidos a partir da entrada de compartilhamento associada com a entrada de ponteiro único. Desse
Petição 870170057952, de 11/08/2017, pág. 44/157
36/54 modo, o tamanho médio de uma entrada no diretório em um diretório pode ser consideravelmente comprimido e a perda de desempenho é relativamente muito pequena. Portanto, os recursos de armazenagem ocupados pelo diretório podem ser reduzidos e a escalabilidade do sistema pode ser aprimorada.
[0098] Nesta modalidade da presente invenção, quando o arranjo de entrada com um único ponteiro não possui nenhuma entrada de ponteiro único que corresponda ao bloco de dados, uma entrada correspondente do único ponteiro também pode ser alocada no bloco de dados.
[0099] Portanto, de maneira opcional, depois que o primeiro pedido de acesso enviado pelo primeiro núcleo do processador é recebido, conforme mostrado na figura 7b, o método 600 também pode incluir: [00100] S662. Determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro não possui nenhuma entrada de ponteiro único que corresponde ao primeiro bloco de dados.
[00101] S663. Alocar, no arranjo de entrada com um único ponteiro, a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados no primeiro bloco de dados e registrar as informações sobre o primeiro núcleo do processador na primeira entrada de ponteiro único.
[00102] Ou seja, quando o bloco de dados não possui nenhuma entrada correspondente do único ponteiro, a entrada de ponteiro único pode ser alocada no bloco de dados e as informações sobre o único visitante (ou seja, o primeiro núcleo do processador) são registradas na entrada alocada de ponteiro único.
[00103] De maneira específica, se o arranjo de entrada com um único ponteiro possuir uma entrada de ponteiro único não utilizada, a entrada de ponteiro único é selecionada a partir da entrada de ponteiro
Petição 870170057952, de 11/08/2017, pág. 45/157
37/54 único não utilizada como a primeira entrada de ponteiro único e as informações sobre o primeiro núcleo do processador são registradas.
[00104] Se o arranjo de entrada com um único ponteiro não possuir nenhuma entrada de ponteiro único não utilizada, a entrada de ponteiro único é selecionada de acordo com um princípio do menos recentemente usado.
[00105] Se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento e registrar as informações sobre o único visitante, uma mensagem de invalidação é enviada para o único visitante registrado e as informações sobre o primeiro núcleo do processador são registradas na entrada selecionada do único ponteiro.
[00106] Se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento e indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos, uma mensagem de invalidação é transmitida para todos os núcleos de processador e as informações sobre o primeiro núcleo do processador são registradas na entrada selecionada do único ponteiro.
[00107] Se a entrada selecionada do único ponteiro estiver associada com uma entrada de compartilhamento, os múltiplos visitantes registrados na entrada associada de compartilhamento são determinados de acordo com a entrada de compartilhamento associada com a entrada selecionada do único ponteiro, uma mensagem de invalidação é enviada para os múltiplos visitantes registrados e as informações sobre o primeiro núcleo do processador são registradas na entrada selecionada do único ponteiro.
[00108] O trecho a seguir descreve em detalhes o método de acesso ao diretório de acordo com esta modalidade da presente invenção por meio de um exemplo.
Petição 870170057952, de 11/08/2017, pág. 46/157
38/54 [00109] A figura 8 é um fluxograma esquemático de um método de acesso ao diretório de acordo com outra modalidade da presente invenção.
[00110] 801. Acessar um arranjo de entrada com um único ponteiro;
e se a entrada de ponteiro único for clicada, a etapa 802 é executada; ou se nenhuma entrada de ponteiro único for clicada, a etapa 807 é executada.
[00111] Por exemplo, quando a entrada de ponteiro único e uma entrada de compartilhamento utilizam as estruturas mostradas na figura 3 e na figura 4 respectivamente, as informações de endereço contidas em um pedido de acesso podem ser comparadas com uma etiqueta na entrada de ponteiro único para determinar se há uma entrada de ponteiro único que corresponda a um bloco de dados.
[00112] 802. Determinar se a entrada de ponteiro único está associada com uma entrada de compartilhamento; e se sim, 803 é executada; ou se não, 804 é executada.
[00113] Por exemplo, pode ser determinado se a entrada de ponteiro único está associada com uma entrada de compartilhamento de acordo com um bit de associação de compartilhamento e entrada na entrada clicada de ponteiro único. Se o bit de associação de compartilhamento e entrada for 1, a entrada de compartilhamento é associada; se o bit de associação de compartilhamento e entrada for 0, a entrada de compartilhamento não é associada.
[00114] 803. Acessar a entrada associada de compartilhamento para a obtenção de uma lista de visitantes.
[00115] Por exemplo, a entrada associada de compartilhamento pode ser encontrada de acordo com um único ponteiro na entrada de ponteiro único para a obtenção da lista de visitantes a partir de uma estrutura de registro do compartilhador na entrada associada de compartilhamento.
Petição 870170057952, de 11/08/2017, pág. 47/157
39/54 [00116] 804. Determinar se todo o compartilhamento foi implantado;
e se sim, 805 é executada; ou se não, 806 é executada.
[00117] Quando a entrada de compartilhamento não está associada, é determinado se o bloco de dados é compartilhado por todos os núcleos de processador. Por exemplo, pode ser determinado se todo o compartilhamento foi implantado de acordo com um bit de todos os compartilhamentos na entrada de ponteiro único. Se o bit de todos os compartilhamentos for 0, o bloco de dados possui um único visitante, ou seja, nem todo o compartilhamento foi implantado. Se o bit de todos os compartilhamentos for 1, o bloco de dados é compartilhado por todos os núcleos de processador, ou seja, todo o compartilhamento foi implantado.
[00118] 805. Determinar que um bloco de dados se compartilhado por todos os núcleos de processador.
[00119] 806. Obter um único visitante.
[00120] Por exemplo, o único visitante pode ser obtido a partir do único ponteiro na entrada de ponteiro único.
[00121] 807. Determinar se há uma entrada de ponteiro único não utilizada; e se sim, 808 é executada; ou se não, 809 é executada.
[00122] 808. Selecionar a entrada de ponteiro único não utilizada e registrar as informações sobre um núcleo de acesso do processador.
[00123] Por exemplo, um identificador do núcleo do processador pode ser registrado. Usando 64 núcleos como um exemplo, um identificador de 6 bits pode ser usado.
[00124] 809. Selecionar a entrada de ponteiro único que é a menos recentemente usada; determinar se a entrada selecionada do único ponteiro está associada com uma entrada de compartilhamento; e se sim, 810 é executada; ou se não, 811 é executada.
[00125] 810. Invalidar múltiplos visitantes e registrar as informações sobre um núcleo de acesso do processador.
Petição 870170057952, de 11/08/2017, pág. 48/157
40/54 [00126] Os múltiplos visitantes registrados na entrada associada de compartilhamento são determinados de acordo com a entrada associada de compartilhamento. Uma mensagem de invalidação é enviada para os múltiplos visitantes e as informações sobre o núcleo de acesso do processador são registradas na entrada selecionada do único ponteiro.
[00127] 811. Determinar se a entrada selecionada do único ponteiro indica todo o compartilhamento; e se sim, 812 é executada; ou se não, 813 é executada.
[00128] 812. Transmitir uma mensagem de invalidação e registrar as informações sobre um núcleo de acesso do processador na entrada selecionada do único ponteiro.
[00129] 813. Invalidar um único visitante e registrar as informações sobre um núcleo de acesso do processador.
[00130] O único visitante registrado na entrada selecionada do único ponteiro é determinado, uma mensagem de invalidação é enviada para o único visitante e as informações sobre o núcleo de acesso do processador são registradas na entrada selecionada do único ponteiro. [00131] Nesta modalidade da presente invenção, depois que a entrada de ponteiro único (ou seja, a primeira entrada de ponteiro único) é alocada em um bloco de dados (o primeiro bloco de dados mencionado acima), um único visitante do primeiro bloco de dados (ou seja, um primeiro núcleo do processador) é registrado na primeira entrada de ponteiro único. Neste caso, o primeiro bloco de dados é propriedade do primeiro núcleo do processador. Quando o primeiro bloco de dados é acessado por outro núcleo do processador (o qual é representado como um segundo núcleo do processador), uma entrada de compartilhamento precisa ser alocada em um arranjo de entrada de compartilhamento e as informações sobre múltiplos visitantes (o primeiro núcleo do processador e o segundo núcleo do processador) são regis
Petição 870170057952, de 11/08/2017, pág. 49/157
41/54 tradas usando-se a entrada de compartilhamento.
[00132] Portanto, de maneira opcional, conforme mostrado na figura 9a, o método 600 também pode incluir:
[00133] S671. Receber um segundo pedido de acesso enviado por um segundo núcleo do processador, no qual o segundo pedido de acesso é usado para acessar a entrada, a qual corresponde ao primeiro bloco de dados, no diretório.
[00134] S672. Determinar, de acordo com o segundo pedido de acesso, que o arranjo de entrada com um único ponteiro possui a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados.
[00135] S673. Quando for determinado, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui nenhuma entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, que o único visitante do primeiro bloco de dados é o primeiro núcleo do processador.
[00136] S674. Alocar a primeira entrada de compartilhamento no arranjo de entrada de compartilhamento, estabelecer uma relação associativa entre a primeira entrada de ponteiro único e a primeira entrada de compartilhamento e registrar, na primeira entrada de compartilhamento, as informações sobre o primeiro núcleo do processador e as informações sobre o segundo núcleo do processador.
[00137] De maneira específica, quando a primeira entrada de compartilhamento está para ser alocada, se o arranjo de entrada de compartilhamento possuir uma entrada de compartilhamento não utilizada, uma entrada de compartilhamento é selecionada a partir da entrada de compartilhamento não utilizada como a primeira entrada de compartilhamento.
[00138] Se o arranjo de entrada de compartilhamento não possuir
Petição 870170057952, de 11/08/2017, pág. 50/157
42/54 nenhuma entrada de compartilhamento não utilizada e possuir uma entrada de compartilhamento que registra informações sobre um único visitante, a entrada de compartilhamento que registra as informações sobre o único visitante é selecionada e as informações registradas sobre o visitante são gravadas na entrada de ponteiro único associada com a entrada selecionada de compartilhamento.
[00139] Se o arranjo de entrada de compartilhamento não possuir nem uma entrada de compartilhamento não utilizada nem uma entrada de compartilhamento que registra informações sobre um único visitante, uma entrada de compartilhamento é selecionada de acordo com o princípio do menos recentemente usado. Se a quantidade de visitantes registrados na entrada selecionada de compartilhamento for maior que um limite predeterminado, a entrada de ponteiro único associada com a entrada selecionada de compartilhamento é definida para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos. Se a quantidade de visitantes registrados na entrada selecionada de compartilhamento não for maior que um limite predeterminado, as informações sobre um visitante dos visitantes registrados são gravadas na entrada de ponteiro único associada com a entrada selecionada de compartilhamento e uma mensagem de invalidação é enviada para os outros visitantes dos visitantes registrados.
[00140] Ou seja, quando uma entrada de compartilhamento está para ser alocada, uma entrada de compartilhamento não utilizada é preferencialmente usada. Se houver nenhuma entrada de compartilhamento não utilizada, a usada entrada de compartilhamento precisa ser retomada e uma entrada de compartilhamento que registra um único visitante é preferencialmente selecionada. Se não houver nenhuma entrada de compartilhamento não utilizada, a entrada usada de compartilhamento precisa ser retomada e uma entrada de compartilhamen
Petição 870170057952, de 11/08/2017, pág. 51/157
43/54 to que registra um único visitante é preferencialmente selecionada. Se não houver nenhuma entrada de compartilhamento que registre um único visitante, uma entrada de compartilhamento, que é a menos recentemente usada, é selecionada. Quando a entrada de compartilhamento que registra o único visitante é retomada, o único visitante precisa ser gravado em uma entrada associada do único ponteiro, o que evita a perda de informações do visitante. Quando uma entrada de compartilhamento que registra múltiplos visitantes é retomada, uma lista de visitantes pode ser comprimida de diferentes maneiras de acordo com a quantidade de visitantes e pode ser armazenada em uma entrada associada do único ponteiro. De maneira específica, se a quantidade de visitantes for maior que o limite predeterminado, a entrada associada do único ponteiro é definida para indicar que o bloco de dados é compartilhado por todos os núcleos de processador, o que pode ser referido como conversão ascendente. Se a quantidade de visitantes não for maior que o limite predeterminado, um dos visitantes é gravado na entrada associada do único ponteiro e a mensagem de invalidação é enviada para os outros visitantes, ou seja, um único visitante é mantido, o que pode ser referido como conversão descendente.
[00141] Por exemplo, conforme mostrado na figura 9b, quando uma conversão ascendente é executada, um bit de todos os compartilhamentos na entrada associada do único ponteiro é definido como 1, indicando que o bloco de dados é compartilhado por todos os núcleos de processador. Quando uma conversão descendente é executada, um único visitante (o visitante número 3 mostrado na figura 9b) é mantido e o visitante é registrado na entrada associada do único ponteiro. [00142] A entrada de compartilhamento que é retomada pode ser alocada em outro bloco de dados. Ou seja, nesta modalidade da presente invenção, uma entrada de compartilhamento pode ser dinami
Petição 870170057952, de 11/08/2017, pág. 52/157
44/54 camente alocada de acordo com uma mudança no compartilhamento de dados. Desse modo, um recurso de diretório é utilizado com mais flexibilidade e a utilização do recurso de diretório pode ser aprimorada. [00143] Quando uma entrada de compartilhamento é retomada, a entrada de ponteiro único precisa ser acessada de acordo com a entrada de compartilhamento. Neste caso, a entrada associada do único ponteiro pode ser determinada de acordo com a entrada de compartilhamento. De maneira específica, a entrada associada do único ponteiro pode ser determinada de acordo com uma estrutura de associação na entrada de compartilhamento.
[00144] Usando a estrutura de diretório mostrado na figura 5 como um exemplo, a entrada de ponteiro único pode ser acessada de acordo com a entrada de compartilhamento do seguinte modo.
1. Um número de uma série ao qual a entrada de compartilhamento pertence e um endereço de ordem elevada são unidos para a obtenção de um número de uma série no arranjo de entrada com um único ponteiro.
[00145] Há uma quantidade relativamente grande de séries no arranjo de entrada com um único ponteiro e uma quantidade relativamente pequena de séries no arranjo de entrada de compartilhamento. Portanto, um número de série da entrada de ponteiro único precisa ser obtido combinando-se o endereço de ordem elevada e o número da série da entrada de compartilhamento.
[00146] Assume-se que o arranjo de entrada com um único ponteiro inclui quatro caminhos e 64 séries e o arranjo de entrada de compartilhamento inclui oito caminhos e 16 séries.
[00147] Supondo que a entrada de compartilhamento pertence a uma 5esima série (b_0101), na qual o endereço de ordem elevada é b_10 e a bit de seleção de caminho é b_01, o número da série da entrada correspondente do único ponteiro é obtido uindo-se o número da
Petição 870170057952, de 11/08/2017, pág. 53/157
45/54 série da entrada de compartilhamento e o endereço de ordem elevada que é b_100101, ou seja, 37.
2. O arranjo de entrada com um único ponteiro é acessado para a leitura de múltiplos caminhos de entradas com um único ponteiro em uma série.
[00148] Uma 37esima série no arranjo de entrada com um único ponteiro é acessada de acordo com o número da série obtido na etapa supracitada para a obtenção de quatro entradas com um único ponteiro (quatro caminhos) na série.
3. A seleção do caminho é executada nos múltiplos caminhos de entradas com um único ponteiro de acordo com a bit de seleção de caminho na entrada de compartilhamento.
[00149] O bit de seleção de caminho na entrada de compartilhamento é usado para a seleção do caminho e o bit de seleção de caminho é b_01, ou seja, o primeiro caminho para a obtenção da entrada associada do único ponteiro.
[00150] Deve ser compreendido que em várias modalidades da presente invenção, os números sequenciais dos processos supracitados não significam a existência de uma ordem de execução. A ordem de execução dos processos deve ser determinada por funções e lógica inerente dos processos e não deve ser interpretada como uma limitação em um processo de implantação das modalidades da presente invenção.
[00151] A figura 10 mostra um diagrama em bloco esquemático de um dispositivo de cachê de diretório 1000 de acordo com uma modalidade da presente invenção. Conforme mostrado na figura 10, o dispositivo do cachê de diretório 1000 inclui uma unidade de armazenamento de diretório 1010 e uma unidade de execução 1020.
[00152] A unidade de armazenagem de diretório 1010 é configurada para armazenar um diretório localizado em um sistema com múltiplos
Petição 870170057952, de 11/08/2017, pág. 54/157
46/54 núcleos. O sistema com múltiplos núcleos inclui um cachê de dados compartilhados e múltiplos núcleos de processador. Um bloco de dados no cachê de dados compartilhados é copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador. O diretório é usado para registrar as informações sobre um visitante do bloco de dados no cachê de dados compartilhados. O visitante do bloco de dados é o núcleo do processador no qual uma cópia do bloco de dados é armazenada. O diretório inclui um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento, no qual cada entrada de ponteiro único no arranjo de entrada com um único ponteiro é usada para registrar as informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento e cada entrada de compartilhamento no arranjo de entrada de compartilhamento é usada para registrar as informações sobre múltiplos visitantes de um bloco de dados.
[00153] A unidade de execução 1020 é configurada para:
receber um primeiro pedido de acesso enviado por um primeiro núcleo do processador, no qual o primeiro pedido de acesso é usado para acessar uma entrada, a qual corresponde a um primeiro bloco de dados, no diretório;
determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro possui uma primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados; e ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar múltiplos visitantes do primeiro
Petição 870170057952, de 11/08/2017, pág. 55/157
47/54 bloco de dados de acordo com a primeira entrada de compartilhamento.
[00154] No dispositivo do cachê de diretório de acordo com esta modalidade da presente invenção, uma estrutura de diretório que inclui um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento é usada. Quando múltiplos visitantes não precisam ser registrados, a entrada de ponteiro único não é associada com uma entrada de compartilhamento. Quando múltiplos visitantes precisam ser registrados, a entrada de ponteiro único é associada com uma entrada de compartilhamento. Desse modo, o tamanho médio de uma entrada no diretório em um diretório pode ser consideravelmente comprimido e a perda de desempenho é relativamente muito pequena. Portanto, os recursos de armazenagem ocupados pelo diretório podem ser reduzidos e a escalabilidade do sistema pode ser aprimorada.
[00155] Nesta modalidade da presente invenção, de maneira opcional, a entrada de ponteiro único inclui uma etiqueta, um bit de associação de compartilhamento e entrada e um único ponteiro. A etiqueta é usada para corresponder ao bloco de dados. O bit de associação de compartilhamento e entrada é usado para indicar se a entrada de ponteiro único está associada com a entrada de compartilhamento. O único ponteiro é usado para registrar as informações sobre o único visitante quando o bloco de dados possui o único visitante e para registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento quando a entrada de ponteiro único está associada com a entrada de compartilhamento.
[00156] A entrada de compartilhamento inclui uma estrutura de registro do compartilhador e uma estrutura de associação. A estrutura de registro do compartilhador é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados e a estrutura de associação é usada para associar a entrada de ponteiro único.
Petição 870170057952, de 11/08/2017, pág. 56/157
48/54 [00157] Nesta modalidade da presente invenção, de maneira opcional, a entrada de ponteiro único também inclui um bit de todos os compartilhamentos.
[00158] O bit de todos os compartilhamentos é usado para: quando a entrada de ponteiro único não estiver associada com a entrada de compartilhamento, indicar que o bloco de dados possui o único visitante ou indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
[00159] Nesta modalidade da presente invenção, de maneira opcional, a entrada de ponteiro único no arranjo de entrada com um único ponteiro também é usada para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos e a unidade de execução 1020 também é configurada para: [00160] ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, um único visitante do primeiro bloco de dados ou que o primeiro bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
[00161] Nesta modalidade da presente invenção, de maneira opcional, depois que a unidade de execução 1020 recebe o primeiro pedido de acesso enviado pelo primeiro núcleo do processador, a unidade de execução 1020 também é configurada para:
determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro não possui nenhuma entrada de ponteiro único que corresponde ao primeiro bloco de dados; e alocar, no arranjo de entrada com um único ponteiro, a primeira entrada de ponteiro único que corresponde ao primeiro bloco de
Petição 870170057952, de 11/08/2017, pág. 57/157
49/54 dados no primeiro bloco de dados e registrar as informações sobre ο primeiro núcleo do processador na primeira entrada de ponteiro único. [00162] Nesta modalidade da presente invenção, de maneira opcional, a unidade de execução 1020 é configurada para:
se o arranjo de entrada com um único ponteiro possuir uma entrada de ponteiro único não utilizada, selecionar a entrada de ponteiro único a partir da entrada de ponteiro único não utilizada como a primeira entrada de ponteiro único e registrar as informações sobre o primeiro núcleo do processador; ou selecionar a entrada de ponteiro único de acordo com um princípio do menos recentemente usado se o arranjo de entrada com um único ponteiro não possuir nenhuma entrada de ponteiro único não utilizada; e se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento e registrar as informações sobre o único visitante, enviar uma mensagem de invalidação para o único visitante registrado e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro; ou se a entrada selecionada do único ponteiro não estiver associada com uma entrada de compartilhamento e indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos, transmitir uma mensagem de invalidação para todos os núcleos de processador e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro; ou se a entrada selecionada do único ponteiro estiver associada com uma entrada de compartilhamento, determinar, de acordo com a entrada de compartilhamento associada com a entrada selecionada do único ponteiro, os múltiplos visitantes registrados na entrada associada de compartilhamento, enviar uma mensagem de invalidação pa
Petição 870170057952, de 11/08/2017, pág. 58/157
50/54 ra os múltiplos visitantes registrados e registrar as informações sobre o primeiro núcleo do processador na entrada selecionada do único ponteiro.
[00163] Nesta modalidade da presente invenção, de maneira opcional, a unidade de execução 1020 também é configurada para:
receber um segundo pedido de acesso enviado por um segundo núcleo do processador, no qual o segundo pedido de acesso é usado para acessar a entrada, a qual corresponde ao primeiro bloco de dados, no diretório;
determinar, de acordo com o segundo pedido de acesso, que o arranjo de entrada com um único ponteiro possui a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados;
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui nenhuma entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, que o único visitante do primeiro bloco de dados é o primeiro núcleo do processador; e alocar a primeira entrada de compartilhamento no arranjo de entrada de compartilhamento, estabelecer uma relação associativa entre a primeira entrada de ponteiro único e a primeira entrada de compartilhamento e registrar, na primeira entrada de compartilhamento, as informações sobre o primeiro núcleo do processador e as informações sobre o segundo núcleo do processador.
[00164] Nesta modalidade da presente invenção, de maneira opcional, a unidade de execução 1020 é configurada para:
se o arranjo de entrada de compartilhamento possuir uma entrada de compartilhamento não utilizada, selecionar uma entrada de compartilhamento a partir da entrada de compartilhamento não utilizada como a primeira entrada de compartilhamento; ou
Petição 870170057952, de 11/08/2017, pág. 59/157
51/54 se o arranjo de entrada de compartilhamento não possuir nenhuma entrada de compartilhamento não utilizada e possuir uma entrada de compartilhamento que registra informações sobre um único visitante, selecionar a entrada de compartilhamento que registra as informações sobre o único visitante e gravar as informações registradas sobre o visitante na entrada de ponteiro único associada com a entrada selecionada de compartilhamento; ou selecionar uma entrada de compartilhamento de acordo com o princípio do menos recentemente usado se o arranjo de entrada de compartilhamento não possuir nem uma entrada de compartilhamento não utilizada nem uma entrada de compartilhamento que registra um único visitante; e se a quantidade de visitantes registrados na entrada selecionada de compartilhamento for maior que um limite predeterminado, definir a entrada de ponteiro único associada com a entrada selecionada de compartilhamento para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos; ou se a quantidade de visitantes registrados na entrada selecionada de compartilhamento não for maior que um limite predeterminado, gravar as informações sobre um visitante dos visitantes registrados na entrada de ponteiro único associada com a entrada selecionada de compartilhamento e enviar uma mensagem de invalidação para os outros visitantes dos visitantes registrados. [00165] Nesta modalidade da presente invenção, o diretório armazenado na unidade de armazenagem de diretório 1010 no dispositivo do cachê de diretório 1000 pode ser o diretório de acordo com a modalidade supracitada da presente invenção. A unidade de execução 1020 pode executar cada processo na modalidade do método supracitada. Para descrições correspondentes específicas, consultar as modalidades supracitadas. Para efeitos de concisão, tais detalhes não serão descritos aqui novamente.
Petição 870170057952, de 11/08/2017, pág. 60/157
52/54 [00166] Uma modalidade da presente invenção também provê um sistema com múltiplos núcleos. Conforme mostrado na figura 11, o sistema com múltiplos núcleos 1100 inclui múltiplos núcleos de processador 1110, um cachê de dados compartilhados 1120 e o dispositivo do cachê de diretório 1000 na modalidade supracitada da presente invenção.
[00167] De maneira específica, em comparação com o sistema com múltiplos núcleos 100, o sistema com múltiplos núcleos 1100 nesta modalidade da presente invenção utiliza o novo dispositivo do cachê de diretório 1000. O dispositivo do cachê de diretório 1000 inclui uma nova estrutura de diretório provida nesta modalidade da presente invenção.
[00168] Uma pessoa versada na técnica pode perceber que, em combinação com os exemplos descritos nas modalidades apresentadas neste relatório descritivo, unidades e etapas de algoritmos podem ser implantadas por hardware eletrônico, software de computador ou uma combinação dos mesmos. Para descrever com clareza a permutabilidade entre o hardware e o software, o trecho supracitado descreveu em geral composições e etapas de cada exemplo de acordo com suas funções. Se as funções seão executadas por hardware ou software dependerá em particular das aplicações e condições de restrição de modelo das soluções técnicas. Uma pessoa versada na técnica pode utilizar diferentes métodos para implantar as funções descritas para cada aplicação particular, no entanto, isso não significa que a implantação ultrapassa o escopo da presente invenção.
[00169] Pode ser claramente compreendido por uma pessoa versada na técnica que para uma descrição conveniente e sucinta de um processo operacional detalhado do sistema, aparelho e unidade mencionados acima, referência pode ser feita a um processo correspondente nas modalidades de método supracitadas e seus detalhes não
Petição 870170057952, de 11/08/2017, pág. 61/157
53/54 serão descritos aqui novamente.
[00170] Nas várias modalidades providas neste pedido de patente, deve ser compreendido que o sistema, aparelho e método apresentados podem ser implantados de outras maneiras. Por exemplo, a modalidade de aparelho descrita é meramente exemplar. Por exemplo, a divisão da unidade é meramente uma divisão de função lógica e pode ser outra divisão em uma implantação real. Por exemplo, uma pluralidade de unidades ou componentes pode ser combinada ou integrada a outro sistema ou algumas funcionalidades podem ser ignoradas ou não executadas. Além disso, as acoplagens mútuas, acoplagens diretas ou conexões de comunicação exibidas ou discutidas podem ser implantadas através de algumas interfaces. As acoplagens indiretas ou conexões de comunicação entre os aparelhos ou unidades podem ser implantadas de modo eletrônico, mecânico ou de outras formas.
[00171] As unidades descritas como partes separadas podem estar ou não fisicamente separadas, e partes exibidas como unidades podem ser ou não ser unidades físicas, podem estar localizadas em uma posição ou podem ser distribuídas por uma pluralidade de unidades de rede. Uma parte ou todas as unidades podem ser selecionadas de acordo com necessidades reais para se atingir os objetivos contidos nas soluções das modalidades da presente invenção.
[00172] Além disso, unidades funcionais nas modalidades da presente invenção podem ser integradas a uma unidade de processamento, ou cada uma das unidades pode existir fisicamente sozinha, ou duas ou mais unidades podem ser integradas a uma unidade. A unidade integrada pode ser implantada na forma de um hardware ou pode ser implantada na forma de uma unidade funcional de software.
[00173] Quando a unidade integrada é implantada na forma de uma unidade funcional de software e vendida ou utilizada como um produto independente, a unidade integrada pode ser armazenada em um meio
Petição 870170057952, de 11/08/2017, pág. 62/157
54/54 de armazenagem legível por computador. Com base em tal compreensão, as soluções técnicas na presente invenção essencialmente, a parte que contribui para a técnica anterior, todas ou uma parte das soluções técnicas pode ser implantada na forma de um produto de software. O produto de software é armazenado em um meio de armazenagem e inclui várias instruções para direcionar um dispositivo de computador (o qual pode ser um computador pessoal, um servidor ou um dispositivo de rede) para executar todas ou uma parte das etapas dos métodos descritos nas modalidades da presente invenção. O meio de armazenagem supracitado inclui: qualquer meio que possa armazenar um código de programa, tal como um pen drive de USB, um disco rigid removível, uma memória apenas de leitura (ROM, Memória Apenas de Leitura), uma memória de acesso aleatório (RAM, Memória de Acesso Aleatório), um disco magnético ou um disco ótico.
[00174] As descrições mencionadas acima são meramente modalidades específicas da presente invenção, porém, não se destinam a limitar o escopo de proteção da presente invenção. Qualquer modificação ou substituição imediatamente concebida por uma pessoa versada na técnica que se encontre dentro do escopo técnico descrito na presente invenção deve ser inserido no escopo de proteção da presente invenção. Portanto, o escopo de proteção da presente invenção deve estar subordinado ao escopo de proteção das reivindicações.
Petição 870170057952, de 11/08/2017, pág. 63/157

Claims (17)

1. Método para acessar um diretório de dados de visitante em um sistema com múltiplos núcleos, caracterizado pelo fato de que o método é aplicado ao sistema com múltiplos núcleos, no qual o sistema com múltiplos núcleos compreende um cachê de dados compartilhados e múltiplos núcleos de processador, um bloco de dados no cachê de dados compartilhados é copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador, o sistema com múltiplos núcleos também compreende o diretório de dados de visitante, o diretório é usado para registrar as informações sobre um visitante do bloco de dados no cachê de dados compartilhados e o visitante do bloco de dados é o núcleo do processador no qual uma cópia do bloco de dados é armazenada;
o diretório compreende um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento, no qual cada entrada de ponteiro único no arranjo de entrada com um único ponteiro é usada para registrar as informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento e cada entrada de compartilhamento no arranjo de entrada de compartilhamento é usada para registrar as informações sobre múltiplos visitantes de um bloco de dados; e o método compreende:
receber (S610) um primeiro pedido de acesso enviado por um primeiro núcleo do processador, no qual o primeiro pedido de acesso é usado para acessar uma entrada, a qual corresponde a um primeiro bloco de dados, no diretório;
determinar (S620), de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro possui uma primeira entrada de ponteiro único que corresponde ao primeiro bloco
Petição 870190127266, de 03/12/2019, pág. 9/18
2/10 de dados; e ao determinar (S630), de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar múltiplos visitantes do primeiro bloco de dados de acordo com a primeira entrada de compartilhamento.
2. Método de acordo com a reivindicação 1, caracterizado pelo fato de que a entrada de ponteiro único no arranjo de entrada com um único ponteiro também é usada para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos e o método também compreende:
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, um único visitante do primeiro bloco de dados ou que o primeiro bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
3. Método de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o método também compreende:
receber um segundo pedido de acesso enviado por um segundo núcleo do processador, no qual o segundo pedido de acesso é usado para acessar a entrada, a qual corresponde ao primeiro bloco de dados, no diretório;
determinar, de acordo com o segundo pedido de acesso, que o arranjo de entrada com um único ponteiro possui a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados;
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui nenhuma entrada de compartilhamento associada com a primeira entrada
Petição 870190127266, de 03/12/2019, pág. 10/18
3/10 de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, que o único visitante do primeiro bloco de dados é o primeiro núcleo do processador; e alocar a primeira entrada de compartilhamento no arranjo de entrada de compartilhamento, estabelecer uma relação associativa entre a primeira entrada de ponteiro único e a primeira entrada de compartilhamento e registrar, na primeira entrada de compartilhamento, as informações sobre o primeiro núcleo do processador e as informações sobre o segundo núcleo do processador.
4. Método de acordo com a reivindicação 3, caracterizado pelo fato de que a alocação da primeira entrada de compartilhamento no arranjo de entrada de compartilhamento compreende um dentre:
se o arranjo de entrada de compartilhamento possuir uma entrada de compartilhamento não utilizada, selecionar uma entrada de compartilhamento a partir da entrada de compartilhamento não utilizada como a primeira entrada de compartilhamento; e se o arranjo de entrada de compartilhamento não possuir nenhuma entrada de compartilhamento não utilizada e possuir uma entrada de compartilhamento que registra informações sobre um único visitante, selecionar a entrada de compartilhamento que registra as informações sobre o único visitante como a primeira entrada de compartilhamento; e selecionar uma entrada de compartilhamento de acordo com o princípio do menos recentemente usado como a primeira entrada de compartilhamento se o arranjo de entrada de compartilhamento não possuir nem uma entrada de compartilhamento não utilizada nem uma entrada de compartilhamento que registra informações sobre um único visitante e
5. Método de acordo com qualquer uma das reivindicações
1 a 4, caracterizado pelo fato de que:
Petição 870190127266, de 03/12/2019, pág. 11/18
4/10 a entrada de ponteiro único compreende uma etiqueta, um bit de associação de compartilhamento e entrada e um único ponteiro, no qual a etiqueta é usada para corresponder ao bloco de dados, o bit de associação de compartilhamento e entrada é usado para indicar se a entrada de ponteiro único está associada com a entrada de compartilhamento e o único ponteiro é usado para registrar as informações sobre o único visitante do bloco de dados quando o bloco de dados possuir o único visitante e para registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento quando a entrada de ponteiro único estiver associada com a entrada de compartilhamento; e a entrada de compartilhamento compreende uma estrutura de registro do compartilhador e uma estrutura de associação, no qual a estrutura de registro do compartilhador é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados e a estrutura de associação é usada para associar a entrada de ponteiro único.
6. Método de acordo com a reivindicação 5, caracterizado pelo fato de que a entrada de ponteiro único também compreende um bit de todos os compartilhamentos; e o bit de todos os compartilhamentos é usado para: quando a entrada de ponteiro único não estiver associada com a entrada de compartilhamento, indicar que o bloco de dados possui o único visitante ou indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
7. Dispositivo de cachê de diretório, caracterizado pelo fato de que o dispositivo compreende:
uma unidade de armazenamento de diretório (1010) configurada para armazenar um diretório de dados de visitante que está em um sistema com múltiplos núcleos, no qual o sistema com múltiplos núcleos compreende um cachê de dados compartilhados e múltiplos núcleos de
Petição 870190127266, de 03/12/2019, pág. 12/18
5/10 processador, um bloco de dados no cachê de dados compartilhados é copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador, o diretório é usado para registrar as informações sobre um visitante do bloco de dados no cachê de dados compartilhados e o visitante do bloco de dados é o núcleo do processador no qual uma cópia do bloco de dados é armazenada; e o diretório compreende um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento, no qual cada entrada de ponteiro único no arranjo de entrada com um único ponteiro é usada para registrar as informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento e cada entrada de compartilhamento no arranjo de entrada de compartilhamento é usada para registraras informações sobre múltiplos visitantes de um bloco de dados; e uma unidade de execução (1020) configurada para:
receber um primeiro pedido de acesso enviado por um primeiro núcleo do processador, no qual o primeiro pedido de acesso é usado para acessar uma entrada, a qual corresponde a um primeiro bloco de dados, no diretório;
determinar, de acordo com o primeiro pedido de acesso, que o arranjo de entrada com um único ponteiro possui uma primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados; e ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar múltiplos visitantes do primeiro bloco de dados de acordo com a primeira entrada de compartilhamento.
8. Dispositivo do cachê de diretório de acordo com a reivindicação 7, caracterizado pelo fato de que a entrada de ponteiro único
Petição 870190127266, de 03/12/2019, pág. 13/18
6/10 no arranjo de entrada com um único ponteiro também é usada para indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos e a unidade de execução também é configurada para:
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui uma primeira entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, um único visitante do primeiro bloco de dados ou que o primeiro bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
9. Dispositivo do cachê de diretório de acordo com a reivindicação 7 ou 8, caracterizado pelo fato de que a unidade de execução também é configurada para:
receber um segundo pedido de acesso enviado por um segundo núcleo do processador, no qual o segundo pedido de acesso é usado para acessar a entrada, a qual corresponde ao primeiro bloco de dados, no diretório;
determinar, de acordo com o segundo pedido de acesso, que o arranjo de entrada com um único ponteiro possui a primeira entrada de ponteiro único que corresponde ao primeiro bloco de dados;
ao determinar, de acordo com a primeira entrada de ponteiro único, que o arranjo de entrada de compartilhamento não possui nenhuma entrada de compartilhamento associada com a primeira entrada de ponteiro único, determinar, de acordo com a primeira entrada de ponteiro único, que o único visitante do primeiro bloco de dados é o primeiro núcleo do processador; e alocar a primeira entrada de compartilhamento no arranjo de entrada de compartilhamento, estabelecer uma relação associativa en
Petição 870190127266, de 03/12/2019, pág. 14/18
7/10 tre a primeira entrada de ponteiro único e a primeira entrada de compartilhamento e registrar, na primeira entrada de compartilhamento, as informações sobre o primeiro núcleo do processador e as informações sobre o segundo núcleo do processador.
10. Dispositivo do cachê de diretório de acordo com a reivindicação 9, caracterizado pelo fato de que a unidade de execução é configurada para um dentre:
se o arranjo de entrada de compartilhamento possuir uma entrada de compartilhamento não utilizada, selecionar uma entrada de compartilhamento a partir da entrada de compartilhamento não utilizada como a primeira entrada de compartilhamento; e se o arranjo de entrada de compartilhamento não possuir nenhuma entrada de compartilhamento não utilizada e possuir uma entrada de compartilhamento que registra informações sobre um único visitante, selecionar a entrada de compartilhamento que registra as informações sobre o único visitante como a primeira entrada de compartilhamento e selecionar uma entrada de compartilhamento de acordo com o princípio do menos recentemente usado como a primeira entrada de compartilhamento se o arranjo de entrada de compartilhamento não possuir nem uma entrada de compartilhamento não utilizada nem uma entrada de compartilhamento que registra informações sobre um único visitante e
11. Dispositivo do cachê de diretório de acordo com qualquer uma das reivindicações 7 a 10, caracterizado pelo fato de que:
a entrada de ponteiro único compreende uma etiqueta, um bit de associação de compartilhamento e entrada e um único ponteiro, no qual a etiqueta é usada para corresponder ao bloco de dados, o bit de associação de compartilhamento e entrada é usado para indicar se
Petição 870190127266, de 03/12/2019, pág. 15/18
8/10 a entrada de ponteiro único está associada com a entrada de compartilhamento e o único ponteiro é usado para registrar as informações sobre o único visitante do bloco de dados quando o bloco de dados possuir o único visitante e para registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento quando a entrada de ponteiro único estiver associada com a entrada de compartilhamento; e a entrada de compartilhamento compreende uma estrutura de registro do compartilhador e uma estrutura de associação, no qual a estrutura de registro do compartilhador é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados e a estrutura de associação é usada para associar a entrada de ponteiro único.
12. Dispositivo do cachê de diretório de acordo com a reivindicação 11, caracterizado pelo fato de que a entrada de ponteiro único também compreende um bit de todos os compartilhamentos; e o bit de todos os compartilhamentos é usado para: quando a entrada de ponteiro único não estiver associada com a entrada de compartilhamento, indicar que o bloco de dados possui o único visitante ou indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
13. Sistema com múltiplos núcleos, caracterizado pelo fato de que o sistema compreende múltiplos núcleos de processador (1110), um cachê de dados compartilhados (1120) e o dispositivo do cachê de diretório (1000) como definido em qualquer uma das reivindicações 7 a 12.
14. Unidade de armazenamento de diretório, caracterizada pelo fato de que a unidade de armazenagem de diretório é configurada para armazenar um diretório de dados de visitante que está em um sistema com múltiplos núcleos, no qual o sistema com múltiplos núcleos compreende um cachê de dados compartilhados e múltiplos núcleos de
Petição 870190127266, de 03/12/2019, pág. 16/18
9/10 processador, um bloco de dados no cachê de dados compartilhados é copiado em pelo menos um núcleo do processador dos múltiplos núcleos de processador, o diretório é usado para registrar as informações sobre um visitante do bloco de dados no cachê de dados compartilhados e o visitante do bloco de dados é o núcleo do processador no qual uma cópia do bloco de dados é armazenada; e o diretório compreende:
um arranjo de entrada com um único ponteiro e um arranjo de entrada de compartilhamento, no qual cada entrada de ponteiro único no arranjo de entrada com um único ponteiro é usada para registraras informações sobre um único visitante de um bloco de dados ou registrar as informações sobre uma associação entre a entrada de ponteiro único e uma entrada de compartilhamento no arranjo de entrada de compartilhamento; e cada entrada de compartilhamento no arranjo de entrada de compartilhamento é usada para registraras informações sobre múltiplos visitantes de um bloco de dados.
15. Unidade de armazenagem de diretório de acordo com a reivindicação 14, caracterizado pelo fato de que:
a entrada de ponteiro único compreende uma etiqueta, um bit de associação de compartilhamento e entrada e um único ponteiro, no qual a etiqueta é usada para corresponder ao bloco de dados, o bit de associação de compartilhamento e entrada é usado para indicar se a entrada de ponteiro único está associada com a entrada de compartilhamento e o único ponteiro é usado para registrar as informações sobre o único visitante do bloco de dados quando o bloco de dados possuir o único visitante e para registrar as informações sobre a associação entre a entrada de ponteiro único e a entrada de compartilhamento quando a entrada de ponteiro único estiver associada com a entrada de compartilhamento; e a entrada de compartilhamento compreende uma estrutura
Petição 870190127266, de 03/12/2019, pág. 17/18
10/10 de registro do compartilhador e uma estrutura de associação, no qual a estrutura de registro do compartilhador é usada para registrar as informações sobre os múltiplos visitantes do bloco de dados e a estrutura de associação é usada para associar a entrada de ponteiro único.
16. Unidade de armazenagem de diretório de acordo com a reivindicação 15, caracterizada pelo fato de que a entrada de ponteiro único compreende um bit de todos os compartilhamentos; e o bit de todos os compartilhamentos é usado para: quando a entrada de ponteiro único não estiver associada com a entrada de compartilhamento, indicar que o bloco de dados possui o único visitante ou indicar que o bloco de dados é compartilhado por todos os núcleos de processador no sistema com múltiplos núcleos.
17. Unidade de armazenagem de diretório de acordo com a reivindicação 15 ou 16, caracterizada pelo fato de que a estrutura de registro do compartilhador é um vetor.
BR112017017306-9A 2015-02-16 Método para acessar dados em um sistema com múltiplos núcleos, dispositivo de cache de diretório, sistema com múltiplos núcleos, e unidade de armazenagem de diretório BR112017017306B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/073192 WO2016131175A1 (zh) 2015-02-16 2015-02-16 多核系统中数据访问者目录的访问方法及设备

Publications (2)

Publication Number Publication Date
BR112017017306A2 true BR112017017306A2 (pt) 2019-12-17
BR112017017306B1 BR112017017306B1 (pt) 2023-06-06

Family

ID=

Also Published As

Publication number Publication date
US20170364442A1 (en) 2017-12-21
JP6343722B2 (ja) 2018-06-13
CN106164874A (zh) 2016-11-23
CA2976132A1 (en) 2016-08-25
CN106164874B (zh) 2020-04-03
EP3249539A4 (en) 2018-01-24
JP2018508894A (ja) 2018-03-29
KR20170107061A (ko) 2017-09-22
EP3249539A1 (en) 2017-11-29
WO2016131175A1 (zh) 2016-08-25
CN111488293A (zh) 2020-08-04
KR102027391B1 (ko) 2019-10-01
EP3249539B1 (en) 2021-08-18
SG11201706340TA (en) 2017-09-28

Similar Documents

Publication Publication Date Title
CN105740164B (zh) 支持缓存一致性的多核处理器、读写方法、装置及设备
US10402327B2 (en) Network-aware cache coherence protocol enhancement
KR101385430B1 (ko) 영구 메모리들을 위한 캐시 일관성 프로토콜
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
CN110362504A (zh) 对一致性链路和多级存储器的管理
US20160253123A1 (en) NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System
US9043570B2 (en) System cache with quota-based control
CN109684237B (zh) 基于多核处理器的数据访问方法和装置
US7925857B2 (en) Method for increasing cache directory associativity classes via efficient tag bit reclaimation
KR100243319B1 (ko) 비포함적 메모리 억세스 메커니즘
US10007606B2 (en) Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory
US20120124297A1 (en) Coherence domain support for multi-tenant environment
KR20180122969A (ko) 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법
US10705977B2 (en) Method of dirty cache line eviction
US20170364442A1 (en) Method for accessing data visitor directory in multi-core system and device
Guo et al. HP-mapper: A high performance storage driver for docker containers
CN115408307A (zh) 用于存储一致性数据和非一致性数据的高速缓存
US9128856B2 (en) Selective cache fills in response to write misses
CN107003932B (zh) 多核处理器系统的缓存目录处理方法和目录控制器
US8799587B2 (en) Region coherence array for a mult-processor system having subregions and subregion prefetching
CN110221985B (zh) 跨芯片维护缓存一致性策略的装置与方法
BR112017017306B1 (pt) Método para acessar dados em um sistema com múltiplos núcleos, dispositivo de cache de diretório, sistema com múltiplos núcleos, e unidade de armazenagem de diretório
CN105700953B (zh) 一种多处理器缓存一致性处理方法及装置
US20230100746A1 (en) Multi-level partitioned snoop filter

Legal Events

Date Code Title Description
B11Z Dismissal: petition dismissal - article 216, par 2 of industrial property law

Free format text: PROMULGA-SE O ARQUIVAMENTO DA PETICAO DE ENTRADA NA FASE NACIONAL POR INTEMPESTIVIDADE DE APRESENTACAO DA PROCURACAO CONFORME APRESENTADO NO ART. 216 2O DA LPI (LEI 9279/1996) E DA RESOLUCAO INPI-PR NO 77/2013, ART. 31. DESTA DATA, CORRE O PRAZO DE 60 (SESSENTA) DIAS PARA EVENTUAL RECURSO DO INTERESSADO CONFORME APRESENTADO NO ART. 212 DA LPI (LEI 9279/1996) E DA RESOLUCAO INPI-PR NO 77/2013, ART. 31, PARAGRAFO UNICO.

B12F Other appeals [chapter 12.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 16/02/2015, OBSERVADAS AS CONDICOES LEGAIS