Archivo

Categories
Portada (146)

Archive 2018
Julio (1)
Mayo (1)

Archive 2017
Julio (3)
Junio (9)
Abril (1)
Enero (8)

Archive 2016
Junio (8)
Mayo (4)
Abril (3)
Marzo (3)
Enero (7)

Archive 2015
Agosto (3)
Julio (2)
Junio (1)
Mayo (1)
Abril (2)
Marzo (4)
Enero (9)

Archive 2014
Agosto (12)
Julio (53)
Junio (11)

Portada

Notapor f5inet » 27 Nov 2015, 11:09

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.
Ir al hilo: HSA102 - LCUs Y TCUs ¿QUÉ SON?
Comentarios: 15