stringtranslate.com

Aceleración de hardware

Una tarjeta aceleradora criptográfica permite realizar operaciones criptográficas a un ritmo más rápido.

La aceleración de hardware es el uso de hardware informático diseñado para realizar funciones específicas de manera más eficiente en comparación con el software que se ejecuta en una unidad central de procesamiento (CPU) de uso general . Cualquier transformación de datos que se pueda calcular en un software que se ejecuta en una CPU genérica también se puede calcular en un hardware personalizado o en 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, mejorar el hardware o ambos. Existen varios enfoques con ventajas y desventajas en términos de disminución de la latencia , aumento del rendimiento y reducción del consumo de energía . Las ventajas típicas de centrarse en el software pueden incluir mayor versatilidad, desarrollo más rápido , menores costos de ingeniería no recurrentes , mayor portabilidad y facilidad para actualizar características o parchear errores , a costa de la sobrecarga para calcular operaciones generales. Las ventajas de centrarse en el hardware pueden incluir aceleración , 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 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 los sistemas informáticos digitales que van desde procesadores de propósito general hasta hardware totalmente personalizado , existe una compensación entre flexibilidad y eficiencia, y la eficiencia aumenta en órdenes de magnitud cuando una aplicación determinada se implementa más arriba en esa jerarquía. [3] Esta jerarquía incluye procesadores de propósito general como CPU, [4] procesadores más especializados como sombreadores programables en una GPU , [5] de función fija implementados en matrices de puertas programables en campo (FPGAs), [6] y de función fija implementados en circuitos integrados específicos de la aplicación (ASICs). [7]

La aceleración de 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 dispositivos lógicos reprogramables como los FPGA, la restricción de la aceleración de hardware a algoritmos totalmente fijos se ha aliviado desde 2010, lo que permite que la aceleración de hardware se aplique a dominios problemáticos 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 la integración en dichos proyectos.

Descripción general

Los circuitos integrados están diseñados para manejar diversas operaciones tanto en señales analógicas como digitales. En informática, las señales digitales son las más comunes y suelen representarse como números binarios. El hardware y el software de las computadoras utilizan esta representación binaria para realizar cálculos. Esto se hace procesando funciones booleanas en la entrada binaria y luego enviando los resultados para su almacenamiento o posterior procesamiento 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 determinado programa informático. A la inversa, siempre se puede utilizar software para emular la función de un determinado programa informático. 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 un 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 ocurre en máquinas que implementan la arquitectura de von Neumann , conocidas colectivamente como computadoras de programa almacenado . Los programas de computadora se almacenan como datos y son ejecutados por procesadores . Dichos procesadores deben buscar y decodificar instrucciones, así como cargar operandos de datos de la memoria (como parte del ciclo de instrucción ), para ejecutar las instrucciones que constituyen el programa de software. Confiar en 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 de von Neumann. Incluso en la arquitectura Harvard modificada , donde las instrucciones y los datos tienen cachés separados en la jerarquía de memoria , existe una sobrecarga para decodificar códigos de operación de instrucciones y multiplexar 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 subprocesos múltiples simultáneos explotan la subutilización de las unidades funcionales del procesador disponibles y el paralelismo a nivel de instrucción entre diferentes subprocesos de hardware.

Unidades de ejecución de hardware

Las unidades de ejecución de hardware no dependen en general de las arquitecturas de von Neumann o Harvard modificada y no necesitan realizar los pasos de búsqueda y decodificación de instrucciones de un ciclo de instrucciones ni incurrir en la sobrecarga de esas etapas. Si se especifican los cálculos necesarios en un diseño de hardware de nivel de transferencia de registros (RTL), los costos de tiempo y área de circuito que se generarían en las etapas de búsqueda y decodificación de instrucciones se pueden recuperar y destinar a otros usos.

Esta recuperación ahorra tiempo, energía y área de circuito en el cálculo. Los recursos recuperados se pueden utilizar para aumentar el cálculo paralelo, otras funciones, la comunicación o la memoria, así como para aumentar las capacidades de entrada/salida . Esto se produce a costa de la utilidad de uso general.

Arquitecturas de hardware emergentes

Una mayor personalización RTL de los diseños de hardware permite que las 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 localidad de los datos en el 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 en paralelo únicamente por el área y los bloques lógicos disponibles en la matriz 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 de muchos núcleos a partir de esquemas de núcleo IP de microprocesador en un solo FPGA o ASIC. [11] [12] [13] [14] [15] De manera similar, las unidades funcionales especializadas se pueden componer 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 de 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

A medida que ha aumentado la movilidad de los dispositivos, se han desarrollado nuevas métricas que miden el rendimiento relativo de protocolos de aceleración específicos, teniendo en cuenta características como las dimensiones físicas del hardware, el consumo de energía y el rendimiento de las operaciones. Estas pueden resumirse 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 correspondientes y la energía consumida. [16]

Aplicaciones

