ES2895367T3 - Protección contra errores de enlace dinámico en sistemas de memoria - Google Patents

Protección contra errores de enlace dinámico en sistemas de memoria Download PDF

Info

Publication number
ES2895367T3
ES2895367T3 ES18749640T ES18749640T ES2895367T3 ES 2895367 T3 ES2895367 T3 ES 2895367T3 ES 18749640 T ES18749640 T ES 18749640T ES 18749640 T ES18749640 T ES 18749640T ES 2895367 T3 ES2895367 T3 ES 2895367T3
Authority
ES
Spain
Prior art keywords
link
host
write
memory
read
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
ES18749640T
Other languages
English (en)
Inventor
Jungwon Suh
Alain Artieri
Dexter Tamio Chun
Deepti Vijayalakshmi Sriramagiri
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 ES2895367T3 publication Critical patent/ES2895367T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F3/068Hybrid storage device

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Un aparato (100), que comprende: un dispositivo de memoria (150) configurado para comunicarse con un anfitrión (110) a través de un enlace (190), en el que el dispositivo de memoria comprende: una pluralidad de celdas de memoria (170); y una interfaz de enlace de memoria (160) configurada para recibir un comando de LECTURA del anfitrión a través del enlace, recuperar los DATOS DE LECTURA de la pluralidad de celdas de memoria y proporcionar DATOS DE LECTURA al anfitrión a través del enlace de acuerdo con un modo de protección de enlace aplicado en respuesta al comando de LECTURA, o recibir un comando de ESCRITURA del anfitrión a través del enlace, recibir los DATOS DE ESCRITURA del anfitrión a través del enlace y almacenar los DATOS DE ESCRITURA en la pluralidad de celdas de memoria de acuerdo con el modo de protección de enlace aplicado en respuesta al comando de ESCRITURA, y en el que el dispositivo de memoria se configura para implementar una pluralidad de modos de protección de enlaces que incluyen un primer modo de protección de enlace y un segundo modo de protección de enlace, en el que los modos de protección de enlaces se aplican para proteger en diferentes niveles de protección los DATOS DE LECTURA o los DATOS DE ESCRITURA transmitidos a través del enlace de errores, y en el que el aparato se caracteriza porque el dispositivo de memoria se configura para cambiar de aplicar el primer modo de protección de enlace a aplicar el segundo modo de protección de enlace en respuesta a una notificación de cambio de modo de protección de enlace recibida del anfitrión, en el que la notificación de cambio de modo de protección de enlace recibida del anfitrión es una notificación de cambio de velocidad de enlace.

Description

