stringtranslate.com

Computación reconfigurable

La informática 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 matrices de puertas programables en campo (FPGA). La principal diferencia en comparación con el uso de microprocesadores comunes es la capacidad de agregar bloques computacionales personalizados utilizando FPGA. Por otro lado, la principal diferencia con el hardware personalizado, es decir, los circuitos integrados de aplicación específica (ASIC), 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. para fabricar y agregar nuevos chips al sistema existente.

Historia

El concepto de computación reconfigurable existe desde la década de 1960, cuando el artículo de Gerald Estrin propuso el concepto de una computadora hecha de un procesador estándar y una serie de hardware "reconfigurable". [1] [2] El procesador principal controlaría el comportamiento del hardware reconfigurable. Luego, este último se adaptaría para realizar una tarea específica, como el procesamiento de imágenes o la coincidencia de patrones , tan rápidamente como una pieza de hardware dedicada. Una vez realizada la tarea, el hardware se podía ajustar para realizar alguna otra tarea. Esto dio como resultado una estructura informática híbrida que combina la flexibilidad del software con la velocidad del hardware.

En las décadas de 1980 y 1990 hubo un renacimiento en esta área de investigación con muchas arquitecturas reconfigurables propuestas desarrolladas en la industria y la academia, [3] tales como: Copacobana, Matrix, GARP, [4] Elixent, NGEN, [5] Polyp, [ 6] MereGen, [7] PACT XPP, Silicon Hive, Montium, Pleiades, Morphosys y PiCoGA. [8] Tales diseños eran factibles debido al constante progreso de la tecnología del silicio que permitía implementar diseños complejos en un solo 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 prometedor como para que Xilinx (el inventor del Field-Programmable Gate Array , 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]

Teorias

Clasificación de Tredennick

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

La computadora de Hartenstein

El 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 más convencional de von Neumann . [12] Hartenstein lo llama la Paradoja de la Computación Reconfigurable, esa migración de software a software de configuración (software a FPGA ) da como resultado factores de aceleración reportados de hasta más de cuatro órdenes de magnitud, así como una reducción en el consumo de electricidad en hasta casi cuatro órdenes de magnitud, aunque los parámetros tecnológicos de los FPGA están por detrás de la curva de Gordon Moore en aproximadamente cuatro órdenes de magnitud, y la frecuencia del 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 informática reconfigurable de alto rendimiento (HPRC) es una arquitectura informática que combina aceleradores basados ​​en informática reconfigurables, como una matriz de puertas programables en campo, con CPU o procesadores multinúcleo .

El aumento de la lógica en una FPGA ha permitido programar algoritmos más grandes y complejos en la FPGA. La conexión de una 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 informática reconfigurable a la esfera de la informática de alto rendimiento .

Además, la replicación de un algoritmo en una FPGA o el uso de una multiplicidad de FPGA ha permitido producir sistemas SIMD reconfigurables en los que varios dispositivos computacionales pueden operar simultáneamente con diferentes datos, lo que es computación altamente paralela .

Esta técnica de sistemas heterogéneos se utiliza en la investigación en informática y especialmente en 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 FPGA como aceleradores. [ cita necesaria ] Un área de investigación es la productividad del flujo de la herramienta de programación de doble paradigma obtenida para sistemas tan heterogéneos. [15]

La Fundación Nacional de Ciencias de EE. UU. tiene 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 muchos núcleos. [17]

Los sistemas informáticos reconfigurables comerciales de alto rendimiento están comenzando a surgir con el anuncio de IBM de integrar FPGA con sus microprocesadores IBM Power . [18]

Reconfiguración parcial

La reconfiguración parcial es el proceso de cambiar una parte del circuito de hardware reconfigurable mientras la otra parte mantiene su configuración anterior. Los conjuntos de puertas programables en campo se utilizan a menudo como soporte para 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 es útil poder intercambiar uno o varios de estos subcomponentes mientras la FPGA todavía está funcionando.

Normalmente, la reconfiguración de una FPGA requiere que se mantenga en reinicio mientras un controlador externo recarga un diseño en ella. La reconfiguración parcial permite que las partes críticas del diseño continúen funcionando mientras un controlador, ya sea en la FPGA o fuera de ella, carga un diseño parcial en un módulo reconfigurable. La reconfiguración parcial también se puede utilizar para ahorrar espacio para múltiples diseños almacenando solo 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 desactivar todo el controlador.

La reconfiguración parcial no es compatible con todos los FPGA. Se requiere un flujo de software especial con énfasis en el diseño modular. Normalmente, los módulos de diseño se construyen a lo largo de límites bien definidos dentro de la 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] Estos proyectos se construyen con hardware reconfigurable (FPGA) y algunos dispositivos admiten la emulación de varias computadoras antiguas utilizando un único hardware reconfigurable ( C-One ).

COPACOBANA

