BR112017022547B1 - Método para acessar memória estendida, dispositivo e sistema - Google Patents

Método para acessar memória estendida, dispositivo e sistema Download PDF

Info

Publication number
BR112017022547B1
BR112017022547B1 BR112017022547-6A BR112017022547A BR112017022547B1 BR 112017022547 B1 BR112017022547 B1 BR 112017022547B1 BR 112017022547 A BR112017022547 A BR 112017022547A BR 112017022547 B1 BR112017022547 B1 BR 112017022547B1
Authority
BR
Brazil
Prior art keywords
memory
data
address
extended
extended memory
Prior art date
Application number
BR112017022547-6A
Other languages
English (en)
Other versions
BR112017022547A2 (pt
Inventor
Zehan Cui
Mingyu Chen
Yao Liu
Yuan Ruan
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 BR112017022547A2 publication Critical patent/BR112017022547A2/pt
Publication of BR112017022547B1 publication Critical patent/BR112017022547B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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
    • 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/1689Synchronisation and timing concerns
    • 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/1694Configuration of memory controller to different memory types
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0064Latency reduction in handling transfers

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)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

método para acessar memória estendida, dispositivo e sistema. trata-se de um método para acessar uma memória estendida, um dispositivo e um sistema. o método inclui: receber (710) n (mais) 1 solicitações de acesso de memória enviadas em série por um sistema de processador em um computador, sendo que endereços de acesso em todas as solicitações de acesso de memória são diferentes entre si e apontam para um mesmo endereço físico, sendo que o endereço físico é um endereço de armazenamento de dados a serem acessados na memória estendida, n(maior igual)1, e n é um número inteiro; quando uma primeira solicitação de acesso de memória é recebida, enviar uma solicitação de leitura à memória estendida, e retornar (730) uma mensagem de resposta específica para sistema de processador; em um processo de leitura dos dados a serem acessados da memória estendida, cada vez que uma solicitação de acesso de memória é recebida, retornar (750) uma mensagem de resposta específica ao processador dentro de um atraso especificado em um protocolo de barramento de memória até que os dados a serem acessados sejam gravados em um armazenamento temporário de dados; e, então, retornar (790) os dados a serem acessados ao sistema de processador.

Description

