hola urian,que opinas de la gpu en la que esta trabajando raja para intel
aquí tienes la información

https://www.techpowerup.com/241669/intel-unveils-discrete-gpu-prototype-development

Veamos…

short-circuit-reading-input-book-stephany-13964865330

El concepto no es otro que la separación del planificador multihilo de la GPU del resto de la misma, es como si nos vendiesen una CPU con la Unidad de Control y las ALUs desacopladas por completo en dos chips distintos.

vuYdwnq2YChCnURb

La parte más compleja de una GPU hoy en día es el planificador, en realidad en los últimos años la evolución se ha dado sobretodo en ese lado.

dx11-to-dx12_zpsj4qm3yiy

Hace unos años era una sola lista de comandos/dibujado enviado por la CPU a la GPU, luego fueron varias listas de comandos/dibujado que se unían para crear una lista única en la GPU ahora son varias listas comandos/dibujado funcionando al mismo tiempo y a esto le tenemos que añadir algo que empezó Koduri en AMD y que por el momento no es un estandar en Direct3D ya que Nvidia no lo ha adoptado.

AMDHWS

La idea a través de quitarle el trabajo de planificación a la CPU a través del controlador de la gráfica para hacer que de ello se encarque por completo el planificador de la GPU liberando a la CPU de tiempo de planificación para la GPU y simplificando enormemente la tarea a los desarrolladores. En AMD este tipo de planificador se vio con las RX 4×0 pero en las RX Vega no ha ampliado su capacidad de funcionamiento. En el prototipo de Intel a esta unidad la han llamado «System Agent».

¿Y cual es la motivación de Intel de hacer esto? Es muy simple, al igual que AMD no tienen recursos para hacer buenos controladores porque tal y como son las GPUs ahora la gente capaz de hacer un controlador en condiciones es muy escasa en estos momentos y Nvidia les hace unas ofertas de cuidado. Os digo que es de las cosas más dificiles de hacer y lo se porque un ex-compañero con matricula fue contratado por Nvidia para eso por hacer un minisistema operativo con multitarea predictiva como tesis. De esta gente te sale uno cada x años en las universidades y con un equipo de uno no puedes y de donde abundan en los fabricantes de hardware es otro tipo de ingenieros que solventan el problema no desde el lado software, sino desde el lado hardware.

En cuanto a la GPU, en realidad es muy pequeña.

ANrpDHxvRGsFcEPw.jpg

1542 millones de transistores (1 billón americano no es 1 billón nuestro) y un tamaño de solo 64mm^2 en unos 14nm FinFet demuestran que esto es un chip conceptual más que nada y no olvidemos la baja velocidad de reloj que tiene, esto en los prototipos es completamente normal porque lo primero que se hace es probar que toda la arquitectura funcione antes de subirla de vueltas. Se trata por tanto de un prototipo muy temprano y para un chip muy pero que muy modesto realmente. Es más, la GPU es descrita como Gen9LP GPU, con unos 3 SSn, por lo que el hardware en esa parte no es exactamente nuevo, ni tan siquiera su configuración que realmente es muy modesta.

2A610EsL5Umee9wL.jpg

Tenemos por SSN un total de 6 EUs, lo que significa que estamos ante una configuración de 18 EUs en este caso… Hay chips de Intel mucho más complejos que este prototipo y que colocan 8 EUs por SSN.

Intel-Skylake-Gen9-GT3-Graphics-820x638.png

Veamos lo que nos dice Intel en su documentación sobre la configuración de cada EU.

En cada EU, la unidades principales de computación son un par de unidades de coma flotante (FPUs), pese a que son llamadas FPU soportan tanto computación por enteros como en coma flotante. Estas unidades pueden ejecutar hasta 4 operaciones en coma flotante (o de enteros) en 32 bits o ejecutar 8 operaciones en coma flotante (o de enteros) en 16 bits. Cada FPU de la SIMD puede ejecutar de fora simultanea una suma y una multiplicación, por lo que cada EU es capaz de unas 16 operaciones de 32 bits por ciclo.

Tenemos unos 18 EU en el prototipo y la velocidad máxima es de unos 400 Mhz:

18*16*(400*10^6) = 115.2 GFLOPS

