BR112015029108B1 - Controlador de memória, método e meio de armazenamento em computador para sistemas de armazenamento e memória tornada pseudônimo - Google Patents

Controlador de memória, método e meio de armazenamento em computador para sistemas de armazenamento e memória tornada pseudônimo Download PDF

Info

Publication number
BR112015029108B1
BR112015029108B1 BR112015029108-2A BR112015029108A BR112015029108B1 BR 112015029108 B1 BR112015029108 B1 BR 112015029108B1 BR 112015029108 A BR112015029108 A BR 112015029108A BR 112015029108 B1 BR112015029108 B1 BR 112015029108B1
Authority
BR
Brazil
Prior art keywords
memory
block
data
request
storage system
Prior art date
Application number
BR112015029108-2A
Other languages
English (en)
Other versions
BR112015029108A2 (pt
Inventor
William R. Tipton
Surendra Verma
Landy Wang
Malcolm James Smith
Original Assignee
Microsoft Technology Licensing, Llc
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 Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112015029108A2 publication Critical patent/BR112015029108A2/pt
Publication of BR112015029108B1 publication Critical patent/BR112015029108B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk

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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

SISTEMAS DE ARMAZENAMENTO E MEMÓRIA "ALIASED". A presente invenção refere-se aos sistemas de armazenamento e memória "aliased". Em aspectos, um driver de sistema de arquivo ou outro componente pode enviar uma solicitação para um controlador de memória para criar um "alias" entre dois blocos de memória. Um dos blocos de memória pode ser usado para memória principal enquanto o outro dos blocos de memória pode ser usado para um sistema de armazenamento. Em resposta, o controlador de memória pode criar um "alias" entre os blocos de memória. Até que o "alias" seja desfeito, quando o controlador de memória recebe uma solicitação para dados a partir do bloco em memória principal, o controlador de memória pode responder com dados a partir do bloco de memória usado para o sistema de armazenamento. O controlador de memória também pode implementar outras ações conforme descrito no presente documento.

Description

ANTECEDENTES
[0001] A presente invenção refere-se à memória para um sistema de computador que tem sido tradicionalmente dividida em memória volátil e não volátil. A memória volátil exige energia para manter os dados armazenados na mesma. A memória não volátil pode reter dados mesmo quando não energizada. Anteriormente, os computadores têm usado tanto a memória volátil quanto a não volátil visto que cada uma tem certas vantagens. Por exemplo, a memória volátil é tipicamente muito mais rápida do que a memória não volátil, enquanto que a memória não volátil frequentemente custa muito menos por bit. Os avanços em tecnologia de memória não volátil estão fechando a lacuna em velocidade entre a memória volátil e a não volátil enquanto que a memória não volátil mantém a vantagem de preservar dados durante a perda de energia.
[0002] A matéria reivindicada no presente documento não é limitada às modalidades que solucionam quaisquer desvantagens ou que operam somente em ambientes tais como os descritos acima. Em vez disso, esse antecedente é fornecido somente para ilustrar uma área de tecnologia exemplificativa onde algumas modalidades descritas no presente documento podem ser praticadas.
SUMÁRIO
[0003] Brevemente, os aspectos da matéria descrita no presente documento se referem aos sistemas de armazenamento e memória tornada pseudônimo (“aliased”). Em aspectos, um driver de sistema de arquivo ou outro componente pode enviar uma solicitação para um controlador de memória para criar um pseudônimo (“alias”) entre dois blocos de memória. Um dos blocos de memória pode ser usado para memória principal enquanto o outro dos blocos de memória pode ser usado para um sistema de armazenamento. Em resposta, o controlador de memória pode criar um pseudônimo entre os blocos de memória. Até que o pseudônimo seja desfeito, quando o controlador de memória recebe uma solicitação para dados a partir do bloco em memória principal, o controlador de memória pode responder com dados a partir do bloco de memória usado para o sistema de armazenamento. O controlador de memória também pode implementar outras ações conforme descrito no presente documento.
[0004] Esse sumário é fornecido para identificar brevemente alguns aspectos da matéria que é adicionalmente descrita abaixo, na Descrição Detalhada. Esse sumário não é concebido para identificar a características-chave ou essenciais da matéria reivindicada, nem é concebido para ser usado para limitar o escopo da matéria reivindicada.
[0005] A frase “matéria descrita no presente documento” se refere à matéria descrita na Descrição Detalhada a menos que o contexto claramente indique de outra forma. O termo “aspectos” deve ser lido como “pelo menos um aspecto". Identificar os aspectos da matéria descrita na Descrição Detalhada não é concebido para identificar a características-chave ou essenciais da matéria reivindicada.
[0006] Os aspectos descritos acima e outros aspectos da matéria descrita no presente documento são ilustrados a título de exemplo e não se limitam nas Figuras anexas em que números de referência similares indicam elementos similares e em que:
BREVE DESCRIÇÃO DOS DESENHOS
[0007] A Figura 1 é um diagrama de blocos que representa um ambiente de computação de propósito geral exemplificativo em que os aspectos da matéria descrita no presente documento podem ser incorporados; As Figuras 2 e 5 são diagramas de blocos que representam geralmente a memória não volátil de acordo com os aspectos da matéria descrita no presente documento; A Figura 3 é um diagrama de blocos que representa geralmente vários estados de pseudônimos entre sub-blocos dos blocos de memórias da Figura 2 de acordo com os aspectos da matéria descrita no presente documento; As Figuras 4 e 6 são diagramas de blocos que representam geralmente os componentes exemplificativos de sistemas configurados de acordo com os aspectos da matéria descrita no presente documento; A Figura 7 é um fluxograma que representa geralmente as ações exemplificativas que podem ocorrer em conjunto com a criação de um pseudônimo a partir de uma perspectiva de controlador de memória de acordo com os aspectos da matéria descrita no presente documento; A Figura 8 é um fluxograma que representa geralmente as ações exemplificativas que podem ocorrer em conjunto com a obtenção de dados para um bloco tornado pseudônimo a partir de uma perspectiva de controlador de memória de acordo com os aspectos da matéria descrita no presente documento; e A Figura 9 é um fluxograma que mostra as ações exemplificativas que podem ocorrer em uma memória de acesso de componente através de um controlador de memória de acordo com os aspectos da matéria descrita no presente documento.
DESCRIÇÃO DETALHADA DEFINIÇÕES
[0008] Conforme usado no presente documento, o termo “inclui” e as variações do mesmo devem ser lidas como termos que não são limitados, que significa “inclui, mas não se limita a". O termo “ou” deve ser lido como “e/ou” menos que o contexto claramente dite de outra forma. O termo “com base em” deve ser lido como “com base pelo menos em parte". Os termos “uma modalidade” e “uma modalidade” devem ser lidos como “pelo menos uma modalidade". O termo “outra modalidade” deve ser lido como “pelo menos uma outra modalidade".
[0009] Conforme usado no presente documento, os termos tais como “um”, “uma” e “o(a)” são inclusivos de um ou mais dos itens ou ações indicadas. Em particular, nas concretizações uma referência a um item geralmente significa que pelo menos um tal item está presente e uma referência a uma ação significa que pelo menos uma instância da ação é realizada.
[00010] Algumas vezes no presente documento, os termos “primeiro”, “segundo”, “terceiro” e assim por diante, podem ser utilizados. Sem contexto adicional, o uso desses termos nas concretizações não é concebido para implicar ordenação, mas é bastante usado para propósito de identificação. Por exemplo, as frases “primeira versão” e “segunda versão” não significam necessariamente que a primeira versão é realmente a primeira versão ou foi criada antes da segunda versão ou mesmo que a primeira versão é solicitada ou operada antes da segunda versão. Em vez disso, essas frases são usadas para identificar diferentes versões.
[00011] Os títulos são apenas para conveniência; as informações sobre um determinado tópico podem ser encontradas fora da seção cujo título indica aquele tópico.
[00012] Outras definições, explícitas e implícitas, podem ser incluídas abaixo.
AMBIENTE DE OPERAÇÃO EXEMPLIFICATIVO
[00013] A Figura 1 ilustra um exemplo de um ambiente de sistema de computação adequado 100 em que os aspectos da matéria descrita no presente documento podem ser implementados. O ambiente de sistema de computação 100 é apenas um exemplo de um ambiente de computação adequado e não é concebido para sugerir qualquer limitação quanto ao escopo de uso ou funcionalidade de aspectos da matéria descrita no presente documento. Nem o ambiente de computação 100 deve ser interpretado de modo a ter qualquer dependência ou exigência em relação a uma ou qualquer combinação de componentes ilustrados no ambiente de operação exemplificativo 100.
[00014] Os aspectos da matéria descrita no presente documento são operacionais com numerosas outras configurações ou ambientes de sistema de computação de propósito geral ou propósito especial. Os exemplos de sistemas de computação bem conhecidos, ambientes ou configurações que podem ser adequados para o uso com os aspectos da matéria descrita no presente documento compreendem computadores pessoais, computadores servidores - ou em metal bruto ou como máquinas virtuais, dispositivos laptop ou portáteis, sistemas multiprocessadores, sistemas com base em microcontrolador, decodificadores de sinais, eletrônicos de consumo programáveis e não programáveis, PCs de rede, minicomputadores, computadores mainframe, assistentes digitais pessoal (PDAs), dispositivos de jogos, impressoras, aparelhos que incluem decodificadores, centro de mídia ou outros aparelhos, dispositivos de computação fixados ou embutidos em automóvel, outros dispositivos móveis, dispositivos de telefone que incluem telefones celulares, telefones sem fio e telefones com fio, ambientes de computação distribuídos que incluem qualquer um dos sistemas ou dispositivos acima e similares. Embora várias modalidades possam ser limitadas a um ou mais dos dispositivos acima, o termo computador é concebido para cobrir os dispositivos acima a menos que indicado de outra forma.
[00015] Os aspectos da matéria descrita no presente documento podem ser descritos no contexto geral de instruções executáveis por computador, tal como módulos de programa, que são executados por um computador. Geralmente, os módulos de programa incluem rotinas, programas, objetivos, componentes, estruturas de dados, e assim por diante, que realizam tarefas particulares ou implementam tipos de dados abstratos particulares. Os aspectos da matéria descrita no presente documento também podem ser praticados em ambientes de computação distribuídos onde as tarefas são realizadas por dispositivos de processamento remoto que são ligados através de uma rede de comunicações. Em um ambiente de computação distribuído, os módulos de programa podem estar localizados tanto no meio de armazenamento de computador local quanto no remoto que incluem dispositivos de armazenamento de memória.
[00016] Alternativamente, ou adicionalmente, a funcionalidade descrita no presente documento pode ser realizada, pelo menos em parte, por um ou mais componentes lógicos de hardware. Por exemplo, e não de limitação, os tipos ilustrativos de componentes lógicos de hardware que podem ser usados incluem Matrizes de Porta programáveis em Campo (FPGAs), Circuitos Integrados de Programa específico (ASICs), Produtos Padrão de Programa específico (ASSPs), Sistemas em um chip de Sistema (SOCs), Dispositivos de Lógica Programável Complexos (CPLDs), e similares.
[00017] Em relação à Figura 1, um sistema exemplificativo para implementação de aspectos da matéria descrita no presente documento inclui um dispositivo de computação de propósito geral na forma de um computador 110. Um computador pode incluir qualquer dispositivo eletrônico que tenha a capacidade de executar uma instrução. Os componentes do computador 110 podem incluir uma unidade de processamento 120, uma memória de sistema 130 e um ou mais barramentos de sistema (representeado por barramento de sistema 121) que acopla vários componentes de sistema incluindo a memória de sistema para a unidade de processamento 120. O barramento de sistema 121 pode incluir qualquer de diversos tipos de estruturas de barramento que incluem um barramento de memória ou um controlador de memória, um barramento periférico e um barramento local que usa qualquer uma de uma variedade de arquiteturas de barramento. A título de exemplo, e não de limitação, tais arquiteturas incluem barramento de Arquitetura Padrão de Indústria (ISA), barramento de Arquitetura de Micro Canal (MCA), barramento de ISA Avançada (EISA), barramento local de Associação Padrão de Eletrônica de Vídeo (VESA), barramento de Interconexão de Componente Periférico (PCI) também conhecido como barramento de Mezanino, barramento de Interconexão de Componente Periférico Estendida (PCI-X), Porta de Gráficos Avançada (AGP) e PCI expressa (PCIe).
[00018] A unidade de processamento 120 pode ser conectada a um dispositivo de segurança de hardware 122. O dispositivo de segurança 122 pode armazenar e ter a capacidade de gerar chaves criptográficas que podem ser usadas para assegurar os vários aspectos do computador 110. Em uma modalidade, o dispositivo de segurança 122 pode compreender um chip de Módulo de Plataforma de Confiança (TPM), um dispositivo de segurança de TPM ou similares.
[00019] O computador 110 tipicamente inclui uma variedade de meios legíveis por computador. Os meios legíveis por computador podem ser quaisquer meios disponíveis que possam ser acessados pelo computador 110 e isso inclui tanto os meios volátil e não volátil quanto os meios removível e o não removível. A título de exemplo, e não de limitação, os meios legíveis por computador podem compreender um meio de armazenamento de computador e um meio de comunicação.
[00020] O meio de armazenamento de computador inclui tanto os meios volátil e não volátil quanto os meios removível e não removível implementados em qualquer método ou tecnologia para o armazenamento de informações tal como instruções legíveis por computador, estrutura de dados, módulos de programa ou outros dados. O meio de armazenamento de computador inclui RAM, ROM, EEPROM, armazenamento de estado sólido, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVDs), Disco Blu-ray (BD) ou outro armazenamento em disco óptico, cassetes magnéticos, fita magnética, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos, ou qualquer outro meio que pode ser usado para armazenar as informações desejadas e que possa ser acessado pelo computador 110. O meio de armazenamento de computador não inclui meio de comunicação.
[00021] O meio de comunicação incorpora tipicamente as instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulados tal como uma onda portadora ou outro mecanismo de transporte e inclui qualquer meio de entrega de informações. O termo “sinal de dados modulados” significa um sinal que tem uma ou mais características definidas ou modificadas de modo a codificar as informações no sinal. A título de exemplo, e não de limitação, o meio de comunicação inclui meios com fio tais como uma rede com fio ou conexão com fio direta, e meio sem fio tal como acústica, RF, infravermelha e outros meios sem fio. As combinações de qualquer um dos mencionados acima também devem ser incluídas dentro do escopo de meios legíveis por computador.
[00022] A memória de sistema 130 pode incluir o meio de armazenamento de computador na forma de memória volátil e/ou não volátil tal como memória de somente leitura (ROM) 131 e memória de acesso aleatório (RAM) 132. A memória não volátil pode ser substituída por algumas ou todas da ROM 131 e/ou da RAM 132. Por exemplo, a memória memristor, a memória de mudança de fase (PCM) ou algum outro tipo de memória não volátil pode ser usada em vez de, ou em adição a, a ROM 131 e/ou a RAM 132.
[00023] Um sistema básico de entrada/saída 133 (BIOS), que contém a rotina básica que auxilia a transferência de informações entre elementos dentro do computador 110, tal como durante a inicialização, é armazenado tipicamente em ROM 131. A RAM 132 contém, tipicamente, dados e/ou módulos de programa que estão imediatamente acessíveis a e/ou presentemente sendo operados por unidade de processamento 120. A título de exemplo, e não de limitação, a Figura 1 ilustra o sistema de operação 134, programas de aplicação 135, outros módulos de programa 136 e dados de programa 137.
[00024] O computador 110 também pode incluir outros meios de armazenamento de computador removível/não removível, volátil/não volátil. Somente a título de exemplo, a Figura 1 ilustra uma unidade de disco rígido 141 que lê a partir de ou registra para o meio magnético não volátil e não removível, uma unidade de disco magnético 151 que lê a partir de ou registra para um disco magnético não volátil e removível 152 e uma unidade de disco óptico 155 que lê a partir de ou registra para um disco óptico não volátil e removível 156 tal como um CD ROM, DVD, BD ou outro meio óptico.
[00025] Em uma implementação, a memória memristor, a memória de mudança de fase ou algum outro tipo de memória não volátil pode ser usada em vez de, ou em adição ao disco rígido 141.
[00026] Outros meios de armazenamento de computador removível/não removível, volátil/não volátil que podem ser usados no ambiente de operação exemplificativo incluem fitas cassetes magnéticas, cartão de memória flash e outros dispositivos de armazenamento de estado sólido, discos versáteis digitais, outros discos ópticos, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido e similares. A unidade de disco rígido 141 pode ser conectada ao barramento de sistema 121 através da interface 140, e a unidade de disco magnético 151 e a unidade de disco óptico 155 podem ser conectadas ao barramento de sistema 121 através de uma interface para memória não volátil removível tal como a interface 150.
[00027] As unidades e o meio de armazenamento de computador das mesmas, discutidos acima e ilustrados na Figura 1, fornecem armazenamento de instruções legíveis por computador, estruturas de dados, módulos de programa e outros dados para o computador 110. Na Figura 1, por exemplo, a unidade de disco rígido 141 é ilustrada como o sistema de operação de armazenamento 144, os programas de aplicação 145, outros módulos de programa 146 e dados de programa 147. Observa-se que esses componentes podem ser os mesmos que ou diferentes de sistema de operação 134, programas de aplicação 135, outros módulos de programa 136 e dados de programa 137. O sistema de operação 144, os programas de aplicação 145, outros módulos de programa 146 e dados de programa 147 recebem números diferentes no presente documento para ilustrar que os mesmos podem ser cópias diferentes.
[00028] Um usuário pode inserir comandos e informações no computador 110 através de dispositivos de entrada tais como um teclado 162 e dispositivo apontador 161, comumente referido como um mouse, trackball ou teclado sensível ao toque. Outros dispositivos de entrada (não mostrados) podem incluir um microfone (por exemplo, para entrada de voz ou outro áudio), joystick, console de jogos, antena parabólica, scanner, uma tela sensível ao toque, um tablet de escrita, uma câmera (por exemplo, para gestos de entrada ou outra entrada visual) ou similares. Esses e outros dispositivos de entrada são frequentemente conectados à unidade de processamento 120 através de interface de entrada de usuário 160 que é acoplada ao barramento de sistema, mas podem ser conectados por outra interface e estruturas de barramento, tal como uma porta paralela, porta de jogo ou um barramento serial universal (USB).
[00029] Através do uso de um ou mais dos dispositivos de entrada identificados acima uma Interface de Usuário Natural (NUI) pode ser estabelecida. Uma NUI pode depender de reconhecimento de fala, reconhecimento de toque ou caneta, reconhecimento de gesto ambos em tela e adjacentes à tela, gestos de ar, rastreamento de cabeça e olho, voz e fala, visão, toque, gestos, inteligência de máquina e similares. Algumas tecnologias de NUI exemplificativas que podem ser empregadas para interagir com um usuário incluem telas sensíveis ao toque, reconhecimento de voz e fala, compreensão de intenção e objetivo, detecção de gesto de movimento com o uso de câmeras de profundidade (tal como sistemas de câmera estereoscópica, sistemas de câmera infravermelha, sistemas de câmera RGB e combinações dos mesmos), detecção de gesto de movimento com o uso de acelerômetros/giroscópios, reconhecimento facial, telas 3D, rastreamento de cabeça, olho e visão, sistemas de realidade virtual e realidade aumentada imersiva, assim como tecnologias para sensoriamento de atividades cerebrais com o uso de eletrodos de sensoriamento de campo elétrico (EEG e métodos relacionados).
[00030] Um monitor 191 ou outro tipo de dispositivo de tela também é conectado ao barramento de sistema 121 através de uma interface, tal como uma interface de vídeo 190. Em adição ao monitor, os computadores também podem incluir outros dispositivos de saída periférica tal como alto-falantes 197 e impressora 196, que podem ser conectados através de uma interface periférica de saída 195.
[00031] O computador 110 pode operar em um ambiente em rede com o uso de conexões lógicas para um ou mais computadores remotos, tal como um computador remoto 180. O computador remoto 180 pode ser um computador pessoal, um servidor, uma rota, um PC de rede, um dispositivo de mesmo nível ou outro nó de rede comum, e tipicamente inclui muitos ou todos os elementos descritos acima em relação ao computador 110, embora somente um dispositivo de armazenamento de memória 181 tenha sido ilustrado na Figura 1. As conexões lógicas retratadas na Figura 1 incluem uma rede de área local (LAN) 171 e uma rede de área ampla (WAN) 173, mas também pode incluir redes de telefone, redes de campo próximo e outras redes. Tais ambientes de rede são comuns em escritórios, redes de computador amplamente em empresa, intranets e a Internet.
[00032] Quando usado em um ambiente de rede LAN, o computador 110 é conectado à LAN 171 através de uma interface de rede ou adaptador 170. Quando usado em um ambiente de rede WAN, o computador 110 pode incluir um modem 172 ou outros meios para estabelecer comunicações sobre a WAN 173, tal como a Internet. O modem 172, que pode ser interno ou externo, pode ser conectado ao barramento de sistema 121 através da interface de entrada de usuário 160 ou outro mecanismo apropriado. Em um ambiente em rede, os módulos de programa retratados em relação ao computador 110, ou porções dos mesmos, podem ser armazenadas no dispositivo de armazenamento de memória remoto. A título de exemplo, e não de limitação, a Figura 1 ilustra programas de aplicação remota 185 como residentes em dispositivo de memória 181. Será apreciado que as conexões de rede mostradas são exemplificativas e outros meios de estabelecer ligação de comunicações entre os computadores podem ser usados.
MEMÓRIA NÃO VOLÁTIL
[00033] Conforme mencionado anteriormente, avanços têm sido feito em memória não volátil. De acordo com os aspectos da matéria descrita no presente documento, um sistema de operação pode ser estruturado para tirar vantagem desses avanços. As Figuras 2 e 5 são diagramas de blocos que representam geralmente a memória não volátil de acordo com os aspectos da matéria descrita no presente documento. A memória não volátil 205 pode incluir uma matriz de elementos de armazenamento de memória que podem ser acessados por endereços. Em uma implementação, um dispositivo de memória que inclui a memória não volátil 205 pode ser tornada pseudônimo com o uso de memórias primitivas. As memórias primitivas usadas para acessar a memória não volátil 205 podem ser similares ou idênticas àquelas usadas para acessar a memória volátil tal como a RAM.
[00034] A memória rápida não volátil pode ser presa a um barramento de memória. Por exemplo, atualmente, alguns tipos de memória não volátil executam de 2 a 4 vezes mais lentas do que a RAM e um par de ordens de magnitude mais rápida do que a memória flash ou armazenamento de disco rígido. Esses tipos de memória não volátil podem ter baixa latência e altas taxas de transferência de dados que podem se beneficiar mais por estarem presas a um barramento de memória do que presas a um barramento de armazenamento.
[00035] Conforme ilustrado na Figura 2, a memória não volátil 205 foi dividida em uma região de sistema de arquivo 210 e uma região de memória 211. Os tamanhos ilustrados dessas regiões são apenas exemplificativos. Em outras implementações, por exemplo, esses tamanhos podem ser amplamente variados a partir dos tamanhos mostrados na Figura 2.
[00036] Além disso, a memória não volátil 205 pode ser implementada com o uso de um ou mais subsistemas. Por exemplo, onde múltiplos tipos de memória não volátil são hospedados em um sistema ou onde múltiplas unidades de memória dos mesmos ou diferentes tipos de memória não volátil são hospedadas no sistema, o sistema pode incluir múltiplos subsistemas para acessar a memória não volátil.
[00037] Embora o termo “sistema de arquivo” seja algumas vezes usado no presente documento, deve ser entendido que esse termo é apenas exemplificativo e que os ensinamentos no presente documento também podem ser aplicados a outros tipos de sistemas de armazenamento. Um sistema de armazenamento pode incluir um ou mais componentes de hardware e/ou software que organizam dados que são mantidos.
[00038] O tamanho da região de sistema de arquivo 210 e o tamanho da região de memória 211 podem ser definidos ou redefinidos, por exemplo, durante uma operação de configuração. Uma operação de configuração pode ocorrer antes ou depois da instalação de um sistema de operação para dimensionar ou redimensionar as regiões de memória conforme desejado. Um sistema de operação pode ser configurado para procurar dados de configuração em uma localização predefinida da memória não volátil 205. Os dados de configuração podem indicar como a memória não volátil deve ser dividida entre dados de sistema de arquivo e memória disponível para outros usos.
[00039] A região de memória 211 é uma porção da memória não volátil 205 que foi reservada para fornecer memória principal adicional para um computador. Essa memória pode ser usada em vez de, ou em adição a qualquer RAM ou outra memória volátil do computador.
[00040] A região de sistema de arquivo 210 é uma porção da memória não volátil 205 que foi reservada para dados de sistema de arquivo. Embora fisicamente, os elementos de memória nessa região podem ser acessados da mesma maneira que os elementos de memória na região de memória 211 são acessados, componentes de sistema de arquivo que agem em conjunto com o hardware de memória podem impor certas regras em relação a esses acessos conforme descrito em mais detalhes abaixo.
[00041] Em sistemas de arquivo tradicionais, um bloco de dados de um disco rígido pode ser copiado na memória principal. Uma vez na memória principal, os dados podem ser modificados. Em algum ponto, o bloco de dados como modificado é registrado a partir da memória principal para o disco rígido.
[00042] De acordo com os aspectos da matéria descrita no presente documento, um sistema de arquivo pode ser estruturado para evitar algumas das cópias que ocorrem em sistemas de arquivo tradicionais. Por exemplo, em referência à Figura 2, uma aplicação pode buscar obter dados que estão no bloco 215. Em vez de copiar os dados do bloco 215 para memória no bloco 216, o sistema de arquivo pode solicitar que o hardware de memória crie um pseudônimo entre o bloco 216 e o bloco 215. Quando um pseudônimo é criado, uma operação que tenta ler o bloco 216 obtém os dados a partir do bloco 215 exceto quando certas condições são atendidas.
[00043] Após o pseudônimo ser criado, um registro para o bloco 216 faz com que os dados sejam registrados ao bloco 216. Em uma implementação, o hardware de memória pode aguardar para copiar os dados registrados ao bloco 216 para o bloco 215 até um momento depois do registro dos dados ao bloco 216. Em outra implementação, o hardware de memória pode aguardar por um comando explícito do sistema de arquivo antes de copiar os dados registrados ao bloco 216 para o bloco 215. Isso permite que o sistema de arquivo seja mais envolvido quando o registro ocorre na memória não volátil 205.
[00044] Uma vez que o registro ocorra no bloco 216, um ou mais pseudônimos a partir do bloco 216 para o bloco 215 podem ser quebrados. Por exemplo, o bloco 215 pode ser implementado por uma pluralidade de sub-blocos. Em uma implementação, um sub-bloco pode ser de um tamanho pequeno e fixo de memória que pode ser acessado em uma arquitetura de memória que usa a memória não volátil 205. Em uma implementação, um bloco pode corresponder a uma página de memória enquanto um sub-bloco pode corresponder a uma linha de cache.
[00045] Em uma implementação, quando um pseudônimo é estabelecido entre o bloco 216 e o bloco 215, fisicamente um pseudônimo pode ser estabelecido entre cada sub-bloco do bloco 216 e ao sub-bloco correspondente ao mesmo do bloco 215. Isso resulta em uma pluralidade de pseudônimos entre os elementos de memória dos blocos 216 e 215.
[00046] Em uma implementação, quando uma porção do bloco 216 é registrada, os sub-blocos que incluem a porção podem ser determinados, e os pseudônimos associados àqueles sub-blocos podem ser desfeitos. Esse desfazimento pode ocorrer a qualquer momento anterior a uma leitura subsequente do bloco 216. Quando uma leitura subsequente para o bloco 216 é recebida, os dados para leitura são recuperados a partir do bloco 215 onde os pseudônimos não foram desfeitos e a partir do bloco 216 onde os pseudônimos foram desfeitos.
[00047] Em outra implementação, quando uma porção do bloco 215 é registrada, os sub-blocos que incluem a porção podem ser determinados, e os pseudônimos associados àqueles sub-blocos podem ser desfeitos. Esse desfazimento pode ocorrer a qualquer momento anterior a uma leitura subsequente do bloco 216. Quando uma leitura subsequente para o bloco 216 é recebida, os dados para leitura são recuperados a partir do bloco 215 onde os pseudônimos não foram desfeitos e através do bloco 216 onde os pseudônimos foram desfeitos.
[00048] Em conjunto com o desfazimento de um pseudônimo entre um sub-bloco de bloco 216 e um sub-bloco de bloco 215 e anterior à sobrescrição de dados no sub-bloco de bloco 215, os dados no sub- bloco de bloco 215 podem ser preservados de modo que os mesmos possam ser obtidos durante o acesso ao sub-bloco correspondente de bloco 216 (ou qualquer outro sub-bloco que é tornado pseudônimo ao sub-bloco de bloco 215). Preservar os dados pode incluir, por exemplo, copiar os dados para uma localização alocada ao bloco 216, copiar os dados para uma nova localização e atualizar o pseudônimo de bloco 216 para apontar para a nova localização, manter os dados na localização atual dos mesmos e atualizar estruturas de mapeamento associadas ao bloco 215 de modo que uma leitura do bloco 215 obtém os dados alterados, ou similar. Esse comportamento mantém os dados obteníveis através de bloco 216 inalterados mesmo quando os dados de bloco 215 se alteram.
[00049] Em uma implementação, quando uma porção do bloco 215 é registrada ou quando uma porção do bloco 216 é registrada, os pseudônimos são quebrados conforme mencionado acima. Em outra implementação, os pseudônimos são quebrados em resposta ao registro ao bloco 216, mas não em resposta ao registro ao bloco 215. Em outra implementação, os pseudônimos são quebrados em resposta ao registro ao bloco 215, mas não em resposta a uma tentativa de registro ao bloco 216. A implementação seguida em um sistema particular pode ser configurável através de hardware ou software, ser de ligação direta a cabo ou codificada permanentemente, ou similar.
[00050] A Figura 3 é um diagrama de blocos que representa geralmente vários estados de pseudônimos entre sub-blocos dos blocos de memórias da Figura 2 de acordo com os aspectos da matéria descrita no presente documento. Quando um pseudônimo é estabelecido entre o bloco 216 e o bloco 215, isso pode fazer com que uma pluralidade de pseudônimos seja estabelecida entre os sub-blocos de bloco 216 e sub- blocos de bloco 215. Quando uma solicitação de leitura para dados tornados pseudônimo ao bloco 216 é recebida nesse estado, a leitura é satisfeita a partir dos dados no bloco 215.
[00051] O bloco 316 representa o bloco 216 após os dados terem sido registrados ao bloco 216. Em particular, os dados foram registrados aos sub-blocos 301 a 303. Em conjunto com o registro de dados para criar o bloco 316, os pseudônimos para os sub-blocos 301 a 303 foram desfeitos. Uma leitura tornada pseudônimo ao bloco 316 irá recuperar os dados a partir do bloco 215 onde os pseudônimos não foram desfeitos e irá recuperar os dados a partir do bloco 316 onde os pseudônimos foram desfeitos (por exemplo, para os sub-blocos 301 a 303). Um controlador de memória (por exemplo, o controlador de memória 410 da Figura 4) pode incluir um conjunto de circuito para recuperação dos dados a partir das localizações apropriadas levando em consideração quaisquer pseudônimos que existam.
[00052] As Figuras 4 e 6 são diagramas de blocos que representam geralmente os componentes exemplificativos de sistemas configurados de acordo com os aspectos da matéria descrita no presente documento; os componentes ilustrados nas Figuras 4 e 6 são exemplificativos e não são destinados a ser totalmente inclusivos de componentes que podem ser necessários ou inclusos. Além disso, um número de componentes pode diferir em outras modalidades sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento. Em algumas modalidades, os componentes descritos em conjunto com as Figuras 4 e 6 podem ser incluídos em outros componentes (mostrados ou não mostrados) ou colocados em subcomponentes sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento. Em algumas modalidades, os componentes e/ou funções descritos em conjuntos com as Figuras 4 e 6 podem ser distribuídos através de múltiplos dispositivos.
[00053] O cache 415 pode incluir os elementos de memória que armazenam os dados em cache a partir da memória não volátil 205. Em uma implementação, o cache pode compreender RAM dinâmica (DRAM), RAM estática (SRAM) ou algum outro tipo de memória volátil ou não volátil. Em algumas implementações, o cache 415 pode ser omitido. Em algumas implementações, pode haver mais do que um nível de cache.
[00054] O controlador de memória 410 pode incluir um circuito para acessar dados na memória não volátil 205. O acesso conforme usado no presente documento pode incluir ler dados, registrar dados, deletar dados, atualizar dados, ou uma combinação que inclua dois ou mais do mencionado acima e similares. Em uma implementação, o controlador de memória 410 pode acessar a memória não volátil 205 com o uso do cache 415 somente. Em outras palavras, nessa implementação, sempre que o controlador de memória 410 lê ou registra, o mesmo pode enviar a leitura ou o registro para o cache 415. Para uma leitura, o cache 415 pode, então, fornecer os dados a partir do cache 415 se o cache tem os dados ou obtém os dados a partir da memória não volátil 205 e, então, fornecer os dados se o cache não ter os dados. Para um registro, o cache 415 pode armazenar os dados registrados no cache 415 e pode liberar o cache para a memória não volátil 205 de acordo com políticas de armazenamento em cache.
[00055] Em outra implementação, o controlador de memória 410 também pode agir como um controlador para o cache 415 e pode obter os dados a partir do cache 415 ou da memória não volátil 205 conforme apropriado. Nessa implementação, o controlador de memória 410 também pode fazer com que o cache 415 registre os dados à memória não volátil 205 de acordo com as políticas de armazenamento em cache.
[00056] O controlador de memória 410 pode incluir uma interface pela qual o driver de sistema de arquivo 405 pode enviar solicitações e receber dados. Em particular, essa interface pode permitir as comunicações que incluem o seguinte: 1. Uma solicitação para criar um pseudônimo para a memória não volátil. Em uma implementação, o controlador de memória 410 pode ser estruturado para receber uma solicitação para endereçar um bloco de memória da memória não volátil 205 para outro bloco de memória da memória não volátil 205. Após receber a solicitação, em uma implementação, o controlador de memória 410 pode criar múltiplos pseudônimos se o bloco tornado pseudônimo abrange dois ou mais sub- blocos.
[00057] Em outra implementação, o controlador de memória 410 pode criar somente um único pseudônimo para cada solicitação de pseudônimo. Nessa implementação, o driver de sistema de arquivo 405 pode ser esperado para determinar quantos pseudônimos são necessários para um dado bloco de memória e para se comunicar com o controlador de memória 410 para estabelecer cada um dos pseudônimos. 2. Uma solicitação para leitura de um bloco de memória. Em uma implementação, o controlador de memória 410 pode ser estruturado para receber uma solicitação para leitura de um bloco de memória da memória não volátil 205. Se o bloco inclui a memória que é endereçada, o controlador de memória 410 pode garantir que os dados tornados pseudônimo são obtidos a partir do bloco tornado pseudônimo (ou uma representação armazenada em cache do mesmo). Se o bloco inclui a memória que não é tornada pseudônimo, o controlador de memória 410 pode garantir que os dados tornados pseudônimo são obtidos a partir de um bloco não tornado pseudônimo (ou uma representação armazenada em cache do mesmo). Se um bloco solicitado inclui tanto dados tornados pseudônimo quanto dados não tornados pseudônimo, o controlador de memória 410 pode combinar os dados tornados pseudônimo e não tornados pseudônimo em conjunto com a resposta à solicitação. 3. Uma solicitação para registrar a um bloco de memória. Em uma implementação, o controlador de memória 410 pode ser estruturado para receber uma solicitação para registrar a um bloco de memória da memória não volátil 205. Se o bloco de memória é tornado pseudônimo, o controlador de memória 410 pode garantir que os pseudônimos são quebrados conforme apropriado pelo menos ante de fornecer os dados em resposta a uma leitura do bloco tornado pseudônimo. O controlador de memória 410 pode fazer com que os dados registrados sejam registrados ao cache. O controlador de memória 410 pode liberar os dados a partir do cache periodicamente, de acordo com políticas de armazenamento em cache ou em resposta a um comando explícito a partir do driver de sistema de arquivo 405. 4. Uma solicitação para copiar um bloco da memória não volátil para outra localização da memória não volátil. Em uma implementação, o controlador de memória 410 pode ser estruturado para receber comandos de cópia a partir do driver de sistema de arquivo 405. Em resposta a um comando de cópia, o controlador de memória 410 pode logicamente ou fisicamente copiar o bloco para outra localização da memória não volátil 205. Copiar fisicamente o bloco para a outra localização pode envolver a ler os dados do bloco e copiar os dados lidos para outra localização. Copiar logicamente o bloco pode incluir, por exemplo, deixar os dados onde estão, mas alterar os elementos de mapeamento de modo que os dados sejam retornados onde solicitados a partir da nova localização.
[00058] Se porções da memória para copiar ainda estão no cache 415 e não foram liberadas para a memória não volátil 205, isso pode ser tratado de várias maneiras. Por exemplo, em uma implementação, o controlador de memória 410 pode garantir que os dados no cache 415 são copiados para o bloco de destino com ou sem a liberação dos dados para o bloco de fonte.
[00059] Em outra implementação, o driver de sistema de arquivo 405 pode solicitar que qualquer cache sujo envolvido na cópia seja liberado antes de emitir o comando de cópia. 5. Uma solicitação para zerar alguma ou toda a memória não volátil 205 ao reiniciar. Um sistema de operação pode usar uma porção da memória não volátil 205 como a memória principal em adição ou em vez de usar a RAM. Por exemplo, o sistema de operação pode carregar código e estruturas de dados na região de memória 211 da Figura 2. Como a memória não volátil 205 não perde os dados mediante a perda de energia, esse código e os dados podem permanecer mesmo após a reinicialização de um computador que hospeda a memória não volátil 205. Ter dados na região de memória 211 durante a reinicialização pode representar vários problemas.
[00060] Em uma implementação, o controlador de memória 410 pode ser estruturado para receber uma solicitação de zeragem na reinicialização. Em resposta, o controlador de memória 410 pode armazenar os dados que indicam essa solicitação e, mediante a reinicialização, zerar logicamente ou fisicamente uma porção solicitada da memória não volátil 205 (por exemplo, a região de memória 211). Zerar logicamente a porção solicitada pode envolver, por exemplo, sinalizar que a porção solicitada é zerada e, então, aguardar para zerar fisicamente um bloco até que uma solicitação de leitura ou registro para o bloco seja recebida. Enquanto que após o reinício, quando o driver de sistema de arquivo 405 solicita um bloco marcado para zerar, o driver de sistema de arquivo 405 recebe zeros para um bloco zerado, qualquer implementação que forneça essa funcionalidade de zeragem pode ser usada sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento.
[00061] Em uma implementação, o controlador de memória 410 pode usar paralelismo de hardware para zerar as porções de um bloco em paralelo. Esse paralelismo de hardware pode incluir um ou mais elementos de circuito que tem a capacidade de zerar múltiplos elementos de memória ao mesmo tempo. 6. Uma solicitação para reendereçar um bloco que está atualmente tornado pseudônimo. Um sistema de operação ou outro processo que usa a memória não volátil 205 pode, em momentos, querer mover um bloco na memória não volátil 205 para outra localização na memória não volátil 205. Isso pode representar um problema se a memória que é movida é envolvida em um pseudônimo. Por exemplo, em referência à Figura 5, um processo pode solicitar que os dados no bloco de memória 215 sejam movidos para o bloco 505. O bloco de memória 216 pode ser tornado pseudônimo para apontar para o bloco de memória 215.
[00062] Se o pseudônimo não é alterado para o novo bloco 505, quando os dados no bloco de memória 215 são alterados, uma leitura de dados no bloco de memória 216 pode re-tornar com dados alterados. Isso pode provocar problemas, por exemplo, o programa espera que o bloco 216 ainda estejam tornados pseudônimo aos dados que não foram alterados (por exemplo, os dados em bloco 505).
[00063] Para endereçar essa e outras emissões, o controlador de memória 410 pode ser estruturado para receber uma solicitação para reendereçar um bloco que está atualmente tornado pseudônimo. Por exemplo, em uma implementação, o controlador de memória 410 pode ser estruturado para receber uma solicitação para reendereçar a memória dentro de uma faixa específica para uma memória dentro de outra faixa específica. Nessa implementação, o controlador de memória 410 pode determinar todos os pseudônimos que apontam para a primeira faixa especificada e reendereçar esses pseudônimos para apontar para a segunda faixa especificada.
[00064] Em outra implementação, o controlador de memória 410 pode ser estruturado para receber uma solicitação para reendereçar um pseudônimo específico para uma nova localização. Por exemplo, em referência às Figuras 3 e 4, o controlador de memória 410 pode ser estruturado para receber uma solicitação para reendereçar um dos pseudônimos para os sub-blocos de bloco 215. Nessa implementação, quando um sistema de arquivo busca reendereçar um conjunto de pseudônimos para uma porção de memória, o driver de sistema de arquivo 405 pode incluir lógica para determinar todos os pseudônimos para a porção de memória em conjunto com comandos de envio para reendereçar cada pseudônimo ao controlador de memória 410.
[00065] Novamente em referência à Figura 5, quando uma solicitação de re-pseudônimo é recebida e processada, o pseudônimo que anteriormente apontava a partir do bloco 216 para o bloco 215 pode ser substituído com um pseudônimo que aponta a partir do bloco 216 para o bloco 505. Um controlador de memória pode ser estruturado para realizar uma operação de re-pseudônimo de uma maneira “segura”. Seguro nesse contexto significa que logicamente a operação de re- pseudônimo é realizada antes da realização de outras operações que foram recebidas subsequentemente à solicitação de re-pseudônimo. Em uma implementação, o controlador de memória pode realizar fisicamente outras operações desde que o driver de sistema de arquivo 405 esteja incapaz, com o uso de qualquer conjunto de operações, para detectar que a operação de re-pseudônimo foi realizada fora de ordem em relação a quando a mesma foi recebida.
[00066] Um controlador de memória pode implementar o re- pseudônimo de outras maneiras sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento. Por exemplo, em uma implementação, um controlador de memória pode ser estruturado para receber um comando de moção de bloco e pode automaticamente re-tornar pseudônimo pseudônimos que apontam para o bloco quando o bloco é movido.
[00067] Em outra implementação, um controlador de memória pode ser estruturado para receber um comando de moção de bloco e pode modificar os elementos de mapeamento internos para logicamente mover o bloco sem copiar fisicamente o bloco para outra localização. Em algumas implementações, mover o bloco dessa maneira pode negar a necessidade de realizar o re-pseudônimo. Por exemplo, se um pseudônimo aponta para o bloco independentemente de informações de mapeamento, então, quando as informações de mapeamento são alteradas para mover o bloco, o pseudônimo ainda aponta para o bloco.
[00068] Em outra implementação, um controlador de memória pode ser estruturado para receber um comando de re-pseudônimo que não é automaticamente desencadeado por um comando de moção de bloco. Nessa implementação, o driver de sistema de arquivo 405 pode solicitar explicitamente o re-pseudônimo em adição à solicitação para mover um bloco conforme apropriado.
[00069] Os exemplos acima não são concebidos para ser totalmente inclusivos ou exaustivos de maneiras em que um controlador de memória pode ser estruturado para implementar um comando de re- pseudônimo. Com base nos ensinamentos no presente documento, as pessoas versadas na técnica podem reconhecer outras implementações que podem ser usadas sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento.
[00070] O driver de sistema de arquivo 405 pode ser um componente de software e/ou hardware que emite comandos e recebe respostas a partir do controlador de memória 410. O driver de sistema de arquivo 405 pode ser parte de uma pilha de armazenamento de um sistema de arquivo 405 e pode se comunicar com o controlador de memória 410 através de um barramento de sistema ou outra ligação de comunicação. O driver de sistema de arquivo 405 pode fornecer uma interface para a pilha de armazenamento de um sistema de arquivo que faz com que a memória não volátil 205 apareça como outro armazenamento (por exemplo, disco rígido, memória flash, outra memória volátil ou não volátil ou similar) disponível para a pilha de armazenamento.
[00071] Embora alguns dos exemplos no presente documento tenham descritos pseudônimos e outras ações em relação à memória não volátil, os ensinamentos no presente documento também podem ser aplicados em implementações em que a região de sistema de arquivo e a região de memória são implementadas com o uso de outras configurações de memória. Por exemplo, a região de sistema de arquivo e/ou a região de memória pode sem implementada com memória volátil, não volátil ou uma combinação de volátil e não volátil. Além disso, a região de sistema de arquivo pode ser implementada em um tipo de memória diferente do que da região de memória.
[00072] Nessas implementações, os ensinamentos no presente documento podem ser aplicados, por exemplo, para pseudônimos a partir de memória volátil para memória volátil, pseudônimo a partir de memória volátil para memória não volátil, pseudônimo a partir de memória não volátil para memória volátil, sistemas que têm dois ou mais tipos diferentes de pseudônimos (por exemplo, não volátil para não volátil, volátil para não volátil, etc.) e similares.
[00073] Além disso, um controlador de memória tal como o controlador de memória 410 da Figura 4 pode fornecer uma interface que permite que os pseudônimos sejam usados, criados, retornados pseudônimo e assim por diante e para realizar as outras ações descritas no presente documento sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento.
[00074] Voltando à Figura 6, o controlador de memória 605 é mostrado com uma interface 610 e circuitos exemplificativos 615 a 618. Em uma modalidade, um circuito pode incluir apenas componentes físicos tais como resistor, transistores, capacitores, fontes de tensão, fontes de corrente, chaves, indutores e similares. Um ou mais dos componentes físicos podem ser integrados em um ou mais chips. Em outra modalidade, um circuito pode incluir componentes físicos juntamente com instruções que indicam como os componentes físicos devem operar. As instruções podem ser codificadas em memória volátil ou não volátil.
[00075] Os circuitos do controlador de memória 605 são exemplificativos e não são destinados a ser totalmente inclusivos de circuitos que podem ser necessários ou inclusos. Além disso, um número de circuitos pode diferir em outras modalidades sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento. Em algumas modalidades, os circuitos descritos em conjunto com a Figura 6 podem ser incluídos em outros circuitos ou colocados em subcircuitos sem se desviar do espírito ou escopo de aspectos da matéria descrita no presente documento.
[00076] A interface 610 pode incluir uma estrutura através da qual o driver de sistema de arquivo 405 pode se comunicar com o controlador de memória 605. Por exemplo, a interface 610 pode permitir que o driver de sistema de arquivo se comunique com o controlador de memória 605 através de sinais elétricos, ópticos ou outros sinais que codificam as solicitações e respostas àquelas solicitações. A interface 610 também pode ser estruturada para permitir as comunicações conforme indicado em conjunto com a Figura 4.
[00077] Por exemplo, a interface 610 pode ser estruturada para receber uma solicitação para criar um pseudônimo entre um bloco de memória de sistema de armazenamento e um bloco de memória de memória principal. Um bloco de memória de sistema de armazenamento pode ser usado, por exemplo, para manter os dados de sistema de armazenamento e pode corresponder à região de sistema de arquivo 210 da Figura 2, por exemplo. Um bloco de memória principal pode ser usado para a memória principal do computador e pode corresponder à região de memória 211 da Figura 2.
[00078] O circuito de tornar pseudônimo 615 pode ser estruturado para criar um pseudônimo entre um bloco de memória de sistema de armazenamento e um bloco de memória de memória principal conforme solicitado pelo driver de sistema de arquivo. Conforme indicado anteriormente, criar um pseudônimo entre esses blocos de memória pode incluir a criação de uma pluralidade de pseudônimos entre sub- blocos desses blocos. O circuito de tornar pseudônimo 615 pode ser estruturado adicionalmente para desfazer um pseudônimo para um sub- bloco em resposta a uma solicitação para registrar ao sub-bloco. Em uma implementação, o circuito de tornar pseudônimo 615 pode aguardar para desfazer o pseudônimo ao sub-bloco até imediatamente antes de atender a uma solicitação de leitura a partir do sub-bloco. O circuito de tornar pseudônimo 615 também pode ser estruturado para re-pseudônimo de um bloco tornado pseudônimo em resposta a uma solicitação para mover o bloco tornado pseudônimo, por exemplo.
[00079] O circuito de cópia 616 pode ser estruturado para responder a uma solicitação de cópia de um bloco de memória principal para uma nova localização. Em uma implementação, o circuito de cópia 616 pode responder copiando fisicamente os dados no bloco de memória principal para a nova localização. Em outra implementação, o circuito de cópia 616 pode copiar logicamente os dados no bloco de memória principal para a nova localização deixando os dados no bloco de memória principal e atualizando os elementos de mapeamento conforme descrito anteriormente.
[00080] O circuito de zeragem 618 é estruturado para responder a uma solicitação de zeragem de uma faixa solicitada de memória. A faixa solicitada de memória pode incluir alguma ou toda a memória usada para memória principal. Em uma implementação, o circuito de zeragem 618 pode zerar uma faixa solicitada da memória sinalizando que a faixa solicitada está zerada. Em uma modalidade, o circuito de zeragem 618 pode aguardar para zerar fisicamente uma porção da faixa solicitada até que uma solicitação de leitura ou de registro seja recebida pelo controlador de memória 605. Em outra modalidade, o circuito de zeragem 618 pode colocar zeros em um cache de leitura em resposta a uma leitura para memória que foi sinalizada como zerada. Nessa modalidade, o circuito de zeragem 618 não pode realmente zerar fisicamente a faixa sinalizada, mas a leitura para memória pode retornar os zeros como a mesma é atendida a partir do cache de leitura. Em uma implementação, o circuito de zeragem pode aguardar para zerar (por exemplo, fisicamente ou logicamente) a memória até após receber uma indicação de reinicialização de um computador que hospeda a memória principal.
[00081] O circuito de recuperação 617 pode ser estruturado para responder a uma solicitação de leitura do driver de sistema de arquivo. Onde alguns pseudônimos foram desfeitos, o circuito de recuperação 617 pode responder a uma solicitação através da obtenção de primeiros dados a partir de sub-blocos do bloco de sistema de armazenamento onde pseudônimos não foram desfeitos e para obter segundos dados a partir de sub-blocos do bloco de memória principal onde pseudônimos foram desfeitos e, então, combinar os primeiros dados e os segundos dados para responder à solicitação de leitura.
[00082] Em um exemplo, um bloco de memória de memória principal pode incluir uma página de memória que pode ser quebrada em sub- blocos onde cada sub-bloco corresponde a uma linha de cache.
[00083] As Figuras 7 a 9 são diagramas de fluxo que representam geralmente as ações exemplificativas que podem ocorrer de acordo com os aspectos da matéria descrita no presente documento. Para simplicidade de explicação, a metodologia descrita em conjunto com as Figuras 7 a 9 é retratada e descrita como uma série de atos. Deve ser entendido e apreciado que os aspectos da matéria descrita no presente documento não são limitados pelos atos ilustrados e/ou pela ordem de atos. Em uma modalidade, os atos ocorrem em uma ordem conforme descrito abaixo. Em outras modalidades, entretanto, dois ou mais dos atos podem ocorrer em paralelo ou em outra ordem. Em outras modalidades, uma ou mais das ações podem ocorrer com outros atos não apresentados e descritos no presente documento. Além disso, nem todos os atos ilustrados podem ser exigidos para implementar a metodologia de acordo com os aspectos da matéria descrita no presente documento. Além disso, as pessoas versadas na técnica irão entender e apreciar que a metodologia pode alternativamente ser representada como uma série de estados interrelacionados através de um diagrama de estado ou como eventos.
[00084] A Figura 7 é um fluxograma que representa geralmente as ações exemplificativas que podem ocorrer em conjunto com a criação de um pseudônimo a partir de uma perspectiva de controlador de memória de acordo com os aspectos da matéria descrita no presente documento. No bloco 705, as ações se iniciam.
[00085] No bloco 710, uma solicitação para criar um pseudônimo é recebida. Por exemplo, em referência à Figura 6, o controlador de memória 605 pode receber uma solicitação para pseudônimo de um bloco de memória através da interface 610. Essa solicitação pode partir do driver de sistema de arquivo 405. A solicitação pode solicitar a criação de um pseudônimo entre um bloco de memória de sistema de armazenamento e um bloco de memória de memória principal.
[00086] No bloco 715, um ou mais pseudônimos podem ser criados. Por exemplo, em referência à Figura 6, o circuito de tornar pseudônimo 615 pode criar um pseudônimo entre os dois blocos de memória e/ou pode criar pseudônimos entre sub-blocos correspondente de dois blocos de memória.
[00087] No bloco 720, outras ações, caso existam, podem ser realizadas. Outas ações incluem, por exemplo, qualquer uma das ações descritas no presente documento em relação a um controlador de memória.
[00088] A Figura 8 é um fluxograma que representa geralmente as ações exemplificativas que podem ocorrer em conjunto com a obtenção de dados para um bloco tornado pseudônimo a partir de uma perspectiva de controlador de memória de acordo com os aspectos da matéria descrita no presente documento. No bloco 805, as ações se iniciam.
[00089] No bloco 810, uma solicitação de leitura para um bloco tornado pseudônimo é recebida. Por exemplo, em referência às Figuras 2 e 6, o controlador de memória 605 pode receber uma solicitação de leitura dos dados no bloco 216. A solicitação pode partir do driver de sistema de arquivo 405 e pode ser comunicada através da interface 610.
[00090] Em resposta à solicitação, os dados podem ser obtidos a partir de um bloco ou sub-blocos apropriados. Por exemplo, em referência às Figuras 3 e 6, se nenhum dos pseudônimos entre os sub- blocos de blocos 216 e 215 foi desfeito, então, o circuito de recuperação 617 pode obter os dados a partir do bloco 215. Se os pseudônimos foram desfeitos conforme mostrado na Figura 3, então, o circuito de recuperação 617 pode obter os dados a partir de sub-blocos do bloco 215 onde os pseudônimos tornados pseudônimo não foram desfeitos e a partir dos sub-blocos 301, 302 e 303, onde os pseudônimos foram desfeitos.
[00091] No bloco 820, os dados são combinados se necessário. Se alguns, mas não todos dos pseudônimos de sub-blocos foram desfeitos, os dados de sub-blocos que são incluídos em diferentes blocos podem ser combinados em resposta à solicitação. Por exemplo, em referência às Figuras 3 e 6, se nenhum dos pseudônimos entre os sub-blocos de blocos 216 e 215 foram desfeitos, então, o circuito de recuperação 617 pode não ter a necessidade de combinar os sub-blocos a partir de diferentes blocos de memória; de outra forma, o circuito de recuperação 617 pode combinar os dados a partir dos sub-blocos 301, 302 e 303 com os dados dos sub-blocos de bloco 215 onde os pseudônimos não foram desfeitos.
[00092] No bloco 825, os dados são fornecidos em resposta à solicitação. Por exemplo, em referência à Figura 6, o controlador de memória 605 pode fornecer os dados para o driver de sistema de arquivo 405 através da interface 610.
[00093] No bloco 830, outras ações, caso existam, podem ser realizadas.
[00094] A Figura 9 é um fluxograma que mostra as ações exemplificativas que podem ocorrer em uma memória de acesso de componente através de um controlador de memória de acordo com os aspectos da matéria descrita no presente documento. No bloco 905, as ações se iniciam.
[00095] No bloco 910, uma solicitação para criar um pseudônimo é enviada. Por exemplo, em referência à Figura 6, o driver de sistema de arquivo 405 pode enviar uma solicitação para criar um pseudônimo entre dois blocos de memória. Essa solicitação pode ser enviada ao controlador de memória 605 através da interface 610.
[00096] No bloco 915, após a solicitação para criar o pseudônimo ter sido enviada, uma solicitação para os dados tornado pseudônimo pode ser enviada. Por exemplo, em referência às Figuras 2 e 6, o driver de sistema de arquivo 405 pode enviar uma solicitação endereçada ao bloco 216. Essa solicitação também pode ser enviada ao controlador de memória 605 através da interface 610.
[00097] No bloco 920, em resposta à solicitação, os dados podem ser recebidos. Por exemplo, em referência às Figuras 2 e 6, em resposta à solicitação anteriormente enviada, o driver de sistema de arquivo 405 pode receber os dados que foram obtidos a partir do bloco 215.
[00098] No bloco 925, outras ações, caso existam, podem ser realizadas.
[00099] Conforme pode ser observado a partir da descrição detalhada supracitada, os aspectos foram descritos relacionados aos sistemas de armazenamento e pseudônimos. Embora os aspectos da matéria descrita no presente documento sejam suscetíveis a várias modificações e construções alternativas, certas modalidades ilustradas dos mesmos são mostradas nos desenhos e foram descritas acima em detalhes. Deve ser entendido, entretanto, que não existe intenção em limitar os aspectos da matéria reivindicada às formas específicas reveladas, mas ao contrário, a intenção é cobrir todas as modificações, construções alternativas e equivalentes que se encaixem dentro do espírito e escopo de vários aspectos da matéria descrita no presente documento.

