De Wikipedia, la enciclopedia libre
  (Redirigido desde el acelerador de hardware )
Saltar a navegación Saltar a búsqueda

La aceleración de hardware es el uso de hardware de computadora hecho para realizar algunas funciones de manera más eficiente que el software que se ejecuta en una unidad central de procesamiento (CPU) de propósito general . Cualquier transformación de datos o rutina que se pueda calcular se puede calcular puramente en software que se ejecuta en una CPU genérica, puramente en hardware personalizado o en una combinación de ambos. Una operación se puede calcular más rápido en circuitos integrados de aplicación específica (ASIC) diseñados o programados para calcular la operación que lo especificado en el software y realizado en un procesador de computadora de propósito general .. Cada enfoque tiene ventajas y desventajas. La implementación de tareas informáticas en hardware para disminuir la latencia y aumentar el rendimiento se conoce como aceleración de hardware.

Las ventajas típicas del software incluyen un desarrollo más rápido , menores costos de ingeniería no recurrentes , mayor portabilidad y facilidad de actualización de funciones o corrección de errores , a costa de gastos generales para calcular las operaciones generales. Las ventajas del hardware incluyen aceleración , menor consumo de energía , [1] menor latencia, mayor paralelismo [2] y ancho de banda , y una mejor utilización del área y 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 y tiempos de comercialización. En la jerarquía de los sistemas informáticos digitales que van desde procesadores de uso general hasta hardware totalmente personalizado , existe un compromiso 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] [4] Esta jerarquía incluye procesadores de propósito general como CPU, [5] procesadores más especializados como GPU, [6] función fija implementada en arreglos de puertas programables en campo(FPGA), [7] y función fija implementada en ASIC. [8]

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 el advenimiento de los 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 de problemas que requieren modificación de algoritmos y flujo de control de procesamiento . [9] [10]

Resumen [ editar ]

Se pueden crear circuitos integrados para realizar operaciones arbitrarias en señales analógicas y digitales . La mayoría de las veces en informática, las señales son digitales y pueden interpretarse como datos numéricos binarios . El hardware y el software informático funcionan con información en representación binaria para realizar operaciones informáticas ; esto se logra calculando funciones booleanas en los bits de entrada y enviando el resultado a algún dispositivo de salida aguas abajo para su almacenamiento o procesamiento posterior .

Equivalencia computacional de hardware y software [ editar ]

Tanto el software como el hardware pueden calcular cualquier función computable . El hardware personalizado ofrece 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 componer en puertas lógicas de un ASIC.

Computadoras con programa almacenado [ editar ]

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 , generalmente uno o más núcleos de CPU . Dichos procesadores deben buscar y decodificar instrucciones así como operandos de datos de 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 el código y los datos conduce a lacuello de botella de von Neumann , una limitación fundamental en el rendimiento del software en los procesadores que implementan la arquitectura de von Neumann. Incluso en la arquitectura de Harvard modificada , donde las instrucciones y los datos tienen cachés separados en la jerarquía de memoria , hay 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 . Procesadores modernos que proporcionan subprocesos múltiples simultáneosexplotar la infrautilizació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 [ editar ]

Las unidades de ejecución de hardware no se basan en general en 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 los cálculos necesarios se especifican en un diseño de hardware de nivel de transferencia de registro (RTL), los costos de tiempo y área del circuito en los que se incurriría por 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 tiene el costo de oportunidad de una menor utilidad de propósito general.

Arquitecturas de hardware emergentes [ editar ]

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 datos en el contexto de ejecución, reduciendo así la latencia de la computación y la comunicación entre módulos y unidades funcionales.

El hardware personalizado está limitado en la capacidad de procesamiento paralelo solo por el área y los bloques lógicos disponibles en la matriz del circuito integrado . [11] Por lo tanto, el hardware es mucho más libre para ofrecer paralelismo masivo que el software en procesadores de propósito general, ofreciendo 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. [12] [13] [14] [15] [16] 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 a menudo se emplea para tareas repetitivas y fijas que implican poca ramificación condicional , especialmente en grandes cantidades de datos. Así es como Nvidia 's CUDA línea de GPU son implementados.

Métricas de implementación [ editar ]

A medida que ha aumentado la movilidad de los dispositivos, el rendimiento relativo de los protocolos de aceleración específicos ha requerido nuevas métricas, teniendo en cuenta 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 adecuadas consideran el área del hardware junto con el rendimiento de las operaciones correspondientes y la energía consumida. [17]

Tareas de ejemplo aceleradas [ editar ]

Sumando dos matrices en una tercera matriz [ editar ]

#include  <stdio.h>int  main ( void ) { int  arrayOne []  =  { 1 ,  2 ,  3 };  int  arrayTwo []  =  { 4 ,  5 ,  6 };  int  arraySum [ 3 ]; for  ( int  i  =  0 ;  i  <  3 ;  i ++ )  {  arraySum [ i ]  =  arrayOne [ i ]  +  arrayTwo [ i ];  } }

Sumando un millón de enteros [ editar ]

Suponga que deseamos calcular la suma de números enteros . Suponiendo que los números enteros grandes estén disponibles lo suficientemente grandes como para contener la suma, esto se puede hacer en el software especificando (aquí, en C ++ ): bignum

constexpr  int  N  =  20 ; constexpr  int  two_to_the_N  =  1  <<  N ;bignum  array_sum ( const  std :: array < int ,  two_to_the_N > &  ints )  {  bignum  resultado  =  0 ;  para  ( estándar :: tamaño_t  i  =  0 ;  i  <  dos_a_el_N ;  i ++ )  {  resultado  + =  ints [ i ];  }  devolver  resultado ; }