DESCRIPCIÓN
Protección contra errores de enlace dinámico en sistemas de memoria
Campo de la Divulgación
El campo de la materia divulgada se relaciona con los sistemas de memoria. En particular, el campo del tema divulgado se refiere a la protección contra errores de enlace dinámico en sistemas de memoria.
Antecedentes
Puede haber errores en las transferencias de datos entre anfitriones y memorias. A medida que las operaciones de enlace de memoria se vuelven más rápidas para cumplir con los requisitos de ancho de banda más altos, la probabilidad de errores de transferencia de datos en un enlace entre dispositivos de memoria y un anfitrión (por ejemplo, sistema en chip (SoC), CPU) se vuelve mayor. Una razón es que el enlace de alta velocidad es más susceptible a la fluctuación del reloj, al ruido PDN (Red de suministro de energía), etc.
Para mejorar la fiabilidad, puede aplicarse un esquema de protección contra errores al enlace de memoria. Por ejemplo, un subsistema de memoria convencional puede incluir un codificador y decodificador de código de corrección de errores (ECC) en el lado del anfitrión y un codificador y decodificador ECC complementarios en el lado del dispositivo de memoria. Cuando el anfitrión desea escribir datos en el dispositivo de memoria, el anfitrión envía un comando ESCRITURA y proporciona DATOS DE ESCRITURA al dispositivo de memoria a través del enlace. Para proteger los DATOS DE ESCRITURA, el codificador ECC en el lado del anfitrión codifica los DATOS DE ESCRITURA antes de enviar los DATOS DE ESCRITURA a través del enlace. El decodificador ECC en el lado del dispositivo de memoria decodifica los DATOS DE ESCRITURA codificados, y los DATOS DE ESCRITURA decodificados se almacenan en las celdas de memoria del dispositivo de memoria.
Cuando el anfitrión desea leer datos del dispositivo de memoria, el anfitrión envía un comando de LECTURA al dispositivo de memoria a través del enlace. El dispositivo de memoria recupera de las celdas de memoria y envía los DATOS DE LECTURA recuperados al anfitrión a través del enlace. Para proteger los DATOS DE LECTURA, el codificador ECC en el lado del dispositivo de memoria codifica los DATOS DE LECTURA antes de enviar los DATOS DE LECTURA al anfitrión. El decodificador ECC en el lado del anfitrión decodifica los DATOS DE LECTURA codificados, y los DATOS DE LECTURA decodificados se proporcionan a un solicitante como la CPU.
Desafortunadamente, proporcionar un esquema de protección de este tipo generalmente aumenta la latencia del rendimiento debido a la sobrecarga de codificación y decodificación. Además, se requiere energía adicional, lo que puede ser particularmente significativo en los sistemas móviles.
El documento US 2015/347015 A1 divulga las operaciones de escritura y lectura entre un anfitrión y un dispositivo de memoria con protección ECC adaptable del enlace entre el anfitrión y el dispositivo de memoria. Para cada operación de escritura y lectura se forma un paquete, el paquete comprende un campo de tipo de transacción, un campo de carga útil y un campo ECC. El campo de carga útil contiene los datos reales de escritura o lectura y el campo ECC contiene la codificación ECC correspondiente de los datos de escritura o lectura. El campo de tipo de transacción define el tipo de operación (escritura, lectura), el tamaño del campo de carga útil y el tamaño del campo ECC. La codificación ECC usada se selecciona en base al campo de tipo de transacción.
Sumario
La invención se define por las reivindicaciones independientes anexas.
Este sumario identifica las 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 se incluyan u omitan en este sumario no pretende ser indicativo de la importancia relativa de dichas características. Se describen características y aspectos adicionales, y se harán evidentes para las personas expertas en la técnica al leer la siguiente descripción detallada y ver los dibujos que forman parte de la misma.
Se divulga un aparato ilustrativo. El aparato comprende un dispositivo de memoria configurado para comunicarse con un anfitrión a través de un enlace. El dispositivo de memoria comprende una pluralidad de celdas de memoria y una interfaz de enlace de memoria. La interfaz de enlace de memoria se configura para recibir un comando de LECTURA o un comando de ESCRITURA del anfitrión a través del enlace. En respuesta al comando de LECTURA, la interfaz de enlace de memoria se configura para recuperar DATOS DE LECTURA de la pluralidad de celdas de memoria y proporcionar DATOS DE LECTURA al anfitrión a través del enlace de acuerdo con un modo de protección de enlace aplicado. En respuesta al comando de ESCRITURA, la interfaz de enlace de memoria se configura para recibir DATOS DE ESCRITURA desde el anfitrión a través del enlace y almacenar los DATOS DE ESCRITURA en la pluralidad de celdas de memoria de acuerdo con el modo de protección de enlace aplicado. El dispositivo de memoria se configura para implementar una pluralidad de modos de protección de enlaces que incluyen un primer modo de protección de enlace y un segundo modo de protección de enlace. Los modos de protección de enlaces se aplican para proteger en diferentes niveles de protección los DATOS DE LECTURA o los DATOS DE ESCRITURA transmitidos a través del enlace de errores. El dispositivo de memoria se configura para cambiar de aplicar el primer modo de protección de enlace a aplicar el segundo modo de protección de enlace en respuesta a una notificación de cambio de modo de protección de enlace recibida del anfitrión.
Se divulga otro aparato ilustrativo. El aparato comprende un anfitrión configurado para comunicarse con un dispositivo de memoria a través de un enlace. El anfitrión comprende una interfaz de enlace de anfitrión configurada para interactuar con el enlace y un controlador de memoria configurado para comunicarse con el dispositivo de memoria a través de la interfaz de enlace de anfitrión. El controlador de memoria se configura para emitir un comando de LECTURA o un comando de ESCRITURA al dispositivo de memoria a través del enlace. Al emitir el comando de LECTURA, el controlador de memoria se configura para recibir DATOS DE LECTURA del dispositivo de memoria a través del enlace de acuerdo con un modo de protección de enlace aplicado. Al emitir el comando de ESCRITURA, el controlador de memoria se configura para proporcionar los DATOS DE ESCRITURA al dispositivo de memoria a través del enlace de acuerdo con el modo de protección de enlace aplicado. El anfitrión se configura para implementar una pluralidad de modos de protección de enlaces que incluyen un primer modo de protección de enlace y un segundo modo de protección de enlace. Los modos de protección de enlaces se aplican para proteger en diferentes niveles de protección los DATOS DE LECTURA o los DATOS DE ESCRITURA transmitidos a través del enlace de errores. El anfitrión se configura para cambiar de aplicar el primer modo de protección de enlace a aplicar el segundo modo de protección de enlace en respuesta a un cambio de velocidad de enlace.
Se divulga un procedimiento ilustrativo de un aparato. El aparato comprende un anfitrión y un dispositivo memoria configurado para comunicarse entre sí a través de un enlace. El procedimiento comprende cambiar el aparato de aplicar un primer modo de protección de enlace a aplicar un segundo modo de protección de enlace en respuesta a un cambio de velocidad de enlace. El procedimiento comprende emitir un comando de LECTURA por parte del anfitrión al dispositivo de memoria a través del enlace, y proporcionar DATOS DE LECTURA por el dispositivo de memoria al anfitrión a través del enlace de acuerdo con un modo de protección de enlace aplicado en respuesta al comando de LECTURA. El procedimiento comprende emitir un comando de ESCRITURA por parte del anfitrión al dispositivo de memoria a través del enlace, y proporcionar DATOS DE ESCRITURA por parte del anfitrión al dispositivo de memoria a través del enlace de acuerdo con el modo de protección de enlace aplicado al emitir el comando de ESCRITURA. El aparato se configura para implementar una pluralidad de modos de protección de enlaces que incluyen los modos de protección de enlaces primero y segundo. Los modos de protección de enlaces se aplican para proteger en diferentes niveles de protección los DATOS DE LECTURA o los DATOS DE ESCRITURA transmitidos a través del enlace de errores.
Breve descripción de los dibujos
Los dibujos adjuntos se presentan para ayudar en la descripción de ejemplos de uno o más aspectos del tema divulgado y se proporcionan únicamente como ilustración de los ejemplos y sin limitación de los mismos:
La Figura 1 ilustra un diagrama de un subsistema de memoria de ejemplo;
La Figura 2 ilustra un ejemplo de un registro de modo usado para implementar un registro de punto de ajuste de frecuencia;
La Figura 3 ilustra un ejemplo de ajustes de registros de puntos de ajuste de frecuencia para diferentes velocidades de enlace;
La Figura 4 ilustra un diagrama de flujo de un procedimiento de ejemplo para cambiar dinámicamente un modo de protección de enlace;
La Figura 5 ilustra un diagrama de flujo de un procedimiento de ejemplo para realizar una operación de lectura; La Figura 6 ilustra un diagrama de flujo de un procedimiento de ejemplo para realizar una operación de escritura; y La Figura 7 ilustra ejemplos de dispositivos con un subsistema de memoria integrado en el mismo.
Descripción detallada
Los aspectos de la materia se proporcionan en la siguiente descripción y dibujos relacionados dirigidos a ejemplos específicos de la materia divulgada. Pueden concebirse alternativas sin apartarse del ámbito de la materia divulgada. Además, los elementos conocidos no se describirán en detalle o se omitirán para no oscurecer los detalles relevantes.
La palabra "ilustrativo" se usa en la presente memoria para significar "que sirve como un ejemplo, caso, o ilustración." Cualquier realización descrita en la presente memoria como "ilustrativa" no necesariamente debe interpretarse como preferida o ventajosa sobre otras realizaciones. Del mismo modo, el término "realizaciones" no requiere que todas las realizaciones de la materia divulgada incluyan la característica, ventaja o modo de operación discutidos.
La terminología usada en la presente memoria tiene el propósito de describir solo ejemplos particulares y no pretende ser limitante. Como se usa en la presente memoria, se pretende que las formas singulares "un", "uno(a)" y "el(la)" incluyan las formas plurales también, a menos que el contexto claramente indique lo contrario. Se entenderá además que los términos "comprende", "que comprende", "incluye", y/o "que incluye", cuando se usan en la presente memoria, especifican la presencia de características establecidas, números enteros, procedimientos, operaciones, elementos, y/o componentes, pero no excluyen la presencia o adición de una o más de otras características, números enteros, procedimientos, operaciones, elementos, componentes, y/o grupos de los mismos.
Además, muchos ejemplos se describen en términos de secuencias de acciones que se deben realizar, por ejemplo, elementos de un dispositivo informático. Se reconocerá que varias acciones descritas en la presente memoria pueden realizarse por circuitos específicos (por ejemplo, circuitos integrados específicos de aplicación (ASIC)), por instrucciones de programa que se ejecutan por uno o más procesadores, o por una combinación de ambos. Además, puede considerarse que esta secuencia de acciones descritas en la presente memoria se incorpora completamente dentro de cualquier forma de medio de almacenamiento legible por ordenador que tenga almacenado un conjunto correspondiente de instrucciones informáticas que, al ejecutarse, provocarían que un procesador asociado realiza la funcionalidad descrita en la presente memoria. Por lo tanto, los diversos aspectos pueden incorporarse en varias formas diferentes, todas las que se han contemplado para estar dentro del ámbito de la materia reivindicada. Además, para cada uno de los ejemplos descritos en la presente memoria, la forma correspondiente de dichos ejemplos puede describirse en la presente memoria como, por ejemplo, "lógica configurada para" realizar la acción descrita.
Uno o más aspectos de la divulgación pueden aplicarse a un 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.
En uno o más aspectos, se propone incorporar capacidades de codificación y decodificación (por ejemplo, ECC, simple corrección de errores, doble detección de errores (SECDED) Hamming, paridad, etc.) tanto en dispositivos anfitrión como de memoria. A diferencia de los subsistemas de memoria convencionales, se propone incluir esquemas de conmutación de protección de errores de enlace dinámico que van desde la protección contra errores de enlace hasta la protección completa contra errores de enlace y en cualquier lugar intermedio (es decir, protección de error de enlace parcial). Al incorporar los esquemas de protección contra errores de enlace dinámico en el dispositivo de memoria, así como en el anfitrión, pueden abordarse algunos o todos los problemas asociados con las técnicas convencionales. Por ejemplo, el nivel de protección contra errores de enlace proporcionado puede ajustarse dinámicamente para que pueda establecerse una compensación óptima entre los beneficios y los costos de proporcionar protección contra errores de enlace.
La Figura 1 ilustra un ejemplo de un subsistema de memoria propuesto 100 que proporciona una protección contra errores de enlace dinámico. El subsistema de memoria 100 incluye un sistema en chip (SoC) 110 y un dispositivo de memoria 150 que se comunica a través de un enlace 190. Esta es una ilustración simplificada en la que se muestra un solo dispositivo de memoria 150. Sin embargo, un solo SoC 110 puede comunicarse con múltiples dispositivos de memoria 150. En algunos ejemplos, el SoC 110 puede ser un procesador o un procesador de aplicaciones para un dispositivo móvil. El SoC 110 se denomina anfitrión 110 para proporcionar comandos de memoria a los dispositivos de memoria 150.
En algunos ejemplos, el enlace 190 puede proporcionar un enlace de chip a chip entre el anfitrión 110 y los dispositivos de memoria 150. Por ejemplo, el enlace 190 puede comprender una pluralidad de líneas de señal que incluyen líneas para transmitir señales unidireccionales desde el anfitrión 110 a los dispositivos de memoria 150 (por ejemplo, reloj (CK), selección de chip (CS), comando y dirección (CA), etc.) y señales direccionales bidireccionales (datos (DQ), datos estroboscópicos (DQS), etc.). La señalización entre el anfitrión 110 y los dispositivos de memoria 150 puede estar de acuerdo con la especificación JEDEC DRAM.
El anfitrión 110 incluye un controlador de memoria 120, una interfaz de enlace de anfitrión 130 (por ejemplo, un bloque PHY de memoria), un codificador de anfitrión 122 y un decodificador de anfitrión 124. Aunque no se ilustra, el anfitrión 110 también puede incluir otros componentes como procesadores de señal digital (DSP), unidades de procesamiento de gráficos (GPU), motores multimedia y unidades de procesamiento central (CPU) de múltiples núcleos que envían solicitudes de lectura y escritura al controlador de memoria 120.
El controlador de memoria 120 emite comandos de LECTURA y ESCRITURA al dispositivo de memoria 150 a través de la interfaz de enlace de anfitrión 130, por ejemplo, para cumplir con las solicitudes recibidas de DSP, GPU, etc. Cuando el controlador de memoria 120 emite el comando de LECTUTA, recibe DATOS DE LECTURA de la interfaz de enlace de anfitrión 130 y, a su vez, envía DATOS DE LECTURA al solicitante. Cuando el controlador de memoria 120 emite el comando de ESCRITURA, recibe DATOS DE ESCRITURA del solicitante y, a su vez proporciona DATOS DE ESCRITURA a la interfaz de enlace de anfitrión 130.
Durante una operación de lectura, la interfaz de enlace de anfitrión 130 puede enviar el comando de LECTURA en nombre del controlador de memoria 120 al dispositivo de memoria 150 a través del enlace 190. Posteriormente, la interfaz de enlace de anfitrión 130 recibe los DATOS DE LECTURA del dispositivo de memoria 150 a través del enlace 190, y proporciona los DATOS DE LECTURA recibidos al controlador de memoria 120. Los DATOS DE LECTURA pueden codificarse o no codificarse. Si los DATOS DE LECTURA se codifican, el decodificador de anfitrión 124 puede decodificar los DATOS DE LECTURA, y el controlador de memoria 120 puede enviar los DATOS DE LECTURA decodificados al solicitante. El decodificador de anfitrión 124 también puede detectar e incluso corregir errores que pueden estar presentes en los DATOS DE LECTURA. Por ejemplo, el decodificador de anfitrión 124 puede corregir uno o más errores de bits que pueden introducirse en la transmisión de los DATOS DE LECTURA. El controlador de memoria 120 puede configurarse para enviar los DATOS DE LECTURA corregidos al solicitante.
Durante una operación de escritura, la interfaz de enlace de anfitrión 130 envía el comando de ESCRITURA y de DATOS DE ESCRITURA en nombre del controlador de memoria 120 al dispositivo de memoria 150 a través del enlace 190. Cuando está habilitado, el codificador de anfitrión 122 (por ejemplo, ECC, SECDEC Hamming, paridad, etc.) puede codificar los DATOS DE ESCRITURA de manera que los DATOS DE ESCRITURA codificados se envíen a través del enlace 190. La codificación de DATOS DE ESCRITURA permite que el dispositivo de memoria 150 detecte e incluso corregir errores que puedan estar presentes en DATOS DE ESCRITURA. Por ejemplo, pueden corregirse uno o más errores de bits introducidos en la transmisión de los DATOS DE ESCRITURA a través del enlace 190.
En la Figura 1, el codificador de anfitrión 122 y el decodificador de anfitrión 124 se ilustran incorporados en el controlador de memoria 120. Esto es simplemente un ejemplo, y no debe tomarse como limitante. Se contempla que el codificador de anfitrión 122 y/o el decodificador de anfitrión 124 pueden estar por solos o incorporados a otros componentes dentro del anfitrión 110, como la interfaz de enlace de anfitrión 130. Además, mientras el codificador de anfitrión 122 y el decodificador de anfitrión 124 se ilustran individualmente, los dos pueden implementarse en un solo dispositivo. También se contempla que el codificador de anfitrión 122 y/o el decodificador de anfitrión 124 puedan implementarse en múltiples dispositivos. De hecho, en algunos aspectos, la implementación del codificador de anfitrión 122 y/o el decodificador de anfitrión 124 puede distribuirse entre múltiples componentes dentro del anfitrión 110.
El dispositivo de memoria 150 incluye una interfaz de enlace de memoria 160 (por ejemplo, un bloque de entrada/salida (E/S)), uno o más bancos de memoria 170, un codificador de memoria 162 y un decodificador de memoria 164. Los bancos de memoria 170 pueden incluir una pluralidad de celdas de memoria. La interfaz de enlace de memoria 160 recibe los comandos de LECTURA y ESCRITURA del anfitrión 110 a través del enlace 190. Cuando la interfaz de enlace de memoria 160 recibe el comando de LECTURA, proporciona los DATOS DE LECTURA al anfitrión 110. Cuando la interfaz de enlace de memoria 160 recibe el comando de LECTURA, también recibe los DATOS DE ESCRITURA del anfitrión 110.
Durante la operación de lectura, la interfaz de enlace de memoria 160 recibe el comando de LECTURA del anfitrión 110 a través del enlace 190. En respuesta al comando de LECTURA, la interfaz de enlace de memoria 160 recupera los DATOS DE LECTURA de la pluralidad de celdas de memoria en los bancos de memoria 170 y proporciona los DATOS DE LECTURA recuperados al anfitrión 110 a través del enlace 190. Cuando está habilitado, el codificador de memoria 162 puede codificar los DATOS DE LECTURA de manera que los DATOS DE LECTURA codificados se envíen a través del enlace 190. La codificación de DATOS DE LECTURA permite al anfitrión 110 detectar e incluso corregir errores que pueden estar presentes en los DATOS DE LECTURA.
Durante la operación de escritura, la interfaz de enlace de memoria 160 recibe el comando de ESCRITURA y los DATOS DE ESCRITURA del anfitrión 110 a través del enlace 190. La interfaz de enlace de memoria 160 puede almacenar los DATOS DE ESCRITURA en los bancos de memoria 170, es decir, en la pluralidad de celdas de memoria, en respuesta al comando de ESCRITURA. Los DATOS DE ESCRITURA pueden codificarse o no codificarse. Si se codifican los DATOS DE ESCRITURA, el decodificador de memoria 164 puede decodificar los DATOS DE ESCRITURA y la interfaz de enlace de memoria 160 puede almacenar los Da To S DE ESCRITURA decodificados en los bancos de memoria 170. El decodificador de memoria 164 también puede detectar e incluso corregir errores que pueden estar presentes en los DATOS DE ESCRITURA, y la interfaz de enlace de memoria 160 puede almacenar los DATOS DE ESCRITURA corregidos en los bancos de memoria 170.
En la Figura 1, el codificador de memoria 162 y el decodificador de memoria 164 se ilustran como incorporados a la interfaz de enlace de memoria 160. Esto es simplemente un ejemplo, y no debe tomarse como limitante. Se contempla que el codificador de memoria 162 y/o el decodificador de memoria 164 pueden estar solos o incorporados a otros componentes dentro del dispositivo de memoria 150. Además, mientras el codificador de memoria 162 y el decodificador de memoria 164 se ilustran individualmente, los dos pueden implementarse en un solo dispositivo. También se contempla que el codificador de memoria 162 y/o el decodificador de memoria 164 puedan implementarse en múltiples dispositivos. De hecho, en algunos aspectos, la implementación del codificador de memoria 162 y/o el decodificador de memoria 164 puede distribuirse entre múltiples componentes.
En un aspecto, el codificador de anfitrión 122 y el codificador de memoria 162 pueden funcionar para generar DATOS DE ESCRITURA y DATOS DE LECTURA codificados idénticamente (por ejemplo, el mismo ECC) cuando se proporcionan datos no codificados idénticos. En otro aspecto, también es posible que los DATOS DE ESCRITURA puedan codificarse de manera diferente a los DATOS DE LECTURA. Sin embargo, siempre que los decodificadores de memoria y anfitrión 164, 124 respectivamente funcionen de forma complementaria al anfitrión y a los codificadores de memoria 122, 162, puede tener lugar un intercambio de datos adecuado.
Como se indicó anteriormente, se propone incorporar capacidades de conmutación de protección contra errores de enlace dinámico en el subsistema de memoria 100. En un aspecto, la técnica propuesta permite ajustar dinámicamente el nivel de protección contra errores de enlace para que pueda proporcionarse una cantidad apropiada de protección en base al entorno de operación. Por ejemplo, una probabilidad de errores de enlace puede estar fuertemente correlacionada con la velocidad de operación en el enlace 190. Por tanto, el nivel de protección contra errores del enlace puede ajustarse dinámicamente en base a la velocidad de enlace. Es decir, cuando cambia la velocidad de enlace del subsistema de memoria 100, el nivel de protección contra errores de enlace también puede cambiar apropiadamente. El nivel de protección contra errores de enlace puede oscilar entre la no protección y la protección total.
Para facilitar la discusión, se supone que el subsistema de memoria 100 implementa una pluralidad de modos de protección de enlaces que pueden aplicarse para proteger contra errores en el enlace 190. Por ejemplo, cada modo de protección de enlace puede incluir una pluralidad de parámetros de protección y definir un nivel de protección aplicado para proteger los DATOS DE LECTURA y LOS DATOS DE ESCRITURA transmitidos a través del enlace 190 de errores. Entonces, cuando la velocidad de enlace cambia de una velocidad del primer enlace a una velocidad del segundo enlace, el subsistema de memoria 100 puede cambiar de aplicar un modo de protección de primer enlace a aplicar un modo de protección de segundo enlace. En otras palabras, la protección de enlace aplicada cambia.
Recuerde que uno o ambos DATOS DE LECTURA y DATOS DE ESCRITURA pueden codificarse. La codificación de DATOS DE LECTURA en el dispositivo de memoria 150 permite al anfitrión 110 detectar y/o corregir cualquier error en los DATOS DE LECTURA transmitidos a través del enlace 190. En cambio, la codificación de DATOS DE ESCRITURA en el anfitrión 110 permite al dispositivo de memoria 150 detectar y/o corregir cualquier error en los DATOS DE ESCRITURA transmitidos a través del enlace 190. Por lo tanto, en un aspecto, cada modo de protección de enlace puede especificar si cada parámetro de detección de errores de lectura, parámetro de corrección de errores de lectura, parámetro de detección de errores de escritura y parámetro de corrección de errores de escritura está habilitado/discapacitado. El parámetro de detección de errores de lectura puede ser un parámetro de protección para indicar si se deben detectar errores en los DATOS DE LECTURA, el parámetro de corrección de errores de lectura puede ser un parámetro de protección para indicar si se deben corregir errores en los DATOS DE LECTURA, el parámetro de detección de errores de escritura puede ser un parámetro de protección para indicar si se deben detectar errores en los DATOS DE ESCRITURA, y el parámetro de corrección de errores de escritura puede ser un parámetro de protección para indicar si se deben corregir los errores en los DATOS DE ESCRITURA. En este aspecto, cada modo de protección de enlace puede especificar diferentes combinaciones de los parámetros de protección que se habilitan/deshabilitan.
Se proporcionan escenarios de ejemplo para permitir una comprensión más detallada. Supongamos que, en un primer escenario de ejemplo, el subsistema de memoria 100 es un subsistema de memoria de baja potencia de doble velocidad de datos 5 (LPDDR5) con un reloj de datos (WCK) que puede operar en frecuencias que oscilan entre 20 Mhz - 3,2 Ghz, lo que se traduce en velocidades de transferencia de enlace que oscilan entre 40 Mbps -6.400 Mbps. Si el enlace 190 funciona a baja velocidad (por ejemplo, WCK a 1,6 Ghz o menos), las posibilidades de que se produzcan errores de transmisión en el enlace 190 pueden ser lo suficientemente bajas de manera que los datos no codificados (DATOS DE LECTURA, DATOS DE ESCRITURA) puedan transmitirse con suficiente fiabilidad. En tales entornos operativos donde los datos no codificados pueden transmitirse fiablemente, implementar la protección contra errores de enlace puede proporcionar, en el mejor de los casos, solo una mejora marginal en la fiabilidad de la transmisión de manera que los costos de implementar la protección contra errores de enlace pueden superar los beneficios.
Por lo tanto, en un entorno de velocidad de enlace baja en el primer escenario de ejemplo, la protección puede desactivarse por completo, es decir, desactivarse por completo. Por ejemplo, el modo de protección de enlace correspondiente a la velocidad de enlace baja puede especificar que todos los parámetros de protección - el parámetro de detección de errores de lectura, el parámetro de corrección de errores de lectura, el parámetro de detección de errores de escritura, y el parámetro de corrección de errores de escritura - se deshabilitan. Si el modo de protección de enlace de baja velocidad es el modo de protección de enlace aplicado, el codificador de anfitrión 122, el decodificador de anfitrión 124, el codificador de memoria 162 y el decodificador de memoria 164 pueden deshabilitarse, y los DATOS DE LECTURA y los DATOS DE ESCRITURA no codificados pueden transmitirse a través del enlace 190. Al deshabilitar el codificador de anfitrión 122, el decodificador de anfitrión 124, el codificador de memoria 162 y el decodificador de memoria 164, pueden evitarse las penalizaciones de potencia y latencia.
En el otro extremo, si el enlace 190 se opera a alta velocidad (por ejemplo, WCK por encima de 1,6 Ghz), las posibilidades de que se produzcan errores de transmisión en el enlace 190 pueden ser tales que es poco probable que los datos no codificados se transmitan a través del enlace 190 con suficiente fiabilidad. En tales entornos operativos en los que los datos no codificados no pueden transmitirse fiablemente a través del enlace 190, la implementación de la protección contra errores del enlace puede mejorar la fiabilidad de la transmisión para justificar los costes (por ejemplo, gastos generales, potencia, etc.).
Por lo tanto, en un entorno de velocidad de enlace alta en el primer escenario de ejemplo, la protección contra errores de enlace puede habilitarse completamente. Por ejemplo, el modo de protección de enlace de alta velocidad puede especificar que todos los parámetros de protección - el parámetro de detección de errores de lectura, el parámetro de corrección de errores de lectura, el parámetro de detección de errores de escritura y el parámetro de corrección de errores de escritura - estén habilitados. Si este modo de protección de enlace de alta velocidad es el modo de protección de enlace aplicado, entonces para las operaciones de lectura, el codificador de memoria 162 puede habilitarse para codificar los DATOS DE LECTURA proporcionados a través del enlace 190, y el decodificador de anfitrión 124 puede habilitarse para decodificar los Da To S DE LECTURA configurados. En un aspecto, el decodificador de anfitrión 124 puede habilitarse para detectar si hay errores (por ejemplo, errores de bits) en los DATOS DE LECTURA codificados. Los DATOS DE LECTURA decodificados pueden proporcionarse a un solicitante si no se detectan errores. En otro aspecto, incluso cuando hay errores en los DATOS d E LECTURA codificados, el decodificador de anfitrión 124 puede habilitarse para corregir los errores de manera que los DATOS DE LECTURA corregidos pueden proporcionarse al solicitante. El decodificador de anfitrión 124 puede corregir hasta un cierto número - un número de umbral de lectura - de errores.
Para las operaciones de escritura cuando el modo de protección de enlace aplicado es el modo de protección de enlace de alta velocidad, el codificador de anfitrión 122 puede habilitarse para codificar los DATOS ESCRITOS proporcionados a través del enlace 190, y el decodificador de memoria 164 puede habilitarse para decodificar los DATOS ESCRITOS codificados de manera que los DATOS DE ESCRITURA decodificados se almacenan en la pluralidad de celdas de memoria de los bancos de memoria 170. En un aspecto, el decodificador de memoria 164 puede habilitarse para detectar si hay errores (por ejemplo, errores de bits) en los DATOS DE ESCRITURA codificados. Los DATOS DE ESCRITURA decodificados pueden almacenarse si no se detectan errores. En otro aspecto, incluso cuando se detectan errores, el decodificador de memoria 164 puede habilitarse para corregir los errores de manera que puedan almacenarse los DATOS DE ESCRITURA corregidos. El decodificador de memoria 164 puede corregir hasta un cierto número - un número de umbral de escritura - de errores. Los números de umbral de lectura y escritura pueden ser los mismos o diferentes.
En este primer escenario de ejemplo, se describen dos modos de protección de enlaces, por ejemplo, modos de protección de enlaces de baja y alta velocidad. En un aspecto, los modos de protección de enlaces pueden implementarse en el dispositivo de memoria 150 a través de registros de punto de ajuste de frecuencia (FSP). Luego, para el primer escenario de ejemplo, pueden usarse dos registros FSP, FSP[0] y FSP[1]. Los detalles sobre los registros FSP se proporcionarán a continuación cuando se describen las Figuras 2 y 3.
Mientras solo se discuten dos modos de protección de enlaces en el primer escenario de ejemplo, puede haber cualquier número de modos de protección de enlaces. A modo de ilustración, supongamos que, en un segundo escenario de ejemplo, hay tres modos de protección de enlaces: modos de protección de enlaces de baja, media y alta velocidad respectivamente, correspondientes a un intervalo de baja velocidad (por ejemplo, 20 Mhz < frecuencia WCK < 1,33 Ghz), un intervalo de velocidad media (por ejemplo, 1,33 Ghz < frecuencia WCK < 2,66 Ghz) y un intervalo de alta velocidad (por ejemplo, frecuencia de 2,66 Ghz < WCK < 3,2 Ghz).
Supongamos también que, para el modo de protección de enlace de baja velocidad en este segundo escenario de ejemplo, todos los parámetros de detección de errores de lectura, el parámetro de corrección de errores de lectura, el parámetro de detección de errores de escritura y el parámetro de corrección de errores de escritura se deshabilitan. Por lo tanto, cuando el enlace 190 opera a una velocidad dentro del intervalo de baja velocidad (por ejemplo, 1 Ghz), el modo de protección de enlace de baja velocidad se convierte en el modo de protección de enlace aplicado, y ninguno del codificador de anfitrión 122, el decodificador de anfitrión 124, la memoria el codificador 162 y el descodificador de memoria 164 se habilitan. Por lo tanto, los DATOS DE LECTURA y los DATOS DE ESCRITURA no codificados pueden transferirse a través del enlace 190 cuando se aplica el modo de protección de enlace de baja velocidad.
Supongamos además que, para el modo de protección de enlace de alta velocidad, todos los parámetros de detección de errores de lectura, el parámetro de corrección de errores de lectura, el parámetro de detección de errores de escritura y el parámetro de corrección de errores de escritura se habilitan. Por lo tanto, cuando el enlace 190 opera a una velocidad dentro del intervalo de alta velocidad (por ejemplo, 3 Ghz), el modo de protección de enlace de alta velocidad se convierte en el modo de protección de enlace aplicado, y todo el codificador de anfitrión 122, el decodificador de anfitrión 124, el codificador de memoria 162 y el decodificador de memoria 164 se habilitan para la detección y corrección. Por lo tanto, los DATOS DE LECTURA y los DATOS DE ESCRITURA codificados se transfieren a través del enlace 190 cuando se aplica el modo de protección de enlace de alta velocidad.
Como se describió anteriormente, los modos de protección de enlaces de baja y alta velocidad del segundo escenario de ejemplo son similares a los modos de protección de enlaces de baja y alta velocidad del primer escenario de ejemplo. Pero a diferencia del primer escenario de ejemplo, el segundo escenario de ejemplo también incluye un modo de protección de enlace de velocidad media en el que puede suponerse que el parámetro de detección de errores de lectura se deshabilita, el parámetro de corrección de errores de lectura se habilita, el parámetro de detección de errores de escritura deshabilitado, y el parámetro de detección de errores de escritura se habilita. Por tanto, cuando el enlace 190 opera a una velocidad dentro del intervalo de velocidad media (por ejemplo, 2 Ghz), el modo de protección del enlace de velocidad media se convierte en el modo de protección de enlace aplicado. En este modo, el codificador de memoria 162 codifica los DATOS DE LECTURA y el codificador de anfitrión 122 codifica los DATOS DE ESCRITURA. Complementariamente, el decodificador de anfitrión 124 corrige hasta el número de umbral de errores de bits de lectura en los DATOS DE LECTURA, y el decodificador de memoria 164 corrige hasta el número de umbral de escritura de errores de bits en los DATOS d E ESCRITURA.
Cuando se aplica el modo de protección de enlace de velocidad media, las latencias de lectura y escritura pueden aumentar en relación con el modo de protección de enlace de baja velocidad. El consumo de energía también puede ser mayor. Sin embargo, en relación con el modo de protección de enlace de alta velocidad, puede consumirse menos energía ya que la detección de errores se deshabilita.
Tenga en cuenta que la detección de errores puede separarse de la corrección de errores. Es decir, el parámetro de detección de errores de lectura puede habilitarse/deshabilitarse por separado del parámetro de corrección de errores de lectura. Del mismo modo, el parámetro de detección de errores de escritura puede habilitarse/deshabilitarse por separado del parámetro de corrección de errores de escritura. En resumen, cada parámetro de protección puede habilitarse y deshabilitarse de forma independiente. Como resultado, son posibles muchas combinaciones de niveles de habilitación del codificador de anfitrión 122, el decodificador de anfitrión 124, el codificador de memoria 162 y el decodificador de memoria 164, lo que permite ajustar la pluralidad de modos de protección de enlaces.
Tanto en el primer como en el segundo escenario de ejemplo, aplicar el modo de protección de enlace de baja velocidad implica deshabilitar todas las funciones de protección contra errores de enlace, y aplicar el modo de protección de enlace de alta velocidad implica habilitar todas las funciones de protección contra errores de enlace. Sin embargo, puede haber circunstancias en las que una protección mínima puede desearse, incluso a bajas velocidades de enlace. También puede haber circunstancias en las que la protección total no sea deseada, incluso a la velocidad de enlace más alta.
Por ejemplo, supongamos que, en un tercer escenario de ejemplo, hay tres modos de protección de enlaces y los modos de protección de enlaces de baja y media velocidad son los mismos que en el segundo escenario de ejemplo. Pero el modo de protección de enlace de alta velocidad difiere del segundo escenario de ejemplo en que el parámetro de detección de errores de escritura se deshabilita. Tal modo de protección de enlace puede aplicarse cuando se detectan múltiples errores de enlace en una operación de escritura. En tales situaciones, el anfitrión 110 (por ejemplo, SoC) puede reintentar la misma operación de escritura en el dispositivo de memoria 150 para recuperar los DATOS DE ESCRITURA originales. Desafortunadamente, esto puede requerir complejidades de implementación significativas e incurrir en grandes pérdidas de rendimiento por el reintento de escritura. En este caso, habilitar la corrección de errores de enlace solo para escrituras puede ser una compensación entre la pérdida de rendimiento por los reintentos de escritura y una mejor capacidad de protección contra errores de enlace.
Por supuesto, es completamente posible incorporar el modo de protección de enlace de alta velocidad del tercer escenario de ejemplo entre los modos de protección de enlaces de alta y media velocidad del segundo escenario de ejemplo. En general, el anfitrión 110 y el dispositivo de memoria 150 pueden configurarse para implementar una pluralidad de modos de protección de enlaces. Los modos de protección de enlaces pueden ser diferentes entre sí. Cada modo de protección de enlace puede corresponder a una velocidad de enlace. La velocidad de enlace correspondiente a un modo de protección de enlace puede ser diferente de las velocidades de enlace correspondientes a otros modos de protección de enlaces. En términos generales, cada modo de protección de enlace puede corresponder a un intervalo de velocidades de enlace, y el intervalo de velocidades de enlace correspondiente a un modo de protección de enlace puede no superponerse con los intervalos de velocidades de enlace correspondientes a otros modos de protección de enlaces.
Cada modo de protección de enlace puede incluir una pluralidad de parámetros de protección usados para definir un nivel particular de protección aplicado para proteger los DATOS DE LECTURA y LOS DATOS DE ESCRITURA transmitidos a través del enlace 190 de errores. Por ejemplo, cada modo de protección de enlace puede definir una combinación particular de niveles de habilitación del codificador de anfitrión 122, el decodificador de anfitrión 124, el codificador de memoria 162 y el decodificador de memoria 164. Además, cada modo de protección de enlace puede ser diferente de cada uno de los otros modos de protección de enlaces. Por ejemplo, la combinación de niveles de habilitación definidos para un modo de protección de enlace puede diferir de las combinaciones definidas para otros modos de protección de enlaces. De esta manera, cuando la velocidad de enlace cambia, por ejemplo, de una velocidad del primer enlace a una velocidad del segundo enlace, el modo de protección de enlace también puede cambiar dinámicamente, por ejemplo, de un modo de protección de primer enlace (correspondiente a la velocidad del primer enlace) a un segundo modo de protección de enlace (correspondiente a la velocidad del segundo enlace). Recuerde que en el dispositivo de memoria 150, pueden usarse los registros de punto de ajuste de frecuencia (FSP) para implementar los modos de protección de enlaces. El dispositivo de memoria 150 puede incluir una pluralidad de registros FSP correspondientes a la pluralidad de modos de protección de enlaces. Los registros FSP pueden ser, por ejemplo, registros u otros elementos de almacenamiento. Para el primer escenario de ejemplo, el dispositivo de memoria 150 puede incluir al menos dos registros FSP, FSP[0] (por ejemplo, para el modo de protección de enlace de baja velocidad) y FSP[1] (por ejemplo, para el modo de protección de enlace de alta velocidad). Para el segundo y tercer escenario de ejemplo, el dispositivo de memoria 150 puede incluir al menos tres registros FSP, FSP[0] (por ejemplo, para el modo de protección de enlace de baja velocidad), FSP[1] (por ejemplo, para el modo de protección de enlace de velocidad media) y FSP[2] (por ejemplo, para el modo de protección de enlace de alta velocidad).
En un aspecto, en la medida en que cada modo de protección de enlace corresponde a una velocidad o un intervalo de velocidades, una implicación es que cada registro FSP también corresponde a la velocidad de enlace o al intervalo de velocidades del enlace. Cada registro FSP puede reflejar la combinación de los parámetros de protección de detección de errores de lectura, corrección de errores de lectura, detección de errores de escritura y corrección de errores de escritura del modo de protección de enlace correspondiente. Por ejemplo, cada registro FSP puede comprender un bit de protección de pluralidad que incluyen un bit de detección de errores de lectura, un bit de corrección de errores de lectura, un bit de detección de errores de escritura y un bit de corrección de errores de escritura. El bit de detección de errores de lectura, cuando se establece/no se establece, puede indicar que el parámetro de detección de errores de lectura se habilita/deshabilita. El bit de corrección de errores de lectura, cuando se establece/no se establece, puede indicar que el parámetro de corrección de errores de lectura se habilita/deshabilita. El bit de detección de errores de escritura, cuando se establece/no se establece, puede indicar que el parámetro de detección de errores de escritura se habilita/deshabilita. El bit de corrección de errores de escritura, cuando se establece/no se establece, puede indicar que el parámetro de corrección de errores de escritura se habilita/deshabilita.
En un aspecto, la pluralidad de registros FSP puede implementarse a través de uno o más registros de modo (MR) 180-1 ... 180-M. Como se ve en la Figura 1, el dispositivo de memoria 150 puede incluir una pluralidad de registros de modo 180-1 ... 180-M. El modo registra 180-1 ... 180-M puede definir el comportamiento del dispositivo de memoria 150. Puede haber registros de modo M 180-1 ... 180-M, donde M puede ser cualquier número entero mayor que cero. Cada registro de modo 180-1 ... 180-M puede ser un tipo de escritura, un tipo de lectura o un tipo de lectura/escritura. El controlador de memoria 120 puede emitir un comando de escritura de registro de modo (MRW) para designar un registro de modo de escritura o de lectura/escritura particular junto con un valor de modo, y la interfaz de enlace de memoria 160 puede escribir el valor de modo recibido en el registro de modo designado 180­ 1... 180-M. El controlador de memoria 120 también puede emitir un comando de lectura de registro de modo (MRR) para designar un registro de modo de lectura o lectura/escritura en particular, y la interfaz de enlace de memoria 160 puede leer desde el registro de modo designado 180-1 ... 180-M y proporcionar el valor de lectura al controlador de memoria 120.
La Figura 2 ilustra un ejemplo de un registro de modo, como uno de los registros de modo 180-1 ... 180-M, que puede usarse para implementar el registro FSP. En este ejemplo, se supone que el registro de modo para el registro FSP comprende ocho bits de operando (OP) en los que los bits OP[3], OP[2], OP[1] y OP[0] respectivamente se usan para implementar el bit de detección de errores de lectura, bit de corrección de errores de lectura, bit de detección de errores de escritura y bit de corrección de errores de escritura para reflejar los parámetros de protección. Para cada registro de modo usado para implementar el registro FSP, el controlador de memoria 120 puede emitir un comando MRW junto con un valor de modo correspondiente. A su vez, la interfaz de enlace de memoria 160 puede escribir el valor de modo correspondiente en ese registro de modo. De esta manera, pueden establecerse/no establecerse diferentes combinaciones del bit de detección de errores de lectura, el bit de corrección de errores de lectura, el bit de detección de errores de escritura y el bit de corrección de errores de escritura para reflejar los diferentes modos de protección de enlaces.
La Figura 3 ilustra un ejemplo de configuración de los registros FSP para diferentes velocidades de enlace. En este ejemplo particular, se usan tres registros de modo para implementar los tres registros FSP, FSP[0], FSP[1] y FSP[2]. Las configuraciones de estos FSP reflejan el tercer escenario de ejemplo descrito anteriormente.
La Figura 4 ilustra un diagrama de flujo de un procedimiento de ejemplo 400 que se debe realizar para cambiar dinámicamente el modo de protección del enlace en el subsistema de memoria 100. En la Figura 4, el anfitrión 110 puede realizar los bloques pares 410 - 430, y el dispositivo de memoria 150 puede realizar los bloques impares 415 -435. En el bloque 410, el anfitrión 110 (por ejemplo, el controlador de memoria 120) puede emitir los comandos MRW junto con los valores de modo al dispositivo de memoria 150, por ejemplo, a través del enlace 190. En el bloque 415, el dispositivo de memoria 150 (por ejemplo, la interfaz de enlace de memoria 160) puede programar los registros de modo 180 usados para implementar los registros FSP con los valores de modo recibidos del anfitrión 110. En el bloque 420, el anfitrión 110 puede notificar al dispositivo de memoria 150 del modo de protección de enlace que se aplicará. En un aspecto, cuando la velocidad de enlace cambia de la velocidad del primer enlace a la velocidad del segundo enlace, el anfitrión 110 puede indicar al dispositivo de memoria 150 del cambio en el modo de protección del enlace que se aplicará desde el primer modo de protección del enlace al segundo modo de protección del enlace. Por ejemplo, el anfitrión 110 puede indicar al dispositivo de memoria 150 el registro FSP actual que corresponde al segundo modo de protección de enlace. En el bloque 425, el dispositivo de memoria 150 puede aplicar el registro FSP actual. En los bloques 430 y 435, el anfitrión 110 y el dispositivo de memoria 150 pueden coordinarse para realizar las operaciones de lectura y escritura de acuerdo con el segundo modo de protección de enlace.
La Figura 5 ilustra un diagrama de flujo de un procedimiento de ejemplo 500 para realizar la operación de lectura. El anfitrión 110 puede realizar los bloques pares 510 - 580, y el dispositivo de memoria 150 puede realizar los bloques impares 515 - 555. En el bloque 510, el controlador de memoria 120 emite el comando de LECTURA al dispositivo de memoria 150 a través del enlace 190. Por ejemplo, el controlador de memoria 120 puede reaccionar a una solicitud de lectura de un solicitante (por ejemplo, DSP, GPU, CPU, etc.). Posteriormente, en el bloque 520, el controlador de memoria 120 recibe los DATOS DE LECTURA del dispositivo de memoria 150 a través del enlace 190.
Entre los bloques 510 y 520, la interfaz de enlace de memoria 160 recibe el comando de LECTURA en el bloque 515. En el bloque 525, la interfaz de enlace de memoria 160 puede recuperar los DATOS DE LECTURA de la pluralidad de celdas de memoria. En el bloque 535, el dispositivo de memoria 150 puede determinar si deben codificarse los DATOS DE LECTURA. En un aspecto, los DATOS DE LECTURA pueden codificarse cuando se establecen uno o ambos bits de detección de errores de lectura y el bit de corrección de errores de lectura del registro FSP actual. Esto puede considerarse equivalente a determinar la codificación de los DATOS DE LECTURA cuando uno o ambos del parámetro de detección de errores de lectura y el parámetro de corrección de errores de lectura del modo de protección de enlace aplicado se habilitan.
Si se determina que la codificación de los DATOS DE LECTURA no es necesaria (por ejemplo, si los bits de protección de detección de errores de lectura y corrección de errores de lectura no se establecen (es decir, deshabilitados)), entonces en el bloque 555, la interfaz de enlace de memoria 160 puede enviar los DATOS DE LECTURA recuperados a través del enlace 190 sin cifrado. Por otro lado, si se determina que los DATOS DE LECTURA deben codificarse (por ejemplo, si se establecen uno o ambos bits de protección (es decir, habilitados)), entonces en el bloque 545, el codificador de memoria 162 puede codificar los DATOS DE LECTURA recuperados, y entonces en el bloque 555, la interfaz de enlace de memoria 160 puede enviar los DATOS DE LECTURA codificados a través del enlace 190.
De vuelta en el lado del anfitrión, en el bloque 530, el anfitrión 110 puede determinar si los DATOS DE LECTURA recibidos a través del enlace 190 deben decodificarse. Por ejemplo, dado que el dispositivo de memoria 150 codifica los DATOS DE LECTURA cuando uno o ambos parámetros de detección de errores de lectura y corrección de errores de lectura del modo de protección de enlace aplicado se habilitan, el anfitrión 110 puede determinar que los DATOS DE LECTURA deben decodificarse también cuando uno o ambos parámetros de detección de errores de lectura y corrección de errores de lectura del modo de protección de enlace aplicado se habiliten. Cuando se determina que los DATOS DE LECTURA recibidos no están codificados (por ejemplo, si ambos parámetros se deshabilitan), el controlador de memoria 120 puede proporcionar los DATOS DE LECTURA sin descifrado al solicitante en el bloque 580.
Sin embargo, si en el bloque 530 se determina que los DATOS DE LECTURA recibidos se codifican y, por lo tanto, deben decodificarse, entonces en el bloque 540, el decodificador de anfitrión 124 puede decodificar los DATOS DE LECTURA recibidos. Desde el bloque 540, si el parámetro de detección de errores de lectura del modo de protección de enlace aplicado se habilita, el procedimiento puede proceder al bloque 550. En este bloque, el anfitrión 110 puede detectar si hay algún error en los DATOS DE LECTURA recibidos. Si no se detectan errores, el controlador de memoria 120 puede proporcionar los DATOS DE LECTURA decodificados al solicitante en el bloque 580.
Sin embargo, si se detecta algún error en el bloque 550, pueden tomarse otras opciones (por ejemplo, la rama "S" que sale de la parte superior). Una opción puede ser no hacer nada, y el solicitante puede intentar la misma solicitud nuevamente después de un tiempo de espera. Otra opción puede ser informar de un error al solicitante. Otra opción más puede hacer que el controlador de memoria 120 reenvíe el comando de LECTURA al dispositivo de memoria 150. Estos son simplemente ejemplos, y no pretenden ser exhaustivos.
Alternativamente desde el bloque 540, si el parámetro de corrección de errores de lectura del modo de protección de enlace aplicado se habilita, entonces el procedimiento 500 puede proceder al bloque 560. En este bloque, el decodificador de anfitrión 124 puede corregir cualquier error que pueda estar presente en los DATOS DE LECTURA. En un aspecto, cabe señalar que no es necesario determinar si hay errores antes de aplicar un procedimiento de corrección. Es decir, el procedimiento de corrección puede ser tal que no introduzca errores adicionales. Por lo tanto, unos DATOS DE LECTURA libre de errores pueden permanecer libre de errores después de aplicar el procedimiento de corrección.
En el bloque 570, el anfitrión 110 puede determinar si los DATOS DE LECTURA se han corregido por completo. Por ejemplo, puede haber un límite en la cantidad de errores de bits que el decodificador de anfitrión 124 puede corregir. En otras palabras, el decodificador de anfitrión 124 puede ser capaz de corregir hasta un número de errores de bits de "umbral de lectura" en los DATOS DE LECTURA. Si se determina que los DATOS DE LECTURA se han corregido (por ejemplo, el número de errores es menor que el número de umbral de lectura), entonces en el bloque 580, el controlador de memoria 120 puede proporcionar los DATOS DE LECTURA corregidos al solicitante.
Sin embargo, si se determina que los DATOS DE LECTURA no se ha corregido completamente (por ejemplo, el número de error puede exceder el número de umbral de lectura) en el bloque 570, entonces pueden tomarse otras opciones (por ejemplo, rama "N" que sale del lado izquierdo). Las opciones pueden ser similares a las opciones enumeradas con referencia al bloque 550.
En otra alternativa del bloque 540, pueden habilitarse los parámetros de protección de detección de errores de lectura como de corrección de errores de lectura. Dado que el parámetro de detección de errores de lectura se habilita, el procedimiento puede proceder al bloque 550 en el que el anfitrión 110 puede detectar si hay algún error en los DATOS DE LECTURA recibidos. Como se describió anteriormente, el controlador de memoria 120 puede proporcionar los DATOS DE LECTURA decodificados al solicitante en el bloque 580 cuando no se detectan errores en el bloque 550. Sin embargo, en este caso, si se detectan errores en el bloque 550, el procedimiento puede proceder al bloque 560 en el que el decodificador de anfitrión 124 puede corregir los errores (por ejemplo, hasta el número de umbral de lectura). Esto se debe a que el parámetro de protección de corrección de errores de lectura también se habilita.
La Figura 6 ilustra un diagrama de flujo de un procedimiento de ejemplo 600 para realizar la operación de escritura. El anfitrión 110 puede realizar los bloques pares 610 - 640, y el dispositivo de memoria 150 puede realizar los bloques impares 615 - 685. En el bloque 610, el controlador de memoria 120 emite el comando de ESCRITURA al dispositivo de memoria 150 a través del enlace 190. Por ejemplo, el controlador de memoria 120 puede reaccionar a una solicitud de escritura de un solicitante (por ejemplo, dSp , GPU, CPU, etc.).
En el bloque 620, el anfitrión 110 puede determinar si los DATOS DE ESCRITURA (por ejemplo, también recibidos en la solicitud de escritura del solicitante) deben codificarse antes de que se proporcionen al dispositivo de memoria 150. En un aspecto, puede determinarse que los DATOS DE ESCRITURA deben codificarse cuando uno o ambos parámetros de detección de errores de escritura y corrección de errores de escritura del modo de protección de enlace aplicado se habilitan.
Si se determina que la codificación de los DATOS DE ESCRITURA no es necesaria (por ejemplo, si los parámetros de protección de detección de errores de lectura y corrección de errores de lectura se deshabilitan), entonces en el bloque 640, la interfaz de enlace de memoria 160 puede enviar los DATOS DE ESCRITURA a través del enlace 190 sin cifrado. Por otro lado, si se determina que los DATOS DE ESCRITURA deben codificarse (por ejemplo, si uno o ambos parámetros de protección están habilitados), entonces en el bloque 630, el codificador de anfitrión 122 puede codificar los DATOS De ESCRITURA, y entonces en el bloque 640, la interfaz de enlace de anfitrión 130 puede enviar los DATOS DE ESCRITURA codificados a través del enlace 190.
En los bloques 615 y 625, la interfaz de enlace de memoria 160 recibe respectivamente el comando de ESCRITURA y los DATOS DE ESCRITURA del anfitrión 110 a través del enlace 190. En el bloque 635, el dispositivo de memoria 150 puede determinar si los DATOS DE ESCRITURA recibidos a través del enlace 190 deben decodificarse. Por ejemplo, dado que el anfitrión 110 codifica los DATOS DE ESCRITURA cuando uno o ambos parámetros de detección de errores de escritura y corrección de errores de escritura del modo de protección de enlace aplicado se habilitan, el dispositivo de memoria 150 puede determinar que los DATOS DE ESCRITURA recibidos debe decodificarse también cuando uno o ambos parámetros de detección de errores de escritura y corrección de errores de escritura del modo de protección de enlace aplicado se habilitan. Cuando se determina que los DATOS DE ESCRITURA recibidos no están codificados, la interfaz de enlace de memoria 160 puede almacenar los DATOS DE ESCRITURA en la pluralidad de celdas de memoria en el bloque 685.
Sin embargo, si en el bloque 635, se determina que los DATOS DE ESCRITURA recibidos se codifican y, por lo tanto, deben decodificarse, entonces en el bloque 645, el decodificador de memoria 164 puede decodificar los DATOS DE ESCRITURA recibidos. Desde el bloque 645, si el parámetro de detección de errores de escritura del modo de protección de enlace aplicado se habilita, el procedimiento puede proceder al bloque 655. En este bloque, el dispositivo de memoria 150 puede determinar si hay algún error en los DATOS DE ESCRITURA recibidos. Si no se detectan errores, la interfaz de enlace de memoria 160 puede almacenar los DATOS DE ESCRITURA decodificados en la pluralidad de celdas de memoria en el bloque 685.
Sin embargo, si se detecta algún error en el bloque 655, pueden tomarse otras opciones (por ejemplo, la rama "S" que sale de la parte superior). Una opción puede ser no hacer nada y el anfitrión 110 puede volver a intentarlo después de un tiempo de espera. Otra opción puede ser informar de un error al anfitrión 110. Estos son simplemente ejemplos, y no pretenden ser exhaustivos.
Alternativamente desde el bloque 645, si el parámetro de corrección de errores de escritura del modo de protección de enlace aplicado se habilita, entonces el procedimiento 600 puede proceder al bloque 665. En este bloque, el decodificador de memoria 164 puede corregir cualquier error que pueda estar presente en los DATOS DE ESCRITURA. Una vez más, cabe señalar que no es necesario determinar si hay errores antes de aplicar un procedimiento de corrección.
En el bloque 675, el dispositivo de memoria 150 puede determinar si los DATOS DE ESCRITURA se han corregido por completo. Por ejemplo, el decodificador de memoria 164 puede ser capaz de corregir hasta un número de errores de bits de "umbral de escritura" en los DATOS DE ESCRITURA. Si se determina que se han corregido los DATOS DE ESCRITURA (por ejemplo, el número de errores es menor que el número de umbral de escritura), entonces en el bloque 685, la interfaz de enlace de memoria 160 puede almacenar los DATOS DE ESCRITURA corregidos en la pluralidad de celdas de memoria.
Sin embargo, si se determina que los DATOS DE ESCRITURA no se han corregido completamente (por ejemplo, el número de error puede exceder el número de umbral de escritura) en el bloque 675, entonces pueden tomarse otras opciones (por ejemplo, rama "N" que sale del lado derecho). Las opciones pueden ser similares a las opciones enumeradas con referencia al bloque 655.
En otra alternativa del bloque 645, puede asumirse que están habilitados tanto los parámetros de protección de detección de errores de escritura como los de corrección de errores de escritura. Dado que el parámetro de detección de errores de escritura se habilita, el procedimiento puede proceder al bloque 655 en el que el dispositivo de memoria 150 puede detectar si hay algún error en los DATOS DE ESCRITURA recibidos, y la interfaz de enlace de memoria 160 puede almacenar los DATOS DE ESCRITURA decodificados en el bloque 685 cuando no se detectan errores en el bloque 655. Sin embargo, en este caso, si se detectan errores en el bloque 655, el procedimiento puede proceder al bloque 665 en el que el decodificador de memoria 164 puede corregir los errores ya que el parámetro de protección de corrección de errores de escritura también se habilita.
La Figura 7 ilustra varios dispositivos electrónicos que pueden integrarse con el mencionado subsistema de memoria 100. Por ejemplo, un dispositivo de teléfono móvil 702, un dispositivo de ordenador portátil 704, un dispositivo terminal 706 así como dispositivos portátiles, sistemas portátiles, que requieren un factor de forma pequeño, perfil extremadamente bajo, pueden incluir un dispositivo/paquete 700 que incorpora el subsistema de memoria 100 como se describe en la presente memoria. El dispositivo/paquete 700 puede ser, por ejemplo, cualquiera de circuitos integrados, chips, dispositivos integrados, paquetes de dispositivos integrados, dispositivos de circuitos integrados, paquetes de dispositivos, paquetes de circuitos integrados (IC), dispositivos de paquete en paquete, dispositivos de sistema en paquete descritos en la presente memoria. Los dispositivos 702, 704, 706 ilustrados en la Figura 7 son meramente ilustrativos. Otros dispositivos electrónicos también pueden incluir el dispositivo/paquete 700 que incluye, pero no se limita a, un grupo de dispositivos (por ejemplo, dispositivos electrónicos) que incluyen dispositivos móviles, unidades de sistemas de comunicación personal (PCS) de mano, unidades de datos portátiles tales como asistentes digitales personales, dispositivos habilitados para el sistema de posicionamiento global (GPS), dispositivos de navegación, decodificadores, reproductores de música, reproductores de video, unidades de entretenimiento, unidades de datos de ubicación fija tales como equipos de lectura de medidores, dispositivos de comunicación, teléfonos inteligentes, tabletas, ordenadores, dispositivos portátiles, servidores, enrutadores, dispositivos electrónicos implementados en vehículos automotrices (por ejemplo, vehículos autónomos), o cualquier otro dispositivo que almacene o recupere datos o instrucciones informáticas, o cualquiera combinación de los mismos.
Los expertos en la técnica apreciarán que la información y las señales pueden representarse mediante el uso de cualquiera de una variedad de diferentes tecnologías y técnicas. Por ejemplo, los datos, las instrucciones, los comandos, la información, las señales, los bits, los símbolos, y los chips que pueden referenciarse a lo largo de la descripción anterior pueden representarse por tensiones, corrientes, ondas electromagnéticas, campos o partículas magnéticas, campos o partículas ópticas, o cualquier combinación de los mismos.
Además, los expertos en la técnica apreciarán que los diversos bloques lógicos ilustrativos, módulos, circuitos, y algoritmos descritos en relación con los ejemplos divulgados en la presente memoria pueden implementarse como hardware electrónico, software informático o combinaciones de ambos. Para ilustrar claramente esta intercambiabilidad de hardware y software, varios componentes ilustrativos, bloques, módulos, circuitos, y procedimientos se han descrito anteriormente en general en términos de su funcionalidad. Si tal funcionalidad se implementa como hardware o software depende de la solicitud particular y de las restricciones de diseño impuestas en el sistema general. Los artesanos expertos pueden implementar la funcionalidad descrita de diversos modos para cada solicitud particular, pero tales decisiones de implementación no deben interpretarse como que provocan una desviación del ámbito de la presente divulgación.
Los procedimientos, secuencias y/o algoritmos descritos en relación con los ejemplos divulgados en la presente memoria pueden incorporarse directamente en el hardware, en un módulo de software ejecutado por un procesador, o en una combinación de los dos. Un módulo de software puede residir en la memoria rAm , memoria flash, memoria ROM, memoria EPROM, memoria EEPROM, registros, disco duro, disco extraíble, CD-ROM, o en cualquier otra forma de medio de almacenamiento conocido en la técnica. Un medio de almacenamiento ilustrativo se acopla con el procesador de manera que el procesador puede leer información y escribir la información en el medio de almacenamiento. Como alternativa, el medio de almacenamiento puede ser integral al procesador.
En consecuencia, un aspecto puede incluir un medio legible por ordenador que incorpore cualquiera de los dispositivos descritos anteriormente. En consecuencia, el ámbito de la materia divulgada no se limita a ejemplos ilustrativos y se incluyen todos los medios para realizar la funcionalidad descrita en la presente memoria.
Si bien la divulgación anterior muestra ejemplos ilustrativos, cabe señalar que pueden realizarse varios cambios y modificaciones en la presente memoria sin apartarse del ámbito de la materia divulgada como se define en las reivindicaciones anexas. Las funciones, procedimientos y/o acciones de las reivindicaciones del procedimiento de acuerdo con los ejemplos descritos de en la presente memoria no necesitan realizarse en ningún orden particular. Además, aunque los elementos de la materia divulgada pueden describirse o reivindicarse en singular, se contempla el plural a menos que se indique explícitamente la limitación al singular.

Claims (15)

REIVINDICACIONES
1. Un aparato (100), que comprende:
un dispositivo de memoria (150) configurado para comunicarse con un anfitrión (110) a través de un enlace (190), en el que el dispositivo de memoria comprende:
una pluralidad de celdas de memoria (170); y
una interfaz de enlace de memoria (160) configurada para
recibir un comando de LECTURA del anfitrión a través del enlace, recuperar los DATOS DE LECTURA de la pluralidad de celdas de memoria y proporcionar DATOS DE LECTURA al anfitrión a través del enlace de acuerdo con un modo de protección de enlace aplicado en respuesta al comando de LECTURA, o
recibir un comando de ESCRITURA del anfitrión a través del enlace, recibir los DATOS DE ESCRITURA del anfitrión a través del enlace y almacenar los DATOS DE ESCRITURA en la pluralidad de celdas de memoria de acuerdo con el modo de protección de enlace aplicado en respuesta al comando de ESCRITURA, y
en el que el dispositivo de memoria se configura para
implementar una pluralidad de modos de protección de enlaces que incluyen un primer modo de protección de enlace y un segundo modo de protección de enlace, en el que los modos de protección de enlaces se aplican para proteger en diferentes niveles de protección los DATOS DE LECTURA o los DATOS DE ESCRITURA transmitidos a través del enlace de errores, y
en el que el aparato se caracteriza porque el dispositivo de memoria se configura para
cambiar de aplicar el primer modo de protección de enlace a aplicar el segundo modo de protección de enlace en respuesta a una notificación de cambio de modo de protección de enlace recibida del anfitrión, en el que la notificación de cambio de modo de protección de enlace recibida del anfitrión es una notificación de cambio de velocidad de enlace.
2. El aparato de la reivindicación 1, en el que el dispositivo de memoria comprende además:
un codificador de memoria (162), si se habilita, configurado para codificar los DATOS DE LECTURA recuperados de la pluralidad de celdas de memoria de manera que los DATOS DE LECTURA codificados se proporcionen al anfitrión a través del enlace al recibir el comando de LECTURA, o
un decodificador de memoria (164), si se habilita, configurado para decodificar los DATOS DE ESCRITURA recibidos del anfitrión a través del enlace de manera que los DATOS DE ESCRITURA decodificados se almacenen en la pluralidad de celdas de memoria al recibir el comando de ESCRITURA,
en el que el dispositivo de memoria se configura para controlar un nivel de habilitación del codificador de memoria y un nivel de habilitación del decodificador de memoria en base al modo de protección de enlace aplicado.
3. El aparato de la reivindicación 2, que comprende además:
una pluralidad de registros de punto de ajuste de frecuencia, FSP, correspondientes a la pluralidad de modos de protección de enlaces,
en el que cada registro FSP indica el nivel de habilitación del codificador de memoria o el nivel de habilitación del decodificador de memoria.
4. El aparato de la reivindicación 3,
en el que el dispositivo de memoria comprende además uno o más registros de modo (180) usados para implementar la pluralidad de registros FSP,
en el que la interfaz de enlace de memoria se configura para recibir, para cada registro de modo de la pluralidad de registros FSP, un comando de escritura de registro de modo (MRW) junto con un valor de modo para ese registro de modo, y
en el que el dispositivo de memoria se configura para programar la pluralidad de registros FSP programando los registros de modo de la pluralidad de registros FSP de acuerdo con los valores de modo recibidos.
5. El aparato de la reivindicación 3,
en el que cada registro FSP comprende un bit de detección de errores de lectura, un bit de corrección de errores de lectura, un bit de detección de errores de escritura y un bit de corrección de errores de escritura,
en el que un registro FSP aplicado es el registro fSp correspondiente al modo de protección de enlace aplicado, y en el que el codificador de memoria se configura para codificar los DATOS DE LECTURA recuperados de la pluralidad de celdas de memoria si se establecen uno o ambos del bit de detección de errores de lectura y el bit de corrección de errores de lectura del registro FSP aplicado, o
en el que el decodificador de memoria se configura para
detectar si los DATOS DE ESCRITURA recibidos del anfitrión tienen uno o más errores de bits si se establece el bit de detección de errores de escritura del registro FSP aplicado, y
corregir hasta un número de umbral de escritura de errores de bit en los DATOS DE ESCRITURA recibidos del anfitrión de manera que los DATOS DE ESCRITURA corregidos se almacenen en la pluralidad de celdas de memoria si se establece el bit de corrección de errores de escritura del registro FSP aplicado.
6. El aparato de la reivindicación 5,
en el que la pluralidad de registros FSP incluye registros FSP de alta y baja velocidad correspondientes a velocidades de enlace altas y bajas, la velocidad de enlace alta que es más rápida que la velocidad de enlace baja, en el que en el registro FSP de alta velocidad,
se establecen uno o ambos bits de detección de errores de lectura y el bit de corrección de errores de lectura, y se establecen tanto el bit de detección de errores de escritura como el bit de corrección de errores de escritura, y en el que en el registro FSP de baja velocidad, no se establecen todos los bits de detección de errores de lectura, el bit de corrección de errores de lectura, el bit de detección de errores de escritura y el bit de corrección de errores de escritura.
7. El aparato de la reivindicación 6,
en el que la pluralidad de registros FSP incluye además un registro FSP de velocidad media correspondiente a una velocidad de enlace media, la velocidad de enlace media que más rápida que la velocidad de enlace baja y más lenta que la velocidad de enlace alta, y
en el que el registro FSP de velocidad media,
se establece uno de los bits de detección de errores de lectura y el bit de corrección de errores de lectura, o se establece uno de los bits de detección de errores de escritura y el bit de corrección de errores de escritura.
8. El aparato de la reivindicación 3,
en el que la pluralidad de registros FSP corresponde a una pluralidad de intervalos de velocidad de enlace, y en el que el intervalo de velocidad de enlace correspondiente a cada registro FSP no se superpone con los intervalos de velocidad de enlace de cualquier otro registro FSP.
9. Un aparato (100), que comprende:
un anfitrión (110) configurado para comunicarse con un dispositivo de memoria (150) a través de un enlace (190), en el que el anfitrión comprende:
una interfaz de enlace de anfitrión (130) configurada para interactuar con el enlace; y
un controlador de memoria (120) configurado para comunicarse con el dispositivo de memoria a través de la interfaz de enlace de anfitrión,
en el que el controlador de memoria se configura para
emitir un comando de LECTURA al dispositivo de memoria a través del enlace, recibir los DATOS DE LECTURA del dispositivo de memoria a través del enlace de acuerdo con un modo de protección de enlace aplicado al emitir el comando de LECTURA, o
emitir un comando de ESCRITURA al dispositivo de memoria a través del enlace, y proporcionar los DATOS DE ESCRITURA al dispositivo de memoria a través del enlace de acuerdo con el modo de protección de enlace aplicado al emitir el comando de ESCRITURA, y
en el que el anfitrión se configura para
implementar una pluralidad de modos de protección de enlaces que incluyen un primer modo de protección de enlace y un segundo modo de protección de enlace, en el que los modos de protección de enlaces se aplican para proteger en diferentes niveles de protección los DATOS DE LECTURA o los DATOS DE ESCRITURA transmitidos a través del enlace de errores, y
en el que el aparato se caracteriza porque el anfitrión se configura para
cambiar de aplicar el primer modo de protección de enlace a aplicar el segundo modo de protección de enlace en respuesta a un cambio de velocidad de enlace.
10. El aparato de la reivindicación 1 o la reivindicación 9, en el que la pluralidad de modos de protección de enlaces no incluye ninguna protección de enlace.
11. El aparato de la reivindicación 9, en el que el controlador de memoria se configura para proporcionar al dispositivo de memoria una notificación del cambio en el modo de protección de enlace que se aplicará desde el primer modo de protección de enlace al segundo modo de protección de enlace.
12. El aparato de la reivindicación 9, en el que el anfitrión comprende además:
un codificador de anfitrión (122), si está habilitado, configurado para codificar los DATOS DE ESCRITURA de manera que los DATOS DE ESCRITURA codificados se proporcionen al dispositivo de memoria a través del enlace al emitir el comando de ESCRITURA, o
un decodificador de anfitrión (124), si está habilitado, configurado para decodificar los DATOS DE LECTURA recibidos del dispositivo de memoria a través del enlace al emitir el comando de LECTURA,
en el que el anfitrión se configura para controlar un nivel de habilitación del codificador de anfitrión o un nivel de habilitación del decodificador de anfitrión en base al modo de protección de enlace aplicado.
13. El aparato de la reivindicación 9,
en el que el dispositivo de memoria se configura para implementar la pluralidad de modos de protección de enlaces a través de una pluralidad de registros de modo, y
en el que el controlador de memoria se configura para emitir, para cada registro de modo usado para implementar la pluralidad de modos de protección de enlaces, un comando de escritura de registro de modo (m Rw ) con un valor de modo para ese registro de modo en el dispositivo de memoria.
14. Un procedimiento de un aparato, comprendiendo el aparato un anfitrión y un dispositivo de memoria configurado para la comunicación entre sí a través de un enlace, comprendiendo el procedimiento:
cambiar el aparato de aplicar un primer modo de protección de enlace a aplicar un segundo modo de protección de enlace en respuesta a un cambio de velocidad de enlace; y
emitir un comando de LECTURA por parte del anfitrión al dispositivo de memoria a través del enlace, y proporcionar DATOS DE LECTURA por el dispositivo de memoria al anfitrión a través del enlace de acuerdo con un modo de protección de enlace aplicado en respuesta al comando de LECTURA, o
emitir un comando de ESCRITURA por parte del anfitrión al dispositivo de memoria a través del enlace, y proporcionar DATOS DE ESCRITURA por parte del anfitrión al dispositivo de memoria a través del enlace de acuerdo con el modo de protección de enlace aplicado al emitir el comando de ESCRITURA,
en el que el aparato se configura para implementar una pluralidad de modos de protección de enlaces que incluyen los modos de protección de enlaces primero y segundo, y
en el que los modos de protección de enlaces se aplican para proteger en diferentes niveles de protección los DATOS DE LECTURA o los DATOS DE ESCRITURA transmitidos a través del enlace de errores.
15. Un sistema, que comprende:
un primer aparato de acuerdo con la reivindicación 1 y un segundo aparato de acuerdo con la reivindicación 9, en el que el anfitrión del segundo aparato y el dispositivo de memoria del primer aparato se configuran para comunicarse entre sí a través del enlace.
ES18749640T 2017-08-21 2018-06-28 Protección contra errores de enlace dinámico en sistemas de memoria Active ES2895367T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/682,533 US10387242B2 (en) 2017-08-21 2017-08-21 Dynamic link error protection in memory systems
PCT/US2018/039978 WO2019040183A1 (en) 2017-08-21 2018-06-28 PROTECTION AGAINST DYNAMIC LINK ERRORS IN MEMORY SYSTEMS

Publications (1)

Publication Number Publication Date
ES2895367T3 true ES2895367T3 (es) 2022-02-21

Family

ID=63080492

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18749640T Active ES2895367T3 (es) 2017-08-21 2018-06-28 Protección contra errores de enlace dinámico en sistemas de memoria

Country Status (7)

Country Link
US (2) US10387242B2 (es)
EP (1) EP3673374B1 (es)
CN (2) CN116913358A (es)
ES (1) ES2895367T3 (es)
SG (1) SG11202000385TA (es)
TW (1) TWI787299B (es)
WO (1) WO2019040183A1 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387242B2 (en) 2017-08-21 2019-08-20 Qualcomm Incorporated Dynamic link error protection in memory systems
US11537464B2 (en) * 2019-06-14 2022-12-27 Micron Technology, Inc. Host-based error correction
KR20210014473A (ko) * 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 라이트 방법
US11372717B2 (en) * 2019-08-30 2022-06-28 Qualcomm Incorporated Memory with system ECC
US11728003B2 (en) * 2020-05-12 2023-08-15 Qualcomm Incorporated System and memory with configurable error-correction code (ECC) data protection and related methods

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2765425B1 (fr) 1997-06-26 2000-06-09 Bull Sa Procede de detection d'erreurs sur une liaison serie d'un circuit integre et dispositif de mise en oeuvre du procede
US7028213B2 (en) * 2001-09-28 2006-04-11 Hewlett-Packard Development Company, L.P. Error indication in a raid memory system
US7180947B2 (en) 2003-03-31 2007-02-20 Planning Systems Incorporated Method and apparatus for a dynamic data correction appliance
KR100606577B1 (ko) 2004-07-29 2006-07-28 삼성전자주식회사 직렬 에이티에이 인터페이스의 데이터 전송속도 조절장치및 그 방법
US7831882B2 (en) 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
US7562285B2 (en) 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
US7774684B2 (en) 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
US8495467B1 (en) * 2009-06-30 2013-07-23 Micron Technology, Inc. Switchable on-die memory error correcting engine
US8255656B2 (en) 2009-09-15 2012-08-28 Phison Electronics Corp. Storage device, memory controller, and data protection method
US8510628B2 (en) * 2009-11-12 2013-08-13 Micron Technology, Inc. Method and apparatuses for customizable error correction of memory
WO2012109078A2 (en) 2011-02-08 2012-08-16 Lsi Corporation Selective enablement of operating modes or features via host transfer rate detection
US8607121B2 (en) * 2011-04-29 2013-12-10 Freescale Semiconductor, Inc. Selective error detection and error correction for a memory interface
US9306863B2 (en) 2013-12-06 2016-04-05 Intel Corporation Link transfer, bit error detection and link retry using flit bundles asynchronous to link fabric packets
US9747048B2 (en) 2014-06-02 2017-08-29 Micron Technology, Inc. Systems and methods for packing data in a scalable memory system protocol
KR102324769B1 (ko) * 2015-06-29 2021-11-10 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
CN112612731B (zh) * 2015-09-26 2024-09-03 英特尔公司 多芯片封装链路错误检测
US9965352B2 (en) 2015-11-20 2018-05-08 Qualcomm Incorporated Separate link and array error correction in a memory system
US10140175B2 (en) 2015-11-20 2018-11-27 Qualcomm Incorporated Protecting an ECC location when transmitting correction data across a memory link
US9940186B2 (en) 2015-12-22 2018-04-10 Nxp Usa, Inc. Memory controller and method of operating a memory controller
US10692555B2 (en) * 2016-06-29 2020-06-23 Samsung Electronics Co., Ltd. Semiconductor memory devices enabling read strobe mode and related methods of operating semiconductor memory devices
US10331517B2 (en) 2016-08-26 2019-06-25 Qualcomm Incorporated Link error correction in memory system
US10387242B2 (en) 2017-08-21 2019-08-20 Qualcomm Incorporated Dynamic link error protection in memory systems

Also Published As

Publication number Publication date
US10922168B2 (en) 2021-02-16
CN110998536B (zh) 2023-07-18
TW201923574A (zh) 2019-06-16
EP3673374B1 (en) 2021-09-29
WO2019040183A1 (en) 2019-02-28
TWI787299B (zh) 2022-12-21
EP3673374A1 (en) 2020-07-01
US20190056990A1 (en) 2019-02-21
SG11202000385TA (en) 2020-03-30
US20190324850A1 (en) 2019-10-24
US10387242B2 (en) 2019-08-20
CN116913358A (zh) 2023-10-20
CN110998536A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
ES2895367T3 (es) Protección contra errores de enlace dinámico en sistemas de memoria
TWI684102B (zh) 記憶體系統中的鏈路糾錯
CN109074851B (zh) 利用额外系统位的内部错误校验和校正(ecc)
US9965352B2 (en) Separate link and array error correction in a memory system
CN108351820B (zh) 在跨存储器链路传送纠正数据时保护ecc位置
EP2297641B1 (en) Efficient in-band reliability with separate cyclic redundancy code frames
US8832391B2 (en) Semiconductor device, controller associated therewith, system including the same, and methods of operation
US10061645B2 (en) Memory array and link error correction in a low power memory sub-system
US8645790B2 (en) Data processing device and method using error detection code, method of compensating for data skew, and semiconductor device having the data processing device
US11550659B2 (en) Controller and memory system
KR20160054395A (ko) 메모리 데이터 에러 정정 방법
KR20170050935A (ko) 온 칩 ecc 회로를 포함하는 메모리 장치 및 시스템
KR102638790B1 (ko) 반도체장치 및 반도체시스템
CN115525911A (zh) 存储器总线的完整性和数据加密(ide)
US9239755B2 (en) Semiconductor device and semiconductor system including the same
KR20180023079A (ko) 반도체시스템
TWI827138B (zh) 半導體儲存裝置