BR112014013606B1 - Método, dispositivo e sistema para distribuir armazenamentos de dados entre memória volátil e memória não volátil - Google Patents
Método, dispositivo e sistema para distribuir armazenamentos de dados entre memória volátil e memória não volátil Download PDFInfo
- Publication number
- BR112014013606B1 BR112014013606B1 BR112014013606-8A BR112014013606A BR112014013606B1 BR 112014013606 B1 BR112014013606 B1 BR 112014013606B1 BR 112014013606 A BR112014013606 A BR 112014013606A BR 112014013606 B1 BR112014013606 B1 BR 112014013606B1
- Authority
- BR
- Brazil
- Prior art keywords
- volatile
- static
- data
- memory
- segments
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 187
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000013500 data storage Methods 0.000 title description 9
- 230000003068 static effect Effects 0.000 claims abstract description 61
- 238000013507 mapping Methods 0.000 claims abstract description 9
- 230000008859 change Effects 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 3
- 229920000682 polycarbomethylsilane Polymers 0.000 claims 17
- 230000004044 response Effects 0.000 claims 2
- 239000003039 volatile agent Substances 0.000 claims 1
- 239000012782 phase change material Substances 0.000 abstract 1
- 238000002135 phase contrast microscopy Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 25
- 239000000872 buffer Substances 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 230000005291 magnetic effect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- -1 poly(N-vinylcarbazole) Polymers 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- JWZQBEUBJXSDPP-UHFFFAOYSA-N 5-cyclohexyl-6-methylpyrimidine-2,4-diamine Chemical compound CC1=NC(N)=NC(N)=C1C1CCCCC1 JWZQBEUBJXSDPP-UHFFFAOYSA-N 0.000 description 1
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 101100072002 Arabidopsis thaliana ICME gene Proteins 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 229920003227 poly(N-vinyl carbazole) Polymers 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4072—Drivers or receivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
- G11C14/0045—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0054—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
- G11C14/0081—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is a magnetic RAM [MRAM] element or ferromagnetic cell
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0054—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
- G11C14/009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
método e dispositivo para distribuir armazenamentos de código e de dados entre memória volátil e memória não volátil. a presente invenção refere-se a um método, dispositivo, e sistema para distribuir armazenamentos de código e de dados entre memória volátil e não volátil. em uma concretização, o método inclui armazenar um ou mais segmentos de código estático de um aplicativo de software em uma memória com mudança de estado com o dispositivo de troca (pcms), armazenando um ou mais segmentos de dados estáticos do aplicativo de software no dispositivo pcms, e armazenando um ou mais segmentos de dados voláteis do aplicativo de software em um dispositivo de memória volátil. o método então aloca uma tabela de mapeamento de endereço com pelo menos um primeiro ponteiro de endereço para apontar para cada um dos um ou mais segmentos de código estático, pelo menos um segundo ponteiro de endereço para apontar para cada um dos um ou mais segmentos de dados estáticos e pelo menos um terceiro ponteiro de endereço para apontar para cada um dos um ou mais segmentos de dados voláteis.
Description
[001] A presente invenção refere-se a alocar uma combinação de memória volátil e memória não volátil para armazenamento de código e de seções de dados de um aplicativo de software.
[002] A performance da memória e os requerimentos de capacidade continuam a aumentar através de vários aspectos da indústria de computação. Em adição, os requerimentos de capacidade de memória e de custo de memória se tornaram um componente significativo de capacidade e custo gerais, respectivamente, de um dado sistema de computação variando de um smartphone até um servidor. Subsistemas de memória e de armazenamento podem aumentar ou diminuir a performance geral de um dispositivo de computação dependendo de implementação específica. Devido a ser geralmente desejável possuir dispositivos de computação de performance mais rápida que utilizem menos energia e custem menos, existe uma ampla variedade de projetos de subsistemas de memória e de armazenamento que tentam maximizar a performance percebida pelo usuário final enquanto minimizando custo e consumo de energia.
[003] Os sistemas operacionais atuais proporcionam uma interface de programação de aplicativos (API) que permite que aplicativos e controladores solicitem memória a partir de reservas de memória paginável e não paginável. Reservas de memória não pagináveis são tipicamente utilizadas para dados que não devem ser paginados para uma unidade de armazenamento em massa (por exemplo, páginas que hardware é esperado para acessar durante execução do aplicativo). Desde que atualmente todas as páginas alocadas são acessadas quando na DRAM, assim, não existe informação adicional requerida no momento da alocação de página de que é esperado que os dados que vão ser armazenados dentro de uma memória temporária alocada são apenas para leitura ou para leitura e gravação.
[004] A seguinte descrição e desenhos acompanhantes são utilizados para ilustrar concretizações da invenção. Nos desenhos:
[005] A FIG. 1 ilustra uma concretização de uma disposição de memória que permite a um sistema de computador utilizar uma estrutura de memória híbrida para armazenamento de código e dados para processadores, bem como para sistemas incorporados.
[006] A FIG. 2 descreve uma concretização de espaços de memória volátil e não volátil quando utilizando um código híbrido de aplicativo de software e sistema de armazenamento de dados.
[007] A FIG. 3 é um fluxograma de uma concretização de um processo para alocar memória volátil e não volátil para código e seções de dados de um aplicativo de software.
[008] A FIG. 4 ilustra uma concretização de um sistema de computador que inclui um controlador incorporado que possui acesso direto a um dispositivo PCMS interno a um subsistema E/S.
[009] A FIG. 5 descreve uma concretização de espaços de memória volátil e não volátil em um subsistema E/S quando utilizando um código de firmware híbrido e sistema de armazenamento de dados.
[0010] Várias concretizações descritas abaixo resolvem os desafios de utilização de código e dados introduzidos para os subsistemas de memória e armazenamento de um dispositivo de computação por subdividir o requerimento de performance e o requerimento de capacidade entre as diversas tecnologias de memória. O foco desta abordagem está em proporcionar performance com uma quantidade relativamente pequena de uma memória de alta velocidade, tal como uma memória de acesso aleatório dinâmica (DRAM) enquanto implementando a maior parte da memória do sistema utilizando uma memória não volátil significativamente mais barata e mais densa. Várias concretizações descritas abaixo definem configurações de plataforma que permitem organizações hierárquicas do subsistema de memória para o uso de certo tipo de memória não volátil, especificamente referida como memória de acesso aleatório não volátil (NVRAM) ampliar a memória volátil, por um ou mais processadores gráficos em um dispositivo de computação. O uso da NVRAM na hierarquia de memória adicionalmente permite implementações de armazenamento em massa em memória não volátil como um substituto para controladores de armazenamento em massa padrão.
[0011] A FIG. 1 ilustra uma concretização de uma disposição de memória que permitem a um sistema de computador utilizar uma estrutura de memória híbrida para armazenamento de código e dados para processadores, bem como para sistemas incorporados.
[0012] Uma unidade central de processamento (CPU), uma unidade de processamento gráfico (GPU), e um processador incorporado podem ter acesso a ambas as formas de memória, volátil e não volátil, de acordo com várias concretizações. A CPU e a GPU também podem ser referidas como "processadores" ao longo deste documento. Estas diferentes nomenclaturas são utilizadas.
[0013] A FIG. 1 apresenta várias unidades lógicas que podem ou não estar localizadas nas mesmas matrizes semicondutoras ou em matrizes diferentes, ou no mesmo pacote semicondutor ou pacote semicondutor diferente. As unidades lógicas na FIG. 1 incluem uma CPU que possui um ou mais núcleos e uma cache, uma GPU que também possui um ou mais núcleos e uma cache, um subsistema de memória, e um subsistema de E/S. Estas unidades são separadas por linhas pontilhadas para apresentar a possibilidade de que cada um destes blocos lógicos possa ou não ser alocado na mesma matriz e/ou pacote semicondutor.
[0014] Voltando-se agora para os elementos detalhados da FIG. 1, é apresentada uma CPU 100. Esta CPU inclui um ou mais núcleos 102. Apesar de não apresentado, cada núcleo pode internamente incluir uma ou mais caches de instrução / dados, unidades de execução, memórias temporárias de busca antecipada, filas de instruções, unidades de cálculo de endereço de ramificação, decodificadores de instrução, unidades de ponto flutuante, unidades de retirada etc. Em outras concretizações que não são apresentadas, o sistema pode incluir várias CPUs, cada uma com seu próprio conjunto de unidades lógicas que são exibidas na FIG. 1.
[0015] A CPU 100 inclui pelo menos uma cache de nível mais baixo, tal como a cache 104. Esta pode ser uma cache de propósito geral que é capaz de armazenar uma quantidade significativa de dados recuperados a partir das localizações de memória na memória volátil 106 e / ou em uma NVRAM 108. Em diferentes concretizações, a cache 104 pode ser compartilhada entre todos os núcleos ou cada núcleo pode possuir sua própria cache de nível mais baixo.
[0016] A CPU 100 também pode incluir lógica adicional que não é apresentada, a qual coordena e opera pelo menos o(s) núcleo(s) 102. Em algumas concretizações, esta lógica adicional pode ser referida como um agente doméstico. Este agente doméstico pode incluir, por exemplo, uma unidade de controle de energia (PCU). A PCU pode incluir lógica e componentes necessários para regular o estado de energia do(s) núcleo(s) 102, dentre outras tarefas.
[0017] De acordo com várias concretizações, o sistema de computador na FIG. 1 adicionalmente inclui uma GPU 110. A GPU 110 também pode incluir um ou mais núcleos 112. Cada núcleo pode incluir uma ou mais unidades de execução e uma ou mais caches de instruções e de dados utilizadas para alimentar as unidades de execução com informação para processamento. Adicionalmente, a GPU 110 pode conter outras unidades de lógica gráficas que não são apresentadas na FIG. 1, tal como uma ou mais unidades de processamento de vértice, unidades de sintetização, unidades de processamento de mídia, e codecs (codificadores / decodificadores), entre outros. Para propósito de simplicidade, a lógica específica dentro do(s) núcleo(s) 112, bem como outras unidades lógicas relacionadas com gráficos dentro da GPU 110 não são apresentadas.
[0018] Igualmente, podem existir uma ou mais caches de nível mais baixo na GPU 110, tal como a cache 114. Esta cache pode ser utilizada como uma cache de propósito geral ou como uma cache específica para um ou mais tipos particulares de dados gráficos (por exemplo, dados de vértice). Outras caches de nível mais baixo não são apresentadas, apesar de que em algumas concretizações várias caches, tal como cache 114, existem dentro da GPU 110.
[0019] De acordo com várias concretizações, um controlador de vídeo 116 é comunicativamente acoplado à GPU 110. O controlador de vídeo 124 recebe informação a ser exibida a partir de um dispositivo de vídeo (por exemplo, um monitor, uma televisão, um projetor, etc.). Em várias concretizações, o controlador de vídeo 116 especificamente recebe memórias temporárias de quadro. Cada memória temporária de quadro consiste de uma imagem compreendendo pixels que são então interpretados pelo controlador de vídeo e a imagem é alimentada para o dispositivo de vídeo para visualização. Dependendo da frequência de atualização do dispositivo de vídeo, as memórias temporárias de quadro podem ser alimentadas para o controlador de vídeo 116 um certo número de vezes por segundo. Por exemplo, uma taxa de atualização de 60 Hz utiliza 60 imagens (memórias temporárias de quadro de informação de imagem) por segundo. Diferentes dispositivos de vídeo podem utilizar taxas de atualização de frequência mais elevada e simplesmente reamostrar a mesma memória temporária de quadros duas ou mais vezes antes de utilizar uma nova memória temporária de quadros de informação para exibição.
[0020] Um subsistema de memória 118 também está presente na FIG. 1. Existe um controlador de memória volátil 120, o qual pode ser utilizado para proporcionar acesso à memória volátil 106. O controlador de memória volátil 120, o qual é integrado no pacote da CPU ou separado do pacote de CPU em diferentes concretizações, pode receber uma solicitação de acesso à memória a partir de um núcleo 102 da CPU ou de um núcleo GPU 112 e direcionar esta solicitação para a memória volátil 106. Igualmente, o controlador de memória não volátil (NV) 122 pode receber uma solicitação de acesso à memória a partir de um núcleo CPU 102 ou de um núcleo GPU 112 e direcionar esta solicitação para a NVRAM 108. Em algumas concretizações, o controlador de memória não volátil 120 e o controlador de memória não volátil 122 são integrados em um controlador de memória maior. Em outras concretizações, eles são controladores separados.
[0021] Em várias concretizações, um subsistema de entrada / saída (E/S) 124 está presente no sistema na FIG. 1 para se comunicar com dispositivos de E/S, tal como dispositivo(s) de E/S 126. Dentro do subsistema de E/S 124, um ou mais adaptadores de E/S 128 estão presentes para traduzir um protocolo de comunicação hospedeiro utilizado dentro da CPU 100 para um protocolo compatível com dispositivos de E/S particulares. Alguns dos protocolos onde adaptadores podem ser utilizados para tradução incluem Interconexão de Componentes Periféricos (PCI)-Expresso (PCI-E), 3.0; Barramento Serial Universal (USB), 3.0; Conexão Serial com Tecnologia Avançada (SATA), 3.0; Interface para Sistemas de Microcomputadores (SCSI), Ultra-640; e Instituto de Engenheiros Elétricos e Eletrônicos (IEEE) 1394 "Firewire"; entre outros.
[0022] Adicionalmente, podem existir um ou mais adaptadores de protocolo de E/S sem o uso de fios. Exemplos de protocolos sem o uso de fios, entre outros, são utilizados em redes de área pessoal, tal como IEEE 802.15 e Bluetooth, 4.0; redes de área local sem o uso de fios, tal como IEEE 802.11 baseadas em protocolos sem o uso de fios; e protocolos celulares.
[0023] Um dispositivo de flash de Sistema Básico de Entrada / Saída (BIOS) 130 pode adicionalmente estar presente no sistema para proporcionar um conjunto de instruções de inicialização quando o sistema inicia ou reinicia. Para o dispositivo 130 de flash BIOS, alguns dos protocolos que os adaptadores de E/S 128 podem traduzir incluem Interface Serial Periférica (SPI) e Microwire, entre outros.
[0024] Retornando para a NVRAM 108, uma visão geral da NVRAM é proporcionada abaixo.
[0025] Existem muitas possibilidades de escolhas tecnológicas para a NVRAM, incluindo PCM, Memória e Chave de Mudança de Fase (PCMS) (a última sendo uma implementação mais específica da primeira), memória persistente endereçável por byte (BPRAM), memória de classe de armazenamento (SCM), memória universal, Ge2Sb2Te5, célula de metalização programável (PMC), memória resistiva (RRAM), célula RESET (amorfa), célula SET (cristalina), PCME, memória Ovshinsky, memória ferroelétrica (também conhecida como memória de polímero e poli(N-vinilcarbazol), memória ferromagnética (também conhecida como Spintronics, SPRAM (RAM de torque de transferência de giro), STRAM (RAM de tunelamento de spin), memória magneto-resistiva, memória magnética, memória magnética de acesso aleatório (MRAM), e Silício-óxido-nitreto de óxido de silício (SONOS, também conhecida como memória dielétrica).
[0026] A NVRAM possui as seguintes características:Ela mantém seu conteúdo mesmo se energia for removida, similar à memória FLASH utilizada em discos de estado sólido (SSD), e diferente da SRAM e DRAM, as quais são voláteis; ela possui consumo geral de energia mais baixo do que as memórias voláteis, tais como SRAM e DRAM; ela possui acesso aleatório similar à SRAM e DRAM (também conhecida como endereçável aleatoriamente);ela é regravável e pode ser apagada em um nível mais baixo de granularidade (por exemplo, nível de byte) do que FLASH encontrada em SSDs (a qual pode apenas ser regravada e apagada um "bloco" de cada vez - no mínimo 64 Kbyte em tamanho para FLASH NOR e 16 Kbyte para FLASH NAND);ela é utilizada como uma memória do sistema e alocada toda ou como uma parte do espaço de endereços de memória do sistema;ela é capaz de ser acoplada à CPU através de um barramento (também de forma variada referida como uma interconexão ou ligação) utilizando um protocolo transacional (um protocolo que suporta identificadores de transação (IDs) para distinguir diferentes transações de modo que estas transações possam completar fora de ordem) e permitindo acesso a um nível de granularidade pequeno o suficiente para suportar a operação da NVRAM como memória do sistema (por exemplo, tamanho de linha de cache tal como 64 ou 128 bytes). Por exemplo, o barramento / interconexão pode ser um barramento de memória (por exemplo, um barramento de taxa dupla de dados (DDR), tal como DDR3, DDR4, etc.) através do qual é executado um protocolo transacional oposto ao protocolo não transacional que é normalmente utilizado. Como outro exemplo, o barramento pode ser um através do qual é normalmente executado um protocolo transacional (um protocolo transacional nativo), tal como um barramento PCI expresso (PCIE), um barramento de interface de gerenciamento de área de trabalho (DMI), ou qualquer outro tipo de barramento utilizando um protocolo transacional e com um tamanho de carga útil transacional pequeno o suficiente (por exemplo, tamanho de linha de cache tal como 64 ou 128 bytes); eela também possui uma ou mais das seguintes características:ela possui velocidade de gravação mais rápida do que as tecnologias de memória / armazenamento não volátil, tal como FLASH;ela possui velocidades de leitura muito altas (mais rápidas do que FLASH e próxima ou equivalente às velocidades de leitura DRAM);ela é diretamente gravável (ao invés de requerendo apagamento (gravação por cima com 1s) antes de gravar dados tal como memória FLASH utilizada em SSDs); e/ouela permite um número maior de gravações antes de falha (mais do que a ROM de inicialização e a FLASH utilizada em SSDs).
[0027] Como mencionado acima, em contraste com a memória FLASH, a qual deve ser regravada e apagada como um "bloco" completo por vez, o nível de granularidade no qual a NVRAM é acessada em qualquer dada implementação pode depender do controlador de memória particular e do barramento de memória particular ou de outro tipo de barramento com o qual a NVRAM está acoplada. Por exemplo, em algumas implementações onde a NVRAM é utilizada como memória do sistema, a NVRAM pode ser acessada na granularidade de uma linha de cache (por exemplo, uma linha de cache de 64 bytes ou 128 bytes), não obstante uma habilidade inerente a ser acessada na granularidade de um byte, devido à linha de cache ser o nível no qual o subsistema de memória acessa memória. Assim, quando a NVRAM é implementada dentro de um subsistema de memória, ela pode ser acessada no mesmo nível de granularidade que a DRAM utilizada no mesmo subsistema de memória. Ainda assim, o nível de granularidade de acesso para a NVRAM pelo controlador de memória e pelo barramento de memória ou por outro tipo de barramento é menor do que o tamanho de bloco utilizado pela Flash e o tamanho de acesso do controlador e barramento do subsistema de E/S.
[0028] A NVRAM também pode incorporar algoritmos de nivelação de uso para considerar o fato de que as células de armazenamento começam a esgotar após uma série de acessos de gravação, especialmente onde uma série significativa de gravações pode ocorrer tal como em uma implementação de memória do sistema. Desde que blocos de contagem de ciclo maior são mais propensos a esgotar desta maneira, o nivelamento de uso espalha gravações através das células de memória distantes por trocar endereços de blocos de contagem com alto ciclo por blocos de contagem com baixo ciclo. Observe que a maior parte de troca de endereços tipicamente é transparente para programas aplicativos devido ao fato de ser manuseada por hardware, por software de nível mais baixo (por exemplo, um controlador ou sistema operacional de nível baixo), ou por uma combinação dos dois.
[0029] A NVRAM é distinguível a partir de outras tecnologias de memória / armazenamento de instruções e dados em termos de suas características e/ou sua aplicação na hierarquia de memória / armazenamento. Por exemplo, a NVRAM é diferente de: memória estática de acesso aleatório (SRAM), a qual pode ser utilizada para caches de processador de nível 0 e nível 1 dedicadas a cada núcleo dentro de um processador e uma cache de nível mais baixo (LLC) compartilhada pelos núcleos dentro de um processador; memória dinâmica de acesso aleatório (DRAM) configurada como uma cache interna à matriz do processador (por exemplo, na mesma matriz que o processador), configurada como uma ou mais caches externas a uma matriz do processador (por exemplo, no mesmo pacote ou em um pacote diferente da matriz do processador), ou memória geral do sistema externa ao pacote do processador; ememória FLASH / disco magnético / disco ótico aplicado como armazenamento em massa; ememória, tal como memória FLASH ou outra memória somente para leitura (ROM) aplicada como memória de firmware (a qual pode se referir a ROM de inicialização, BIOS Flash, e/ou TPM Flash).
[0030] Na FIG. 1, a NVRAM 108 pode ser utilizada como armazenamento de instruções e dados que são diretamente endereçáveis por uma CPU 100 e está apta a acompanhar de modo suficiente a CPU 100 em contraste à FLASH / disco magnético / disco ótico aplicado ao armazenamento em massa. A capacidade de ser diretamente endereçável se refere a um processador, tal como uma CPU ou GPU, estando apto a enviar solicitações de memória para a NVRAM como se ele fosse DRAM padrão (por exemplo, através de armazenamento de memória e comandos de carga padrão). Além disso, como discutido acima e descrito em detalhes abaixo, a NVRAM 108 pode ser colocada em um barramento de memória e pode se comunicar diretamente com um controlador de memória que, por sua vez, se comunica diretamente com o processador 100.
[0031] A NVRAM 108 pode ser combinada com outras tecnologias de armazenamento de instruções e de dados (por exemplo, DRAM) para formar memórias híbridas (também conhecidas como PCM e DRAM colocadas juntas; memória de primeiro nível e memória de segundo nível; FLASH (FLASH e DRAM)). Observe que pelo menos algumas das tecnologias acima, incluindo PCM / PCMS podem ser utilizadas para armazenamento em massa ao invés de, ou em adição à memória do sistema, e não precisam ser de acesso aleatório, endereçável por byte ou diretamente endereçável pelo processador quando aplicadas desta maneira.
[0032] Por conveniência de explicação, a maior parte restante do pedido irá se referir a "NVRAM" ou, mais especificamente, "PCM" ou "PCMS" como a seleção de tecnologia para a memória não volátil. Assim, os termos NVRAM, PCM, e PCMS podem ser utilizados de modo intercambiável na discussão seguinte. Entretanto, deve ser percebido que, como discutido acima, diferentes tecnologias também podem ser utilizadas.
[0033] A "Memória volátil" 106 é um nível intermediário de memória configurada em combinação com a NVRAM 108 que possui latência mais baixa de acesso de leitura / gravação em relação à NVRAM 108 e / ou latência de acesso de leitura / gravação mais simétrica (isto é, possuindo tempos de leitura que são aproximadamente equivalentes aos tempos de gravação). Em algumas concretizações, a memória volátil 106 possui latência de gravação significativamente mais baixa do que a NVRAM 108, mas similar (por exemplo, ligeiramente mais baixa ou igual) latência de leitura; por exemplo, a memória volátil 106 pode ser uma memória volátil tal como memória volátil de acesso aleatório (VRAM) e pode compreender uma DRAM ou outra memória baseada em capacitor de alta velocidade. Observe, entretanto, que os princípios subjacentes da invenção não estão limitados a estes tipos específicos de memória. Adicionalmente, a memória volátil 106 pode possuir uma densidade relativamente mais baixa e / ou pode ser mais cara de fabricar do que a NVRAM 108.
[0034] Em algumas concretizações, a memória volátil 106 é configurada entre a NVRAM 108 e as caches do processador interno. Em algumas das concretizações descritas abaixo, a memória volátil 106 utilizada para mascarar as limitações de performance e / ou de utilização da NVRAM 108 incluindo, por exemplo, limitações de latência de leitura / gravação e limitações de degradação de memória. Nestas implementações, a combinação da memória volátil 106 e NVRAM 108 opera em um nível de performance que é próximo, equivalente ou excede um sistema que utiliza apenas a DRAM como memória do sistema.
[0035] Em diferentes concretizações, a memória volátil 106 pode estar localizada na matriz do processador, localizada externa à matriz do processador ou em uma matriz separada localizada no pacote da CPU, localizada fora do pacote da CPU com uma ligação de largura de banda alta com o pacote da CPU, por exemplo, em um módulo de memória de memória em linha dual (DIMM), em um condutor / mezanino, ou em uma placa mãe de computador. Na FIG. 1, a memória volátil 106 é apresentada estando localizada externa ao pacote da CPU. A memória volátil 106 pode estar comunicativamente acoplada com a CPU 100 utilizando uma única ou múltiplas ligações com grande largura de banda, tais como DDR ou outras ligações de grande largura de banda transacional. Um acoplamento comunicativo de dispositivos se refere a ser acoplado através de uma forma de ligação elétrica, ótica, sem o uso de fios ou outra forma de ligação ou combinação de ligações para permitir que informação seja transferida e recebida entre os dispositivos que estão acoplados entre si. Em algumas concretizações, o acoplamento é direto e permite que informação passe diretamente a partir do primeiro dispositivo para o segundo dispositivo e, potencialmente, vice-versa. Em outras concretizações, o acoplamento é indireto e requer que a informação seja passada através de um ou mais dispositivos adicionais que residem ao longo da rota que a informação adota enquanto sendo transferida entre os dois dispositivos comunicativamente acoplados em questão.
[0036] De acordo com várias concretizações, é revelada uma solução de memória híbrida em um sistema de computador combinando armazenamento DRAM e PCMS ou outro tipo de NVRAM pode ser utilizada para acessar tanto as seções de código como de dados de um aplicativo de software sendo executado. Como mencionado acima, apesar de outras formas de NVRAM poderem ser aplicáveis para estas soluções, as especificações técnicas da PCMS a tornam uma tecnologia candidata de qualidade para memória / armazenamento não volátil. Assim, os exemplos apresentados irão utilizar a memória PCMS, apesar de que em outras concretizações, outra forma de NVRAM pode ser utilizada.
[0037] Em um sistema de computador que inclui uma quantidade de memória / armazenamento PCMS, tanto os aplicativos de software como um sistema operacional executando no sistema de computador pode tirar proveito da capacidade de leitura rápida do de um dispositivo PCMS. As leituras rápidas podem permitem ao aplicativo de software e ao sistema operacional executarem código diretamente a partir da PCMS no processador.
[0038] Em várias concretizações, o sistema operacional executando no sistema de computador pode estar ciente do armazenamento PCMS e irá executar binários do sistema operacional a partir do espaço de endereços PCMS físicos. Esta execução é diferente de outras formas de memória não volátil, tal como soluções de armazenamento em massa, que por sua vez requerem código de carregamento (binários) em uma memória volátil, tal como DRAM, antes de executar o código.
[0039] O sistema operacional irá produzir uma interface para o aplicativo de software e para qualquer software controlador operando no sistema operacional. De acordo com várias concretizações, o aplicativo e/ou o controlador irão enviar solicitações para o sistema operacional por memórias temporárias para armazenar código binário executável que não será modificado durante a execução. O sistema operacional então concede estas memórias temporárias e proporciona pointers para as mesmas no espaço de endereços de memória alocado do aplicativo de software e / ou do controlador. Devido aos binários nestas memórias temporárias não serem modificados, existe geralmente uma indicação / designação explícita originada pelo software, controlador, e / ou sistema operacional para fazer com que as memórias temporárias não possam ser modificadas.
[0040] O sistema operacional executando no sistema pode tratar o armazenamento PCMS como uma DRAM física e mapear partes dos arquivos que constituem o sistema operacional e o aplicativo de software dentro de uma unidade de gerenciamento de memória (MMU). Quando na MMU, estas localizações de arquivo podem ser traduzidas e armazenadas de modo similar às entradas da memória temporária de tradução de endereços (TLB) e endereçadas como se elas fossem localizações de memória DRAM padrão. A partir do espaço de endereços lógicos de um sistema operacional para a localização de endereço físico do dispositivo PCMS podem existir várias passagens de página para primeiro obter a partir de um endereço lógico que o sistema operacional utiliza, até um endereço físico de plataforma (PPA) que o hardware de gerenciamento de memória subjacente geral utiliza para a memória DRAM principal, e finalmente até um endereço físico direto do dispositivo PCMS. Podem existir uma ou mais tabelas de mapeamentos de endereço 132 (também conhecidas como tabelas de dissimulação de endereço) para realizar isto. Em várias concretizações, as tabelas de mapeamento de endereço 132 são armazenadas na DRAM (memória volátil 106).
[0041] Além do armazenamento de código binário na PCMS, existem outras partes de informação do aplicativo de software, do controlador e do sistema operacional que podem ser armazenadas adequadamente no espaço físico da PCMS. Especificamente, certas seções de dados (oposto ao código) do software também podem ser armazenadas na PCMS quando os dados são estáticos ou próximos de estático. Assim, em várias concretizações, existe pelo menos uma designação de bit por elemento de dado que significa se o elemento de dados particular a ser armazenado é ou não estático. Os elementos de dados designados estáticos podem ser armazenados em memórias temporárias estáticas (isto é, que não podem ser modificadas), ao passo que os elementos de dados designados não estáticos podem ser armazenados nas memórias temporárias voláteis (isto é, modificáveis). Esta designação particular por memória temporária permite ao OS:• Determinar quando alocar uma memória temporária no armazenamento PCMS vs DRAM real, onde a memória temporária está localizada na DRAM se a memória temporária estiver designada como volátil e alocada na PCMS quando a memória temporária estiver designada como estática. • Quando alocando uma memória temporária na DRAM, o sistema operacional pode simplesmente seguir um procedimento de alocação de página herdado.• Quando alocando uma memória temporária na PCMS (isto é, uma memória temporária não requerendo modificação), o sistema operacional pode mapear o espaço de endereços físicos do dispositivo PCMS em suas tabelas de página para permitir acessos diretos de memória para o dispositivo PCMS.• Opcionalmente, o sistema operacional pode impor à característica de somente para leitura de uma memória temporária por estabelecer apenas permissões de leitura para a memória temporária PCMS.
[0042] A FIG. 2 descreve uma concretização de espaços de memória volátil e não volátil quando utilizando um sistema de armazenamento de código e de dados do aplicativo de software.
[0043] Na FIG. 2, um espaço de memória DRAM 200 (por exemplo, 4 GB de espaço) e um espaço de memória NVRAM 202 (por exemplo, 64 GB de espaço) são apresentados. Podem existir espaços de memória adicionais, incluindo um espaço de memória lógico no qual o sistema operacional controla, mas estes não são apresentados por propósitos de clareza. Um sistema operacional 204 é residente no espaço de memória DRAM 200 e está sendo executado na CPU 100. Em várias concretizações, o software do controlador 206 também é residente no espaço de memória DRAM 200 e está executando na CPU 100 em combinação com o sistema operacional 204. Em algum ponto durante a operação, o sistema operacional 204 carrega um aplicativo de software 208 dentro do espaço de memória da DRAM 200. A operação de carga inclui o sistema operacional 204 reservando espaço de memória para o aplicativo de software 208. O espaço de memória reservado inclui espaço que é utilizado para armazenar o código executável binário ("código") do aplicativo de software, bem como espaço que é utilizado para armazenar quaisquer dados que podem ser modificados ("dados") que o aplicativo de software 208 utiliza para execução.
[0044] Como mencionado acima, de acordo com várias concretizações, o código é geralmente estático, à medida que arquivos binários não alteram durante a execução. Por outro lado, dados podem ser alterados ou eles podem não alterar, dependendo de um tipo de dados. Por exemplo, dados estáticos (por exemplo, constantes) não irão alterar, mas dados voláteis (por exemplo, uma variável armazenada que é recalculada baseada em entrada continuamente alterada) podem alterar. Assim, código e dados estáticos podem ser colocados em uma seção apenas para leitura da memória, ao passo que dados voláteis seriam geralmente colocados em uma seção de leitura / gravação da memória. Em várias concretizações, pode ser dada a oportunidade ao aplicativo de software 208 de predefinir as partes de dados e códigos com um bit de tipo de armazenamento. Por exemplo, se uma estrutura que é definida pelo aplicativo de software como volátil (significando que os dados na estrutura podem ser modificados), o aplicativo de software pode rapidamente retransmitir isto por estabelecer um bit "volátil" para esta estrutura. Então, quando o sistema operacional 204 está alocando espaço de memória para armazenar a estrutura, ele irá ver o bit "volátil" como estabelecido e saber alocar a estrutura na seção de dados voláteis do espaço de memória DRAM. Alternativamente, se uma variável de dados é declarada como um valor constante, o aplicativo de software pode limpar o bit "volátil" para informar ao sistema operacional que aloque os dados como estáticos.
[0045] Em um sistema baseado em PCMS, é totalmente plausível armazenar o código e os dados estáticos no espaço de memória PCMS (isto é, NVRAM) enquanto ainda armazenando dados voláteis na memória DRAM. Assim, de acordo com várias concretizações, o sistema operacional instala uma tabela de mapeamento de endereço 132 que permanece residente no espaço de memória DRAM 200. O sistema operacional, enquanto carregando o aplicativo de software 208, especificamente armazena o código (por exemplo, código 1 (210) e código 2 (212)) e os dados estáticos 214 no espaço da memória NVRAM 202 enquanto armazenando os dados voláteis 216 no espaço da memória DRAM 200. Uma vez carregado, o sistema operacional cria um grupo de ponteiros de código 218 na tabela de mapeamento de endereço 132 para apontar para cada bloco de código armazenado no espaço de memória NVRAM 202. O sistema operacional 204 também cria um grupo de ponteiros de dados 220 na tabela de mapeamento de endereço 132 para apontar para cada bloco de dados armazenados no espaço da memória NVRAM 202, bem como para cada bloco de dados armazenado no espaço da memória DRAM 200.
[0046] A FIG. 3 é um fluxograma de uma concretização de um processo para alocar memória volátil e não volátil para seções de código e de dados de um aplicativo de software. O processo é executado por lógica de processamento que pode compreender hardware, software, firmware, ou uma combinação de duas ou mais destas formas listadas de lógica de processamento.
[0047] O processo começa com lógica de processamento recebendo uma solicitação para alocar memória para uma parte de um aplicativo de software (bloco de processamento 300). A solicitação pode vir na forma de uma decisão automatizada ou iniciada pelo usuário para executar o aplicativo de software. Uma vez que seja solicitado ativar e executar o aplicativo de software, a lógica de processamento recebe código (tal como um arquivo executável binário) e elementos de dados (tal como um arquivo de dados) do aplicativo de software para carregar em uma ou mais formas de memória para possuir acesso durante a execução do aplicativo de software.
[0048] Para uma dada parte do aplicativo de software a ser alocada, a lógica de processamento então determina se a parte compreende código ou dados (bloco de processamento 302). Se a parte compreender código, então a lógica de processamento aloca um segmento do espaço de memória NVRAM para armazenamento do código (bloco de processamento 304). Se a parte compreender dados, então a lógica de processamento em seguida determina se os dados são voláteis (bloco de processamento 306).
[0049] Em várias concretizações, existe um bit "volátil" que pode ser estabelecido ou limpo para qualquer dada parte dos dados para informar para a lógica de processamento se os dados podem alterar durante a execução do aplicativo de software. Em outras concretizações que não são apresentadas, não existe bit volátil disponível, mas, ao invés disso, a lógica de processamento carrega todos os dados originalmente no espaço de memória NVRAM e toda vez que uma parte dos dados é regravada, a lógica de processamento então determina que esta parte é volátil e move este elemento de dados a partir de uma localização de armazenamento alocada na NVRAM para uma localização de armazenamento alocada na DRAM.
[0050] Retornando ao bloco 306, se o bit volátil não for estabelecido, então a lógica de processamento aloca um segmento do espaço de memória NVRAM para armazenamento da parte dos dados estáticos (bloco de processamento 308). Alternativamente, se o bit volátil for estabelecido, então a lógica de processamento aloca um segmento do espaço de memória DRAM para armazenamento dos dados voláteis (bloco de processamento 310).
[0051] Em qualquer caso, uma vez que espaço de memória é alocado (a partir de qualquer um dos blocos de processamento 304, 308, ou 310), então a lógica de processamento atualiza a tabela de mapeamento de endereço residente na DRAM com um ponteiro para o segmento de memória alocado em uma de três seções alocadas da memória (isto é, a seção de dados voláteis, a seção de dados estáticos, ou a seção de código).
[0052] Apesar de o aplicativo de software ser utilizado como o exemplo, esta utilização híbrida particular de NVRAM e DRAM não está limitada ao software do aplicativo. O sistema operacional e os binários do controlador também podem ser divididos de modo similar e as partes estáticas serem colocadas na NVRAM enquanto as partes voláteis são colocadas na DRAM. Isto proporciona benefício significativo em termos de reduzir a quantidade de tempo requerido para reiniciar a partir de estados de energia baixa - partes do sistema operacional e / ou dos controladores não iriam precisar ser copiados novamente na DRAM quando reiniciando a partir de um estado hibernado para disco.
[0053] Várias plataformas de computação possuem vários processadores incorporados que são utilizados para uma grande variedade de aplicações. Um processador incorporado também pode ser referido como um "microcontrolador". Exemplos de processadores incorporados incluem mecanismos gerenciáveis (os quais gerenciam a segurança e as comunicações fora de banda de um sistema de computador) e controladores gráficos incorporados, entre outros. Estes controladores incorporados utilizam firmware durante o tempo de execução como instruções para executar várias de suas funcionalidades principais. Este firmware é tipicamente armazenado na memória flash (por exemplo, BIOS) ou na unidade de armazenamento em massa (por exemplo, unidade de disco rígido, unidade de estado sólido, etc.) do sistema de computador. Na inicialização do sistema, o firmware é geralmente carregado em uma SRAM interna no controlador incorporado para execução.
[0054] Existem questões significativas com o armazenamento do firmware externamente na unidade de disco rígido da memória flash do sistema, tais como:• O firmware pode ser adulterado, de modo que microcontroladores incorporados geralmente são requeridos para executar uma autenticação no tempo de carregamento para verificar a integridade do firmware antes da execução.• O firmware armazenado tanto na memória flash como na unidade de disco rígido do sistema está sujeito à corrupção, a qual pode incapacitar a funcionalidade dos microcontroladores incorporados.• A execução deve ser precedida por uma cópia do firmware na SRAM local, o que consome tempo.
[0055] Para endereçar estas limitações dos controladores incorporados, de acordo com várias concretizações, um armazenamento baseado em PCMS é empacotado com o controlador incorporado. A lógica utilizada para efetivamente substituir a flash do sistema e / ou unidade de disco rígido do sistema por uma parte localizada da memória PCMS poderia incluir:• Uma pequena quantidade de armazenamento baseado em PCMS dentro do componente acessível pelo controlador incorporado.• Um segmento de armazenamento baseado em PCMS estabelecido à parte para o código de firmware.• Um segmento de armazenamento baseado em PCMS estabelecido à parte para armazenar dados persistentes que um aplicativo poderia desejar armazenar através das sessões de inicialização (por exemplo, chaves de gerenciamento de direitos digitais, gravações de utilização de filme off-line, etc.)• Um módulo de verificação criptográfica que permita que a imagem de firmware PCMS seja gravada por cima somente se a imagem for autêntica.• Uma SRAM opcional pode ser adicionada ao mecanismo incorporado para armazenamento de dados em tempo de execução (por exemplo, variáveis locais, uma pilha, etc.) se a latência de gravação da PCMS adversamente afetar a performance.• Durante a inicialização do sistema de computador, o controlador incorporado pode executar o código de firmware diretamente a partir do armazenamento PCMS interno. Esta execução a partir do PCMS diretamente é feita possível devido à latência de leitura da PCMS ser compatível com a DRAM ao contrário da flash ou de uma unidade de disco rígido do sistema.
[0056] A FIG. 4 ilustra uma concretização de um sistema de computador que inclui um controlador incorporado que possui acesso direto a um dispositivo PCMS interno a um subsistema de E/S.
[0057] O sistema de computador apresentado na FIG. 4 pode ser geralmente equivalente ao sistema de computador descrito na FIG. 1, com exceção das alterações no subsistema de E/S 124. Assim, para descrição detalhada de outros componentes, veja FIG. 1. Dentro do subsistema de E/S 124, existe um controlador incorporado 400 e uma memória interna PCMS 402 apresentados na FIG. 4. A PCMS interna 402 armazena informação estática relacionada com firmware que o controlador incorporado 400 executa. Durante a inicialização, o controlador incorporado 400 pode diretamente executar código de firmware a partir de uma região de código somente para leitura (R-O) 404 armazenada na PCMS interna 402. Adicionalmente, a PCMS interna 402 também pode armazenar outras informações 406, tais como dados fixos (isto é, estáticos), chaves para aplicativos de segurança (por exemplo, gerenciamento de direitos digitais), bem como informação de utilização a ser salva para um tempo futuro (por exemplo, um número de vezes que um usuário assistiu a um dado filme no sistema de computador). Esta informação armazenada 406 são dados que são inteiramente estáticos ou raramente atualizados e também pode incluir dados que requerem propriedades não voláteis através da ciclagem de energia do sistema de computador.
[0058] Adicionalmente, em várias concretizações, o controlador incorporado 400 possui uma parte da memória SRAM interna 408 para armazenamento de variáveis locais, de uma pilha, e/ou de outra informação que dinamicamente altera através da execução do firmware. Assim, esta informação se beneficia das capacidades de gravação rápida da SRAM, oposto a ser limitada às velocidades de gravação da PCMS.
[0059] De acordo com várias concretizações, existe adicionalmente um módulo de hardware de verificação criptográfica (CV) 410 presente no subsistema de E/S 124. O módulo CV está apto a utilizar tecnologia de chave de verificação de segurança de hardware para requerer quaisquer atualizações / substituições para qualquer região do firmware armazenado na PCMS a serem autenticadas através de qualquer forma implementada de verificação de segurança (por exemplo, módulos de autenticação pública e privada utilizando chaves).
[0060] A FIG. 5 descreve uma concretização de espaços de memória volátil e não volátil em um subsistema de E/S quando utilizando um sistema híbrido de armazenamento de código e de dados de firmware.
[0061] Na FIG. 5, o controlador incorporado 400 possui um espaço de memória SRAM interna 500 que armazena o armazenamento de dados em tempo de execução 502. O controlador incorporado 400 é adicionalmente comunicativamente acoplado com o espaço de memória PCMS interna 504, o qual armazena uma região de código de firmware 506 e outro armazenamento 508 que armazena dados fixos / estáticos, chaves, e informação de utilização não volátil requerida.
[0062] Na descrição seguinte, numerosos detalhes específicos, tais como implementações lógicas, meios para especificar operandos, implementações de divisão / compartilhamento / duplicação de recurso, tipos e inter-relações dos componentes do sistema, e escolhas de divisão / integração lógica são apresentados de modo a proporcionar um entendimento mais completo da presente invenção. Entretanto, será apreciado pelos versados na técnica que a invenção pode ser praticada sem os detalhes específicos. Em outros casos, as estruturas de controle, circuitos de nível de porta e sequência completas de instrução de software não foram apresentados em detalhes de modo a não obscurecer a invenção. Os versados na técnica, com as descrições incluídas, estarão aptos a implementar a funcionalidade apropriada sem experiências inadequadas.
[0063] Referências no relatório descritivo a "uma concretização", "a concretização", "uma concretização ilustrativa", etc., indicam que a concretização descrita pode incluir um aspecto, estrutura, ou característica particular, mas nem toda concretização necessariamente inclui o aspecto, estrutura, ou característica particular. Além disso, tais frases não estão necessariamente se referindo à mesma concretização. Adicionalmente, quando um aspecto, estrutura ou característica particular é descrito em conexão com uma concretização, é dito que está dentro do conhecimento dos versados na técnica para efetuar tal aspecto, estrutura ou característica em conexão com outras concretizações sejam ou não explicitamente descritas.
[0064] Na descrição e reivindicações seguintes, os termos "acoplado" e "conectado" junto com seus derivados, podem ser utilizados. Deve ser entendido que estes termos não são pretendidos como sinônimos entre si. "Acoplado" é utilizado para indicar que dois ou mais elementos, os quais podem ou não estar em contato físico direto ou contato elétrico um com o outro, cooperam ou interagem um com o outro. "Conectado" é utilizado para indicar o estabelecimento de comunicação entre dois ou mais elementos que estão acoplados um com o outro.
[0065] As concretizações da invenção também podem ser proporcionadas como um produto de programa de computador que pode incluir um meio legível por máquina não temporário tendo instruções armazenadas no mesmo, as quais podem ser utilizadas para programar um computador (ou outro dispositivo eletrônico) para executar um processo. O meio legível por máquina não temporário pode incluir, mas não está limitado a discos flexíveis, discos óticos, CD-ROMs, e discos magnético-óticos, ROMs, RAMs, EPROMs, EEPROMs, cartões magnéticos ou óticos, meios de propagação ou outro tipo de meios / meio legível por máquina adequado para armazenar instruções eletrônicas. As concretizações da invenção também podem ser baixadas como um produto de programa de computador, onde o programa pode ser transferido a partir de um computador remoto (por exemplo, um servidor) para um computador solicitante (por exemplo, um cliente) via sinais de dados incorporados em uma onda portadora ou outro meio de propagação via uma ligação de comunicação (por exemplo, um modem ou conexão de rede).
[0066] Apesar de a invenção ter sido descrita em termos de várias concretizações, os versados na técnica irão reconhecer quer a invenção não está limitada às concretizações descritas, pode ser praticada com modificação e alteração dentro do espírito e escopo das reivindicações anexas. Assim, a descrição é para ser considerada como ilustrativa ou invés de limitativa.
Claims (15)
1. Método caracterizado pelo fato de que compreende:ler uma variável de bit volátil para segmentos de dados de um aplicativo de software (208), em que um bit volátil limpo é para indicar um segmento de dados estático improvável de ser alterado durante execução do aplicativo de software (208), e um conjunto de bits voláteis é para indicar um segmento de dados volátil provável de ser alterado durante execução do aplicativo de software (208);armazenar um ou mais segmentos de código estáticos do aplicativo de software (208) em um dispositivo de memória e chave de mudança de fase (PCMS), em que o dispositivo PCMS é para armazenar os segmentos de código estáticos como elementos endereçáveis a byte capazes de serem acessados aleatoriamente;armazenar um ou mais segmentos de dados estáticos do aplicativo de software (208) no dispositivo PCMS, com base na leitura da variável de bit volátil para indicar os segmentos de dados estáticos, em que o dispositivo PCMS é para armazenar os segmentos de dados estáticos como elementos endereçáveis a byte capazes de serem acessados de modo aleatório;armazenar um ou mais segmentos de dados voláteis do aplicativo de software (208) em um dispositivo de memória volátil, com base na leitura da variável de bit volátil para indicar os segmentos de dados voláteis;alocar uma tabela de mapeamento de endereço (132) com pelo menos um primeiro ponteiro de endereço para apontar para cada um dos um ou mais segmentos de código estáticos, pelo menos um segundo ponteiro de endereço para apontar para cada um dos um ou mais segmentos de dados estáticos, e pelo menos um terceiro ponteiro para apontar para cada um dos um ou mais segmentos de dados voláteis.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o armazenamento dos segmentos de código estáticos, dos segmentos de dados estáticos, e dos segmentos de dados voláteis ainda compreende:carregar o aplicativo de software (208) para execução;identificar para o aplicativo de software (208), segmentos de código estáticos, segmentos de dados estáticos, e segmentos de dados voláteis; earmazenar os segmentos de código estáticos, os segmentos de dados estáticos e os segmentos de dados voláteis de acordo com a identificação.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:armazenar inicialmente todos os segmentos de dados do aplicativo de software (208) no dispositivo PCMS;para um dado segmento de dados dentro dos segmentos de dados, transferir o dado segmento de dados para o dispositivo de memória volátil em resposta à recepção de uma solicitação de regravação para o dado segmento de dados durante a execução do aplicativo de software (208).
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:executar segmentos de código estáticos e segmentos de dados estáticos diretamente a partir do dispositivo PCMS sem transferência para o dispositivo de memória volátil.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o aplicativo de software (208) compreende firmware e o dispositivo de memória volátil compreende um dispositivo de memória estática de acesso aleatório (SRAM) integrado em um controlador incorporado (400).
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o dispositivo PCMS compreende um dispositivo de memória acoplado diretamente a um controlador de memória em um barramento de memória.
7. Dispositivo caracterizado pelo fato de que compreende:um controlador incorporado (400) paraexecutar um ou mais segmentos de código estáticos de um firmware diretamente a partir de um dispositivo de memória e chave de mudança de fase (PCMS), em que o dispositivo PCMS é para armazenar os segmentos de código estáticos como elementos endereçáveis a byte capazes de serem acessados aleatoriamente;executar um ou mais segmentos de dados estáticos do firmware diretamente a partir do dispositivo PCMS, o segmentos de dados estáticos armazenados no dispositivo PCMS com base em um bit volátil limpo para indicar um segmento de dados estático improvável de ser alterado durante execução do aplicativo de software (208), em que o dispositivo PCMS é para armazenar os segmentos de dados estáticos como elementos endereçáveis a byte capazes de serem acessados aleatoriamente; eexecutar um ou mais segmentos de dados voláteis do firmware a partir de um dispositivo de memória estática de acesso aleatório integrado no controlador incorporado (400), os segmentos de dados voláteis armazenados no dispositivo de memória estática de acesso aleatório com base em um conjunto de bits voláteis são para indicar um segmento de dados volátil provável de ser alterado durante execução do aplicativo de software (208).
8. Dispositivo, de acordo com a reivindicação 7, caracterizado pelo fato de que ainda compreende:um módulo de verificação criptográfica para autenticar um novo segmento de código ou de dados de firmware recebido de uma fonte externa; em que o controlador incorporado (400) é configurado para requerer a autenticação antes da execução do novo segmento de código ou de dados do firmware.
9. Dispositivo, de acordo com a reivindicação 7, caracterizado pelo fato de que o dispositivo PCMS compreende um dispositivo de memória acoplado diretamente a um controlador de memória em um barramento de memória acoplado ao controlador incorporado (400).
10. Sistema caracterizado pelo fato de que compreende:um dispositivo de memória volátil; eum dispositivo de memória e chave de mudança de fase (PCMS);em que a lógica de alocação de memória é configurada para fazer o processadorarmazenar um ou mais segmentos de código estáticos de um aplicativo de software (208) e um ou mais segmentos de dados estáticos do aplicativo de software (208) no dispositivo PCMS;armazenar um ou mais segmentos de dados voláteis do aplicativo de software (208) no dispositivo de memória volátil; ealocar uma tabela de mapeamento de endereço (132) na memória volátil (106) com pelo menos um primeiro ponteiro de endereço para apontar para cada um dos um ou mais segmentos de código estáticos, pelo menos um segundo ponteiro de endereço para apontar para cada um dos um ou mais segmentos de dados estáticos, e pelo menos um terceiro ponteiro de endereço para apontar para cada um dos um ou mais segmentos de dados voláteis.
11. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o processador armazena segmentos de código estáticos, segmentos de dados estáticos, e segmentos de dados voláteis durante um carregamento do aplicativo de software para execução.
12. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o processador lê uma variável de bit volátil para cada um dos conjuntos de segmentos de dados, em que quando o bit volátil é limpo, um determinado segmento de dados do conjunto de segmento de dados é armazenado como um segmento de dados estáticos, e em que quando o bit volátil é definido, o dado segmento de dados do conjunto de segmentos de dados é armazenado como um segmento de dados volátil.
13. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o processador é para:armazenar inicialmente todos os segmentos de dados do aplicativo de software (208) no dispositivo PCMS; epara um dado segmento de dados dentro dos segmentos de dados, transfere o determinado segmento de dados para o dispositivo de memória volátil em resposta a recepção de uma solicitação de regravação sobre o dado segmento de dados durante a execução do aplicativo de software (208).
14. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o processador é para:executar segmentos de código estáticos e segmento de dados estáticos diretamente a partir do dispositivo PCMS sem transferência para o dispositivo de memória volátil.
15. Sistema, de acordo com as reivindicações 10, caracterizado pelo fato de que compreende um controlador incorporado (400), o aplicativo de software (208) compreende firmware, e o dispositivo de memória volátil compreende um dispositivo de memória estática de acesso aleatório (SRAM) integrado a um controlador incorporado (400).
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067490 WO2013100936A1 (en) | 2011-12-28 | 2011-12-28 | A method and device to distribute code and data stores between volatile memory and non-volatile memory |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112014013606A2 BR112014013606A2 (pt) | 2017-06-13 |
BR112014013606A8 BR112014013606A8 (pt) | 2017-06-13 |
BR112014013606B1 true BR112014013606B1 (pt) | 2021-11-03 |
Family
ID=48698180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112014013606-8A BR112014013606B1 (pt) | 2011-12-28 | 2011-12-28 | Método, dispositivo e sistema para distribuir armazenamentos de dados entre memória volátil e memória não volátil |
Country Status (7)
Country | Link |
---|---|
US (2) | US9582216B2 (pt) |
KR (1) | KR101625777B1 (pt) |
CN (1) | CN103999038B (pt) |
BR (1) | BR112014013606B1 (pt) |
DE (1) | DE112011106060T5 (pt) |
GB (1) | GB2510762B (pt) |
WO (1) | WO2013100936A1 (pt) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR112014013606B1 (pt) | 2011-12-28 | 2021-11-03 | Intel Corporation | Método, dispositivo e sistema para distribuir armazenamentos de dados entre memória volátil e memória não volátil |
US9800455B1 (en) | 2012-02-08 | 2017-10-24 | Amazon Technologies, Inc. | Log monitoring system |
US9740500B2 (en) * | 2012-08-30 | 2017-08-22 | Microsoft Technology Licensing, Llc | Layout system for operating systems using BPRAM |
US9952879B2 (en) * | 2012-08-30 | 2018-04-24 | Microsoft Technology Licensing, Llc | Application pre-layout in byte-addressable persistent random access memory |
US9280497B2 (en) * | 2012-12-21 | 2016-03-08 | Dell Products Lp | Systems and methods for support of non-volatile memory on a DDR memory channel |
US9740606B1 (en) | 2013-11-01 | 2017-08-22 | Amazon Technologies, Inc. | Reliable distributed messaging using non-volatile system memory |
DE102014203062A1 (de) * | 2014-02-20 | 2015-08-20 | Bayerische Motoren Werke Aktiengesellschaft | Vergrößern des verfügbaren FLASH-Speichers eines Micro-Controllers |
US10108622B2 (en) | 2014-03-26 | 2018-10-23 | International Business Machines Corporation | Autonomic regulation of a volatile database table attribute |
CN105808455B (zh) | 2014-12-31 | 2020-04-28 | 华为技术有限公司 | 访问内存的方法、存储级内存及计算机系统 |
US10846279B2 (en) | 2015-01-29 | 2020-11-24 | Hewlett Packard Enterprise Development Lp | Transactional key-value store |
US9437298B1 (en) * | 2015-03-25 | 2016-09-06 | Intel Corporation | Self-storing and self-restoring non-volatile static random access memory |
US10157008B2 (en) * | 2015-04-29 | 2018-12-18 | Qualcomm Incorporated | Systems and methods for optimizing memory power consumption in a heterogeneous system memory |
CN110413339A (zh) * | 2015-11-12 | 2019-11-05 | 华为技术有限公司 | 加载软件模块的方法和装置 |
US10303372B2 (en) | 2015-12-01 | 2019-05-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
US10437731B2 (en) * | 2015-12-24 | 2019-10-08 | Intel Corporation | Multi-level non-volatile cache with selective store |
US9928168B2 (en) * | 2016-01-11 | 2018-03-27 | Qualcomm Incorporated | Non-volatile random access system memory with DRAM program caching |
US10146704B2 (en) * | 2016-02-16 | 2018-12-04 | Dell Products L.P. | Volatile/non-volatile memory device access provisioning system |
JP6679412B2 (ja) * | 2016-05-19 | 2020-04-15 | キヤノン株式会社 | ストレージ制御装置、情報処理方法及びプログラム |
US10367639B2 (en) | 2016-12-29 | 2019-07-30 | Intel Corporation | Graphics processor with encrypted kernels |
US11175853B2 (en) * | 2017-05-09 | 2021-11-16 | Samsung Electronics Co., Ltd. | Systems and methods for write and flush support in hybrid memory |
DK3425929T3 (da) * | 2017-07-06 | 2020-06-15 | Oticon As | Programmerbar høreanordning og fremgangsmåde til programmering af en høreanordning |
US10359971B2 (en) * | 2017-07-17 | 2019-07-23 | Hewlett Packard Enterprise Development Lp | Storing memory profile data of an application in non-volatile memory |
WO2019074743A1 (en) | 2017-10-12 | 2019-04-18 | Rambus Inc. | NON-VOLATILE PHYSICAL MEMORY WITH DRAM CACHE MEMORY |
KR20190118862A (ko) * | 2018-04-11 | 2019-10-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 컨트롤러의 동작 방법 |
US11163680B2 (en) | 2018-11-28 | 2021-11-02 | International Business Machines Corporation | Dynamic write-back to non-volatile memory |
US11126359B2 (en) * | 2018-12-07 | 2021-09-21 | Samsung Electronics Co., Ltd. | Partitioning graph data for large scale graph processing |
CN110287129B (zh) * | 2019-06-27 | 2021-07-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘的l2p表更新及写入管理方法和装置 |
WO2021010941A1 (en) * | 2019-07-12 | 2021-01-21 | Hewlett-Packard Development Company, L.P. | Data updates for controllers |
US11016755B2 (en) * | 2019-07-31 | 2021-05-25 | Dell Products L.P. | System and method to secure embedded controller flashing process |
US11868772B2 (en) * | 2020-01-14 | 2024-01-09 | Red Hat, Inc. | Heterogeneous memory management and services |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6574747B2 (en) * | 2000-06-02 | 2003-06-03 | Microsoft Corporation | Extensible execute in place (XIP) architecture and related methods |
KR100562906B1 (ko) * | 2003-10-08 | 2006-03-21 | 삼성전자주식회사 | 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩 |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US20060143600A1 (en) * | 2004-12-29 | 2006-06-29 | Andrew Cottrell | Secure firmware update |
US7797479B2 (en) * | 2005-06-30 | 2010-09-14 | Intel Corporation | Technique to write to a non-volatile memory |
US9153337B2 (en) * | 2006-12-11 | 2015-10-06 | Marvell World Trade Ltd. | Fatigue management system and method for hybrid nonvolatile solid state memory system |
US8156320B2 (en) * | 2008-08-27 | 2012-04-10 | Wireless Silicon Group, Llc | Method and apparatus for fast booting a portable computing device allowing for immediate operation |
TWI467369B (zh) * | 2008-10-01 | 2015-01-01 | A Data Technology Co Ltd | 混合密度記憶體系統及其控制方法 |
US8914568B2 (en) * | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
US8566561B2 (en) * | 2010-05-14 | 2013-10-22 | Rockwell Automation Technologies, Inc. | Method to separate and persist static and dynamic portions of a control application |
US8891319B2 (en) * | 2010-11-30 | 2014-11-18 | Micron Technology, Inc. | Verify or read pulse for phase change memory and switch |
US8607210B2 (en) * | 2010-11-30 | 2013-12-10 | Micron Technology, Inc. | Code patching for non-volatile memory |
EP2761476B1 (en) * | 2011-09-30 | 2017-10-25 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
BR112014013606B1 (pt) | 2011-12-28 | 2021-11-03 | Intel Corporation | Método, dispositivo e sistema para distribuir armazenamentos de dados entre memória volátil e memória não volátil |
-
2011
- 2011-12-28 BR BR112014013606-8A patent/BR112014013606B1/pt active IP Right Grant
- 2011-12-28 CN CN201180075997.1A patent/CN103999038B/zh active Active
- 2011-12-28 GB GB1408843.9A patent/GB2510762B/en active Active
- 2011-12-28 DE DE112011106060.2T patent/DE112011106060T5/de active Pending
- 2011-12-28 KR KR1020147017739A patent/KR101625777B1/ko active IP Right Grant
- 2011-12-28 WO PCT/US2011/067490 patent/WO2013100936A1/en active Application Filing
- 2011-12-28 US US13/977,295 patent/US9582216B2/en not_active Expired - Fee Related
-
2017
- 2017-01-18 US US15/408,984 patent/US20170228160A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20140208047A1 (en) | 2014-07-24 |
GB201408843D0 (en) | 2014-07-02 |
GB2510762B (en) | 2019-10-09 |
US20170228160A1 (en) | 2017-08-10 |
BR112014013606A2 (pt) | 2017-06-13 |
DE112011106060T5 (de) | 2014-12-04 |
CN103999038B (zh) | 2017-05-10 |
GB2510762A (en) | 2014-08-13 |
CN103999038A (zh) | 2014-08-20 |
KR101625777B1 (ko) | 2016-05-30 |
US9582216B2 (en) | 2017-02-28 |
KR20140097483A (ko) | 2014-08-06 |
BR112014013606A8 (pt) | 2017-06-13 |
WO2013100936A1 (en) | 2013-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112014013606B1 (pt) | Método, dispositivo e sistema para distribuir armazenamentos de dados entre memória volátil e memória não volátil | |
US10719443B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
US11132298B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes | |
US9852069B2 (en) | RAM disk using non-volatile random access memory | |
CN108549609B (zh) | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) | |
US9317429B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels | |
BR112014015051B1 (pt) | método e sistema para utilizar dicas de liberação de memória dentro de um sistema de computador | |
TWI711931B (zh) | 對儲存媒體的同步記憶體匯流排存取 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B350 | Update of information on the portal [chapter 15.35 patent gazette] | ||
B06A | Patent application procedure suspended [chapter 6.1 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 28/12/2011, OBSERVADAS AS CONDICOES LEGAIS. |