BR112018010187B1 - Proteção de um local de ecc ao transmitir dados de correção através de um link de memória - Google Patents

Proteção de um local de ecc ao transmitir dados de correção através de um link de memória Download PDF

Info

Publication number
BR112018010187B1
BR112018010187B1 BR112018010187-7A BR112018010187A BR112018010187B1 BR 112018010187 B1 BR112018010187 B1 BR 112018010187B1 BR 112018010187 A BR112018010187 A BR 112018010187A BR 112018010187 B1 BR112018010187 B1 BR 112018010187B1
Authority
BR
Brazil
Prior art keywords
data
mask
parity bits
link
memory
Prior art date
Application number
BR112018010187-7A
Other languages
English (en)
Other versions
BR112018010187A2 (pt
Inventor
David Ian West
Jungwon Suh
Original Assignee
Qualcomm Incorporated
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
Priority claimed from US15/081,460 external-priority patent/US10140175B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112018010187A2 publication Critical patent/BR112018010187A2/pt
Publication of BR112018010187B1 publication Critical patent/BR112018010187B1/pt

Links

Abstract

PROTEÇÃO DE LOCAL DE ECC QUANDO SE TRANSMITEM DADOS DE CORREÇÃO ATRAVÉS DE UM LINK DE MEMÓRIA. Um subsistema de memória pode incluir um controlador de memória que tem uma lógica de codificador/decodificador de código de correção de erros (ECC). O controlador de memória pode ser configurado para embutir bits de paridade de ECC de link em bits de máscara de dados não utilizados e/ou em um dado de gravação de máscara durante uma operação de gravação de máscara. O controlador de memória pode ser também configurado para proteger pelo menos o local dos bits de paridade de ECC de link durante a operação de gravação de máscara.

Description

REFERÊNCIA CRUZADA A PEDIDO RELACIONADO
[0001] Este pedido reivindica o benefício de acordo com 35 U.S.C. §119(e) para o pedido de patente provisório norte-americano N°. 62/258,155, intitulado “PROTEÇÃO DE UM LOCAL DE ECC AO TRANSMITIR DADOS DE CORREÇÃO ATRAVÉS DE UM LINK DE MEMÓRIA”, depositado em 20 de novembro de 2015, cuja revelação é expressamente aqui incorporada em sua totalidade à guisa de referência.
ANTECEDENTE Campo
[0002] A presente revelação refere-se de maneira geral a circuitos integrados (ICs). Mais especificamente, um aspecto da presente revelação refere-se à proteção de um local de código de correção de erros (ECC) quando se transmitem dados de correção através de um link de memória em um subsistema de memória de baixa potência.
Antecedentes
[0003] Aparelhos de memória de semiconductor incluem, por exemplo, memória de acesso aleatório estática (SRAM) e memória de acesso aleatório dinâmica (DRAM). Uma célula de memória DRAM inclui geralmente um transistor e um capacitor, o que permite um alto grau de integração. O capacitor pode ser carregado ou descarregado para armazenar informações como um valor de bit correspondente (‘0’ ou ‘1’, por exemplo). Uma vez que os capacitores vazam carga, as informações armazenadas finalmente se desvanecem, a menos que a carga do capacitor seja renovada. Assim, renovações periódicas ocorrem. Devido ao requisito de renovação, a DRAM é referida como memória dinâmica em oposição a SRAM e outra memória estática. A renovação contínua da DRAM limita geralmente sua utilização à memória principal do computador.
[0004] O escalonamento da DRAM continua a aumentar o número total de bits para cada chip da DRAM. Infelizmente, o escalonamento da DRAM aumenta o número de células de retenção fracas (células que têm o tempo de retenção reduzido, por exemplo). Tais células envolvem ciclos de renovação adicionais para manter as informações armazenadas. Processos de DRAM podem sofrer de erros de renovação de bits aleatórios adicionais dentro de um arranjo de células de memória devido a ciclos de renovação adicionais ou outras variações de processo.
[0005] Algumas memórias de baixa potência implementam códigos de correção de erros (ECCs) para aperfeiçoar o rendimento e a segurança da memória pela aplicação de ECCs a qualquer erro de bits aleatório no arranjo de células de memória. A decodificação e a correção de erros de ECC, contudo, deterioram o desempenho da memória devido ao tempo de acesso de leitura aumentado. Além disto, um link de memória (interface, por exemplo) não é protegido pelos ECCs, e a segurança da memória total é insuficiente para satisfazer os requisitos de alta confiabilidade de alto desempenho da memória do sistema.
Sumário
[0006] Um método de correção de erros e proteção em um subsistema de memória de baixa potência pode incluir embutir bits de paridade de código de correção de erros de links (ECC) em bits de máscara de dados não utilizados e/ou em um dado de gravação de máscara durante uma operação de gravação de máscara. O método pode incluir também proteger pelo menos um local dos bits de paridade de ECC de link durante a operação de gravação de máscara.
[0007] Um subsistema de memória pode incluir um controlador de memória que tem uma lógica de codificador/decodificador de código de correção de erros (ECC). O controlador de memória pode ser configurado para embutir bits de paridade de ECC de link em bits de máscara de dados não utilizados e/ou em um dado de gravação de máscara durante uma operação de gravação de máscara. O controlador de memória pode ser também configurado para proteger pelo menos um local dos bits de paridade de ECC de link durante a operação de gravação de máscara.
[0008] Um subsistema de memória pode incluir um controlador de memória que tem uma lógica de codificador/decodificador de código de correção de erros (ECC). A lógica de codificador/decodificador de ECC pode ser configurada para embutir bits de paridade de ECC em bits de máscara de dados não utilizado e/ou em um dado de gravação de máscara durante uma operação de gravação de máscara. A lógica de codificador/decodificador pode ser também configurada para proteger pelo menos um local dos bits de paridade de ECC durante a operação de gravação de máscara. O subsistema de memória pode incluir também um aparelho de memória acoplado ao controlador de memória por meio de um barramento de dados. O aparelho de memória pode incluir um decodificador de ECC de link e uma lógica de correção em um percurso de gravação. O decodificador de ECC de link pode ser configurado para detecção e correção de erros de link durante a transmissão de dados de gravação através do barramento de dados. O aparelho de memória pode incluir uma lógica de codificador de ECC de memória no percurso de gravação. A lógica de codificador de ECC de memória pode ser configurada para proteção de memória dos dados de gravação durante o armazenamento dentro de um arranjo de métodos, de acordo com bits de paridade de ECC de memória.
[0009] Um subsistema de memória pode incluir um dispositivo para embutir bits de paridade de ECC de link em bits de máscara de dados não utilizados e/ou em um dado de gravação de máscara durante uma operação de gravação de máscara. O subsistema de memória de baixa potência pode incluir também um dispositivo para proteger pelo menos um local dos bits de paridade de ECC de link durante a operação de gravação de máscara.
[0010] O exposto acima delineou um tanto amplamente os recursos e vantagens técnicas de exemplos de acordo com a revelação, de modo que a descrição detalhada que se segue possa ser mais bem entendida. Serão descritos em seguida recursos e vantagens adicionais. Deve ficar entendido pelos versados na técnica que esta revelação pode ser prontamente utilizada como base para modificar ou projetar outras estruturas para a consecução das mesmas finalidades da presente revelação. Deve ficar entendido pelos versados na técnica que tais construções equivalentes não se afastam do alcance das reivindicações anexas. Os recursos inéditos, que se acredita serem característicos da revelação, tanto quanto a sua organização ou método de funcionamento, juntamente com outros objetos e vantagens serão mais bem entendidas a partir da descrição seguinte quando considerada em conexão com as figuras anexas. Deve ficar expressamente entendido, contido, que cada uma das figuras é apresentada com a finalidade de exemplificação e descrição apenas, e pretende ser uma definição dos limites da presente revelação.
Breve Descrição dos Desenhos
[0011] Para um entendimento mais completo da presente revelação, é feita agora referência à descrição seguinte considerada em conjunto com os desenhos anexos.
[0012] A Figura 1 mostra uma vista de topo de um subsistema de memória de baixa potência que mostra um sistema hospedeiro embutido (SoC) em chip comunicativamente acoplado a aparelhos de memória de baixa potência de acordo com aspectos da presente revelação.
[0013] As Figuras 2A e 2B são diagramas de temporização que mostram a comunicação de bits de paridade de código de correção de erros durante um comando de gravação normal, de acordo com aspectos da revelação.
[0014] As Figuras 3A e 3C são diagramas de temporização que mostram diversas opções para transferir bits de paridade de código de correção de erros (ECC) entre um sistema hospedeiro embutido (SoC) e aparelhos de memória de baixa potência durante um comando de gravação de máscara (MWT), de acordo com aspectos da presente revelação.
[0015] A Figura 4 é um diagrama de temporização que mostra a comunicação de bits de paridade de código de correção de erros (ECC) durante um comando de leitura (RD) dentro de um barramento de acordo com aspectos da presente revelação.
[0016] As Figuras 5A e 5B são diagramas que mostram a corrupção de bits de paridade de código de correção de erros (ECC) transferidos entre um sistema hospedeiro embutido (SoC) e aparelhos de memória de baixa potência durante um comando de gravação de máscara (MWT), de acordo com aspectos da presente revelação.
[0017] As Figuras 6A e 6B são diagramas que mostram a proteção de bits de paridade de código de correção de erros (ECC) transferidos entre um sistema hospedeiro embutido (SoC) e aparelhos de memória de baixa potência durante um comando de gravação de máscara (MWT), de acordo com aspectos da presente revelação.
[0018] A Figuras 7A é um diagrama que mostra a proteção de localização de bits de paridade de código de correção de erros (ECC) transferidos entre um sistema hospedeiro embutido (SoC) e aparelhos de memória de baixa potência durante um comando de gravação de máscara (MWT), de acordo com aspectos da presente revelação.
[0019] A Figuras 7B mostra um diagrama de temporização para comunicar informações de proteção de bits de paridade de código de correção de erros (ECC) ou informações de localização de ECC durante um comando de gravação de máscara, de acordo com aspectos da presente revelação.
[0020] As Figuras 8A e 8B são diagramas de fluxos que mostram métodos para comunicação e proteção de localização de bits de paridade de código de correção de erros (ECC) durante um comando de gravação de máscara (MWT), um comando de gravação normal e um comando de leitura (RD), de acordo com aspectos da revelação.
[0021] A Figura 9 é um diagrama de blocos que mostra um sistema de comunicação sem fio no qual uma configuração da revelação pode ser utilizada com vantagem.
Descrição Detalhada
[0022] A descrição detalhada apresentada em seguida em conexão com os desenhos anexos pretende ser uma descrição de diversas configurações e não pretende representar as únicas configurações nas quais os conceitos aqui descritos podem ser postos em prática. A descrição detalhada inclui detalhes específicos com a finalidade de proporcionar um entendimento completo de diversos conceitos. Entretanto, será evidente ao versados na técnica que estes conceitos podem ser postos em prática sem estes detalhes específicos. Em alguns casos, estruturas e componentes notoriamente conhecidos são mostrados em forma de diagrama de blocos de modo a se evitar o obscurecimento de tais conceitos. Conforme aqui descrito, a utilização do termo “e/ou” pretende representar um “OU inclusivo” e a utiliza do termo “ou” pretende representar um “OU exclusivo”.
[0023] Aparelhos de memória de semicondutor incluem, por exemplo, memória de acesso aleatório estática (SRAM) e memória de acesso aleatório dinâmica (DRAM). Uma célula de memória DRAM inclui geralmente um transistor e um capacitor, o que permite um alto grau de integração. O capacitor pode ser carregado ou descarregado para armazenar informações como um valor de bit correspondente (‘0’ ou ‘1’, por exemplo). Uma vez que os capacitores vazam carga, as informações armazenadas finalmente se desvanecem e a carga do capacitor é renovada periodicamente. Devido ao requisito de renovação, a DRAM é referida como memória dinâmica em oposição a SRAM e outra memória estática. A renovação contínua da DRAM limita geralmente a DRAM a ser utilizada como memória principal do computador.
[0024] O escalonamento da DRAM continua a aumentar o número total de bits para cada chip da DRAM. Infelizmente, o escalonamento da DRAM aumenta o número de células de retenção fracas (células que têm o tempo de retenção reduzido, por exemplo). Tais células envolvem ciclos de renovação adicionais para manter as informações armazenadas. Processos de DRAM avançados podem sofrer de erros de renovação de bits aleatórios adicionais dentro de um arranjo de células de memória devido a ciclos de renovação adicionais ou outras variações de processo. Algumas memórias de baixa potência implementam códigos de correção de erros (ECCs) para aperfeiçoar o rendimento e a segurança da memória pela aplicação de ECCs a qualquer erro de bits aleatórios no arranjo de células de memória.
[0025] Por exemplo, sistemas de servidor e computação podem utilizar um módulo de memória larga (com largura de entrada/saída (IO) de 72 bits, por exemplo) para aperfeiçoar a segurança de um link de memória e um arranjo de células de memória. Uma vez que uma falha de memória dentro de um sistema de computação de servidor é intolerável, a segurança do link de memória é aperfeiçoada pela aplicação de ECCs a operações de memória. O armazenamento de ECCs, contudo, envolve um aparelho adicional. Em um módulo de memória com largura de IO de 72 bits, por exemplo, um ECC de 8 bits à atribuído a cada bloco de dados de 64 bits de oito aparelhos de memória. A atribuição de um ECC de 8 bits a cada bloco de dados de 64 bits proporciona proteção contra erros de bits tanto na interface de memória quanto no arranjo de células de memória.
[0026] No módulo de memória de largura de IO de 72 bits, contudo, um nono aparelho de memória de 64 bits (ECC) é utilizado para armazenar os oito ECCs de 8 bits atribuídos a cada bloco de dados de 64 bits dos oito aparelhos de memória. Infelizmente, esta configuração de memória aumenta o custo de sistema de memória e a potência de memória. Em particular, esta configuração de memória envolve uma área e custo de placa de circuito impresso adicionais (PCB) para suportar um canal de memória mais largo devido ao aparelho de memória ECC. O aparelho de memória ECC envolve também potência de reserva e ativo, o que aumenta o custo associado a esta configuração de memória.
[0027] Uma técnica para proteger tanto o arranjo quanto o link de memória inclui a transferência de bits de ECC entre um hospedeiro (um sistema embutido (SoC), por exemplo) e memórias de baixa potência. Os bits de ECC podem ser transferidos estendendo-se uma extensão de rajada de dados (uma extensão de rajada de 16 bits estendida a uma extensão de rajada de 18 bits, por exemplo). Infelizmente, a extensão de rajada estendida provoca perda de desempenho de memória significativa pela redução da largura de banda de memória líquida. Algumas memórias de baixa potência implementam ECCs para aperfeiçoar o rendimento e a segurança da memória pela aplicação de ECCs a qualquer erro de bits aleatório no arranjo de células de memória. A decodificação e a correção de erros de ECC dentro do aparelho de memória, contudo deterioram o desempenho de memória devido ao maior tempo de acesso e leitura. Além disto, um link de memória (interface, por exemplo) não é protegido pelos ECCs, e a segurança de memória total é insuficiente para satisfazer as especificações de alta segurança e alto desempenho da memória do sistema.
[0028] Os aspectos da revelação referem-se a um subsistema de memória que inclui um sistema hospedeiro embutido (SoC) e vários aparelhos de memória. O controlador de memória inclui um bloco de codificação e decodificação de código de correção de erros (ECC) para gerar bits de ECC de link para gerar proteger dados de gravação contra erros de links de memória e para corrigir qualquer falha de dados provocada pelo link de memória. Os aparelhos de memória têm cada um arranjo de células para dados e um arranjo de ECC para bits de paridade de ECC de memória para corrigir quaisquer erros de bits aleatórios provocados pelo arranjo de memória dos aparelhos de memória. Estes bits de paridade de ECC de memória são gerados com base em uma metodologia patenteada do fabricante de aparelhos de memória que é diferente de uma metodologia não patenteada do hospedeiro SoC utilizado para gerar os bits de paridade de ECC de link.
[0029] Sob aspectos da presente revelação, os bits de paridade de ECC de link são gerados para proteger dados de gravação contra erros de link durante a transmissão através de um link de memória (um barramento de dados, por exemplo), e bits de paridade de ECC de memória são gerados para proteger dados de gravação dentro dos aparelhos de memória contra erros de bits aleatórios dentro dos arranjos de células de memória. Sob alguns aspectos da revelação, os bits de paridade de ECC de link podem ser transferidos entre um hospedeiro e os aparelhos de memória através de um pino de máscara de dados ou um byte de dados associado ao comando de gravação de máscara (MWT). No caso de uma operação de gravação de máscara, um aparelho de memória recupera os bits de paridade de ECC de link associados ao primeiro bit de máscara de dados (DM) declarado (“H”, por exemplo), no qual os campos de bits de comando de gravação de máscara indicam atividade DM para um padrão de dados de bit “m”. No caso de uma operação de gravação normal, o aparelho de memória recupera os bits de ECC de link do fluxo de dados DM.
[0030] Os aspectos da presente revelação descrevem técnicas nas quais os bits de paridade de ECC de link são transmitidos através dos pinos de dados (DQ) ou dos pinos de máscara de dados (DM) durante de operação de gravação de máscara. Infelizmente, quando ocorre um erro de bit na marcação de bit DM no local de paridade de ECC de link, o erro de bit resulta na decodificação da coluna incorreta e na falha dos bits de paridade de ECC de link. Sob aspectos da presente revelação, as operações de gravação mascaradas são expandidas de modo a se proteger tanto os dados de gravação que utilizam os bits de paridade de ECC de link, mas também a localização dos bits de paridade de ECC de link. Em operações de gravação normais, a localização dos dados de ECC de link é sempre conhecida e previsível. Em uma operação de leitura, o controlador de memória pode recuperar bits de paridade de ECC de memória/link dentro do fluxo de dados DM do aparelho de memória.
[0031] Em uma operação de gravação mascarada, contudo, a localização dos bits de paridade de ECC de link varia com base no número de bytes mascarados. Sob um aspecto da presente revelação, as informações sobre a localização dos bits de paridade de ECC de link podem ser ou protegidas ou comunicadas separadamente em uma linha de velocidade mais baixa. Sob este aspecto da revelação, o comando de gravação de máscara é seguido de bits de paridade de ECC de máscara de dados (DM) para proteger os pinos DM na rajada de dados de gravação. Sob outro aspecto da presente revelação a localização dos bits de paridade de ECC é transmitida com o comando de gravação de máscara para indicar a localização na qual os bits de paridade de ECC de link são embutidos na rajada de dados de gravação.
[0032] A Figura 1 mostra uma vista de topo de um sistema de memória de baixa potência que mostra um sistema hospedeiro embutido (SoC) 100 acoplado aos aparelhos de memória 140 (140-1,... 140-N)de acordo com aspectos da presente revelação. Este aspecto da presente revelação aplica bits de paridade de código de correção de erros de link (ECC) a um subsistema de memória de baixa potência em sistemas móveis ou de computação para proteger o link de memória (barramentos de dados, por exemplo) de erros de bit aleatórios durante a transmissão através do link de memória. Mais especificamente, os aspectos da presente revelação podem suplementar especificações de dupla taxa de dados (DDR) de baixa potência da próxima geração e implementações de controlador de memória em conjuntos de chips de sistemas móveis ou de computação nos quais os aparelhos de memória utilizam bits de paridade de ECC de memória patenteados para proteger os arranjos de células de memória de erros de bits aleatórios.
[0033] Representativamente, o hospedeiro SoC 100 inclui diversas unidades de processamento que suportam operação de vários fluxos de execução. Para a configuração mostrada na Figura 1, o hospedeiro SoC 100 inclui um processo de sinais digitais (DSP) 102, uma unidade de processador de gráficos (GPU) e um motor multimídia 104, uma unidade central de processamento de vários núcleos (CPU) 106, um barramento de sistema 108, um controlador de memória 110 e uma camada física de memória (PHY) 130. O DSP 102, a GPU e o motor multimídia 104 e a CPU de vários núcleos 106 suportam diversas funções, tais como vídeo, gráficos, jogos e semelhante. Cada núcleo de processador da CPU de vários núcleos 106 pode ser uma máquina de computação de conjunto de instruções reduzida (RISC), um microprocessador ou outro tipo de processador.
[0034] Sob este aspecto da revelação, o hospedeiro SoC 100 é comunicativamente acoplado aos aparelhos de memória 140 (memória de acesso aleatório dinâmica de baixa potência (DRAM), por exemplo) através da PHY de memória 130. Nesta configuração, controlador de memória 110 inclui uma lógica de codificador/decodificador de código de correção de erros (ECC) 120 para gerar bits de paridade de ECC de link 124 para dados 122 (dados de leitura/gravação, por exemplo) comunicados a um dos aparelhos de memória 140 através da PHY de memória 130 ao longo de um barramento de dados 132 (132-1..., 132-N) e um barramento de comando/endereço 134 (134-1..., 134-N), que podem ser coletivamente referidos como link de memória. Os bits de paridade de ECC de link 124 gerados pela lógica de codificador/decodificador de ECC permitem a correção de qualquer falha de dados provocada pelo link de memória (o barramento de dados 132, por exemplo) nos aparelhos de memória 140.
[0035] À medida que o hospedeiro SoC 100 aumenta a taxa de dados seriais do link de memória, por exemplo, de três mil e duzentos (3200) megabites por segundo (Mpbs) para seis e quatrocentos (6400) por segundo Mpbs a proteção contra erros de link de memória torna-se mais um problema. Nesta configuração, a bits de paridade de ECC de link 124 (ECC de “n” bits) são gerados pelo controlador de memória 110 para proteger os dados 122 (gravação de “m” bits, por exemplo) de erros de bits aleatórios durante a transmissão através do barramento de dados 132. Uma vez que tanto os bits de paridade de ECC de link 124 quanto os dados 122 são transferidos entre o hospedeiro SoC 100 e os aparelhos de memória 140 durante operações de gravação e leitura, quaisquer erros de link de memória podem ser detectados e corrigidos com os bits de paridade de ECC de link 124. Além disto, qualquer erro de bit aleatório durante a transmissão dos arranjos de célula de memória 150 pode ser corrigido na lógica de codificador/decodificador de ECC 120 do controlador de memória 11.
[0036] Nesta configuração, os aparelhos de memória 140 incluem os arranjos de células de memória 150 (bancos de memória, por exemplo) para armazenar os dados 122 e os arranjos de ECC 152 para armazenar os bits de paridade de ECC de memória 154. Sob este aspecto da presente revelação, os aparelhos de memória 140 incluem uma lógica de codificador/decodificador de ECC de memória 170 configurada para gerar bits de paridade de ECC de memória 172 para permitir a detecção e correção de quaisquer erros de bit aleatórios provocados pelos arranjos de células de memória 150 dos aparelhos de memória 140 durante o armazenamento dos w 122. Os dados 122 são armazenados em um dos arranjos de células de memória 150 (bancos de memória, por exemplo) e os bits de paridade de ECC de memória 172 são armazenados nos arranjos de ECC 152. Além disto, qualquer erro de bit aleatório nos arranjos de célula de memória 150 pode ser corrigido na lógica de decodificador e correção 180 dos aparelhos de memória 150 com base em um algoritmo patenteado do fabricante de aparelhos de memória diferente de um algoritmo não patenteado do hospedeiro SoC 100 utilizado para gerar os bits de paridade de ECC de link 124.
[0037] Os bits de paridade de ECC de link 124, o controlador de memória 110 podem ser recebidos pelos aparelhos de memória 140 através de um pino de máscara de dados para um byte de dados associado a um comando de gravação de máscara. A localização dos bits de paridade de ECC de link 124 pode ser comunicado aos aparelhos de memória 140 utilizando-se informações de localização de bits de ECC (EL). Este processo é executado durante uma operação de gravação de máscara (MWT) na qual os aparelhos de memória 140 recuperam os bits de paridade de ECC de link 124 quando um primeiro bit de máscara de dados (DM) é declarado (“H”, por exemplo) e os campos de bits de comando MWT indicam atividade DM de acordo com os dados 122. Durante uma operação de gravação normal, os aparelhos de memória 140 podem recuperar os bits de paridade de ECC de link 124 de um fluxo de dados DM.
[0038] Nesta configuração, os aparelhos de memória 140 incluem um bloco de entrada/saída (IO) 146 comunicativamente acoplado ao barramento de dados 132 e ao barramento de comando/endereço 134. Em funcionamento, os bits de paridade de ECC de link 124 gerados pelo controlador de memória 110 de acordo com uma metodologia não patenteada do hospedeiro SoC 100 podem ser utilizados por uma lógica de decodificador e correção de ECC de link 160 dos aparelhos de memória 140 para detectar e corrigir erros de link dentro dos dados 122. Sob este aspecto da presente revelação, os aparelhos de memória 140 incluem uma lógica de codificador de ECC de memória 170 configurada para gerar bits de paridade de ECC de memória 172 para permitir a detecção e a correção de quaisquer erros de bits aleatórios durante o armazenado dos dados 122. Por conseguinte, uma vez que os dados 122 são corrigidos e/ou verificados, os bits de paridade de ECC de memória 172 são gerados dentro da lógica de codificador de ECC de memória 170 ao longo do percurso de gravação 142 dos aparelhos de memória 140 para proteger os dados 122 contra erros de bits aleatórios durante o armazenamento.
[0039] Durante o funcionamento, os dados 122 são armazenados em um dos arranjos de células de memória 150 (bancos de memória, por exemplo), os bits de paridade de ECC de memória 172 são armazenados nos arranjos de ECC 152. Nesta configuração, qualquer erro de bit aleatório nos arranjos de célula de memória 150 pode ser corrigido na lógica de decodificador e correção de ECC 180 dos aparelhos de memória 140 com base em um algoritmo patenteado do fabricante do aparelho de memória utilizando-se os bits de paridade de ECC de memória 172 armazenados dentro dos arranjos de ECC 152. Por conseguinte, uma vez que os dados 122 são corrigidos e/ou verificados, os bits de paridade de ECC de link 124 são gerados dentro da lógica de codificador de ECC de link 190 ao longo do percurso de leitura 144 dos aparelhos de memória 140 para proteger os dados 122 contra erros de bits aleatórios durante a transmissão através do barramento de dados 132.
[0040] Sob este aspecto da revelação, hospedeiro SoC 100 é capaz de detectar e corrigir quaisquer erros de link de memória utilizando os bits de paridade de ECC de link 124 que possam ser provocados pelo aumento da taxa de dados seriais do link de memória (de 3200 Mpbs para 6400 Mpbs, por exemplo). Além disto, qualquer erro de bit aleatório nos arranjos de células de memória 150 pode ser corrigido pela lógica de decodificador e correção de ECC 180 nos aparelhos de memória 140 utilizando-se a lógica de decodificador e correção de ECC de memória 180 utilizando- se os bits de paridade de ECC de memória 172. A utilização da lógica de decodificador e correção de ECC de memória 180 e da lógica de codificador de ECC de link 190 ao longo do percurso de leitura 144 dos aparelhos de memória 140 pode levar a uma latência de leitura indesejável. Alternativamente, a funcionalidade da lógica de decodificador e correção de ECC de memória 180 e/ou da lógica de codificador de ECC de link 190 são incorporadas ao controlador de memória para reduzir a latência de leitura.
[0041] Nos aparelhos de memória 1409 mostrados na Figura 1, uma linha de memória inteira (uma palavra de 256 bits, por exemplo) é geralmente lida a partir do arranjo de memórias durante uma operação de gravação. Durante uma operação de gravação de máscara, a lógica de codificador de ECC de memória 170 executa uma operação de leitura- modificação-gravação dentro de um dos arranjos de células de memória 150 para executar codificação de ECC com dados de leitura e gravação (bytes de dados mascarados são substituídos pelos bytes de dados correspondente em um dos arranjos de células de memória 150). Ou seja, a operação de gravação de máscara permite a atualização de bytes selecionados da linha de memória, de modo que os bytes de dados mascarados não sejam gravados nos arranjos de células de memória 150. Em funcionamento, um pino adicional (um bit de máscara de dados, por exemplo) é enviado juntamente com os dados 122 para remover dados de gravação designados e limitar a operação de leitura-modificação/gravação pela designação dos bytes de dados de gravação que são ignorados.
[0042] A Figura 2A é um diagrama de temporização 200 que mostra um comando de gravação de máscara (MWT) para, por exemplo, uma rajada de dados de gravação de 128 bits 210 que tem uma máscara de dados de 16 bits com um comprimento de rajada igual a 16. No diagrama de temporização 200, “D” refere-se a dados de gravação e “M” refere-se a bits de máscara de dados com um bit de máscara de dados atribuído para cada byte DQ. Neste exemplo, o bit M2 do pino DM0 associado a um dado de gravação D<16:23> é declarado (”Alto” ou “H”, por exemplo). Consequentemente, o dado de gravação de máscara 220 (o dado de gravação D<16:23>, por exemplo) não é gravado em um arranjo-alvo dos arranjos de célula de memória 150 (Figura 1). Em resposta ao comando de gravação de máscara, o aparelho-alvo dos aparelhos de memória 140 executa uma operação de leitura a partir de um dos arranjos de células de memória 150 e substitui os dados de gravação de máscara 220 pelos dados de leitura Q<16:23> de modo a se formarem os dados de gravação (dados de gravação de 128 bits, por exemplo) para a codificação de ECC de memória utilizando- se a lógica de codificador de ECC de memória 170. A lógica de codificador de ECC de memória 170 armazena os dados de gravação de 128 bits dentro do arranjo-alvo doa arranjos de células de memória 150, os bits de paridade de ECC de memória 172 são gravados em um arranjo-alvo dos arranjos de ECC 152.
[0043] Sob aspectos da presente revelação, os bits de paridade de ECC do controlador de memória são transferidos entre o hospedeiro SoC e as memórias de baixa potência através de um pino de máscara de dados ou um byte de dados associado a um comando de gravação de máscara. A localização dos bits de paridade de ECC pode ser comunicada aos aparelhos de memória utilizando-se informações de localização de bits de ECC. No caso de uma operação de gravação de máscara, a memória recupera bits de ECC associados ao primeiro bit de máscara de dados (DM) declarado (“H”, por exemplo), no qual os campos de bits de comando de gravação de máscara indicam atividade DM para cada padrão de dados de “m” bits. No caso de uma operação de gravação normal, os aparelhos de memória recuperam os bits de ECC do fluxo de dados DM.
[0044] A Figura 2B é um diagrama de temporização 250 que mostra um comando de gravação normal para, por exemplo, uma rajada de dados de gravação de 128 bits 210 que tem uma máscara de dados de 16 bits conexa com um comprimento de rajada igual a 16. Aparelhos de memória de baixa potência, técnicas de coexistência os aparelhos de memória 140 (Figura 1) têm um comando de gravação normal separado e um comando de gravação de máscara. Para um comando de gravação normal, todos os bits do pino DM0 (E0, ..., E15) associados aos dados de gravação de 128 bits são desafirmados (“Baixo”, por exemplo). Por contraste, para um comando de gravação de máscara, pelo menos um bit DM é afirmado como “Elevado” durante um fluxo de dados de rajada (BL). Consequentemente, os bits do pino DM0 não são utilizados durante comandos de gravação normais. Neste exemplo, de um comando de gravação normal, os bits de paridade de ECC de link (E0, ..., E15) são transferidos para os aparelhos de memória 140 através dos bits DM não utilizados 260, nos quais “E” representa um bit de paridade de ECC de link. Consequentemente, os aparelhos de memória 140 podem reconhecer os bits de paridade de ECC de link 124 gerados pelo controlador de memória 110 através do pino DM.
[0045] Durante um comando de gravação de máscara, contudo, o pino DM não está disponível para portar os bits de paridade de ECC de link 124. Sob aspectos da presente revelação, os bits de paridade de ECC de link 124 do controlador de memória 110 são transferidos entre o hospedeiro SoC 100 e os aparelhos de memória 140 através de um byte de dados de gravação de máscara associado a um comando de gravação de máscara. A localização dos bits de paridade de ECC de link 124 pode ser comunicada aos aparelhos de memória 140 utilizando-se informações de localização de bits de ECC. Os aparelhos de memória 140 podem recuperar bits de ECC associados ao primeiro bit de máscara de dados declarado (“H”, por exemplo) no qual os campos de bits de comando de gravação de máscara indicam atividade DM para cada padrão de dados de “m” bits. No caso de uma operação de gravação normal, os aparelhos de memória recuperam os bits de ECC do fluxo de dados DM. Além disto, durante uma operação de leitura, os bits de paridade de ECC de link 124 ou os bits de paridade de ECC de memória 172 são comunicados através do pino DM.
[0046] Sob aspectos da presente revelação, um total de 16 bits de paridade de ECC de link pode estar disponível de um pedaço de dados de 128 bits (byte DQ X 16 batidas de dados, por exemplo). Em uma implementação alternativa, as 16 batidas de dados de bits de paridade de ECC de link para cada pedaço de dados de 128 bits podem conter mais do que bits de paridade de ECC de link. Por exemplo, as 16 batidas de dados podem incluir um ECC de link de 8 bits mais bits de inversão de barramento de dados (DB1) e outros bits semelhante. Por exemplo, o controlador de memória 110 pode receber informações de temporização para aperfeiçoar a captação de dados de leitura durante a operação de leitura. Estas informações de temporização podem ser fornecidas nas 16 batidas de dados ou, alternativamente, podem ser fornecidas através do barramento de comando/endereço 134.
[0047] As Figuras de 3A a 3C são diagramas de temporização que mostram diversas opções para transferir os bits de paridade de ECC de link 124 entre o hospedeiro SoC 100 e os aparelhos de memória 140 durante um comando de gravação de máscara, de acordo com aspectos da presente revelação.
[0048] A Figura 3A é um diagrama de temporização 300 que mostra um comando de gravação de máscara para, por exemplo, dados de gravação de 128 bits que têm uma máscara de dados de 16 bits com um comprimento de rajada igual a 16. Nesta disposição, os dados de gravação de 128 bits são separados em um primeiros dados de gravação 310 e segundos dados de gravação 320 (uma primeira parte de dados de 64 bits com primeiros bits de paridade de ECC de link de 8 bits e uma segunda parte de dados de 64 bits com segundos bits de paridade de ECC de link de 8 bits, por exemplo). Conforme observado, para um comando de gravação de máscara, pelo menos um bit de máscara de dados (DM0) é afirmado como “H” durante um fluxo de dados de rajada (que tem um comprimento de rajada de 64 bits, por exemplo). Neste exemplo, um primeiro ECC de link 8 bits (E0, ..., E7, por exemplo) é embutido dentro de um primeiro byte de dados de gravação de máscara 312 (D<16:23>, por exemplo). Além disto, um segundo ECC de link de 8 bits (E8,... E15, por exemplo) é embutido dentro de um segundo byte de dados de gravação de máscara 322 (D<64:71, por exemplo).
[0049] A Figura 3B é um diagrama de temporização 330 que mostra uma operação de gravação de máscara para os primeiros dados de gravação 310 combinada com uma operação de gravação normal para os segundos dados de gravação 320. Nesta disposição, um primeiro ECC de link de 8 bits (E0... E7, por exemplo) é embutido dentro de um primeiro byte de dados de gravação de máscara 312(D<16:23>, por exemplo). Nos segundos dados de gravação 320, os bits do pino DM0 não são utilizados para operação de gravação normal. Neste exemplo, o segundo ECC de link de 8 bits (E8,... E15, por exemplo) é transferido para os aparelhos de memória 140 através dos segundos bits DM não utilizados 324. Consequentemente, os aparelhos de memória podem reconhecer os bits de paridade de ECC de link 124 gerados pelo controlador de memória 110 através do primeiro byte de dados de gravação de máscara 312 para os primeiros dados de gravação 310 e os segundos bits DM não utilizados 324 para os segundos segundo grupo 320. Sob este aspecto da presente revelação, o hospedeiro SoC 100 emite um comando de gravação de máscara e tem um campo de bits estendido para indicar onde o byte de ECC é embutido, a saber: o byte de dados de gravação de máscara ou os bits DM não utilizados, dependendo da atividade de máscara de dados.
[0050] A Figura 3C é um diagrama de temporização 350 que mostra uma operação de gravação normal para os primeiros dados de gravação 310 combinada com uma operação de gravação de máscara para os segundos dados de gravação 320. Nesta disposição, os bits do pino DM0 não são utilizados para operação de gravação normal. Neste exemplo, o primeiro ECC de link de 8 bits (E0,... E8, por exemplo) é transferido para os aparelhos de memória 140 através dos primeiros bits DM não utilizados 314. Nos segundos dados de gravação 320, o ECC de link de 8 bits (E8,... E15, por exemplo) é embutido dentro de um segundo byte de gravação de máscara 322 (D<120:127>, por exemplo). Consequentemente, os aparelhos de memória podem reconhecer os bits de paridade de ECC de link 124 gerados pelo controlador de memória 110 através dos primeiro bits DM 314 não utilizados para os primeiros dados de gravação 310 e o segundo byte de dados de gravação de máscara 322 para os segundos dados de gravação 320. Neste aspecto da presente revelação, o hospedeiro SoC 110 emite também um comando de gravação de máscara que tem um campo de bits estendido para indicar onde informações de ECC são embutidas: a saber, os bits DM não utilizado ou no byte de dados de gravação de máscara, dependendo da atividade de máscara de dados.
[0051] A Figura 4 é um diagrama de temporização 400 que mostra a comunicação de b bits de paridade de ECC de link/memória durante o comando de leitura (RD) dentro, por exemplo, de um barramento que tem uma largura de barramento de entrada/saída de 128 bits de acordo com aspectos da presente revelação. O diagrama de temporização 400 mostra um sinal de relógio 402, um sinal de comando 404 e um sinal de endereço 406. O diagrama de temporização 400 mostra também um primeiro sinal de dados 410 e um primeiro sinal de máscara de dados 412 associado ao primeiro sinal de dados 410 e que tem uma latência de leitura conexa 414 e dados de rajada 416. Para um comando de leitura (RD), dados de leitura de 128 bits e um ECC de link/memória de 16 bits (E0,..., E15, por exemplo) para cada byte DQ (D0,..., D15, por exemplo) são transferidos para o hospedeiro SoC 100 dos arranjos de célula de memória 150 utilizando-se os bits DM não utilizados 450.
[0052] Em um aspecto da revelação, um erro de link de memória durante uma operação de leitura pode ser detectado e corrigido na lógica de decodificador/codificador de ECC 120 do controlador de memória 110 utilizando-se os bits de paridade de ECC de link 124 dos bits DM 550 não utilizado de acordo com a configuração subsistema de memória de baixa potência mostrada na Figura 1. Alternativamente, um erro de bit aleatório dos dados de leitura dentro do arranjo de células de memória e/ou um erro de links detectado utilizando-se os bits de paridade de ECC de memória 172, de acordo com a configuração de subsistema de memória de baixa potência na qual a metodologia patenteada do fabricante de aparelhos de memória utilizada para gerar os bits de paridade de ECC de memória 172 é compartilhada com o fabricante do hospedeiro SoC. Um segundo sinal de dados 420 e um segundo sinal de máscara de dados conexo 422 assim como um quarto sinal de dados 430 e um quarto sinal de máscara de dados 432 são também mostrados.
[0053] As Figuras 5A e 5B são diagramas que mostram a corrupção de bits de paridade de código de correção de erros (ECC) transferidos entre um sistema hospedeiro embutido (SoC) e aparelhos de memória de baixa potência durante um comando de gravação de máscara (MWT) de acordo com aspectos da presente revelação. A Figura 5A mostra uma rajada de dados de gravação mascarada 500 que tem um comprimento de rajada de trinta e dois (32) bits (BL32), no qual bit de paridade de ECC de link são transmitidos através dos pinos de dados (DQ) ou dos pinos de máscaras de dados (DM) durante a operação de gravação mascarada. Nesta configuração, a rajada de dados de gravação mascarada 500 é disposta em quatro quadrantes (Q1, Q2, Q3 e Q4). Representativamente, os bit de paridade de ECC de link 510 são transmitidos em um primeiro byte não utilizado dos bits de máscara de dados DM0 no quadrante Q1. No quadrante Q3, o bits de paridade de ECC de link 520 são transmitidos em um primeiro byte de dados de gravação de máscara que corresponde a um primeiro bit de máscara de dados afirmado 522. Da mesma maneira, os bits de paridade de ECC de link 530 são transmitidos no primeiro byte de dados de gravação de máscara que corresponde ao primeiro bit de máscara de dados afirmado 532 no quadro Q2 e os bits de paridade de ECC de link 540 são transmitidos no primeiro byte de dados de gravação de máscara que corresponde ao primeiro bit de máscara de dados afirmado 542 no quadro Q4.
[0054] Infelizmente, se um erro de bit ocorrer no bit DM (522, 532 ou 542, por exemplo)que marca a localização dos bits de paridade de ECC de link (520, 530 ou 540, por exemplo) a coluna incorreta será decodificada no aparelho de memória como os bits de paridade de ECC de link, do que resulta falha de proteção do link. Sob aspectos da presente revelação, as operações de gravação mascaradas protegem não só os dados propriamente ditos com bits de paridade de ECC de link, mas também a localização dos bits de paridade de ECC de link, que pode variar com base no número de bits de dados de gravação mascarados. Sob aspectos da presente revelação, a localização dos bits de paridade de ECC pode variar e as informações sobre essa informação são protegidas ou enviadas separadamente em uma linha de velocidade mais baixa.
[0055] A Figura 5B mostra uma rajada de dados de gravação mascarada 550 que tem um comprimento de rajada de dezesseis (16) bits no qual bits de paridade de ECC de link são transmitidos através dos pinos de dados (DQ) ou dos pinos de máscara de dados (DM) durante a operação de gravação mascarada. Nesta configuração, a rajada de dados de gravação mascarada 550 é disposta em dois quadrantes (Q1 e Q2). Representativamente, os bits de paridade de ECC de link 560 são transmitidos em um primeiro byte de dados de gravação de máscara que corresponde a um primeiro bit de máscara de dados afirmado 552 no quadrante Q1. No quadrante Q2 os bits de paridade de ECC de link 570 são transmitidos em um primeiro byte não utilizado dos bits de máscara de dados DM1. Infelizmente, se um erro de bit ocorrer no bit DM (562, por exemplo) que marca a localização dos bits de paridade de ECC de link (560, por exemplo), a coluna incorreta será decodificada no apresentam, do que resulta falha de proteção do link. Um erro de bit nos bits de paridade de ECC de link 570 resulta simplesmente no descarte dos bits de paridade de ECC de link 570 na lógica de decodificador e correção de ECC de link 160 nos aparelhos de memória 140 (Figura 1).
[0056] As Figuras 6A e 6B são diagramas que mostram a proteção de bits de paridade de código de correção de erros (ECC) de link transferidos entre um sistema hospedeiro embutido (SoC) e aparelhos de memória de baixa potência durante um comando de gravação de máscara (MWT) de acordo com aspectos da presente revelação. A Figura 6A mostra uma rajada de dados de gravação mascarada 600 que tem um comprimento de rajada de trinta e dois (32) bits (BL32), no qual bit de paridade de ECC de link transmitidos através dos pinos de dados (DQ) ou dos pinos de máscaras de dados (DM) são protegidos durante a operação de gravação mascarada. O comprimento de rajada BL32 pode ser referido como comprimento de rajada predeterminado da rajada de dados de gravação mascarada 600. Nesta configuração, os bits de paridade de ECC de link são transmitidos em um primeiro bit não utilizado dos bits de máscara de dados DM0 no quadrante Q1. No quadrante Q3, os bits de paridade de ECC de link 620 são transmitidos em um primeiro byte de dados de gravação de máscara que corresponde a um primeiro bit de máscara de dados afirmado 622. Da mesma maneira, os bits de paridade de ECC de link 630 são transmitidos no primeiro byte não utilizado dos bits de máscara de dados DM1 no quadrante Q2, e os bits de paridade de ECC de link 640 são transmitidos do primeiro byte não utilizado dos bits de máscara de dados DM1 no quadrante Q4.
[0057] Infelizmente, se um erro de bit ocorrer no bit DM (622, por exemplo) que marca a localização dos bits de paridade de ECC de link (620, por exemplo) a coluna incorreta (um byte de dados de gravação ou dados de gravação mascarados) será decodificada no aparelho de memória, do que resulta falha de proteção do link. Um erro de bit nos bits de paridade de ECC de link embutidos nos bytes de máscara de dados não utilizados (610, 630 e 640, por exemplo) resulta simplesmente no descarte dos bits de paridade de ECC de link na lógica de decodificador e correção de ECC de link 160 nos aparelhos de memória 140 (Figura 1). Sob este aspecto da presente revelação, a localização dos bits de paridade de ECC de link (e dos bits DM) é protegida durante as operações de gravação mascaradas.
[0058] Sob este aspecto da revelação, o comando de gravação mascarado se expande de uma operação de 2 tiques a 4 tiques, para permitir a proteção dos pinos DM utilizando- se um barramento de comando-endereço (CA)(ver a Figura 1). Por exemplo, o comando de gravação mascarado expandido pode fornecer doze (12) bits adicionais que estão disponíveis para transmissão durante o comando de gravação mascarado. Para uma rajada de dados de gravação 600 que tem um comprimento de rajada de trinta e dois (32) bits (BL32) mostrado na Figura 6A, há sessenta e quatro (64) bits DM a serem transmitidos (32 batidas para 2 bytes, por exemplo). Nesta configuração, os 64 pinos DM são protegidos pelo envio de uma única sequência de correção de erros (SEC) de sete (7) bits ou de uma dupla sequência de detecção erros (SECDED) como bits de paridade de ECC DM no barramento de comando/endereço 134 (Figura 1) durante o comando de gravação mascarado. Os outros quatro (4) bits fornece um código de localização de quadrante (um código de localização de ECC, por exemplo) que indica se cada quadrante de 64 bits (Q1, Q2, Q3 ou Q4, por exemplo) tem seus bits de paridade de ECC de link nos pinos DM ou nos bits DQ localizados em uma batida elevada DM.
[0059] Por exemplo, na rajada de dados de gravação mascarada 600 BL32 da Figura 6A, os doze (12) bits seriam enviados através do barramento CA com o comando de gravação de máscara:
[0060] A Figura 6B mostra uma rajada de dados de gravação mascarada 650 que tem um comprimento de rajada de dezesseis (16) bits no qual bits de paridade de ECC de link transmitidos através dos pinos de dados ou dos pinos DM (DM0, DM1, por exemplo) são protegidos durante a operação de gravação mascarada. Nesta configuração, os bits de paridade de ECC de link 660 são transmitidos em um primeiro byte de dados de gravação de máscara que corresponde a um primeiro bit de máscara de dados afirmado 662 no primeiro quadrante Q1. No quadrante Q2, os bits de paridade de ECC de link 670 transmitidos em um primeiro byte de dados de gravação de máscara que corresponde a um primeiro bit de máscara de dados afirmado 672. Conforme observado, um erro de bit que ocorre no bit DM (662, 672, por exemplo) que marca a localização dos bits de paridade de ECC de link (660, 670, por exemplo), provoca a decodificação da coluna incorreta no dispositivo de memória, que resulta na falha de proteção do link.
[0061] Sob este aspecto da revelação, os bits de paridade de ECC de link (660 e 670, por exemplo) são protegidos pela expansão do comando de gravação mascarado de uma operação de dois tiques para quatro tiques de modo a permitir a proteção dos pinos DM utilizando-se o barramento de comando/endereço (CA)(ver a Figura 1). Para a rajada de dados de gravação mascarada 650, que tem um comprimento de rajada de dezesseis (16) bits (BL16) mostrada na Figura 6B, há trinta e dois (32) bits DM a serem transmitidos (16 batidas para um byte, por exemplo). Nesta configuração, os 32 pinos DM são protegidos enviando-se uma sequência de seis (6) bits SEC ou uma sequência de sete (7) bits SEC-DED como bits de paridade de ECC DM no barramento de comando/endereço 134 (Figura 1) durante o comando de gravação mascarado. Os outros dois (2) podem fornecer o código de localização de quadrante que indica se cada quadrante de 128 bits (Q1 e Q2, por exemplo) tem seus bits de paridade de ECC de link (660 e 670, por exemplo) nos pinos DM ou nos bits de dados localizados em uma batida elevada DM.
[0062] Por exemplo, na rajada de dados de gravação mascarada BL16 659 da Figura 6B, os doze (12) bits seguintes seriam enviados no comando de gravação de máscara de dados, onde ‘X’ é não importa:
[0063] A Figura 7A é um diagrama que mostra a proteção de localização de bits de paridade de código de correção de erros de link (ECC) transferidos entre um sistema embutido (SoC) e aparelhos de memória de baixa potência durante um comando de gravação de máscara (MWT) de acordo com aspectos da presente revelação. Representativamente, é mostrada uma rajada de dados de gravação mascarada BL32 700 que tem um primeiro bloco B0 e um segundo bloco B1. A localização de bits de paridade de ECC de link (710, 720, por exemplo), que são transmitidos através dos pinos de dados ou dos pinos DM é transmitida durante uma operação de gravação mascarada. Nesta configuração, os bits de paridade de ECC de link 710 são transmitidos em um primeiro byte de dados de gravação de máscara e no bit de máscara de dados correspondente 712 no bloco B0 de modo a fornecer proteção de link do bloco B0. Sob este aspecto da revelação, os bits de paridade de ECC de link 710 são expandidos (de 8 bits para 9 bits para dados de 256 bits, por exemplo), em comparação com os bits de paridade de ECC de link mostrados nas Figuras 6A e 6B. No bloco B1, os bits de paridade de ECC de link 720 são transmitidos em primeiros bits de máscara de dados não utilizados. Neste aspecto da revelação envolve a comunicação da localização dos bits de paridade de ECC de link (710, 720, por exemplo) de modo a permitir a detecção dos bits de paridade de ECC de link embutidos dentro do bloco B0 e do bloco b1.
[0064] Sob este aspecto da revelação, o comando de gravação mascarado é também expandido de uma operação de dois tiques, para permitir a comunicação da localização de bits de paridade de ECC de link utilizando-se um barramento CA (ver a Figura 1). O comando de gravação mascarado expandido inclui doze (12) bits adicionais que estão disponíveis para comunicação durante o comando de gravação mascarado. Para uma rajada de dados de gravação mascarada BL32 700 da Figura 7A, a localização de batida dos bits de paridade de ECC de link (710, 720, por exemplo) dentro da transmissão é dada como um código de localização de batida de cinco (5) bits (para BL32, código de 4 bits para BL36). Este código de localização de batida de cinco bits suporta dois (2) bytes (no multiplexado de 10 bits). Além disto, dois (2) bits (um indicador, por exemplo) são especificados como um código de localização de bloco para indicar (por byte) se as linhas DM retêm um byte DM ou os bits de paridade de ECC (710, 720, por exemplo). Este aspecto da revelação pode proporcionar uma implementação mais complicada para detectar o bit de paridade de ECC de link uma vez que, neste exemplo, os bits de paridade de ECC de link 710 ocupam também o bit de máscara de dados 712.
[0065] Na rajada de dados de gravação mascarada BL32 700 da Figura 7A, por exemplo, os doze (12) bits seguintes seriam enviados através do barramento CA com o comando de gravação de dados, onde ‘X’ é não importa:
[0066] Neste exemplo, a sequência de bits binários 10011 identifica o bit dezenove (b19) no bloco B0 como incluindo os bits de paridade de ECC (710, por exemplo). Inversamente, os bits não importa (‘X’) e o bit de ECC para B1 (ECC= ‘0’) dentro do fluxo de 12 bits indicam que os bits DM não são utilizados no bloco B1, de modo que os bits de paridade de ECC (720, por exemplo) são comunicados nos primeiro nove pinos de paridade DM. Por contraste, o bit DM para B0 (DM = ‘1’) indica que os bits de paridade de ECC são comunicados nos pinos DM e no byte de dados de gravação de máscara.
[0067] Embora tenham sido descritas a proteção dos bits de paridade de ECC de link assim como a proteção da localização dos bits de paridade de ECC de link, deve-se reconhecer da presente revelação não estão limitados a estas configurações. outras implementações possíveis podem existir, mas elas servirão ao propósito de proteger as informações que fornecem a localização na qual (em qual batida, por exemplo) os dados de ECC são transmitidos. Uma vez que esta localização pode variar para cada operação de máscara de dados e não é previsível, as informações podem ser transmitidas separadamente em uma linha de velocidade mais baixa. Caso contrário, algoritmo outro tipo de esquema de proteção pode ser concebido para assegurar que um erro de bit (antes que o ECC possa corrigir) não corrompa a localização dos bits de paridade de ECC de link.
[0068] A Figura 7B mostra um diagrama de temporização 750 para comunicar informações de proteção de bits de paridade de ECC de link ou informações de localização de ECC durante um comando de gravação de máscara de acordo com aspectos da presente revelação. O diagrama de temporização 750 mostra um sinal de relógio 752 e um sinal de comando/endereço 754. Sob este aspecto da revelação, o comando de gravação de máscara (MW) é seguido por um comando de localização de ECC (bits EL, por exemplo) para indicar onde os bits de paridade de ECC de link 124 estão embutidos nos dados 126, de acordo com a configuração mostrada na Figura 7A. Em uma configuração alternativa, o comando de localização de ECC inclui bits de proteção DM, assim como bits de identificação de localização de ECC por quadrante de acordo com a configuração mostrada nas Figuras 6A e 6B.
[0069] A Figura 8A é um diagrama de fluxos que mostra um método de arranjo de células de memória e correção de erros de link em um subsistema de memória de baixa potência de acordo com aspectos da revelação. O método 800 começa no bloco 902, no qual um controlador de memória gera bits de paridade de ECC de link para dados de gravação (bits de paridade de ECC de 8 bits/9 bits para dados de gravação de 64 bits/128 bits, por exemplo). No bloco 804, é determinado se uma operação de gravação de máscara está sendo executada. Quando uma operação de gravação normal está sendo executada, os bits de paridade de ECC de link são adicionados aos dados de rajada de máscara de dados, no bloco 808. Por exemplo, conforme mostrado na Figura 2B, os bits de paridade de ECC de link (E0,... E15) são transferidos para os aparelhos de memória 140 através dos pinos DM não utilizados (o 260, por exemplo).
[0070] Para um comando de gravação de máscara, os bits de paridade de ECC de link substituem o primeiro byte de dados de gravação de máscara associado a um primeiro bit de máscara de dados afirmado no bloco 806. Conforme mostrado na Figura 3A, por exemplo, um primeiro ECC de link de 8 bits (E0,... E7, por exemplo) é embutido dentro de um primeiro byte de dados de gravação de máscara 312 (D<16:23>, por exemplo). De acordo com a configuração mostrada nas Figuras 6A e 6B, um método de correção de erros de link e proteção em um subsistema de memória de baixa potência pode incluir transmitir bits de paridade de ECC de máscara de dados durante a operação de gravação de máscara para proteger o primeiro bit de máscara de dados afirmado que identifica os bits de paridade de ECC de link embutidos em um byte de dados de gravação de máscara correspondente. O método inclui também transmitir um código de localização de ECC (um código de localização de quadrante, por exemplo) dos bits de paridade de ECC de link dentro de um comprimento de rajada predeterminado de dados de gravação durante a operação de gravação de máscara. De acordo com a configuração mostrada na Figura 7A, o método pode incluir transmitir um código de localização de batida que indica a localização de bloco dos bits de paridade de ECC de link dentro do comprimento de rajada predito e dados de gravação durante a operação de gravação de máscara e transmitir um código de localização de bloco que indica se os bits de paridade de ECC de link estão embutidos na parte de dados ou na parte de máscara de dados do comprimento de rajada predito dos dados de gravação.
[0071] Com referência à Figura *A novamente, no bloco 810 o hospedeiro (SoC, por exemplo) envia os dados de gravação e a máscara de dados a um aparelho de memória-alvo. No bloco 812, o aparelho de memória-alvo recebe os dados de gravação e a máscara de dados do hospedeiro. No bloco 820, é determinado se uma operação de gravação de máscara está sendo executado. Quando uma operação de gravação normal está sendo executada, os blocos de processo 830 a 834 executam a conclusão um comando de gravação normal. Para um comando de gravação de máscara, os blocos de processo 822 a 828 executam a conclusão do comando de gravação de máscara. Sob este aspecto da presente revelação, os aparelhos de memória 140 podem ser configurados para ler bits de paridade de correção de erros (ECC) de link dentro de bits de máscara de dados não utilizados durante uma operação de gravação normal ou dentro de um byte de dados de gravação de máscara que corresponde a um bit de máscara de dados afirmado durante uma operação de gravação de máscara.
[0072] A Figura 8B é um diagrama de fluxos que mostra um método 850 para uma operação de leitura em um subsistema de memória de baixa potência de acordo com aspectos da presente revelação. No bloco 852, um controlador de memória emite um comando de leitura para um aparelho de memória-alvo. No bloco 854, o aparelho de memória-alvo lê os dados de leitura de uma célula de um arranjo de células de memória e bits de ECC de memória de um arranjo de ECC. Na operação de leitura, opcionalmente, os blocos 856 e 858 para decodificação de ECC de memória e correção de erros de dados de leitura podem ser saltados de modo a simplificar a implementação da memória e para acelerar a velocidade de leitura (latência de leitura mais baixa do comando de leitura, por exemplo), uma vez que o controlador de memória pode recuperar o erro de bit provocado no arranjo de células de memória utilizando um codificador/decodificador de ECC nos blocos 860 e 862. É uma compensação entre desempenho (latência) e segurança do subsistema de memória (erro de bits de arranjo de células de memória + erro de link de leitura).
[0073] Em uma configuração, um subsistema de memória de baixa potência inclui um dispositivo para embutir bits de paridade de código de correção de erros (ECC) de link em bits de máscara de dados não utilizados e/ou em dados de gravação de máscara durante uma operação de gravação de máscara. O subsistema de memória de baixa potência inclui também dispositivos para proteger pelo menos a localização dos bits de paridade de ECC de link durante a operação de gravação de máscara. Sob um aspecto da revelação, o dispositivo para embutir é controlador de memória 110 da Figura 1, configurado para executar as funções enumeradas pelo dispositivo de embutir. Sob um aspecto da revelação, o dispositivo de proteger é a lógica de codificador/decodificador de ECC 120 da Figura 1, configurada para executar as funções enumeradas pelo dispositivo para proteger.
[0074] O controlador de memória 110 da Figura 1 pode também prover um dispositivo para transmitir bits de paridade de ECC de máscara para proteger pelo menos um primeiro bit de máscara de dados afirmado que identifica os bits de paridade de ECC de link embutidos em um byte de dados de gravação de máscara correspondente e um código de localização de ECC (um código de localização de quadrante, por exemplo) dos bits de paridade de ECC de link dentro de um comprimento de rajada predeterminado de dados de gravação através de um barramento de comando/endereço durante a operação de gravação de máscara. Além disto, o controlador de memória 110 pode prover também um dispositivo para transmitir um código de localização de batida que indica a localização de bloco dos bits de paridade de ECC de link dentro de um comprimento de rajada predeterminado dos dados de gravação e um código de localização de bloco que indica se os bits de paridade de ECC de link estão embutidos na parte de dados ou na parte de máscara de dados no comprimento de rajada predeterminado dos dados de gravação através de um barramento de comando/endereço durante a operação de gravação de máscara. Sob outro aspecto, o dispositivo antes mencionado pode ser um aparelho ou qualquer camada configurada para executar as funções enumeradas pelos dispositivos antes mencionados.
[0075] Os aspectos da presente revelação descrevem uma técnica na qual bits de paridade de ECC de link são transmitidos através dos pinos de dados (DQ) ou dos pinos de máscara de dados (DM) durante uma operação de gravação de máscara. Infelizmente, quando um erro de bit ocorre no bit DM que marca a localização dos bits de paridade de ECC de link, o erro de bit resulta na decodificação da coluna incorreta e numa falha dos bits de paridade de ECC de link. Sob aspectos da presente revelação, as operações de gravação mascaradas são expandidas para proteger tanto os dados de gravação que utilizam bits de paridade de ECC de link quanto a localização dos bits de paridade de ECC de link. Em operações de gravação normais, a localização dos dados de ECC de link é sempre conhecida e previsível. Em uma operação de leitura, o controlador de memória pode recuperar bits de paridade de ECC de memória/link dentro do fluxo de dados DM do aparelho de memória.
[0076] Em uma operação de gravação de máscara, contudo, a localização dos bits de paridade de ECC de link varia com base no número de bytes mascarados. Sob um aspecto da presente revelação, as informações sobre a localização dos bits de paridade de ECC de link podem ser ou protegidas ou comunicadas separadamente em uma linha de velocidade mais baixa ou de outro modo mais confiável. Sob este aspecto da revelação, o comando de gravação de máscara é seguido por bits de paridade de ECC de máscara de dados (DM) para proteger os pinos DM na rajada de dados de gravação. Sob outro aspecto da presente revelação, a localização dos bits de paridade de ECC é transmitida com o comando de gravação de máscara para indicar o local no qual os bits de paridade de ECC de link estão embutidos na rajada de dados de gravação.
[0077] A Figura 9 é um diagrama de blocos que mostra um sistema de comunicação sem fio 900 exemplar no qual uma configuração da revelação pode ser utilizada com vantagem. Para fins de exemplificação, a Figura 9 mostra três unidades remotas 920, 930 e 950 e duas estações base 940. Deve-se reconhecer que, sistemas de comunicação sem fio podem ter mais unidades remotas e estações base. As unidades remotas 920, 930 e 950 incluem aparelhos de IC 925A, 925B e 925C, que incluem o subsistema de memória de baixa potência revelado. Deve-se reconhecer que qualquer aparelho que contenha um IC pode incluir também o subsistema de memória de baixa potência revelado, inclusive as estações base, aparelhos de comutação e equipamento de rede. A Figura 9 mostra sinais de link direto 980 da estação base 940 para as unidades remotas 920, 930 e 950 e sinais de link reverso 990 das unidades remotas 920, 930 e 950 para as estações base 940.
[0078] Na Figura 9, uma unidade remota 920 é mostrada como um telefone móvel, uma unidade remota 930 é mostrada como um computador portátil e uma unidade remota 950 é mostrada como uma unidade remota de localização fixa em um sistema de malha local sem fio. Por exemplo, as unidades remotas podem ser um telefone móvel, uma unidade de sistemas de comunicação pessoal de mão (PCS), uma unidade de dados portátil, tal como um assistente de dados pessoal, um aparelho habilitado por GPS, um aparelho de navegação, um conversor set-top box, um tocador de música, um aparelho de vídeo, uma unidade de entretenimento, uma unidade de dados de localização fixa, tal como um equipamento de leitura de medição ou qualquer outro aparelho que armazene ou recupere dados ou instruções de computador ou qualquer combinação deles.Por exemplo, uma unidade remota que inclua o subsistema de memória de baixa potência pode ser integrada dentro de um sistema de controle de veículo, um sistema de computação de servidor ou outro sistema semelhante que especifique a integridade de dados críticos. Embora a Figura 9 mostre aparelhos de IC 925A, 925B e 925C, que incluem um subsistema de memória de baixa potência revelado, a revelação não está limitada a estas unidades mostradas exemplares. Os aspectos da presente revelação podem ser utilizados de maneira adequada em qualquer aparelho, que inclui o subsistema de memória de baixa potência.
[0079] Para uma implementação em firmware e/ou software as metodologias podem ser implementadas como módulos (procedimentos, funções e assim por diante, por exemplo, que executa as funções aqui descritas). Qualquer meio passível de leitura por máquina que corporifica de maneira tangível instruções, pode ser utilizado na implementação das metodologias aqui descritas. Por exemplo, códigos de software podem ser armazenados em uma memória e executados por uma unidade de processador. A memória pode ser implementada dentro da unidade de processador ou fora da unidade de processador. Conforme aqui utilizado, o termo “memória” refere-se a tipos de memória de longo prazo, curto prazo, volátil, não volátil ou outra memória e não deve estar limitado ao tipo específico de memória ou ao número de memórias ou tipo de meios no qual a memória é armazenada.
[0080] Se implementadas em firmware e/ou software, as funções podem ser armazenadas como uma ou mais instruções em código em um meio passível de leitura por computador. Exemplos incluem meios passiveis de leitura por computador codificados com uma estrutura de dados e meios passíveis de leitura por computador codificados com um programa de computador. Os meios passíveis de leitura por computador podem incluir meios de armazenamento de armazenamento por computador físicos. Um meio de armazenamento pode ser um meio disponível que pode ser acessado por um computador. A título de exemplo e não de limitação, tais meios passíveis de leitura por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros aparelhos de armazenamento magnético ou outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador; disco, conforme aqui utilizado inclui disco compacto (CD), disco de laser, disco óptico, disco versátil digital (DVD), disco flexível e disco blu- ray, onde discos (disks) reproduzem usualmente dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações dos elementos acima devem ser incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0081] Além do armazenamento em meio passível de leitura por computador, as instruções e/ou dados podem ser apresentados como sinais em meios de transmissão incluídos em um equipamento de comunicação. Por exemplo, um equipamento de comunicação pode incluir um transceptor que tem sinais que indicam instruções e dados. As instruções e os dados são configurados para fazer com que um ou mais processadores implementem as funções delineadas nas reivindicações.
[0082] Embora a presente revelação e suas vantagens tenham sido descritas em detalhe, deve ficar entendido que diversas alterações, substituições e alterações podem ser feitas nela sem que se abandone a tecnologia da revelação definida pelas reivindicações anexas. Por exemplo, termos relacionais, tais como “acima”, “abaixo”, “topo” e “base” são utilizados com relação a um substrato ou aparelho eletrônico. Evidentemente, se o substrato ou o aparelho eletrônico for invertido, acima torna-se abaixo, topo torna base e vice-versa. Além disto, se orientados para os lados, os termos “acima”, “abaixo” podem referir-se aos lados de um substrato ou aparelho eletrônico. Além do mais, não se pretende que o alcance do presente pedido esteja limitado às configurações específicas do processo, máquina, fabricante e composição de matéria, dispositivos, métodos e etapas descritos no relatório. Conforme será prontamente entendido pelos versados na técnica a partir da revelação, processos, máquinas, fabricação, composição de matéria, dispositivos, métodos ou etapas que existem atualmente ou virão a ser desenvolvidos, que executam substancialmente a mesma função ou atingem substancialmente o mesmo resultado das configurações correspondentes aqui descritas podem ser utilizados de acordo com a presente revelação. Por conseguinte, as reivindicações anexas são destinadas a incluir dentro de seu alcance tais processos, máquinas, fabricação, composição de matéria, dispositivos, métodos ou etapas.
[0083] Os versados na técnica entenderiam também que os diversos blocos, módulos, circuitos e etapas de algoritmo lógicos ilustrativos descritos em conexão com os aspectos aqui revelados podem ser implementados como hardware eletrônico, software de computador em combinações de ambos. Para ilustrar claramente esta intercambialidade de hardware e software, diversos blocos, componentes, módulos, circuitos e etapas ilustrativos foram descritos acima geralmente em termos de sua funcionalidade. Se tal funcionalidade é implementada como software ou hardware, depende da aplicação específica e das restrições de desenho impostas ao sistema como um todo. Os versados na técnica podem implementar a funcionalidade descrita de maneiras variáveis para cada aplicação específica, mas tais decisões de implementação não devem ser interpretadas como provocando um afastamento do alcance da revelação.
[0084] Os diversos blocos, módulos e circuitos lógicos ilustrativos descritos em conexão com a presente revelação, podem ser implementados ou executados com um processador de propósito geral, um processador de sinais digitais (DSP), um circuito integrado de aplicação específica (ASIC), um arranjo de portas programável no campo (FPGA) ou outro aparelho lógico programável, porta discreta ou lógica de transistor, componentes de hardware discretos ou qualquer combinação deles projetada para desempenhar as funções aqui descritas. Um processador de propósito geral pode ser um microprocessador, mas alternativamente, o processador pode ser qualquer processador, controlador, micro-controlador ou máquina de estado convencional. Um processador pode ser também implementado como uma combinação de aparelhos de computação, como, por exemplo, uma combinação de DSP e microprocessador, uma série de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo de DSP ou qualquer outra configuração que tal.
[0085] As etapas de método ou algoritmo descritas em conexão com as modalidades aqui reveladas podem ser corporificadas diretamente em hardware, em um módulo de software executado por um processador ou em uma combinação dos dois. Um módulo de software pode residir em RAM, ROM, memória flash, EPROM, EEPROM, registradores, disco rígido, disco removível, CD-ROM ou qualquer outra forma de meio de armazenamento conhecida na técnica. Um meio de armazenamento exemplar pode ser acoplado a um processador de modo que o processador possa ler informações do, e gravar informações no, meio de armazenamento. Alternativamente, o meio de armazenamento pode ser integrante com o processador. O processador e o meio de armazenamento podem residir em um ASIC. O ASIC pode residir em um terminal de usuário. Alternativamente, o processador e o meio de armazenamento podem residir como componentes discretos em um terminal de usuário.
[0086] Em uma ou mais modalidades exemplares, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio passível de leitura por computador. Os meios passíveis de leitura por computador incluem tanto meio de armazenamento em computador quanto meios de comunicação que incluem qualquer meio que facilite a transferência de um programa de computador de um lugar para outro. Um meio de armazenamento pode ser qualquer meio disponível que possa ser acessado por um computador de propósito geral ou propósito especial. A título de exemplo, e não de limitação, tais meios passíveis de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros aparelhos de armazenamento magnético, ou qualquer outro meio que possa ser utilizado para portar ou armazenar código de programa desejado sob a forma de instruções ou estrutura de dados e que possa ser acessado por um computador de propósito geral ou de computador de propósito especial ou por um processador de programa ou processador de propósito especial. Além disto, qualquer conexão é apropriadamente denominada de meio passível de leitura por computador. Por exemplo, se o software for transmitido de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, um cabo de fibra óptica, um par trançado, uma linha de assinante digital (DSL), então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL são incluídos na definição de meio. Disco, conforme aqui utilizado, inclui disco compacto (CD), disco de laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, onde discos (disks) reproduzem usualmente dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações dos elementos acima devem ser também incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0087] A descrição anterior é apresentada para permitir que qualquer pessoa versada na técnica ponha em prática os diversos aspectos aqui descritos. Diversas modificações nestes aspectos serão prontamente evidentes aos versados na técnica e os princípios genéricos aqui definidos podem ser aplicados a outros aspectos. Assim, as reivindicações não pretendem estar limitadas aos aspectos aqui mostrados, mas devem receber o alcance total compatível com a linguagem das reivindicações, nas quais a referência a um elemento no singular não pretende significar “um e apenas um”, a menos que assim especificamente afirmado, mas, em vez disso, “um ou mais”. A menos que especificamente afirmado em sentido contrário, o termo “alguns” refere-se a um ou mais. Uma locução que se refere a “pelo menos um de” uma lista de itens refere-se a qualquer combinação desses itens, inclusive elementos únicos. Como exemplo, “pelo menos um de: a, b ou c” pretende cobrir: a; b; c; a e b; a e c; b e c; e a, b e c. Todos os equivalentes estruturais e funcionais dos elementos dos diversos aspectos descritos que são conhecidos ou virão a ser conhecidos dos versados na técnica são expressamente aqui incorporados à guisa de referência e pretendem ser abrangidos pela reivindicações. Além do mais, nada aqui revelado pretende ser dedicado ao público independentemente de tal revelação ser ou não explicitamente enumerada nas reivindicações. Nenhum elemento de reivindicação deve ser interpretado de acordo com o que estabelece o 35 U.S.C. §112 sexto parágrafo, a menos que o elemento seja expressamente enumerado utilizando-se alocução “dispositivo para”, ou no caso de uma reivindicação de método, o elemento seja enumerado utilizando-se a locução “etapa para”.

