stringtranslate.com

Computación reconfigurable

La computación reconfigurable es una arquitectura informática que combina parte de la flexibilidad del software con el alto rendimiento del hardware mediante el procesamiento con plataformas de hardware flexibles como las matrices de puertas programables en campo (FPGAs). La principal diferencia con el uso de microprocesadores convencionales es la capacidad de añadir bloques computacionales personalizados mediante FPGAs. Por otro lado, la principal diferencia con el hardware personalizado, es decir, los circuitos integrados específicos de la aplicación (ASICs), es la posibilidad de adaptar el hardware durante el tiempo de ejecución "cargando" un nuevo circuito en la estructura reconfigurable, proporcionando así nuevos bloques computacionales sin la necesidad de fabricar y añadir nuevos chips al sistema existente.

Historia

El concepto de computación reconfigurable existe desde la década de 1960, cuando Gerald Estrin propuso en su artículo el concepto de una computadora compuesta por un procesador estándar y una matriz de hardware "reconfigurable". [1] [2] El procesador principal controlaría el comportamiento del hardware reconfigurable. Este último se adaptaría entonces para realizar una tarea específica, como el procesamiento de imágenes o la búsqueda de patrones , tan rápido como un componente de hardware dedicado. Una vez realizada la tarea, el hardware podría ajustarse para realizar otra tarea. Esto dio como resultado una estructura de computadora híbrida que combina la flexibilidad del software con la velocidad del hardware.

En los años 1980 y 1990 hubo un renacimiento en esta área de investigación con muchas propuestas de arquitecturas reconfigurables desarrolladas en la industria y la academia, [3] como: Copacobana, Matrix, GARP, [4] Elixent, NGEN, [5] Polyp, [6] MereGen, [7] PACT XPP, Silicon Hive, Montium, Pleiades, Morphosys y PiCoGA. [8] Dichos diseños fueron factibles debido al progreso constante de la tecnología de silicio que permitió implementar diseños complejos en un chip. Algunas de estas computadoras reconfigurables masivamente paralelas se construyeron principalmente para subdominios especiales como la evolución molecular, el procesamiento neuronal o de imágenes. La primera computadora reconfigurable comercial del mundo, la Algotronix CHS2X4, se completó en 1991. No fue un éxito comercial, pero fue lo suficientemente prometedora como para que Xilinx (el inventor de la matriz de puertas programables en campo , FPGA) comprara la tecnología y contratara al personal de Algotronix. [9] Máquinas posteriores permitieron las primeras demostraciones de principios científicos, como la autoorganización espacial espontánea de la codificación genética con MereGen. [10]

Teorías

Clasificación de Tredennick

El modelo fundamental del paradigma de la máquina de computación reconfigurable, la antimáquina basada en flujo de datos , está bien ilustrado por las diferencias con otros paradigmas de máquina que se introdujeron anteriormente, como lo muestra el siguiente esquema de clasificación de paradigmas de computación de Nick Tredennick (ver "Tabla 1: Esquema de clasificación de paradigmas de Nick Tredennick"). [11]

La computadora portátil de Hartenstein

El científico informático Reiner Hartenstein describe la computación reconfigurable en términos de una antimáquina que, según él, representa un cambio de paradigma fundamental que se aleja de la máquina de von Neumann más convencional . [12] Hartenstein la llama paradoja de la computación reconfigurable, que la migración de software a configware (software a FPGA ) da como resultado factores de aceleración informados de hasta más de cuatro órdenes de magnitud, así como una reducción en el consumo de electricidad de hasta casi cuatro órdenes de magnitud, aunque los parámetros tecnológicos de los FPGA están detrás de la curva de Gordon Moore en aproximadamente cuatro órdenes de magnitud, y la frecuencia de reloj es sustancialmente menor que la de los microprocesadores. Esta paradoja se explica en parte por el síndrome de von Neumann .

Computación de alto rendimiento

La computación reconfigurable de alto rendimiento (HPRC) es una arquitectura informática que combina aceleradores basados ​​en computación reconfigurable, como matrices de puertas programables en campo , con CPU o procesadores multinúcleo .

