domingo, 17 de enero de 2016

Los 60000 ciclos AVX 256 bit perdidos en Intel Skylake – LowLevelHardware

Como todos conocéis, desde Sandy Bridge 32 nm, Intel introdujo las instrucciones AVX FPU de 256 bit en sus procesadores aumentando con ello en un factor 2 la potencia de cálculo FPU de sus CPUs respecto a Nehalem 45 nm y Westmere 32 nm.

Intel-Skylake-core-14nm
Uno de los cores Skylake 14nm.

Con la microarquitectura Haswell 22 nm, Intel añadió el juego de instrucciones AVX2 y FMA FPU, que proporcionan proceso vectorial de enteros de 256 bit y unidades FPU Fused Multiply Accumulate combinadas respectivamente.

Intel Skylake Core i7 6700K

Hasta el momento, el Core i7 6700K es la CPU x86 quad core más rápida que he probado y además con un consumo de energía excelente. Y muy adecuada para cálculo matemático gracias al soporte AVX 256 bit y FMA junto a sus 8 threads simultáneos y el brutal ancho de banda de un dual channel DDR4 a frecuencias superiores a los 3 GHz.

En este artículo quiero resaltar una particularidad de los últimos procesadores Skylake 14 nm(Intel Core de sexta generación) que he comprobado en samples de Core i7 6700K configurados a 4.4 GHz.
Esta peculiaridad es el ahorro de energía en el que mantienen las unidades de cálculo vectorial de 256 bit cuando no están en uso, es decir, en las tareas más habituales del sistema operativo que no suelen involucrar cálculos FPU.

Es en el momento de lanzar un cálculo que actiave estas unidades de 256 bit, cuando se produce un fenómeno curioso.

Los 60000 ciclos AVX perdidos en Intel Skylake

Al inicio, y de manera sorprendente, la velocidad de proceso es de unas 4 a 6 veces inferior a la nominal en proceso AVX FPU, debido a que las unidades permanecen en ese estado latente de bajo consumo, probablemente con los 128 bit superiores deshabilitados y los datapath de 256 bit desactivado.

Tras un tiempo, dependiente de múltiples factores (la frecuencia de nuestro procesador, quizás de ajustes en la BIOS de nuestro sistema y también de peculiaridades o ajustes de nuestro sistema operativo) la velocidad de cálculo llega a su valor típico y normal y se mantiene ahí hasta finalizar el cálculo.

Skylake14nm 640Intel Skylake quad core 14 nm

Este tiempo de rendimiento reducido ronda los 60000 ciclos (unos 13 microsegundos en una CPU a 4.4 GHz).

Puede parecer poco tiempo, pero si nuestro cálculo consiste en pequeñas ráfagas de código AVX intercaladas entre otros fragmentos de código de otro tipo, puede provocar que nuestro cálculo sea globalmente unas 2 a 5 veces más lento de lo esperado (!!).

Como solución podemos hacer que estos cálculos en ráfaga procesen a velocidad nominal (elevada) si los mantenemos próximos en el tiempo, ya que estas unidades FPU AVX de 256 bit mantienen su velocidad de proceso durante unos 3 000 000 de ciclos (equivalentes a unos 600 micro segundos en una CPU a 4.4 GHz), después de los cuales retornan al estado de reposo y bajo rendimiento.

Otra solución consistiría en ir lanzando “de vez en cuando” algunas instrucciones AVX 256 bit para “despertar” las unidades FPU momentos antes (unos 60000 ciclos) de que lleguemos a ejecutar nuestro importante código AVX 256 bit.

Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes. Gracias de antemano.
El que tenga dudas o aportaciones tiene para ello la sección de comentarios, intentaré responder a todos y con la máxima claridad. Los Blogs deben de ser lugares de intercambio y agradezco vuestro feedback.

lunes, 30 de noviembre de 2015

BIOS y ahorro de energía memoria en DDR3 o DDR4 – LowLevelHardware

Si somos usuarios de un sistema con una placa base de gama media o gama alta tendremos a nuestra disposición cientos de ajustes en BIOS para optimizar nuestra máquina.

20151130_085658Ajustes manuales DDR3.

Estos ajustes finos ciertamente pueden marcar la diferencia y hacer que nuestro sistema sea muy superior en todos los aspectos a uno configurado con los mismos componentes por defecto:

Rendimiento y velocidad de proceso muy superior (más del 50%).

Temperaturas mucho más controladas en cada componente.

Menor nivel de ruido de refrigeración.

Consumo total de la máquina muy reducido (en ocasiones en cientos de watt).