Es una potencia pauperrima, pero recordad que es un prototipo y hemos visto configuraciones mucho más complejas compuestas cada una de ellas por 8 EUs por SSn, por lógica y dado como funcionan las GPUs la unidad de texturas debería estar en cada EU.

IntelEU.PNG

Es decir, los EU no equivalen a las Compute Units (CU) de AMD ni tampoco a las SM de Nvidia sino que lo que equivale es cada SSn o SubSlice.  ¿Como es que digo esto? Pues porque este tipo de unidades solo esta completa si existe la unidad de texturas.

El sampler es una unidad de solo lectura que puede ser utilizada para el muestreo de texturas o imagenes de superficies en formato tile o no. El sampler incluye una cache de primer nivel 1 y otra de nivel 2, entre ambas caches existe lógica para descomprimir de manera dinámica por loques los formatos de compresión como los DirectX BC1-BC7, DXT, y los fromatos de compresión de OpenGL. El Sampler también incluye lógica de función fija que permite la conversión de dirección de la imagen a coordenadas (u,v)… Finalmente, el sampler soporta una variedad de filtrado de muestras como point, bilineal, tri-lineal, y anisotropico.

No lo dicen, pero el estandar es que cada bloque de texturas por unidad sea de 4 unidades de texturas, esto es por el filtro bilineal y lleva años siendo estandar. En cuanto a las EU, su unidad FPU equivale a 4 Stream Processors de AMD o Nvidia por lo que cada EU son unos 8 Stream Processors en realidad y tenemos unos 8 en total por lo que la configuración de 64 sería misma que AMD, unas 64 ALUs para 4 unidades de texturas.

kaveri-14b

Nvidia en cambio tiene una organización algo distinta, tiene configuraciones de 128 ALUs en el mercado doméstico…

PascalSM

Pero el ratio ALUs de los Shaders con las unidades de texturas es el mismo, 64:4 precisamente. Por lo que parecería que esta organización se ha convertido en un estandar de facto.

¿Entonces si tienen casi la misma configuración como es que son tan malas en comparación con las de Intel y las de AMD? Si os habéis fijado existe una unidad de lectura y escritura llamada Data Port, pues bien… No existen ROPS en las GPUs de Nvidia, lo que existe es una unidad llamada Data Port que es la encargada de leer y escribir a la Cache L3 de la GPU y es utilizada tanto para las operaciones del pipeline de computación como para escribir en el búfer de imagen. Cada Data Port escribe unos 64 bytes por pixel… ¿Es poco? Bueno, los ROPS en el caso de AMD escriben unos 8 bytes por ciclo de reloj y están agrupados de 4 en 4 en forma de RBE por lo que son 32 bytes por RBE por lo que podemos deducir que cada Data Port equivale a 2 RBE de AMD u 8 ROPS por lo que la configuración sería en el prototipo de unos 24 ROPS en total, no parece mala cifra. ¿Entonces donde esta el problema? Pues que los Data Ports no tienen bus directo con la memoria externa sino con la Cache L3 y esta se comunica de manera global con un solo bus de 64 bytes/ciclo por dirección por lo que el ancho de banda se reduce a 1/3 por bloque y es como si tuviesemos unos 8 ROPS y no 24.

¿Y que hace Intel para evitar esto? En la arquitectura de la Gen9 lo que hace es colocar un limite de 3 SSN por bloque, creando tres configuraciones distintas:

  • 24 EU: Lo cual equivale a unas 3 Compute Units de AMD.

Intel24EU.PNG

  • 48 EU: Lo cual equivale a unas 6 Compute Units de AMD

48EU

  • 72 EU: Lo cual equivale a 12 Compute Units de AMD.

Una vez explicadas las actuales GPUs de Intel incluidas en sus CPUs y tras ver el motivo por el cual están muy alejadas en rendimiento de las de AMD y las de Nvidia. Hemos de hablar de algo que afecta a las tres compañías y es que no parece que a nivel arquitectural vayamos a tener una mejora sustancial desde el momento en que en el horizonte cercano no hay nuevas APIs que exijan una evolución en cierto sentido a las GPUs sino lo que se busca ahora ya no son pixeles más bonitos sino que a ese tope de eficiencia hemos llegado dado que la Ley de Moore y la aparición de nuevos nodos de fabricación se ha enlentencido.

