domingo, 4 de mayo de 2008

Memory disambiguation o Intel SMA.

Los procesadores Intel Core 2, en todas sus variantes, incorporan una potente capacidad que les permite minimizar la penalización de continuar utilizando el arcaico sistema de FSB para comunicar con el NorthBridge, hablamos de Memory Disambiguation.


White paper sobre Intel SMA por Jack Doweck.


Die de Conroe, el Core 2 Duo de 65 nm y 4 Mb L2. Pulsa para ampliar.
.

Die de Penryn, el Core 2 Duo de 45 nm y 6 MB L2. Pulsa para ampliar.

La arquitectura Core 2 de Intel posee una característica que es responsable de buena parte de sus excelentes prestaciones y en parte gracias a estas técnicas ha demostrado su superioridad desde su introducción hasta el presente.

Memory disambiguation es una técnica de ejecución especulativa de las instrucciones que tengan que ver con la memoria, Intel lo llama SMA (por sus siglas en Inglés, Smart Memory Access).

Reordenando las lecturas y las escrituras en memoria y agrupándolas reduce el uso del FSB y optimiza el rendimiento. Cuando un procesador ejecuta una instrucción debe tener disponibles los datos sobre los que operar y si no es así disponer de ellos lo antes posible.

Esquema de SMA. Fuente: Intel corp.

Intel SMA trabaja del siguiente modo:

  • Especulativamente carga (load) los datos para las instrucciones listas para ejecución antes de ejecutar todas las escrituras (stores) pendientes.
  • Incluye un prefetcher que precarga datos/instrucciones de memoria antes de que estos sean requeridos siendo almacenados en caché L1 para su uso posterior.
  • De este modo se reduce muy notoriamente la latencia media de acceso a memoria (tanto que se acerca mucho a los AMD K8 o K10 que gozan de controladora de memoria integrada).

Según estudios de Intel Corp. un 38% de las instrucciones x86 son operaciones de memoria (loads o stores), siendo el número de loads doble al de stores. Lógicamente, para prevenir locks y corrupción de datos en el sistema, las escrituras y lecturas normalmente se hacen en orden de programa.

Una escritura en memoria cuya dirección no sea conocida puede colisionar con una lectura a esa misma dirección, por lo tanto, clásicamente se ejecutan todas en orden y siempre primero las escrituras.

Intel SMA rompe esta tendencia y permite así al Core 2 desplegar todo su ancho de banda de ejecución (es un procesador four-issue) especulando sobre si colisionarán o no las escrituras pendientes con las lecturas. En el caso general permite a las lecturas ejecutarse fuera de orden previamente a las escrituras (estadísticamente es improbable la colisión) y provee de un mecanismo para recuperación en caso de fallo en la predicción.

Referencia. documento sobre Intel SMA. Fotografías: fuente Intel corp.