BR112014009915B1 - Método para alocação de memória, dispositivo e meio de armazenamento não transitório legível por máquina - Google Patents

Método para alocação de memória, dispositivo e meio de armazenamento não transitório legível por máquina Download PDF

Info

Publication number
BR112014009915B1
BR112014009915B1 BR112014009915-4A BR112014009915A BR112014009915B1 BR 112014009915 B1 BR112014009915 B1 BR 112014009915B1 BR 112014009915 A BR112014009915 A BR 112014009915A BR 112014009915 B1 BR112014009915 B1 BR 112014009915B1
Authority
BR
Brazil
Prior art keywords
volatile memory
initialization
data
initialization data
memory
Prior art date
Application number
BR112014009915-4A
Other languages
English (en)
Other versions
BR112014009915A2 (pt
Inventor
John J. Briden
Fred Charles Thomas Iii
Walter A. Pard
Original Assignee
Hewlett-Packard Development Company, L.P.
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 Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Publication of BR112014009915A2 publication Critical patent/BR112014009915A2/pt
Publication of BR112014009915B1 publication Critical patent/BR112014009915B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

método para alocação de memória, dispositivo e meio de armazenamento não transitório legível por máquina. as concretizações aqui se relacionam a carregamento de dados de inicialização, um dispositivo carrega os dados de inicialização de uma primeira parte de uma primeira memória não volátil para completar uma primeira inicialização de um dispositivo. a primeira porção da primeira memória não volátil é então liberada para permitir que o dispositivo substitua a primeira porção. em seguida, os dados de inicialização são gravados na primeira memória não volátil antes que o dispositivo entre em um estado de baixo consumo de energia. os dados de inicialização gravados são para ser carregados a partir da primeira memória não volátil para completar uma segunda inicialização do dispositivo, se a segunda inicialização for iniciada.

Description

Histórico da invenção
[001] Um dispositivo de computação pode incluir um dispositivo de armazenamento lento, como uma unidade de disco rígido (HDD), com tempos de acesso relativamente lentos. Os dispositivos de armazenamento lentos podem atuar como um gargalo e afetar um desempenho do dispositivo de computação. Para melhorar o desempenho, o dispositivo de computação pode incluir um dispositivo de armazenamento rápido, com tempos de acesso relativamente rápidos, como uma memória flash. Contudo, o dispositivo de armazenamento rápido pode ser mais caro do que o dispositivo de armazenamento lento por unidade de armazenamento.
[002] Como resultado, os dispositivos de armazenamento rápido podem ter uma capacidade de armazenamento menor do que a dos dispositivos de armazenamento lento. A capacidade de armazenamento menor de dispositivos de armazenamento rápido pode ser totalmente utilizada pelo dispositivo de computação, tais como para os dados acessados frequentemente. O dispositivo de computação também pode armazenar parte dos dados acessados com frequência no dispositivo de armazenamento lento se for necessária capacidade adicional de armazenamento. O aumento na percentagem dos dados acessados frequentemente que podem ser armazenados no dispositivo de armazenamento rápido pode melhorar ainda mais o desempenho do dispositivo de computação.
Breve descrição dos desenhos
[003] A seguinte descrição detalhada faz referência aos desenhos, em que:
[004] A figura 1A é um exemplo de diagrama de blocos de um dispositivo para carregar dados de inicialização;
[005] A figura 1B é outro de diagrama de blocos de um dispositivo para carregar dados de inicialização;
[006] A figura 2 é um exemplo de diagrama de blocos de um dispositivo de computação incluindo instruções para os dados de inicialização de carga; e
[007] As figuras 3A e 3B são um exemplo de diagrama de fluxo de um método para carga de dados de inicialização.
Descrição detalhada
[008] Os detalhes específicos são apresentados na seguinte descrição para permitir uma compreensão completa de configurações. No entanto, será entendido por aquele com habilidade na técnica que modelos de configuração podem ser praticados sem esses detalhes específicos. Por exemplo, os sistemas podem ser mostrados em diagramas de blocos de modo a não obscurecer as configurações com detalhes desnecessários. Em outros casos, os processos, as estruturas e as técnicas conhecidos podem ser mostrado sem detalhes desnecessários, para evitar que as configurações se tornem obscuras.
[009] Um dispositivo de computação pode incluir um dispositivo de armazenamento mais rápido, como memória flash, além de um dispositivo de armazenamento mais lento, como uma unidade de disco rígido (HDD). O dispositivo de armazenamento mais rápido pode ter uma latência inferior à do dispositivo de armazenamento mais lento. O dispositivo de computação pode aumentar o desempenho armazenando dados mais frequentemente acessados no dispositivo de armazenamento mais rápido, em vez de no dispositivo de armazenamento mais lento. Por exemplo, o dispositivo de computação pode utilizar o dispositivo de armazenamento mais rápido como um cache ou para armazenar dados de inicialização. No entanto, o dispositivo de armazenamento mais rápido pode não ter uma grande capacidade de armazenagem que seja suficiente para armazenar todos os dados de frequentemente acessados e utilizados pelo dispositivo de computação. Por isso, uma capacidade de armazenamento do dispositivo de armazenamento mais rápido pode atuar como um ponto de estrangulamento para o desempenho do dispositivo de computação. Além disso, como o dispositivo de armazenamento mais rápido é, de forma geral, significativamente mais caro do que o dispositivo de armazenamento mais lento por unidade de memória, a capacidade de armazenamento do dispositivo de armazenamento mais rápido não pode geralmente ser aumentada.
[0010] Por exemplo, a inicialização do dispositivo de computação através da carga dos dados de inicialização do dispositivo de armazenamento mais rápido, ao contrário do dispositivo de armazenamento mais lento, pode diminuir um tempo de inicialização do dispositivo de computação. Os dados de inicialização podem ocupar uma grande percentagem do dispositivo de armazenamento rápido. Por exemplo, os dados de inicialização podem ser de 4 gigabytes (GB) e a capacidade de armazenamento do dispositivo de armazenamento mais rápido pode ser de 16 GB. Uma parte predeterminada do dispositivo de armazenamento mais rápido pode ser reservada para os dados de inicialização, mas o tamanho dos dados de inicialização pode variar. Assim, a parte pré-determinada pode ser definida de forma conservadora, grande em tamanho, resultando que parte da capacidade de armazenamento do dispositivo de armazenamento mais rápido seja desperdiçada. Por exemplo, se os dados de inicialização forem de 4 GB, mas o espaço reservado for de 5 GB, 1 GB de capacidade de armazenamento pode não ser usada.
[0011] Além disso, se o dispositivo de computação não é inicializado frequentemente, reservar um espaço determinado pode não ser um uso eficiente da capacidade de armazenamento do dispositivo de armazenamento rápido. Por outro lado, permitir que todo o dispositivo de armazenamento mais rápido seja utilizado como cache pode fazer com que os dados de inicialização sejam substituídos ao longo do tempo. Como resultado, o dispositivo de computação pode não ser capaz de carregar os dados de inicialização do dispositivo de armazenamento mais rápido durante a próxima inicialização. Em vez disso, o dispositivo de computação pode carregar os dados de inicialização do dispositivo de armazenamento de forma mais lenta durante a próxima reinicialização.
[0012] As configurações podem aumentar a quantidade da capacidade de armazenagem do dispositivo de armazenagem rápida que seja utilizada para os dados frequentemente acessados, permitindo que o dispositivo de computação carregue os dados de inicialização do dispositivo de armazenamento rápido. Por exemplo, o dispositivo de computação pode carregar os dados de inicialização a partir de uma parte do dispositivo de armazenamento mais rápido e, em seguida, permitir que a parte do dispositivo de armazenamento mais rápido para armazenar outros tipos de dados, tais como dados de cache. Em seguida, antes do dispositivo de computação ser desligado, os dados de inicialização podem ser gravados novamente no dispositivo de armazenamento mais rápido para a próxima inicialização.
[0013] A figura 1A é um exemplo de diagrama de blocos de um dispositivo 100 para carregar dados de inicialização. Exemplos do dispositivo 100 podem incluir um computador portátil, um desktop, um sistema completo, um dispositivo de computação de toque, um dispositivo portátil de leitura, um dispositivo de e-mail sem fio, um telefone celular e assim por diante. Na configuração da figura 1A, o dispositivo 100 inclui um processador 110, um módulo de cache 120, um módulo de inicialização 130 e uma primeira memória não volátil 140. A primeira memória não volátil 140 inclui ainda uma primeira parte 142.
[0014] O processador 110 pode ser um processador, uma GPU ou um microprocessador, adequado para a recuperação e execução de instruções a partir da primeira memória não volátil 140 e/ou circuitos eletrônicos configurados para executar a funcionalidade de qualquer um dos módulos 120 e 130 descritos abaixo. A primeira memória não volátil 140 pode ser um ou mais meios de armazenamento não voláteis legível por máquina, tais como um dispositivo de armazenamento físico eletrônico, magnético, óptico ou outro que retenha a informação armazenada, mesmo quando não está energizado. Exemplos da primeira memória não volátil 140 podem incluir uma unidade de estado sólido (SSD) ou uma memória flash.
[0015] Cada um dos módulos 120 e 130 pode incluir, por exemplo, dispositivos de hardware, incluindo circuitos eletrônicos para implementar a funcionalidade descrita a seguir. Além disso, ou como alternativa, cada módulo pode ser implementado como uma série de instruções codificadas no meio de armazenamento legível por computador, tal como a primeira memória não volátil 140, e executável pelo processador 110. Nas configurações, alguns dos módulos 120 e 130 podem ser implementados como dispositivos de hardware, enquanto que outros módulos são implementados como instruções executáveis. Por exemplo, os módulos 120 e 130 podem ser implementados como parte de um aplicativo executado por um sistema operacional (SO) (não mostrado) sendo executado no dispositivo 100.
[0016] A primeira memória não volátil 140 deve armazenar os dados de inicialização na primeira parte 142. Os dados de inicialização devem ser utilizados para completar uma primeira inicialização do dispositivo 100. Por exemplo, após ligar o dispositivo 100 a partir de um estado inativo, tal como desligado, o dispositivo 100 pode inicialmente executar um conjunto inicial de instruções, tais como as que estão armazenadas numa memória só de leitura (ROM) (não mostrada). Com base nessas instruções, o dispositivo 100 pode carregar os dados de inicialização da primeira memória não volátil 140, tal como a primeira parte 142, para um local separado, tal como uma memória de acesso aleatório (RAM) (não mostrada). Os dados de inicialização podem incluir instruções, como aquelas de um programa e/ou sistema operacional (SO) e/os dados a serem executados em resposta à energização do dispositivo 100. Em uma configuração, os dados de inicialização podem ser usados para iniciar um sistema operacional no dispositivo 100. O dispositivo 100 pode, em seguida, executar e/ou usar os dados de inicialização da RAM para completar a primeira inicialização do dispositivo 100, que pode incluir, por exemplo, iniciar o sistema operacional.
[0017] O módulo de cache 120 deve gravar dados de cache na primeira parte 142 da primeira memória não volátil 140 depois que os dados de inicialização são carregados da primeira parte 142 da primeira memória não volátil 140. Os dados de cache podem incluir dados que sejam susceptíveis de se usar novamente ou que são frequentemente usados, tais como arquivos de aplicativos, documentos do usuário e/ou metadados. Por exemplo, software, tais como o sistema operacional, um aplicativo ou navegador da web, ou hardware, como o processador 110 ou outra memória, podem armazenar dados em cache na primeira parte 142 para um acesso mais rápido aos dados de cache. Os dados de cache podem ter informações redundantes ou não redundantes. O tipo de informação redundante podem ser dados armazenados na primeira parte 142, que foram obtidos de outro local de memória apenas de leitura. Como tal, pode haver cópias duplicadas da informação de tipo redundante, na primeira parte 142 ou em outro local de memória. A informação de dados não redundantes que armazenada apenas na primeira parte 142, tal como dados modificados ou gerados por hardware, uma aplicação, um usuário, e outros semelhantes.
[0018] O módulo de inicialização 130 deve gravar os dados de inicialização na primeira memória não volátil 140 antes que o dispositivo 100 entre em um estado de baixo consumo de energia. Exemplos do estado de baixo consumo de energia podem incluir o dispositivo 100 entrando em um estado desligado, um estado de hibernação, ou um estado de vigília. Por exemplo, ao receber uma indicação do sistema operacional de que o dispositivo 100 deve entrar no estado de consumo reduzido de energia, o módulo de inicialização 130 pode gravar os dados de inicialização na primeira parte 142 novamente antes que o dispositivo 100 se desligue. Alternativamente, os dados de inicialização podem ser gravados em outra parte da primeira memória não volátil 140 antes que o dispositivo 100 se desligue. Em uma configuração, o sistema operacional pode esperar que o dispositivo entre no estado de uso reduzido de energia até receber a confirmação, tal como a partir do módulo de inicialização 130, que os dados de inicialização tenham sido transferidos com sucesso para a primeira memória não volátil 140.
[0019] Quando o dispositivo 100 for ligado novamente, pode ser iniciada uma segunda inicialização. Os dados de inicialização gravados podem novamente ser carregados da primeira memória não volátil 140 para completar a segunda inicialização do dispositivo 100. Assim, liberando-se o local de memória que armazena os dados de inicialização na primeira memória não volátil 140, tal como na primeira parte 142, para os dados de cache, uma maior quantidade de informações usadas frequentemente pode ser armazenada na primeira memória não volátil 140, melhorando assim o desempenho e/ou velocidade do dispositivo. Além disso, ao carregar os dados de inicialização de volta na primeira memória não volátil 140 antes de desligar o dispositivo 100, o dispositivo 100 pode inicializar mais rápido do que se os dados de inicialização fossem carregados de uma memória mais lenta.
[0020] A figura 1B é mais um exemplo de diagrama de blocos de um dispositivo 150 para carregar dados de inicialização. O dispositivo 150 da figura 1B inclui componentes similares aos do dispositivo 100 da figura 1A, tal como o processador 110, o módulo de cache 120, o módulo de inicialização 130 e a primeira memória não volátil 140. A primeira memória não volátil 140 inclui de forma semelhante a primeira parte 142. No entanto, o dispositivo 150 da figura 1B inclui ainda uma segunda memória não volátil 160. A segunda memória não volátil 140 inclui uma segunda parte 162.
[0021] A segunda memória não volátil 160 pode ser um ou mais meios não voláteis de armazenamento legível por máquina, como um dispositivo de armazenamento físico eletrônico, magnético, óptico ou outro que retenha a informação armazenada, mesmo quando não energizado. Exemplos da segunda memória não volátil 160 podem incluir uma unidade de disco rígido (HDD) ou uma unidade de armazenamento. A segunda memória não volátil 160 pode ter uma maior latência e/ou capacidade do que a primeira memória não volátil 140. Por exemplo, a segunda memória não volátil 160 pode ser um meio de armazenamento magnético, que tem um maior tempo de acesso, como um 500 gigabytes (GB), enquanto o primeiro disco rígido de memória não volátil 160 pode ser um tipo de memória flash com um tempo de acesso mais baixo, como um SDD de 64 GB.
[0022] A segunda memória não volátil 160 também pode armazenar os dados de inicialização. Por exemplo, o módulo de inicialização 130 pode gravar os dados de inicialização na segunda memória não volátil 160, como para a segunda parte de 162, antes do módulo de cache 120 gravar os dados de cache na primeira parte 142 da primeira memória não volátil 140. Assim, os dados de inicialização podem ser preservados. Mais tarde, o módulo de inicialização 140 pode gravar os dados de inicialização da segunda memória não volátil 160 na primeira memória não volátil 140, como a primeira parte 142, antes do dispositivo 150 entrar no estado de baixo consumo de energia. Assim, o dispositivo 100 pode ser inicializado novamente através do acesso aos dados de inicialização da primeira memória não volátil 140, tal como explicado acima. Além disso, a cópia de dados de inicialização na segunda memória não volátil 160 pode ser mantida como um backup. Por exemplo, os dados de inicialização podem ser carregados da segunda memória não volátil 160, se os dados de inicialização não puderem ser carregados da primeira memória não volátil 140, para terminar a primeira ou a segunda inicialização. Por exemplo, os dados de inicialização não podem ser carregáveis da primeira memória não volátil 140, se o dispositivo 100 desligado anteriormente, antes do módulo de inicialização 130, completar a gravação dos dados de inicialização de volta na primeira memória não volátil 140 ou se a primeira memória não volátil de 140 funcionar mal. Um endereço de dados de inicialização na segunda memória não volátil 160 pode ser armazenado na primeira memória não volátil 140. Como um resultado, se os dados de inicialização não puderem ser carregados da primeira memória não volátil 140, o dispositivo 150 pode ainda ler a localização de endereços armazenados na primeira memória não volátil 140 para acessar os dados de inicialização na segunda memória não volátil 160.
[0023] Opcionalmente, o módulo de cache 120 pode armazenar os dados de cache da primeira memória não volátil 140 para a segunda memória não volátil 160 antes do dispositivo 150 entrar no estado de baixo consumo de energia. Por exemplo, o módulo de cache 120 pode salvar os dados em cache na primeira parte 142 da segunda memória não volátil 160 antes do módulo de inicialização 130 gravar os dados de inicialização de volta na primeira parte 142. Assim, os dados de cache podem ser preservados na segunda memória não volátil 160 e reutilizados após a segunda inicialização. Caso contrário, se uma cópia duplicada dos dados do cache não for gravada na segunda memória não volátil 160, os dados de cache podem ser perdidos quando substituídos pelos dados de inicialização da primeira parte 142 pelo módulo de inicialização 130. Uma operação dos dispositivos 100 e 150 pode ser descrita com mais detalhe nas Figuras 3A e 3B.
[0024] A figura 2 é um exemplo de diagrama de blocos de um dispositivo de computação 200 incluindo instruções para os dados de inicialização de carga. Na configuração da figura 2, o dispositivo de computação 200 inclui um processador 205, a primeira memória não volátil 140 e um meio de armazenamento legível por máquina 210. O meio de armazenamento legível por computador 210 inclui ainda instruções 212, 214 e 216 para a carga dos dados de inicialização. A primeira memória não volátil 140 inclui a primeira parte 142 e pode ser semelhante à das Figs. 1A e 1B.
[0025] O dispositivo de computação 200 pode ser, por exemplo, um conjunto de chips, um notebook, um dispositivo de computação de toque, um dispositivo de leitura portátil, um dispositivo de e-mail sem fio, um telefone celular, ou qualquer outro dispositivo capaz de executar as instruções 212, 214 e 216. Em certos exemplos, o dispositivo de computação 200 pode incluir ou ser conectado a componentes adicionais, como memórias, sensores, monitores, etc. Por exemplo, o dispositivo de computação 200 pode incluir uma segunda memória não volátil (não mostrada) semelhante à segunda memória não volátil 160 da figura 1B. Alternativamente, a segunda memória não volátil pode ser parte de um meio de armazenamento de leitura por máquina 210.
[0026] O processador 205 pode ser, pelo menos, uma unidade central de processamento (CPU), pelo menos um microprocessador com base em semicondutores, pelo menos uma unidade de processamento gráfico (GPU), outros dispositivos de hardware adequados para recuperação e execução de instruções armazenadas em meio de armazenamento legível por computador 210, ou suas combinações. O processador 205 pode buscar, decodificar e executar as instruções 212, 214 e 216 para implementar a carga dos dados de inicialização. Como uma alternativa ou em adição à recuperação e execução de instruções, o processador 202 pode incluir, pelo menos, um circuito integrado (IC), outra lógica de controle, outros circuitos eletrônicos, ou combinações dos mesmos, que incluam certo número de componentes eletrônicos para executar a funcionalidade das instruções 212, 214 e 216.
[0027] O meio de armazenamento legível por máquina 210 pode ser qualquer dispositivo de armazenamento físico eletrônico, magnético, óptico, ou outro que contenha ou armazene instruções executáveis. Assim, o meio de armazenamento legível por máquina 210 pode ser, por exemplo, memória de acesso aleatório (RAM), uma memória programável somente de leitura e que pode ser apagada eletricamente (Erasable Programmable Read-Only Memory - EEPROM), uma unidade de armazenamento, uma memória somente de leitura em disco compacto (Compact Disc Read Only Memory - CD-ROM) e semelhantes. Como tal, meio de armazenamento legível por máquina 210 pode ser não transitório. Conforme descrito em pormenor a seguir, o meio de armazenamento legível por computador 210 pode ser codificado com uma série de instruções executáveis para definir a carga dos dados de inicialização.
[0028] Além disso, as instruções 212, 214 e 216, quando executadas por um processador (por exemplo, um elemento de processamento ou vários elementos de processamento do processador) pode fazer com que o processador execute os processos como o processo da fig. 3A e 3B. Por exemplo, as instruções de carga 212 podem ser executadas pelo processador 205, para carregar dados de inicialização da primeira parte 142 da primeira memória não volátil 140, para completar uma primeira inicialização do dispositivo. As instruções de liberação 214 podem ser executadas pelo processador 205 para liberar a primeira parte 142 da primeira memória não volátil 140, para permitir que o dispositivo 200 substitua a primeira parte 142. As instruções de gravação 216 podem ser executadas pelo processador 205 para gravar os dados de inicialização na primeira memória não volátil 140, como na primeira parte 142, antes do dispositivo 200 entrar em estado de baixo consumo de energia. Se o aparelho 200 iniciar uma segunda inicialização, os dados de inicialização gravados devem ser carregados da primeira memória não volátil 140, para completar a segunda inicialização do dispositivo 200.
[0029] O meio de armazenamento legível por computador 210 pode incluir também instruções (não mostradas) para armazenar os dados de inicialização da primeira parte 142 da primeira memória não volátil 140 na segunda memória não volátil antes da primeira parte ser liberada, onde os dados de inicialização são gravados da segunda memória não volátil para a primeira memória não volátil 140. Além disso, o meio de armazenamento legível por computador 210 pode incluir também instruções (não mostradas) para carregar os dados de inicialização da segunda memória não volátil, se os dados de inicialização não puderem ser carregados da primeira memória não volátil 140 para completar pelo menos entre a primeira e a segunda inicialização. Os dados de inicialização são carregados mais rapidamente da primeira memória não volátil 140 do que da segunda memória não volátil. Uma operação do dispositivo 200 pode ser descrita em mais detalhe com referência às Figs. 3A e 3B.
[0030] As Figs. 3A e 3B são um exemplo de diagrama de fluxo de um método 300 para carga de dados de inicialização. Embora a execução do método 300 seja descrita abaixo com referência ao dispositivo 150, os outros componentes adequados para a execução do método 300 podem ser utilizados, tais como os dispositivos 100 e 200. Além disso, os componentes para a execução do método 300 podem ser repartidos entre vários dispositivos (por exemplo, um dispositivo de processamento em comunicação com dispositivos de entrada e saída). Em determinados cenários, vários dispositivos que atuam em coordenação podem ser considerados como um único dispositivo para executar o método 300. O método 300 pode ser implementado na forma de instruções executáveis armazenadas num meio de armazenamento legível por computador, como o meio de armazenamento 210 e/ou sob a forma de circuitos eletrônicos.
[0031] No bloco 310, o dispositivo 150 carrega os dados de inicialização de uma primeira parte 142 de uma primeira memória não volátil 140 para completar a primeira inicialização do dispositivo 100. Por exemplo, o dispositivo 150 pode acessar instruções para carregar uma imagem de um sistema operacional do dispositivo 150 da primeira memória não volátil 140 para outra memória, tal como uma memória RAM. Uma vez que o sistema operacional é carregado, a primeira inicialização se completa. Depois, no bloco 320, o dispositivo 150 armazena os dados de inicialização da primeira parte 142 da primeira memória não volátil 140 para uma segunda memória não volátil 160. Em seguida, no bloco 330, o dispositivo 150 libera a primeira parte 142 da primeira memória não volátil 140 para permitir que o dispositivo 150 substitua a primeira parte. A liberação no bloco 330 pode incluir o uso da primeira parte 142 da primeira memória não volátil 140 como memória para armazenar os dados de cache do dispositivo 150. Posteriormente, antes que o dispositivo 150 seja desligado, no bloco 340, o dispositivo 150 armazena os dados de cache da primeira memória não volátil 140 na segunda memória não volátil 160. Os dados de cache podem ser reutilizados, tal como restaurados na primeira parte 142 da primeira memória não volátil 140, após uma segunda inicialização do dispositivo 100.
[0032] Depois, no bloco 350, o dispositivo 150 grava os dados de inicialização da segunda memória não volátil 160 na primeira memória não volátil 140 antes que o dispositivo 150 entre em um estado de baixo consumo de energia. No bloco 360, uma segunda inicialização do dispositivo 150 é iniciada depois de o dispositivo 150 ter entrado no estado de baixo consumo de energia. Se não ocorrer uma segunda inicialização, o método 300 termina. De outro modo, no bloco 370, o dispositivo 150 carrega os dados de inicialização gravados da primeira memória não volátil 140 para completar a segunda inicialização do dispositivo 150. No bloco 380, é determinado se os dados de inicialização gravados foram carregados com sucesso da primeira memória não volátil 140. Se os dados de inicialização gravados foram carregados com êxito, o método 300 termina. De outro modo, no bloco 390, o dispositivo 150 carrega os dados de inicialização da segunda memória não volátil 160. Os dados de inicialização são carregados mais rapidamente da primeira memória não volátil 140 do que da segunda memória não volátil 160.
[0033] De acordo com o exposto, as configurações fornecem um método e/ou um dispositivo para aumentar a quantidade de espaço de cache utilizável, tal como uma primeira memória não volátil, enquanto permite que os dados de inicialização sejam carregados a partir da primeira memória não volátil quando o dispositivo é inicializado. Assim, as configurações podem diminuir o tempo de inicialização e a latência do dispositivo de dados. Por exemplo, configurações podem armazenar os dados de inicialização em uma segunda memória não volátil, enquanto o dispositivo estiver em uso e, em seguida, armazenar os dados de inicialização de volta na primeira memória não volátil antes que o dispositivo entre no estado de baixo consumo de energia. Em uma próxima inicialização, os dados de inicialização podem ser novamente carregados da primeira memória não volátil.

Claims (6)

1. Método para alocação de memória, caracterizadopelo fato de compreender: carregar (310) dados de inicialização a partir de uma primeira parte (142) de uma primeira memória não volátil (140) para completar uma primeira inicialização de um dispositivo (150), em que a primeira memória não volátil (140) é uma unidade de estado sólido; armazenar (320) os dados de inicialização em uma segunda memória não volátil (160), em que a segunda memória não volátil (160) é uma unidade de disco rígido; após o armazenamento (340), liberar (330) a primeira parte (142) da primeira memória não volátil (140), para permitir que o dispositivo substitua a primeira parte, incluindo o uso da primeira parte (142) como um cache para armazenar dados de cache; armazenar (340) os dados de cache na primeira memória não volátil (140) para a segunda memória não volátil (160). após armazenar (340), gravar (350) os dados de inicialização a partir da segunda memória não volátil (160) para a primeira memória não volátil (140), antes que o dispositivo (150) inicie um estado de consumo reduzido de energia, onde os dados de inicialização gravados devem ser carregados da primeira memória não volátil (140), para completar uma segunda inicialização do dispositivo (150), se a segunda inicialização for iniciada; reter uma cópia dos dados de inicialização na segunda memória não volátil (160); armazenar, na primeira memória não volátil (140), uma localização de endereço da cópia dos dados de inicialização na segunda memória não volátil (160); e carregar os dados de inicialização a partir da segunda memória não volátil (160) se os dados de inicialização não puderem ser carregados a partir da primeira memória não volátil (140) para completar pelo menos uma entre a primeira e segunda inicialização, em que os dados de inicialização são carregáveis de forma mais rápida a partir da primeira memória não volátil (140) do que da segunda memória não volátil (160).
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira memória não volátil (140) tem um tempo de acesso menor do que a segunda memória não volátil (160).
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a primeira memória não volátil (140) inclui uma memória flash e a segunda memória não volátil (160) inclui um meio de armazenamento magnético.
4. Dispositivo (150), caracterizado pelo fato de que compreende: uma primeira memória não volátil (140) para armazenar dados de inicialização em uma primeira parte (142), os dados de inicialização sendo para completar uma primeira inicialização do dispositivo (150), em que a primeira memória não volátil (140) é uma unidade de estado sólido; uma segunda memória não volátil (160) para armazenar dados de inicialização, em que a segunda memória não volátil (160) é uma unidade de disco rígido; um módulo de cache (120) para gravar dados de cache na primeira parte (142) da primeira memória não volátil (140) depois dos dados de inicialização serem carregados a partir da primeira memória não volátil (140), em que o módulo de cache (120) é para armazenar os dados de cache na primeira memória não volátil (140) para a segunda memória não volátil (160) antes do dispositivo (150) iniciar com o estado de consumo reduzido de energia; e um módulo de inicialização (130) para gravar os dados de inicialização na segunda memória não volátil (160) antes do módulo de cache (120) gravar os dados de cache na primeira parte (142) da primeira memória não volátil (140) e gravar os dados de inicialização na segunda memória não volátil (160) para a primeira memória não volátil (140) antes do dispositivo (150) iniciar com o estado de consumo reduzido de energia; em que uma cópia dos dados de inicialização é retida na segunda memória não volátil (160) e uma localização de endereço da cópia dos dados de inicialização na segunda memória não volátil (160) é armazenada na primeira memória não volátil (140), em que os dados de inicialização gravados são para serem carregados a partir da primeira memória não volátil (140) para completar uma segunda inicialização do dispositivo (150), se a segunda inicialização for iniciada, e em que os dados de inicialização são para serem carregados partir da segunda memória não volátil (160), se os dados de inicialização não puderem ser carregados a partir da primeira memória não volátil (140) para completar pelo menos uma entre a primeira e segunda inicialização.
5. Dispositivo, de acordo com a reivindicação 4, caracterizado pelo fato de que a primeira memória não volátil (140) inclui uma memória flash e a segunda memória não volátil (160) inclui um meio de armazenamento magnético (210), a primeira memória não volátil (140) tendo um tempo de acesso menor que a do que a segunda memória não volátil (160).
6. Meio de armazenamento não transitório legível por máquina, caracterizadopelo fato de armazenar instruções que, se executadas por um processador (110) de um dispositivo (150), faz com que o processador (110): carregue (212) os dados de inicialização a partir de uma primeira parte (142) de uma primeira memória não volátil (140) para completar a primeira inicialização do dispositivo (150), em que a primeira memória não volátil (140) é uma unidade de estado sólido; armazenar os dados de inicialização na primeira parte (142) da primeira memória não volátil (140) para uma segunda memória não volátil (160) antes da primeira parte (142) ser liberada, em que a segunda memória não volátil (160) é uma unidade de disco rígido; liberar (214) a primeira parte da primeira memória não volátil (140) para permitir que o dispositivo substitua a primeira parte (142), incluindo o uso da primeira parte (142) como um cache para armazenar dados de cache; armazenar (340) os dados de cache na primeira memória não volátil (140) para a segunda memória não volátil (160); gravar (216), após armazenar os dados de cache na primeira memória não volátil (140) para a segunda memória não volátil (160), os dados de inicialização a partir da segunda memória não volátil (160) para a primeira memória não volátil (140), antes do dispositivo iniciar com o estado de consumo reduzido de energia; em que uma cópia dos dados de inicialização na segunda memória não volátil (160), e uma localização de endereço da cópia dos dados de inicialização na segunda memória não volátil (160) são armazenados na primeira memória não volátil (140), em que os dados de inicialização gravados são para serem localizados a partir da primeira memória não volátil (140) para completar uma segunda inicialização do dispositivo (150) se a segunda inicialização for iniciada; e carregar os dados de inicialização a partir da segunda memória não volátil (160), se os dados de inicialização não puderem ser carregados a partir da primeira memória não volátil (140) para completar ao menos um entre a primeira e a segunda inicialização, em que os dados de inicialização são carregados mais rapidamente a partir da primeira memória não volátil (140) do que da segunda memória não volátil (160).
BR112014009915-4A 2011-10-26 2011-10-26 Método para alocação de memória, dispositivo e meio de armazenamento não transitório legível por máquina BR112014009915B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/057924 WO2013062543A1 (en) 2011-10-26 2011-10-26 Load boot data

Publications (2)

Publication Number Publication Date
BR112014009915A2 BR112014009915A2 (pt) 2017-04-25
BR112014009915B1 true BR112014009915B1 (pt) 2021-06-15

Family

ID=48168214

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014009915-4A BR112014009915B1 (pt) 2011-10-26 2011-10-26 Método para alocação de memória, dispositivo e meio de armazenamento não transitório legível por máquina

Country Status (9)

Country Link
US (1) US9858086B2 (pt)
EP (1) EP2771785B1 (pt)
JP (1) JP5860543B2 (pt)
KR (1) KR101846612B1 (pt)
CN (1) CN103999042B (pt)
BR (1) BR112014009915B1 (pt)
IN (1) IN2014CN02917A (pt)
TW (1) TWI509513B (pt)
WO (1) WO2013062543A1 (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5984500B2 (ja) * 2011-11-30 2016-09-06 三菱電機株式会社 情報処理装置、放送受信装置及びソフトウェア起動方法
US20140241071A1 (en) * 2013-02-26 2014-08-28 Seagate Technology Llc Fast Power Loss Recovery By Swapping Boot and Recovery Data Sets in a Memory
US9619330B2 (en) * 2013-10-08 2017-04-11 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
WO2015118436A1 (en) * 2014-02-07 2015-08-13 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device, device, and electronic device
JP6420165B2 (ja) * 2014-02-07 2018-11-07 株式会社半導体エネルギー研究所 半導体装置
US9424134B2 (en) * 2014-03-28 2016-08-23 Intel Corporation Boot management in a non-volatile memory system
US9823972B2 (en) * 2014-10-28 2017-11-21 Samsung Electronics Co., Ltd. Mobile flash storage boot partition and/or logical unit shadowing
US10055236B2 (en) * 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
US10474473B2 (en) * 2017-04-11 2019-11-12 Intel Corporation Technology to facilitate rapid booting with high-speed and low-speed nonvolatile memory
TWI698748B (zh) * 2019-01-02 2020-07-11 慧榮科技股份有限公司 資料儲存裝置、存取裝置及資料處理方法
WO2023035233A1 (en) * 2021-09-10 2023-03-16 Schneider Electric It Corporation Cost effective firmware upgrade algorithm for resource constrained microprocessors

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100313996B1 (ko) 1998-01-08 2001-12-28 구자홍 컴퓨터시스템의바이오스데이터저장장치및방법
JPH11353229A (ja) 1998-06-05 1999-12-24 Canon Inc メモリ制御装置およびメモリ制御方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
US6205548B1 (en) 1998-07-31 2001-03-20 Intel Corporation Methods and apparatus for updating a nonvolatile memory
US20100146256A1 (en) * 2000-01-06 2010-06-10 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
US6748457B2 (en) * 2000-02-03 2004-06-08 Realtime Data, Llc Data storewidth accelerator
US7082495B2 (en) * 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP2004145730A (ja) * 2002-10-25 2004-05-20 Ricoh Co Ltd 画像形成装置
US7206971B2 (en) * 2003-04-07 2007-04-17 Lsi Logic Corporation Selectable and updatable computer boot memory
EP1634168A1 (en) 2003-06-03 2006-03-15 Koninklijke Philips Electronics N.V. Booting from non-volatile memory
US7412565B2 (en) * 2003-08-18 2008-08-12 Intel Corporation Memory optimization for a computer system having a hibernation mode
JP2005107608A (ja) 2003-09-29 2005-04-21 Nec Electronics Corp 電子機器、不揮発性メモリ及び不揮発性メモリのデータ書き換え方法
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7469336B2 (en) 2005-06-24 2008-12-23 Sony Corporation System and method for rapid boot of secondary operating system
JP4736593B2 (ja) 2005-07-25 2011-07-27 ソニー株式会社 データ記憶装置、データ記録方法、記録及び/又は再生システム、並びに、電子機器
US20080109612A1 (en) * 2006-11-02 2008-05-08 Jones Kevin M Dynamic Code Relocation for Low Endurance Memories
KR101406493B1 (ko) * 2007-07-19 2014-06-12 엘지전자 주식회사 플래쉬 메모리를 구비한 컴퓨터 및 플래쉬 메모리의구동방법
US8239611B2 (en) * 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US8621144B2 (en) 2008-06-26 2013-12-31 Intel Corporation Accelerated resume from hibernation in a cached disk system
US8417928B2 (en) * 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
US8407398B2 (en) 2008-10-01 2013-03-26 Lenovo (Singapore) Pte. Ltd. Cache mapping for solid state drives
US9282277B2 (en) 2008-12-19 2016-03-08 Seagate Technology Llc Storage device and controller to selectively activate a storage media
TW201027324A (en) * 2009-01-14 2010-07-16 Giga Byte Tech Co Ltd Embedded electronic device free from being stuck in update failure and method of making the same
US8327076B2 (en) 2009-05-13 2012-12-04 Seagate Technology Llc Systems and methods of tiered caching
TWI460588B (zh) 2009-07-17 2014-11-11 Toshiba Kk Memory management device and memory information processing device
CN102103508A (zh) * 2009-12-22 2011-06-22 鸿富锦精密工业(深圳)有限公司 电子装置及其开机与关机方法
JP2011198133A (ja) * 2010-03-19 2011-10-06 Toshiba Corp メモリシステムおよびコントローラ

Also Published As

Publication number Publication date
KR20140082734A (ko) 2014-07-02
EP2771785A4 (en) 2015-06-10
CN103999042B (zh) 2018-03-30
BR112014009915A2 (pt) 2017-04-25
US20140250295A1 (en) 2014-09-04
EP2771785B1 (en) 2022-12-21
KR101846612B1 (ko) 2018-04-06
TWI509513B (zh) 2015-11-21
JP2014534521A (ja) 2014-12-18
JP5860543B2 (ja) 2016-02-16
US9858086B2 (en) 2018-01-02
TW201329868A (zh) 2013-07-16
WO2013062543A1 (en) 2013-05-02
IN2014CN02917A (pt) 2015-07-03
CN103999042A (zh) 2014-08-20
EP2771785A1 (en) 2014-09-03

Similar Documents

Publication Publication Date Title
BR112014009915B1 (pt) Método para alocação de memória, dispositivo e meio de armazenamento não transitório legível por máquina
US10866797B2 (en) Data storage device and method for reducing firmware update time and data processing system including the device
US9841911B2 (en) Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
TWI573019B (zh) 非揮發性暫時資料處理
TWI507871B (zh) 資料儲存元件、記憶體系統以及使用非揮發性記憶體元件之計算系統
US9063728B2 (en) Systems and methods for handling hibernation data
BR112014015441B1 (pt) conservação de energia por meio de desligamento de canal de memória
US11748001B2 (en) Techniques to predict or determine time-to-ready for a storage device
BR112014009920B1 (pt) Método para segmentar um cache, meio de armazenamento não transitório legível por computador e dispositivo
US20170031833A1 (en) Hibernation based on page source
KR20140007990A (ko) 불휘발성 램을 포함하는 사용자 장치 및 그것의 데이터 관리 방법
CN110727470B (zh) 一种混合式非失性存储装置
JP2013174976A (ja) メモリシステムおよび制御プログラムの更新方法
JP2009205410A (ja) メモリコントローラおよびメモリシステム
US20130080717A1 (en) Information processing apparatus and control method
JP2010257481A (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]
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 26/10/2011, OBSERVADAS AS CONDICOES LEGAIS.