Mostrando entradas con la etiqueta core 2 quad. Mostrar todas las entradas
Mostrando entradas con la etiqueta core 2 quad. Mostrar todas las entradas

jueves, 2 de febrero de 2017

Análisis de algoritmos de inteligencia artificial mediante PerfMonitor – LowLevelHardware

Este análisis lo he llevado a cabo en uno de mis sistemas Intel Core 2 Quad de la serie 9000 (stepping E0) con 12 MB (6 + 6) caché de L2 basado en núcleos Penryn de 45 nm a 3.4 GHz y con memoria de 4 GB a 1066 MHz, FSB1600 y Performance Level 5 para una excelente latencia de memoria de solamente 52 ns en Everest.

PIC03281

El software escogido es PerfMonitor, una aplicación freeware y portable que analicé someramente en un artículo anterior.

La carga de trabajo analizada son los algoritmos de cálculo utilizados en el sistema analizado en los siguientes artículos de ProfessionalSAT:

Core i7 @ 4.2 GHz. Algoritmos de inteligencia artificial. Parte III – ProfessionalSAT

Core i7 @ 4.2 GHz. Algoritmos de inteligencia artificial. Parte II – ProfessionalSAT

Sistemas de Altas Prestaciones, algoritmos de Inteligencia Artificial. Parte I – ProfessionalSAT

Todos los resultados son del Core 0 del procesador Core 2 Quad, aunque se pueden extrapolar a los demás pues son idénticos.

Image2

En primer lugar observamos cuatro lecturas:

  • Non Halted Clock Cicles: ciclos del procesador en actividad. Podemos ver que lo 3400 M de ciclos por segundo la CPU está ocupada. Uso de CPU: 100%.
  • Instructions Decoded: número total de instrucciones descodificadas por segundo. Vemos unos 4070M de instrucciones por segundo, más de una por ciclo (1.19 por ciclo).
  • Bus Clock Cicles: ciclos de uso del FSB. 100% de uso del FSB.
  • IPC: 0.9 instrucciones/ciclo ejecutadas.

Image3

En esta captura podemos ver:

  • Retired Mispredicted Branches: fallos de predicción del Branch prediction. 21.3 M por segundo.
  • Retired Branches: Branches (en millones) retiradas (procesadas) por segundo. 373 M Branch/s.
  • Retired Instructions: total de instrucciones procesadas y retiradas por segundo en millones. 2345 M instrucciones/s.
  • Branch Prediction Success Rate: tasa de acierto de los predictores de saltos del procesador Core i7 en este algoritmo: 94.3 %.

Image6 

Aquí observamos:

  • Retired Instructions: total de instrucciones procesadas y retiradas por segundo en millones. 2345 M instrucciones/s.
  • LLC Request: peticiones del procesador al LLC (Last Level Caché), en este caso las L2 unificadas de 6 MB, en millones por segundo. 145.9 M/s. Esto indica una importante tasa de fallos de las pequeñas L1 de 32 KB como ya he comentado en otros artículos hablando de los procesadores Core2.
  • LLC Mises: fallos de la L2 de 6 MB. 1.9 M/s. En este caso el procesador hace una petición por el FSB al chipset para pedir un acceso a RAM.
  • LLC Success Rate: Tasa de aciertos de la L2. 98.7 %. Excelente tasa gracias al gran tamaño de 6 MB para cada dos núcleos.

PIC03241

En un sentido más práctico comentar que esta carga de trabajo contiene un mix de instrucciones de enteros y su velocidad de ejecución viene marcada por la altísima cantidad de branches en el código lo que hace inevitable un alto número absoluto de fallos de predicción que acarrean latencias de “recuperación” del fallo de predicción.

Para minimizar esta latencia es crítica una configuración extrema en la frecuencia del Uncore y en las latencias y anchos de banda de L3 y memoria y también del subsistema de disco.

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

martes, 18 de marzo de 2008

Nehalem. Intel despliega su poder.

Con Nehalem, la saga Core 2 llega a su fin. Basado en los cimientos de su antecesor y en una evolución similar al cambio del K7 al K8 en AMD, Nehalem contará con controladoras de memoria y caché L3 integrados en el die. Los primeros integrantes de la saga serán los quadcores nativos de 45nm y 8 MB L3 y más adelante llegarán los octacore de 16 MB L3.
 

Intel roadmap hasta 2012. Gesher es una nueva Microarquitectura post-Nehalem.


Primera imagen disimulada del die de Nehalem. Fuente: Intel IDF.

Probablemente serán conocidos por el gran público como Core3Quad. Su arquitectura es una demostración de la potencia y el dominio de Intel como fabricante. En mi modesta opinión su arquitectura resulta, además de potente y evolucionaria, súmamente elegante.

Partiendo de los excelentes Core2 (Conroe y Penryn), Nehalem sienta las bases de un verdadero salto cualitativo en prestacónes. Aúna los mejores núcleos de procesamiento del mercado con un extraordinario diseño de baja latencia (siguiendo la estela de AMD) y altísimo ancho de banda.

Antecedentes. La era netburst.

Pocos años atras Intel estuvo contra las cuerdas. AMD llegó primero en la carrera del gigahertz (con su flamante K7 Thunderbird 1000 MHz), dominó con sus procesadoras K7 Athlon a los Intel Pentium III, Athlon XP peleó sin complejos con los primeros Pentium 4 Willamette de 180nm, Intel recuperó terreno con el núcleo Northwood Hyperthreading de 130nm, pero se hundió con Prescott 90nm al competir con el entonces novedoso y veloz K8 Athlon 64 130nm.

Para conseguir las máximas prestaciones, ya en la fase de concepción del procesador, hay dos caminos:

  • Crear un procesador ancho (Brainiac) que procese el mayor número de instrucciones en paralelo y consiga el mayor rendimiento por ciclo.
  • Diseñar una CPU de la máxima frecuencia posible (Speed Demon), eliminando toda la lógica innecesaria de las etapas críticas de ejecución y diseñar circuitería agresiva específica con el único objetívo de minimizar el tiempo de ciclo.

El segundo camino fué el elegido por Intel en la concepción del Pentium 4 Willamette, una CPU basada en un mal diseño de sus arquitectos (20!! etapas de pipeline con dos Replay system) salvada por los excelentes técnicos e ingenieros de procesos y circuitos de Intel.

Justificación de la arquitectura Netburst.


Netburst fué una huída hacia adelante. Una bonita idea teórica que las leyes de la física (concretamente la termodinámica) se encargaron de enterrar. Los planes de Intel eran espectaculares, se hablaba de CPUs a más de 10GHz. El propio Prescott debía llegar a los 5 GHz y Tejas, su sucesor, rondaría los +7 GHz. Pipelines cada vez más largos, mayores latencias, ... solo suplidos por más y más frecuencia con L2 de más y más capacidad. Este fué el plan de Intel y se plasmó en sus roadmap de la época.

Pero un día Intel despertó y, en un giro radical, canceló fulminantemente Tejas (ya en fase de pruebas, prácticamente terminado), dando por finalizada esta arquitectura. Emprendió la senda dual core con Smithfield 90nm (dos dies Prescott 1MB), modificó su derivativa, Presler 65nm, para favorecer un menor consumo y no una brutal y a cualquier precio escalada de reloj.

Prescott (31!!! etapas de ejecución con un Replay system, Replay buffer, 90nm 1 MB L2, tercera generación) sufrió graves problemas de consumo y disipación térmica que no pudieron ser solucionados y marcó el fin de una era, el fin de netburst. De toda la saga destacaría Northwood (130nm 512KB L2, la segunda generación) y el mencionado doble núcleo Presler (65nm 2 + 2 MB L2).

