ES2829331T3 - Corrección de errores de enlace en el sistema de memoria - Google Patents

Corrección de errores de enlace en el sistema de memoria Download PDF

Info

Publication number
ES2829331T3
ES2829331T3 ES17740597T ES17740597T ES2829331T3 ES 2829331 T3 ES2829331 T3 ES 2829331T3 ES 17740597 T ES17740597 T ES 17740597T ES 17740597 T ES17740597 T ES 17740597T ES 2829331 T3 ES2829331 T3 ES 2829331T3
Authority
ES
Spain
Prior art keywords
read
data
write
host
memory
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
ES17740597T
Other languages
English (en)
Inventor
Jungwon Suh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2829331T3 publication Critical patent/ES2829331T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/31Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining coding for error detection or correction and efficient use of the spectrum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Memory System (AREA)

Abstract

Un dispositivo de memoria (450) que comprende: un banco de memoria (470); una interfaz del lado de la memoria (460) configurada para recibir un comando de ESCRITURA de un host (410) a través de un enlace (490), recibir datos de escritura y un código de protección de escritura del host (410) a través del enlace (490), siendo el código de protección de escritura un código para la protección de los datos de escritura, almacenar los datos de escritura en el banco de memoria (470) en respuesta al comando de ESCRITURA, recibir un comando de LECTURA del host (410) a través del enlace (490), recuperar datos de lectura del banco de memoria (470) en respuesta al comando de LECTURA, y enviar los datos de lectura y un código de protección de lectura al host (410) a través del enlace (490), siendo el código de protección de lectura un código para la protección de los datos de lectura; un descodificador del lado de la memoria (464) configurado para detectar si los datos de escritura tienen un error basado en el código de protección de escritura; y un codificador del lado de la memoria (462) configurado para generar el código de protección de lectura basado en los datos de lectura recuperados del banco de memoria (470), en el que el enlace (490) comprende una pluralidad de datos, DQ, líneas, una máscara de datos, DM, una línea para uso del host (410) en operaciones de escritura de máscara, y una línea de reloj de lectura estroboscópica para uso del dispositivo de memoria (450) para proporcionar temporización en operaciones de lectura, y en el que la interfaz del lado de memoria (460) está configurada para recibir los datos de escritura durante una operación de escritura y enviar los datos de lectura durante una operación de lectura a través de la pluralidad de líneas DQ, recibir el código de protección de escritura a través de la línea de reloj de lectura estroboscópica durante la operación de escritura, y enviar el código de protección de lectura a través de la línea DM durante la operación de lectura.

Description

DESCRIPCIÓN
Corrección de errores de enlace en el sistema de memoria
Referencia cruzada con solicitudes relacionadas
[0001] La presente solicitud de patente reivindica el beneficio de la solicitud provisional de Estados Unidos n. ° 62/380 104, titulada "LINK ERROR CORRECTION IN MEMORY SYSTEM [CORRECCIÓN DE ERROR DE ENLACE EN SISTEMA DE MEMORIA]", presentada el 26 de agosto de 2016, asignada al cesionario de la presente.
Campo de divulgación
[0002] Uno o más aspectos de la presente divulgación se relacionan en general con sistemas de memoria y, en particular, con correcciones de errores de enlace en sistemas de memoria.
Antecedentes
[0003] Puede haber errores en las transferencias de datos entre el host y los dispositivos de memoria. Estos errores de enlace pueden detectarse y, a menudo, corregirse incorporando códigos de corrección de errores (ECC) en las transferencias de datos. Se han usado convencionalmente dos técnicas para implementar ECC. En la primera técnica convencional, el ancho de entrada/salida (E/S) se incrementa para contener tanto los datos como el ECC. En la segunda técnica convencional, los bits ECC se transfieren entre el host y la memoria extendiendo la longitud de la ráfaga de datos.
[0004] En la primera técnica convencional, los sistemas informáticos y de host convencionales suelen utilizar un módulo de memoria de ancho de E/S de 72 bits (datos de 64 bits y el ECC de 8 bits correspondiente) para mejorar la fiabilidad del enlace de memoria y la matriz de células de memoria. La FIG. 1 ilustra un diagrama simplificado de un subsistema de memoria convencional 100 que incluye un sistema central en chip (SOC) 110 con una matriz de memoria 140. El SOC de host 110 incluye un controlador de memoria 120 con un codificador/descodificador ECC125 y un bloque PHY130. La matriz de memoria 140 incluye nueve dispositivos 150 de memoria de 8 bits. Se puede asignar un ECC de 8 bits a cada dato de 64 bits para proteger cualquier error de bit tanto en el SOC110 del host como en la matriz de células de memoria 140. Los datos se pueden escribir en los primeros ocho dispositivos de memoria 150, y el ECC se puede escribir en el 9.° dispositivo de memoria 150.
[0005] Como se ve, la configuración de memoria convencional incurre en costos de dispositivos de memoria adicionales. También da como resultado un aumento en el costo del área de la placa de circuito impreso (PCB) al requerir un enrutamiento de canal de memoria más amplio y un mayor costo de memoria en espera y energía activa debido al 9.° dispositivo de memoria adicional 150. La configuración de memoria adicional afecta directamente al rendimiento. El ancho de banda de la memoria se corresponde con la cantidad de bits válidos que se transfieren por un período de tiempo determinado. Sin embargo, los bits ECC adicionales, aunque mejoran la fiabilidad, no tienen valores como datos. Por tanto, la primera técnica convencional impacta directamente en el rendimiento del subsistema de memoria en el sentido de que no se utiliza todo el ancho de e /s para transferir datos útiles.
[0006] La FIG. 2 ilustra un diagrama simplificado del subsistema de memoria convencional 100, pero esta vez mostrando solo un byte de datos (DQ) por simplicidad. El dispositivo de memoria 150 incluye un bloque de E/S260 y una pluralidad de bancos de memoria 270. Como se ve, las líneas de señal, denominadas colectivamente enlace 290, se utilizan para intercambiar datos entre el SOC110 de host y el dispositivo de memoria 150. El enlace 290 incluye:
• Líneas DQ[0:7]: Bus bidireccional de bytes DQ para transferencia de datos entre memorias y el SOC;
• Línea DM: Máscara de datos para datos de escritura;
• Línea de reloj de datos: Entrada de reloj para realizar lectura estroboscópica de los datos de escritura;
• Línea de reloj de lectura estroboscópica: La salida de reloj se alineará con la temporización de datos de lectura (una entrada de reloj al SOC);
• Líneas CA[0:n]: Comando y dirección;
• Línea de reloj de CA: Entrada de reloj de comando y dirección para buscar CA.
[0007] Cabe señalar que la línea DM puede ser una función de pin de inversión de máscara de datos (DMI), ya sea una inversión de datos o una máscara de datos. La función de pin DMI depende de la configuración del registro de modo. Sin embargo, en la FIG. 2, se muestra como línea DM por simplicidad.
[0008] La FIG. 3A ilustra un diagrama de temporización de una operación de escritura de máscara convencional. El controlador de memoria 120 emite un comando de ESCRITURA al dispositivo de memoria 150. Después de algún retardo, se transfiere un byte (8 bits) de datos en cada uno de los dieciséis ciclos de ráfagas desde el SOC110 del host al dispositivo de memoria 150. En otras palabras, se transfieren datos de escritura de 128 bits (DQ de 8 bits x longitud de ráfaga 16). En la FIG. 3A, cada uno de DO-DF representa 8 bits (un byte) de los datos de escritura DQ[0:7] que se transfieren en un ciclo de ráfagas. Los datos de escritura se transfieren con algunas actividades de máscara de datos (DM). En este ejemplo, se utiliza un DM de 16 bits para enmascarar cada byte DQ. Convencionalmente, la línea de reloj de lectura estroboscópica está inactiva ya que se trata de una operación de escritura.
[0009] La FIG. 3B ilustra un diagrama de temporización de una operación de lectura convencional. El controlador de memoria 120 emite un comando de LECTURA al dispositivo de memoria 150. Después de algún retardo, el dispositivo de memoria 150 responde enviando una lectura de datos de 128 bits (DQ de 8 bits x longitud de ráfaga 16) al SOC110 de host. Nuevamente, cada DO-DF representa un byte de los datos de lectura DQ[0:7] que se transfieren en un ciclo de ráfagas. El reloj de lectura estroboscópica del dispositivo de memoria 150 alterna con los datos de lectura como un reloj de entrada al SOC110 del host. La línea DM está inactiva ya que se trata de una operación de lectura.
[0010] En la segunda técnica convencional, las longitudes de ráfaga se amplían para transmitir los códigos ECC. Por ejemplo, la longitud de la ráfaga se puede ampliar de 16 a 18 (BL16 ^ BL18), y los bits ECC se pueden transferir entre el SOC110 del host y el dispositivo de memoria 150 en ciclos de ráfagas que no se utilizan para transferir los bits DQ. Esta técnica de longitud de ráfaga de datos extendida convencional también afecta directamente al rendimiento, ya que no todos los ciclos se utilizan para transferir datos útiles.
[0011] El documento US 2014/177362 A1 divulga una memoria y un procedimiento para almacenar datos en una memoria. La memoria comprende un bloque de memoria que comprende bits de datos y bits adicionales. La memoria incluye lógica que, cuando recibe un primer comando, escribe datos en los bits de datos del bloque de memoria, en el que los datos se enmascaran de acuerdo con una primera entrada. La lógica, en respuesta a un segundo comando, escribe datos en los bits de datos del bloque de memoria y escribe una segunda entrada en los bits adicionales del bloque de memoria.
BREVE EXPLICACIÓN
[0012] Esta breve explicación identifica características de algunos aspectos de ejemplo y no es una descripción exclusiva o exhaustiva del tema divulgado. El hecho de que las características o aspectos estén incluidos u omitidos en esta breve explicación no pretende ser indicativo de la importancia relativa de dichas características. Se describen características y aspectos adicionales, que resultarán evidentes para los expertos en la técnica tras leer la siguiente descripción detallada y ver las figuras que forman parte de la misma.
[0013] Se describe un dispositivo de memoria a modo de ejemplo. El dispositivo de memoria puede comprender un banco de memoria, una interfaz del lado de la memoria, un codificador del lado de la memoria y un descodificador del lado de la memoria. La interfaz del lado de la memoria puede configurarse para recibir un comando de ESCRITURA de un host a través de un enlace, recibir datos de escritura y un código de protección de escritura del host a través del enlace, y almacenar los datos de escritura en el banco de memoria en respuesta al comando de ESCRITURA. La interfaz del lado de la memoria también puede configurarse para recibir un comando de LECTURA del host a través del enlace, recuperar datos de lectura del banco de memoria en respuesta al comando de LECTURA y enviar los datos de lectura y un código de protección de lectura al host a través del enlace. El descodificador del lado de la memoria puede configurarse para detectar si los datos de escritura tienen un error basado en el código de protección de escritura, y el codificador del lado de la memoria puede configurarse para generar el código de protección de lectura basado en los datos de lectura recuperados del banco de memoria. El enlace puede comprender una pluralidad de líneas de datos, una línea de máscara de datos y una línea de reloj de lectura estroboscópica. La línea de máscara de datos puede usarse en operaciones de escritura de máscara, y el dispositivo de memoria puede usar la línea de reloj de lectura estroboscópica para proporcionar temporización en las operaciones de lectura. La interfaz del lado de la memoria puede configurarse además para recibir los datos de escritura y enviar los datos de lectura a través de la pluralidad de líneas de datos, recibir el código de protección de escritura a través de la línea de reloj de lectura estroboscópica y enviar el código de protección de lectura a través de la línea de máscara de datos.
[0014] Se describe un host a modo de ejemplo. El host puede comprender un controlador de memoria, una interfaz del lado del host, un codificador del lado del host y un descodificador del lado del host. El controlador de memoria puede configurarse para emitir comandos de LECTURA y ESCRITURA. La interfaz del lado del host puede configurarse para enviar el comando de ESCRITURA desde el controlador de memoria al dispositivo de memoria a través de un enlace y enviar datos de escritura y un código de protección de escritura al dispositivo de memoria a través del enlace. La interfaz del lado del host también puede configurarse para enviar el comando de LECTURA desde el controlador de memoria al dispositivo de memoria a través del enlace, recibir datos de lectura y un código de protección de lectura desde el dispositivo de memoria a través del enlace posterior al envío del comando de LECTURA, y proporcionar datos de lectura al controlador de memoria. El codificador del lado del host puede configurarse para generar el código de protección de escritura basado en los datos de escritura, y el descodificador del lado del host puede configurarse para detectar si los datos de lectura tienen un error basado en el código de protección de lectura. El enlace puede comprender una pluralidad de líneas de datos, una línea de máscara de datos y una línea de reloj de lectura estroboscópica. La línea de máscara de datos puede usarse en operaciones de escritura de máscara, y la línea de reloj de lectura estroboscópica usada por el dispositivo de memoria para proporcionar temporización en operaciones de lectura. La interfaz del lado del host puede configurarse además para enviar los datos de escritura y recibir los datos de lectura a través de la pluralidad de líneas de datos, enviar el código de protección de escritura a través de la línea de reloj de lectura estroboscópica y recibir el código de protección de lectura a través de la línea de máscara de datos.
[0015] Se describe un procedimiento a modo de ejemplo. El procedimiento puede comprender que un host envíe un comando de ESCRITURA a un dispositivo de memoria a través de un enlace, el host genere un código de protección de escritura basado en datos de escritura y el host envíe los datos de escritura y el código de protección de escritura al dispositivo de memoria a través del enlace. El procedimiento también puede comprender que el dispositivo de memoria detecte si los datos de escritura tienen un error basado en el código de protección de escritura, y el dispositivo de memoria almacena los datos de escritura en un banco de memoria del dispositivo de memoria en respuesta al comando de ESCRITURA. El enlace puede comprender una pluralidad de líneas de datos, una línea de máscara de datos y una línea de reloj de lectura estroboscópica. La línea de máscara de datos puede usarse en operaciones de escritura de máscara, y la línea de reloj de lectura estroboscópica para usar el dispositivo de memoria para proporcionar temporización en operaciones de lectura. El host puede enviar los datos de escritura al dispositivo de memoria a través de la pluralidad de líneas de datos, y puede enviar el código de protección de escritura al dispositivo de memoria a través de la línea de reloj de lectura estroboscópica.
[0016] Se describe otro procedimiento a modo de ejemplo. El procedimiento puede comprender un host que envía un comando de LECTURA a un dispositivo de memoria a través de un enlace, el dispositivo de memoria recupera datos de lectura de un banco de memoria del dispositivo de memoria en respuesta al comando de LECTURA, el dispositivo de memoria genera un código de protección de lectura basado en los datos de lectura y el dispositivo de memoria envía los datos de lectura y el código de protección de lectura al host a través del enlace. El procedimiento también puede comprender que el host detecte si los datos de lectura tienen un error basándose en el código de protección de lectura. El enlace puede comprender una pluralidad de líneas de datos, una línea de máscara de datos y una línea de reloj de lectura estroboscópica. La línea de máscara de datos puede usarse en operaciones de escritura de máscara, y la línea de reloj de lectura estroboscópica usada por el dispositivo de memoria para proporcionar temporización en operaciones de lectura. El dispositivo de memoria puede enviar los datos de lectura al host a través de la pluralidad de líneas de datos y puede enviar el código de protección de lectura al host a través de la línea de máscara de datos.
[0017] Se describe un aparato a modo de ejemplo. El aparato puede comprender un host y un dispositivo de memoria configurados para comunicarse entre sí a través de un enlace. El enlace puede comprender una pluralidad de líneas de datos, una línea de máscara de datos y una línea de reloj de lectura estroboscópica. La línea de máscara de datos puede usarse en operaciones de escritura de máscara, y la línea de reloj de lectura estroboscópica usada por el dispositivo de memoria para proporcionar temporización en operaciones de lectura. El dispositivo de memoria puede configurarse para recibir un comando de LECTURA del host a través del enlace, recuperar datos de lectura de un banco de memoria del dispositivo de memoria en respuesta al comando de LECTURA, generar un código de protección de lectura basado en los datos de lectura, enviar los datos de lectura al host a través de la pluralidad de líneas de datos y enviar el código de protección de lectura al host a través de la línea de máscara de datos. El código de protección de lectura puede ser un código de paridad para la protección de los datos de lectura. El host puede configurarse para enviar el comando de LECTURA al dispositivo de memoria a través del enlace, recibir los datos de lectura del dispositivo de memoria a través de la pluralidad de líneas de datos, recibir el código de protección de lectura del dispositivo de memoria a través de la línea de máscara de datos y detectar si la lectura de datos tiene un error basado en el código de protección de lectura.
[0018] Se describe un aparato a modo de ejemplo. El aparato puede comprender un host y un dispositivo de memoria configurados para comunicarse entre sí a través de un enlace. El enlace puede comprender una pluralidad de líneas de datos, una línea de máscara de datos y una línea de reloj de lectura estroboscópica. La línea de máscara de datos puede usarse en operaciones de escritura de máscara, y la línea de reloj de lectura estroboscópica usada por el dispositivo de memoria para proporcionar temporización en operaciones de lectura. El host puede configurarse para enviar un comando de ESCRITURA al dispositivo de memoria a través del enlace, generar un código de protección de escritura basado en datos de escritura, enviar los datos de escritura al dispositivo de memoria a través de la pluralidad de líneas de datos y enviar el código de protección de escritura al dispositivo de memoria a través de la línea de reloj de lectura estroboscópica. El código de protección de escritura puede ser un código de paridad para la protección de los datos de escritura. El dispositivo de memoria puede configurarse para recibir el comando de ESCRITURA del host a través del enlace, recibir los datos de escritura del host a través de la pluralidad de líneas de datos, recibir el código de protección de escritura del host a través de la línea de reloj de lectura estroboscópica y detectar si los datos de escritura tienen un error basado en el código de protección de escritura.
BREVE DESCRIPCIÓN DE LAS FIGURAS
[0019] Las figuras adjuntas se presentan para facilitar la descripción de ejemplos de uno o más aspectos del tema divulgado y se proporcionan únicamente para la ilustración de los ejemplos y no para la limitación de los mismos:
La FIG. 1 ilustra un diagrama de un subsistema de memoria convencional con un dispositivo de memoria adicional para el manejo de códigos de corrección de errores;
la FIG. 2 ilustra un diagrama de un subsistema de memoria convencional con señales intercambiadas entre un host y un dispositivo de memoria;
la FIG. 3A ilustra un diagrama de temporización de una operación de escritura en un subsistema de memoria convencional;
la FIG. 3B ilustra un diagrama de temporización de una operación de lectura en un subsistema de memoria convencional;
la FIG. 4 ilustra un diagrama de un subsistema de memoria de ejemplo con señales intercambiadas entre un host y un dispositivo de memoria;
la FIG. 5A ilustra un diagrama de temporización de una operación de escritura en un subsistema de memoria de ejemplo;
la FIG. 5B ilustra un diagrama de temporización de una operación de lectura en un subsistema de memoria de ejemplo;
las FIG. 6A y 6B ilustran ejemplos de datos y códigos de protección correspondientes;
la FIG. 7 ilustra un diagrama de flujo de un procedimiento de ejemplo para realizar una operación de escritura;
la FIG. 8 ilustra un diagrama de flujo de un procedimiento de ejemplo para realizar una operación de lectura; y
la FIG. 9 ilustra ejemplos de dispositivos con un subsistema de memoria integrado en el mismo.
DESCRIPCIÓN DETALLADA
[0020] Se divulgan aspectos del tema en la siguiente descripción y en figuras relacionadas relativas a ejemplos específicos del tema divulgado. Se pueden idear sistemas alternativos sin apartarse del alcance del tema divulgado. Adicionalmente, elementos ampliamente conocidos no se describirán en detalle, o se omitirán, para que los detalles pertinentes no resulten confusos.
[0021] El término "a modo de ejemplo" se usa en el presente documento en el sentido de "que sirve de ejemplo, caso o ilustración". No se ha de interpretar necesariamente que cualquier modo de realización descrito en el presente documento como "a modo de ejemplo" sea preferente o ventajoso con respecto a otros modos de realización. Asimismo, el término "modos de realización" no requiere que todos los modos de realización del tema divulgado incluyan la característica, ventaja o modo de funcionamiento analizados.
[0022] La terminología usada en el presente documento tiene como objetivo describir solamente ejemplos particulares y no pretende ser limitativa. Como se usa en el presente documento, las formas en singular "un", "una", "el" y "la" están concebidas para incluir también las formas en plural, a menos que el contexto indique claramente lo contrario. Se entenderá además que los términos "comprende", "comprendiendo", "incluye" y/o "incluyendo", cuando se usan en el presente documento, especifican la presencia de características, números enteros, procesos, operaciones, elementos y/o componentes indicados, pero no excluyen la presencia o adición de otra u otras características, números enteros, procesos, operaciones, elementos, componentes y/o grupos de los mismos.
[0023] Además, muchos ejemplos se describen en lo que respecta a secuencias de acciones que se van a realizar, por ejemplo, mediante elementos de un dispositivo informático. Se reconocerá que diversas acciones descritas en el presente documento se pueden realizar mediante circuitos específicos (por ejemplo, circuitos integrados específicos de la aplicación (ASIC)), mediante instrucciones de programa ejecutadas por uno o más procesadores o mediante una combinación de ambas cosas. Adicionalmente, se puede considerar que estas secuencias de acciones descritas en el presente documento se realizan por completo dentro de cualquier forma de medio de almacenamiento legible por ordenador que tenga almacenado en el mismo un conjunto correspondiente de instrucciones de ordenador que, tras su ejecución, provocarían que un procesador asociado realizara la funcionalidad descrita en el presente documento. Por tanto, los diversos aspectos pueden realizarse de varias formas diferentes, todas ellas contempladas dentro del alcance del tema reivindicado. Además, para cada uno de los ejemplos descritos en el presente documento, la forma correspondiente de cualquiera de dichos ejemplos se puede describir en el presente documento como, por ejemplo, "lógica configurada para" realizar la acción descrita.
[0024] Se pueden aplicar uno o más aspectos de la divulgación al subsistema de memoria de baja potencia en sistemas móviles o informáticos para proteger enlaces de memoria de alta velocidad (interfaces) con códigos de detección y/o corrección de errores. Por ejemplo, uno o más aspectos pueden estar relacionados con DDR SPEC y DDR PHY de baja potencia de próxima generación en chipsets móviles o informáticos.
[0025] En uno o más aspectos, se propone incorporar capacidades de codificación y descodificación (por ejemplo, capacidades ECC) tanto en el host como en los dispositivos de memoria. Al incorporar tales capacidades en el dispositivo de memoria así como en el host, se pueden abordar algunos o todos los problemas asociados con las técnicas convencionales. Primero, la técnica propuesta no requiere un dispositivo de memoria adicional. Esto significa que se evitan los costos de dispositivos adicionales, lo cual a su vez conlleva a que se consuma menos área de matriz y se requiera menos energía. Por lo tanto, se puede dedicar más memoria a almacenar datos útiles en la misma área de matriz. En segundo lugar, no es necesario alargar la longitud de la ráfaga, es decir, cada ciclo de ráfagas se puede utilizar para transferir datos. Esto significa que también se evita la penalización del rendimiento de dedicar algunos ciclos de ráfagas a la transferencia de ECC. En tercer lugar, no se requieren cambios en el enlace entre el host y el dispositivo de memoria.
[0026] La FIG. 4 ilustra un ejemplo de un subsistema de memoria 400 propuesto que incluye un host 410 y un dispositivo de memoria 450. Esta es una ilustración simplificada en la que se muestra un único dispositivo de memoria 450 para un byte de datos (DQ). Sin embargo, un solo host 410 puede comunicarse con cualquier número de dispositivos de memoria 450. El host 410 (por ejemplo, un sistema en chip SOC) puede incluir un controlador de memoria 420, una interfaz 430 del lado del host (por ejemplo, el bloque PHY de memoria), un codificador 432 del lado del host y un descodificador 434 del lado del host.
[0027] El controlador de memoria 420 puede emitir comandos de LECTURA y ESCRITURA al dispositivo de memoria 450 a través de la interfaz 430 del lado del host. Cuando se emite el comando de ESCRITURA, el controlador de memoria 420 también puede proporcionar datos de escritura a la interfaz 430 del lado del host. Cuando se emite el comando de LECTURA, el controlador de memoria 420 puede recibir datos de lectura desde la interfaz 430 del lado del host.
[0028] Durante una operación de escritura, la interfaz 430 del lado del host puede enviar el comando de ESCRITURA y los datos de escritura al dispositivo de memoria 450 a través de un enlace 490. El codificador 432 del lado del host (por ejemplo, un codificador ECC) puede generar un código de protección de escritura basado en los datos de escritura, y la interfaz 430 del lado del host también puede enviar el código de protección de escritura al dispositivo de memoria 450 a través del enlace 490. El código de protección de escritura puede ser un ECC y/u otros tipos de código de paridad para proteger los datos de escritura. Es decir, el código de protección de escritura puede permitir que el dispositivo de memoria 450 detecte e incluso corrija errores que puedan estar presentes en los datos de escritura. Por ejemplo, puede ocurrir un error en la transmisión de los datos de escritura desde el host 410 al dispositivo de memoria 450.
[0029] En otro aspecto, el codificador 432 del lado del host puede generar el código de protección de escritura basándose en los datos de escritura y los datos de la máscara de datos (DM). De esta forma, el código de protección de escritura puede proteger los bits de la máscara de datos (DM) además de proteger los datos de escritura. En este aspecto, si la operación de escritura no implica enmascaramiento, entonces el código de protección de escritura puede generarse con los bits DM todos puestos a cero.
[0030] Durante una operación de lectura, la interfaz 430 del lado del host puede enviar el comando de LECTURA al dispositivo de memoria 450 a través del enlace 490. Posteriormente, la interfaz 430 del lado del host puede recibir los datos de lectura del dispositivo de memoria 450 a través del enlace 490, y proporcionar los datos de lectura recibidos al controlador de memoria 420.
[0031] La interfaz 430 del lado del host también puede recibir un código de protección de lectura desde el dispositivo de memoria 450 a través del enlace 490 junto con los datos de lectura. El código de protección de lectura puede ser un ECC y/u otros tipos de código de paridad que se pueden utilizar para proteger los datos de lectura. El descodificador 434 del lado del host puede determinar si los datos de lectura recibidos son válidos basándose en el código de protección de lectura. En otras palabras, el descodificador 434 del lado del host puede detectar si los datos de lectura tienen un error. Además, el descodificador 434 del lado del host puede corregir los datos de lectura cuando se detecta el error, y la interfaz 430 del lado del host puede proporcionar los datos de lectura corregidos al controlador de memoria 420.
[0032] En la FIG. 4, el codificador 432 del lado del host y el descodificador 434 del lado del host se ilustran como incorporados en la interfaz 430 del lado del host. Esto es simplemente un ejemplo y no debe tomarse como una limitación. Se contempla que el codificador 432 del lado del host y/o el descodificador 434 del lado del host pueden estar por sí mismos o incorporados en otros componentes dentro del host 410 como el controlador de memoria 420. Además, aunque el codificador 432 del lado del host y el descodificador 434 del lado del host se ilustran individualmente, los dos pueden implementarse en un solo dispositivo. También se contempla que el codificador 432 del lado del host y/o el descodificador 434 del lado del host se pueden implementar en múltiples dispositivos. De hecho, en algunos aspectos, la implementación del codificador 432 del lado del host y/o del descodificador 434 del lado del host puede extenderse entre múltiples componentes.
[0033] El dispositivo de memoria 450 puede incluir una interfaz 460 del lado de la memoria (por ejemplo, un bloque de entrada/salida (E/S)), bancos de memoria 470, un codificador del lado de la memoria 462 y un descodificador 464 del lado de la memoria. Durante la operación de escritura, la interfaz 460 del lado de la memoria puede recibir la orden de ESCRITURA del host 410 a través del enlace 490. La interfaz 460 del lado de la memoria puede recibir los datos de escritura del host 410 a través del enlace 490 y puede almacenar los datos de escritura en los bancos de memoria 470 en respuesta al comando de ESCRITURA.
[0034] La interfaz 460 del lado de la memoria también puede recibir el código de protección de escritura del host 410 a través del enlace 490 junto con los datos de escritura. Como se mencionó, el código de protección de escritura puede ser un ECC y/u otros tipos de código de paridad. El descodificador 464 del lado de la memoria puede determinar si los datos de escritura recibidos son válidos basándose en el código de protección de escritura. Es decir, el descodificador 464 del lado de la memoria puede detectar si hay errores en los datos de escritura. Además, el descodificador 464 del lado de la memoria puede corregir los datos de escritura cuando se detecta el error, y la interfaz 460 del lado de la memoria puede almacenar los datos de escritura corregidos en los bancos de memoria 470.
[0035] Recuerde que en la técnica propuesta no se requiere ningún dispositivo de memoria adicional. A diferencia del sistema de memoria convencional ilustrado en la FIG. 1 que tiene el 9.° dispositivo de memoria 150 para almacenar el ECC, NO es necesario almacenar el código de protección de escritura en ninguno de los dispositivos de memoria 450 en la técnica propuesta. En cambio, todos los dispositivos de memoria 450 pueden almacenar datos útiles en un aspecto.
[0036] Durante la operación de lectura, la interfaz 460 del lado de la memoria puede recibir el comando de LECTURA del host 410 a través del enlace 490. En respuesta al comando de LECTURA, la interfaz 460 del lado de la memoria puede recuperar los datos de lectura de los bancos de memoria 470 y enviar los datos de lectura recuperados al host 410 a través del enlace 490.
[0037] El codificador 462 del lado de la memoria puede generar el código de protección de lectura basándose en los datos de lectura recuperados de los bancos de memoria 470. De forma alternativa, el codificador 462 del lado de la memoria puede generar el código de protección de lectura basándose en los datos de lectura así como en los datos de DM, que pueden ponerse a cero. Como se mencionó, el código de protección de lectura puede ser un ECC y/u otros tipos de código de paridad. La interfaz 460 del lado de la memoria puede proporcionar el código de protección de lectura junto con los datos de lectura al host 410 a través del enlace.
[0038] En la FIG. 4, el codificador 462 del lado de la memoria y el descodificador 464 del lado de la memoria se ilustran incorporados en la interfaz 460 del lado de la memoria. Esto es simplemente un ejemplo y no debe tomarse como una limitación. Se contempla que el codificador 462 del lado de la memoria y/o el descodificador 464 del lado de la memoria pueden ser independientes o incorporados en otros componentes dentro del dispositivo de memoria 450. Además, aunque el codificador 462 del lado de la memoria y el descodificador 464 del lado de la memoria se ilustran individualmente, los dos pueden implementarse en un solo dispositivo. También se contempla que el codificador 462 del lado de la memoria y/o el descodificador 464 del lado de la memoria se puedan implementar en múltiples dispositivos. De hecho, en algunos aspectos, la implementación del codificador 462 del lado de la memoria y/o del descodificador 464 del lado de la memoria puede extenderse entre múltiples componentes.
[0039] En un aspecto, el codificador 432 del lado del host y el codificador 462 del lado de la memoria pueden funcionar para generar un código de protección de escritura y un código de protección de lectura idénticos (por ejemplo, el mismo ECC) cuando se proporcionan datos idénticos. En otro aspecto, también es posible que el código de protección de escritura pueda ser diferente del código de protección de lectura. Sin embargo, siempre que los descodificadores del lado de la memoria y del lado del host 464, 434 funcionen respectivamente de manera complementaria con los codificadores del lado del host y del lado de la memoria 432, 462, puede tener lugar el intercambio de datos adecuado.
[0040] Cuando el subsistema de memoria 400 propuesto de la FIG. 4 y el subsistema de memoria convencional 100 de la FIG. 2 se comparan, se ve que los enlaces 490 y 290 pueden ser idénticos, es decir, no es necesario que haya ningún cambio en la configuración del enlace 490 entre el host 410 y el dispositivo de memoria 450. Es decir, las mismas líneas de señal DQ[0:7], DM, reloj de datos, reloj de lectura estroboscópica, CA[0:n] y reloj de CA pueden usarse para intercambiar información entre el host 410 y el dispositivo de memoria 450. Dado que se pueden utilizar las mismas líneas de señal, no se requieren cambios de arquitectura en el enlace 490.
[0041] Se desea que los códigos de protección de lectura y escritura aún se comuniquen entre el host 410 y el dispositivo de memoria 450 sin cambiar la arquitectura del enlace, sin aumentar el ancho de E/S y sin aumentar la longitud de la ráfaga. Recordemos que en el sistema de memoria convencional, la línea de reloj de lectura estroboscópica permanece inactiva durante la operación de escritura (ver la FIG. 3A) y la línea DM permanece inactiva durante la operación de lectura (ver la FIG. 3B). Por tanto, en un aspecto, se propone utilizar la línea de reloj de lectura estroboscópica para transferir el código de protección de escritura durante la operación de escritura y utilizar la línea DM para transferir el código de protección de lectura durante la operación de lectura. Al utilizar la línea de reloj de lectura estroboscópica y la línea DM, no se requieren líneas de señal adicionales para transferir los códigos de protección de lectura y escritura entre el host 410 y el dispositivo de memoria 450. Los datos de lectura y escritura de datos aún se pueden transferir a través de las líneas de datos (DQ).
[0042] La FIG. 5A ilustra un diagrama de temporización de un ejemplo de una operación de escritura de máscara. En este diagrama de ejemplo, se puede suponer que se transfieren datos de escritura de 128 bits (DQ de 8 bits x longitud de ráfaga 16) a través de las líneas DQ desde el host 410 al dispositivo de memoria 450. Cada uno de DO-DF puede representar 8 bits (un byte) de los datos de escritura DQ[0:7] que se transfieren en un ciclo de ráfagas. En este ejemplo, se supone que los datos de escritura se transfieren con algunas actividades de máscara de datos (DM). Por ejemplo, se puede utilizar un DM de 16 bits para enmascarar los bytes DQ de los datos de escritura. Por ejemplo, los bits DM 4.° y 9.° (M3 y M8) se pueden establecer para enmascarar los bytes DQ 4.° y 9.° (D3 y D8). Tenga en cuenta que para una operación de escritura normal sin enmascaramiento, todos los bits Dm no se establecerán, es decir, se pondrán a cero.
[0043] El codificador 432 del lado del host puede generar el código de protección de escritura (por ejemplo, un ECC de 8 bits), que a continuación puede transferirse en la línea de reloj de lectura estroboscópica mediante la interfaz 430 del lado del host. El codificador 432 del lado del host puede generar el código de protección de escritura basándose en los datos de escritura recibidos del controlador de memoria 420. Por ejemplo, se puede generar un código de protección de escritura de 8 bits para proteger los datos de escritura de 128 bits. En otro aspecto, el codificador 432 del lado del host puede generar el código de protección de escritura basándose en los bits Dm además de los datos de escritura. Por ejemplo, el ECC de 8 bits se puede generar para proteger un total de 144 bits (los datos de escritura de 128 bits y el DM de 16 bits).
[0044] Por lo tanto, en una operación de escritura normal (sin enmascaramiento), el código de protección de escritura puede basarse solo en los datos de escritura de 128 bits. De forma alternativa, en la operación de escritura normal, el código de protección de escritura puede basarse en los datos de escritura de 128 bits y los bits DM puestos a cero. En una operación de escritura de máscara, si la protección de los datos DM no es un problema, entonces el código de protección de escritura puede basarse solo en los datos de escritura. De lo contrario, en la operación de escritura de máscara, el código de protección de escritura puede basarse en los datos de escritura y los datos de DM.
[0045] Como se ve en la FIG. 5A, el código de protección de escritura E[0:7] de 8 bits puede transmitirse para coincidir con los ciclos de ráfagas 8 a 15. De manera más general, el código de protección de escritura puede transmitirse durante una última parte de los ciclos de ráfagas de modo que el final de los ciclos de ráfagas (por ejemplo, el ciclo de ráfagas 15) coincida con la transmisión del último bit (por ejemplo, E7) del código de protección de escritura. Esto se debe a que el código de protección de escritura puede tardar algún tiempo en generarse. Al transferir el código de protección de escritura durante la última parte de los ciclos de ráfagas de manera que el final de la transferencia de datos de lectura coincida con el final de la transferencia del código de protección de lectura, se puede proporcionar la máxima cantidad de tiempo para generar los datos de protección de escritura sin tener que extender la longitud de la ráfaga.
[0046] Por supuesto, la transferencia del código de protección de escritura puede comenzar tan pronto como estén disponibles los bits del código de protección de escritura individuales. Por tanto, la transferencia del código de protección de escritura puede finalizar antes del final de los ciclos de ráfagas. Pero independientemente, en general se prefiere que la transferencia del código de protección de escritura finalice no más tarde del final de los ciclos de ráfagas para evitar el alargamiento de la longitud de la ráfaga.
[0047] La FIG. 5B ilustra un diagrama de temporización de un ejemplo de una operación de lectura. Cuando el controlador de memoria 420 emite el comando de LECTURA al dispositivo de memoria 450, el dispositivo de memoria 450 puede responder enviando los datos de lectura al host 410. En este diagrama de ejemplo, se puede suponer que se transfieren datos de lectura de 128 bits (DQ de 8 bits x longitud de ráfaga 16) desde el dispositivo de memoria 450 al host 410 a través de las líneas DQ. Cada uno de DO-DF puede representar 8 bits (un byte) de los datos de lectura DQ[0:7] que se transfieren en un ciclo de ráfagas.
[0048] El codificador 462 del lado de la memoria puede generar el código de protección de lectura (por ejemplo, un ECC de 8 bits), que a continuación puede transferirse a través de la línea DM mediante la interfaz 460 del lado de la memoria. El codificador 462 del lado de la memoria puede generar el código de protección de lectura basándose en los datos de lectura recuperados de los bancos de memoria 470. Por ejemplo, se puede generar el código de protección de lectura de 8 bits para proteger los datos de lectura de 128 bits. En otro aspecto, el código de protección de lectura puede generarse para proteger un total de 144 bits (los datos de escritura de 128 bits y el DM de 16 bits se ponen a cero).
[0049] El código de protección de lectura E[0:7] de 8 bits puede transferirse para que coincida con los ciclos de ráfagas 8 a 15. De manera más general, el código de protección de lectura puede transferirse durante una última parte de los ciclos de ráfagas de modo que un final de los ciclos de ráfagas (por ejemplo, ciclo de ráfagas 15) coincida con el último bit (por ejemplo, E7) del código de protección de lectura. Al transferir el código de protección de lectura durante la última parte de los ciclos de ráfagas de manera que el final de la transferencia de datos de lectura coincida con el final de la transferencia del código de protección de lectura, se puede proporcionar el tiempo máximo para generar los datos de protección de lectura sin tener que extender la longitud de ráfaga.
[0050] La transferencia del código de protección de lectura puede comenzar tan pronto como se generen los bits del código de protección de lectura individual. Por tanto, la transferencia del código de protección de lectura puede finalizar antes del final de los ciclos de ráfagas. Pero independientemente, en general se prefiere que la transferencia del código de protección de lectura finalice no más tarde del final de los ciclos de ráfagas para evitar alargar la longitud de la ráfaga.
[0051] La FIG. 6A ilustra un ejemplo de datos (por ejemplo, lectura/escritura de datos) y el código de protección correspondiente (por ejemplo, código de protección de lectura/escritura). En este ejemplo, se puede suponer que el código de protección de 8 bits (E0-E7) (por ejemplo, bits ECC) se utiliza para proteger datos de 144 bits (datos de lectura/escritura de 128 bits (d0-d7F)+ datos DM de 16 bits (M0-MF)). Como se mencionó, los bits DM pueden ponerse a cero para operaciones normales de lectura/escritura. Esto es simplemente un ejemplo. Cualquier número de bits de datos (por ejemplo, cualquier combinación de bits de datos de lectura/escritura y bits de enmascaramiento) puede protegerse con el código de protección.
[0052] El número de bits para el código de protección también se puede variar dependiendo del nivel de protección (por ejemplo, detección y corrección de errores) deseado. La FIG. 6B ilustra otro ejemplo de datos, datos DM y el código de protección correspondiente. En este ejemplo, 9 bits ECC pueden ser para proteger los datos de 128 bits (por ejemplo, datos de lectura/escritura) y 6 bits ECC pueden ser para proteger los datos DM de 16 bits. Por tanto, en este ejemplo, se puede transferir un código ECC (E0-EE) de 15 bits.
[0053] La FIG. 7 ilustra un diagrama de flujo de un procedimiento de ejemplo 700 para realizar una operación de escritura. El procedimiento 700 se puede aplicar para enmascarar escrituras y/o escrituras normales. En esta figura, el host 410 puede realizar los bloques 710-730 y el dispositivo de memoria 450 puede realizar los bloques 740-780. En el lado del host, en el bloque 710, el controlador de memoria 420 puede emitir el comando ESCRIBIR al lado de la memoria a través de la interfaz 430 del lado del host. En el bloque 720, el codificador 432 del lado del host puede generar el código de protección de escritura basándose en los datos de escritura proporcionados por el controlador de memoria 420. De forma alternativa, el codificador 432 del lado del host puede generar el código de protección de escritura para proteger los datos de escritura y los datos de DM. En el bloque 730, la interfaz 430 del lado del host puede enviar los datos de escritura y el código de protección de escritura (por ejemplo, ECC) al lado de la memoria. Los datos de escritura se pueden enviar a través de las líneas DQ y el código de protección de escritura se puede enviar a través de la línea de reloj de lectura estroboscópica.
[0054] En el lado de la memoria, en el bloque 740, la interfaz 460 del lado de la memoria puede recibir el comando ESCRIBIR desde el lado del host. A continuación, en el bloque 750, la interfaz 460 del lado de la memoria puede recibir los datos de escritura (por ejemplo, sobre las líneas d Q) y el código de protección de escritura (por ejemplo, a través de la línea de reloj de lectura estroboscópica) desde el lado del host. En el bloque 760, el descodificador 464 del lado de la memoria puede detectar si hay un error en los datos de escritura basándose en el código de protección de escritura. De forma alternativa, el descodificador 464 del lado de la memoria puede detectar si hay un error en los datos de escritura y/o en los datos de DM basándose en el código de protección de escritura. En el bloque 770, el descodificador 464 del lado de la memoria puede corregir los datos de escritura según sea necesario, por ejemplo, cuando se detectan errores de bit. En el bloque 780, la interfaz 460 del lado de la memoria puede almacenar los datos de escritura en los bancos de memoria 470. Si el descodificador 464 del lado de la memoria corrige los datos de escritura, los datos de escritura corregidos pueden almacenarse en los bancos de memoria 470.
[0055] La FIG. 8 ilustra un diagrama de flujo de un procedimiento de ejemplo 800 para realizar una operación de lectura. En esta figura, el host 410 puede realizar los bloques 810-850, y el dispositivo de memoria 450 puede realizar los bloques 850-890. En el lado de la memoria, en el bloque 860, la interfaz 460 del lado de la memoria puede recibir el comando de LECTURA desde el lado del host. En el bloque 870, la interfaz 460 del lado de la memoria puede recuperar los datos de lectura de los bancos de memoria 470. En el bloque 880, el codificador 462 del lado de la memoria puede generar el código de protección de lectura basándose en los datos de lectura recuperados. De forma alternativa, el codificador 462 del lado de la memoria puede generar el código de protección de lectura para proteger los datos de lectura y los datos de DM, y los datos de DM pueden ponerse a cero. En el bloque 890, la interfaz 460 del lado de la memoria puede enviar los datos de lectura y el código de protección de lectura (por ejemplo, ECC) al lado del host. Los datos de lectura se pueden enviar a través de las líneas DQ y el código de protección de lectura se puede enviar a través de la línea de DM.
[0056] En el lado del host, en el bloque 810, el controlador de memoria 420 puede emitir el comando de LECTURA al lado de la memoria a través de la interfaz 430 del lado del host. A continuación, en el bloque 820, la interfaz 430 del lado del host puede recibir los datos de lectura (por ejemplo, sobre las líneas DQ) y el código de protección de lectura (por ejemplo, a través de la línea DM) del lado de la memoria. En el bloque 830, el descodificador 434 del lado del host puede detectar si hay un error en los datos de lectura basándose en el código de protección de lectura. De forma alternativa, el descodificador 434 del lado del host puede detectar si hay un error en los datos de lectura y/o los datos de DM basándose en el código de protección de lectura. En el bloque 840, el descodificador 434 del lado del host puede corregir los datos de lectura según sea necesario, por ejemplo, cuando se detectan errores de bit. En el bloque 850, la interfaz 430 del lado del host puede proporcionar los datos de lectura al controlador de memoria 420. Si el descodificador 434 del lado del host corrige los datos de lectura, los datos de lectura corregidos pueden proporcionarse al controlador de memoria 420.
[0057] Aunque no se muestra específicamente, el host 410 puede comunicarse con múltiples dispositivos 450 de memoria. Cabe señalar que no es necesario realizar todos los bloques del procedimiento 700 o del procedimiento 800. Además, los bloques del procedimiento 700 y/o los bloques del procedimiento 800 no necesitan realizarse en ningún orden particular.
[0058] La FIG. 9 ilustra varios dispositivos electrónicos que pueden integrarse con el subsistema de memoria 400 antes mencionado. Por ejemplo, un dispositivo de teléfono móvil 902, un dispositivo de ordenador portátil 904, un dispositivo terminal 906, así como dispositivos portátiles, sistemas portátiles, que requieren un factor de forma pequeño, perfil extremadamente bajo, pueden incluir un dispositivo/paquete 900 que incorpore el subsistema de memoria. 400 como se describe en el presente documento. El dispositivo/paquete 900 puede ser, por ejemplo, cualquiera de los circuitos integrados, matrices, dispositivos integrados, paquetes de dispositivos integrados, dispositivos de circuitos integrados, paquetes de dispositivos, paquetes de circuitos integrados (IC), dispositivos de paquete sobre paquete, dispositivos de sistema en paquete descritos en el presente documento. Los dispositivos 902, 904, 906 ilustrados en la FIG. 9 son meramente a modo de ejemplo. Otros dispositivos electrónicos también pueden presentar el dispositivo/paquete integrado 900 que incluye, pero sin limitarse a, un grupo de dispositivos (por ejemplo, dispositivos electrónicos) que incluye dispositivos móviles, unidades de sistemas de comunicación personal portátiles (PCS), unidades de datos portátiles, tales como asistentes digitales personales, dispositivos habilitados para el sistema de posicionamiento global (GPS), dispositivos de navegación, descodificadores, reproductores de música, reproductores de vídeo, unidades de entretenimiento, unidades de datos de ubicación fija tales como equipos de lectura de contadores, dispositivos de comunicación, teléfonos inteligentes, tablets, ordenadores, dispositivos que se pueden llevar puestos, servidores, routers, dispositivos electrónicos implementados en automóviles (por ejemplo, vehículos autónomos) o cualquier otro dispositivo que almacene o recupere datos o instrucciones de ordenador, o cualquier combinación de los mismos.
[0059] Una lista no exhaustiva de beneficios de uno o más aspectos del subsistema de memoria propuesto es la siguiente:
• Mejorar la fiabilidad de la aplicación de protección de datos (por ejemplo, ECC) al enlace de memoria de alta velocidad sin pérdida de ancho de banda de memoria ni impacto en los costos;
• No se requiere ningún dispositivo de memoria adicional;
• Mantener el recuento de pines de memoria de baja potencia y la compatibilidad del paquete.
[0060] Los expertos en la técnica apreciarán que la información y las señales pueden representarse usando cualquiera de una variedad de tecnologías y técnicas diferentes. Por ejemplo, los datos, las instrucciones, los comandos, la información, las señales, los bits, los símbolos y chips que pueden haberse mencionado a lo largo de la descripción anterior pueden representarse mediante voltajes, corrientes, ondas electromagnéticas, campos o partículas magnéticos, campos o partículas ópticos, o cualquier combinación de los mismos.
[0061] Además, los expertos en la técnica apreciarán que los diversos bloques lógicos, módulos, circuitos y algoritmos ilustrativos descritos en relación con los ejemplos divulgados en el presente documento pueden implementarse como hardware electrónico, software informático o combinaciones de ambos. Para ilustrar claramente esta intercambiabilidad de hardware y software, anteriormente se han descrito en general diversos componentes, bloques, módulos, circuitos y procedimientos ilustrativos en términos de su funcionalidad. Que dicha funcionalidad se implemente como hardware o software depende de las restricciones de aplicación y diseño particulares impuestas al sistema global. Los expertos en la técnica pueden implementar la funcionalidad descrita de distintas formas para cada aplicación en particular, pero no se debe interpretar que dichas decisiones de implementación suponen apartarse del alcance de la presente divulgación.
[0062] Los procedimientos, secuencias y/o algoritmos descritos en relación con los ejemplos divulgados en el presente documento pueden realizarse directamente en hardware, en un módulo de software ejecutado por un procesador o en una combinación de ambas cosas. Un módulo de software puede residir en una memoria RAM, una memoria flash, una memoria ROM, una memoria EPROM, una memoria EEPROM, registros, un disco duro, un disco extraíble, un CD-ROM o cualquier otra forma de medio de almacenamiento conocido en la técnica. Un medio de almacenamiento a modo de ejemplo está acoplado al procesador de modo que el procesador pueda leer información de, y escribir información en, el medio de almacenamiento. De forma alternativa, el medio de almacenamiento puede estar integrado en el procesador.
[0063] Por consiguiente, un aspecto puede incluir un medio legible por ordenador que incorpore cualquiera de los dispositivos descritos anteriormente. En consecuencia, el alcance del tema divulgado no se limita a los ejemplos ilustrados, y cualquier medio para desempeñar las funciones descritas en el presente documento está incluido en el presente documento.
[0064] Aunque la divulgación anterior representa ejemplos ilustrativos, debe observarse que pueden realizarse diversos cambios y modificaciones en el presente documento sin apartarse del alcance del tema divulgado definido en las reivindicaciones adjuntas. No es necesario que las funciones, procesos y/o acciones de las reivindicaciones de procedimiento de acuerdo con los ejemplos descritos en el presente documento se realicen en ningún orden particular. Además, aunque los elementos del tema divulgado se pueden describir o reivindicar en singular, el plural se contempla a menos que se establezca explícitamente la limitación al singular.

