KR20170007741A - 회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램 - Google Patents

회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20170007741A
KR20170007741A KR1020167031330A KR20167031330A KR20170007741A KR 20170007741 A KR20170007741 A KR 20170007741A KR 1020167031330 A KR1020167031330 A KR 1020167031330A KR 20167031330 A KR20167031330 A KR 20167031330A KR 20170007741 A KR20170007741 A KR 20170007741A
Authority
KR
South Korea
Prior art keywords
iteration
producer
channel
consumer
new
Prior art date
Application number
KR1020167031330A
Other languages
English (en)
Other versions
KR102363317B1 (ko
Inventor
크리스토프 앨리어스
알렉산드루 플레스코
Original Assignee
앵리아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 앵리아 filed Critical 앵리아
Publication of KR20170007741A publication Critical patent/KR20170007741A/ko
Application granted granted Critical
Publication of KR102363317B1 publication Critical patent/KR102363317B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • G06F17/5045
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

회로들을 자동으로 합성하는 방법이 제공되며, 이러한 방법은 채널들 내에서 데이터를 판독 혹은 기입하는 정규 프로세스들의 네트워크를 발생시키는 것을 포함하고, 여기서 단일 생산자 프로세스는 채널 내에서 기입할 허가를 받고, 단일 소비자 프로세스는 채널 내에서 판독할 허가를 받고, 상기 채널과 관련되는 동기화 유닛은, 상기 생산자 프로세스, 소비자 프로세스 각각의 새로운 반복의 구현을 허가하거나 비활성화하고, 여기서 허가하거나 비활성화하는 것은, 생산자 프로세스, 소비자 프로세스 각각으로부터 수집된 새로운 반복의 값에 따라 결정되는 실행의 위치와, 소비자 프로세스, 생산자 프로세스 각각으로부터 수집된 마지막 반복 값에 따라 결정되는 실행의 위치의 비교에 따라 이루어진다.

Description

회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램{METHOD OF AUTOMATIC SYNTHESIS OF CIRCUITS, DEVICE AND COMPUTER PROGRAM ASSOCIATED THEREWITH}
본 발명은 회로(circuit)들을 자동(automatic)으로 합성(synthesis)하는 방법에 관한 것이며, 본 방법은 채널(channel)들을 통해 상호연결되는 정규 프로세스(regular process)들의 네트워크(network)에서 소프트웨어 프로그램(software program)을 컴파일링(compiling)하는 단계를 포함하고, 여기서 각각의 채널은 어드레싱가능한 물리적 메모리(addressable physical memory)이고, 상기 프로세스들 각각은 관련되어 있는 반복 도메인(iteration domain)의 각각의 반복에서 채널 내에서의 적어도 하나의 데이터 판독(data read) 및/또는 채널 내에서의 하나의 데이터 기입(data write)을 적용(apply)하고, 시퀀싱 함수(sequencing function)는 각각의 프로세스의 각각의 반복 값에 대해 실행 위치(execution position)들의 시간-시퀀싱된 세트(time-sequenced set)에서 선택되는 프로세스의 실행 위치를 제공한다.
이러한 회로 합성 혹은 HLS("High-Level Synthesis"; "하이-레벨 합성") 방법들은, 회로에 의해 수행될 계산의 알고리즘적 기술(algorithmic description)(C, 매트랩(Matlab) 혹은 알파(Alpha)와 같은 하이 레벨 언어(high level language))로부터 전자 회로들의 블록(block)을 자동으로 발생시키기 위해(혹은 컴파일링하기 위해) 사용된다(스펙C(SpecC), 하드웨어C(HardwareC), 핸델C(HandelC), 배쉬C(BashC), 트랜스모그리파이어C(TransmogrifierC), 사이버C(CyberC), 캐터펄트C(CatapultC)와 같은 툴(tool)들 참조). 관련 알고리즘들은 다양하다(예를 들어, 신호 프로세싱 알고리즘들(signal processing algorithms)).
회로는 최상의 이용가능한 리소스(resource)들을 사용하면서 가능한 가장 효율적이어야만 한다. 따라서, 발생된 회로의 블록들의 성능들은 특히, 입력에서 제공되는 데이터를 프로세싱하는 속도에 의해, 그리고 에너지 소비에 의해, 그리고 점유된 실리콘 표면, FPGA 상의 LUT 유닛들, 메모리 액세스, 등에 의해 측정된다.
수행될 프로세싱을 병렬로 수행될 태스크(task)들로 분할함으로써 성능에서의 증가가 획득된다. 대부분의 시간에, 태스크들은 완전히 독립되어 있지 않고, 이들 간에 중간 결과들을 전달(판독/기입)해야만 하는데, 이것은 특히 이들 간에 태스크 동기화 문제를 일으킨다.
병렬 태스크들로 분할하는 것 그리고 동기화를 생성하는 것은 계산의 매우 세밀한 시퀀싱을 요구하는데, 즉 알고리즘 동작들의 실행 순서의 재구성(reorganization)을 요구한다. 올바르게 행해지기 위해서, 시퀀싱은 예를 들어, 판독되기 전에 데이터의 생성을 보장하기 위해 동작들 간의 데이터 종속성들(data dependencies)을 고려해야만 한다
기존의 접근법들 대부분은 CDFG(Control/Data Flow Graph; 제어/데이터 플로우 그래프) 타입 표현에 기반을 두고 있는데, 이것은 구문 구조(syntactic construction)들 간의 종속성들, 즉, 동작 패킷(operation packet)들 간의 종속성들을 표현하는바, 종속성들의 비정밀 과-근사화(coarse over-approximation)가 이루어져 유용한 시퀀싱이 발견될 수 없게 된다.
프로세스 네트워크(process network)들은 계산의 병렬성(parallelism)을 자연적으로 표현하는 실행 모델들이다. 따라서, 이들은 병렬 시스템들을 나타내기 위해 사용되고, 그리고 병렬 시스템들의 프로세스 네트워크들로의 이러한 변환(translation)들은 병렬성과 관련된 다양한 문제들(시퀀싱, 로드 발란싱(load balancing), 할당(allocation), 체크포인팅(checkpointing), 소비(consumption), 등)을 연구, 분석 및 측정하기 위해 사용될 수 있다.
프로세스 네트워크들은 또한 회로들을 자동으로 합성하기 위한 디바이스를 위해 자연적 중간 표현(natural intermediate representation)을 구성하며, 이러한 디바이스에서 "프런트-엔드(Front-End)" 블록은 병렬성을 추출하고, 프로세스 네트워크를 생성하며, "백-엔드(Back-End)" 블록은 타겟 아키텍처(target architecture)를 향해 프로세스 네트워크를 컴파일링한다.
성능면에서 백-엔드 측면들(파이프라인(pipeline)들의 구성, 배치(placement)/라우팅(routing))에서는 수많은 진보들이 있어왔지만, 프런트-엔드 측면들은 여전히 초보적인 상태에 있다.
따라서, 자동적으로 발생되는 회로 블록들의 성능을 더욱 증가시키는 것이 바람직하다.
이러한 목적을 달성하기 위해, 제 1 실시형태에 따르면, 본 발명은 앞서 언급된 타입의 회로들을 자동으로 합성하는 방법을 제공하고, 이러한 방법은 컴파일링하는 단계 동안, 상기 채널들 각각에 대해, 생산자 프로세스(producer process)로 지칭되는 단일 프로세스가 채널 내에서 데이터를 기입할 허가(authorize)를 받고, 소비자 프로세스(consumer process)로 지칭되는 단일 프로세스가 상기 채널 내에서 데이터를 판독할 허가를 받는 단계; 그리고 동기화 유닛(synchronization unit)이 상기 채널과 관련되는 단계를 포함하는 것에 특징이 있고, 여기서 동기화 유닛은 채널의 생산자 프로세스에 의한 각각의 새로운 반복의 개시(launch) 이전에 생산자 프로세스의 상기 새로운 반복의 값을 수집(collect)하고, 그리고 채널의 소비자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 소비자 프로세스의 반복 값을 수집하고; 상기 동기화 유닛은, 생산자, 소비자 프로세스 각각의 새로운 반복의 값의 수집 이후, 상기 생산자, 소비자 프로세스 각각의 상기 새로운 반복의 구현을 허가(authorizing)하거나 동결(freezing)하고, 여기서 허가하거나 동결하는 것은 생산자, 소비자 프로세스 각각으로부터 수집된 새로운 반복 값에 따라 결정되는 실행 위치와, 소비자, 생산자 프로세스 각각으로부터 수집된 마지막 반복 값에 따라 결정되는 실행 위치의 비교에 근거하여 이루어진다.
이러한 방법은 회로에 의해 점유되는 체적 및 계산의 속도면에서 큰 성능을 제공하는 회로들을 빠르게 그리고 자동적으로 발생시키는데 사용될 수 있다.
실시예들에서, 본 발명에 따른 자동 회로 합성의 방법은 또한, 다음과 같은 특징들:
- 상기 동기화 유닛은 상기 채널의 생산자 프로세스의 동작을 제어하고, 여기서 제어는 상기 생산자 프로세스의 새로운 반복의 값의 수집 이후,
- 동기화 유닛이 상기 수집된 값의 새로운 실행 위치를 소비자 프로세스의 마지막으로 수집된 반복 값의 실행 위치와 비교하는 단계; 그리고
- 만약 상기 새로운 반복의 실행 위치가 소비자 프로세스의 마지막으로 수집된 반복 값의 실행 위치 이후에 있다면 상기 동기화 유닛이 상기 새로운 반복의 생산자 프로세스에 의한 구현을 동결하는 단계를 구현함으로써 이루어지고,
여기서 동결은 소비자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치가 소비자 프로세스의 새로운 반복의 상기 실행 위치 이후에 있을 때까지 동기화 유닛에 의해 유지되는 특징;
- 상기 동기화 유닛은 상기 채널의 소비자 프로세스의 동작을 제어하고, 여기서 제어는 상기 소비자 프로세스의 새로운 반복의 값의 수집 이후,
- 동기화 유닛이 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널(c) 내에서 기입하도록 하는 생산자 프로세스의 반복 값들 중 하나의 반복 값의 실행 위치를 결정하는 단계; 그리고
- 만약 결정된 실행 위치가 생산자 프로세스의 마지막으로 수집된 반복 값의 실행 위치와 동일하거나 이후에 있다면 상기 동기화 유닛이 상기 새로운 반복의 소비자 프로세스에 의한 구현을 동결하는 단계를 구현함으로써 이루어지고,
여기서 동결은 생산자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치가 상기 결정된 실행 위치보다 정확히(strictly) 더 높을 때까지 동기화 유닛에 의해 유지되는 특징;
- 각각의 채널의 소비자 혹은 생산자 프로세스는, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 프로세스의 새로운 반복의 반복 값을 채널의 동기화 유닛으로 전달하고, 그리고 동결 혹은 허가를 표시하는 관리 유닛(supervision unit)으로부터의 제어 커맨드(control command)에 근거하여 프로세스의 상기 새로운 반복을 구현하는 특징;
- 채널의 소비자 프로세스는 또한, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널 내에서 기입하도록 하는 생산자 프로세스의 상기 반복 값을 채널의 동기화 유닛으로 전달하는 특징 중 하나 이상의 특징을 더 포함한다.
제 2 실시형태에 따르면, 본 발명은 회로들을 자동으로 합성하기 위한 디바이스를 제공하고, 상기 디바이스는 채널들을 통해 상호연결되는 정규 프로세스들의 네트워크를 발생시킴으로써 소프트웨어 프로그램을 컴파일링하는데 적합하고, 여기서 각각의 채널은 어드레싱가능한 물리적 메모리이고, 상기 프로세스들 각각은 관련되어 있는 반복 도메인의 각각의 반복에서 채널 내에서의 적어도 하나의 데이터 판독 및/또는 채널 내에서의 하나의 데이터 기입을 적용하는데 적합하고, 시퀀싱 함수는 각각의 프로세스의 각각의 반복 값에 대해 실행 위치들의 시간-시퀀싱된 세트에서 선택되는 프로세스의 실행 위치를 제공하는데 적합하고, 상기 회로 합성 디바이스는 상기 컴파일링 동안, 생산자 프로세스로 지칭되는 단일 프로세스 및 소비자 프로세스로 지칭되는 단일 프로세스; 그리고 상기 채널과 관련되는 동기화 유닛을 발생시키고 상기 채널들 각각과 관련시키는데 적합한 것에 특징이 있고, 여기서 생산자 프로세스로 지칭되는 단일 프로세스는 채널 내에서 데이터를 기입할 허가를 받고, 소비자 프로세스로 지칭되는 단일 프로세스는 상기 채널 내에서 데이터를 판독할 허가를 받고, 상기 동기화 유닛은 채널의 생산자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 생산자 프로세스의 상기 새로운 반복의 값을 수집하는데 적합하고, 그리고 채널의 소비자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 소비자 프로세스의 반복 값을 수집하는데 적합하고, 상기 동기화 유닛은, 생산자, 소비자 프로세스 각각의 새로운 반복의 값의 수집 이후, 상기 생산자, 소비자 프로세스 각각의 상기 새로운 반복의 구현을 허가하거나 동결하는데 적합하고, 여기서 허가하거나 동결하는 것은 생산자, 소비자 프로세스 각각으로부터 수집된 새로운 반복 값에 따라 결정되는 실행 위치와, 소비자, 생산자 프로세스 각각으로부터 수집된 마지막 반복 값에 따라 결정되는 실행 위치의 비교에 근거하여 이루어진다.
제 3 실시형태에 따르면, 본 발명은 합성된 회로(synthesized circuit)를 제공하고, 예를 들어, 본 발명의 제 1 실시형태에 따른 회로들을 자동으로 합성하는 방법의 구현을 따르는 합성된 회로를 제공하고, 상기 합성된 회로는 채널들을 통해 상호연결되는 정규 프로세스들의 네트워크를 포함하고, 여기서 각각의 채널은 어드레싱가능한 물리적 메모리이고, 상기 프로세스들 각각은 관련되어 있는 반복 도메인의 각각의 반복에서 채널 내에서의 적어도 하나의 데이터 판독 및/또는 채널 내에서의 하나의 데이터 기입을 적용하는데 적합하고, 시퀀싱 함수는 각각의 프로세스의 각각의 반복 값에 대해 실행 위치들의 시간-시퀀싱된 세트에서 선택되는 프로세스의 실행 위치를 제공하는데 적합하고, 상기 방법은, 각각의 채널과 관련되며 생산자 프로세스로 지칭되는 단일 프로세스 및 각각의 채널과 관련되며 소비자 프로세스로 지칭되는 단일 프로세스; 그리고 상기 채널과 관련되는 동기화 유닛을 포함하는 것에 특징이 있고, 여기서 생산자 프로세스로 지칭되는 단일 프로세스는 채널 내에서 데이터를 기입할 허가를 받고, 소비자 프로세스로 지칭되는 단일 프로세스는 상기 채널 내에서 데이터를 판독할 허가를 받고, 상기 동기화 유닛은 채널의 생산자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 생산자 프로세스의 상기 새로운 반복의 값을 수집하는데 적합하고, 그리고 채널의 소비자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 소비자 프로세스의 반복 값을 수집하는데 적합하고, 상기 동기화 유닛은, 생산자, 소비자 프로세스 각각의 새로운 반복의 값의 수집 이후, 상기 생산자, 소비자 프로세스 각각의 상기 새로운 반복의 구현을 허가하거나 동결하는데 적합하고, 여기서 허가하거나 동결하는 것은 생산자, 소비자 프로세스 각각으로부터 수집된 새로운 반복 값에 따라 결정되는 실행 위치와, 소비자, 생산자 프로세스 각각으로부터 수집된 마지막 반복 값에 따라 결정되는 실행 위치의 비교에 근거하여 이루어진다.
본 발명의 이러한 특징들 및 장점들은 오로지 예시적 목적으로 제공되는 다음의 설명을 숙독하고 첨부되는 도면들을 참조하는 경우 명확해질 것이며, 이러한 도면에서,
- 도 1은 본 발명의 일 실시예에서 회로들을 자동으로 합성하기 위한 디바이스를 나타내고;
- 도 2는 Prog로 명명된 프로그램의 반복 및 종속성 도메인들을 예시하고;
- 도 3은 프로그램(Prog)의 실행 순서를 예시하고;
- 도 4는 프로그램(Prog)을 실행하는 회로 블록의 자동 발생에서 구현되는 프로세스들, 입력 멀티플렉서들, 출력 디멀티플렉서들, 채널들을 나타낸 도면이고;
- 도 5는 프로그램(Prog)의 두 개의 프로세스들을 나타내고 있으며, 아울러 이러한 두 개의 프로세스들 간의 채널, 그리고 채널과 관련된 동기화 유닛을 나타낸 도면이다.
도 1은 본 발명의 일 실시예에서 회로들을 자동으로 하이-레벨로 합성하기 위한 디바이스(1)를 나타낸 도면이다. 이러한 디바이스(1)는 "프런트-엔드"로 지칭되는 블록(2), 그리고 "백-엔드"로 지칭되는 블록(3)을 포함한다.
"프런트-엔드" 블록(2)은 디바이스(1)의 입력에서 제공되는 프로그램의 알고리즘적 기술을 그 안에서의 병렬성을 추출하기 위해 분석하고, 대응하는 회로의 중간 표현으로서 프로세스 네트워크를 생성한다.
"백-엔드" 블록(3)은 "프런트-엔드" 블록(2)에 의해 생성된 회로의 중간 표현을 물리적 회로로 변환(transform)한다.
회로들을 자동으로 하이-레벨로 합성하기 위한 디바이스들에서 사용되는, 그리고 본 발명에 따른 "프런트-엔드" 블록(2)에서 사용되는, 개념들 및 프로세싱이 먼저 아래에서 제시된다.
개념들 및 프로세싱(Concepts and processing)
다면체 모델(Polyhedral model)
다면체 모델은 정적 제어 컴퓨터 프로그램(static control computer program)들을 분석하고 최적화하기 위한 툴이다. 정적 제어 프로그램들은 단지 정적 테이블(static table)들을 핸들링(handling)하고, 이것의 간단한 (포인터(pointer)들이 아닌) 변수들은 "for" 및 "if" 루프(loop)들로 제한된다. 본질적 특징은, 테이블 인덱스 함수(table index function)들, 루프 엔드포인트(loop endpoint)들, 그리고 "if"들에 대한 테스트(test)들이 써라운딩 "for" 루프 카운터(surrounding "for" loop counter)들의 아핀 함수(affine function)들이라는 것이다.
할당(allocation)(S)의 반복 벡터(iteration vector)
Figure pct00001
는 이것을 써라운딩하는 루프 카운터들로 형성된다. 실행 인스턴스(execution instance)
Figure pct00002
는 동작(operation)으로 지칭된다. 동작들은 다면체 분석들의 기초 유닛(basic unit)들이다. 할당의 반복 도메인은 실행 과정에서 그 반복 벡터들 모두의 세트이다. 이러한 제약들("for", "if" 루프들, 아핀 제약들) 하에서, 할당의 반복 도메인은 정확히(exactly) 볼록 다면체(convex polyhedron)이고, 그 형상은 할당 입력들에 따라 달라지지 않는다. 이러한 경우 이것은 정적으로 계산될 수 있고, 프로그램들의 정적 분석들 및 변환들을 구성하기 위해 다양한 다면체 동작들(기하학적 동작(geometric operation)들, 선형 최적화(linear optimization), 카운팅(counting), 등)이 적용될 수 있다.
각각의 동작 W = f(R1, ..., Rn)에서의 판독들(R1, ..., Rn) 및 기입들(W)은 아래에서 구분될 것이다. 정적 제어 프로그램(P)의 경우, 이에 따라 획득되는 기본 동작(elementary operation)들의 세트는 Ω(P)에 의해 표시된다. Ω(P)에 관한 실행의 순차적 순서는 pseq에 의해 표시된다. 동작의 판독들(Ri)은 기입:
Figure pct00003
전에 실행돼야만 한다. 마지막으로, 각각의 기본 동작 X E Ω(P)에 의해 액세스되는 메모리 위치들의 세트는 M(P)에 의해 표시된다. μ(X)는 X, μ : Ω(P) -> M(P)에 의해 (판독 혹은 기입에서) 액세스되는 위치를 표시한다.
편의상, 다음에 제시되는 것 모두에서, 동작은 기본 동작으로 지칭될 것이다.
종속성들, 시퀀싱(Dependencies, sequencing)
X가 Y 전에 실행될 때(
Figure pct00004
), 그리고 X와 Y가 동일한 메모리 위치에 액세스할 때(μ(X) = μ(Y)), 두 개의 동작들(X, Y ∈ Ω(P)) 간에는 종속성 X -> Y가 존재한다. X 및 Y의 성질(nature)(판독 혹은 기입)에 따라, 사용되는 용어들은 플로우(flow) (W 그 다음에 R), 안티(anti) (R 그 다음에 W), 혹은 엑시트(exit) (W 그 다음에 W) 종속성이다. 안티 및 엑시트 종속성들은 단지 메모리 액세스 충돌들을 표현하고, 메모리의 사용을 수정함으로써 제거될 수 있다. 실제에 있어서, 플로우 종속성들 카운트(flow dependencies count)만이 프로그램에 의해 수행되는 계산을 표현한다. 더 정확히 살펴보면, 플로우 종속성들 W -> R에 관심이 집중되고, 여기서 W는 R에 선행하는 μ(R)의 마지막 기입이며, 달리 말하면 R에 의해 판독되는 값을 정의하는 W이다. 이러한 W는 고유한(unique) 것이며, R의 소스(source)로서 지칭된다. 이것은 s(R)에 의해 표시된다.
따라서,
Figure pct00005
이고, 연산자(operator) ∧는 "and"를 의미한다.
시퀀싱은 애플리케이션(application) θ이고, 이것은 각각의 프로그램 동작과 실행 시기(execution date)를 관련시키며, 이는 전체 시퀀싱된 세트 θ : Ω (P) -> (T, <<)에 속한다.
대부분의 프로그램 변환들(최적화들 등)은 시퀀싱 함수로 기입될 수 있다. 다면체 모델은 아핀 시퀀싱들
Figure pct00006
을 계산하기 위한 기법들을 제공하고, 여기서 <<는 사전식 순서(lexicographical order)를 나타낸다. 시퀀싱이 올바른 때는, 시퀀싱이 종속성들의 인과관계(causality)를 고려하는 경우, 즉 종속성 X -> Y가 두 개의 동작들 X, Y 간에 존재하는 경우(X, Y => θ(X) << θ(Y)), 즉 X의 실행의 순서가 Y의 실행의 순서 이전인 경우이다. θ에 의해 유도(induce)되는 실행의 순서는
Figure pct00007
에 의해 표시된다. sθ는 앞서 언급된 s(R)에 관한 관계에서
Figure pct00008
를 필요한 부분만
Figure pct00009
로 교체함으로써 정의된다.
하나의 예로서, 하이 레벨 언어로 표현된 다음의 프로그램(Prog)을 고려한다.
Figure pct00010
이러한 프로그램(Prog)은 반복적 이항 완화 계산(iterative binomial relaxation calculation)을 수행하는 정적 제어 자코비 1D 프로그램(static control Jacobi 1D program)이다. 테이블 a의 에지(edge)들은 초기화되고(할당들 I1 및 I2), 그 다음에 세 개의 박스(box)들의 각각의 윈도우(window) 상에서 평균(average)이 반복적으로 계산된다(할당들 S 및 T). 마지막으로, 결과가 회수(retrieve)된다(할당 R).
할당들의 반복 도메인들이 주어지는데, 이것은 도 2에 나타나 있다. 할당들 I1, I2 및 R의 도메인들은 포인트(point)로 감소된다. 할당들 S 및 T의 도메인들은 직사각형(rectangle)들이고, 이것은 설명을 용이하게 하기 위해 여기서는 겹쳐 놓여 있다. 흑색 도트(dot)들은 S의 반복들을 나타내고, 크로스(cross)들은 T의 반복들을 나타낸다.
이러한 프로그램은 종속성들의 모든 타입들을 포함하고, 그 중 몇 개의 인스턴스들은 도면에서 화살표들에 의해 표현되어 있다.
Figure pct00011
플로우 종속성들: (I1, ) -> (S, t,), (I2,) -> (S, t, N - 2), (S, t, i) -> (T, t, i), (T, t, i) -> (S, t + 1, i - 1), (T, t, i) -> (S, t + 1, i), (T, t, i) -> (S, t + 1, i + 1), (T, K - 1, 1) -> (R,).
Figure pct00012
안티 종속성들(점선 라인들): (S, t, i) -> (T, t, i-1), (S, t, i) -> (T, t, i), (S, t, i) -> (T, t, i+1), (T, t, i) -> (S, t+1, i).
Figure pct00013
엑시트 종속성들: (S, t, i) -> (S, t+1, i) (T, T-1, 1) -> (R, ), 이러한 종속성들 모두는 플로우 종속성들 내에 포함되고, 따라서 이들은 표현되어 있지 않음.
유효한 시퀀싱은 θ(I1, ) = θ(I2, ) = (0), θ(S, t, i) = (1, 2t+i, t, 0), θ(T, t, i) = (1, 2t + i +1, t,1), θ (R, ) = (2)이다.
실행의 순서는 다음과 같은데, 먼저 I1과 I2가 동시에 실행된다. 그 다음에, S 및 T의 인스턴스들이 도면에서 표시된 바와 같이 인터리브드 방식(interleaved manner)으로 실행된다. 마지막으로, R이 실행된다.
이러한 시퀀싱은 이것이 모든 종속성들을 올바르게 충족시킨다는 의미에서 유효하다. 예를 들어, 제 1 안티 종속성이 고려되는데, 왜냐하면 θ(S,t,i)=(1,2t+i,t,0)<<θ(T,t,i-1)=(1,2t+i-1+1, t, 1) = (1,2t + i, t, 1)이기 때문이다.
메모리 할당, 단일 배정(Memory allocation, single assignment)
메모리 할당은 애플리케이션 σ이고, 이것은 P에 의해 어드레싱되는 각각의 메모리 위치 m ∈ M(P)와 새로운 메모리 위치 세트 M' 내의 대안적 위치 σ(m)을 관련시킨다(σ: M(P) -> M'). 시퀀싱 θ가 설정되고, 두 개의 메모리 위치들(m 및 m' ∈ M(P))은 만약 W1, W2, R1, R2 ∈ M(P)이면 θ-간섭(θ-interfere)하는데, 여기서 μ(W1) = μ(R1) = m, μ(W2) = μ(R2) = m', θ(W1) << θ(R2), 그리고 θ(W2) << θ(R1)이다. 이러한 경우 이것은 m ><θ m'에 의해 표시된다. 메모리 할당 σ는 만약 m ▷◁θ m' => σ(m) ≠ σ(m')이면 θ-올바르다(θ-correct).
변환된 프로그램은 데이터에 의해 충분히 기술된다(프로그램(P)의 동작들 Ω(P)의 (i), 유효한 시퀀싱 θ에 관한 것, 그리고 θ-올바른 할당 σ: (Ω(P), θ, σ)). 초기 프로그램은 (Ω(P), θSeq, Id)로 기입될 수 있고, 따라서 계산의 등가(equivalence): (Ω(P), θseq, Id) = (Ω(P), θ, σ), Id는 데이터의 초기 할당이다.
프로그램이 단일 배정(single assignment)에 있게 되는 때는, 각각의 기입 동작이 서로 다른 메모리 위치에 기입하는 경우, 달리 말하면, W1, W2 ε Ω(P)에 대해, σ(W1) = σ(W2) => W1 = W2인 경우이다. 프로그램을 단일 배정으로 변경하기 위해서, 소스 함수(s)가 올바른 위치들의 판독을 위해 사용된다. M' = {W, W ∈ Ω(P)}가 형성되고, σ가 Ω(P)의 각각의 기입 W에 대해서는 σ(W) = W에 의해, 그리고 각각의 판독에 대해서는 σ(R) = s(R)에 의해, 정의된다. 이 경우, 변환된 프로그램(Ω(P), θ, σ)은 단일 배정에 있게 된다.
하나의 예로서, 프로그램(Prog)을 단일 배정으로 변경하기 위해서, 프로세스는 소스 함수 s(.)를 계산함으로써 시작된다.
Figure pct00014
s((I1,) : a[0]) = a[0], 동작 (I1,)의 판독 a[0]의 소스는 프로그램 내에 존재하지 않고, 따라서 a[0]의 입력 값은 유지됨.
Figure pct00015
s((I2,) : a[N - 1]) = a[N -1], 동일한 이유들이 적용됨.
Figure pct00016
Figure pct00017
(S, T, i)의 판독들에 대해, 다음의 소스들이 획득됨.
Figure pct00018
Figure pct00019
Figure pct00020
에지들(i = 1 또는 i = N - 2) 상에서, 소스는 초기화 배정(I1 또는 I2)에 의해 주어진다. t = 0일 때, 소스는 (제 1 아이템(item)에서와 같이) 테이블의 초기 값이다. 만약 그렇지 않다면, 그 값은 T의 인스턴스에 의해 생성된다((T, t - 1, i -1), 또는 (T, t -1, i) 또는 (T, t - 1, i + 1)).
프로그램(Prog)에 단일 배정을 적용함으로써, 프로그램(Prog) 판독들이 단일 배정에서 획득되고, 여기서 판독들은 완전히 확장(expand)된다.
Figure pct00021
이처럼(할당 (t, i) → (t%1, i%1)을 S에 적용하기 전에는), 프로그램은 단지 플로우 종속성들만을 포함하고, 따라서 θ(S, t, i) = (1, t + i, t, 0), θ(T), t, i) = (1, t + i, t,1)로 시퀀싱될 수 있다. I1, I2 및 R의 시퀀싱은 변경되지 않은 상태로 유지된다.
실행의 순서는 도 3에서 설명된다.
박스들 S[t][i]의 라이프 인터벌(life interval)들은 서로 소(disjoint)이고, 따라서 할당 σ(S[t][i]) = S'[t%1][i%1]은 S에 적용될 수 있다. θ)의 순서를 따르지 않는 메모리 할당 이후의 프로그램(Prog)의 변환 스테이지(transformation stage)가 아래에서 설명된다.
Figure pct00022
T의 단지 하나의 차원(dimension)만이 활성화된다. 할당 함수(따라서 사용되는 메모리 공간)는 선택된 시퀀싱에 따라 달라진다.
정규 프로세스 네트워크들(Regular process networks)
정규 프로세스 네트워크(R)는 다음과 같은 요소들의 데이터이다.
Figure pct00023
Figure pct00024
, 프로세스들의 세트.
Figure pct00025
Cens = {C1, ... Cn}, 채널들로 지칭되는 물리적 메모리들의 세트; 각각의 채널 Cj(j = 1 내지 n)은 어드레싱가능한 버퍼 메모리(addressable buffer memory)임. 채널들은 박스들로 지칭되는 섹션(section)들로 분할됨.
Figure pct00026
Figure pct00027
의 연결(connection)들의 세트.
Figure pct00028
각각의 채널(C ∈ Cens)에 대해, 기입 히스토리(write history)
Figure pct00029
및 판독 히스토리(read history)
Figure pct00030
는 불변(invariant)임. 이러한 제약은 각각의 프로세스의 실행 경로가 고정되어 있음을 시사(imply)함. 특히 프로세스들은 정적 제어 프로그램들에 의해 기술될 수 있음(하지만 유일하게 그렇게 되는 것은 아님).
Figure pct00031
기입들 및 판독들 간의 우선권(precedence)의 순서
Figure pct00032
.
Figure pct00033
은 각각의 채널(C) 상에서 기입들(
Figure pct00034
, 만약 i < j라면) 및 판독들(
Figure pct00035
, 만약 i < j라면)의 순차적 순서를 표현하기 위해 확장됨. 이하에서는, 네트워크(R)에 의해 수행된 동작들의 세트는 Ω(R)에 의해 표시되고,
Figure pct00036
임.
R의 동작들의 시퀀싱 θobs이 관측가능한 때는 이것이 R의 동작들의 가능한 실행을 기술하는 경우, 달리 말하면 X, Y ∈ Ω(R)에 대해,
Figure pct00037
인 경우임.
정규 프로세스 네트워크에서의 정적 제어 프로그램(P)의 컴파일링은 다음과 같은 요소들의 데이터이다.
Figure pct00038
배치
Figure pct00039
: Ω(P) ->
Figure pct00040
Figure pct00041
채널들의 할당 σ : Ω(P) ->
Figure pct00042
Figure pct00043
각각의 프로세스 상에서의 우선권의 전체 순서(
Figure pct00044
)를 보장하는 동기화들의 세트,
Figure pct00045
=>
Figure pct00046
또는
Figure pct00047
그리고 플로우 종속성들
Figure pct00048
의 고려.
프로그램(P)의 각각의 할당은 프로세스를 일으킨다.
네트워크가 P와 부분적으로 동등하게 되는 때는 종료된 이들의 실행들 모두가 P와 동일한 계산을 생성하는 경우, 즉, Ω(R) 상에서 완전히 정의되는 R에서의 관측가능한 시퀀싱들 모두가 P의 올바른 시퀀싱들인 경우이다. 추가적으로, 만약 네트워크가 데드락(deadlock) 없이 보장된다면, 네트워크는 P와 동등하고 컴파일링은 올바르다고 말해진다.
본 발명에 따른 DPN 프로세스 네트워크들 및 컴파일링 (DPN process networks and compilation according to the invention)
"프런트-엔드" 블록(2)에 의해 구현되는 프로세싱에서 본 발명에 따른 회로들을 자동으로 합성하기 위한 방법 및 디바이스는 "데이터-인식 프로세스 네트워크(Data-aware process network)"로 지칭되는 특정 프로세스들의 네트워크를 사용한다.
"프런트-엔드" 블록(2)은 DPN 프로세스 네트워크들 내에서 입력으로서 블록에 공급되는 정적 제어 프로그램을 실제로 컴파일링한다.
DPN은 다음과 같은 조건들을 충족시키는 정규 프로세스 네트워크이다.
Figure pct00049
각각의 채널은 단일 소스 프로세스(source process)(즉, 채널 내에서 기입할 허가를 받은 단일 프로세스), 그리고 단일 목적지 프로세스(destination process)(즉, 채널 내에서 판독할 허가를 받은 단일 프로세스; 일 실시예에서는, 단일 목적지 프로세스에 대해 단일 엔트리 포트(entry port)도 존재함)를 수용함.
Figure pct00050
채널들은 판독/기입 블록화 메모리들임; 즉, 이들은 판독/기입 랜덤 액세스 메모리들이고, 이에 따라 프로세스는 당시 존재하는 콘텐츠(content)가 판독되지 않았다면 해당 메모리에 단지 기입만을 할 수 있고, 역으로, 판독될 콘텐츠가 기입되어 있지 않는 한 판독될 수 없게 됨.
정적 제어 프로그램(P)을 DPN으로 컴파일링하는 방식(
Figure pct00051
)은 다음과 같은 조건들을 충족시켜야만 한다.
Figure pct00052
채널 내에서의 각각의 판독에 대해, 소스는 동일한 채널 내에 올바르게 기입됨: 만약 (P1, C, P2)가 채널(C)을 통과하는 P1 내지 P2의 연결이라면,
Figure pct00053
임.
Figure pct00054
올바른 시퀀싱 θ가 선택되고, 이에 관해 Ω(P) 상에서 유도되는 순서는 전체적이며, θ-올바른 할당 σ가 선택됨.
Figure pct00055
우선권의 순서는 각각의 프로세스 상에서 전체적이며, 다른 곳에서는 정의되지 않음,
Figure pct00056
.
Figure pct00057
각각의 기입 W에 대해, 마지막 판독
Figure pct00058
은 W, σ(W)에 의해 기입되는 박스를 비움(free). 이 경우 박스 σ(W)는 판독될 수 있도록 기입돼야만 함.
이러한 컴파일링은 올바르고, 획득된 DPN은 본래의 프로그램(P)과 부분적으로 동등하며, 데드락은 결코 일어나지 않는다.
간단한 DPN은 프로세스들의 세 가지 타입들을 포함한다.
Figure pct00059
LD 프로세스들, 이들은 중앙 메모리 내에서 들어오는 데이터를 판독함.
Figure pct00060
ST 프로세스들, 이들은 중앙 메모리 내의 계산의 최종 결과를 기입함.
Figure pct00061
Cal 프로세스들, 이들은 계산 자체를 전담하고 있음.
유효한 시퀀싱 θ 및 "프런트-엔드" 블록(2)에 의해 DPN에서 변환될 프로그램(P)의 경우가 고려된다.
LD 및 ST 프로세스들을 용이하게 구성하기 위해서, "프런트-엔드" 블록(2)은, 메인 원격 메모리(main remote memory)에서의 입력에서 판독되는 각각의 데이터 테이블 a에 대해, 동작들의 다음과 같은 패밀리(family)를 프로그램(P)에 추가한다.
Figure pct00062
, 여기서 Ω는 테이블 a의 인덱스들의 세트임.
각각의 기입되는 테이블 b에 대해, "프런트-엔드" 블록(2)은 동작들의 다음과 같은 패밀리를 프로그램에 추가하며, 여기서 d는 임의의 스칼라 변수(scalar variable)이다.
Figure pct00063
, 여기서 Ω는 테이블 b의 인덱스들의 세트임.
동작들 LDa는 P의 바로 그 시작에서 실행돼야만 하고, STb의 동작들은 P의 끝에서 바로 실행돼야만 한다. 따라서, P의 각각의 본래의 동작 에 대해
Figure pct00065
이다. 이러한 속성은 다차원 시퀀싱(multidimensional sequencing)으로 특정될 수 있다.
"프런트-엔드" 블록(2)은 서로 다른 프로세스 상에 각각의 할당을 배치함으로써 DPN 네트워크를 생성하고, P = {S1, ..., Sn}(P의 할당들)이며, 그리고
Figure pct00066
이고, 여기서 W, R1, ..., Rn은 할당 S : W = f(R1, ..., Rn)에 의해 수행되는 동작들이다. 특히, 판독된 테이블 a에 대해 하나의 프로세스 LDa가 생성되고, 기입된 테이블 b에 대해 하나의 프로세스 STb가 생성된다. 이러한 프로세스들의 계산 프로세스들로의 연결은 소스 함수 s로 자연적으로 획득된다.
각각의 프로세스에는 "프런트-엔드" 블록(2)에 의해 다음과 같은 요소들이 제공된다.
Figure pct00067
프로세스에 의해 구현되는 할당에 의해 판독되는 레퍼런스(reference)에 대한 하나의 엔트리 포트(entry port). 엔트리 포트는 멀티플렉서(multiplexer)이고, 올바른 채널에서 레퍼런스의 값을 회수하는 것을 전담하고 있음.
Figure pct00068
출력 포트(output port), 출력 포트는 프로세스에 의해 계산되는 값을 방출함. 출력 포트는 디멀티플렉서(demultiplexer)이고, 이것은 올바른 채널에서 프로세스에 의해 계산되는 값을 기입함.
DPN을 구성하기 위해서, "프런트-엔드" 블록(2)이 이러한 요소들을 계산하고 각각의 채널을 할당(함수 σ)하면 충분하다.
멀티플렉싱, 디멀티플렉싱(Multiplexing, demultiplexing)
프로그램(P)을 컴파일링할 때, "프런트-엔드" 블록(2)은 각각의 판독에 대한 소스 함수를 계산한다.
동작
Figure pct00069
(T의 반복 도메인) : W = f(R1, ..., Rn)에 대해, {R1, …, Rn} 중에서의 판독 R의 소스는 아래와 같은 형태를 갖는다.
Figure pct00070
여기서 Dk는 폐쇄된 볼록 다면체들이고, uk는 아핀 함수들이고, 그리고 Tk는 프로그램 할당들이다.
S가 T의 레퍼런스 R에 의해 판독되는 테이블을 기입하게 되는 각각의 할당 쌍(allocation pair) (S, T)에 대해, "프런트-엔드" 블록(2)은 채널 CS,T,R을 생성한다. 만약 D가 S의 반복 도메인이라면, CS,T,R은 D의 차원(dim D)과 동등한 차원의 테이블이다.
그 다음에, 이러한 채널들은 "프런트-엔드" 블록(2)에 의해 다음과 같은 방식으로 엔트리 및 엑시트 포트들을 통해 프로세스들에 연결된다.
각각의 할당 T ∈ {T1, ..., Tn}에 대해서, T의 각각의 판독 R에 대해서, 소스 s((T,i) : R)의 각각의 항목(clause)
Figure pct00071
: (Sk, uk(i))에 대해서, "프런트-엔드" 블록(2)은 다음과 같은 동작들을 수행한다.
Figure pct00072
채널 CSk,T,R에 대한 연결의 R에 대응하는 엔트리 포트에 추가, 그리고 멀티플렉싱 항목
Figure pct00073
이 추가되고, 이것은 현재 반복이
Figure pct00074
를 충족시키는 경우 채널 CSk,T,R의 박스
Figure pct00075
의 판독을 지시함.
Figure pct00076
채널 CSk,T,R에 대한 연결을 Sk의 엑시트 포트에 추가, 그리고 멀티플렉싱 항목
Figure pct00077
의 추가, 이것은 현재 반복이
Figure pct00078
를 충족시키는 경우 채널 CSk,T,R의 박스
Figure pct00079
(현재 반복 벡터)에서의 계산된 값의 기입을 지시함.
구성에 의해, 각각의 채널 CSk,T,R은 단일 소스(Sk)를 갖고, 그리고 단일 목적지(T)를 갖는 단일 포트를 갖는다.
할당 T의 각각의 엔트리 포트에 대한 멀티플렉서는 할당의 현재의 반복 벡터에 대응하는 멀티플렉싱 항목을 결정하는데 적합하고, 그리고 이러한 반복 벡터에 대한 관련 채널 및 그 박스를 제공하는데 적합하고, 그리고 이와 같은 채널의 이러한 박스를 판독하는데 적합하다.
할당 S의 각각의 엑시트 포트에 대한 디멀티플렉서는 할당의 현재의 반복 벡터에 대응하는 멀티플렉싱 항목을 결정하는데 적합하고, 그리고 이러한 반복 벡터에 대한 관련 채널 및 그 박스를 제공하는데 적합하고, 그리고 이와 같은 채널의 이러한 박스에서 결과를 기입하는데 적합하다.
다음으로, LD 및 ST 프로세스들은 DPN에 연결된다. 실제로, Tk가 프로세스 LDa인 경우, 이것은 프로세스의 입력 값이고, 프런트-엔드 블록(2)에 의한 컴파일링은 LDa에 의해 기입되는 채널에서 올바른 값을 회수하기 위한 멀티플렉싱을 자연적으로 생성한다.
추가적으로, 출력 프로세스 STb의 멀티플렉서는 b의 각각의 박스에 대한 그 채널들에서 최종 값들을 회수한다.
예를 들어, 도 4는 프로그램(Prog)의 "프런트-엔드" 블록(2)에 의한 컴파일링의 결과를 예시한다. 프로세스들은 굵게 아웃라인(outline)된 박스들로 표현되어 있다. 계산 프로세스들은 안쪽에 어떠한 패턴도 없이 굵게 아웃라인된 박스들로 표현되어 있고, LDa 및 ST 프로세스들(로드(LOAD) 및 스토어(STORE))은 안쪽에 줄무늬 패턴을 갖는 굵게 아웃라인된 박스들로 표현되어 있다. 채널들은 화살표 아웃라인(narrow outline)들을 갖는 아울러 안쪽에 점이 있는 패턴을 갖는 박스들로 표현되어 있고, 멀티플렉서들 및 디멀티플렉서들은 안쪽에 어떠한 패턴도 없이 화살표 아웃라인들을 갖는 것으로 표현되어 있다.
각각의 계산 프로세스는 하나 이상의 엔트리 포트들을 갖는다. 각각의 엔트리 포트는 해당 포트에 특정되어 있는 멀티플렉서(이것은 도 4에서 프로세스들에 따라 "MUX", "MUX1", "MUX2", "MUX3"으로 명명됨)와 프로세스 사이에 정렬된다.
멀티플렉서는 어떤 것이 관련 채널인지 그리고 현재 반복에 대한 채널의 박스인지를 결정하고, 그리고 관련 채널의 이러한 박스에서 데이터를 판독한다.
유사하게, 각각의 프로세스는 엑시트 포트를 갖고, 이것은 현재 계산의 결과를 디멀티플렉서(이것은 도 4에서 "DEMUX"로 명명됨)로 전송한다. 디멀티플렉서는 어떤 것이 관련 채널 혹은 관련 채널들인지 그리고 할당의 현재 반복에 대한 채널의 박스인지를 결정하고, 그리고 하나 이상의 채널들에서 결과를 기입한다.
예를 들어, 프로그램(Prog)에서, b[i] = a[i-1] + a[i] + a[i+1]에 대응하는 할당 S를 계산하는 프로세스는 a[i - 1], a[i], 및 a[i + 1]의 각각의 값들을 갖는 세 개의 엔트리 포트들을 갖는다. a[i-1]의 판독을 위해서, 소스 함수 s((S, t, i) : a[i-1])를 사용하는 멀티플렉서 MUX 1은 i ≥ 2 ∧ t = 0인 경우 소스는 (LDa, i - 1)임을 결정하고, 따라서 로드(a)(LOAD(a))로부터 비롯된 채널의 선택을 결정한다. 프로세스 로드(a)의 대응하는 디멀티플렉싱은 [(t, i) → i-1] (i ≥ 2 ∧ t = 0) = i ≥ 1에 의해 주어진다.
DPN은 획득되었고, DPN은 각각의 할당의 각각의 판독의 각각의 소스에 대해 유사한 방식으로 동작한다.
이하에서는, 할당 S를 실행하는 프로세스는 "프로세스 S"로 지칭될 것이고, 할당 T를 실행하는 프로세스는 "프로세스 T"로 지칭될 것이다.
채널 할당(Channel allocation)
"프런트-엔드" 블록(2)은 또한 프로그램(P)에 대한 DPN 네트워크의 컴파일링 동안 각각의 채널에 대한 할당 함수 σ를 생성하는데 적합하다.
σ는 채널의 어드레싱 함수로서 사용된다. 채널
Figure pct00080
에 대한 임의의 요청은 실제로는 채널
Figure pct00081
에 액세스한다.
할당은 모듈러 아핀 함수(modular affine function)
Figure pct00082
의 형태를 갖는다.
Figure pct00083
의 좌표들은 채널 CTk,S,Rk의 서로 다른 차원들의 크기들에 대응하고, 이것은 이제 프런트-엔드 블록(2)에 의해 실제로 구성될 수 있다.
프로그램(Prog)에 대한 DPN 네트워크의 구성에 관한 예시로서, S와 T 사이에 채널 C를 할당함에 있어서, 이 경우 θ(S, t, i) = (t + i, t, 0), θ(T, t, i) = (t + i, t, 1)이다. 프런트-엔드 블록(2)은 예를 들어, 기술문헌(제목: "Lattice-Based Array Contraction: From Theory to Practice"; 저자: Christophe Alias, Fabrice Baray, Alain Darte; Research Report RR2007-44, Laboratoire de l'Informatique du Parallelisme [Parallelism Computing Laboratory], ENS-Lyon, November 2007)에서 설명된 바와 같이, 할당 함수 σ(t, i) = (t mod 1, i mod 1)를 계산한다. 달리 말하면, CS,T,b[i]는 1 x 1 크기의 2-차원 채널이고, 이것은 이후 σ로 액세스된다.
이것은 간단한 레지스터(register)로 구현될 수 있다.
채널 동기화(Channel synchronization)
본 발명에 따른 DPN 네트워크에서, 채널들은 판독/기입 블록화되고, 채널의 박스는 (그 소스에 의해) 기입되어 있기 전에 판독될 수 없으며, 박스는 그 현재 저장된 값이 마지막으로 판독되기 전에 기입될 수 없다.
채널에서의 판독들 및 기입들은 본 발명에 따르면 이러한 속성을 강제(force)하기 위해 동기화된다.
따라서, "프런트-엔드" 블록(2)은, 생산자 프로세스(P)의 엑시트 포트를 소비자 프로세스(C)의 엔트리 포트 RK에 연결하는 각각의 채널(c)에 대해, 동기화 유닛(Sc)을 구성하는데 적합하다.
채널(c)에서 생산자의 각각의 반복 W(기입) 및 소비자의 각각의 반복 R(판독)은 그들의 실행 전에 동기화 유닛(Sc)에 제출되는 실행 요청의 제공이 일어나게 하고, 동기화 유닛(Sc)은 이들의 실행을 허가할지 말지를 결정한다.
플로우 종속성들을 강제하기 위해서, 동기화 유닛은 본 발명의 일 실시예에서 만약 판독하기를 원하는 데이터가 아직 생성되지 않았다면 소비자의 실행을 중지(stop)시킬 것을 결정한다. 그리고 안티-종속성들을 강제하기 위해, 동기화 유닛은 본 발명의 일 실시예에서 만약 마지막으로 아직 판독되지 않은 데이터를 오버라이트(overwrite)하기를 원한다면 생산자의 실행을 중지시킬 것을 결정한다. 엑시트 종속성들을 강제하는 것이 반드시 필요한 것은 아님에 유의해야 하며, 기입들은 모두 시퀀싱의 순차적 순서에서 생산자에 의해 실행된다.
이러한 두 개의 이벤트(event)들은 다음과 같은 방식으로 표현되는데, 예를 들어, 동기화 유닛에 의해서 다음과 같은 함수 Sc의 동기화 유닛에 의한 사용을 통해 표현되며, 여기서
Figure pct00084
Figure pct00085
임을 의미하고(즉, θ(X)는 θ(Y)와 동등하거나 이전에 있음을 의미하고), s()는 소스 함수인데, 소비자 프로세스(C)로부터의 요청에 대한 응답이 프로세스 C에 대해 의도된 동결(C)(Freeze(C)) 신호인지를 결정하기 위한 소스 함수이거나, 혹은 생산자 프로세스(P)로부터의 요청에 대한 응답이 프로세스 P에 대해 의도된 동결(P)(Freeze(P)) 신호인지를 결정하기 위한 소스 함수이다.
Figure pct00086
동결(C) 신호는 소비자 프로세스(C)의 실행을 중단(interrupt)시키고, 동결(P) 신호는 생산자 프로세스(P)의 실행을 중단시킨다.
일 실시예에서, 동결 신호는 그 조건이 참(true)인 동안 존재한다. 그 조건이 다시 거짓(false)이 되는 경우, 이것의 전송은 끝나고, 프로세스는 그 실행을 재개(resume)한다.
또 하나의 다른 실시예에서, 동결 신호는 프로세스로부터의 요청에 응답하여 그 테스트되는 조건이 참인 경우 한번 전송된다. 그리고, 조건이 거짓인 경우 혹은 거짓이 되자마자, 허가 신호(authorization signal)가 프로세스로 전송된다.
앞서의 Sc의 공식(formula)에서 제 1 조건은 판독될 데이터가 아직 기입되어 있지 않은 경우 소비자의 실행은 중단됨을 의미한다. 달리 말하면, 생산자 P가 R, s(R)에 의해 판독되는 데이터의 기입에 선행하는 기입 W를 실행하는 경우이다.
제 2 조건은 판독이 끝나지 않은 데이터를 오버라이트하려는 시점에 있는 경우 생산자 P의 실행이 중단됨을 의미한다.
달리 말하면, 생산자 P가 R'에 의해 이후에 여전히 판독돼야만 하는 박스 σc(W)를 기입하려고 시도하는 경우이다.
소스 함수 s(R)은 채널(c)을 판독하는 프로세스(C)의 멀티플렉서에 의해 이미 계산된다.
동결(P) 조건은 보존적으로(conservatively)으로
Figure pct00087
으로 간단하게 될 수 있다(실제로, 만약 동결(P)이 참이라면 반드시
Figure pct00088
를 따름).
증명(Proof). 만약 동결(P)이 참이라면, R"이 존재하고, 이 경우
Figure pct00089
이다.
Figure pct00090
의 이행성(transitivity)에 의해 결과가 획득된다.
이러한 원리(theorem)는 생산자를 블록화할 필요가 있을 때마다
Figure pct00091
가 참이 됨을 의미한다. 대조적으로,
Figure pct00092
는 기입될 박스가 생산자를 불필요하게 블록화하는 소비자에 의해 해방(release)된 이후 수 개의 반복들에 대해 계속 참일 수 있다. 특히,
Figure pct00093
인 경우, 생산자는 R이 실행되기를 여전히 기다려야만 한다. 결국, 생산자는 "과열됨(being over-zealous)"이 없이 사용자에 의해 특정된 시퀀싱 θ를 정확히 고려할 것이다. 따라서, 가능한한 병렬인 시퀀싱을 제공하는 것은 사용자의 책임이다.
동기화 유닛(Sc)은 데이터 종속성들을 고려하고, 어떠한 데드락도 결코 생성하지 않는다.
예시로서, 도 5를 참조하여, S(생산자)와 T(소비자) 프로세스들 사이의 채널 c = CS,T,b[i]를 다시 고려한다.
소비자 프로세스(T)는, 각각의 새로운 반복 (tC, iC)를 시작하기 전에, 채널(c)의 동기화 유닛(여기서 그 멀티플렉서는 임의의 레퍼런스를 판독해야함을 결정함)으로, 새로운 반복의 실행 허가를 위한 요청, 그 새로운 반복 (tC, iC)의 식별자, 그리고 생산자 프로세서(S)의 예측되는 대응하는 반복 (tS, iS)(즉, 채널(c)에서 이러한 레퍼런스의 기입을 일으키는 것)의 식별자를 전송한다. (tS, iS)는 소스 함수 s(이에 따라 인덱스 's')에 의해 획득된다. 소비자 프로세스는 동기화 유닛에 의해 허가를 받을 때까지 이러한 새로운 반복을 시작하지 못한다.
유사하게, 생산자 프로세스(S)는, 각각의 새로운 반복 (tP, iP)를 시작하기 전에, 채널(c)의 동기화 유닛(여기서 그 디멀티플렉서는 결과를 기입해야함을 결정함)으로, 새로운 반복의 실행 허가를 위한 요청, 그리고 그 새로운 반복 (tP, iP)의 식별자를 전송한다. 생산자 프로세스는 동기화 유닛에 의해 허가를 받을 때까지 이러한 새로운 반복을 시작하지 못한다.
동기화 유닛이, 소비자 프로세스(T)의 새로운 반복 (tC, iC)의 실행 허가를 위한 요청, 그 새로운 반복 (tC, iC)의 식별자, 그리고 생산자 프로세서(S)의 예측되는 대응하는 반복 (tS, iS)의 식별자를 막 수신했다고 가정한다.
만약
Figure pct00094
라면((tP, iP)는 생산자 프로세스(S)의 마지막 반복 식별자인데 S에 의해 동기화 유닛으로 전송된 것임, θ는 시퀀싱 함수임), 동기화 유닛은 소비자 T의 새로운 반복 (tC, iC)를 허가한다. 이 경우 대응하는 커맨드 SmdT가 이에 응답하여 동기화 유닛에 의해 소비자 프로세스(T)로 전송된다(이전에 살펴본 바와 같이, 이와 같은 경우 이러한 커맨드는 언급된 실시예들에 따른 허가 신호이거나 혹은 동결(C) 신호의 부재임).
만약 이와는 반대로
Figure pct00095
라면((tP, iP)는 생산자 프로세스(S)의 마지막 반복 식별자인데 S에 의해 동기화 유닛으로 전송된 것임) 그리고 이러한 마지막 표현이 참인 상태에서 유지되는 동안, 동기화 유닛은 소비자 T의 새로운 반복 (tC, iC)를 허가하지 않는다. 이 경우 대응하는 커맨드 SmdT가 이에 응답하여 동기화 유닛에 의해 소비자 프로세스(T)로 전송된다(이전에 살펴본 바와 같이, 이와 같은 경우 이러한 커맨드는 언급된 실시예들에 따른 지속성 혹은 일회성 동결(C) 신호임).
이제, 동기화 유닛이, 생산자 프로세스(S)의 새로운 반복의 실행 허가를 위한 요청, 그리고 그 새로운 반복 (tP, iP)의 식별자를 막 수신했다고 가정한다.
만약
Figure pct00096
라면((tC, iC)는 소비자 프로세스(T)의 마지막 반복 식별자인데 T에 의해 동기화 유닛으로 전송된 것임), 동기화 유닛은 생산자 S의 새로운 반복 (tP, iP)를 허가한다. 이 경우 대응하는 커맨드 SmdS가 이에 응답하여 동기화 유닛에 의해 생산자 프로세스(S)로 전송된다(이전에 살펴본 바와 같이, 이와 같은 경우 이러한 커맨드는 언급된 실시예들에 따른 허가 신호이거나 혹은 동결(P) 신호의 부재임).
만약 이와는 반대로
Figure pct00097
라면 그리고 이러한 마지막 표현이 참인 상태에서 유지되는 동안, 동기화 유닛은 생산자 프로세스(S)의 새로운 반복 (tP, iP)를 허가하지 않는다. 이 경우 대응하는 커맨드 SmdS가 이에 응답하여 동기화 유닛에 의해 소비자 프로세스(T)로 전송된다(이전에 살펴본 바와 같이, 이와 같은 경우 이러한 커맨드는 언급된 실시예들에 따른 지속성 혹은 일회성 동결(P) 신호임).
이전의 예들에서 설명된 시퀀싱 함수가 프로그램(Prog)에 대한 DPN 네트워크의 구성과 관련되고, S는 생산자 프로세스이고, T는 소비자 프로세스인 것으로서 고려함으로써, 앞서 설명된 동결(C) 및 동결(P)에 관한 표현들은 다음과 같이 된다.
동결(C)이 되는 때는,
Figure pct00098
인 경우 그리고 이러한 조건이 충족되는 동안,
즉, (tP + iP < ts + iS) ∨ (tP + iP = tS + iS ∧ tP < tS) ∨ (tP + iP = tS + iS ∧ tP = tS)인 경우 그리고 이러한 조건이 충족되는 동안임;
∨는 "OR"를 의미함.
동결(P)이 되는 때는,
Figure pct00099
인 경우 그리고 이러한 조건이 충족되는 동안,
즉, (tC + iC < tP + iP) ∨ (tC + iC = tP + iP ∧ tC < tP)인 경우 그리고 이러한 조건이 충족되는 동안임.
정의에 의해, 사전식 순서(<<)는 매우 중복적인 표현(redundant expression)들을 생성하고, 이것은 매우 간단한 테스트 회로가 생성될 수 있게 한다.
다른 실시예들에서는, 동일한 채널과 관련된 생산자 및 소비자 프로세스들 간의 동기화를 위해서 동기화 유닛에 의해 다른 동기화 규칙들이 구현됨에 유의해야 할 것이다.
따라서 중간 DPN 표현으로의 변환이 프로그램(Prog)의 알고리즘적 표현으로부터 "프런트-엔드" 블록(2)에 의해 수행되면, 이러한 중간 표현은 "백-엔드" 블록(3)에 제공된다.
임의의 알려진 방식에서, "백-엔드" 블록(3)은 이러한 중간 DPN 표현으로부터 전자 회로들의 블록을 물질적으로(materially) 구성한다. 예를 들어, 기존의 합성 툴이 사용될 수 있는데, 기술문헌("저자: Christophe Alias, Alain Darte, 및 Alexandru Plesco. Optimizing DDR-SDRAM Communications at C-Level for Automatically-Generated Hardware Accelerators. An Experience with the Altera C2H HLS Tool. In 21st IEEE International Conference on Application-specific Systems, Architectures and Processors (ASAP'10), Rennes, France, pages 329-332, July 2010. IEEE Computer Society")에서 설명된 바와 같이 C2H와 같은 것이 사용될 수 있다. 각각의 프로세스, 채널, 멀티플렉서는 C2H 함수로서 기술된다. 각각의 함수는 C2H에 의해 하드웨어 모듈(hardware module)에서 변환된다. 모듈들 간의 연결들은 연결 프라그마(connection pragma)들을 사용하여 C2H에 특정된다. 각각의 연결은 C2H에 의해 표준 하드웨어 버스(standard hardware bus)에서 변환될 것이다.
본 발명에 따른 회로들을 자동으로 합성하기 위한 디바이스는 하이-레벨 언어로 표현되는 프로그램(P)의 계산들을 빠르게 수행함과 아울러 물리적 체적의 한정된 점유를 요구하는 전자 회로들을 자동으로 발생시키기 위해 사용될 수 있다.
프로세스 네트워크들의 형태를 갖는 많은 병렬 실행 모델들이 있다(KPN, SDF, 등). 본 발명은, 원격 메모리와의 데이터 전달들이 명시적(explicit)인 회로 합성의 하드웨어 제약들에 적합한 병렬 실행 모델에 따라, DPN(Data-aware Process Network) 프로세스 네트워크들에서 컴파일링을 제공한다. DPN에서의 이러한 컴파일링은 순차적 프로그램을 데드락 없이 보장된 동등한 DPN 프로세스 네트워크로 변환한다는 점에서 일관적이다. 입력들/출력들(즉, 원격 메모리와의 데이터 전달들)은 명시적이고, 통신 채널들은, 동등한 성능의 동기화 유닛들에 제어되는, FIFO들보다 훨씬 더 적은 제약들을 갖는 버퍼 메모리들이다.

Claims (15)

  1. 회로(circuit)들을 자동(automatic)으로 합성(synthesis)하는 방법으로서,
    상기 방법은 채널(channel)들(c)을 통해 상호연결되는 정규 프로세스(regular process)들의 네트워크(network)에서 소프트웨어 프로그램(software program)을 컴파일링(compiling)하는 단계를 포함하고,
    여기서 각각의 채널은 어드레싱가능한 물리적 메모리(addressable physical memory)이고,
    상기 프로세스들 각각은 관련되어 있는 반복 도메인(iteration domain)의 각각의 반복에서 채널 내에서의 적어도 하나의 데이터 판독(data read) 및/또는 채널 내에서의 하나의 데이터 기입(data write)을 적용(apply)하고,
    시퀀싱 함수(sequencing function)는 각각의 프로세스의 각각의 반복 값에 대해 실행 위치(execution position)들의 시간-시퀀싱된 세트(time-sequenced set)에서 선택되는 프로세스의 실행 위치를 제공하고,
    회로들을 자동으로 합성하는 상기 방법은, 상기 컴파일링하는 단계 동안, 상기 채널들(c) 각각에 대해,
    생산자 프로세스(producer process)(S)로 지칭되는 단일 프로세스가 채널(c) 내에서 데이터를 기입할 허가(authorize)를 받고, 소비자 프로세스(consumer process)(T)로 지칭되는 단일 프로세스가 상기 채널 내에서 데이터를 판독할 허가를 받는 단계와; 그리고
    동기화 유닛(synchronization unit)(Sc)이 상기 채널과 관련되는 단계를
    포함하는 것에 특징이 있고,
    상기 동기화 유닛(Sc)은 채널의 생산자 프로세스에 의한 각각의 새로운 반복의 개시(launch) 이전에 생산자 프로세스의 상기 새로운 반복의 값(tp, ip)을 수집(collect)하고, 그리고 채널의 소비자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 소비자 프로세스의 반복 값(tC, iC)을 수집하고,
    상기 동기화 유닛은, 생산자, 소비자 프로세스 각각의 새로운 반복의 값의 수집 이후, 상기 생산자, 소비자 프로세스 각각의 상기 새로운 반복의 구현을 허가(authorizing)하거나 동결(freezing)하고,
    여기서 허가하거나 동결하는 것은 생산자, 소비자 프로세스 각각으로부터 수집된 새로운 반복 값에 따라 결정되는 실행 위치와, 소비자, 생산자 프로세스 각각으로부터 수집된 마지막 반복 값에 따라 결정되는 실행 위치의 비교에 근거하여 이루어지는 것을 특징으로 하는 회로들을 자동으로 합성하는 방법.
  2. 제1항에 있어서,
    상기 동기화 유닛(Sc)은 상기 채널(c)의 생산자 프로세스(S)의 동작(operation)을 제어하고, 여기서 제어는 상기 생산자 프로세스의 새로운 반복의 값(tp, ip)의 수집 이후,
    - 동기화 유닛이 상기 수집된 값의 새로운 실행 위치(θ(tP, iP))를 소비자 프로세스(T)의 마지막으로 수집된 반복 값의 실행 위치(θ(tC, iC))와 비교하는 단계; 그리고
    - 만약 상기 새로운 반복의 실행 위치(θ(tP, iP))가 소비자 프로세스의 마지막으로 수집된 반복 값의 실행 위치(θ(tC, iC)) 이후에 있다면 상기 동기화 유닛이 상기 새로운 반복의 생산자 프로세스에 의한 구현을 동결하는 단계를
    구현함으로써 이루어지고,
    여기서 동결은 소비자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치(θ(tC, iC))가 소비자 프로세스의 새로운 반복의 상기 실행 위치(θ(tP, iP)) 이후에 있을 때까지 동기화 유닛에 의해 유지되는 것을 특징으로 하는 회로들을 자동으로 합성하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 동기화 유닛(Sc)은 상기 채널의 소비자 프로세스(T)의 동작을 제어하고, 여기서 제어는 상기 소비자 프로세스의 새로운 반복의 값의 수집 이후,
    - 동기화 유닛이 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널(c) 내에서 기입하도록 하는 생산자 프로세스(S)의 반복 값들 중 하나의 반복 값의 실행 위치(θ(tS, iS))를 결정하는 단계; 그리고
    - 만약 결정된 실행 위치(θ(tS, iS))가 생산자 프로세스의 마지막으로 수집된 반복 값의 실행 위치(θ(tP, iP))와 동일하거나 이후에 있다면 상기 동기화 유닛이 상기 새로운 반복의 소비자 프로세스에 의한 구현을 동결하는 단계를
    구현함으로써 이루어지고,
    여기서 동결은 생산자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치(θ(tP, iP))가 상기 결정된 실행 위치(θ(tS, iS))보다 정확히(strictly) 더 높을 때까지 동기화 유닛에 의해 유지되는 것을 특징으로 하는 회로들을 자동으로 합성하는 방법.
  4. 제1항 내지 제3항 중 하나의 항에 있어서,
    각각의 채널의 소비자(T) 혹은 생산자(S) 프로세스는, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 프로세스의 새로운 반복의 반복 값을 채널(c)의 동기화 유닛(Sc)으로 전달하고, 그리고 동결 혹은 허가를 표시하는 관리 유닛(supervision unit)으로부터의 제어 커맨드(control command)에 근거하여 프로세스의 상기 새로운 반복을 구현하는 것을 특징으로 하는 회로들을 자동으로 합성하는 방법.
  5. 제4항에 있어서,
    채널의 소비자 프로세스(T)는 또한, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널 내에서 기입하도록 하는 생산자 프로세스(S)의 상기 반복 값을 채널의 동기화 유닛(Sc)으로 전달하는 것을 특징으로 하는 회로들을 자동으로 합성하는 방법.
  6. 회로들을 자동으로 합성하기 위한 디바이스(1)로서,
    상기 디바이스는 채널들(c)을 통해 상호연결되는 정규 프로세스들의 네트워크를 발생시킴으로써 소프트웨어 프로그램을 컴파일링하는데 적합하고,
    여기서 각각의 채널은 어드레싱가능한 물리적 메모리이고,
    상기 프로세스들 각각은 관련되어 있는 반복 도메인의 각각의 반복에서 채널 내에서의 적어도 하나의 데이터 판독 및/또는 채널 내에서의 하나의 데이터 기입을 적용하는데 적합하고,
    시퀀싱 함수는 각각의 프로세스의 각각의 반복 값에 대해 실행 위치들의 시간-시퀀싱된 세트에서 선택되는 프로세스의 실행 위치를 제공하는데 적합하고,
    상기 회로 합성 디바이스는 상기 컴파일링 동안,
    생산자 프로세스(S)로 지칭되는 단일 프로세스 및 소비자 프로세스(T)로 지칭되는 단일 프로세스; 그리고
    상기 채널과 관련되는 동기화 유닛(Sc)을
    발생시키고 상기 채널들(c) 각각과 관련시키는데 적합한 것에 특징이 있고,
    여기서 생산자 프로세스(S)로 지칭되는 단일 프로세스는 채널(c) 내에서 데이터를 기입할 허가를 받고, 소비자 프로세스(T)로 지칭되는 단일 프로세스는 상기 채널 내에서 데이터를 판독할 허가를 받고,
    상기 동기화 유닛(Sc)은 채널의 생산자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 생산자 프로세스의 상기 새로운 반복의 값(tp, ip)을 수집하는데 적합하고, 그리고 채널의 소비자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 소비자 프로세스의 반복 값(tC, iC)을 수집하는데 적합하고,
    상기 동기화 유닛은, 생산자, 소비자 프로세스 각각의 새로운 반복의 값의 수집 이후, 상기 생산자, 소비자 프로세스 각각의 상기 새로운 반복의 구현을 허가하거나 동결하는데 적합하고,
    여기서 허가하거나 동결하는 것은 생산자, 소비자 프로세스 각각으로부터 수집된 새로운 반복 값에 따라 결정되는 실행 위치와, 소비자, 생산자 프로세스 각각으로부터 수집된 마지막 반복 값에 따라 결정되는 실행 위치의 비교에 근거하여 이루어지는 것을 특징으로 하는 회로들을 자동으로 합성하기 위한 디바이스.
  7. 제6항에 있어서,
    상기 발생된 동기화 유닛(Sc)은, 상기 채널(c)의 생산자 프로세스(S)의 동작을 제어하는데 적합하고, 여기서 제어는 상기 생산자 프로세스의 새로운 반복의 값(tp, ip)의 수집 이후,
    - 상기 수집된 값의 새로운 실행 위치(θ(tP, iP))를 소비자 프로세스(T)의 마지막으로 수집된 반복 값의 실행 위치(θ(tC, iC))와 비교하는 단계; 그리고
    - 만약 상기 새로운 반복의 실행 위치(θ(tP, iP))가 소비자 프로세스의 마지막으로 수집된 반복 값의 실행 위치(θ(tC, iC)) 이후에 있다면 상기 새로운 반복의 생산자 프로세스에 의한 구현을 동결하는 단계, 그리고 소비자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치(θ(tC, iC))가 소비자 프로세스의 새로운 반복의 상기 실행 위치(θ(tP, iP)) 이후에 있을 때까지 동결을 유지하는 단계를
    구현함으로써 이루어지는 것을 특징으로 하는 회로들을 자동으로 합성하기 위한 디바이스.
  8. 제6항 또는 제7항에 있어서,
    상기 발생된 동기화 유닛(Sc)은 상기 채널의 소비자 프로세스(T)의 동작을 제어하는데 적합하고, 여기서 제어는 상기 소비자 프로세스의 새로운 반복의 값의 수집 이후,
    - 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널(c) 내에서 기입하도록 하는 생산자 프로세스(S)의 반복 값들 중 하나의 반복 값의 실행 위치(θ(tS, iS))를 결정하는 단계; 그리고
    - 만약 결정된 실행 위치(θ(tS, iS))가 생산자 프로세스의 마지막으로 수집된 반복 값의 실행 위치(θ(tP, iP))와 동일하거나 이후에 있다면 상기 새로운 반복의 소비자 프로세스에 의한 구현을 동결하는 단계, 그리고 생산자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치(θ(tP, iP))가 상기 결정된 실행 위치(θ(tS, iS))보다 정확히 더 높을 때까지 동결을 유지하는 단계를
    구현함으로써 이루어지는 것을 특징으로 하는 회로들을 자동으로 합성하기 위한 디바이스.
  9. 제6항 내지 제8항에 있어서,
    각각의 채널의 발생된 소비자(T) 혹은 생산자(S) 프로세스는, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 프로세스의 새로운 반복의 반복 값을 채널(c)의 동기화 유닛(Sc)으로 전달하는데 적합하고, 그리고 동결 혹은 허가를 표시하는 관리 유닛으로부터의 제어 커맨드에 근거하여 프로세스의 상기 새로운 반복을 구현하는데 적합한 것을 특징으로 하는 회로들을 자동으로 합성하기 위한 디바이스.
  10. 제9항에 있어서,
    채널(c)의 소비자 프로세스(T)는 또한, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널 내에서 기입하도록 하는 생산자 프로세스(S)의 상기 반복 값을 채널의 동기화 유닛(Sc)으로 전달하는데 적합한 것을 특징으로 하는 회로들을 자동으로 합성하기 위한 디바이스.
  11. 합성된 회로(synthesized circuit)로서, 예를 들어, 청구항 제1항 내지 제5항 중 하나의 항에 기재된 바와 같은 회로들을 자동으로 합성하는 방법의 구현을 따르는 합성된 회로로서,
    상기 합성된 회로는 채널들(c)을 통해 상호연결되는 정규 프로세스들의 네트워크를 포함하고,
    여기서 각각의 채널은 어드레싱가능한 물리적 메모리이고,
    상기 프로세스들 각각은 관련되어 있는 반복 도메인의 각각의 반복에서 채널 내에서의 적어도 하나의 데이터 판독 및/또는 채널 내에서의 하나의 데이터 기입을 적용하는데 적합하고,
    시퀀싱 함수는 각각의 프로세스의 각각의 반복 값에 대해 실행 위치들의 시간-시퀀싱된 세트에서 선택되는 프로세스의 실행 위치를 제공하는데 적합하고,
    상기 방법은,
    각각의 채널과 관련되며 생산자 프로세스(S)로 지칭되는 단일 프로세스 및 각각의 채널과 관련되며 소비자 프로세스(T)로 지칭되는 단일 프로세스; 그리고
    상기 채널과 관련되는 동기화 유닛(Sc)을
    포함하는 것에 특징이 있고,
    여기서 생산자 프로세스(S)로 지칭되는 단일 프로세스는 채널(c) 내에서 데이터를 기입할 허가를 받고, 소비자 프로세스(T)로 지칭되는 단일 프로세스는 상기 채널 내에서 데이터를 판독할 허가를 받고,
    상기 동기화 유닛(Sc)은 채널의 생산자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 생산자 프로세스의 상기 새로운 반복의 값(tp, ip)을 수집하는데 적합하고, 그리고 채널의 소비자 프로세스에 의한 각각의 새로운 반복의 개시 이전에 소비자 프로세스의 반복 값(tC, iC)을 수집하는데 적합하고,
    상기 동기화 유닛은, 생산자, 소비자 프로세스 각각의 새로운 반복의 값의 수집 이후, 상기 생산자, 소비자 프로세스 각각의 상기 새로운 반복의 구현을 허가하거나 동결하는데 적합하고,
    여기서 허가하거나 동결하는 것은 생산자, 소비자 프로세스 각각으로부터 수집된 새로운 반복 값에 따라 결정되는 실행 위치와, 소비자, 생산자 프로세스 각각으로부터 수집된 마지막 반복 값에 따라 결정되는 실행 위치의 비교에 근거하여 이루어지는 것을 특징으로 하는 합성된 회로.
  12. 제11항에 있어서,
    상기 발생된 동기화 유닛(Sc)은, 상기 채널(c)의 생산자 프로세스(S)의 동작을 제어하는데 적합하고, 여기서 제어는 상기 생산자 프로세스의 새로운 반복의 값(tp, ip)의 수집 이후,
    - 상기 수집된 값의 새로운 실행 위치(θ(tP, iP))를 소비자 프로세스(T)의 마지막으로 수집된 반복 값의 실행 위치(θ(tC, iC))와 비교하는 단계; 그리고
    - 만약 상기 새로운 반복의 실행 위치(θ(tP, iP))가 소비자 프로세스의 마지막으로 수집된 반복 값의 실행 위치(θ(tC, iC)) 이후에 있다면 상기 새로운 반복의 생산자 프로세스에 의한 구현을 동결하는 단계, 그리고 소비자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치(θ(tC, iC))가 소비자 프로세스의 새로운 반복의 상기 실행 위치(θ(tP, iP)) 이후에 있을 때까지 동결을 유지하는 단계를
    구현함으로써 이루어지는 것을 특징으로 하는 합성된 회로.
  13. 제11항 또는 제12항에 있어서,
    상기 발생된 동기화 유닛(Sc)은 상기 채널의 소비자 프로세스(T)의 동작을 제어하는데 적합하고, 여기서 제어는 상기 소비자 프로세스의 새로운 반복의 값의 수집 이후,
    - 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널(c) 내에서 기입하도록 하는 생산자 프로세스(S)의 반복 값들 중 하나의 반복 값의 실행 위치(θ(tS, iS))를 결정하는 단계; 그리고
    - 만약 결정된 실행 위치(θ(tS, iS))가 생산자 프로세스의 마지막으로 수집된 반복 값의 실행 위치(θ(tP, iP))와 동일하거나 이후에 있다면 상기 새로운 반복의 소비자 프로세스에 의한 구현을 동결하는 단계, 그리고 생산자 프로세스의 장래의 반복 값의 수집이 이루어져 상기 장래의 반복 값의 실행 위치(θ(tP, iP))가 상기 결정된 실행 위치(θ(tS, iS))보다 정확히 더 높을 때까지 동결을 유지하는 단계를
    구현함으로써 이루어지는 것을 특징으로 하는 합성된 회로.
  14. 제11항 내지 제13항에 있어서,
    각각의 채널의 발생된 소비자(T) 혹은 생산자(S) 프로세스는, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 프로세스의 새로운 반복의 반복 값을 채널(c)의 동기화 유닛(Sc)으로 전달하는데 적합하고, 그리고 동결 혹은 허가를 표시하는 관리 유닛으로부터의 제어 커맨드에 근거하여 프로세스의 상기 새로운 반복을 구현하는데 적합한 것을 특징으로 하는 합성된 회로.
  15. 제14항에 있어서,
    채널의 소비자 프로세스(T)는 또한, 상기 프로세스의 이전의 반복의 종결 이후에, 그리고 이전의 반복 이후 새로운 반복의 개시 이전에, 상기 새로운 반복 동안 소비자 프로세스에 의해 판독돼야만 하는 데이터를 상기 채널 내에서 기입하도록 하는 생산자 프로세스(S)의 상기 반복 값을 채널의 동기화 유닛(Sc)으로 전달하는데 적합한 것을 특징으로 하는 합성된 회로.
KR1020167031330A 2014-04-14 2015-04-10 회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램 KR102363317B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1453308 2014-04-14
FR1453308A FR3019919B1 (fr) 2014-04-14 2014-04-14 Procede de synthese automatique de circuits, dispositif et programme d'ordinateur associes
PCT/FR2015/050969 WO2015159001A1 (fr) 2014-04-14 2015-04-10 Procede de synthese automatique de circuits, dispositif et programme d'ordinateur associes

Publications (2)

Publication Number Publication Date
KR20170007741A true KR20170007741A (ko) 2017-01-20
KR102363317B1 KR102363317B1 (ko) 2022-02-14

Family

ID=51518880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031330A KR102363317B1 (ko) 2014-04-14 2015-04-10 회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램

Country Status (6)

Country Link
US (1) US10242138B2 (ko)
EP (1) EP3132365B1 (ko)
KR (1) KR102363317B1 (ko)
CN (1) CN106415550B (ko)
FR (1) FR3019919B1 (ko)
WO (1) WO2015159001A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3019919B1 (fr) 2014-04-14 2016-05-06 Inria Inst Nat De Rech En Informatique Et En Automatique Procede de synthese automatique de circuits, dispositif et programme d'ordinateur associes
CN113722859B (zh) * 2021-09-07 2024-03-19 北京航空航天大学 一种基于凸多面体模型的不确定性结构静力响应确定方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090088414A (ko) * 2006-12-22 2009-08-19 베리지 (싱가포르) 피티이. 엘티디. 테스터, 테스트 대상 장치의 테스트 방법 및 컴퓨터 판독 가능한 저장 매체
KR20100059822A (ko) * 2007-07-31 2010-06-04 노키아 코포레이션 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체
WO2010140883A2 (en) * 2009-06-02 2010-12-09 Vector Fabrics B.V. Improvements in embedded system development
US7886261B1 (en) * 2007-08-14 2011-02-08 Actel Corporation Programmable logic device adapted to enter a low-power mode
KR20120044369A (ko) * 2009-07-24 2012-05-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 I/o 및 계산 오프로드를 위해 복수레벨 어드레스 변환을 포함하는 i/o 메모리 관리 유닛

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
US7051309B1 (en) * 1999-02-16 2006-05-23 Crosetto Dario B Implementation of fast data processing with mixed-signal and purely digital 3D-flow processing boars
CN1936906A (zh) * 2005-09-19 2007-03-28 北京中电华大电子设计有限责任公司 电路设计工具中spice的集成方法
US8327039B2 (en) * 2009-08-14 2012-12-04 Cadence Design Systems, Inc. Integrated DMA processor and PCI express switch for a hardware-based functional verification system
CN102855339A (zh) * 2011-06-29 2013-01-02 北京华大九天软件有限公司 集成电路版图验证并行处理解决方案
US8789001B1 (en) * 2013-02-20 2014-07-22 Tabula, Inc. System and method for using fabric-graph flow to determine resource costs
US9268895B2 (en) * 2013-11-06 2016-02-23 Texas Instruments Incorporated Circuit design synthesis tool with export to a computer-aided design format
FR3019919B1 (fr) 2014-04-14 2016-05-06 Inria Inst Nat De Rech En Informatique Et En Automatique Procede de synthese automatique de circuits, dispositif et programme d'ordinateur associes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090088414A (ko) * 2006-12-22 2009-08-19 베리지 (싱가포르) 피티이. 엘티디. 테스터, 테스트 대상 장치의 테스트 방법 및 컴퓨터 판독 가능한 저장 매체
KR20100059822A (ko) * 2007-07-31 2010-06-04 노키아 코포레이션 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체
US7886261B1 (en) * 2007-08-14 2011-02-08 Actel Corporation Programmable logic device adapted to enter a low-power mode
WO2010140883A2 (en) * 2009-06-02 2010-12-09 Vector Fabrics B.V. Improvements in embedded system development
KR20120044369A (ko) * 2009-07-24 2012-05-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 I/o 및 계산 오프로드를 위해 복수레벨 어드레스 변환을 포함하는 i/o 메모리 관리 유닛

Also Published As

Publication number Publication date
CN106415550A (zh) 2017-02-15
US10242138B2 (en) 2019-03-26
CN106415550B (zh) 2020-07-28
EP3132365A1 (fr) 2017-02-22
FR3019919A1 (fr) 2015-10-16
KR102363317B1 (ko) 2022-02-14
WO2015159001A1 (fr) 2015-10-22
EP3132365B1 (fr) 2023-12-06
FR3019919B1 (fr) 2016-05-06
US20170132333A1 (en) 2017-05-11

Similar Documents

Publication Publication Date Title
JP6745019B2 (ja) 情報処理装置及び情報処理方法
US7509619B1 (en) Auto generation of a multi-staged processing pipeline hardware implementation for designs captured in high level languages
Rupnow et al. A study of high-level synthesis: Promises and challenges
Potop-Butucaru et al. Integrated worst-case execution time estimation of multicore applications
Park et al. Extended synchronous dataflow for efficient DSP system prototyping
Peng Synthesis of VLSI systems with the CAMAD design aid
JP2006505061A (ja) プロセッサのパイプラインの設計方法および設計システム
Feautrier Scalable and structured scheduling
Ahn et al. SoCDAL: System-on-chip design AcceLerator
KR102363317B1 (ko) 회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램
Chen et al. MULTIPAR: Behavioral partition for synthesizing multiprocessor architectures
EP0867820A2 (en) A design environment and a method for generating an implementable description of a digital system
US20020170037A1 (en) Apparatus and method for controlling event ordering in a mixed- language simulator
Falk et al. Integrated modeling using finite state machines and dataflow graphs
Cheng et al. Balancing Static Islands in Dynamically Scheduled Circuits using Continuous Petri Nets
Corvino et al. Design space exploration for efficient data intensive computing on socs
Self et al. Design methodology for construction of asynchronous pipelines with Handel-C
Sigdel et al. System-level design space exploration of dynamic reconfigurable architectures
Mendias et al. Efficient verification of scheduling, allocation and binding in high-level synthesis
Piat et al. Loop transformations for interface-based hierarchies IN SDF graphs
Plosila et al. Action systems synthesis of DI circuits
Chattopadhyay et al. A timing driven cycle-accurate simulation for coarse-grained reconfigurable architectures
Mamaghani et al. Asynchronous dataflow de-elastisation for efficient heterogeneous synthesis
Fradet et al. Spdf: A schedulable parametric data-flow moc (extended version)
Sombatsiri et al. An efficient performance estimation method for configurable multi-layer bus-based SoC

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant