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

jueves, 2 de febrero de 2017

AMD Bulldozer. Perspectivas – LowLevelHardware

Mucho se está hablando en los círculos informáticos acerca de la nueva micro arquitectura Bulldozer de AMD. Un diseño pensado para cargas de trabajo multithread y con pipelines de ejecución con mayor número de etapas para un alto potencial en frecuencia.

Orochi32nm_640AMD Orochi 32 nm 8 MB L2 y 8 MB L3.

En este artículo expondré algunas de mis opiniones sobre la micro arquitectura que va a marcar el futuro inmediato AMD de aquí a 2014.

AMD Bulldozer y el proceso de 32 nm HKMG SOI

En múltiples artículos he analizado en detalle el diseño interno de BD 32 nm. Cito los más destacables:

La L3 cache multibanco en AMD Bulldozer. Actualizado – LowLevelHardware

AMD AGLUs, Bulldozer INT cores. Actualizado – LowLevelHardware

AMD Bulldozer. Primeros benchmarks. Actualizado – LowLevelHardware

AMD Bulldozer – ProfessionalSAT

La micro arquitectura de AMD Bulldozer. Actualizado – LowLevelHardware

Novedades y expectativas 2010. Actualizado – LowLevelHardware

AMD Bulldozer. Prestaciones estimadas – LowLevelHardware

Micro arquitectura AMD Bulldozer 2011. Actualizado – LowLevelHardware

Previo AMD Bulldozer. Actualizado – LowLevelHardware

Bulldozer está fabricado por Global Foundries en el nodo de proceso de 32 nm HKMG (High K Metal Gate) SOI (Silicon On Insulator) lo que le dará unas buenas perspectivas de mejora de frecuencia y reducción de consumo con el paso del tiempo.

AMD a lo largo de su historia se ha caracterizado por ofrecer una continua mejora de su proceso de fabricación de semiconductores a los largo de la vida de cada nodo (para AMD unos 2 o 3 años).

Podemos decir que AMD saca al mercado los primeros chips en un nodo concreto (45 nm, 32 nm,…) cuando tiene unos yields (rendimientos de fabricación) mínimos (debido a la brutal presión competitiva de Intel) pero suficientes aún a costa de unas frecuencias de funcionamiento iniciales reducidas.

Con el paso de los meses AMD va mejorando paso a paso el proceso y se va reduciendo la disipación térmica, el voltaje y aumenta la frecuencia máxima de sus diseños.

GloFo32nm_640No es descabellado pensar en un 50% de mejora vs 45 nm para los 32 nm en AMD.

AMD Orochi Bulldozer. 4 módulos, 8 INT cores, 4 dual 128 FMACs y 2 MB L2

AMD Orochi va a rondar los casi 300 mm2 y está constituido por:

4 módulos completos.

4 bancos L3 de 2 MB y 16 vías (para un total de 8 MB L3 con 64 vías)

4 buses HT 3.0

2 controladoras DDR3 1866 MHz.

Un North Bridge.

El módulo en AMD Bulldozer

Frontend

Un módulo está integrado por:

2 INT cores con 2 ALUs y 2 AGUs, cada uno con su L1d de 16KB y 4 vías.

El Instruction Fetching desde la L1i compartida de 64KB y 2 vías.

La lógica de decoding de 4 vías con la Microcode ROM.

El circuitería de Branch Prediction.

La FPU doble de 128 bit FMAC (Fused Multiply Accumulate).

La unidad de control de caché que comprende las dos WCC (Write Combining Caches de 4 KB, una por INT core) que da acceso a la masiva cache L2 de 2 MB y 16 vías.

¿Qué podemos esperar de AMD Bulldozer?

Bulldozer al igual que Llano (la APU de 32 nm) se fabrican en el nuevo proceso y por ello sufrirán inicialmente de unas frecuencia máximas no muy elevadas.

Llano se ha estrenado a frecuencias máximas de 2.9 GHz, ahora está previsto que llegue al mercado una versión desbloqueada a 3.1 GHz con overclocks “sencillos” a 3.6 GHz.

Los cores de un Phenom II (al menos en los últimos steppings de 45 nm) llegan con relativa facilidad a los 4 GHz. A Llano esta frecuencia le queda lejos y eso que está fabricado en el siguiente nodo que debería proporcionar una mejora teórica de un 20% en frecuencia.

