BR112016003873B1 - Controlador de memória e dispositivo eletrônico para gerenciamento de memória. - Google Patents

Controlador de memória e dispositivo eletrônico para gerenciamento de memória. Download PDF

Info

Publication number
BR112016003873B1
BR112016003873B1 BR112016003873-8A BR112016003873A BR112016003873B1 BR 112016003873 B1 BR112016003873 B1 BR 112016003873B1 BR 112016003873 A BR112016003873 A BR 112016003873A BR 112016003873 B1 BR112016003873 B1 BR 112016003873B1
Authority
BR
Brazil
Prior art keywords
sequence number
memory
block address
logic
global sequence
Prior art date
Application number
BR112016003873-8A
Other languages
English (en)
Other versions
BR112016003873A2 (pt
Inventor
Robert J. Royer Jr
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BR112016003873A2 publication Critical patent/BR112016003873A2/pt
Publication of BR112016003873B1 publication Critical patent/BR112016003873B1/pt

Links

Images

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/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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile 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/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/7202Allocation control and policies
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

GERENCIAMENTO DE MEMÓRIA. São descritos aparelhos, sistemas e métodos para gerenciar operações de memória. Em uma concretização, um dispositivo eletrônico compreende um processador e uma lógica de controle de memória para recuperar um número de sequência global a partir de um dispositivo de memória, receber uma solicitação de leitura para dados armazenados em um endereço de bloco lógico no dispositivo de memória, recuperar um número de sequência de mídia a partir do endereço de bloco lógico no dispositivo de memória, e retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de sequência de mídia for mais antigo que o número de sequência global. Outras modalidades também são reveladas e reivindicadas.

Description

CAMPO
[001] A presente modalidade, de modo geral, refere-se ao campo de eletrônicos. Mais particularmente, algumas modalidades da invenção, de modo geral, se referem a gerenciamento de memória em dispositivos eletrônicos.
ANTECEDENTES
[002] Muitos dispositivos eletrônicos que incluem sistemas de memória podem ser implantados com o uso de memória local de acesso rápido que é frequentemente incorporada como uma memória volátil, por exemplo, uma Memória de Acesso Aleatório Dinâmico (DRAM) ou similares. Quando a energia é reajustada no dispositivo eletrônico, isso faz com que a memória volátil no dispositivo seja reajustada, tipicamente, para zero. Portanto, os sistemas de operação de dispositivo são comumente gravados com a suposição de que a memória local de acesso rápido será reajustada para zero durante uma operação de reajuste de potência.
BREVE DESCRIÇÃO DOS DESENHOS
[003] A descrição detalhada é fornecida com referência às Figu ras anexas. O uso dos mesmos números de referência em Figuras di-ferentes indica itens similares ou idênticos.
[004] A Figura 1 é uma ilustração de diagrama de blocos esque mática de componentes de aparelhos para implantar o gerenciamento de memória de acordo com várias modalidades discutidas no presente documento.
[005] As Figuras 2 e 4 são fluxogramas que ilustram operações em um método para gerenciar memória de acordo com várias modalidades discutidas no presente documento.
[006] A Figura 3 é um diagrama esquemático de uma tabela de metadados que pode ser usado para implantar gerenciamento de memória de acordo com várias modalidades discutidas no presente documento.
[007] As Figuras 5A e 5B são ilustrações esquemáticas de núme ro de sequência que pode ser usado em operações em um gerenciamento de latência de memória de implantação de método de acordo com várias modalidades discutidas no presente documento.
[008] As Figuras 6 a 10 são ilustrações de diagrama de blocos esquemáticas de dispositivos eletrônicos que podem ser adaptados para implantar gerenciamento de latência de memória de acordo com várias modalidades discutidas no presente documento.
DESCRIÇÃO DETALHADA
[009] Na descrição a seguir, os inúmeros detalhes específicos são estabelecidos com o objetivo de fornecer uma compreensão de várias modalidades. No entanto, várias modalidades da invenção podem ser praticadas sem os detalhes específicos. Em outras instâncias, os métodos, procedimentos, componentes e circuitos bem conhecidos não foram descritos em detalhes de modo a obscurecer as modalidades da invenção. Adicionalmente, vários aspectos das modalidades da invenção podem ser realizados com o uso de vários meios, de modo que circuitos semicondutores integrados ("hardware"), instruções legíveis por computador organizadas em um ou mais programas ("software"), ou alguma combinação de hardware e software. Para os propósitos dessa modalidade, a referência a "lógica" deve significar tanto hardware, software quanto alguma combinação dos mesmos.
[0010] Os sistemas de memória não voláteis estão sendo desen volvidos para operar em velocidades suficientemente rápidas para serem usadas como sistemas de memória voláteis de acesso local. Diferente da memória volátil, a memória não volátil não será reajustada automaticamente para zero durante um reajuste de energia. Conse-quentemente, as técnicas para gerenciar memória volátil de acesso local podem encontrar utilidade em um método de zerar rápido, por exemplo, em sistemas de memória para dispositivos eletrônicos.
[0011] A Figura 1 é uma ilustração de diagrama de blocos esque mática de componentes de aparelhos para implantar o gerenciamento de memória de acordo com várias modalidades discutidas no presente documento. Com referência à Figura 1, em algumas modalidades, um pacote de unidade de processamento central (CPU) 100 que pode compreender uma ou mais CPUs 110 acopladas a um hub de controle 120 e a uma memória local 130. O hub de controle 120 compreende um controlador de memória 122 e uma interface de memória 124.
[0012] A interface de memória 124 está acoplada a um ou mais dispositivos de memória remotos 140 por um barramento de comunicação 160. O dispositivo de memória 140 pode compreender um controlador 142 e um ou mais bancos de memória 150. Em várias modalidades, pelo menos alguns dos bancos de memória 150 podem ser implantados com o uso de memória não volátil, por exemplo, memória de mudança de fase, memória NAND (flash), memória de acesso aleatório ferroelétrica (FeTRAM), memória não volátil com base em nanofio, memória que incorpora uma tecnologia de memristor, uma memória de acesso aleatório estática (SRAM), uma memória de ponto de cruzamento tridimensional (3D), tal como uma memória de mudança de fase (PCM), memória de torque de transferência por rotação (STT-RAM) ou uma memória NAND. A título de exemplo, em algumas modalidades, o(s) dispositivo(s) de memória 140 pode(m) compreender um ou mais módulos de memória em linha diretos (DIMMs) acoplados a um canal de memória 144 que fornece um enlace de comunicação para o controlador 142. A configuração específica do(s) banco(s) de memória 150 no(s) dispositivo(s) de memória 140 não é de importância crítica.
[0013] Conforme descrito acima, em algumas modalidades, a lógi ca no controlador de memória 122 gerencia a memória no(s) dispositi- vo(s) de memória 140. Mais particularmente, em algumas modalidades, o controlador de memória 122 implanta operações que permite que a memória não volátil de dispositivos de memória 150 emule a memória volátil, pelo menos no sentido em que as operações de leitura para a memória não volátil de dispositivos de memória 140 retornarão para zeros que serem uma operação de reajuste de potência. Em resumo, o controlador de memória 122 alcança isso determinando se os dados em uma matéria de bloco lógico para uma operação de leitura foram escritos antes da operação de reajuste de potência mais recente. Se os dados no bloco lógico foram escritos antes da operação de reajuste de potência mais recente, então, o controlador de memória retorna uma resposta para a operação de leitura que inclui zeros no lugar dos dados que residem no bloco lógico. Em contrapartida, se os dados no bloco lógico foram escritos após da operação de reajuste de potência mais recente, então, o controlador de memória retorna uma resposta para a operação de leitura que inclui os dados que residem no bloco lógico. Portanto, o controlador de memória 122 permite que uma memória não volátil emule os atributos de reajuste de energia da memória volátil.
[0014] Em algumas modalidades, o controlador de memória 122 mantém os seguintes parâmetros em uma tabela de memória 146:
[0015] Um Número de Sequência Global (GSN): Isso é um parâ metro numérico que é incrementado toda vez que o sistema passa por uma operação de reajuste de potência. O controlador de memória armazena o GSN em uma tabela de memória 146. Em algumas modalidades, o GSN pode ser implantado como um número binário de 8 bits de modo que o GSN possa circular através dos incrementos 256 antes de encapsular de volta para zero.
[0016] Um Número de Série de Número de Sequência Global (GSN.S). Em algumas modalidades, o GSN pode pertencer a uma dentre uma pluralidade de séries. O número de série do número de sequência global indica a série em que um GSN pertence. Em algumas modalidades, o GSN.S pode ser implantado como um bit mais superior do número de sequência global.
[0017] Um Número de Sequência de Mídia (MSN): Sempre que uma operação de gravação é direcionada para o(s) dispositivo(s) de memória 140 o GSN atual é gravado nos metadados de mídia para a seção de mídia para a qual a operação de gravação é direcionada e se torna o MSN para esta seção de mídia.
[0018] O Número de Série do Número de Sequência de Mídia (MSN.S) - Em algumas modalidades, o MSN pode pertencer a um dentre uma pluralidade de séries. O número de série do número de sequência de mídia indica a série em que um MSN pertence. Em algumas modalidades, o MSN.S pode ser implantado como o bit mais superior do MSN, copiado a partir do GSN.S quando uma seção de mídia é gravada.
[0019] Atualização Completada Dentro de uma Sinalização de Sé rie: Isso é uma sinalização que indica se uma atualização completa (por exemplo, um processo de antecedente que lê e grava todos os endereços no dispositivo de memória) iniciada e completada dentro de uma série. A mesma pode ser armazenada no(s) dispositivo(s) de memória 140.
[0020] As operações implantadas pelo controlador de memória 122 serão descritas com referência às Figuras 2 e 4. Com referência primeiro à Figura 2, quando um dispositivo eletrônico que incorpora o sistema de memória representado na Figura 1 é submetido a uma operação de reajuste de potência, o controlador de memória 122, na operação 210, recupera o número de sequência global atual (GSN) a partir da tabela de memória 146.
[0021] Na operação 215, o controlador de memória 122 recebe uma solicitação de memória a partir de um dispositivo eletrônico que incorpora o sistema de memória representado na Figura 1. Se, na operação 220, o controlador 122 recebe uma solicitação de gravação, então o controle passa para a operação 225 e o controlador 122 armazena o número de sequência global em metadados associados com o endereço de bloco lógico solicitado como o número de sequência de mídia para esse endereço de bloco lógico. Com referência à Figura 3, em algumas modalidades o MSA pode ser armazenado em uma tabela de memória em associação com o endereço de bloco lógico.
[0022] Com referência novamente à Figura 2, se na operação 220, o controlador 122 recebe uma solicitação para gravar zeros para a memória no(s) dispositivo(s) de memória 140, então, o controle passa para a operação 230 e o controlador 122 incrementa o número de sequência global e na operação 235, o controlador 122 armazena o número de sequência global no(s) dispositivo(s) de memória 140. Separadamente, o controlador 122 pode implantar um processo de antecedente para gravar todos os zeros para a memória no(s) dispositivo(s) de memória 140.
[0023] Em contrapartida, se na operação 220, o controlador 122 recebe uma solicitação para ler os dados a partir do(s) dispositivo(s) de memória 140, então, o controle passa para a operação 240 e o controlador 122 lê o número de sequência de mídia associado com o endereço de bloco lógico identificado na operação de leitura a partir da tabela representada na Figura 3.
[0024] Na operação 245, o controlador 122 determina se o número de sequência de mídia associado com o endereço de bloco lógico identificado na operação de leitura for mais antigo que o número de sequência global. Na maioria dos casos, essa determinação pode ser feita comparando-se o número de sequência de mídia ao número de sequência global. Se o número de sequência de mídia for menor que o número de sequência global, então, o número de sequência de mídia for mais antigo que o número de sequência global.
[0025] Se, na operação 245, o número de sequência de mídia não for mais antigo que o número de sequência global, então, o controle passa para a operação 250 e o controlador 250 retorna os dados armazenados no endereço de bloco lógico identificado na operação de leitura. Em contrapartida, se na operação 245, o número de sequência de mídia não for mais antigo que o número de sequência global, então, o controle passa para a operação 255 e o controlador 122 retorna uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico identificado na operação de leitura. Por exemplo, uma resposta nula pode compreender todos os zeros ou um padrão predeterminado de bits. O controle, então passa de volta para a operação 210 e o controlador 122 espera pela próxima solicitação de memória a partir do dispositivo eletrônico.
[0026] Portanto, as operações representadas na Figura 2 permi tem que o controlador tenha memória não volátil no(s) dispositivo(s) de memória 140 que emula(m) a operação de memória volátil, pelo menos no sentido em que as operações de leitura direcionadas para a memória que não foi gravada visto que o reajuste de energia mais recente retornará os zeros em vez dos dados reais que residem no endereço de bloco lógico.
[0027] As limitações de memória determinam que o número de sequência global tem um limite finito em tamanho. Em algumas moda-lidades, quando o número de sequência global alcança o limite finito o mesmo encapsula de volta para zero. Esse encapsulamento pode resultar em uma situação em que o número de sequência de mídia pode ser maior que o número de sequência global mesmo se o endereço de bloco lógico não tiver recebido uma operação de gravação desde a operação de reajuste de potência mais recente. A determinação feita na operação 245 pode acomodar a circunstância em que o número de sequência global encapsula de volta para zero. Por exemplo, mediante a detecção de um número de sequência encapsular um controlador de mídia pode gravar manualmente todos os zeros.
[0028] Em algumas modalidades, o controlador usa o número de série do número de sequência global e o número de série de número de sequência de mídia para acomodar a situação em que o número de sequência global encapsula. A lógica para gerenciar essa situação é apresentada na Figura 4. Com referência à Figura 4, na operação 410, o controlador 122 recebe uma solicitação para incrementar o número de sequência global.
[0029] Se, na operação 410, o incremento não faz com que o nú mero de sequência global encapsule de volta para zero, então, o controle passa para a operação 420 e o número de sequência global é incrementado em uma maneira normal. Em contrapartida, se na operação 415, o incremento de número de sequência global faz com que o número de sequência global encapsular, então, o controle passa para a operação 425, em que o status da sinalização de Atualização Completada Dentro da Série é verificado para determinar se a sinalização de Atualização Completada Dentro da Série é ajustada.
[0030] Em algumas modalidades, o controlador 122 implementa um processo separado que monitora as operações de gravação para o(s) dispositivo(s) de memória 140 e ajusta a sinalização de atualização quando todo os endereços de bloco lógico no(s) dispositivo(s) de memória 140 foram gravados com dados desde a operação de reajuste de potência mais recente. Portanto, uma sinalização de atualização de ajuste indica que todos os endereços de bloco lógico no(s) disposi- tivo(s) de memória 140 foram gravados com novos dados desde a operação de reajuste de potência mais recente.
[0031] Se, na operação 425, a sinalização de atualização não é ajustada, então, alguns dos dados no(s) dispositivo(s) de memória 140 não foram regravados desde a operação de reajuste de potência mais recente. Nesse caso, o controle passa para a operação 430 e o controlador 122 grava zeros em todos os endereços no espaço de endereço lógico do(s) dispositivo(s) de memória 140, essencialmente força a memória não volátil do(s) dispositivo(s) de memória 140 a emular a função de zero da memória volátil em resposta a um reajuste de energia. Isso é ilustrado na Figura 5A.
[0032] O controle, então, passa para a operação 435 e a sinaliza ção de atualização é limpa. Na operação 440, o número de sequência global é encapsulado de volta para zero, e na operação 445 o bit de série é invertido.
[0033] Em contrapartida, se na operação 425, a sinalização de atualização é ajustada, então, não há necessidade de gravar zeros para a memória não volátil no(s) dispositivo(s) de memória 140 e o controle pode passar diretamente para as operações 435 a 445. Isso é ilustrado na Figura 5B.
[0034] Portanto, as operações representadas na Figura 4 garante que o número de sequência global que encapsula de volta para zero não resulta em uma leitura errônea dos dados a partir dos endereços de bloco lógico no(s) dispositivo(s) de memória 140 que têm números de sequência de mídia que são maiores que o número de sequência global.
[0035] Conforme descrito acima, em algumas modalidades, o dis positivo eletrônico pode ser realizado como um sistema de computador. A Figura 6 ilustra um diagrama de blocos de um sistema de computação 600 de acordo com uma concretização da invenção; o sistema de computação 600 pode incluir uma ou mais unidade(s) de proces- samento central (CPUs) 602 ou processadores que se comunicam por meio de uma rede de interconexão (ou barramento) 604. Os processadores 602 podem incluir um processador de propósito geral, um processador de rede (que processa dados comunicados em uma rede de computador 603), ou outros tipos de um processador (que incluem um processador de computador de ajuste de instrução reduzida (RISC) ou um computador de ajuste de instrução complexa (CISC)). Além disso, os processadores 602 podem ter um único ou múltiplo projeto de núcleo. Os processadores 602 com um múltiplo projeto de núcleo podem integrar tipos diferentes de núcleos de processador na mesma matriz de circuito integrado (IC). Além disso, os processadores 602 com um múltiplo projeto de núcleo pode ser implantado como processadores simétricos ou assimétricos. Em uma concretização, um ou mais dos processadores 602 podem ser o mesmo ou similar aos processadores 102 da Figura 1. Por exemplo, um ou mais dos processadores 602 podem incluir a unidade de controle 120 discutida com referência às Figuras 1 a 3. Além disso, as operações discutidas com referência às Figuras 3 a 5 podem ser realizadas por um ou mais componentes do sistema 600.
[0036] Um conjunto de chip 606 pode também se comunicar com a rede de interconexão 604. O conjunto de chip 606 pode incluir um hub de controle de memória (MCH) 608. O MCH 608 pode incluir um controlador de memória 610 que se comunica com uma memória 612 (que pode ser a mesma ou similar à memória 130 da Figura 1). A memória 412 pode armazenar dados, que incluem sequências das instruções, que podem ser executados pela CPU 602, ou qualquer outro dispositivo incluído no sistema de computação 600. Em uma concretização da invenção, a memória 612 pode incluir um ou mais dispositivos de armazenamento (ou memória) voláteis, tais como memória de acesso aleatório (RAM), RAM dinâmica (DRAM), DRAM sincrônica (SDRAM), RAM estática (SRAM) ou outros tipos de dispositivos de armazenamento. A memória não volátil também pode ser usada como um disco rígido. Os dispositivos adicionais podem se comunicar por meio da rede de interconexão 604, tal como múltiplas CPUs e/ou memórias de sistema múltiplas.
[0037] O MCH 608 também pode incluir uma interface gráfica 614 que se comunica com um dispositivo de exibição 616. Em uma concre-tização da invenção, a interface gráfica 614 pode se comunicar com o dispositivo de exibição 616 por meio de uma porta de gráfico acelerada (AGP). Em uma concretização da invenção, o exibidor 616 (tal como um exibidor de painel plano) pode se comunicar com a interface gráfica 614 através, por exemplo, de um conversor de sinal que converte uma representação digital de uma imagem armazenada em um dispositivo de armazenamento tal como uma memória de vídeo ou memória de sistema em sinais de exibidor que são interpretados e exibidos pelo exibidor 616. Os sinais de exibidor produzidos pelo dispositivo de exibição podem passar através de vários dispositivos de controle antes de serem interpretados por e subsequentemente exibidos no exibidor 616.
[0038] Uma interface de hub 618 pode permitir o MCH 608 e um hub de controle de entrada/saída (ICH) 620 para se comunicar. O ICH 620 pode fornecer uma interface para dispositivo(s) de entrada e saída que se comunicam com o sistema de computação 600. O ICH 620 pode se comunicar com um barramento 622 através de uma ponte (ou controlador) periférica 624, tal como uma ponte de interconexão de componente periférico (PCI), um controlador de barramento de série universal, ou outros tipos de pontes ou controladores periféricos. A ponte 624 pode fornecer uma trajetória de dados entre a CPU 602 e os dispositivos periféricos. Outros tipos de topologias podem ser utilizados. Além disso, múltiplos barramentos podem se comunicar com o ICH 620, por exemplo, através de múltiplas pontes ou controladores. Além disso, outros periféricos em comunicação com o ICH 620 podem incluir, em várias modalidades da invenção, eletrônicos de unidade integrados (IDE) ou disco(s) rígido(s) de interface de sistema de computador pequena (SCSI), porta(s) USB, um teclado, um mouse, por- ta(s) paralela(s), porta(s) de série(s) unidade(s) de disquete, suporte de saída digital (por exemplo, interface de vídeo digital (DVI)) ou outros dispositivos.
[0039] O barramento 622 pode se comunicar com um dispositivo de áudio 626, uma ou mais unidades de disco 628, e um dispositivo de interface de rede 630 (que está em comunicação com a rede de computador 603). Outros dispositivos podem se comunicar por meio do barramento 622. Além disso, vários componentes (tais como o dispositivo de interface de rede 630) podem se comunicar com o MCH 608 em algumas modalidades da invenção. Além disso, o processador 602 e um ou mais outros componentes discutidos no presente documento podem ser combinados para formar um único chip (por exemplo, para fornecer um Sistema em Chip (SOC)). Adicionalmente, o acelerador de gráfico 616 pode ser incluído dentro do MCH 608 em outras modalidades da invenção.
[0040] Adicionalmente, o sistema de computação 600 pode incluir memória (ou armazenamento) volátil e/ou não volátil. Por exemplo, memória não volátil pode incluir um ou mais dentre os seguintes: memória apenas de leitura (ROM), ROM programável (PROM), PROM apagável (EPROM), EPROM eletricamente (EEPROM), uma unidade de disco (por exemplo, 628), um disquete, uma ROM de disco compacto (CD-ROM), um disco versátil digital (DVD), memória flash, um disco magneto-óptico ou outros tipos de mídia legível por máquina não volátil que têm a capacidade de armazenar dados eletrônicos (por exemplo, que incluem instruções).
[0041] A Figura 7 ilustra um diagrama de blocos de um sistema de computação 700, de acordo com uma concretização da invenção. O sistema 700 pode incluir um ou mais processadores 702-1 através de 702-N (de modo geral, referenciado no presente documento como "processadores 702" ou "processador 702"). Os processadores 702 podem se comunicar por meio de uma rede de interconexão ou barra- mento 704. Cada processador pode incluir vários componentes alguns dos quais são apenas discutidos com referência AO processador 7021, a título de clareza. Consequentemente, cada um dos processadores restantes 702-2 através de 702-N pode incluir os mesmos componentes ou similares discutidos com referência ao processador 702-1.
[0042] Em uma concretização, o processador 702-1 pode incluir um ou mais núcleos de processador 706-1 até 706-M (com referência no presente documento como "núcleos 706" ou mais de modo geral, como "núcleo 706"), uma memória cache compartilhada 708, um roteador 710, e/ou uma lógica ou unidade de controle de processador 720. Os núcleos de processador 706 podem ser implantados em um único chip de circuito integrado (IC). Além disso, o chip pode incluir uma ou mais memórias caches compartilhadas e/ou privativas (tais como cache 708), barramentos ou interconexões (tais como um barramento ou rede de interconexão 712), controladores de memória ou outros componentes.
[0043] Em uma concretização, o roteador 710 pode ser usado para se comunicar entre vários componentes do processador 702-1 e/ou o sistema 700. Além disso, o processador 702-1 pode incluir mais de um roteador 710. Adicionalmente, os vários roteadores 710 podem estar em comunicação para permitir o roteamento de dados entre vários componentes dentro ou fora do processador 702-1.
[0044] A memória cache compartilhada 708 pode armazenar da dos (por exemplo, que incluem instruções) que são utilizados por um ou mais componentes do processador 702-1, tais como os núcleos 706. Por exemplo, a memória cache compartilhada 708 pode localmente cache dados armazenados em uma memória 714 para o acesso mais rápido por componentes do processador 702. Em uma concretização, a memória cache 708 pode incluir uma ou mais memórias cache de nível médio, tais como um nível 2 (L2), um nível 3 (L3), um nível 4 (L4 ou outros níveis de cache) uma memória cache de último nível (LLC) e/ou combinações das mesmas. Além disso, vários componentes do processador 702-1 podem se comunicar com a memória cache compartilhada 708 diretamente, através de um barramento (por exemplo, o barramento 712), e/ou um controlador de memória ou hub. Conforme mostrado na Figura 7, em algumas modalidades, um ou mais dos núcleos 706 podem incluir uma memória cache de nível 1 (L1) 716-1 (de modo geral, referida no presente documento como "memória cache L1 716"). Em uma concretização, a unidade de controle 720 pode incluir lógica para implantar as operações descritas acima com referência ao controlador de memória 122 na Figura 2.
[0045] A Figura 8 ilustra um diagrama de dados de porções de um núcleo de processador 706 e outros componentes de um sistema de computação, de acordo com uma concretização da invenção. Em uma concretização, as setas mostradas na Figura 8 ilustram a direção de fluxo de instruções através do núcleo 706. Um ou mais núcleos de processador (tais como o núcleo de processador 706) pode ser implantado em um único chip de circuito integrado (ou matriz) tal conforme discutido com referência à Figura 7. Além disso, o chip pode incluir uma ou mais memórias caches compartilhadas e/ou privativas (por exemplo, a memória cache 708 da Figura 7), interconexões (por exemplo, interconexões 704 e/ou 112 da Figura 7), unidades de controle, controladores de memória ou outros componentes.
[0046] Conforme ilustrado na Figura 8, o núcleo de processador 706 pode incluir uma unidade de busca 802 para buscar instruções (que incluem instruções com ramificações condicionais) para execução pelo núcleo 706. As instruções podem ser buscadas a partir de quaisquer dispositivos de armazenamento, tais como a memória 714. O núcleo 706 também pode incluir uma unidade de decodificação 804 para decodificar a instrução buscada. Por exemplo, a unidade de decodifi- cação 804 pode decodificar a instrução buscada em uma pluralidade de uops (micro-operações).
[0047] Adicionalmente, o núcleo 706 pode incluir uma unidade de agendamento 806. A unidade de agendamento 806 pode realizar várias operações associadas com instruções decodificadas de armazenamento (por exemplo, recebida a partir da unidade de decodificação 804) até que as instruções estejam prontas para despache, por exemplo, até que todos os valores fonte de uma instrução decodificada se tornem disponíveis. Em uma concretização, a unidade de agendamen- to 806 pode agendar e/ou expedir (ou despachar) instruções decodificadas para uma unidade de execução 808 para execução. A unidade de execução 808 pode executar as instruções despachadas após as mesmas serem despachadas (por exemplo, pela unidade de decodifi- cação 804) e despachadas (por exemplo, pela unidade de agenda- mento 806). Em uma concretização, a unidade de execução 808 pode incluir mais de uma unidade de execução. A unidade de execução 808 também pode realizar várias operações aritméticas, tais como adição, subtração, multiplicação e/ou divisão, e pode incluir uma ou mais unidades de lógica aritmética (ALUs). Em uma concretização, um copro- cessador (não mostrado) pode realizar várias operações aritméticas em conjunto com a unidade de execução 808.
[0048] Adicionalmente, a unidade de execução 808 pode executar instruções fora de serviço. Consequentemente, o núcleo de processador 706 pode ser um núcleo de processador fora de serviço em uma concretização. O núcleo 706 também incluir uma unidade de baixa 810. A unidade de baixa 810 pode baixar instruções executadas após as mesmas serem confirmadas. Em uma concretização, a baixa das instruções executadas pode resultar no estado de processador sendo confirmado a partir da execução das instruções, os registros físicos usados pelas instruções sendo deslocados, etc.
[0049] O núcleo 706 também pode incluir uma unidade de barra- mento 714 para permitir comunicação entre os componentes do núcleo de processador 706 e outros componentes (tais como os componentes discutidos com referência à Figura 8) por meio de um ou mais barra- mentos (por exemplo, barramentos 804 e/ou 812). O núcleo 706 também pode inclui um ou mais registradores 816 para armazenar dados acessados por vários componentes do núcleo 706 (tais como valores relacionados a ajustes de estado de consumo de energia).
[0050] Adicionalmente, mesmo que a Figura 7 ilustre a unidade de controle 720 para ser acoplada ao núcleo 706 por meio de intercone- xão 812, em várias modalidades, a unidade de controle 720 pode estar localizada em outro lugar, tal como dentro do núcleo 706, acoplada ao núcleo por meio de barramento 704, etc.
[0051] Em algumas modalidades, um ou mais dos componentes discutidos no presente documento pode ser realizado como um dispositivo de Sistema Em Chip (SOC). A Figura 9 ilustra um diagrama de blocos de um pacote SOC de acordo com uma concretização. Conforme ilustrado na Figura 9, o SOC 902 inclui um ou mais núcleos de Unidade de Processamento Central (CPU) 920, um ou mais núcleos de Unidade de Processador de Gráficos (GPU) 930, uma interface de Entrada/Saída (I/O) 940, e um controlador de memória 942. Vários componentes do pacote SOC 902 podem ser acoplados para uma in- terconexão ou barramento, tal como discutido no presente documento com referência às outras figuras. Além disso, o pacote SOC 902 pode incluir mais ou menos componentes, tal como conforme discutido no presente documento com referência às outras figuras. Adicionalmente, cada componente do pacote SOC 902 pode incluir um ou mais outros componentes, por exemplo, conforme discutido com referência às outras figuras no presente documento. Em uma concretização, o pacote SOC 902 (e seus componentes) é fornecido em um ou mais matrizes de Circuito Integrado (IC), por exemplo, que são empacotadas em um único dispositivo semicondutor.
[0052] Conforme ilustrado na Figura 9, o pacote SOC 902 é aco plado a uma memória 960 (que pode ser similar a ou o mesmo que a memória discutida no presente documento com referência às outras figuras) por meio do controlador de memória 942. Em uma concretização, a memória 960 (ou uma porção da mesma) pode ser integrada no pacote SOC 902.
[0053] A interface de I/O 940 pode ser acoplada a um ou mais dis positivos de entrada e saída 970, por exemplo, por meio de uma inter- conexão e/ou barramento tal conforme discutido no presente documento com referência às outras figuras. O(s) dispositivo(s) de entrada e saída 970 podem incluir um ou mais de um teclado, um mouse, um touchpad, um exibidor, um dispositivo de captura de imagem/vídeo (tal como uma câmera ou gravador de camcorder/vídeo), uma tela sensível ao toque, um alto falante ou similares.
[0054] A Figura 10 ilustra um sistema de computação 1000 que está disposto em uma configuração ponto a ponto (PtP), de acordo com uma concretização da invenção. Em particular, a Figura 10 mostra um sistema em que processadores, memória e input/output dispositivos estão interconectados por diversas interfaces ponto a ponto. As operações discutidas com referência à Figuras 2 podem ser realizadas por um ou mais componentes do sistema 1000.
[0055] Conforme ilustrado na Figura 10, o sistema 1000 pode in- cluir diversos processadores, dos quais apenas dois, processadores 1002 e 1004 são mostrados por razões de clareza. Os processadores 1002 e 1004 podem incluir um hub controlador de memória local (MCH) 1006 e 1008 para permitir comunicação com memórias 1010 e 1012. MCH 1006 e 1008 podem incluir o controlador de memória 120 e/ou lógica 125 da Figura 1 em algumas modalidades.
[0056] Em uma concretização, os processadores 1002 e 1004 po dem ser um dos processadores 702 discutidos com referência à Figura 7. Os processadores 1002 e 1004 podem compartilhar dados por meio de uma interface ponto a ponto (PtP) 1014 com o uso de circuitos de interface PtP 1016 e 1018, respectivamente. Além disso, os processadores 1002 e 1004 podem trocar, cada um, dados com um conjunto de chip 1020 por meio de interfaces PtP individuais 1022, 1024 com uso de circuitos de interface ponto a ponto 1026, 1028, 1030 e 1032. O conjunto de chip 1020 pode compartilhar adicionalmente dados com um circuito de gráfico de alta performance 1034 por meio de uma interface gráfica de alta performance 1036, por exemplo, com o uso de um circuito de interface PtP 1037.
[0057] Conforme mostrado na Figura 10, um ou mais dentre os núcleos 106 e/ou a memória cache 108 da Figura 1 pode estar localizado dentro dos processadores 902 e 904. Outras modalidades da invenção, entretanto, podem existir em outros circuitos, unidades de lógica ou dispositivos dentro do sistema 900 da Figura 9. Adicionalmente, outras modalidades da invenção podem ser distribuídas por todos os diversos circuitos, unidades de lógica ou dispositivos ilustrados na Figura 9.
[0058] O conjunto de chip 920 pode se comunicar com um barra- mento 940 com o uso de um circuito de interface PtP 941. O barra- mento 940 pode ter um ou mais dispositivos que se comunicam com o mesmo, tal como uma ponte de barramento 942 e dispositivos de en- trada e saída 943. Por meio de um barramento 944, a ponte de barra- mento 943 pode se comunicar com outros dispositivos, tais como te- clado/mouse 945, dispositivos de comunicação 946 (tais como modems, dispositivos de interface de rede ou outros dispositivos de comunicação que podem se comunicar com a rede de computador 803), dispositivos de áudio de entrada e saída e/ou um dispositivo de armazenamento de dados 948. O dispositivo de armazenamento de dados 948 (que pode ser uma unidade de disco rígido ou uma memória flash NAND com base na unidade de estado sólido) pode armazena código 949 que pode ser executado pelos processadores 902 e/ou 904.
[0059] Os exemplos a seguir pertencem às modalidades adicio nais.
[0060] O Exemplo 1 é um controlador de memória que compreen de lógica para recuperar um número de sequência global a partir de um dispositivo de memória, receber uma solicitação de leitura para dados armazenados em um endereço de bloco lógico no dispositivo de memória, recuperar um número de sequência de mídia a partir do endereço de bloco lógico no dispositivo de memória, e retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de sequência de mídia for mais antigo que o número de sequência global.
[0061] No Exemplo 2, a matéria do Exemplo 1 pode incluir adicio nalmente lógica para retornar uma resposta que compreenda os dados armazenados no endereço de bloco lógico no dispositivo de memória quando a sequência de mídia não é mais antiga que o número de sequência global.
[0062] No Exemplo 3, a matéria de qualquer um dos Exemplos 1 a 2 pode incluir opcionalmente lógica para receber uma solicitação de gravação para gravar dados em um endereço de bloco lógico no dispositivo de memória e armazenar o número de sequência global em metadados associados com o endereço de bloco lógico solicitado como um número de sequência de mídia.
[0063] No Exemplo 4, a matéria de qualquer um dos Exemplos 1 a 3 pode incluir opcionalmente lógica para receber uma solicitação de memória zero, e em resposta ao comando de memória zero, incrementar o número de sequência global, e armazenar o número de sequência global no dispositivo de memória.
[0064] No Exemplo 5, a matéria de qualquer um dos Exemplos 1 a 4 pode incluir opcionalmente uma disposição em que o número de se-quência global compreende um número de série de sequência global que identifica uma série à qual o número de sequência global pertence, e o número de sequência de mídia compreende um número de série de sequência de mídia que identifica uma série à qual o número de sequência de mídia pertence.
[0065] No Exemplo 6, a matéria de qualquer um dos Exemplos 1 a 5 pode incluir opcionalmente lógica para retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia for igual ao número de série de sequência global, e o número de sequência de mídia for menor que o número de sequência global.
[0066] No Exemplo 7, a matéria de qualquer um dos Exemplos 1 a 6 pode incluir opcionalmente lógica para retornar a resposta que com-preende os dados armazenados no endereço de bloco lógico no dispositivo de memória quando o número de série de sequência de mídia for igual ao número de série de sequência global, e o número de sequência de mídia for menor que o número de sequência global.
[0067] No Exemplo 8, a matéria de qualquer um dos Exemplos 1 a 7 pode incluir opcionalmente lógica para retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia não for igual ao número de série de sequência global.
[0068] Exemplo 9 é um dispositivo eletrônico que compreende um processador e lógica de controle de memória para recuperar um número de sequência global a partir de um dispositivo de memória, receber uma solicitação de leitura para dados armazenados em um endereço de bloco lógico no dispositivo de memória, recuperar um número de sequência de mídia a partir do endereço de bloco lógico no dispositivo de memória, e retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de sequência de mídia for mais antigo que o número de sequência global.
[0069] No Exemplo 10, a matéria do Exemplo 9 pode incluir opcio nalmente lógica para receber, a partir de um dispositivo, uma solicitação para os dados, e gerar, em resposta à solicitação a partir do dispositivo, uma solicitação para os dados a partir do dispositivo de memória remoto.
[0070] No Exemplo 11, a matéria de qualquer um dos Exemplos 9 a 10 pode incluir opcionalmente lógica para retornar uma resposta que compreenda os dados armazenados no endereço de bloco lógico no dispositivo de memória quando a sequência de mídia não é mais antiga que o número de sequência global.
[0071] No Exemplo 12, a matéria de qualquer um dos Exemplos 9 a 11 pode incluir opcionalmente lógica para receber uma solicitação de gravação para gravar dados em um endereço de bloco lógico no dispositivo de memória e armazenar o número de sequência global em metadados associados com o endereço de bloco lógico solicitado como um número de sequência de mídia.
[0072] No Exemplo 13, a matéria de qualquer um dos Exemplos 9 a 12 pode incluir opcionalmente lógica para receber uma solicitação de memória zero, e em resposta ao comando de memória zero, incrementar o número de sequência global, e armazenar o número de sequên- cia global no dispositivo de memória.
[0073] No Exemplo 14, a matéria de qualquer um dos Exemplos 9 a 12 pode incluir opcionalmente uma disposição em que o número de sequência global compreende um número de série de sequência global que identifica uma série à qual o número de sequência global pertence, e o número de sequência de mídia compreende um número de série de sequência de mídia que identifica uma série à qual o número de sequência de mídia pertence.
[0074] No Exemplo 15, a matéria de qualquer um dos Exemplos 9 a 14 pode incluir opcionalmente lógica para retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia for igual ao número de série de sequência global, e o número de sequência de mídia for menor que o número de sequência global.
[0075] No Exemplo 16, a matéria de qualquer um dos Exemplos 9 a 15 pode incluir opcionalmente lógica para retornar a resposta que compreende os dados armazenados no endereço de bloco lógico no dispositivo de memória quando o número de série de sequência de mídia for igual ao número de série de sequência global, e o número de sequência de mídia for menor que o número de sequência global.
[0076] No Exemplo 17, a matéria de qualquer um dos Exemplos 9 a 16 pode incluir opcionalmente lógica para retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia não for igual ao número de série de sequência global.
[0077] O Exemplo 18 é um produto de programa de computador que compreende instruções de lógica armazenadas em um meio legível por computador não transitório que, quando executadas por um processador, configuram o processador para recuperar um número de sequência global a partir de um dispositivo de memória, receber uma solicitação de leitura para dados armazenados em um endereço de bloco lógico no dispositivo de memória, recuperar um número de sequência de mídia a partir do endereço de bloco lógico no dispositivo de memória, e retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de sequência de mídia for mais antigo que o número de sequência global.
[0078] No Exemplo 19, a matéria do Exemplo 18 pode incluir adi cionalmente lógica para retornar uma resposta que compreenda os dados armazenados no endereço de bloco lógico no dispositivo de memória quando a sequência de mídia não é mais antiga que o número de sequência global.
[0079] No Exemplo 20, a matéria de qualquer um dos Exemplos 18 a 19 pode incluir opcionalmente lógica para receber uma solicitação de gravação para gravar dados em um endereço de bloco lógico no dispositivo de memória e armazenar o número de sequência global em metadados associados com o endereço de bloco lógico solicitado como um número de sequência de mídia.
[0080] No Exemplo 21, a matéria de qualquer um dos Exemplos 18 a 20 pode incluir opcionalmente lógica para receber uma solicitação de memória zero, e em resposta ao comando de memória zero, incrementar o número de sequência global, e armazenar o número de sequência global no dispositivo de memória.
[0081] No Exemplo 22, a matéria de qualquer um dos Exemplos 18 a 21 pode incluir opcionalmente uma disposição em que o número de sequência global compreende um número de série de sequência global que identifica uma série à qual o número de sequência global pertence, e o número de sequência de mídia compreende um número de série de sequência de mídia que identifica uma série à qual o número de sequência de mídia pertence.
[0082] No Exemplo 23, a matéria de qualquer um dos Exemplos 18 a 22 pode incluir opcionalmente lógica para retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia for igual ao número de série de sequência global, e o número de sequência de mídia for menor que o número de sequência global.
[0083] No Exemplo 24, a matéria de qualquer um dos Exemplos 18 a 23 pode incluir opcionalmente lógica para retornar a resposta que compreende os dados armazenados no endereço de bloco lógico no dispositivo de memória quando o número de série de sequência de mídia for igual ao número de série de sequência global, e o número de sequência de mídia for menor que o número de sequência global.
[0084] No Exemplo 25, a matéria de qualquer um dos Exemplos 18 a 24 pode incluir opcionalmente lógica para retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia não for igual ao número de série de sequência global.
[0085] Em várias modalidades da invenção, as operações discutidas no presente documento, por exemplo, com referência às Figuras 1 a 9, podem ser implantadas como hardware (por exemplo, conjunto de circuitos), software, firmware, microcódigo ou combinações dos mesmos, que podem ser fornecidas como um produto de programa de computador, por exemplo, que inclui um meio legível por máquina ou legível por computador tangível (por exemplo, não transitório) que tem armazenado no mesmo instruções (ou procedimentos de software) usadas para programar um computador para realizar um processo discutido no presente documento. Além disso, o termo "lógica" pode incluir, a título de exemplo, software, hardware ou combinações de software e hardware. O meio legível por máquina pode incluir um dispositivo de armazenamento, tal como esses discutidos no presente documento.
[0086] Referências no relatório descritivo a "uma (1) concretiza- ção" ou a "uma concretização" significam que um aspecto, estrutura ou característica particular descrita em conexão com a concretização está incluído em pelo menos uma implantação. O aparecimento da frase "em uma modalidade" em vários lugares no relatório descritivo pode ou não se referir totalmente à mesma modalidade
[0087] Além disso, na descrição e reivindicações, os termos "aco plado" e "conectado", junto com seus derivados, podem ser usados. Em algumas modalidades da invenção, "conectado" pode ser usado para indicar que dois ou mais elementos are em contato físico direto ou elétrico um com o outro. "Acoplado" pode significar que dois ou mais elementos estão em contato elétrico ou físico direto. Entretanto, "acoplado" também pode significar que dois ou mais elementos podem não estar em contato direto um com o outro, mas podem ainda cooperar ou interagir entre si.
[0088] Portanto, ainda que modalidades da invenção tenham sido descritas em linguagem específica para recursos estruturais e/ou atos metodológicos, deve ser entendido que a matéria reivindicada pode não ser limitada aos recursos ou atos específicos descritos. Em vez disso, os recursos e as ações específicos são revelados como formas de amostra para implantar a matéria reivindicada.

Claims (17)

1. Controlador de memória (122) caracterizado pelo fato de que compreende lógica, pelo menos parcialmente incluindo lógica de hardware, para: recuperar um número de sequência global a partir de um dispositivo de memória; receber uma solicitação de leitura para dados armazenados em um endereço de bloco lógico no dispositivo de memória; recuperar um número de sequência de mídia a partir do endereço de bloco lógico no dispositivo de memória; e retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de sequência de mídia for mais antigo do que o número de sequência global.
2. Controlador de memória (122), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende lógica, pelo menos parcialmente incluindo lógica de hardware, para: retornar uma resposta compreendendo os dados armazena-dos no endereço de bloco lógico no dispositivo de memória quando a sequência de mídia não é mais antiga do que o número de sequência global.
3. Controlador de memória (122), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende lógica, pelo menos parcialmente incluindo lógica de hardware, para: receber uma solicitação de gravação para gravar dados em um endereço de bloco lógico no dispositivo de memória; e armazenar o número de sequência global em metadados as-sociados ao endereço de bloco lógico solicitado como um número de sequência de mídia.
4. Controlador de memória (122), de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende lógica, pelo menos parcialmente incluindo lógica de hardware, para: receber uma solicitação de memória zero, e em resposta a solicitação de memória zero: incrementar o número de sequência global; e armazenar o número de sequência global no dispositivo de memória.
5. Controlador de memória (122), de acordo com a reivindicação 1, caracterizado pelo fato de que: o número de sequência global compreende um número de série de sequência global que identifica uma série à qual o número de sequência global pertence; e o número de sequência de mídia compreende um número de série de sequência de mídia que identifica uma série à qual o número de sequência de mídia pertence.
6. Controlador de memória (122), de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende lógica, pelo menos parcialmente incluindo lógica de hardware, para: retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando: o número de série de sequência de mídia for igual ao número de série de sequência global; e o número de sequência de mídia for menor do que o número de sequência global.
7. Controlador de memória (122), de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende lógica, pelo menos parcialmente incluindo lógica de hardware, para: retornar uma resposta que compreende os dados armazena-dos no endereço de bloco lógico no dispositivo de memória quando: o número de série de sequência de mídia for igual ao número de série de sequência global; e o número de sequência de mídia for menor do que o número de sequência global.
8. Controlador de memória (122), de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende lógica, pelo menos parcialmente incluindo lógica de hardware, para: retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia não for igual ao número de série de sequência global.
9. Dispositivo eletrônico caracterizado pelo fato de que compreende: um processador; e uma lógica de controle de memória para: recuperar um número de sequência global a partir de um dis-positivo de memória (140); receber uma solicitação de leitura para dados armazenados em um endereço de bloco lógico no dispositivo de memória (140); recuperar um número de sequência de mídia a partir do endereço de bloco lógico no dispositivo de memória (140); e retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de sequência de mídia for mais antigo do que o número de sequência global.
10. Dispositivo eletrônico, de acordo com a reivindicação 9, caracterizado pelo fato de que o controlador de memória (122) ainda compreende lógica para: receber, a partir de um dispositivo, uma solicitação para os dados; e gerar, em resposta à solicitação do dispositivo, uma solicitação para os dados a partir do dispositivo de memória (140).
11. Dispositivo eletrônico, de acordo com a reivindicação 10, caracterizado pelo fato de que o controlador de memória (122) ainda compreende lógica para: retornar uma resposta compreendendo os dados armazenados no endereço de bloco lógico no dispositivo de memória (140) quando a sequência de mídia não é mais antiga do que o número de sequência global.
12. Dispositivo eletrônico, de acordo com a reivindicação 9, caracterizado pelo fato de que o controlador de memória (122) ainda compreende lógica para: receber uma solicitação de gravação para gravar dados em um endereço de bloco lógico no dispositivo de memória (140); e armazenar o número de sequência global em metadados as-sociados ao endereço de bloco lógico solicitado como um número de se-quência de mídia.
13. Dispositivo eletrônico, de acordo com a reivindicação 9, caracterizado pelo fato de que o controlador de memória (122) ainda compreende lógica para: receber uma solicitação de memória zero, e em resposta a solicitação de memória zero: incrementar o número de sequência global; e armazenar o número de sequência global no dispositivo de memória (140).
14. Dispositivo eletrônico, de acordo com a reivindicação 9, caracterizado pelo fato de que: o número de sequência global compreende um número de série de sequência global que identifica uma série à qual o número de sequência global pertence; e o número de sequência de mídia compreende um número de série de sequência de mídia que identifica uma série à qual o número de sequência de mídia pertence.
15. Dispositivo eletrônico, de acordo com a reivindicação 14, caracterizado pelo fato de que o controlador de memória (122) ainda compreende lógica para: retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando: o número de série de sequência de mídia for igual ao número de série de sequência global; e o número de sequência de mídia for menor do que o número de sequência global.
16. Dispositivo eletrônico, de acordo com a reivindicação 14, caracterizado pelo fato de que o controlador de memória (122) ainda compreende lógica para: retornar uma resposta que compreende os dados armazena-dos no endereço de bloco lógico no dispositivo de memória (140) quan-do: o número de série de sequência de mídia for igual ao número de série de sequência global; e o número de sequência de mídia for menor do que o número de sequência global.
17. Dispositivo eletrônico, de acordo com a reivindicação 14, caracterizado pelo fato de que o controlador de memória (122) ainda compreende lógica para: retornar uma resposta nula no lugar dos dados armazenados no endereço de bloco lógico quando o número de série de sequência de mídia não for igual ao número de série de sequência global.
BR112016003873-8A 2013-09-27 2014-09-18 Controlador de memória e dispositivo eletrônico para gerenciamento de memória. BR112016003873B1 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/039,129 2013-09-27
US14/039,129 US9317421B2 (en) 2013-09-27 2013-09-27 Memory management
US14/039129 2013-09-27
PCT/US2014/056218 WO2015047848A1 (en) 2013-09-27 2014-09-18 Memory management

Publications (2)

Publication Number Publication Date
BR112016003873A2 BR112016003873A2 (pt) 2020-10-27
BR112016003873B1 true BR112016003873B1 (pt) 2022-09-13

Family

ID=52741300

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016003873-8A BR112016003873B1 (pt) 2013-09-27 2014-09-18 Controlador de memória e dispositivo eletrônico para gerenciamento de memória.

Country Status (7)

Country Link
US (2) US9317421B2 (pt)
KR (1) KR101743409B1 (pt)
CN (1) CN105474183B (pt)
BR (1) BR112016003873B1 (pt)
GB (1) GB2532667B (pt)
RU (1) RU2643499C2 (pt)
WO (1) WO2015047848A1 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452567B2 (en) * 2013-04-29 2019-10-22 Hewlett Packard Enterprise Development Lp Non-volatile memory to store resettable data
US10222990B2 (en) * 2015-07-24 2019-03-05 Sandisk Technologies Llc Optimistic read operation
CN109164976B (zh) * 2016-12-21 2021-12-31 北京忆恒创源科技股份有限公司 利用写缓存优化存储设备性能
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10606513B2 (en) * 2017-12-06 2020-03-31 Western Digital Technologies, Inc. Volatility management for non-volatile memory device
US11579770B2 (en) 2018-03-15 2023-02-14 Western Digital Technologies, Inc. Volatility management for memory device
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7100080B2 (en) * 2002-05-08 2006-08-29 Xiotech Corporation Write cache recovery after loss of power
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7647474B2 (en) * 2005-09-27 2010-01-12 Intel Corporation Saving system context in the event of power loss
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20090171650A1 (en) 2007-12-27 2009-07-02 Unity Semiconductor Corporation Non-Volatile memories in interactive entertainment systems
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9069806B2 (en) * 2012-03-27 2015-06-30 Google Inc. Virtual block devices

Also Published As

Publication number Publication date
CN105474183B (zh) 2018-10-23
CN105474183A (zh) 2016-04-06
GB2532667B (en) 2020-09-23
RU2643499C2 (ru) 2018-02-01
BR112016003873A2 (pt) 2020-10-27
KR101743409B1 (ko) 2017-06-15
GB201603375D0 (en) 2016-04-13
RU2016107014A (ru) 2017-08-31
KR20160039262A (ko) 2016-04-08
US20170024138A1 (en) 2017-01-26
GB2532667A (en) 2016-05-25
WO2015047848A1 (en) 2015-04-02
US20150095563A1 (en) 2015-04-02
US9317421B2 (en) 2016-04-19

Similar Documents

Publication Publication Date Title
BR112016003873B1 (pt) Controlador de memória e dispositivo eletrônico para gerenciamento de memória.
CN106575346B (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
BR112015019392B1 (pt) Aparelho de memória remota, controlador de memória e dispositivo eletrônico para gerenciamento de latência de memória.
TW201618119A (zh) 於非依電性記憶體中之回復演算法
KR20160035044A (ko) 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법
KR101732841B1 (ko) 내장된 ecc 어드레스 맵핑
TWI642055B (zh) 非依電性記憶體模組
CN108780427B (zh) 用于促使内容模式被存储到存储器装置的存储器单元的技术
KR102518010B1 (ko) 휘발성 메모리에 대한 극성 기반 데이터 트랜스퍼 기능
EP3238215A1 (en) Write operations in spin transfer torque memory

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
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 18/09/2014, OBSERVADAS AS CONDICOES LEGAIS