KR20120052750A - 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법 - Google Patents

재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20120052750A
KR20120052750A KR1020100114044A KR20100114044A KR20120052750A KR 20120052750 A KR20120052750 A KR 20120052750A KR 1020100114044 A KR1020100114044 A KR 1020100114044A KR 20100114044 A KR20100114044 A KR 20100114044A KR 20120052750 A KR20120052750 A KR 20120052750A
Authority
KR
South Korea
Prior art keywords
loop
mode
cga
vliw
code
Prior art date
Application number
KR1020100114044A
Other languages
English (en)
Other versions
KR101700406B1 (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 KR1020100114044A priority Critical patent/KR101700406B1/ko
Priority to US13/217,952 priority patent/US8850170B2/en
Publication of KR20120052750A publication Critical patent/KR20120052750A/ko
Application granted granted Critical
Publication of KR101700406B1 publication Critical patent/KR101700406B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • 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/22Microcontrol or microprogram arrangements
    • 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, look ahead
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법이 제공된다. 본 발명의 일 양상에 따르면, 어떤 루프의 실행 전에 또는 실행 도중에 루프에 관한 성능 정보가 얻어진다. 성능 정보는 루프를 VLIW 모드에서 실행했을 때와 CGA 모드에서 실행했을 때 어떤 것이 유리한지를 나타낸다. 성능 정보에서 변수는 루프의 루프 반복 횟수이다. 그 루프의 루프 반복 횟수가 정해지면 성능 정보에 기초하여 유리한 모드를 선택한다. 만약, 루프의 루프 반복 회수가 정해지지 않는 경우 루프의 실행 시간에 대한 예측값을 이용하여 유리한 모드를 선택한다. 예측값은 루프의 실행 시간을 측정하고 측정된 값과 이전의 예측값에 가중치를 적용하여 누적적으로 합한 값을 이용할 수 있다.

Description

재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법{Apparatus and method for dynamically determining the execution mode of a reconfigurable array}
재구성 가능 어레이(reconfigurable array)의 루프 실행 기술과 관련된다.
통상적으로, 재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다.
재구성 가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다. 특히, 동일한 작업이 반복적으로 수행되는 디지털 신호 처리 분야에서는 이러한 재구성 가능 아키텍처가 많은 주목을 받고 있다.
재구성 가능 아키텍처의 종류는 여러 가지가 있는데 그 중 코어스 그레인 어레이(Coarse-Grained Array)가 대표적이다. 코어스 그레인 어레이는 여러 개의 프로세싱 유닛으로 이루어진다. 그리고 프로세싱 유닛들 간의 연결 상태가 조절됨에 따라 어떤 작업에 최적화되는 것이 가능하다.
한편 최근에는 코어스 그레인 어레이의 특정 프로세싱 유닛을 VLIW(very long instruction word) 머신으로 활용하는 재구성 가능 아키텍처가 등장하게 되었다. 이러한 재구성 가능 아키텍처는 두 개의 실행 모드를 갖는다. 통상적으로, CGA 모드 및 VLIW 모드를 갖는 재구성 가능 아키텍쳐는 CGA 모드에서는 동일한 연산이 반복되는 루프를 처리하고 VLIW 모드에서는 루프 연산 외에 일반적인 연산을 처리한다.
루프는 일반적으로 CGA 모드에서 실행되지만 어떤 루프는 VLIW 모드에서 실행되는 것이 더 유리할 수도 있다. 이에 루프의 특성에 따라 동적으로 루프의 실행 모드를 결정할 수 있는 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법이 제공된다.
본 발명의 일 양상에 따른 실행 모드 결정 장치는 실행될 루프에 관한 VLIW(very long instruction word) 모드 및 CGA(coarse grained array) 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 성능 정보를 획득하는 성능 정보 획득부, 루프의 실행 시간에 관한 예측값을 획득하는 실행 시간 예측부, VLIW 모드를 위한 루프의 VLIW 코드 및 CGA 모드를 위한 루프의 CGA 코드 중 적어도 하나를 생성하는 코드 생성부, 및 성능 정보 및 예측값 중 적어도 하나를 이용하여 VLIW 코드 및 CGA 코드 중 어느 하나를 선택하는 모드 결정부를 포함할 수 있다.
본 발명의 일 양상에 따른 실행 모드 결정 방법은 실행될 루프의 루프 반복 횟수를 제 1 축으로 갖고, 실행될 루프의 실행 시간을 제 2 축으로 갖는 좌표 평면 상에서, 루프의 VLIW 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 VLIW 성능 그래프와 루프의 CGA 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 CGA 성능 그래프로 표현되는 성능 정보를 획득하는 단계, 좌표 평면 상에서 VLIW 성능 그래프와 CGA 성능 그래프 간에 교점으로 정의되는 임계교차점(threshold intersection)이 존재하는 경우, VLIW 모드를 위한 루프의 VLIW 코드와 CGA 모드를 위한 루프의 CGA 코드를 둘 다 생성하는 단계, 루프의 루프 반복 횟수가 검출될 수 있는 경우, 루프의 루프 반복 횟수를 검출하고, 검출된 루프 반복 횟수와 임계교차점을 비교하여 성능 상 유리한 코드를 선택하는 단계, 및 루프의 루프 반복 횟수가 검출될 수 없는 경우, 루프의 실행 시간에 관한 예측값을 획득하고, 획득된 예측값과 임계교차점을 비교하여 성능 상 유리한 코드를 선택하는 단계를 포함할 수 있다.
개시된 내용에 의하면, 성능 정보 및 실행 시간의 예측값에 기초하여 루프의 실행 모드가 동적으로 결정되기 때문에 루프의 특성에 적합한 최적의 실행 모드에서 루프를 실행시킬 수가 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 도시한다.
도 2는 본 발명의 일 실시예에 따른 재구성 가능 어레이(reconfigurable array)를 도시한다.
도 3은 본 발명의 일 실시예에 따른 재구성 가능 어레이의 실행 모드 결정 장치를 도시한다.
도 4는 본 발명의 일 실시예에 따른 성능 정보를 도시한다
도 5는 본 발명의 일 실시예에 따른 실행 시간 예측부를 도시한다.
도 6a 내지 도 6c는 본 발명의 일 실시예에 따른 실행 시간의 예측값의 갱신 방법을 도시한다.
도 7은 본 발명의 일 실시예에 따른 재구성 가능 어레이의 실행 모드 결정 방법을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 도시한다.
도 1을 참조하면, 본 실시예에 따른 컴퓨팅 시스템(100)은 코어부(101)와 제어부(102)를 포함한다.
코어부(101)는 다양한 작업을 실행한다. 코어부(101)에서 실행되는 작업은 인스트럭션(instruction), 오퍼레이션(operation), 태스크(task) 등을 포함할 수 있다.
코어부(101)는 서로 배타적인 두 가지의 실행 모드 중 어느 하나의 실행 모드에서 작업을 실행한다. 코어부(101)가 갖는 두 가지의 모드는 VLIW(very long instruction word) 모드와 CGA(coarse grained array) 모드가 될 수 있다. VLIW 모드는 일반적인 연산 또는 매우 적은 반복 횟수를 갖는 루프 연산에 적합할 수 있다. CGA 모드는 많은 반복 횟수를 갖는 루프 연산에 적합할 수 있다.
제어부(102)는 코어부(101)의 모드 전환을 제어한다. 루프 연산의 경우, 그 루프의 특성에 따라 VLIW 모드가 적합할 수도 있고 CGA 모드가 적합할 수도 있다. 제어부(102)는 루프에 적합한 실행 모드를 동적으로 선택하고 선택된 실행 모드에 따라 루프가 실행되도록 한다.
도 2는 본 발명의 일 실시예에 따른 재구성 가능 어레이(reconfigurable array)를 도시한다. 이것은 도 1의 코어부(101)에 관한 일 예가 될 수 있다.
도 2를 참조하면, 본 실시예에 따른 재구성 가능 어레이(200)는 다수의 프로세싱 엘리먼트(201)를 포함한다.
프로세싱 엘리먼트 PE#0 내지 PE#15는 어떤 작업을 병렬적으로 처리하는 것이 가능하다. 예를 들어, 각각의 프로세싱 엘리먼트 PE#0 내지 PE#15는 전체 작업에서 서로 의존성이 없는 부분을 독립적으로 처리할 수 있다.
재구성 가능 어레이(200)는 VLIW 모드에서 VLIW 머신(210)으로 동작하고 CGA 모드에서 CGA 머신(220)으로 동작할 수 있다.
일 예로서, VLIW 모드에서, 프로세싱 엘리먼트 PE#0 내지 PE#3이 VLIW 프로세서로 동작할 수 있다. 프로세싱 엘리먼트 PE#0 내지 PE#3은 VLIW 인스트럭션 메모리(202)로부터 패치된 일반적인 인스트럭션 또는 비교적 루프 반복 횟수가 적은 루프 인스트럭션을 실행할 수 있다.
다른 예로써, CGA 모드에서, 프로세싱 엘리먼트 PE#0 내지 PE#15가 CGA 프로세서로 동작할 수 있다. CGA 프로세서로 동작하는 프로세싱 엘리먼트 PE#0 내지 PE#15는 서로 연결될 수 있다. 예를 들어, 프로세싱 엘리먼트 PE#6의 출력이 프로세싱 엘리먼트 PE#11의 입력에 연결될 수 있다. 프로세싱 엘리먼트 PE#0 내지 PE#15 간의 연결 상태는 수 많은 조합이 가능하다. 각각의 연결 상태를 구성 정보라 한다. 구성 정보는 구성 메모리(203)에 저장될 수 있다. 따라서, CGA 모드에서, 재구성 가능 어레이(200)의 구조, 즉 프로세싱 엘리먼트 PE#0 내지 PE#15들 간의 연결 상태는 실행하고자 하는 특정한 작업에 최적화되도록 구성 메모리(204)에 저장된 구성 정보에 따라 변경되는 것이 가능하다.
도 3은 본 발명의 일 실시예에 따른 재구성 가능 어레이의 실행 모드 결정 장치를 도시한다. 이것은 도 1의 제어부(102)에 관한 일 예가 될 수 있다.
도 3을 참조하면, 실행 모드 겨정 장치(300)는 성능 정보 획득부(301), 실행 시간 예측부(302), 코드 생성부(303), 및 모드 결정부(304)를 포함한다.
성능 정보 획득부(301)는 실행될 루프에 관한 VLIW 모드 및 CGA 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 성능 정보를 획득한다. 성능 정보는 루프의 루프 반복 횟수를 제 1 축으로 갖고, 루프의 실행 시간을 제 2 축으로 갖는 좌표 평면 상에서, 루프의 VLIW 모드에서의 실행 시간을 나타내는 VLIW 성능 그래프와 루프의 CGA 모드에서의 실행 시간을 나타내는 CGA 성능 그래프로 표현될 수 있다.
루프가 갖고 있는 루프 반복 횟수가 많으면 그 루프를 실행하는데 많은 시간이 소요된다. 따라서 VLIW 성능 그래프 및 CGA 성능 그래프는 루프 반복 횟수를 X축으로 갖고 루프 실행 시간을 Y축으로 갖는 평면 상에서 양의 기울기를 갖는 직선으로 나타날 수 있다. 또한, 그 루프를 실행할 때 VLIW 모드에서 실행하냐 CGA 모드에서 실행하냐에 따라 루프를 실행하는데 소요되는 시간이 달라질 수 있다. 따라서, VLIW 성능 그래프 및 CGA 성능 그래프는 각각 다른 기울기를 가질 수 있다.
VLIW 성능 그래프와 CGA 성능 그래프가 다른 기울기를 갖는 경우, 기울기 차이로 인해 교점이 생길 수도 있다. 본 실시예에 따라 이 교점은 임계교차점(threshold intersection)으로 표현될 수 있다. 예를 들어, 성능 그래프가 표현된 평면에서 임계교차점을 기준으로 제 1 영역에서는 VLIW 모드가 유리하고 제 2 영역에서는 CGA 모드가 유리할 수 있다.
실행 시간 예측부(302)는 루프의 실행 시간에 관한 예측값을 획득한다. 예를 들어, 실행 시간 예측부(302)는 루프의 제 n 번째 실행에 관한 실행 시간의 예측값인 제 n 번째 예측값을 저장한다. 그리고 실행 시간 예측부(302)는 루프의 제 n 번째 실행에 관한 실행 시간의 측정값인 제 n 번째 측정값을 획득한다. 그리고 실행 시간 예측부(302)는 제 n 번째 예측값과 제 n 번째 측정값을 이용하여 제 n+1 번째 예측값을 계산하고, 원래의 제 n 번째 예측값을 계산된 제 n+1 번째 예측값으로 갱신한다. 본 실시예에 따라, 실행 시간 및 실행 시간의 예측값은 실행 사이클의 개수로 주어질 수 있다.
코드 생성부(303)는 VLIW 모드를 위한 루프의 VLIW 코드 및 CGA 모드를 위한 루프의 CGA 코드 중 적어도 하나를 생성한다. 코드 생성부(303)는 성능 정보 획득부(301)가 획득한 성능 정보에 따라 성능 상 유리한 코드만을 생성할 수도 있고 VLIW 코드와 CGA 코드를 모두 생성할 수도 있다.
모드 결정부(304)는 성능 정보 및 예측값 중 적어도 하나를 이용하여 VLIW 코드 및 CGA 코드 중 성능 상 유리한 코드를 선택한다. 또한 모드 결정부(304)는 실행될 루프의 루프 반복 횟수가 검출될 수 있는지 여부를 판단할 수 있다.
만약, 루프의 루프 반복 횟수가 검출될 수 있는 경우, 모드 결정부(304)는 루프의 루프 반복 횟수를 검출하고, 검출된 루프 반복 횟수와 성능 정보 획득부(301)에서 얻어진 임계교차점을 비교하여 성능 상 유리한 코드를 선택할 수 있다.
만약, 루프의 루프 반복 횟수가 검출될 수 없는 경우, 모드 결정부(304)는 실행 시간 예측부(302)에서 얻어진 예측값과 횟수와 성능 정보 획득부(301)에서 얻어진 임계교차점을 비교하여 성능 상 유리한 코드를 선택할 수 있다.
또한 모드 결정부(304)는 선택된 코드가 실행될 수 있도록 루프에 스텁(stub) 코드를 삽입하고, 실행 모드의 전환을 제어할 수 있다.
도 4는 본 발명의 일 실시예에 따른 성능 정보를 도시한다. 이것은 도 3의 성능 정보 획득부(301)가 획득한 성능 정보에 관한 일 예가 될 수 있다.
도 4를 참조하면, 성능 정보는 루프의 VLIW 모드에서의 실행 시간을 나타내는 VLIW 성능 그래프(401)와 루프의 CGA 모드에서의 실행 시간을 나타내는 CGA 성능 그래프(402)를 포함할 수 있다. 각각의 VLIW 성능 그래프(401)와 CGA 성능 그래프(402)는 루프 반복 횟수를 X축으로 갖고 루프 실행 시간을 Y축으로 갖는 평면 상에서 정의될 수 있다.
루프 반복 횟수는 어떤 루프의 1회 실행이 완료될때까지 루프에 포함된 연산이 반복되는 횟수를 나타낸다. 루프 반복 횟수는 iteration count로 나타낼 수도 있다. 루프 실행 시간은 어떤 루프의 1회 실행이 완료될때까지 소요되는 시간을 나타낸다. 루프 실행 시간은 execution cycle count로 나타낼 수도 있다.
루프 반복 횟수가 적으면 루프 실행 시간도 짧은 것이 통상적이므로, VLIW 성능 그래프(401)와 CGA 성능 그래프(402)는 양의 기울기를 갖는 직선이 될 수 있다. 또한, 그 루프를 실행할 때 VLIW 모드에서 실행하냐 CGA 모드에서 실행하냐에 따라 루프 실행 시간이 달라질 수 있으므로, VLIW 성능 그래프(401) 및 CGA 성능 그래프(402)는 각각 다른 기울기를 가지며, 이에 따라 임계교차점(threshold intersection)(403)이 존재할 수도 있다.
따라서, 예컨대, 임계교차점(403)이 (60, 500)과 같이 주어진 경우, 40회의 루프 반복 횟수를 갖는 루프는 VLIW 모드에서 실행하는 것이 유리하고, 80회의 루프 반복 횟수를 갖는 루프는 CGA 모드에서 실행하는 것이 유리하다는 것을 알 수 있다.
이러한 성능 정보는 코드의 컴파일 단계에서 다음과 같이 얻어질 수 있다.
Figure pat00001
수학식 1은 VLIW 모드에서 루프를 실행했을 때의 루프의 실행 시간을 나타내는 것으로, N은 루프 반복 횟수를, latency of VLIW body는 루프 바디를 실행하는데 소요되는 실행 사이클의 개수를, VLIW loop overhead는 루프를 VLIW 모드에서 실행할 때에 필요한 추가적 오버헤드(예컨대, 명령어 패치 사이클)를 나타낸다.
수학식 1에서, latency of VLIW body 및 VLIW loop overhead가 정해지면, VLIW 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 VLIW 성능 그래프(401)가 얻어질 수 있다.
Figure pat00002
수학식 2는 CGA 모드에서 루프를 실행했을 때의 루프의 실행 시간을 나타내는 것으로, II는 병렬 처리 스테이지의 iteration interval을, N은 루프 반복 횟수를, stages는 병렬 처리 스테이지의 개수를, CGA loop overhead는 루프를 CGA 모드에서 실행할 때에 필요한 추가적 오버헤드(예컨대, 구성 메모리 로드)를 나타낸다.
수학식 2에서, II, stages 및 CGA loop overhead가 정해지면, CGA 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 CGA 성능 그래프(402)가 얻어질 수 있다.
도 5는 본 발명의 일 실시예에 따른 실행 시간 예측부를 도시한다. 이것은 도 3의 실행 시간 예측부(302)에 관한 일 예가 될 수 있다.
도 5를 참조하면, 실행 시간 예측부(500)는 저장부(501), 측정부(502), 및 갱신부(503)를 포함한다.
저장부(501)에는 루프의 제 n 번째 실행에 관한 실행 시간의 예측값인 제 n 번째 예측값이 저장된다. 어떻게 실행 시간이 예측되는지에 대해서는 후술한다.
측정부(502)는 루프의 제 n 번째 실행에 관한 실행 시간을 측정하고 측정된 제 n 번째 측정값을 획득한다. 실행 시간은 실행 시간 측정을 위한 함수를 루프 시작 부분에 인스트루먼테이션(instrumentation)해서 측정될 수 있다. 어떤 작업을 위해서는 그 작업에 포함된 루프가 여러 번 실행될 수가 있다. 제 n 번째 실행이란 루프의 제 n 번째 발동(invocation)을 의미할 수 있다.
갱신부(503)는 저장부(501)에 저장된 제 n 번째 예측값과 측정부(502)가 측정한 제 n 번째 측정값을 이용하여 제 n+1 번째 예측값을 계산하고, 계산된 제 n+1 번째 예측값을 저장부(501)에 기록함으로써 저장부(501)의 예측값을 갱신한다. 갱신부(503)의 갱신 과정을 구체적으로 살펴보면 다음과 같다.
도 6a 내지 도 6c는 본 발명의 일 실시예에 따른 실행 시간의 예측값의 갱신 방법을 도시한다.
도 6a에서, 최초에, 저장부(501)에는 디폴트 값으로 100cycle이 저장되어 있는 상태이다. 그리고 루프가 실행된다. 루프의 첫 번째 실행은 VLIW 모드 및 CGA 모드 중 임의의 모드에서 실행될 수 있다. 측정부(502)는 루프의 첫 번째 실행의 실행 시간을 측정한다. 예컨대, 루프의 첫 번째 실행에 100cycle이 소요되었다고 가정하자. 측정부(502)에 의해 루프의 첫 번째 실행 시간이 측정되면, 갱신부(503)는 저장부(501)에 저장되어 있는 100cycle과 측정부(502)에 의해 측정된 100cycle을 가중치 합하여 100cycle을 얻을 수 있다. 갱신부(503)는 저장부(501)에 저장되어 있는 값과 측정부(502)가 획득한 값 각각에 50%씩의 가중치를 줄 수 있다. 가중치 합을 통해 얻어진 100cycle은 루프가 두 번째 실행될 때의 예측 실행 시간이 될 수 있다. 갱신부(503)는 얻어진 100cycle을 저장부(501)에 기록한다.
이후, 루프가 두 번째로 실행되기 직전에, 모드 결정부(304, 도 3참조)가 저장부(501)에 저장된 두 번째 실행 시간의 예측값을 참조하여 이 루프를 VLIW 모드로 실행할지 CGA 모드로 실행할지 결정할 수 있다. 예컨대, 두 번째 실행 시간의 예측값이 100cycle이고, 이 루프에 관한 성능 정보가 도 4와 같다면, 모드 결정부(304)는 저장부(501)에 저장된 예측값과 임계교차점(403)을 비교하여 VLIW 모드에서 실행하는 것이 더 유리하다는 사실을 파악할 수 있다.
이어서 도 6b에서, 루프가 두 번째로 실행된다. 만약, 전술한 것과 같이 VLIW 모드에서의 실행이 더 유리하다고 판단된 경우, VLIW 코드가 선택되고 선택된 VLIW 코드가 실행될 수 있다. 도 6a와 마찬가지로, 측정부(502)는 루프의 두 번째 실행의 실행 시간을 측정한다. 예컨대, 루프의 두 번째 실행에 200cycle이 소요되었다고 가정하자. 측정부(502)에 의해 루프의 두 번째 실행 시간이 측정되면, 갱신부(503)는 저장부(501)에 저장되어 있는 100cycle과 측정부(502)에 의해 측정된 200cycle 각각에 50%씩 가중치를 부여하여 150cycle을 얻을 수 있다. 얻어진 150cycle은 루프가 세 번째 실행될 때의 예측 실행 시간이 될 수 있다. 갱신부(503)는 얻어진 150cycle을 저장부(501)에 기록한다.
또한, 루프가 세 번째로 실행되기 직전에, 모드 결정부(304, 도 3참조)가 저장부(501)에 저장된 세 번째 실행 시간의 예측값과 임계교차점(403)을 루프를 VLIW 모드와 CGA 모드 중 어느 모드에서 실행할지 결정할 수 있다.
이어서 도 6c에서, 루프가 세 번째로 실행된다. 측정부(502)는 루프의 세 번째 실행의 실행 시간을 측정한다. 예컨대, 루프의 세 번째 실행에 200cycle이 소요되었다고 가정하자. 측정부(502)에 의해 루프의 세 번째 실행 시간이 측정되면, 갱신부(503)는 저장부(501)에 저장되어 있는 150cycle과 측정부(502)에 의해 측정된 200cycle 각각에 50%씩 가중치를 부여하여 175cycle을 얻을 수 있다. 얻어진 175cycle은 루프가 네 번째 실행될 때의 예측 실행 시간이 될 수 있다. 갱신부(503)는 얻어진 175cycle을 저장부(501)에 기록한다.
또한, 루프가 네 번째로 실행되기 직전에, 모드 결정부(304, 도 3참조)가 저장부(501)에 저장된 네 번째 실행 시간의 예측값과 임계교차점(403)을 루프를 VLIW 모드와 CGA 모드 중 어느 모드에서 실행할지 결정할 수 있다.
이와 같이 다음 번 실행 시간의 예측값은 최근에 측정된 실행 시간일수록 높은 가중치가 부여해서 합산하는 방식으로 구해질 수 있다. 예를 들어, 루프가 5번 실행되었을 때 실행 시간이 각각 50cycle, 50cycle, 60cycle, 60cycle, 60cycle인 경우, 6번째 실행에서는 60cycle로 실행될 확률이 높기 때문이다. 따라서 루프의 특성을 예측하고 동적으로 루프 특성에 맞는 실행 모드가 결정될 수가 있다.
도 7은 본 발명의 일 실시예에 따른 재구성 가능 어레이의 실행 모드 결정 방법을 도시한다.
도 7을 참조하면, 본 실시예에 따른 방법에 따라, 성능 정보가 획득된다(701). 예컨대, 도 3의 성능 정보 획득부가 수학식 1 및 수학식 2와 같은 식을 통해 도 4와 같은 성능 정보를 획득하는 것이 가능하다.
그리고 성능 정보에서 임계교차점이 존재하는지 여부가 판단된다(702). 예를 들어, 도 3의 모드 결정부(304)가 도 4와 같은 성능 정보의 임계교차점(403)을 검출하는 것이 가능하다.
임계교차점이 검출되면, VLIW 코드 및 CGA 코드가 둘다 생성된다(703). 예컨대, 도 3의 코드 생성부(303)가 모드 결정부(304)의 제어에 따라 VLIW 모드를 위한 루프의 VLIW 코드 및 CGA 모드를 위한 루프의 CGA 코드를 생성하는 것이 가능하다.
그리고 루프의 루프 반복 횟수가 검출 가능한지 여부가 판단된다(704). 예컨대, 도 3의 모드 결정부(304)가 루프의 루프 반복 횟수가 루프 실행 전에 또는 루프 실행 도중에 결정될 수 있는지 여부를 판단할 수 있다.
만약, 루프 반복 횟수가 검출 가능하면, 도 3의 모드 결정부(304)는 루프 반복 횟수를 검출하고(705), 검출된 루프 반복 횟수와 도 4와 같은 성능 정보의 임계교차점(403)을 비교하여 성능상 유리한 코드를 선택한다(706). 예를 들어, 도 4에서, 어떤 루프의 루프 반복 횟수가 60보다 적은 경우에는 VLIW 코드를 선택한 후 선택된 VLIW 코드를 VLIW 모드에서 실행하고, 루프 반복 횟수가 60보다 큰 경우에는 CGA 코드를 선택한 후 선택된 CGA 코드를 CGA 모드에서 실행할 수가 있다.
만약, 루프 반복 횟수가 검출 가능하지 아니하면, 도 3의 모드 결정부(304)는 실행 시간 예측값을 획득하고(707), 획득된 실행 시간 예측값과 도 4와 같은 성능 정보의 임계교차점(403)을 비교하여 성능상 유리한 코드를 선택한다(708). 예를 들어, 도 4에서, 어떤 루프의 제 n 번째 실행 시간의 예측값이 500cycle보다 적은 경우에는 VLIW 코드를 선택한 후 선택된 VLIW 코드를 VLIW 모드에서 실행하고, 제 n 번째 실행 시간의 예측 값이 500cycle보다 큰 경우에는 CGA 코드를 선택한 후 선택된 CGA 코드를 CGA 모드에서 실행할 수가 있다.
이상에서 살펴본 바와 같이, 개시된 실시예에 의하면, 성능 정보 및 실행 시간의 예측값에 기초하여 루프의 실행 모드가 동적으로 결정되기 때문에 루프의 실행을 최적화시킬 수가 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (10)

  1. 실행될 루프에 관한 VLIW(very long instruction word) 모드 및 CGA(coarse grained array) 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 성능 정보를 획득하는 성능 정보 획득부;
    루프의 실행 시간에 관한 예측값을 획득하는 실행 시간 예측부;
    VLIW 모드를 위한 루프의 VLIW 코드 및 CGA 모드를 위한 루프의 CGA 코드 중 적어도 하나를 생성하는 코드 생성부; 및
    상기 성능 정보 및 상기 예측값 중 적어도 하나를 이용하여 상기 VLIW 코드 및 상기 CGA 코드 중 어느 하나를 선택하는 모드 결정부; 를 포함하는 재구성 가능 어레이의 실행 모드 결정 장치.
  2. 제 1 항에 있어서, 상기 실행 시간 예측부
    루프의 제 n 번째 실행에 관한 실행 시간의 예측값인 제 n 번째 예측값이 저장되는 저장부;
    루프의 제 n 번째 실행에 관한 실행 시간의 측정값인 제 n 번째 측정값을 획득하는 측정부; 및
    상기 제 n 번째 예측값과 상기 제 n 번째 측정값을 이용하여 제 n+1 번째 예측값을 계산하고, 계산된 제 n+1 번째 예측값을 상기 저장부에 저장하는 갱신부; 를 포함하는 재구성 가능 어레이의 실행 모드 결정 장치.
  3. 제 2 항에 있어서, 상기 갱신부는
    상기 제 n 번째 예측값과 상기 제 n 번째 측정값의 평균을 이용하여 상기 제 n+1 번째 예측값을 계산하는 재구성 가능 어레이의 실행 모드 결정 장치.
  4. 제 1 항에 있어서, 상기 성능 정보는
    상기 루프 반복 횟수를 제 1 축으로 갖고, 상기 실행 시간을 제 2 축으로 갖는 좌표 평면 상에서, 상기 루프의 VLIW 모드에서의 실행 시간을 나타내는 VLIW 성능 그래프와 상기 루프의 CGA 모드에서의 실행 시간을 나타내는 CGA 성능 그래프로 표현되는 재구성 가능 어레이의 실행 모드 결정 장치.
  5. 제 4 항에 있어서, 상기 코드 생성부는
    상기 VLIW 성능 그래프와 상기 CGA 성능 그래프 간에 교점으로 정의되는 임계교차점(threshold intersection)이 존재하는 경우, 상기 VLIW 코드 및 상기 CGA 코드를 둘 다 생성하는 재구성 가능 어레이의 실행 모드 결정 장치.
  6. 제 4 항에 있어서, 상기 모드 결정부는
    상기 루프의 루프 반복 횟수가 검출될 수 있는 경우, 상기 루프의 루프 반복 횟수를 검출하고, 검출된 루프 반복 횟수와 상기 VLIW 성능 그래프와 상기 CGA 성능 그래프 간에 교점으로 정의되는 임계교차점(threshold intersection)을 비교하여 성능 상 유리한 코드를 선택하는 재구성 가능 어레이의 실행 모드 결정 장치.
  7. 제 4 항에 있어서, 상기 모드 결정부는
    상기 루프의 루프 반복 횟수가 검출될 수 없는 경우, 상기 루프의 실행 시간에 관한 예측값과 상기 VLIW 성능 그래프와 상기 CGA 성능 그래프 간에 교점으로 정의되는 임계교차점(threshold intersection)을 비교하여 성능 상 유리한 코드를 선택하는 재구성 가능 어레이의 실행 모드 결정 장치.
  8. 제 1 항에 있어서, 상기 모드 결정부는
    상기 선택된 코드가 실행될 수 있도록 상기 루프에 스텁(stub) 코드를 삽입하고, 상기 재구성 가능 어레이의 모드 전환을 제어하는 재구성 가능 어레이의 실행 모드 결정 장치.
  9. 실행될 루프의 루프 반복 횟수를 제 1 축으로 갖고, 실행될 루프의 실행 시간을 제 2 축으로 갖는 좌표 평면 상에서, 상기 루프의 VLIW 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 VLIW 성능 그래프와 상기 루프의 CGA 모드에서의 루프 반복 횟수 별 실행 시간을 나타내는 CGA 성능 그래프로 표현되는 성능 정보를 획득하는 단계;
    상기 좌표 평면 상에서 상기 VLIW 성능 그래프와 상기 CGA 성능 그래프 간에 교점으로 정의되는 임계교차점(threshold intersection)이 존재하는 경우, 상기 VLIW 모드를 위한 상기 루프의 VLIW 코드와 상기 CGA 모드를 위한 상기 루프의 CGA 코드를 둘 다 생성하는 단계;
    상기 루프의 루프 반복 횟수가 검출될 수 있는 경우, 상기 루프의 루프 반복 횟수를 검출하고, 검출된 루프 반복 횟수와 상기 임계교차점을 비교하여 성능 상 유리한 코드를 선택하는 단계; 및
    상기 루프의 루프 반복 횟수가 검출될 수 없는 경우, 상기 루프의 실행 시간에 관한 예측값을 획득하고, 획득된 예측값과 상기 임계교차점을 비교하여 성능 상 유리한 코드를 선택하는 단계; 를 포함하는 재구성 가능 어레이의 실행 모드 결정 방법.
  10. 제 9 항에 있어서,
    상기 선택된 코드를 상기 선택된 코드에 대응되는 모드에서 실행하고, 그 실행의 실행 시간을 측정한 후, 상기 예측값을 갱신하는 단계; 를 더 포함하는 재구성 가능 어레이의 실행 모드 결정 방법.
KR1020100114044A 2010-11-16 2010-11-16 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법 KR101700406B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100114044A KR101700406B1 (ko) 2010-11-16 2010-11-16 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법
US13/217,952 US8850170B2 (en) 2010-11-16 2011-08-25 Apparatus and method for dynamically determining execution mode of reconfigurable array

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100114044A KR101700406B1 (ko) 2010-11-16 2010-11-16 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120052750A true KR20120052750A (ko) 2012-05-24
KR101700406B1 KR101700406B1 (ko) 2017-01-31

Family

ID=46048895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100114044A KR101700406B1 (ko) 2010-11-16 2010-11-16 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US8850170B2 (ko)
KR (1) KR101700406B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140102581A (ko) * 2012-07-19 2014-08-22 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
US9830164B2 (en) 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619290B2 (en) * 2015-03-06 2017-04-11 Advanced Micro Devices, Inc. Hardware and runtime coordinated load balancing for parallel applications
CN110048693B (zh) * 2019-04-10 2021-10-12 南京航空航天大学 基于四元数分布的并行高斯粒子滤波数据处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341371B1 (en) * 1999-02-23 2002-01-22 International Business Machines Corporation System and method for optimizing program execution in a computer system
US6546550B1 (en) * 1999-01-28 2003-04-08 International Business Machines Corporation Method to determine dynamic compilation time and to select bytecode execution mode
US20050268075A1 (en) * 2004-05-28 2005-12-01 Sun Microsystems, Inc. Multiple branch predictions
US20070130568A1 (en) * 2005-12-06 2007-06-07 Jung Chang H Adaptive execution method for multithreaded processor-based parallel system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857104A (en) 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
KR100812346B1 (ko) 2006-02-06 2008-03-11 삼성전자주식회사 재구성 어레이에서의 인터럽트 처리 방법 및 장치
GB0605349D0 (en) 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546550B1 (en) * 1999-01-28 2003-04-08 International Business Machines Corporation Method to determine dynamic compilation time and to select bytecode execution mode
US6341371B1 (en) * 1999-02-23 2002-01-22 International Business Machines Corporation System and method for optimizing program execution in a computer system
US20050268075A1 (en) * 2004-05-28 2005-12-01 Sun Microsystems, Inc. Multiple branch predictions
US20070130568A1 (en) * 2005-12-06 2007-06-07 Jung Chang H Adaptive execution method for multithreaded processor-based parallel system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140102581A (ko) * 2012-07-19 2014-08-22 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
US9830164B2 (en) 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline

Also Published As

Publication number Publication date
US20120124351A1 (en) 2012-05-17
KR101700406B1 (ko) 2017-01-31
US8850170B2 (en) 2014-09-30

Similar Documents

Publication Publication Date Title
US11449364B2 (en) Processing in a multicore processor with different cores having different architectures
Wang et al. Benchmarking the performance and energy efficiency of AI accelerators for AI training
US9207916B2 (en) Simulation apparatus, method and medium
JP5647859B2 (ja) 乗累算演算を実行するための装置および方法
US20040111708A1 (en) Method and apparatus for identifying similar regions of a program's execution
JP5961971B2 (ja) シミュレーション装置,方法,およびプログラム
George et al. Multifrontal factorization of sparse SPD matrices on GPUs
Clarke et al. Dynamic load balancing of parallel computational iterative routines on highly heterogeneous HPC platforms
US8578355B1 (en) Scenario based optimization
JP2008140380A (ja) プロセッサ性能計測のための重み付けされたイベント計数方法、プロセッサ、および重み付け性能カウンタ回路(プロセッサ性能計測のための重み付けされたイベント計数システムおよび方法)
KR20160065145A (ko) 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법
KR101700406B1 (ko) 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법
US20130067196A1 (en) Vectorization of machine level scalar instructions in a computer program during execution of the computer program
CN112559053A (zh) 可重构处理器数据同步处理方法及装置
KR20100084898A (ko) 재구성가능 프로세서에 대한 명령어 스케줄링 장치 및 방법
Lopes et al. A machine learning approach to accelerating DSE of reconfigurable accelerator systems
US9383981B2 (en) Method and apparatus of instruction scheduling using software pipelining
CN115686639A (zh) 一种应用于处理器的分支预测方法以及分支预测器
KR102289574B1 (ko) 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치
US20130125087A1 (en) Method For Estimating Resource Consumption In The Generation Of A Control Device Program Code
Singh et al. Snowpack: Efficient parameter choice for GPU kernels via static analysis and statistical prediction
Brede et al. Xcs on embedded systems: an analysis of execution profiles and accelerated classifier deletion
JP6776914B2 (ja) 並列化方法、並列化ツール
CN110750856B (zh) 一种基于机器学习的有效指令窗口大小评估方法
JP2018206042A (ja) プログラム、情報処理装置及び情報処理方法

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

Year of fee payment: 4