AMD 32 nm vs 45 nmDisipación térmica: AMD 45 nm vs 32 nm.

Recordemos que cuando AMD empezó a fabricar CPUs de 65 nm también padeció problemas claros de escalado de frecuencia, en concreto los primeros AMD K8 Brisbane funcionaban a 2.6 GHz cuando los “antiguos” K8 90 nm funcionaban sin problema a 3 GHz.

O pensemos en AMD Phenom Barcelona, fabricado en 65 nm en 2007 y que salió al mercado a unos meros 2.3 GHz cuando los K8 de la época (todavía de 90 nm) funcionaban a 3.2 GHz (Athlon 64 X2 6400+).

Conclusiones

Con esta coyuntura en mente podemos pensar lo siguiente según los diversos rumores y leaks que circulan:

Bulldozer, inicialmente en su configuración completa (Orochi) para socket AM3+ es deseable que ronde los 3.5 GHz nominales con carga 100% en los 8 cores y que gracias al Turbo logre frecuencias con carga de cores parcial (mitad de cores al 100%) rondando los 4 GHz.

AMD postula precios de unos 300 dólares para el top bin de Orochi, eso le sitúa en la banda de precios del Intel Core i7 2600K Sandy bridge: En mi opinión sería un éxito rotundo de AMD el posicionarse competitivamente en este nivel de precios.

A mí personalmente me cuesta creerlo pero sería una excelente noticia para la sana competencia en el sector.

En cualquier caso estamos a la vuelta de la esquina del lanzamiento previsto para Bulldozer, será en Septiembre si no hay cambio de planes. Para AMD sería una excelente noticia, y de paso dispararía su cotización bursátil, bastante deprimida tras los momentos gloriosos de los K7 y K8.

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

AMD AGLUs, Bulldozer INT cores. Actualizado – LowLevelHardware

En este técnico artículo voy a detallar la estructura de los pipelines de ejecución de los INT cores duales de un módulo del nuevo procesador AMD Bulldozer.

int_clusterUno de los núcleos de enteros de Bulldozer.

AMD Bulldozer. Filosofía de diseño.

Con Bulldozer AMD ha roto con el diseño “convencional” para el núcleo de procesamiento. Hasta ahora, un procesador era un bloque que trabajaba conjunta y síncronamente compuesto de varias subunidades.

BulldozerAMD Bulldozer: Cada INT core y la unidad SIMD son funcionalmente independientes.

En cambio en Bulldozer, AMD ha seguido un diseño  CMT (Cluster Multi Processing) de coprocesamiento con subunidades independientes y con pipelines desacoplados mediante buffers y queues.

Las ventaja principal de esta disposición reside en la compartición de algunas estructuras entre los dos cores de enteros. Cada core ejecuta un thread, cada thread debería afinitizarse a un core para dar un óptimo rendimiento.

Aunque alguna de las unidades esté bloqueada procesando datos el Front End sigue ejecutando Fetching y computando los Branches llenando sus queues (colas) y buffers con resultados.

OrochiDie de Bulldozer con 4 módulos y 8 INT cores.

Resumiendo, con Bulldozer AMD construye un procesador multicore de 8 núcleos partiendo de una unidad que llaman el módulo que incluye 2 INT cores, la unidad SIMD y la L2 de 2 MB y 16 vías.

A lo largo de los dos últimos años he escrito varios artículos sobre AMD Bulldozer:

AMD Bulldozer. Primeros benchmarks. Actualizado – LowLevelHardware

AMD Bulldozer – ProfessionalSAT

La micro arquitectura de AMD Bulldozer. Actualizado – LowLevelHardware

Novedades y expectativas 2010. Actualizado – LowLevelHardware

AMD Bulldozer. Prestaciones estimadas – LowLevelHardware

Micro arquitectura AMD Bulldozer 2011. Actualizado – LowLevelHardware

Previo AMD Bulldozer. Actualizado – LowLevelHardware

AMD Bulldozer Front End.

El frontend de Bulldozer es compartido por todas las subunidades y está dimensionado y lógicamente desacoplado de las unidades de ejecución.