[0001] Este pedido reivindica a prioridade do pedido de patente chinês n° 201510198452.X, depositado junto à Repartição de Patentes Chinesa em 23 de abril de 2015 e intitulado "METHOD FOR ACCESSING EXTENDED MEMORY, DEVICE, AND SYSTEM", o qual é incorporado ao presente documento a título de referência em sua totalidade.
CAMPO DA TÉCNICA
[0002] A presente invenção refere-se ao campo de computador e, em particular, a um método para acessar uma memória estendida, um dispositivo e um sistema.
ANTECEDENTES
[0003] A aplicação de grandes dados (Big Data) tem uma maior necessidade para uma capacidade de processamento de computador. Um indicador importante de aprimorar a capacidade de processamento de computador é um aprimoramento de uma capacidade de memória. Em uma situação de aplicação, devido a um nível de integração limitado de um chip de memória existente, múltiplos chips de memória são conectados usando-se um chip de extensão, a fim de expandir a capacidade de memória. Em outra situação de aplicação, um chip de aceleração de aplicação é adicionado a mais sistemas de computador para realizar processamento de aceleração em algumas aplicações específicas. Por exemplo, uma GPU (Unidade de Processamento Gráfico, graphics processing unit) é geralmente usada para aceleração durante o processamento de dados gráficos e de imagem. Em geral, tal chip de aceleração de aplicação pode ser implantado usando-se um ASIC (Circuito Integrado de Aplicação Específica, application-specific integrated circuit) ou um FPGA (Arranjo de Porta Programável de Campo, field programmable gate array).
[0004] As duas situações de aplicação precedentes podem ser descritas com base na Figura 1. Um sistema de processador (Processor) 101, uma memória de sistema 102, um chip de extensão de memória 103 e uma memória estendida 104 são incluídos na Figura 1, e um controlador de memória 1011 é integrado ao sistema de processador 101. A memória de sistema 102 é conectada ao sistema de processador 101 usando-se um barramento de memória, a memória estendida 104 é conectada ao chip de extensão de memória 103 usando-se o barramento de memória, e o sistema de processador 101 pode ser conectado ao chip de extensão de memória 103 através do controlador de memória 1011 de múltiplas maneiras.
[0005] Em uma primeira tecnologia existente, uma maneira de implantação é usar um barramento de I/O para conectar o sistema de processador 101 e o chip de extensão de memória 103. Um barramento de I/O comumente usado inclui um barramento PCI-E (Interconexão Expressa de Componentes Periféricos, Peripheral Component Interconnect Express), um barramento Intel QPI (Interconexão de Caminho Rápido, Quick Path Interconnect), ou um barramento AMD HT (Hiper Transporte, HyperTransport). Usando-se o barramento de I/O, há um atraso relativamente alto, e projeto de encadeamento refinado é exigido para o chip de extensão de memória 103, a fim de compensar um atraso de acesso de dados.
[0006] Em uma segunda tecnologia existente, uma maneira de implantação é usar um barramento de memória para conectar o sistema de processador 101 e o chip de extensão de memória 103. O uso do barramento de memória permite que o chip de extensão de memória 103 e o sistema de processador 101 compartilhem diretamente a memória estendida 104, de modo que um atraso de acesso de memória seja relativamente pequeno.
[0007] O meio técnico na segunda tecnologia existente tem os seguintes problemas: Devido ao fato de que há o chip de extensão de memória 103 entre o sistema de processador 101 e a memória estendida 104, depois que o sistema de processador 101 envia uma solicitação de acesso de memória para acessar dados na memória estendida 104, quando o controlador de memória integrado 1011 recebe a solicitação de acesso de memória e acessa a memória estendida 104 usando-se um protocolo de DDR (Taxa Dupla de Dados), um atraso extra é causado pela existência do chip de extensão de memória 103. Consequentemente, um resultado de processamento da solicitação de acesso de memória não pode ser retornado dentro de um atraso exigido pelo protocolo de DDR, e a viabilidade de acessar a memória estendida 104 pelo sistema de computador precedente é afetada.
[0008] Para solucionar o problema de atraso precedente, na técnica anterior, uma maneira de modificar um parâmetro de sequência temporal de um controlador de memória é usada, ou seja, o parâmetro de sequência temporal do controlador de memória integrado em um processador é modificado, de modo que o parâmetro de sequência temporal do processador seja maior do que um atraso de acesso de memória real. No entanto, devido ao fato de que o processador suporta uma faixa de definição limitada de um parâmetro de sequência temporal máximo, é difícil compensar um atraso de acesso extra em um processo de acesso de uma memória estendida.
[0009] O documento CN 105095138 A revela um método e dispositivo para expandir uma função de barramento de memória síncrona. O dispositivo compreende um processador, um módulo de acesso auxiliar e um controlador de memória estendida. O módulo de acesso auxiliar é usado para determinar se uma solicitação de acesso de memória é para acessar uma memória de sistema ou expandir uma memória de acordo com as informações de atributo de endereço contidas na solicitação de acesso de memória, enviar a solicitação de acesso de memória para um controlador de memória se a solicitação de acesso de memória for para acessar a memória de sistema, caso contrário, gerar uma solicitação de acesso cujo endereço alvo é o controlador de memória estendida. O controlador de memória estendida é usado para enviar uma solicitação de memória expandida de acesso gerada pelo módulo de acesso auxiliar para um chip de memória expandida.
[0010] O documento EP 2801912 A revela um aparelho de acesso de memória baseado em mensagem e um método de acesso do mesmo. O aparelho de acesso de memória baseado em mensagem inclui: um barramento de comando baseado em mensagem, configurado para transmitir uma instrução de acesso de memória baseado em mensagem gerada pela CPU para instruir um sistema de memória a realizar uma operação correspondente; um controlador de memória baseado em mensagem, configurado para empacotar uma solicitação de CPU em um pacote de mensagem e enviar o pacote a um módulo de armazenamento, e analisar um pacote de mensagem retornado pelo módulo de armazenamento e retornar dados para a CPU; um canal de mensagem, configurado para transmitir um pacote de mensagem de solicitação e um pacote de mensagem de resposta; e o módulo de armazenamento, incluindo um agendador de buffer, e configurado para receber o pacote de solicitação a partir do controlador de memória baseado em mensagem e processar a solicitação correspondente.
[0011] O documento US 2012/011386 A revela que um aparelho de memória inclui múltiplos circuitos de memória e um circuito de interface para apresentar circuitos de memória emulados a um sistema host. O circuito de interface inclui um primeiro componente de um primeiro tipo e um segundo componente de um segundo tipo, o primeiro componente e o segundo componente sendo operáveis para apresentar uma interface de sistema host ao sistema host e apresentar uma interface de circuito de memória à pluralidade de circuitos de memória, em que há uma diferença em pelo menos um aspecto entre a interface de sistema host e a interface de circuito de memória. Pelo menos um dentre o primeiro e segundo componentes é operável para identificar um ou mais circuitos de memória que não está sendo acessado e para realizar uma operação de economia de energia no um ou mais circuitos de memória identificados como não sendo acessados, em que a operação de economia de energia inclui colocar os circuitos de memória identificados como não sendo acessados em um modo de desligamento de pré-carga.
SUMÁRIO
[0012] Com base no problema precedente, modalidades da presente invenção fornecem um método para acessar uma memória estendida, um dispositivo e um sistema, a fim de solucionar de modo eficaz um problema de que um atraso em um processo de acesso da memória estendida não pode ser compensado
[0013] Um primeiro aspecto das modalidades da presente invenção fornece um método para acessar uma memória estendida por um computador, sendo que um sistema de processador no computador é conectado a um sistema de memória estendida usando-se um barramento de memória, o sistema de memória estendida inclui um controlador de memória estendida e a memória estendida, e quando o sistema de processador no computador precisa acessar dados a serem acessados armazenados na memória estendida, o método inclui: receber, pelo controlador de memória estendida, N+1 solicitações de acesso de memória enviadas em série pelo sistema de processador no computador, sendo que endereços de acesso incluídos em todas as solicitações de acesso de memória são diferentes entre si e apontam para um mesmo endereço físico, sendo que o endereço físico é um endereço de armazenamento dos dados a serem acessados na memória estendida, N>1, e N é um número inteiro; determinar, pelo controlador de memória estendida ao receber uma primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória, o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, enviar, à memória estendida, uma solicitação de leitura para obter os dados a serem acessados, e retornar uma mensagem de resposta específica ao sistema de processador, sendo que a solicitação de leitura inclui o endereço físico; antes de receber os dados a serem acessados retornados pela memória estendida, cada vez que outra solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, retornar, pelo controlador de memória estendida, uma mensagem de resposta específica ao sistema de processador dentro de um atraso de acesso especificado em um protocolo de barramento de memória; gravar, pelo controlador de memória estendida depois de receber os dados a serem acessados retornados pela memória estendida, os dados a serem acessados em um buffer de dados, e interromper o retorno de uma mensagem de resposta específica ao sistema de processador; e ler, pelo controlador de memória estendida ao receber outra solicitação de acesso de memória das N+1 solicitações de acesso de memória, os dados a serem acessados do buffer de dados, e retornar os dados a serem acessados ao sistema de processador.
[0014] Em referência ao primeiro aspecto, em uma primeira maneira de implantação possível, os endereços de acesso em todas as N+1 solicitações de acesso de memória incluem um mesmo endereço de banco e diferentes endereços de fileira.
[0015] Em referência ao primeiro aspecto e à primeira maneira de implantação possível do primeiro aspecto, em uma segunda maneira de implantação possível, o método inclui adicionalmente predefinir, pelo controlador de memória estendida, uma relação de mapeamento entre os endereços de acesso incluídos em todas as N+1 solicitações de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida; e a determinação, pelo controlador de memória estendida, o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória inclui consultar, pelo controlador de memória estendida, a relação de mapeamento de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, a fim de obter o endereço físico.
[0016] Em referência à segunda maneira de implantação possível do primeiro aspecto, em uma terceira maneira de implantação possível, após a determinação, pelo controlador de memória estendida, o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, o método inclui adicionalmente: criar, pelo controlador de memória estendida, um registro no buffer de dados, sendo que o registro inclui um campo de tag e um campo de dados, e definir o campo de tag ao endereço físico.
[0017] Em referência à terceira maneira de implantação possível do primeiro aspecto, em uma quarta maneira de implantação possível, o registro inclui adicionalmente um campo de validade, e o método inclui adicionalmente definir, pelo controlador de memória estendida, o campo de validade para inválido.
[0018] Em referência à quarta maneira de implantação possível do primeiro aspecto, em uma quinta maneira de implantação possível, cada vez que outra solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, o método inclui adicionalmente: consultar, pelo controlador de memória estendida, a relação de mapeamento de acordo com os endereços de acesso portados em todas as solicitações de acesso de memória, a fim de obter o endereço físico; e consultar o registro no buffer de dados de acordo com o endereço físico e, ao determinar que o campo de validade no registro é inválido, gerar a mensagem de resposta específica.
[0019] Em referência à quarta maneira de implantação possível do primeiro aspecto, em uma sexta maneira de implantação possível, a gravação, pelo controlador de memória estendida depois de receber os dados a serem acessados retornados pela memória estendida, dos dados a serem acessados em um buffer de dados inclui: pesquisar, pelo controlador de memória estendida, no buffer de dados pelo registro correspondente ao endereço físico, definir o campo de dados no registro aos dados a serem acessados, e definir o campo de validade para válido.
[0020] Um segundo aspecto das modalidades da presente invenção fornece um método para acessar uma memória estendida, sendo que um sistema de processador em um computador é conectado a um sistema de memória estendida usando-se um barramento de memória, o sistema de memória estendida inclui um controlador de memória estendida e a memória estendida, e quando um sistema de processador no computador precisa acessar dados a serem acessados armazenados na memória estendida, o método inclui: receber, pelo sistema de processador, um endereço de armazenamento dos dados a serem acessados; gerar, pelo sistema de processador, N+1 solicitações de acesso de memória de acordo com o endereço de armazenamento dos dados a serem acessados, sendo que endereços de acesso incluídos nas N+1 solicitações de acesso de memória são diferentes entre si e apontam para um mesmo endereço físico, o endereço físico é o endereço de armazenamento dos dados a serem acessados na memória estendida, N>1, e N é um número inteiro; e enviar, pelo sistema de processador, as N+1 solicitações de acesso de memória ao controlador de memória estendida.
[0021] Em referência ao segundo aspecto, em uma primeira maneira de implantação possível, antes da geração, pelo sistema de processador, de N+1 solicitações de acesso de memória de acordo com o endereço de armazenamento dos dados a serem acessados, o método inclui adicionalmente: determinar um valor N de acordo com um parâmetro de atraso para obter dados da memória estendida pelo computador, sendo que o parâmetro de atraso para obter dados da memória estendida pelo computador inclui qualquer um ou qualquer combinação dos seguintes parâmetros: um atraso tPD1 de transmissão da solicitação de acesso de memória do controlador de memória estendida à memória estendida, um atraso tPD2 de transmissão de dados, que é lido pela solicitação de acesso de memória, da memória estendida ao controlador de memória estendida, ou um intervalo de tempo T_Interval entre duas solicitações de acesso de memória consecutivas enviadas pelo sistema de processador.
[0022] Em referência à primeira maneira de implantação possível do segundo aspecto, em uma segunda maneira de implantação possível, a determinação um valor N de acordo com um parâmetro de atraso para obter dados da memória estendida pelo computador inclui determinar o valor N, sendo que N>[(tPD1+tPD2)/T_Interval], e [*] é uma função de arredondamento.
[0023] Em referência à primeira maneira de implantação possível e à segunda maneira de implantação possível que são do segundo aspecto, em uma terceira maneira de implantação possível, o intervalo de tempo T_Interval entre duas solicitações de acesso de memória consecutivas é tGAPmin=tRCD+tRTP+tRP ou T_Fence (ou seja, um atraso para executar uma instrução de cerca por um processador).
[0024] Em referência ao segundo aspecto, à primeira maneira de implantação possível do segundo aspecto, à segunda maneira de implantação possível do segundo aspecto, e à terceira maneira de implantação possível do segundo aspecto, em uma quarta maneira de implantação possível, a geração, pelo sistema de processador, de N+1 solicitações de acesso de memória de acordo com o endereço de armazenamento dos dados a serem acessados inclui: realizar uma conversão de endereço virtual para físico de acordo com o endereço de armazenamento Addr_Virtual dos dados a serem acessados, sendo que o endereço de armazenamento dos dados a serem acessados é o endereço virtual, a fim de obter um endereço físico Addr_Physical correspondente ao endereço virtual Addr_Virtual; gerar N endereços de acesso Addr_Physical(n) de acordo com o endereço físico Addr_Physical, sendo que n é um número inteiro e 1<n<N, e endereços de fileira dos N endereços de acesso são Addr_Physical_Row(n)=n*M+Addr_Physical_Row, sendo que n é um número inteiro e 1<n<N, M é uma quantidade de fileiras de memória incluídas na memória estendida, e Addr_Physical_Row é um endereço de fileira do endereço físico Addr_Physical; e um endereço diferente do endereço de fileira de cada N endereços físicos é igual a um endereço diferente do endereço de fileira do endereço físico Addr_Physical; e gerar, pelo sistema de processador, as N+1 solicitações de acesso de memória de acordo com Addr_Physical e Addr_Physical(n), sendo que n é um número inteiro e 1<n<N.
[0025] Um terceiro aspecto das modalidades da presente invenção fornece um controlador de memória estendida em um computador, aplicado para acessar dados a serem acessados em uma memória estendida por um sistema de processador no computador, sendo que o sistema de processador no computador é conectado a um sistema de memória estendida usando-se um barramento de memória, o sistema de memória estendida inclui o controlador de memória estendida e a memória estendida, e o controlador de memória estendida inclui: um módulo de recebimento, configurado para receber N+1 solicitações de acesso de memória enviadas em série pelo sistema de processador no computador, sendo que endereços de acesso incluídos em todas as solicitações de acesso de memória são diferentes entre si e apontam para um mesmo endereço físico, sendo que o endereço físico é um endereço de armazenamento dos dados a serem acessados na memória estendida, N>1, e N é um número inteiro; um módulo de execução, configurado para: determinar o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória quando uma primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, sendo que o endereço físico é o endereço de armazenamento dos dados a serem acessados na memória estendida, gerar uma solicitação de leitura para obter os dados a serem acessados, e retornar uma mensagem de resposta específica ao sistema de processador, sendo que a solicitação de leitura inclui o endereço físico; antes de os dados a serem acessados retornados pela memória estendida serem recebidos, cada vez que uma solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, gerar uma mensagem de resposta específica dentro de um atraso de acesso especificado em um protocolo de barramento de memória; gravar os dados a serem acessados em um buffer de dados depois que os dados a serem acessados retornados pela memória estendida são recebidos; e ler os dados a serem acessados do buffer de dados quando outra solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, e enviar os dados a serem acessados a um módulo de envio; e o módulo de envio, configurado para: enviar a solicitação de leitura à memória estendida; antes de os dados a serem acessados retornados pela memória estendida serem recebidos, cada vez que a solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, retornar a mensagem de resposta específica ao sistema de processador dentro do atraso de acesso especificado no protocolo de barramento de memória; e receber os dados a serem acessados do módulo de execução, e enviar os dados a serem acessados ao sistema de processador.
[0026] Em referência ao terceiro aspecto, em uma primeira maneira de implantação possível, os endereços de acesso em todas as N+1 solicitações de acesso de memória incluem um mesmo endereço de banco e diferentes endereços de fileira.
[0027] Em referência ao terceiro aspecto e a primeira maneira de implantação possível do terceiro aspecto, em uma segunda maneira de implantação possível, o módulo de execução é adicionalmente configurado para: predefinir uma relação de mapeamento entre os endereços de acesso incluídos em todas as N+1 solicitações de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida; e consultar, de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, a relação de mapeamento entre o endereço de acesso incluído na primeira solicitação de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida, a fim de obter o endereço físico dos dados a serem acessados na memória estendida.
[0028] Em referência à segunda maneira de implantação possível do terceiro aspecto, em uma terceira maneira de implantação possível, o módulo de execução é adicionalmente configurado para: criar um registro no buffer de dados depois que o endereço físico é determinado de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, sendo que o registro inclui um campo de tag e um campo de dados, e definir o campo de tag ao endereço físico.
[0029] Em referência à terceira maneira de implantação possível do terceiro aspecto, em uma quarta maneira de implantação possível, o registro inclui adicionalmente um campo de validade, e o módulo de execução é adicionalmente configurado para definir o campo de validade no registro para inválido.
[0030] Em referência à quarta maneira de implantação possível do terceiro aspecto, em uma quinta maneira de implantação possível, o módulo de execução é adicionalmente configurado para: cada vez que a solicitação de acesso de memória é recebida, consultar a relação de mapeamento de acordo com os endereços de acesso portada em todas as solicitações de acesso de memória, a fim de obter o endereço físico; e consultar o registro no buffer de dados de acordo com o endereço físico, e gerar a mensagem de resposta específica quando for determinado que o campo de validade no registro é inválido.
[0031] Em referência à quarta maneira de implantação possível do terceiro aspecto, em uma sexta maneira de implantação possível, o módulo de execução é adicionalmente configurado para: pesquisar no buffer de dados pelo registro correspondente ao endereço físico depois que os dados a serem acessados retornados pela memória estendida são recebidos, definir o campo de dados no registro aos dados a serem acessados, e definir o campo de validade para válido.
[0032] Um quarto aspecto das modalidades da presente invenção fornece um sistema de computador que inclui uma memória estendida, sendo que o sistema de computador inclui um sistema de processador, uma memória principal, o controlador de memória estendida conforme descrito no terceiro aspecto ou cada maneira de implantação do terceiro aspecto, e a memória estendida; o controlador de memória estendida é conectado à memória estendida, o controlador de memória estendida é conectado ao sistema de processador usando-se uma interface de memória, e o sistema de processador é conectado à memória principal; a memória principal é configurada para armazenar uma instrução executável; e o sistema de processador é configurado para executar a instrução executável armazenada na memória principal, de modo que o sistema de processador realize o método para acessar a memória estendida no sistema de memória estendida pelo computador conforme descrito no segundo aspecto ou em cada maneira de implantação do segundo aspecto.
[0033] Com base nas soluções técnicas precedentes, de acordo com o método para acessar a memória estendida, o dispositivo, e o sistema que são fornecidos nas modalidades da presente invenção, depois de receber N+1 solicitações de acesso de memória enviadas em série por um sistema de processador (N é um número inteiro positivo maior ou igual a 1), um controlador de memória estendida envia, à memória estendida, uma solicitação para ler dados a serem acessados, e em um processo de leitura dos dados a serem acessados da memória estendida, o controlador de memória estendida retorna uma mensagem de resposta especial para a solicitação de acesso de memória recebida dentro de um atraso de acesso especificado em um protocolo de barramento de memória até que os dados a serem acessados sejam lidos e gravados em um buffer de dados, e retorna os dados a serem acessados ao sistema de processador em um ciclo de execução de uma próxima solicitação de acesso de memória. No processo precedente, o atraso causado pela execução das N+1 solicitações de acesso de memória com perdas de fileira é usado para compensar de modo eficaz um atraso de leitura dos dados a serem acessados da memória estendida e retornar os dados a serem acessados ao sistema de processador pelo controlador de memória estendida.
BREVE DESCRIÇÃO DOS DESENHOS
[0034] Para descrever as soluções técnicas nas modalidades da presente invenção mais claramente, o seguinte descreve brevemente os desenhos anexos exigidos para descrever as modalidades.
[0035] A Figura 1 é um diagrama esquemático de composição de hardware de um sistema de computador que inclui uma memória estendida na técnica anterior;
[0036] A Figura 2 é um diagrama esquemático de uma estrutura de composição de hardware de um sistema de computador de acordo com uma modalidade da presente invenção;
[0037] A Figura 3 é um diagrama esquemático de análise de um atraso de acesso de uma memória estendida por um computador de acordo com uma modalidade da presente invenção;
[0038] A Figura 4 é um diagrama esquemático de análise uma sequência temporal durante a execução de uma solicitação de acesso de memória em um protocolo de DDR;
[0039] A Figura 5A é um fluxograma esquemático de uma modalidade de um método de processamento para acessar dados em uma memória estendida;
[0040] A Figura 5B é um fluxograma esquemático de geração de N+1 endereços de acesso de acordo com um endereço de armazenamento de dados a serem acessados;
[0041] A Figura 6 é um diagrama esquemático de um espaço de memória estendido detectado por um processador de acordo com uma modalidade da presente invenção;
[0042] A Figura 7 é um fluxograma esquemático de uma modalidade de processamento de uma solicitação de acesso de memória por um controlador de memória estendida;
[0043] A Figura 8 é um fluxograma esquemático de uma modalidade de execução em ordem realizado por um controlador de memória estendida;
[0044] A Figura 9 é um fluxograma esquemático de uma modalidade de execução fora de ordem realizada por um controlador de memória estendida; e
[0045] A Figura 10 é um diagrama esquemático de uma estrutura de composição em uma modalidade de um controlador de memória estendida.
DESCRIÇÃO DE MODALIDADES
[0046] A seguir, são descritas clara e completamente as soluções técnicas nas modalidades da presente invenção em referência aos desenhos anexos nas modalidades da presente invenção. Aparentemente, as modalidades descritas são uma parte, em vez de todas as modalidades da presente invenção.
[0047] Em geral, um módulo de programa inclui uma rotina, um programa, um componente, uma estrutura de dados, e outros tipos de estruturas para executar uma tarefa particular ou implantar um tipo particular de dados abstratos. Adicionalmente, um técnico no assunto pode entender que cada modalidade pode ser implantada usando-se outras configurações de sistema de computador, incluindo um dispositivo portátil, um sistema de múltiplos processadores, eletrônicos baseados em múltiplos processadores ou programável, um pequeno computador, um computador de grande porte, e um dispositivo de computação similar. Cada modalidade pode ser adicionalmente implantada em um ambiente de computação distribuído no qual uma tarefa é realizada por um dispositivo de processamento remoto que é conectado usando- se uma rede de comunicações. No ambiente de computação distribuído, o módulo de programa pode ser localizado em dispositivos de armazenamento locais e remotos.
[0048] Cada modalidade pode ser implantada como um processo implantado por um computador; um sistema de computação; ou uma mídia de armazenamento em computador de um programa de computador no qual um produto de programa de computador ou um sistema de computador ou similares executas uma instrução de um processo exemplificador. Por exemplo, uma mídia de armazenamento legível em computador pode ser implantado usando-se um ou mais dentre uma memória de computador volátil, uma memória não volátil, uma unidade de disco rígido, uma unidade flash, um disquete, um disco compacto (Compact Disc), ou uma mídia similar.
[0049] Neste relatório descritivo, um termo "sistema de processador (Processor System)" se refere a um sistema que inclui um processador e um controlador de memória. Quando o controlador de memória é integrado ao processador (processor), o sistema de processador se refere a um chip de processador que inclui o controlador de memória. Em referência a uma situação de aplicação dessa modalidade da presente invenção, o chip de processador no sistema de processador é configurado para receber uma instrução de acesso de memória gerada em um processo de execução de um programa de objeto, gerar uma solicitação de acesso de memória de acordo com um endereço de dados a serem acessados, e enviar a solicitação de acesso de memória ao controlador de memória. O controlador de memória decompõe, de acordo com um protocolo de barramento de memória, a solicitação de acesso de memória em solicitações de leitura/gravação de dados que podem ser executadas por um chip de memória.
[0050] Neste relatório descritivo, um termo "controlador de memória (Memory Controller)" é um componente de computador que controla uma memória em um sistema de computador. O controlador de memória permite a troca de dados entre a memória e um processador. Em uma aplicação específica, o controlador de memória pode ser independente do processador (Processor), ou pode ser integrado no processador. Neste relatório descritivo, o "controlador de memória" é configurado para acesso de controle a uma memória de sistema (System Memory). Em muitos casos, o controlador de memória é integrado no processador. Se o controlador de memória for independente do processador, o controlador de memória precisa ser conectado ao processador.
[0051] Neste relatório descritivo, um termo "controlador de memória estendida" é configurado para se conectar a um controlador de memória usando- se uma interface de memória e é usada como uma ponte para um processador para acessar uma memória estendida.
[0052] Neste relatório descritivo, um termo "memória estendida" se refere a uma memória que é conectada usando-se um chip de extensão de memória, para implantar expansão de memória. A memória estendida pode ser implantada, porém, sem limitação, nas seguintes formas: um DRAM (memória de acesso aleatório dinâmica, dynamic random access memory), um PCM (memória de mudança de fase, phase change memory), e um MRAM (Memória de Acesso Aleatório Magnética, magnetic random access memory).
[0053] Neste relatório descritivo, um termo "instrução de acesso de memória", se refere às instruções de acesso de memória tais como Carregar e Armazenar que são incluídas no código de objeto (Object Code) que é obtido compilando-se (Compile) o código de fonte (Source Code), e essas instruções de acesso de memória são exigidas por um processador. Em um processo de execução, o processador precisa converter um endereço virtual na instrução de acesso de memória a um endereço físico em um processo de conversão de endereço virtual (Virtual Address) para o endereço físico (Physical Address), gerar uma solicitação de acesso de memória, e enviar a solicitação de acesso de memória a um controlador de memória (Memory Controller) para execução.
[0054] Neste relatório descritivo, um termo "solicitação de acesso de memória", também denominado como uma "solicitação de acesso de memória", se refere a uma solicitação que é para acessar dados em uma memória e que é gerada depois que um processador executa uma instrução de acesso de memória. A solicitação de acesso de memória inclui uma solicitação de leitura e uma solicitação de gravação.
[0055] Neste relatório descritivo, um termo "buffer de dados" se refere a um dispositivo de armazenamento configurado para armazenar dados a serem acessados que são lidos de uma memória estendida, e podem ser integrados em um controlador de memória estendida, ou pode ser implantado independentemente de um controlador de memória estendida. UMA ARQUITETURA DE HARDWARE DE UM SISTEMA CORRESPONDENTE A UMA MODALIDADE DA PRESENTE INVENÇÃO
[0056] Antes de uma modalidade específica da presente invenção ser descrita, uma estrutura de composição de hardware de um sistema correspondente a uma modalidade da presente invenção é descrita primeiro. Em referência à Figura 2, os seguintes componentes são incluídos:
[0057] Sistema de processador (Processor System) 201: O sistema de processador 201 inclui um processador 2011 e um controlador de memória 2012. Como um componente de execução de instrução, nessa modalidade fornecida na presente invenção, o sistema de processador 201 é configurado para receber uma instrução de acesso de memória gerada por um programa executável em um processo de execução, e gerar uma solicitação de acesso de memória de acordo com a instrução de acesso de memória. O processador 2011 é configurado para processar a instrução de acesso de memória (Memory Access), gerar a solicitação de acesso de memória, e enviar a solicitação de acesso de memória ao controlador de memória 2012. O controlador de memória 2012 determina, de acordo com as informações de atributo de local incluídas na solicitação de acesso de memória, tanto para acessar uma memória de sistema 202 como para acessar uma memória estendida 204. Quando for determinado que a memória de sistema 202 deve ser acessada, a solicitação de acesso de memória é enviada à memória de sistema 202; ou quando for determinado que a memória estendida 204 deve ser acessada, a solicitação de acesso de memória é enviada a um controlador de memória estendida 203.
[0058] Memória (Memory) de sistema 202: A memória de sistema 202 se refere a uma memória diretamente conectada ao sistema de processador 201 usando-se um barramento de memória, e é configurada para armazenar temporariamente os dados operacionais do sistema de processador 201 no processo de execução.
[0059] Controlador de memória estendida (Extended Memory Controller) 203: O controlador de memória estendida 203 é configurado para conectar à memória estendida 204 e é usado como uma ponte para o sistema de processador 201 para realizar processamento de acesso de memória na memória estendida 204. O controlador de memória estendida 203 é conectado ao sistema de processador 201 com o uso dos tipos a seguir de barramentos, e esses tipos de barramentos incluem, porém, sem limitação: um barramento de DDR (Taxa Dupla de Dados, double data rate), um barramento de LPDDR (DDR de Baixa Potência, low power DDR), ou um Amplo Barramento de I/O. O controlador de memória estendida 203 inclui pelo menos os seguintes módulos: um módulo de execução 2031, configurado para realizar uma operação de leitura nos dados a serem acessados na memória estendida, e um buffer de dados 2032, configurado para armazenar temporariamente os dados a serem acessados que são lidos da memória estendida 204 pelo módulo de execução 2031. Deve-se observar que o buffer de dados 2032, como um componente para armazenar em cache os dados a serem acessados, pode ser integrado no controlador de memória estendida 203, ou pode ser implantado independentemente do controlador de memória estendida 203. O mesmo não é limitado nessa modalidade da presente invenção.
[0060] Memória Estendida (Extended Memory) 204: A memória estendida 204 se refere a uma memória estendida diferente da memória de sistema 202, e é configurada para armazenar os dados operacionais do sistema de processador 201 no processo de execução. A memória estendida 204 pode ser implantada usando-se mídia de armazenamento diferente, tal como uma DRAM (Memória de Acesso Aleatório Dinâmica, dynamic random access memory), uma PCM (Memória de Mudança de Fase, phase change memory) e uma MRAM (Memória de Acesso Aleatório Magnética, magnetic random access memory).
[0061] Em um diagrama esquemático da estrutura de composição de hardware do sistema mostrado na Figura 2, devido à existência do controlador de memória estendida 203 que serve como um chip de extensão de memória, há um atraso relativamente alto em um processo de execução de uma solicitação de leitura que é usada para solicitar dados na memória estendida 204 e que é enviada pelo sistema de processador 201, e os dados a serem acessados não podem ser retornados dentro de um atraso de acesso exigido por um protocolo de DDR. Em referência à Figura 2, um problema do atraso de acesso de a memória estendida é analisado com base na Figura 3.
[0062] Na Figura 3, os três atrasos a seguir existem ao realizar uma operação de leitura dos dados na memória estendida 204: tPD1: um atraso de transmissão da solicitação de acesso de memória, que é enviado pelo sistema de processador 201, do "controlador de memória estendida 203” à "memória estendida 204", incluindo um atraso de transmissão de um sinal, e um atraso de processamento de lógica no controlador de memória estendida 203; tRL: um atraso da memória estendida 204 de "receber a solicitação de acesso de memória" a "transmitir os dados a serem acessados a um barramento entre a memória estendida 204 e o controlador de memória estendida 203"; e tPD2: um atraso de transmissão dos dados, que é lido da memória estendida 204, de "memória estendida 204 ao controlador de memória estendida 203", e do "controlador de memória estendida 203" ao "controlador de memória 2012 no sistema de processador 201".
[0063] Um atraso de acesso de memória real do processador é tPD1+tRL+tPD2. O mesmo não atende a um requisito de um protocolo de acesso de memória (tal como o protocolo de DDR): os dados a serem acessados precisam ser retornados dentro do atraso de tRL. Portanto, como compensar um atraso tPD1+tPD2 torna-se um ponto inicial dessa modalidade da presente invenção.
[0064] Um protocolo de barramento de memória existente (o protocolo de DDR é comumente usado) é um protocolo de acesso de memória síncrono de atraso fixo. A execução de uma solicitação de acesso de memória é dividida nos três estágios a seguir:
[0065] A. Ativar (Activate): O controlador de memória (Memory Controller) envia um comando de ativar (activate) e um endereço de fileira (Row Address) para ler uma fileira de dados que está em uma DRAM e que é correspondente ao endereço de fileira em um buffer de fileira (Row Buffer).
[0066] B. Ler/Gravar (Read/Write): O controlador de memória envia um comando de leitura/gravação e um endereço de coluna (Column Address) para ler/gravar dados que são correspondentes ao endereço de coluna e que está no buffer de fileira.
[0067] C. Pré-carga (Pre-Charge): O controlador de memória envia um comando de pré-carga para fechar o buffer de fileira.
[0068] Duas solicitações de acesso de memória consecutivas podem ser classificadas nos dois tipos a seguir de acordo com a possibilidade de endereços de fileira das duas solicitações de acesso de memória consecutivas serem iguais:
[0069] (1) Fileira Atingida (Row Hit): Os dados que precisam ser operados pelas duas solicitações de acesso de memória são localizados em uma mesma fileira (ou seja, os endereços de fileira são os mesmos) em um mesmo Banco. Portanto, depois que o comando de leitura/gravação (Read/Write) de uma primeira solicitação de acesso de memória é executada, os dados de fileira são ainda localizados no buffer de fileira (Row Buffer), então, o controlador de memória pode enviar diretamente o comando de leitura/gravação e o endereço de coluna que são da segunda solicitação de acesso de memória sem executar o estágio de pré-carga da primeira solicitação de acesso de memória e o estágio de operação de ativação da segunda solicitação de acesso de memória.
[0070] (2) Fileira Perdida (Row Miss): Os dados que precisam ser operados pelas duas solicitações de acesso de memória são localizados em diferentes fileiras no mesmo banco. Depois que o estágio de leitura/gravação (Read/Write) da primeira solicitação de acesso de memória é executado, a operação de pré-carga (por exemplo, o comando de Pré-Carga) precisa ser realizada para fechar o buffer de fileira, então a operação de ativação (por exemplo, o comando de Ativação) é realizado em uma fileira da segunda solicitação de acesso de memória para ler os dados de fileira no buffer de fileira, e finalmente, o comando de leitura/gravação e o endereço de coluna que são da segunda solicitação de acesso de memória pode ser enviado.
[0071] A Figura 4 mostra um requisito de sequência temporal em um processo de execução de uma solicitação de acesso de memória no protocolo de DDR. tRL: um atraso fixo de "enviar um comando de leitura (RD)" a "dados que entram em um barramento de memória"; tRCD: um intervalo de tempo mínimo de "enviar um comando de ativação (ACT)" para "enviar o comando de leitura (RD)"; tRTP: um intervalo de tempo mínimo de "enviar o comando de leitura (RD)" para "enviar um comando de pré-carga (PRE)"; e tRP: um intervalo de tempo mínimo de "enviar o comando de pré- carga (PRE)" para "enviar um próximo comando de ativação (ACT)".
[0072] Pode-se calcular, de acordo com os parâmetros precedentes, que um intervalo de tempo mínimo entre dois comandos de leitura (RD) com perdas de fileiras é tGAPmin=tRCD+tRTP+tRP.
[0073] Adicionalmente, uma tecnologia de barreira de memória (Memory Barrier) pode ser usada. Uma barreira de memória, também denominada como uma barra de memória (Memory Bar), uma cerca de memória (memory fence), uma instrução de cerca (Fence instruction), e similares, é um tipo de instrução de cerca síncrona e é um ponto de sincronização em uma operação de acessar aleatoriamente uma memória por um CPU ou um compilador, de modo que uma operação após esse ponto possa ser realizada somente depois que todas as operações de gravação/leitura antes desse ponto são realizadas.
[0074] Para compensar um atraso em um processo de acesso de uma memória estendida, nessa modalidade da presente invenção, o atraso em um processo de execução de múltiplas solicitações de acesso de memória com perdas de fileira é usado para compensar o atraso de acesso de dados a serem acessados na memória estendida. Para um requisito de que um programa de aplicação acesse dados em uma memória estendida 204, uma solicitação de acesso de memória estendida é compilada nas múltiplas solicitações de acesso de memória com perdas de fileira com usando-se software (tais como um compilador, Compiler), ou a instrução de cerca é inserida entre as múltiplas solicitações de acesso de memória geradas. No processo de execução das múltiplas solicitações de acesso de memória, com base no atraso da solicitação de acesso de memória com uma perda de fileira e o atraso causado pela execução da instrução de cerca entre as múltiplas solicitações de acesso de memória, os dados a serem acessados na memória estendida são lidos primeiro em um controlador de memória estendida (um estágio de pré-busca de dados), e então são lidos a partir do controlador de memória estendida em um processador usando-se um controlador de memória (um estágio de leitura de dados).
MODALIDADES DE MÉTODO DA PRESENTE INVENÇÃO
[0075] A Figura 5A mostra um fluxograma esquemático de uma modalidade de método de acesso de uma memória estendida por um computador, que inclui as etapas a seguir.
[0076] 510. Um sistema de processador recebe um endereço de armazenamento de dados a serem acessados.
[0077] Especificamente, em um processo de execução, um programa executável obtido usando-se um compilador gera N+1 instruções de acesso de memória, sendo que as N+1 todas as instruções de acesso de memória incluem o endereço de armazenamento dos dados a serem acessados. Na implantação específica, o endereço de armazenamento dos dados a serem acessados é um endereço virtual.
[0078] 530. O sistema de processador gera, pelo sistema de processador, N+1 solicitações de acesso de memória de acordo com o endereço de armazenamento dos dados a serem acessados, sendo que endereços de acesso incluídos nas N+1 solicitações de acesso de memória são diferentes entre si e apontam para um mesmo endereço físico, o endereço físico é o endereço de armazenamento dos dados a serem acessados na memória estendida, N>1, e N é um número inteiro.
[0079] Especificamente, os N+1 endereços de acesso gerados são diferentes entre si. Isso evita que as solicitações de acesso de memória geradas de acordo com os N+1 endereços de acesso sejam mescladas por um processador em um MSHR (Registros de Gerenciamento de Estado de Perda). Os N+1 endereços de acesso apontam para o mesmo endereço físico. Na implantação específica, há uma relação de mapeamento entre os N+1 endereços de acesso e o endereço físico dos dados a serem acessados na memória estendida.
[0080] 550. O sistema de processador envia as N+1 solicitações de acesso geradas à memória a um controlador de memória estendida.
[0081] Especificamente, para compensar um atraso de acesso de os dados a serem acessados na memória estendida, no sistema de processador, depois de gerar as N+1 solicitações de acesso de memória, o processador envia as N+1 solicitações de acesso de memória a um controlador de memória no sistema de processador. O processador pode enviar sequencialmente as N+1 solicitações de acesso de memória ao controlador de memória em intervalos regulares, ou pode enviar todas as N+1 solicitações de acesso de memória ao controlador de memória de uma vez. Depois de receber as N+1 solicitações de acesso de memória, o controlador de memória determina que os endereços de acesso são diferentes entre si (em particular, endereços de fileira são diferentes), e identifica as N+1 solicitações de acesso de memória as solicitações de acesso de memória com perdas de fileira. Portanto, as N+1 solicitações de acesso de memória são enviadas em série de acordo com um requisito de atraso de envio para solicitações de acesso de memória com perdas de fileira que são especificadas em um protocolo de acesso de memória.
[0082] Deve-se observar que as N+1 instruções de acesso de memória são incluídas em um programa de objeto (Object Program). O programa de objeto é obtido pelo compilador (Compiler) compilando-se um programa de origem (Source Program). Um sistema de computador no qual o programa de origem é compilado pode ser um sistema de computador nessa modalidade da presente invenção, ou pode ser um sistema de computador terceirizado.
[0083] Para um computador que inclui um sistema de memória estendida, ao desenvolver o programa de origem, um desenvolvedor de software define um tipo e um local de armazenamento de cada variável. O desenvolvedor define que algumas variáveis são temporariamente armazenadas em uma memória de sistema e outras variáveis são temporariamente armazenadas na memória estendida.
[0084] Em um processo de uso da variável definida na memória estendida em um programa, uma operação de gravação/leitura na variável (que é denominada como os "dados a serem acessados" neste relatório descritivo) precisa ser envolvida. Nessa modalidade da presente invenção, em um processo de compilação do programa de origem, quando há uma exigência para acessar uma peça específica de dados a serem acessados armazenados na memória estendida, o compilador compila uma solicitação para acessar os dados a serem acessados nas N+1 solicitações de acesso de memória de acordo com um parâmetro de atraso da memória estendida e um requisito de atraso de um protocolo de barramento de memória, sendo que N>1, e N é um número inteiro.
[0085] Além disso, uma quantidade de solicitações de acesso de memória que precisam ser enviados é determinada da maneira a seguir.
[0086] (1) Um atraso de transmissão da solicitação de acesso de memória do "controlador de memória estendida" à "memória estendida" é tPD1, e um atraso de transmissão de dados, que é lido de acordo com a solicitação de acesso de memória, da "memória estendida" ao "controlador de memória estendida" é tPD2.
[0087] Especificamente, uma vez que um sistema de computador que inclui a memória estendida é determinado, os dois parâmetros precedentes podem ser determinados.
[0088] (2) É determinado que um intervalo de tempo em conformidade com o protocolo de DDR entre duas solicitações de acesso de memória consecutivas com perdas de fileira enviadas pelo processador é tGAPmin=tRCD+tRTP+tRP.
[0089] Especificamente, em referência à Figura 4 e descrições relacionadas, um intervalo de tempo mínimo entre as duas solicitações de acesso de memória com perdas de fileira enviadas pelo processador é pelo menos tRCD+tRTP+tRP, e os parâmetros precedentes são especificados no protocolo de DDR.
[0090] Além disso, depois que a solicitação de acesso de memória é gerada, o processador pode inserir uma instrução de cerca após cada solicitação de acesso de memória no intervalo de tempo entre as duas solicitações de acesso de memória consecutivas enviadas pelo processador, ou seja, um atraso é implantado executando-se a instrução de cerca, e um tempo de execução da instrução de cerca é T_Fence.
[0091] (3) Uma quantidade N de solicitações de acesso de memória que precisam ser gerada é calculada de acordo com os parâmetros precedentes, ou seja, N>[(tPD1+tPD2)/(tRCD+tRTP+tRP)], sendo que [*] é uma função de arredondamento.
[0092] Além disso, depois que o processador insere a instrução de cerca nas N+1 solicitações de acesso geradas à memória, o N>[(tPD1+tPD2)/T_Fence] calculado, sendo que [*] é uma função de arredondamento. T_Fence é o atraso para executar a instrução de cerca pelo processador.
[0093] Na implantação específica, os N+1 endereços de acesso gerados de acordo com o endereço de armazenamento dos dados a serem acessados podem ser obtidos realizando-se as etapas 551 a 553 a seguir, conforme mostrado na Figura 5B.
[0094] 551. Uma conversão de endereço virtual para físico é realizada de acordo com um endereço de armazenamento Addr_Virtual dos dados a serem acessados, sendo que o endereço de armazenamento dos dados a serem acessados é o endereço virtual, a fim de obter um endereço físico Addr_Physical correspondente ao endereço virtual Addr_Virtual.
[0095] Deve-se observar que um endereço incluído na instrução de acesso de memória recebida pelo processador é geralmente um endereço virtual. Uma conversão de endereço virtual para endereço físico é realizada de acordo com o endereço virtual dos dados a serem acessados, a fim de obter o endereço físico correspondente ao endereço virtual.
[0096] 552. Gerar N endereços de acesso Addr_Physical(n) de acordo com o endereço físico Addr_Physical, sendo que n é um número inteiro e 1<n<N; endereços de fileira dos N endereços de acesso são Addr_Physical_Row(n)=n*M+Addr_Physical_Row, sendo que n é um número inteiro e 1<n<N, M é uma quantidade de fileiras de memória incluídas em uma memória estendida, e Addr_Physical_Row é um endereço de fileira do endereço físico Addr_Physical; e um endereço de banco de cada um dos N endereços físicos é igual a um endereço de banco do endereço físico Addr_Physical.
[0097] Especificamente, para um propósito de geração de N+1 solicitações de acesso de memória com faltas de fileira, precisa-se garantir que os endereços das N+1 solicitações de acesso de memória incluem um mesmo endereço de banco e diferentes endereços de fileira.
[0098] Um espaço de endereço da memória estendida precisa ser redefinido. Em referência à Figura 6, N=1 é usado como um exemplo, e o processador gera dois endereços de acesso de acordo com o endereço físico dos dados a serem acessados, a fim de gerar duas solicitações de acesso de memória para a memória estendida.
[0099] Na Figura 6, um espaço de memória que pode ser detectado pelo processador inclui duas partes: um espaço de memória real da memória estendida e um espaço de sombra. O espaço de memória correspondente à memória estendida inclui M fileiras de memória, e o espaço de sombra e a espaço de memória correspondente à memória estendida são de um mesmo tamanho (tamanhos de fileiras e colunas são iguais). Para um propósito de garantir que as duas solicitações de acesso de memória são usadas como as solicitações de acesso de memória com perdas de fileira, precisa-se garantir que os endereços das duas solicitações de acesso de memória incluem um mesmo endereço de banco e diferentes endereços de fileira.
[0100] Portanto, nos endereços das solicitações de acesso de memória, o endereço de fileira de uma solicitação de acesso de memória é i, e o endereço de fileira da outra solicitação de acesso de memória é i+M. Isso garante que os endereços de fileira das duas solicitações de acesso de memória sejam diferentes. Adicionalmente, o endereço de fileira correspondente ao endereço físico dos dados a serem acessados no espaço de memória estendido é obtido subtraindo-se o deslocamento M do endereço de fileira no espaço de sombra. Isso garante que os dois endereços apontem para um mesmo endereço físico na memória estendida.
[0101] Além disso, adicionalmente ao endereço de fileira, o endereço físico na memória estendida inclui o endereço de banco. Se for garantido que os N+1 endereços de acesso gerados incluem um mesmo endereço de banco e diferentes endereços de fileira, o controlador de memória no sistema de processador pode identificar as N+1 solicitações de acesso de memória as solicitações de acesso de memória com perdas de fileira ao receber as N+1 solicitações de acesso de memória.
[0102] Deve-se observar que, para simplificar uma descrição dessa modalidade da presente invenção, os N+1 endereços de acesso que são gerados com base no endereço físico dos dados a serem acessados são em um mesmo chip (Chip) de memória por padrão. Na implantação específica, adicionalmente ao endereço de banco e ao endereço de fileira, o endereço de acesso, como um endereço físico de memória, inclui adicionalmente um endereço de canal, um endereço de DIMM, um endereço de classificação, e um endereço de chip de acordo com uma exigência do endereço físico de memória. Portanto, na implantação específica de uma solução, os "N+1 endereços de acesso gerados" podem ser definidos como iguais ao endereço de canal, o endereço de DIMM, o endereço de classificação, e o endereço de chip do "endereço físico dos dados a serem acessados".
[0103] Pode-se entender que, na maneira de implantação precedente, N=1 é usado como um exemplo. Para outro valor, um endereço de uma solicitação de acesso de memória pode ser gerado e N+1 solicitações de acesso de memória podem ser criadas de acordo com um processo similar.
[0104] 553. Um sistema de processador gera as N+1 solicitações de acesso de memória de acordo com Addr_Physical e Addr_Physical(n), sendo que n é um número inteiro e 1<n<N.
[0105] Na modalidade precedente, em um processo de acesso dos dados a serem acessados na memória estendida pelo sistema de processador em um computador, o processador gera as N+1 solicitações de acesso de memória, e endereços de acesso incluídos nas N+1 solicitações de acesso geradas à memória incluem um mesmo endereço de banco e diferentes endereços de fileira, de modo que o controlador de memória integrado nos processador dispare a solicitação de acesso de memória com uma perda de fileira ao executar as N+1 solicitações de acesso de memória. Em um processo de execução das N+1 solicitações de acesso de memória com perdas de fileira, o controlador de memória estendida pode ler os dados a serem acessados da memória estendida com base nesse atraso de processamento e, finalmente, retorna os dados a serem acessados ao sistema de processador. Na maneira de implantação precedente, o atraso no processo de execução da solicitação de acesso de memória com uma perda de fileira é usado de modo eficaz para solucionar um problema de que os dados a serem acessados não podem ser retornados dentro de uma faixa de atraso especificada.
[0106] A Figura 7 mostra um processo de processamento depois que um controlador de memória estendida recebe N+1 solicitações de acesso de memória enviadas por um sistema de processador. Um sistema de memória estendida inclui o controlador de memória estendida e uma memória estendida. O sistema de processador em um computador é conectado ao controlador de memória estendida usando-se um barramento de memória. Quando o sistema de processador no computador precisa acessar dados a serem acessados armazenados na memória estendida, o método inclui as etapas a seguir.
[0107] 710. O controlador de memória estendida recebe N+1 solicitações de acesso de memória enviadas em série pelo sistema de processador no computador, sendo que endereços de acesso incluídos em todas as solicitações de acesso de memória são diferentes entre si e apontam para um mesmo endereço físico, sendo que o endereço físico é um endereço de armazenamento de dados a serem acessados na memória estendida, N>1, e N é um número inteiro.
[0108] Especificamente, o controlador de memória estendida recebe as N+1 solicitações de acesso de memória enviadas em série pelo sistema de processador no processo descrito na etapa 550. Os endereços de acesso incluídos nas N+1 solicitações de acesso de memória são diferentes entre si, e os N+1 endereços de acesso apontam para o mesmo endereço físico.
[0109] 730. Ao receber uma primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória, o controlador de memória estendida determina o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, envia uma solicitação de leitura à memória estendida, e retorna uma mensagem de resposta específica ao sistema de processador, sendo que a solicitação de leitura porta o endereço físico.
[0110] Especificamente, ao receber a primeira solicitação de acesso de memória, o controlador de memória estendida determina o endereço físico de acordo com o endereço de acesso da primeira solicitação de acesso de memória, e envia a solicitação de leitura para o endereço físico à memória estendida, sendo que a solicitação de leitura é usada para ler os dados a serem acessados da memória estendida.
[0111] 750. Antes de receber os dados a serem acessados retornados pela memória estendida, cada vez que uma solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, o controlador de memória estendida retorna a mensagem de resposta específica ao sistema de processador dentro de um atraso de acesso especificado em um protocolo de barramento de memória.
[0112] Especificamente, devido ao fato de que um atraso relativamente alto é exigido em um processo de leitura dos dados a serem acessados, e o protocolo de barramento de memória é um protocolo de acesso de memória síncrono de atraso fixo, o controlador de memória estendida precisa retornar uma mensagem de resposta para cada solicitação de acesso de memória. Portanto, o controlador de memória estendida retorna a mensagem de resposta específica para a primeira solicitação de acesso de memória a um processador. Deve-se observar que a mensagem de resposta específica é um identificador especial estabelecida pelo processador e o controlador de memória estendida, por exemplo, 0x5a5a5a5a5a5a5a5a pode ser usado como o identificador especial.
[0113] Deve-se observar que o identificador especial é um identificador customizável. Na implantação específica, outro identificador também pode ser usado. O mesmo não é limitado em qualquer modalidade da presente invenção.
[0114] 770. O controlador de memória estendida grava os dados a serem acessados em um buffer de dados, e interrompe o retorno de uma mensagem de resposta específica ao sistema de processador depois de receber os dados a serem acessados retornados pela memória estendida.
[0115] Especificamente, na etapa 730, a solicitação de leitura enviada pelo controlador de memória estendida é enviada à memória estendida, e um atraso relativamente alto é exigido no processo de leitura dos dados a serem acessados da memória estendida. Nesse estágio, algumas solicitações de acesso de memória das N+1 solicitações de acesso de memória são enviadas pelo processador ao controlador de memória estendida. Nesse caso, depois de receber essas solicitações de acesso de memória, o controlador de memória estendida retorna a mensagem de resposta específica ao processador dentro do atraso exigido pelo protocolo de barramento de memória, a fim de notificar o processador de que os dados a serem acessados não foram obtidos. Ao receber os dados a serem acessados retornados pela memória estendida, o controlador de memória estendida grava os dados a serem acessados no buffer de dados.
[0116] Deve-se observar que o buffer de dados pode ser integrado no controlador de memória estendida, ou pode ser implantado independentemente do controlador de memória estendida.
[0117] 790. Ao receber outra solicitação de acesso de memória das N+1 solicitações de acesso de memória, o controlador de memória estendida lê os dados a serem acessados do buffer de dados, e retorna os dados a serem acessados ao sistema de processador.
[0118] Especificamente, devido ao fato de que o protocolo de barramento de memória é um protocolo de acesso de memória síncrono de atraso fixo, depois que os dados a serem acessados são gravados no buffer de dados, o controlador de memória estendida lê os dados a serem acessados do buffer de dados, e retorna os dados a serem acessados ao sistema de processador em um ciclo de execução de uma próxima solicitação de acesso de memória.
[0119] Além disso, os endereços de acesso em todas as N+1 solicitações de acesso de memória incluem um mesmo endereço de banco e diferentes endereços de fileira. Um controlador de memória integrado no processador identifica a solicitação de acesso de memória que tem essa característica como uma solicitação de acesso de memória com uma perda de fileira (Row Miss), de modo que o atraso especificado em um protocolo de acesso de memória possa ser gerado em um processo de execução das N+1 solicitações de acesso de memória.
[0120] Além disso, o controlador de memória estendida predefine uma relação de mapeamento entre os endereços de acesso incluídos em todas as N+1 solicitações de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida. A determinação, pelo controlador de memória estendida, o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória inclui: consultar, pelo controlador de memória estendida, a relação de mapeamento de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, a fim de obter o endereço físico precedente.
[0121] Além disso, na etapa 730, após a determinação, pelo controlador de memória estendida, do endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, a modalidade de método inclui adicionalmente: criar, pelo controlador de memória estendida, um registro no buffer de dados, sendo que o registro inclui um campo de tag e um campo de dados, e definir o campo de tag ao endereço físico.
[0122] Além disso, na etapa 730, o registro inclui um campo de validade, e a modalidade de método inclui adicionalmente: definir, pelo controlador de memória estendida, o campo de validade para inválido.
[0123] Além disso, na etapa 750, no processo de leitura dos dados a serem acessados da memória estendida, cada vez que o controlador de memória estendida recebe a solicitação de acesso de memória, o método inclui adicionalmente: consultar, pelo controlador de memória estendida, a relação de mapeamento de acordo com os endereços de acesso portados em todas as solicitações de acesso de memória, a fim de obter o endereço físico; e consultar o registro no buffer de dados de acordo com o endereço físico e, ao determinar que o campo de validade no registro é inválido, gerar a mensagem de resposta específica.
[0124] Além disso, na etapa 770, a gravação, pelo controlador de memória estendida, os dados a serem acessados em um buffer de dados inclui: pesquisar, pelo controlador de memória estendida, no buffer de dados pelo registro correspondente ao endereço físico, definir o campo de dados no registro aos dados a serem acessados, e definir o campo de validade para válido.
[0125] No processo de implantação precedente, depois de receber a primeira solicitação de acesso de memória, o controlador de memória estendida envia, à memória estendida, uma solicitação para ler os dados a serem acessados. No processo de leitura dos dados a serem acessados da memória estendida, o controlador de memória estendida retorna a mensagem de resposta especial para a solicitação de acesso de memória recebida dentro do atraso de acesso especificado no protocolo de barramento de memória, de modo que o processador possa enviar a próxima solicitação de acesso de memória de acordo com um requisito de perda de fileira, e o controlador de memória estendida temporariamente armazena os dados lidos no buffer de dados e retorna os dados a serem acessados ao sistema de processador no ciclo de execução da próxima solicitação de acesso de memória. No processo precedente, o atraso causado pela execução das N+1 solicitações de acesso de memória com perdas de fileira é usado para compensar de modo eficaz um atraso de leitura dos dados a serem acessados da memória estendida e retornar os dados a serem acessados ao sistema de processador pelo controlador de memória estendida.
[0126] De acordo com um valor empírico obtido de um experimento, quando há alguns níveis de memórias estendidas, e gravação/leitura de dados a serem acessados é realizada nos dados em uma memória estendida, N=1, ou seja, duas solicitações de acesso de memória podem ser geradas para compensar o atraso de leitura dos dados da memória estendida. São descritos a seguir dois processos de implantação específica usando-se N=1 como um exemplo.
I. UMA MANEIRA DE EXECUÇÃO EM ORDEM (EM REFERÊNCIA À FIGURA 8)
[0127] De acordo com a espaço de memória que inclui a memória estendida na Figura 6, pode-se aprender que somente um espaço de sombra precisa ser virtualizado. A Figura 6 é usada como exemplo. Em referência ao diagrama estrutural do sistema na Figura 2, presume-se que os dados a serem acessados sejam localizados em uma iésima fileira na memória estendida, e o endereço de fileira dos dados a serem acessados é i. De acordo com o método precedente, os endereços de fileira dos dois endereços de acesso gerados são i e i+M. endereços de banco dos dois endereços de acesso são definidos como iguais. Os endereços de acesso gerados precedentes são registrados no buffer de dados no controlador de memória estendida.
[0128] Duas solicitações de acesso de memória são construídas de acordo com os dois endereços de acesso gerados e são enviados pelo processador ao controlador de memória estendida. Presume-se que o processador envia primeiro a solicitação de acesso de memória com o endereço de fileira de i+M, e então envia a solicitação de acesso de memória com o endereço de fileira de i. Um processo de execução da modalidade de método ocorre conforme a seguir:
[0129] 810. O controlador de memória estendida recebe uma primeira solicitação de acesso de memória, e analisa a solicitação para obter um endereço de acesso da solicitação; e, ao identificar que um endereço de fileira da solicitação é i+M, o controlador de memória estendida retorna um identificador especial ao processador.
[0130] Especificamente, devido ao fato de que o controlador de memória estendida pode identificar, de acordo com o endereço de fileira, que um endereço na solicitação de acesso de memória é localizado em um espaço de memória real da memória estendida ou um espaço de sombra, nessa etapa, se for identificado que o endereço de fileira é i+M, é determinado que o endereço de acesso é localizado no espaço de sombra, e o identificador especial (tal como 0x5a5a5a5a5a5a5a5a) é gerado e é retornado ao processador.
[0131] 830. O controlador de memória estendida gera uma solicitação de leitura, sendo que a solicitação de leitura inclui um endereço físico de dados a serem acessados, envia a solicitação de leitura a uma memória estendida, e lê os dados a serem acessados em um buffer de dados dentro de uma solicitação de acesso ao atraso de processamento de memória especificado em um protocolo de barramento de memória.
[0132] Especificamente, depois de receber a primeira solicitação de acesso de memória, o controlador de memória estendida gera a solicitação para ler os dados a serem acessados e envia a solicitação de leitura à memória estendida. Os dados a serem acessados são lidos no buffer de dados dentro do atraso de solicitação de acesso de memória especificado no protocolo de barramento de memória.
[0133] 850. Após o atraso especificado no protocolo de barramento de memória, o controlador de memória estendida recebe uma segunda solicitação de acesso de memória, e analisa a solicitação para obter um endereço de acesso da solicitação; e, ao identificar que um endereço de fileira da solicitação é i, o controlador de memória estendida lê os dados a serem acessados do buffer de dados, e retorna os dados a serem acessados ao sistema de processador.
[0134] Especificamente, depois de ler os dados a serem acessados no buffer de dados, o controlador de memória estendida recebe a segunda solicitação de acesso de memória enviada pelo processador, e analisa a solicitação para obter o endereço de fileira do endereço de acesso; e, ao determinar que o endereço de fileira da solicitação é i, ou seja, um endereço localizado no espaço de memória real da memória estendida, o controlador de memória estendida lê os dados a serem acessados do buffer de dados, e retorna os dados a serem acessados ao sistema de processador.
[0135] Na modalidade precedente, de acordo com uma ordem de acesso de endereço que estabelecida antecipadamente, o endereço de acesso incluído na primeira solicitação de acesso de memória recebida é um endereço do espaço de sombra, o endereço de acesso incluído na segunda solicitação de acesso de memória é um endereço do espaço de memória real, e há uma relação de mapeamento entre o endereço do espaço de sombra e o endereço do espaço de memória real. Quando a solicitação de acesso de memória que inclui o endereço do espaço de sombra é recebida, os dados a serem acessados são lidos a partir da memória estendida e são armazenados em cache no buffer de dados. Quando a solicitação de acesso de memória que inclui o endereço do espaço de memória real é recebida, os dados são lidos a partir do buffer de dados ao processador.
[0136] Pode-se entender que a ordem de acesso de endereço precedente que é estabelecida antecipadamente pode ser adicionalmente tal ordem de "acessar o endereço do espaço de memória real primeiro, e então o endereço do espaço de sombra", ou, além disso, os endereços incluídos nas duas solicitações de acesso de memória são ambos o endereço do espaço de sombra (ou seja, Addr1 e Addr2), desde que seja garantido que os endereços de acesso incluídos nas duas solicitações de acesso de memória tenham uma relação de mapeamento e apontem para um mesmo endereço físico.
II. UMA MANEIRA DE EXECUÇÃO FORA DE ORDEM (EM REFERÊNCIA À FIGURA 9)
[0137] Fora de ordem no presente documento se refere a uma inconsistência entre uma ordem na qual uma solicitação de acesso de memória é enviada a um controlador de memória estendida e uma ordem na qual um processador envia a solicitação de acesso de memória. Nesse caso, a ordem na qual a solicitação de acesso de memória é enviada não pode ser determinada pela determinação da possibilidade de um endereço de fileira de um endereço de acesso ser localizado em um espaço de sombra ou um espaço de memória real. Portanto, nesse caso, a ordem na qual a solicitação de acesso de memória é enviada é determinada consultando-se a possibilidade de haver dados a serem acessados em um buffer de dados.
[0138] Presume-se que os dados a serem acessados sejam localizados em uma iésima fileira em uma memória estendida, e um endereço de fileira dos dados a serem acessados é i. De acordo com o método precedente, os endereços de fileira de dois endereços de acesso gerados são i e i+M. endereços de banco dos dois endereços de acesso são definidos como iguais. Os endereços de acesso gerados precedentes são registrados no buffer de dados no controlador de memória estendida.
[0139] Duas solicitações de acesso de memória são construídas de acordo com os dois endereços de acesso gerados e são enviados pelo processador ao controlador de memória estendida. Presume-se que o processador envia primeiro a solicitação de acesso de memória com o endereço de fileira de i+M, e então envia a solicitação de acesso de memória com o endereço de fileira de i. Um processo de execução da modalidade de método ocorre conforme a seguir:
[0140] 910. O controlador de memória estendida recebe sucessivamente duas solicitações de acesso de memória, sendo que endereços de acesso nas duas solicitações de acesso de memória são diferentes entre si, os dois endereços de acesso apontam para um mesmo endereço físico, e o endereço físico é um endereço físico de dados a serem acessados na memória estendida.
[0141] Especificamente, os endereços de acesso nas duas solicitações de acesso de memória são diferentes entre si. Isso evita que as solicitações de acesso de memória geradas de acordo com os dois endereços de acesso sejam mescladas pelo processador em um MSHR (Registro de Gerenciamento de Estado de Perda). Os dois endereços de acesso apontam para o mesmo endereço físico. Isso indica que há uma relação de mapeamento entre os dois endereços de acesso e o endereço físico.
[0142] 930. Depois de receber qualquer uma das solicitações de acesso de memória, o controlador de memória estendida mapeia o endereço ao endereço físico dos dados a serem acessados, e pesquisa por um buffer de dados.
[0143] Especificamente, o buffer de dados é configurado para armazenar dados em cache. Na implantação específica, o buffer de dados pode ser implantado usando-se um cache. O armazenamento é realizado de maneira <identificador, dados>. O endereço físico dos dados a serem acessados pode ser usado como o identificador.
[0144] 950. Quando um registro dos dados a serem acessados não é encontrado, determinar que a solicitação de acesso de memória é uma primeira solicitação de acesso de memória, retornar um identificador especial ao processador, e enviar uma solicitação para ler os dados a serem acessados à memória estendida, sendo que a solicitação de leitura inclui o endereço físico.
[0145] Especificamente, na etapa 950, quando o controlador de memória estendida não pode encontrar, no buffer de dados, o registro dos dados a serem acessados, é determinado que a solicitação de acesso de memória recebida é a primeira solicitação de acesso de memória. Nesse caso, a solicitação de leitura cujo endereço de acesso é o endereço físico é gerada e é enviada à memória estendida, sendo que a solicitação de leitura é usada para ler os dados a serem acessados. Nesse processo, o controlador de memória estendida gera adicionalmente o identificador especial (tal como 0x5a5a5a5a5a5a5a5a), e envia o identificador especial ao processador, de modo que o processador determine, de acordo com o identificador especial, que os dados a serem acessados não tenham sido lidos no buffer de dados.
[0146] 970. Quando o registro dos dados a serem acessados é encontrado, determinar que a solicitação de acesso de memória é uma segunda solicitação de acesso de memória, e ler dados a partir do buffer de dados e retornar os dados ao processador.
[0147] Especificamente, quando o controlador de memória estendida encontra o registro dos dados a serem acessados, isso indica que a solicitação de acesso de memória é a segunda solicitação de acesso de memória, e os dados são lidos do buffer de dados e são retornados ao sistema de processador.
[0148] Da maneira de implantação precedente, um processador gera duas solicitações de acesso de memória, e envia as duas solicitações de acesso de memória a um controlador de memória estendida, de modo que o controlador de memória estendida leia dados a serem acessados em uma memória estendida de acordo com as duas solicitações de acesso de memória. Isso resolve um problema de que um atraso de acesso dos dados a serem acessados na memória estendida pelo processador não pode atender um requisito de protocolo de acesso de memória.
UMA MODALIDADE DE DISPOSITIVO DA PRESENTE INVENÇÃO
[0149] A presente invenção fornece adicionalmente uma modalidade de dispositivo de um controlador de memória estendida. Em referência à Figura 10, o controlador de memória estendida é aplicado para acessar dados a serem acessados em uma memória estendida por um processador em um computador. O controlador de memória estendida é conectado ao computador usando-se um barramento de memória. O controlador de memória estendida inclui: um módulo de recebimento 1010, configurado para receber N+1 solicitações de acesso de memória enviadas em série por um sistema de processador no computador, sendo que endereços de acesso incluídos em todas as solicitações de acesso de memória são diferentes entre si e apontam para um mesmo endereço físico, sendo que o endereço físico é um endereço de armazenamento dos dados a serem acessados na memória estendida, N>1, e N é um número inteiro; um módulo de execução 1020, configurado para: quando uma primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, determinar o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, sendo que o endereço físico é o endereço de armazenamento dos dados a serem acessados na memória estendida, enviar, à memória estendida, uma solicitação de leitura para obter os dados a serem acessados, e gerar uma mensagem de resposta específica, sendo que a solicitação de leitura inclui o endereço físico; antes de os dados a serem acessados retornados pela memória estendida serem recebidos, cada vez que uma solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, gerar uma mensagem de resposta específica dentro de um atraso de acesso especificada em um protocolo de barramento de memória; gravar os dados a serem acessados em um buffer de dados 1040 depois que os dados a serem acessados retornados pela memória estendida são recebidos, e depois de retornar uma mensagem de resposta específica ao sistema de processador; e depois que os dados a serem acessados são gravados no buffer de dados 1040, quando uma solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, ler os dados a serem acessados a partir do buffer de dados 1040, e enviar os dados a serem acessados a um módulo de envio; e o módulo de envio 1030, configurado para: enviar a solicitação de leitura à memória estendida e retornar a mensagem de resposta específica ao sistema de processador; antes de os dados a serem acessados retornados pela memória estendida serem recebidos, cada vez que outra solicitação de acesso de memória depois que a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, retornar a mensagem de resposta específica ao sistema de processador dentro do atraso de acesso especificado no protocolo de barramento de memória; e receber os dados a serem acessados do módulo de execução 1020, e enviar os dados a serem acessados ao sistema de processador.
[0150] Além disso, os endereços de acesso em todas as N+1 solicitações de acesso de memória incluem um mesmo endereço de banco e diferentes endereços de fileira.
[0151] Além disso, o módulo de execução 1020 é adicionalmente configurado para: predefinir uma relação de mapeamento entre os endereços de acesso incluídos em todas as N+1 solicitações de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida; e consultar, de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, a relação de mapeamento entre o endereço de acesso incluído na primeira solicitação de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida, a fim de obter o endereço físico dos dados a serem acessados na memória estendida.
[0152] Além disso, o módulo de execução 1020 é adicionalmente configurado para: depois que o endereço físico é determinado de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, criar um registro no buffer de dados, sendo que o registro inclui um campo de tag e um campo de dados, e definir o campo de tag ao endereço físico.
[0153] Além disso, o registro inclui adicionalmente um campo de validade, e o módulo de execução 1020 é adicionalmente configurado para definir o campo de validade no registro para inválido.
[0154] Além disso, o módulo de execução 1020 é adicionalmente configurado para: cada vez que outra solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória é recebida, consultar a relação de mapeamento de acordo com os endereços de acesso portados em todas as solicitações de acesso de memória, a fim de obter o endereço físico; e consultar o registro no buffer de dados 1040 de acordo com o endereço físico, e gerar a mensagem de resposta específica quando for determinado que o campo de validade no registro é inválido.
[0155] Além disso, o módulo de execução 1020 é adicionalmente configurado para: pesquisar no buffer de dados 1040 pelo registro correspondente ao endereço físico, definir o campo de dados no registro aos dados a serem acessados, e definir o campo de validade para válido.
[0156] Além disso, deve-se observar que, na modalidade precedente do controlador de memória estendida, o buffer de dados 1040 é integrado no controlador de memória estendida. Essa é somente uma maneira de implantação. Um técnico no assunto pode entender que o buffer de dados 1040 pode ser adicionalmente implantado independentemente do controlador de memória estendida.
[0157] A presente invenção fornece adicionalmente um sistema de computador que inclui uma memória estendida. Conforme mostrado na Figura 2, o sistema de computador inclui um sistema de processador 201, uma memória de sistema 202, um controlador de memória estendida 203 conforme descrito na modalidade de dispositivo do controlador de memória estendida e uma memória estendida 204. O controlador de memória estendida 203 é conectado à memória estendida 204, e o controlador de memória estendida 203 é conectado ao sistema de processador 201 usando-se uma interface de memória. O sistema de processador 201 é conectado à memória de sistema 202, e a memória de sistema 202 é configurada para armazenar uma instrução executável. O sistema de processador 201 é configurado para executar a instrução executável armazenada na memória de sistema 202, de modo que o sistema de processador 201 realize o método para acessar a memória estendida em um sistema de memória estendida pelo computador mostrado na modalidade de método de acesso da memória estendida pelo computador.
[0158] Um técnico no assunto pode estar ciente que, em combinação com os exemplos descritas nas modalidades reveladas na presente invenção, as unidades e etapas de algoritmo podem ser implantadas por hardware eletrônico, software de computador ou uma combinação dos mesmos. A fim de descrever claramente a intercambialidade entre o hardware e o software, o supracitado descreveu de modo geral as composições e etapas de cada exemplo de acordo com as funções. A possibilidade de as funções serem realizadas por hardware ou software depende das aplicações e condições de restrição de projeto particulares das soluções técnicas. Um técnico no assunto pode usar diferentes métodos para implantar as funções descritas para cada aplicação particular, porém, não deve ser considerado que a implantação ultrapassa o escopo da presente invenção.
[0159] Pode ser claramente compreendido por uma pessoa versada na técnica que, para o propósito de uma descrição breve e conveniente, para um processo de trabalho detalhado do sistema, aparelho, e unidade supracitados, pode ser feita referência a um processo correspondente nas modalidades dos métodos anteriormente mencionados, e os detalhes não são descritos novamente no presente documento.
[0160] Nas várias modalidades fornecidas neste pedido deve-se compreender que o sistema, aparelho e método revelados podem ser implantados de outras maneiras. Por exemplo, a modalidade de aparelho descrita é meramente um exemplo. Por exemplo, a divisão de unidade é meramente uma divisão de função lógica e pode ser outra divisão em uma implementação real. Por exemplo, uma pluralidade de unidades ou componentes pode ser combinada ou integrada em outro sistema ou alguns recursos podem ser ignorados ou não realizados. Além disso, os acoplamentos mútuos ou acoplamentos diretos ou conexões de comunicação exibidos ou discutidos podem ser implantados usando-se algumas interfaces. Os acoplamentos indiretos ou conexões de comunicação entre os aparelhos ou unidades podem ser implantados em formas eletrônicas, mecânicas ou outras.
[0161] As unidades descritas como partes separadas podem ou não serem separadas fisicamente, e as partes exibidas como unidades podem ou não serem unidades físicas, podem estar localizadas em uma posição, ou podem estar distribuídas em uma pluralidade de unidades de rede. Uma parte ou todas as unidades podem ser selecionadas de acordo com necessidades reais para alcançar os objetivos das soluções das modalidades da presente invenção.
[0162] Além disso, unidades funcionais nas modalidades da presente invenção podem ser integradas em uma unidade de processamento ou cada uma das unidades pode existir fisicamente isolada ou duas ou mais unidades serem integradas em uma unidade. A unidade integrada pode ser implantada em uma forma de hardware, ou pode ser implantada em uma forma de uma unidade funcional de software.
[0163] Quando a unidade integrada é implantada na forma de uma unidade de função de software e vendida ou usada como um produto independente, a unidade integrada pode ser armazenada em uma mídia de armazenamento legível por computador. Com base em tal compreensão, as soluções técnicas da presente invenção essencialmente, ou a parte que contribui para a técnica anterior, ou todas ou uma parte das soluções técnicas podem ser implantadas na forma de um produto de software. O produto de software é armazenado em uma mídia de armazenamento e inclui diversas instruções para instruir um dispositivo de computador (que pode ser um computador pessoal, um servidor ou um dispositivo de rede) para realizar todas ou uma parte das etapas dos métodos descritos nas modalidades da presente invenção. A mídia de armazenamento exposta acima inclui: qualquer mídia que possa armazenar um código de programa, tal como uma unidade flash USB, um disco rígido removível, uma memória somente de leitura (ROM, Read-Only Memory), uma memória de acesso aleatório (RAM, Random Access Memory), um disco magnético ou um disco óptico.
[0164] As descrições anteriores são meramente modalidades específicas da presente invenção, porém, não se destinam a limitar o escopo de proteção da presente invenção. Qualquer modificação ou substituição prontamente percebida por uma pessoa versada na técnica abrangida pelo escopo técnico revelado na presente invenção deve ser abrangida pelo escopo de proteção da presente invenção. Portanto, o escopo de proteção da presente invenção deve ser submetido ao escopo de proteção das reivindicações.

