Alguna vez se te habrá pasado por la cabeza la siguiente pregunta: ¿cómo lo hace la CPU para saber el tipo de memoria RAM del sistema si esta no lleva drivers? La respuesta a ello es el Serial Presence Detect o SPD, una pieza de hardware que suele ser tan desconocida como útil y que sin ella no sería posible una correcta comunicación entre el procesador y la memoria.
Cuando vamos a comprar un módulo de memoria conocemos sus características por el hecho de que nos los dice el fabricante en las especificaciones, pero, ¿cómo lo sabe la CPU? Esta no entiende el mismo lenguaje que nosotros y solo entiende un dialecto del binario en concreto. Pues lo hace a través de una pieza de hardware que le otorga dicha información.
¿Qué es el Serial Presence Detect o SPD?
En primer lugar hemos de tener en cuenta que hablamos de un componente que se encuentra en las memorias RAM de PC, y se trata de una EEPROM que almacena la información de la DRAM. A menudo se suele localizar en un pequeño chip que suele acompañar a todos los módulos DIMM o SO-DIMM como muestra la imagen superior.
Al utilizar una ROM programable a través de impulsos eléctricos su contenido se escribe en el SPD una vez el chip de memoria se ha fabricado y por tanto han hecho las pruebas para determinar su velocidad de funcionamiento. Cuando herramientas como HWinfo o CPU-Z dan las especificaciones de la memoria RAM lo que le pidan a la CPU es que pregunte la información de la misma en el SPD.
El SPD también se encuentra en otros tipos de memoria como las utilizadas las VRAM usadas en las tarjetas gráficas. En este caso el SPD no se encuentra en chip aparte al estar la memoria soldada en placa, sino en cada uno de los chips de memoria en el caso de que sea memoria del tipo GDDR o en la base donde está la lógica de cada pila HBM.
¿Qué hace el Serial Presence Detect en el PC?
Al iniciar un PC lo primero que realiza el procesador es acceder al SPD, y este último le informa de los tiempos de acceso y velocidad de la memoria. Esto es importante por el hecho de que el compás a la hora de acceder a la RAM, no solo por parte del procesador sino para todo el sistema, es un acceso realizado a destiempo que acaba por enviar al traste la comunicación con la memoria, por lo que es clave.
A día de hoy existen casos como el de los procesadores AMD Ryzen que acceden a la RAM del sistema con velocidad de reloj variable, por lo que han de saber las especificaciones de la RAM a la que están conectados con tal de operar en condiciones y que no produzcan problemas a la hora de dicho acceso. Y es que ha de tener en cuenta que hay una ventana para acceder a la RAM limitada en el tiempo.
Si la información enviada por la CPU a la RAM llega fuera del periodo exacto, entonces la RAM puede devolver datos erróneos o escribir en una parte que no es del direccionamiento de la memoria RAM a la que queríamos acceder para ello.
¿Cómo se comunica la CPU al SPD de la memoria RAM?
Es obvio que lo hace a través de la interfaz que se encuentra en el perímetro del procesador y que está cableada a la RAM del sistema.
El acceso a la EEPROM en el SSD no obstante no se hace a través de los pines de datos y direccionamiento con la RAM. Para ello añaden más comunicaciones que son asignadas al SMBus, el cual es una variante del I²C que utiliza solo cuatro polos: uno se hace servir como reloj, el segundo transmite datos y el tercero y cuarto informan de cuál de los cuatro módulos se trata. Ya para terminar, el SPD comparte el pin de tierra con el resto del módulo DIMM, pero hace uso de su propio pin de cara a la alimentación eléctrica.
¿Qué información puede contener el SPD en su interior?
La respuesta directa y sencilla es aquella que requiere la CPU para funcionar, no podemos olvidar que se trata de una memoria ROM de un tamaño muy pequeño y por tanto ha de tener sus datos ordenados de la manera más compacta posible.
Es por ello que la forma en la que dicha información está almacenada dentro de la EEPROM del SPD es siempre la misma, lo que ayuda a ahorrar espacio y facilita no solo la comunicación con la CPU, sino también con el chipset de la placa base. ¿Y cuál es el orden y quien lo dicta? Pues lo hace el comité que es la JEDEC, que es la que marca los estándares de memoria tanto NAND Flash como RAM que utilizamos en nuestros dispositivos informáticos.
En cada estándar de la JEDEC el contenido del SPD varía, pero los datos que contiene no es solo respecto a la velocidad, sino también información como ahora:
- El tipo de RAM que es: DDR, LPDDR, etc.
- Cuantos chips hay y la capacidad de almacenamiento de cada uno.
- Número de serie y fabricante.
- Voltajes soportados por el módulo DIMM de cara al overclock.
- Etcétera.
¿Qué ocurre cuando hacemos overclock a la RAM?
Las memorias que tienen la capacidad de variar su velocidad de reloj utilizan un Serial Presence Detect distinto a los módulos estándar. Por suerte la JEDEC permite añadir extensiones en la parte final del Serial Presence Detect.
La más famosa de todas es la XMP de Intel, que se diseñó primero para la DDR3 y fue portada más tarde a la DDR4. La respuesta a ello fue la AMP de AMD que utilizaron en su fallida línea de módulos de memoria RAM, aunque con el tiempo han terminado adoptando la extensión de su rival, la cual se ha universalizado en la gran mayoría de módulos DIMM y placas base.
Por lo que sin el Serial Presence Detect entonces el overclock de la memoria ni tan siquiera funcionaría. El motivo de ello es que dependen de su información para que no existan errores de comunicación y también en escenarios como el hecho de subir de velocidad a la RAM (y con ello el voltaje) lo que podría ser fatídico para la salud de la memoria.