stringtranslate.com

Aceleracion 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 de computadora 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 propósito general . Cualquier transformación de datos que pueda calcularse en software que se ejecuta en una CPU genérica también puede calcularse en hardware personalizado o en una combinación de ambos.

Para realizar tareas informáticas de manera 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 menor latencia , mayor rendimiento y menor consumo de energía . Las ventajas típicas de centrarse en el software pueden incluir una mayor versatilidad, un desarrollo más rápido , menores costos de ingeniería no recurrentes , mayor portabilidad y facilidad para actualizar funciones o corregir errores , a costa de los gastos generales para calcular las 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 los diseños una vez grabados en silicio y mayores costos de verificación funcional , tiempos de comercialización y necesidad de más piezas. En la jerarquía de los sistemas informáticos digitales, que van desde procesadores de uso general hasta hardware totalmente personalizado , existe un equilibrio entre flexibilidad y eficiencia, y la eficiencia aumenta en órdenes de magnitud cuando una aplicación determinada se implementa en un nivel más alto de 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] funciones fijas implementadas en matrices de puertas programables en campo (FPGA), [6] y procesadores fijos. -función implementada en circuitos integrados de aplicaciones específicas (ASIC). [7]

La aceleración por hardware es ventajosa para el rendimiento y práctica cuando las funciones están 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 completamente fijos se ha aliviado desde 2010, lo que permite aplicar la aceleración de hardware a dominios problemáticos que requieren modificación de los algoritmos y del flujo de control de procesamiento . [8] [9] Sin embargo, la desventaja es que en muchos proyectos de código abierto, se requieren 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 en señales tanto analógicas como digitales. En informática, las señales digitales son las más comunes y normalmente se representan como números binarios. El hardware y el software de la computadora utilizan esta representación binaria para realizar cálculos. Esto se hace procesando funciones booleanas en la entrada binaria y luego generando los resultados para su almacenamiento o procesamiento posterior en otros dispositivos.

Equivalencia computacional de hardware y software

Debido a 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 software determinado. Por el contrario, el software siempre se puede utilizar para emular la función de una determinada pieza de hardware. 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 redes que puede programarse en una FPGA o componerse en las puertas lógicas de un ASIC.

Computadoras con programas almacenados

La gran mayoría de la informática basada en software se produce en máquinas que implementan la arquitectura von Neumann , conocidas colectivamente como computadoras con programas almacenados . Los programas informáticos se almacenan como datos y los procesadores los ejecutan . Dichos procesadores deben buscar y decodificar instrucciones, así como cargar operandos de datos de la memoria (como parte del ciclo de instrucciones ) para ejecutar las instrucciones que constituyen el programa de software. Depender de una caché común para el código y los datos conduce al "cuello de botella de von Neumann", una limitación fundamental en el rendimiento del software en los procesadores que implementan la arquitectura von Neumann. Incluso en la arquitectura Harvard modificada , donde las instrucciones y los datos tienen cachés separados en la jerarquía de la memoria , existe una sobrecarga para decodificar códigos de operación de instrucciones y multiplexar 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 aprovechan la subutilización de las unidades funcionales de 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 en general no dependen de las arquitecturas de von Neumann o Harvard modificadas y no necesitan realizar los pasos de búsqueda y decodificación de instrucciones de un ciclo de instrucciones e 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 en los que se incurriría mediante las etapas de búsqueda de instrucciones y decodificación 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 la computación paralela, otras funciones, comunicación o memoria, así como para aumentar las capacidades de entrada/salida . Esto tiene el costo 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 informática 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 informática y de comunicación entre módulos y unidades funcionales.

El hardware personalizado tiene una capacidad de procesamiento en paralelo limitada únicamente por el área y los bloques lógicos disponibles en el 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 paralela de acceso aleatorio (PRAM).

Es común construir unidades de procesamiento multinúcleo y 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 fijas y repetitivas 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, considerando características como las dimensiones físicas del hardware, el consumo de energía y el rendimiento de las operaciones. Estos se pueden resumir en tres categorías: eficiencia de tareas, eficiencia de implementación y flexibilidad. Las métricas apropiadas consideran el área del hardware junto con el rendimiento de las operaciones correspondientes y la energía consumida. [dieciséis]

Aplicaciones