El aumento de la lógica en un FPGA ha permitido programar algoritmos más grandes y complejos en el FPGA. La conexión de un FPGA de este tipo a una CPU moderna a través de un bus de alta velocidad, como PCI Express , ha permitido que la lógica configurable actúe más como un coprocesador que como un periférico . Esto ha llevado la computación reconfigurable a la esfera de la computación de alto rendimiento .

Además, al replicar un algoritmo en un FPGA o el uso de una multiplicidad de FPGAs se ha hecho posible producir sistemas SIMD reconfigurables en los que varios dispositivos computacionales pueden operar simultáneamente sobre diferentes datos, lo que constituye una computación altamente paralela .

Esta técnica de sistemas heterogéneos se utiliza en la investigación informática y especialmente en la supercomputación . [13] Un artículo de 2008 informó factores de aceleración de más de 4 órdenes de magnitud y factores de ahorro de energía de hasta casi 4 órdenes de magnitud. [14] Algunas empresas de supercomputadoras ofrecen bloques de procesamiento heterogéneos que incluyen FPGAs como aceleradores. [ cita requerida ] Un área de investigación es la productividad del flujo de herramientas de programación de paradigma doble obtenida para tales sistemas heterogéneos. [15]

La Fundación Nacional de Ciencias de Estados Unidos cuenta con un centro de computación reconfigurable de alto rendimiento (CHREC). [16] En abril de 2011 se celebró en Europa la cuarta Conferencia sobre supercomputación reconfigurable y de múltiples núcleos. [17]

Están empezando a surgir sistemas informáticos reconfigurables de alto rendimiento comerciales con el anuncio de IBM de integrar FPGAs con sus microprocesadores IBM Power . [18]

Reconfiguración parcial

La reconfiguración parcial es el proceso de cambiar una parte de los circuitos de hardware reconfigurables mientras que la otra parte conserva su configuración anterior. Las matrices de puertas programables en campo se utilizan a menudo como apoyo a la reconfiguración parcial.

El hardware electrónico , al igual que el software , se puede diseñar de forma modular, creando subcomponentes y luego componentes de nivel superior para instanciarlos. En muchos casos, resulta útil poder intercambiar uno o varios de estos subcomponentes mientras el FPGA aún está en funcionamiento.

Normalmente, para reconfigurar un FPGA es necesario mantenerlo en estado de reinicio mientras un controlador externo recarga un diseño en él. La reconfiguración parcial permite que partes críticas del diseño sigan funcionando mientras un controlador, ya sea en el FPGA o fuera de él, carga un diseño parcial en un módulo reconfigurable. La reconfiguración parcial también se puede utilizar para ahorrar espacio para varios diseños, ya que solo se almacenan los diseños parciales que cambian entre diseños. [19]

Un ejemplo común de cuándo sería útil una reconfiguración parcial es el caso de un dispositivo de comunicación. Si el dispositivo controla varias conexiones, algunas de las cuales requieren cifrado , sería útil poder cargar diferentes núcleos de cifrado sin tener que apagar todo el controlador.

La reconfiguración parcial no es compatible con todos los FPGA. Se requiere un flujo de software especial que haga hincapié en el diseño modular. Normalmente, los módulos de diseño se construyen a lo largo de límites bien definidos dentro del FPGA que requieren que el diseño se asigne especialmente al hardware interno.

Desde la funcionalidad del diseño, la reconfiguración parcial se puede dividir en dos grupos: [20]

Sistemas actuales

Emulación de computadora

Se está utilizando una placa FPGA para recrear la computadora Vector-06C

Con la llegada de placas FPGA asequibles, los proyectos de estudiantes y aficionados buscan recrear computadoras antiguas o implementar arquitecturas más novedosas. [21] [22] [23] Dichos proyectos se construyen con hardware reconfigurable (FPGA), y algunos dispositivos admiten la emulación de múltiples computadoras antiguas utilizando un solo hardware reconfigurable ( C-One ).

Copacabana

El COPACOBANA, el analizador y descifrador de códigos optimizado en función de los costes, y su sucesor, el RIVYERA, son dos ordenadores totalmente basados ​​en FPGA. La empresa SciEngines GmbH, filial del proyecto COPACOBANA de las universidades de Bochum y Kiel en Alemania, continúa con el desarrollo de ordenadores totalmente basados ​​en FPGA.