Claims (14)

REIVINDICACIONES
1. Un dispositivo de memoria (450) que comprende:
un banco de memoria (470);
una interfaz del lado de la memoria (460) configurada para
recibir un comando de ESCRITURA de un host (410) a través de un enlace (490),
recibir datos de escritura y un código de protección de escritura del host (410) a través del enlace (490), siendo el código de protección de escritura un código para la protección de los datos de escritura, almacenar los datos de escritura en el banco de memoria (470) en respuesta al comando de ESCRITURA,
recibir un comando de LECTURA del host (410) a través del enlace (490),
recuperar datos de lectura del banco de memoria (470) en respuesta al comando de LECTURA, y enviar los datos de lectura y un código de protección de lectura al host (410) a través del enlace (490), siendo el código de protección de lectura un código para la protección de los datos de lectura; un descodificador del lado de la memoria (464) configurado para detectar si los datos de escritura tienen un error basado en el código de protección de escritura; y
un codificador del lado de la memoria (462) configurado para generar el código de protección de lectura basado en los datos de lectura recuperados del banco de memoria (470),
en el que el enlace (490) comprende una pluralidad de datos, DQ, líneas, una máscara de datos, DM, una línea para uso del host (410) en operaciones de escritura de máscara, y una línea de reloj de lectura estroboscópica para uso del dispositivo de memoria (450) para proporcionar temporización en operaciones de lectura, y
en el que la interfaz del lado de memoria (460) está configurada para
recibir los datos de escritura durante una operación de escritura y enviar los datos de lectura durante una operación de lectura a través de la pluralidad de líneas DQ,
recibir el código de protección de escritura a través de la línea de reloj de lectura estroboscópica durante la operación de escritura, y
enviar el código de protección de lectura a través de la línea DM durante la operación de lectura.
2. El dispositivo de memoria (450) según la reivindicación 1, en el que el descodificador del lado de la memoria está configurado para corregir los datos de escritura cuando se detecta el error en los datos de escritura de manera que la interfaz del lado de la memoria (460) almacena los datos de escritura corregidos en el banco de memoria (470); y
en el que el codificador del lado de la memoria está configurado para generar el código de protección de lectura basado en una máscara DM puesta a cero además de los datos de lectura.
3. El dispositivo de memoria según la reivindicación 1,
en el que la interfaz del lado de la memoria (460) está configurada para recibir datos DM del host (410) a través de la línea DM, y
en el que el descodificador del lado de la memoria (464) está configurado para detectar si los datos de escritura y/o los datos de DM tienen el error basándose en el código de protección de escritura.
4. El dispositivo de memoria (450) según la reivindicación 1, en el que la interfaz del lado de la memoria (460) está configurada para enviar los datos de lectura y el código de protección de lectura de manera que el final de la transferencia de los datos de lectura coincida con el final de la transferencia del código de protección de lectura.
5. Un host (410), que comprende:
un controlador de memoria (420) configurado para emitir comandos de LECTURA y ESCRITURA; una interfaz del lado del host (430) configurada para
enviar el comando de ESCRITURA desde el controlador de memoria (420) a un dispositivo de memoria (450) a través de un enlace (490),
enviar datos de escritura y un código de protección de escritura al dispositivo de memoria a través del enlace (490), siendo el código de protección de escritura un código para la protección de los datos de escritura,
enviar el comando de LECTURA desde el controlador de memoria (420) al dispositivo de memoria (450) a través del enlace,
después de que se envíe el comando de LECTURA, recibir los datos de lectura y un código de protección de lectura del dispositivo de memoria (450) a través del enlace (490), siendo el código de protección de lectura un código para la protección de los datos de lectura, y
proporcionar los datos de lectura al controlador de memoria (420);
un codificador del lado del host (432) configurado para generar el código de protección de escritura basado en los datos de escritura; y
un descodificador del lado del host (434) configurado para detectar si los datos de lectura tienen un error basado en el código de protección de lectura,
en el que el enlace (490) comprende una pluralidad de datos, DQ, líneas, una máscara de datos, DM, una línea para uso del host (410) en operaciones de escritura de máscara, y una línea de reloj de lectura estroboscópica para uso del dispositivo de memoria (450) para proporcionar temporización en operaciones de lectura, y
en el que la interfaz lateral del host (430) está configurada para:
enviar los datos de escritura durante una operación de escritura y recibir los datos de lectura durante una operación de lectura sobre la pluralidad de líneas DQ,
enviar el código de protección de escritura a través de la línea de reloj de lectura estroboscópica durante la operación de escritura, y
recibir el código de protección de lectura a través de la línea DM durante la operación de lectura.
6. El host (410) según la reivindicación 5, en el que el descodificador del lado del host (434) está configurado para corregir los datos de lectura cuando se detecta el error en los datos de lectura, de modo que la interfaz del lado del host (430) proporciona los datos de lectura corregidos al controlador de memoria (420); y
en el que la interfaz del lado del host (430) está configurada para enviar los datos de escritura y el código de protección de escritura de manera que el final de la transferencia de los datos de escritura coincida con el final de la transferencia del código de protección de escritura.
7. El host (410) según la reivindicación 5,
en el que la interfaz del lado del host (430) está configurada para enviar datos DM al dispositivo de memoria (450) a través de la línea DM, y
en el que el codificador del lado del host (432) está configurado para generar el código de protección de escritura basado en los datos de escritura y los datos de DM.
8. Un procedimiento (700), que comprende:
enviar (710), mediante un host (410), un comando de ESCRITURA a un dispositivo de memoria (450) a través de un enlace (490);
generar (720), mediante el host (410), un código de protección de escritura basado en datos de escritura, siendo el código de protección de escritura un código para la protección de los datos de escritura; enviar (730), mediante el host (410), los datos de escritura y el código de protección de escritura al dispositivo de memoria a través del enlace;
detectar (760), mediante el dispositivo de memoria (450), si los datos de escritura tienen un error basado en el código de protección de escritura; y
almacenar (780), mediante el dispositivo de memoria (450), los datos de escritura en un banco de memoria (470) del dispositivo de memoria en respuesta al comando de ESCRITURA,
en el que el enlace comprende una pluralidad de datos, DQ, líneas, una máscara de datos, DM, una línea para ser utilizada por el host (410) en operaciones de escritura de máscara, y una línea de reloj de lectura estroboscópica para ser utilizada por el dispositivo de memoria (450) para proporcionar temporización en las operaciones de lectura, y
en el que el envío de los datos de escritura y el código de protección de escritura comprende:
enviar, mediante el host (410), los datos de escritura al dispositivo de memoria (450) a través de la pluralidad de líneas DQ durante una operación de escritura, y
enviar, mediante el host (410), el código de protección de escritura al dispositivo de memoria a través de la línea de reloj de lectura estroboscópica durante la operación de escritura.
9. El procedimiento (700) según la reivindicación 8, que comprende además corregir (770), mediante el dispositivo de memoria, los datos de escritura cuando se detecta el error en los datos de escritura de manera que los datos de escritura corregidos se almacenan en el banco de memoria (470).
10. El procedimiento (700) según la reivindicación 8, que comprende además enviar, mediante el host (410), datos DM a través de la línea DM, en el que generar (720) el código de protección de escritura comprende generar el código de protección de escritura basado en los datos de escritura y los datos de DM, y
en el que detectar (760) el error comprende detectar si los datos de escritura y/o la línea DM tienen el error basándose en el código de protección de escritura.
11. El procedimiento (700) según la reivindicación 8, en el que enviar (730) los datos de escritura y el código de protección de escritura comprende enviar los datos de escritura y el código de protección de escritura de manera que un final de la transferencia de los datos de escritura coincida con un final de la transferencia del código de protección de escritura.
12. Un procedimiento (800), que comprende:
enviar (810), mediante un host (410), un comando de LECTURA a un dispositivo de memoria (450) a través de un enlace (490);
recuperar (820), mediante el dispositivo de memoria, datos de lectura de un banco de memoria (470) del dispositivo de memoria en respuesta al comando de LECTURA;
generar (880), mediante el dispositivo de memoria (450), un código de protección de lectura basado en los datos de lectura, siendo el código de protección de lectura un código de protección de los datos de lectura; enviar (890), mediante el dispositivo de memoria (450), los datos de lectura y el código de protección de lectura al host (410) a través del enlace (490); y
detectar (830), mediante el host (410), si los datos de lectura tienen un error basado en el código de protección de lectura,
en el que el enlace (490) comprende una pluralidad de datos, DQ, líneas, una máscara de datos, DM, una línea para uso del host (410) en operaciones de escritura de máscara y una línea de reloj de lectura estroboscópica para uso del dispositivo de memoria (450) para proporcionar temporización en operaciones de lectura, y
en el que el envío (810) de los datos de lectura y el código de protección de lectura comprende:
enviar, mediante el dispositivo de memoria (450), los datos de lectura al host (410) a través de la pluralidad de líneas DQ durante una operación de lectura, y
enviar, mediante el dispositivo de memoria (450), el código de protección de lectura al host (410) a través de la línea DM durante la operación de lectura.
13. El procedimiento (800) según la reivindicación 12, en el que generar el código de protección de lectura comprende generar el código de protección de lectura basado en los datos de lectura y una máscara de DM puesta a cero; y
en el que enviar los datos de lectura y el código de protección de lectura comprende enviar los datos de lectura y el código de protección de lectura de manera que el final de la transferencia de los datos de lectura coincida con el final de la transferencia del código de protección de lectura.
14. Un aparato que comprende el dispositivo de memoria según la reivindicación 1 y el host según la reivindicación 5.
ES17740597T 2016-08-26 2017-07-07 Corrección de errores de enlace en el sistema de memoria Active ES2829331T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662380104P 2016-08-26 2016-08-26
US15/643,455 US10331517B2 (en) 2016-08-26 2017-07-06 Link error correction in memory system
PCT/US2017/041129 WO2018038813A1 (en) 2016-08-26 2017-07-07 Link error correction in memory system