Claims (18)

1. Controlador de memória caracterizado pelo fato de que compreende: uma interface estruturada para receber uma solicitação para criar um ou mais pseudônimos entre um bloco de memória de sistema de armazenamento e um bloco de memória de memória principal, o bloco de memória de sistema de armazenamento para utilização em manutenção de dados de sistema de armazenamento, o bloco de memória de memória principal para utilização da memória principal de um computador; um circuito de tornar pseudônimo estruturado para criar pseudônimos entre o bloco de memória de sistema de armazenamento e o bloco de memória de memória principal, e entre cada sub-bloco do bloco de memória de sistema de armazenamento e cada correspondente sub-bloco do bloco de memória de memória principal; e um circuito de recuperação estruturado para obter dados a partir do bloco de sistema de armazenamento em resposta a uma solicitação de leitura de dados do bloco de memória principal desde que os pseudônimos não sejam desfeitos.
2. Controlador de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados de sistema de armazenamento compreendem dados de sistema de arquivo de um sistema de arquivo.
3. Controlador de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que a interface é estruturada para receber a solicitação a partir de um driver de sistema de arquivo de um sistema de operação hospedado no computador.
4. Controlador de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco de memória de memória principal compreende uma página de memória e cada sub-bloco do bloco de memória de memória principal compreende uma linha de cache.
5. Controlador de memória de acordo com a reivindicação 1, caracterizado pelo fato de que o circuito de recuperação é ainda estruturado em resposta à solicitação de leitura para obter primeiros dados a partir de sub-blocos do bloco de sistema de armazenamento onde pseudônimos não foram desfeitos e para obter segundos dados a partir de sub-blocos do bloco de memória principal onde pseudônimos foram desfeitos, o circuito de recuperação ainda estruturado para combinar os primeiros dados e os segundos dados para responder à solicitação de leitura.
6. Controlador de memória de acordo com a reivindicação 1, caracterizado pelo fato de que o circuito de tornar pseudônimo é ainda estruturado para desfazer um pseudônimo a partir de um primeiro sub- bloco para um segundo sub-bloco em resposta a uma solicitação para escrever ao primeiro sub-bloco ou para escrita ao segundo sub-bloco.
7. Controlador de memória, de acordo com a reivindicação 6, caracterizado pelo fato de que o circuito de tornar pseudônimo é ainda estruturado para desfazer o pseudônimo a partir do primeiro sub- bloco para o segundo sub-bloco após a solicitação para escrever e imediatamente antes de atender a uma solicitação para ler a partir do primeiro sub-bloco.
8. Controlador de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende um circuito de cópia estruturado para responder a uma solicitação para copiar o bloco de memória principal para uma nova localização.
9. Controlador de memória, de acordo com a reivindicação 8, caracterizado pelo fato de que o circuito de cópia é estruturado para responder a uma solicitação para copiar o bloco de memória principal para uma nova localização ao deixar os dados no bloco de memória principal e mudar elementos de mapeamento de modo que os dados sejam retornados quando solicitado a partir da nova localização.
10. Controlador de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende um circuito de zeragem estruturado para responder a uma solicitação para zerar uma faixa solicitada de memória que inclui uma parte ou toda a memória principal.
11. Controlador de memória, de acordo com a reivindicação 10, caracterizado pelo fato de que o circuito de zeragem é estruturado para responder à solicitação para zerar uma faixa solicitada da memória ao sinalizar que a faixa solicitada está zerada e, em seguida, em resposta a uma solicitação de leitura que envolve a faixa solicitada de memória, colocando zeros no cache de leitura.
12. Controlador de memória, de acordo com a reivindicação 10, caracterizado pelo fato de que o circuito de zeragem é estruturado para responder à solicitação para zerar uma faixa solicitada da memória ao zerar a faixa solicitada de memória após receber uma indicação de reinício de um computador hospedando a memória principal.
13. Controlador de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que o circuito de tornar pseudônimo é ainda estruturado para re-tornar pseudônimo um bloco tornado pseudônimo em resposta a uma solicitação para mover o bloco tornado pseudônimo.
14. Controlador de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco de memória principal e o bloco de memória de sistema de armazenamento são ambos incluídos em uma memória não volátil que é acoplada a um barramento de memória.
15. Método implementado pelo menos em parte por um computador, o método caracterizado pelo fato de que compreende as etapas de: em uma interface de controlador de memória, receber uma solicitação para criar um pseudônimo entre um bloco de memória de sistema de armazenamento e um bloco de memória de memória principal, o bloco de memória de sistema de armazenamento para utilização em manutenção de dados de sistema de armazenamento, o bloco de memória de memória principal para utilização para memória principal de um computador; criar pseudônimos entre o bloco de memória de sistema de armazenamento e o bloco de memória de memória principal, e entre cada sub-bloco correspondente do bloco de memória de sistema de armazenamento e do bloco de memória de memória principal; e em resposta a uma solicitação por dados, a solicitação indicando o bloco de memória de memória principal, fornecer os dados a partir do bloco de memória de sistema de armazenamento.
16. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que um dentre o bloco de memória de sistema de armazenamento e o bloco de memória de memória principal é incluído em um dispositivo de memória não volátil e o outro dentre o bloco de memória de sistema de armazenamento e o bloco de memória de memória principal é incluído em um dispositivo de memória volátil.
17. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que ainda compreende em resposta à solicitação por dados, obter primeiros dados a partir de sub-blocos do bloco de sistema de armazenamento onde pseudônimos não foram desfeitos, e obter segundos dados a partir de sub-blocos do bloco de memória principal onde pseudônimos foram desfeitos, e combinar os primeiros dados e os segundos dados para responder à solicitação por dados.
18. Meio de armazenamento em computador tendo um método caracterizado pelo fato de que compreende as etapas de: a partir de um driver de sistema de arquivo de um sistema de operação, enviar uma solicitação para uma interface de um controlador de memória, a solicitação solicitando a criação de um ou mais pseudônimos entre um primeiro bloco de memória e um segundo bloco de memória entre cada sub-bloco correspondente dos primeiro e segundo blocos, o primeiro bloco de memória para utilização em manutenção de dados de sistema de armazenamento, o segundo bloco de memória para utilização para memória principal de um computador; enviar, a partir do driver de sistema de arquivo para o controlador de memória, uma solicitação por dados, a solicitação indicando o primeiro bloco de memória; e em resposta à solicitação por dados, receber, a partir do controlador de memória, dados a partir do segundo bloco de memória.
BR112015029108-2A 2013-05-29 2014-05-28 Controlador de memória, método e meio de armazenamento em computador para sistemas de armazenamento e memória tornada pseudônimo BR112015029108B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361828636P 2013-05-29 2013-05-29
US61/828,636 2013-05-29
US14/036,298 2013-09-25
US14/036,298 US9678689B2 (en) 2013-05-29 2013-09-25 Storage systems and aliased memory
PCT/US2014/039634 WO2014193862A2 (en) 2013-05-29 2014-05-28 Storage systems and aliased memory

