Mostrando entradas con la etiqueta optimizacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta optimizacion. Mostrar todas las entradas

jueves, 2 de febrero de 2017

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.

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.

Phenom II 3.6 GHz / 2.4 GHz uncore. Análisis en RMMA. Ampliado - LowLevelHardware

Ya en dos artículos, uno de ProfessionalSAT y el anterior de LowLevelHardware he analizado varios aspectos de este sistema. Aquí me centraré en las prestaciones del subsistema de memoria dando las cifras efectivos del ancho de banda para varios tamaños de acceso, haciendo un mapa detallado de la arquitectura de caché y memoria del AMD Phenom II.

Image1

RMMT RightMark Memory Analyzer

RMMT es uno de los componentes del avanzado paquete de análisis de microarquitectura RMMA de RightMark.org. Mide el ancho de banda de memoria para diferentes tamaños de acceso en lectura o escritura y es un software totalmente multithread.

Además soporta modos de acceso en lectura con hardware Prefetch y Non Temporal Store para escrituras saltando todos los niveles de caché.

Los valores dados por RMMA pueden considerarse valores reales, es decir, los que verá nuestro software, no como los de otros paquetes de software diseñados para dar un pico máximo que nunca se alcanza con software real (SiSoft Sandra …).

Análisis Phenom II fuera de especificación en RMMA

Configuración del sistema:

  • Procesador AMD Phenom II X4 940 Black Edition a 3.6 / 2.4 GHz
  • Placa Base ASUS M4A79-DeLuxe AMD 790FX – AMD 750
  • 4 GB en dos módulos Kingston HyperX DDR2 1066 5-5-5-15 2T 2.2V

En este artículo se detalla la configuración de BIOS del sistema con los núcleos a 3.6 GHz (3 GHz nominal) y el uncore (caché L3 y controladoras de memoria) a 2.4 GHz (1.8 GHz nominal).

Tabla_AnchoBanda

Ancho de banda del AMD Phenom II para diferentes tamaños de acceso:

  • Zona L1:                              0    -   256 KB
  • Zona L1 + L2:                      256  –  2304 KB (256 + 2048)
  • Zona L1 + L2 + L3:              2304 – 8448 KB (256 + 2048 + 6144)
  • Zona memoria principal:     8448 KB hasta el límite de la memoria física.

image

Phenom 3600 MHz / 2400 MHz uncore / 2 * 2 GB DDR2 1066 5-5-5-18 2T

Como vemos se delimitan perfectamente los diferentes niveles de caché. Todos los datos son en acceso concurrente de los cuatro núcleos, multithreaded x4.

Accesos en lectura dentro de cachés L1:

La caché L1 de los cuatro núcleos que componen un Phenom II es de 64 KB para datos y 64 KB para instrucciones. En este caso solo se testea la L1d y el tamaño total es de 64 x 4 = 256 KB.

16x4

Tamaño 64 KB. Lectura de 408274 MB/s en L1 multithreaded x4.

408274 MB/s equivalen a 399 GB/s. Cada L1 da unos 102000 MB/s (unos 100 GB/s) que una frecuencia de 3.6 GHz son unos 238 bits/ciclo efectivos o casi 30 bytes por ciclo efectivos (!!). Un valor impresionante.

Los procesadores Phenom y Phenom II son capaces de leer de L1 32 bytes por ciclo por núcleo, el valor más alto en la actualidad, duplicando a Core2 o Core i7, lo que queda demostrado por el dato anterior. Están dotados de dos puertos de lectura de 128 bits.

Al superar los 256 KB totales (64 KB x 4) entraremos en el terreno de la L2.

Accesos en lectura dentro de cachés L2:

La caché L2 de un Phenom II se compone de cuatro L2 unificadas discretas por núcleo (para datos e instrucciones) de 512 KB cada una para un total por chip de 2048 KB.

Los procesadores AMD tiene una arquitectura de cachés exclusiva, es decir, no duplican los contenidos de un nivel en el siguiente. Lo que hace que el tamaño efectivo total de caché sea igual al de la suma de los tamaños cada uno de los niveles.

128x4

Tamaño 512 KB. Lectura de 112676 MB/s en L2 multithreaded x4.

256x4

Tamaño 1024 KB. Lectura de 112807 MB/s en L2 multithreaded x4.

512x4

Tamaño 2048 KB. Lectura de 113061 MB/s en L2 multithreaded x4.

576x4_2304KB

Tamaño 2304 KB. Lectura de 111475 MB/s en L2 multithreaded x4.