Claims (31)

1. Método para acessar uma memória estendida (204), CARACTERIZADO pelo fato de que um computador é conectado a um sistema de memória estendida usando-se um barramento de memória, o sistema de memória estendida compreende um controlador de memória estendida (203) e a memória estendida (204), e quando o computador precisa acessar dados a serem acessados armazenados na memória estendida (204), o método compreende: receber (710), pelo controlador de memória estendida (203), N+1 solicitações de acesso de memória enviadas em série por um sistema de processador (201) no computador, em que endereços de acesso compreendidos em todas as solicitações de acesso de memória são diferentes uns dos outros e apontam para um mesmo endereço físico, em que o endereço físico é um endereço dos dados a serem acessados armazenados na memória estendida, N>1, e N é um número inteiro; determinar (730), pelo controlador de memória estendida (203) ao receber uma primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória, o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, enviar, à memória estendida, uma solicitação de leitura para obter os dados a serem acessados, e retornar uma mensagem de resposta específica ao sistema de processador, em que a solicitação de leitura compreende o endereço físico; antes de receber os dados a serem acessados retornados pela memória estendida, cada vez que outra solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória for recebida, retornar (750), pelo controlador de memória estendida (203), uma mensagem de resposta específica ao sistema de processador dentro de um atraso de acesso especificado em um protocolo de barramento de memória; gravar (770), pelo controlador de memória estendida (203) após receber os dados a serem acessados retornados pela memória estendida, os dados a serem acessados em um buffer de dados, e interromper retorno de uma mensagem de resposta específica ao sistema de processador; e ler (790), pelo controlador de memória estendida (203) ao receber outra solicitação de acesso de memória das N+1 solicitações de acesso de memória, os dados a serem acessados a partir do buffer de dados, e retornar os dados a serem acessados ao sistema de processador.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que os endereços de acesso em todas dentre as N+1 solicitações de acesso de memória compreendem um mesmo endereço de banco e diferentes endereços de fileira.
3. Método, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que o método compreende adicionalmente: predefinir, pelo controlador de memória estendida, uma relação de mapeamento entre os endereços de acesso compreendidos em todas dentre as N+1 solicitações de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida; e determinar (730), pelo controlador de memória estendida, o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória compreende: consultar, pelo controlador de memória estendida, a relação de mapeamento de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, a fim de obter o endereço físico.
4. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que após determinar (730), pelo controlador de memória estendida, o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, o método compreende adicionalmente: criar, pelo controlador de memória estendida, um registro no buffer de dados, em que o registro compreende um campo de tag e um campo de dados, e definir o campo de tag para o endereço físico.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que o registro compreende adicionalmente um campo de validade, e o método compreende adicionalmente: definir, pelo controlador de memória estendida, o campo de validade para inválido.
6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que cada vez que uma solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória for recebida, o método compreende adicionalmente: consultar, pelo controlador de memória estendida, a relação de mapeamento de acordo com os endereços de acesso portados em todas dentre as N+1 solicitações de acesso de memória, a fim de obter o endereço físico; e consultar o registro no buffer de dados de acordo com o endereço físico e, ao determinar que o campo de validade no registro é inválido, gerar a mensagem de resposta específica.
7. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a gravação (770), pelo controlador de memória estendida após receber os dados a serem acessados retornados pela memória estendida, dos dados a serem acessados no buffer de dados compreende: pesquisar, pelo controlador de memória estendida, no buffer de dados pelo registro correspondente ao endereço físico, definir o campo de dados no registro para os dados a serem acessados, e definir o campo de validade para válido.
8. Método para acessar uma memória estendida (204), CARACTERIZADO pelo fato de que um computador é conectado a um sistema de memória estendida usando-se um barramento de memória, o sistema de memória estendida compreende um controlador de memória estendida (203) e a memória estendida, e quando o computador precisa acessar os dados a serem acessados armazenados na memória estendida, o método compreende: receber (510), por um sistema de processador (201) no computador, um endereço de armazenamento dos dados a serem acessados; gerar (530), pelo sistema de processador (201), N+1 solicitações de acesso de memória de acordo com o endereço de armazenamento dos dados a serem acessados, em que endereços de acesso compreendidos nas N+1 solicitações de acesso de memória são diferentes uns dos outros e apontam para um mesmo endereço físico, em que o endereço físico é um endereço dos dados a serem acessados armazenados na memória estendida, N>1, e N é um número inteiro; e enviar (550), pelo sistema de processador (201), as N+1 solicitações de acesso de memória ao controlador de memória estendida; receber, pelo sistema de processador, uma mensagem de resposta específica a partir do controlador de memória estendida em resposta a cada uma das N+1 solicitações de acesso de memória, para as quais os dados a serem acessados ainda não foram recebidos; receber, pelo sistema de processador, os dados a serem acessados a partir do controlador de memória estendida.
9. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que antes de gerar (530), pelo sistema de processador, N+1 solicitações de acesso de memória de acordo com o endereço de armazenamento dos dados a serem acessados, o método compreende adicionalmente: determinar um valor N de acordo com um parâmetro de atraso para obter dados a partir da memória estendida pelo computador, em que o parâmetro de atraso para obter dados a partir da memória estendida pelo computador compreende qualquer um ou qualquer combinação dos seguintes parâmetros: um atraso tPD1 de transmissão da solicitação de acesso de memória a partir do controlador de memória estendida à memória estendida, um atraso tPD2 de transmissão de dados, o qual é lido pela solicitação de acesso de memória, a partir da memória estendida para o controlador de memória estendida, ou um intervalo de tempo T_Interval entre duas solicitações de acesso de memória consecutivas enviadas pelo sistema de processador.
10. Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que a determinação de um valor N de acordo com um parâmetro de atraso para obter dados a partir da memória estendida pelo computador compreende: determinar o valor N, em que N>[(tPD1+tPD2)/T_Interval], e [*] é uma função de arredondamento.
11. Método, de acordo com a reivindicação 9 ou 10, CARACTERIZADO pelo fato de que o intervalo de tempo T_Interval entre duas solicitações de acesso de memória consecutivas é tGAPmin=tRCD+tRTP+tRP ou T_Fence.
12. Método, de acordo com qualquer uma das reivindicações 8 a 11, CARACTERIZADO pelo fato de que a geração (530), pelo sistema de processador, de N+1 solicitações de acesso de memória de acordo com o endereço de armazenamento dos dados a serem acessados compreende: realizar (551) uma conversão de endereço virtual para físico de acordo com o endereço de armazenamento Addr_Virtual dos dados a serem acessados, em que o endereço de armazenamento dos dados a serem acessados é um endereço virtual, a fim de obter um endereço físico Addr_Physical correspondente ao endereço virtual Addr_Virtual; gerar (552) N endereços de acesso Addr_Physical(n) de acordo com o endereço físico Addr_Physical, em que n é um número inteiro e 1<n<N, e endereços de fileira dos N endereços de acesso são Addr_Physical_Row(n)=n*M+Addr_Physical_Row, em que n é um número inteiro e 1<n<N, M é uma quantidade de fileiras de memória compreendidas na memória estendida, e Addr_Physical_Row é um endereço de fileira do endereço físico Addr_Physical; e um endereço diferente do endereço de fileira de cada um dos N endereços físicos é igual a um endereço diferente do endereço de fileira do endereço físico Addr_Physical; e gerar (553), pelo sistema de processador, as N+1 solicitações de acesso de memória de acordo com Addr_Physical e Addr_Physical(n), em que n é um número inteiro e 1<n<N.
13. Controlador de memória estendida (203) conectável a uma memória externa (204) e a um sistema de processador (201), o dito sistema de processador estando em um computador, CARACTERIZADO pelo fato de que o dito controlador de memória externa é para ser aplicado para acessar dados a serem acessados na memória estendida pelo sistema de processador, em que o sistema de processador é conectado a um sistema de memória estendida usando-se um barramento de memória, o sistema de memória estendida compreende o controlador de memória estendida e a memória estendida, e o controlador de memória estendida compreende: um módulo de recebimento (1010), configurado para receber N+1 solicitações de acesso de memória enviadas em série pelo sistema de processador no computador, em que endereços de acesso compreendidos em todas as solicitações de acesso de memória são diferentes uns dos outros e apontam para um mesmo endereço físico, em que o endereço físico é um endereço dos dados a serem acessados armazenados na memória estendida, N>1, e N é um número inteiro; um módulo de execução (1020), configurado para: determinar o endereço físico de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória quando uma primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória for recebida, gerar uma solicitação de leitura para obter os dados a serem acessados, e gerar uma mensagem de resposta específica, em que a solicitação de leitura compreende o endereço físico; antes dos dados a serem acessados retornados pela memória estendida serem recebidos, cada vez que outra solicitação de acesso de memória após o primeiro acesso de memória das N+1 solicitações de acesso de memória for recebida, gerar uma mensagem de resposta específica dentro de um atraso de acesso especificado em um protocolo de barramento de memória; gravar os dados a serem acessados em um buffer de dados (1040) do controlador de memória estendida após os dados a serem acessados retornados pela memória estendida serem recebidos, e parar de retornar uma mensagem de resposta específica para o sistema de processador; e ler os dados a serem acessados a partir do buffer de dados quando outra solicitação de acesso de memória das N+1 solicitações de acesso de memória for recebida, e enviar os dados a serem acessados a um módulo de envio (1030); e o módulo de envio (1030), configurado para: enviar a solicitação de leitura à memória estendida, e retornar a mensagem de resposta específica ao sistema de processador; antes dos dados a serem acessados retornados pela memória estendida serem recebidos, cada vez que a dita outra solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória for recebida, retornar a mensagem de resposta específica ao sistema de processador dentro do atraso de acesso especificado no protocolo de barramento de memória; e receber os dados a serem acessados a partir do módulo de execução, e enviar os dados a serem acessados ao sistema de processador.
14. Controlador de memória estendida, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que os endereços de acesso em todas as N+1 solicitações de acesso de memória compreendem um mesmo endereço de banco e diferentes endereços de fileira.
15. Controlador de memória estendida, de acordo com a reivindicação 13 ou 14, CARACTERIZADO pelo fato de que o módulo de execução (1020) é adicionalmente configurado para: predefinir uma relação de mapeamento entre os endereços de acesso compreendidos em todas as N+1 solicitações de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida; e consultar, de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, a relação de mapeamento entre o endereço de acesso compreendido na primeira solicitação de acesso de memória e o endereço físico dos dados a serem acessados na memória estendida, a fim de obter o endereço físico dos dados a serem acessados na memória estendida.
16. Controlador de memória estendida, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que o módulo de execução (1020) é adicionalmente configurado para: criar um registro no buffer de dados após o endereço físico ser determinado de acordo com o endereço de acesso portado na primeira solicitação de acesso de memória, em que o registro compreende um campo de tag e um campo de dados, e definir o campo de tag para o endereço físico.
17. Controlador de memória estendida, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o registro compreende adicionalmente um campo de validade; e o módulo de execução (1020) é adicionalmente configurado para definir o campo de validade no registro para inválido.
18. Controlador de memória estendida, de acordo com a reivindicação 17, CARACTERIZADO pelo fato de que o módulo de execução (1020) é adicionalmente configurado para: cada vez que outra solicitação de acesso de memória após a primeira solicitação de acesso de memória das N+1 solicitações de acesso de memória for recebida, consultar a relação de mapeamento de acordo com os endereços de acesso portados em todas as solicitações de acesso de memória, a fim de obter o endereço físico; consultar o registro no buffer de dados de acordo com o endereço físico; e gerar a mensagem de resposta específica quando for determinado que o campo de validade no registro é inválido.
19. Controlador de memória estendida, de acordo com a reivindicação 17, CARACTERIZADO pelo fato de que: o módulo de execução (1020) é adicionalmente configurado para: pesquisar no buffer de dados pelo registro correspondente ao endereço físico após os dados a serem acessados retornados pela memória estendida serem recebidos, definir o campo de dados no registro para os dados a serem acessados, e definir o campo de validade para válido.
20. Sistema de computador que compreende uma memória estendida (204), CARACTERIZADO pelo fato de que o sistema de computador compreende um sistema de processador (201), uma memória principal (202), o controlador de memória estendida (203) conforme definido em qualquer uma das reivindicações 13 a 19, e a memória estendida (204); o controlador de memória estendida (203) é conectado à memória estendida (204), o controlador de memória estendida (203) é conectado ao sistema de processador (201) usando- se uma interface de memória, e o sistema de processador (201) é conectado à memória principal (202); a memória principal (202) é configurada para armazenar instruções executáveis; e o sistema de processador (201) é configurado para executar as instruções executáveis armazenadas na memória principal, as ditas instruções fazem com que o sistema de processador realize o método para acessar a memória estendida no sistema de memória estendida pelo computador conforme definido em qualquer uma das reivindicações 8 a 12.
21. Método realizado por um controlador de memória estendida para acessar uma memória estendida de um computador, CARACTERIZADO pelo fato de que o método compreende: receber, a partir de um sistema de processador do computador, uma primeira solicitação de acesso de memória para ler dados solicitados armazenados na memória estendida, em que a primeira solicitação de acesso de memória compreende um primeiro endereço de acesso dos dados solicitados; enviar à memória estendida uma solicitação de leitura para ler os dados solicitados, em que a solicitação de leitura compreende um endereço físico dos dados solicitados correspondentes ao primeiro endereço de acesso; enviar, ao sistema de processador em resposta à primeira solicitação de acesso de memória e antes de os dados solicitados serem recebidos a partir da memória estendida, uma primeira mensagem de resposta indicando que o controlador de memória estendida não obteve os dados solicitados; receber, após enviar a primeira mensagem de resposta, os dados solicitados a partir da memória estendida; gravar os dados solicitados em um buffer de dados do controlador de memória estendida; receber uma segunda solicitação de acesso de memória a partir do sistema de processador após receber a primeira solicitação de acesso de memória, em que a segunda solicitação de acesso de memória compreende um segundo endereço de acesso; determinar que o segundo endereço de acesso também corresponde ao endereço físico dos dados solicitados, em que o segundo endereço de acesso é diferente do primeiro endereço de acesso; enviar os dados solicitados no buffer de dados ao sistema de processador em resposta à segunda solicitação de acesso de memória.
22. Método, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que o método compreende adicionalmente: receber, a partir do sistema de processador, uma terceira solicitação de acesso de memória compreendendo um terceiro endereço de acesso antes de receber os dados solicitados a partir da memória estendida, em que o terceiro endereço de acesso é diferente do primeiro endereço de acesso e do segundo endereço de acesso, e o terceiro endereço de acesso também corresponde ao endereço físico; enviar, ao sistema de processador em resposta à terceira solicitação de acesso de memória, uma terceira mensagem de resposta indicando que os dados não foram obtidos.
23. Método, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que o primeiro endereço de acesso compreende um primeiro endereço de banco e um primeiro endereço de fileira, o segundo endereço de acesso compreende o primeiro endereço de banco e um segundo endereço de fileira, e em que o primeiro endereço de fileira é diferente do segundo endereço de fileira.
24. Método, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que o método compreende adicionalmente: criar, um registro no buffer de dados, em que o registro compreende um campo de tag e um campo de validade, em que o campo de tag corresponde ao endereço físico, e em que o campo de validade indica invalidade antes de receber os dados a partir da memória estendida; armazenar os dados solicitados recebidos a partir da memória estendida em um campo de dados do registro; e definir o campo de validade do registro para indicar validade.
25. Método realizado por um sistema de processador de um computador para acessar uma memória estendida do computador por meio de um controlador de memória estendida do computador, CARACTERIZADO pelo fato de que o método compreende: receber um endereço de armazenamento de dados solicitados armazenados na memória estendida; gerar de acordo com o endereço de armazenamento dos dados solicitados, N+1 solicitações de acesso de memória, cada uma, contendo um endereço de acesso, em que os endereços de acesso das N+1 solicitações de acesso de memória são diferentes uns dos outros e correspondem a um mesmo endereço físico dos dados solicitados na memória estendida, N>1, e N sendo um número inteiro; e enviar as N+1 solicitações de acesso de memória ao controlador de memória estendida.
26. Método, de acordo com a reivindicação 25, CARACTERIZADO pelo fato de que o método compreende adicionalmente determinar N de acordo com um parâmetro de atraso para obter os dados solicitados a partir da memória estendida pelo computador, em que o parâmetro de atraso compreende: um atraso tPD1 de transmissão de uma solicitação de acesso de memória a partir do controlador de memória estendida para a memória estendida; um atraso tPD2 de transmissão dos dados acessados pela solicitação de acesso de memória, a partir da memória estendida para o controlador de memória estendida; ou um intervalo de tempo T_Interval entre duas solicitações de acesso de memória consecutivas enviadas pelo sistema de processador; em que N é nada menos que um arredondamento de (tPD1+tPD2)/T_Interval.
27. Método, de acordo com a reivindicação 25, CARACTERIZADO pelo fato de que: N endereços de acesso de N das N+1 solicitações de acesso de memória são gerados de acordo com um endereço físico que é convertido a partir do endereço de armazenamento dos dados, em que o endereço de armazenamento é um endereço virtual, em que os N endereços de acesso incluem endereços de fileira distintos para apontar para o mesmo endereço físico, cada endereço de fileira distinto com base em múltiplos diferentes de uma quantidade de fileiras de memória na memória estendida em combinação com um endereço de fileira do endereço físico, e em que cada um dos N endereços de acesso compreende um mesmo endereço de banco do endereço físico e um endereço de fileira diferente do endereço físico para causar uma perda de fileira no sistema de processador.
28. Sistema de memória estendida acoplada a um computador, CARACTERIZADO pelo fato de o sistema de memória estendida compreende: uma memória estendida, configurada para armazenar dados; um controlador de memória estendida acoplado à memória estendida e configurado para executar o método conforme definido em qualquer uma das reivindicações 21 a 24.
29. Sistema de computador, CARACTERIZADO pelo fato de que o sistema de computador compreende: um sistema de processador, configurado para executar o método conforme definido em qualquer uma das reivindicações 25 a 27; uma memória estendida, configurada para armazenar dados; um controlador de memória estendida acoplado à memória estendida e ao sistema de processador respectivamente e configurado para executar o método conforme definido em qualquer uma das reivindicações 21 a 24.
30. Mídia de gravação legível por computador que tem um programa de computador compreendendo uma ou mais instruções executáveis por computador, CARACTERIZADA pelo fato de que a uma ou mais instruções executáveis por computador, quando executadas em um controlador de memória estendida de um sistema de computador, fazem com que o sistema de computador realize o método conforme definido em qualquer uma das reivindicações 21 a 24.
31. Mídia de gravação legível por computador que tem um programa de computador compreendendo uma ou mais instruções executáveis por computador, CARACTERIZADA pelo fato de que a uma ou mais instruções executáveis por computador, quando executadas em um processador de um sistema de computador, fazem com que o sistema de computador realize o método conforme definido em qualquer uma das reivindicações 25 a 27.
BR112017022547-6A 2015-04-23 2016-02-03 Método para acessar memória estendida, dispositivo e sistema BR112017022547B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510198452.XA CN106155577B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及系统
CN201510198452.X 2015-04-23
PCT/CN2016/073304 WO2016169318A1 (zh) 2015-04-23 2016-02-03 扩展内存的访问方法、设备以及系统

