Página 1 de 2

HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 11:09
por f5inet
Bienvenidos al segundo artículo de la serie de artículos HSA. Antes de seguir profundizando en la descripción de la arquitectura HSA, es importante dejar claro qué clases de unidades de cómputo (CUs) contempla HSA.

Imagen

Como habíamos dicho en el artículo anterior, la computación heterogénea, se refiere a sistemas que contienen múltiples unidades de cómputo (Como CPUs, GPUs, DSPs, o diversos ASICs) y en cómo todas estas unidades ven la memoria en un pozo unificado, donde todas pueden acceder simultáneamente.

Bien, como todos sabréis, una CPU realiza su trabajo de forma bastante diferente a una GPU. El procesamiento de una CPU es un procesamiento EN SERIE, también denominado procesamiento ESCALAR, mientras qué la GPU realiza procesamiento EN PARALELO, también denominado VECTORIAL.

Distintos problemas, distintas soluciones:
El procesamiento en serie o ESCALAR, va leyendo las instrucciones del programa una a una y las va aplicando una a una a los diferentes datos. Este modo de procesamiento también es llamado SISD (Single Instruction, Single Data), en el cual una única instrucción afecta a un único dato, o más bien, tiene un unico output. una instrucción tipo escalar, sería del sentido ‘al valor 14, sumale 34’. En un CU (unidad de computación) de tipo escalar, lo más importante es la latencia, o el retardo, qué se tarda en ir y volver de la memoria, ya qué el trabajo qué se realiza en la CU es escaso, lo qué limita el rendimiento de una CU escalar es la latencia. El símil es qué para ir tu solo a trabajar, lo ideal es tener un deportivo capaz de ir muy rápido..

El procesamiento en paralelo o VECTORIAL, lee las instrucciones de una en una, igual al procesamiento escalar, pero la instrucción afecta a diferentes datos simultáneamente. Este modo de procesamiento también es llamado SIMD (Single Instruction, Multiple Data), puesto qué una única instrucción, se aplica simultáneamente a diversos valores. Un instrucción tipo vectorial seria ‘al set de valores 12, 45, 67 y 34, súmales 12’. En una CU de tipo vectorial, el factor limitante es el ancho de banda de disponible. puesto qué por cada instrucción estamos haciendo ‘el cuádruple’ de trabajo qué con una CU escalar, lo importante es tener un ancho de banda grande qué deje libre el bus lo antes posible. En este caso, el deportivo no es lo más adecuado, y es más interesante contar con un minibus qué permita llevar más personas de ida y vuelta al trabajo, puesto qué aunque vayamos más lento qué en un deportivo, al final, vamos a mover más personas en el mismo tiempo.

Y llegamos al meollo del asunto:
Muy bien, pues en HSA estos dos tipos de CUs tienen un nombre. Las CUs qué son sensibles a la LATENCIA, o sea, las CUs especializadas en trabajar con baja latencia de memoria y qué por tanto son buenas en el trabajo escalar, se denominan LCUs (Latency 'optimized' Compute Unit), o CUs optimizados a la latencia. Mientras qué las CUs especializadas en trabajar con un gran ancho de banda de memoria disponible, y qué por tanto son buenas en los trabajos vectoriales, se denominan TCUs (Throughput 'optimized' Compute Unit), o CUs sensibles al ancho de banda.

Por supuesto, puedes realizar un trabajo evidentemente vectorial (y por tanto sensible al ancho de banda) en una LCU, sería el equivalente a qué 50 personas pueden usar el deportivo para ir a trabajar, pero tendrán qué dar 50 viajes, tardando mucho más qué lo qué tarda un único autobús.

De idéntica manera, puedes usar una TCU para realizar trabajo escalar (o sea, sensible a la latencia), pero es como si fueses tu solo en el autobús, no vas a llegar más rápido por ir tú solo. El autobús va a tardar un tiempo especificado, y no va a tardar menos por ir menos cargado.

Porque cada tipo de CU son distintos, y a la vez, iguales:
En HSA, todas las CUs se cuentan por igual y se suman, puesto qué todas las CUs pueden ejecutar todos los tipos de trabajo. Obviamente, los LCUs serán más óptimos ejecutando código escalar, y los TCUs serán más óptimos ejecutando código vectorial y HSA permite qué el programador ‘aconseje’ un tipo de CU para el código qué debe ejecutarse en la arquitectura, pero la decisión final de donde se ejecuta dicho código corresponde al HSA Runtime, del cual hablaremos más adelante.

Por ahora, y como adelanto de lo qué está por venir, aclarar qué el HSA Runtime puede decidir, por su cuenta y riesgo, ejecutar código qué el programador ha ‘aconsejado’ ejecutar en una TCU, en una LCU en su lugar, porque la ocupación de las TCUs es muy elevada y los LCUs están ociosos. el código ‘recomendado TCU’ seguramente va a tardar más en ejecutarse en una LCU, pero tardaría aún más si tuviese qué esperar la cola.

Obviamente, lo contrario también es cierto. El HSA Runtime puede decidir ejecutar un código recomendado para ejecutarse en una LCU, en una TCU en su lugar, por la misma razón anterior: en la LCU tardaría menos, pero con la cola que tiene que esperar, en la TCU que esta ociosa va a terminar antes.

Mientras más seamos, más reiremos:
En los sistemas x86, y por si todavía alguien tiene la duda, los LCUs son los núcleos de la CPU, y los TCUs son los CUs GCN de la gráfica o integrados en la APU. Por supuesto, es difícil agregar más LCUs a un sistema X86, más qué nada, porque una vez qué has comprado una APU compatible HSA (Como un sistema Kaveri o Carrizo) para aumentar el número de LCUs necesitas cambiar la APU enteramente.