Los ejemplos de aceleración de hardware incluyen la funcionalidad de aceleración bit blit 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 de expresiones regulares (ReDoS). [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 los conoce 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 por una) y estaban diseñados para ejecutar algoritmos de propósito general controlados por la obtención 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 , tener rutas de datos específicas para sus variables temporales y reducir la sobrecarga del control de instrucciones en el ciclo de obtención-decodificación-ejecución.

Los procesadores modernos son multinúcleo y a menudo cuentan con unidades paralelas de "instrucción única; múltiples datos" ( SIMD ). Aun así, la aceleración de hardware sigue ofreciendo ventajas. La aceleración de hardware es adecuada para cualquier algoritmo de cálculo intensivo que se ejecute con frecuencia en una tarea o programa. Según la granularidad, la aceleración de 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

Referencias

  1. ^ "Microsoft potencia la búsqueda de Bing con chips programables". WIRED . 16 de junio de 2014.
  2. ^ "Incrustado". Archivado desde el 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
  3. ^ Sinan, Kufeoglu; Mahmut, Ozkuran (2019). "Figura 5. Consumo mínimo de energía de CPU, GPU, FPGA y ASIC entre recálculos de dificultad". Consumo de energía en la minería de Bitcoin . doi : 10.17863/CAM.41230 .
  4. ^ Kim, Yeongmin; Kong, Joonho; Munir, Arslan (2020). "Coprogramación de aceleradores de CPU para aceleración de CNN en el borde". IEEE Access . 8 : 211422–211433. doi : 10.1109/ACCESS.2020.3039278 . ISSN  2169-3536.
  5. ^ 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 el kit de herramientas de aprendizaje profundo para la colocación de VLSI moderna". Transacciones IEEE sobre diseño asistido por computadora de circuitos y sistemas integrados . 40 (4): 748–761. doi :10.1109/TCAD.2020.3003843. ISSN  1937-4151. S2CID  225744481.
  6. ^ Lyakhov, Pavel; Valueva, Maria; Valuev, Georgii; Nagornov, Nikolai (18 de diciembre de 2020). "Un método para aumentar el rendimiento del filtro digital basado en unidades de multiplicación-acumulación truncadas". Applied Sciences . 10 (24): 9052. doi : 10.3390/app10249052 . ISSN  2076-3417. La simulación de hardware en FPGA aumentó el rendimiento del filtro digital.
  7. ^ Mohan, Prashanth; Wang, Wen; Jungk, Bernhard; Niederhagen, Ruben; Szefer, Jakub; Mai, Ken (octubre de 2020). "Acelerador ASIC en 28 nm para el esquema de firma digital postcuántica XMSS". 2020 IEEE 38th International Conference on Computer Design (ICCD) . Hartford, CT, EE. UU.: IEEE. págs. 656–662. doi :10.1109/ICCD50377.2020.00112. ISBN. 978-1-7281-9710-4. Número de identificación del sujeto  229330964.
  8. ^ Morgan, Timothy Pricket (3 de septiembre de 2014). "Cómo Microsoft está utilizando FPGAs para acelerar la búsqueda de Bing". Enterprise Tech . Consultado el 18 de septiembre de 2018 .
  9. ^ "Proyecto Catapult". Investigación de Microsoft .
  10. ^ Procesador MicroBlaze Soft: Preguntas frecuentes Archivado el 27 de octubre de 2011 en Wayback Machine
  11. ^ Vassányi, István (1998). "Implementación de matrices de procesadores en FPGAs". Lógica programable en campo y aplicaciones de FPGAs al paradigma informático . Apuntes de clase en informática. Vol. 1482. págs. 446–450. doi :10.1007/BFb0055278. ISBN 978-3-540-64948-9.
  12. ^ Zhoukun WANG y Omar HAMMAMI. "Diseño de un sistema en chip FPGA de 24 procesadores con red en chip". [1]
  13. ^ John Kent. "Matriz Micro16: una matriz de CPU simple"
  14. ^ Kit Eaton. "Se logró una CPU de 1000 núcleos: su computadora de escritorio del futuro será una supercomputadora". 2011. [2]
  15. ^ "Los científicos consiguen meter más de 1.000 núcleos en un solo chip". 2011. [3] Archivado el 5 de marzo de 2012 en Wayback Machine.
  16. ^ 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 . doi :10.1109/tcomm.2011.092011.100157. ISSN  0090-6778. S2CID  13863870.
  17. ^ ab "Expresiones regulares en hardware" . Consultado el 17 de julio de 2014 .
  18. ^ "Aceleradores de compresión - Microsoft Research". Microsoft Research . Consultado el 7 de octubre de 2017 .
  19. ^ ab Farabet, Clément, et al. "Redes neuronales convolucionales aceleradas por hardware para sistemas de visión sintética [ vínculo muerto ] ". Circuitos y sistemas (ISCAS), Actas del Simposio internacional IEEE de 2010. IEEE, 2010.

Enlaces externos