Sería fácilmente cuestión de cientos de artículos y cientos de miles de palabras detallar estos ajustes y todas sus posibles combinaciones en función del hardware específico, requiere un minucioso estudio de los whitepapers de cada procesador, chipset, placa base e implementación específica de cada BIOS.

En este artículo me referiré a una máquina con un procesador Core i7 3770K hand picked (seleccionado entre decenas de samples) configurada a 4.4 GHz a un voltaje muy reducido de solo 0.020 V superior al nominal mediante offset y con estabilidad absoluta con estos ajustes.

DRAM Power Management and Initialization

Aquí dejo enlaces a los Datasheet PDF relativos a:

La tercera generación Intel Core, Ivy Bridge 22 nm. (parte 1, parte 2).

La cuarta generación Intel Core, Haswell 22 nm. (parte 1, parte 2).

La quinta generación Intel Core, Broadwell 14 nm. (parte 1, parte 2).

La sexta generación Intel Core, Skylake 14 nm. (parte 1, parte 2).

En la sección 4.3.2 del manual en PDF 3rd-gen-core-desktop-vol-1-datasheet.pdf se detallan los ajustes que nos interesan relativos a la gestión de energía de las controladoras de memoria del procesador y de los módulos DDR3.

DRAM_Power_Management_and_Initialization_01DRAM Power Management and Initialization

En síntesis, los ajustes posibles serían:

Deshabilitar totalmente la gestión de energía para obtener las máximas prestaciones (opción 1 de la captura inferior).

Buscar un compromiso óptimo entre prestaciones y consumo (APD – PPD, opción 5).

Ir al máximo ahorro energético, menor consumo y disipación térmica (opción 4).

DRAM_Power_Management_and_Initialization_02DIMM Power Down modes.

En todas las máquinas que diseño me decanto por el ajuste central, el punto 5, APD – PPD, el óptimo compromiso.

DDR3_APD-PPDEl modo APD – PPD ofrece el compromiso perfecto.

En el caso que nos ocupa se consiguen ahorrar 6W de consumo en reposo (idle) y en uso normal (internet, compresión de datos, …) se mantiene en valores similares.

Es importante configurar el siguiente ajuste:

DDR3_Fast_ExitDDR DIMM Fast Exit Mode proporciona ahorro de energía con baja latencia de salida.

Con el ajuste de ahorro de energía deshabilitado no se consigue más velocidad de proceso ni mejores tiempos de cálculo en coma flotante o compresión de datos… pese a lo que sea lógico pensar.

Por ejemplo en WinRAR 5.21 x64, las velocidades y consumos son los siguientes:

Ajuste APD – PPD. Consumo de 94 a 109W y velocidad máxima 10459 KB/s.

Ajuste disabled. Consumo de 98 a 112 W y velocidad máxima 10467 KB/s.

Como podéis ver, no hay cambios significativos en la velocidad de compresión de datos y en cambio se ahorran 3 – 4 W en este test intensivo de memoria.

WinRARWinRAR en modo APD – PPD.

Como antes he señalado, en modo de reposo en el escritorio de Windows, se consiguen 6 W de bajada de consumo en el enchufe para un total de 48W (con 16 GB DDR3 2133 y el ajuste @ 4.4 GHz, SSD Samsung Evo 850 250 GB, disco duro 4 TB WD Caviar Black, tarjeta gráfica AMD 260X GCN 2 GB, tarjeta de sonido SB X-Fi y unidad óptica) desde los 54W con el ahorro de energía de la memoria DDR deshabilitado.

Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes. Gracias de antemano.

El que tenga dudas o aportaciones tiene para ello la sección de comentarios, intentaré responder a todos y con la máxima claridad. Los Blogs deben de ser lugares de intercambio y agradezco vuestro feedback.

lunes, 23 de noviembre de 2015

Memoria G.Skill DDR4 4133 – LowLevelHardware

G.Skill ha lanzado al mercado módulos DDR4 de 8 GB @ 4.133 GHz y 1.40 V para los procesadores Core i7 de sexta generación Skylake de 14 nm, los Core i7 6700K.

Core_i7_6700K_4GHzCore i7 Skylake 14 nm 6700K funcionando a 4.2 GHz.

Los roadmap oficiales JEDEC para DDR4 ya apuntaban desde los inicios del standard a velocidades máximas nominales de 4.266 GHz, del mismo modo que en su día, al lanzar en sus inicios la DDR3 se habló de 1.6 GHz y posteriormente 2.133 GHz.

A día de hoy, módulos de este tipo son de una utilidad limitada por sus pésimos timings, llevados al límite para lograr estabilidad a frecuencias superiores a los 4 GHz:

GSkill_DDR4_4133_8GB_Timnings_640Memory timings de G.Skill DDR4 4133.

