¿De dónde saca Intel la ventaja en memoria RAM para sus CPU?

El futuro de las relaciones entre la CPU y la memoria pasa en el direccionamiento universal, lo cual requiere nuevos tipos de unidades para ellos dentro del procesador como es el Data Streaming Accelerator. Pero, ¿qué es y cómo mejora el rendimiento del procesador?

En los últimos tiempos uno de los avances en los que más se está investigando tiene que ver con el movimiento de datos dentro de una arquitectura. Algo que a simple vista puede parecer totalmente resuelto desde hace tiempo, pero que en los últimos años se ha convertido en un punto crucial de cara a aumentar el rendimiento de las CPU.

Existen dos motivos por los cuales el movimiento de los datos se ha convertido en la obsesión de los arquitectos a la hora de diseñar nuevo hardware. El primero tiene que ver con el consumo energético y el segundo con la latencia, que es el tiempo en que se tarda en hacer una operación a memoria, y es sobre este segundo punto que tenemos dejar muy clara la relación entre la latencia y el ancho de banda.

¿Ancho de banda es igual a latencia?

Movimientos Datos

No, no son lo mismo, la latencia es el tiempo en ciclos de reloj que se tarda en resolver una petición a memoria y esta tiene una serie de pasos que se han de realizar siempre. El problema es que pese a que la interfaz de memoria puede ser muy rápida el controlador de memoria puede que no lo sea y acabe ocurriendo que este o la MMU de la CPU se saturen y se acaben retrasando todas las peticiones a memoria.

Pues bien, por muy rápida que sea la interfaz si la petición a memoria se queda bloqueada entonces el resto de la cola se bloquea y no se transmiten datos. Y esto puede ocurrir si acabamos saturando de una gran cantidad de peticiones a la RAM. Lo peor es que esto incluso puede llegar a dejar a la CPU esperando un buen tiempo a obtener los datos para la siguiente instrucción a ejecutar.

El ancho de banda en cambio es simplemente la velocidad de transferencia. Por ejemplo puedes tener 100 peticiones a 1 GB/ o 1 petición a 100 GB/s, pero se ha de tener en cuenta que el controlador de memoria del procesador que se encarga de gestionar los accesos a la misma tendrá mayores dificultades con el primer caso que con el segundo.

Unidades de movimiento de datos

Portada-CPU-Genérica-Placa-Base

Coged cualquier ISA, da igual cuál sea y echadle un vistazo, en ella veréis instrucciones que no realizan una operación aritmético-lógica, tampoco se encargan de realizar un salto o un buque, sino que se encargan de realizar movimientos de datos que implican el movimiento a la memoria.

Muchas de estas instrucciones llevan desde los inicios y tienen una latencia en ciclos de reloj concreta. ¿Qué pasaría si añadiésemos un procesador de apoyo que hiciese de recadero y pudiese resolver esas peticiones a la RAM o a cualquier memoria dentro del mismo direccionamiento con una latencia menor? Pues que el rendimiento del procesador aumentaría y le permitiría centrar los ciclos de reloj que suele estar en espera a resolver nuevas instrucciones.

Pues bien el Intel Data Streaming Accelerator se basa en este principio y es una de las claves para mejorar el rendimiento de los diferentes procesadores.

Intel Data Streaming Accelerator

Diagrama Data Streaming Accelerator

Como su nombre indica se trata de un acelerador, es decir, una unidad que realiza una tarea concreta que en este caso es la emisión de datos en un tiempo menor que lo haría la CPU. La particularidad del DSA es que está pensado para una de las características que trae consigo el Compute Express Link sobre el PCI Express 5.0, que es otorgar acceso coherente con la memoria RAM a todos los periféricos conectados al puerto PCI Express, es decir, que comparten las mismas direcciones de memoria.

Por lo tanto sirve para realizar las siguientes operaciones:

  • Puede mover datos desde la CPU a la RAM y viceversa.
  • De cara a acceder a espacios de memoria no-coherentes, con otro direccionamiento de memoria, puede realizar la conversión de direcciones de manera automática, por lo que técnicamente estamos ante una unidad DMA actualizada.
  • Tiene acceso también a las memorias persistentes o no volátiles, por lo que puede acceder también a las unidades SSD NVMe, los módulos Intel Optane, los NVDIMM etc…
  • A través de NTB y en un entorno servidor le da acceso a otra RAM o memoria no volátil de otra placa en el centro de datos o el servidor.
  • Tiene integradas funciones para aplicar los puntos anteriores a máquinas virtuales.

Como muchos habréis deducido se trata de un tipo de unidad que está pensada en especial para los procesadores de servidores, aunque no se trata de una unidad de función fija que funcione de manera automática.

Instrucciones del Intel DSA

El Data Streaming Accelerator no es una unidad de función fija desde el momento en que no aplica siempre el mismo programa sobre los datos que le entran, sino que soporta una serie de instrucciones, por lo que se trata de lo que llamamos un procesador de dominio específico. Entre las operaciones que puede realizar se encuentran:

  • Move: las clásicas instrucciones de mover datos de los x86, quienes hayan escrito ensamblador lo sabrán. Si el procesador tiene uno o varios Intel Data Streaming Accelerators entonces será ejecutado por estos y no por los núcleos de la CPU.
  • DIF: se encarga de realizar el proceso de comprobación de integridad de la información de la memoria.
  • CRC Generation: genera el CRC Checksum en los datos transmitidos.
  • Fill: Se encarga de llenar una sección de memoria con un dato concreto de manera repetida, es ideal para borrar el contenido de una parte de la memoria, ya que nos permite poner todos los bits a 0.
  • Compare: Sirve para comparar dos bloques de memoria y comprobar si son idénticos.
  • Delta Record Create: Realiza una comprobación y genera un nuevo flujo de datos con la diferencia entre ambos.

El Data Streaming Accelerator además puede controlar varios dispositivos de almacenamiento al mismo tiempo:

  • Enable/Disable: permite conectar o desconectar un dispositivo de memoria, ya sea RAM o almacenamiento no volátil.
  • Abort: aborta todas las peticiones a memoria a la RAM o a otro dispositivo de memoria.
  • Drain: pide que se realicen todas las peticiones a un dispositivo de memoria al mismo tiempo.

La lista de instrucciones es mucho más grande, pero es para que tengáis una idea aproximada de cuál es el funcionamiento de esta nueva unidad que Intel ha integrado en sus procesadores. Las ventajas son claras y se espera que en Sapphire Rapids se vean todavía más potenciadas.

¡Sé el primero en comentar!