데이터 흐름

컴퓨팅에서 데이터 흐름(Data flow, 데이터 플로)은 응용 프로그램 및 문맥에 따라 다양한 의미를 갖는 광범위한 개념이다. 소프트웨어 구조의 문맥에서 데이터 흐름은 스트림 프로세싱 또는 반응형 프로그래밍과 관련이 있다.

 소프트웨어 구조 
데이터 흐름 컴퓨팅은 계산을 유향 그래프로 표현한다는 아이디어에 기반한 소프트웨어 패러다임으로, 여기서 노드는 계산이고 데이터는 에지를 따라 흐른다. 데이터 흐름은 스트림 프로세싱 또는 반응형 프로그래밍이라고도 불릴 수 있다.A Short Intro to Stream Processing

다양한 형태의 여러 데이터 흐름/스트림 프로세싱 언어가 존재해 왔다(스트림 프로세싱 참조). 데이터 흐름 하드웨어(데이터플로 구조 참조)는 고전적인 폰 노이만 구조에 대한 대안이다. 데이터 흐름 프로그래밍의 가장 명확한 예는 스프레드시트를 이용한 반응형 프로그래밍으로 알려진 부분 집합이다. 사용자가 새로운 값을 입력하면, 그 값은 즉시 다음 논리적 "액터"나 계산을 위한 수식으로 전달된다.

분산 데이터 흐름 또한 분산 멀티 프로토콜의 역동성을 포착하는 프로그래밍 추상화로 제안되었다. 데이터 흐름 프로그래밍의 특징인 데이터 중심적 관점은 고수준의 기능 명세를 촉진하고 시스템 구성 요소에 대한 형식적 추론을 단순화한다.

 하드웨어 구조 

데이터 흐름을 위한 하드웨어 구조는 1970년대와 1980년대 초반 컴퓨터 구조 연구의 주요 주제였다. 매사추세츠 공과대학교(MIT)의 잭 데니스는 정적 데이터 흐름 구조 분야를 개척했다. 전통적인 메모리 주소를 데이터 의존성 태그로 사용하는 설계를 정적 데이터 흐름 기계라고 한다. 이러한 기계는 단순한 태그로 서로를 구별할 수 없었기 때문에 동일한 루틴의 여러 인스턴스를 동시에 실행하는 것을 허용하지 않았다. 내용 주소화 기억장치를 사용하는 설계는 아르빈드에 의해 동적 데이터 흐름 기계라고 불린다. 이들은 병렬 처리를 용이하게 하기 위해 메모리에 태그를 사용한다.
데이터는 컴퓨터의 구성 요소를 통해 컴퓨터 주변을 흐른다. 입력 장치로부터 입력되어 출력 장치(프린터 등)를 통해 나갈 수 있다. 데이터 흐름 기계와 같은 하드웨어 구조의 예는 아날로그 컴퓨터나 더 정확하게는 미분 해석기에서 찾을 수 있다.

계산 커널을 병렬화하기 위해 공동으로 조정되는 많은 프로세싱 요소로 구성된 하드웨어 가속기에서, 데이터 흐름은 데이터 의존성을 충족하고 계산을 완료하기 위해 프로세싱 요소 간에 데이터가 전송되는 패턴을 의미한다.
이러한 구조는 데이터 흐름 구조의 많은 개념을 계승하여 AI 가속과 같은 더 전문화된 워크로드에 적용한다.
그러나 데이터 흐름 구조와 달리 계산이 데이터 의존성에 의해 능동적으로 구동되지 않고, 대신 가속화된 커널의 단순한 데이터 의존성이 실행 전에 전체 구조를 프로그래밍하는 데 사용된다.

 동시성 
데이터 흐름 네트워크는 채널을 통해 데이터를 전송함으로써 통신할 수 있는 동시에 실행되는 프로세스 또는 오토마타의 네트워크이다(메시지 전달 참조).

질 칸의 이름을 딴 칸 프로세스 네트워크에서 프로세스는 결정론적이다. 이는 각 결정론적 프로세스가 입력 스트림에서 출력 스트림으로의 연속 함수를 계산하며, 결정론적 프로세스의 네트워크 자체가 결정론적이어서 연속 함수를 계산함을 의미한다. 이는 이러한 네트워크의 동작이 부동점 정리를 사용하여 풀 수 있는 일련의 재귀 방정식으로 설명될 수 있음을 시사한다. 데이터의 이동과 변환은 일련의 모양과 선으로 표현된다.

 기타 의미 
데이터 흐름은 다음을 의미할 수도 있다.
 Power BI 데이터 흐름: Microsoft Dataverse(이전 명칭 Microsoft Common Data Service)를 통해 Power BI 보고서 개발자가 사용할 수 있도록 원본 데이터를 정제된 Power BI 데이터 세트로 변환하는 데 사용되는 클라우드 내 Power Query 구현체.
 구글 클라우드 데이터플로(Google Cloud Dataflow): 구글 클라우드 플랫폼 생태계 내에서 아파치 빔(Apache Beam) 파이프라인을 실행하기 위한 완전 관리형 서비스.

 같이 보기 
 커뮤니케이팅 시퀜셜 프로세스
 데이터 흐름도
 데이터 흐름 분석
 데이터 스트림
 데이터플로 프로그래밍
 얼랭
 흐름 제어
 느긋한 계산법
 루시드 (프로그래밍 언어)
 오즈 (프로그래밍 언어)
 파이프라인 (컴퓨팅)
 퓨어 데이터
 텐서플로

 각주 

 외부 링크 
 MDS 테크놀로지 CodeSonar, Static Analysis, Control/Data Analysis
 GrammaTech CodeSonar

분류:컴퓨터 구조
분류:계산 모형