Arquitectura de sistema heterogénea o acerca de cumplir con CPU y GPU
Durante mucho tiempo, el desarrollo de la microelectrónica tuvo lugar bajo el lema "menos y más rápido". Se redujo el proceso técnico, se introdujeron nuevos elementos de la arquitectura x86 (conjuntos de extensiones de instrucciones), se incrementó la frecuencia de reloj del núcleo informático. Cuando el crecimiento de la productividad "aproximada" se basó en factores económicos y físicos, se popularizaron varios métodos de cálculo paralelo. Al mismo tiempo, no solo se estaban desarrollando CPU que mostraban un buen rendimiento en cálculos complejos y de un solo subproceso, sino también GPU que podían realizar rápidamente una gran cantidad de tareas similares y simples que eran difíciles de asignar a los procesadores convencionales.
Hoy estamos entrando en una nueva era en el desarrollo de chips que son responsables de la informática en los corazones de las computadoras de escritorio, servidores, dispositivos móviles y dispositivos electrónicos portátiles. Al combinar los enfoques para el procesamiento de información en la CPU y la GPU, desarrollamos una nueva arquitectura abierta, sin la cual la implementación posterior de la misma ley de Moore parece difícil. Conozca HSA - Arquitectura de sistema heterogéneo.Un momento de historia
Con el fin de comprender completamente cómo HSA, por un lado, está cerca y, por otro lado, supera la arquitectura de las soluciones modernas, veamos la historia. Incluso si descartamos décadas de tecnología de lámparas y comenzamos a partir de la década de 1950, desde el momento en que aparecieron los transistores en microelectrónica, la historia es tal que puede escribir un artículo por separado. Repasemos muy brevemente los principales "hitos" de la industria de procesadores, y muy poco sobre la historia de las tarjetas de video.En los albores de la ingeniería informática, las CPU eran bastante simples. De hecho, todas las operaciones se redujeron a sumar números en un sistema binario. Cuando se requería restar, el llamado " Códigos inversos": Eran simples y fáciles de encajar en" hierro ", sin requerir los placeres arquitectónicos más complicados que implementan la sustracción" honesta "de números. Para cada modelo de computadora, los programas se escribieron por separado hasta que llegó 1964.
Sistema Ibm / 360En 1964, IBM lanzó System / 360, una computadora que cambió la forma en que creamos procesadores. Lo más probable es que fue él quien tuvo el honor de introducir un concepto como la arquitectura del sistema. Solo porque antes de él no había "sistema". El hecho es que antes de System / 360 todas las computadoras de los años 50 y 60 funcionaban solo con el código del programa que fue escrito específicamente para ellos. IBM, por otro lado, desarrolló el primer conjunto de instrucciones, que fue compatible con una variedad de configuraciones (y rendimiento), pero el mismo sistema / arquitectura 360. Por cierto, en la misma computadora, el byte por primera vez se convirtió en 8 bits. Antes de eso, en casi todas las computadoras populares, consistía en seis bits.La segunda gran innovación en los años 60 fue el desarrollo de DEC. En su computadora PDP-8, utilizaron una arquitectura extremadamente simple para ese tiempo, que contenía solo cuatro registros de 12 bits cada uno y un poco más de 500 bloques de CPU. Esos "transistores" que ya fueron medidos en la década de 1970 por miles y miles de millones en la década de 2000. Esta simplicidad y la creación por parte de IBM de un concepto como un "conjunto de instrucciones" determinaron la dirección del desarrollo de la tecnología informática.El auge de la microelectrónica comenzó en los años 70. Todo comenzó con la producción de los primeros procesadores de un solo chip: muchas compañías produjeron chips bajo licencia y luego los mejoraron, agregando nuevas instrucciones y ampliando capacidades.Desde mediados de los años 70, el mercado de procesadores de 8 bits ha estado abarrotado, y hacia el final de la década, aparecieron soluciones asequibles de 16 bits en las computadoras, trayendo consigo la arquitectura x86, que (aunque con mejoras significativas) todavía está viva y bien. El flagelo principal que detuvo el desarrollo de procesadores de 16 bits en ese momento fue el "encierro" de los fabricantes en la producción de los llamados chips de soporte para arquitecturas de 8 bits. Juntos formaron lo que luego se llamaron los puentes "norte" y "sur".A principios de los años 80, cansados de luchar con la inercia del mercado, muchos fabricantes movieron parte del control "chips de soporte" dentro del propio procesador. Posteriormente, algo del procesador irá a los conjuntos de chips de la placa base y luego regresará, pero incluso entonces, dicha arquitectura era algo similar a los SoC modernos.La mitad y el final de los años 80 pasaron bajo el estandarte de la transición al direccionamiento de memoria de 32 bits y los núcleos de procesador de 32 bits. La ley de Moore funcionó como antes: la cantidad de transistores aumentó, la frecuencia de reloj y el rendimiento del procesador "aproximado" aumentaron.En 1991, los procesadores AMD Am386DX y Am386SX vieron la luz, cuyo rendimiento era comparable al de la próxima generación de sistemas (486). Muchos consideran que Am386SX es el primer desarrollo independiente de la compañía y el punto de partida de casi 15 años de dominio en el mercado de PC y estaciones de trabajo domésticas de alto rendimiento. Sí, arquitectónicamente era un clon del chip i368SX, pero tenía un proceso técnico más bajo, una eficiencia energética un 35% mejor y al mismo tiempo funcionaba a una frecuencia de reloj más alta que su progenitor, pero era más barato.
Los años noventa fueron bastante ricos tanto en eventos en el campo de la microelectrónica como en el rápido crecimiento del mercado. Fue en los años 90 que AMD comenzó a ser considerado como uno de los jugadores más importantes en el mercado, ya que nuestros procesadores en términos de precio y relación de rendimiento a menudo dejaban a sus competidores fuera del Intel Pentium, especialmente en el segmento doméstico. Un conjunto ampliado de instrucciones (MMX / 3DNow!), La aparición de un caché de segundo nivel, una disminución agresiva en la tecnología de proceso, un aumento en las velocidades de reloj ... y ahora el nuevo milenio ya está en el patio.En 2000, los procesadores AMD por primera vez en el mundo cruzaron la línea a 1 GHz, y un poco más tarde, la misma arquitectura K7 también adquirió una nueva altura: 1,4 GHz.A finales de 2003, lanzamos nuevos procesadores basados en la arquitectura K8, que contenía tres innovaciones importantes: direccionamiento de memoria de 64 bits, un controlador de memoria integrado y el bus HyperTransport, que proporcionaba un ancho de banda sorprendente en ese momento (hasta 3.2 GB / s).En 2005, aparecieron los primeros procesadores de doble núcleo (Intel tiene dos núcleos de cristal separados en un sustrato, AMD tiene dos núcleos dentro de un cristal, pero con una memoria caché separada).Después de un par de años de desarrollo natural, la arquitectura K8 fue reemplazada por una nueva (K10). El número de núcleos en un chip en la configuración máxima aumentó a seis, apareció un caché general del tercer nivel. Y el desarrollo posterior fue más cuantitativo y cualitativo que revolucionario. Más megahercios, más núcleos, mejor optimización, menor consumo de energía, proceso de fabricación más fino, unidades internas mejoradas como un predictor de rama, controlador de memoria y decodificador de instrucciones.Lo que nos interesa en la evolución de la GPU (como parte del artículo de HSA) puede describirse muy brevemente. Con la proliferación de las computadoras como soluciones universales de trabajo y entretenimiento en el hogar, los juegos de computadora han crecido en popularidad. Junto con él, crecieron las posibilidades de los gráficos en 3D, que requieren cada vez más "infusión" de músculos frente a los aceleradores de video. El uso de microprogramas y sombreadores especiales hizo posible implementar una iluminación realista con relativamente poca sangre en los gráficos 3D. Inicialmente, los procesadores de sombreadores se dividían en vértices y píxeles (los primeros eran responsables de trabajar con geometría, el segundo para las texturas), luego una arquitectura de sombreadores unificada y, en consecuencia, aparecían procesadores de sombreadores universales que podían ejecutar código para sombreadores de vértices y píxeles.GPGPU, la informática de uso general en un acelerador de gráficos podría implementarse utilizando estándar abierto y OpenCL, o un dialecto algo simplificado de C.Desde entonces, de las innovaciones clave en la GPU, solo podemos mencionar la apariencia de la API Mantle de bajo nivel, que le permite acceder a las tarjetas gráficas AMD en aproximadamente eso al mismo nivel que el acceso a los aceleradores gráficos dentro de las consolas PS4 y Xbox One) y el aumento explosivo en la capacidad de memoria de la GPU en los últimos dos años.
Este es el final de la historia, es hora de pasar a lo más interesante: HSA.¿Qué es la HSA?
Quiero comenzar con el hecho de que HSA, en primer lugar, es una plataforma abierta sobre la base de la cual los fabricantes de microelectrónica pueden construir sus productos (independientemente del conjunto de instrucciones utilizadas) que cumplan con ciertos principios y reglas generales.Al mismo tiempo, HSA es una arquitectura de procesador que combina cálculos escalares en núcleos de CPU clásicos, cálculos paralelos en masa en GPU y funciona con procesamiento de señal en módulos DSP, y los conecta mediante un acceso coherente a RAM. Es decir, toda la historia de la producción de procesadores y video en HSA converge en un punto: casi 50 años de progreso en el campo de la microelectrónica han llevado a la creación de una combinación lógica de los mejores aspectos de varios sistemas.El desarrollo de la arquitectura y los procesadores x86 permitió crear módulos de procesador altamente eficientes que proporcionan tareas comunes y bajo consumo de energía.La unificación de los procesadores de sombreado dentro del núcleo de GPU y la simplificación general de la programación para un sistema con una gran cantidad de módulos de ejecución paralela le han dado a GPGPU una forma y utilizan la potencia de procesamiento de las tarjetas de video en aquellas áreas donde se utilizaron previamente aceleradores de hardware separados, que no han ganado ninguna cuota de mercado tangible para que mantente a flote.
Un controlador de memoria integrado, un bus PCIe y un sistema de E / S proporcionaron acceso transparente a la memoria para varios módulos HSA.Finalmente, el DSP incorporado le permite eliminar la carga de la CPU y la GPU cuando trabaja con contenido de video y audio, ya que está basado en hardware en el trabajo de codificar y decodificar las señales correspondientes.Todos estos módulos juntos cubren todo el espectro de tareas modernas, y HSA le permite enseñar programas de manera transparente y fácil para trabajar con la gama completa de capacidades de hardware disponibles utilizando herramientas clásicas como lenguajes como Java y C ++.Razones para crear HSA
Las realidades modernas (la difusión de la electrónica portátil y móvil, los problemas económicos y medioambientales) han creado ciertas tendencias en el desarrollo de la microelectrónica: reducir el consumo de energía de todos los dispositivos, ya sean teléfonos inteligentes o servidores, aumentar la productividad, mejorar el reconocimiento de imágenes.El primero, en principio, es comprensible. Todos quieren que el dispositivo funcione por más tiempo, la carcasa no estaba llena de Big Mac y no se calentó como una sartén en una estufa. Los propietarios de los centros de datos tienen muchos problemas para eliminar el calor y garantizar una alimentación ininterrumpida; cargarlos con vatios adicionales de paquetes de calor significa aumentar el costo de sus servicios. Alojamiento más costoso: más publicidad en sus recursos favoritos, más carga de CPU en los dispositivos, mayor consumo de energía, menos duración de la batería.El aumento de la productividad actual simplemente se da por sentado. La gente está acostumbrada al hecho de que desde los años 70, los procesadores han batido récords de rendimiento cada año, los juegos se están volviendo más hermosos, los sistemas y el software son más complejos (y al mismo tiempo no pierden su velocidad visual), y las herramientas modernas de programación contienen más y más capas de abstracción de hierro. , cada uno de los cuales requiere una pieza de rendimiento real.Bueno, los desarrollos modernos en el campo de asistentes inteligentes, asistentes virtuales y perspectivas de desarrollo de inteligencia artificial simplemente requieren un reconocimiento normal del habla humana, las expresiones faciales, los gestos, lo que, a su vez, requiere un aumento tanto en el rendimiento directo como en la optimización de las operaciones de decodificación de audio y audio. Video en directo.Todos estos problemas se resolverían mediante una arquitectura de hardware universal implementada en forma de SoC, y combinando los encantos de las CPU y GPU clásicas, distribuyendo de manera competente las operaciones en serie y paralelas entre aquellos módulos que son capaces de realizar las tareas correspondientes de manera más eficiente.Pero, ¿cómo enseñarle al software a trabajar con toda esta magnificencia de las capacidades informáticas?Características clave de un sistema heterogéneo.
Los programadores no deberían tener problemas para acceder a las capacidades informáticas de dicho sistema. Para hacer esto, la HSA tiene una serie de características clave que simplifican el trabajo de los desarrolladores de software y acercan la HSA a los sistemas clásicos en términos de desarrollo:- Direccionamiento unificado para todos los procesadores;
- Completa coherencia de memoria;
- Operaciones en el sistema de memoria de página;
- Modo de envío personalizado;
- Gestión de colas a nivel de arquitectura;
- Soporte de lenguaje de alto nivel para procesadores informáticos: GPU;
- Cambio de contexto y multitarea preventiva.
El desarrollador de la aplicación no necesita comprender lenguajes de programación de bajo nivel: los componentes estándar, un lenguaje intermedio simple, interfaces de interacción y hardware están disponibles para el desarrollador, y la memoria coherente y cómo las tareas se distribuirán entre los módulos informáticos se ocultan fácilmente "bajo el capó".El papel del direccionamiento de memoria unificada difícilmente se puede sobreestimar. Formalmente, sin él, no habría HSA. No importa dónde se encuentren los datos en la memoria, cuántos núcleos, módulos, unidades informáticas tenga. Mueve el puntero y realiza cálculos, y no "transfiere" bytes de un actuador a otro. La carga de caché se reduce y el control del procesador en sí se simplifica. La abstracción de memoria a nivel de plataforma permitirá el uso del mismo código para diferentes plataformas, simplificando la vida de los desarrolladores de software.Dificultades de OpenCL y C ++ AMP
La programación para sistemas paralelos no es una tarea fácil. Para facilitar la vida de los desarrolladores, hemos desarrollado la biblioteca Bolt, que proporciona patrones efectivos para las plantillas más utilizadas para ordenar, reducir, escanear y transformar datos utilizando computación paralela.Para acelerar el código Java sin reescribirlo en OpenCL, se utiliza una biblioteca especial de AparApi (código abierto), que le permite convertir el código de bytes de Java a OpenCL con soporte para computación paralela en núcleos de CPU y GPU.En el futuro, se planea finalizar Aparapi, primero asociándolo con HSAIL y luego agregando un optimizador especial. Al final, la HSA debe funcionar con aceleración heterogénea directamente a través de la máquina Java, transparente para el usuario y el programador.Ya hemos dicho que HSA es una plataforma abierta. El desarrollador proporciona las API y las especificaciones de forma gratuita, y la propia HSA es independiente del conjunto de instrucciones de la CPU o GPU.Para garantizar la compatibilidad de las soluciones de hardware de varios proveedores, creamos nuestro propio kit ISA: HSAIL (HSA Intermediate Layer), que garantiza el funcionamiento del software independientemente de lo que esté dentro de la solución HSA. La capa intermedia en sí admite trabajar con excepciones, funciones virtuales, modelos de memoria de lenguajes modernos, por lo que no se esperan problemas con el soporte para C ++, Java y .Net, mientras que los desarrolladores pueden acceder al hardware directamente y usar bibliotecas de optimización listas para usar HSA, que distribuirá de forma independiente las tareas y agilizará la comunicación con el hardware, simplificando el trabajo del programador.
Componente de hardware
No solo AMD está vivo HSA. Es importante para los desarrolladores que una vez que el código escrito funcione igual de bien en diferentes dispositivos. Alguien usa lenguajes de programación de alto nivel como C ++ o Java para esto, pero sugerimos trabajar en un nivel inferior. Por un lado, las aplicaciones clásicas pueden ejecutarse en dispositivos HSA como si nada hubiera cambiado. Los sistemas operativos proporcionarán aplicaciones antiguas con acceso claro y fácil al procesador, la memoria y el núcleo de video. Por otro lado, HSAIL le permite extraer toda la potencia del nuevo SoC, y los desarrolladores pueden crear aplicaciones de alto rendimiento y ahorro de recursos tan fácilmente como para el sistema operativo clásico y los paquetes de hardware.Ahora Fundación HSAHay siete compañías que son los fundadores de esta organización: AMD, ARM, Imagination Technologies, MediaTek, Texas Instruments, Samsung Electronics y Qualcomm®.La estandarización en el campo de la distribución de tareas a través de núcleos informáticos, la transferencia de datos y punteros de memoria y el trabajo con los elementos principales de la plataforma usando HSAIL les permite a los proveedores usar su experiencia en el campo del hierro, y los desarrolladores no tienen que preocuparse por lo que hay debajo del capó. Las aplicaciones presentadas bajo HSAIL funcionarán en cualquier plataforma.Pros y contras de las soluciones de hardware basadas en HSA
La arquitectura heterogénea le permite combinar las capacidades de la CPU y la GPU, y esta es su principal ventaja. Al mismo tiempo, la HSA se encarga de la energía consumida, sin cargar el procesador con cálculos que son mucho más eficientes para ejecutarse en la GPU.
La simulación de la física del estado sólido se usa en todas partes en la actualidad: desde juegos de computadora y paquetes 3D hasta CAD, simuladores para médicos, militares y atletas. El trabajo en la CPU de dicho sistema a menudo no es óptimo, porque requiere numerosos pero simples cálculos. Y cuando el número de objetos que interactúan excede cientos o incluso miles, las CPU clásicas simplemente no pueden proporcionar la cantidad adecuada de cálculos. Pero la arquitectura GPU es adecuada para tales cálculos lo mejor posible. Y el direccionamiento unificado, la memoria de página y la coherencia completa le permiten transferir los cálculos al hardware apropiado con recursos mínimos y recursos de desarrollador.El rendimiento de HSA en tareas generales es a menudo más alto que el de las CPU clásicas y más alto que el del paquete CPU + GPU debido al hecho de que no importa cuán ideales sean los controladores, copiar datos de la memoria compartida a la memoria de la GPU y enviar los resultados de los cálculos puede tomar más tiempo que los cálculos mismos.HSA ya es más rápido que los sistemas clásicos, pero puede funcionar aún mejor. En realidad, el único inconveniente actual del sistema es que es nuevo. La popularidad apenas comienza a crecer, los nuevos modelos de hierro en las condiciones económicas más desfavorables ingresan al mercado más lentamente, y la popularidad de HSA no está creciendo al mismo ritmo que a todos nos gustaría. Tan pronto como los desarrolladores prueben, comprendan los beneficios de HSA y la facilidad de desarrollo de un nuevo sistema y comiencen a admitir de forma nativa la arquitectura heterogénea en sus aplicaciones, veremos el apogeo de las nuevas aplicaciones de alto rendimiento para servidores, computadoras clásicas y dispositivos móviles. Source: https://habr.com/ru/post/es387439/
All Articles