Aceleracion de hardware


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 se pueda calcular en software que se ejecuta en una CPU genérica también se puede calcular en hardware hecho a medida, o en una combinación de ambos.

Para realizar tareas informáticas más rápidamente (o mejor de alguna otra manera), 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 un desarrollo más rápido , costos de ingeniería no recurrentes más bajos, mayor portabilidad y facilidad para actualizar funciones o parchear errores , a costa de gastos generales .para calcular operaciones generales. Las ventajas de centrarse en el hardware pueden incluir aceleración , consumo de energía reducido , [1] menor latencia, mayor paralelismo [2] y ancho de banda , y una 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 el 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 los procesadores de uso general hasta los totalmente personalizadoshardware, existe una compensación entre flexibilidad y eficiencia, y la eficiencia aumenta en órdenes de magnitud cuando cualquier aplicación determinada se implementa más arriba en esa jerarquía. [3] [4] Esta jerarquía incluye procesadores de uso general como CPU, [5] procesadores más especializados como GPU , [6] de función fija implementados en arreglos de puertas programables en campo (FPGA), [7] y procesadores fijos. función implementada en circuitos integrados específicos de la aplicación (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 la llegada de los 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 aplicar la aceleración de hardware a dominios problemáticos que requieren modificaciones en los algoritmos y el flujo de control de procesamiento . [9] [10]

Se pueden crear circuitos integrados para realizar operaciones arbitrarias en señales analógicas y digitales . La mayoría de las veces en computación, las señales son digitales y pueden interpretarse como datos numéricos binarios . El hardware y el software de la computadora operan con información en representación binaria para realizar la computación ; 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 .

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 una determinada pieza de software. Por el contrario, el software siempre se puede usar 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 conexiones que se puede programar en un FPGA o componer en las puertas lógicas de un ASIC.