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 el software que se ejecuta en una CPU genérica también se puede calcular en hardware personalizado, 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 , menores costos de ingeniería no recurrentes , mayor portabilidad y facilidad para actualizar las funciones o corregir errores , a costa de gastos generales.para calcular operaciones generales. Las ventajas de concentrarse en el hardware pueden incluir 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 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 propósito general hasta totalmente personalizadoshardware, 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 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 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]

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 de ordenador 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 .

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 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 conexiones que se puede programar en un FPGA o componer en las puertas lógicas de un ASIC.