jueves, 2 de febrero de 2017

Microarquitectura AMD Bulldozer 2011. Actualizado - LowLevelHardware

AMD ha diseñado y tiene ya finalizado el floorplan del nuevo procesador que en 2011 inaugurará una nueva microarquitectura. Un concepto revolucionario en muchos aspectos que no por ello deja de suscitarme algunas dudas acerca de su rendimiento single thread.

Será fabricado para AMD por Global Foundries en el proceso de 32 nm SOI  high-k metal gate ya que AMD se deshizo de sus fábricas de semiconductores (wafers).

Los orígenes de Bulldozer

Cluster_multithreading Captura de una presentación de AMD en 2005.

Ya en 2005 AMD compartió con la prensa especializada sus ideas de futuro acerca de las líneas de diseño que se irían imponiendo en sus futuros diseños. En aquella época AMD había cancelado el diseño K9, un procesador con paralelismos a la serie Netburst de Intel, largos pipelines y probablemente SMT al estilo HyperThreading. Se rumorea que constaba de 2 clusters de 4 pipelines de enteros y una trace cache L1 similar a la del Pentium 4…

Como todos sabemos AMD sabiamente escogió el camino dual core con los Athlon64 X2. El problema es que los equipos de diseño de AMD estuvieron ocupados en un procesador durante uno o dos años que fue tardíamente cancelado. Demasiado tiempo perdido…

El esquema general de AMD Bulldozer y algunas especulaciones de cosecha propia

La microarquitectura subyacente en Bulldozer ha sido someramente esbozada por AMD a finales de 2009.

Bulldozer_module AMD Financial Analyst Day 2009.

AMD plantea cada core de Bulldozer como un dual core de enteros con una sola FPU doble de 2 x 128 bits. Las cachés L1d están duplicadas, pues está pensado para proceso concurrente de dos threads, uno por int-core (core de enteros) ya que de no ser así habría polución de caché lo que no sería nada recomendable dado su pequeño tamaño.

Los schedulers de enteros también están duplicados por thread y por int-core. De este modo el critical loop de procesamiento (scheduler –> ejecución de enteros –> caché de datos) permanece aislado por thread, evitando así interferencias y manteniendo bajas latencias tanto de ejecución como de acceso a L1.

Bulldoxer_4module_8int_cores_L3shared_630Cada módulo consta de los dos cores de enteros con sus L1 privadas y la gran FPU doble de 2 x 128 bit.

Especulación 1, Caché L1:

Veo razonable y lógico que el tamaño de las cachés L1d disminuya desde los 64 KB actuales a 32 KB o 16 KB por int-core y su asociatividad aumente de las 2 vías actuales a 4 o 8 vías (como en los diseños de Intel). Su latencia debería permanecer en los 3 ciclos o incluso reducirse a 2 ciclos aunque lo veo muy dificultoso.

La caché L1i tiene sentido que también sea duplicada reduciendo su tamaño a 32 o 16 KB, una L1i para cada Int-core ya que la FPU podría acceder directamente a la L2 compartida.

Otra opción consiste en mantener una L1i unificada de tamaño similar a la actual (64 KB) pero con una asociatividad aumentada a 4 u 8 vías para servir concurrentemente a los dos Int-cores y a la doble FPU, lo que implicaría hacerla triple o quad ported lo que incrementaría mucho su complejidad y su disipación térmica.

Especulación 2, caché L2:

Todo estas unidades funcionales comparten una L2 shared de un tamaño que estimo en 256 a 512 KB; espero una latencia más reducida respecto a los actuales 15 – 17 ciclos. Sería recomendable ir hacia los 10 ciclos.

La asociatividad seguramente y preferiblemente permanecerá invariada en 16 vías.

Si AMD ha diseñado una L2 de gran tamaño, de 1 o 2 MB, puede dilatar las latencias de acceso y creo que sería un error de diseño y un mal compromiso para los siempre sensibles a la latencia algoritmos de proceso de enteros.

En nuestros días, y contando con un tercer nivel de caché, la L2 debe ser de pequeño tamaño (256 KB bastan) pero con una latencia muy baja, similar a la de Nehalem con 10 ciclos. Es la mejor opción de diseño sin lugar a dudas.

Especulación 3, caché L3:

Será de considerable tamaño, probablemente 8 MB o quizás más para la versión de 4 módulos con 8 int cores. Si AMD hace un buen trabajo con las L2 y sitúa su latencia en un máximo de 12 ciclos (ciclos de core clock) puede aspirar a latencias L3 efectivas inferiores a los 40 ciclos (core clock).