Este algoritmo se ejecuta en tiempo lineal , en Big O notación . En hardware, con suficiente área en el chip , el cálculo se puede paralelizar para tomar solo 20 pasos de tiempo usando el algoritmo de suma de prefijo . [18] El algoritmo sólo requiere tiempo logarítmica , y el espacio como un algoritmo en el lugar :

parámetro  int  N  =  20 ; parámetro  int  two_to_the_N  =  1  <<  N ;function  int  suma_array ;  input  int  array [ dos_a_el_N ];  comenzar  para  ( genvar  i  =  0 ;  i  <  N ;  i ++ )  comenzar  para  ( genvar  j  =  0 ;  j  <  dos_a_el_N ;  j ++ )  comenzar  si  ( j  > =  ( 1  <<  i ))  comenzar  matriz [ j ] =  matriz [ j ]  +  matriz [ j  -  ( 1  <<  i )];  end  end  end  return  array [ two_to_the_N  -  1 ];  final endfunction

Este ejemplo aprovecha los mayores recursos paralelos disponibles en el hardware específico de la aplicación que la mayoría de los paradigmas y arquitecturas informáticas de propósito general y de software .

Procesamiento de transmisión [ editar ]

La aceleración de hardware se puede aplicar al procesamiento de transmisiones .

Aplicaciones [ editar ]

Los 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 las redes neuronales y la aceleración de hardware de expresión regular para el control de spam en la industria de servidores , con el objetivo de prevenir ataques de denegación de servicio de expresión regular (ReDoS). [19] 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 les 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 fueron 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-ejecución .

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

Ver también [ editar ]

  • Coprocesador
  • Aceleración de video DirectX (DXVA)
  • Acceso directo a memoria (DMA)
  • Síntesis de alto nivel
    • C a HDL
    • Flujo a HDL
  • Microprocesador suave
  • Taxonomía de Flynn de arquitecturas informáticas paralelas
    • Instrucción única, datos múltiples (SIMD)
    • Instrucción única, múltiples subprocesos (SIMT)
    • Múltiples instrucciones, múltiples datos (MIMD)
  • Computadora para operaciones con funciones

Referencias [ editar ]

  1. ^ "Microsoft sobrealimenta la búsqueda de Bing con chips programables" . CON CABLE . 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 'A' a 'Z'" por Clive Maxfield 2006
  3. ^ "Comparación de hardware de minería - Bitcoin" . Consultado el 17 de julio de 2014 .
  4. ^ "Comparación de hardware no especializado - Bitcoin" . Consultado el 25 de febrero de 2014 .
  5. ^ Kim, Yeongmin; Kong, Joonho; Munir, Arslan (2020). "Co-programación de 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 . 
  6. ^ 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 . 
  7. 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 acumulación y multiplicació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. 
  8. ^ 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 Post-Quantum XMSS" . 2020 IEEE 38th International Conference on Computer Design (ICCD) . Hartford, CT, EE.UU .: IEEE: 656–662. doi : 10.1109 / ICCD50377.2020.00112 . ISBN 978-1-7281-9710-4.
  9. Morgan, Timothy Pricket (3 de septiembre de 2014). "Cómo Microsoft está utilizando FPGA para acelerar la búsqueda de Bing" . Tecnología empresarial . Consultado el 18 de septiembre de 2018 .
  10. ^ "Proyecto Catapulta" . Investigación de Microsoft .
  11. ^ Procesador suave MicroBlaze: preguntas frecuentes. Archivado el 27 de octubre de 2011 en la Wayback Machine.
  12. ^ István Vassányi. "Implementación de matrices de procesadores en FPGA". 1998
  13. ^ Zhoukun WANG y Omar HAMMAMI. "Un Sistema de 24 Procesadores en Diseño de Chip FPGA con Red en Chip". [1]
  14. ^ John Kent. "Matriz Micro16: una matriz de CPU simple"
  15. ^ Kit Eaton. "CPU de 1000 núcleos lograda: su futuro escritorio será una supercomputadora". 2011. [2]
  16. ^ "Los científicos exprimen más de 1.000 núcleos en un chip". 2011. [3] Archivado el 5 de marzo de 2012 en la Wayback Machine.
  17. ^ Kienle, Frank; Wehn, Norbert; Meyr, Heinrich (diciembre de 2011). "Sobre la complejidad, la eficiencia energética y la implementación de los decodificadores de canal". Transacciones IEEE sobre comunicaciones . 59 (12): 3301–3310. arXiv : 1003,3792 . doi : 10.1109 / tcomm.2011.092011.100157 . ISSN 0090-6778 . 
  18. ^ Hillis, W. Daniel; Steele, Jr., Guy L. (diciembre de 1986). "Algoritmos de datos en paralelo". Comunicaciones de la ACM . 29 (12): 1170-1183. doi : 10.1145 / 7902.7903 .
  19. ^ a b "Expresiones regulares en hardware" . Consultado el 17 de julio de 2014 .
  20. ^ "Aceleradores de compresión - Microsoft Research" . Investigación de Microsoft . Consultado el 7 de octubre de 2017 .
  21. ^ a b Farabet, Clément, et al. " Redes neuronales convolucionales aceleradas por hardware para sistemas de visión sintética ". Circuitos y sistemas (ISCAS), Actas del Simposio Internacional IEEE 2010 sobre. IEEE, 2010.

Enlaces externos [ editar ]

  • Medios relacionados con la aceleración de hardware en Wikimedia Commons