¿Entonces que es lo que se busca? Pixeles más rápidos o mayor cantidad de ellos y esto solo se puede conseguir de dos maneras distintas o una combinación de ambas:

  • Más unidades.
  • Más velocidad de reloj

O una combinación de ambas… Pero para conseguir más velocidad se necesitan pipelines más largos y esto significa una mayor cantidad de transistores en el chip y aumentar su complejidad. Precisamente lo que dejan caer en la presentación es el hecho de no aumentar la cantidad de unidades sino la velocidad de reloj de la GPU hasta el punto de duplicarla, aunque en este caso solo sean las unidades EU.

uBsmSea1KYgpdhIG

Esto no es un concepto nuevo, el hecho de que la velocidad de reloj de los shaders funcione a una velocidad más alta que el resto del sistema. No aumenta la tasa de relleno, ni tampoco la tasa de texturizado pero estas no se pueden aumentar por limitaciones del ancho de banda. No creo que Intel sea la única que haga esto y estoy muy seguro que en poco tiempo a nivel de PC veremos GPUs con sus shaders no aumentando en cantidad pero si con la capacidad para los shadersde llegar sin problemas a los 2 Ghz de velocidad aprovechando el proceso de 7nm en el caso de Nvidia y AMD, en el caso de Intel es más que seguro que utilizará su proceso de 10nm para ello ya que ellos mismos se harán sus GPUs.

¿Entonces que pinta Raja Koduri en Intel?

Koduri es un caso especial como arquitecto gráfico ya que en los últimos años no ha realizado ni una sola GPU desde cero sino que su trabajo ha sido el de mejorar arquitecturas ya existentes para que tengan una vida útil más larga. Koduri siempre ha sido amigo de Mark Papermaster y llego primero a Apple gracias a él cuando esta compro a PA Semi para convertirlo en el laboratorio de desarrollo de los An, pues bien, Koduri era el encargado de la parte gráfica, de adaptar los PowerVR de Imagination y sacarles el máximo jugo añadiendo las modificaciones pertinentes para su mejora. ¿Entonces Koduri no creo nada en Apple? Digamos que el proceso que ha llevado a Apple a ir sustituyendo pieza a pieza y generación tras generación los elementos de los PowerVR para crear una GPU dedicada que es lo que tenemos en el A11 empezo con Koduri en Apple.

En el 2013 con la arquitectura GCN ya hecha por parte de AMD, Koduri volvió a ella. Lo hizo tras la perdida de liderazgo con la marcha de Eric Demers y cia a Qualcommm haciendo que los veteranos de ATI marcharan y dejando al RTG sin un liderazgo claro. Koduri se retiro de Apple realmente en el 2012, tan pronto como Apple contrato a Tat Iwamoto que paradojicamente era el encargado de adaptar la arquitectura R7x0 a la GPU de Wii U. Tras las enormes quejas del rendimiento gráfico de la GPU de Wii U simplemente Nintendo le dio puerta o tras la marcha de Koduri en Apple se sumo a la compañía. No sabemos cual es la historia, pero la marcha de Iwamoto del equipo de Howard Cheng obligo a Nintendo a tener que buscar otro arquitecto gráfico para adaptar la tecnología de terceros, hasta que Nvidia les pico a la puerta con una solución completa para la Switch.

El trabajo de Koduri en AMD se ha visto manchado por el fiasco reciente del AMD Vega, pero eso es una historia aparte. El caso es que Koduri en AMD no ha creado ni una sola arquitectura nueva y su trabajo ha sido el de ir apuntalando la arquitectura GCN añadiendo mejoras a la misma. Vega en realidad es una GCN++ por el hecho que el RTG bajo la tutela de Koduri ha ido añadiendo mejoras a la arquitectura de manera progresiva como son los cambios en los RBEs para el Delta Color Compression a partir de las GCN 1.2 en PC y para ser añadido en las GPUs de PS4 Pro y Xbox One X.

dcc

La antes mencionada unidad HWS (Hardware Scheduler)… Las unidades NCU que le dan a las GPUs las capacidades de trabajar con un ratio de 2X en lo que coma flotante de 16 bits se refiere.

NCU

ncuvega

¿Lo único que parece que AMD no ha conseguido llevar a cabo bien a nivel de GPU? El DSBR, el cual no parece actuar como debería actuar en Vega o simplemente la unidad no ha podido ser terminada a tiempo haciendo que Vega utilice el viejo rasterizador que es menos eficiente que el de Nvidia.