Publications (2)

Publication Number Publication Date
BR112017022547A2 BR112017022547A2 (pt) 2018-10-16
BR112017022547B1 true BR112017022547B1 (pt) 2023-10-10

Family

ID=57142912

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017022547-6A BR112017022547B1 (pt) 2015-04-23 2016-02-03 Método para acessar memória estendida, dispositivo e sistema

Country Status (9)

Country Link
US (2) US10545672B2 (pt)
EP (2) EP3674877B1 (pt)
JP (1) JP6685323B2 (pt)
KR (1) KR102168017B1 (pt)
CN (2) CN110059020B (pt)
BR (1) BR112017022547B1 (pt)
CA (1) CA2983479C (pt)
SG (1) SG11201708477UA (pt)
WO (1) WO2016169318A1 (pt)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及系统
CN108228076B (zh) 2016-12-14 2020-10-16 华为技术有限公司 访问磁盘的方法和主机
US10733100B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
CN107590099B (zh) * 2017-08-31 2021-04-20 深圳市共济科技股份有限公司 一种多主机访问从机的方法、扩展装置及存储介质
CN109783395B (zh) * 2017-11-15 2023-03-31 阿里巴巴集团控股有限公司 内存访问方法、交换芯片、内存模组及电子设备
US10909046B2 (en) 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
CN109308190B (zh) * 2018-07-09 2023-03-14 北京中科睿芯科技集团有限公司 基于3d堆栈内存架构的共享行缓冲系统及共享行缓冲器
WO2020014869A1 (zh) * 2018-07-17 2020-01-23 华为技术有限公司 处理i/o请求的方法及设备
CN109284231B (zh) * 2018-07-24 2023-05-23 江苏微锐超算科技有限公司 内存访问请求的处理方法、装置及内存控制器
CN109189700A (zh) * 2018-10-19 2019-01-11 郑州云海信息技术有限公司 一种扩展内存装置、扩展内存系统、扩展内存的访存方法
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
CN111405603B (zh) * 2019-01-02 2023-05-09 中国移动通信有限公司研究院 一种时延获取方法、测试装置以及计算机存储介质
CN112306918B (zh) * 2019-07-31 2024-06-14 北京百度网讯科技有限公司 数据访问方法、装置、电子设备和计算机存储介质
CN113377704B (zh) * 2021-06-11 2022-04-12 上海壁仞智能科技有限公司 人工智能芯片以及数据操作方法
EP4365748A1 (en) * 2021-07-23 2024-05-08 Huawei Technologies Co., Ltd. Data access method and related device
US11600312B1 (en) * 2021-08-16 2023-03-07 Micron Technology, Inc. Activate commands for memory preparation
CN114721726B (zh) * 2022-06-10 2022-08-12 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN115757196B (zh) * 2022-11-09 2023-09-01 超聚变数字技术有限公司 内存、访问内存方法及计算设备
CN115686153B (zh) * 2022-12-29 2023-03-31 浪潮电子信息产业股份有限公司 一种内存模组及一种电子设备
CN115827504B (zh) * 2023-01-31 2023-07-11 南京砺算科技有限公司 多核心图形处理器的数据存取方法、图形处理器及介质
CN117851291B (zh) * 2024-03-07 2024-06-21 北京象帝先计算技术有限公司 内存访问系统、电子组件及电子设备

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5042003A (en) * 1988-07-06 1991-08-20 Zenith Data Systems Corporation Memory usage system
JP2513024B2 (ja) * 1989-03-16 1996-07-03 日本電気株式会社 拡張記憶アドレス制御方式
JPH05143438A (ja) * 1991-11-19 1993-06-11 Nec Software Kansai Ltd 拡張メモリ管理方式
JP2002063069A (ja) * 2000-08-21 2002-02-28 Hitachi Ltd メモリ制御装置、データ処理システム及び半導体装置
JP2003186740A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd メモリ制御装置、及びメモリ制御方法
JP3513147B2 (ja) * 2002-05-29 2004-03-31 株式会社ハギワラシスコム Usbストレージデバイス及びその制御装置
JP2004234461A (ja) * 2003-01-31 2004-08-19 Sony Corp 情報処理装置および方法、並びにプログラム
KR100420444B1 (ko) * 2003-06-03 2004-02-26 주식회사 넥스트웨이 외장형 저장장치
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
CN100444133C (zh) * 2006-06-13 2008-12-17 深圳市研祥智能科技股份有限公司 计算机访问扩充内存的方法
WO2008084681A1 (ja) * 2006-12-25 2008-07-17 Panasonic Corporation メモリ制御装置、メモリ装置およびメモリ制御方法
US20110010494A1 (en) * 2008-04-08 2011-01-13 Kazuhito Tanaka Memory control circuit and memory control method
JP2010250727A (ja) * 2009-04-20 2010-11-04 Panasonic Corp メモリ制御回路
JP2011118501A (ja) * 2009-12-01 2011-06-16 Yokogawa Electric Corp データ転送システム
JP2013069210A (ja) * 2011-09-26 2013-04-18 Toshiba Corp メモリシステム
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9281036B2 (en) * 2013-01-08 2016-03-08 Qualcomm Incorporated Memory device having an adaptable number of open rows
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN104346293B (zh) * 2013-07-25 2017-10-24 华为技术有限公司 混合内存的数据访问方法、模块、处理器及终端设备
CN104375946B (zh) * 2013-08-16 2018-04-20 华为技术有限公司 一种数据处理的方法及装置
CN103488436B (zh) 2013-09-25 2017-04-26 华为技术有限公司 内存扩展系统及方法
CN104388436B (zh) 2014-10-29 2016-08-24 中南民族大学 一种水稻诱导抗病基因OsAAA1及其应用
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及系统

