스트리밍 네트워크를 위한 기능·비기능 제약 집계 언어 CAL

** CAL은 S‑Net과 같은 무상태 컴포넌트 기반 스트리밍 시스템에서, 박스(노드)의 입력·출력 튜플에 대한 기능적 속성과 지연·메모리·전력 등 비기능적 속성을 선언적으로 기술하고, 이 제약들을 자동으로 집계·전파할 수 있게 설계된 선언형 언어이다. **

저자: Alex Shafarenko, Raimund Kirner

** 본 논문은 스트리밍 네트워크 모델인 S‑Net에서 사용되는 무상태 컴포넌트(‘박스’)의 동작 특성을 선언하고, 이러한 특성을 기반으로 시스템 전체의 제약을 자동으로 집계·전파할 수 있는 새로운 선언형 언어 **Constraint Aggregation Language (CAL)** 를 제안한다. CAL은 기능적 제약과 비기능적 제약을 동일한 문법 구조 안에서 기술할 수 있도록 설계되었으며, 특히 박스 간 연결 관계에 따라 제약이 자동으로 통합되는 메커니즘을 제공한다. ### 1. 배경 및 동기 S‑Net은 프로그램을 **스트리밍 네트워크** 형태로 모델링하고, 각 노드를 **무상태 블랙박스**(box)로 정의한다. 박스는 입력 튜플을 받아 일정한 순서 혹은 비동기적으로 출력 튜플을 생성한다. 기존 S‑Net은 데이터 흐름과 타입만을 명시적으로 다루며, 박스 내부의 **속성(예: 배열 크기, 연산 시간)** 은 외부에 노출되지 않는다. 이러한 제한은 시스템 수준에서 성능·자원 예측을 어렵게 만든다. ### 2. CAL 언어 설계 CAL 선언은 **헤더**와 **클라우즈**로 구성된다. 헤더는 대상 박스와 그 시그니처 `(입력 튜플) -> (출력 튜플)` 를 명시한다. 클라우즈는 하나 이상의 **조건 ⇒ 단언** 형태의 절로 이루어지며, 조건은 입력 튜플과 환경 변수에 대한 프레디케이트들의 논리곱, 단언은 출력 튜플에 대한 프레디케이트들의 논리곱이다. #### 2.1 변수와 용어 - **객체 변수** `$var` : 입력·출력 튜플의 개별 필드와 매핑된다. - **환경 변수** `$$var` : 실행 환경(스레드 수, 메모리 한계 등) 정보를 담는다. - **자유 변수** `$_` : 컴파일러가 자동 생성하는 임시 변수이며, 존재론적 양화가 적용된다. 용어(term)는 **기본(term)**(변수·상수·심볼), **튜플(term)**, **집합(term)** 로 정의된다. 연산자(`+`, `-`, `*`, `/`, `^`, `\union` 등)는 내부적으로 함수 심볼(`\plus`, `\times` 등)로 변환되어 튜플 형태로 표현된다. 예를 들어 `a + b`는 `\plus(a,b)` 로 변환된다. #### 2.2 프레디케이트와 통합 프레디케이트는 **관계**(`=, >, <, >=, <=, !=`)와 **동등성**(`:=:`)으로 구분된다. 관계는 좌변·우변이 숫자 혹은 튜플일 경우 산술적으로 평가된다. 동등성은 두 용어의 **최일반 통합(MGU)**을 시도한다. 통합 규칙은 다음과 같다. - 집합은 중첩을 허용하지 않으며, `\union` 헤드가 있는 튜플은 집합으로 취급한다. - 기본 용어는 동일한 기본 용어나 변수와만 통합 가능하다. - 자유 변수는 상대 용어와 매칭될 때 자동으로 바인딩된다. 통합은 **평탄 집합 통합(flat(q) unification)** 문제에 해당하며, 단일 방정식은 다항 시간에 해결 가능하지만 다중 방정식 집합은 NP‑complete이다. #### 2.3 논리적 해석 CAL 클라우즈는 **Horn 절** 형태로 변환될 수 있다. 조건부는 부정 리터럴, 단언부는 양의 리터럴로 구성된 다중 절로 전환된다. 현재 문법은 단일 단언부를 전제로 하여 비Horn 형태를 지원하지 않는다. 향후 비Horn CSP 혹은 SMT(예: Yices)와 연계해 복잡한 제약을 다루는 방안이 제시된다. ### 3. 제약 집계 메커니즘 #### 3.1 기능적 제약 기능적 제약은 **통합**을 통해 자동 전파된다. 박스 A의 출력 변수 `y`와 박스 B의 입력 변수 `p`가 연결되면, CAL은 `y`와 `p`를 동일한 용어로 통합한다. 따라서 A에서 선언된 `y`에 대한 제약(예: `size(y) = N`)은 자동으로 B의 입력에 적용된다. 이 과정은 S‑Net 컴파일러가 타입 해석 단계에서 수행되며, 복잡한 연산(예: `y = sort(x)`)도 튜플·함수 심볼을 통해 표현 가능하다. #### 3.2 비기능적 제약 비기능적 제약은 **통합이 아닌 별도 집계** 방식을 사용한다. 각 박스는 지연 시간, 메모리 사용량, 전력 소모 등 비기능적 속성을 선언하고, 이러한 값들은 외부 **집계 라이브러리**에 의해 수집된다. 예를 들어 파이프라인 A→B의 전체 지연은 각 단계의 평균 지연과 네트워크 전송 지연을 합산한 확률 분포로 모델링된다. 이때 큐잉 이론, 가상 하드웨어 모델, 통계적 추정 기법 등이 활용된다. 비기능적 제약은 **함수형 제약과 독립**적으로 집계되며, 필요에 따라 **추론 규칙** 형태로 통합될 수도 있다(예: `latency(A) + latency(B) ≤ deadline`). ### 4. 구현 및 적용 사례 논문은 CAL의 문법을 정의하고, S‑Net 컴파일러와 연동하는 프로토타입을 구현하였다. 예시로 배열 정렬 박스와 필터 박스를 연결한 경우, 입력 배열 크기 `N`이 정렬 시간 `O(N log N)`에 영향을 주는 기능적 제약과, 정렬 단계의 평균 지연이 전체 파이프라인 지연에 미치는 비기능적 제약을 동시에 선언하였다. 결과적으로 시스템 설계자는 **정형화된 제약**을 기반으로 성능 예측과 리소스 할당을 자동화할 수 있었다. ### 5. 제한점 및 향후 연구 - **다중 출력·다중 단언**: 현재 문법은 단일 단언부만 허용하므로, 박스가 여러 가능한 출력 메시지를 생성할 때 각각 다른 제약을 기술하기 어렵다. 비Horn 형태 지원이 필요하다. - **집합 중첩 금지**: 복잡한 데이터 구조를 직접 표현하기 어려워, 고차원 객체를 별도 변수로 풀어야 하는 번거로움이 있다. - **비기능적 집계 표준화 부족**: 외부 라이브러리에 의존하므로, 다양한 플랫폼 간 일관된 모델링이 어려울 수 있다. - **SMT 연계**: 현재는 논리적 해석이 Horn 절에 국한되지만, 선형 산술·비선형 제약을 포함한 SMT 솔버와의 연계가 향후 과제로 제시된다. ### 6. 결론 CAL은 스트리밍 네트워크에서 **기능적·비기능적 제약을 선언적·통합적으로** 다루는 최초의 언어 중 하나이며, 무상태 박스 모델에 자연스럽게 녹아들어 시스템 수준의 성능·자원 분석을 가능하게 한다. 문법적 간결성, 통합 기반 기능적 제약 전파, 외부 집계 라이브러리를 통한 비기능적 제약 처리라는 세 가지 핵심 설계 목표를 달성했으며, 향후 비Horn 제약, 복합 데이터 구조, SMT 기반 자동 해석 등을 통해 실용성을 더욱 확대할 여지가 있다. **

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기