Espero una asociatividad de 16 vías para 8 MB y 24 vías para un diseño de 12 MB para favorecer una baja latencia.

Si por consideraciones de diseño (poco tiempo o recursos) se deciden por 32 o más vías de asociatividad nos veremos de nuevos en los 40 y pico o 50 ciclos de latencia load-to-use en L3 lo que sería una mala noticia.

Especulación 4, Pipelines de enteros:

No se sabe a ciencia cierta si los citados 4 pipelines de enteros por Int-core se equiparan a los 3 pipelines de proceso de enteros de los Athlon/Athlon XP/Athlon 64/Phenom/Phenom II/Athlon II, es decir excluyen los tres pipelines dedicados AGU (load-store) o contrariamente los incluyen.

amd_bulldozer_2010-2 3 schedulers independientes en Bulldozer.

En el primer caso y a igualdad de implementación, la potencia de proceso sería un 33% superior por Int-core, lo que ciertamente a AMD le resolvería su problema prestacional principal respecto a Intel, su clara inferioridad en cálculo de enteros por ciclo y core (sobre un 30 – 40 % en Phenom II respecto a core i7 clock-for-clock).

Es difícil saberlo a día de hoy, pero ciertamente espero que sea de este modo y no al contrario, como detallo a continuación:

Hipótesis 1: Si AMD utiliza 4 pipelines para cálculo entero y simultáneamente como AGUs (Address Generation Units) o 2 pipelines de enteros y dos AGUs, la potencia de proceso descendería drásticamente en algunos algoritmos… incluso respecto al actual Shanghai 45 nm (Phenom II) core for core y clock for clock.

He leído a algunos ingenieros de AMD e incluso a alguien de su Staff directivo alabar las cualidades de proceso multi thread de Bulldozer y eludir comentarios sobre potencia de cálculo single thread. Sinceramente, espero haber entendido mal sus comentarios…

En este caso, a igualdad de reloj y en procesos single threaded sería más rápido un Phenom II actual que este hipotético Bulldozer aunque tuviese muchos más cores disponibles para ejecutar más threads.

Por supuesto, en este caso Intel no tendría competencia en software single threaded. Pensad que para entonces Intel comercializará Sandy Bridge, su próxima microarquitectura.

 

Prestaciones estimadas:

slide3[1]Prestaciones estimadas en Abril de 2009 por AMD para Interlagos.

Interlagos será un MCM de dos chips, un dual quad-module Bulldozer con 16 int-cores y 8 FPUs dobles de 128 bit destinado a servidores, sustituirá a los Magny-Cours 12 cores que ahora mismo AMD empieza a comercializar para socket G34. Se tratará de un MCM compuesto por dos dies de cuatro módulos Bulldozer y contará con cuatro canales DDR3 probablemente a 1600 MHz.

Ambos dies irán unidos por enlaces HT3.

Según las presentaciones de AMD, su velocidad relativa en enteros y FPU será la siguiente:

  • Un Opteron Istambul hexa core lo sitúan en 18 Int y 14 FP.
  • Para el MCM Magny-Cours 12 cores: 26 Int, 27 FP.
  • Para Interlagos 16 cores: 37 Int, 47 FP.

En una presentación posterior observamos:

serverperformane[1] Prestaciones estimadas en Noviembre de 2009 por AMD para Interlagos.

Según las nuevas presentaciones de AMD, su velocidad relativa en enteros y FPU sería la siguiente:

  • Un Opteron Istambul hexa core lo sitúan en 16 Int y 13 FP.
  • Para el MCM Magny-Cours 12 cores: 27 Int, 28 FP.
  • Para Interlagos 16 cores: 37 Int, 44 FP.

Con los últimos datos, basados en estimaciones de AMD a noviembre de 2009, Istambul será un 57% superior en coma flotante FP y un 37% en enteros al actual MCM Magny-Cours de 12 cores.

Teniendo en cuenta que Interlagos cuenta con 16 Int-cores y 8 FPUs dobles de 128 bit y Magny-Cours respectivamente 12 Int cores y 12 FPUs de 128 bit.

Para sobremesas domésticos AMD comercializará los Zambezi, unos procesadores octal Int-cores nativos con 4 FPUs dobles de 128 bit formados por 4 módulos y con soporte para DDR3 1866 dual channel.

Bulldoxer_4module_8int_cores_L3shared_630

Especulación 5, prestaciones en enteros de Bulldozer:

