En informática , la detección de presencia en serie ( SPD ) es una forma estandarizada de acceder automáticamente a la información sobre un módulo de memoria . Los módulos SIMM de 72 pines anteriores incluían cinco pines que proporcionaban cinco bits de datos de detección de presencia en paralelo (PPD), pero el estándar DIMM de 168 pines cambió a una detección de presencia en serie para codificar más información. [1]
Cuando se enciende una computadora moderna común y corriente, comienza realizando una prueba automática de encendido (POST). Desde aproximadamente mediados de la década de 1990, este proceso incluye la configuración automática del hardware presente en ese momento. SPD es una función del hardware de memoria que permite que la computadora sepa qué memoria está presente y qué tiempos de memoria utilizar para acceder a ella.
Algunas computadoras se adaptan a los cambios de hardware de manera completamente automática. En la mayoría de los casos, existe un procedimiento opcional especial para acceder a los parámetros del BIOS , para ver y posiblemente realizar cambios en las configuraciones. Es posible controlar cómo la computadora utiliza los datos SPD de la memoria: para elegir configuraciones, modificar selectivamente los tiempos de la memoria o posiblemente anular por completo los datos SPD (consulte overclocking ).
Para que un módulo de memoria admita SPD, las normas JEDEC exigen que determinados parámetros se encuentren en los 128 bytes inferiores de una EEPROM ubicada en el módulo de memoria. Estos bytes contienen parámetros de sincronización, fabricante, número de serie y otra información útil sobre el módulo. Los dispositivos que utilizan la memoria determinan automáticamente los parámetros clave del módulo al leer esta información. Por ejemplo, los datos SPD en un módulo SDRAM pueden proporcionar información sobre la latencia CAS para que el sistema pueda configurarla correctamente sin la intervención del usuario.
El firmware de la EEPROM SPD se accede mediante SMBus , una variante del protocolo I2C . Esto reduce la cantidad de pines de comunicación en el módulo a solo dos: una señal de reloj y una señal de datos. La EEPROM comparte pines de tierra con la RAM, tiene su propio pin de alimentación y tiene tres pines adicionales (SA0–2) para identificar la ranura, que se utilizan para asignar a la EEPROM una dirección única en el rango 0x50–0x57. No solo se pueden compartir las líneas de comunicación entre 8 módulos de memoria, sino que el mismo SMBus se usa comúnmente en las placas base para tareas de monitoreo del estado del sistema, como leer voltajes de la fuente de alimentación, temperaturas de la CPU y velocidades de los ventiladores.
Las EEPROM SPD también responden a las direcciones I 2 C 0x30–0x37 si no han sido protegidas contra escritura, y una extensión (serie TSE) utiliza las direcciones 0x18–0x1F para acceder a un sensor de temperatura opcional en chip. Todos esos valores son direcciones I 2 C de siete bits formadas por un prefijo de código de identificación de tipo de dispositivo (DTIC) con SA0-2: para leer (1100) desde la ranura 3, se utiliza 110 0011 = 0x33
. Con un bit R/W final forma el código de selección de dispositivo de 8 bits. [2] Nótese que la semántica de slot-id es diferente para las operaciones de protección contra escritura: para ellas no pueden ser pasadas por los pines SA en absoluto. [3]
Antes de SPD, los chips de memoria se detectaban con detección de presencia paralela (PPD). PPD utilizaba un pin independiente para cada bit de información, lo que significaba que solo se podía almacenar la velocidad y la densidad del módulo de memoria debido al espacio limitado para los pines.
La primera especificación SPD fue emitida por JEDEC y ajustada por Intel como parte de su especificación de memoria PC100 introducida en 1998. [4] [5] [6] La mayoría de los valores especificados están en forma decimal codificada en binario . El nibble más significativo puede contener valores de 10 a 15 y, en algunos casos, se extiende más allá. En tales casos, las codificaciones para 1, 2 y 3 se utilizan en su lugar para codificar 16, 17 y 18. Un nibble más significativo de 0 se reserva para representar "indefinido".
La ROM SPD define hasta tres tiempos de DRAM, para tres latencias CAS especificadas por bits establecidos en el byte 18. Primero viene la latencia CAS más alta (reloj más rápido), luego dos latencias CAS más bajas con velocidades de reloj progresivamente más bajas.
El formato DDR DIMM SPD es una extensión del formato SDR SDRAM. En general, los rangos de parámetros se reescalan para adaptarse a velocidades más altas.
El estándar DDR2 SPD introduce una serie de cambios, pero es similar al anterior. Una eliminación notable es la compatibilidad confusa y poco utilizada con módulos DIMM con dos filas de tamaños diferentes.
Para los campos de tiempo de ciclo (bytes 9, 23, 25 y 49), que están codificados en BCD , se definen algunas codificaciones adicionales para el dígito de las décimas para representar con exactitud algunos tiempos comunes:
El estándar DDR3 SDRAM renueva y simplifica significativamente el diseño de los contenidos de SPD. En lugar de una serie de campos de nanosegundos codificados en BCD, se especifican algunas unidades de "base de tiempo" con alta precisión y varios parámetros de tiempo se codifican como múltiplos de esa unidad base. [10] Además, se ha abandonado la práctica de especificar diferentes valores de tiempo en función de la latencia CAS; ahora hay un solo conjunto de parámetros de tiempo.
La revisión 1.1 permite que algunos parámetros se expresen como un valor de "base de tiempo media" más una corrección de "base de tiempo fina" (con signo, −128 + 127). Generalmente, la base de tiempo media es 1/8 ns (125 ps) y la base de tiempo fina es 1, 2,5 o 5 ps. Para compatibilidad con versiones anteriores que carecen de la corrección, el número de la base de tiempo media se suele redondear hacia arriba y la corrección es negativa. Los valores que funcionan de esta manera son:
La capacidad de memoria de un módulo se puede calcular a partir de los bytes 4, 7 y 8. El ancho del módulo (byte 8) dividido por la cantidad de bits por chip (byte 7) da la cantidad de chips por fila. Esto se puede multiplicar por la capacidad por chip (byte 4) y la cantidad de filas de chips en el módulo (generalmente 1 o 2, a partir del byte 7).
El estándar DDR4 SDRAM "Anexo L" para SPD cambia el módulo EEPROM utilizado. En lugar de las antiguas EEPROM de 256 bytes compatibles con AT24C02, JEDEC ahora define un nuevo tipo no estándar EE1004 con dos páginas en el nivel SMBus cada una con 256 bytes. La nueva memoria todavía utiliza las antiguas direcciones 0x50–0x57, pero ahora se utilizan dos direcciones adicionales en 0x36 (SPA0) y 0x37 (SPA1) para recibir comandos para seleccionar la página actualmente activa para el bus, una forma de conmutación de bancos . [13] Internamente, cada página lógica se divide a su vez en dos bloques físicos de 128 bytes cada uno, lo que suma un total de cuatro bloques y 512 bytes. [14] La semántica restante para los rangos de direcciones "especiales" sigue siendo la misma, aunque la protección contra escritura ahora se aborda por bloques y ahora se requiere un alto voltaje en SA0 para cambiar su estado. [15]
El Anexo L define algunos diseños diferentes que se pueden incorporar a una plantilla de 512 bytes (de los cuales se define un máximo de 320 bytes), según el tipo de módulo de memoria. Las definiciones de bits son similares a las de DDR3. [14]
Tabla preliminar para DDR5, basada en la especificación JESD400-5. [17]
La DDR5 amplía la tabla SPD a 1024 bytes. La SPD de la DDR5 utiliza el bus I3C .
El estándar JEDEC sólo especifica algunos de los bytes SPD. Los datos verdaderamente críticos caben en los primeros 64 bytes, [8] [9] [18] [19] [20] mientras que parte del resto se reserva para la identificación del fabricante. Sin embargo, generalmente se proporciona una EEPROM de 256 bytes. El espacio restante se ha utilizado de diversas formas.
La memoria generalmente viene con recomendaciones de sincronización conservadoras en la ROM SPD, para garantizar la funcionalidad básica en todos los sistemas. Los entusiastas a menudo dedican un tiempo considerable a ajustar manualmente las sincronizaciones de la memoria para lograr una mayor velocidad.
Enhanced Performance Profiles es una extensión de SPD, desarrollada por Nvidia y Corsair , que incluye información adicional para un funcionamiento de mayor rendimiento de la DDR2 SDRAM , incluidos voltajes de suministro e información de sincronización de comandos no incluidos en la especificación JEDEC SPD. La información EPP se almacena en la misma EEPROM, pero en los bytes 99–127, que no son utilizados por la DDR2 SPD estándar. [21]
Los parámetros están diseñados especialmente para adaptarse al controlador de memoria de los chipsets nForce 5 , nForce 6 y nForce 7. Nvidia fomenta la compatibilidad con EPP en el BIOS de sus chipsets de placa base de gama alta. Esto tiene como objetivo proporcionar " overclocking con un solo clic " para obtener un mejor rendimiento con el mínimo esfuerzo.
El nombre de Nvidia para la memoria EPP que ha sido calificada por su rendimiento y estabilidad es "memoria preparada para SLI". [22] El término "memoria preparada para SLI" ha causado cierta confusión, ya que no tiene nada que ver con el video SLI . Se puede usar memoria EPP/SLI con una sola tarjeta de video (incluso una tarjeta que no sea Nvidia), y se puede ejecutar una configuración de video SLI con múltiples tarjetas sin memoria EPP/SLI.
Una versión ampliada, EPP 2.0, también admite memoria DDR3. [23]
Una extensión JEDEC SPD similar, desarrollada por Intel, fue desarrollada para módulos DIMM SDRAM DDR3 , que luego se utilizó también en módulos SDRAM DDR4 y DDR5 . XMP utiliza los bytes 176–255, que no están asignados por JEDEC, para codificar tiempos de memoria de mayor rendimiento. [24]
Más tarde, AMD desarrolló AMP, una tecnología equivalente a XMP, para su uso en su línea "Radeon Memory" de módulos de memoria optimizados para su uso en plataformas AMD. [25] [26] Además, los desarrolladores de placas base implementaron sus propias tecnologías para permitir que sus placas base basadas en AMD leyeran perfiles XMP: MSI ofrece A-XMP, [27] ASUS tiene DOCP (Direct Over Clock Profile) y Gigabyte tiene EOCP (Extended Over Clock Profile). [28]
El encabezado contiene los siguientes datos. Lo más importante es que contiene un valor de "base de tiempo media" MTB, como un número racional de nanosegundos (los valores comunes son 1/8, 1/12 y 1/16 ns). Muchos otros valores de tiempo posteriores se expresan como un número entero de unidades MTB.
También se incluye en el encabezado la cantidad de DIMM por canal de memoria que el perfil está diseñado para soportar; incluir más DIMM puede no funcionar bien.
Todos los datos anteriores son para DDR3 (XMP 1.1); las especificaciones DDR4 aún no están disponibles.
Los perfiles extendidos para overclocking (EXPO) de AMD son una extensión JEDEC SPD desarrollada para módulos DIMM DDR5 para aplicar un perfil de overclocking automático con un solo clic a la memoria del sistema. [30] [31] Los módulos DIMM con certificación EXPO de AMD incluyen tiempos optimizados que optimizan el rendimiento de sus procesadores Zen 4. [32] A diferencia del estándar cerrado XMP de Intel, el estándar EXPO es abierto y libre de regalías. [31] Se puede utilizar en plataformas Intel. [31] En el lanzamiento en septiembre de 2022, hay 15 kits de RAM de socios con certificación EXPO disponibles que alcanzan hasta 6400 MT/s. [33]
Un mal uso habitual es escribir información en determinadas regiones de memoria para vincular módulos de memoria específicos del proveedor a un sistema específico. Se sabe que Fujitsu Technology Solutions hace esto. Agregar un módulo de memoria diferente al sistema generalmente da como resultado un rechazo u otras contramedidas (como presionar F1 en cada arranque).
02 0E 00 01-00 00 00 EF-02 03 19 4D-BC 47 C3 46 ...........MGF53 43 00 04-EF 4F 8D 1F-00 01 70 00-01 03 C1 CF SC...O....p.....
Esta es la salida de un módulo de memoria de 512 MB de Micron Technologies, con la marca Fujitsu-Siemens Computers. Observe la cadena "FSC". El BIOS del sistema rechaza los módulos de memoria que no tienen esta información a partir del desplazamiento 128h.
Algunas laptops AMD de Packard Bell también usan este método, en este caso los síntomas pueden variar pero puede provocar un cursor parpadeante en lugar de un patrón de pitidos. Por cierto, esto también puede ser un síntoma de corrupción del BIOS. [34] Aunque actualizar una de 2 GB a una de 4 GB también puede generar problemas.
Los fabricantes de módulos de memoria escriben la información SPD en la EEPROM del módulo. Las BIOS de las placas base leen la información SPD para configurar el controlador de memoria. Existen varios programas que pueden leer y modificar la información SPD en la mayoría de los conjuntos de chips de las placas base, pero no en todos.
La lectura y escritura de información SPD independiente del chipset se realiza accediendo directamente a la EEPROM de la memoria con el hardware y el software programadores de EEPROM.
Un uso no tan común para los portátiles antiguos es como lectores SMBus genéricos, ya que la EEPROM interna del módulo se puede desactivar una vez que la BIOS la ha leído, de modo que el bus está esencialmente disponible para su uso. El método utilizado es bajar las líneas A0, A1 para que la memoria interna se apague, lo que permite que el dispositivo externo acceda al SMBus. Una vez hecho esto, una compilación personalizada de Linux o una aplicación DOS puede acceder al dispositivo externo. Un uso común es recuperar datos de los chips de memoria del panel LCD para adaptar un panel genérico a un portátil propietario. En algunos chips, también es una buena idea separar las líneas de protección contra escritura para que los chips integrados no se borren durante la reprogramación. Una técnica relacionada es reescribir el chip en las cámaras web que a menudo se incluyen con muchos portátiles, ya que la velocidad del bus es sustancialmente mayor e incluso se puede modificar para que se puedan volver a leer chips compatibles con 25x para clonar posteriormente la uEFI en caso de que falle un chip.
Lamentablemente, esto solo funciona en DDR3 y versiones inferiores, ya que la DDR4 utiliza una seguridad diferente y, por lo general, solo se puede leer. Es posible utilizar una herramienta como SPDTool o similar y reemplazar el chip por uno que tenga la línea WP libre para que se pueda modificar in situ. En algunos chipsets, puede aparecer el mensaje "¿Controlador SMBus incompatible?", por lo que también se evita la lectura.
Algunos módulos de memoria (especialmente en PC para juegos ) [39] admiten LED RGB que se controlan mediante comandos SMBus propietarios. Esto permite el control del color de los LED sin conectores ni cables adicionales. Los controladores de kernel de varios fabricantes necesarios para controlar las luces han sido explotados para obtener acceso que abarca desde el acceso completo a la memoria del kernel hasta el control del puerto de E/S y MSR en numerosas ocasiones solo en 2020. [40] [41] [42]
Algunos equipos más antiguos requieren el uso de módulos SIMM con detección de presencia paralela (más comúnmente llamados simplemente detección de presencia o PD). Algunos de estos equipos utilizan codificación PD no estándar, en particular las computadoras IBM y las impresoras Hewlett-Packard LaserJet y otras.
{{cite web}}
: CS1 maint: nombres numéricos: lista de autores ( enlace )