La arquitectura Core y Core 2.

Anteriormente, Intel tenía dos diseños diferenciados: uno para sobremesa y servidores (Netburst) y el segundo para portátiles (Core). Resulta muy costoso mantener y evolucionar dos productos tan divergentes, y en aquella tesitura y con los problemas de Prescott y el exagerado consumo de Tejas (se hablaba de más de 150W), se decidió muy acertadamente dar preferencia a la segunda opción, la llamada arquitectura Core.

Primero fué Banias (130nm), un descendiente directo del Pentium III Tualatin (130nm 512KB L2), integraba 1 MB de L2 y llegó a los 1.6GHz. Fué el procesador que dió prestigio a la conocida plataforma Centrino. Le siguió Dothan (90nm) con 2 MB L2 y ciertas mejoras internas y por fin Yonah (90nm, 12 etapas), conocido como CoreDuo, el primer dual core para portatiles. Integraba una caché L2 de 2 MB unificada y mejoras en el proceso SSE.



Tick-Tock. El imparable ritmo de Intel. Fuente: Intel IDF Sept. 2007.

En el centro de Intel en Israel (cuna de los procesadores de la plataforma Centrino) se llevaron a cabo los trabajos que conducirían al actual Core 2 Duo y Core 2 Quad (14 etapas, 65nm), un diseño universal, que abarca desde portátiles a servidores.

Se especuló que podía haber versiones de sobremesa de Yonah con frecuencias más elevadas, pero Intel esperó al Core 2. Con su núcleo Conroe, protagonizó una revolución, batió a los AMD Athlon 64 que durante tres años habían dominado el mercado aplastantemente.

Cuando Intel desveló las primeras estimaciones de prestaciones de Conroe, debo decir que todos fuimos escépticos. La diferencia era demasiada para ser verdad, superaba demasiado al excelente AMD Athlon64 clock for clock. ¿Se trataba de un truco de marketing? Resultó ser totalmente cierto.

Harpertown, dos dies Penryn, la derivativa de 45nm. Fuente: Intel IDF Sept2007.


El primer Nehalem. Core ¿3? Quad.


Fuente: Intel. Modificada para resaltar en amarillo las cuatro nuevas L2 256 KB.

La superficie estimada de Nehalem son alrededor de 240 mm2, un gran chip, nada barato de fabricar. Con una densidad en su L3 inferior a 6 mm2/MB, un resultado excelente y muy superior a su competidor, el AMD Shanghai. Intel demuestra su maestría en el diseño de las cachés.

AMD, en sus cores Barcelona y Shanghai, utiliza las mismas células para la L2 y la L3. Intel, al contrario, fabrica diferentemente ambas estructuras.

Foto de Nehalem. Fuente Intel IDF 2007.

 

El die monolítico de Nehalem, un quadcore nativo, consta de:

  • Cuatro procesadores derivados del núcleo Penryn (con numerosas mejoras).
  • Cuatro L2 de únicamente 256KB de bajísima latencia, dedicadas, una por núcleo.
  • 8 MB de L3 caché compartida (shared) por los cuatro núcleos.
  • Estructura de caché inclusiva, clásica de Intel.
  • QPI. QuickPath Interconect. Similarmente al HT3.0 de AMD.
  • 3 (!) controladoras de 64 bit DDR3 1333.
  • Multithreading de dos vías por núcleo.
  • En principio la L1 sigue en los niveles de Core2Duo: 32 + 32 KB.

Tres canales DDR3 1333 dan un ancho de banda agregado de 32GB/s. Compárese con, por ejemplo, un dual channel DDR2 800, 12.8GB/s. A 3GHz, un bus de 128bit, transfiere unos 48 GB/s, a 4GHz son 64 GB/s. Estos serán, si no me falla la intuición, los datos del bus de L3 de Nehalem. Un bus L3 de 64 bit sería claramente insuficiente.