Claims (18)

1. Método de correção de erros de link e proteção (800) em um subsistema de memória de baixa potência caracterizado pelo fato de que compreende: embutir (806, 808) bits de paridade de código de correção de erros, ECC, de links em bits de máscara de dados não utilizados e/ou em dados de gravação de máscara durante uma operação de gravação de máscara; e proteger pelo menos um local dos bits de paridade de ECC de link tanto em bits de máscara de dados não utilizados ou em dados de gravação de máscara contra um erro de link durante a operação de gravação de máscara ao identificar os bits de máscara de dados não utilizados ou dados de gravação de máscara durante a operação de gravação de máscara como o local dos bits de paridade de ECC.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que proteger pelo menos um local dos bits de paridade de ECC de link compreende transmitir os bits de paridade de ECC de máscara de dados durante a operação de gravação de máscara para proteger pelo menos um primeiro bit de máscara de dados declarado que identifica os bits de paridade de ECC de link embutidos em um byte de dados de gravação de máscara correspondente.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende adicionalmente transmitir um código de local de ECC dos bits de paridade de ECC de link dentro de uma extensão de rajada predeterminada de dados de gravação durante a operação de gravação de máscara.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende adicionalmente transmitir os bits de paridade de ECC de máscara de dados e o código de localização de ECC dos bits de paridade de ECC de link através de um barramento de comando/endereço durante a operação de gravação de máscara.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que embutir durante a operação de gravação de máscara compreende: determinar se a extensão de rajada predeterminada dos dados de gravação inclui um bit de máscara de dados declarado; embutir os bits de paridade de ECC de link em um primeiro byte de dados de gravação de máscara que corresponde ao primeiro bit de máscara de dados declarado e dentro do bit de máscara de dados declarado; e caso contrário, embutir os bits de paridade de ECC de link nos bits de máscara de dados não utilizados.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que proteger pelo menos o local dos bits de paridade de ECC de link compreende transmitir um código de local de batidas que indica um local de bloco dos bits de paridade de ECC de link dentro de uma extensão de rajada predeterminada de dados de gravação durante a operação de gravação de máscara.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que compreende adicionalmente transmitir um código de local de bloco que indica se os bits de paridade de ECC de link estão embutidos na parte de dados ou na parte de máscara de dados da extensão de rajada predeterminada de dados de gravação.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que compreende adicionalmente transmitir o código de local de batidas e o código de localização de bloco através de um barramento de comando/endereço durante a operação de gravação de máscara.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente receber informações de temporização para captação de dados de leitura durante uma operação de leitura.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente integrar o subsistema de memória de baixa potência em um telefone móvel, um conversor digital (set-top box), um reprodutor de música, um reprodutor de vídeo, uma unidade de entretenimento, um dispositivo de navegação, um computador, uma unidade portátil de sistemas de comunicação pessoal, PCS, uma unidade portátil de dados, uma unidade de dados de localização fixa, um sistema de computação de servidor e/ou um sistema de controle de veículos.
11. Subsistema de memória (100, 140) caracterizado pelo fato de que compreende: um controlador de memória (110) possuindo uma lógica (120) de codificador/decodificador de código de correção de erros, ECC, o controlador de memória configurado para embutir bits de paridade de ECC de link em bits de máscara de dados não utilizados e/ou em dados de gravação de máscara durante uma operação de gravação de máscara e configurado para proteger pelo menos um local dos bits de paridade de ECC de link tanto nos bits de máscara de dados não utilizados ou em dados de gravação de máscara contra um erro de link durante a operação de gravação de máscara ao identificar os bits de máscara de dados não utilizados ou os dados de gravação de máscara durante a operação de gravação de máscara como o local dos bits de paridade de ECC de link.
12. Subsistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o controlador de memória é adicionalmente configurado para transmitir bits de paridade de ECC de máscara de dados durante a operação de gravação de máscara para proteger pelo menos um primeiro bit de máscara de dados declarado que identifica os bits de paridade de ECC de link embutidos em um byte de dados de gravação de máscara correspondente e para transmitir um código de local de ECC dos bits de paridade de ECC de link dentro de uma extensão de rajada predeterminada dos dados de gravação durante a operação de gravação de máscara.
13. Subsistema de memória, de acordo com a reivindicação 12, caracterizado pelo fato de que o controlador de memória é adicionalmente configurado para transmitir bits de paridade de ECC de máscara de dados e o código de local de ECC dos bits de paridade de ECC de link através de um barramento de comando/endereço durante a operação de gravação de máscara.
14. Subsistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o controlador de memória é adicionalmente configurado para transmitir um código de local de batidas que indica o local em bloco dos bits de paridade de ECC de link dentro de uma extensão de rajada predeterminada dos dados de gravação durante a operação de gravação de máscara e para transmitir um código de local de bloco que indica se os bits de paridade de ECC de link estão embutidos em uma parte dos dados ou na parte de máscara de dados da extensão de rajada predeterminada dos dados de gravação.
15. Subsistema de memória, de acordo com a reivindicação 14, caracterizado pelo fato de que o controlador de memória é adicionalmente configurado para transmitir o código de local de batidas e o código de local de bloco através de um barramento de comando/endereço durante a operação de gravação de máscara.
16. Subsistema de memória, de acordo com a reivindicação 15, caracterizado pelo fato de que o controlador de memória é adicionalmente configurado para determinar se a extensão de rajada predeterminada dos dados de gravação inclui um bit de máscara de dados declarado, para embutir os bits de paridade de ECC de link em um primeiro byte de dados de gravação de máscara que corresponde ao primeiro bit de máscara de dados declarado e dentro do primeiro bit de máscara de dados declarado e para, caso contrário, embutir os bits de paridade de ECC de link nos bits de máscara de dados não utilizados.
17. Subsistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que o controlador de memória é adicionalmente configurado para receber informações temporais para melhorar a captação de dados de leitura durante uma operação de leitura.
18. Subsistema de memória, de acordo com a reivindicação 11, caracterizado pelo fato de que é integrado a um telefone móvel, um conversor digital (set-top box), um reprodutor de música, um reprodutor de vídeo, uma unidade de entretenimento, um dispositivo de navegação, um computador, uma unidade portátil de sistemas de comunicação pessoal, PCS, uma unidade portátil de dados, uma unidade de dados de localização fixa, um sistema de computação de servidor e/ou um sistema de controle de veículos.
BR112018010187-7A 2015-11-20 2016-09-28 Proteção de um local de ecc ao transmitir dados de correção através de um link de memória BR112018010187B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562258155P 2015-11-20 2015-11-20
US62/258,155 2015-11-20
US15/081,460 US10140175B2 (en) 2015-11-20 2016-03-25 Protecting an ECC location when transmitting correction data across a memory link
US15/081,460 2016-03-25
PCT/US2016/054162 WO2017087075A1 (en) 2015-11-20 2016-09-28 Protecting an ecc location when transmitting correction data across a memory link