Publications (1)

Publication Number Publication Date
ES2829331T3 true ES2829331T3 (es) 2021-05-31

Family

ID=61242685

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17740597T Active ES2829331T3 (es) 2016-08-26 2017-07-07 Corrección de errores de enlace en el sistema de memoria

Country Status (20)

Country Link
US (1) US10331517B2 (es)
EP (1) EP3479241B1 (es)
JP (1) JP6630869B2 (es)
KR (1) KR102045712B1 (es)
CN (1) CN109643257B (es)
AU (2) AU2017315303B2 (es)
BR (1) BR112019003473A2 (es)
CA (1) CA3032278C (es)
CO (1) CO2019001630A2 (es)
ES (1) ES2829331T3 (es)
IL (1) IL264303B (es)
MX (1) MX2019002194A (es)
MY (1) MY201067A (es)
PH (1) PH12019500160A1 (es)
RU (1) RU2710977C1 (es)
SA (1) SA519401035B1 (es)
SG (1) SG11201900375YA (es)
TW (1) TWI684102B (es)
WO (1) WO2018038813A1 (es)
ZA (1) ZA201901194B (es)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107039086A (zh) * 2017-05-17 2017-08-11 西安紫光国芯半导体有限公司 具有兼容不同数据长度的纠错功能的存储器和纠错方法
US10387242B2 (en) 2017-08-21 2019-08-20 Qualcomm Incorporated Dynamic link error protection in memory systems
US10725912B2 (en) 2018-12-19 2020-07-28 Micron Technology, Inc. Power loss protection in memory sub-systems
US11537464B2 (en) * 2019-06-14 2022-12-27 Micron Technology, Inc. Host-based error correction
US11372717B2 (en) * 2019-08-30 2022-06-28 Qualcomm Incorporated Memory with system ECC
CN110750406B (zh) * 2019-10-29 2023-10-31 湖南国科微电子股份有限公司 一种检测方法、装置和soc芯片
US11493949B2 (en) * 2020-03-27 2022-11-08 Qualcomm Incorporated Clocking scheme to receive data
US11728003B2 (en) * 2020-05-12 2023-08-15 Qualcomm Incorporated System and memory with configurable error-correction code (ECC) data protection and related methods
US11157359B2 (en) * 2020-09-24 2021-10-26 Intel Corporation Techniques to implement a hybrid error correction code scheme
KR20230021409A (ko) 2021-08-05 2023-02-14 에스케이하이닉스 주식회사 트레이닝동작을 수행하기 위한 반도체시스템
US11687273B2 (en) * 2021-09-29 2023-06-27 Micron Technology, Inc. Memory controller for managing data and error information
CN114006819A (zh) * 2021-11-03 2022-02-01 北京天融信网络安全技术有限公司 一种检测策略生成及装置、数据传输方法及装置
US20230170037A1 (en) * 2021-11-30 2023-06-01 Qualcomm Incorporated Hybrid memory system with increased bandwidth

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69624059T2 (de) * 1995-04-03 2003-08-14 Matsushita Electric Ind Co Ltd Datenubertragungsvorrichtung, datenaufzeichnungs- und wiedergabegerat sowie aufzeichnungsmedium beide mit datenstruktur fur fehlerkorrekturkode
US7032056B2 (en) * 2003-05-08 2006-04-18 International Business Machines Corporation Encoding of message onto strobe signals
KR100978268B1 (ko) * 2004-07-15 2010-08-26 엘에스산전 주식회사 분산 제어 시스템의 고속 이중화 데이터 복사 보드
KR100755371B1 (ko) 2005-05-03 2007-09-04 삼성전자주식회사 반도체 메모리 장치 및 이 장치의 데이터 스트로우브 신호발생방법
CN101060015A (zh) * 2007-05-23 2007-10-24 北京芯技佳易微电子科技有限公司 一种多比特闪存及其错误检测和纠正的方法
US8145925B2 (en) 2007-12-21 2012-03-27 Mosaid Technologies Incorporated Non-volatile semiconductor memory device with power saving feature
US8255783B2 (en) 2008-04-23 2012-08-28 International Business Machines Corporation Apparatus, system and method for providing error protection for data-masking bits
US8341498B2 (en) * 2010-10-01 2012-12-25 Sandisk Technologies Inc. System and method of data encoding
US8707133B2 (en) * 2011-12-05 2014-04-22 Lsi Corporation Method and apparatus to reduce a quantity of error detection/correction bits in memory coupled to a data-protected processor port
CN102546755A (zh) * 2011-12-12 2012-07-04 华中科技大学 云存储系统的数据存储方法
US8990670B2 (en) * 2012-09-28 2015-03-24 Intel Corporation Endurance aware error-correcting code (ECC) protection for non-volatile memories
US9064606B2 (en) 2012-12-20 2015-06-23 Advanced Micro Devices, Inc. Memory interface supporting both ECC and per-byte data masking
US9164834B2 (en) * 2013-05-06 2015-10-20 Samsung Electronics Co., Ltd. Semiconductor memory devices, memory systems including the same and method of writing data in the same
CN105468292B (zh) * 2014-09-05 2019-04-23 群联电子股份有限公司 数据存取方法、存储器储存装置及存储器控制电路单元
US9558066B2 (en) * 2014-09-26 2017-01-31 Intel Corporation Exchanging ECC metadata between memory and host system
KR102438552B1 (ko) * 2015-02-04 2022-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작방법
US9965352B2 (en) * 2015-11-20 2018-05-08 Qualcomm Incorporated Separate link and array error correction in a memory system
US20180059976A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Storage System with Integrated Components and Method for Use Therewith

