En informática , el flujo de datos es un concepto amplio que tiene diversos significados según la aplicación y el contexto. En el contexto de la arquitectura de software , el flujo de datos se relaciona con el procesamiento de flujos o la programación reactiva .
Arquitectura de software
La computación de flujo de datos es un paradigma de software basado en la idea de representar los cálculos como un grafo dirigido , donde los nodos son cálculos y los datos fluyen a lo largo de las aristas. [ 1 ] El flujo de datos también puede denominarse procesamiento de flujo o programación reactiva . [ 2 ]
Existen diversos lenguajes de procesamiento de flujo de datos (véase Procesamiento de flujo ). El hardware de flujo de datos (véase Arquitectura de flujo de datos ) es una alternativa a la arquitectura clásica de von Neumann . El ejemplo más evidente de programación de flujo de datos es la programación reactiva con hojas de cálculo. A medida que el usuario introduce nuevos valores, estos se transmiten instantáneamente al siguiente "actor" lógico o fórmula para su cálculo.
Los flujos de datos distribuidos también se han propuesto como una abstracción de programación que captura la dinámica de los multiprotocolos distribuidos. La perspectiva centrada en los datos, característica de la programación de flujos de datos, promueve especificaciones funcionales de alto nivel y simplifica el razonamiento formal sobre los componentes del sistema.
Arquitectura de hardware
Las arquitecturas de hardware para el flujo de datos fueron un tema importante en la investigación de arquitectura de computadoras durante las décadas de 1970 y 1980. Jack Dennis, del Instituto Tecnológico de Massachusetts (MIT), fue pionero en el campo de las arquitecturas de flujo de datos estáticas. Los diseños que utilizan direcciones de memoria convencionales como etiquetas de dependencia de datos se denominan máquinas de flujo de datos estáticas. Estas máquinas no permitían la ejecución simultánea de múltiples instancias de las mismas rutinas, ya que las etiquetas simples no podían diferenciarlas. Los diseños que utilizan memoria direccionable por contenido se denominan máquinas de flujo de datos dinámicas, según Arvind . Estas utilizan etiquetas en la memoria para facilitar el paralelismo. Los datos fluyen por la computadora a través de sus componentes. Entran por los dispositivos de entrada y salen por los dispositivos de salida (impresora, etc.). Un ejemplo de una estructura de hardware similar a la de una máquina de flujo de datos se encuentra en las computadoras analógicas o, más precisamente, en los analizadores diferenciales.
En los aceleradores de hardware compuestos por muchos elementos de procesamiento que se coordinan colectivamente para paralelizar un núcleo de cómputo , el flujo de datos se refiere al patrón en el que los datos se transfieren entre los elementos de procesamiento para satisfacer las dependencias de datos y completar el cálculo. Estas arquitecturas heredan muchos de los conceptos de las arquitecturas de flujo de datos y los aplican a cargas de trabajo más especializadas, como la aceleración de IA . Sin embargo, a diferencia de las arquitecturas de flujo de datos, el cálculo no está impulsado activamente por las dependencias de datos, sino que las simples dependencias de datos del núcleo acelerado se utilizan para programar toda la arquitectura antes de su ejecución. [ 3 ]
Concurrencia
Una red de flujo de datos es una red de procesos o autómatas que se ejecutan simultáneamente y que pueden comunicarse enviando datos a través de canales (véase paso de mensajes ).
En las redes de procesos de Kahn , que reciben su nombre de Gilles Kahn , los procesos son deterministas . Esto implica que cada proceso determinista calcula una función continua a partir de flujos de entrada y de salida, y que una red de procesos deterministas es en sí misma determinista, calculando así una función continua. Esto implica que el comportamiento de dichas redes puede describirse mediante un conjunto de ecuaciones recursivas, que pueden resolverse utilizando la teoría del punto fijo . El movimiento y la transformación de los datos se representan mediante una serie de figuras y líneas.
Otros significados
El flujo de datos también puede referirse a:
- Power BI Dataflow es una implementación de Power Query en la nube que se utiliza para transformar los datos de origen en conjuntos de datos de Power BI limpios , que los desarrolladores de informes de Power BI pueden utilizar a través de Microsoft Dataverse (anteriormente llamado Microsoft Common Data Service).
- Google Cloud Dataflow es un servicio totalmente administrado para ejecutar canalizaciones de Apache Beam dentro del ecosistema de Google Cloud Platform.
Véase también
Definición de flujo de datos en Wikcionario
- Máquina de flujo de datos modular binaria (BMDFM)
- Comunicación de procesos secuenciales
- Procesamiento de eventos complejos
- Diagrama de flujo de datos
- Análisis de flujo de datos , un tipo de análisis de programas
- flujo de datos
- Programación de flujo de datos (un paradigma de lenguaje de programación)
- Erlang (lenguaje de programación)
- Programación basada en flujo (FBP)
- Control de flujo (datos)
- Programación reactiva funcional
- Evaluación perezosa
- Lucid (lenguaje de programación)
- Oz (lenguaje de programación)
- Flujo de paquetes
- Tubería (informática)
- Datos puros
- Transición de estado
- TensorFlow
- Theano
- Metodología de Ward-Mellor
Referencias
- ↑ Schwarzkopf, Malte (7 de marzo de 2020). "La notable utilidad de la computación de flujo de datos" . ACM SIGOPS . Recuperado el 31 de julio de 2022 .
- ↑ Breve introducción al procesamiento de flujos de datos
- ^ Parashar, Angshuman; Raina, Priyanka; Shao, Yakun Sofía; Chen, Yu-Hsin; Ying, Víctor A.; Mukkara, Anurag; Venkatesan, Rangharajan; Khailany, Brucek; Keckler, Stephen W.; Emer, Joel (2019). "Timeloop: un enfoque sistemático para la evaluación del acelerador DNN". Simposio internacional IEEE 2019 sobre análisis del rendimiento de sistemas y software (ISPASS) . págs. 304– 315. doi : 10.1109/ISPASS.2019.00042 . ISBN 978-1-7281-0746-2.
- Arquitectura de computadoras
- Modelos de computación