# LPDDR

LPDDR (abreviatura de Low-Power Double Data Rate), también conocida como Low-Power DDR SDRAM o LPDDR SDRAM, es un tipo de memoria de acceso aleatorio dinámico síncrona de doble velocidad de datos que consume menos energía y está destinada a dispositivos móviles. También se conoce como Mobile DDR y se abrevia como mDDR.
La LPDDR SDRAM moderna es distinta de la DDR SDRAM, con varias diferencias que hacen que la tecnología sea más apropiada para dispositivos móviles.

## Ancho de bus

Propiedades de las diferentes generaciones LP-DDR :
| LP-DDR | 1 | 1E | 2 | 2E | 3 | 3E | 4 | 4X | 5 |
| Reloj de matriz de memoria (MHz) | 200 | 266,7 | 200 | 266,7 | 200 | 266,7 | 200 | 266,7 | ? |
| Tamaño de captación previa | 2 n | 2 n | 4 n | 4 n | 8 n | 8 n | 16 n | 16 n | 16 n |
| Frecuencia de reloj del bus de E / S (MHz) | 200 | 266,7 | 400 | 533,3 | 800 | 1067 | 1600 | 2133 | 3200 |
| Tasa de transferencia de datos ( DDR ) (MT / s) | 400 | 533,3 | 800 | 1067 | 1600 | 2133 | 3200 | 4267 | 6400 |
| Voltaje (s) de suministro | 1,8 V | 1,8 V | 1,2, 1,8 V | 1,2, 1,8 V | 1,2, 1,8 V | 1,2, 1,8 V | 1,1, 1,8 V | 0,6, 1,1, 1,8 V | 0,5, 1,05, 1,8 V |
| Bus de comando / dirección | 19 bits, SDR | 19 bits, SDR | 10 bits, DDR | 10 bits, DDR | 10 bits, DDR | 10 bits, DDR | 6 bits, SDR | 6 bits, SDR | ? |
A diferencia de la SDRAM estándar, que se utiliza en dispositivos estacionarios y portátiles y normalmente se conecta a través de un bus de memoria de 64 bits de ancho, LPDDR también permite canales de 16 o 32 bits de ancho.
Las versiones "E" marcan versiones mejoradas de las especificaciones. Formalizan el overclocking de la matriz de memoria hasta 266,7 MHz para un aumento del rendimiento del 33%. Los módulos de memoria que implementan estas frecuencias más altas se utilizan en MacBooks y portátiles para juegos.
Al igual que con la SDRAM estándar, la mayoría de las generaciones duplican el tamaño de recuperación interna y la velocidad de transferencia externa. (DDR-4 y LPDDR-5 son las excepciones.

## Generaciones
### LPDDR(1)

La DDR original de bajo consumo (a veces llamada de forma retroactiva LPDDR1) es una forma ligeramente modificada de DDR SDRAM, con varios cambios para reducir el consumo total de energía. Lo más significativo es que la tensión de alimentación se reduce de 2,5 a 1,8 V. Los ahorros adicionales provienen de la actualización con compensación de temperatura (la DRAM requiere una actualización con menos frecuencia a bajas temperaturas), la actualización automática del arreglo parcial y un modo de "apagado profundo" que sacrifica todos los contenidos de la memoria. Además, los chips son más pequeños y utilizan menos espacio en la placa que sus equivalentes no móviles.
Samsung y Micron son dos de los principales proveedores de esta tecnología, que se utiliza en dispositivos de tableta y teléfono como el iPhone 3GS, iPad original, Samsung Galaxy Tab 7.0 y Motorola Droid X.

### LPDDR2

Un nuevo estándar JEDEC JESD209-2E define una interfaz DDR de bajo consumo más dramáticamente revisada. No es compatible con DDR1 o DDR2 SDRAM, pero puede adaptarse a:
* LPDDR2-S2: memoria de precarga 2n (como DDR1)
* LPDDR2-S4: memoria de precarga 4n (como DDR2)
* LPDDR2-N, Memoria no volátil (flash NAND).
Los estados de bajo consumo son similares a los de LPDDR básico, con algunas opciones adicionales de actualización parcial de la matriz. Los parámetros de temporización se especifican para LPDDR-200 a LPDDR-1066 (frecuencias de reloj de 100 a 533 MHz). Trabajando en 1.2 V, LPDDR2 multiplexa las líneas de control y dirección en un bus CA de doble velocidad de datos de 10 bits. Los comandos son similares a los de SDRAM normal, excepto por la reasignación de los códigos de operación de precarga y terminación en ráfaga:
Codificación de comandos LPDDR2/LPDDR3 :
| CK | CA0 (RAS) | CA1 (CAS) | CA2 (WE) | CA3 | CA4 | CA5 | CA6 | CA7 | CA8 | CA9 | Operation |
| ↗ | H | H | H | — | — | — | — | — | — | — | NOP |
| ↘ | — | — | — | — | — | — | — | — | — | — | | | NOP |
| ↗ | H | H | L | H | H | — | — | — | — | — | Precargar todos los bancos |
| ↘ | — | — | — | — | — | — | — | — | — | — | | | Precargar todos los bancos |
| ↗ | H | H | L | H | L | — | — | BA0 | BA1 | BA2 | Precargar un banco |
| ↘ | — | — | — | — | — | — | — | — | — | — | | | Precargar un banco |
| ↗ | H | H | L | H | A30 | A31 | A32 | BA0 | BA1 | BA2 | Preactivo (LPDDR2 solamente) |
| ↘ | A20 | A21 | A22 | A23 | A24 | A25 | A26 | A27 | A28 | A29 | Preactivo (LPDDR2 solamente) |
| ↗ | H | H | L | L | — | — | — | — | — | — | Término de ráfaga |
| ↘ | — | — | — | — | — | — | — | — | — | — | | | Término de ráfaga |
| ↗ | H | L | H | reservado | reservado | C1 | C2 | BA0 | BA1 | BA2 | Lectura (AP=auto-precarga) |
| ↘ | AP | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | Lectura (AP=auto-precarga) |
| ↗ | H | L | L | reservado | reservado | C1 | C2 | BA0 | BA1 | BA2 | Escritura (AP=auto-precarga) |
| ↘ | AP | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | Escritura (AP=auto-precarga) |
| ↗ | L | H | R8 | R9 | R10 | R11 | R12 | BA0 | BA1 | BA2 | Activar (R0–14=direccionamiento de fila) |
| ↘ | R0 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R13 | R14 | Activar (R0–14=direccionamiento de fila) |
| ↗ | L | H | A15 | A16 | A17 | A18 | A19 | BA0 | BA1 | BA2 | Activar (LPDDR2 solamente) |
| ↘ | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | Activar (LPDDR2 solamente) |
| ↗ | L | L | H | H | — | — | — | — | — | — | Actualizar tofos los bancos (LPDDR2-Sx solamente) |
| ↘ | — | — | — | — | — | — | — | — | — | — | | | Actualizar tofos los bancos (LPDDR2-Sx solamente) |
| ↗ | L | L | H | L | — | — | — | — | — | — | Refrescar un banco (direccionamiento round robin) |
| ↘ | — | — | — | — | — | — | — | — | — | — | | | Refrescar un banco (direccionamiento round robin) |
| ↗ | L | L | L | H | MA0 | MA1 | MA2 | MA3 | MA4 | MA5 | Modo de registro de lectura (MA0–7=direccionamiento) |
| ↘ | MA6 | MA7 | — | — | — | — | — | — | — | — | | Modo de registro de lectura (MA0–7=direccionamiento) |
| ↗ | L | L | L | L | MA0 | MA1 | MA2 | MA3 | MA4 | MA5 | Modo de registro de escritura (OP0–7=datos) |
| ↘ | MA6 | MA7 | OP0 | OP1 | OP2 | OP3 | OP4 | OP5 | OP6 | OP7 | Modo de registro de escritura (OP0–7=datos) |
El bit de dirección de columna C0 nunca se transfiere y se supone que es cero. Por lo tanto, las transferencias en ráfaga siempre comienzan en direcciones pares. LPDDR2 también tiene una selección de chip activo bajo (cuando está alto, todo es un NOP) y una señal CKE de activación de reloj, que funciona como SDRAM. También como SDRAM, el comando enviado en el ciclo en el que CKE se descarta primero, selecciona el estado de apagado:
* Si el chip está activo, se congela en su lugar.
* Si el comando es un NOP Sobrerrayado
* Si el comando es de actualización CA0-2 LLH, el chip entra en el estado de actualización automática.
* Si el comando es una terminación en ráfaga CA0-2 HHL, el chip entra en el estado de apagado profundo. Se requiere una secuencia de reinicio completa al salir.
Los registros de modo se han ampliado considerablemente en comparación con la SDRAM convencional, con un espacio de direcciones de 8 bits y la capacidad de leerlos. Aunque es más pequeño que una EEPROM de detección de presencia en serie, se incluye suficiente información para eliminar la necesidad de una. Dispositivos S2 menores de 4 Gbit y S4 menores de 1 Gbit tiene solo cuatro bancos. Ignoran la señal BA2 y no admiten la actualización por banco. Los dispositivos de memoria no volátil no utilizan los comandos de actualización y reasignan el comando de precarga para transferir los bits de dirección A20 y superiores. Los bits de orden inferior (A19 e inferiores) se transfieren mediante el comando Active siguiente. Esto transfiere la fila seleccionada de la matriz de memoria a uno de los búferes de datos de fila de 4 u 8 (seleccionados por los bits BA), donde se pueden leer mediante un comando de lectura. A diferencia de DRAM, los bits de la dirección del banco no forman parte de la dirección de memoria; cualquier dirección se puede transferir a cualquier búfer de datos de fila. Un búfer de datos de fila puede tener una longitud de 32 a 4096 bytes, según el tipo de memoria. Las filas de más de 32 bytes ignoran algunos de los bits de dirección de orden inferior en el comando Active. Las filas de menos de 4096 bytes ignoran algunos de los bits de dirección de orden superior en el comando . La memoria no volátil no admite el comando Write en búferes de datos de fila. Más bien, una serie de registros de control en una región de dirección especial admite comandos de lectura y escritura, que se pueden usar para borrar y programar la matriz de memoria.

### LPDDR3

En mayo de 2012, JEDEC publicó el estándar de dispositivo de memoria de bajo consumo JESD209-3.
En comparación con LPDDR2, LPDDR3 ofrece una mayor velocidad de datos, mayor ancho de banda y eficiencia energética, y mayor densidad de memoria. LPDDR3 alcanza una velocidad de datos de 1600 MT/s y utiliza nuevas tecnologías clave: nivelación de escritura y entrenamiento de comando/dirección, terminación opcional en la matriz (ODT) y capacitancia de E/S baja. LPDDR3 es compatible con los tipos de empaquetado en paquete (PoP) y discretos. La codificación de comandos es idéntica a LPDDR2, utilizando un bus CA de velocidad de datos doble de 10 bits. Sin embargo, el estándar solo especifica precarga DRAM 8n no incluye los comandos de memoria flash.
Los productos que utilizan LPDDR3 incluyen MacBook Air 2013, iPhone 5S, iPhone 6, Nexus 10, Samsung Galaxy S4 (GT-I9500) y Microsoft Surface Pro 3. LPDDR3 se generalizó en 2013, con 800 MHz DDR (1600 MT/s), que ofrece un ancho de banda comparable a la memoria SO_DIMM PC3-12800 en 2011 (12,8 GB/s de ancho de banda). Para lograr este ancho de banda, el controlador debe implementar la memoria de doble canal. Por ejemplo, este es el caso del Exynos 5 Dual y del 5 Octa.
Una versión "mejorada" de la especificación llamada LPDDR3e aumenta la velocidad de datos a 2133 MT/s. Samsung Electronics presentó los primeros módulos LPDDR3 a 20 nm capaces de transmitir datos a hasta 2133 MT/s, más del doble del rendimiento del LPDDR2 anterior, que solo es capaz de 800 MT/s. SoC de varios fabricantes también admiten RAM LPDDR3 a 800 MHz de forma nativa. Entre ellos se incluyen los Snapdragon 600 y 800,
Así como algunos SoC de las series Exynos y Allwinner.

### LPDDR4

El 14 de marzo de 2012, JEDEC organizó una conferencia para explorar cómo los requisitos futuros de los dispositivos móviles impulsarán los próximos estándares como LPDDR4. El 30 de diciembre de 2013, Samsung anunció que había desarrollado el primer LPDDR4 de clase 8 gibibit (1 GiB) de 20 nm capaz de transmitir datos a 3200 MT/s, lo que proporciona un rendimiento un 50 por ciento más alto que el LPDDR3 más rápido y consume alrededor de un 40 por ciento menos de energía a 1,1 voltios.
El 25 de agosto de 2014, JEDEC publicó el estándar de dispositivo de memoria de bajo consumo JESD209-4.
Los cambios importantes incluyen:
* Duplicación de la velocidad de la interfaz y numerosos cambios eléctricos consiguientes, incluido el cambio del estándar de E/S a lógica de terminación oscilante de bajo voltaje (LVSTL)
* Duplicación del tamaño interno de precarga previa y tamaño mínimo de transferencia
* Cambio en el bus de dirección/comando DDR de 10 bits a un bus SDR de 6 bits
* Cambio de un bus ancho de 32 bits a dos buses de 16 bits independientes
* La actualización automática se habilita mediante comandos dedicados, en lugar de ser controlada por la línea CKE
El estándar define paquetes SDRAM que contienen dos canales de acceso independientes de 16 bits, cada uno conectado a hasta dos matrices por paquete. Cada canal tiene 16 bits de datos de ancho, tiene sus propios pines de control/dirección y permite el acceso a 8 bancos de DRAM. Por tanto, el paquete se puede conectar de tres formas:
* Las líneas de datos y de control están conectados en paralelo a un bus de datos de 16 bits, y solo chip selecciona la conexión independientemente por canal.
* A dos medios buses de 32 bits de ancho y las líneas de control en paralelo, incluida la selección de chip.
* A dos buses de datos anchos de 16 bits independientes
Cada dado proporciona 4, 6, 8, 12 o 16 gibibit de memoria, la mitad para cada canal. Por lo tanto, cada banco es un dieciseisavo del tamaño del dispositivo. Esto se organiza en el número apropiado (16 Ki hasta 64 Ki) de filas de 16.384 bits (2.048 bytes). Ampliación a 24 y 32 gibibit está planeado, pero aún no se decide si esto se hará aumentando el número de filas, su ancho o el número de bancos. También se definen paquetes más grandes que proporcionan doble ancho (cuatro canales) y hasta cuatro matrices por par de canales (8 matrices en total por paquete). Se accede a los datos en ráfagas de 16 o 32 transferencias (256 o 512 bits, 32 o 64 bytes, DDR de 8 o 16 ciclos). Las ráfagas deben comenzar en límites de 64 bits. Dado que la frecuencia del reloj es más alta y la longitud de ráfaga mínima más larga que los estándares anteriores, las señales de control se pueden multiplexar más sin que el bus de comando/dirección se convierta en un cuello de botella. LPDDR4 multiplexa las líneas de control y dirección en un bus CA de velocidad de datos única de 6 bits. Los comandos requieren 2 ciclos de reloj y las operaciones que codifican una dirección (por ejemplo, activar fila, leer o escribir columna) requieren dos comandos. Por ejemplo, para solicitar una lectura de un chip inactivo se requieren cuatro comandos que toman 8 ciclos de reloj: Activate-1, Activate-2, Read, CAS-2. La línea de selección de chip (CS) está activa-alta . El primer ciclo de un comando se identifica porque la selección de chip es alta; es bajo durante el segundo ciclo.
Codificación de comandos LPDDR4 :
| First cycle (CS=H) | First cycle (CS=H) | First cycle (CS=H) | First cycle (CS=H) | First cycle (CS=H) | First cycle (CS=H) | Segundo ciclo (CS = L) | Segundo ciclo (CS = L) | Segundo ciclo (CS = L) | Segundo ciclo (CS = L) | Segundo ciclo (CS = L) | Segundo ciclo (CS = L) | Operación |
| CA5 | CA4 | CA3 | CA2 | CA1 | CA0 | CA5 | CA4 | CA3 | CA2 | CA1 | CA0 | Operación |
| L | L | L | L | L | L | — | — | — | — | — | — | Sin operación |
| H | L | L | L | L | L | 0 | OP4 | OP3 | OP2 | OP1 | 1 | Comando multiptopósito |
| AB | H | L | L | L | L | — | — | — | BA2 | BA1 | BA0 | Precarga (AB=todos los bancos) |
| AB | L | H | L | L | L | — | — | — | BA2 | BA1 | BA0 | Actualizar (AB=todos los bancos) |
| — | H | H | L | L | L | — | — | — | — | — | — | Autoactualización de entrada |
| BL | L | L | H | L | L | AP | C9 | — | BA2 | BA1 | BA0 | Write-1(+CAS-2) |
| — | H | L | H | L | L | — | — | — | — | — | — | Autoactualización de salida |
| 0 | L | H | H | L | L | AP | C9 | — | BA2 | BA1 | BA0 | Write-1 enmascarado (+CAS-2) |
| — | H | H | H | L | L | — | — | — | — | — | — | (reservado) |
| BL | L | L | L | H | L | AP | C9 | — | BA2 | BA1 | BA0 | Read-1(+CAS-2) |
| C8 | H | L | L | H | L | C7 | C6 | C5 | C4 | C3 | C2 | CAS-2 |
| — | — | H | L | H | L | — | — | — | — | — | — | (reservado) |
| OP7 | L | L | H | H | L | MA5 | MA4 | MA3 | MA2 | MA1 | MA0 | Modo de registro Write-1 y Write-2 MA=direccionamiento, OP=datos |
| OP6 | H | L | H | H | L | OP5 | OP4 | OP3 | OP2 | OP1 | OP0 | Modo de registro Write-1 y Write-2 MA=direccionamiento, OP=datos |
| — | L | H | H | H | L | MA5 | MA4 | MA3 | MA2 | MA1 | MA0 | Modo de registro de lectura (+CAS-2) |
| — | H | H | H | H | L | — | — | — | — | — | — | (reservado) |
| R15 | R14 | R13 | R12 | L | H | R11 | R10 | R16 | BA2 | BA1 | BA0 | Activate-1 y Activate-2 |
| R9 | R8 | R7 | R6 | H | H | R5 | R4 | R3 | R2 | R1 | R0 | Activate-1 y Activate-2 |
El comando CAS-2 se utiliza como la segunda mitad de todos los comandos que realizan una transferencia a través del bus de datos y proporciona bits de dirección de columna de orden inferior:
* Los comandos de lectura deben comenzar en una dirección de columna que sea múltiplo de 4; no existe ninguna disposición para comunicar un bit de dirección C0 o C1 distinto de cero a la memoria.
* Los comandos de escritura deben comenzar en una dirección de columna que sea múltiplo de 16; C2 y C3 deben ser cero para un comando de escritura.
* El registro de modo leído y algunos comandos multipropósito también deben ir seguidos de un comando CAS-2, sin embargo, todos los bits de la columna deben ser cero (bajo).
La longitud de la ráfaga se puede configurar para que sea 16, 32 o seleccionable dinámicamente mediante el bit BL de operaciones de lectura y escritura. Se asocia una señal DMI (máscara de datos/inversión) con cada 8 líneas de datos y se puede utilizar para minimizar el número de bits elevados durante las transferencias de datos. Cuando es alto, los otros 8 bits se complementan tanto con el transmisor como con el receptor. Si un byte contiene cinco o más bits 1, la señal DMI puede elevarse, junto con tres o menos líneas de datos. Como las líneas de señal tienen una terminación baja, esto reduce el consumo de energía. Un uso alternativo, donde DMI se usa para limitar el número de líneas de datos que alternan en cada transferencia a un máximo de 4, minimiza la diafonía. Esto puede ser utilizado por el controlador de memoria durante las escrituras, pero no es compatible con los dispositivos de memoria. La inversión del bus de datos se puede habilitar por separado para lecturas y escrituras. Para escrituras enmascaradas (que tienen un código de comando separado), el funcionamiento de la señal DMI depende de si la inversión de escritura está habilitada.
* Si DBI en escrituras está deshabilitado, un nivel alto en DMI indica que el byte de datos correspondiente debe ignorarse y no escribirse.
* Si DBI en escrituras está habilitado, un nivel bajo en DMI, combinado con un byte de datos con 5 o más bits establecidos, indica un byte de datos que debe ignorarse y no escribirse.
LPDDR4 también incluye un mecanismo de "actualización de fila dirigida" para evitar la corrupción debido a la vulnerabilidad Row hammer en filas adyacentes. Una secuencia especial de tres secuencias de activación/precarga especifica la fila que se activa con más frecuencia que el umbral especificado por el dispositivo (200.000 a 700.000 por ciclo de actualización). Internamente, el dispositivo actualiza filas físicamente adyacentes en lugar de la fila especificada en el comando de activación.

#### LPDDR4X

Samsung Semiconductor propuso una variante LPDDR4 que llamó LPDDR4X. LPDDR4X es idéntico a LPDDR4 excepto que se ahorra energía adicional al reducir el voltaje de E/S (Vddq) a de 1,1 V a 0,6 V. El 9 de enero de 2017, SK Hynix anunció paquetes LPDDR4X de 8 y 16 GiB. JEDEC publicó el estándar LPDDR4X el 8 de marzo de 2017.
Además del voltaje más bajo, las mejoras adicionales incluyen una opción de troquel de un solo canal para aplicaciones más pequeñas, nuevos paquetes MCP, PoP e IoT, y mejoras adicionales de definición y sincronización para el grado de velocidad más alto de 4266 MT/s.

### LPDDR5

El 19 de febrero de 2019, JEDEC publicó el JESD209-5, Estándar para velocidad de datos doble de baja potencia 5 (LPDDR5).
Samsung anunció que tenía prototipos de chips LP-DDR5 en funcionamiento en julio de 2018. LPDDR5 introduce los siguientes cambios:
* La tasa de transferencia de datos se incrementa a 6400 MT/s.
* Se utilizan señales de reloj diferenciales
* El tamaño de precarga previa no se vuelve a duplicar, pero permanece en 16n
* El número de bancos se incrementa a 16, divididos en cuatro grupos de bancos similares a DDR4
* Mejoras de ahorro de energía:
* Comandos Data-Copy y Write-X (todos uno o todos cero) para disminuir la transferencia de datos
* Escalado dinámico de frecuencia y voltaje
* Una nueva arquitectura de reloj llamada WCK & Read Strobe (RDQS)
El controlador de memoria Intel Tiger Lake es compatible con LPDDR5.