En Nehalem, Intel añade entre otras novedades ya citadas:

  • Desaparece el FSB. Nehalem se comunica con el exterior mediante sus 3 controladoras de memoria DDR3 y los buses QPI.
  • Un nuevo TLB de segundo nivel (de mayor tamaño, más lento pero mucho más preciso) que actúa en caso de fallo del TLB primario aumentando el rendimiento y disminuyendo las latencias. En este particular Intel se acerca a AMD, con Conroe o Penryn era claramente inferior.
  • Un predictor de saltos (Branch Predictor) de segundo nivel, que apoya al principal y mejora las tasas de acierto.
  • Aumenta el nivel de paralelismo interno de cada procesador (recordemos que incorpora multithreading de dos vías) pudiendo analizar una ventana de ejecución de 128 (en lugar de 96 en Core2) instrucciones para extraer el máximo rendimiento.

Según Intel las nuevas L2 de 256 KB serán de baja latencia. Recordemos que en Core2Duo las L1 tienen 3 ciclos y las L2 14 ciclos. Si mantiene la latencia L1 (lo más probable), la L2 sin duda decrecerá, pero es difícil saber cuanto. Los Pentium III Coppermine con sus 256 KB tenían 10 ciclos de latencia, por ahí podría ir la de Nehalem. Yo apostaría por unos 9 ciclos.

Carlos Yus Valero – informaticapremium

domingo, 16 de marzo de 2008

QuadCores y multithreading en Windows XP. Aplicación Single Threaded.

Windows XP SP2 soporta nativamente los actuales procesadores AMD Phenom e Intel Core2Quad, ambos de ellos con cuatro nucleos de procesamiento. La pregunta que muchos se plantean es: ¿Está realmente optimizado su rendimiento? Aquí intentaré responderla y dar algunas claves para aumentar la efectividad de los micros Quad Core sean estos Intel o AMD.

Equipo Quad Core en el Administrador de Tareas de WinXP.
 
El administrador de tareas de Windows XP SP2 (Professional en este caso) es una importante herramienta en la optimización de este tipo de sistemas. Avanzándonos un poco, podemos decir que Windows XP, no sin buena voluntad, intercambia los threads entre núcleos sin un orden muy concreto ni coherente, generando con ello varios problemas.

Intel Core 2 Quad 6600 vs. AMD Phenom 9600 Black Edition

Sistema Intel:
  • Core 2 Quad 6600. Núcleo Conroe, stepping G0 (2.4GHz 2*4MB L2 / 266 QPB FSB)
  • Placa base Gigabyte GA-P35 DS3R rev3.1
  • 2*1GB Kingston HyperX DDR2 800 @ 5 6 6 18 2T (SPD)
Sistema AMD:
  • Phenom 9600 BE stepping B2. Núcleo Barcelona (2.3GHz 4*512KB L2 / 1.8GHz NorthBridge y 2MB L3, HT3 3.6 GHz).
  • Placa base Gigabyte GA-MA770DS3.
  • 2*1GB Kingston HyperX DDR2 800 @ 5 5 5 18 1T (SPD).
  • TLB Patch deshabilitado.
  • Controladoras de memoria Unganged.
  • Driver CPU AMD Phenom instalado. Descarga.
  • El resto de componentes es irrelevante para el resultado e identico en ambos sistemas.

Cálculo SuperPi mod1.5 XS 1M. Descarga.

SuperPi mod1.5 XS

Tiempos en segundos. SuperPi es un benchmark que claramente se ejecuta más rapido en la arquitectura Core2, con la elección de otro test cambiarían los resultados.


Tiempos de cálculo con el sistema por defecto.

T1, T2, ... T6 son las seis ejecuciones del test, siendo MED la media de los resultados. Como vemos, consistentemente acaba antes el cálculo el Core2Quad y por un buen margen, pero aquí no quiero resaltar diferencias de rendimiento entre las dos arquitecturas sino analizar su comportamiento en XP.

