Apartado Técnico: David Sarmiento Portocarrero
Edición, pruebas y publicación: Luis Felipe Castillo
PUBLICIDAD
Bulldozer ya está aquí y con él AMD estrena su nueva arquitectura cargada de nuevas tecnologías que la ponen a la par con los actuales microprocesadores de Intel, en cuanto a su compatibilidad con los modernos conjuntos de instrucciones añadidos a la arquitectura x86 en los últimos años: SSE4.1, SSE4.2, AVX, y AMD no desperdicia la oportunidad de ofrecer 2 nuevos tipos de instrucciones aún no implementadas por su rival: FMA4 y XOP; pero sus más comentadas y menos comprendidas novedades la tenemos en su diseño interno, con su (valga la redundancia) “novedoso” diseño modular, concepto nunca visto anteriormente en otro microprocesador, y que desconcierta a muchos usuarios.
Bulldozer es muy distinto a otros microprocesadores multi-núcleo existentes, pues está conformado por hasta 4 módulos, dichos módulos están basados en el procesamiento CMT (Cluster Multi Threading), el cual es la respuesta de AMD a la tecnología SMT (Simultaneous Multi Threading) de Intel, la que promociona con el nombre comercial de HyperTreading. Para entender lo que es un módulo tendremos que realizar una breve y muy simplificada descripción de ambas tecnologías; y de lo que conocemos por núcleo.
¿Qué es un núcleo?
Lo que actualmente conocemos como núcleo (refiriéndonos exclusivamente a la arquitectura x86) es un conjunto de unidades de cálculo entre las que tenemos la unidad aritmética-lógica (ALU), la unidad de punto flotante (FPU), la unidad de generación de direcciones (AGU), los registros de hardware (de propósito general, de control, y los registros renombrables o “alias”), las unidades de ejecución, decodificador x86, caches (L1, L2 y L3); la unidad de predicción de saltos condicionales, entre muchas otras, las que trabajando en conjunto permiten la ejecución de una amplia variedad de operaciones matemáticas y lógicas de diversa complejidad, usadas por la extensa gama de aplicaciones x86 existentes. Los actuales microprocesadores usan varios de estos núcleos trabajando en conjunto repartiéndose la carga de trabajo para ofrecer un mejor desempeño en las tareas de uso cotidiano.
Tecnología SMT (Simultaneous Multi Threading)
Esta tecnología persigue maximizar el rendimiento por núcleo del microprocesador, aprovechando los por así llamarlos “ciclos ociosos” (más adelante veremos un ejemplo sobre ello) que se dan durante la ejecución de los cálculos que realiza el microprocesador, situación que se da más seguido de lo que se piensa. Para implementarla Intel duplicó muchas de las unidades de hardware presentes en sus microprocesadores, entre las que tenemos: registros de propósito general (Adder, Address, Counter, Index, Stack, String), registros de control (Instruction Flag, Interrupt Mask, Memory Management Unit, Status), y registros “alias”, y compartiendo otros como los recursos de ejecución principal, ALU, AGU, FPU, entre otros; el hardware duplicado según Intel representa un incremento de entre un 5 a 10% en el número de transistores del microprocesador, pero que a su vez le permiten ejecutar 2 hilos de procesamiento por núcleo; es decir un núcleo actuando como 2 de ellos. Esto permitió que Intel pudiera generar un núcleo “virtual” o “lógico” adicional en cada uno de sus núcleos.
PUBLICIDAD
Por ejemplo aunque un microprocesador Core i7 2600 posee 4 núcleos físicos, la tecnología HyperThreading permite “engañar” al sistema operativo para que muestre 8 núcleos al usuario, y que funcionen como tales bajo ciertas condiciones. Como toda tecnología HyperThreading no es perfecta, y tiene la desventaja de no poder ejecutar 2 instrucciones que usen los mismos recursos de hardware del núcleo; pero aun así ofrece en la mayoría de casos un incremento al performance de entre un 10% a un 70% siempre y cuando se den las condiciones adecuadas.
Tecnología CMT (Cluster Multi Threading)
La tecnología CMT persigue los mismos objetivos que HyperThreading: incrementar el desempeño, permitiendo la ejecución de más instrucciones por núcleo. Su implementación es muy similar a SMT, duplicando muchos registros de hardware y compartiendo otros, pero con CMT AMD lleva las cosas un poco más allá al duplicar también la unidad aritmética-lógica (ALU) dotándola con su propio cache L1 de datos (el L1 de instrucciones está presente en el módulo y se comparte entre ambas ALUs); con ello al igual que con HyperThreading se consigue ejecutar 2 hilos de procesamiento por núcleo; aunque si consideramos a los 2 núcleos generados por HyperThreading como “núcleos virtuales”; podríamos llamar a los del módulo Bulldozer “núcleos virtuales con ALUs físicas”.
Según AMD el ALU adicional ocupa un 15% más de transistores en comparación con un núcleo tradicional, pero ello no quiere decir que no se requiera un mayor número de transistores para los recursos de hardware duplicados ni para la circuitería encargada de la compartición de sus unidades. CMT, al igual que SMT, también posee algunas desventajas, y en este caso su desventaja es que únicamente es capaz de ejecutar 1 instrucción AVX de 256 bits por ciclo, además de que al igual que HyperThreading desperdicia algunos ciclos al “decidir” cuando repartir o dedicar los recursos a 1 o más hilos de ejecución; aunque según AMD esto el impacto de ello en el rendimiento es mínimo.
AMD cree que la mayor parte de las aplicaciones x86 usan procesamiento de enteros (ALU), y que son pocas las veces que se usa el procesamiento de punto flotante (FPU); y esta fue la premisa en la que basaron el desarrollo de su arquitectura Bulldozer, y el motivo por el que se decidieron a implementar el procesamiento CMT en vez de continuar con la carrera por el mayor número de núcleos como lo venían haciendo con sus actuales Phenom II X6.
Quizá todo lo anterior sea más fácil (o difícil) de entender resumiéndolo a una tabla comparativa, donde incluimos también algunos microprocesadores que carecen de ambas tecnologías (ni SMT ni CMT):
CMT y SMT: Funcionamiento
A partir de este momento lamentablemente tendremos que recurrir a la odiada por muchos matemática para ilustrar de cierta forma como se comportan ambas tecnologías en situaciones reales. Como describimos anteriormente la unidad aritmético-lógica (ALU) es capaz únicamente de realizar cálculos de enteros con operaciones matemáticas básicas como la suma y resta, además es también la encargada de realizar operaciones lógicas como “si”, “no”, “y”, “entonces” entre otras. Por su parte la unidad de punto flotante (FPU) es la encargada de realizar cálculos matemáticos complejos como multiplicaciones, o cálculos trigonométricos, a números gigantescos o muy pequeños.
Para efectos didácticos, hipotéticamente daremos a la ALU la capacidad de realizar sumas y restas, y a la FPU la capacidad de realizar multiplicaciones y divisiones (obviaremos el uso de cifras enormes); cada operación representará los recursos usados por un núcleo: ALU (+-) y FPU (*/), donde en un núcleo tradicional podría realizar una suma o una resta (pero no ambas a la vez), ejecutando en simultáneo una multiplicación o una división (pero no ambas a la vez), siempre y cuando no exista dependencia. Iniciamos este ejemplo con 7 muy sencillas operaciones de sumas, restas, multiplicaciones, y divisiones; cada una de las cuales con un color distinto para su fácil identificación (resultado incluido, no se preocupen por calcularlas):
Hemos elaborado unas tablas muy simplificadas de como un núcleo resolvería las 7 operaciones propuestas, las que como se aprecia muchas de ellas no pueden ser calculadas independientemente de las otras, pues dependen de la resolución de otras para poder calcularse, a los estados donde la ALU o la FPU se quedan sin hacer nada esperando la solución de una operación dependiente de otra se le conoce como “ciclo ocioso” (representado por los cuadros sin datos en las tablas); en el ejemplo propuesto a un núcleo tradicional con las limitaciones hipotéticas expuestas le llevaría 15 ciclos resolver estas 7 operaciones; claro que esto es de modo simplificado, pues en realidad resolver estas operaciones requeriría muchos más ciclos pues hay que “leer” los datos, almacenarlos, dividir estas operaciones en micro-operaciones, decidir el orden cada una de las micro-operaciones a procesar, entre otros muchos pasos que escaparían a lo que queremos transmitir.
Vemos que la tecnología SMT (HyperThreading) consigue recortar a 13 los ciclos necesarios para completar la resolución de las 7 operaciones, lo que en términos de eficiencia sería un incremento al rendimiento del 13.3%, pues aprovecha los recursos adicionales no usados (suma, resta, multiplicación, división) para ejecutar un nuevo hilo de ejecución, logrando vencer la limitación propuesta de no poder “sumar y restar” o “multiplicar y dividir” en simultáneo; pero debido a que no es capaz de ejecutar 2 hilos que compartan los mismos recursos, en este ejemplo no puede realizar 2 sumas en simultáneo, ni 2 restas en simultáneo, y lo mismo se aplica a las multiplicaciones y divisiones.
Por otro lado un núcleo Bulldozer (CMT) al poseer una unidad ALU dedicada resuelve algunas de las limitaciones de SMT, pudiendo (siempre ciñéndonos a este ejemplo propuesto) realizar 2 operaciones idénticas en el 2º hilo de procesamiento, logrando con ello reducir a 10 el número de ciclos empleados para resolver las 7 operaciones (una eficiencia del 33.3%), comportándose de forma muy similar a como lo haría un 2º núcleo verdadero pero sin llegar a serlo.
Sin proponérnoslo este ejemplo de cierta forma ilustra la relativa complejidad del multiproceso, y aunque debido a que usamos tan sólo 7 operaciones no se alcanzó una eficiencia muy alta, la que debería incrementarse considerablemente con los millones de cálculos que realiza comúnmente un microprocesador.
CMT y Windows XP, Vista y 7
Si bien en teoría CMT suena bien, es un diseño tan nuevo que para aprovecharlo del todo se requieren sistemas operativos más modernos como Windows 8; pues Windows 7 simplemente no soporta completamente CMT; antes de proseguir, les dejamos un gráfico con la distribución de los núcleos, sean estos “reales” o generados por las tecnologías SMT/CMT:
El scheduler (administrador de ejecución de hilos) de Windows 7 (y anteriores) está completamente optimizado para sacarle partido a SMT, tecnología vigente desde hace 9 años, a la que le saca el máximo partido ubicando primero los hilos más demandantes en los núcleos “reales” para obtener el máximo desempeño, y activando el uso de los núcleos “virtuales” únicamente para cuando se requiera un alto número de hilos de procesamiento; aunque activarlos tiene un precio pues el rendimiento por núcleo disminuye ligeramente; hecho que se compensa con el mayor rendimiento proporcionado por el mayor número de cálculos simultáneos que es posible realizar. Además las tecnologías de ahorro de energía y Turbo Boost están diseñadas para maximizar el rendimiento y el consumo, desactivando dinámicamente los núcleos virtuales no usados (sin carga) y elevando la frecuencia del núcleo con la mayor carga en operaciones mono-hilo (Turbo Boost One Core); mientras que en aplicaciones multi-hilo intensivas (más de 4 hilos) se eleva ligeramente la frecuencia (Turbo Boost All Cores).
AMD con CMT tiene planes muy distintos; pues prioriza un mejor balance entre el rendimiento y el consumo; Bulldozer en tareas mono-hilo trata de apagar todos los módulos inactivos, e ir encendiéndolos paulatina y ordenadamente según se requieran más hilos de procesamiento a fin de ahorrar energía; su tecnología Turbo Core está diseñada con este funcionamiento en mente aplicando el modo Turbo Core Max para aplicaciones mono-hilo o doble-hilo intensivas, y el modo Turbo Core All Cores cuando se usan muchos hilos de procesamiento. Lamentablemente Windows 7, al no estar preparado para este esquema de asignación de hilos simplemente lo ignora y lo hace a “su propia manera” ocasionando que los 8 núcleos ALU estén activos todo el tiempo (activar CMT tiene un impacto negativo al rendimiento por núcleo al igual que SMT) inutilizando muchas de las funciones de ahorro de energía e imposibilitando que se pueda usar el modo CPU Max Turbo en tareas mono-hilo intensivas. Hemos elaborado un gráfico para ilustrar el desperdicio de energía y performance en Bulldozer originados por la falta de soporte bajo Windows 7:
Windows 8 (y los sistemas operativos basados en Linux con los parches CMT) al ser un sistema operativo más moderno posee soporte completo para CMT, mostrando un rendimiento general aproximadamente 10% superior y un consumo inferior. Aún se desconoce si AMD o Microsoft lanzarán algún parche, controlador, o utilidad que logre hacer que Windows 7 pueda aprovechar completamente todas las características de Bulldozer. Aquí un gráfico mostrando el correcto uso de CMT bajo Windows 8:
Ahora los dejamos más que invitados a seguir leyendo, luego de esta intervención técnica de primer nivel a conocer por nuestra parte el primer procesador de la familia Bulldozer, un Zambezi como se le conoce y en específico el FX-8150, que viene a revivir las tan gloriosas dos letras FX que tantos bueno recuerdos nos dejó y que por allá por el 2005 tocó tierra en CHW con el FX-55 Clawhammer, cuando CHW nacía.
Plataforma y Metodología
Las plataforma para esta ocasión es la que ven a continuación, donde tenemos tres procesadores, unos contra otros.
Plataforma de Pruebas |
AMD FX-8150 |
Procesador | AMD FX-8150 |
Placa Madre | ASUS Crosshair Formula V |
Memorias | G.Skill Sniper F3-12800 CL7 2x4GB @ 1600 MHz 7-8-7-24 2T 1.6v |
Tarjeta de Video | NVIDIA GeForce GTX 590 |
Fuente de Poder | Seasonic X-850 |
Refrigeración Procesador | Noctua NH-D14 |
Almacenamiento |
Intel X25-M SSD 80GB |
Monitor | Viewsonic VX2835wm 28″ |
Sistema Operativo | Microsoft Windows 7 Ultimate 64-bit |
Controladores de Placa Madre |
AMD Catalyst 11.10 |
Controladores de Video | GeForce drivers 280.26 WHQL |
La plataforma AMD con un procesador central de la generación anterior, con el exponente más potente como su corazón.
Plataforma de Pruebas |
AMD Phenom II X6 1100T |
Procesador | AMD Phenom II X6 1100T |
Placa Madre | ASUS Crosshair Formula V |
Memorias | G.Skill Sniper F3-12800 CL7 2x4GB @ 1600 MHz 7-8-7-24 2T 1.6v |
Tarjeta de Video | NVIDIA GeForce GTX 590 |
Fuente de Poder | Seasonic X-850 |
Refrigeración Procesador | Noctua NH-D14 |
Almacenamiento |
Intel X25-M SSD 80GB |
Monitor | Viewsonic VX2835wm 28″ |
Sistema Operativo | Microsoft Windows 7 Ultimate 64-bit |
Controladores de Placa Madre |
AMD Catalyst 11.10 |
Controladores de Video | GeForce drivers 280.26 WHQL |
La plataforma Intel de turno.
Plataforma de Pruebas |
Intel Core i7-2600k |
Procesador | Intel Core i7-2600K |
Placa Madre | GIGABYTE GA-P67A-UD4 |
Memorias | G.Skill Sniper F3-12800 CL7 2x4GB @ 1600 MHz 7-8-7-24 2T 1.6v |
Tarjeta de Video | NVIDIA GeForce GTX 590 |
Fuente de Poder | Seasonic X-850 |
Refrigeración Procesador | Noctua NH-D14 |
Almacenamiento |
Intel X25-M SSD 80GB |
Monitor | Viewsonic VX2835wm 28″ |
Sistema Operativo | Microsoft Windows 7 Ultimate 64-bit |
Controladores de Placa Madre |
Intel INF 9.2.0.1019 |
Controladores de Video | GeForce drivers 280.26 WHQL |
Las pruebas elegidas para esta ocasión son las que acostumbramos a utilizar en nuestra plataforma de pruebas para tarjetas madres y procesadores, donde tenemos pruebas multimedia, de cálculo, juegos y sintéticas.
Benchmarks | Adobe Photoshop CS5 AIDA Extreme Edition v1.80 CineBench R11.5 Futuremark 3DMark11 Futuremark 3DMark Vantage v1.0.2 FutureMark PCMark Vantage v1.0.2 PovRay v3.7.0 RC3 Sisoft Sandra 2011 x264 HD Benchmark 3.0 |
Juegos | Alien vs Predator Metro 2033 |
Utilidades | CPU-Z v1.56 Prime95 |
Metodología de pruebas
Las pruebas de sistema y gráficas serán ejecutadas de la forma clásica, tres veces por prueba como mínimo, promediando los resultados y verificando la coherencia de estos entre sí. Para los juegos tendremos pruebas con calidad media y una resolución de 1920×1200 pixeles, considerando que tenemos plataformas muy potentes que no se verán en problemas para mover juegos actuales con una configuración de detalles lo más altos posible bajo DirectX 11. El apartado de overclock mostrará parte del potencial que pudimos alcanzar con este procesador, considerando que trabajamos un corto período para obtener los resultados, por lo que es posible que con mayor tiempo los resultados sean mejores que los expuestos por nosotros. El consumo energético también será abordado, tomando en cuenta el consumo más alto experimentado durante dos estados, reposo y carga máxima, donde el primero es el escritorio en reposo durante 30 minutos y el segundo es una carga total de la tarjeta de video mediante 3DMark Vantage en su configuración Extrema y Prime95 para el procesador, durante al menos 3 pruebas para entregar el resultado más alto.
Pruebas de Sistema
Comenzamos pensando en que el procesador con el que viene a competir AMD con su FX-8150 es el Core i5-2500k por un asunto de costos, pero de todas formas a ratos lanza un disparo y da en el blanco como le pasó en Photoshop, donde vemos que el FX es más veloz que todos sus competidores para hacer lo mismo, sin contar que el sistema operativo poco y nada de optimizado tiene para esta tecnología.
Observando los resultados en las pruebas de memoria vemos que por fin AMD mejoró en parte el controlador de memoria en esta nueva arquitectura, aunque no al nivel de poder competir de igual a igual con un Core i de segunda generación, pero si lo suficiente como para ser notablemente mejor que los procesadores de la generación anterior.
Con Cinebench vemos que el comportamiento de cada “núcleo” FX es inferior al de un Deneb, pero en sumatoria escalan juntos hasta superar levemente el resultado de un Phenom II X6 1100T. Por otra parte, el 2600k supera tranquila y cómodamente a los dos procesadores AMD, dejando en claro que cada núcleo Core i 2ª Gen. es mucho más eficiente con el cálculo que sus competidores.
Nuevamente tenemos una situación similar que las ya vistas, donde el FX es mejor que un Phenom II pero no más potente que el 2600k.
Utilizando trazado de rayos para torturar a los procesadores y tomando en cuenta algo del resultado de Cinebench vemos que un “núcleo” FX es un poco más veloz que el del Phenom II y considerablemente más lento que un i7, pero, escalando con todas sus módulos el FX logra el menor tiempo haciendo el mismo proceso.
La tónica de las pruebas anteriores se sostiene firmemente y lo único que nos dejó con la mirada en el resultado fue que en cálculos de punto flotante el FX casi igualó al 2600k mientras que en enteros barrio el piso con sus competidores, dejando al FX sobre el i7 por 50 y tantos puntos mientras que en el caso del Phenom II este es 3 veces menos potencia para enteros que el FX-8150.
En la última prueba de sistema tenemos que en la pasada 1, la menos exigente, es el 2600k que entrega el mayor número de cuadros por segundo, seguido por el Phenom II, pero en la segunda pasada, donde se ven los reales resultados es el FX-8150 el que logra el mejor resultado, mostrando todo lo que tiene para entregar.
Pruebas Gráficas
La primera prueba y la más nueva de la suite Futuremark nos muestra que en general, la plataforma rinde tal como lo vimos anteriormente, el 2600k seguido del FX-8150 y al final el Phenom II X6 1100T, pero esto es sintético, los juegos nos dirán como se comporta cada uno en la cancha.
En Vantage vemos que algo hace que el FX-8150 sea menos potente en cuanto a tarjeta de video, situación por lo menos para nosotros extraña pero que en resumidas cuentas tampoco es un indicador saludable de como rinde la plataforma en el mundo en que vivimos.
El procesamiento de datos con el GPU a través de una animación acelerada con OpenGL nos deja en claro que el FX sigue en medio del Phenom II más potente y del Core i7 de 2ª Gen. más potente, nada nuevo bajo el sol.
Acá es donde las mínima diferencias son atribuidas al CPU, ya que sabemos que nuestra tarjeta de video mueve con soltura el juego. El mejor resultado se resolvió por el número de cuadros por segundo mínimo que erogo cada plataforma, entregando el mejor mínimo el Phenom II X6 1100T, seguido por el FX-8150 y por último tenemos al 2600k. Cabe señalar y recordar que se utilizaron las configuraciones más groseras que tiene cada uno de estos juegos, por lo que sería el escenario ideal de un gamer de tomo y lomo.
Finalizando con Metro 2033, otro juego que hace uso intensivo de los recursos, vemos que los FPS promedio fueron los que nos permitieron ordenar el asunto, dejando al FX-8150 1,2 FPS atrás del 2600k, lo que podría significar que quien se compre un FX-8150 tendría un rendimiento similar al de un 2600k pero sin pagar por él.
Overclock y Consumo
Con unos pocos minutos de conexión espiritual con el BIOS UEFI de nuestra Crosshair Formula V nos pusimos manos a la obra, a sacarle lo que más pudiéramos en el menor tiempo posible, a veces nos demoramos muchas horas pero en este caso fue tan simple llegar a casi 5 GHz de forma estable que nos propusimos elevar las memorias a una frecuencia superior a sus especificaciones, junto con el puente norte a más de 2300 MHz y también lo logramos, booteando por sobre 5000 MHz sin problema alguno. Eso si, para subir 43 MHz necesitamos de 0,012 V, lo que nos indica desde un principio que para seguir subiendo necesitaremos de un empuje importante del vcore, limitando la frecuencia máxima que se pueda alcanzar ya que por cada voltio que ponemos en el procesador una parte se disipa como calor que nos coarta la posibilidad de levantar más en frecuencia.
El consumo fue algo que les prometimos que llamaría la atención, durante la semana estuvimos probando esta plataforma y para sorpresa nuestra, todas las opciones de ahorro de energía con que viene el FX-8150 son totalmente desperdiciadas por Windows 7, llegando a consumir más que un Phenom II X6 en reposo. Por otra parte, en carga máxima el FX necesita de 120W más que el 2600k y de aproximadamente 40W más que el Phenom II X6 1100T que ya consume bastante. Esto es el escenario con el que pueden encontrarse cuando cargan de forma total su tarjeta de video y procesador central, por lo que es el peor escenario para sus fuentes de poder. En la realidad, es difícil llegar a este nivel de consumo ya que en pocas circunstancias uno está dándole tupido y parejo a todo lo que tiene la plataforma.
Conclusión
Considerando que Bulldozer fue muy esperado y anunciado por parte de AMD, más de alguno se sentirá defraudado por el rendimiento expuesto, esperando que el FX aplastara a cualquier procesador cual mosca, pero no fue así. Los resultados son categóricos y nos dicen que aún no es momento para pensar en cambiar el procesador central, tomando en cuenta que en gran parte de las pruebas si no logramos un rendimiento casi igual este difiere por muy pocos puntos, salvo contadas excepciones.
Si eres un gamer, de esos que respiran juegos y leen cada nueva noticia tampoco serás el gran beneficiado con estos procesadores Zambezi, ya que rinden tanto como los que ya existen en el mercado. Muchos pensaron que esto sería como el lanzamiento de los Phenom II, donde se vio de todo y en abundancia, pero por desgracia no fue así y este nuevo FX viene a poner el nombre solamente porque su rendimiento, considerando que es FX no se condice.
Siempre hemos pensado que hacer mucho ruido puede levantar tanto las expectativas que algo bueno puede transformarse en un producto mediocre simplemente por el nivel de adrenalina que levantaron en los fanáticos los mismos fabricantes y puede que una mala jugada te haga tropezar haciéndote recordar que tienes pies que pueden separarse del suelo y hacerte caer fácilmente.
Lo que si promete, pero que por desgracia no podemos ver en su total accionar son los nuevos set de instrucciones y la tecnología de ahorro de energía, que podremos ver en su máxima expresión con el lanzamiento oficial de Windows 8 en el caso de los usuarios de este sistema operativo, ya que por el lado Linux ya existe el soporte adecuado para sacarle el jugo a todo este procesador.
Es de esperar que en el futuro próximo veamos como van evolucionando estos FX para ahormarse al mercado que les corresponde, para así renovar la generación anterior de procesadores, dar el debido soporte a las nuevas tecnologías y por sobre todo seguir con la máxima de costo/rendimiento que siempre a caracterizado a AMD.