Also Published As

Publication number Publication date
JP6685323B2 (ja) 2020-04-22
BR112017022547A2 (pt) 2018-10-16
US10545672B2 (en) 2020-01-28
CN110059020A (zh) 2019-07-26
CA2983479C (en) 2020-12-22
WO2016169318A1 (zh) 2016-10-27
JP2018517205A (ja) 2018-06-28
SG11201708477UA (en) 2017-11-29
KR102168017B1 (ko) 2020-10-20
US20180039424A1 (en) 2018-02-08
EP3674877A1 (en) 2020-07-01
EP3674877B1 (en) 2021-12-29
CN106155577B (zh) 2019-03-26
KR20170134704A (ko) 2017-12-06
CA2983479A1 (en) 2016-10-27
US20200150872A1 (en) 2020-05-14
US11237728B2 (en) 2022-02-01
EP3279788A4 (en) 2018-04-04
EP3279788A1 (en) 2018-02-07
CN110059020B (zh) 2024-01-30
EP3279788B1 (en) 2019-08-21
CN106155577A (zh) 2016-11-23

Similar Documents

Publication Publication Date Title
BR112017022547B1 (pt) Método para acessar memória estendida, dispositivo e sistema
US9798487B2 (en) Migrating pages of different sizes between heterogeneous processors
US11392488B2 (en) Optimizing storage of application data in memory
WO2018027839A1 (zh) 一种页表缓存tlb中表项的访问方法,及处理芯片
WO2014190695A1 (zh) 一种内存系统、内存访问请求的处理方法和计算机系统
BR112015029848B1 (pt) Sistema compreendendo um dispositivo de memória e um driver de sistema operacional para gerenciar operações de acesso a memória entre pelo menos um aplicativo e o dispositivo de memória
US8397219B2 (en) Method and apparatus for tracking enregistered memory locations
CN109952565B (zh) 内存访问技术
JP2011258189A (ja) プロセッサ・メインメモリのための持続性メモリ
US20220179792A1 (en) Memory management device
BR112020023084A2 (pt) pontos de interrupção de reprodução de rastreamento baseados em cache usando bits de campos de tags reservados
WO2018028629A1 (en) Pattern based preload engine
US9081657B2 (en) Apparatus and method for abstract memory addressing
US20100257319A1 (en) Cache system, method of controlling cache system, and information processing apparatus
US20180365183A1 (en) Cooperative overlay
US11385926B2 (en) Application and system fast launch by virtual address area container
US8521951B2 (en) Content addressable memory augmented memory
BRPI0805218A2 (pt) esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior
CN118113635A (zh) 一种tlb目录的插入方法、装置及系统

Legal Events

Date Code Title Description
B15I Others concerning applications: loss of priority

Free format text: PERDA DE PRIORIDADE CN 201510198452.X DE 23/04/2015, POR NAO CUMPRIMENTO DE EXIGENCIA REFERENTE A REIVINDICACAO DE PRIORIDADE. FOI SOLICITADA A FOLHA DE ROSTO DA PRIORIDADE TRADUZIDA OU DECLARACAO DOS DADOS IDENTIFICADORES DA PRIORIDADE, CONTENTO OS DADOS DA PRIORIDADE.EM RESPOSTA, FOI APRESENTADA PETICAO COM UMA ?DECLARACAO REFERENTE AOS DADOS IDENTIFICADORES DO PEDIDO DE PRIORIDADE?, POREM ESSA DECLARACAO NAO TEM OS DADOS IDENTIFICADORES DA PRIORIDADE, NEM MESMO O NUMERO DA PRIORIDADE

B12F Other appeals [chapter 12.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B06I Publication of requirement cancelled [chapter 6.9 patent gazette]

Free format text: ANULADA A PUBLICACAO CODIGO 6.21 NA RPI NO 2589 DE 18/08/2020 POR TER SIDO INDEVIDA.

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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