Ejemplos de aceleración de hardware incluyen la funcionalidad de aceleración bit blit en unidades de procesamiento de gráficos (GPU), el uso de memristores para acelerar redes neuronales y la aceleración de hardware de expresión regular para el control de spam en la industria de servidores , destinado a evitar ataques de denegación de servicio de expresión regular (ReDoS). [17] El hardware que realiza la aceleración puede ser parte de una CPU de uso 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 ejecutan una por 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 registro ). 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 búsqueda, decodificación y ejecución.

Los procesadores modernos son multinúcleo y a menudo cuentan con unidades paralelas de "instrucción única; datos múltiples" ( SIMD ). Aun así, la aceleración por hardware sigue generando beneficios. La aceleración de hardware es adecuada para cualquier algoritmo de cálculo intensivo que se ejecuta con frecuencia en una tarea o programa. Dependiendo de la granularidad, la aceleración del hardware puede variar desde una pequeña unidad funcional hasta un bloque funcional grande (como la estimación de movimiento en MPEG-2 ).

Unidades de aceleración de hardware por aplicación

Ver también

Referencias

  1. ^ "Microsoft potencia la búsqueda de Bing con chips programables". CABLEADO . 16 de junio de 2014.
  2. ^ "Integrado". 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 de la minería de Bitcoin . doi : 10.17863/CAM.41230 .
  4. ^ Kim, Yeongmin; Kong, Joonho; Munir, Arslan (2020). "Programación conjunta del acelerador de CPU para la aceleración de CNN en el borde". Acceso IEEE . 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, María; Valuev, Georgii; Nagornov, Nikolai (18 de diciembre de 2020). "Un método para aumentar el rendimiento del filtro digital basado en unidades de acumulación múltiple 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.
  7. ^ Mohán, Prashanth; Wang, Wen; Jungk, Bernhard; Niederhagen, Rubén; Szefer, Jakub; Mai, Ken (octubre de 2020). "Acelerador ASIC en 28 nm para el esquema de firma digital poscuántica XMSS". 2020 IEEE 38.a Conferencia Internacional sobre Diseño Informático (ICCD) . Hartford, Connecticut, Estados Unidos: IEEE. págs. 656–662. doi :10.1109/ICCD50377.2020.00112. ISBN 978-1-7281-9710-4. S2CID  229330964.
  8. ^ Morgan, Timothy Pricket (3 de septiembre de 2014). "Cómo utiliza Microsoft los FPGA para acelerar la búsqueda en Bing". Tecnología empresarial . Consultado el 18 de septiembre de 2018 .
  9. ^ "Proyecto Catapulta". Investigación de Microsoft .
  10. ^ Procesador suave MicroBlaze: preguntas frecuentes archivadas el 27 de octubre de 2011 en Wayback Machine.
  11. ^ Vassányi, István (1998). "Implementación de matrices de procesadores en FPGA". Lógica programable en campo y aplicaciones de FPGA al paradigma informático . Apuntes de conferencias sobre informática. vol. 1482, págs. 446–450. doi :10.1007/BFb0055278. ISBN 978-3-540-64948-9.
  12. ^ Zhoukun WANG y Omar HAMMAMI. "Un sistema de 24 procesadores en diseño FPGA de chip con red en chip". [1]
  13. ^ John Kent. "Matriz Micro16: una matriz de CPU simple"
  14. ^ Equipo Eaton. "CPU de 1000 núcleos logrados: su futura computadora de escritorio será una supercomputadora". 2011. [2]
  15. ^ "Los científicos exprimen más de 1000 núcleos en un chip". 2011. [3] Archivado el 5 de marzo de 2012 en Wayback Machine.
  16. ^ Kienle, Frank; Wehn, Norberto; Meyr, Heinrich (diciembre de 2011). "Sobre la complejidad, la eficiencia energética y de implementación de los decodificadores de canales". Transacciones IEEE sobre Comunicaciones . 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". Investigación de Microsoft . Consultado el 7 de octubre de 2017 .
  19. ^ ab Farabet, Clément y col. "Redes neuronales convolucionales aceleradas por hardware para sistemas de visión sintética [ enlace muerto ] ". Circuitos y sistemas (ISCAS), Actas del Simposio internacional IEEE de 2010 sobre. IEEE, 2010.

enlaces externos