Una computadora totalmente basada en FPGA es COPACOBANA, el analizador y descifrador de códigos de costo optimizado y su sucesor RIVYERA. La empresa SciEngines GmbH , derivada del proyecto COPACOBANA de las universidades de Bochum y Kiel en Alemania, continúa el desarrollo de ordenadores totalmente basados ​​en FPGA.

Mitriónicos

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

Instrumentos Nacionales

National Instruments ha desarrollado un sistema informático integrado híbrido llamado CompactRIO . Consiste en un chasis reconfigurable que alberga la FPGA programable por el usuario, módulos de E/S intercambiables en caliente, un controlador en tiempo real para comunicación y 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 dispositivos Arria 10 de 20 nm. [26] El flujo de reconfiguración parcial de Intel FPGA para Arria 10 se basa en la metodología de diseño jerárquico en el software Quartus Prime Pro donde los usuarios crean particiones físicas de la FPGA que se pueden reconfigurar [27] en tiempo de ejecución mientras el resto del diseño continúa. funcionar. El software Quartus Prime Pro también admite la reconfiguración parcial jerárquica y la simulación de reconfiguración parcial.

Clasificación de sistemas.

Como campo emergente, las clasificaciones de arquitecturas reconfigurables todavía se están desarrollando y perfeccionando a medida que se desarrollan nuevas arquitecturas; Hasta la fecha no se ha sugerido ninguna 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) abordada por las herramientas de mapeo. La alta granularidad, que también puede denominarse de grano fino, a menudo implica una mayor flexibilidad a la hora de implementar algoritmos en el hardware. Sin embargo, esto conlleva una penalización en términos de mayor potencia, área y retraso debido a una mayor cantidad de enrutamiento requerido por cálculo. Las arquitecturas detalladas funcionan en el nivel de manipulación a nivel de bits; 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 de los que proporciona su granularidad; por ejemplo, agregar un bit a una unidad funcional de cuatro bits de ancho desperdiciaría tres bits. . Este problema se puede resolver teniendo una matriz de grano grueso ( matriz de ruta de datos reconfigurable , rDPA) y una 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 (ALU) de toda la palabra, 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 da como resultado una menor capacitancia del cable y, por lo tanto, diseños más rápidos y de menor potencia. 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 la lógica, la memoria y los recursos de enrutamiento para mejorar el rendimiento del dispositivo y, al mismo tiempo, proporcionar un cierto nivel de flexibilidad para futuras adaptaciones. Ejemplos de esto son los arreglos de dominio específico destinados a obtener un mejor rendimiento en términos de potencia, área y rendimiento que sus primos FPGA más genéricos de grano más fino 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 es necesario abordar y programar más elementos. Por lo tanto, las arquitecturas más gruesas se benefician de menores requisitos energéticos potenciales, 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 energético asociado a la reconfiguración se amortiza durante un período de tiempo más largo. La reconfiguración parcial tiene como objetivo permitir que parte del dispositivo se reprograme mientras otra parte todavía 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. La compresión del flujo de bits es posible, 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 sea superada por el cálculo necesario para descomprimir los datos.

Acoplamiento de host

A menudo, la matriz reconfigurable se utiliza como acelerador de procesamiento conectado a un procesador anfitrión. El nivel de acoplamiento determina el tipo de transferencias de datos, latencia, potencia, rendimiento y gastos generales involucrados al utilizar la lógica reconfigurable. Algunos de los diseños más intuitivos utilizan un bus periférico para proporcionar una disposición similar a 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 datos y proporcionar 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 estilo isla, donde los bloques están dispuestos en una matriz con enrutamiento vertical y horizontal. Un diseño con enrutamiento inadecuado puede sufrir una flexibilidad y una utilización de recursos deficientes, lo que proporciona un rendimiento limitado. Si se proporciona demasiada interconexión, se necesitarán más transistores de los necesarios y, por tanto, más área de silicio, cables más largos y más consumo de energía.

Desafíos para los sistemas operativos

Uno de los desafíos clave para la informática reconfigurable es permitir una mayor productividad del diseño y proporcionar una manera más fácil de utilizar sistemas informáticos reconfigurables para usuarios que no están familiarizados con los conceptos subyacentes. Una forma de hacerlo es proporcionar estandarización y abstracción, generalmente respaldadas y aplicadas por un sistema operativo. [28]

Una de las principales tareas de un sistema operativo es ocultar el hardware y presentar los programas (y sus programadores) con 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 (de hardware) complejas y diferentes de una manera común y bien definida. 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 relajar con el concepto de subprocesos, permitiendo que diferentes tareas se ejecuten simultáneamente en este hardware virtual para explotar el paralelismo a nivel de tareas. Para permitir que diferentes procesos e hilos 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 los recursos físicos disponibles (procesadores, memoria y dispositivos) espacial y temporalmente. [28]

Ver también

