BR112014009920B1 - Método para segmentar um cache, meio de armazenamento não transitório legível por computador e dispositivo - Google Patents

Método para segmentar um cache, meio de armazenamento não transitório legível por computador e dispositivo Download PDF

Info

Publication number
BR112014009920B1
BR112014009920B1 BR112014009920-0A BR112014009920A BR112014009920B1 BR 112014009920 B1 BR112014009920 B1 BR 112014009920B1 BR 112014009920 A BR112014009920 A BR 112014009920A BR 112014009920 B1 BR112014009920 B1 BR 112014009920B1
Authority
BR
Brazil
Prior art keywords
software
segment
segments
type
cache information
Prior art date
Application number
BR112014009920-0A
Other languages
English (en)
Other versions
BR112014009920A2 (pt
Inventor
Fred Charles Iii Thomas
Walter A Gaspard
Chi W So
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 BR112014009920A2 publication Critical patent/BR112014009920A2/pt
Publication of BR112014009920B1 publication Critical patent/BR112014009920B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • G06F12/0871Allocation or management of cache space
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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

Abstract

método para segmentar um cache, meio de armazenamento não transitório legível por computador e dispositivo. as concretizações aqui se relacionam a segmentação e fixação de uma primeira memória não volátil para armazenar informações de cache. em uma concretização, a primeira memória não volátil é dividida em uma pluralidade de segmentos. então, um primeiro tipo de software de uma pluralidade de tipos de software é fixado a um primeiro segmento de uma pluralidade de segmentos. o primeiro segmento fixado armazena as informações de cache associadas ao primeiro tipo de software.

Description

Histórico da invenção
[001] Um dispositivo de computação pode incluir um dispositivo de armazenamento rápido, como uma memória flash, tendo um tempo de acesso relativamente rápido. O dispositivo de armazenamento rápido pode ser usado como cache para armazenar informações frequentemente acessadas. No entanto, o dispositivo de armazenamento rápido pode ser relativamente mais caro por unidade de armazenamento do que outros tipos de dispositivos de armazenamento que têm tempo de acesso relativamente lento, como uma unidade de disco rígido (HDD).
[002] Como resultado, o dispositivo de armazenamento rápido pode ter capacidade de armazenamento relativamente pequena. Se o dispositivo de armazenamento rápido ficar lotado, o desempenho do dispositivo de computação pode ser afetado. Os fabricantes são desafiados a utilizar mais eficientemente o dispositivo de armazenamento rápido para melhorar 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 1 é um exemplo de diagrama de blocos de um dispositivo que tem uma primeira memória não volátil incluindo uma pluralidade de segmentos;
[005] A figura 2 é um exemplo de diagrama de blocos da primeira memória não volátil da figura 1;
[006] A figura 3 é um exemplo de diagrama de blocos de um dispositivo de computação, incluindo instruções para segmentação e fixando uma primeira memória não volátil;
[007] A figura 4 é um exemplo de diagrama de fluxo de um método para segmentação e fixando uma primeira memória não volátil; e
[008] A figura 5 é outro exemplo de diagrama de fluxo de um método para segmentação e fixando uma primeira memória não volátil; e
Descrição detalhada
[009] 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 um perito na arte 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 concretizações com detalhes desnecessários. Em outros casos, os processos, as estruturas e as técnicas conhecidas podem ser mostrado sem detalhes desnecessários, para evitar que as concretizações se tornem obscuras.
[0010] 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 informações mais frequentemente acessadas, como informações de cache no dispositivo de armazenamento mais rápido, em vez de no dispositivo de armazenamento mais lento. Por exemplo, os sistemas podem ser mostrados em diagramas de blocos de modo a não obscurecer concretizações em detalhe desnecessário. O dispositivo de computação pode gravar imediatamente (write- through) ou após um período de tempo (write-back) a informação de cache atualizada do dispositivo de armazenamento mais rápido para o dispositivo de armazenamento mais lento. Por exemplo, arquivos não temporários no dispositivo de armazenamento mais rápido podem ser espelhados no dispositivo de armazenamento mais lento após o cache ter sido liberado.
[0011] 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 frequentemente acessados e utilizados pelo dispositivo de computação. Além disso, como o dispositivo de armazenamento mais rápido é geralmente mais caro do que o dispositivo de armazenamento mais lento por unidade de memória, geralmente a capacidade de armazenamento do dispositivo de armazenamento mais rápido não pode ser aumentada. Por isso, uma capacidade de armazenamento do dispositivo de armazenamento mais rápido pode atuar indiretamente como ponto de estrangulamento para o desempenho do dispositivo de computação. Além disso, como o dispositivo de armazenamento mais rápido é geralmente significativamente mais caro do que o dispositivo de armazenamento mais lento por unidade de memória, geralmente a capacidade de armazenamento do dispositivo de armazenamento mais rápido não pode ser aumentada.
[0012] Além disso, como uma primeira aplicação é continuamente utilizada por um usuário, mais das informações de cache podem ocupar o dispositivo de armazenamento mais rapidamente, permitindo que o primeiro aplicativo tenha cada vez mais capacidade de resposta e/ou melhore o desempenho. Por exemplo, a primeira aplicação pode cada vez mais lançar ou processar mais rapidamente. No entanto, se o usuário começa a usar um segundo aplicativo, essa resposta pode ser perdida já que as esperas de usuários para as informações do cache do segundo aplicativo ocupam cada vez mais o dispositivo de armazenamento mais rápido.
[0013] Além disso, devido à limitada capacidade de armazenamento do dispositivo de armazenamento mais rápido, as informações do cache do primeiro pedido podem ser substituídas pelas informações do cache do segundo pedido. Portanto, se ocorrer a volta de usuário para a primeira aplicação, a primeira aplicação também pode inicialmente ser menos sensível do que antes. Assim, um aplicativo recém- lançado pode não ser imediatamente sensível e/ou a resposta pode ser perdida na volta para uma aplicação utilizada anteriormente, devido à espera para que o dispositivo de armazenamento mais rápido seja preenchido com as informações do cache do aplicativo atualmente em uso.
[0014] As configurações podem permitir que software, como a primeira aplicação, seja imediatamente sensível ou inicialmente mais ágil, mesmo para um primeiro acesso do primeiro pedido ou mesmo se outro aplicativo, como a segunda aplicação, seja muito utilizada entre acessos do primeiro pedido. Por exemplo, em configurações, o dispositivo de armazenamento mais rápido pode ser dividido em segmentos. Pelo menos um destes segmentos, como um primeiro segmento, pode ser fixado a um tipo de software, como a primeira aplicação, de modo que somente armazene informação de cache desse tipo de software. Além disso, as informações do cache desse tipo de software podem preencher o segmento fixado a isso, mesmo antes desse tipo de software ser acessado.
[0015] Por exemplo, o primeiro aplicativo pode ser fixado ao primeiro segmento. Assim, pelo menos algumas das informações do cache do primeiro aplicativo, como o código de software para o lançamento do primeiro aplicativo, podem ser armazenadas no primeiro segmento, mesmo antes do primeiro aplicativo ser acessado. Assim, o primeiro aplicativo pode ser mais sensível, como lançamento mais rápido, mesmo em um primeiro acesso pelo usuário. O usuário pode usar muito o segundo aplicativo e, em seguida, voltar para o primeiro aplicativo. No entanto, o primeiro aplicativo permanecerá sensível, porque a informação de cache do mesmo será retida no primeiro segmento.
[0016] Referindo-nos agora aos desenhos, a figura 1 é um exemplo de diagrama de blocos de um dispositivo 100 que tem uma primeira memória não volátil 140, incluindo uma pluralidade de segmentos 142-1 a 142-n. Exemplos do dispositivo 100 podem incluir um computador portátil, um desktop, um sistema completo, um dispositivo de computação por 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 1, o dispositivo 100 inclui um processador 110, um módulo de segmentação 120, um módulo de fixação 130 e uma primeira memória não volátil 140. A primeira memória não volátil 140 inclui adicionalmente a pluralidade de segmentos 142-1 a 142-n, em que n é um número natural maior do que 1.
[0017] 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átil legível por máquina, tais como dispositivos de armazenamento físico eletrônico, magnético, óptico ou outro que retenha a informação armazenada, mesmo quando não esteja 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.
[0018] 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. Em adição 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. Em configurações, alguns dos módulos 120 e 130 podem ser implementados como dispositivos de hardware, ao passo 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.
[0019] A primeira memória não volátil 140 pode ser usada como cache para armazenar informações de cache. A primeira memória não volátil 140 pode ter uma latência inferior à de uma segunda memória não volátil (não mostrada) do dispositivo 100. A segunda memória não volátil pode armazenar uma pluralidade de tipos de software, tal como o primeiro e/ou segundo tipo de software. A segunda memória não volátil 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 podem incluir uma unidade de disco rígido (HDD) ou uma unidade de armazenamento.
[0020] A informação de cache inclui poderá incluir informação que seja susceptível de ser utilizada novamente ou usada frequentemente, como instruções de software e/ou dados a eles relacionados, como metadados e/ou dados gerados ou modificados pelo usuário ou software. Por exemplo, as informações do cache de uma pluralidade de tipos de software, como o sistema operacional, um aplicativo ou navegador na web, ou de hardware, como o processador 110 ou outra memória, podem ser armazenados na primeira memória não volátil 140 para acesso mais rápido aos dados de cache.
[0021] O módulo de segmentação 120 deve dividir a primeira memória não volátil 140 para a pluralidade de segmentos 142-1 a 142-n. O número de segmentos 142-1 a 142-n e um tamanho de cada um dos segmentos 142-1 a 142-n pode ser variável. O módulo de fixação 130 pode fixação um ou mais da pluralidade de tipos de software a um ou mais da pluralidade de segmentos 142-1 a 142-n. Por exemplo, o módulo de fixação 130 pode fixação o primeiro tipo de software da pluralidade de tipos de software a um primeiro segmento 142-1 da pluralidade de segmentos 142-1 a 142-n.
[0022] O módulo de fixação 130 pode também, por exemplo, fixar o segundo tipo de software da pluralidade de tipos de software a um segundo segmento 142-2 da pluralidade de segmentos de 142-1 até 142-n, o segundo segmento fixado 142-2 para armazenar a informação de cache associada ao segundo tipo de software. O segundo segmento 142-2 pode ser qualquer um da pluralidade de segmentos 142-1 a 142-n que ainda não foi fixado. As concretizações podem incluir para toda a pluralidade de segmentos 142-1 a 142-n sendo fixados. No entanto, geralmente um de uma pluralidade de segmentos 142-1 a 142-n, como um terceiro segmento 142-3, pode permanecer não fixado para agir como um cache geral. Um primeiro exemplo de memória não volátil 140 é explicado em maior detalhe em relação à figura 2 abaixo.
[0023] Fixar um dos segmentos 142-1 a 142-n pode se referir a reservar permanentemente um espaço de memória do segmento preso para um uso específico. Assim, se o primeiro tipo de software ficar fixado ao primeiro segmento 142-1, o primeiro segmento fixado 142-1 pode armazenar as informações de cache associadas ao primeiro tipo de software. Além disso, o primeiro segmento fixado 142-1 pode armazenar qualquer informação de cache que não esteja associado ao primeiro tipo de software, como as do segundo tipo de software. Exemplos de tipos de software podem incluir pelo menos parte de um sistema operacional, um processo como uma inicialização, hibernar, desligar ou estado de vigília, um navegador da web, ferramentas de produtividade, como um programa de edição de imagens ou editor de programas CAD, uma estrutura de software, um aplicativo de usuário, um aplicativo do fornecedor e afins.
[0024] Quando um dos tipos de software, como o primeiro tipo de software, é fixado a um dos segmentos 142-1 a 142-n, como o primeiro segmento 142-1, o módulo de fixação 130 pode armazenar o código de tais arquivos ou endereços de blocos lógicos (LBAs), e/ou dados relativos ao primeiro tipo de software que é mais frequentemente usado para o primeiro segmento 142-1. Por exemplo, o código pode incluir código fonte e/ou de tempo de execução e os dados podem incluir metadados e/ou dados de usuário. Além disso, pelo menos uma parte do código, como o código de lançamento para o primeiro tipo de software, pode ser armazenada no primeiro segmento 142-1, mesmo antes do primeiro tipo de software ser inicializado, para iniciar o primeiro tipo de software mais rapidamente. Em tais casos, as chamadas para o primeiro tipo de software podem ser dirigidas a partir da segunda memória não volátil para a primeira memória não volátil 140.
[0025] Além disso, o primeiro segmento 142-1 pode ser atualizado com o código do primeiro tipo de software quando o primeiro tipo de software é lançado e/ou modificado, bem como quando o primeiro segmento 142-1 é acessado. Alternativamente ou além disso, o primeiro segmento 142-1 pode ser atualizado com base na taxa de utilização do primeiro tipo de software. A taxa de utilização pode referir-se a um número de vezes que o tipo de software é acessado e/ou modificado durante um determinado período de tempo. Por exemplo, o módulo de fixação 130 pode atualizar o primeiro segmento 142-1, se a taxa de utilização do primeiro tipo de software for maior do que uma taxa de utilização limite. O módulo de fixação 130 pode atualizar o primeiro segmento 142-1, com uma versão atualizada do arquivo ou LBA do primeiro tipo de software armazenados na segunda memória não volátil para o primeiro segmento 142-1 para substituir uma versão anterior.
[0026] Enquanto que a figura 1 descreve apenas um único tipo de software a ser fixado a um dos segmentos 142-1 a 142- n, as configurações podem incluir mais do que um tipo de software a ser fixado a um dos segmentos 142-1 a 142-n. O tamanho e número dos segmentos 142-1 a 142-n, bem como o tipo de software que está fixado a qualquer um dos segmentos 142-1 a 142-n podem ser determinados, por exemplo, por um fornecedor, um usuário e/ou os módulos 120 e 130. Além disso, em configurações, qualquer tamanho, número e fixação dos segmentos 142-142-n, pode ser alterado estática ou dinamicamente. O termo estática pode referir-se a uma condição que seja fixa ou imutável. Por exemplo, o tamanho ou tipo de software preso ao segmento estático não pode ser alterado pelo usuário. O módulo de fixação 130 pode determinar qual dos tipos de software deve ser fixado para aos segmentos 142-1 a 142-n com base em taxas de uso dos tipos de software.
[0027] Em um exemplo, o fornecedor pode procurar garantir que dispositivo 100 se inicialize rapidamente. Portanto, o fornecedor pode criar o primeiro segmento 142-1 e estaticamente fixar o processo de sistema operacional, como o processo de inicialização, para o primeiro segmento 142-1 para diminuir um tempo de inicialização do dispositivo 100. Como a primeira memória não volátil 140 pode reter informações sem ser alimentada, as informações do cache relacionado com o processo de inicialização não serão perdidas se o dispositivo 100 for desligado.
[0028] Num outro exemplo, o usuário pode variar o tamanho dos segmentos 142-1 a 142-n, eliminar ou adicionar segmentos de/a 142-1 a 142-n e/ou mudar quais tipos de software estão fixados aos segmentos 142-1 a 142-n através de uma interface gráfica do usuário (GUI). A GUI pode ser executada no sistema operacional do dispositivo 100 e interagir com a primeira memória não volátil 140 através de uma interface de programação de aplicativos (API).
[0029] Ainda em outro exemplo, os módulos de segmentação e/ou de fixação 120 e 130 podem variar dinamicamente de tamanho, número e/ou fixação dos segmentos 142-142-n através de algoritmos adaptativos. Por exemplo, o módulo de segmentação 120 pode diminuir automaticamente o tamanho de um dos segmentos 142-1 a 142-n que não esteja normalmente totalmente cheio ou aumentar o tamanho de outro dos segmentos 142-1 a 142-n que normalmente esteja totalmente preenchido. A capacidade de resposta do tipo de software pode ser função de um tamanho de um segmento fixado aos mesmos. O módulo de segmentação 120 pode também excluir um dos segmentos 142-1 a 142-n que esteja fixado ao tipo de software que não é frequentemente acessado para aumentar o tamanho de outro dos segmentos 142-1 a 142-n que seja frequentemente acessado.
[0030] O dispositivo 100 pode também incluir múltiplas instâncias de um único tipo de software. Por exemplo, o dispositivo 100 pode incluir dois navegadores, como Internet Explorer e Firefox. Nesse caso, as informações do cache de todas as instâncias do tipo de navegador de software podem ser direcionadas para um segmento fixado ao tipo de navegador do software, como um terceiro segmento 142-3. Como alternativa, o usuário, o fabricante e/ou o módulo de fixação 130 pode determinar qual das instâncias do tipo de software deve ser fixada. Por exemplo, o usuário pode fixar o Firefox para o terceiro segmento 142-3 mas não fixar o Internet Explorer para o terceiro segmento 142-3 porque o usuário usa o Firefox mais do Internet Explorer. O módulo de fixação 130 pode determinar qual das instâncias do tipo único de software para o pino com base em taxas de utilização. Por exemplo, o módulo de fixação 130 pode fixar a instância que tenha a maior taxa de uso.
[0031] Numa configuração, o dispositivo 100 pode incluir um controlador de memória (não mostrado) para controlar a primeira memória não volátil 140 e a segunda memória não volátil, como se a primeira memória não volátil 140 e a segunda não memória volátil fizessem parte de uma unidade híbrida. Nesse caso, a segmentação e módulos de fixação 120 e 130 podem comunicar através do sistema operacional com o controlador de memória de pelo menos um e criar e fixar a pluralidade de segmentos 142-1 a 142-n. Por exemplo, os módulos de segmentação e de fixação 120 e 130 podem comunicar com o controlador de memória através de uma interface SATA, interface PATA, arquivos de comando curtos marcados, ou outros mecanismos de comunicação de unidades híbridas.
[0032] Conforme mencionado acima, a informação de memória intermédia será retido na primeira memória não volátil 140, mesmo se o dispositivo 100 estiver em um estado de desligado, ao contrário de uma memória RAM. No entanto, o usuário e/ou fornecedor não pode desejar que todas as informações de cache sejam mantidas. Por exemplo, o usuário e/ou fornecedor pode desejar obter informações confidenciais de cache, como informações pessoais ou de propriedade e/ou que informações desnecessárias, como informações de cache de contexto momentâneo de componentes do dispositivo 100 sejam apagadas. No entanto, o usuário e/ou fornecedor pode ainda procurar manter um resto de informações de cache, como o de processos de inicialização, para inicialização mais rápida do dispositivo 100 ou do aplicativo de usuário, para o lançamento e/ou funcionamento mais rápido do aplicativo do usuário.
[0033] O dispositivo 100 pode incluir um módulo de apagamento (não representado) para apagar individualmente um ou mais da pluralidade de segmentos 142-1 a 142-n, se pelo menos um dos SO deva a entrar num estado de consumo reduzido de energia e o usuário selecionar um ou mais da pluralidade de segmentos a serem apagados. Exemplos do estado de baixo consumo de energia podem incluir o dispositivo 100 entrando em estado de desligado, estado de hibernação, ou um estado de vigília. Por exemplo, o usuário e/ou o fornecedor pode configurar o dispositivo 100 para apagar automaticamente um ou mais dos segmentos 142-1 a 142-n antes de entrar no estado de consumo reduzido de energia. Além disso, o usuário pode apagar um mais dos segmentos 142-1 a 142-n durante o funcionamento do dispositivo 100, como através da GUI. O usuário pode ser notificado após um ou mais dos segmentos 142-1 a 142-n terem sido apagados com sucesso. O módulo de apagamento irá ser explicado em maior detalhe em relação à figura 5 abaixo.
[0034] Todas as operações ou propriedades descritas no que diz respeito ao primeiro e/ou segundo segmentos 142-1 e 142-2 também podem ser aplicadas a qualquer um da pluralidade de segmentos 142-1 a 142-n. Assim, as configurações podem melhorar a capacidade de resposta dos tipos de software, tal como, diminuindo o tempo de lançamento ou de execução, diminuindo os tempos de acesso às informações do cache do mesmo. Além disso, a pluralidade de segmentos 142-1 a 142-n pode permitir que essa capacidade de resposta ocorra em um primeiro lançamento do tipo de software e/ou ser mantida, mesmo quando muda entre software de tipos diferentes. Além disso, o fornecedor pode ser capaz de melhorar o desempenho do dispositivo de fábrica 100 (OBE).
[0035] A figura 2 é um exemplo de diagrama de blocos da primeira memória não volátil 140 da figura 1; Nessa configuração, a primeira memória não volátil 140 inclui seis segmentos 142-1 a 142-6, por exemplo, n é 6. O primeiro segmento 142-1 é mostrado para armazenar a informação relacionada com o cache de um primeiro tipo de software, como um processo de sistema operacional. Exemplos do processo de sistema operacional pode incluir inicialização, hibernação, desligamento ou processo de vigília. O segundo segmento 142-2 é mostrado para armazenar a informação relacionada com o cache de um segundo tipo de software, como uma aplicação de fornecedor. Exemplos de aplicação de fornecedor podem incluir software que vem pré-instalado no dispositivo 100, como software exclusivo ou software específico para um componente do dispositivo 100 hardware.
[0036] O terceiro segmento 142-3 é mostrado para armazenar informações de cache relacionado a um terceiro tipo de software, como um navegador da web. Exemplos de navegadores da web podem incluir software, tais como Internet Explorer, Firefox, Google Chrome, Safari, Opera, etc. O quarto segmento 142-4 é mostrado para armazenar a informação relacionada com o cache de um quarto tipo de software, como aplicação primeiro usuário, e o quinto segmento 142-5 é mostrado para armazenar a informação relacionada com o cache de um quinto tipo de software, como um segunda aplicação do usuário. Exemplos do primeiro e do segundo aplicativo de usuário podem incluir qualquer tipo de aplicativo de usuário instalado e/ou de não fornecedores, como um programa de gráficos, um jogo de vídeo, programas multimídia e outros semelhantes.
[0037] O sexto segmento 142-6 é mostrado como sendo um cache genérico em que nenhuma das informações de cache pode ser armazenadas. O cache geral pode operar de acordo com um algoritmo de cache, como Least Recently Used (LRU), Most Recently Used (MRU) e similares. Assim, neste exemplo, os segmento do primeiro ao quinto, 141-1 a 142-6 estão fixados enquanto o sexto segmento 142-6 permanece não fixado. Por exemplo, nenhuma das informações de cache que não esteja fixado aos segmentos, do primeiro ao quinto, 142-1 a 142-6 pode ser armazenado no sexto segmento 142-6. Além disso, se qualquer dos primeiros cinco segmentos, 142-1 a 142-6, ficar cheio, informações de cache adicional ou estouro dos mesmos, também podem ser armazenados no sexto segmento 142-6, apesar de não estar fixado ao sexto segmento 142-6. Por exemplo, a informação de cache associada com o primeiro tipo de software, como o processo de sistema operacional ou ao segundo tipo de software, como informações de aplicativo de fornecedor, pode ser armazenada no sexto segmento 142-6, se o primeiro ou segundo segmentos 142 -1 ou 142-2 ficar cheio. A informação de cache fixada a um dos segmentos 142-1 a 142-5 não será armazenada no cache geral ou no sexto segmento 142-6 até que o segmento fixado esteja cheio, reduzindo assim a probabilidade de que uma parte da capacidade de armazenamento da primeira memória não volátil 140 seja desperdiçada ou não utilizada.
[0038] Enquanto que a primeira memória não volátil 140 da figura 2 é mostrada como tendo seis segmentos 141-1 a 142-6, configurações da primeira memória não volátil 140 podem ter mais ou menos do que seis segmentos. Além disso, o tamanho e/ou o número de segmentos de uma primeira memória não volátil 140 pode depender da capacidade de armazenamento da primeira memória não volátil 140. Por exemplo, pode haver um tamanho e/ou o número de segmentos maior para uma capacidade de armazenamento maior que o de uma primeira memória não volátil 140 de menor capacidade de armazenamento.
[0039] A figura 3 é um exemplo de diagrama de blocos de um dispositivo de computação 300, incluindo instruções para segmentar e fixar uma primeira memória não volátil 140; Na configuração da figura 3, o dispositivo de computação 300 inclui um processador 310, a primeira memória não volátil 140 e um meio de armazenamento legível por máquina 320. O meio de armazenamento legível por computador 320 inclui ainda instruções 322 e 324 para a segmentação e fixação da primeira memória não volátil 140.
[0040] O dispositivo de computação 300 pode ser, por exemplo, um conjunto de chips, um notebook, um dispositivo de computação por 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 322 324. 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 da figura 1. Alternativamente, a segunda memória não volátil pode ser parte de um meio de armazenamento de leitura 320 por máquina.
[0041] O processador 310 pode ser, pelo menos uma unidade central de processamento (CPU), pelo menos um microprocessador baseado 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 320, ou suas combinações. O processador 310 pode buscar, decodificar, executar as instruções 322 e 324 para implementar a segmentação e fixando uma primeira memória não volátil 140. Como uma alternativa ou além da recuperação e execução de instruções, o processador 310 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 322 324.
[0042] O meio de armazenamento legível por máquina 320 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 320 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, o meio de armazenamento legível por máquina 320 pode ser não transitório. Conforme descrito em pormenor a seguir, o meio de armazenamento legível por computador 320 pode ser codificado com uma série de instruções executáveis para segmentar e fixar uma primeira memória não volátil 140.
[0043] Além disso, as instruções 322 e 324, quando executadas por um processador (por exemplo, um elemento de processamento ou vários elementos de processamento do processador) podem fazer com que o processador execute os processos como o processo das FIGS. 4 ou 5. Por exemplo, as instruções de segmentos 322 podem ser executadas pelo processador 310 para o primeiro segmento de memória não volátil 140 para uma pluralidade de segmentos. As instruções de fixação 324 podem ser executadas pelo processador 310 para fixar um primeiro tipo de software de uma pluralidade de tipos de software a um primeiro segmento 142-1 da pluralidade de segmentos 142-1 a 142-n. O primeiro segmento fixado armazena as informações de cache associadas ao primeiro tipo de software. As instruções de pino 324 também podem ser executadas pelo processador 310 para fixar um segundo tipo de software da pluralidade de tipos de software a um segundo segmento 142-2 da pluralidade de segmentos 142-1 a 142-n. O segundo segmento fixado 142-2 armazena as informações de cache associadas ao segundo tipo de software.
[0044] O meio de armazenamento legível por computador 320 pode incluir também instruções (não mostradas) para armazenar a informação associada com o primeiro tipo de software a um terceiro segmento 142-3 da pluralidade de segmentos 142-1 e 142-n, se o primeiro segmento estiver cheio, e para armazenar a informação associada com o segundo tipo de software ao terceiro segmento 142-3, se o segundo segmento estiver cheio. Uma operação do dispositivo 300 pode ser descrita em mais detalhe com referência às Figs. 4 e 5.
[0045] A figura 4 é um exemplo de diagrama de fluxo de um método 400 para segmentação e fixando a uma primeira memória não volátil. Embora a execução do método 400 seja descrita abaixo com referência ao dispositivo 150, os outros componentes adequados para a execução do método 400 podem ser utilizados, tal como o dispositivo 300. Além disso, os componentes para a execução do método 400 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 de 400. O método 400 pode ser implementado na forma de instruções executáveis armazenadas num meio de armazenamento legível por computador, como o meio de armazenamento 320 e/ou sob a forma de circuitos eletrônicos.
[0046] No bloco 410, o dispositivo 100 divide a primeira memória não volátil 140 para armazenar informações do cache numa pluralidade de segmentos 142-1 a 142-n. O dispositivo 100 pode inicialmente definir um número e um tamanho de uma pluralidade de segmentos 142-1 a 142-n com base no bloco 410 em pelo menos uma especificação de fornecedor, comando do usuário e tamanho da primeira memória não volátil 140. Pelo menos um entre os números e tamanhos da pluralidade de segmentos 142-1 a 142-n pode alterar dinamicamente no bloco 410 com base em pelo menos um dos comandos de usuário e um padrão de utilização de uma pluralidade de tipos de software.
[0047] Em seguida, no bloco 420, o dispositivo 100 é fixado a um primeiro tipo de software de uma pluralidade de tipos de software para um primeiro segmento 142-1 da pluralidade de segmentos 142-1 a 142-n. O primeiro segmento 142-1 armazena as informações de cache associadas com o primeiro tipo de software. Conforme observado acima, o dispositivo 100 pode fixa de forma dinâmica um ou mais da pluralidade de tipos de software a um de uma pluralidade de segmentos 142-1 a 142-n com base em pelo menos um padrão de utilização de uma pluralidade de tipos de software e um comando de usuário no bloco 420.
[0048] Por exemplo, o dispositivo 100 pode fixar um segundo tipo de software a um segundo segmento 142-2 da pluralidade de segmentos 142-1 a 142-n. O dispositivo 100 não pode fixar a todo a pluralidade de segmentos 142-1 a 142-n no bloco 420, como um terceiro segmento 142-3 da pluralidade de segmentos 142-1 a 142-n. Além disso, no bloco 420, o dispositivo 100 pode armazenar a informação de cache associada ao primeiro tipo de software do terceiro segmento 142-3, se o primeiro segmento 142-1 estiver cheio e as informações do cache associadas ao segundo tipo de software ao terceiro segmento 142-3, que o segundo segmento 142-2 estiverem cheias.
[0049] O dispositivo 100 também pode determinar uma taxa de utilização da primeira e da segunda aplicações classificadas como primeiro tipo de software, no bloco 420 e fixar dinamicamente uma das primeira e segunda aplicações ao primeiro segmento fixado 142-1 com base em determinada taxa de utilização. O dispositivo 100 atualiza o primeiro segmento 142-1 fixado se o primeiro tipo de software for pelo menos uma dos modificado e lançado no bloco 420. O dispositivo 100, lança pelo menos um do primeiro tipo de software a partir do primeiro segmento fixado 142-1 e dirige as chamadas para o primeiro tipo de software para o primeiro segmento fixado 142-1.
[0050] A figura 5 é outro exemplo de diagrama de fluxo de um método 500 para segmentação e fixação de uma primeira memória não volátil. Embora a execução do método 500 seja descrita abaixo com referência ao dispositivo 100, os outros componentes adequados para a execução do método 500 podem ser utilizados, tal como o dispositivo 300. Além disso, os componentes para a execução do método 500 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 de 500. O método 500 pode ser implementado na forma de instruções executáveis armazenadas num meio de armazenamento legível por máquina, como o meio de armazenamento 320 e/ou sob a forma de circuitos eletrônicos.
[0051] O bloco 510 da figura 5 pode ser semelhante ao bloco 410 da figura 4 e o bloco 520 da figura 5 pode ser semelhante ao bloco 420 da figura 4. Por exemplo, no bloco 510, o dispositivo 100 divide a primeira memória não volátil 140 para armazenar informações de cache numa pluralidade de segmentos, de 142-1 a 142-n. Depois, no bloco 520, o dispositivo 100 fixa um primeiro tipo de software de uma pluralidade de tipos de software a um primeiro segmento 142-1 da pluralidade de segmentos 142-1 a 142-n. O primeiro segmento 142-1 armazena as informações de cache associada com o primeiro tipo de software. No bloco 530, o dispositivo 100 apaga individualmente um ou mais da pluralidade de segmentos 142-1 a 142-n, se pelo menos um do dispositivo 100 entrar num estado de consumo reduzido de energia e um usuário selecionar um ou mais da pluralidade de segmentos de 142-1 a 142-n para ser apagado. Por exemplo, o módulo de apagamento do dispositivo 100 pode receber um comando do usuário para apagar imediatamente um primeiro segmento 142-1 da pluralidade de segmentos 142-1 a 142-n e/ou do sistema operacional do dispositivo 100 para apagar o primeiro segmento 142-1 antes que o dispositivo 100 entre no estado de consumo reduzido de energia.
[0052] No entanto, se a primeira memória não volátil 140 incluir uma memória flash ou SSD, a primeira memória não volátil 140 pode ser apenas apagável em unidades de blocos que não correspondam a uma estrutura de endereçamento da pluralidade de segmentos de 142-1 a 142-n. Por exemplo, apagar um dos blocos pode apagar apenas uma parte do primeiro segmento 142-1 e/ou apagar parte do segundo segmento 142-2 da pluralidade de segmentos 142-1 a 142-n. A fim de assegurar que só o primeiro segmento 142-1 seja apagado, o módulo de apagamento pode comunicar com um controlador de flash (não mostrado) da primeira memória não volátil 140.
[0053] O controlador de flash pode manter um sistema de arquivos flash que seja usado para fornecer procedimentos para armazenar, recuperar e atualizar dados, bem como gerir o espaço disponível na primeira memória não volátil 140. Por exemplo, como os blocos podem ser explicitamente apagados antes de ser gravados, o controlador de flash pode apagar blocos não utilizados enquanto o dispositivo 100 está ocioso para economizar tempo. Além disso, o controlador flash pode distribuir gravações uniformemente para toda a primeira memória não volátil 140. Para reduzir ou evitar o desgaste por nivelamento, que ocorre quando um dos blocos se desgasta por serem repetidamente regravados.
[0054] O módulo de apagamento pode comunicar com o controlador flash para determinar a correlação entre o mapeamento da pluralidade de segmentos 142-1 a 142-n e os blocos da primeira memória não volátil 140. Além disso, o módulo de eliminação pode comunicar com o controlador flash para reter a informação de cache da pluralidade de segmentos 142-1 a 142-n que não estão sendo apagados. Por exemplo, se apagar o primeiro segmento 142-1 também apaga pelo menos parte do segundo segmento 142-2, como se o primeiro e o segundo segmentos 142-1 e 142-2 da compartilhe partes do mesmo bloco, o módulo de apagamento pode se comunicar com o controlador flash para gravar primeiro as informações do cache do segundo segmento 142-2 do bloco a ser apagado para outro local, como para outro bloco de memória. Alternativamente, as informações de cache do terceiro segmento 142-3 do bloco a ser apagado podem ser salvas em outra memória, como o meio de armazenamento de 320 ou segunda memória não volátil. Então, o módulo de apagamento pode comunicar com o controlador flash para apagar o primeiro segmento 142-1, apagando um ou mais blocos que armazenam a informação de cache do primeiro segmento 142-1. Depois disso, o módulo de apagamento pode acionar o controlador flash para voltar a gravar as informações de cache do terceiro segmento 142-3, dependendo de onde as informações de cache do terceiro segmento 142-3 foram armazenadas.
[0055] Além disso, no bloco 530, o módulo de apagamento pode se comunicar com o sistema operacional para adiar a entrada do dispositivo 100 no estado de consumo reduzido de energia até que o apagamento de um ou mais segmentos 142-1 a 142-n seja completado. No entanto, se o apagamento de um ou mais da pluralidade de segmentos 142-1 a 142-n não for completado antes que o dispositivo 100 entre no estado de consumo reduzido de energia, o módulo de apagamento deve continuar a apagar a um ou mais da pluralidade de segmentos 142-1 a 142-n quando o dispositivo 100 retornar a um estado de consumo aumentado de energia, como no estado de inicialização. Além disso, um ou mais da pluralidade de segmentos 142-1 a 142-n que estão sendo apagados podem não estar disponíveis para armazenar a informação de cache até que o apagamento de um ou mais da pluralidade de segmentos 142-1 a 142-n esteja concluído. Ainda que configurações tenham o procedimento descrito acima no que diz respeito ao apagamento, as configurações não se limitam aos mesmos. Por exemplo, o dispositivo 100 também pode realizar procedimentos semelhantes para a substituição e/ou criptografar/decriptografar informações do cache de pelo menos um dos segmentos 142-1 a 142-n.
[0056] De acordo com o exposto, as configurações oferecem um método e/ou dispositivo para segmentar e fixar uma primeira memória não volátil para armazenar informações de cache. Por exemplo, a informação do cache de um primeiro tipo de software pode ser fixada a um primeiro segmento de uma pluralidade de segmentos. Assim, em configurações, o primeiro tipo de software pode ser imediatamente responsivo ou inicialmente mais sensível, mesmo para um primeiro acesso do primeiro tipo de software ou mesmo se um segundo tipo de software for muito utilizado entre acessos do primeiro tipo de software.

Claims (11)

1. Método para segmentar um cache, caracterizada pelo fato de compreender: dividir uma primeira memória não volátil (140) para armazenar informações de cache numa pluralidade de segmentos (142-1 a 142-n); e fixar um primeiro tipo de software de uma pluralidade de tipos de software a um primeiro segmento (142-1) de uma pluralidade de segmentos, e fixar um segundo tipo de software de uma pluralidade de tipos de software a um segundo segmento (142-2) da pluralidade de segmentos (142-1 a 142-n), em que o primeiro segmento fixado (142-1) armazena as informações de cache associadas ao primeiro tipo de software; e o segundo segmento fixado (142-2) armazena as informações de cache associadas ao segundo tipo de software; e em que a fixação não fixar um terceiro segmento (142-3) de uma pluralidade de segmentos (141-1 a 142-n), a fixação armazenar as informações de cache associadas ao primeiro tipo de software no terceiro segmento (142-3), se o primeiro segmento (142-1) estiver cheio, e o módulo de fixação armazena a informação de cache associada ao segundo tipo de software ao terceiro segmento (142-3), se o segundo segmento (142-2) estiver cheio.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro e o segundo tipos de software serem pelo menos um de um tipo de aplicativo e um tipo de processo relacionado a um sistema operacional (OS), o aplicativo ser pelo menos um navegador da web, um aplicativo de usuário e um aplicativo de fornecedor; e o processo ser pelo menos um processo de inicialização, hibernação, desligamento e vigília.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de inicialmente a divisória definir um número e tamanho da pluralidade de segmentos (142-1 a 142- n) com base em pelo menos uma especificação de fornecedor, comando do usuário um tamanho da primeira memória não volátil (140), a divisória muda dinamicamente pelo menos um entre o número e o tamanho de uma pluralidade de segmentos (142-1 a 142-n) com base em pelo menos um dos comandos de usuário e um padrão de utilização de uma pluralidade de tipos de software.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de a fixação fixar dinamicamente um de uma pluralidade de tipos de software a um de uma pluralidade de segmentos (142-1 a 142-n) com base em pelo menos um de um padrão de utilização da pluralidade de tipos de software e um comando de usuário.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de a fixação determinar uma taxa de utilização do primeiro e do segundo aplicativo classificado como primeiro tipo de software, e a fixação fixa dinamicamente um entre o primeiro e o segundo aplicativo ao primeiro segmento (142-1) fixado com base na taxa de utilização determinada.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de a fixação atualizar o primeiro segmento fixado (142-1) se o primeiro tipo de software for pelo menos um dos modificados e lançados, e a fixação de pelo menos um dos lançamentos do primeiro tipo de software a partir do primeiro segmento fixado (142-1) e dirige as chamadas do primeiro tipo de software para o primeiro segmento fixado.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de compreender ainda: apagar um ou mais da pluralidade de segmentos (142-1 a 142-n) individualmente, se pelo menos um de um dispositivo, incluindo a primeira memória não volátil (140) for entrar num estado de consumo reduzido de energia e um usuário selecionar um ou mais da pluralidade de segmentos (142-1 a 142-n) para ser apagado.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de o apagamento deve continuar a apagar um ou mais da pluralidade de segmentos (142-1 a 142-n), quando o dispositivo regressar a um estado de consumo maior de energia, se o apagamento de um ou mais da pluralidade de segmentos (142-1 a 142-n) não for completado antes que o dispositivo entre no estado de consumo reduzido de energia, e a uma ou mais pluralidade de segmentos (142-1 a 142-n) sendo apagadas não estarem disponíveis para armazenar as informações de cache até o apagamento estar concluído.
9. Meio de armazenamento não transitório legível por computador, caracterizado pelo fato de armazenar instruções que, se executado por um processador de um dispositivo, fazer com que o processador execute o método conforme definido em qualquer uma das reivindicações 1 a 8.
10. Dispositivo, caracterizado pelo fato de compreender: uma primeira memória não volátil (140) para armazenar informação de cache; um módulo de segmentação para dividir a primeira memória não volátil (140) em uma pluralidade de segmentos (142-1 a 142-n); e um módulo de fixação para fixar um primeiro tipo de software de uma pluralidade de tipos de software a um primeiro segmento (142-1) de uma pluralidade de segmentos, e fixar um segundo tipo de software da pluralidade de tipos de software a um segundo segmento (142-2) da pluralidade de segmentos (142-1 a 142-n), onde o primeiro segmento fixado (142-1) armazena as informações de cache associadas ao primeiro tipo de software e o segundo segmento fixado (142-2) armazena as informações de cache associadas ao segundo tipo de software; e em que o módulo de fixação não fixa um terceiro segmento (1423) da pluralidade de segmentos (142-1 a 142-n), o terceiro segmento armazena informações de cache associadas com o primeiro tipo de software, se o primeiro segmento (142-1) estiver cheio, e o terceiro segmento (142-3) armazena as informações de cache associadas com o segundo tipo de software, se o segundo segmento (142-2) estiver cheio.
11. Dispositivo, de acordo com a reivindicação 10, caracterizado pelo fato de compreende ainda: uma segunda memória não volátil para armazenar o primeiro tipo de software; e um controlador de memória para controlar a primeira e a segunda memória não voláteis, onde a segmentação e módulos de fixação se comunicam através de um sistema operacional (SO) com o controlador de memória para pelo menos um de criar e fixar a pluralidade de segmentos.
BR112014009920-0A 2011-10-26 2011-10-26 Método para segmentar um cache, meio de armazenamento não transitório legível por computador e dispositivo BR112014009920B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/057913 WO2013062542A1 (en) 2011-10-26 2011-10-26 Segmented caches

Publications (2)

Publication Number Publication Date
BR112014009920A2 BR112014009920A2 (pt) 2017-04-25
BR112014009920B1 true BR112014009920B1 (pt) 2021-06-15

Family

ID=48168213

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014009920-0A BR112014009920B1 (pt) 2011-10-26 2011-10-26 Método para segmentar um cache, meio de armazenamento não transitório legível por computador e dispositivo

Country Status (9)

Country Link
US (1) US9697115B2 (pt)
EP (1) EP2771795B1 (pt)
JP (1) JP2014534520A (pt)
KR (1) KR101842321B1 (pt)
CN (1) CN103999062A (pt)
BR (1) BR112014009920B1 (pt)
IN (1) IN2014CN02958A (pt)
TW (2) TWI498811B (pt)
WO (1) WO2013062542A1 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613982B1 (en) 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver
US9542324B1 (en) * 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US9268692B1 (en) * 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
WO2018151847A1 (en) * 2017-02-16 2018-08-23 Tenta, Llc System and method for creating encrypted virtual private network hotspot
US11122013B2 (en) * 2017-02-16 2021-09-14 Emerald Cactus Ventures, Inc. System and method for encrypting data interactions delineated by zones
US11165751B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for establishing simultaneous encrypted virtual private networks from a single computing device
US20180336131A1 (en) * 2017-05-22 2018-11-22 Dell Products L.P. Optimizing Memory/Caching Relative to Application Profile
TWI649652B (zh) * 2017-12-29 2019-02-01 國科美國研究實驗室 Fast and safe data storage device and method

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0216654A (ja) * 1988-07-05 1990-01-19 Hitachi Ltd キャッシュメモリ制御方法
EP0389151A3 (en) * 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
EP0475639A3 (en) 1990-08-31 1992-06-03 Kawasaki Steel Corporation Hard disk emulator
JPH0511933A (ja) * 1991-07-08 1993-01-22 Kawasaki Steel Corp ハードデイスクエミユレータ及びその固定キヤツシユエリア割付方法
JPH06282488A (ja) * 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JP3750163B2 (ja) * 1995-10-16 2006-03-01 株式会社日立製作所 キャッシュディスク制御
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH10333984A (ja) 1997-05-30 1998-12-18 Matsushita Electric Ind Co Ltd 記録再生装置
US20020112116A1 (en) * 2000-11-17 2002-08-15 Nelson Mark Edward Methods, systems, and computer program products for storing data in collections of tagged data pieces
US7089371B2 (en) 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
JP4095840B2 (ja) * 2002-06-25 2008-06-04 株式会社日立製作所 キャッシュメモリ管理方法
JP2004118305A (ja) * 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
KR100970933B1 (ko) 2003-07-26 2010-07-20 엘지전자 주식회사 오퍼레이팅 시스템의 고속 부팅장치 및 방법
JP4819369B2 (ja) 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20070005898A1 (en) * 2005-06-30 2007-01-04 William Halleck Method, apparatus and system for task context cache replacement
KR100755702B1 (ko) 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US20080005462A1 (en) 2006-06-30 2008-01-03 Mosaid Technologies Incorporated Method of configuring non-volatile memory for a hybrid disk drive
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7554855B2 (en) 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
JP2008250718A (ja) 2007-03-30 2008-10-16 Toshiba Corp 不揮発性キャッシュメモリを用いた記憶装置とその制御方法
US7890691B2 (en) 2007-09-28 2011-02-15 Intel Corporation Memory cache sharing in hybrid hard disk
EP2243085A1 (en) * 2008-02-10 2010-10-27 Rambus Inc. Segmentation of flash memory for partial volatile storage
US7895374B2 (en) 2008-07-01 2011-02-22 International Business Machines Corporation Dynamic segment sparing and repair in a memory system
US8214596B2 (en) * 2008-09-30 2012-07-03 Intel Corporation Apparatus and method for segmented cache utilization
US8407398B2 (en) 2008-10-01 2013-03-26 Lenovo (Singapore) Pte. Ltd. Cache mapping for solid state drives
US20100088459A1 (en) 2008-10-06 2010-04-08 Siamak Arya Improved Hybrid Drive
US20120102261A1 (en) 2009-07-07 2012-04-26 Harley Burger Systems and Methods for Tiered Non-Volatile Storage

Also Published As

Publication number Publication date
TW201329858A (zh) 2013-07-16
WO2013062542A8 (en) 2014-07-03
TWI498811B (zh) 2015-09-01
TWI574203B (zh) 2017-03-11
US9697115B2 (en) 2017-07-04
EP2771795A1 (en) 2014-09-03
IN2014CN02958A (pt) 2015-07-03
EP2771795A4 (en) 2015-08-05
CN103999062A (zh) 2014-08-20
BR112014009920A2 (pt) 2017-04-25
EP2771795B1 (en) 2016-06-01
JP2014534520A (ja) 2014-12-18
WO2013062542A1 (en) 2013-05-02
TW201546712A (zh) 2015-12-16
KR101842321B1 (ko) 2018-03-26
US20140297937A1 (en) 2014-10-02
KR20140091532A (ko) 2014-07-21

Similar Documents

Publication Publication Date Title
BR112014009920B1 (pt) Método para segmentar um cache, meio de armazenamento não transitório legível por computador e dispositivo
TWI507871B (zh) 資料儲存元件、記憶體系統以及使用非揮發性記憶體元件之計算系統
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
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
US9128845B2 (en) Dynamically partition a volatile memory for a cache and a memory partition
US11030093B2 (en) High efficiency garbage collection method, associated data storage device and controller thereof
US9547594B2 (en) Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
KR101818599B1 (ko) 비휘발성 임시 데이터 핸들링
US7941692B2 (en) NAND power fail recovery
WO2017152392A1 (zh) 一种闪存设备的刷新方法和装置
JP5860543B2 (ja) ブートデータのロード
KR20120081351A (ko) Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
US20080109612A1 (en) Dynamic Code Relocation for Low Endurance Memories
KR102281750B1 (ko) 비-휘발성 메모리에서 데이터 유효성 추적
US11144448B2 (en) Memory sub-system for managing flash translation layers table updates in response to unmap commands
Yoon et al. Optimized memory-disk integrated system with DRAM and nonvolatile memory
KR20220052353A (ko) 조정된 파라미터를 사용한 메모리 컴포넌트의 가비지 수집
JP2013174976A (ja) メモリシステムおよび制御プログラムの更新方法
Ryu et al. Fast Application Launch on Personal {Computing/Communication} Devices
Chang et al. Efficient wear leveling in NAND flash memory
CN114981786A (zh) 高速缓存媒体管理
JP2023507222A (ja) ラインキャッシュミスの効果的な回避
JP2010152517A (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.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 12A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2746 DE 22-08-2023 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.