111478 MB/s equivalen a 109 GB/s. Cada L2 transfiere unos 28000 MB/s (unos 28 GB/s) que una frecuencia de 3.6 GHz son unos 65 bits/ciclo efectivos o algo más de 8 bytes por ciclo efectivos, un valor no muy brillante, Core2 y Core i7 le superan ampliamente en velocidad de L2.

En los 2304 KB (576 KB x 4 núcleos) se sitúa el límite efectivo del tamaño de la L1 + L2 (64 + 512 KB) y por encima de este valor entramos en la zona de la caché L3.

Estrictamente hablando el papel de las L2 privadas de 512 KB consiste en reducir los accesos a la L3 compartida evitando la saturación de sus buses y proporcionar menor latencia y altas tasas de acierto al núcleo de ejecución.

Accesos en lectura dentro de caché L3:

Nota: Debido a que este sistema está fuera de especificación utiliza multiplicadores relativos de cores y L3 no standard y con ello los valores aquí detallados no son representativos del producto comercial en el tramo de L3 (576 – 8448 KB).

La caché L3 de Phenom II consta de 6144 KB unificados y comunes para los cuatro núcleos con buses de 64 bits, solo hay una L3 para servir a los cuatro procesadores. El tamaño efectivo (debido al diseño de cachés exclusivas) de la zona de L3 es de 6144 + (512 x 4) + (64 x 4) o algo más de 8 MB, 8448 KB.

Al superar este tamaño de bloque en acceso entraremos ya en memoria principal.

768x4_3072KB

Tamaño 3072 KB. Lectura de 43609 MB/s en L3 multithreaded x4.

1024x4_4096KB

Tamaño 4096 KB. Lectura de 44055 MB/s en L3 multithreaded x4.

2048x4_8192KB

Tamaño 7168 KB. Lectura de 44264 MB/s en L3 multithreaded x4.

44264 MB/s equivalen a 43 GB/s. La L3 unificada de 6 MB transfiere unos 44264 MB/s a los núcleos (unos 43 GB/s) o unos 11075 MB/s por núcleo.

Globalmente para todos los cores, a una frecuencia de 2.4 GHz (frecuencia del uncore) 44264 MB/s son unos 19.34 bytes/ciclo efectivos o casi 155 bits por ciclo efectivos. Siendo unos 4.83 bytes/ciclo o casi 39 bits/ciclo por cada núcleo referido a la frecuencia del uncore, en este caso en overclock a 2400 MHz.

En los 8448 KB, como he comentado anteriormente se encuentra el límite efectivo de la L3 para accesos multithreaded x4.

Accesos en lectura en memoria principal:

4096x4_16384KB

Tamaño 16384 KB. Lectura de 15041 MB/s en memoria multithreaded x4.

32768x4_131072KB

Tamaño 131072 KB. Lectura de 15024 MB/s en memoria multithreaded x4.

15024 MB/s (14.67 GB/s) se acerca mucho al límite teórico (17 GB/s) del dual channel DDR2 1066 que he instalado en el sistema, concretamente a un 86%. Un resultado excelente teniendo en cuenta que son medidas en condiciones reales.

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

Carlos Yus Valero – informaticapremium

viernes, 5 de diciembre de 2008

Hyperthreading en Core i7. Análisis - LowLevelHardware

Los procesadores Intel Core i7 basados en núcleos Nehalem incorporan SMT de dos vías (Hyperthreading) en cada uno de sus cores, obteniendo así un total de ocho CPUs lógicas para cuatro núcleos físicos.

PIC01477a

El brillo dorado de Nehalem

En sistemas operativos actuales de la familia Windows (léase XP, XP64, Vista o Vista64) no hay manera de diferenciar qué es un procesador físico y cual uno lógico. De este modo Windows, en su torpeza, asigna los threads a las CPUs lógicas sin saber realmente si son o no núcleos físicos con la consiguiente degradación de las prestaciones.

Sistema de pruebas:

  • Core i7 920 @ 3.33 GHz / 2.66 GHz Uncore (Voltaje nominal)
  • Turbo mode multithreaded 3.5 GHz
  • Turbo mode single threaded 3.66 GHz
  • BClock 167 MHz
  • Placa Intel DX58SO Intel X58 - ICH10 (Voltajes nominales)
  • 3 canales Kingston DDR3 1333 8-8-8-24-1T @ 1.62V
  • Western Digital 500 GB WD5000AAKS 7200 rpm 16 MB SATA2
  • Grabadora DVD SATA LG
  • ATI Radeon 4850 512 MB GDDR3 625 MHz / 2 GHz
  • F/A Tacens Radix 520W
  • Instalación limpia con drivers Windows XP Home SP3

PIC01482

Core i7 triple channel DDR3 1333 MHz

Image1

