Comentario original:

Buen aporte, así voy entendiendo un poco mas los entresijos de la arquitectura GCN y sus pros y contras. Cuando hagas la de la alternativa veremos las diferencias a nivel de hard, y saber donde nvidia le esta haciendo daño a amd ^_^’. Saludos.

La principal diferencia entre Nvidia y AMD es el hecho que mientras las GPUs de AMD trabajan en grupos de 64 elementos (Wavefronts), las de AMD trabajan en grupos de 32 elementos (Warps) a efectos teóricos son lo mismo, incluso funcionan de la misma manera, Warp al estar compuesto por 32 elementos se descompone en 4 grupos de 8 elementos que van a tardar un mínimo de 4 ciclos en solventarse.

nvidiasm

Esto es un SM de la arquitectura Pascal, si nos fijamos tenemos dos unidades de control en vez de una sola, esto es debido a que cada SM puede realizar 2 instrucciones por ciclo de reloj en vez de 1 sola como ocurre en el caso de AMD, solo que con la GPU de AMD esta opera con unos 64 elementos de golpe mientras que Nvidia opera con 32 por instrucción, pero dado que esta operando con 2 instrucciones simultaneas acaba procesando también unos 64 elementos al mismo tiempo.

¿Pero warps puede procesar una GPU de Nvidia? Hay que tener en cuenta que los SM se encuentran agrupados en un elemento llamado GPC que funciona exactamente igual que  un Shader Engine y puede alimentar con un fragmento por ciclo de reloj desde el rasterizador.

SingleGPC

Si miramos la siguiente tabla tendremos la respuesta:

nvidia-tesla-gpu-capabilities-table.jpg

Cada SM puede procesar dos cadenas de warps distintas al mismo tiempo, hasta llegar a los 64 Warps por lado procesados antes de que el rasterizador les envie otro , los Warp se procesan en 4 ciclos de reloj para solventar cada uno de ellos, tenemos unas 32 ALUs activas por lado (SIMD8*4) por lo que tardamos unos 4 ciclos en procesar 4 de ellos y unos 16 ciclos en total que hay de margen para un fragmento, antes de que el rasterizador el envie otro fragmento.

NvidiaTriangleWarp

Si hacemos al cálculo simple tenemos que cada SM procesa:

2 Instrucciones por ciclo*32 unidades*16 ciclos= 1024 operaciones por fragmento en cada wavefront

En el caso de AMD es:

1 instrucción por ciclo*64 unidades*10 ciclos= 640 operaciones por fragmento en cada warp.

Por lo que de cara a la etapa del Fragment/Pixel Shader ir más allá de las 10 CUs en AMD no tiene sentido, en todo caso tengo que aclarar una cosa que puse muy mal en la entrada de la serie «El Futuro», por lo que antes de nada os pido disculpas.

saying_sorry1

Si miramos el pipeline gráfico de todas las GPUs contemporaneas veremos que al menos pasaremos por los shaders unas dos veces, una pre-rasterización (geometria) y otra post-rasterización.

GPUGlobal

Esto es general para todas las GPUs… ¿Y que ocurre en el tema de la geometría? Pues que tanto en AMD como en Nvidia una sola CU/SM es suficiente para procesar toda la geometría, no en vano si se compara la carga computacional de los Vertex Shader con los Pixel Shader entonces… Podemos ver la disparidad existente entre ambos…

VSvsPSOccupancy

La disparidad es enorme, es por ello que en una década lo que se ha hecho es aumentar la complejidad del pipeline geométrico, por el hecho que tiene menos datos a procesar. ¿Como hacemos para aprovechar mejor la GPU? Pues añadiendo los Compute Shaders para ciertas tareas fuera del pipeline gráfico y mejorar el nivel de ocupación de los shaders en esa etapa. Por ejemplo puedes estar ejecutando el post-procesado del fotograma N mientras calculas la geometría del fotograma N+1. Esto obviamente ocurre en todas las GPUs.

Ahora bien, hay un tema muy importante que no vais a ver nunca publicado por el hecho que las compañías…

censorship-1

Es el concepto del CPI, no todas las instrucciones tardan la misma cantidad de ciclos en ejecutarse en todas las arquitecturas. Incluso dentro de una misma arquitectura los fabricantes de GPUs al hacer varias iteraciones de la misma mejoran el rendimiento de las diferentes instrucciones. Dicha informacion no es dada en ningún momento por los fabricantes y se lo reservan por completo, por lo que es dificil realizar una comparación real entre las diferentes GPUs. ¿Lo único que tenemos? Probar el rendimiento de los juegos en diferentes circunstancias y comparar.

¿Otras cosas en las que le esta haciendo daño? Pues en el rasterizado por tiles que Nvidia ha tenido desde Maxwell y que en AMD no hemos visto hasta Vega y que por el momento el controlador de la gráfica no tiene acceso a esa función. Por cierto, una fuente me comento que hay ciertas partes de la GPU que ya no son máquinas de estado sino microcontroladores programables que funcionan como máquinas de estado desde el momento en que solo los fabricantes tienen acceso a ellos a través de los drivers pero no los desarrolladores de software. Un microcontrolador es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria.

Y me gustaría explayarme más con el tema, solo que no tengo la información necesaria y paso de hacer constructos argumentales sobre el aire sin prueba alguna que los sostenga.