
La aceleración por hardware consiste en el uso de hardware informático , conocido como acelerador de hardware , para realizar funciones específicas con mayor rapidez que el software que se ejecuta en una unidad central de procesamiento (CPU) de propósito general . Cualquier transformación de datos que pueda calcularse mediante software en una CPU también puede calcularse mediante un acelerador de hardware adecuado, o mediante una combinación de ambos.
Para realizar tareas informáticas de forma más eficiente, generalmente se puede invertir tiempo y dinero en mejorar el software, el hardware o ambos. Existen diversos enfoques con ventajas y desventajas en cuanto a la reducción de la latencia , el aumento del rendimiento y la disminución del consumo energético .
Las ventajas típicas de centrarse en el software pueden incluir una mayor versatilidad, un desarrollo más rápido , menores costes de ingeniería no recurrentes , una mayor portabilidad y la facilidad para actualizar funciones o corregir errores , a costa de un mayor coste computacional para las operaciones generales.
Las ventajas de centrarse en el hardware pueden incluir mayor velocidad , menor consumo de energía , [ 1 ] menor latencia, mayor paralelismo [ 2 ] y ancho de banda , y mejor utilización del área y los componentes funcionales disponibles en un circuito integrado ; a costa de una menor capacidad para actualizar los diseños una vez grabados en silicio y mayores costos de verificación funcional , tiempos de comercialización y la necesidad de más piezas.
En la jerarquía de sistemas de computación digital, que abarca desde procesadores de propósito general hasta hardware totalmente personalizado , existe una compensación entre flexibilidad y eficiencia, y esta última aumenta en órdenes de magnitud cuando una aplicación determinada se implementa en niveles superiores de dicha jerarquía (es decir, hacia el extremo más personalizado). [ 3 ] Esta jerarquía incluye procesadores de propósito general como las CPU, [ 4 ] procesadores más especializados como los sombreadores programables en una GPU , [ 5 ] aplicaciones implementadas en matrices de puertas programables en campo (FPGA), [ 6 ] y funciones fijas implementadas en circuitos integrados específicos para aplicaciones (ASIC). [ 7 ]
La aceleración por hardware es ventajosa para el rendimiento y práctica cuando las funciones son fijas, por lo que las actualizaciones no son tan necesarias como en las soluciones de software. Con la llegada de los dispositivos lógicos reprogramables como las FPGA, la restricción de la aceleración por hardware a algoritmos completamente fijos se ha suavizado desde 2010, lo que permite aplicar la aceleración por hardware a dominios de problemas que requieren modificación de algoritmos y flujo de control de procesamiento . [ 8 ] [ 9 ] Sin embargo, la desventaja es que en muchos proyectos de código abierto, requiere bibliotecas propietarias que no todos los proveedores están dispuestos a distribuir o exponer, lo que dificulta su integración en dichos proyectos.
Descripción general
Los circuitos integrados están diseñados para gestionar diversas operaciones con señales analógicas y digitales. En informática, las señales digitales son las más comunes y se representan típicamente como números binarios. El hardware y el software informático utilizan esta representación binaria para realizar cálculos. Esto se logra procesando funciones booleanas sobre la entrada binaria y, posteriormente, generando los resultados para su almacenamiento o procesamiento posterior por otros dispositivos.
Equivalencia computacional de hardware y software
Dado que todas las máquinas de Turing pueden ejecutar cualquier función computable , siempre es posible diseñar hardware personalizado que realice la misma función que un programa informático determinado. A la inversa, el software siempre puede utilizarse para emular la función de un hardware específico. El hardware personalizado puede ofrecer un mayor rendimiento por vatio para las mismas funciones que se pueden especificar en el software. Los lenguajes de descripción de hardware (HDL), como Verilog y VHDL, pueden modelar la misma semántica que el software y sintetizar el diseño en una lista de conexiones que se puede programar en una FPGA o integrar en las puertas lógicas de un ASIC.
Computadoras con programa almacenado
La gran mayoría de la computación basada en software se realiza en máquinas que implementan la arquitectura von Neumann , conocidas colectivamente como computadoras de programa almacenado . Los programas informáticos se almacenan como datos y son ejecutados por procesadores . Dichos procesadores deben obtener y decodificar instrucciones, así como cargar operandos de datos desde la memoria (como parte del ciclo de instrucción ), para ejecutar las instrucciones que constituyen el programa de software. Depender de una caché común para código y datos conduce al "cuello de botella de von Neumann", una limitación fundamental en el rendimiento del software en procesadores que implementan la arquitectura von Neumann. Incluso en la arquitectura Harvard modificada , donde las instrucciones y los datos tienen cachés separadas en la jerarquía de memoria , existe una sobrecarga en la decodificación de los códigos de operación de las instrucciones y en la multiplexación de las unidades de ejecución disponibles en un microprocesador o microcontrolador , lo que lleva a una baja utilización del circuito. Los procesadores modernos que proporcionan multihilo simultáneo explotan la subutilización de las unidades funcionales del procesador disponibles y el paralelismo a nivel de instrucción entre diferentes hilos de hardware.
Unidades de ejecución de hardware
Las unidades de ejecución de hardware generalmente no dependen de las arquitecturas von Neumann o Harvard modificada, y no necesitan realizar las etapas de búsqueda y decodificación de instrucciones de un ciclo de instrucción , lo que implica una sobrecarga en dichas etapas. Si los cálculos necesarios se especifican en un diseño de hardware a nivel de transferencia de registros (RTL), el tiempo y el área del circuito que generarían las etapas de búsqueda y decodificación de instrucciones pueden recuperarse y destinarse a otros usos.
Esta recuperación ahorra tiempo, energía y área de circuito en el cálculo. Los recursos recuperados pueden utilizarse para aumentar el cálculo paralelo, otras funciones, la comunicación o la memoria, así como para mejorar las capacidades de entrada/salida . Esto conlleva una pérdida de utilidad general.
Arquitecturas de hardware emergentes
Una mayor personalización RTL de los diseños de hardware permite que arquitecturas emergentes como la computación en memoria , las arquitecturas activadas por transporte (TTA) y las redes en chip (NoC) se beneficien aún más de una mayor proximidad de los datos al contexto de ejecución, reduciendo así la latencia de computación y comunicación entre módulos y unidades funcionales.
El hardware personalizado está limitado en su capacidad de procesamiento paralelo únicamente por el área y los bloques lógicos disponibles en el chip del circuito integrado . [ 10 ] Por lo tanto, el hardware es mucho más libre para ofrecer paralelismo masivo que el software en procesadores de propósito general, lo que ofrece la posibilidad de implementar el modelo de máquina de acceso aleatorio paralelo (PRAM).
Es común construir unidades de procesamiento multinúcleo y manycore a partir de esquemas de núcleos IP de microprocesadores en un único FPGA o ASIC. [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] De manera similar, las unidades funcionales especializadas pueden componerse en paralelo, como en el procesamiento de señales digitales , sin estar integradas en un núcleo IP de procesador . Por lo tanto, la aceleración por hardware se emplea a menudo para tareas repetitivas y fijas que implican poca ramificación condicional , especialmente en grandes cantidades de datos. Así es como se implementa la línea CUDA de GPU de Nvidia .
Métricas de implementación
Con el aumento de la movilidad de los dispositivos, se han desarrollado nuevas métricas que miden el rendimiento relativo de protocolos de aceleración específicos, considerando características como las dimensiones físicas del hardware, el consumo de energía y el rendimiento de las operaciones. Estas se pueden resumir en tres categorías: eficiencia de la tarea, eficiencia de la implementación y flexibilidad. Las métricas adecuadas consideran el área del hardware junto con el rendimiento de las operaciones y la energía consumida. [ 16 ]
Aplicaciones
Ejemplos de aceleración de hardware incluyen la funcionalidad de aceleración de transferencia de bits en unidades de procesamiento gráfico (GPU), el uso de memristores para acelerar redes neuronales y la aceleración de hardware de expresiones regulares para el control de spam en la industria de servidores , destinada a prevenir ataques de denegación de servicio (ReDoS) de expresiones regulares. [ 17 ] El hardware que realiza la aceleración puede ser parte de una CPU de propósito general o una unidad separada llamada acelerador de hardware, aunque generalmente se hace referencia a ellos con un término más específico, como acelerador 3D o acelerador criptográfico .
Tradicionalmente, los procesadores eran secuenciales (las instrucciones se ejecutaban una a una) y estaban diseñados para ejecutar algoritmos de propósito general controlados por la búsqueda de instrucciones (por ejemplo, mover resultados temporales hacia y desde un archivo de registros ). Los aceleradores de hardware mejoran la ejecución de un algoritmo específico al permitir una mayor concurrencia , disponer de rutas de datos específicas para sus variables temporales y reducir la sobrecarga del control de instrucciones en el ciclo de búsqueda, decodificación y ejecución.
Los procesadores modernos son multinúcleo y a menudo incluyen unidades paralelas de "instrucción única; datos múltiples" ( SIMD ). Estas unidades pueden estar integradas en la CPU o ser ofrecidas por componentes adicionales como los motores de IA de AMD . [ 18 ] Aun así, la aceleración por hardware sigue ofreciendo ventajas. La aceleración por hardware es adecuada para cualquier algoritmo computacionalmente intensivo que se ejecute con frecuencia en una tarea o programa. Dependiendo de la granularidad, la aceleración por hardware puede variar desde una pequeña unidad funcional hasta un gran bloque funcional (como la estimación de movimiento en MPEG-2 ).
Unidades de aceleración de hardware por aplicación
Véase también
- CGRA
- Computadora para operaciones con funciones
- Coprocesador
- Aceleración de vídeo DirectX (DXVA)
- Acceso directo a memoria (DMA)
- La taxonomía de Flynn de las arquitecturas de computadoras paralelas
- Síntesis de alto nivel
- microprocesador blando
- Cronología de los primeros dispositivos de hardware para gráficos 3D por computadora.
Referencias
- ↑ "Microsoft potencia la búsqueda de Bing con chips programables" . WIRED . 16 de junio de 2014.
- ↑ "Incrustado" . Archivado del original el 8 de octubre de 2007. Consultado el 18 de agosto de 2012 ."Arquitecturas FPGA de la A a la Z" por Clive Maxfield, 2006
- ↑ Sinan, Kufeoglu; Mahmut, Ozkuran (2019). "Figura 5. Consumo mínimo de energía de CPU, GPU, FPGA y ASIC entre el recálculo de dificultad." . Consumo de energía de la minería de Bitcoin . doi : 10.17863/CAM.41230 .
- ↑ Kim, Yeongmin; Kong, Joonho; Munir, Arslan (2020). "Coprogramación de aceleradores de CPU para la aceleración de CNN en el borde" . IEEE Access . 8 : 211422–211433 . Bibcode : 2020IEEEA...8u1422K . doi : 10.1109/ACCESS.2020.3039278 . ISSN 2169-3536 .
- ↑ Lin, Yibo; Jiang, Zixuan; Gu, Jiaqi; Li, Wuxi; Dhar, Shounak; Ren, Haoxing; Khailany, Brucek; Pan, David Z. (abril de 2021). "DREAMPlace: Aceleración de GPU habilitada por Deep Learning Toolkit para la colocación moderna de VLSI". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 40 (4): 748– 761. Bibcode : 2021ITCAD..40..748L . doi : 10.1109/TCAD.2020.3003843 . ISSN 1937-4151 . S2CID 225744481 .
- ↑ Lyakhov, Pavel; Valueva, Maria; Valuev, Georgii; Nagornov, Nikolai (2020-12-18). "Un método para aumentar el rendimiento de los filtros digitales basado en unidades de multiplicación y acumulación truncadas" . Ciencias Aplicadas . 10 (24): 9052. doi : 10.3390/app10249052 . ISSN 2076-3417 .
La simulación de hardware en FPGA aumentó el rendimiento del filtro digital.
- ↑ Mohan, Prashanth; Wang, Wen; Jungk, Bernhard; Niederhagen, Ruben; Szefer, Jakub; Mai, Ken (octubre de 2020). «Acelerador ASIC de 28 nm para el esquema de firma digital post-cuántica XMSS». 2020 IEEE 38.ª Conferencia Internacional sobre Diseño de Computadoras (ICCD) . Hartford, CT, EE. UU.: IEEE. págs. 656–662 . doi : 10.1109/ICCD50377.2020.00112 . ISBN 978-1-7281-9710-4. S2CID 229330964 .
- ↑ Morgan, Timothy Pricket (3 de septiembre de 2014). "Cómo Microsoft está utilizando FPGA para acelerar la búsqueda de Bing" . Enterprise Tech . Recuperado el 18 de septiembre de 2018 .
- ↑ "Proyecto Catapulta" . Microsoft Research .
- ↑ Procesador MicroBlaze Soft: Preguntas frecuentes. Archivado el 27/10/2011 en Wayback Machine.
- ↑ Vassányi, István (1998). "Implementación de matrices de procesadores en FPGA" . Lógica programable en campo y aplicaciones de las FPGA al paradigma de la computación . Lecture Notes in Computer Science. Vol. 1482. pp. 446–450 . doi : 10.1007/BFb0055278 . ISBN 978-3-540-64948-9.
- ↑ Zhoukun WANG y Omar HAMMAMI. "Diseño de un sistema en chip FPGA de 24 procesadores con red en chip".
- ↑ "John Kent. "Micro16 Array - Un sencillo array de CPU"" . Archivado del original el 01-08-2020 . Recuperado el 07-10-2018 .
- ↑ Kit Eaton. "Se lograron 1000 núcleos de CPU: su futuro ordenador de sobremesa será una supercomputadora". 2011.
- ↑ "Científicos logran integrar más de 1000 núcleos en un solo chip". 2011.Archivado el 5 de marzo de 2012 en Wayback Machine.
- ↑ Kienle, Frank; Wehn, Norbert; Meyr, Heinrich (diciembre de 2011). "Sobre la complejidad, la eficiencia energética y de implementación de los decodificadores de canal". IEEE Transactions on Communications . 59 (12): 3301– 3310. arXiv : 1003.3792 . Bibcode : 2011ITCom..59.3301K . doi : 10.1109/tcomm.2011.092011.100157 . ISSN 0090-6778 . S2CID 13863870 .
- 1 2 "Expresiones regulares en hardware" . Consultado el 17 de julio de 2014 .
- ↑ Rico, Alejandro; Pareek, Satyaprakash; Cabezas, Javier; Clarke, David; Ozgul, Baris; Barat, Francisco; Fu, Yao; Münz, Stephan; Stuart, Dylan; Schlangen, Patrick; Duarte, Pedro; Date, Sneha; Paul, Indrani; Weng, Jian; Santan, Sonal (2024-07-10). "NPU AMD XDNA en procesadores Ryzen AI". IEEE Micro . 44 (6): 73– 82. Bibcode : 2024IMicr..44f..73R . doi : 10.1109/MM.2024.3423692 . ISSN 1937-4143 .
- ↑ "Hoja de datos del adaptador de escritorio Intel® PRO/100 S" (PDF) . Intel . 2005. Consultado el 15 de agosto de 2025 .
- ↑ "Aceleradores de compresión" . Microsoft Research . 16 de junio de 2014. Consultado el 15 de agosto de 2025 .
- 1 2 Farabet, Clément; et al. (2010). Redes neuronales convolucionales aceleradas por hardware para sistemas de visión sintética . Actas del Simposio Internacional IEEE de Circuitos y Sistemas de 2010. París: IEEE . págs. 257–260 . doi : 10.1109/ISCAS.2010.5537908 . ISSN 2158-1525 . Recuperado el 15 de agosto de 2025 a través de Academia.edu.
Enlaces externos
Contenido multimedia relacionado con la aceleración de hardware en Wikimedia Commons.
- aceleración de hardware
- Circuitos integrados de aplicación específica
- unidad central de procesamiento
- Optimización informática
- matrices de puertas
- Hardware gráfico