Cada módulo contiene un sólo Front End que da servicio a tres unidades de ejecución:

  • Los dos INT cores con 4 pipelines de ejecución cada uno y con su Scheduler y Register File privados.
  • La unidad SIMD compartida (llamada desacertadamente por AMD y la prensa especializada FPU compartida) con su Schedule y Register File.
    Yo la llamo unidad SIMD porque no sólo incluye (como detallaré en otro artículo) dos pipelines SIMD SSE, AVX y X87 sino también 2 unidades de 128 bit SIMD de enteros SSE y MMX (INT SIMD SSE y MMX).

FrontendEn rojo resaltado el Front End de AMD Bulldozer.

El Front End contiene entre otros:

  • La lógica de Branch Prediction que ha sido considerablemente rediseñada y ampliada de cara a aumentar su tasa de aciertos. Cuenta con un BTB de 2 niveles con miss penalties (penalización de fallo) de 15 a 20 ciclos en función del tipo de Branch.
  • Las etapas de fetching y decoding cargan datos (32 bytes/ciclo) desde las cachés L1i (64 KB, 2 vías) y alimentan dos ventanas de 16 bytes (una por thread). Hay un IBB (Instruction Byte Buffers) de 16 niveles en la cola de fetching por thread (2 IBBs, con cada 16 bytes por nivel).
    Los Decoders pueden decodificar hasta 4 instrucciones / ciclo desde los IBB, cada ciclo se escanean dos de las ventanas de 16 bytes en busca de hasta cuatro instrucciones. En caso de instrucciones X86 complejas que hagan recurrir al Microcode Engine solamente se decodifica una instrucción por ciclo.

Bulldozer INT cores. Unidades de enteros.

Cada unidad de enteros es como un pequeño core de ejecución de 64 bit con 4 pipelines discretos alimentados por un Scheduler independiente.

INTcoresEn verde y azul los dos INT cores de un módulo Bulldozer.

El núcleo de ejecución consta de 4 pipelines de 64 bit con un diseño peculiar y novedoso que incluye las unidades combinadas AGLU:

Bulldozer_INT_PIPESCuatro unidades de ejecución de enteros con Scheduler común.

La longitud de los pipelines de enteros ha crecido en Bulldozer de un modo espectacular hasta las 18 o 20 etapas. Comparado con las 12 etapas de AMD Phenom destaca como un diseño claramente dirigido a altas frecuencias que en mi modesta opinión sólo tiene sentido si supera con claridad los 4 GHz en modos Turbo para compensar su gran penalización en caso de fallo de predicción Branch.

INT_cores

Los dos INT cores que forman parte de un módulo en AMD Bulldozer.

Lo novedoso de los INT cores son sus unidades híbridas AGLU:

Son unidades AGU (de generación de direcciones de memoria, address generators) pero con funciones básicas ALU, es decir, pueden procesar instrucciones simples ALU (LEA 64, INC) echando una mano para compensar el escaso ancho de proceso del core.

int_cluster_AGLUSResaltadas las dos AGLUs pertenecientes a uno de los INT cores.

Las unidades de ejecución completas (Full ALU) EX0 y EX1 incluyen hardware específico para IMUL e IDIV:

  • EX0 contiene una unidad de división de enteros parcialmente pipelinizada y con latencia y capacidad de proceso variable en función de la precisión. Aunque examinando detenidamente la documentación parece que más bien se trata de una unidad “virtual” ya que la instrucción IDIV se decodifica en el Microcode Engine y se secuencia en instrucciones sencillas ALU que se ejecutan en EX0. Además incluye una unidad para LZCNT y POPCNT.
  • EX1 por su parte contiene un rapidísimo multiplicador de enteros pipelinizado y de bajísima latencia.
  • Ambas unidades procesan Branches e instrucciones de enteros complejas.

Cada INT core cuenta con su Scheduler discreto e independiente y ejecuta un thread, además supervisa el procesamiento en las unidad SIMD compartida de las instrucciones FPU X87, FPU SIMD SSE / AVX  o INT SIMD MMX / SSE.

Conclusiones

El diseño de Bulldozer me deja un sabor agridulce, AMD sin duda ha dado un paso adelante y si consigue ponerlo en el mercado a frecuencias adecuadas (4 GHz o más en Turbo Mode) tendrá un procesador globalmente competitivo con Sandy Bridge.

Hay detalles que sinceramente no me acaban de convencer como algunas latencias muy elevadas en algunas instrucciones y sin duda será inferior a Sandy Bridge en proceso FPU AVX 256 bit.

Bulldozer puede ser un excelente procesador en cargas de enteros de 8 threads, queda la incógnita acerca del rendimiento de su caché L3 y el subsistema de memoria.