siggraph_vega_architecture_41

Y aquí entramos en una teoría de la conspiración sobre la marcha de Koduri en AMD, el otro cambio que supuestamente tenía la AMD Vega era que las NCUs habían sido retocadas, no para funcionar solo con 2X FP16 por ALU no, sino también se han hecho mucho más complejas para tener un pipeline más largo y permitir velocidades de reloj más altas. La arquitectura Vega esta diseñada para funcionar a 1600 Mhz sin problemas… ¿Que es lo que ocurrió? A los pocos meses del lanzamiento tenían una versión a 1600 Mhz en el horno funcionando perfectamente. ¿Que es lo que ocurrió? Global Foundries y su proceso de 14nm ocurrió. Es en ese punto que las peleas entre Raja Koduri y Lisa Su (la CEO de AMD) empezarían terminando con el despido retiro de Koduri de AMD y su posterior contratacion por parte de Intel.

Koduri abogaba por tener a TSMC como fabricante de los chips y Lisa Su le había dado a Global Foundries toda la gama de 14FF en exclusiva de AMD, no solo las CPUs (Ryzen) sino también las GPUs. Koduri además habría sido altamente criticado en AMD por sacar Vega demasiado tarde respecto al mapa de ruta original.

amd-radeon-polaris-vega-navi-gpu-roadmap

Koduri le echaba las culpas al proceso de 14FF de Global Foundries por los malos resultados de la arquitectura, Lisa Su le echa la culpas a Koduri por no haber hecho una arquitectura a la altura, de la guerra entre ambos Koduri quedo fuera de AMD para terminar en Intel como máximo responsable del proyecto.

¿Y que pinta Koduri en Intel? Su trabajo no es otro que el de pulir la tecnología gráfica que tiene AMD de tal manera que sea competitiva. Pero seguramente habrá traído tecnología internamente desarrollada en AMD en forma de FPGA para ser integrado después de manera especializada en una GPU completa. Habitualmente dado que una GPU es un sistema complejo compuesto por muchos bloques lo que se hace es «desglosar» la GPU y se acaba desarrollando via FPGA o varios FPGAs las partes que luego se van a trasladar en la versión final en forma de ASIC y si, cualquier CPU o GPU es un ASIC.

Una FPGA o matriz de puertas programables (del inglés Field Programmable Gate Array) es un dispositivo programable que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada in situ mediante un lenguaje de descripción especializado. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

Las FPGA se utilizan en aplicaciones similares a los ASICs sin embargo son más lentas, tienen un mayor consumo de energía y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGA tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor.

Un circuito Integrado para aplicaciones específicas (o ASIC, por sus siglas en inglés) es un circuito integrado hecho a la medida para un uso en particular, en vez de ser concebido para propósitos de uso general. Se usan para una función específica.

Lo que yo muchas veces llamo máquinas de Estado son ASIC, son sistemas que no corren un programa dado por el usuario sino que tienen un programa ya cableado y las GPUs están llenas de estas unidades, en realidad si descontamos las unidades donde están los shaders el resto de componentes son ASICs, pero como he dicho antes su desarrollo y posterior implementación se hacen a través de FPGAs, pero no es normal mostrar la version FPGA de los diferentes componentes.

Los ingenieros y más cuando son importantes no suelen irse de una empresa a otra con las manos vacias, no solo es solo el «saber hacer» con el que llegan a la nueva empresa sino que es además el conocimiento interno del mapa de ruta de la empresa donde trabajaban y el hecho de poderse llevar tecnologías en desarrollo aún no desarrolladas ni anunciadas como producto final. ¿Es espionaje industrial? Si, sin duda pero Intel ha contratado a Koduri para un motivo muy simple, el hecho de hacer que su tecnología gráfica sea competitiva.

La GPU utilizada para el prototipo es la Gen9 de la propia Intel en cierto componentes por lo que esta va a ser la base para las mejoras. Dado que la CPU de 10nm esta más que desarrollada la conclusión es que las mejoras que añada Koduri y su equipo al diseño no llegaran en las CPUs que lleguen durante este año y tendremos que esperar a 2019 para ver la GPU de Intel en acción en todo su esplendor.