Publications (2)

Publication Number Publication Date
BR112018010187A2 BR112018010187A2 (pt) 2018-11-21
BR112018010187B1 true BR112018010187B1 (pt) 2023-08-01

Family

ID=

Similar Documents

Publication Publication Date Title
US9965352B2 (en) Separate link and array error correction in a memory system
CN108351820B (zh) 在跨存储器链路传送纠正数据时保护ecc位置
US10061645B2 (en) Memory array and link error correction in a low power memory sub-system
ES2971138T3 (es) Escrituras persistentes para memoria no volátil
US9632856B2 (en) Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices
ES2829331T3 (es) Corrección de errores de enlace en el sistema de memoria
KR102190683B1 (ko) 메모리 데이터 에러 정정 방법
KR101684045B1 (ko) 로컬 에러 검출 및 글로벌 에러 정정
US20170269992A1 (en) Data reliability information in a non-volatile memory device
CN114245891A (zh) 用于持久性存储器系统等的数据完整性
CN109716661A (zh) 用于存储装置的阶梯码编码及解码的设备及方法
EP2791809B1 (en) Unified data masking, data poisoning, and data bus inversion signaling
CN103187104A (zh) 存储器的纠错方法
KR20170109568A (ko) Ecc(error correcting code)의 저장에 전용되는 ecc 저장 유닛에의 데이터 표시자(들)의 저장을 지원하는 dimm들(dual in-line memory modules)
US10572344B2 (en) Accessing error statistics from DRAM memories having integrated error correction
KR20220044015A (ko) 메모리 장치의 에러 정정 불가를 예방하는 제어기, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
US9754682B2 (en) Implementing enhanced performance with read before write to phase change memory
TWI594253B (zh) 非依電性記憶體裝置及其空頁偵測方法
BR112018010187B1 (pt) Proteção de um local de ecc ao transmitir dados de correção através de um link de memória
JP7186262B2 (ja) 共有データ統計情報を使用したコンテンツアウェア復号(Content Aware Decoding)
TWI537971B (zh) Storage device and access method thereof
RU2780441C2 (ru) Постоянные записи для энергонезависимой памяти