Mitriónica

Mitrionics ha desarrollado un SDK que permite compilar y ejecutar software escrito con un único lenguaje de asignación en ordenadores basados ​​en FPGA. El lenguaje de software Mitrion-C y el procesador Mitrion permiten a los desarrolladores de software escribir y ejecutar aplicaciones en ordenadores basados ​​en FPGA de la misma manera que con otras tecnologías informáticas, como unidades de procesamiento gráfico ("GPU"), procesadores basados ​​en celdas, unidades de procesamiento paralelo ("PPU"), CPU multinúcleo y clústeres de CPU tradicionales de un solo núcleo. (fuera del negocio)

Instrumentos nacionales

National Instruments ha desarrollado un sistema informático híbrido integrado denominado CompactRIO . Consta de un chasis reconfigurable que alberga el FPGA programable por el usuario, módulos de E/S intercambiables en caliente, un controlador en tiempo real para la comunicación y el procesamiento deterministas y un software gráfico LabVIEW para una programación rápida de RT y FPGA.

Xilinx

Xilinx ha desarrollado dos estilos de reconfiguración parcial de dispositivos FPGA: basada en módulos y basada en diferencias . La reconfiguración parcial basada en módulos permite reconfigurar distintas partes modulares del diseño, mientras que la reconfiguración parcial basada en diferencias se puede utilizar cuando se realiza un pequeño cambio en un diseño.

Intel

Intel [24] admite la reconfiguración parcial de sus dispositivos FPGA en dispositivos de 28 nm, como Stratix V [25] , y en los dispositivos Arria 10 de 20 nm. [26] El flujo de reconfiguración parcial de FPGA de Intel para Arria 10 se basa en la metodología de diseño jerárquico del software Quartus Prime Pro, donde los usuarios crean particiones físicas del FPGA que se pueden reconfigurar [27] en tiempo de ejecución mientras el resto del diseño continúa funcionando. El software Quartus Prime Pro también admite la reconfiguración parcial jerárquica y la simulación de la reconfiguración parcial.

Clasificación de sistemas

Como campo emergente, las clasificaciones de arquitecturas reconfigurables aún se están desarrollando y refinando a medida que se desarrollan nuevas arquitecturas; hasta la fecha, no se ha sugerido una taxonomía unificadora. Sin embargo, se pueden utilizar varios parámetros recurrentes para clasificar estos sistemas.

Granularidad

La granularidad de la lógica reconfigurable se define como el tamaño de la unidad funcional más pequeña (bloque lógico configurable, CLB) a la que se dirigen las herramientas de mapeo. La granularidad alta, que también se puede conocer como de grano fino, a menudo implica una mayor flexibilidad a la hora de implementar algoritmos en el hardware. Sin embargo, existe una penalización asociada a esto en términos de mayor potencia, área y retraso debido a la mayor cantidad de enrutamiento requerido por cálculo. Las arquitecturas de grano fino funcionan a nivel de manipulación de nivel de bit; mientras que los elementos de procesamiento de grano grueso (unidad de ruta de datos reconfigurable, rDPU) están mejor optimizados para aplicaciones de ruta de datos estándar. Uno de los inconvenientes de las arquitecturas de grano grueso es que tienden a perder parte de su utilización y rendimiento si necesitan realizar cálculos más pequeños que los que proporciona su granularidad, por ejemplo, para un complemento de un bit en una unidad funcional de cuatro bits de ancho se desperdiciarían tres bits. Este problema se puede resolver teniendo una matriz de grano grueso ( matriz de ruta de datos reconfigurable , rDPA) y un FPGA en el mismo chip.