Also Published As

Publication number Publication date
EP3479241B1 (en) 2020-08-19
ZA201901194B (en) 2020-12-23
NZ750205A (en) 2020-10-30
PH12019500160A1 (en) 2019-11-11
AU2019222960B2 (en) 2020-10-15
KR102045712B1 (ko) 2019-11-15
SA519401035B1 (ar) 2021-11-06
AU2019222960A1 (en) 2019-09-26
CN109643257A (zh) 2019-04-16
RU2710977C1 (ru) 2020-01-14
CO2019001630A2 (es) 2019-05-10
MX2019002194A (es) 2019-06-24
JP2019525356A (ja) 2019-09-05
TW201810056A (zh) 2018-03-16
EP3479241A1 (en) 2019-05-08
IL264303A (en) 2019-02-28
WO2018038813A1 (en) 2018-03-01
IL264303B (en) 2019-08-29
CA3032278C (en) 2021-01-12
TWI684102B (zh) 2020-02-01
AU2017315303A1 (en) 2019-02-07
US10331517B2 (en) 2019-06-25
AU2017315303B2 (en) 2020-06-18
SG11201900375YA (en) 2019-03-28
KR20190043540A (ko) 2019-04-26
BR112019003473A2 (pt) 2019-05-21
MY201067A (en) 2024-02-01
JP6630869B2 (ja) 2020-01-15
CA3032278A1 (en) 2018-03-01
US20180060171A1 (en) 2018-03-01
CN109643257B (zh) 2020-07-03

Similar Documents

Publication Publication Date Title
ES2829331T3 (es) Corrección de errores de enlace en el sistema de memoria
CN108351820B (zh) 在跨存储器链路传送纠正数据时保护ecc位置
EP3377974B1 (en) Separate link and array error correction in a memory system
US10061645B2 (en) Memory array and link error correction in a low power memory sub-system
US7475174B2 (en) Flash / phase-change memory in multi-ring topology using serial-link packet interface
CN110377453A (zh) 半导体存储器装置和包括半导体存储器装置的存储器系统
TW200935233A (en) System and method for data read of a synchronous serial interface NAND
ES2895367T3 (es) Protección contra errores de enlace dinámico en sistemas de memoria
US11461039B2 (en) Nonvolatile memory that stores temperature information therein
NZ750205B2 (en) Link error correction in memory system
BR112018010187B1 (pt) Proteção de um local de ecc ao transmitir dados de correção através de um link de memória