Las latencias L3 serán altas, creo que superiores a los 50 ciclos load to use, razonable me parecen 60 incluso. Hay que ver como compensa efectivamente el Hardware Prefetch este hecho. La elevada latencia L2 (de 18 a 20 ciclos) la compensa parcialmente su gran tamaño (Sandy Bridge se conforma con 256 KB, 8 veces menos, pero con latencias de 9-10 ciclos).

Tengamos en cuenta que la frecuencia del Uncore que incluye la caché L3 multibanco (4 bancos de 2 MB) de 8 MB será muy inferior a la de los cores, probablemente se mueva sobre los 2.4 – 2.66 GHz lo que afectará a la latencia L3 y de memoria.

El panorama en 2011 será divertido… nos vemos en la próxima entrega con un análisis de la unidad SIMD de 4 vías compartida de proceso FPU SSE / AVX / X87 y INT SIMD SSE / MMX.

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

La microarquitectura de AMD Bulldozer. Actualizado - LowLevelHardware

Con Bulldozer AMD ciertamente ha roto moldes en el rígido diseño de un procesador X86. El concepto de módulo con dos cores de enteros y una FPU sobredimensionada es novedoso y ciertamente tiene algunas ventajas sobre los diseños más convencionales.

Bulldozer_manipulado630 Fotografía manipulada del die de AMD Orochi, el primer chip de arquitectura Bulldozer.

Esta organización de las unidades de proceso conlleva también cambios en el subsistema de caché y de memoria, en ellos me centraré en este artículo.

Las unidades de ejecución de Bulldozer

Como todos ya conocéis, Bulldozer combina dos INT cores junto con una FPU con capacidad FMAC para formar un módulo. Trabajando sobre el die manipulado por AMD y hecho público, podemos observar varios detalles, entre ellos los dos INT cores simétricos.

core_L2_L3_Bulldozer_etiq Organización de uno de los módulos Bulldozer con sus cachés externas L2 y L3.

Me remito a mi artículo anterior de LowLevelHardware:

Intel Core i7 SMT vs. AMD Bulldozer CMT – LowLevelHardware

En un módulo Bulldozer hay duplicadas algunas de las unidades de ejecución para conseguir con ello un aumento de prestaciones a la vez que se comparten algunas unidades que por su tamaño no es práctico duplicar.

BulldozerHotChips_August24_8pmET_NDA-3_575px

Diseño general de Bulldozer 32 nm.

En el caso de Bulldozer 32 nm, AMD ha diseñado un procesador dotado de dos cores de enteros (INT cores) compartiendo:

  • El hardware de Branch Prediction.

  • La caché L1i de instrucciones de 64 KB y 2 vías.

  • Las etapas de fetch (32 bytes / ciclo).

  • Los cuatro decoders X86.

BulldozerHotChips_August24_8pmET_NDA-7_575px

Componentes compartidos en el Front End.

  • La FPU dual de 128 bit FMAC con 2 pipelines FMAC 128 bit y 2 pipelines packed INT de 128 bit MMX.

BulldozerHotChips_August24_8pmET_NDA-9_575px La FPU compartida en Bulldozer 32 nm.

También son compartidos los siguientes componentes del die de Bulldozer:

  • El Data Prefetcher encargado de precargar datos en las caches.

  • La caché L2 compartida para cada dos INT cores con su L2 TLB.

BulldozerHotChips_August24_8pmET_NDA-10_575px

La L2 compartida de Bulldozer 32nm, probablemente de 1 o 2 MB y 16 vías.

BulldozerHotChips_August24_8pmET_NDA-8_575px Los dos cores discretos de enteros en Bulldozer 32 nm.

En Bulldozer, al haber dos cores de enteros completos, hay muchas estructuras duplicadas:

  • Un scheduler de enteros (INT scheduler) por core, unificado para ALUs y AGUs.

  • Dos ALUs. Unidades de proceso de enteros.

  • Dos AGUs. Unidades de generación de direcciones de memoria.

  • L1d de 16 KB y 4 vías de asociatividad.

  • L1 DLTB de 32 entradas fully associative.

  • Juego de registros y de registros alias con su hardware de renombramiento.

  • Unidad de Load - Store con procesamiento fuera de orden en lecturas y escrituras a memoria con sus colas de comandos.

