Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Heterogeneous System Architecture
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
'''Heterogeneous System Architecture''' ('''HSA''') es un conjunto de especificaciones entre proveedores que permite la integración de [[CPU]] y [[GPU]] en el mismo bus, con memoria compartida y tareas.<ref>{{cite web|url=http://www.tomshardware.com/news/AMD-HSA-hUMA-APU,22324.html|title=AMD Unveils its Heterogeneous Uniform Memory Access (hUMA) Technology|website=Tom's Hardware|author=Tarun Iyer|fecha=30 de abril de 2013}}</ref> La HSA está desarrollando la HSA Foundation, que incluye (entre muchos otros) [[AMD]] y [[Arquitectura ARM|ARM]]. El objetivo declarado de la plataforma es reducir la latencia de comunicación entre las CPU, las GPU y otros dispositivos informáticos, y hacer que estos diversos dispositivos sean más compatibles desde la perspectiva de un programador.<ref name="whitepaper">{{Cite report|author=George Kyriazis|fecha=30 de agosto de 2012|title=Heterogeneous System Architecture: A Technical Review|url=http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/hsa10.pdf|publisher=AMD|fechaacceso=26 de junio de 2018|urlarchivo=https://web.archive.org/web/20140328140823/http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/hsa10.pdf#|fechaarchivo=28 de marzo de 2014}}</ref>{{Rp|3}}<ref name="whatis">{{cite web|title=What is Heterogeneous System Architecture (HSA)?|url=http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-system-architecture-hsa/|publisher=AMD|fechaacceso=23 de mayo de 2014|urlarchivo=https://web.archive.org/web/20140621213832/http://developer.amd.com/resources/heterogeneous-computing/what-is-heterogeneous-system-architecture-hsa/#|fechaarchivo=21 de junio de 2014}}</ref> aliviando al programador de la tarea de planear el movimiento de datos entre las memorias disjuntas de los dispositivos (como se debe hacer actualmente con [[OpenCL]] o [[CUDA]]).<ref>{{cite web|author=Joel Hruska|title=Setting HSAIL: AMD explains the future of CPU/GPU cooperation|url=http://www.extremetech.com/gaming/164817-setting-hsail-amd-cpu-gpu-cooperation|website=[[ExtremeTech]]|publisher=[[Ziff Davis]]|fecha=26 de agosto de 2013}}</ref> CUDA y OpenCL, así como la mayoría de los lenguajes de programación bastante avanzados, pueden usar HSA para aumentar su rendimiento de ejecución.<ref>{{Cita web|url=http://www.slideshare.net/mobile/linaroorg/hsa-linaro-updatejuly102013|título=LCE13: Heterogeneous System Architecture (HSA) on ARM|autor=Linaro|apellido=Linaro|sitioweb=slideshare.net}}</ref> La [[computación heterogénea]] se utiliza ampliamente en dispositivos de [[System on a chip|sistema en chip]], como [[Tableta (computadora)|tabletas]], [[teléfonos inteligentes]], otros dispositivos móviles y [[consolas de videojuegos]].<ref name="gpuscience">{{Cita web|url=http://gpuscience.com/cs/heterogeneous-system-architecture-purpose-and-outlook/|título=Heterogeneous System Architecture: Purpose and Outlook|fechaacceso=24 de mayo de 2014|fecha=9 de noviembre de 2012|sitioweb=gpuscience.com|urlarchivo=https://web.archive.org/web/20140201183411/http://gpuscience.com/cs/heterogeneous-system-architecture-purpose-and-outlook/|fechaarchivo=1 de febrero de 2014}}</ref> HSA permite a los programas utilizar el procesador de gráficos para cálculos de punto flotante sin memoria o programación por separado.<ref>{{Cita web|url=http://embedded-computing.com/articles/heterogeneous-processing-using-mix-cpu-gpu-elements/|título=Heterogeneous system architecture: Multicore image processing using a mix of CPU and GPU elements|fechaacceso=23 de mayo de 2014|sitioweb=Embedded Computing Design}}</ref> == Razones == La razón detrás de HSA es aliviar la carga de los programadores cuando descargan cálculos a la GPU. Originalmente impulsado únicamente por [[AMD]] y llamado '''FSA''', la idea se amplió para abarcar otras unidades de procesamiento además de las GPU, como los [[Procesador digital de señales|DSP]] de otros fabricantes.{{Galería de imágenes|File:HSA – using the GPU without HSA.svg|Pasos realizados al descargar cálculos a la [[Unidad de procesamiento de gráficos|GPU]] en un sistema que no es HSA|File:HSA – using the GPU with HSA.svg|Pasos realizados al descargar cálculos a la GPU en un sistema HSA, utilizando la funcionalidad HSA|posición=center|align=center|ancho=320|width=320|alto=190|height=190|lines=3}}Las GPU modernas son muy adecuadas para realizar [[SIMD|single instruction, multiple data]] (SIMD) y single instruction, multiple threads (SIMT), mientras que las CPU modernas todavía se están optimizando para la bifurcación. etc. == Visión general == Originalmente introducido por [[sistemas integrados]] como el '''Cell Broadband Engine''', compartir la memoria del sistema directamente entre múltiples actores del sistema hace que la informática heterogénea sea más común. La informática heterogénea en sí misma se refiere a sistemas que contienen múltiples unidades de procesamiento: [[Unidad central de procesamiento|unidades de procesamiento central]] (CPU), [[Unidad de procesamiento gráfico|unidades de procesamiento de gráficos]] (GPU), [[procesadores de señal digital]] (DSP) o cualquier tipo de [[Circuito integrado de aplicación específica|circuitos integrados específicos de la aplicación]] (ASIC). La arquitectura del sistema permite que cualquier acelerador, por ejemplo un procesador de gráficos, funcione con el mismo nivel de procesamiento que la CPU del sistema. Entre sus características principales, HSA define un espacio de dirección virtual unificado para dispositivos informáticos: cuando las GPU tradicionalmente tienen su propia memoria, separada de la memoria principal (CPU), HSA requiere que estos dispositivos compartan tablas de página para que los dispositivos puedan intercambiar datos compartiendo punteros. Esto debe ser respaldado por unidades de administración de memoria personalizadas.{{Rp|6–7}} Para hacer posible la interoperabilidad y también para facilitar varios aspectos de la programación, HSA pretende ser independiente de ISA tanto para CPU como para aceleradores, y para admitir lenguajes de programación de alto nivel. Hasta ahora, las especificaciones HSA cubren: === Capa intermedia HSA === '''HSA Intermediate Layer''' ('''HSAIL'''), un conjunto de instrucciones virtuales para programas paralelos * Similar a la representación intermedia LLVM y SPIR (utilizado por [[OpenCL]] y [[Vulkan]]) * Finalizado a una instrucción específica establecida por un [[Compilación en tiempo de ejecución|compilador JIT]] * Tomar decisiones tardías sobre qué núcleo(s) debe ejecutar una tarea * Explícitamente paralelo * Soporta excepciones, funciones virtuales y otras funciones de alto nivel * Soporte para depuración === Modelo de memoria de HSA === * compatible con los modelos de memoria [[C++|C++ 11]], [[OpenCL]], [[Java (lenguaje de programación)|Java]] y [[.NET]] * Consistencia relajada * Diseñado para admitir tanto lenguajes administrados (por ejemplo, Java) como no administrados (por ejemplo, [[C (lenguaje de programación)|C]]) * Facilitará el desarrollo de compiladores de terceros para una amplia gama de productos heterogéneos programados en [[Fortran]], C++, C++ AMP, Java y otros. === Despachador y tiempo de ejecución de HSA === * Diseñado para habilitar colas de tareas heterogéneas: una cola de trabajos por núcleo, distribución de trabajo en colas, [[equilibrio de carga]] mediante ''work stealing'' * Cualquier núcleo puede programar el trabajo para sí mismo o para cualquier otro * Reducción significativa de los gastos generales del trabajo de programación para un núcleo Los dispositivos móviles son una de las áreas de aplicación de la HSA, en la cual se obtiene una mayor [[eficiencia energética]]. === Diagramas bloque === Los diagramas de bloques a continuación proporcionan ilustraciones de alto nivel sobre cómo opera la HSA y cómo se compara con las arquitecturas tradicionales.{{Galería de imágenes|File:Desktop computer bus bandwidths.svg|Arquitectura estándar con una discreta [[tarjeta gráfica|GPU]] conectada al bus [[PCI Express]]. [[Zero-copy]] entre la GPU y la CPU no es posible debido a las distintas memorias físicas.|File:HSA-enabled virtual memory with distinct graphics card.svg|HSA brinda memoria virtual unificada y facilita el envío de punteros a través de PCI Express en lugar de copiar toda la información.|File:Integrated graphics with distinct memory allocation.svg|En la memoria principal particionada, una parte de la memoria del sistema se asigna exclusivamente a la GPU. Como resultado, la operación de copia cero no es posible.|File:HSA-enabled integrated graphics.svg|Memoria principal unificada, posible gracias a una combinación de GPU y CPU habilitadas para HSA. Como resultado, es posible realizar operaciones de copia cero.<ref>{{cite web |url=http://semiaccurate.com/2014/01/15/technical-look-amds-kaveri-architecture/ |title=Kaveri microarchitecture |fecha=15 de enero de 2014 |work=[[SemiAccurate]]}}</ref>|File:MMU and IOMMU.svg|Tanto la [[MMU]] de la CPU como la [[IOMMU]] de la GPU deben cumplir con las especificaciones de hardware de la HSA.|posición=center|align=center|ancho=320|width=320|alto=190|height=190|lines=3}} == Soporte de software == [[Archivo:Linux_AMD_graphics_stack.svg|miniaturadeimagen|Las GPU de AMD contienen ciertas unidades funcionales adicionales destinadas a ser utilizadas como parte de HSA. En Linux, el controlador de kernel amdkfd proporciona el soporte requerido.<ref>{{Cita web|url=https://www.phoronix.com/scan.php?page=news_item&px=MTc0NTk|título=AMDKFD Driver Still Evolving For Open-Source HSA On Linux|fechaacceso=21 de enero de 2015|autor=Michael Larabel|apellido=Michael Larabel|fecha=21 de julio de 2014|editorial=[[Phoronix]]}}</ref>]] Algunas de las características específicas de HSA implementadas en el hardware deben ser compatibles con el [[núcleo del sistema operativo]] y los controladores de dispositivo específicos. Por ejemplo, el soporte para las tarjetas gráficas [[Radeon|AMD Radeon]] y [[AMD FirePro]], y las [[AMD Accelerated Processing Unit|APU]] basadas en [[Graphics Core Next]] (GCN), se fusionaron en la versión 3.19 de la línea principal del [[núcleo Linux]], lanzada el 8 de febrero de 2015.<ref name="kernelnewbies-3.19">{{cite web|url=http://kernelnewbies.org/Linux_3.19#head-ae54e026ef7588f4431f7e94178d27d5cd830bbf|title=Linux kernel 3.19, Section 1.3. HSA driver for AMD GPU devices|fecha=8 de febrero de 2015|fechaacceso=12 de febrero de 2015|website=kernelnewbies.org}}</ref> Programs do not interact directly with amdkfd, but queue their jobs utilizing the HSA runtime.<ref>{{Cita web|url=https://github.com/HSAFoundation/HSA-Runtime-Reference-Source/blob/master/README.md|título=HSA-Runtime-Reference-Source/README.md at master|fechaacceso=12 de febrero de 2015|fecha=14 de noviembre de 2014|sitioweb=github.com}}</ref> Esta primera implementación, conocida como '''amdkfd''', se centra en las APU "Kaveri" o "Berlin" y funciona junto con el controlador de gráficos Radeon kernel existente. Además, '''amdkfd''' admite ''cola heterogénea'' (HQ), que tiene como objetivo simplificar la distribución de trabajos computacionales entre múltiples CPU y GPU desde la perspectiva del programador. El soporte para la administración de memoria heterogénea (HMM), adecuado solo para hardware de gráficos con la versión 2 de [[IOMMU]] de [[AMD]], fue aceptado en la versión principal del núcleo Linux versión 4.14.<ref>{{Cita web|url=https://www.xda-developers.com/linux-kernel-414/|título=Linux Kernel 4.14 Announced with Secure Memory Encryption and More|fecha=13 de noviembre de 2017}}</ref> Se ha anunciado el soporte integrado para plataformas HSA para el lanzamiento de "Sumatra" de [[OpenJDK]], previsto para 2015.<ref>{{Cita web|url=http://www.hpcwire.com/2013/08/26/hsa_foundation_aims_to_boost_javas_gpu_prowess/|título=HSA Foundation Aims to Boost Java’s GPU Prowess|autor=Alex Woodie|apellido=Alex Woodie|fecha=26 de agosto de 2013|sitioweb=HPCwire}}</ref> [[AMD APP SDK]] es el kit de desarrollo de software patentado de AMD que apunta a la computación paralela, disponible para Microsoft Windows y Linux. Bolt es una biblioteca de plantillas C ++ optimizada para computación heterogénea.<ref>{{Cita web|url=https://github.com/HSA-Libraries/Bolt|título=Bolt on github}}</ref> [[GPUOpen]] comprende un par de otras herramientas de software relacionadas con HSA. CodeXL versión 2.0 incluye un perfilador de HSA.<ref>{{Cita web|url=http://gpuopen.com/codexl-2-0-is-here-and-open-source/|título=CodeXL 2.0 includes HSA profiler|autor=AMD GPUOpen|apellido=AMD GPUOpen|fecha=19 de abril de 2016|fechaacceso=26 de junio de 2018|urlarchivo=https://web.archive.org/web/20180627034628/https://gpuopen.com/codexl-2-0-is-here-and-open-source/|fechaarchivo=27 de junio de 2018}}</ref> == Soporte de hardware == === AMD === Para febrero de 2015, solo las APU de la serie A "Kaveri" de AMD (consulte los procesadores de escritorio "Kaveri" y los procesadores móviles "Kaveri") y la PlayStation 4 de Sony permitieron que la GPU integrada accediera a la memoria mediante la versión 2 de IOMMU de AMD. Las APU anteriores (Trinity y Richland) incluían la funcionalidad IOMMU de la versión 2, pero solo para el uso de una GPU externa conectada a través de PCI Express.{{Cita requerida}} Las APU [[Carrizo]] y Bristol Ridge posteriores a 2015 también incluyen la versión 2 de la funcionalidad IOMMU para la GPU integrada.{{Cita requerida}} === ARM === La microarquitectura Bifrost de ARM, como se implementó en el Mali-G71,<ref>{{Cita web|url=http://www.anandtech.com/show/10375/arm-unveils-bifrost-and-mali-g71/5|título=ARM Bifrost GPU Architecture|fecha=30 de mayo de 2016}}</ref> es totalmente compatible con las especificaciones de hardware de HSA 1.1. A 2016 de 6, ARM no ha anunciado el soporte de software que usaría esta característica de hardware. == Véase también == * [[GPGPU|General-purpose computing on graphics processing units]] (GPGPU) * [[NUMA|Non-Uniform Memory Access]] (NUMA) * [[OpenMP]] * [[Memoria compartida]] * [[Copia cero|Zero-copy]] == Referencias == {{Listaref|30em}} == Enlaces externos == * {{YouTube|id=ln8JpfaLvbM|title=HSA Heterogeneous System Architecture Overview}} by Vinod Tipparaju at SC13 in November 2013 * [https://web.archive.org/web/20160514070602/http://www.mpsoc-forum.org/previous/2013/slides/8-Hegde.pdf HSA and the software ecosystem] * [http://www-conf.slac.stanford.edu/xldb2012/talks/xldb2012_wed_1400_MichaelHouston.pdf 2012 – HSA by Michael Houston] {{Control de autoridades}}
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Heterogeneous System Architecture
»
Añadir idiomas
Añadir tema