mpc1011-Mohamed-Trabajo microprocesadores

Anuncio
Trabajo Microprocesadores para
comunicaciones
Procesadores Bulldozer y Bobcat
Mohamed Abdelfatah Ndioubnane
BULLDOZER
Arquitectura.......................................................................................................................... 3
¿El fin de una era, el final de los sockets AM y el proceso Half node Lithography? ................. 6
AMD EDO
Modo Turbo con esteroides .............................................................................................. 7
BOBCAT
Arquitectura.......................................................................................................................... 8
Comparativas utilizando Benchmarks Sanda sintéticos
Ancho de banda de memoria ................................................................................................ 9
Procesos aritméticos ........................................................................................................... 10
Procesos multimedia........................................................................................................... 10
Pruebas multimedia ............................................................................................................ 11
Test de juegos ..................................................................................................................... 13
Consumo de energía .......................................................................................................... 14
BULLDOZER
Arquitectura
Fig.1 Arquitectura del procesador Bulldozer
Poseen 4 pipelines para enteros completos por cada core, capaz de realizar 4
micro op por ciclo. En el caso de realizar 1-2 micro op puede ejecutar 2 saltos
eliminando de esta forma fallos de predicción (se ejecutan las dos posibilidades).
Pueden buscar instrucciones desde varios hilos (punteros de programa)
alternativamente incluyendo objetivos de salto. Para que la unidad de predicción de
salto trabaje identifica los saltos y sus objetivos además de controlar el trabajo de la
IFU (instruction fetch unit). Si las colas de intrucciones de las unidades a ser llenadas ya
estan en altos niveles, el par IFU/BPU comienza a precargar código para evitar ciclos
internos. Tener precargado el código en un 50 % de las cargas es aún mejor que no
tener código listo para la ejecución. Esta cifra es mejor en la realidad.
Después de que un bloque de 32 bytes de código haya sido precargado y
encolado en una cola de carga de instrucciones, la unidad de decodificación recive un
paquete por cada ciclo de decodificación. Para una decodificación mas rápida se
disponen 4 subunidades de decodificación dedicadas, donde cada una puede
decodificar la mayoría de las instrucciones x86 y SIMD en sí mismas y mas rápido (1 por
ciclo y subunidad). Mas rara vez se usan dispositivos de almacenamiento (ROM and
SRAM) para la decodificación de instrucciones complejas. Esto puede realizarse en
paralelo con la decodificación de las instrucciones simples. No hay ineficiencias como
en K10. Las instrucciones XOP y AVX también son decodificadas cada una por
subunidad(siempre y cuando el operando tenga <= 128) o dos por subunidad (256 bits,
similar a la doble decodificación de SSE y SSE2 en K8). El resultado es”double mops”
(pares de micro ops, similar a la ex MacroOps). Después de finalizar la decodificación,
los mops dobles (los cuales pueden tener un slot libre) son enviados al dispatch stack,
el cual prepara los paquetes de mas de 4 mops dobles y los despacha a los cores de la
FPU dependiendo de su clasificación del fill status. Ademas los mops decodificados
también se almacenan en las correspondientes caches. Gracias a estas caches, las
unidades actuales de decodificación estan libres y pueden ser usadas para decodificar
mas abajo en la ruta del programa. Si necesitamos despachar un paquete que esta en
la cache, el dispatcher puede realizarlo y mandarlo al core que lo necesite mientras
que en paralelo despatchar otro paquete a otro core evitando cuellos de botella.
Los planificadores que se encuentran en los cores seleccionan los mops listos
para ejecución por los cuatro pares de ALU’s y AGU’s que hay en cada core,
dependiendo de la disponibilidad y de las dependencias. Mientras realizan esto, hay
mas flexibilidad de la que había en el K10 con sus filas separadas y la incapacidad de
μOps para cambiar de carril para encontrar un recurso de ejecuci ón libre. Para ahorrar
energía, las unidades de ejecución son activadas únicamente si los mops necesitan de
ellas para comenzar una ejecución.
Las unidades de ejecución de enteros – ALU’s y AGU’s- estan organizadas en
cuatro pares, una por pipeline. Se puede ejecutar tanto el código entero x86,
operaciones de memoria (también de planificación familiar y operaciones SIMD) y, el
cambio mas grande, se pueden combinar para ejecutar SSE o código AVX entero. Esto
incrementa el throughput significativamente y libera las unidades de FP un poco. Los
registros de proposito general (GPRF) han sido ampliados a 128 bits para permitir esta
característica. Los registros serán copiados entre GPFR y el registro de coma flotante
(FPRF) si una arquitectura de registros SIMD (registros especificados por el ISA) es
usada para entero primero y punto flotante después o viceversa. Como esto no sucede
a menudo, prácticamente no tiene impacto en el rendimiento. En cambio, la opción de
utilizar las unidades de enteros en el código entero SIMD (SSE, XOP y AVX) el
throughput general de código SIMD aumenta dramáticamente.
La FPU contiene las ya conocidas FMAC units de 128 bits. Son capaces de
ejecutar cualquiera de las nuevas instrucciones que fusionan sumas y multiplicaciones
(FMA) o alternativamente una instrucción de suma y multiplicación. Esta capacidad
proporciona un menor consumo de energía y mayor rendimiento para las operaciones
más simples. A medida que AMD ha ido fijando, las dos unidades de 128 bits se
utilizan ya sea en paralelo por los dos hilos que se ejecutan en los núcleos de número
entero, pero podría haber ciclos, donde un núcleo no necesita de la FPU, en lo que
podrían ser utilizadas por un solo hilo, incrementando de esta forma el rendimiento en
FP. Esto sucedeuna vez por ciclo fundamental y se asemeja a un tipo de SMT. El
programador FPU se comunica con los núcleos, para que puedan realizar el
seguimiento del estado de cada instrucción que pertenece a los hilos que se ejecutan
en ellos.
Tanto las unidades de enteros como de coma flotante necesitan un dato para
trabajar con él. Este dato es provisto por las dos cachés L1 de 16K. Cada núcleo tiene
su propia caché de datos y la unidad de load-store (LSU). La unidad load-store maneja
todas las peticiones de memoria (loads y stores) del hilo que se ejecuta en el mismo
núcleo y la FPU compartida. Esta es capaz de tramitar dos loads y un store por ciclo,
cada uno de ellos con un ancho mayor de 128 bits. Esto da lugar a un ancho de banda
de carga de 32B/cycle y un ancho de banda de almacenamiento de 16B/cycle - por
núcleo. Un gran cambio en comparación con la LSU de K10 es la habilidad de realizar
especulación de datos y direcciones. Así que aún sin conocer la dirección exacta de una
operación de memoria (que no se sabe antes que después de ejecutar el trapeador en
una AGU), la unidad utiliza patrones de acceso y otras técnicas para especular, si
algunos datos son los mismos que otros datos, donde la dirección ya se conoce.
Finalmente la LSU es capaz también de ejecutar todas las instrucciones de memoria
fuera de orden, no solo los loads. Para hacer todo esto posible con un esfuerzo no muy
grande, los ingenieros de AMD agregaron la capacidad de crear checkpoints en
cualquier momento y volver a este punto para reproducir la secuencia de instrucciones
en caso de especulación errónea.
Para reducir el número de predicciones erróneas en los saltos y la latencia del
resultado de las operaciones cargadas, los predictores de saltos se han mejorado. Son
capaces de predecir múltiples saltos por ciclo y puede emitir prefetches de código, los
cuales pueden ser necesarios pronto. Junto con la caché de trazas, a menudo es
posible, que incluso después de un fallo de predicción en un salto (que sólo se conoce
después de ejecutar la instrucción de salto), el correcto envío de los paquetes ya están
en la caché de traza y se puede enviar desde allí con baja latencia.
Una característica importante, que mejora mucho el rendimiento, es la
capacidad de las unidades de reloj de que a frecuencias de reloj diferentes
(proporcionado por generadores de reloj flexibles y eficientes), poder apagar cualquier
subunidad inactiva y poder adaptar los tamaños de caché, TLB y algunos buffers y colas
de acuerdo a las necesidades del código que se ejecuta. Un regulador de la energía
hace un seguimiento del consumo de la carga y la potencia de cada una de las muchas
subunidades y adapta los relojes y unidades como sea necesario. Además de ello,
aumenta el rendimieto y el consumo de potencia de las unidades de carga pesada,
siempre y cuando el procesador no supere sus límites de consumo de energía y
temperatura. Por ejemplo, si las colas y los almacenadores intermediarios del core 0 se
llenan y la FPU está inactiva, entonces el regulador de la energía apaga la FPU (hasta
que vaya a ejecutar código FP) y aumenta la frecuencia de reloj del core 0. Si el núcleo
0 no tiene muchas operaciones de memoria (menos presión en caché), la caché puede
ser reducida a 8kB, de 2 vías apagando 2 de las 4 vías que tiene.De esta forma la
potencia, el procesador está activo, será redirigida a donde realmente se necesita. Esto
se conoce como la aplicación de administración de energía. Por último, si todo falla
Bulldozer de AMD tiene un sistema de caché agresivo.
L0 caché: 4 kB (8 vías asociativas) traza de caché para cada hilo (o núcleo)
L1 caché: 16 kB (4 vias) caché de datos por core, un ciclo de latencia y 128 kB
(4 vias) caché de instrucciones por módulo.
L2 caché: 2 MB (8 vías) por módulo (compartido entre dos núcleos), de alta
velocidad.
L3 caché: 8 MB compartidos entre todos los núcleos, la memoria caché L3, con
una latencia de 24 ciclos será capaz de servir hasta 2 solicitudes por (NB) ciclo
de reloj al mismo tiempo y la transferencia de datos con 16B/clock a cada uno
de los receptores.
L4 cache: AMD también ha anunciado que todas las ediciones de los modelos
Black Opteron vienen con 32/64MB caché L4 posible gracias al apilamiento de
chips. Pero ahora un poco más acerca de los detalles. La IFU carca código a
través de la caché de nivel 1 ( a32 bytes/cycle).
¿El fin de una era, el final de los sockets AM y el proceso Half node Lithography?
Una cosa que ha sido confirmada es que el core del Bulldozer es
bastante resistente en el proceso de manufacturación, tanto que AMD nos ha
dicho que experimenta usando el 28nm bulk silicon process con sólo cambios
pequeños para el dado. Aunque AMD no ha confirmado que usarán half
stepping, no le negaron tampoco.
Fig.2 Oblea de prototipos Bulldozer
Una de las primeras cosas que AMD a confirmado es que los próximos
AM3+ seran los últimos PGA(pin grid array) y que los siguientes serán LGA(land
grid array).
El actual AM3 Phenom II usa solo 938 pins, los próximos Bulldozer y
Bobcat usarán todos 941 pins. Uno de los beneficios del AM3+ es que todos los
chips de AMD serán capaces de usar DDR3 1866 (PC3 -15000).
AMD EDO: Modo Turbo con esteroides
Con Bulldozer AMD introduce EDO Performance Accelerator, el cual
ofrece dos niveles para ajustar la potencia dinámica y, posteriormente,
aumentar la potencia y la frecuencia de los núcleos que permanecen activos.
AMD garantiza un mínimo de 30% -35% de incremento al performance sobre la
frecuencia de serie. Ejemplos:
2,0 GHz> 2,6 GHz (multiplicador de Base [200 MHz], de 10 + 3 para un
incremento del 30%)
2,4 GHz> 2,6 GHz (multiplicador de Base [200 MHz], de 12 + 4 para un
aumento del 33%)
2,8 GHz> 3,8 GHz (multiplicador de Base [200 MHz], de 14 + 5, para un
aumento del 35%)
3,2 GHz> 4,2 GHz (multiplicador de Base [200 MHz], de 16 + 5, para un
aumento del 31%)
3,6 GHz> 4,6 GHz (multiplicador de Base [200 MHz], de 18 + 6 para un
aumento del 33%)
4,0 GHz> 5,6 GHz (multiplicador de Base [200 MHz], de 20 + 6 para un
aumento del 30%)
Pero no acaba ahí. AMD también ha reconocido a los entusiastas y
ofrece un segundo nivel de overclocking. Cuando el procesador está
funcionando por debajo de sus límites térmicos y eléctricos y las demandas
carga de trabajo del usuario de rendimiento adicional, la frecuencia de reloj del
procesador de forma dinámica se incrementará en 200 MHz en intervalos
cortos y regulares. Ejemplos:
2,0 GHz> 3,2 GHz (multiplicador de Base [200 MHz] de 10 + 3 + 3 para un
aumento del 60%)
2,4 GHz> 3,8 GHz (multiplicador de Base [200 MHz], de 12 + 4 + 3 para
un aumento del 58%)
2,8 GHz> 4,4 GHz (multiplicador de Base [200 MHz], de 14 + 5 + 3 para
un aumento del 57%)
3,2 GHz> 4,8 GHz (multiplicador de Base [200 MHz], de 16 + 5 + 3 para
un aumento del 50%)
3,6 GHz> 5,4 GHz (multiplicador de Base [200 MHz], de 18 + 6 + 3 para
un aumento del 50%)
4,0 GHz> 5,8 GHz (multiplicador de Base [200 MHz], de 20 + 6 + 3 para
un aumento del 45%)
BOBCAT
Arquitectura
Bobcat manteniene el modelo de ejecución fuera de orden de los
anteriores microprocesadores de AMD; sus características son: pipeline de 15
etapas, 2 ALUs (unidad aritmético lógica), 2 AGUs (unidad de generación de
direcciones), 2 FPUs (unidad de punto flotante), cache L1 64kb (32kb para datos
y 32kb para instrucciones), 512kb L2, Decodificador Dual x86, Predicción
avanzada de saltos, ejecución completa de instrucciones OOO, motor full OOO
carga/almacenamiento, unidad de punto flotante de alta performance, juego
de instrucciones AMD64, SSE1/2/3, SSSE3, virtualización segura; entre sus
características enfocadas al ahorro de energía tenemos: ejecución optimizada
para el ahorro de energía, microarquitectura que minimiza el traslado de datos
y lecturas innecesarias, sincronización de reloj y energía, sistema de estados de
bajo consumo de energía. Los de AMD afirman que Bobcat mantiene un buen
balance de alto rendimiento y bajo consumo de energía, con un tamaño incluso
inferior a Atom; y eventualmente podría aparecer una versión enfocada a
servidores.
Fig.3 Arquitectura Bobcat
Aún no se ha revelado las frecuencias, pero si confirman que el consumo de
Bobcat será inferior a 1w en algunos de sus modelos (quizá con clocks inferiores a
1GHz). El primer microprocesador en usar el núcleo Bobcat será Ontario, y durante el
2011 harán su aparición versiones con hasta 2 núcleos. Como ya se había anunciado
Bobcat incluye un GPU de clase DirectX 11 (del cual tampoco han revelado
frecuencias), el cual usa un esquema de memoria compartida de baja latencia DDR3.
Comparativas utilizando Benchmarks Sanda sintéticos
A continuación se muestran los resultados en diferentes aspectos de varios
procesadores. El procesador Interlagos está montado sobre estructura Bulldozer
mientras que los resultados de Bobcat se pueden asumir parecidos a los resultados
que nos proporciona x86 ya que está basado en este último.
Ancho de banda de memoria
Procesos multimedia
Procesos aritméticos
La conclusión que se puede sacar en este Benchmark es que el
Interlagos barre en todos los casos, por lo que demuestra una notable mejoría
frente a sus competidores de Intel los i7.
Pruebas multimedia
En el caso de las pruebas multimedia también arrasa Bulldozer. En este
caso la diferencia con los i7 es sustancial.
Test de juegos
En este caso aunque los valores son más ajustados sigue ganando el
Bulldozer.
Consumo de energía
En este aspecto tan importante como el consumo sigue siendo mejor
el Bulldozer aunque por muy poco. En el caso de funcionamiento interno son
mejores los i7, aunque para todas las mejoras que tiene el Bulldozer en
términos generales sigue ganando el Bulldozer.
Descargar