Corriendo el programa por defecto los resultados son:

  • Core2Quad 6600: 22,75s (media)
  • Phenom 9600 BE: 35,65s (media)

Ahora vamos al Administrador de tareas y hacemos click derecho en el ejecutable Super_pi_mod.exe, seleccionamos Establecer afinidad ...

Y nos aparecerá la siguiente ventana, seleccionamos CPU 0 (o cualquier otra), ya que SuperPi es single threaded (es decir, solo utiliza un núcleo), es del año 1995...

Processor Affinity CPU 0.

Los nuevos resultados son:

Tiempos de cálculo asignando manualmente la afinidad.

  • Core2Quad 6600: 21,06s (media)
  • Phenom 9600 BE: 33,85s (media)

Ambos tiempos de ejecución decrecen, claramente aumenta el rendimiento al asignar manualmente los procesos a los núcleos cuando el número de threads es inferior al de procesadores en el sistema. El equipo AMD mejora sus tiempos un 7,5% y el Intel un 5% debido a diferencias arquitecturales.

Conclusiones:

Al asignar manualmente los recursos físicos a las aplicaciones que no utilizan los cuatro núcleos podemos fácilmente aumentar el rendimiento de nuestra aplicación favorita. Y no solo eso, además conseguimos una excelente repetitividad de los resultados (desviaciones standard bajas) consiguiendo una buena trazabilidad y ahorrándonos tiempo de testeo.

Intel Core2Quad. Dos dies Conroe cada uno de ellos con 4MB de L2. Las dos cachés L2 de 4MB son independientes. Podemos diferenciar dos casos asignando la afinidad manualmente:

  • Datos compartidos entre core0 y core1 o core2 y core3. Los datos de la aplicación se cachean en la L2 compartida y se intercambian con latencias muy bajas entre los dos núcleos (del orden de 14 ciclos). La caché efectiva son 4MB.
  • Datos comunes entre núcleos que no comparten caché L2, por ejemplo Core0 y Core 3. Los datos de la aplicación se cachean en ambas L2 de 4MB (siendo el tamaño efectivo igualmente 4MB). La latencia core-core es del orden de 50-60 ciclos. Cuando un núcleo requiere un dato presente el la L2 del otro die debe acceder a él a través del FSB.

AMD Phenom. Un único die monolítico integra los cuatro nucleos y el uncore. Éste último consta principalmente del NorthBridge, la caché L3 de 2MB y 32 vías, las dos controladoras RAM DDR2 de 64bit y el HyperTransport3. Todo ello a una frecuencia inferior a la de los núcleos.

Al asignar SuperPi manualmente al core0, favorecemos los aciertos de caché L2 de este núcleo (las L2 de Phenom ,4 de 512 KB, son 1/8 de las dos del Core2Quad y es exclusiva por núcleo. Dado su pequeño tamaño y menor tasa de aciertos agradece más nuestra ayuda...), no siendole necesario "salir" a L3 o RAM y consiguientemente aumentando el rendimiento.

La penalización es mayor en este caso debido al escaso ancho del bus de L3 (64 bits) y su funcionamiento asíncrono respecto a los procesadores.

Con solo 64 bits AMD ha creado un futuro bottleneck en su arquitectura que si bien ahora no es muy notorio, con el paso a DDR3 y altas frecuencias en el bus de memoria deberán revisar y ampliar. A modo de curiosidad, a 1.8GHz y 64 bits, el ancho de banda (bandwidth) es algo superior a un dual channel DDR2 800.

En un próximo artículo analizaré la dinámica de estos procesadores en situaciones de multithreading con datos compartidos en sus cachés L2 / L3, con interesantes datos de rendimiento. Las aplicaciones seran 7zip (dualthreaded) y WinRar (multithreaded).

Carlos Yus Valero – informaticapremium