Estimo unas débiles prestaciones single threaded en enteros para Bulldozer respecto a Intel Sandy Bridge y también respecto a Westmere. Sin duda, en el terreno multi thread su potencia representará un gran avance para AMD en enteros y en cálculo matemático en coma flotante (FPU) y probablemente luchará en igualdad con Intel en FP y quizás en enteros.

Según los ingenieros de AMD (espero que sea así y no hable el departamento de marketing) se espera una mejora de un 80% en enteros gracias al segundo core integrado. Como vemos subrayan el aspecto multi thread pero nadie habla sobre su velocidad en cálculo con un solo hilo de ejecución.

Como podéis inferir, me inclino por la segunda opción en la  anterior Hipótesis 1.

Especulación 6, la FPU de Bulldozer:

AMD ha echado el resto con la gigantesca FPU (ocupará una gran superficie del die) de Bulldozer, hablando en porcentaje del área lógica (excluyendo caches) estimo que será similar a la suma de los dos int-cores con sus L1i y L1d (!!).

Se trata de una FPU doble de 128 bit con capacidad FMAC (Fused Multiply Accumulate) y AVX de 128 y 256 bit. De echo será capaz de trabajar simultáneamente en dos threads simultáneos con 128 bit de precisión o dedicarse totalmente a un solo thread con todos sus recursos.

Especulación 7, AMD necesita urgentemente “Turbo Boost”:

Una característica diferenciadora de los actuales procesadores Intel es su capacidad para aumentar la frecuencia de los cores activos siempre que haya margen hasta el TDP (Thermal Design Power).

La Ley de Amdahl estipula que la aceleración obtenida por un sistema multiprocesador siempre estará limitada por los fragmentos de código secuencial o no paralelizable (single-threaded).

648px-AmdahlsLaw_svg Aumento de velocidad con el número de cores y según el porcentaje de código paralelizable.

AMD planea integrar algo similar en todos sus futuros procesadores, pues aunque resulte incómodo reconocerlo, el proceso single-thread domina la velocidad y responsividad de una máquina en los sistemas operativos actuales.

TurboMode Turbo Boost en Core i7 serie 800 Lynnfield quad core.

Por ejemplo, un Core i7 870 de 3.06 GHz nominales puede, mientras mantiene 3 cores a 1.2 GHz y un voltaje inferior a 1V (sobre 0.80 V) y en estado power-gated (con un consumo virtualmente cero), tener uno de sus núcleos procesando al 100% de carga a 3.6 GHz efectivos. E incluso, con dos núcleos activos en cálculo al 100% de carga, mantiene en ellos frecuencias de proceso de 3.46 GHz.

AMD necesita urgentemente algo similar y parece ser que así será. En próximos procesadores integrará capacidades de power gating por core para deshabilitar y cerrar el suministro de corriente a los cores inactivos reservando TDP.

Este margen se utilizará para el proceso de los núcleos que lo demanden por su carga de trabajo. De este modo podrá así aumentar su frecuencia y su voltaje sin superar el TDP estipulado por el diseño.

Conclusiones

Espero, por el bien de la sana competencia, que AMD sea capaz de llevar al mercado en 2011 esta nueva arquitectura. El proceso de 32 nm SOI  high-k metal gate de Global Foundries parece bien planteado sobre el papel y ya hay algunas muestras funcionales que incitan al optimismo.

El único pero que yo veo al diseño es en algoritmos single thread que todavía (y por bastantes años) pueblan el ecosistema software de nuestros días. La mera instalación de un programa o una suite de ofimática, la navegación por internet y numerosas tareas del sistema operativo son todavía single threaded y así persistirán por largo tiempo dadas las grandes dificultades para su paralelización.

Sencillamente hay ciertos procesos que no son paralelizables y para ellos necesitamos anchos procesadores con múltiples y cortos pipelines y grandes motores de ejecución fuera de orden (OOO Execution, Out Of Order Execution) funcionando a altas frecuencias.

Echad un vistazo a la web de mi nueva empresa, un proyecto de gran envergadura que llevo preparando hace más de un año.

Os lo recomiendo para diseño de sistemas de altas prestaciones optimizados al límite:

ip16_texto_300px_blanco422222

Allí tenéis a vuestra disposición el formulario de contacto, para consultas sobre este artículo hacedlo más abajo en la sección de comentarios.

Y mi nuevo Blog de contenido muy técnico y actualizado donde encontraréis artículos míos sobre hardware, procesadores y sistemas y también otros posts de expertos programadores e informáticos sobre otros temas de actualidad:

infromaticapremium-blog422222

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.