Como vemos a 3.6 GHz todavía conserva buenos timings de 16 16 16 36 2N pero al llegar a 3.866 GHz y 4.0 GHz se degradan mucho hasta los 18 22 22 42 2N y 19 21 21 41 2N respectivamente.

GSkill_DDR4_4133_8GB_XMPPerfiles XMP del módulo 8 GB DDR4 G.Skill 4.133 GHz.

Lo notable es el voltaje de solo 1.35 V, que no es elevado pensando en las altísimas frecuencias.

En el ajuste de 4.133 GHz necesitan ya un voltaje de 1.40 V y empeoran las latencias hasta 19 25 25 45 2N… simplemente para “homologar” que llegan a esa frecuencia para un ancho de banda por canal de 33.064 GB/s (66.128 GB/s en dual channel).

GSkill_DDR4_4133_8GB_TimingsA 4.133 GHz se degradan en gran manera los timings.

Seguramente yo me quedaría con el ajuste a 3.6 GHz a 16 16 16 36 2N @ 1.35 V en dual channel por su baja latencia. Este ajuste daría un ancho de banda de 28.8 GB/s por canal para un total de 57.6 GB/s, ¡¡simplemente brutal!!

GSkill_DDR4_4133_8GB_640[3]

Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes. Gracias de antemano.

El que tenga dudas o aportaciones tiene para ello la sección de comentarios, intentaré responder a todos y con la máxima claridad. Los Blogs deben de ser lugares de intercambio y agradezco vuestro feedback.

miércoles, 7 de octubre de 2015

AMD Excavator 28 nm – LowLevelHardware

Ya a finales de 2015, AMD nos trae la cuarta y última iteración de su arquitectura Bulldozer inicialmente lanzada en el nodo 32 nm HKMG de Global Foundries.

Carrizo coresDos módulos AMD Excavator (cada uno con 2 INT cores) con 2 cachés L2 de 1MB.

Tras eliminar numerosos bugs, activar unidades deshabilitadas en Bulldozer (generación 1) como la IDIV y reducir paulatinamente el consumo con Piledriver 32 nm (generación 2) y Steamroller 28 nm (generación 3) además de ir lentamente aumentando el IPC, llega Excavator 28 nm con mejoras incrementales en muchos aspectos y también alguna pequeña revolución.

Excavator. los cambios más importantes respecto a las generaciones anteriores:

  • Reducción de la caché L2 de 2 MB a 1 MB por módulo con una importante reducción de área y mejorando la latencia. 2 MB L2 era demasiado para este tipo de cores fabricados en 28 nm, un mal compromiso área / prestaciones.

CarrizoL1d_32KB_8víasAMD Excavator L1d: 32 KB 8 vías.

  • Por fin se dobla el tamaño de la caché L1d de 16 KB a 32 KB por INT core y su asociatividad aumenta hasta las 8 vías. Por fin AMD ha visto la luz en cuanto al diseño de la caché L1… 32 KB con 8 vías es un excelente diseño. Era una mejora muy necesaria.

Kaveri 2 Clusters 2xL2Dos módulos AMD Steamroller (cada uno con 2 INT cores) con 2 cachés L2 de 2 MB.

Desgraciadamente, AMD no puede fabricar actualmente en nodos de 20 / 22 nm ni en los nuevos nodos de 14 nm (como su rival Intel) con el fin de reducir el área de sus productos y con ello su coste de fabricación.

Solución de los ingenieros de AMD: seguir en los 28 nm pero reduciendo el área (superficie) de sus chips implementando librerías de alta densidad procedentes del mundo del diseño de GPUs:

LibreríaAltaDensidad640Con el uso de librerías de alta densidad AMD logra reducir el área de Excavator.

Gracias a estas mejoras se cifra en un 30% la reducción de superficie.

A todas estas nuevas técnicas se añaden las mejoras importantes que Steamroller 28 nm ya introdujo respecto a sus antecesores de 32 nm, Piledriver y Bulldozer:

  • La L1i compartida para los 2 INT cores aumentó a los 96 KB y una asociatividad de 3 vías (representó un gran avance sobre los 64 KB / 2 vías, aunque 3 vías sigue siendo poco, muy poco para dos threads).
  • El decoding doble por módulo, uno para cada INT core, un cambio que esta microarquitectura (Bulldozer) pedía a gritos…

Excavator y el segmento de 15 watt:

Hay que tener claro que AMD busca reducir el consumo y disipación térmica de sus SOCs por todos los medios posibles y por ello ha optimizado críticamente Excavator y su primera implementación comercial, las APU Carrizo con 4 INT cores y 8 clústeres GCN 2 (Radeon R7).