Referencias

  1. ^ Estrin, G (2002). "Orígenes de la computadora reconfigurable: la computadora de estructura fija más variable (F + V) de UCLA". IEEE Ana. Historia. Computación . 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. Conferencia conjunta de informática occidental. , Western Joint Computer Conference, Nueva York, 1960, págs. 33–40.
  3. ^ C. Bobda: Introducción a la informática reconfigurable: arquitecturas; Saltador, 2007
  4. ^ Hauser, John R. y Wawrzynek, John, "Garp: A MIPS Processor with a Reconfigurable Coprocessor", Actas del Simposio IEEE sobre máquinas informáticas personalizadas programables en campo (FCCM '97, 16 al 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 al 25 de septiembre de 1998: actas . Sipper, Moshe., Mange, Daniel, 1940-, Pérez-Uribe, Andrés., Conferencia Internacional sobre Sistemas Evolutivos (2da: 1998: Lausana, Suiza). Berlín: Springer. 1998.ISBN 978-3-540-64954-0. OCLC  39655211.{{cite book}}: Mantenimiento CS1: otros ( enlace )
  7. Acoplamiento de sistemas biológicos y electrónicos: actas del segundo Cesarium, Bonn, 1 al 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 CS1: otros ( enlace )
  8. ^ Campi, F.; Toma, M.; Lodi, A.; Cappelli, A.; Canegallo, R.; Guerrieri, R., "Un procesador VLIW con conjunto de instrucciones reconfigurables para aplicaciones integradas", Conferencia sobre circuitos de estado sólido, 2003. Compendio de artículos técnicos. ISSCC. 2003 IEEE International, vol., no., 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 libre de células". Procedimientos de la Academia Nacional de Ciencias . 98 (16): 9185–9190. Código bibliográfico : 2001PNAS...98.9185F. doi : 10.1073/pnas.151253198 . ISSN  0027-8424. PMC 55395 . PMID  11470896. 
  11. ^ N. Tredennick: El caso de la informática reconfigurable; Informe del microprocesador, vol. 10 No. 10, 5 de agosto de 1996, págs. 25-27.
  12. ^ Hartenstein, R. 2001. Una década de informática reconfigurable: una retrospectiva visionaria. En Actas de la Conferencia sobre Diseño, Automatización y Pruebas en Europa (FECHA 2001) (Munich, Alemania). W. Nebel y A. Jerraya, Eds. Diseño, Automatización y Pruebas en Europa. IEEE Press, Piscataway, Nueva Jersey, 642–649.
  13. ^ N. Voros, R. Nikolaos, A. Rosti, M. Hübner (editores): Reconfiguración dinámica del sistema en plataformas heterogéneas: el enfoque MORPHEUS; Springer Verlag, 2009
  14. ^ Tarek El-Ghazawi; et al. (febrero de 2008). "La promesa de la informática reconfigurable de alto rendimiento". Computadora IEEE . 41 (2): 69–76. CiteSeerX 10.1.1.208.4031 . doi :10.1109/MC.2008.65. S2CID  14469864. 
  15. ^ Esam El-Araby; Iván González; Tarek El-Ghazawi (enero de 2009). "Explotación de la reconfiguración parcial del tiempo de ejecución para informática reconfigurable de alto rendimiento". Transacciones ACM sobre tecnología y sistemas reconfigurables . 1 (4): 1–23. doi :10.1145/1462586.1462590. S2CID  10270587.
  16. ^ "Centro NSF para Computación Reconfigurable de Alto Rendimiento". página web oficial . Consultado el 19 de agosto de 2011 .
  17. ^ "Conferencia sobre supercomputación reconfigurable y de muchos núcleos". página 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". Cable HPC. 2014-11-17 . Consultado el 14 de diciembre de 2014 .
  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. ^ "FPGA Apple2" . Consultado el 6 de septiembre de 2012 .
  22. ^ Niklaus Wirth. «El Diseño de una Arquitectura RISC y su Implementación con una FPGA» (PDF) . Consultado el 6 de septiembre de 2012 .[ enlace muerto ]
  23. ^ Enero Gray. "Diseño de una CPU RISC y un sistema en un chip simples optimizados para FPGA" (PDF) . Consultado el 6 de septiembre de 2012 .
  24. ^ "Intel completa la adquisición de Altera" . Consultado el 15 de noviembre de 2016 .
  25. ^ "FPGA Stratix V: máxima flexibilidad mediante reconfiguración parcial y dinámica" . Consultado el 15 de noviembre de 2016 .
  26. ^ "Herramientas y funciones de productividad del software Intel Quartus Prime" . Consultado el 15 de noviembre de 2016 .
  27. ^ "Manual de Quartus Prime Standard Edition, volumen 1: diseño y síntesis" (PDF) . Intel. págs. 4-1 . Consultado el 15 de noviembre de 2016 .
  28. ^ abc Eckert, Marcel; Meyer, Dominic; Haase, enero; Klauer, Bernd (30 de noviembre de 2016). "Conceptos de sistemas operativos para informática 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 Attribution 4.0 International (CC BY 4.0).

Otras lecturas

enlaces externos