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 PDF

Info

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
Application number
BR112014013606-8A
Other languages
English (en)
Other versions
BR112014013606A2 (pt
BR112014013606A8 (pt
Inventor
Balaji Vembu
Murali Ramadoss
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BR112014013606A2 publication Critical patent/BR112014013606A2/pt
Publication of BR112014013606A8 publication Critical patent/BR112014013606A8/pt
Publication of BR112014013606B1 publication Critical patent/BR112014013606B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital 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/0045Digital 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital 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/0081Digital 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital 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/009Digital 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-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/68Details of translation look-aside buffer [TLB]
    • 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 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

CAMPO DA INVENÇÃO
[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.
DESCRIÇÃO DA TÉCNICA RELACIONADA
[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.
BREVE DESCRIÇÃO DOS DESENHOS
[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.
DESCRIÇÃO DETALHADA
[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.
1. Visão Geral da Memória de Acesso Aleatório Não Volátil
[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.
2. Visão Geral da Memória Volátil
[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.
3. Armazenamento híbrido em memória de Código e Dados para Processadores
[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.
4. Armazenamento em Memória Híbrido de Código e de Dados para Controladores Incorporados
[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).
BR112014013606-8A 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 BR112014013606B1 (pt)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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.