Por ello ha optimizado el conjunto de 4 INT cores + 8 clústeres GCN 2 + controladoras DDR3 y resto de circuitería para un TDP de 15 watt, que se extenderá fácilmente a los 35 watt.

Carrizo15_640AMD Excavator: excepcional rendimiento en 15 watt. Con 35 watt menor ventaja.

Esto significa que cuanto mayor frecuencia le pidamos a Excavator, menor ventaja mostrará respecto a sus antecesores. No esperéis diseños de Carrizo de 100 watt a frecuencias de 4 GHz o más.

Las frecuencias iniciales rondarán a 35 watt los 2.1 GHz con Turbo hasta 3.4 GHz con los cores gráficos a 800 MHz y soporte de DDR3 2133 en el modelo tope de gama, el FX-8800P.

Frecuencias640

No está nada mal para 35 watt, un excelente resultado.

Conclusiones

AMD prepara el desembargo de Zen 14 nm, seguro que no sin numerosos problemas. Recordemos que va a utilizar el nodo de 14 nm de Samsung (ya fabrica los SOCs de los Galaxy S6 con esta tecnología) y no estará exento de dificultades el diseñar un chip tan complejo como Zen en un nodo y proceso de fabricación tan sumamente diferente de los actuales.

El puente hacia Zen son los chips con cores Excavator y AMD ha demostrado que ve claras las necesidades del mercado con su enfoque en el segmento de los 15 watt.

Excavator parece que dará mucha guerra en el segmento de los UltraBooks, será un chip muy equilibrado en TDPs de 15 a 35 watt, en este sentido, incluso creo que puede ser un gran rival respecto a los Core i5 de la serie U.

Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes. Gracias de antemano.

El que tenga dudas o aportaciones tiene para ello la sección de comentarios, intentaré responder a todos y con la máxima claridad. Los Blogs deben de ser lugares de intercambio y agradezco vuestro feedback.

domingo, 16 de febrero de 2014

AMD Steamroller core. AMD Kaveri. Parte 2 – LowLevelHardware

La primera implementación comercial de los cores Steamroller 28 nm es en las nuevas APU Kaveri, formadas por 2 clústers de 2 INT cores y una FPU y dos cachés L2 de 2 MB junto con la GPU integrada basada en la última generación de gráficas Radeon GCN 2.0.

Kaveri28nmDie de AMD Kaveri 28nm. En naranja la GPU Radeon R7.

El proceso de fabricación de 28 nm SHP de Global Foundries

AMD ha dado un paso decidido que marca una nueva etapa para la compañía: deja los procesos de fabricación orientados solamente a altísimas frecuencias (superiores a los 4 GHz) y opta por el contrario por procesos Bulk dirigidos a menor consumo, menor área con una penalización en frecuencia máxima.

Es decir, un procesador fabricado en el nuevo nodo de 28 nm SHP presenta mayor densidad de transistores por mm2, menor coste de fabricación, menor consumo a una frecuencia dada (por ejemplo en el rango hasta los 4 GHz aprox.) a costa de frecuencias pico inferiores.

A mi modo de ver una sabia y completamente acertada decisión, ya que, anteriormente, AMD no podía desplegar el potencial verdadero de frecuencia de la microarquitectura Bulldozer debido a su excesivo consumo al ir subiendo la frecuencia de funcionamiento con el necesario aumento exponencial de voltaje.

Es de esperar por ello, que desde ahora AMD se dedique a integrar más funcionalidades en cada uno de sus chips (más cores, más potencia de GPU…) ya que tiene un nuevo margen de disipación térmica máxima o TDP.

El core Steamroller

EN la tercera iteración de la familia de cores 15h, microarquitectura Bulldozer para los amigos, AMD ha hecho cambios realmente importantes respecto a la primera y segunda generación.

Steamroller Compute UnitUn cluster de arquitectura Steamroller: 2 INT cores, 1 FPU y 2 MB de L2.

Steamroller Cluster 640Fotografía de un clúster Steamroller perteneciente a un die AMD Kaveri 28nm.

EN AMD Kaveri se integran dos Clústers completos para un total de 4 INT cores:

Kaveri 2 Clusters 2xL2AMD Kaveri: Dos clústers Steamroller 28nm con sus cachés L2 enfrentadas.

En el siguiente artículo me centraré en las mejoras, muy extensas, introducidas por AMD en Steamroller.

Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes. Gracias de antemano.

El que tenga dudas o aportaciones tiene para ello la sección de comentarios, intentaré responder a todos y con la máxima claridad. Los Blogs deben de ser lugares de intercambio y agradezco vuestro feedback.