Analizando el die observamos los dos INT cores dentro de cada módulo:

INTcores Los INT cores de Bulldozer.

Después de este repaso a sus unidades de ejecución, vamos a examinar su arquitectura de caché.

Las cachés de Bulldozer

En cada módulo de Bulldozer AMD integra dos INT cores, cada uno con su caché privada L1d (datos) de 16 KB y 4 vías de asociatividad, en cambio, la caché L1i (instrucciones) sigue siendo única y mantiene la tradición de AMD: 64 KB y 2 vías de asociatividad.

core_L2_L3_Bulldozer_etiqUn módulo Bulldozer con su L2 privada de 2 MB y su banco de 2 MB de L3.

El análisis de die (que podéis examinar en el principio del artículo) manipulado por AMD para ocultar su verdadera estructura ya arroja algo de luz sobre las primera implementación de Bulldozer: el octal core Orochi.

Ampliando los INT cores, observamos las cachés de nivel 1:

L1s  Las pequeñas L1d de 16 KB y la L1i de 64 KB compartida.

Observamos numerosos bloques de SRAM, su uso es el siguiente:

  • Una de ellas es el BHT (Branch History Tables) utilizadas por los mecanismos de Branch Prediction.
  • Dos son los Write Buffers (Buffers de Escritura Combinada) utilizados para crear un flujo ordenado de datos hacia la L2 compartida de 2 MB desde las dos pequeñas L1d de 16 KB y 4 vías.

Las SRAM de los Write Buffers son necesarias ya que las L1d han cambiado su política de exclusiva (como en los cores anteriores de AMD) a inclusiva (como en los microprocesadores Intel), por ello es necesario “copiar” a L2 los datos escritos en cada una de las dos pequeñas L1d.

Con alta probabilidad en la parte inferior del módulo se observa la doble FPU FMAC de 128 bit con 2 pipelines extra para MMX 128 bit y en la parte superior las etapas de Fetch y X86 Decoding que se alimentan de las instrucciones procedentes de la caché L1i de 64 KB y dos vías a razón de 32 bytes / ciclo.

Los bloques funcionales de la izquierda son principalmente circuitería relacionada con el Hardware Prefetching.

Modulo Esquema del módulo Bulldozer.

Las latencias de caché parece que serán bastante mediocres:

  • 4 ciclos para las L1d de 16 KB y 4 vías.
  • 18 ciclos para la L2 de 2 MB (seguramente de 16 ó incluso 32 vías)

Veremos si gracias al motor OOO avanzado de Bulldozer AMD consigue ocultar estas altas latencias al software encontrando al vuelo instrucciones suficientes para enviar a las unidades de ejecución (sin L2 misses).

Estoy deseando echar un vistazo en Noviembre al verdadero die de Bulldozer en alta resolución.

Bulldozer y la memoria

Los roadmaps de tecnologías de memoria no anuncian DDR5 hasta 2015, nos debemos conformar con DDR3 hasta entonces.

7 Roadmap RAM hasta 2015. Fuente: MEMCON10.

Bulldozer montará un dual channel DDR3 hasta 2.13 GHz para un ancho de banda agregado de 31.2 GB/s por die de 8 INT cores.

Para servidores, Interlagos, la versión MCM de Bulldozer con 2 dies de 8 INT cores en un chip para socket G34, contará con un quad channel DDR3 hasta 1.86 GHz para un ancho de banda total de 59.7 GB/s (!!) por socket.

Contemporáneamente, Sandy Bridge 8 cores (16 threads) contará con 4 canales DDR3 en socket 2011 probablemente con la misma frecuencia y ancho de banda que Interlagos (1.866 GHz y 59.7 GB/s).

Algo “raro” en Bulldozer

Veo una extraña y alarmante falta de ancho de banda de decodificación en Bulldozer (4 instrucciones / ciclo) para el anchísimo hardware de ejecución que tiene detrás:

  • 2 INT cores con 2 ALUs y 2 AGUs por core
  • 1 FPU con 2 pipelines FMAC de 128 bit y 2 pipelines packed integer MMX de 128 bit

En total, un módulo, es capaz de ejecutar en paralelo:

  • 4 INT (core 0) + 4 (FPU / MMX) + 4 INT (core 1)

Es decir 12 instrucciones por ciclo y solo son decodificadas 4 por ciclo (??).

Quizás AMD se esconda un as en la manga …

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