viernes, 23 de mayo de 2008

Sobre la cache de Nehalem

En un artículo anterior hice una extensa discusión sobre la siguiente microarquitectura de Intel, conocida como Nehalem. Aquí querría puntualizar algunos hechos sobre su estructura de cache y aventurar algunas posibilidades en cuanto a latencias.

Die de Nehalem quad core.

Las caches de Nehalem quad core son:

  • Cache L1i: 32 KB, 4 vías.
  • Cache L1d: 32 KB, 8 vías, dual ported. Latencia 4 ciclos.
  • Cache L2: 256 KB, 8 vías, baja latencia.
  • LLC, Cache L3 UNIFICADA para 4 cores: 8 MB compartida para los 4 cores, 16 vías.

En los Core 2:

  • Cache L1i: 32 KB, 8 vías.
  • Cache L1d: 32 KB, 8 vías, dual ported. Latencia: 3 ciclos.
  • LLC, Cache L2 UNIFICADA para 2 cores: 2 o 4 MB o 3 o 6 MB según versión del núcleo. Latencia 14 o 15 ciclos.

Como comenté en su momento, Nehalem cuenta con una arquitectura de cache inclusiva, es decir, los datos residentes en L1 están copiados en L2 y los de L2 también en L3.

Esta distribución tiene ventajas (poco tráfico de coherencia de L1 y L2 internúcleo) y desventajas (tamaño efectivo de caché igual al tamaño del LLC o último nivel de caché).

Caches L2 privadas de baja latencia de 256 KB

Las L2 independientes o privadas para cada core, aportarán un almacenamiento de tamaño intermedio y de muy baja latencia según Intel.

Intel asegura que tendrán latencias Load to use inferiores a 12 ciclos, yo espero razonablemente que más bien estén en el entorno de los 10 ciclos.

Cache L3 compartida de 8 MB

La latencia de la L3 en Nehalem será comparable a la de AMD Barcelona o AMD Shanghai, es decir muy elevada.

La latencia efectiva de Barcelona se sitúa en el rango de los 48 ciclos. Según los ingenieros de Intel, la L3 de Nehalem andará por los 30 ciclos en el caso óptimo y más de 40 en el caso general.

Extraído de:

http://lowlevelhardware.blogspot.com/2008/03/peculiaridades-microarquitectura-phenom.html

Como anteriormente señalamos, tenemos dos frecuencias diferenciadas y un flujo de datos bidireccional entre ambos dominios de reloj. Lo que acarrea latencias de sincronización, un conocido enemigo del rendimiento. Es el precio a pagar por mantener a raya el consumo.

La "extrañamente" elevada latencia de la caché L3 (sobre los 49 ciclos) y la degradación de algunos parámetros de acceso a memoria respecto a su antecesor, el K8 (empeora ligerísimamente la latencia de memoria principal) se explican por esta asincronía.

La adición de un tercer nivel de caché tiene ventajas e inconvenientes, entre las ventajas destacaremos la coherencia de los datos de los cuatro núcleos al nivel de L3, ahorrando tráfico a las controladoras de memoria y como desventajas la adición del chequeo de L3 en los accesos a memoria. (En los K8 no era necesario puesto que no había L3).

En resumen, con Nehalem Intel prosigue su imparable ritmo de mejoras microarquitecturales a un paso hoy por hoy imposible de seguir por sus competidores.