miércoles, 5 de noviembre de 2008

La caché L3 de Core i7 Nehalem. Actualizado - LowlevelHardware

Intel ha echado el resto en el diseño y realización efectiva de la caché L3 de su nuevo procesador Core i7, antes conocido como Nehalem.

L3_400

La caché L3 de Nehalem, como todos sabéis de 8 MB y asociatividad de 16 vías, es compartida entre los cuatro núcleos y de naturaleza inclusiva. Está dividida en cuatro arrays de 2 MB:

2MB_L3array

Array de 2 MB de L3 de Nehalem.

Siendo el tercer nivel de caché el número de peticiones que recibe de los cuatro procesadores a los que sirve se ve muy reducido debido a las pequeñas y rápidas L2 de 256 KB de 8 vías lo que permite no saturar su bus de datos. Pensemos que la tasa de aciertos de la L2 debe rondar el 80 - 90% dependiendo del software.

Pondré un ejemplo, en numeroso software comercial la caché L2 de un Core2Duo mantiene un 300% más de peticiones que la L2 de un Athlon64 X2.

Esto es debido a la mayor tasa de aciertos de las L2 de los A64 X2 en comparación con los Core2Duo por su mayor tamaño (64 - 64 KB contra 32 + 32 KB).

En este sentido podemos considerar la necesidad de la pequeña L2 en los procesadores Intel Core i7 como un medio para mitigar el tráfico desde y hacia la L3 que, recordemos, sirve a cuatro procesadores muy eficientes sedientos de datos e instrucciones.

La L3 en AMD Barcelona Phenom

En su día critiqué el ,para mi, mayor defecto de la microarquitectura del AMD K10: su asincronía y sobretodo sus abultadas latencias de sincronización.

El K10, en su actual modelo superior, el Phenom 9950 BE mantiene su L3 y controladoras de memoria a 2 GHz mientras que los cuatro núcleos procesan a 2.6 GHz.

Esto provoca unas latencias de L3 que rondan los 45 - 50 ciclos y más grave todavía un ancho de banda de L3 en lectura realmente mediocre debido a su raquítico bus interno de únicamente 64 bit como podemos observar en el cuadro siguiente.

  Lectura GB/s Latencia ns Latencia ciclos
Caché L1 79.8 1.2 3
Caché L2 20.0 3.7 10
Caché L3 8.5 7.9 20
Memoria 8.0 55.0 138
Resultados obtenidos con Everest 4.50 en un AMD Phenom 9850 BE (2.5 GHz cores / 2 GHz L3 & MC) con 2 x DDR2 1066 5-5-5-16-2T.
 
La L3 de Intel Core i7 Nehalem:

El ingente equipo de arquitectos e ingenieros en Intel ha dado a luz un prodigio en forma de L3 para su nuevo procesador.

 

Lectura GB/s

Latencia ns

Latencia ciclos

Caché L1

51.2

1.2

4

Caché L2

34.1

3.2

10

Caché L3

18.2

5.7

18

Memoria

14.3

42.2

135

 

 

 

 

 

 

Resultados obtenidos con Everest 4.50 en un Intel Core i7 965 EE (3.2 GHz cores / 2.133 GHz L3 & MC) con 3 x DDR3 1066 7-7-7-20.

Si cambiamos la frecuencia del uncore a 2667 MHz (la nominal en el 965 EE) obtenemos ligeras mejoras en los datos de L3 y memoria principal:

  Lectura GB/s Latencia ns Latencia ciclos
Caché L1 51.2 1.2 4
Caché L2 34.1 3.2 10
Caché L3 18.9 5.2 17
Memoria 14.9 39.0 125
Resultados obtenidos con Everest 4.50 en un Intel Core i7 965 EE (3.2 GHz cores / 2.667 GHz L3 & MC) con 3 x DDR3 1066 7-7-7-20.

Conclusiones:

Intel ha dotado a Nehalem de un uncore con buses bien dimensionados para no ahogar a sus potentes núcleos de procesamiento.

Unas matemáticas elementales nos indican que el bus de L3 de Nehalem debe ser de 128 bit:

(2.133 GHz * 128 bit) / (8 bit / 1 byte) = 34.8 GB/s

34.8 GB/s es el ancho de banda asignado por Intel al bus de L3 en los modelos Core i7 920 y 940, lo que le da un margen de ampliación considerable y supera con creces el ancho de banda de tres canales de DDR3 1066 (25.5 GB/s).

En el Extreme Edition 965:

(2.666 GHz * 128 bit) / (8 bit / 1 byte) = 42.656 GB/s

Supera el ancho de banda de un triple canal DDR3 1333 (32 GB/s). Como vemos las frecuencias de Uncore no han sido escogidas por Intel al azar, sino para dotar de margen al diseño y ha fijado su frecuencia por defecto en el doble (2X) del valor de frecuencia de la DDR3 utilizada.

En resumen, una gran flexibilidad y un buen margen de ampliación sobretodo teniendo en cuenta el reloj dinámico del uncore y su funcionamiento comprobado sin fallos hasta los 4 GHz para hacer frente a 3 canales DDR3 a 2 GHz a 1.65 V.