Esto no sucede asi con los TCUs, donde todo lo qué necesitas es comprar una GPU compatible HSA, y obtienes toda una batería de TCUs dispuestas a integrarse y trabajar en toda la arquitectura HSA de tu equipo actual.

Después de este interludio, continuaremos con temas de configuración de memoria en el siguiente artículo.

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 11:41
por Mattmaddrid
Me encanta, muy bien explicado. Tengo una duda:

Me supongo que existirán diferencias físicas entre la LCU y el TCU. Pero en el caso de que fuesen idénticas en su fabricación y la única diferencia fuese su propósito, ¿un sistema fullHSA podría reconfigurar cada una de ellas a placer sin perder cualidades? Me explico:

Antes has explicado que el servicio/proceso/instrucción: "HSA Runtime" decide de forma automática (si no se ha aplicado antes de forma manual por el programador), aplicar una configuración óptima para el trabajo en carga, pero que había penalización dependiendo de si era LCU o TCU. Entonces, mi pregunta es: ¿Cualquiera de las unidades de cómputo puede ser reprogramada sin penalización en su propósito inicial? Es decir, ¿el sistema puede transformar un autobús en un bólido cual transformer se tratase dependiendo de mi demanda, o la fabricación es diferente y por tanto me aguanto con lo que hay?.

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 11:58
por f5inet
Mattmaddrid escribió:Me encanta, muy bien explicado. Tengo una duda:

Me supongo que existirán diferencias físicas entre la LCU y el TCU. Pero en el caso de que fuesen idénticas en su fabricación y la única diferencia fuese su propósito, ¿un sistema fullHSA podría reconfigurar cada una de ellas a placer sin perder cualidades? Me explico:

Antes has explicado que el servicio/proceso/instrucción: "HSA Runtime" decide de forma automática (si no se ha aplicado antes de forma manual por el programador), aplicar una configuración óptima para el trabajo en carga, pero que había penalización dependiendo de si era LCU o TCU. Entonces, mi pregunta es: ¿Cualquiera de las unidades de cómputo puede ser reprogramada sin penalización en su propósito inicial? Es decir, ¿el sistema puede transformar un autobús en un bólido cual transformer se tratase dependiendo de mi demanda, o la fabricación es diferente y por tanto me aguanto con lo que hay?.


Lamentablemente, no es asi. Un deportivo siempre va a ser un deportivo y un autobus siempre va a ser un autobus, a menos que hablemos de dispositivos especificamente reprogramables como las FPGAs, y aun asi, seguirias limitado por la configuracion de RAM que pusieses. La memoria DDR es la idonea para los LCUs, debido a su baja latencia, y la GDDR es la idonea para los TCUs, debido a su altisimo ancho de banda. Realmente, debido a la configuracion de memoria que vas a montar, preparas los caches y el planificador para sacarle el maximo rendimiento posible a la unidad de computo.

¿que puedes tener LCUs corriendo con memoria GDDR? pues claro que si, Xbox360 y PS4 son prueba viviente que puedes hacerlo.
¿puedes tener TCUs corriendo con memoria DDR? las APUs Kaveri y Carrizo son prueba de ello.

Por cierto, tened siempre en cuenta que estamos hablando de COMPUTO, no de graficos. HSA va de COMPUTACION, no de rasterizacion.

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 12:07
por FLASHBACKMAN
Creo haber leído por ahí algo de "cuando un CPU pretende ser un GPU y viceversa"

:cafe:

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 13:46
por BiG Porras
FLASHBACKMAN escribió:Creo haber leído por ahí algo de "cuando un CPU pretende ser un GPU y viceversa"

:cafe:

:rtfm:

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 13:52
por FLASHBACKMAN
Ir atando cabos.

Recordad éste post:

viewtopic.php?f=20&t=204

Como ya sabemos en parte gracias al insider
@Papatuelo

las CPU de AMD tienen ALU's FMAC que son básicamente igual a las ALU del GPU. Así que podemos decir que los nuevos CPU de AMD son parcialmente un GPU.
Como ya hemos dicho 40 veces: CP Compute, es la parte "nextgen" que utiliza la solo la "parte" del SIMD del GPU, fusionado con ARM, DSP / FPGA. CP Compute y GP Compute, áreas diferenciadas en las cuales un CPU pretende ser un GPU y un GPU pretende ser un CPU.

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 15:47
por CapitanCagon

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 16:05
por f5inet


Hay mas tipos de CUs que unicamente los LCUs y los TCUs. Simplemente estos dos son los mas comunes.

pero tambien he visto HCUs, e incluso MCUs.

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 16:31
por vihuquinpa
Aunque se me escapa la mayoria de cosas que dices, se agradece el esfuerzo por explicarlo de la manera mas sencilla posible, gracias F5inet.

Esperando el proximo articulo.

P.D: Seria genial si a la vez que nos explicas que es y como funciona el HSA, pusieses por ejemplo, Xone tiene "x" CUs (o cualquier otro termino), y PS4 tienen tantos, así podriamos hacernos una idea mas clara de la diferencia entre una y otra. Aunque tal vez harás un articulo así mas adelante. Saludos.

Re: HSA102 - LCUs Y TCUs ¿QUÉ SON?

NotaPublicado: 27 Nov 2015, 16:53
por nikolas
Muy bueno el articulo, aunque a sabido a poco ;)
Esperando con ansia el siguiente.