En informática , la detección de presencia en serie ( SPD ) es una forma estandarizada de acceder automáticamente a información sobre un módulo de memoria . Los SIMM anteriores de 72 pines incluían cinco pines que proporcionaban cinco bits de datos de detección de presencia paralela (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 autoprueba de encendido (POST). Desde mediados de la década de 1990, este proceso incluye la configuración automática del hardware actualmente presente. SPD es una característica del hardware de memoria que hace posible que la computadora sepa qué memoria está presente y qué tiempos de memoria usar para acceder a ella.
Algunas computadoras se adaptan a los cambios de hardware de forma 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 potencialmente realizar cambios en la configuración. Es posible controlar cómo la computadora usa los datos SPD de la memoria: elegir configuraciones, modificar selectivamente los tiempos de la memoria o posiblemente anular completamente los datos SPD (consulte overclocking ).
Para que un módulo de memoria admita SPD, los estándares JEDEC requieren que ciertos parámetros estén 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 leyendo 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.
Se accede al firmware SPD EEPROM mediante SMBus , una variante del protocolo I 2 C. 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 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. Las líneas de comunicación no solo se pueden compartir 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 los voltajes de la fuente de alimentación, las temperaturas de la CPU y las 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) usa las direcciones 0x18–0x1F para acceder a un sensor de temperatura en chip opcional. Todos esos valores son direcciones I 2 C de siete bits formadas por un prefijo de código identificador de tipo de dispositivo (DTIC) con SA0-2: para leer (1100) desde la ranura 3, se usa 110 0011 = 0x33
. Con un bit final de lectura y escritura, forma el código de selección de dispositivo de 8 bits. [2] Tenga en cuenta que la semántica de slot-id es diferente para las operaciones de protección contra escritura: para ellas no pueden pasar por los pines SA en absoluto. [3]
Antes de SPD, los chips de memoria se detectaban con detección de presencia paralela (PPD). PPD usó un pin separado 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 publicada por JEDEC y reforzada 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 alto. En tales casos, las codificaciones para 1, 2 y 3 se utilizan para codificar 16, 17 y 18. Un cuarteto más significativo de 0 se reserva para representar "indefinido".
La ROM SPD define hasta tres tiempos de DRAM, para tres latencias CAS especificadas mediante 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 su mayoría, los rangos de parámetros se reescalan para adaptarse a velocidades más altas.
El estándar DDR2 SPD realiza una serie de cambios, pero es más o menos similar al anterior. Una eliminación notable es el soporte confuso y poco utilizado para DIMM con dos rangos de diferentes tamaños.
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 exactamente algunos tiempos comunes:
El estándar DDR3 SDRAM revisa y simplifica significativamente el diseño de contenidos SPD. En lugar de una serie de campos de nanosegundos codificados en BCD, algunas unidades de "base de tiempo" se especifican con alta precisión y varios parámetros de tiempo se codifican como múltiplos de esa unidad base. [10] Además, se ha eliminado la práctica de especificar diferentes valores de tiempo dependiendo de la latencia CAS; ahora sólo hay un único conjunto de parámetros de sincronización.
La revisión 1.1 permite que algunos parámetros se expresen como un valor de "base de tiempo medio" más una corrección de "base de tiempo fina" (con signo, −128 +127). Generalmente, la base de tiempos media es 1/8 ns (125 ps) y la base de tiempos fina es 1, 2,5 o 5 ps. Para compatibilidad con versiones anteriores que carecen de corrección, el número de base de tiempo medio generalmente se redondea 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 el número de bits por chip (byte 7) da el número de chips por rango. Luego, esto se puede multiplicar por la capacidad por chip (byte 4) y el número de rangos de chips en el módulo (generalmente 1 o 2, a partir del byte 7).
El estándar DDR4 SDRAM "Annex 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 EE1004 no estándar con dos páginas en el nivel SMBus cada una con 256 bytes. La nueva memoria todavía usa las antiguas direcciones 0x50–0x57, pero ahora se usan 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 cambio de banco . [13] Internamente, cada página lógica se divide en dos bloques físicos de 128 bytes cada uno, con un total de cuatro bloques y 512 bytes. [14] Otras semánticas para rangos de direcciones "especiales" siguen siendo las mismas, aunque la protección contra escritura ahora se aborda mediante 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 conectar a una plantilla de 512 bytes (de los cuales se define un máximo de 320 bytes), dependiendo del tipo de módulo de memoria. Las definiciones de bits son similares a DDR3. [14]
Tabla preliminar para DDR5, basada en la especificación JESD400-5. [17]
DDR5 expande la tabla SPD a 1024 bytes. SPD de DDR5 utiliza el bus I3C .
El estándar JEDEC solo 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 está destinado a la identificación del fabricante. Sin embargo, generalmente se proporciona una EEPROM de 256 bytes. Del espacio restante se han hecho varios usos.
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 suelen dedicar un tiempo considerable a ajustar manualmente los tiempos de memoria para obtener 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 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 del EPP se almacena en la misma EEPROM, pero en los bytes 99 a 127, que no se utilizan en el SPD DDR2 estándar. [21]
Los parámetros están especialmente diseñados para adaptarse al controlador de memoria en los conjuntos de chips nForce 5 , nForce 6 y nForce 7 . Nvidia fomenta la compatibilidad con EPP en el BIOS de sus conjuntos de chips de placa base de alta gama. 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 vídeo SLI . Se puede utilizar la memoria EPP/SLI con una sola tarjeta de vídeo (incluso una tarjeta que no sea Nvidia) y se puede ejecutar una configuración de vídeo SLI de varias tarjetas sin memoria EPP/SLI.
Una versión extendida, EPP 2.0, también admite memoria DDR3. [23]
Se desarrolló una extensión JEDEC SPD similar desarrollada por Intel para DIMM SDRAM DDR3 , que luego se usó también en SDRAM DDR4 . XMP utiliza los bytes 176 a 255, que JEDEC no asigna, para codificar tiempos de memoria de mayor rendimiento. [24]
Posteriormente, AMD desarrolló AMP, una tecnología equivalente a XMP, para usar en su línea de módulos de memoria "Radeon Memory" 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 lean perfiles XMP: MSI ofrece A-XMP, [27] ASUS tiene DOCP (Direct Over Clock Profile) y Gigabyte tiene EOCP ( Perfil extendido sobre reloj). [28]
El encabezado contiene los siguientes datos. Lo más importante es que contiene un valor MTB de "base de tiempo medio", como un número racional de nanosegundos (los valores comunes son 1/8, 1/12 y 1/16 ns). Muchos otros valores de sincronización 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 admitir; Es posible que incluir más DIMM no funcione 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 es una extensión JEDEC SPD desarrollada para DIMM DDR5 para aplicar un perfil de overclocking automático con un solo clic a la memoria del sistema. [30] [31] Los DIMM certificados por AMD EXPO 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 uso indebido común es escribir información en ciertas regiones de la 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 resulta en 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, tenga en cuenta 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 computadoras portátiles Packard Bell AMD también usan este método; en este caso, los síntomas pueden variar, pero pueden provocar un cursor parpadeante en lugar de un patrón de pitido. Por cierto, esto también puede ser un síntoma de corrupción del BIOS. [34] Aunque actualizar de 2 GB a 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. Los BIOS de la placa base leen la información del 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 la placa base, pero no en todos.
La lectura y escritura de información SPD independiente del chipset se realiza accediendo a la EEPROM de la memoria directamente con el hardware y software del programador eeprom.
Un uso no tan común para las computadoras portátiles antiguas es como lectores SMBus genéricos, ya que la EEPROM interna del módulo se puede desactivar una vez que el BIOS la ha leído, por lo 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, permitiendo 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 chips de memoria del panel LCD para adaptar un panel genérico a una computadora portátil patentada. 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 muchas computadoras portátiles, ya que la velocidad del bus es sustancialmente mayor e incluso se puede modificar para que se puedan leer chips compatibles con 25x para una posterior clonación del uEFI en caso de falla del chip.
Desafortunadamente, esto solo funciona en DDR3 e inferiores, ya que DDR4 usa una seguridad diferente y generalmente solo se puede leer. Es posible utilizar una herramienta como SPDTool o similar y sustituir el chip por uno que tenga su línea WP libre para poder modificarlo in situ. En algunos conjuntos de chips aparece el mensaje "¿Controlador SMBus incompatible?" puede verse, por lo que también se impide su 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 del LED sin conectores ni cables adicionales. Los controladores de kernel de múltiples fabricantes necesarios para controlar las luces se han explotado para obtener acceso que va desde el acceso completo a la memoria del kernel hasta el control de puertos de E/S y MSR en numerosas ocasiones solo en 2020. [40] [41] [42]
Algunos equipos más antiguos requieren el uso de SIMM con detección de presencia paralela (más comúnmente llamado simplemente detección de presencia o PD). Algunos de estos equipos utilizan codificación PD no estándar, computadoras IBM y Hewlett-Packard LaserJet y otras impresoras en particular.
{{cite web}}
: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )