KR101101992B1 - 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치 - Google Patents

코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치 Download PDF

Info

Publication number
KR101101992B1
KR101101992B1 KR1020100040861A KR20100040861A KR101101992B1 KR 101101992 B1 KR101101992 B1 KR 101101992B1 KR 1020100040861 A KR1020100040861 A KR 1020100040861A KR 20100040861 A KR20100040861 A KR 20100040861A KR 101101992 B1 KR101101992 B1 KR 101101992B1
Authority
KR
South Korea
Prior art keywords
mapping
data
memory
reuse
application
Prior art date
Application number
KR1020100040861A
Other languages
English (en)
Other versions
KR20110121313A (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 KR1020100040861A priority Critical patent/KR101101992B1/ko
Publication of KR20110121313A publication Critical patent/KR20110121313A/ko
Application granted granted Critical
Publication of KR101101992B1 publication Critical patent/KR101101992B1/ko

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

본 발명은 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치에 관한 것으로서, 더욱 상세하게는 (a) 애플리케이션에 포함된 연산들을 각 연산 요소에 매핑하는 연산 매핑 및 어레이 변수들을 지역 메모리에 매핑하는 어레이 매핑을 포함하는 애플리케이션 매핑을 수행하여 제1 매핑 결과를 생성하는 단계; (b) 제1 매핑 결과에 대하여 데이터 전송 시간과 데이터 연산 시간을 계산하고, 데이터 전송 시간과 데이터 연산 시간을 비교하는 단계; (c) 데이터 전송 시간이 데이터 연산 시간보다 큰 경우, 데이터의 재사용 기회비용을 계산하는 단계; 및 (d) 재사용 기회비용을 참조하여 애플리케이션 매핑을 반복 수행함으로써 제2 매핑 결과를 생성하는 단계를 포함하는, 애플리케이션 매핑 최적화 방법 및 그 장치에 관한 것이다.
본 발명에 따르면, 지역 메모리의 구조를 인식하여 CGRA에 대한 애플리케이션 매핑을 수행함으로써, 전체 성능을 향상시킬 수 있고, 전력 효율을 증가시키며, 메모리 뱅크의 사용에 있어서 균형을 유지시킬 수 있다.

Description

코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치{Method and apparatus of optimal application mapping on coarse-grained reconfigurable array}
본 발명은 애플리케이션 매핑의 최적화 방법 및 그 장치에 관한 것으로서, 더욱 상세하게는, 코어스 그레인드 재구성 어레이에서 지역 메모리의 구조에 따라 애플리케이션의 매핑을 최적화할 수 있는 방법 및 그 장치에 관한 것이다.
본 발명은 서울특별시 및 광운대학교 산학협력단의 서울시 산학연 협력사업의 일환으로 수행한 연구로부터 도출된 것이다. [과제고유번호: 10560, 연구과제명: 나노SoC 산업육성을 위한 산학협력 혁신 클러스터-테라스케일 SoC 설계를 위한 나노 IP DB 구축]
최근, 임베디드 시스템의 많은 기능 블록들은 주로 유연성(flexibility)을 위한 소프트웨어로 구현되고 있다. 그러나, 소프트웨어와 함께, 고정된 하드웨어 IP들 또는 ASIC들이 여전히 전체 시스템의 유연성을 저해하면서도 성능성(performance)을 위해서 사용된다.
CGRA(Coarse-grained reconfigurable array) 구조는 유연성 및 성능성의 이슈 모두를 다루기 위해 제안되었다. 전형적인 CGRA는 병렬 실행을 통해 성능성을 끌어올리기 위해서 연산 요소들(PEs: Processing Elements)의 재구성 어레이를 가지고 있다. 각 연산 요소(PE)는 산술 연산이나 논리 연산과 같은 간단한 연산들을 실행하기 위해서 동적으로(dynamically) 구성될 수 있는 작은 크기의 실행 유닛이다. 또한, 연산 요소들 간의 상호 연결도 효율적인 통신을 위해서 동적으로 구성될 수 있다. 그러한 동적인 구성 능력이 CGRA의 유연성을 제공한다.
코어스-그레인드 재구성 어레이(Coarse-Grained Reconfigurable Arrays, CCRAs)는 10-100 MOps/mW의 전력 효율과 소프트웨어 프로그램 용이성(software programmable)을 제공하는 매우 유망한 플랫폼이다. 그러나, 이러한 CGRA의 가장 근본적인 성공 가능성은 CGRA 플랫폼으로의 애플리케이션 매핑의 효율성에 달려있다. 종래의 해결책은 연산 속도를 획기적으로 증가시킨 반면에, 성취할 수 있는 전력 절감 효과 및 성과를 달성하기 위한 지역 메모리(local memory) 구조의 효과를 지나치게 간과하였다.
본 발명이 해결하고자 하는 과제는, 코어스 그레인드 재구성 어레이에서 지역 메모리의 구조를 인식함으로써, 전체 성능을 향상시킬 수 있고, 전력 효율을 증가시키며, 메모리 뱅크의 사용에 있어서 균형을 유지시킬 수 있는 애플리케이션 매핑을 최적화할 수 있는 방법 및 그 장치를 제공하는 것이다.
상기한 과제를 해결하기 위해 본 발명에 따른 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법은, (a) 애플리케이션에 포함된 연산들을 각 연산 요소에 매핑하는 연산 매핑 및 어레이 변수들을 지역 메모리에 매핑하는 어레이 매핑을 포함하는 애플리케이션 매핑을 수행하여 제1 매핑 결과를 생성하는 단계; (b) 제1 매핑 결과에 대하여 데이터 전송 시간과 데이터 연산 시간을 계산하고, 데이터 전송 시간과 데이터 연산 시간을 비교하는 단계; (c) 데이터 전송 시간이 데이터 연산 시간보다 큰 경우, 데이터의 재사용 기회비용을 계산하는 단계; 및 (d) 재사용 기회비용을 참조하여 애플리케이션 매핑을 반복 수행함으로써 제2 매핑 결과를 생성하는 단계를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 방법은 (e) 데이터 전송 시간이 데이터 연산 시간보다 작은 경우 제1 매핑 결과를 최종 매핑 결과로서 결정하고, 데이터 전송 시간이 데이터 연산 시간보다 큰 경우 제2 매핑 결과를 최종 매핑 결과로서 결정하는 단계를 더 포함할 수 있다.
한편, 상기한 과제를 해결하기 위해서 본 발명은 상기 방법을 수행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록매체를 제공한다.
본 발명에 따르면, 지역 메모리의 구조를 인식하여 CGRA에 대한 애플리케이션 매핑을 수행함으로써, 전체 성능을 향상시킬 수 있고, 전력 효율을 증가시키며, 메모리 뱅크의 사용에 있어서 균형을 유지시킬 수 있다.
도 1은 코어스 그레인드 재구성 어레이 아키텍쳐의 일반적인 템플릿을 예시한 도면.
도 2는 연산 요소를 상세히 설명한 블록도.
도 3은 EMS(edge-centric modulo scheduling) 알고리즘을 사용한 MiBench 및 SPEC 벤치마크의 중요한 루프 커널들의 tc 및 td간 비율을 도시한 도면.
도 4는 본 발명에 따른 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 장치를 나타낸 블록도.
도 5a는 연산 요소 어레이 및 연산 요소 어레이와 연결된 지역 메모리의 구조를 도시한 도면.
도 5b는 애플리케이션에 포함된 연산 루프를 데이터 흐름 그래프로서 표현한 것을 예시한 도면.
도 5c는 도 5b의 데이터 흐름 그래프로부터 추출된 데이터 재사용 그래프를 예시한 도면.
도 6a 및 도 6b는 종래의 모듈로 스케쥴러에 의해 매핑 결과가 생성되는 과정을 예시한 도면.
도 6c 및 도 6d는 본 발명에 따른 모듈로 스케쥴러에 의해 매핑 결과가 생성되는 과정을 예시하는 도면.
도 7a는 한 애플리케이션의 연산 루프에 대한 데이터 흐름 그래프를 예시한 도면.
도 7b 및 도 7c는 종래 방식에 따라 매핑 결과가 생성되는 과정을 예시한 도면.
도 7d 및 도 7e는 본 발명에 따라 매핑 결과가 생성되는 과정을 예시한 도면.
도 8a는 애플리케이션의 어느 한 루프 연산에 대한 데이터 흐름 그래프를 예시한 도면.
도 8b는 도 8a의 데이터 흐름 그래프를 CGRA의 연산 요소 어레이에 매핑한 매핑 결과를 예시한 도면.
도 9a 내지 도 9d는 도 8a의 데이터 흐름 그래프를 상이한 개수의 연산 요소 열과 메모리 뱅크 구성에 대하여 스케쥴링한 매핑 결과들을 나타낸 도면.
도 9e는 도 9a 내지 도 9e의 구성에 따른 결과값을 나타낸 표.
이하에서 첨부된 도면을 참조하여, 본 발명의 바람직한 실시예를 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 코어스 그레인드 재구성 어레이(CGRA, Coarse-grained reconfigurable array, 100) 아키텍쳐의 일반적인 템플릿을 예시한 도면이다.
도 1을 참조하면, 병렬 계산을 위한 연산 요소들(processing element, PE, 110)의 2차원 재구성 어레이(PE array, 120)가 도시되어 있다. 연산 요소(110)들은 어레이(120)의 각 열에 대해 동작하고 있는 데이터 버스들의 집합을 통해서 지역 메모리(local memory, 130)와 메인 메모리(160)간의 입력/출력 데이터를 수동으로 수신/송신한다.
CGRA는 본질적으로 그물망과 같은 네트워크를 통하여 연결된 연산 요소(110, PEs)의 어레이(120)이다. 각각의 연산 요소(PE, 110)는 수학적 또는 논리적 연산, 곱셈 또는 로드/저장(load/store)을 실행할 수 있다(도 1에서 빗금 처리된 연산 요소만이 load/store 가능). 연산 요소(110)들은 지역 메모리(130)로부터 데이터를 로드(load)하거나 저장(store)할 수 있으며, 상호 연결된 네트워크를 통하여 이웃하는 연산 요소의 출력을 처리할 수도 있다.
자원이 제한된 많은 CGRA 설계들은 특정의 기능을 위한 전용의 연산 요소들을 가진다. 예를 들면, 각 행에서 몇 개의 연산 요소들은 ALU(arithmetic logic unit) 연산 및 곱셈을 위하여 예약되고, 몇 개는 지역 메모리(130)로부터 또는 지역 메모리(130)로의 로딩 및 저장을 실행할 수 있다. 연산 요소(10)의 기능(즉, 소스 피연산자들의 선택, 연산 결과의 목적지, 및 실행되는 연산)은 구성 메모리(configuration memory, 140)에 저장되고, 구성은 CGRA에 대하여 어플리케이션을 컴파일링한 결과로써 생성된다.
CGRA는 메인 프로세서(150)에 대한 보조 프로세서로써 사용된다. 메인 프로세서(150)는 메모리-매핑된 I/O를 통하여 CGRA 구성의 로딩 및 CGRA 실행의 초기화와 같은 CGRA의 실행을 관리한다. CGRA가 실행을 시작하면, 메인 프로세서(150)는 다른 작업을 수행할 수 있다. CGRA 실행의 종료를 통지하기 위하여 인터럽트가 사용될 수 있다. CGRA의 지역 메모리(130)는 DMA 콘트롤러(미도시)를 통하여 CGRA에 의하여 관리된다. 하드웨어 더블 버퍼링(hardware double bufferumg)은 버퍼들간의 빠른 스위치뿐만 아니라 CGRA에서 계산 및 데이터 전송 간의 풀(full) 오버랩을 허용한다. 이는 단일 루프를 실행하는 동안에 복수의 버퍼 스위치를 요구할 수도 있는 큰 루프들을 위해서 매우 중요하다.
도 2는 연산 요소를 상세히 설명한 블록도이다.
연산 요소(110)는 이웃한 연산 요소들의 연산 출력값 및 자신이 수행한 연산 출력값을 입력받는 제1 및 제2 멀티플렉서(111, 112), 연산을 수행하는 기능 유닛(functional unit, FU, 113), 기능 유닛(113)의 연산 출력값을 저장하고 외부로 출력하는 출력 레지스터(114), 및 기능 유닛(113)의 연산 출력값을 피드백하는 레지스터 파일(115)을 포함한다. 연산 요소(processing element, PE, 110)는 구성 메모리(140)와 연결되며, 구성 메모리(140)에 저장된 기능에 따라 자신이 수행해야할 기능(즉, 소스 피연산자들의 선택, 연산 결과의 목적지, 및 실행되는 연산)을 수행한다.
도 1에 도시된 것처럼, 전형적인 CGRA는 두 개의 저장 유닛들을 가진다. 하나는 구성 메모리(configuration memory, 140)이고, 나머지는 지역 메모리(local mmemory, 130)이다. 구성 메모리(140)는 연산 요소(110)들에 의해 실행되는 명령들(구성 코드)의 구성을 제공한다. 명령들은 연산 요소(110)들에 의해 실행되는 연산들 및 연산 요소(110)들 간의 상호 연결에 대한 정보를 포함한다. 명령들은 또한 지역 메모리(130)의 데이터가 데이터 버스에 로딩되어야 하는 시간 및 버스에 있는 데이터가 지역 메모리(130)로 저장되어야 하는 시간에 대한 정보를 포함하고 있고, 그에 따라 연산 요소(110)들은 별도의 어드레스 생성 유닛(도시되지 않음)이 없이도 데이터를 수신하고 송신할 수 있다.
도 1에서 CGRA의 실행은 3 단계로 구분된다: 입력 데이터 로딩, 계산, 및 출력 데이터 전송. 입력 데이터 로딩 단계에서, 입력 데이터는 지역 메모리(130)에 전송된다. 입력 데이터는 작업 실행의 결과로써 프로세서(150)에 의해서 직접 기록되거나 혹은 메인 메모리(160)로부터 전송될 수 있다. 연산 요소 어레이(120)는 구성 메모리(140)로부터 명령들을 가져오고 또한 지역 메모리(130)로부터 입력 데이터를 가져옴으로써 계산을 시작한다. 다음으로 연산 요소 어레이(120)는 출력 데이터를 생성하여 지역 메모리(130)에 다시 기록하여 계산 단계를 완료한다. 출력 데이터 전송 단계에서, 출력 데이터는 프로세서(150) 또는 시스템의 다른 마스터들(미도시)에 의해 처리되거나 혹은 이후의 사용을 위해 메인 메모리(160)에 복사될 수 있다.
입력/출력 데이터 로딩/전송 단계는 다음과 같은 오버헤드를 초래할 수 있다. 지역 메모리(130)는 연산 요소 어레이(120)의 모든 열들이 동시에 지역 메모리(130)로부터/지역 메모리(130)로 입력/출력 데이터를 로드/저장할 수 있도록 설계되어 더 높은 성능의 계산을 위한 큰 대역폭을 실현한다. 그러나, 시스템 버스(180) 측에서, 지역 메모리(130)로/로부터 데이터를 로드/저장하는 것은 대역폭이 제한되는 시스템 버스(180)에 훨씬 더 많은 트래픽을 야기하고, 이는 심각한 병목 현상을 일으킨다. 이는 프로세서(150) 및 연산 요소 어레이(120)가 그들 자신의 데이터 집합들에 대해서 작업하고 있는 동안에 외부 메인 메모리(160)로/로부터 데이터 전송이 일어나는 경우에 더욱 심각하다.
통상적으로 CGRA에서, 지역 메모리(130) 및 연산 요소 어레이(120)는 서로 밀접하게 연결되어 있기 때문에, 그들 간의 통신은 문제되지 않는다. 예를 들어, 연산 요소 어레이(120)의 각 열은 지역 메모리(130)에 연결되는 자신의 데이터 버스 라인들을 가지며, 그로 인해 연산 요소 어레이(120)의 모든 열들은 지역 메모리(130)에 병렬로 액세스할 수 있다.
반면에, 연산 요소 어레이(120)의 외부에 존재하는 프로세서(105) 또는 메인 메모리(160)의 측에서 지역 메모리(130)로부터/지역 메모리(130)로 데이터를 로드/저장하는 것은 시스템 버스(180)의 제한된 대역폭 및 레이턴시로 인하여 전체 시스템 성능에 심각한 병목 현상을 일으킨다. 시뮬레이션 결과에 따르면, 통신 오버헤드는 애플리케이션에 따라서 연산 요소 어레이(120)의 연산 시간보다 5배 정도 더 길 수 있다.
CGRA 구조에 있어서 중요한 점 중의 하나는 애플리케이션 매핑(application mapping) 또는 컴파일이다. 종래에는 CGRA에 대하여 컴파일하는 경우 2가지 문제에 집중하였다.
첫째는 루프 커널의 연산(수학적/논리적, 곱셈, 로드/저장)을 PE 어레이에 배치시키는 것, 둘째는 존재하는 상호 연결된 자원들을 이용하여 연산들 간의 데이터 흐름 또는 통신을 보장하는 것에 집중하였다.
종래의 CGRA 컴파일 기술들에서 전형적으로 간과된 문제는 어레이 변수들과 같은 데이터들을 지역 메모리의 어디에 배치(mapping, scheduling)할지이다. 우리는 연산 배치 및 어레이 배치를 각각 연산 매핑(computation mapping) 및 어레이 매핑(array mapping)이라 지칭한다. 만일, 지역 메모리가 UMA(uniform memory access) 구조를 가지는 경우(예를 들어, 로컬 메모리가 단일의 큰 뱅크로 구성되는 경우)에는, 어레이 매핑은 문제가 되지 않는다. 그러면, 각 연산 요소(PE)는 동일한 타이밍으로 모든 지역 메모리 주소에 접근할 수 있으므로, 어레이 변수를 배치하는 장소는 중요하지 않다.
그러나, 지역 메모리가 NUMA(nonuniform memory accesss) 구조를 가지는 경우 (예를 들면, 로컬 메모리가 복수 개의 뱅크들로 구성되고, 각각의 뱅크가 PE들의 하나의 행에만 연결되는 경우)에는, 복수 개의 뱅크들 중에서 어레이 변수들을 어디에 배치할지 여부는 연산 매핑에 영향을 줄 수 있고, 크게는 전체 애플리케이션 매핑의 품질에 영향을 미칠 수 있다. CGRA의 지역 메모리는 각 사이클 동안 많은 연산 요소들에 의하여 접근되기 때문에, 일반적으로 지역 메모리와 연산 요소들 간에는 12개 이상의 포트가 존재한다. 따라서 CGRA 맵핑을 위하여 NUMA 구조의 복잡도를 효율적으로 관리할 수 있는 컴파일러 기술이 요구된다.
연산 매핑 및 어레이 매핑은 밀접하게 연관된 문제이므로, 이들을 순차적으로 해결하는 것은 최적의 솔루션을 제공하지 않는다. 어레이 배치가 먼저 고정되고 연산들이 이후에 배치되면, 연산 매핑 문제는 어레이 배치가 없는 것보다 훨씬 큰 제약 (해결 불가능하거나 어레이 배치가 없는 것보다 훨씬 더 안 좋은 결과를 도출할 수 있음)을 포함할 것이다. 한편, 연산 매핑의 적어도 일부를 수행하지 않은 채로 어레이 배치를 먼저 고정하는 방법도 또한 그 결과가 명확하지 않다.
반면에, 연산 매핑이 먼저 수행되면, 어레이 매핑이 자동적으로 결정되는데, 이는 다른 문제들을 초래할 수 있다.
첫째, 어레이가 루프 내에서 복수 개의 레퍼런스들(즉, 상이한 인덱스를 가지는 복수 개의 로드 연산에 의하여)로 재사용된다면, 동일한 어레이가 복수 개의 뱅크들에 중복되어 배치될 수 있다. 이것은 지역 메모리의 효율적인 크기를 감소시킬 수 있고, 특히 지역 메모리가 매우 크지 않다면 성능을 현저하게 저하할 수 있다.
둘째, 뱅크 사용이 상당히 불균형해 질 수 있고, 이것이 로컬 메모리에서의 초과 버퍼링을 야기하게 되어 성능이 저하될 수 있다.
셋째, 반복 루프들에서, 종속 메모리 연산들은 동일 뱅크로부터 동일 어레이를 접근할 수 있어야 한다. 이는, 종속 메모리 연산들을 동일한 행들에 매핑하도록 제한함으로써 처리될 수 있지만, 다른 제한들(예를 들면, 포트 경합, 메모리 크기 제한)이 또한 필요할 수도 있다. 일반적으로, NUMA CGRA에서 메모리-바운드 루프들에 대한 매핑의 정확성 및 최적성을 보장하기 위해서는, 연산 매핑뿐만 아니라 어레이 매핑도 고려해야만 한다. 본 발명은 지역 메모리 구조를 인식하고 메모리-바운드 루프들에서 어레이 변수들 및 계산 연산들 모두를 고려한 최적에 가까운 매핑을 발견할 수 있는 컴파일 기술을 제안한다.
도 3은 EMS(edge-centric modulo scheduling) 알고리즘을 사용한 MiBench 및 SPEC 벤치마크의 중요한 루프 커널들의 tc 및 td간 비율을 도시한다. 여기서, tc는 루프의 타일(tile)에 대한 연산 시간으로서 데이터 연산 시간이라 정의하고, td는 데이터 전송 시간으로 정의하기로 한다. 타일은 버퍼 스위칭에 의하여 정의된다. 다음으로, 타일의 전체 실행 시간(runtime)은 max(tc, td)에 의하여 결정된다. 그래프는 이러한 모든 루프 커널들이 실질적으로 메모리-바운드(memory-bound)된 커널임을 나타낸다. 즉 tc/(tc+td)의 평균이 단지 22%로서 td > tc임을 나타낸다. 심지어 (지역 메모리 및 메인 메모리 간의) 메모리 대역폭을 사이클당 2 바이트에서 사이클당 4 바이트로 2배 증가시켜도, tc/(tc+td)의 평균은 단지 37%로 증가하여, 루프 커널들의 대부분은 여전히 메모리-바운드 상태로 남게 된다. 따라서, 데이터 매핑에서의 이득을 위하여 일정 정도 연산 매핑을 희생하더라도, 단지 매핑의 계산 부분만이 아니라 매핑의 데이터 부분을 최적화하는 것이 중요하다. 즉, tc 및 td의 균형이 전체 성능의 향상을 가져올 수 있다.
도 4는 본 발명에 따른 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 장치를 나타낸 블록도이다.
본 발명에 따른 애플리케이션 매핑 최적화 장치(200)는 모듈로-스케쥴러(modulo-scheduler)와 연동하여 CGRA를 이용하는 애플리케이션에 대한 애플리케이션 매핑을 최적화하는 장치이다.
도 4를 참조하면, 본 발명에 따른 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 장치(200)는, 모듈로-스케쥴러(modulo-scheduler, 210), 성능 분석부(220), 매핑 최적화부(230), 및 CGRA(100)를 포함한다.
모듈로-스케쥴러(210)는 애플리케이션 매핑을 수행하여 매핑 결과를 생성하는 매퍼이다. 여기서, 애플리케이션 매핑은, 애플리케이션에 포함된 연산들을 CGRA(100)의 각 연산 요소(PE)에 배치하는 연산 매핑 및 어레이 변수들을 CGRA(100)의 지역 메모리에 배치하는 어레이 매핑을 포함한다.
종래의 모듈로-스케쥴러는 CGRA(100)의 지역 메모리 구조와는 무관하게 애플리케이션에 대한 애플리케이션 매핑을 수행하였다. 종래의 모듈로-스케쥴러(210)는 애플리케이션 매핑을 재수행하지 않지만, 본 발명에 따른 모듈로-스케쥴러(210)는 후술할 성능 분석부(220)의 분석 결과에 따라 애플리케이션 매핑을 재수행하여 최적화된 매핑 결과를 컴파일러에 제공한다.
이에 따라 본 발명에 따른 모듈로-스케쥴러(210)는 애플리케이션 매핑을 수행하여 제1 매핑 결과를 생성하는 매핑부(211)와 지역 메모리 구조를 고려한 애플리케이션 매핑을 반복 재수행하여 효율적인 제2 매핑 결과를 생성하는 재매핑부(212)를 포함할 수 있다.
성능 분석부(220)는 모듈로-스케쥴러(210)에 의해 생성된 제1 매핑 결과에 대한 성능을 분석하여 제1 매핑 결과가 메모리-바운드된 에플리케이션인지 여부를 판단한다. 이를 위해 성능 분석부(220)는 제1 매핑 결과에 대하여 시뮬레이션 연산을 수행하여 제1 매핑 결과에 대한 데이터 연산 시간(tc) 및 데이터 전송 시간(td)을 계산하고, 전체 성능을 제한하는 것이 데이터 연산 시간에 의한 것인지 데이터 전송 시간에 의한 것인지를 판단한다.
데이터 연산 시간(tc)은 타일 사이즈에 II(initiation interval)이 곱해진 값과 동일하며, 데이터 전송 시간(td)은 반복을 위하여 필요한 데이터를 가져오는 시간 및 각 타일링 이후 필요한 데이터를 재기록하기 위한 시간을 모두 포함한다. DCR(data-transfer to computation time ratio)=td/tc로 정의하고, DCR>1이면 제1 매핑 결과에 대하여 최적화할 수 있음을 개략적으로 나타낸다.
따라서 만일 데이터 전송 시간이 데이터 연산 시간보다 큰 경우, 성능 분석부(220)는 제1 매핑 결과가 메모리-바운드된 것으로 판단한다. 제1 매핑 결과가 메모리-바운드된 것으로 판단된 경우, 성능 분석부(220)의 판단 결과는 매핑 최적화부(230) 및 모듈로-스케쥴러(210)에 제공되고, 모듈로-스케쥴러(210)의 재매핑부(212)가 매핑 최적화부(230)와 연동하여 지역 메모리 구조를 고려하여 애플리케이션 매핑을 재수행함으로써, CGRA에 대한 애플리케이션 매핑을 최적화한다.
한편, 데이터 전송 시간이 데이터 연산 시간보다 작은 경우, 제1 매핑 결과가 최종적인 최종 매핑 결과로서 컴파일러로 제공된다.
성능 분석부(220)의 판단에 따라 제1 매핑 결과가 메모리-바운드된 것으로 판단되면, 매핑 최적화부(230)는 애플리케이션 매핑을 최적화하기 위한 각종 연산들을 수행하고 그 연산 결과를 모듈로-스케쥴러(210)로 제공한다. 모듈로-스케쥴러(210)의 재매핑부(212)는 매핑 최적화부(230)가 제공한 자료들을 기초로 하여 지역 메모리 구조를 고려한 애플리케이션 매핑을 반복 재수행하여 최적화된 제2 매핑 결과를 생성함으로써 CGRA에 대한 애플리케이션 매핑을 최적화한다.
이를 위해 매핑 최적화부(230)는 데이터의 재사용 기회비용을 연산하는 재사용 기회비용 계산부(240)를 포함하며, 추가로 균형 유지부(250) 및/또는 전력 절감부(260)를 더 포함할 수 있다.
재사용 기회비용 계산부(240)는 연산들 중에서 메모리 연산에 대한 재사용 기회비용을 계산하고, 그 계산된 결과를 모듈로-스케쥴러(210)로 제공한다.
재사용 기회비용에 대해 상세하게 설명하도록 한다.
데이터의 일시적 재사용(temporal reuse), 즉 애플리케이션에 포함된 루프의 다양한 반복에서 동일 데이터 또는 동일 어레이 변수들을 사용하는 것은, 많은 루프 커널들에서 종종 발견된다. 데이터의 공간적 재사용(spatial reuse)뿐만 아니라 데이터의 일시적 재사용도 일반적인 범용 프로세서를 위한 데이터 캐쉬들에 의해 자동으로 활용된다. 그러나, CGRA에서는 데이터의 공간적 및 일시적 재사용은 모두 컴파일러에 의해 명시적으로 제어되어야 한다. 메모리 구조를 인지하지 못하는 종래의 CGRA용 컴파일 흐름에서는, 어레이들을 재사용하도록 특별히 처리하지 않는다.
결과적으로, 2개의 로드(load) 연산이 동일한 어레이 변수로부터 판독된다 하더라도, 종래 기술에 따른 전형적인 방식하에서는 2개의 로드 연산은 서로 상이한 행들로 매핑된다. 다중-뱅크에서 어레이들이 중복되는 것은 정확도 문제를 해결할 수 있기 때문에, 기능적인 정확도의 문제가 아니라 NUMA CGRA에서의 성능 문제이다. 대안적인 방법은 동일한 어레이에 접근하는 모든 로드 연산들을 동일한 행에 매핑함으로써 어레이 재사용을 실현하는 것으로서, 이를 '지역 메모리를 통한 재사용'이라고 정의하기로 한다.
지역 메모리를 통한 데이터 재사용은 지역 메모리의 압박을 낮춰주는 장점이 있으나, 연산 매핑을 제한하는 단점이 있다. 따라서, 지역 메모리를 통한 재사용을 구현할 것인지 여부 및 얼마나 많은 재사용을 구현할 것인지가 애플리케이션 매핑의 최적화를 위해 신중하게 결정되어야 한다.
결정을 돕기 위하여, 데이터의 재사용 기회비용(DROC: data reuse opportunity cost)를 도입한다. DROC는 연산 및 연산 요소(PE)에 대하여 정의되며, 각 연산이 연산 요소(PE)로 매핑될 때 박탈될 수 있는 재사용 기회의 이점을 측정한다. 2개의 로드 연산이 재사용 관계를 가진다면(즉, 이들이 동일한 어레이를 로드한다면), 2개의 로드 연산들을 동일한 행에 배치하는 것은 장점을 가지지만, 2개의 로드 연산들을 상이한 행의 연산 요소(PE)에 배치하는 것은 전술한 장점을 박탈하는 것이다.
데이터 재사용 분석은 모든 메모리 연산 쌍들 사이에서 잠재적인 데이터 재사용의 양을 발견한다. 데이터 재사용 분석은 먼저 루프의 데이터 흐름도(DFG, data flow graph)로부터 데이터 재사용 그래프(DRG, data reuse graph)를 생성한다.
DRG는 비방향(undirected) 그래프로서, 노드들은 메모리 연산들에 대응하고, 엣지 가중치들은 두 개의 메모리 연산들 간의 재사용의 양을 근사화한다. 0의 가중치를 가진 엣지들은 생략된다. 2개의 메모리 연산들이 상이한 어레이에 접근하면, 엣지 가중치는 0이다. 그렇지 않으면, 엣지 가중치는 TS-rd로 추정된다. 여기서, TS(tile size)는 타일 크기이고, rd는 반복에서의 재사용 거리(reuse distance)이다.
매핑에 대한 결과적 타일 크기는 루프가 매핑된 이후에만 결정될 수 있고 이는 실현된 재사용의 양에 의존한다 해도, 그 근사값은 추정될 수 있다. 왜냐하면, 우리가 가중치들로부터 얻고자 하는 것은, 더 많은 데이터를 공유하는 메모리 연산들이 동일한 행에 매핑될 더 많은 기회를 가져야 한다는 것뿐이기 때문이다.
TS=MS/Di로 근사화된다. 여기서, MS는 지역 메모리의 크기이고, Di는 최초의 제1 매핑 결과에서 하나의 반복을 위하여 지역 메모리 및 외부의 메인 메모리 간에 전송될 필요가 있는 데이터의 평균 양이다. MS/Di는 단일-뱅크 메모리 구조에서 최초의 제1 매핑 결과를 위한 타일 크기였을 것이다.
rd를 추정하는 것은, 특히 포인터들 및 에일리어즈들(aliases)의 존재에서, 일반적으로 분석하기 매우 어려울 수 있다. 다행히 많은 경우에, 재사용은 매우 간단한 분석을 통해서 발견될 수 있다. 동일한 어레이 변수에 대한 두 개의 참조(references)들의 액세스 함수(또는 인덱스 표현)들이 비슷한 형태로 동일한 계수를 가질 때, rd는 그 계수에 의하여 나누어진 상수들에서의 차이로 근사화될 수 있다.
일단 DRG가 구성되면, DROC를 계산하는 것은 용이하다. 이미 스케쥴링(scheduling, mapping과 동일한 의미임)된 연산 및 곧 스케쥴링될 연산과 같은 스케쥴링 상황 정보가 주어지면, 경계 엣지 집합 (frontier edge set)으로 지칭되는 엣지들의 집합을 찾는다. 곧 스케쥴 될 연산 u에서 경계 엣지 집합은 DRG 내의 u와 연결되어 있는 모든 v 사이를 연결하는 엣지를 의미한다.
다음으로 경계 엣지 집합 내의 각각의 엣지 e에 대하여, roe = we*DCR/su로써 재사용 기회비용을 계산한다. roe(reuse opportunity of edge)는 엣지 e에 대한 재사용 기회비용이고, we는 DRG내의 엣지 e의 '0'이 아닌 가중치이며, DCR은 루프의 data-transfer-to-computation time ratio이며, su는 경계 엣지 집합의 크기 또는 경계 엣지 집합 내의 엣지들의 개수이다. 경계 엣지 집합 내의 엣지들의 개수로 나누는 것은 DROC가 존재할 수 있는 다른 비용들에 비하여 불균형적으로 증가하는 것을 방지하기 위해서 필요하다.
결과적으로, 각각의 엣지 e에 대한 재사용 기회비용은 v가 매핑될 연산 요소뿐만이 아니 모든 메모리(로드/저장) 연산 요소들에 대하여 동일한 양의 DROC를 포함한다. 경계 엣지 집합이 '1'보다 크다면, DROC는 모든 재사용 기회들에 의하여 유도된 DROC가 더해진다. 경계 엣지 집합이 비어있다면, DROC는 '0'이다.
상기의 과정을 통해 재사용 기회비용 계산부(140)는 각 메모리 연산이 연산 요소에 배치될 때의 재사용 기회비용을 계산하고, 재사용 기회비용에 대한 정보를 모듈로 스케쥴러(210)로 제공한다. 모듈로 스케쥴러(210)의 재매핑부(212)는 재사용 기회비용 계산부(240)로부터 제공받은 재사용 기회비용 값들을 참조하여 애플리케이션 매핑을 반복 재수행하고, 그에 따른 제2 매핑 결과를 생성한다.
한편 모듈로 스케쥴러(210)의 재매핑부(212)는 후술할 균형 유지부(250) 및/또는 전력 절감부(26)가 제공하는 정보를 더 이용하여 제2 매핑 결과를 생성할 수 있다.
균형 유지부(250)는 메모리 연산이 배치될 연산 요소에 대하여 뱅크 균형 비용(bank balancing cost)을 계산하고, 그 계산된 뱅크 균형 비용에 대한 정보를 모듈로-스케쥴러(210)로 제공한다.
애플리케이션을 CGRA에 매핑할 때 고려할 또 다른 문제는, 모듈로-스케쥴러가 정교하지 못하면 메모리 뱅크들 내의 데이터 분산을 왜곡시킬 수 있다는 것이다. 예로서, 모든 데이터가 지역 메모리 내의 한 메모리 뱅크로만 매핑되어 나머지 뱅크들을 사용하지 않는 결과를 도출할 수 있다. 애플리케이션 매핑이 뱅크된 메모리 구조를 인지하지 못하거나, 데이터 재사용 최적화를 공격적으로 적용하는 경우에 이러한 일이 발생하여 모든 어레이 변수들이 동일 뱅크에 매핑될 수 있다. 모든 어레이 변수들이 동일 뱅크에 매핑되면, 실질적인 지역 메모리 크기가 감소되기 때문에 성능이 열화될 수 있고, 루프에 대한 타일링 팩터를 감소시키는 결과가 도출되어 하드웨어 버퍼링에 있어서 너무 잦은 버퍼 스위치가 야기될 수 있다.
데이터 배치의 바람직한 형태는 데이터가 지역 메모리 내의 각 메모리뱅크에 동일하게 배치되는 것이다. 이는 뱅크 균형 비용(bank balancing cost)로 불리는 추가적인 비용을 메모리 연산(로드/저장 연산)이 배치될 연산 요소들에 더함으로써 쉽게 해결될 수 있다. 연산 요소(PE) p에 대한 뱅크 균형 비용을 BBC(p)=b*m(p)로 정의한다. 여기서, b는 기본 균형 비용이라 지칭되는 설계 파라미터이며, m(p)는 연산 요소 p에서 이미 매핑된 메모리 연산들의 개수이다.
이처럼 균형 유지부(250)는 메모리 연산이 배치될 각 연산 요소에 대하여 뱅크 균형 비용을 계산하고, 그 계산된 뱅크 균형 비용에 대한 정보를 모듈로-스케쥴러(210)로 제공한다.
전력 절감부(260)는 시뮬레이션에 따라 반복 수행된 애플리케이션 매핑들에 대하여 각각의 총소모 에너지를 계산하고, 그 계산된 총소모 에너지에 대한 정보를 모듈로-스케쥴러(210)로 제공한다.
도 5 내지 도 9e는 각각 재사용 기회비용, 뱅크 균형 비용, 및 총소모 에너지를 이용하여 모듈로 스케쥴러가 각 연산을 매핑하는 것을 예시한 도면이다.
도 5a는 연산 요소 어레이(PE array) 및 연산 요소 어레이와 연결된 지역 메모리의 구조를 도시한 도면이다.
도 5a에서 연산 요소 어레이는 2*2 어레이 배열로 구성되며, 지역 메모리는 2개의 뱅크로 구성된다. 도 5a에서 연산 요소 어레이는 2개의 열(row)을 가지고, 각 열에 포함된 연산 요소 중에서 메모리 연산 요소는 지역 메모리의 한 뱅크에만 접근할 수 있다. 빗금처리된 연산 요소인 PE 1과 PE 3가 메모리 연산 요소이며, 메모리 연산 요소인 PE 1은 지역 메모리 내의 뱅크 1과 연결되며, PE 3는 지역 메모리 내의 뱅크 2와 연결된다.
도 5b는 애플리케이션에 포함된 연산 루프를 데이터 흐름 그래프로서 표현한 것을 예시한 도면이다.
모듈로 스케쥴러(210)는 애플리케이션 매핑을 수행하기 전에 애플리케이션에 포함된 연산 루프를 데이터 흐름 그래프(DFG, data flow graph)로 표현한다. 데이터 흐름 그래프의 각 노드들은 마이크로 연산(수학 및 논리적 연산, 곱셈, 및 로드/저장)을 나타내고, 각 노드들을 연결하는 엣지(edge)들은 데이터의 의존성을 나타낸다. 특히 노드들 중에서 빗금처리된 노드는 메모리 연산(로드/저장)을 나타낸다.
도 5c는 도 5b의 데이터 흐름 그래프로부터 추출된 데이터 재사용 그래프를 예시한 도면이다.
도 5b의 데이터 흐름 그래프로부터 도 5c의 데이터 재사용 그래프(data reuse graph, DRG)가 생성될 수 있으며, DRG에서 서로 관련되어 재사용이 가능한 메모리 연산 노드들이 엣지 가중치를 가진 엣지로 연결된다.
도 5b의 데이터 흐름 그래프에서 메모리 연산을 담당하는 노드는 0, 1, 2, 및 7 노드이고, 노드 0과 노드 2는 각각 [A] 어레이 변수에 액세스하며, 노드 1과 노드 7은 각각 [B] 어레이 변수에 액세스한다. 2개의 메모리 연산들이 상이한 어레이에 접근하면 엣지 가중치는 0이므로, 노드 0 과 노드 1 및 노드 2와 노드 7 간에는 엣지를 가지지 않는다.
전술한 것처럼 재사용 기회비용 계산부(240)는 각 메모리 연산 노드에 대하여 엣지 가중치를 계산하고, 계산된 엣지 가중치를 포함하는 DRG를 생성한다. 도 5b를 참조하면, 노드 0과 노드 2 및 노드 1과 노드 7은 각각 엣지 가중치 10을 가진 엣지로 연결된다.
그리고 나서 재사용 기회비용 계산부(240)는 생성된 DRG로부터 각 엣지에 대한 재사용 기회비용을 계산하고, 계산된 재사용 기회비용에 대한 정보를 모듈로 스케쥴러(210)로 제공한다.
도 6a 및 도 6b는 종래의 모듈로 스케쥴러에 의해 매핑 결과가 생성되는 과정을 예시한 도면이고, 도 6c 및 도 6d는 본 발명에 따른 모듈로 스케쥴러에 의해 매핑 결과가 생성되는 과정을 예시하는 도면이다.
도 6a 내지 도 6d에서 세로 방향은 사이클 시간을 의미하며, 연산 0부터 연산 6까지를 매핑한 후에 연산 7과 연산 8을 연결하는 엣지를 스케쥴링하는 것으로 가정한다. 연산 7은 로드 연산 B[i+1]이며, 연산 8은 수학적 연산이다.
도 6a 및 도 6b에서 종래의 모듈로 스케쥴러에 따른 스케쥴링은 다음의 절차에 따라 수행된다. 먼저, 도 6a에 도시된 것처럼, 메모리 연산이 스케쥴링될 각각의 열려진 PE 슬롯에 대한 라우팅 비용(routing cost)이 업데이트된다. 라우팅 비용은 단위(base) 라우팅 비용(단위 라우팅 비용은 10으로 가정)에 엣지를 매핑하는데 필요한 라우팅 연산 요소들의 개수를 곱함으로써 계산되며, 그 결과는 도 6에 도시되어 있다.
도 6a에서, PE3의 타임 슬롯 1에 연산 7이 스케쥴링되면, 연산 8을 매핑하기 위하여 적어도 두 개의 라우팅 연산이 필요하다. 따라서, PE3의 타입 슬롯 1에서의 라우팅 비용은 20이 된다. 이러한 라우팅 비용을 고려하여, 종래의 모듈로 스케쥴러는 연산 7을 최소의 라우팅 비용을 가지는 PE1의 타임 슬롯 3에 매핑한다.
종래의 모듈로 스케쥴러에 의하여 생성된 최종 매핑 결과는 도 6b에 도시된 것과 같다. 종래의 모듈로 스케쥴러에 따른 매핑 결과는 2개의 뱅크들에서 어레이 B가 중복되어 존재할 것을 요구한다. 즉, 도 6d의 메모리 뱅크에서 볼 수 있는 것처럼 어레이 변수 [B]는 뱅크 1과 뱅크 2에 모두 중복되어 존재한다.
본 발명에 따른 모듈로 스케쥴러(210)는 재사용 기회비용에 대한 개념을 도입함으로써 재사용된 어레이들이 메모리 뱅크에 중복되어 존재하지 않도록 돕는다.
전술한 것처럼 재사용 기회비용 계산부(240)는 생성된 DRG로부터 각 엣지에 대한 재사용 기회비용을 계산하고, 이를 모듈로 스케쥴러로 제공한다.
도 6a와 동일한 예에서, DCR 파라미터를 3으로 가정하면, 연산 1 및 연산 7 간의 재사용 관계에 따라 재사용 기회비용 계산부(240)에 의하여 유도된 재사용 기회비용은 30이다.
도 6c에 도시된 것처럼, 유도된 30의 재사용 기회비용은 PE 3를 제외한 모든 로드-저장 연산 요소들에 더해진다. 그에 따라, 본 발명에 따른 모듈로 스케쥴러(210)는 연산 7을 비용이 가장 적게 드는 PE 3의 타임 슬롯 2로 스케쥴링한다.
이러한 새로운 매핑은 라우팅 연산 요소로써 여분의 연산 요소를 사용하는 결과를 도출하기 때문에, 어레이 [B]의 활용이 증대되며 결과적으로 전체 실행 시간이 감소될 수 있다.
도 7a는 한 애플리케이션의 연산 루프에 대한 데이터 흐름 그래프를 예시한 도면이고, 도 7b 및 도 7c는 종래 방식에 따라 매핑 결과가 생성되는 과정을 예시한 도면이고, 도 7d 및 도 7e는 본 발명에 따라 매핑 결과가 생성되는 과정을 예시한 도면이다.
도 7a의 데이터 흐름 그래프를 도 5a의 구조와 동일한 CGRA에 매핑하는 것으로 가정한다.
도 7b에 도시된 것처럼, 연산 0부터 연산 6까지는 이미 매핑되었으며, 모듈로 스케쥴러는 연산 7에 대한 최적 매핑 위치를 결정해야 한다. 종래의 모듈로 스케쥴러는 도 7b에 도시된 것처럼 라우팅 비용을 계산한다.
도 7c에 도시된 것처럼, PE 1과 PE 4의 라우팅 비용이 동일하므로, 종래의 모듈로 스케쥴러는 연산 7을 PE 1의 타임 슬롯 4에 매핑할 수 있다. 이러한 매핑 결과는 비록 뱅크 2가 비어 있음에도 불구하고, 어레이 [B]를 뱅크 1에 매핑하는 결과를 초래한다.
전술한 것처럼, 본 발명에 따른 균형 유지부(250)는 메모리 연산이 배치될 연산 요소에 대하여 뱅크 균형 비용을 계산하고, 그 계산된 뱅크 균형 비용에 대한 정보를 모듈로-스케쥴러(210)로 제공한다.
도 7d에 도시된 것처럼, PE 1과 PE 3의 각 타임 슬롯 4에 대하여 계산된 뱅크 균형 비용이 도시되어 있다. 도 7e에서처럼, 본 발명에 따른 모듈로 스케쥴러(210)는 그 계산된 뱅크 균형 비용을 참조하고, 최종적으로 연산 7을 PE 3의 타임 슬롯 4에 매핑한다.
도 8a는 애플리케이션의 어느 한 루프 연산에 대한 데이터 흐름 그래프를 예시한 도면이고, 도 8b는 도 8a의 데이터 흐름 그래프를 CGRA의 PE 어레이에 매핑한 매핑 결과를 예시한 도면이다.
도 8a 및 도 8b를 참조하면, 연산 0부터 연산 8까지가 4개의 지역 메모리 뱅크와 4*4 PE 어레이를 가지는 CGRA에 매핑된다.
지역 메모리의 구조는 CGRA 상에서 최적의 매핑 결과를 결정하는데 있어서 큰 영향을 미친다. 종래 방식에 따른 애플리케이션 매핑은 단일 뱅크와 멀티 포트의 지역 메모리를 가진 CGRA 구조를 예상하고 수행되었다. 그러나 많은 연구에서 연구된 것처럼, 적은 포트 수와 멀티 뱅크를 가진 지역 메모리 구조가 전력 효율성이 더욱 높으며 설계하는데 있어서 더욱 실용적이다. PE 어레이의 각 열(row)이 접근할 수 있는 메모리 뱅크가 한정되기 때문에, 적은 포트 수와 멀티 뱅크를 가진 지역 메모리 구조에서는 애플리케이션 매핑이 어려울 수 있다.
전술한 것처럼 메모리 바운드된 루프, 즉 데이터 전송 시간이 데이터 연산 시간보다 큰 루프에 있어서는, 데이터 전송 시간을 줄임으로써 전체 실행이 최적화될 수 있으며, 데이터 전송 시간의 축소는 데이터 재사용 및 뱅크 사용의 균형을 유지함으로써 달성될 수 있다.
데이터 재사용 및 뱅크 사용의 균형을 유지하며 매핑하였음에도 불구하고, 루프 연산이 여전히 메모리 바운드된 경우에는 성능을 증가시키는 대신에 성능의 열화를 방지하는 동시에 소모되는 전력을 감소시킬 수 있는 여지가 있다. 이는 데이터 연산 시간(tc)이 데이터 전송 시간(td)과 동일하게 될 때까지, 데이터 연산 시간(tc)을 증가시킴으로써 달성될 수 있다.
도 9a 내지 도 9d는 도 8a의 데이터 흐름 그래프(DFG)를 상이한 개수의 열과 메모리 뱅크 구성에 대하여 스케쥴링한 매핑 결과들을 나타낸 도면이다.
도 9a는 4개의 PE 어레이 열(row)과 4개의 메모리 뱅크를 이용하여 스케쥴링된 매핑 결과를 예시하고, 도 9b는 4개의 PE 어레이 열(row)과 2개의 메모리 뱅크를 이용하여 스케쥴링된 매핑 결과를 예시한다. 그리고, 도 9c는 2개의 PE 어레이 열(row)과 2개의 메모리 뱅크를 이용하여 스케쥴링된 매핑 결과를 예시하고, 도 9d는 1개의 PE 어레이 열(row)과 1개의 메모리 뱅크를 이용하여 스케쥴링된 매핑 결과를 예시한다.
4열*4뱅크 및 4열*2뱅크 구성에서 II(initiation interval)은 2 이지만, 2열*2뱅크 및 1열*1뱅크 구성에서 II는 각각 3과 5이다.
도 9e는 도 9a 내지 도 9d의 구성에 따른 결과값을 나타낸 표이다.
도 9e를 참조하면, 뱅크의 개수가 줄어들면, 타일 크기(tile size)는 감소하고, 데이터 연산 시간(tc)은 II에 비례하여 증가하며, 데이터 전송 시간(td)은 증가한다. 이용되는 어레이 열과 메모리 뱅크의 개수가 줄어들수록 소모전력(E)은 감소한다. 그러나 도 9e를 참조하면, 런타임과 소모전력을 곱한 값이 2열*2뱅크의 구성에서 가장 적기 때문에 2열*2뱅크의 구성이 가장 효율적임을 알 수 있다.
본 발명에 따른 전력 절감부(260)는 애플리케이션 매핑의 시뮬레이션 결과들에 따라 애플리케이션 매핑에 이용된 어레이 열과 메모리 뱅크의 개수에 따른 총소모 에너지(런타임*소모전력과 비례)를 각각 계산하고, 각각의 시뮬레이션 결과에 따라 계산된 총소모 에너지를 모듈로 스케쥴러(210)로 제공할 수 있다. 모듈로 스케쥴러(210)는 제공받은 총소모 에너지에 대한 정보들을 참조하여 최적화된 제2 매핑 결과를 생성한다.
전술한 것처럼, 데이터의 재사용 기회비용, 뱅크 균형 비용, 및 총소모 에너지에 대한 정보는 모듈로 스케쥴러(210)로 제공되며, 본 발명에 따른 모듈로 스케쥴러는 상기 정보를 참조하여 지역 메모리 구조를 고려하여 최적화된 효율적인 제2 매핑 결과를 생성한다. 생성된 제2 매핑 결과는 컴파일러로 제공되며, 컴파일러는 제2 매핑 결과를 이용하여 애플리케이션에 대한 최종 코드를 생성하게 된다.
이하에서는 본 발명에 따른 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법에 대해서 설명한다. 본 발명에 따른 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법의 기능은 전술한 애플리케이션 매핑 최적화 장치상의 절차와 본질적으로 같은 것이므로, 중복되는 설명은 생략하도록 한다.
도 10은 본 발명에 따른 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법을 설명한 흐름도이다.
우선 모듈로 스케쥴러(210)는 애플리케이션 매핑을 수행하여 제1 매핑 결과를 생성한다(S10). 전술한 것처럼, 애플리케이션 매핑은 연산 매핑 및 어레이 매핑을 포함하며, 연산 매핑은 애플리케이션에 포함된 연산들을 상기 각 연산 요소에 배치(매핑, 스케쥴링)하는 것이고, 어레이 매핑은 애플리케이션 내의 어레이 변수들을 지역 메모리에 배치하는 것이다.
성능 분석부(220)는 생성된 제1 매핑 결과에 대하여 데이터 전송 시간(td)과 데이터 연산 시간(tc)을 계산하고, 데이터 전송 시간(td)과 데이터 연산 시간을 비교하여 전체 성능을 제한하는 것이 데이터 연산 시간(tc)에 의한 것인지 데이터 전송 시간(td)에 의한 것인지를 판단한다(S20).
데이터 전송 시간이 데이터 연산 시간보다 큰 경우, 제1 매핑 결과는 메모리 바운드된 애플리케이션임을 의미하고 매핑을 최적화할 수 있는 기회임을 암시한다.
모듈로 스케쥴러(210)는 매핑 최적화부(230)가 제공하는 정보를 참조하여 지역 메모리 구조를 고려한 애플리케이션 매핑을 반복 수행함으로써 애플리케이션 매핑을 최적화한다(S30).
모듈로 스케쥴러(210)는 성능 분석 단계(S20)에서 분석한 결과에 따라 S10 단계 또는 S20 단계에서 생성한 매핑 결과를 최종적으로 컴파일러에 전달한다(S40).
도 11은 도 10의 애플리케이션 매핑 최적화 방법을 더욱 상세히 설명한 흐름도이다.
우선 모듈로 스케쥴러(210)는 애플리케이션 매핑을 수행하여 제1 매핑 결과를 생성한다(S10).
성능 분석부(220)는 생성된 제1 매핑 결과에 대하여 데이터 전송 시간(td)과 데이터 연산 시간(tc)을 계산하고(S21), 데이터 전송 시간(td)과 데이터 연산 시간을 비교하여 전체 성능을 제한하는 것이 데이터 연산 시간(tc)에 의한 것인지 데이터 전송 시간(td)에 의한 것인지를 판단한다(S22).
데이터 전송 시간이 데이터 연산 시간보다 큰 경우, 매핑 최적화부(230)는 데이터 재사용 관계를 나타내는 엣지 가중치로 표현된 데이터 재사용 그래프(DRG, data reuse graph)를 생성한다(S31).
모듈로 스케쥴러(210)의 재매핑부(212)는 매핑 최적화부(230)가 제공하는 정보를 참조하여 지역 메모리 구조를 고려한 애플리케이션 매핑을 반복 수행함으로써 CGRA에 대한 애플리케이션 매핑을 최적화하고 그에 따라 최적화된 제2 매핑 결과를 생성한다(S36).
도 12는 지역 메모리 구조를 고려한 애플리케이션 매핑의 최적화 단계를 상세히 설명한 도면이다.
도 12를 참조하면 S36 단계는 다음의 단계들을 더 포함할 수 있다.
우선 재사용 기회비용 계산부(240)는 생성된 DRG를 이용하여 메모리 연산에 대한 재사용 기회비용(reuse opportunity cost)을 연산한다(S32).
한편 S32 단계는 도시되진 않았지만 다음의 단계로 세분화될 수 있다. 우선 재사용 기회비용 계산부(240)는 애플리케이션에 포함된 연산들에 대하여 각 연산을 나타내는 연산 노드 및 상기 연산 노드 간의 의존성을 나타내는 엣지로 표현된 연산 데이터 흐름 그래프를 생성한다. 그리고 나서 재사용 기회비용 계산부(240)는 데이터 흐름 그래프로부터 메모리 연산 노드를 추출하고, 추출된 메모리 연산 노드 및 메모리 연산 노드 간의 데이터 재사용 관계를 나타내는 엣지 가중치로 표현된 데이터 재사용 그래프를 생성한다. 그 후 재사용 기회비용 계산부(240)는 데이터 재사용 그래프를 이용하여 매핑될 메모리 연산의 재사용 기회비용을 계산한다.
그리고 균형 유지부(250)는 메모리 연산이 배치될 연산 요소에 대한 뱅크 균형 비용(bank balancing cost)을 계산한다(S33).
그리고 전력 절감부(260)는 애플리케이션 매핑의 시뮬레이션 결과들에 따라 애플리케이션 매핑에 이용된 어레이 열과 메모리 뱅크의 개수에 따른 총소모 에너지를 각각 계산한다(S34).
재사용 기회비용, 뱅크 균형 비용, 및 총소모 에너지에 대한 정보는 모듈로 스케쥴러(210)로 제공되고, 모듈로 스케쥴러(210)는 상기 정보들을 이용하여 애플리케이션 매핑을 반복 수행함으로써, 지역 메모리 구조를 고려하여 최적화된 애플리케이션 매핑의 결과물인 제2 매핑 결과를 생성한다(S35).
다시 도 11로 되돌아가 설명하도록 한다.
성능 분석 단계(S20)에서 분석한 결과에 따라 모듈로 스케쥴러(210)는 S10 단계 또는 S20 단계에서 생성한 매핑 결과를 최종 매핑 결과로서 컴파일러에 전달한다(S40). 데이터 전송 시간이 데이터 연산 시간보다 작은 경우에는 제1 매핑 결과가 최종 매핑 결과가 되며, 데이터 전송 시간이 데이터 연산 시간보다 큰 경우에는 제2 매핑 결과가 최종 매핑 결과가 된다.
본 발명의 상기 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서는 도면에 도시된 구체적인 실시예를 참고하여 본 발명을 설명하였으나 이는 예시적인 것에 불과하므로, 본 발명이 속하는 기술 분야에서 통상의 기술을 가진 자라면 이로부터 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명의 보호 범위는 후술하는 특허청구범위에 의하여 해석되어야 하고, 그와 동등 및 균등한 범위 내에 있는 모든 기술적 사상은 본 발명의 보호 범위에 포함되는 것으로 해석되어야 할 것이다.
CGRA(100) 연산 요소 어레이(120) 연산 요소(110)
지역 메모리(130) 구성 메모리(140) 프로세서(150)
메인 메모리(160) 모듈로 스케쥴러(210) 성능 분석부(220)
매핑 최적화부(230) 재사용 기회비용 계산부(240) 균형 유지부(250)
전력 절감부(260)

Claims (6)

  1. 연산 요소들과 지역 메모리를 포함하는 코어스 그레인드 재구성 어레이에서의 애플리케이션에 대한 매핑을 최적화하는 방법으로서,
    (a) 애플리케이션에 포함된 연산들을 각 연산 요소에 매핑하는 연산 매핑 및 어레이 변수들을 지역 메모리에 매핑하는 어레이 매핑을 포함하는 애플리케이션 매핑을 수행하여 제1 매핑 결과를 생성하는 단계;
    (b) 상기 제1 매핑 결과에 대하여 데이터 전송 시간과 데이터 연산 시간을 계산하고, 상기 데이터 전송 시간과 상기 데이터 연산 시간을 비교하는 단계;
    (c) 상기 데이터 전송 시간이 상기 데이터 연산 시간보다 큰 경우, 상기 애플리케이션에 포함된 연산들 중 메모리 연산 간의 데이터 의존성 및 재사용의 양을 근사화한 엣지 가중치로 표현한 데이터 재사용 그래프를 생성하고, 상기 각 메모리 연산이 각 연산 요소에 매핑되는 경우에 박탈되는 재사용 기회의 이점인 재사용 기회비용을 상기 데이터 재사용 그래프로부터 계산하는 단계; 및
    (d) 상기 각 메모리 연산이 각 연산 요소에 매핑되는 경우의 라우팅 비용과 상기 재사용 기회비용을 합한 비용이 적어지도록 상기 애플리케이션 매핑을 재수행하여 제2 매핑 결과를 생성하는 단계를 포함하는, 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법.
  2. 제1항에 있어서,
    (e) 상기 데이터 전송 시간이 상기 데이터 연산 시간보다 작은 경우 상기 제1 매핑 결과를 최종 매핑 결과로서 결정하고, 상기 데이터 전송 시간이 상기 데이터 연산 시간보다 큰 경우 상기 제2 매핑 결과를 최종 매핑 결과로서 결정하는 단계를 더 포함하는, 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법.
  3. 제1항에 있어서, 상기 (c) 단계는
    (c1) 상기 애플리케이션에 포함된 연산들에 대하여 각 연산을 나타내는 연산 노드 및 상기 연산 노드 간의 의존성을 나타낸 엣지로 표현한 데이터 흐름 그래프를 생성하는 단계;
    (c2) 상기 데이터 흐름 그래프로부터 메모리 연산 노드를 추출하고, 상기 추출된 메모리 연산 노드, 상기 메모리 연산 노드 간의 의존성을 나타낸 엣지, 및 상기 메모리 연산 노드 간의 데이터 재사용의 양을 근사화한 엣지 가중치로 표현한 상기 데이터 재사용 그래프를 생성하는 단계;
    (c3) 상기 데이터 재사용 그래프로부터, 상기 각 메모리 연산이 각 연산 요소에 매핑되는 경우에 박탈될 수 있는 재사용 기회의 이점인 재사용 기회비용을 계산하는 단계를 더 포함하는, 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법.
  4. 제1항에 있어서, 상기 (c) 단계는
    상기 각 메모리 연산이 매핑될 각 연산 요소에 대하여 뱅크 균형 비용을 계산하는 단계를 더 포함하며,
    상기 제2 매핑 결과는 상기 뱅크 균형 비용이 감소하도록 생성되는 것을 특징으로 하는, 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법.
  5. 제1항에 있어서, 상기 (c) 단계는
    매핑될 지역 메모리의 뱅크 개수 및 연산 요소의 어레이 개수에 따른 총소모 에너지를 계산하는 단계를 더 포함하며,
    상기 제2 매핑 결과는 상기 총소모 에너지가 감소하도록 생성되는 것을 특징으로 하는, 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법.
  6. 제1항 내지 제5항 중의 어느 한 항에 따른 방법을 수행하기 위한 프로그램 코드가 기록된 컴퓨터로 판독 가능한 기록매체.
KR1020100040861A 2010-04-30 2010-04-30 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치 KR101101992B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100040861A KR101101992B1 (ko) 2010-04-30 2010-04-30 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100040861A KR101101992B1 (ko) 2010-04-30 2010-04-30 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20110121313A KR20110121313A (ko) 2011-11-07
KR101101992B1 true KR101101992B1 (ko) 2012-01-13

Family

ID=45392222

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100040861A KR101101992B1 (ko) 2010-04-30 2010-04-30 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR101101992B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9535833B2 (en) 2013-11-01 2017-01-03 Samsung Electronics Co., Ltd. Reconfigurable processor and method for optimizing configuration memory
KR101752062B1 (ko) * 2015-10-16 2017-07-03 성균관대학교산학협력단 범용 어플리케이션을 그래픽 프로세서에서 구동하기 위한 범용 어플리케이션 분석 장치 및 분석 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101293701B1 (ko) * 2012-02-23 2013-08-06 국립대학법인 울산과학기술대학교 산학협력단 코어스 그레인드 재구성 어레이에서의 중첩 루프문 수행 장치 및 그 방법
KR101293700B1 (ko) * 2012-02-23 2013-08-06 국립대학법인 울산과학기술대학교 산학협력단 코어스 그레인드 재구성 구조를 위한 코드 생성 장치 및 그 코드 생성 방법
CN111930680B (zh) * 2020-09-17 2021-02-23 北京清微智能科技有限公司 一种可重构阵列映射方法和装置
CN112631610B (zh) * 2020-11-30 2022-04-26 上海交通大学 一种针对粗粒度可重构结构的数据重用消除访存冲突方法
CN113094030A (zh) * 2021-02-09 2021-07-09 北京清微智能科技有限公司 一种可重构芯片的易编译方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100089350A (ko) * 2009-02-03 2010-08-12 삼성전자주식회사 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100089350A (ko) * 2009-02-03 2010-08-12 삼성전자주식회사 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
G. Dimitroulakos et al., "Exploiting the Distributed Foreground Memory in Coarse Grain Reconfigurable Arrays for Reducing the Memory Bottleneck in DSP Applications", Proceedings of the 5th Internation
G. Dimitroulakos et al., "Exploring the Design Space of an Optimized Compiler Approach for Mesh-like Coarse-Grained Reconfigurable Architectures", Proceedings of the 20th international conference on P
H, Park et al. "Edge-Centric Modulo Scheduling for Coarse-Grained Reconfigurable Architectures", PACT'08, October 25-29 2008.

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9535833B2 (en) 2013-11-01 2017-01-03 Samsung Electronics Co., Ltd. Reconfigurable processor and method for optimizing configuration memory
US9697119B2 (en) 2013-11-01 2017-07-04 Samsung Electronics Co., Ltd. Optimizing configuration memory by sequentially mapping the generated configuration data into fields having different sizes by determining regular encoding is not possible
US9727460B2 (en) 2013-11-01 2017-08-08 Samsung Electronics Co., Ltd. Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop
US9734058B2 (en) 2013-11-01 2017-08-15 Samsung Electronics Co., Ltd. Optimizing configuration memory by sequentially mapping the generated configuration data by determining regular encoding is possible and functional units are the same in adjacent cycles
KR101752062B1 (ko) * 2015-10-16 2017-07-03 성균관대학교산학협력단 범용 어플리케이션을 그래픽 프로세서에서 구동하기 위한 범용 어플리케이션 분석 장치 및 분석 방법

Also Published As

Publication number Publication date
KR20110121313A (ko) 2011-11-07

Similar Documents

Publication Publication Date Title
Mittal et al. A survey of techniques for optimizing deep learning on GPUs
KR101101992B1 (ko) 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치
Li et al. GPU-accelerated preconditioned iterative linear solvers
Kim et al. High throughput data mapping for coarse-grained reconfigurable architectures
US20210357732A1 (en) Neural network accelerator hardware-specific division of inference into groups of layers
Szustak et al. Adaptation of MPDATA heterogeneous stencil computation to Intel Xeon Phi coprocessor
CN113139648A (zh) 执行神经网络模型的pim架构的数据布局优化
Amiri et al. FPGA-based soft-core processors for image processing applications
D’Ambra et al. A parallel generalized relaxation method for high-performance image segmentation on GPUs
Lin et al. Gcn inference acceleration using high-level synthesis
Kim et al. Memory-aware application mapping on coarse-grained reconfigurable arrays
Rojek et al. Systematic adaptation of stencil‐based 3D MPDATA to GPU architectures
Brus et al. Performance and scalability improvements for discontinuous Galerkin solutions to conservation laws on unstructured grids
Bernabé et al. Auto-tuning techniques for linear algebra routines on hybrid platforms
KR101293700B1 (ko) 코어스 그레인드 재구성 구조를 위한 코드 생성 장치 및 그 코드 생성 방법
US20230289398A1 (en) Efficient Matrix Multiply and Add with a Group of Warps
Ashworth et al. First steps in porting the lfric weather and climate model to the fpgas of the euroexa architecture
Balogh et al. Comparison of parallelisation approaches, languages, and compilers for unstructured mesh algorithms on GPUs
US20220413818A1 (en) Method and apparatus for functional unit balancing at program compile time
KR20150051083A (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
Huchant et al. Adaptive partitioning for iterated sequences of irregular OpenCL kernels
Aissa GPU-accelerated CFD simulations for turbomachinery design optimization
Tithi et al. Mapping stencils on coarse-grained reconfigurable spatial architecture
Xu et al. Generalized GPU acceleration for applications employing finite-volume methods
Al-Mouhamed Exploration of automatic optimization for CUDA programming

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: 20141216

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151006

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161101

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171124

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181203

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20191203

Year of fee payment: 9