Las arquitecturas de grano grueso ( rDPA ) están destinadas a la implementación de algoritmos que necesitan rutas de datos de ancho de palabra (rDPU). Como sus bloques funcionales están optimizados para cálculos grandes y generalmente comprenden unidades lógicas aritméticas de ancho de palabra (ALU), realizarán estos cálculos más rápidamente y con mayor eficiencia energética que un conjunto de unidades funcionales más pequeñas interconectadas; esto se debe a que los cables de conexión son más cortos, lo que resulta en una menor capacitancia del cable y, por lo tanto, diseños más rápidos y de menor consumo de energía. Una posible consecuencia indeseable de tener bloques computacionales más grandes es que cuando el tamaño de los operandos puede no coincidir con el algoritmo, puede resultar en una utilización ineficiente de los recursos. A menudo, el tipo de aplicaciones que se ejecutarán se conoce de antemano, lo que permite adaptar los recursos de lógica, memoria y enrutamiento para mejorar el rendimiento del dispositivo al mismo tiempo que se proporciona un cierto nivel de flexibilidad para una adaptación futura. Ejemplos de esto son las matrices específicas de dominio destinadas a obtener un mejor rendimiento en términos de potencia, área y rendimiento que sus primos FPGA de grano más fino más genéricos al reducir su flexibilidad.

Tasa de reconfiguración

La configuración de estos sistemas reconfigurables puede ocurrir en el momento de la implementación, entre fases de ejecución o durante la ejecución. En un sistema reconfigurable típico, se utiliza un flujo de bits para programar el dispositivo en el momento de la implementación. Los sistemas de grano fino por su propia naturaleza requieren un mayor tiempo de configuración que las arquitecturas de grano grueso debido a que se necesitan abordar y programar más elementos. Por lo tanto, las arquitecturas de grano grueso se benefician de los posibles requisitos de energía más bajos, ya que se transfiere y utiliza menos información. Intuitivamente, cuanto más lenta sea la tasa de reconfiguración, menor será el consumo de energía, ya que el costo de energía asociado a la reconfiguración se amortiza en un período de tiempo más largo. La reconfiguración parcial tiene como objetivo permitir que se reprograme una parte del dispositivo mientras otra parte aún realiza cálculos activos. La reconfiguración parcial permite flujos de bits reconfigurables más pequeños, por lo que no se desperdicia energía en la transmisión de información redundante en el flujo de bits. Es posible comprimir el flujo de bits, pero se debe realizar un análisis cuidadoso para garantizar que la energía ahorrada mediante el uso de flujos de bits más pequeños no se vea compensada por el cálculo necesario para descomprimir los datos.

Acoplamiento de host

A menudo, la matriz reconfigurable se utiliza como un acelerador de procesamiento conectado a un procesador host. El nivel de acoplamiento determina el tipo de transferencias de datos, latencia, potencia, rendimiento y gastos generales involucrados cuando se utiliza la lógica reconfigurable. Algunos de los diseños más intuitivos utilizan un bus periférico para proporcionar una disposición similar a la de un coprocesador para la matriz reconfigurable. Sin embargo, también ha habido implementaciones en las que la estructura reconfigurable está mucho más cerca del procesador; algunas incluso se implementan en la ruta de datos, utilizando los registros del procesador. El trabajo del procesador host es realizar las funciones de control, configurar la lógica, programar los datos y proporcionar una interfaz externa.

Enrutamiento/interconexiones

La flexibilidad de los dispositivos reconfigurables proviene principalmente de su interconexión de enrutamiento. Un estilo de interconexión popularizado por los proveedores de FPGA , Xilinx y Altera, es el diseño de estilo isla, donde los bloques se organizan en una matriz con enrutamiento vertical y horizontal. Un diseño con enrutamiento inadecuado puede sufrir de poca flexibilidad y utilización de recursos, por lo que ofrece un rendimiento limitado. Si se proporciona demasiada interconexión, se requieren más transistores de los necesarios y, por lo tanto, más área de silicio, cables más largos y mayor consumo de energía.

Desafíos para los sistemas operativos

Uno de los principales retos de la informática reconfigurable es permitir una mayor productividad en el diseño y proporcionar una forma más sencilla de utilizar sistemas informáticos reconfigurables para usuarios que no están familiarizados con los conceptos subyacentes. Una forma de lograrlo es proporcionar estandarización y abstracción, normalmente respaldadas y aplicadas por un sistema operativo. [28]

Una de las principales tareas de un sistema operativo es ocultar el hardware y presentar a los programas (y a sus programadores) abstracciones agradables, limpias, elegantes y consistentes con las que trabajar. En otras palabras, las dos tareas principales de un sistema operativo son la abstracción y la gestión de recursos . [28]