Core i7 920. Captura de CPU-Z 1.48 en Turbo mode x22 single thread a 3666 MHz

En un sistema Core i7, en el Administrador de Tareas de Windows, encontramos ocho CPUs lógicas como podéis observar en la siguiente captura de ocho instancias de Memtest Windows:

MemtestWIN_X8

Core i7 al 100% de uso en las ocho CPUs lógicas.

Hace unos meses ya hice una evaluación similar analizando el comportamiento de los procesadores quadcore (Phenom y C2Q) en Windows y su optimización asignando manualmente cada proceso a un core.

Caso 1: Un thread - single threaded

Limitamos manualmente WinRAR para que utilice sólo la CPU lógica 0.

WRAR_1THREAD

La velocidad obtenida en el test de WinRAR 3.80 es de 1143 KB/s utilizando solo uno de los ocho cores lógicos de Nehalem.

Caso 2: Dos threads - dual threaded

Limitamos a WinRAR a utilizar las CPUs lógicas 0 y 1:

WRAR_2THREAD_0_1

Obtenemos una velocidad de 1908 KB/s. Estamos utilizando dos procesadores distintos.

Ahora asignamos WinRAR a las CPUs lógicas 0 y 4:

WRAR_2THREAD_0_4

Obtenemos una velocidad inferior al caso anterior. Señal inequívoca de que la CPU lógica 0 y la 4 forman parte del mismo núcleo de procesamiento, el primer núcleo del Core i7. Pese a asignar a dos CPUs lógicas, estamos utilizando un solo procesador (con SMT).

En cambio cuando asignamos a las CPUs lógicas 0 y 1 estamos asignando a dos núcleos diferentes y de ahí el aumento de velocidad.

Caso 3: Cuatro threads - Four threaded

Asignamos manualmente WinRAR a las CPUs lógicas 0, 1, 2 y 3.

WRAR_4THREAD_0_1_2_3

Obtenemos un índice de 3157 KB/s con cuatro CPUs lógicas que corresponden a cuatro procesadores físicos. El caso óptimo.

En cambio, si seleccionamos las CPUs lógicas 0, 1 y 4, 5 obtenemos el siguiente resultado:

WRAR_4THREAD_0_1_4_5

Solamente 2884 KB/s porque en este caso hemos seleccionado 4 CPUs lógicas que corresponden sólo a dos núcleos físicos con HyperThreading (SMT).

Caso 4: Ocho Threads - Eight threaded

Dejando ejecutar por defecto a WinRAR 3.80 en un sistema Core i7, obtenemos la siguiente captura:

WRAR_8THREAD_01234567

Como decía, por defecto, queda asignado a las ocho CPUs lógicas (0, 1, 2, 3, 4, 5, 6 y 7) dando un rendimiento excepcional de casi 4200 KB/s. Recordemos que estamos en un sistema Core i7 a 3.5 GHz y Uncore a 2.66 GHz con triple canal DDR3 1333 8-8-8-24 1T.

Caso 5: Dos instancias de WinRAR - Eight threaded

Lanzando dos instancias de WinRAR y dejando todo por defecto obtenemos lo siguiente:

2xWRAR_2x8THREAD_01234567_01234567

Ambas instancias de WinRAR están asignadas a las ocho CPUs lógicas. En este caso obtenemos 2410 y 2512 KB/s. Un total de 4930 KB/s, lo que demuestra que una sola instancia de WinRAR no es capaz de saturar un Core i7 con sus ocho threads.

Podemos también asignar cada instancia de WinRAR a cuatro CPUs lógicas para "balancear la carga" obteniendo resultados similares:

2xWRAR_2x4THREAD_0145_2367

Conclusiones:

Hay que ser consciente de la complejidad de los procesadores actuales y en especial del procesador Nehalem de Intel. Al haber ocho CPUs lógicas pero sólo cuatro físicas hay que ser cuidadoso si deseamos extraer el máximo rendimiento de aplicaciones mal adaptadas a ocho threads.

Image2

KB/s en WinRAR 3.80 beta

Como vemos, la escalada de  rendimiento de uno a ocho threads es ejemplar y es debida al ingente ancho de banda de esta plataforma.

Image1

Debemos saber que las CPUs lógicas 0, 1, 2 y 3 tienen sus parejas en las 4, 5, 6 y 7. Es decir la CPU lógica 0 y la 4 forman parte del mismo procesador físico y así sucesivamente.

CPUsLogicasNEHdie

Las ocho CPUs lógicas y los cuatro núcleos de Nehalem 

Y por ello, asignando correctamente los procesos podremos extraer hasta la última gota de las prestaciones de estos excelentes procesadores.

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