KR20050064349A - 애플리케이션 특수 명령어 세트 프로세서 합성을 위한분기/병합 노드 최적화 합성 방법 - Google Patents

애플리케이션 특수 명령어 세트 프로세서 합성을 위한분기/병합 노드 최적화 합성 방법 Download PDF

Info

Publication number
KR20050064349A
KR20050064349A KR1020030095708A KR20030095708A KR20050064349A KR 20050064349 A KR20050064349 A KR 20050064349A KR 1020030095708 A KR1020030095708 A KR 1020030095708A KR 20030095708 A KR20030095708 A KR 20030095708A KR 20050064349 A KR20050064349 A KR 20050064349A
Authority
KR
South Korea
Prior art keywords
node
branch
edge
cdfg
synthesis
Prior art date
Application number
KR1020030095708A
Other languages
English (en)
Other versions
KR100594965B1 (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 한국전자통신연구원
Priority to KR1020030095708A priority Critical patent/KR100594965B1/ko
Publication of KR20050064349A publication Critical patent/KR20050064349A/ko
Application granted granted Critical
Publication of KR100594965B1 publication Critical patent/KR100594965B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

1. 청구범위에 기재된 발명이 속하는 기술분야
본 발명은, 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은, 애플리케이션 특수 명령어 세트 프로세서(ASIP) 합성 과정에서 생성되는 제어 데이터 흐름 그래프(CDFG : Control Data Flow Graph)를 깊이 우선 탐색(Breath First Search)하면서 분기 트리를 생성하고, 상기 생성한 분기 트리를 이용하여 상기 제어 데이터 흐름 그래프(CDFG)에서 제어 노드를 제외한 데이터 노드를 추출하여 병합함으로써, 명령어 내에 존재하는 공통의 회로(연산자)를 상호 공유하도록 하기 위한, 합성 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법을 제공하는데 그 목적이 있음.
3. 발명의 해결 방법의 요지
본 발명은, 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 있어서, 애플리케이션 특수 명령어 세트 프로세서(ASIP)의 명령어 집합 내의 각 명령어에 상응하는 제어 데이터 흐름 그래프(CDFG)에 대하여 깊이 우선 탐색(Breath First Search)하여 분기/병합 노드에 상응하는 분기 트리를 생성하는 분기 트리 생성 단계; 상기 생성한 분기 트리 내의 에지에 고유 번호를 부여하고, 상기 분기 트리를 이용하여 상기 제어 데이터 흐름 그래프(CDFG) 내의 에지에 상응하는 고유 번호를 부여하는 에지 번호 부여 단계; 상기 제어 데이터 흐름 그래프(CDFG) 내에서 동일 에지 번호를 가지는 데이터 노드를 병합하는 노드 병합 단계; 및 각각의 노드와 병합 노드에 상응하는 회로와 그에 따른 신호를 설정하는 회로 합성 단계를 포함함.
4. 발명의 중요한 용도
본 발명은 애플리케이션 특수 명령어 세트 프로세서(ASIP) 등에 이용됨.

Description

애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법{OPTIMIZED COMPOSITION METHOD OF BRANCH/JOIN NODE FOR ASIP AUTO COMPOSITION}
본 발명은, 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 관한 것이다.
최근에는 내장형 시스템의 응용 범위가 광범위해지고 시스템의 데이터 처리와 제어가 복잡해짐에 따라 설계자의 경험에 근거하여 수작업에 의존하던 종래의 설계 방법은 한계에 부딪히게 되었다. 따라서, 대용량 데이터의 고속 처리가 가능하고, 복잡한 제어를 효과적으로 처리할 수 있는 새로운 시스템 설계 방법이 요구되고 있다.
최근 초고밀도 집적 회로(VLSI : Very Large scale Integrated Circuit) 설계 기술의 발달로 인하여 많은 시스템에서 주문형 반도체(ASIC : Application Specific Integrated Circuit)가 사용되고 있다. 주문형 반도체(ASIC)는 범용 프로세서와 비교하여 성능, 면적, 전력 소비 등의 제약 조건을 만족시키는데 있어서 유리하나, 특정 애플리케이션에 최적화가 되어 있기 때문에 디자인 후기에 일어날 수 있는 디자인 변화를 수용하기 어려우며, 응용 영역의 복잡도가 증가함에 따라 디자인 에러와 알고리듬의 변화를 수용할 수 있는 유연성이 부족하다.
이에 반하여 범용 프로세서를 사용하는 경우에는 프로그램의 수정만으로 여러 애플리케이션의 수행이 가능하여 유연성이 뛰어나지만, 주문형 반도체(ASIC)에 비하여 시스템 성능이 떨어지는 문제점이 있다. 이러한 문제점을 보완하기 위하여 시스템의 성능을 크게 저하시키지 않으면서 주어진 응용 프로그램에 따라 유연하게 변경이 가능한 애플리케이션 특수 명령어 세트 프로세서(ASIP : Application Specific Instruction-Set Processor)가 널리 이용되고 있다.
애플리케이션 특수 명령어 세트 프로세서(ASIP)는 특정 응용 분야에 알맞게 설계된 프로세서로서, 응용 분야의 특성에 따라 원하는 성능, 전력 소모 등을 만족하도록 명령어 세트를 기반으로 프로세서를 자동으로 합성한다. 이 때, 애플리케이션 특수 명령어 세트 프로세서(ASIP)를 자동으로 합성하기 위해서는, 먼저 아키텍처 기술 언어로 명령어 집합 또는 프로세서의 아키텍처를 기술하고, 이로부터 프로세서 하드웨어를 합성하게 된다.
즉, 애플리케이션 특수 명령어 세트 프로세서(ASIP)를 자동으로 합성하기 위해서는, 먼저 명령어 세트를 아키텍처 기술 언어로 기술하고, 이를 도 1에 도시된 바와 같은 중간 데이터 형태인 제어 데이터 흐름 그래프(CDFG : Control Data Flow Graph)로 변환한다.
그런데, 아키텍처 기술 언어로 기술된 명령어 세트 내에는 이프(IF) 문과 같은 조건문이 포함될 수 있는데, 이 때 이프(IF) 문은 제어 데이터 흐름 그래프(CDFG) 상에서 분기/병합(Branch/Join) 노드의 형태로 변환된다. 그런데, 이러한 분기/병합(Branch/Join) 노드는 하드웨어로 합성하기가 매우 어려울 뿐만 아니라 최적화를 하지 않을 경우에는 합성된 회로의 크기가 매우 커지게 된다.
따라서, 종래에는 제어 노드(Control Node)가 없는 데이터 흐름 그래프(DFG) 만을 허용하여 합성하거나, 또는 제어 노드(Control Node)의 특성상 서로 배타적으로 수행될 수 있는 연산 모듈을 상호 간에 공유할 수 있는 가능성을 무시한 채 합성하였기 때문에 최적화를 이루지 못하는 문제점이 있었다.
따라서, 본 발명에서는 제어 데이터 흐름 그래프(CDFG) 상에서 존재하는 분기/병합(Branch/Join) 노드를 효율적으로 최적화하여 프로세서를 합성할 수 있는 방법을 제안하고자 한다.
본 발명은, 상기와 같은 문제점을 해결하기 위하여 제안된 것으로, 애플리케이션 특수 명령어 세트 프로세서(ASIP) 합성 과정에서 생성되는 제어 데이터 흐름 그래프(CDFG : Control Data Flow Graph)를 깊이 우선 탐색(Breath First Search)하면서 분기 트리를 생성하고, 상기 생성한 분기 트리를 이용하여 상기 제어 데이터 흐름 그래프(CDFG)에서 제어 노드를 제외한 데이터 노드를 추출하여 병합함으로써, 명령어 내에 존재하는 공통의 회로(연산자)를 상호 공유하도록 하기 위한, 합성 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법을 제공하는데 그 목적이 있다.
상기의 목적을 달성하기 위한 본 발명은, 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 있어서, 애플리케이션 특수 명령어 세트 프로세서(ASIP)의 명령어 집합 내의 각 명령어에 상응하는 제어 데이터 흐름 그래프(CDFG)에 대하여 깊이 우선 탐색(Breath First Search)하여 분기/병합 노드에 상응하는 분기 트리를 생성하는 분기 트리 생성 단계; 상기 생성한 분기 트리 내의 에지에 고유 번호를 부여하고, 상기 분기 트리를 이용하여 상기 제어 데이터 흐름 그래프(CDFG) 내의 에지에 상응하는 고유 번호를 부여하는 에지 번호 부여 단계; 상기 제어 데이터 흐름 그래프(CDFG) 내에서 동일 에지 번호를 가지는 데이터 노드를 병합하는 노드 병합 단계; 및 각각의 노드와 병합 노드에 상응하는 회로와 그에 따른 신호를 설정하는 회로 합성 단계를 포함한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다. 이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
도 1은 본 발명에 이용되는 제어 데이터 흐름 그래프(CDFG : Control Data Flow Graph)에 대한 일실시예 설명도이다.
도 1에 도시된 바와 같이, 제어 데이터 흐름 그래프(CDFG)는 데이터 노드(2)와 제어 노드(1,4, 6 내지 9)로 구성되어 있다. 데이터 노드는 데이터에 대한 연산이 수행되는 노드로서 덧셈, 뺄셈, 곱셈 등의 연산을 수행하는 노드이다. 이에 비해 제어 노드(4 내지 9)는 데이터의 흐름을 제어하는 노드로서, 조건 분기를 표현하는 분기/병합(Branch/Join) 노드, 반복문을 표현하는 순환(Loop) 노드 등이 있다. 일반적으로 제어 데이터 흐름 그래프(CDFG) 상에서 데이터 노드(2)는 흰색으로, 제어 노드(1,4, 6 내지 9)는 회색으로 표현된다. 이러한 노드들을 연결하는 에지에는 데이터 에지(3)와 제어 에지(5)가 있는데, 데이터 에지(3)는 데이터의 흐름을 표시하고, 제어 에지(5)는 제어의 흐름을 표시한다. 도 1에서 데이터 에지(3)는 실선 화살표로, 제어 에지(5)는 점선 화살표로 표시되어 있다.
한편, 제어 데이터 흐름 그래프(CDFG)에서 분기(Branch) 노드는 도 2에 도시된 바와 같은 조건문(IF 문)을 표현하는 것으로서, 도 3에 도시된 바와 같이, 하나의 이프(IF) 문은 분기(Branch) 노드와 병합(Join) 노드에 의하여 표현되며, 분기(Branch) 노드에서 분기되는 제어 에지에는 '참(T)' 또는 '거짓(F)' 중에 대응하는 조건값이 할당되어 있다.
도 4 내지 도 6을 참조하여 종래 방법에서 분기/병합(Branch/Join) 노드를 하드웨어로 합성하는 전체적인 과정을 살펴보기로 한다.
먼저, 도 4에 도시된 바와 같은 조건문(IF 문)으로 표현된 아키텍처 기술은 도 5에 도시된 바와 같은 제어 데이터 흐름 그래프(CDFG)로 변환된다. 이를 실질적인 하드웨어로 합성하면 도 6에 도시한 바와 같은 회로가 산출된다. 즉, 합성된 하드웨어를 살펴보면 선택(select) 신호의 값(참 또는 거짓)에 따라 "a"와 "b"를 더한 값 또는 "c" 와 "d"를 더한 값(e)이 출력된다.
한편, 분기/병합(Branch/Join) 노드가 중첩된 형태를 합성하는 과정을 도 8 내지 도 10을 참조하여 살펴보기로 한다.
본 발명에서 제어 데이터 흐름 그래프(CDFG)로부터 분기 트리를 생성하는 방법은 도 7에 도시되어 있는 바와 같은 분기 트리 생성 알고리즘을 이용한다. 즉, 본 발명에 이용되는 분기 트리 생성 알고리즘은 도 7에 도시된 바와 같이 제어 데이터 흐름 그래프(CDFG)의 시작 노드를 매개 변수로 하여 "Build_Branch_Tree()" 함수가 호출되면 시작 노드로부터 제어 데이터 흐름 그래프(CDFG) 각각의 노드를 탐색하기 위하여 내부 데이터 구조인 큐(Queue)를 초기화한다.
그리고, 제어 데이터 흐름 그래프(CDFG)의 시작(Start) 노드에서 끝(End) 노드까지 모든 노드들을 제어 에지에 따라 깊이 우선 탐색(Breath First Search)하면서 분기(Branch) 노드를 만나면 분기 트리 구조에 동일한 이름을 갖는 트리 노드를 생성하고, 분기(Branch) 노드의 제어 에지에 따라 트리 에지를 추가한 후, 추가한 트리 에지에 고유한 에지 번호를 부여한다. 이 때, 제어 데이터 흐름 그래프(CDFG)의 상응하는 제어 에지에도 동일한 번호를 부여한다.
한편, 제어 에지를 따라 깊이 우선 탐색(Breath First Search)하는 도중에 병합(Join) 노드를 만나면 현재 노드에서 조상 노드로 이동하고, 이 때 통과하는 트리 에지의 고유 번호를 병합(Join) 노드의 출력 제어 에지에 부여한다. 이와 같은 방법으로 도 8에 도시된 제어 데이터 흐름 그래프(CDFG)로부터 분기 트리를 구성하면 도 10에 도시된 바와 같은 분기 트리가 생성된다.
또한, 이러한 방식으로 분기 트리 생성 알고리즘을 수행하면 도 8에 도시된 바와 같은 제어 데이터 흐름 그래프(CDFG)는 도 10에 도시된 분기 트리를 이용하여 도 9에 도시된 바와 같은 트리 에지 번호가 할당된다. 이후의 설명에서 보다 상세한 과정에 대하여 살펴보기로 한다.
먼저, 도 8에 도시된 바와 같은 제어 데이터 흐름 그래프(CDFG)의 시작 노드(81)로부터 그래프 탐색을 시작하여 제어 에지를 따라 그래프를 탐색하다 분기 노드 B1(82)을 만나면, 도 10에 도시된 바와 같이 트리 노드 B1(46)을 생성한다.
그리고, 분기 노드 B1(82)에는 "83"과 "84"에 도시된 바와 같이 두 제어 에지가 있으므로, 분기 트리에도 각각에 해당하는 트리 에지(47,48)를 생성하고, 분기 조건(T, F)을 각각의 트리 에지(47,48)에 할당한다. 또한, 각각의 트리 에지에는 에지 번호의 초기값(45)을 각각 1씩 증가시킨 '1'(51)과 '2'(52)를 각각의 에지(47, 48)에 할당한다. 이 때, 분기 트리에 할당한 에지 번호를 도 9에 도시된 바와 같이 제어 데이터 흐름 그래프(CDFG)의 제어 에지(15,16)에도 동일하게 할당한다. 이와 같이, 일단 제어 에지에 할당된 트리 에지 번호는 다른 제어 노드를 만나기 전에는 변하지 않는다.
이후, 제어 데이터 흐름 그래프(CDFG)에서 탐색 경로가 데이터 노드 N1(*) (28)를 거쳐 병합 노드 J1(39)을 만나면 제어 에지에 분기 노드 B1(82)과 동일한 트리 에지 번호 '1'(37)을 할당한다. 한편, 탐색 경로가 또 다른 분기 노드 B2(21)를 만나면, 분기 트리의 해당 트리 에지(48)에 분기 트리 노드 B2(53)를 자식 노드로서 생성한 후, 제어 데이터 흐름 그래프(CDFG)의 제어 에지(22,23)에 상응하는 트리 에지(54, 55)를 생성하고, 트리 에지 번호 '3'(58), '4'(59)를 할당한다. 이 때, 트리 에지(54, 55)에 할당한 트리 에지 번호는 도 9에 도시된 바와 같이 제어 데이터 흐름 그래프(CDFG) 상의 제어 에지(22, 23)에도 각각 동일하게 할당된다.
한편, 제어 데이터 흐름 그래프(CDFG)에서 탐색 경로가 데이터 노드 N2(*)(29)를 거쳐, 제어 에지(33)를 통하여 병합 노드 J2(35)를 만나면 분기 트리 상의 분기 트리 에지(54)로부터 상위 노드의 분기 트리 에지(48)로 이동하며, 분기 트리 에지 번호는 "52"에 도시된 바와 같이 '2'로 정해진다. 따라서, 도 9에 도시된 바와 같이 제어 데이터 흐름 그래프(CDFG) 상에서 제어 노드 J2(35)를 거치는 제어 에지(36)에는 '2'(38)를 할당한다. 이와 같은 방식으로 제어 데이터 흐름 그래프(CDFG) 상의 병합 노드 J2(35)를 거쳐 병합 노드 J1(39)을 통과하면 분기 트리 상의 현재 분기 트리 에지는 '0'(45)을 할당하며, 이는 제어 데이터 흐름 그래프(CDFG) 상의 제어 에지(40)에는 동일하게 '0'(41)을 할당하게 된다.
이후, 상기에서 설명한 과정에 의하여 생성된 분기 트리를 이용하여 도 8에 도시된 제어 데이터 흐름 그래프(CDFG)를 하드웨어로 합성하게 되는데, 이 때 제어 데이터 흐름 그래프(CDFG) 상의 제어 노드와 제어 에지는 데이터패스 하드웨어 상에서는 나타나지 않고, 단지 각각의 데이터패스 하드웨어를 제어하는 제어 회로 내의 제어 정보로 구현된다. 즉, 데이터패스 하드웨어에는 제어 데이터 흐름 그래프(CDFG) 상의 데이터 노드와 데이터 에지들이 구현되며, 여러 데이터 에지들이 하나의 데이터 노드의 입력으로 연결될 경우에는 다중화 회로(MUX : multiplexer)를 삽입하고, 여러 데이터 에지로부터 하나의 신호를 선택하기 위한 제어 정보를 제어 회로로부터 입력받는다.
도 11 내지 도 14는 종래 방법에 따른 분기/병합(Branch/Join) 노드의 합성 방법에 대한 일실시예 설명도이다.
우선, 종래 방법에 따라 제어 데이터 흐름 그래프(CDFG)를 직접 하드웨어로 구현할 경우에는 제어 정보의 합성이 매우 어렵기는 하지만 데이터패스 회로 생성 자체는 가능하였다. 이 경우에는 도 8에 도시된 바와 같은 제어 데이터 흐름 그래프(CDFG)에서 제어 노드와 제어 에지를 제거하여 도 11에 도시된 바와 같이 간략화한 후, 실제 하드웨어의 합성을 위하여 각 데이터 에지들이 연결될 포트들을 구분하여 그래프를 다시 구성한다. 이 때, 도 11에 도시된 바와 같이 레지스터 R(114)에는 데이터 노드 N1(*)(111), N2(*)(112), N3(+)(113) 각각으로부터 출력 데이터 에지가 연결되므로 이를 구분하여 그래프를 다시 구성하면 도 12에 도시된 바와 같다.
그런데, 도 12에 도시된 그래프는 구현하고자 하는 데이터패스 하드웨어와 일대일 맵핑이 가능한 상태로서, 데이터패스 연산을 실제로 수행할 연산자를 하드웨어 라이브러리에서 찾아내어 각각의 노드에 바인딩하면 도 13에 도시된 바와 같다. 여기에서 N1, N2, N3는 각각의 출력이 레지스터의 하나의 입력으로 연결되므로 이 부분에 다중화 회로(MUX : Multiplxer)를 삽입하여 레지스터의 입력 포트에 실제로 연결할 신호를 제어 신호로서 구분하도록 한다. 이 때, 다중화 회로(MUX)의 제어 신호는 도 14에 도시된 바와 같이 조건문 B1, B2(141)에 따라 결정된다.
상기에서의 설명과 같이 종래의 제어 데이터 흐름 그래프(CDFG)로부터 직접 하드웨어를 합성하는 경우에는 제어 데이터 흐름 그래프(CDFG)의 데이터 노드들이 실제로 어떤 조건에 따라 서로 동시에 또는 상호 배타적으로 수행되는지에 대한 분석이 어렵기 때문에 각각의 데이터 노드에 각각의 하드웨어 연산자를 할당한다. 따라서, 결과적으로는 필요보다 더 많은 수의 하드웨어를 이용하여 구현하게 되는 문제점이 있다.
본 발명은 이와 같은 문제를 해결하기 위하여 제어 데이터 흐름 그래프(CDFG) 상의 분기 구조를 분석하여 상호 공유가 가능한 데이터 노드를 찾아내고, 하드웨어 연산자를 공유할 수 있도록 한다. 이 때, 본 발명에서는 데이터 노드들이 연산자를 공유할 경우 발생하게 되는 하드웨어들 간의 상호 연결도를 자동으로 변환하고, 제어 정보를 자동으로 합성하기 위하여 분기 트리라는 개념을 이용한다. 이하의 설명에서는 도 8에 도시된 제어 데이터 흐름 그래프(CDFG)로부터 분기/병합 노드를 회로로 합성하는 과정에 대하여 설명하기로 한다.
도 15 내지 도 20은 본 발명에 따른 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 대한 일실시예 설명도이다.
먼저, 앞에서도 설명한 바와 같이, 도 8에 도시된 제어 데이터 흐름 그래프(CDFG)를 분기 트리로 구성하면 도 10에 도시된 바와 같고, 도 10에 도시된 바와 같은 분기 트리의 에지 번호를 제어 데이터 흐름 그래프(CDFG)의 각 노드 및 에지에 할당하면 도 9에 도시된 바와 같다.
이후, 하드웨어 합성을 위하여 도 9에 도시된 바와 같은 제어 데이터 흐름 그래프(CDFG)에서 제어 노드와 제어 에지를 제거하면 도 15에 도시된 바와 같다. 이 때, 도 15에 도시된 바와 같은 제어 데이터 흐름 그래프(CDFG)에서 동일한 연산을 수행하지만 서로 다른 분기 트리 에지 번호가 할당된 데이터 노드들은 서로 배타적으로 수행되는 노드들이므로 동일한 하드웨어 연산자를 공유할 수 있다. 즉, 도 15에 도시된 제어 데이터 흐름 그래프(CDFG)의 경우에는 노드 N1과 N2가 이러한 조건을 만족하므로 회로 공유가 가능하다.
한편, 하드웨어 공유를 위하여서는 N1, N2 두 노드를 병합하고, 각 노드의 실제 연결 포트를 구분하여 표시하여야 한다. 즉, 도 16에 도시된 바와 같이, 병합한 노드는 (N1,N2)로 표시되어 있다. 이 때, 종래 방법과 같이 각각의 노드에 대하여 하드웨어 라이브러리 내에서 상응하는 연산자를 찾아내어 각각의 노드에 바인딩하면 도 17에 도시된 바와 같다.
이 때, 하나의 입력 포트에 둘 이상의 에지가 연결되어 있는 경우에는 각각의 입력 포트 앞에 다중화 회로(MUX : Multiplexer)를 삽입한다. 그리고, 삽입한 다중화 회로(MUX)의 입력 선택 제어 신호로서 제어 에지의 분기 트리 번호와 그에 따른 다중화 회로(MUX)의 입력 선택 신호를 도 18에 도시된 바와 같이 설정한다. 이 때, 다중화 회로(MUX)의 입력 선택 제어 신호 "(1): '1'"의 의미는 분기 조건이 "(1)"인 경우에는 다중화 회로(MUX)에 제어 신호로서 '1'을 인가한다는 뜻이다.
이와 같이, 분기 트리 번호와 다중화 회로(MUX)의 제어 신호 조합으로부터 실제 제어 신호의 생성 조건을 합성하는 방법은 도 19에 도시된 바와 같이, 분기 트리 에지로부터 루트 노드까지의 경로 상에 존재하는 모든 분기 노드와 분기 에지의 조건들을 논리곱(AND)으로 조합하여 조건을 합성한다. 즉 '3'의 경우 분기 트리 루트 노드까지의 경로상에 B2, B1 노드가 있고, 각각의 트리 에지상의 조건이 'T', 'F'이므로, (B2 == 'T')AND(B1 == 'F')라는 조건으로 합성이 된다.
이와 같은 방식으로 다중화 회로(MUX) 각각의 제어 신호를 합성하면 도 20에 도시된 바와 같은 회로를 최종적으로 합성할 수 있다. 도 20에 도시된 바와 같이 제 2 제어 신호의 경우에는 2 입력 다중화 회로(MUX)의 제어 신호이므로 '1'과 '3'에 대한 조건 중에서 보다 간단한 '1'의 조건 즉 (B1 == 'T')라는 조건 만을 이용하여 좀 더 간단한 제어 신호를 만들어낼 수 있다. 한편, 제 1 제어 신호의 경우에도 ((1),(3))과 (4)의 두 조건 중에서 상호 조건이 겹치는 (B1 == 'F')라는 조건은 제외하고, B2의 조건 만으로 제어 신호를 합성할 수 있다.
한편, 동일한 제어 데이터 흐름 그래프(CDFG)에 대하여 종래 방법에 따른 하드웨어 합성 결과(도 14)와 본 발명에 따른 하드웨어 합성 결과(도 20)를 비교하면 본 발명에 따른 하드웨어 합성 결과가 종래 방법에 따른 하드웨어 합성 결과보다 곱셈기가 감소한 것을 확인할 수 있다. 결과적으로는 하드웨어 연산자(곱셈기)가 감소함에 따라 전체적인 하드웨어 면적을 감소시킬 수 있으며, 제어 신호를 분기 트리에서 쉽게 합성할 수 있게 된다. 다른 실시예를 도 21 내지 도 24를 참조하여 살펴보기로 한다.
도 21 내지 도 24는 본 발명에 따른 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 대한 다른 실시예 설명도이다.
먼저, 도 21에 도시된 제어 데이터 흐름 그래프(CDFG)로부터 도 22에 도시된 분기 트리를 생성한 후, 상기 생성한 분기 트리를 이용하여 도 21에 도시된 바와 같이 제어 데이터 흐름 그래프(CDFG)에 상응하는 분기 트리 에지 번호를 할당한다. 그리고, 시작 노드로부터 종료 노드까지 제어 에지를 따라 깊이 우선 탐색(Breath First Search)하면서 제어 노드를 제외한 데이터 노드 만을 추출하여 병합하면 도 23에 도시된 바와 같은 그래프를 얻을 수 있다.
이후, 도 23에 도시된 바와 같은 그래프에서 하나의 입력에 2 이상의 출력이 연결되어 있는 부분에 다중화 회로(MUX)를 삽입하여 도 24에 도시된 바와 같은 회로를 합성한다. 이 때, 다중화 회로(MUX)의 선택(select) 신호는 분기 트리를 이용하여 생성한다. 즉, 분기 노드의 조건이 'T'이면 1번 신호가 선택되고, 'F'이면 2번 신호가 선택되도록 제어 정보를 생성한다.
그 전체적인 동작 과정에 대하여서는 도 25를 참조하여 살펴보기로 한다.
도 25는 본 발명에 따른 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 대한 일실시예 흐름도이다.
먼저, 애플리케이션 특수 명령어 세트 프로세서(ASIP)의 명령어 집합 내의 각 명령어에 상응하는 제어 데이터 흐름 그래프(CDFG)에 대하여 깊이 우선 탐색(Breath First Search)하여 분기/병합 노드에 상응하는 분기 트리를 생성하고(251), 상기 생성한 분기 트리내의 에지에 고유 번호를 부여한다(252).
그리고, 상기 분기 트리를 이용하여 상기 제어 데이터 흐름 그래프(CDFG) 내의 에지에 상응하는 고유 번호를 부여한 후(253), 상기 제어 데이터 흐름 그래프(CDFG) 내에서 동일 에지 번호를 가지는 데이터 노드를 병합하여(253), 공통의 회로를 상호 공유할 수 있도록 한다.
이후, 상기 제어 데이터 흐름 그래프(CDFG)에 포함된 각각의 노드에 대하여 하드웨어 라이브러리 내에서 상응하는 하드웨어 연산자를 찾아내어 각각의 노드에 바인딩 변환하고(254), 병합한 데이터 노드에 대하여서는 다중화 회로(MUX)를 삽입하고 선택 제어 신호를 설정한다(256).
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
상기와 같이 본 발명은, 애플리케이션 특수 명령어 세트 프로세서(ASIP) 합성 과정에서 생성되는 제어 데이터 흐름 그래프(CDFG)를 깊이 우선 탐색(Breath First Search)하면서 분기 트리를 생성하고, 상기 생성한 분기 트리를 이용하여 상기 제어 데이터 흐름 그래프(CDFG) 내에 존재하는 공통의 회로(연산자)를 상호 공유하도록 함으로써, 하드웨어로 합성한 회로의 크기를 최소화하고, 보다 효율적으로 프로세서 아키텍처를 합성할 수 있는 효과가 있다.
도 1은 본 발명에 이용되는 제어 데이터 흐름 그래프(CDFG)에 대한 일실시예 설명도.
도 2 및 도 4는 아키텍처 기술 언어로 기술된 명령어 세트 내에 존재하는 조건문에 대한 일실시예 설명도.
도 3 및 도 5는 제어 데이터 흐름 그래프(CDFG) 상에 존재하는 분기/병합(Branch/Join) 노드에 대한 일실시예 설명도.
도 6 은 종래 방법에 따른 분기/병합(Branch/Join) 노드의 합성 결과에 대한 일실시예 구성도.
도 7은 본 발명에 이용되는 분기 트리 생성 알고리즘에 대한 일실시예 설명도.
도 8 내지 도 10은 본 발명에 따른 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법 중 제어 데이터 흐름 그래프(CDFG)를 분기 트리로 변환하는 과정에 대한 일실시예 설명도.
도 11 내지 도 14는 종래 방법에 따른 분기/병합(Branch/Join) 노드의 합성 방법에 대한 일실시예 설명도.
도 15 내지 도 20은 본 발명에 따른 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 대한 일실시예 설명도.
도 21 내지 도 24는 본 발명에 따른 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 대한 다른 실시예 설명도.
도 25는 본 발명에 따른 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 대한 일실시예 흐름도.
* 도면의 주요 부분에 대한 부호 설명
1 : 시작 노드 2 : 데이터 노드
3 : 데이터 에지 4, 6 : 분기 노드
5 : 제어 에지 7, 8 : 병합 노드
9 : 종료 노드

Claims (5)

  1. 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법에 있어서,
    애플리케이션 특수 명령어 세트 프로세서(ASIP)의 명령어 집합 내의 각 명령어에 상응하는 제어 데이터 흐름 그래프(CDFG)에 대하여 깊이 우선 탐색(Breath First Search)하여 분기/병합 노드에 상응하는 분기 트리를 생성하는 분기 트리 생성 단계;
    상기 생성한 분기 트리 내의 에지에 고유 번호를 부여하고, 상기 분기 트리를 이용하여 상기 제어 데이터 흐름 그래프(CDFG) 내의 에지에 상응하는 고유 번호를 부여하는 에지 번호 부여 단계;
    상기 제어 데이터 흐름 그래프(CDFG) 내에서 동일 에지 번호를 가지는 데이터 노드를 병합하는 노드 병합 단계; 및
    각각의 노드와 병합 노드에 상응하는 회로와 그에 따른 신호를 설정하는 회로 합성 단계
    를 포함하는 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법.
  2. 제 1 항에 있어서,
    상기 분기 트리 생성 단계는,
    상기 제어 데이터 흐름 그래프(CDFG)의 시작(Start) 노드에서 끝(End) 노드까지 모든 노드들을 제어 에지에 따라 깊이 우선 탐색(Breath First Search)하다가 분기(Branch) 노드를 발견함에 따라 분기 트리에 동일한 이름을 갖는 트리 노드를 생성하고, 분기(Branch) 노드의 제어 에지에 따라 트리 에지를 추가한 후, 추가한 트리 에지에 고유한 에지 번호를 부여하며, 상기 제어 데이터 흐름 그래프(CDFG : Control Data Flow Graph)의 시작(Start) 노드에서 끝(End) 노드까지 모든 노드들을 제어 에지에 따라 깊이우선탐색(Breath First Search)하다가 병합(Join) 노드를 발견함에 따라 분기 트리의 현재 노드에서 조상 노드로 이동하고 이 때 통과하는 트리 에지의 고유 번호를 병합(Join) 노드의 출력 제어 에지에 부여하는 것을 특징으로 하는 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 노드 병합 단계는,
    시작 노드로부터 종료 노드까지 제어 에지를 따라 깊이 우선 탐색(Breath First Search)하면서 제어 노드를 제외한 데이터 노드를 추출하여 동일 에지 번호를 가지는 데이터 노드를 병합하는 것을 특징으로 하는 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법.
  4. 제 3 항에 있어서,
    상기 회로 합성 단계는,
    상기 제어 데이터 흐름 그래프(CDFG)에 포함된 각각의 노드에 대하여 하드웨어 라이브러리 내에서 상응하는 하드웨어 연산자를 찾아내어 각각의 노드에 바인딩 변환하고, 상기 병합한 데이터 노드에 대하여서는 다중화 회로(MUX)를 삽입하고 선택 제어 신호를 설정하는 것을 특징으로 하는 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법.
  5. 제 4 항에 있어서,
    상기 선택 제어 신호는,
    상기 분기 트리 에지로부터 루트 노드에 이르는 경로에 포함된 모든 분기 노드 및 분기 에지의 조건들을 논리곱(AND)으로 조합하여 조건을 합성하는 것을 특징으로 하는 애플리케이션 특수 명령어 세트 프로세서 합성을 위한 분기/병합 노드 최적화 합성 방법.
KR1020030095708A 2003-12-23 2003-12-23 애플리케이션 특수 명령어 세트 프로세서 합성을 위한분기/병합 노드 최적화 합성 방법 KR100594965B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030095708A KR100594965B1 (ko) 2003-12-23 2003-12-23 애플리케이션 특수 명령어 세트 프로세서 합성을 위한분기/병합 노드 최적화 합성 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030095708A KR100594965B1 (ko) 2003-12-23 2003-12-23 애플리케이션 특수 명령어 세트 프로세서 합성을 위한분기/병합 노드 최적화 합성 방법

Publications (2)

Publication Number Publication Date
KR20050064349A true KR20050064349A (ko) 2005-06-29
KR100594965B1 KR100594965B1 (ko) 2006-06-30

Family

ID=37255960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030095708A KR100594965B1 (ko) 2003-12-23 2003-12-23 애플리케이션 특수 명령어 세트 프로세서 합성을 위한분기/병합 노드 최적화 합성 방법

Country Status (1)

Country Link
KR (1) KR100594965B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130094932A (ko) * 2012-02-17 2013-08-27 (주)에프엑스기어 포트-에지 시스템을 이용한 노드 그래프 생성 방법
CN111949306A (zh) * 2020-07-06 2020-11-17 北京大学 一种支持开源项目碎片化学习的推送方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130094932A (ko) * 2012-02-17 2013-08-27 (주)에프엑스기어 포트-에지 시스템을 이용한 노드 그래프 생성 방법
CN111949306A (zh) * 2020-07-06 2020-11-17 北京大学 一种支持开源项目碎片化学习的推送方法和系统

Also Published As

Publication number Publication date
KR100594965B1 (ko) 2006-06-30

Similar Documents

Publication Publication Date Title
US8453079B2 (en) Automated conversion of synchronous to asynchronous circuit design representations
Fant Logically determined design: clockless system design with NULL convention logic
US10089426B2 (en) Logic circuit generation device and method
Sander et al. System modeling and transformational design refinement in ForSyDe [formal system design]
JPH08101861A (ja) 論理回路合成装置
US6647539B1 (en) Method of designing semiconductor integrated circuit device
CN113569524B (zh) 芯片设计中基于综合网表提取时钟树的方法及应用
US7305650B1 (en) Data path synthesis apparatus and method for optimizing a behavioral design description being processed by a behavioral synthesis tool
US7152218B2 (en) Behavioral synthesis system, behavioral synthesis method, control program, readable recording medium, logic circuit production method, and logic circuit
CN114756219A (zh) 一种基于c++的fpga硬件构造语言实现系统
KR100594965B1 (ko) 애플리케이션 특수 명령어 세트 프로세서 합성을 위한분기/병합 노드 최적화 합성 방법
Ronak et al. Efficient mapping of mathematical expressions into DSP blocks
US6738963B2 (en) Dynamically reconfiguring clock domains on a chip
JP2004303022A (ja) プリプロセッサ、集積回路の設計システム及び集積回路の設計方法
KR100581062B1 (ko) 애플리케이션 특수 명령어 세트 프로세서 합성 방법
US7684968B1 (en) Generation of a high-level simulation model of an electronic system by combining an HDL control function translated to a high-level language and a separate high-level data path function
JP2001209670A (ja) 高位合成方法、および、高位合成方法の実施に使用される記録媒体
US20070250803A1 (en) High-level synthesis method and high-level synthesis system
Chen et al. Timing optimization of logic network using gate duplication
Gottschling et al. ReEP: a toolset for generation and programming of reconfigurable datapaths for event processing
US6237125B1 (en) High-level synthesis method including processing for optimizing arithmetic sequence of an operation string
JP2006155533A (ja) 回路情報生成装置および回路情報生成方法
CN106709187A (zh) 基于模型建立cpu的方法及装置
US20070157147A1 (en) Hardware component graph to hardware description language translation method
JPH1125136A (ja) Hdl記述生成装置及び方法並びにhdl記述生成プログラムを記録した記録媒体

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
FPAY Annual fee payment

Payment date: 20110609

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee