BR112019026942B1 - Tecnologia de acesso à memória e sistema de computador - Google Patents

Tecnologia de acesso à memória e sistema de computador Download PDF

Info

Publication number
BR112019026942B1
BR112019026942B1 BR112019026942-8A BR112019026942A BR112019026942B1 BR 112019026942 B1 BR112019026942 B1 BR 112019026942B1 BR 112019026942 A BR112019026942 A BR 112019026942A BR 112019026942 B1 BR112019026942 B1 BR 112019026942B1
Authority
BR
Brazil
Prior art keywords
data
length
sub
block
read
Prior art date
Application number
BR112019026942-8A
Other languages
English (en)
Other versions
BR112019026942A2 (pt
Inventor
Shihai Xiao
Florian Longnos
Wei Yang
Original Assignee
Huawei Technologies 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 Technologies Co., Ltd filed Critical Huawei Technologies Co., Ltd
Publication of BR112019026942A2 publication Critical patent/BR112019026942A2/pt
Publication of BR112019026942B1 publication Critical patent/BR112019026942B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)
  • Saccharide Compounds (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

este pedido fornece uma tecnologia de acesso de memória e um sistema de computador. o sistema de computador inclui um controlador de memória, um controlador de mídia, e uma memória não volátil nvm conectada ao controlador de mídia. após receber um primeiro comando de leitura que é enviado pelo controlador de memória, o controlador de mídia pode ler primeiros dados a partir da nvm com base em um primeiro endereço no primeiro comando de leitura. depois o controlador de mídia pode retornar, ao controlador de memória, pelo menos dois sub-blocos de dados de comprimentos fixos e metadados dos pelo menos dois sub-blocos de dados com base em pelo menos dois comandos de envio enviados pelo controlador de memória. os metadados incluem um identificador de localização que é usado para indicar um desvio de um sub-bloco de dados correspondente nos primeiros dados. o controlador de memória combina os pelo menos dois sub-blocos de dados nos primeiros dados com base em identificadores de localização nos metadados dos pelos menos dois sub-blocos de dados.

Description

CAMPO TÉCNICO
[0001] Este pedido refere-se ao campo das tecnologias de computador e, em particular, a uma tecnologia de acesso à memória e um sistema de computador.
FUNDAMENTOS
[0002] Um módulo de memória em linha dupla não volátil (NVDIMM) é uma memória de acesso aleatório (RAM) de um computador. O NVDIMM pode incluir uma pluralidade de chips de memória não volátil (NVM). O NVDIMM ainda pode armazenar dados de memória completos quando um sistema estiver completamente desacoplado. Pode ser entendido que o chip de NVM no NVDIMM pode ser especificamente uma memória não volátil de acesso aleatório (NVRAM). A NVM no NVDIMM pode incluir uma memória de mudança de fase (PCM), uma memória de acesso aleatório resistiva (RRAM), uma memória de acesso aleatório magnética (MRAM), uma MRAM de torque de transferência de rotação (STT-MRAM) ou semelhantes. O NVDIMM se comunica com um controlador de memória usando o protocolo NVDIMM-P. O protocolo NVDIMM- P é um protocolo de acesso de barramento compatível com o protocolo de taxa de dados dupla (DDR).
[0003] Um técnico no assunto deve saber que, um processador tem usualmente um requisito de leitura para a leitura de dados com diferente comprimento. Portanto, o processador pode enviar a solicitação de acesso para a leitura de dados com diferente comprimento ao controlador de memória. Por exemplo, o processador pode enviar, com base em um requisito, uma solicitação de acesso para leitura de dados de 64B (Byte) ou uma solicitação de acesso para leitura de dados de 128B para o controlador de memória. Na técnica anterior, o controlador de memória envia usualmente um comando de leitura para a leitura de dados de comprimento fixo para o NVDIMM. Por exemplo, em um caso, o controlador de memória pode enviar um comando de leitura para leitura de dados de 64B para o NVDIMM. Neste caso, quando o controlador de memória recebe uma solicitação de acesso que é enviada pelo processador e usada para ler dados de 128B, o controlador de memória precisa dividir a solicitação de acesso em dois comandos de leitura de dados de 64B, e ler, a partir de NVDIMM usando dois comandos de leitura, os dados de 128B exigidos pelo processador. Tal maneira de processamento desperdiça a largura de banda de um barramento de comando, e afeta o desempenho do sistema. Em outro caso, o controlador de memória envia apenas um comando de leitura para leitura de dados de 128B para o NVDIMM. Neste caso, quando o controlador de memória recebe uma solicitação de acesso que é enviada pelo processador e usada para ler dados de 64B, o controlador de memória precisa mudar a solicitação de acesso para os dados de 64B para um comando de leitura para os dados de 128B, e enviar o comando de leitura para os dados de 128B para o NVDIMM. Aparentemente, esta maneira desperdiça a largura de banda de um barramento de dados.
SUMÁRIO
[0004] Uma tecnologia de acesso à memória e um sistema de computador fornecidos neste pedido podem suportar os comandos de leitura para ler dados com diferente comprimento sem desperdiçar largura de banda do barramento, para melhorar o desempenho do sistema.
[0005] De acordo com um primeiro aspecto, este pedido fornece um sistema de computador. O sistema de computador inclui um controlador de memória, um controlador de mídia e uma memória não volátil NVM conectada ao controlador de mídia. A NVM é configurada para armazenar dados. O controlador de memória é conectado ao controlador de mídia. Depois que o controlador de memória envia um primeiro comando de leitura para o controlador de mídia, o controlador de mídia pode ler os primeiros dados a partir da NVM com base em um primeiro endereço no primeiro comando de leitura. O primeiro comando de leitura porta um primeiro ID, o primeiro endereço e um primeiro comprimento, o primeiro ID é um identificador do primeiro comando de leitura e o primeiro comprimento é usado para indicar um tamanho de primeiros dados a serem lidos pelo primeiro comando de leitura. O controlador de memória envia pelo menos dois comandos de envio para o controlador de mídia, onde pelo menos dois comandos de envio são usados para obter pelo menos duas unidades de dados de um terceiro comprimento, e o terceiro comprimento é menor que o primeiro comprimento. O controlador de mídia, em resposta aos pelo menos dois comandos de envio, retorna pelo menos dois sub-blocos de dados do terceiro comprimento e metadados de pelo menos dois sub-blocos de dados para o controlador de memória. Os metadados incluem o primeiro ID e um identificador de localização e o identificador de localização é usado para indicar um deslocamento de um sub-bloco de dados correspondente nos primeiros dados. O controlador de memória combina os pelo menos dois sub-blocos de dados nos primeiros dados com base em identificadores de localização nos metadados dos pelo menos dois sub-blocos de dados.
[0006] Ao receber uma solicitação de acesso para a obtenção de dados relativamente grandes, o sistema de computador fornecido neste pedido pode suportar uma solicitação de acesso do sistema sem adicionar um comando de leitura, de modo a reduzir o desperdício de largura de banda do barramento e melhorar o desempenho do sistema.
[0007] Na aplicação real, o identificador de localização é pelo menos um bit. O controlador de memória se comunica com o controlador de mídia cumprindo o protocolo NVDIMM-P.
[0008] Com referência ao primeiro aspecto, em uma primeira implementação possível, o controlador de memória é configurado adicionalmente para enviar um segundo comando de leitura para o controlador de mídia, onde o segundo comando de leitura porta um segundo ID, um segundo endereço e um segundo comprimento, e o segundo comprimento é usado para indicar um tamanho de segundos dos para serem lidos pelo segundo comando de leitura. O controlador de mídia é configurado adicionalmente para obter os segundos dados a partir da NVM com base no segundo endereço. O controlador de memória é configurado adicionalmente para enviar um segundo comando de envio para o controlador de mídia, onde o segundo comando de envio é usado para obter um bloco de dados do terceiro comprimento e o segundo comprimento é igual ao terceiro comprimento. O controlador de mídia é configurado adicionalmente para, em resposta ao segundo comando de envio, retornar os segundos dados e metadados dos segundos dados para o controlador de memória, onde os metadados dos segundos dados portam o segundo ID.
[0009] O sistema de computador fornecido neste pedido pode suportar um requisito de leitura para a leitura de dados com diferente comprimento sem aumentar uma quantidade de comandos de leitura e sem desperdiçar a largura de banda do barramento, melhorando, desse modo, o desempenho do sistema.
[0010] Com referência ao primeiro aspecto ou a primeira implementação possível do primeiro aspecto, em uma segunda implementação possível, o controlador de mídia é configurado adicionalmente para: dividir os primeiros dados lidos a partir da NVM em pelo menos dois sub-blocos de dados para armazenar temporariamente e gravar os metadados dos pelo menos dois sub-blocos de dados.
[0011] Com referência a primeira ou a segunda implementação possível do primeiro aspecto, em uma terceira implementação possível, os metadados de cada sub-bloco de dados adicional incluem um identificador de transmissão e o identificador de transmissão é usado para indicar se o sub-bloco de dados é um último sub-bloco de dados a ser transmitido dos primeiros dados. O sistema de computador inclui adicionalmente um buffer, e o buffer é configurado para armazenar temporariamente pelo menos dois sub-blocos de dados dos primeiros dados lidos a partir da NVM e os segundos dados. O controlador de mídia é configurado adicionalmente para: quando os segundos dados estiverem localizados depois de um primeiro sub-bloco de dados dos primeiros dados no buffer e localizados antes de um segundo sub-bloco de dados dos primeiros dados no buffer, enviar os segundos dados para o controlador de memória antes do primeiro sub-bloco de dados. Um identificador de transmissão do primeiro sub-bloco de dados indica que o primeiro sub-bloco de dados não é o último sub-bloco de dados a ser transmitido dos primeiros dados, e um identificador de transmissão do segundo sub-bloco de dados indica que o segundo sub-bloco de dados é o último sub-bloco de dados a ser transmitido dos primeiros dados.
[0012] De acordo com o sistema de computador fornecido neste pedido, pelo fato de que os metadados de um sub-bloco de dados retornado pelo controlador de mídia para o controlador de memória portam um identificador de transmissão, em um processo de retorno de dados para o controlador de memória pelo controlador de mídia, uma sequência de envio de enviar o sub- bloco de dados para o controlador de memória pode ser ajustada com base no identificador de transmissão. Isto não só pode processar os comandos de leitura para a leitura de dados com diferente comprimento, mas também pode reduzir um atraso de espera na recepção de dados pelo controlador de memória, melhorando adicionalmente, desse modo, a eficiência do sistema de computador.
[0013] Com referência a qualquer um do primeiro aspecto, ou das primeiras às terceiras implementações possíveis do primeiro aspecto, em uma quarta implementação possível, o sistema de computador inclui adicionalmente um processador. O processador é configurado para enviar uma primeira solicitação de acesso ao controlador de memória. A primeira solicitação de acesso inclui o primeiro ID, o primeiro endereço e o primeiro comprimento. O controlador de memória é configurado adicionalmente para enviar o primeiro comando de leitura para o controlador de mídia com base na primeira solicitação de acesso. No sistema de computador, de acordo com a implementação possível, mesmo se uma solicitação de acesso que é enviada pelo processador e usada para ler dados relativamente grandes for recebida, a solicitação de acesso enviada pelo processador não será alterada para um comando de leitura para uma pluralidade de unidades de pequenos dados. Portanto, em comparação com a técnica anterior, uma quantidade de comandos de leitura pode ser reduzida, e a largura de banda do barramento pode ser salva, melhorando, desse modo, o desempenho do sistema de computador.
[0014] De acordo com um segundo aspecto, este pedido fornece um armazenamento. A memória inclui uma memória não volátil NVM e um controlador de mídia conectado à NVM. A NVM é configurada para armazenar dados. O controlador de mídia é configurado para: receber um primeiro comando de leitura enviado por um controlador de memória em um sistema de computador, e ler os primeiros dados a partir da NVM com base em um primeiro endereço no primeiro comando de leitura. O primeiro comando de leitura porta um primeiro ID, o primeiro endereço e um primeiro comprimento, o primeiro ID é um identificador do primeiro comando de leitura e o primeiro comprimento é usado para indicar um tamanho de primeiros dados a serem lidos pelo primeiro comando de leitura. Depois de receber pelo menos dois comandos de envio enviados pelo controlador de memória, o controlador de mídia, em resposta aos pelo menos dois comandos de envio, retorna pelo menos dois sub-blocos de dados de um terceiro comprimento e metadados dos pelo menos dois sub-blocos de dados para o controlador de memória. Pelo menos dois comandos de envio são usados para obter os dados do terceiro comprimento, e o terceiro comprimento é menor que o primeiro comprimento. Os metadados de cada sub- bloco de dados incluem o primeiro ID e um identificador de localização. O identificador de localização é usado para indicar um deslocamento de um sub- bloco de dados correspondente nos primeiros dados, de modo que pelo menos dois sub-blocos de dados podem ser combinados nos primeiros dados com base nos identificadores de localização em pelo menos dois sub-blocos de dados.
[0015] Com referência ao segundo aspecto, em uma primeira implementação possível, o controlador de mídia é configurado adicionalmente para: receber um segundo comando de leitura enviado pelo controlador de memória, e obter os segundos dados a partir da NVM com base em um segundo endereço no segundo comando de leitura. O segundo comando de leitura porta um segundo ID, o segundo endereço e um segundo comprimento, e o segundo comprimento é usado para indicar um tamanho de segundos dados a serem lidos pelo segundo comando de leitura. Depois de receber um segundo comando de envio enviado pelo controlador de memória, o controlador de mídia, em resposta ao segundo comando de envio, retorna os segundos dados e metadados dos segundos dados para o controlador de memória. O segundo comando de envio é usado para obter um bloco de dados do terceiro comprimento, onde o segundo comprimento é igual ao terceiro comprimento e os metadados dos segundos dados portam o segundo ID.
[0016] Com referência ao segundo aspecto ou a primeira implementação possível do segundo aspecto, a memória inclui adicionalmente um buffer, e o buffer é configurado para armazenar temporariamente pelo menos dois sub-blocos de dados dos primeiros dados que são lidos pelo controlador de mídia a partir da NVM. O controlador de mídia é configurado adicionalmente para gravar os metadados dos pelo menos dois sub-blocos de dados.
[0017] Com referência a primeira ou a segunda implementação possível do segundo aspecto, em uma terceira implementação possível, os metadados de cada sub-bloco de dados incluem adicionalmente um identificador de transmissão e o identificador de transmissão é usado para indicar se o sub- bloco de dados é um último sub-bloco de dados a ser transmitido dos primeiros dados. O buffer é configurado adicionalmente para armazenar temporariamente os segundos dados. O controlador de mídia é configurado adicionalmente para: quando os segundos dados estiverem localizados depois do primeiro sub-bloco de dados dos primeiros dados no buffer e localizados antes de um segundo sub- bloco de dados dos primeiros dados no buffer, enviar os segundos dados para o controlador de memória antes do primeiro sub-bloco de dados. Um identificador de transmissão do primeiro sub-bloco de dados indica que o primeiro sub-bloco de dados não é o último sub-bloco de dados a ser transmitido dos primeiros dados, e um identificador de transmissão do segundo sub-bloco de dados indica que o segundo sub-bloco de dados é o último sub-bloco de dados a ser transmitido dos primeiros dados.
[0018] De acordo com um terceiro aspecto, este pedido fornece um método de acesso à memória, e o método é aplicado ao sistema de computador fornecido no primeiro aspecto ou qualquer implementação possível do primeiro aspecto, para implementar funções do sistema de computador fornecidas no primeiro aspecto ou qualquer implementação possível do primeiro aspecto.
[0019] De acordo com um quarto aspecto, este pedido fornece outro método de acesso à memória. O método é realizado pelo controlador de mídia no sistema de computador fornecido no primeiro aspecto ou qualquer implementação possível do primeiro aspecto, para implementar as funções do controlador de mídia no sistema de computador fornecido no primeiro aspecto ou qualquer implementação possível do primeiro aspecto.
[0020] De acordo com um quinto aspecto, este pedido fornece outro método de acesso à memória. O método é realizado pelo controlador de memória no sistema de computador fornecido no primeiro aspecto ou qualquer implementação possível do primeiro aspecto, para implementar as funções do controlador de memória no sistema de computador fornecido no primeiro aspecto ou qualquer implementação possível do primeiro aspecto.
[0021] De acordo com um sexto aspecto, este pedido fornece um controlador de memória. O controlador de memória inclui uma interface de comunicações e um circuito de controle conectado à interface de comunicações. A interface de comunicações é configurada para enviar um primeiro comando de leitura para um controlador de mídia em um sistema de computador, onde o primeiro comando de leitura porta um primeiro ID, um primeiro endereço e um primeiro comprimento, o primeiro ID é um identificador do primeiro comando de leitura e o primeiro comprimento é usado para indicar um tamanho de primeiros dados a serem lidos pelo primeiro comando de leitura. A interface de comunicações é configurada adicionalmente para: enviar pelo menos dois comandos de envio para o controlador de mídia, e receber pelo menos dois sub- blocos de dados de um terceiro comprimento e metadados dos pelo menos dois sub-blocos de dados. Pelo menos dois sub-blocos de dados e os metadados são enviados pelo controlador de mídia em resposta aos pelo menos dois comandos de envio. Pelo menos dois comandos de envio são usados para obter pelo menos duas unidades de dados do terceiro comprimento, e o terceiro comprimento é menor que o primeiro comprimento. Pelo menos dois sub-blocos de dados são obtidos pelo controlador de mídia a partir de uma memória não volátil NVM no sistema de computador com base no primeiro endereço. Os metadados de cada sub-bloco de dados incluem o primeiro ID e um identificador de localização e o identificador de localização é usado para indicar uma localização de um sub-bloco de dados correspondente nos primeiros dados. O circuito de controle é configurado para combinar pelo menos dois sub-blocos de dados nos primeiros dados com base em identificadores de localização nos metadados dos pelo menos dois sub-blocos de dados.
[0022] Com referência ao sexto aspecto, em uma primeira implementação possível do sexto aspecto, a interface de comunicações é configurada adicionalmente para enviar um segundo comando de leitura ao controlador de mídia. O segundo comando de leitura porta um segundo ID, um segundo endereço e um segundo comprimento, e o segundo comprimento é usado para indicar um tamanho de segundos dados a serem lidos pelo segundo comando de leitura. Em seguida, a interface de comunicações envia um segundo comando de envio para o controlador de mídia, e recebe os segundos dados e metadados dos segundos dados que são retornados pelo controlador de mídia com base no segundo comando de envio. O segundo comando de envio é usado para obter um bloco de dados do terceiro comprimento e o segundo comprimento é igual ao terceiro comprimento. Os segundos dados são obtidos a partir da NVM pelo controlador de mídia com base no segundo endereço e os metadados dos segundos dados portam o segundo ID.
[0023] De acordo com um sétimo aspecto, este pedido fornece adicionalmente um produto de programa de computador, incluindo o código de programa, e uma instrução incluída no código de programa é executada por um computador, para implementar o método, de acordo com o terceiro aspecto, o quarto aspecto ou o quinto aspecto.
[0024] De acordo com um oitavo aspecto, este pedido fornece adicionalmente uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador é configurada para armazenar o código de programa, e uma instrução incluída no código de programa é executada por um computador, para implementar o método, de acordo com o terceiro aspecto, o quarto aspecto ou o quinto aspecto.
BREVE DESCRIÇÃO DOS DESENHOS
[0025] Para descrever as soluções técnicas nas modalidades da presente invenção mais claramente, o seguinte descreve brevemente os desenhos anexos necessários para descrever as modalidades. Aparentemente, os desenhos anexos na descrição a seguir mostram apenas algumas modalidades da presente invenção.
[0026] A FIG. 1 é um diagrama arquitetônico esquemático de um sistema de computador, de acordo com uma modalidade da presente invenção;
[0027] A FIG. 2 é um diagrama de sinalização de um método de acesso à memória, de acordo com uma modalidade da presente invenção;
[0028] A FIG. 3 é um diagrama esquemático de uma estrutura de dados de um comando de leitura, de acordo com uma modalidade da presente invenção;
[0029] A FIG. 4 é um diagrama estrutural esquemático de dados retornados por um controlador de mídia para um controlador de memória, de acordo com uma modalidade da presente invenção;
[0030] A FIG. 5 é um diagrama esquemático de uma estrutura de dados de metadados nos dados retornados por um controlador de mídia para um controlador de memória, de acordo com uma modalidade da presente invenção;
[0031] A FIG. 6 é um diagrama de sinalização de outro método de acesso à memória, de acordo com uma modalidade da presente invenção;
[0032] A FIG. 7 é um fluxograma de um método de agendamento, de acordo com uma modalidade da presente invenção;
[0033] A FIG. 8 é um diagrama esquemático de um método de agendamento, de acordo com uma modalidade da presente invenção; e
[0034] A FIG. 9 é um diagrama esquemático de outro método de agendamento, de acordo com uma modalidade da presente invenção.
DESCRIÇÃO DAS MODALIDADES
[0035] Para fazer com que um técnico no assunto compreenda melhor as soluções técnicas na presente invenção, o seguinte descreve claramente as soluções técnicas nas modalidades da presente invenção com referência aos desenhos anexos nas modalidades da presente invenção. Aparentemente, as modalidades descritas são meramente algumas, mas não todas, das modalidades da presente invenção.
[0036] A FIG. 1 é um diagrama arquitetônico esquemático de um sistema de computador, de acordo com uma modalidade da presente invenção. Como mostrado na FIG. 1, um sistema de computador 100 pode incluir pelo menos um processador 102, um controlador de memória 106 e um módulo de memória em linha dupla não volátil (NVDIMM) 108. Usualmente, o controlador de memória 106 pode ser integrado no processador 102. Deve ser observado que, no sistema de computador fornecido nesta modalidade da presente invenção, além dos dispositivos mostrados na FIG. 1, o sistema de computador 100 pode incluir uma interface de comunicações e outro dispositivo tal como um disco que é usado como um armazenamento externo. Isto não é limitado neste relatório.
[0037] O processador 102 é um núcleo de operação e uma unidade de controle do sistema de computador 100. O processador 102 pode incluir uma pluralidade de núcleos de processador 104. O processador 102 pode ser um circuito integrado em hiperescala. Um sistema de operação e outro programa de software são instalados no processador 102, de modo que o processador 102 possa acessar o NVDIMM 108, um buffer e um disco. Pode ser entendido que, nesta modalidade da presente invenção, um núcleo 104 no processador 102 pode ser, por exemplo, uma unidade de processamento central (CPU), ou pode ser outro circuito integrado de aplicação específica (ASIC).
[0038] O controlador de memória 106 é um controlador de circuito de barramento que está no sistema de computador 100 e que controla o NVDIMM 108 e é configurado para gerenciar e planejar a transmissão de dados a partir do NVDIMM 108 ao núcleo 104. Os dados podem ser trocados entre o NVDIMM 108 e o núcleo 104 através do controlador de memória 106. O controlador de memória 106 pode ser um chip separado, e é conectado ao núcleo 104 através de um barramento de sistema. Um técnico no assunto pode saber que o controlador de memória 106 pode alternativamente ser integrado no processador 102 (como mostrado na FIG. 1), ou construído em uma ponte norte. Uma localização específica do controlador de memória 106 não é limitada nesta modalidade da presente invenção. Na aplicação real, o controlador de memória 106 pode incluir uma interface de comunicações 1062 e um circuito de controle 1064, e o controlador de memória 106 pode comunicar-se com o processador 102 e o NVDIMM 108 através da interface de comunicações 1062. O controlador de memória 106 pode controlar a lógica necessária usando o circuito de controle 1064, para gravar os dados no NVDIMM 108 ou ler os dados a partir do NVDIMM 108.
[0039] A NVDIMM 108 é uma memória de acesso aleatório RAM do sistema de computador 100, e pode ser usada como uma memória ou um armazenamento no sistema de computador 100. A NVDIMM 108 pode incluir um controlador de mídia 110, pelo menos uma memória não volátil NVM 112, e um buffer 114. O controlador de mídia 110 pode incluir um circuito lógico tendo uma capacidade de controle. A NVM 112 é configurada para armazenar vários softwares correntemente rodando em um sistema de operação, dados de entrada e saída, informações que são trocadas com um armazenamento externo e semelhantes. A NVM 112 pode existir em uma forma de chip. Como mencionado acima, a NVM 112 pode incluir uma memória não volátil que pode ser usada como uma memória, tal como uma memória de mudança de fase (PCM), uma memória de acesso aleatório resistiva (RRAM), uma memória de acesso aleatório magnética (MRAM) ou uma MRAM de torque de transferência de rotação (STT-MRAM).
[0040] O controlador de memória 106 é conectado à NVDIMM 108 através de um barramento 105. O controlador de memória 106 comunica-se com o NVDIMM 108 cumprindo o protocolo NVDIMM-P. O protocolo NVDIMM-P é um protocolo de acesso de barramento compatível com o protocolo de taxa de dados dupla (DDR). O controlador de mídia 110 pode acessar, com base em um comando de acesso do controlador de memória 106, dados armazenados na NVM 112. Pode ser entendido que, o comando de acesso enviado pelo controlador de memória 106 pode ser um comando de leitura ou um comando de gravação. O controlador de mídia 110 pode ler dados a partir da NVM 112 com base no comando de leitura enviado pelo controlador de memória 106. Alternativamente, o controlador de mídia 110 pode gravar dados na NVM 112 com base no comando de gravação enviado pelo controlador de memória 106.
[0041] O barramento 105 nesta modalidade da presente invenção pode incluir um barramento de dados, um barramento de comando/endereço, e um barramento de retorno pronto para a leitura de dados. O barramento de dados é configurado para transmitir dados e metadados. O barramento de comando/endereço é configurado para transmitir um comando de acesso tal como um comando de leitura ou um comando de gravação. O barramento de retorno pronto para a leitura dos dados é configurado para enviar um sinal pronto que é usado para notificar o controlador de memória 106 que os dados a serem lidos estão prontos em um NVDIMM. Na aplicação real, quando o controlador de memória 106 lê os dados a partir do NVDIMM 108 através do barramento 105, o controlador de memória 106 envia primeiro o comando de leitura com base no barramento de comando/endereço. Depois que o controlador de mídia 110 no NVDIMM 108 obtém os dados a serem lidos a partir da NVM 112 com base em um endereço de destino no comando de leitura, o NVDIMM 108 envia, para o controlador de memória 106 através do barramento de retorno pronto para a leitura de dados, um sinal pronto que é usado para notificar que os dados estão prontos no NVDIMM. Depois de receber o sinal pronto enviado pelo NVDIMM 108, o controlador de memória 106 envia, para o NVDIMM 108 através do barramento de comando/endereço, um comando de envio que é usado para obter os dados. Depois de um atraso fixo no envio do comando de envio pelo controlador de memória 106, o controlador de mídia 110 retorna os dados preparados em um buffer do NVDIMM 108 para o controlador de memória 106 através do barramento de dados. Pelo fato de que o protocolo NVDIMM-P suporta a execução fora de ordem de um comando de leitura de NVM, na aplicação real, ao enviar o comando de envio, o controlador de memória 106 não pode determinar um comando de leitura específico para o qual os dados retornados pelo controlador de mídia 110 em resposta.
[0042] O buffer 114 é configurado para armazenar temporariamente os dados lidos pelo controlador de mídia 110 a partir da NVM 112. O buffer 114 pode incluir uma fila de buffer. Usualmente, o buffer de dados na fila de buffer é armazenado em uma primeira na primeira sequência de entrada e saída. O controlador de mídia 110 pode agendar dados no buffer 114 com base em uma sequência de dados no buffer 114. Por exemplo, o controlador de mídia 110 pode enviar dados de buffer para o controlador de memória 106 ou gravar os dados na NVM 112 com base em uma sequência dos dados na fila de buffer. Nesta modalidade da presente invenção, o controlador de mídia 110 pode não agendar os dados em uma primeira sequência de entrada e saída, mas não agenda os dados na fila de buffer com base em uma prioridade dos dados ou una necessidade da aplicação. Pode ser entendido que, na aplicação real, o NVDIMM 108 pode incluir adicionalmente um buffer de gravação (não mostrado na FIG. 1) que é configurado para armazenar temporariamente os dados a serem gravados na NVM 112.
[0043] Um técnico no assunto pode saber que, pelo fato de que o protocolo de barramento do NVDIMM-P é compatível com o protocolo de barramento padrão DDR, um barramento de dados no protocolo de barramento do NVDIMM-P pode ser reutilizado. Desta maneira, tanto um comando de gravação enviado pelo controlador de memória quanto o comando de envio que é usado para obter os dados para reutilizar um mesmo barramento de dados. Portanto, para prevenir um conflito de comandos em um barramento, ao enviar um comando de envio para o controlador de mídia, o controlador de memória precisa determinar um tempo de transmissão de dados retornados com base no comando de envio, para determinar um tempo para enviar um próximo comando, de modo que cada comando de acesso possa ser agendado com precisão. Entretanto, o protocolo NVDIMM-P suporta a execução fora de ordem um comando de leitura de NVM. Portanto, em um processo de comandos de processamento de leitura para acessar dados com diferente comprimento, ao enviar um comando de envio, o controlador de memória não pode saber um comando de leitura específico para o qual os dados retornados pelo controlador de mídia 110 pertencem e, portanto, não pode saber um comprimento dos dados recebidos pelo controlador de memória. Além disso, ao enviar um comando de envio, o controlador de memória pode não determinar um tempo de transmissão dos dados retornados. Com base nas razões anteriores, como mencionado acima, na técnica anterior, o controlador de memória 106 usualmente envia um comando de leitura de comprimento fixo paro NVDIMM 108. Por exemplo, o controlador de memória 106 envia, paro NVDIMM 108, um comando de leitura que é usado para ler dados de 64B ou um comando de leitura que é usado para ler dados de 128B. Um processador tem um requisito para a leitura de dados com diferente comprimento. Portanto, uma maneira em que o controlador de memória 106 envia um comando de leitura de comprimento fixo paro NVDIMM 108 pode causar um aumento em uma quantidade de comandos de leitura ou desperdício de largura de banda do barramento 105, afetando a melhoria de desempenho do sistema. Além disso, o nivelamento de desgaste usualmente precisa ser realizado dentro de NVDIMM com base em um comando de acesso recebido. Uma quantidade aumentada de comandos pode aumentar o trabalho de nivelamento de desgaste e, consequentemente, um método de acesso à memória na técnica anterior é não é propícia para a melhoria do desempenho do sistema. Portanto, para economizar a largura de banda e melhorar o desempenho do sistema, é necessário fornecer um sistema de computador que possa suportar a leitura de dados com diferente comprimento a partir de NVDIMM 108 pelo controlador de memória 106.
[0044] O seguinte descreve em detalhes com referência à FIG. 1, como o sistema de computador 100 lê os dados com diferente comprimento a partir de NVDIMM 108 com base em diferentes requisitos. Em outras palavras, o sistema de computador 100 fornecido nas modalidades da presente invenção, pode suportar um comando de leitura de multicomprimento. Para distinguir o comando de leitura nas modalidades a partir do comando de leitura na técnica anterior, nesta modalidade da presente invenção, o comando de leitura enviado pelo controlador de memória 106 para o controlador de mídia 110 é referido como um comando XREAD. A FIG. 2 é um diagrama de sinalização de um método de leitura de dados, de acordo com uma modalidade da presente invenção. Como mostrado na FIG. 2, o método pode incluir as seguintes etapas.
[0045] Etapa 202: Um processador 102 envia uma primeira solicitação de acesso a um controlador de memória 106. A primeira solicitação de acesso porta um primeiro endereço lógico e um primeiro comprimento, o primeiro comprimento é usado para indicar um tamanho de primeiros dados a serem lidos pelo processador 102, e o primeiro endereço lógico é usado para indicar um endereço dos primeiros dados a ser lido.
[0046] Etapa 204: O controlador de memória 106 envia um primeiro comando de leitura a um controlador de mídia 110 com base na primeira solicitação de acesso, onde o primeiro comando de leitura porta um primeiro ID, um primeiro endereço e o primeiro comprimento e o primeiro comprimento é usado para indicar o tamanho dos primeiros dados a serem lidos pelo primeiro comando de leitura. O primeiro endereço é usado para indicar um endereço físico dos primeiros dados em uma NVM 112.
[0047] Nesta modalidade da presente invenção, um formato do primeiro comando de leitura pode ser mostrado na FIG. 3. A FIG. 3 é um diagrama esquemático de uma estrutura de dados de um comando XREAD, de acordo com uma modalidade da presente invenção. Um comando XREAD é transmitido em dois períodos. Um sinal de seleção de chip (CS) em um primeiro período é baixo (L), um segundo período segue o primeiro período, e um sinal de seleção de chip no segundo período é alto (H). Cada período inclui adicionalmente um sinal da extremidade de subida e uma extremidade de descida de um relógio. Como mostrado na FIG. 3, de acordo com o protocolo NVDIMM-P, tanto uma extremidade de subida quanto uma extremidade de descida de um sinal de relógio de barramento de comando/endereço podem ser usadas para transmitir informações de dados. Por exemplo, como mostrado na FIG. 3, para informações transmitidas na extremidade de subida do sinal de relógio, refere-se à parte “Command/Address Signal Rising CLK_t” na FIG. 3. Para informações transmitidas na extremidade de descida do sinal de relógio, refere-se à parte “Command/Address Signal Falling CLK_t” na FIG. 3. Especificamente, o comando XREAD fornecido nesta modalidade da presente invenção pode incluir os seguintes campos. Um bit “CS” é um campo de sinal de seleção de chip, e é usado para indicar se um NVDIMM é selecionado. Um campo de comprimento [2:0] é usado para indicar um comprimento de dados a serem lidos pelo comando XREAD. Os campos ADDR [11:5] e ADDR [4:1] são usados para indicar um endereço dos dados a serem lidos pelo comando XREAD. Os campos RID [9:7] e RID [6:0] são usados para indicar um ID do comando XREAD. Um campo “RFU” é um é um campo reservados não utilizado. Um técnico no assunto pode saber que, cada campo no comando XREAD mostrado na FIG. 3 pode ser transmitido através do barramento de comando/endereço do barramento 105 mostrado na FIG. 1. O barramento 105 cumpre o protocolo NVDIMM-P.
[0048] Nesta modalidade da presente invenção, o primeiro comando de leitura pode incluir o primeiro ID do primeiro comando de leitura, e o primeiro ID é um identificador do primeiro comando de leitura. Por exemplo, o primeiro ID pode usar os campos RID [9:7] e RID [6:0] na FIG. 3 para identificação. Além disso, o primeiro comando de leitura pode incluir adicionalmente um endereço dos dados a serem lidos. Para facilitar a descrição, nesta modalidade da presente invenção, o endereço dos dados a serem lidos portado no primeiro comando de leitura é referido como um primeiro endereço. Por exemplo, o primeiro endereço pode usar os campos ADDR [11:5] e ADDR [4:1] na FIG. 3 para identificação. Deve ser observado que, o primeiro endereço é um endereço físico dos primeiros dados na NVM 112.
[0049] Para fazer o sistema de computador fornecido nesta modalidade da presente invenção suporta um comando de leitura de multicomprimento de um processador, no primeiro comando de leitura enviado pelo controlador de memória 106 para o controlador de mídia 110, alguns campos podem ser necessários adicionalmente para indicar um comprimento dos primeiros dados a serem lidos pelo primeiro comando de leitura. Por exemplo, o campo “Comprimento [2:0]” na FIG. 3 pode ser usado para indicar o comprimento dos primeiros dados. Desta maneira, o campo “Comprimento [2:0]” pode ser usado para indicar uma quantidade de blocos de dados de 64B (byte) incluídos nos dados a serem lidos pelo controlador de memória 106. Por exemplo, como mostrado na FIG. 3, o campo “Comprimento [2:0]” pode ter três bits, e o campo “Comprimento [2:0]” pode ser indicado usando 000 a 111. Correspondentemente, o campo “Comprimento [2:0]” pode ser usado para indicar que um comprimento dos dados a serem lidos pelo controlador de memória pode ser de 64B a 512B. Em outras palavras, com base em um formato de dados do comando XREAD mostrado na FIG. 3, o sistema de computador 100 pode suportar uma operação de leitura da leitura de dados de 512B uma vez.
[0050] Deve ser observado que, o campo “Comprimento [2:0]” na FIG. 3 é meramente um exemplo, e não pretende limitar o comprimento dos dados a serem lidos. Na aplicação real, mais campos reservados podem ser usados para representar o comprimento dos dados a serem lidos. Por exemplo, na aplicação real, o campo “RFU” mostrado na FIG. 3 pode ser usado adicionalmente para indicar o comprimento dos dados a serem lidos. Neste caso, um campo que é usado para indicar o comprimento dos dados a serem lidos pode incluir quatro bits, e o campo pode indicar os valores a partir de 0000 a 1111. Os dados que podem ser lidos pelo sistema de computador 100 pode ser de 64B x 16 = 1024B. Além disso, nesta modalidade da presente invenção, uma granularidade de 64B é usada como um exemplo para um tamanho de dados a serem lidos indicado pelo campo “Comprimento [2:0]”. Desta maneira, o tamanho dos dados a serem lidos é um múltiplo de 64B. Na aplicação real, uma granularidade de 32B, 128B, ou outro tamanho pode, alternativamente, ser usada para o tamanho dos dados a serem lidos indicado pelo campo “Comprimento [2:0]”, e nenhuma limitação é imposta nesta modalidade da presente invenção.
[0051] Etapa 206: O controlador de mídia 110 lê os primeiros dados a partir da NVM 112 com base no primeiro endereço. Especificamente, o controlador de mídia 110 lê os primeiros dados a partir da NVM 112 com base no primeiro endereço e o primeiro comprimento. Depois de ler os primeiros dados, o controlador de mídia 110 pode armazenar temporariamente os primeiros dados em um buffer. Nesta modalidade da presente invenção, depois de ler os primeiros dados, o controlador de mídia 110 pode armazenar em buffer os primeiros dados em uma maneira de bloqueio usando uma granularidade de 64B como uma unidade. Por exemplo, se o primeiro comprimento é 128B, os primeiros dados podem ser divididos em dois blocos de dados de 64B, e os dois blocos de dados podem ser separadamente armazenados em um buffer 114 do NVDIMM 108. Em um processo de armazenamento de cada bloco de dados, um ID de um comando de leitura ao qual o bloco de dados pertence e uma localização do bloco de dados nos dados a serem lidos pelo comando de leitura podem ser marcados em cada bloco de dados. Por exemplo, se o primeiro comprimento dos primeiros dados é de 128B, o controlador de mídia 110 pode dividir os primeiros dados no primeiro sub-bloco de dados e um segundo sub- bloco de dados para armazenamento, e gravar, nas informações dos metadados do primeiro sub-bloco de dados, um primeiro ID e uma localização do primeiro sub-bloco de dados nos primeiros dados. A localização do primeiro sub-bloco de dados nos primeiros dados significa um deslocamento do primeiro sub-bloco de dados nos primeiros dados. Por exemplo, se o primeiro sub-bloco de dados é 64B mais significante nos primeiros dados, e o segundo sub-bloco de dados é 64B menos significante nos primeiros dados, as informações de localização do primeiro sub-bloco de dados podem ser gravadas como 1 nos metadados do primeiro sub-bloco de dados, e as informações de localização do segundo sub- bloco de dados podem ser gravadas como 0 nos metadados do segundo sub- bloco de dados.
[0052] Pode ser entendido que “0” e “1” são meramente um exemplo de um identificador de localização nos metadados de um bloco de dados. Pode ser entendido que um bit de indicação de localização nos metadados do bloco de dados pode não ser meramente um bit, e um campo de uma pluralidade de bits pode ser usado para indicar uma localização de um bloco de dados nos dados a serem lidos. Por exemplo, se um campo de três bits é usado para indicar uma localização de um bloco de dados, 000 a 111 pode ser usado para, respectivamente, indicar oito diferentes localizações dos blocos de dados nos dados a serem lidos.
[0053] Etapa 208: O controlador de mídia 110 envia um sinal pronto para o controlador de memória 106. O sinal pronto é usado para notificar o controlador de memória 106 que os dados a serem lidos são armazenados no buffer do NVDIMM 108. Um técnico no assunto pode saber que, pelo fato de que um atraso de acesso de uma NVM não é fixo, o NVDIMM não pode retornar, em uma maneira de uma memória de acesso aleatório dinâmica DRAM, dados a serem lidos por um comando de leitura para o controlador de memória dentro de um tempo fixo depois de receber o comando de leitura. Portanto, um sinal pronto usado para um retorno de dados em um processo de leitura de dados é definido no protocolo NVDIMM-P. Isto também é uma diferença entre o protocolo NVDIMM-P e o protocolo de barramento DDR. O sinal pronto é usado para notificar o controlador de memória que o NVDIMM prepara os dados a serem lidos pelo controlador de memória. Depois de receber o sinal pronto, o controlador de memória pode obter os dados preparados a partir do buffer do NVDIMM usando um comando de envio.
[0054] Etapa 210: O controlador de memória 106 envia um comando de envio ao controlador de mídia 110. O comando de envio é usado para ler um bloco de dados de um terceiro comprimento armazenado temporariamente no buffer do NVDIMM. Deve ser observado que, quando os dados são armazenados no buffer do NVDIMM, o controlador de mídia envia o sinal pronto para o controlador de memória 106. Pelo fato de que o protocolo NVDIMM-P suporta a execução fora de ordem de um comando de leitura NVM, neste caso, o controlador de memória 106 não pode conhecer um comando de leitura específico para o qual o NVDIMM prepara os dados. Como mencionado acima, em um caso de processar um comando de leitura usado para a leitura de dados de multicomprimento, ao enviar o comando de envio para o controlador de mídia 110, o controlador de memória 106 não conhece um tamanho de dados a serem obtidos pelo controlador de memória 106 e, portanto, não pode determinar um tempo de transmissão dos dados a serem retornados. Nesta modalidade da presente invenção, para evitar o transtorno dos comandos em um barramento, mesmo se a solicitação de acesso enviada pelo processador pode ler dados com diferente comprimento, o controlador de memória 106 envia o comando de envio em uma maneira de obtenção de dados de comprimento fixo (por exemplo, o terceiro comprimento). Desta maneira, mesmo se diferentes solicitações de acesso têm diferentes tamanhos dos dados a serem lidos, pelo fato de que um comprimento dos dados obtidos uma vez é fixo, um tempo de transmissão de dados retornados pelo controlador de mídia 110 pode ser determinado. Portanto, o controlador de memória 106 pode enviar o comando de envio para o controlador de mídia 110 com base em um tempo de transmissão de dados fixo, para obter dados a serem lidos a partir do NVDIMM. Pode ser entendido que, o terceiro comprimento pode ser definido, de acordo com a aplicação real. Na aplicação real, para economizar a largura de banda, o terceiro comprimento pode ser de 64B.
[0055] Etapa 212: O controlador de mídia 110 retorna um comprimento do bloco de dados do terceiro e metadados correspondentes para o controlador de memória 106 com base no comando de envio. Um técnico no assunto deve saber que, ao receber um comando de envio, o controlador de mídia 110 retorna um bloco de dados de um tamanho igual ao terceiro comprimento e metadados correspondentes. Os metadados dos dados são informações usadas para descrever os dados. Na aplicação real, ao retornar os dados para o controlador de memória 106 com base no comando de envio, o controlador de mídia 110 usualmente retorna o bloco de dados e os metadados correspondentes juntos. Para facilitar a descrição, nesta modalidade da presente invenção, o bloco de dados do terceiro comprimento e metadados correspondentes que são retornados pelo controlador de mídia 110 podem ser, alternativamente, coletivamente referidos como dados retornados. Um formato dos dados retornados pelo controlador de mídia 110 pode ser mostrado na FIG. 4. Como mostrado na FIG. 4, os dados retornados podem incluir as seguintes informações: dados 402, um ECC 404, um ID 406 e uma localização 408. Os dados do campo 402 são um bloco de dados do terceiro comprimento. Por exemplo, os dados do campo 402 podem ser um bloco de dados de 64B. Pode ser entendido que, o terceiro comprimento pode ser definido, de acordo com uma necessidade real. Por exemplo, o terceiro comprimento pode ser definido como 64B ou 128B, fornecido desde que o terceiro comprimento seja um comprimento fixo. O ECC do campo 404 é usado para indicar informações de correção de erros do bloco de dados. Na aplicação real, o ECC do campo 404 pode ocupar 12B. Além disso, na aplicação real, os dados retornados podem não incluir o ECC do campo 404. O ID do campo 406 é usado para indicar um comando de leitura ao qual o bloco de dados pertence. Por exemplo, usando o primeiro comando de leitura anterior como um exemplo, se os primeiros dados a serem lidos pelo primeiro comando de leitura são divididos no primeiro sub-bloco de dados e um segundo sub-bloco de dados, nos metadados dos blocos de dados retornados pelo controlador de mídia 110 com base nos dois comandos de envio enviados pelo controlador de memória 106, um ID do primeiro sub-bloco de dados e um ID do segundo sub-bloco de dados, cada um, podem ser um ID do primeiro comando de leitura. A localização 408 é usada para indicar uma localização de um sub-bloco de dados retornado nos dados a serem lidos pelo comando de leitura indicado pelo ID 406. Por exemplo, quando o controlador de mídia 110 retorna o primeiro sub-bloco de dados, a localização 408 pode ser “1”, para indicar que o primeiro sub-bloco de dados retornados são 64B mais significantes nos dados a serem lidos pelo primeiro comando de leitura.
[0056] Na aplicação real, o ECC do campo 404, o ID do campo 406, e a localização do campo 408 podem ser incluídos nos metadados do sub-bloco de dados retornado. A FIG. 5 é um diagrama esquemático de uma estrutura de dados de metadados de um bloco de dados retornado com base em um comando de envio, de acordo com uma modalidade da presente invenção. Como mostrado na figura, M0 e M1 são usados para indicar sinais transmitidos em dois cabos de sinal para transmitir os metadados. Um campo “RID” é usado para indicar um comando de leitura ao qual o bloco de dados pertence. Em outras palavras, depois de receber um bloco de dados retornado pelo controlador de mídia 110, o controlador de memória 106 pode identificar, com base no campo “RID”, um comando de leitura específico que lê o bloco de dados retornado. Um campo “SB” é usado para indicar um deslocamento do bloco de dados retornado nos dados a serem lidos pelo comando de leitura indicado pelo campo “RID”.
[0057] Na estrutura de dados mostrada na FIG. 5, que o RID ocupa 10 bits e o SB ocupa três bits, é usada como um exemplo para a descrição. As informações RID nos metadados correspondem aos campos RID [9:7] e RID [6:0] no comando XREAD mostrado na FIG. 3, e é usada para indicar um comando de leitura ao qual um sub-bloco de dados pertence. Os três bits ocupados pelo SB correspondem aos três bits no “Comprimento [2:0]” no comando XREAD mostrado na FIG. 3. Desta maneira, se o Comprimento [2:0] = 7 no comando XREAD, isto indica que um comprimento de dados que necessita de ser lido é de oito blocos de dados de 64B. No bloco de dados retornado, se SB [2:0] = 0, isto indica que o sub-bloco de dados retornado é um primeiro sub-bloco de dados nos dados a serem lidos. Se SB [2:0] = 7, isto indica que o sub-bloco de dados retornado é um oitavo sub-bloco de dados nos dados a serem lidos. Pode ser entendido que, na aplicação real, uma quantidade de bits ocupados pelo ID do campo 406 e a localização do campo 408 podem ser definidas, de acordo com uma necessidade real. Nenhuma limitação é imposta nesta modalidade da presente invenção.
[0058] Um técnico no assunto deve saber que, quando existem dados no buffer 114 que são usados para armazenar temporariamente dados retornados a serem lidos e que estão no NVDIMM 108, o controlador de mídia 110 envia um sinal pronto para o controlador de memória 106. Depois de receber o sinal pronto enviado pelo controlador de mídia 110, o controlador de memória 106 envia um comando de envio para o controlador de mídia 110. Depois de receber o comando de envio, o controlador de mídia 110 retorna um bloco de dados do terceiro comprimento para o comando de envio ao controlador de memória 106. Portanto, pode ser entendido que, quando os dados a serem lidos por um comando de leitura são relativamente grandes, por exemplo, maiores que o terceiro comprimento especificado, a etapa 208 a etapa 212 precisam ser realizadas pelo menos duas vezes para serem lidos completamente, a partir de um NVDIMM, os dados a serem lidos pelo comando de leitura. Nesta modalidade da presente invenção, que os primeiros dados são de um comprimento maior que o terceiro comprimento usados como um exemplo. O controlador de memória precisa enviar pelo menos dois comandos de envio para obter os primeiros dados a partir do NVDIMM. Por exemplo, o controlador de memória 106 envia pelo menos dois comandos de envio, e o controlador de mídia responde separadamente aos pelo menos dois comandos de envio, para separadamente enviar pelo menos dois sub-blocos de dados dos primeiros dados para o controlador de memória 106.
[0059] Etapa 214: O controlador de memória 106 obtém os primeiros dados com base nos pelo menos dois sub-blocos de dados recebidos. Especificamente, depois de receber os dados retornados pelo controlador de mídia 110 com base no comando de envio, o controlador de memória 106 pode determinar, com base nos metadados de um sub-bloco de dados retornado, um comando de leitura ao qual o sub-bloco de dados pertence. Que os primeiros dados a serem lidos pelo primeiro comando de leitura é de um comprimento maior que o terceiro comprimento são usados como um exemplo nesta modalidade da presente invenção. Depois de receber pelo menos dois sub- blocos de dados incluindo o primeiro ID, o controlador de memória 106 pode obter separadamente uma localização de cada sub-bloco de dados nos primeiros dados com base em um SB do campo nos metadados dos pelo menos dois blocos de dados, de modo que o controlador de memória 106 possa obter, com base em um deslocamento de cada sub-bloco de dados nos primeiros dados, os primeiros dados, de acordo com os pelo menos dois sub-blocos de dados incluindo o primeiro ID. Etapa 216: O controlador de memória 106 retorna os primeiros dados para o processador 102.
[0060] Na modalidade mostrada na FIG. 2, como o acesso à memória é realizado no sistema de computador 100, é descrito usando um exemplo de leitura de dados relativamente grande. Pelo fato de que o sistema de computador pode suportar os comandos de leitura para diferentes requisitos, o seguinte descreve, usando outro caso como um exemplo, um processo de leitura de pequenos dados pelo sistema de computador 100. A FIG. 6 é um diagrama de sinalização de outro método de acesso à memória, de acordo com uma modalidade da presente invenção. Como mostrado na FIG. 6, o método pode incluir as seguintes etapas.
[0061] Etapa 602: Um processador envia uma segunda solicitação de acesso para um controlador de memória 106. A segunda solicitação de acesso inclui um segundo comprimento dos segundos dados a serem lidos, onde o segundo comprimento é menor que ou igual ao terceiro comprimento. Nesta modalidade da presente invenção, que os segundos dados são de 64B são usados como um exemplo para a descrição.
[0062] Etapa 604: O controlador de memória 106 envia um segundo comando de leitura para um controlador de mídia 110. O segundo comando de leitura inclui um segundo ID, um segundo endereço e o segundo comprimento. Um formato de dados do segundo comando de leitura também pode ser mostrado na FIG. 3. O segundo comprimento é usado para indicar um tamanho de segundos dados a serem lidos pelo segundo comando de leitura. Etapa 606: O controlador de mídia 110 lê os segundos dados a partir de NVM 112. Similar à etapa 206, o controlador de mídia 110 pode ler os segundos dados a partir de NVM 112 com base no segundo endereço e o segundo comprimento, e armazenar temporariamente os segundos dados lidos em um buffer de um NVDIMM. Em um processo de armazenamento dos segundos dados, tanto os segundos dados quanto os metadados dos segundos dados precisam ser armazenados. Os metadados dos segundos dados podem incluir um ID do segundo comando de leitura e uma localização dos segundos dados. Pelo fato de que os segundos dados são relativamente pequenos, o controlador de mídia 110 não necessita armazenar temporariamente os segundos dados em uma maneira de bloqueio.
[0063] Etapa 608: O controlador de mídia 110 envia um sinal pronto para o controlador de memória 106. Etapa 610: O controlador de memória 106 envia um comando de envio para o controlador de mídia 110. Etapa 612: O controlador de mídia 110 retorna os segundos dados e metadados dos segundos dados para o controlador de memória 106. Um formato dos dados retornados pelo controlador de mídia 110 pode ser mostrado na FIG. 4. Os metadados dos segundos dados podem ser mostrados na FIG. 5. Pelo fato de que um tamanho de segundos dados é de 64B, depois que o controlador de memória obtém os segundos dados retornados pelo controlador de mídia 110, na etapa 614, o controlador de memória 106 pode retornar diretamente os segundos dados para o processador 102.
[0064] Deve ser observado que, nesta modalidade da presente invenção, pelo fato de que um comprimento dos segundos dados é igual a um comprimento de dados que é lido pelo comando de envio, ao retornar os segundos dados, o controlador de mídia 110 pode definir um identificador de localização nos metadados dos segundos dados para 000 para indicar que os segundos dados têm apenas um bloco de dados. Em outro caso, ao receber os segundos dados retornados pelo controlador de mídia 110, o controlador de memória 106 pode aprender, com base no segundo ID nos metadados dos segundos dados, que os dados pertencem aos dados a serem lidos pelo segundo comando de leitura, e aprender ainda que um comprimento do segundo comando de leitura é igual ao terceiro comprimento. Desta maneira, o controlador de memória 106 pode saber que os segundos dados têm apenas um bloco de dados, de modo que o controlador de memória 106 pode considerar o identificador de localização nos metadados dos segundos dados como um identificador sem sentido.
[0065] A modalidade mostrada na FIG. 6 é similar à modalidade mostrada na FIG. 2. Portanto, para detalhes sobre as etapas relacionadas na modalidade mostrada na FIG. 6, referem-se à descrição de uma etapa correspondente na FIG. 2. Diferente da modalidade mostrada na FIG. 2, pelo fato de que os segundos dados a serem lidos pela segunda solicitação de acesso serem relativamente pequenos, o controlador de memória 106 pode obter os segundos dados usando um comando de envio. Portanto, depois que o controlador de memória 106 determina, com base nos metadados dos segundos dados retornados pelo controlador de mídia 110, que os segundos dados a serem lidos pelo segundo comando de leitura são completamente retornados, o controlador de memória pode retornar diretamente os segundos dados para o processador 102.
[0066] Na aplicação real, o sistema de computador 100 fornecido nesta modalidade da presente invenção, pode simultaneamente processar uma pluralidade de diferentes comandos de leitura para acessar diferentes chips NVM 112. Por exemplo, o sistema de computador 100 pode processar simultaneamente um primeiro comando de leitura e um segundo comando de leitura. A FIG. 2 e a FIG. 6 são meramente diagramas esquemáticos de um método de execução em que o sistema de computador 100 processa comandos de leitura para a leitura de dados com diferente comprimento. Além disso, o sistema de computador 100 fornecido nesta modalidade da presente invenção, pode suportar adicionalmente a execução fora de ordem de um comando de leitura. Desta maneira, as etapas na FIG. 2 e as etapas na FIG. 6 podem ser realizadas de forma cruzada. Por exemplo, antes da etapa 208, o controlador de memória pode realizar a etapa 604. Ao retornar os dados para o controlador de memória 106, o controlador de mídia pode retornar primeiro uma parte dos primeiros dados lidos pelo primeiro comando de leitura mostrado na FIG. 2, ou pode retornar primeiro os segundos dados lidos pelo segundo comando de leitura mostrado na FIG. 6. Portanto, nesta modalidade da presente invenção, uma sequência de execução de etapas do método de acesso às memórias mostradas na FIG. 2 e FIG. 6 não é limitada.
[0067] No sistema de computador fornecido na modalidade anterior, quando o processador 102 envia as solicitações de acesso que são usadas para ler os dados com diferente comprimento, o controlador de memória 106 pode enviar, para o NVDIMM 108 com base nas solicitações de acesso recebidas, comandos de leitura que são usados para ler os dados com diferente comprimento. Ao enviar o primeiro comando de leitura que é usado para ler dados relativamente grandes (por exemplo, os primeiros dados), o controlador de memória 106 pode enviar, para o controlador de mídia no NVDIMM 108, pelo menos dois comandos de envio que são usados para ler dados de comprimento fixo (por exemplo, o terceiro comprimento). O terceiro comprimento é menor que um primeiro comprimento dos primeiros dados. O controlador de mídia 110 pode retornar pelo menos dois sub-blocos de dados do terceiro comprimento e metadados para o controlador de memória 106 com base nos pelo menos dois comandos de envio recebidos. Os metadados correspondentes a cada sub-bloco de dados incluem um identificador de localização do sub-bloco de dados nos primeiros dados. Portanto, o controlador de memória 106 pode combinar os pelo menos dois sub-blocos de dados nos primeiros dados com base em identificadores de localização retornados nos metadados dos pelo menos dois sub-blocos de dados. O método fornecido nesta modalidade da presente invenção pode suportar um requisito de leitura para a leitura de dados com diferente comprimento sem o aumento de uma quantidade de comandos de leitura e sem desperdiçar a largura de banda do barramento.
[0068] Na aplicação real, pelo fato de que o sistema de computador 100 pode processar simultaneamente uma pluralidade de diferentes comandos de leitura, desta maneira, os dados a serem lidos por uma pluralidade de comandos de leitura podem ser armazenados temporariamente no buffer 114 do NVDIMM 108. Na aplicação real, quando dados são armazenados no buffer 114, o controlador de mídia 110 envia um sinal pronto para o controlador de memória 106 para instruir o controlador de memória 106 para obter dados. Para reduzir um atraso de espera na obtenção de dados pelo controlador de memória, nesta modalidade da presente invenção, uma sequência de agendamento dos blocos de dados no buffer pode ser adicionalmente otimizada. O seguinte descreve em detalhes, com referência à FIG. 5 e FIG. 7, como o sistema de computador 100 fornecido nas modalidades da presente invenção reduz o atraso de espera na obtenção de dados pelo controlador de memória.
[0069] Nesta modalidade da presente invenção, para reduzir o atraso de espera na obtenção de dados pelo controlador de memória, um identificador de transmissão (LB) pode ser adicionalmente adicionado aos metadados mostrados na FIG. 5. O identificador de transmissão LB ocupa apenas um bit nos metadados mostrados na FIG. 5. Especificamente, um bit pode ser selecionado a partir de bits não utilizados (por exemplo, bits indicados pelo RFU na FIG. 5) na estrutura de metadados mostrada na FIG. 5 como o identificador de transmissão. O identificador de transmissão é usado para indicar se o sub- bloco de dados é um último bloco de dados a ser transmitido nos dados a serem lidos por um comando de leitura indicado por um RID. Por exemplo, quando os primeiros dados são divididos em pelo menos dois sub-blocos de dados para armazenamento, qualquer um dos pelo menos dois sub-blocos de dados pode ser usado como o último sub-bloco de dados a ser transmitido dos primeiros dados. Desta maneira, um bit LB nos metadados do último sub-bloco de dados determinado a ser transmitido pode ser marcado como “1”, e um bit LB nos metadados de outro sub-bloco de dados nos primeiros dados pode ser marcado como “0”. Pode ser entendido que, “1” é meramente um exemplo que é usado para indicar que o sub-bloco de dados é um identificador do último sub-bloco de dados a ser transmitido, e “0” também é meramente um exemplo que é usado para indicar que o sub-bloco de dados não é um identificador do último sub-bloco de dados a ser transmitido. Outro identificador pode, alternativamente, ser usado na aplicação real, e nenhuma limitação é imposta neste relatório.
[0070] Nas modalidades da presente invenção, para reduzir um atraso de espera no recebimento de dados de um comando de leitura pelo controlador de memória 106, na etapa 212 mostrada na FIG. 2 e a etapa 612 mostrada na FIG. 6, o controlador de mídia 110 pode otimizar adicionalmente uma sequência para retornar os sub-blocos de dados, armazenados no buffer 114, de comandos de leitura. O seguinte descreve em detalhes, com referência à FIG. 7 a FIG. 9, como o controlador de mídia 110 nas modalidades da presente invenção retorna um bloco de dados para o controlador de memória 106. A FIG. 7 é um fluxograma de um método de agendamento, de acordo com uma modalidade da presente invenção. A FIG. 8 é um diagrama esquemático de um método de agendamento, de acordo com uma modalidade da presente invenção. A FIG. 9 é um diagrama esquemático de outro método de agendamento, de acordo com uma modalidade da presente invenção. Para clareza da descrição, que pelo menos dois sub- blocos de dados dos primeiros dados e segundos dados são armazenados temporariamente em um buffer 114 na modalidade mostrada na FIG. 7 são usados como um exemplo para a descrição. Como mostrado na FIG. 7, ao retornar um bloco de dados para um controlador de memória 106, um controlador de mídia 110 pode realizar as seguintes etapas.
[0071] Etapa 702: O controlador de mídia 110 determina que os segundos dados estão localizados depois do primeiro sub-bloco de dados dos primeiros dados no buffer 114 e localizados antes de um segundo sub-bloco de dados dos primeiros dados no buffer 114. Um identificador de transmissão do primeiro sub-bloco de dados indica que o primeiro sub-bloco de dados não é um último sub-bloco de dados a ser transmitido dos primeiros dados, e um identificador de transmissão do segundo sub-bloco de dados indica que o segundo sub-bloco de dados é um último sub-bloco de dados a ser transmitido dos primeiros dados.
[0072] Para clareza da descrição, um exemplo é usado para a descrição com referência à FIG. 8. Como mostrado na FIG. 8, um primeiro comando de leitura A e um segundo comando de leitura B são usados como um exemplo. Os dados a serem lidos pelo primeiro comando de leitura A incluem um sub-bloco de dados A0, um sub-bloco de dados A1 e um sub-bloco de dados A2 (LB), e os dados a serem lidos pelo segundo comando de leitura B incluem um sub-bloco de dados B0 (LB). A2 (LB) é usado para indicar que A2 é um último sub-bloco de dados a ser transmitido dos dados que são lidos pelo primeiro comando de leitura A, e B0 (LB) é usado para indicar que B0 é um último sub- bloco de dados a ser transmitido dos dados que são lidos pelo segundo comando de leitura B. Uma sequência de buffer dos sub-blocos de dados no buffer 114 é mostrada em 802. O sub-bloco de dados B0 (LB) está localizado depois do sub- bloco de dados A0 e o sub-bloco de dados A1 está localizado antes do sub-bloco de dados A2 (LB).
[0073] Etapa 704: O controlador de mídia 110, em resposta a um comando de envio enviado pelo controlador de memória 106, envia os segundos dados para o controlador de memória 106 antes do primeiro sub-bloco de dados. Especificamente, como mostrado por uma sequência de agendamento 804 na FIG. 8, o controlador de mídia 110 pode responder primeiro a um comando de envio enviado pelo controlador de memória 106, para enviar os segundos dados B0 (LB) ao controlador de memória 106 e, em seguida, responder aos pelo menos dois outros comandos de envio enviados pelo controlador de memória 106, para retornar o primeiro sub-bloco de dados A0, o segundo sub-bloco de dados A1, e o terceiro sub-bloco de dados A2 (LB) para o controlador de memória 106.
[0074] É considerado que um atraso de transmissão na transmissão de um sub-bloco de dados seja de quatro períodos. Se o controlador de mídia 110 envia os sub-blocos de dados para o controlador de memória 106 com base na sequência de buffer mostrada por 802 na FIG. 8, um atraso de espera no recebimento de todos os sub-blocos de dados do primeiro comando de leitura A pelo controlador de memória 106 é de 16 períodos, e um atraso de espera no recebimento de todos os sub-blocos de dados do segundo comando de leitura B pelo controlador de memória 106 é de 12 períodos. Para reduzir um atraso de espera do controlador de memória 106, depois que uma sequência de envio dos sub-blocos de dados no buffer 114 é ajustada, de acordo com o método mostrado nesta modalidade da presente invenção, por exemplo, com base na sequência de agendamento mostrada por 804, o controlador de mídia 110 pode enviar os dados B0 (LB) do segundo comando de leitura B para o controlador de memória 106 antes dos sub-blocos de dados A0 e A1 do primeiro comando de leitura A. Neste caso, o atraso de espera no recebimento de todos os sub-blocos de dados do primeiro comando de leitura A pelo controlador de memória 106 é inalterado, e ainda é de 16 períodos. Entretanto, o atraso de espera no recebimento de todos os sub-blocos de dados do segundo comando de leitura B pelo controlador de memória 106 é de quatro períodos, reduzindo, desse modo, o atraso no recebimento do sub-bloco de dados do segundo comando de leitura B pelo controlador de memória 106, e melhora a eficiência do processo no processamento do segundo comando de leitura B pelo controlador de memória 106.
[0075] Pelo fato de que os dados a serem lidos por um segundo comando de leitura incluem apenas um sub-bloco de dados B0 (LB) são usados como um exemplo para a descrição na FIG. 8. Na aplicação real, se os dados a serem lidos pelo segundo comando de leitura incluem uma pluralidade de sub- blocos de dados, fornecidos desde que cada sub-bloco de dados a ser lido pelo segundo comando de leitura esteja localizado depois de um sub-bloco de dados nos dados a serem lidos por um primeiro comando de leitura em um buffer e esteja localizado antes de um último sub-bloco de dados a ser transmitido dos dados a serem lidos pelo primeiro comando de leitura no buffer, o controlador de mídia 110 pode enviar o sub-bloco de dados a ser lido pelo segundo comando de leitura para o controlador de memória 106 antes do sub-bloco de dados a ser lido pelo primeiro comando de leitura. Como mostrado por 902 na FIG. 9, os dados a serem lidos por um segundo comando de leitura B inclui B0 e B1 (LB). B0 e B1 (LB) estão localizados depois de um sub-bloco de dados A0 a ser lido por um primeiro comando de leitura A em um buffer 114, e B0 e B1 (LB) estão localizados antes de um último sub-bloco de dados a ser transmitido A2 (LB) dos dados a serem lidos pelo primeiro comando de leitura A no buffer 114. Um controlador de mídia 110 pode enviar os sub-blocos de dados para o controlador de memória 106 com base em uma sequência de agendamento mostrada em 904. Especificamente, os dados B0 e B1 (LB) a serem lidos pelo segundo comando de leitura podem ser enviados para o controlador de memória antes do sub-bloco de dados A0 a ser lido pelo primeiro comando de leitura A. Pelo fato de que um atraso de transmissão na transmissão de um sub-bloco de dados é de quatro períodos é ainda usado como um exemplo. Depois de uma sequência de envio ser ajustada, um atraso no recebimento, pelo controlador de memória 106, os dados que são lidos pelo segundo comando de leitura B são reduzidos a partir de 16 períodos para oito atraso, e um atraso no recebimento, pelo controlador de memória 106, os dados que são lidos pelo primeiro comando de leitura A ainda é de 20 atrasos. Portanto, a eficiência do processamento do controlador de memória é otimizada até certo ponto.
[0076] Além disso, em consideração da equidade, para evitar um aumento em um atraso no recebimento de dados de um comando de leitura pelo controlador de memória 106, nesta modalidade da presente invenção, o controlador de mídia 110 não pode enviar, para o controlador de memória antes do sub-bloco de dados do primeiro comando de leitura, um sub-bloco de dados a ser lido por outro comando de leitura que está localizado depois do último sub- bloco de dados a ser transmitido dos dados do primeiro comando de leitura no buffer. Por exemplo, como mostrado na FIG. 8 e FIG. 9, um sub-bloco de dados C0 (LB) de um terceiro comando de leitura C está localizado depois do sub-bloco de dados A2 (LB) do primeiro comando de leitura A no buffer 114, e o controlador de mídia 110 não pode enviar o C0 (LB) para o controlador de memória 106 antes dos sub-blocos de dados A0, A1 e A2 (LB) do primeiro comando de leitura. Se o controlador de mídia 110 envia o C0 (LB) para o controlador de memória 106 antes dos sub-blocos de dados A0, A1 e A2 (LB) do primeiro comando de leitura, um atraso no recebimento de um bloco de dados do primeiro comando de leitura A pelo controlador de memória 106 aumenta. Por exemplo, no exemplo mostrado na FIG. 8, assumindo que um sub-bloco de dados do primeiro comando de leitura A é enviado depois que o sub-bloco de dados do terceiro comando de leitura C é enviado, um atraso no recebimento de dados do primeiro comando de leitura A pelo controlador de memória 106 aumenta a partir de 16 períodos para 20 períodos.
[0077] Deve ser observado que, nesta modalidade da presente invenção, quando o controlador de mídia 110 ajusta uma sequência de envio dos blocos de dados, um último bloco de dados a ser transmitido nos dados que são lidos por um comando de leitura não pode ser enviado antes de outro bloco de dados do comando. Por exemplo, o controlador de mídia 110 não pode enviar o sub-bloco de dados A2 (LB) do primeiro comando de leitura para o controlador de memória 106 antes do sub-bloco de dados A0 ou A1.
[0078] Pode ser aprendido a partir da descrição anterior que, com base nos métodos na FIG. 2 e FIG. 6 nas modalidades da presente invenção, em um processo de retorno dos dados lidos para o controlador de memória 106 pelo controlador de mídia 110, uma sequência de retorno de dados que são lidos pelos comandos de leitura é ajustada, de modo que os comandos de leitura para a leitura de dados com diferente comprimento podem ser processados, e adicionalmente um atraso no recebimento de dados pelo controlador de memória 106 pode ser reduzido, melhorando, desse modo, a eficiência do processamento do controlador de memória 106.
[0079] Um técnico no assunto pode estar ciente que, com referência aos exemplos descritos nas modalidades divulgadas nesta especificação, as etapas do método podem ser implementadas por hardware eletrônico ou uma combinação de software de computador e hardware eletrônico. Se as funções são realizadas por hardware ou software depende, em particular, de aplicações e condições de restrição do projeto das soluções técnicas. Um técnico no assunto pode usar diferentes métodos para implementar as funções descritas para cada aplicação particular, mas não deve ser considerado que a implementação vá além do escopo deste pedido.
[0080] Todas ou algumas das modalidades anteriores podem ser implementadas por software, hardware, firmware, ou qualquer combinação dos mesmos. Quando o software é usado para implementar as modalidades, as modalidades podem ser implementadas completamente ou parcialmente em uma forma de um produto de programa de computador. O produto de programa de computador inclui uma ou mais instruções de computador. Quando as instruções do programa de computador são carregadas e executadas no computador, os procedimentos ou funções, de acordo com as modalidades da presente invenção são todos ou parcialmente gerados. O computador pode ser um computador de uso geral, um computador dedicado, uma rede de computadores ou outro aparelho programável. As instruções de computador podem ser armazenadas em uma mídia de armazenamento legível por computador, ou pode ser transmitido a partir de uma mídia de armazenamento legível por computador para outra mídia de armazenamento legível por computador. Por exemplo, as instruções de computador podem ser transmitidas a partir de um website, computador, servidor ou centro de dados para outro website, computador, servidor ou centro de dados em uma maneira com fio (por exemplo, um cabo coaxial e uma fibra óptica) ou sem fio (por exemplo, infravermelho, rádio e micro-ondas). A mídia de armazenamento legível por computador pode ser qualquer mídia utilizável acessível por um computador, ou um dispositivo de armazenamento de dados, tal como um servidor ou um centro de dados, integrando uma ou mais mídias utilizáveis. A mídia utilizável pode ser uma mídia magnética (por exemplo, um disquete, um disco rígido ou uma fita magnética), uma mídia óptica (por exemplo, um disco óptico), ou uma mídia legível por máquina não transitória tal como uma mídia semicondutora (por exemplo, uma unidade de estado sólido (SSD)) que pode armazenar o código de programa.
[0081] Deve ser observado que as modalidades fornecidas neste pedido são meramente exemplos. Um técnico no assunto pode saber claramente que, para a conveniência e concisão da descrição, nas modalidades anteriores, as modalidades enfatizam diferentes aspectos, e para uma parte não descrita em detalhes em uma modalidade, referem-se à descrição relevante de outra modalidade. As características divulgadas nas modalidades da presente invenção, reivindicações e desenhos anexos podem existir independentemente, ou existir em uma combinação. As características descritas em uma forma de hardware nas modalidades da presente invenção podem ser executadas por software e vice-versa, que não é limitado neste relatório.

Claims (25)

1. Sistema de computador (100), CARACTERIZADO pelo fato de que compreende: um controlador de mídia (110); uma memória não volátil (NVM) (112) acoplada ao controlador de mídia e configurada para armazenar dados; e um controlador de memória (106) acoplado ao controlador de mídia e configurado para: enviar, para o controlador de mídia, um primeiro comando de leitura para ler primeiros dados de um primeiro comprimento na NVM, em que o primeiro comando de leitura compreende um primeiro identificador (ID) que identifica o primeiro comando de leitura; e enviar, para o controlador de mídia, pelo menos dois primeiros comandos de envio para buscar dados de um terceiro comprimento, em que o terceiro comprimento é menor que o primeiro comprimento; receber, a partir do controlador de mídia após enviar os pelo menos dois primeiros comandos de envio, pelo menos dois sub-blocos de dados do terceiro comprimento identificados pelo primeiro ID, em que os pelo menos dois sub-blocos de dados são sub-blocos dos primeiros dados, em que o controlador de memória se comunica com o controlador de mídia cumprindo um protocolo de acesso de barramento compatível com um protocolo de taxa de dados dupla (DDR).
2. Sistema de computador, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o controlador de memória é adicionalmente configurado para receber, a partir do controlador de mídia, metadados dos pelo menos dois sub-blocos de dados, em que metadados de cada sub-bloco de dados compreendem um ID de localização que indica um deslocamento de um sub-bloco de dados correspondente nos primeiros dados.
3. Sistema de computador, de acordo com qualquer uma das reivindicações 1 a 2, CARACTERIZADO pelo fato de que o controlador de memória é configurado adicionalmente para: enviar, para o controlador de mídia, um segundo comando de leitura para ler segundos dados de um segundo comprimento na NVM, em que o segundo comando de leitura compreende um segundo ID que identifica o segundo comando de leitura; enviar, para o controlador de mídia, um segundo comando de envio para buscar um bloco de dados do terceiro comprimento, em que o segundo comprimento é igual ao terceiro comprimento; e receber, a partir do controlador de mídia, os segundos dados identificados pelo segundo ID.
4. Sistema de computador, de acordo com qualquer uma das reivindicações 1 a 3, CARACTERIZADO pelo fato de que o controlador de memória se comunica com o controlador de mídia cumprindo um protocolo NVDIMM-P.
5. Sistema de computador, de acordo com qualquer uma das reivindicações 2 a 4, CARACTERIZADO pelo fato de que o ID de localização ocupa três bits.
6. Sistema de computador, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que compreende adicionalmente: um buffer acoplado à NVM e configurado para armazenar temporariamente os pelo menos dois sub-blocos de dados dos primeiros dados lidos a partir da NVM e dos segundos dados, e em que o controlador de mídia é configurado para enviar os segundos dados para o controlador de memória antes de enviar um primeiro sub-bloco de dados dos primeiros dados no buffer quando os segundos dados estiverem localizados após o primeiro sub-bloco de dados dos primeiros dados no buffer e antes de um segundo sub-bloco de dados dos primeiros dados no buffer, em que o segundo sub-bloco de dados é o último sub-bloco de dados a ser transmitido dos primeiros dados.
7. Armazenamento, CARACTERIZADO pelo fato de que compreende: uma memória não volátil (NVM) configurada para armazenar dados; e um controlador de mídia acoplado à NVM e configurado para: receber, a partir de um controlador de memória, um primeiro comando de leitura para ler primeiros dados de um primeiro comprimento na NVM, em que o primeiro comando de leitura compreende um primeiro identificador (ID) que identifica o primeiro comando de leitura; receber, a partir do controlador de memória, pelo menos dois primeiros comandos de envio para buscar dados de um terceiro comprimento, em que o terceiro comprimento é menor que o primeiro comprimento; e enviar, em resposta aos pelo menos dois primeiros comandos de envio, pelo menos dois sub-blocos de dados do terceiro comprimento identificados pelo primeiro ID, em que os pelo menos dois sub-blocos de dados são sub-blocos dos primeiros dados, em que o armazenamento se comunica com o controlador de memória cumprindo um protocolo de acesso de barramento compatível com um protocolo de taxa de dados dupla (DDR).
8. Armazenamento, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que o controlador de mídia é configurado adicionalmente para: receber, a partir do controlador de memória, um segundo comando de leitura para ler segundos dados de um segundo comprimento na NVM, em que o segundo comando de leitura compreende um segundo ID que identifica o segundo comando de leitura; receber, a partir do controlador de memória, um segundo comando de envio para buscar um bloco de dados do terceiro comprimento, em que o segundo comprimento é igual ao terceiro comprimento; e enviar, em resposta ao segundo comando de envio, os segundos dados identificados pelo segundo ID para o controlador de memória.
9. Armazenamento, de acordo com qualquer uma das reivindicações 7 a 8, CARACTERIZADO pelo fato de que compreende adicionalmente um buffer acoplado ao controlador de mídia e configurado para armazenar temporariamente os pelo menos dois sub-blocos de dados dos primeiros dados.
10. Armazenamento, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que compreende adicionalmente: um buffer acoplado ao controlador de mídia e configurado para armazenar temporariamente os pelo menos dois sub-blocos de dados dos primeiros dados e dos segundos dados; em que o controlador de mídia é configurado adicionalmente para enviar os segundos dados para o controlador de memória antes de enviar um primeiro sub-bloco de dados dos primeiros dados no buffer quando os segundos dados estiverem localizados após o primeiro sub-bloco de dados dos primeiros dados no buffer e antes de um segundo sub-bloco de dados dos primeiros dados no buffer, em que o segundo sub-bloco de dados é o último sub-bloco de dados a ser transmitido dos primeiros dados.
11. Armazenamento, de acordo com qualquer uma das reivindicações 7 a 10, CARACTERIZADO pelo fato de que o controlador de mídia é configurado adicionalmente para: enviar, em resposta aos pelo menos dois primeiros comandos de envio, metadados dos pelo menos dois sub-blocos de dados para o controlador de memória, em que metadados de cada sub-bloco de dados compreendem um ID de localização que indica um deslocamento de um sub-bloco de dados correspondente nos primeiros dados.
12. Armazenamento, de acordo com qualquer uma das reivindicações 7 a 11, CARACTERIZADO pelo fato de que o armazenamento se comunica com o controlador de memória cumprindo um protocolo NVDIMM- P.
13. Armazenamento, de acordo com qualquer uma das reivindicações 8 a 11, CARACTERIZADO pelo fato de que o ID de localização ocupa três bits.
14. Método de acesso à memória realizado por um controlador de memória em um sistema de computador, CARACTERIZADO pelo fato de que compreende: enviar, para um controlador de mídia acoplado a uma memória não volátil (NVM) no sistema de computador, um primeiro comando de leitura para ler primeiros dados de um primeiro comprimento na NVM, em que o primeiro comando de leitura compreende um primeiro identificador (ID) que identifica o primeiro comando de leitura; enviar, para o controlador de mídia, pelo menos dois primeiros comandos de envio para buscar dados de um terceiro comprimento, em que o terceiro comprimento é menor que o primeiro comprimento; receber, a partir do controlador de mídia após enviar os pelo menos dois primeiros comandos de envio, pelo menos dois sub-blocos de dados do terceiro comprimento identificados pelo primeiro ID, em que os pelo menos dois sub-blocos de dados são sub-blocos dos primeiros dados, em que o controlador de memória se comunica com o controlador de mídia cumprindo um protocolo de acesso de barramento compatível com um protocolo de taxa de dados dupla (DDR).
15. Método de acesso à memória, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de que compreende adicionalmente: enviar, para o controlador de mídia, um segundo comando de leitura para ler segundos dados de um segundo comprimento na NVM, em que o segundo comando de leitura compreende um segundo ID que identifica o segundo comando de leitura; enviar, para o controlador de mídia, um segundo comando de envio para buscar um bloco de dados do terceiro comprimento, em que o segundo comprimento é igual ao terceiro comprimento; e receber, a partir do controlador de mídia, os segundos dados identificados pelo segundo ID.
16. Método de acesso à memória, de acordo com qualquer uma das reivindicações 14 a 15, CARACTERIZADO pelo fato de que compreende adicionalmente: receber, a partir do controlador de mídia, metadados dos pelo menos dois sub-blocos de dados, em que metadados de cada sub-bloco de dados compreende um ID de localização que indica um deslocamento de um sub- bloco de dados correspondente nos primeiros dados.
17. Método de acesso à memória, de acordo com qualquer uma das reivindicações 14 a 16, CARACTERIZADO pelo fato de que o controlador de memória se comunica com o controlador de mídia cumprindo um protocolo NVDIMM-P.
18. Método de acesso à memória, de acordo com qualquer uma das reivindicações 16 a 19, CARACTERIZADO pelo fato de que o ID de localização ocupa três bits.
19. Método de acesso à memória realizado por um controlador de mídia, CARACTERIZADO pelo fato de que compreende: receber, a partir de um controlador de memória, um primeiro comando de leitura para ler primeiros dados de um primeiro comprimento em uma memória não volátil (NVM) acoplada ao controlador de mídia, em que o primeiro comando de leitura compreende um primeiro identificador (ID) que identifica o primeiro comando de leitura; receber, a partir do controlador de memória, pelo menos dois primeiros comandos de envio para buscar dados de um terceiro comprimento, em que o terceiro comprimento é menor que o primeiro comprimento; e enviar, em resposta aos pelo menos dois primeiros comandos de envio, pelo menos dois sub-blocos de dados do terceiro comprimento identificados pelo primeiro ID, em que os pelo menos dois sub-blocos de dados são sub-blocos dos primeiros dados, em que o controlador de mídia se comunica com o controlador de memória cumprindo um protocolo de acesso de barramento compatível com um protocolo de taxa de dados dupla (DDR).
20. Método de acesso à memória, de acordo com a reivindicação 19, CARACTERIZADO pelo fato de que compreende adicionalmente: receber, a partir do controlador de memória, um segundo comando de leitura para ler segundos dados de um segundo comprimento na NVM, em que o segundo comando de leitura compreende um segundo ID que identifica o segundo comando de leitura; receber, a partir do controlador de memória, um segundo comando de envio para buscar um bloco de dados do terceiro comprimento, em que o segundo comprimento é igual ao terceiro comprimento; e enviar, em resposta ao segundo comando de envio, os segundos dados identificados pelo segundo ID para o controlador de memória.
21. Método de acesso à memória, de acordo com a reivindicação 19 ou 20, CARACTERIZADO pelo fato de que compreende adicionalmente: determinar que os segundos dados estão localizados após um primeiro sub-bloco de dados dos primeiros dados em um buffer e antes de um segundo sub-bloco de dados dos primeiros dados no buffer; e enviar os segundos dados para o controlador de memória antes de enviar o primeiro sub-bloco de dados, em que o segundo sub-bloco de dados é o último sub-bloco de dados a ser transmitido dos primeiros dados.
22. Método de acesso à memória, de acordo com qualquer uma das reivindicações 19 a 21, CARACTERIZADO pelo fato de que compreende adicionalmente: enviar, em resposta aos pelo menos dois primeiros comandos de envio, metadados dos pelo menos dois sub-blocos de dados para o controlador de memória, em que metadados de cada sub-bloco de dados compreendem um ID de localização que indica um deslocamento de um sub-bloco de dados correspondente nos primeiros dados.
23. Método de acesso à memória, de acordo com qualquer uma das reivindicações 19 a 22, CARACTERIZADO pelo fato de que o controlador de mídia se comunica com o controlador de memória cumprindo um protocolo NVDIMM-P.
24. Método de acesso à memória, de acordo com qualquer uma das reivindicações 22 a 23, CARACTERIZADO pelo fato de que o ID de localização ocupa três bits.
25. Mídia de armazenamento legível por computador, CARACTERIZADA pelo fato de que compreende uma ou mais instruções executáveis por computador, em que quando a uma ou mais instruções executáveis por computador rodam em um computador, o computador realiza o método conforme definido em qualquer uma das reivindicações 14 a 18 ou 19 a 24.
BR112019026942-8A 2017-06-23 2017-06-23 Tecnologia de acesso à memória e sistema de computador BR112019026942B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/089774 WO2018232736A1 (zh) 2017-06-23 2017-06-23 内存访问技术及计算机系统

Publications (2)

Publication Number Publication Date
BR112019026942A2 BR112019026942A2 (pt) 2020-07-07
BR112019026942B1 true BR112019026942B1 (pt) 2024-02-15

Family

ID=64735409

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019026942-8A BR112019026942B1 (pt) 2017-06-23 2017-06-23 Tecnologia de acesso à memória e sistema de computador

Country Status (8)

Country Link
US (3) US10732876B2 (pt)
EP (3) EP3822798B1 (pt)
JP (2) JP6900518B2 (pt)
KR (3) KR102443106B1 (pt)
CN (1) CN109478168B (pt)
BR (1) BR112019026942B1 (pt)
ES (1) ES2840423T3 (pt)
WO (1) WO2018232736A1 (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877669B1 (en) * 2011-06-30 2020-12-29 Amazon Technologies, Inc. System and method for providing a committed throughput level in a data store
US10831650B2 (en) * 2018-03-07 2020-11-10 Exten Technologies, Inc. Systems and methods for accessing non-volatile memory and write acceleration cache
CN112154408A (zh) * 2018-04-12 2020-12-29 美光科技公司 重放受保护存储器块命令队列
US10969994B2 (en) * 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
US11074007B2 (en) 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US11210093B2 (en) 2019-04-08 2021-12-28 Micron Technology, Inc. Large data read techniques
US11256423B2 (en) * 2019-10-14 2022-02-22 Western Digital Technologies, Inc. Efficiently identifying command readiness based on system state and data spread in multi queue depth environment
CN110781120B (zh) * 2019-10-23 2023-02-28 山东华芯半导体有限公司 一种axi总线主机设备跨4kb传输的实现方法
US11599485B2 (en) 2020-11-25 2023-03-07 Micron Technology, Inc. Status check using signaling

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07302176A (ja) * 1994-05-09 1995-11-14 Toshiba Corp 半導体ディスク装置
US7480781B2 (en) * 2004-12-30 2009-01-20 Intel Corporation Apparatus and method to merge and align data from distributed memory controllers
WO2010093356A1 (en) * 2009-02-11 2010-08-19 Stec, Inc. A flash backed dram module
US8438453B2 (en) 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
TWI454906B (zh) * 2009-09-24 2014-10-01 Phison Electronics Corp 資料讀取方法、快閃記憶體控制器與儲存系統
CN101876944B (zh) 2009-11-26 2012-02-15 威盛电子股份有限公司 动态随机存取存储器控制器和控制方法
JP5611889B2 (ja) * 2011-05-17 2014-10-22 株式会社東芝 データ転送装置、データ送信システムおよびデータ送信方法
US9294564B2 (en) * 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US8793343B1 (en) * 2011-08-18 2014-07-29 Amazon Technologies, Inc. Redundant storage gateways
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
CN103034603B (zh) 2012-12-07 2014-06-18 天津瑞发科半导体技术有限公司 多通道闪存卡控制装置及其控制方法
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN104375946B (zh) * 2013-08-16 2018-04-20 华为技术有限公司 一种数据处理的方法及装置
JP6217241B2 (ja) 2013-08-28 2017-10-25 コニカミノルタ株式会社 胸部診断支援システム
US9021154B2 (en) * 2013-09-27 2015-04-28 Intel Corporation Read training a memory controller
JP6287571B2 (ja) * 2014-05-20 2018-03-07 富士通株式会社 演算処理装置、情報処理装置、及び、演算処理装置の制御方法
US9696920B2 (en) 2014-06-02 2017-07-04 Micron Technology, Inc. Systems and methods for improving efficiencies of a memory system
KR102249416B1 (ko) * 2014-06-11 2021-05-07 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 구동 방법
WO2016071954A1 (ja) * 2014-11-04 2016-05-12 株式会社日立製作所 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置
US9711194B2 (en) * 2015-01-28 2017-07-18 Xilinx, Inc. Circuits for and methods of controlling the operation of a hybrid memory system
US9778864B2 (en) * 2015-03-10 2017-10-03 SK Hynix Inc. Data storage device using non-sequential segment access and operating method thereof
JP6515602B2 (ja) * 2015-03-12 2019-05-22 日本電気株式会社 データ処理装置及びデータ処理方法
JP6541998B2 (ja) 2015-03-24 2019-07-10 東芝メモリ株式会社 メモリデバイス、半導体装置および情報処理装置
US10353747B2 (en) * 2015-07-13 2019-07-16 Futurewei Technologies, Inc. Shared memory controller and method of using same
US10254990B2 (en) * 2015-12-07 2019-04-09 Netapp, Inc. Direct access to de-duplicated data units in memory-based file systems
US9460791B1 (en) * 2015-12-08 2016-10-04 Inphi Corporation Data clock synchronization in hybrid memory modules
US10152237B2 (en) * 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
KR102554416B1 (ko) * 2016-08-16 2023-07-11 삼성전자주식회사 메모리 장치의 내부 상태 출력 장치 및 이를 적용하는 메모리 시스템
US20180059933A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Electrically-Buffered NV-DIMM and Method for Use Therewith
CN106843772A (zh) * 2017-02-14 2017-06-13 郑州云海信息技术有限公司 一种基于一致性总线扩展非易失内存的系统及方法
US10542089B2 (en) * 2017-03-10 2020-01-21 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives

Also Published As

Publication number Publication date
KR102443106B1 (ko) 2022-09-14
KR20220129100A (ko) 2022-09-22
KR102336232B1 (ko) 2021-12-07
JP6900518B2 (ja) 2021-07-07
EP4152166A3 (en) 2023-04-26
EP3822798A2 (en) 2021-05-19
JP2020524859A (ja) 2020-08-20
EP4152166A2 (en) 2023-03-22
US20200393965A1 (en) 2020-12-17
KR20210150611A (ko) 2021-12-10
WO2018232736A1 (zh) 2018-12-27
BR112019026942A2 (pt) 2020-07-07
US11681452B2 (en) 2023-06-20
EP3480702A1 (en) 2019-05-08
EP3822798A3 (en) 2021-06-09
JP7162102B2 (ja) 2022-10-27
US20220206686A1 (en) 2022-06-30
US10732876B2 (en) 2020-08-04
US11231864B2 (en) 2022-01-25
ES2840423T3 (es) 2021-07-06
CN109478168B (zh) 2020-12-04
CN109478168A (zh) 2019-03-15
EP3480702A4 (en) 2019-09-04
KR20200019706A (ko) 2020-02-24
US20190196716A1 (en) 2019-06-27
EP3480702B1 (en) 2020-09-30
EP3822798B1 (en) 2022-08-24
KR102532173B1 (ko) 2023-05-16
JP2021152933A (ja) 2021-09-30

Similar Documents

Publication Publication Date Title
BR112019026942B1 (pt) Tecnologia de acesso à memória e sistema de computador
CN109582614B (zh) 针对远程存储器访问的nvm express控制器
KR102111741B1 (ko) 임베디드 멀티미디어 카드 및 이의 동작 방법
US11467764B2 (en) NVMe-based data read method, apparatus, and system
US8572342B2 (en) Data transfer device with confirmation of write completion and method of controlling the same
WO2020000485A1 (zh) 一种基于NVMe的数据写入方法、装置及系统
US20140143519A1 (en) Store operation with conditional push
CN116414767B (zh) 一种对基于axi协议乱序响应的重排序方法及系统
US20180253391A1 (en) Multiple channel memory controller using virtual channel
US8639840B2 (en) Processing unit, chip, computing device and method for accelerating data transmission
CN110781107B (zh) 基于dram接口的低延迟融合io控制方法和装置
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
CN101599049B (zh) 控制dma访问不连续物理地址的方法及dma控制器
US11210195B2 (en) Dynamic device-determined storage performance
US10254961B2 (en) Dynamic load based memory tag management

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06W Patent application suspended after preliminary examination (for patents with searches from other patent authorities) chapter 6.23 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 23/06/2017, OBSERVADAS AS CONDICOES LEGAIS