BR112015029848B1 - Sistema compreendendo um dispositivo de memória e um driver de sistema operacional para gerenciar operações de acesso a memória entre pelo menos um aplicativo e o dispositivo de memória - Google Patents

Sistema compreendendo um dispositivo de memória e um driver de sistema operacional para gerenciar operações de acesso a memória entre pelo menos um aplicativo e o dispositivo de memória Download PDF

Info

Publication number
BR112015029848B1
BR112015029848B1 BR112015029848-6A BR112015029848A BR112015029848B1 BR 112015029848 B1 BR112015029848 B1 BR 112015029848B1 BR 112015029848 A BR112015029848 A BR 112015029848A BR 112015029848 B1 BR112015029848 B1 BR 112015029848B1
Authority
BR
Brazil
Prior art keywords
memory
volatile memory
page
controller
data
Prior art date
Application number
BR112015029848-6A
Other languages
English (en)
Other versions
BR112015029848A2 (pt
BR112015029848A8 (pt
Inventor
Raj K. Ramanujan
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 BR112015029848A2 publication Critical patent/BR112015029848A2/pt
Publication of BR112015029848A8 publication Critical patent/BR112015029848A8/pt
Publication of BR112015029848B1 publication Critical patent/BR112015029848B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Dram (AREA)

Abstract

DISPOSITIVO DE MEMÓRIA HÍBRIDO. Trata-se de dispositivos de memória, controladores e dispositivos eletrônicos que compreendem dispositivos de memória. Em uma modalidade, um dispositivo de memória compreende uma memória volátil, uma memória não volátil e um controlador que compreende um armazenamento temporário de memória e uma lógica para transferir dados entre a memória não volátil e a memória volátil por meio do armazenamento temporário de memória em resposta a solicitações de um aplicativo, em que os dados no armazenamento temporário de memória são acessíveis ao aplicativo. Além disso, outras modalidades são reveladas e reivindicadas.

Description

CAMPO
[0001] A presente descrição refere-se, em geral, ao campo de eletrônica. Mais particularmente, algumas modalidades da invenção se referem, em geral, a dispositivos de memória híbridos.
ANTECEDENTES
[0002] Os avanços contínuos em arquitetura de sistema, por exemplo, processamento em múltiplos núcleos, e avanços em aplicativos exigem avanços correspondentes em sistemas de memória. A memória de alta capacidade está se tornando cada vez mais importante com os aumentos no número de núcleos em um sistema de processador no número de aplicativos, por exemplo, bancos de dados em memória e servidores virtualizados, que exigem capacidade de memória significativamente mais alta. A capacidade para escalar sistemas de memória existentes (por exemplo, módulos de memória em linha diretos de taxa de dados dobrada (DDR DIMMs)) se limita a diversos fatores incluindo custos, consumo de energia, densidade e desempenho. Uma típica plataforma de memória grande pode conter até 16 DIMMs ou mais. Isso dificulta a colocação de componentes, o resfriamento, assim como o roteamento de sinais, em que todos contribuem para custo desses sistemas.
[0003] Além de capacidade, memória persistente é cada vez mais útil em determinadas aplicações. Um típico exemplo é um banco de dados em memória em que o tempo para formar a imagem de memória pode ser consideravelmente extenso uma vez que o tamanho o do banco de dados aumenta. A capacidade para manter os conteúdos de memória através de ciclo de energia pode reduzir o tempo de iniciação e eliminar a exigência de servidores redundantes ativos ou secundários.
[0004] Consequentemente, os dispositivos de memória híbridos podem ser úteis.
BREVE DESCRIÇÃO DOS DESENHOS
[0005] A descrição detalhada é dotada de referência às Figuras anexas. Nas Figuras, o(s) dígito(s) mais à esquerda de um número de referência indentifica(m) a Figura na qual o número de referência aparece primeiro. O uso dos mesmos números de referência em Figuras diferentes indica itens similares ou idênticos.
[0006] A Figura 1 é uma ilustração de um diagrama de blocos esquemático de componentes de aparelho para implantar um dispositivo de memória híbrido em conformidade com várias modalidades discutidas no presente documento.
[0007] A Figura 2A é um diagrama de blocos esquemático de uma arquitetura exemplificativa na qual um dispositivo de memória híbrido pode ser implantado, em conformidade com várias modalidades discutidas no presente documento.
[0008] A Figura 2B é uma ilustração esquemática de uma memória volátil em conformidade com várias modalidades discutidas no presente documento.
[0009] A Figura 3 é uma ilustração esquemática de um mapeamento de memória em conformidade com várias modalidades discutidas no presente documento.
[0010] As Figuras 4 a 5 são fluxogramas que ilustram operações em um método para implantar um dispositivo de memória híbrido em conformidade com várias modalidades discutidas no presente documento.
[0011] As Figuras 6 a 10 são ilustrações de um diagrama de blocos esquemáticos de dispositivos eletrônicos que podem ser adaptados para implantar um dispositivo de memória híbrido, em conformidade com várias modalidades discutidas no presente documento.
DESCRIÇÃO DETALHADA
[0012] Alguns sistemas de memória podem ser implantados com uso de memória de acesso rápido local que é incorporada frequentemente como uma memória volátil e que pode funcionar como uma memória de cache e um ou mais dispositivos de memória remotos que podem compreender memória não volátil, por exemplo, memória magnética ou óptica. A título de exemplo, dispositivos de memória remotos podem compreender um ou mais módulos de memória em linha diretos (DIMMs), em que cada um pode compreender um ou mais classificações de memória que, por sua vez, podem compreender um ou mais chips de Memória de Acesso Aleatório Dinâmico (DRAM) ou podem incluir memória não volátil, por exemplo, memória de ponto de cruzamento tridimensional, memória flash, memória ferroelétrica, memória de silício-óxido-nitreto-óxido-silício (SONOS), memória de polímero, memória, memória de acesso aleatório de transistor ferroelétrico de nanofio (FeTRAM ou FeRAM), memória de apenas leitura apagável e programável eletricamente (EEPROM) ou de nanofio. Alguns dispositivos eletrônicos (por exemplo, telefones inteligentes, computadores do tipo tablet, e semelhantes) podem compreender sistemas de memória remotos mais simples compreendidos de uma ou mais DRAMs.
[0013] São descritos no presente documento dispositivos de memória híbridos que compreende uma memória volátil (por exemplo, DRAM) e uma memória não volátil. Os dispositivos compreendem adicionalmente um controlador que compreende um armazenamento temporário de memória e uma lógica para transferir dados entre a memória não volátil e a memória volátil por meio do armazenamento temporário de memória em resposta às solicitações de um aplicativo, em que os dados no armazenamento temporário de memória são acessíveis ao aplicativo. Um dispositivo eletrônico que incorpora o dispositivo de memória pode compreender um processador para executar um sistema operacional e um ou mais aplicativos e um driver de dispositivo de sistema operacional para gerenciar as operações de acesso à memória entre o pelo menos um aplicativo e o dispositivo de memória.
[0014] As técnicas discutidas no presente documento podem ser fornecidas em vários sistemas computacionais (por exemplo, incluindo servidores, áreas de trabalho, computadores do tipo notebook, telefones inteligentes, dispositivos do tipo tablet, console de jogo eletrônico portátil, etc.) que podem incluir um sistema de memória que compreende múltiplos chips de DRAM montados normalmente em um módulo de memória em linha dupla (DIMM) e em uma memória não volátil. Em tais modalidades, um ou mais DIMMs podem compreender lógica de controle separada.
[0015] Na descrição a seguir, os inúmeros detalhes específicos são estabelecidos a fim de fornecer uma compreensão meticulosa da invenção. No entanto, várias modalidades da invenção podem ser praticadas sem os detalhes específicos. Em outros exemplos, métodos, procedimentos, componentes e circuitos bem conhecidos não foram descritos detalhadamente de modo a não obscurecer as modalidades particulares da invenção. Além disso, vários aspectos de modalidades da invenção podem ser realizados com o uso de vários meios, por exemplo, circuitos semicondutores integrados (“hardware”), instruções legíveis por computador organizadas em um ou mais programas (“software”), ou alguma combinação de hardware e software. Para os propósitos da presente revelação, a referência à “lógica” deve significar tanto hardware, software como uma combinação dos mesmos.
[0016] A Figura 1 é uma ilustração esquemática de um dispositivo eletrônico exemplificativo 100 que pode ser adaptado para incorporar um dispositivo de memória híbrido, conforme descrito no presente documento, em conformidade com algumas modalidades. Em várias modalidades, o dispositivo eletrônico 100 pode ser incorporado como um computador pessoal, um computador do tipo laptop, um assistente digital pessoal, um telefone móvel, um dispositivo de entretenimento, um computador do tipo tablet, um leitor eletrônico, ou outro dispositivo de computação.
[0017] O dispositivo eletrônico 100 inclui hardware de sistema 120 e uma memória 130 que pode ser implantada como memória de acesso aleatório e/ou como memória de apenas leitura. Uma fonte de alimentação, tal como, uma bateria 180 pode ser acoplada ao dispositivo eletrônico 100.
[0018] O hardware de sistema 120 pode incluir um ou mais processadores 122, estruturas de barramento123, um ou mais processadores gráficos 124, sistemas de memória 125, interfaces de rede 126 e interfaces de entrada/saída 127. Em uma modalidade, o processador 122 pode ser incorporado como um processador Intel ® Core2 Duo® disponível junto à Intel Corporation, Santa Clara, Califórnia, USA. Conforme usado no presente documento, o termo "processador" significa qualquer tipo de elemento computacional, tal como, porém, sem limitação, um microprocessador, um microcontrolador um microprocessador de computação com conjunto de instruções complexas (CISC), um microprocessador de conjunto de instruções reduzido (RISC), um microprocessador de palavra de instrução muito longa (VLIW), ou qualquer outro tipo de processador ou circuito de processamento.
[0019] As estruturas de barramento 123 conectam vários componentes de hardware de sistema 120. Em uma modalidade, as estruturas de barramento128 podem um ou mais dentre diversos tipos de estrutura(s) de barramento incluindo um barramento de memória, um barramento periférico ou barramento externo, e/ou um barramento local que várias arquiteturas de barramento disponíveis incluindo, porém sem limitação, barramento de 11 bits, Arquitetura Padrão Industrial (ISA), Arquitetura de Microcanais (MSA), ISA Estendida (EISA), Eletrônica de Unidade Inteligente (IDE), Barramento Local de VESA (VLB), Interconexão de Componente Periférico (PCI), Barramento Serial Universal (USB), Porta Gráfica Avançada (AGP), barramento de Associação de Carão de Memória de Computador Pessoal (PCMCIA) e Interface de Sistemas de Pequeno Computador (SCSI).
[0020] O(s) processdor(es) gráfico(s) 124 pode funcionar como um processador adjunto que gere operações gráficas e/ou de vídeo. O(s) processador(es) gráfico(s) 124 pode(m) ser integrado(s) na placa-mãe do dispositivo eletrônico 100 ou podem ser acoplados por meio de uma fenda de expansão na placa-mãe.
[0021] Os sistemas de memória 125 podem compreender uma memória local, por exemplo, uma memória de cache, uma ou mais formas de memória volátil e de memória não volátil, conforme descrito acima.
[0022] Em uma modalidade, interface(s) de rede 126 pode(m) ser uma interface cabeada, tal como, uma interface de Ethernet (consultar, por exemplo, Institute of Electrical and Electronics Engineers/IEEE 802.3-2002) ou uma interface sem fio, tal como, uma IEEE 802.11a, interface compatível com b ou com g (consultar, por exemplo, IEEE Standard for IT-Telecommunications and information exchange between systems LAN/MAN--Part II: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications Amendment 4: Further Higher Data Rate Extension in the 2.4 GHz Band, 802.11G- 2003). Outro exemplo de uma interface sem fio é uma interface de Serviço De Rádio De Pacote Geral (GPRS) (consultar, por exemplo, Guidelines on GPRS Handset Requirements, Global System for Mobile Communications/GSM Association, Versão 3.0.1, dezembro de 2002).
[0023] As interface(s) de I/O 127 podem ser implantadas em um ou mais dispositivos de I/O, por exemplo, um visor, uma tela sensível ao toque, um ou mais alto-falantes, um teclado, um mouse, um touchpad, ou semelhantes.
[0024] A memória 130 pode armazenar um sistema operacional 140 para gerenciar operações de dispositivo eletrônico 100. Em uma modalidade, o sistema operacional 140 inclui um módulo de interface de hardware 154, por exemplo, um ou mais drivers de dispositivo de sistema operacional, que fornece uma interface ao hardware de sistema 120. Além disso, o sistema operacional 140 pode incluir um sistema de arquivo 150 que gere arquivos usados na operação do dispositivo eletrônico 100 e um subsistema de controle de processo 152 que gere processos que são executados no dispositivo eletrônico 100.
[0025] O sistema operacional 140 pode incluir (ou gerenciar) uma ou mais interfaces de comunicação que podem operar em combinação com o hardware de sistema 120 para transmitir/receber pacotes de dados e/ou fluxos de dados de uma fonte remota. O sistema operacional 140 pode incluir adicionalmente um módulo de interface de chamada de sistema 142 que fornece uma interface entre o sistema operacional 140 e um ou mais módulos de aplicação que residem na memória 130. O sistema operacional 140 pode ser incorporado como um sistema operacional UNIX ou qualquer derivado do mesmo (por exemplo, Linux, Solaris, etc.) ou como um sistema operacional da marca Windows®, ou quaisquer outros sistemas operacionais.
[0026] Em algumas modalidades, a memória 130 pode armazenar um ou mais aplicativos 160 que podem ser executados nos um ou mais processadores 122 sob supervisão do sistema operacional 140 e um ou mais drivers de memória 162. Os aplicativos 160 e o driver 162 podem ser incorporados como instruções de lógica armazenadas em uma mídia legível por computador não transitória tangível (isto é, software ou firmware) que podem ser executáveis em um ou mais dentre os processadores 122. Alternativamente, esses aplicativos podem ser incorporados como uma lógica em um dispositivo programável, tal como, uma matriz de porta programável em campo (FPGA) ou semelhantes. Alternativamente, esses aplicativos podem ser reduzidos a uma lógica que pode ser conectada diretamente a um circuito integrado.
[0027] A Figura 2A é um diagrama de blocos esquemático de uma arquitetura exemplificativa na qual um dispositivo de memória híbrido pode ser implantado, em conformidade com várias modalidades discutidas no presente documento. Em referência à Figura 2A, em algumas modalidades um pacote de unidade de processamento central (CPU) 200 que pode compreende uma ou mais CPUs 210 acoplada a um hub de controle 220 e a uma memória local 230. O hub de controle 220 compreende um controlador de memória 222 e uma interface de memória 224.
[0028] A interface de memória 224 é acoplada a um ou mais dispositivos de memória remotos 240 por um barramento de comunicação 235. Em um exemplo, o barramento de comunicação 235 pode ser um barramento de memória com taxa de dados dobrada.
[0029] O dispositivo de memória 240 pode compreender um controlador 242 e uma memória não volátil 250, uma memória volátil 260 e um armazenamento de energia 280. O controlador 242 compreende um ou mais registros de controle 244 e armazenamentos temporários de memória 246 e uma interface de entrada/saída, tal como, um multiplexador 248.
[0030] Em várias modalidades, a memória não volátil 250 pode ser implantada, por exemplo, com o uso de uma memória de mudança de fase, uma memória (flash) NAND, memória de acesso aleatório ferroelétrica (FeTRAM), memória não volátil com base em nanofio, uma memória que incorpora a tecnologia de resistor com memória, uma memória de acesso aleatório estática (SRAM), memória de ponto de cruzamento tridimensional (3D), tal como, memória de mudança de fase (PCM), memória de torque de transferência por meio de rotação (STT-RAM) ou memória NAND.
[0031] Em várias modalidades, a memória volátil 260 pode ser implantada com o uso de um ou mais módulos de memória DRAM. A título de exemplo, em referência à Figura 2B, em algumas modalidades, a memória volátil 260 pode compreender um ou mais módulos de memória em linha diretos (DIMMs) 270 acoplados a um canal de memória 272 que fornece um enlace de comunicação ao controlador de memória 122. Na modalidade retrata na Figura 2B, cada DIMM 270 compreende uma primeira classificação 274 e uma segunda classificação 276, em que cada um inclui uma pluralidade de módulos de DRAM 278. Uma pessoa versada na técnica irá reconhecer que a memória volátil 260 pode compreender mais ou menos DIMMs 270 e mais ou menos classificações por DIMM. Além disso, alguns dispositivos eletrônicos (por exemplo, telefones inteligentes, computadores do tipo tablet, e semelhantes) podem compreender sistemas de memória mais simples compreendidos de uma ou mais DRAMs.
[0032] Em referência à Figura 3, em algumas modalidades, a memória não volátil 250 é maior que a memória volátil 260. Isso possibilita um esquema de endereçamento no qual a memória física de sistema exposta ao sistema operacional 140 é limitado pelo tamanho da memória volátil 260. A memória não volátil 250 inclui uma região de cópia de segurança que fornece uma cópia de segurança de memória não volátil da memória volátil 260. O resto do espaço de endereço de memória não volátil está disponível como espaço de paginação a ser gerido pelo driver 162. Desse modo, o espaço de endereço virtual geral disponível para o(s) aplicativo(s) 160 pode ser o espaço total de endereço de memória física não volátil.
[0033] Normalmente, um sistema operacional limita a paginação de dispositivo de armazenamento não volátil, por exemplo, unidade de disco rígido ou unidade em estado sólido, a uma memória virtual mediante a garantia de que a memória virtual alocada tenha uma memória física de sistema adequada fornecendo suporte à mesma. Normalmente, a paginação se limita a retomar o processo após um período de inatividade. No dispositivo de memória 240, a cópia a partir da memória não volátil 250 para a memória volátil ocorre no mesmo dispositivo de memória, por exemplo, DIMM, e pode ocorrer muito rapidamente. Adicionalmente, a um aplicativo 160 pode ser permitido acesso a dados ao mesmo tempo em que cópia a partir da memória não volátil para memória volátil está ocorrendo. Isso permite que o aplicativo 160 e o driver 162 lidem com as falhas na página de maneira síncrona.
[0034] Além disso, visto que todo o movimento de dados entre a memória não volátil 250 e a memória volátil 260 é mantido no dispositivo de memória 240, o canal de comunicação 235 é utilizado apenas para acesso a dados pelo processador. Esse perfil de movimento de dados limitado pode reduzir significativamente e energia exigido para implantar paginação de memória virtual.
[0035] Esses fatores possibilitam uma paginação mais dinâmica entre a memória não volátil 250 e a memória volátil 260 fornecendo, assim, um espaço de endereço virtual maior para um aplicativo 160 usar. Os acessos de memória pelos aplicativos são direcionados à memória volátil e, por conseguinte, obtêm alto desempenho de memória.
[0036] Conforme descrito acima, em algumas modalidades, o controlador 242 no(s) dispositivo(s) de memória 240 coopera com um driver 162 no dispositivo eletrônico 100 para gerenciar operações de memória no dispositivo de memória 240. As operações implantadas pelo controlador 242 e/ou pelo driver 162 serão descritas com referência às Figuras 4 a 5. A Figura 4 ilustra operações implantadas para gerenciar a cópia de uma ou mais páginas a partir da memória não volátil 250 para a memória volátil 260 (isto é, uma página-in operação), ao passo que a Figura 5 ilustra operações implantadas para gerenciar a cópia de uma ou mais páginas a partir da memória volátil à memória não volátil (isto é, uma operação de retirada de página).
[0037] Referindo-se primeiramente à Figura 4, na operação 410, um aplicativo 160 lê uma página que causa um erro de página que resulta no envio de um erro de página ao sistema operacional 140. Na operação 415, o sistema operacional 140 recebe uma solicitação de erro de página do aplicativo 160 e, em resposta à solicitação de erro de página, aciona (operação 420) o driver 162 de modo a transferir uma página de dados solicitada pelo aplicativo 160 a partir da memória não volátil 250 para a memória volátil 260 (isto é, a solicitação de carga de página). Na operação 425, o driver recebe a solicitação de transferência de página, e na operação 430, o driver 162 programa o controlador 242 de modo a transferir uma página a partir da memória não volátil 250 para o armazenamento temporário 246. A solicitação de dados é encaminhada ao controlador 242 no(s) dispositivo(s) de memória 240 por meio do barramento 235. Na operação 435, o driver 162 invalida as linhas de cache para a página nas CPUs 210.
[0038] Na operação 440, o controlador 242 recebe a solicitação de carga de página e, na operação 445, o controlador 242 copia a página de dados solicitada a partir da memória não volátil 250 para os armazenamentos temporários de memória 246 no controlador 242. Na operação 450, o controlador 242 define um sinal de status de conclusão, que é retornado ao driver 162. Na operação 455, o driver 162 lê o sinal de status, que é passado para o sistema operacional 140.
[0039] Na operação 460, o sistema operacional 140 recebe a conclusão de sinal a partir do driver 162 e, na operação 465, o sistema operacional 140 libera a página para o aplicativo 160d. Na operação 470, o aplicativo espera que o sistema operacional 140 lide com o erro de página. Quando a página é liberada para o aplicativo, o controle passa para operação 470 e o aplicativo 160 ê a página de dados dos armazenamentos temporários de memória 240 (operação 475). Na operação 480, o controlador 242 recebe a solicitação de leitura e, em resposta à solicitação de leitura na operação 485, o controlador 242 supra a página a partir dos armazenamentos temporários 246 para a memória volátil 260 e libera o armazenamento temporário. À medida que o aplicativo lê os dados, o controlador 242 grava (operação 455) a dados de página na memória volátil 260 e invalida o armazenamento temporário a cada linha cache. Desse modo, a página-in operação garante que não haja conflito de endereço para a memória não volátil 260. Em operações de erro de página subsequentes, caso o driver 162 não encontre memória livre no armazenamento temporário 246, então, o driver 162 pode liberar espaço nos armazenamentos temporários para a memória volátil 260, por exemplo, realizando-se gravações fictícias no barramento 260 em uma única linha de memória. Isso garante que não haja conflito no acesso de memória não volátil entre a CPU 210 e a transferência de armazenamento temporário. Na operação 490, o aplicativo 160 usa os novos dados.
[0040] Em referência à Figura 5, em uma operação de retirada de página, um aplicativo ou o sistema operacional 140 precisa (operação 510) isentar uma página de memória volátil 150 para uso por um aplicativo 160. Na operação 515, o sistema operacional 140 solicita que o driver 162 mova uma página de dados a partir da memória volátil 260 para a memória não volátil 250. Na operação 520, o driver 162 recebe a solicitação e verifica (operação 525) de modo a garantir que o armazenamento temporário de memória 246 esteja disponível para uma operação de leitura. Na operação 530, o driver 162 programa o controlador 242 para uma cópia de página da memória volátil 260 para a memória não volátil 250 através dos armazenamentos temporários 246.
[0041] Na operação 535, o driver 162 executa uma série de operações de leitura para uma localização "fictícia" no armazenamento temporário de memória 246 do controlador 242. A título de exemplo, o driver pode executar 64 operações de leitura de linha de cache para uma página de 4 KB. As operações de leitura "fictícia" mantêm a CPU 210 ocupada lendo as localizações fictícias ao mesmo tempo em que o controlador copia a página a partir da memória volátil 260 para a memória não volátil 250. Isso evita um conflito potencial entre a leitura da página da memória volátil 260 no armazenamento temporário 246 e na tentativa da CPU 210 de ler a memória volátil 260 para outro aplicativo.
[0042] Na operação 540, o controlador 242 recebe a solicitação de retirada de página Na operação 545, o controlador 242 fornece dados fictícios ao driver 162 e na operação 550, o controlador 242 copia os dados de página da memória volátil 260 para o armazenamento temporário 246 como uma operação de segundo plano. A operação de leitura fictícia mantém os armazenamentos temporários 246 ocupados até que os dados de página sejam copiados. Em algumas modalidades, o controlador 242 implanta uma operação de leitura da memória volátil 260 para cada operação de leitura fictícia realizada na operação 530, o que evita conflitos no acesso à memória volátil 260.
[0043] Na operação 555, o driver 162 invalida a página da memória de cache na(s) CPU(s) 210 e, na operação 560, o driver 162 libera a página a partir da memória volátil 260 para o sistema operacional. Na operação 565, o sistema operacional 140 recebe o sinal a partir do driver 162 que indica que a página de dados foi liberada da memória volátil.
[0044] Conforme descrito acima, em algumas modalidades, o dispositivo eletrônico pode ser incorporado como um sistema de computador. A Figura 6 ilustra um diagrama de blocos de um sistema de computação 600 em conformidade com uma modalidade da invenção. O sistema de computação 600 pode incluir uma ou mais unidade(s) de processamento central (CPUs) 602 ou processadores que se comunicam por meio de uma rede de interconexão (ou barramento) 604. Os processadores 602 podem incluir um processador de propósito geral, um processador de rede (que processa os dados comunicados através de uma rede de computador 603) ou outros tipos de um processador (incluindo um processador de computador com conjunto de instruções reduzido (RISC) ou um computador de conjunto de instruções complexas (CISC)). Ademais, os processadores 602 podem ter um modelo com núcleo único ou múltiplos núcleos. Os processadores 602 com um modelo com múltiplos núcleos podem integrar diferentes tipos de núcleos de processador no mesmo dado de mesmo circuito integrado (IC). Além disso, os processadores 602 com um modelo com múltiplos núcleos podem ser implantados como multiprocessadores simétricos ou assimétricos. Em uma modalidade, um ou mais dentre os processadores 602 pode ser igual ou semelhante aos processadores 102 da Figura 1. Por exemplo, um ou mais dentre os processadores 602 pode incluir a unidade de controle 120 discutida com referência às Figuras 1 a 3. Além disso, as operações discutidas com referência às Figuras 3 a 5 idem ser realizadas por um ou mais componentes do sistema 600.
[0045] Um conjunto de chips 606 também pode se comunicar com a rede de interconexão 604. O conjunto de chips 606 pode incluir um hub de controle de memória (MCH) 608. O MCH 608 pode incluir um controlador de memória 610 que se comunicar com uma memória 612 (que pode ser igual ou semelhante à memória 130 da Figura 1). A memória 412 pode armazenar dados, incluindo sequências de instruções, que podem ser executadas pela CPU 602, ou por qualquer outro dispositivo incluído no sistema de computação 600. Em uma modalidade da invenção, a memória 612 pode incluir um ou mais dispositivos de armazenamento voláteis (ou memória), tais como, memória de acesso aleatório (RAM), RAM dinâmica (DRAM), DRAM síncrona (SDRAM), RAM estática (SRAM), ou outros tipos de dispositivos de armazenamento. A memória não volátil também pode ser utilizada como um disco rígido. Os dispositivos adicionais podem se comunicar por meio da rede de interconexão 604, tais como, múltiplas CPUs e/ou múltiplas memórias de sistema.
[0046] O MCH 608 também pode incluir uma interface gráfica 614 que se comunica com um dispositivo de exibição 616. Em uma modalidade da invenção, a interface gráfica 614 pode se comunicar com o dispositivo de exibição 616 por meio de uma porta gráfica acelerada (AGP). Em uma modalidade da invenção, o visor 616 (tal como, um visor de painel plano) pode se comunicar com a interface gráfica 614, por exemplo, através de um conversor de sinal que traduz uma representação digital de uma imagem armazenada em um dispositivo de armazenamento, tal como, uma memória de vídeo ou uma memória de sistema em sinais de exibição que são interpretados e exibidos pelo visor 616. Os sinais de exibição produzidos pelo dispositivo de exibição podem passar por vários dispositivos de controle antes de serem interpretados pelo visor 616 e exibidos subsequentemente exibidos no mesmo.
[0047] Uma interface de hub 618 pode permitir que o MCH 608 e a um hub de controle de entrada/saída (ICH) 620 se comuniquem. O ICH 620 pode fornecer uma interface para o(s) dispositivo(s) de I/O que se comunicam com o sistema de computação 600. O ICH 620 pode se comunicar com um barramento 622 através de uma ponte periférica (ou controlador) 624, por exemplo, uma ponte de interconexão de componente periférica (PCI), um controlador de barramento serial universal (USB), ou outros tipos de pontes ou controladores periféricos. A ponte 624 pode fornecer um caminho de dados entre a CPU 602 e dispositivos periféricos. Outras topologias podem ser utilizadas. Além disso, múltiplos barramentos podem se comunicar com o ICH 620, por exemplo, através de múltiplas pontes ou controladores. Ademais, outros periféricos em comunicação com o ICH 620 podem incluir, em várias modalidades da invenção, eletrônica de unidade integrada (IDE) ou pequeno(s) disco(s) rígidos de interface de sistema de computador (SCSI), porta(s) USB, um teclado, um mouse, porta(s) paralela(s), porta(s) serial(seriais), unidade(s) de disquete, suporte de saída digital (por exemplo, interface de vídeo digital (DVI)), ou outros dispositivos.
[0048] O barramento 622 pode se comunicar com um dispositivo de áudio 626, uma ou mais unidade(s) 628, e um dispositivo de interface de rede 630 (que está em comunicação com a rede de computador 603). Outros dispositivos podem se comunicar por meio do barramento 622. Além disso, vários componentes (trais como, o dispositivo de interface de rede 630) pode se comunicar com o MCH 608 em algumas modalidades da invenção. Além disso, o processador 602 e um ou mais componentes diferentes discutidos no presente documento podem ser combinados para formar um único chip (por exemplo, a fim de fornecer um Sistema em Chip (SOC)). Adicionalmente, o acelerador gráfico 616 pode ser incluído dentro do MCH 608 em outras modalidades da invenção.
[0049] Adicionalmente, o sistema de computação 600 pode incluir memória volátil e/ou não volátil (ou armazenamento). Por exemplo, a memória não volátil pode incluir um ou mais dentre o seguinte: a memória de apenas leitura (ROM), ROM programável (PROM), PROM apagável (EPROM), EPROM eletricamente (EEPROM), uma unidade de disco (por exemplo, 628), um disquete, uma disco compacto com ROM (CD-ROM), um disco versátil digital (DVD), memória flash, um disco magneto-óptico ou outros tipos de mídias legível por máquina não voláteis com capacidade para armazenar dados eletrônicos (por exemplo, instruções).
[0050] A Figura 7 ilustra um diagrama de blocos de um sistema de computação 700, de acordo com uma modalidade da invenção. O sistema 700 pode incluir um ou mais processadores 702-1 a 702-N (denominados, em geral, no presente documento de “processadores 702” ou “processador 702”). Os processadores 702 podem se comunicar por meio de uma rede de interconexão ou de um barramento 704. Cada processador pode incluir vários componentes, em que alguns são discutidos apenas com referência ao processador 702-1 para propósitos de esclarecimento. Consequentemente, cada um dentre os processadores restantes 702-2 a 702-N pode incluir os mesmos componentes ou componentes semelhantes discutidos com referência ao processador 702-1.
[0051] Em uma modalidade, o processador 702-1 pode incluir um ou mais núcleos de processador 706-1 a 706-M (denominado no presente documento de “núcleos 706” ou, de modo mais geral, “núcleo 706”), um cache compartilhado 708, um roteador 710 e/ou a lógica ou unidade de controle de processador 720. Os núcleos de processador 706 podem ser implantados em um único chip de circuito integrado (IC). Ademais, o chip pode incluir um ou mais caches compartilhados e/ou privados (tais como, cache 708), barramentos ou interconexões (tais como, um barramento ou rede de interconexão 712), controladores de memória ou outros componentes.
[0052] Em uma modalidade, o roteador 710 pode ser usado para se comunicar entre vários componentes do processador 702-1 e/ou do sistema 700. Ademais, o processador 702-1 pode incluir mais que um roteador 710. Além disso, a multiplicidade de roteadores 710 pode estar em comunicação a fim de habilitar o roteamento de dados entre vários componentes no interior ou no exterior do processador 702-1.
[0053] O cache compartilhado 708 pode armazenar dados (por exemplo, instruções) que são utilizados por um ou mais componentes do processador 702-1, por exemplo, os núcleos 706. Por exemplo, o cache compartilhado 708 pode armazenar em cache localmente os dados armazenados em uma memória 714 para acesso mais rápido através de componentes do processador 702. Em uma modalidade, o cache 708 pode incluir um cache de nível intermediário (por exemplo, um nível 2 (L2), um nível 3 (L3), um nível 4 (L4), ou outros níveis de cache), um último nível cache (LLC) e/ou combinações dos mesmos. Ademais, vários componentes do processador 702-1 podem se comunicar com o cache compartilhado 708 diretamente, através de um barramento (por exemplo, o barramento 712) e/ou de um controlador de memória ou de um hub. Conforme mostrado na Figura 7, em algumas modalidades, um ou mais dentre os núcleos 706 pode incluir um cache de nível 1 (L1) 716-1 (denominado, em geral, no presente documento de “cache de L1 716”). Em uma modalidade, a unidade de controle 720 pode incluir uma lógica para implantar as operações descritas acima com referência ao controlador de memória 122 na Figura 2.
[0054] A Figura 8 ilustra um diagrama de blocos de porções de um núcleo de processador 706 e outros componentes de um sistema de computação, de acordo com uma modalidade da invenção. Em uma modalidade, as setas mostradas na Figura 8 ilustram a direção de fluxo de instruções através do núcleo 706. Um ou mais núcleos de processador (por exemplo, o núcleo de processador 706) podem ser implantados em um único chip (ou dado) de circuito integrado conforme discutido acima com referência à Figura 7. Ademais, o chip pode incluir um ou mais caches compartilhados e/ou privados (por exemplo, cache 708 da Figura 7), interconexões (por exemplo, interconexões 704 e/ou 112 da Figura 7), unidades de controle, controladores de memória ou outros componentes.
[0055] Conforme ilustrado na Figura 8, o núcleo de processador 706 pode incluir uma unidade de busca 802 para buscar instruções (incluindo instruções com ramificações condicionais) para execução através do núcleo 706. As instruções podem ser buscadas a partir de quaisquer dispositivos de armazenamento, tais como, a memória 714. O núcleo 706 também pode incluir uma unidade de decodificação 804 para decodificar a instrução buscada. Por exemplo, a unidade de decodificação 804 pode decodificar a instrução buscada em uma pluralidade de uops (micro-operações).
[0056] Adicionalmente, o núcleo 706 pode incluir uma unidade de agendamento 806. A unidade de agendamento 806 pode realizar várias operações associadas a instruções decodificadas de armazenamento (por exemplo, recebidas da unidade de decodificação 804) até que as instruções estejam prontas para despache, por exemplo, até que todos os valores de origem de uma instrução decodificada estejam disponíveis. Em uma modalidade, a unidade de agendamento 806 pode agendar e/ou emitir (ou despachar) instruções decodificadas a uma unidade de execução 808 para execução. A unidade de execução 808 pode executar as instruções despachadas após serem decodificadas (por exemplo, pela unidade de decodificação 804) e despachadas (por exemplo, pela unidade de agendamento 806). Em uma modalidade, a unidade de execução 808 pode incluir mais que uma unidade de execução. A unidade de execução 808 pode realizar várias operações aritméticas, tais como, soma, subtração, multiplicação e/ou divisão e podem incluir uma ou mais unidades de lógica aritméticas (ALUs). Em uma modalidade, um coprocessador (não mostrado) pode realizar várias operações aritméticas em combinação com a unidade de execução 808.
[0057] Além disso, a unidade de execução 808 pode executar instruções com problemas. Por conseguinte, o núcleo de processador 706 pode ser um núcleo de processador com problema em uma modalidade. O núcleo 706 também pode incluir uma unidade de baixa 810. A unidade de baixa 810 pode dar baixar em instruções executadas após as mesmas serem confirmadas. Em uma modalidade, a baixa das instruções executadas pode resultar na confirmação do estado do processador a partir da execução das instruções, na desalocação de registros físicos usados pelas instruções, etc.
[0058] O núcleo 706 também pode incluir uma unidade de barramento 714 para habilitar a comunicação entre componentes do núcleo de processador 706 e outros componentes (por exemplo, os componentes discutidos com referência à Figura 8) por meio de um ou mais barramentos (por exemplo, barramentos 804 e/ou 812). O núcleo 706 também pode incluir um ou mais registros 816 para armazenar dados acessados por vários componentes do núcleo 706 (por exemplo, valores em relação às definições de estado de consumo de energia).
[0059] Além disso, embora a Figura 7 ilustre a unidade de controle 720 como acoplada ao núcleo 706 por meio de interconexão 812, em várias modalidades, a unidade de controle 720 pode ser localizada em outro local, por exemplo, no interior do núcleo 706, acoplada ao núcleo por meio de barramento 704, etc.
[0060] Em algumas modalidades, um ou mais dentre os componentes discutidos no presente documento podem ser incorporados como um dispositivo de Sistema em Chip (SOC). A Figura 9 ilustra a diagrama de blocos de um pacote de SOC em conformidade com uma modalidade. Conforme ilustrado na Figura 9, o SOC 902 inclui um ou mais núcleos de Unidade De Processamento Central (CPU) 920, um ou mais núcleos de Unidade de Processador Central (GPU) 930, uma interface Entrada/Saída (I/O) 940 e um controlador de memória 942. Vários componentes do pacote de SOC 902 podem ser acoplados a uma interconexão ou barramento, conforme discutido no presente documento com referência às Figuras. Além disso, o pacote de SOC 902 pode incluir mais ou menos componentes, tais como, aqueles discutidos no presente documento com referência às outras Figuras. Além disso, cada componente do pacote de SOC 902 pode incluir um ou mais outros componentes, por exemplo, conforme discutido com referência às outras Figuras no presente documento. Em uma modalidade, o pacote de SOC 902 (e seus componentes) é fornecido em um ou mais dados de Circuito Integrado (IC), por exemplo, que são empacotados em um único dispositivo semicondutor.
[0061] Conforme ilustrado na Figura 9, o pacote de SOC 902 é acoplado a uma memória 960 (que pode igual ou semelhante à memória discutida no presente documento com referência às outras Figuras) por meio do controlador de memória 942. Em uma modalidade, a memória 960 (ou uma porção da mesma) pode ser integrada no pacote de SOC 902.
[0062] A interface de I/O 940 pode ser acoplada a um ou mais dispositivos de I/O 970, por exemplo, por meio de uma interconexão e/ou barramento, conforme discutido no presente documento com referência às outras Figuras. O(s) dispositivo(s) de I/O 970 pode(m) incluir um ou mais dentre um teclado, um mouse, um touchpad, um visor, um dispositivo de captura de imagem/vídeo (tal como, uma câmera ou filmadora portátil/gravador de vídeo), uma tela sensível ao toque, um alto-falante, ou semelhantes.
[0063] A Figura 10 ilustra um sistema de computação 1000 que está disposto em uma configuração ponto a ponto (PtP), de acordo com uma modalidade da invenção. Em particular, a Figura 10 mostra um sistema em que os processadores, memória e os dispositivos de entrada/saída são interconectados por várias interfaces ponto a ponto.
[0064] Conforme ilustrado na Figura 10, o sistema 1000 pode incluir diversos processadores dente os quais apenas dois, processadores 1002 e 1004, são mostrados para propósitos de esclarecimento. Os processadores 1002 e 1004 podem incluir, cada um, um hub controlador de memória local (MCH) 1006 e 1008 para possibilitar a comunicação com as memórias 1010 e 1012. O MCH 1006 e 1008 pode incluir o controlador de memória 120 e/ou lógica 125 da Figura 1 em algumas modalidades.
[0065] Em uma modalidade, os processadores 1002 e 1004 podem ser um dentre os processadores 702 discutidos com referência à Figura 7. Os processadores 1002 e 1004 podem trocar dados por meio de uma interface ponto a ponto (PtP) 1014 com o uso de circuitos de interface PtP 1016 e 1018, respectivamente. Além disso, os processadores 1002 e 1004 pode trocar, cada um, dados com um conjunto de chips 1020 por meio de interfaces PtP individuais 1022 e 1024 com o uso de circuitos de interface ponto a ponto 1026, 1028, 1030 e 1032. O conjunto de chips 1020 pode trocar, adicionalmente, dados com um circuito gráfico de alto desempenho 1034 por meio de uma interface gráfica de alto desempenho 1036, por exemplo, com o uso de um circuito de interface PtP 1037.
[0066] Conforme mostrado na Figura 10, um ou mais dentre os núcleos 106 e/ou cache 108 da Figura 1 pode estar localizado dentro dos processadores 1004. No entanto, pode haver outras modalidades da invenção em outros circuitos, unidades de lógica ou dispositivos dentro do sistema 1000 da Figura 10. Além disso, outras modalidades da invenção podem ser distribuídas a diversos circuitos, unidades de lógica ou dispositivos ilustrados na Figura 10.
[0067] O conjunto de chips 1020 pode se comunicar a um barramento 1040 com o uso de um circuito de interface PtP 1041. O barramento 1040 pode ter um ou mais dispositivos que se comunicam com o mesmo, por exemplo, uma ponte de barramento 1042 e dispositivos de I/O 1043. Por meio de um barramento 1044, a ponte de barramento 1043 pode se comunicar com outros dispositivos, tais como, um teclado/mouse 1045, dispositivos de comunicação 1046 (tais como, modens, dispositivos de interface de rede, ou outros dispositivos de comunicação que podem se comunicar com a rede de computador 1003), dispositivo de I/O de áudio e/ou um dispositivo de armazenamento de dados 1048. O dispositivo de armazenamento de dados 1048 (que pode ser uma unidade de disco rígido ou uma unidade em estado sólido com base em flash NAND) pode armazenar códigos 1049 que podem ser executados pelos processadores 1004.
[0068] Os exemplos seguintes pertencem às modalidades adicionais.
[0069] O Exemplo 1 é um dispositivo de memória que compreende uma memória volátil, uma memória não volátil e um controlador que compreende um armazenamento temporário de memória e uma lógica para transferir dados entre a memória não volátil e a memória volátil por meio do armazenamento temporário de memória em resposta a solicitações de um aplicativo, em que os dados no armazenamento temporário de memória são acessíveis ao aplicativo.
[0070] No Exemplo 2, a memória volátil do Exemplo 1 pode incluir, opcionalmente, a memória de acesso aleatório dinâmico (DRAM), e a memória não volátil compreende uma memória de ponto de cruzamento tridimensional.
[0071] No Exemplo 3, a matéria de qualquer um dos Exemplos 1 a 2, pode incluir, opcionalmente, uma memória não volátil que fornece uma cópia de segurança para a memória volátil.
[0072] No Exemplo 4, a matéria de qualquer um dos Exemplos 1 a 3, pode incluir, opcionalmente, lógica para receber uma solicitação de carga de página e, em resposta, à solicitação de carga de página, para mover uma página de dados a partir da memória não volátil ao armazenamento temporário de memória, fornecer um sinal ao aplicativo que indica que a página de dados está disponível e, em resposta à operação de leitura a partir do aplicativo, gravar uma página de dados a partir do armazenamento temporário de memória na memória volátil.
[0073] No Exemplo 5, a matéria de qualquer um dos Exemplos 1 a 4, pode incluir, opcionalmente, um armazenamento temporário de memória que compreende uma pluralidade de linhas de cache, e o controlador compreende adicionalmente lógica para invalidar as linhas de cache no armazenamento temporário de memória quando a linha de cache é gravada na memória volátil.
[0074] No Exemplo 6, a matéria de qualquer um dos Exemplos 1 a 5, pode incluir, opcionalmente, lógica para receber uma solicitação de retirada de página e, em resposta à solicitação de retirada de página, para receber uma operação de leitura a um endereço predeterminado, em resposta à operação de leitura, ler uma página de dados a partir da memória não volátil ao armazenamento temporário de memória e gravar a página de dados na memória não volátil.
[0075] No Exemplo 7, a matéria de qualquer um dos Exemplos 1 a 6 pode incluir, opcionalmente, um armazenamento de energia.
[0076] O Exemplo 8 é um dispositivo eletrônico que compreende um processador para executar um sistema operacional e pelo menos um aplicativo e um dispositivo de memória que compreende uma memória volátil, uma memória não volátil e um controlador que compreende, um armazenamento temporário de memória e lógica para transferir dados entre a memória não volátil e a memória volátil por meio do armazenamento temporário de memória em resposta às solicitações do aplicativo, em que os dados no armazenamento temporário de memória são acessíveis ao aplicativo, e um driver para gerenciar operações de acesso à memória entre o pelo menos um aplicativo e o dispositivo de memória.
[0077] No Exemplo 9, a memória volátil do Exemplo 8 pode incluir, opcionalmente, memória volátil que compreende memória de acesso aleatório dinâmico (DRAM); e a memória não volátil compreende uma memória de ponto de cruzamento tridimensional.
[0078] No Exemplo 10, a matéria de qualquer um dos Exemplos 8 a 9, pode incluir, opcionalmente, uma memória não volátil que fornece uma cópia de segurança para a memória volátil.
[0079] No Exemplo 11, a matéria de qualquer um dos Exemplos 8 a 10 pode incluir, opcionalmente, lógica para gerar uma solicitação de carga de página para mover uma página de dados a partir da memória não volátil para a memória volátil e para invalidar uma ou mais linhas de cache no processador para a página.
[0080] No Exemplo 12, a matéria de qualquer um dos Exemplos 8 a 11, pode incluir, opcionalmente, lógica para receber a solicitação de carga de página e, em resposta, à solicitação de carga de página, para mover uma página de dados a partir da memória não volátil ao armazenamento temporário de memória, fornecer um sinal ao aplicativo que indica que a página de dados está disponível e, em resposta à operação de leitura a partir do aplicativo, gravar uma página de dados a partir do armazenamento temporário de memória na memória volátil.
[0081] No Exemplo 13, a matéria de qualquer um dos Exemplos 8 a 12, pode incluir, opcionalmente, um armazenamento temporário de memória que compreende uma pluralidade de linhas de cache e lógica para invalidar as linhas de cache no armazenamento temporário de memória quando a linha de cache é gravada na memória volátil.
[0082] No exemplo 14, a matéria de qualquer um dos Exemplos 8 a 13 pode incluir, opcionalmente, lógica para gerar solicitação de retirada de página para mover uma página de dados a partir da memória não volátil para a memória volátil.
[0083] No Exemplo 15, a matéria de qualquer um dos Exemplos 8 a 14 pode incluir, opcionalmente, lógica para receber a solicitação de retirada de página e, em resposta à solicitação de retirada de página, para receber uma operação de leitura a um endereço predeterminado, em resposta à operação de leitura, ler uma página de dados a partir da memória não volátil ao armazenamento temporário de memória e gravar a página de dados na memória não volátil.
[0084] No Exemplo 16, a matéria de qualquer um dos Exemplos 8 a 15 pode incluir, opcionalmente, um armazenamento de energia.
[0085] O Exemplo 17 é um controlador para um dispositivo de memória que compreende uma memória volátil e uma memória não volátil, sendo que o controlador compreende um armazenamento temporário de memória e uma lógica para transferir dados entre a memória não volátil e a memória volátil por meio do armazenamento temporário de memória em resposta a solicitações de um aplicativo, em que os dados no armazenamento temporário de memória são acessíveis ao aplicativo.
[0086] No Exemplo 18, a memória volátil do Exemplo 17 pode incluir, opcionalmente, memória volátil que compreende memória de acesso aleatório dinâmico (DRAM); e a memória não volátil compreende uma memória de ponto de cruzamento tridimensional.
[0087] No Exemplo 19, a matéria de qualquer um dos Exemplos 17 a 18, pode incluir, opcionalmente, uma memória não volátil que fornece uma cópia de segurança para a memória volátil.
[0088] No Exemplo 20, a matéria de qualquer um dos Exemplos 17 a 19, pode incluir, opcionalmente, lógica para receber a solicitação de carga de página e, em resposta, à solicitação de carga de página, para mover uma página de dados a partir da memória não volátil ao armazenamento temporário de memória, fornecer um sinal ao aplicativo que indica que a página de dados está disponível e, em resposta à operação de leitura a partir do aplicativo, gravar uma página de dados a partir do armazenamento temporário de memória na memória volátil.
[0089] No Exemplo 21, a matéria de qualquer um dos Exemplos 17 a 20, pode incluir, opcionalmente, um armazenamento temporário de memória que compreende uma pluralidade de linhas de cache e lógica para invalidar as linhas de cache no armazenamento temporário de memória quando a linha de cache é gravada na memória volátil.
[0090] No Exemplo 22, a matéria de qualquer um dos Exemplos 17 a 21 pode incluir, opcionalmente, lógica para receber a solicitação de retirada de página e, em resposta à solicitação de retirada de página, para receber uma operação de leitura a um endereço predeterminado, em resposta à operação de leitura, ler uma página de dados a partir da memória não volátil ao armazenamento temporário de memória e gravar a página de dados na memória não volátil.
[0091] O Exemplo 23 é um produto de programa de computador que compreende instruções de lógica armazenadas em uma mídia legível por computador não transitória que, quando executadas por um controlador para um dispositivo de memória que compreende uma memória volátil e uma memória não volátil, configuram o controlador para a lógica a fim de transferir dados entre a memória não volátil e a memória volátil por meio de um armazenamento temporário de memória em resposta às solicitações de um aplicativo, em que os dados no armazenamento temporário de memória são acessíveis ao aplicativo.
[0092] No Exemplo 24, a matéria do Exemplo 23 pode incluir, opcionalmente, instruções de lógica armazenadas em uma mídia legível por computador não transitória que, quando executadas por um controlador para um dispositivo de memória que compreende uma memória volátil e uma memória não volátil, configuram o controlador para receber uma solicitação de carga de página e, em resposta à solicitação de carga de página, para mover uma página de dados a partir da memória não volátil ao armazenamento temporário de memória, fornecem um sinal ao aplicativo que indica que a página de dados está disponível e, em resposta à operação de leitura do aplicativo, gravam uma página de dados do armazenamento temporário de memória na memória volátil.
[0093] No Exemplo 25, a matéria de qualquer um dos Exemplos 23 a 24 pode incluir, opcionalmente, um armazenamento temporário de memória que compreende uma pluralidade de linhas de cache e instruções de lógica armazenadas em uma mídia legível por computador não transitória que, quando executadas por um controlador para um dispositivo de memória que compreende uma memória volátil e uma memória não volátil, configuram o controlador de modo a invalidar as linhas de cache no armazenamento temporário de memória quando a linha de cache é gravada na memória volátil.
[0094] No Exemplo 26, a matéria de qualquer um dos Exemplos 23 a 25 pode incluir, opcionalmente, instruções de lógica armazenadas em uma mídia legível por computador não transitória que, quando executadas por um controlador para um dispositivo de memória que compreende uma memória volátil e uma memória não volátil, configuram o controlador para receber uma solicitação de retirada de página e, em resposta à solicitação de retirada de página, para receber uma operação de leitura a um endereço predeterminado, em resposta à operação de leitura, ler uma página de dados da memória não volátil ao armazenamento temporário de memória e gravar a página de dados na memória não volátil.
[0095] Em várias modalidades da invenção, as operações discutidas no presente documento podem ser implantadas como hardware (por exemplo, conjunto de circuitos), software, firmware, microcódigo ou combinações dos mesmos, que podem ser fornecidos como um produto de programa de computador, por exemplo, incluindo uma mídia tangível (por exemplo, não transitória) legível por máquina ou legível por computador que tem armazenadas na mesma instruções (ou procedimentos de software) usadas para programar um computador para realizar um processo discutido no presente documento. Além disso, o termo “lógica” pode incluir, a título de exemplo, software, hardware ou combinações de software e de hardware. A mídia legível por máquina pode incluir um dispositivo de armazenamento, tal como, aqueles discutidos no presente documento.
[0096] As referências no decorrer do presente relatório descritivo a "uma (1) modalidade" ou "a modalidade" significam que um aspecto, estrutura ou característica particular descrita em conexão com a modalidade pode estar incluído em pelo menos uma implantação. O aparecimento do sintagma "em uma modalidade" em vários parágrafos no presente relatório descritivo pode ou não se referir necessariamente à mesma modalidade
[0097] Além disso, na descrição e nas reivindicações, os termos “acoplado(a)” e “conectado(a)”, podem ser usados, junto de seus derivados. Em algumas modalidades da invenção, “conectado(a)” pode ser usado para indicar que dois ou mais elementos estão em contato físico direto ou em contato elétrico entre si. “Acoplado(a)” pode significar que dois ou mais elementos estão em contato físico direto ou em contato elétrico No entanto, “acoplado(a)” também pode significar que dois ou mais elementos podem não estar em contato direto entre si, porém podem ainda cooperar ou interagir entre si.
[0098] Desse modo, embora as modalidades da invenção tenham sido descritas em uma linguagem específica a recursos estruturais e/ou atos metodológicos, deve ser entendido que a matéria reivindicada pode não ser limitada aos recursos ou atos específicos descritos. De preferência, os recursos e atos específicos são revelados como formas de amostra da matéria revelada.

Claims (6)

1. Um sistema compreendendo um dispositivo de memória (130) e um driver de sistema operacional (162) para gerenciar operações de acesso a memória entre pelo menos um aplicativo e o dispositivo de memória (130), o dispositivo de memória (130) compreendendo: um driver (162); uma memória volátil (260); uma memória não volátil (250); e um controlador (242) compreendendo: um armazenamento temporário de memória; o sistema sendo caracterizado pelo fato de que o driver (162) está configurado, em resposta ao recebimento de uma solicitação de retirada de página a partir de um sistema operacional (140) na memória volátil (260), para programar o controlador (242) para copiar uma página a partir da memória volátil (260) para a memória não volátil (250) através do armazenamento temporário de memória (246) e para executar uma série de operações de leitura para uma localização fictícia no armazenamento temporário de memória (246), enquanto o controlador (242) copia a página a partir da memória volátil (260) para a memória não volátil (250); em que o controlador (242) está configurado, em resposta ao recebimento de solicitação de retirada de página, para proporcionar dados fictícios ao driver (246) e para copiar dados de página a partir da memória volátil (260) para o armazenamento temporário de memória (246) como uma operação de segundo plano; e em que o driver (162) é ainda configurado, em resposta ao controlador (242) tendo copiado a página, para invalidar a página a partir de uma memória de cache local (230) em um pacote de CPU (200) acoplado com o armazenamento temporário de memória (246) e liberar a página a partir da memória volátil (260) para o sistema operacional (140); e um sinal de que a página está liberada a partir da memória volátil é fornecido ao sistema operacional (140) a partir do driver (162).
2. O dispositivo de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que: a memória volátil (260) compreende memória de acesso aleatório dinâmico (DRAM); e a memória não volátil (250) compreende uma memória de ponto de cruzamento tridimensional.
3. O dispositivo de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que a memória não volátil (250) proporciona uma cópia de segurança para a memória volátil (260).
4. O dispositivo de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que o controlador (242) compreende lógica para receber a solicitação de carga de página e, em resposta à solicitação de carga de página: mover uma página de dados a partir da memória não volátil (250) para o armazenamento temporário de memória (246); proporcionar um sinal para o aplicativo de que a página de dados está disponível; e em resposta a uma operação de leitura do aplicativo, gravar uma página de dados do armazenamento temporário de memória (246) na memória volátil (260).
5. O dispositivo de memória, de acordo com a reivindicação 4, caracterizado pelo fato de que: o armazenamento temporário de memória (246) compreende uma pluralidade de linhas de cache; e o controlador (242) ainda compreende lógica para invalidar as linhas de cache no armazenamento temporário de memória (246) quando a linha de cache é gravada na memória volátil (260).
6. O dispositivo de memória, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende um armazenamento de energia.
BR112015029848-6A 2013-06-27 2014-06-23 Sistema compreendendo um dispositivo de memória e um driver de sistema operacional para gerenciar operações de acesso a memória entre pelo menos um aplicativo e o dispositivo de memória BR112015029848B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/928,694 2013-06-27
US13/928,694 US9129674B2 (en) 2013-06-27 2013-06-27 Hybrid memory device
PCT/US2014/043678 WO2014209891A1 (en) 2013-06-27 2014-06-23 Hybrid memory device

Publications (3)

Publication Number Publication Date
BR112015029848A2 BR112015029848A2 (pt) 2017-07-25
BR112015029848A8 BR112015029848A8 (pt) 2019-12-24
BR112015029848B1 true BR112015029848B1 (pt) 2022-12-13

Family

ID=52115471

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015029848-6A BR112015029848B1 (pt) 2013-06-27 2014-06-23 Sistema compreendendo um dispositivo de memória e um driver de sistema operacional para gerenciar operações de acesso a memória entre pelo menos um aplicativo e o dispositivo de memória

Country Status (9)

Country Link
US (1) US9129674B2 (pt)
EP (1) EP3014623B1 (pt)
JP (1) JP6112594B2 (pt)
KR (1) KR101719092B1 (pt)
CN (1) CN105247617B (pt)
BR (1) BR112015029848B1 (pt)
RU (1) RU2627100C2 (pt)
TW (1) TWI537725B (pt)
WO (1) WO2014209891A1 (pt)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198350B2 (en) * 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10380022B2 (en) * 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10838646B2 (en) * 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US9129674B2 (en) 2013-06-27 2015-09-08 Intel Corporation Hybrid memory device
US11182284B2 (en) * 2013-11-07 2021-11-23 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
WO2015070110A2 (en) 2013-11-07 2015-05-14 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10248328B2 (en) * 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US20150347151A1 (en) * 2014-05-28 2015-12-03 Diablo Technologies Inc. System and method for booting from a non-volatile memory
CN106155926B (zh) * 2015-04-09 2019-11-26 澜起科技股份有限公司 存储器及存储器的数据交互方法
WO2016171934A1 (en) 2015-04-20 2016-10-27 Netlist, Inc. Memory module and system and method of operation
US10573385B2 (en) 2015-05-28 2020-02-25 Intel Corporation Ferroelectric based memory cell with non-volatile retention
US9799402B2 (en) 2015-06-08 2017-10-24 Samsung Electronics Co., Ltd. Nonvolatile memory device and program method thereof
US10078448B2 (en) 2015-07-08 2018-09-18 Samsung Electronics Co., Ltd. Electronic devices and memory management methods thereof
US10725689B2 (en) 2015-08-31 2020-07-28 Hewlett Packard Enterprise Development Lp Physical memory region backup of a volatile memory to a non-volatile memory
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US10152262B2 (en) 2016-05-03 2018-12-11 Micron Technology, Inc. Memory access techniques in memory devices with multiple partitions
US10714179B2 (en) 2016-10-07 2020-07-14 Hewlett-Packard Development Company, L.P. Hybrid memory devices
KR20180078512A (ko) * 2016-12-30 2018-07-10 삼성전자주식회사 반도체 장치
US20180239725A1 (en) * 2017-02-17 2018-08-23 Intel Corporation Persistent Remote Direct Memory Access
US11175853B2 (en) * 2017-05-09 2021-11-16 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory
KR102427323B1 (ko) * 2017-11-08 2022-08-01 삼성전자주식회사 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
US10705963B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
TW202014898A (zh) 2018-10-04 2020-04-16 宏碁股份有限公司 電腦系統、其遊戲載入方法及電腦程式產品
US11537521B2 (en) 2019-06-05 2022-12-27 Samsung Electronics Co., Ltd. Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置
US11954358B2 (en) * 2020-06-23 2024-04-09 Micron Technology, Inc. Cache management in a memory subsystem

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62224845A (ja) * 1986-03-26 1987-10-02 Hitachi Ltd 仮想記憶方式
JPH04195442A (ja) * 1990-11-28 1992-07-15 Fujitsu Ltd アドレス変換機構を利用したメモリ管理方式
JPH07230411A (ja) * 1994-02-18 1995-08-29 Fujitsu Ltd フラッシュメモリカード装置
JP2000251035A (ja) 1999-02-26 2000-09-14 Hitachi Ltd メモリカード
JP4211254B2 (ja) * 2001-12-04 2009-01-21 関西電力株式会社 固体酸化物形燃料電池
US20060294295A1 (en) * 2005-06-24 2006-12-28 Yukio Fukuzo DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device
KR101197556B1 (ko) 2006-01-09 2012-11-09 삼성전자주식회사 불 휘발성 메모리의 프로그램 동작을 검증하는 장치 및방법, 그리고 그 장치를 포함한 메모리 카드
KR100772863B1 (ko) * 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
KR100699893B1 (ko) * 2006-01-23 2007-03-28 삼성전자주식회사 하이브리드 디스크 드라이브 및 하이브리드 디스크드라이브의 데이터 제어방법
US7716411B2 (en) * 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US7564722B2 (en) 2007-01-22 2009-07-21 Micron Technology, Inc. Memory system and method having volatile and non-volatile memory devices at same hierarchical level
JP2009104687A (ja) * 2007-10-22 2009-05-14 Fujitsu Ltd 記憶装置及び制御回路
US7855916B2 (en) 2007-10-24 2010-12-21 Rao G R Mohan Nonvolatile memory systems with embedded fast read and write memories
US8041895B2 (en) * 2008-01-28 2011-10-18 Spansion Llc Translation table coherency mecahanism using cache way and set index write buffers
US8560761B2 (en) 2008-03-31 2013-10-15 Spansion Llc Memory resource management for a flash aware kernel
JP5085446B2 (ja) * 2008-07-14 2012-11-28 株式会社東芝 三次元メモリデバイス
KR101547326B1 (ko) * 2008-12-04 2015-08-26 삼성전자주식회사 트랜지스터 및 그 제조방법
KR101715048B1 (ko) * 2010-09-13 2017-03-13 삼성전자주식회사 부스팅 전하 누설을 감소시키기 위한 메모리 장치 및 이를 포함하는 시스템
US8567475B2 (en) * 2011-05-04 2013-10-29 Kenneth Eugene Boone Overhead gate systems
US9129674B2 (en) 2013-06-27 2015-09-08 Intel Corporation Hybrid memory device

Also Published As

Publication number Publication date
TW201508483A (zh) 2015-03-01
KR20150140361A (ko) 2015-12-15
CN105247617B (zh) 2020-06-12
US20150003175A1 (en) 2015-01-01
BR112015029848A2 (pt) 2017-07-25
EP3014623A4 (en) 2017-03-01
RU2015151127A (ru) 2017-05-31
EP3014623A1 (en) 2016-05-04
BR112015029848A8 (pt) 2019-12-24
KR101719092B1 (ko) 2017-04-04
EP3014623B1 (en) 2019-03-13
TWI537725B (zh) 2016-06-11
JP6112594B2 (ja) 2017-04-12
JP2016523411A (ja) 2016-08-08
US9129674B2 (en) 2015-09-08
CN105247617A (zh) 2016-01-13
RU2627100C2 (ru) 2017-08-03
WO2014209891A1 (en) 2014-12-31

Similar Documents

Publication Publication Date Title
BR112015029848B1 (pt) Sistema compreendendo um dispositivo de memória e um driver de sistema operacional para gerenciar operações de acesso a memória entre pelo menos um aplicativo e o dispositivo de memória
US9250999B1 (en) Non-volatile random access memory in computer primary memory
KR101862112B1 (ko) 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화
US10372446B2 (en) Technology to dynamically modulate memory device read granularity
JP2011258189A (ja) プロセッサ・メインメモリのための持続性メモリ
JP2011258193A (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
US20160283143A1 (en) Method and apparatus for improving immunity to defects in a non-volatile memory
KR101743409B1 (ko) 메모리 관리
US20180004649A1 (en) Techniques to Format a Persistent Memory File
BR112015019392B1 (pt) Aparelho de memória remota, controlador de memória e dispositivo eletrônico para gerenciamento de latência de memória.
RU2644529C2 (ru) Отображение встроенного адреса есс
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US20210224213A1 (en) Techniques for near data acceleration for a multi-core architecture
TWI735515B (zh) 致使內容型樣要被儲存至記憶體裝置的記憶體胞元之技術
KR102518010B1 (ko) 휘발성 메모리에 대한 극성 기반 데이터 트랜스퍼 기능
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US10852988B2 (en) On access memory zeroing
KR102683696B1 (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
KR20180054394A (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법

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]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.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 23/06/2014, OBSERVADAS AS CONDICOES LEGAIS