jueves, 2 de febrero de 2017

Uncore clock en Core i7 920 stepping D0. Actualizado - LowLevelHardware

El procesador Core i7 es un complejísimo ingenio con una estructura eminentemente modular. Los ingenieros de Intel lo diseñaron de este modo para dotar de flexibilidad al producto pudiendo así fabricar diversas versiones para distintos nichos de mercado.

En este artículo analizo en profundidad la influencia de la frecuencia del Uncore en las prestaciones de un Core i7 920 fuera de especificación con los núcleos a 3.5 GHz y 3.628 GHz, con multiplicador de cores X20 y Uncore X20 con BCLK de 175 y 181 MHz respectivamente sin Turbo Mode en Memtest86+ 2.11.

En Windows, en cambio con Turbo Mode X21 en cores.

UncoreColoreados los cuatro núcleos de Nehalem. El resto es el uncore.

Una característica clave de todos los procesadores actuales es su naturaleza asíncrona. En el procesador Core i7 hay tres frecuencias de reloj diferenciadas por su multiplicador derivado de un reloj maestro, el BCLK:

  • Frecuencia de los núcleos de ejecución
  • Frecuencia del uncore
  • Frecuencia de los enlaces QPI

La frecuencia de los núcleos es la más conocida e inmediatamente relacionamos su incremento con mayor capacidad de cálculo. En el procesador Core i7 este dominio de reloj comprende los cuatro procesadores con SMT y sus cachés privadas L1 y L2.

En el sistema fuera de especificación que estoy preparando, la frecuencia objetivo es de 3.8 GHz (BCLK 181 y multiplicador X21 Turbo Mode).

PIC02645 Pasando Prime 95 Blend en Windows XP Pro 24h.

Por su parte, la frecuencia del buses QPI no tiene gran importancia en sistemas de un solo socket, pues solo se utiliza para la comunicación con el chipset X58. En sistemas multiprocesador (varios sockets) su función principal es la comunicación entre varios chips Nehalem (Xeon), por ello incorporan tres enlaces de 4.8 a 6.4 GHz.

Frecuencia del uncore en Core i7

En cambio, mucho menos conocida es la influencia de la frecuencia del uncore, o lo que no son los cores (núcleos). El Uncore comprende la caché L3 de 8 MB y sus buses y también las tres controladoras de memoria DDR3 integradas con sus buffers de escritura y los mecanismos de hardware prefetch.

En el modelo i7 920, la frecuencia nominal del uncore son unos meros 2133 MHz para 2666 MHz en los cores sin turbo mode (2.8 GHz en turbo Mode).

Si incrementamos este parámetro obtenemos un claro incremento de prestaciones en software que haga un uso intensivo de la caché L3 y de la RAM e incluso podemos llegar a un diseño síncrono con los núcleos.

Datos experimentales obtenidos en Memtest86+ 2.11 sin Turbo Mode:

Multiplicador CPU X20, Uncore X16 – X20. Las cinco primeras configuraciones con BCLK 175 MHz, la última 181 MHz. En las dos últimas obtenemos sincronía entre los núcleos y el Uncore con multiplicador en ambos casos X20.

Image1 Velocidades en MB/s de los diferentes niveles de caché y memoria para distintos ajustes.

La velocidad de acceso a la L3 compartida (shared) de 8 MB se incrementa en cuanto superamos el multiplicador 2:1 con la memoria (memoria 1400 MHz, uncore 2800 MHz) y a partir de ahí se mantiene en un valor constante, en este sistema 34314 MB/s. (Todas las medidas con BCLK 175 MHz):

imageVelocidad de la caché L3 de 8 MB para distintas frecuencias del Uncore. Cores a 3.5 GHz.

En cambio, la velocidad de acceso a memoria principal por el triple canal DDR3 tiene un comportamiento más curioso con dos inflexiones:

Empieza en 14286 MB/s para un multiplicador Uncore:RAM de 2:1, incrementándose a 15555 MB/s a frecuencias de 2982, 3158 y 3333 MHz del uncore. En cambio cuando sincronizamos el Uncore con los núcleos se incrementa notablemente su velocidad hasta los 17157 MHz.

Esto es debido a que no es necesaria ya resincronización alguna entre los dos dominios de frecuencia, con la latencia añadida que este proceso comporta.

imageVelocidad de la RAM para diferentes frecuencias del Uncore. Cores a 3.5 GHz.

Más de 17 GB/s es un excelente resultado teniendo en cuenta que he utilizado 3 GB en un triple canal de DDR3 1333 normal y corriente Kingston CAS 9 (9-9-9-24 2T). Eso sí, las latencias las he configurado manualmente a 7-7-7-21 con 1T de acceso con una modificación manual de todos los parámetros relevantes en BIOS incluyendo los voltajes.

Capturas de pantalla Memtest86+ 2.11:

PIC02637Cores 3.5 GHz, Uncore 2.8 GHz, memoria triple channel 1400 MHz 7-7-7-21 1T.

Con todo optimizado al máximo incluidos los timings de memoria a 7-7-7-21 1T, el resultado son 14286 MB/s con la memoria en triple channel 1400 MHz. La caché L3 llega a unos 32 GB/s.

PIC02638Cores 3.5 GHz, Uncore 2.98 GHz, memoria triple channel 1400 MHz 7-7-7-21 1T.

Aquí vemos el primer incremento de velocidad en lectura de memoria y caché L3. Respectivamente de 14286 a 15556 MB/s y de 32 a 34 GB/s para la L3.

PIC02779 Cores 3.5 GHz, Uncore 3.50 GHz, memoria triple channel 1400 MHz 7-7-7-21 1T.

Aquí tenéis el segundo punto de inflexión con un gran incremento de ancho de banda (de 15555 a 17157 MB/s), con relojes síncronos cores-uncore a 3.5 GHz.

PIC02644 Core i7 920 @ 3620 MHz cores y 3620 MHz Uncore. Core i7 síncrono (!!).

Estos hechos me hacen sospechar una importante reducción de latencia con estos ajustes; lo comprobaré en unos días ya en Windows.

El diseño asíncrono

Como siempre se ha demostrado estos resultados apoyan la mayor velocidad de los diseños síncronos, aunque por consideraciones de consumo y disipación térmica son más adecuados los diseños asíncronos como Phenom II y core i7.

Señalar por último, que el incremento de la frecuencia del uncore debe de ir acompañado a su vez de un incremento en su voltaje de alimentación, con lo que crece también el consumo y disipación térmica de esta parte del procesador. Por lo que es crítico contar con un adecuado sistema de refrigeración.

Nota: No existe método de conocer la temperatura del uncore o de la caché L3 de 8 MB (no poseen sensores térmicos, al menos visibles al usuario…) con lo que recomiendo prudencia.

Para la segunda parte de este artículo visita este enlace de ProfessionalSAT, con resultados prestacionales excepcionales en Windows.