Publications (2)

Publication Number Publication Date
BR112015029108A2 BR112015029108A2 (pt) 2017-07-25
BR112015029108B1 true BR112015029108B1 (pt) 2022-05-17

Family

ID=51986493

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015029108-2A BR112015029108B1 (pt) 2013-05-29 2014-05-28 Controlador de memória, método e meio de armazenamento em computador para sistemas de armazenamento e memória tornada pseudônimo

Country Status (8)

Country Link
US (2) US9678689B2 (pt)
EP (1) EP3005126B1 (pt)
JP (1) JP6324494B2 (pt)
CN (1) CN105339909B (pt)
BR (1) BR112015029108B1 (pt)
ES (1) ES2865575T3 (pt)
RU (1) RU2669008C2 (pt)
WO (1) WO2014193862A2 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678689B2 (en) * 2013-05-29 2017-06-13 Microsoft Technology Licensing, Llc Storage systems and aliased memory
US10049052B2 (en) * 2014-10-27 2018-08-14 Nxp Usa, Inc. Device having a cache memory
US9740414B2 (en) * 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
KR20170076878A (ko) * 2015-12-24 2017-07-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10210088B2 (en) 2015-12-28 2019-02-19 Nxp Usa, Inc. Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system
US11237758B2 (en) * 2016-08-06 2022-02-01 Wolley Inc. Apparatus and method of wear leveling for storage class memory using address cache
US10387304B2 (en) * 2017-12-28 2019-08-20 Intel Corporation Virtual transfer of data between memory and storage domains

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119290A (en) * 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
JPH05158782A (ja) * 1991-12-06 1993-06-25 Hitachi Ltd 記憶装置
US6438672B1 (en) * 1999-06-03 2002-08-20 Agere Systems Guardian Corp. Memory aliasing method and apparatus
EP1498810B1 (en) * 1999-10-21 2018-12-26 Panasonic Corporation A semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card
US6625725B1 (en) * 1999-12-22 2003-09-23 Intel Corporation Speculative reuse of code regions
GB2372589B (en) * 2001-02-21 2003-01-22 3Com Corp Memory aliasing in a processor system
US7900017B2 (en) * 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
JP2004362464A (ja) * 2003-06-06 2004-12-24 Sony Corp 不揮発メモリを利用したコンピュータシステム
US20050138307A1 (en) * 2003-12-18 2005-06-23 Grimsrud Knut S. Storage performance improvement using data replication on a disk
US20110029723A1 (en) 2004-08-06 2011-02-03 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems
US8417915B2 (en) * 2005-08-05 2013-04-09 Arm Limited Alias management within a virtually indexed and physically tagged cache memory
US7872657B1 (en) * 2006-06-16 2011-01-18 Nvidia Corporation Memory addressing scheme using partition strides
US7747817B2 (en) * 2006-06-28 2010-06-29 Unity Semiconductor Corporation Performing data operations using non-volatile third dimension memory
JP4783229B2 (ja) * 2006-07-19 2011-09-28 パナソニック株式会社 キャッシュメモリシステム
JP2009009665A (ja) * 2007-06-29 2009-01-15 Elpida Memory Inc 半導体記憶装置
US8074034B2 (en) * 2007-07-25 2011-12-06 Agiga Tech Inc. Hybrid nonvolatile ram
US7855916B2 (en) 2007-10-24 2010-12-21 Rao G R Mohan Nonvolatile memory systems with embedded fast read and write memories
US8250282B2 (en) * 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8412987B2 (en) * 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US20130033957A1 (en) * 2011-08-04 2013-02-07 Spar Food Machinery Manufacturing Co., Ltd. Stirrer having Programmable Stirring Mode Control
WO2013048483A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Platform storage hierarchy with non-volatile random access memory having configurable partitions
CN104011690B (zh) * 2011-12-29 2016-11-09 英特尔公司 具有直接存取的多级存储器
US9552176B2 (en) 2013-04-12 2017-01-24 Microsoft Technology Licensing, Llc Block storage using a hybrid memory device
US9678689B2 (en) * 2013-05-29 2017-06-13 Microsoft Technology Licensing, Llc Storage systems and aliased memory