La abstracción es un mecanismo poderoso para manejar tareas complejas y diferentes (de hardware) de una manera bien definida y común. Una de las abstracciones más elementales del sistema operativo es un proceso. Un proceso es una aplicación en ejecución que tiene la percepción (proporcionada por el sistema operativo) de que se está ejecutando por sí sola en el hardware virtual subyacente. Esto se puede suavizar mediante el concepto de subprocesos, lo que permite que diferentes tareas se ejecuten simultáneamente en este hardware virtual para aprovechar el paralelismo a nivel de tareas. Para permitir que diferentes procesos e subprocesos coordinen su trabajo, el sistema operativo debe proporcionar métodos de comunicación y sincronización. [28]

Además de la abstracción, la gestión de recursos de los componentes de hardware subyacentes es necesaria porque las computadoras virtuales proporcionadas a los procesos y subprocesos por el sistema operativo necesitan compartir recursos físicos disponibles (procesadores, memoria y dispositivos) espacial y temporalmente. [28]

Véase también

Referencias

  1. ^ Estrin, G (2002). "Orígenes de las computadoras reconfigurables: la computadora de estructura fija más variable (F+V) de la UCLA". IEEE Ann. Hist. Comput . 24 (4): 3–9. doi :10.1109/MAHC.2002.1114865. S2CID  7923912.
  2. ^ Estrin, G., "Organización de sistemas informáticos: la computadora de estructura fija más variable", Proc. Western Joint Computer Conf. , Western Joint Computer Conference, Nueva York, 1960, págs. 33–40.
  3. ^ C. Bobda: Introducción a la computación reconfigurable: arquitecturas; Springer, 2007
  4. ^ Hauser, John R. y Wawrzynek, John, "Garp: Un procesador MIPS con un coprocesador reconfigurable", Actas del Simposio IEEE sobre máquinas informáticas personalizadas programables en campo (FCCM '97, 16-18 de abril de 1997), págs. 24-33.
  5. ^ McCaskill, John S.; Chorongiewski, Harald; Mekelburg, Karsten; Tangen, Uwe; Gemm, Udo (1 de septiembre de 1994). "NGEN: hardware informático configurable para simular la autoorganización prolongada de biopolímeros". Berichte der Bunsengesellschaft für Physikalische Chemie . 98 (9): 1114. doi : 10.1002/bbpc.19940980906. ISSN  0005-9021.
  6. ^ Sistemas evolucionables: de la biología al hardware: segunda conferencia internacional, ICES 98, Lausana, Suiza, 23-25 ​​de septiembre de 1998: actas . Sipper, Moshe., Mange, Daniel, 1940-, Pérez-Uribe, Andrés., Conferencia internacional sobre sistemas evolucionables (2.ª: 1998: Lausana, Suiza). Berlín: Springer. 1998. ISBN. 978-3-540-64954-0.OCLC 39655211  .{{cite book}}: Mantenimiento de CS1: otros ( enlace )
  7. ^ Acoplamiento de sistemas biológicos y electrónicos: actas del 2º Cesario, Bonn, 1-3 de noviembre de 2000. Hoffmann, K.-H. (Karl-Heinz). Berlín: Springer. 2002. ISBN 978-3-540-43699-7.OCLC 49750250  .{{cite book}}: Mantenimiento de CS1: otros ( enlace )
  8. ^ Campi, F.; Toma, M.; Lodi, A.; Cappelli, A.; Canegallo, R.; Guerrieri, R., "Un procesador VLIW con un conjunto de instrucciones reconfigurable para aplicaciones integradas", Solid-State Circuits Conference, 2003. Digest of Technical Papers. ISSCC. 2003 IEEE International, vol., n.º, págs. 250–491 vol. 1, 2003
  9. ^ Historia de Algotronix
  10. ^ Füchslin, Rudolf M.; McCaskill, John S. (31 de julio de 2001). "Autoorganización evolutiva de la codificación genética sin células". Actas de la Academia Nacional de Ciencias . 98 (16): 9185–9190. Bibcode :2001PNAS...98.9185F. doi : 10.1073/pnas.151253198 . ISSN  0027-8424. PMC 55395 . PMID  11470896. 
  11. ^ N. Tredennick: El caso de la computación reconfigurable; Microprocessor Report, vol. 10 núm. 10, 5 de agosto de 1996, págs. 25-27.
  12. ^ Hartenstein, R. 2001. Una década de computación reconfigurable: una retrospectiva visionaria. En Actas de la Conferencia sobre Diseño, Automatización y Pruebas en Europa (DATE 2001) (Munich, Alemania). W. Nebel y A. Jerraya, Eds. Diseño, Automatización y Pruebas en Europa. IEEE Press, Piscataway, NJ, 642–649.
  13. ^ N. Voros, R. Nikolaos, A. Rosti, M. Hübner (editores): Reconfiguración dinámica de sistemas en plataformas heterogéneas: el enfoque MORPHEUS; Springer Verlag, 2009
  14. ^ Tarek El-Ghazawi; et al. (febrero de 2008). "La promesa de la computación reconfigurable de alto rendimiento". IEEE Computer . 41 (2): 69–76. CiteSeerX 10.1.1.208.4031 . doi :10.1109/MC.2008.65. S2CID  14469864. 
  15. ^ Esam El-Araby; Ivan Gonzalez; Tarek El-Ghazawi (enero de 2009). "Explotación de la reconfiguración parcial del tiempo de ejecución para computación reconfigurable de alto rendimiento". ACM Transactions on Reconfigurable Technology and Systems . 1 (4): 1–23. doi :10.1145/1462586.1462590. S2CID  10270587.
  16. ^ "NSF center for High-performance Reconfigurable Computing". Sitio web oficial . Consultado el 19 de agosto de 2011 .
  17. ^ "Many-Core and Reconfigurable Supercomputing Conference". Sitio web oficial . 2011. Archivado desde el original el 12 de octubre de 2010 . Consultado el 19 de agosto de 2011 .
  18. ^ "Altera e IBM presentan sistemas POWER acelerados por FPGA". HPCwire. 2014-11-17 . Consultado el 2014-12-14 .
  19. ^ Wanta, Damián; Smolik, Waldemar T.; Kryszyn, Jacek; Wróblewski, Przemysław; Midura, Mateusz (2022). "Un método de reconfiguración en tiempo de ejecución para un sistema de tomografía de capacitancia eléctrica basado en FPGA". Electrónica . 11 (4): 545. doi : 10.3390/electrónica11040545 .
  20. ^ Wiśniewski, Remigiusz (2009). Síntesis de unidades de control de microprogramas compositivos para dispositivos programables . Zielona Góra: Universidad de Zielona Góra. pag. 153.ISBN 978-83-7481-293-1.
  21. ^ "Apple2 FPGA" . Consultado el 6 de septiembre de 2012 .
  22. ^ Niklaus Wirth. "El diseño de una arquitectura RISC y su implementación con un FPGA" (PDF) . Consultado el 6 de septiembre de 2012 .[ enlace muerto ]
  23. ^ Jan Gray. "Diseño de una CPU RISC optimizada para FPGA y un sistema en chip" (PDF) . Consultado el 6 de septiembre de 2012 .
  24. ^ «Intel completa la adquisición de Altera» . Consultado el 15 de noviembre de 2016 .
  25. ^ "FPGAs Stratix V: máxima flexibilidad mediante reconfiguración parcial y dinámica" . Consultado el 15 de noviembre de 2016 .
  26. ^ "Herramientas y características de productividad del software Intel Quartus Prime" . Consultado el 15 de noviembre de 2016 .
  27. ^ "Quartus Prime Standard Edition Handbook Volume 1: Design and Synthesis" (PDF) . Intel. págs. 4–1 . Consultado el 15 de noviembre de 2016 .
  28. ^ abcd Eckert, Marcel; Meyer, Dominik; Haase, Jan; Klauer, Bernd (30 de noviembre de 2016). "Conceptos de sistemas operativos para computación reconfigurable: revisión y estudio". Revista internacional de computación reconfigurable . 2016 : 1–11. doi : 10.1155/2016/2478907 . ISSN  1687-7195. Este artículo contiene citas de esta fuente, que está disponible bajo la licencia Creative Commons Atribución 4.0 Internacional (CC BY 4.0).

Lectura adicional

Enlaces externos