Skip to main content
QUICK REVIEW

[논문 리뷰] SL: a "quick and dirty" but working intermediate language for SVP systems

Raphaël Poss|arXiv (Cornell University)|2012. 08. 22.
Parallel Computing and Optimization Techniques참고 문헌 1인용 수 15
한 줄 요약

이 논문은 SVP(System Virtualization Platform) 시스템을 대상으로 하는 병렬 프로그램을 컴파일하기 위한 타겟 언어로 설계된 경량 C 확장인 SL을 소개한다. SL은 대량의 스레드 생성, 워드 크기의 채널을 통한 데이터플로우 기반 통신, 스레드 패밀리 종료 시 동기화를 지원하며, 최소한의 구현 복잡성으로 다수의 코어 및 하드웨어 멀티스레딩 프로세서를 위한 이식성 있고 저수준의 인터페이스를 제공한다.

ABSTRACT

The CSA group at the University of Amsterdam has developed SVP, a framework to manage and program many-core and hardware multithreaded processors. In this article, we introduce the intermediate language SL, a common vehicle to program SVP platforms. SL is designed as an extension to the standard C language (ISO C99/C11). It includes primitive constructs to bulk create threads, bulk synchronize on termination of threads, and communicate using word-sized dataflow channels between threads. It is intended for use as target language for higher-level parallelizing compilers. SL is a research vehicle; as of this writing, it is the only interface language to program a main SVP platform, the new Microgrid chip architecture. This article provides an overview of the language, to complement a detailed specification available separately.

연구 동기 및 목표

  • . SVP 플랫폼 프로그래밍을 위한 이식성 있고 효율적인 중간 언어의 부족을 해결하고자 한다.
  • 이전의 µTC 언어가 SVP 플랫폼에 컴파일 불가능하다는 점을 극복하고자 한다.
  • 운영체제 이하 수준에서 동시성 원자를 지원하는 실용적이고 구현 가능한 언어를 설계하고자 한다.
  • 다양한 SVP 플랫폼, 특히 마이크로그리드 칩 아키텍처를 포함해 공통 인터페이스로 기능하고자 한다.
  • 향후 컴파일러 개발 및 다수의 코어 시스템에 대한 하드웨어 이식성을 지원하고자 한다.

제안 방법

  • . SL은 ISO C99/C11에 대한 문법적 확장으로 설계되어 표준 C와의 호환성을 유지한다.
  • 새로운 키워드인 sl_def와 sl_enddef를 도입하여 입력/출력 데이터플로우 채널을 갖춘 스레드 함수를 정의한다.
  • sl_create와 sl_sync 구문을 통해 크기와 윈도잉을 구성할 수 있는 스레드 패밀리의 대량 생성 및 동기화를 가능하게 한다.
  • 데이터플로우 통신은 sl_shparm(스레드 함수 매개변수용)와 sl_sharg(스레드 패밀리 종단점용)를 통해 관리되며, 읽기/쓰기 작업은 각각 sl_getp/sl_setp와 sl_geta/sl_seta를 사용한다.
  • 구현을 단순화하고 복잡한 타입 분석을 피하기 위해 명시적 타입 선언과 정수형 및 부동소수점형에 대한 별도의 키워드를 사용한다.
  • SL 툴체인은 SL 코드를 SVP 기계어로 컴파일하며, 소프트웨어 에뮬레이션과 마이크로그리드와 같은 하드웨어 플랫폼을 모두 대상으로 한다.

실험 결과

연구 질문

  • RQ1. 다양한 SVP 플랫폼, 특히 하드웨어 멀티스레딩 다수의 코어 시스템을 대상으로 하는 경량이고 이식 가능한 중간 언어를 어떻게 설계할 수 있는가?
  • RQ2. 이전의 µTC 언어는 왜 컴파일에 부적합했으며, SL이 이러한 제약을 어떻게 극복할 수 있었는가?
  • RQ3. 저수준에서 운영체제를 우회하는 실행 모델에서 SL은 대량의 스레드 생성, 동기화, 데이터플로우 통신을 얼마나 효율적으로 지원할 수 있는가?
  • RQ4. 저수준 시스템을 대상으로 하는 언어에서 타입 체계를 어떻게 단순화할 수 있을까, 동시에 동시성 표현력을 손상시키지 않고 말이다?
  • RQ5. 분산 메모리 및 일반적인 동기화 패턴과 같은 향후 하드웨어 트렌드를 지원하기 위해 어떤 확장이 필요한가?

주요 결과

  • . SL은 마이크로그리드 칩 아키텍처, 주요 SVP 플랫폼인 데에 유일한 인터페이스 언어로 성공적으로 기능하고 있다.
  • . 프로그램이 0~9와 10의 숫자를 임의의 순서로 출력하는 것으로 확인된 바와 같이, SL은 스레드 패밀리의 비결정적 동시 실행을 가능하게 한다.
  • . SL의 설계는 명시적 타입 선언과 스칼라 타입에 대한 명시적 키워드를 사용함으로써 복잡한 정적 분석을 피하여 구현을 크게 단순화한다.
  • . SL 툴체인은 오픈소스 라이선스 하에 공개되어 있어 커뮤니티 사용과 SAC2C, 병렬 C 컴파일러 등과의 통합이 가능해졌다.
  • . SL은 이미 여러 연구 프로젝트에서 사용되어, 실용성과 호환성 덕분에 발표물에서 µTC를 대체하고 있다.
  • . 현재 진행 중인 작업으로는 분산 메모리 모델 지원, POSIX 스레딩 API의 일부 집합 지원, 감소 연산 및 로드 밸런싱과 같은 일반 패턴을 위한 고수준 추상화 확장이 포함되어 있다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.