Also Published As

Publication number Publication date
US9678689B2 (en) 2017-06-13
JP6324494B2 (ja) 2018-05-16
CN105339909A (zh) 2016-02-17
RU2669008C2 (ru) 2018-10-05
US10216437B2 (en) 2019-02-26
EP3005126B1 (en) 2021-03-31
EP3005126A2 (en) 2016-04-13
JP2016524228A (ja) 2016-08-12
US20170262207A1 (en) 2017-09-14
ES2865575T3 (es) 2021-10-15
RU2015151012A (ru) 2017-06-01
CN105339909B (zh) 2018-08-24
WO2014193862A3 (en) 2015-04-09
WO2014193862A2 (en) 2014-12-04
US20140359203A1 (en) 2014-12-04
BR112015029108A2 (pt) 2017-07-25

Similar Documents

Publication Publication Date Title
BR112015029108B1 (pt) Controlador de memória, método e meio de armazenamento em computador para sistemas de armazenamento e memória tornada pseudônimo
US10970235B2 (en) Computing system with a nonvolatile storage and operating method thereof
JP6190045B2 (ja) 高性能でかつ低コストのフラッシュ変換層のためのシステムおよび方法
BR112015011935B1 (pt) Método, sistema e meio de armazenamento para compativelmente estender o tamanho de token de offload
US11270734B2 (en) Method for accessing shingled magnetic recording SMR disk, and server
JP2019067417A (ja) 最終レベルキャッシュシステム及び対応する方法
JP7232644B2 (ja) 仮想アドレスから物理アドレスへの変換を実行する入出力メモリ管理ユニットにおける複数のメモリ素子の使用
US10782904B2 (en) Host computing arrangement, remote server arrangement, storage system and methods thereof
US10372446B2 (en) Technology to dynamically modulate memory device read granularity
CN107111452B (zh) 应用于计算机系统的数据迁移方法和装置、计算机系统
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
TWI731916B (zh) 用於減少儲存資料的複製之技術
US8775742B2 (en) System and method for cache management in a DIF enabled storage system
US20160224260A1 (en) Logical block address mapping for hard disk drives
US9189426B2 (en) Protected access to virtual memory
CN109074308A (zh) 适应性的块转换表(btt)
US10254990B2 (en) Direct access to de-duplicated data units in memory-based file systems
KR102530583B1 (ko) 저장 장치 및 메모리 시스템
JPWO2015145932A1 (ja) 不揮発性メモリ装置
TW201447876A (zh) 磁碟分割格式轉換方法及系統
KR20220118313A (ko) 데이터 재배치 동작 기법들
CN111352865B (zh) 存储控制器的写缓存
US9804968B2 (en) Storage system and data writing method
TW201437909A (zh) 資料儲存裝置與資料存取方法
JP2011081744A (ja) 階層記憶システム、方法及びプログラム

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
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 28/05/2014, OBSERVADAS AS CONDICOES LEGAIS