KR101894752B1 - 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법 - Google Patents

가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR101894752B1
KR101894752B1 KR1020110110465A KR20110110465A KR101894752B1 KR 101894752 B1 KR101894752 B1 KR 101894752B1 KR 1020110110465 A KR1020110110465 A KR 1020110110465A KR 20110110465 A KR20110110465 A KR 20110110465A KR 101894752 B1 KR101894752 B1 KR 101894752B1
Authority
KR
South Korea
Prior art keywords
virtual
application
virtual architecture
architecture
binary file
Prior art date
Application number
KR1020110110465A
Other languages
English (en)
Other versions
KR20130046102A (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 KR1020110110465A priority Critical patent/KR101894752B1/ko
Priority to US13/438,205 priority patent/US9703612B2/en
Publication of KR20130046102A publication Critical patent/KR20130046102A/ko
Priority to US15/646,747 priority patent/US10613910B2/en
Application granted granted Critical
Publication of KR101894752B1 publication Critical patent/KR101894752B1/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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법이 개시된다. 본 발명의 일실시예에 따른 어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 생성하는 가상 아키텍쳐 생성 방법은, 상기 어플리케이션의 요구사항(Requirement), 상기 어플리케이션을 실행하는 시스템의 요구사항 및 상기 어플리케이션의 특성을 분석하는 단계; 및 상기 재구성 가능한 프로세서의 물리적 아키텍쳐(Physical Architecture), 상기 어플리케이션의 요구사항, 상기 시스템의 요구사항 및 상기 어플리케이션의 특성에 기반하여, 상기 어플리케이션에 대응하는 상기 가상 아키텍쳐를 생성하는 단계를 포함할 수 있다.

Description

가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법{Virtual Architecture Producing Apparatus, Runtime System, Multi Core System and Method thereof}
본 발명의 실시예들은 가상 아키텍쳐를 생성하는 장치 및 방법, 가상 아키텍쳐에 기반한 런타임 시스템 및 멀티 코어 시스템에 관한 것이다.
기존의 어플리케이션(Application)이 사용하는 재구성 가능한 프로세서(Reconfigurable Processor)의 구성은 컴파일러(Compiler)에 의해 결정 되었다. 즉, 종래의 기술에 따르면, 프로세서의 하드웨어 구성과 동일한 물리적 아키텍쳐(Architecture)를 기반으로 어플리케이션에 대한 바이너리 파일(Binary File)을 생성하였다.
따라서, 종래에는 재구성 가능한 프로세서의 하드웨어의 범위의 따라 바이너리 파일의 생성에 대한 복잡도가 크게 증가하기 때문에 최적의 솔루션을 찾는 것이 어렵고, 시간도 오래 걸렸다. 그렇기 때문에 개발자가 직접 개입할 수 있는 여지가 적고, 해당 응용이 어떤 하드웨어를 사용하고 어떻게 동작하는지는 컴파일러에 모두 의존하게 되는 문제가 있었다.
도 1은 종래의 재구성 가능한 프로세서에서 어플리케이션을 구성하는 기존 방법을 나타내는 도면이다.
도 1을 참조하면, 종래에는 컴파일러(120)가 어플리케이션의 코드(110)를 입력 받고, 재구성 가능한 프로세서의 전체 하드웨어 정보(Full HW Description, 즉, 물리적 아키텍쳐(Physical architecture))(111)를 받아서, 어플리케이션에 대응하는 바이너리 파일(130)을 생성하였다. 따라서, 종래 방법에 따르면, 재구성 가능한 프로세서의 사용 가능한 모든 자원을 가지고 전적으로 컴파일러가 어플리케이션에 대한 바이너리 파일(130)을 생성하게 되었다.
본 발명의 일실시예에 따른 어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 생성하는 가상 아키텍쳐 생성 방법은, 상기 어플리케이션의 요구사항(Requirement), 상기 어플리케이션을 실행하는 시스템의 요구사항 및 상기 어플리케이션의 특성을 분석하는 단계; 및 상기 재구성 가능한 프로세서의 물리적 아키텍쳐(Physical Architecture), 상기 어플리케이션의 요구사항, 상기 시스템의 요구사항 및 상기 어플리케이션의 특성에 기반하여, 상기 어플리케이션에 대응하는 상기 가상 아키텍쳐를 생성하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템의 동작 방법은, 어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 단계; 상기 복수 개의 가상 아키텍쳐에 기반하여 상기 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 단계; 상기 복수 개의 바이너리 파일 각각에 대하여, 상기 바이너리 파일의 일부를 상기 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하여 실행 성능을 기록하는 단계; 및 상기 복수 개의 바이너리 파일 중 상기 실행 성능이 가장 높은 바이너리 파일을 선택하고, 상기 선택된 바이너리 파일에서 상기 실행된 일부를 제외한 나머지를 상기 선택된 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템의 동작 방법은, 제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 단계; 상기 복수 개의 제1 가상 아키텍쳐에 기반하여 상기 제1 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 단계; 상기 제1 어플리케이션에 대한 가상 아키텍쳐 정보를 획득하는 단계; 상기 획득된 가상 아키텍쳐 정보에 대응하는 유사 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보에서 검색하는 단계; 상기 제2 어플리케이션이 사용한 제2 가상 아키텍쳐를 검색하는 단계; 상기 복수 개의 제1 가상 아키텍쳐 중에서 상기 제2 가상 아키텍쳐와 유사도가 최대인 가상 아키텍쳐를 선택하는 단계; 및 상기 선택된 유사도가 최대인 가상 아키텍쳐에 대응하는 바이너리 파일을 선택하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 물리적 아키텍쳐가 상이한 재구성 가능한 프로세서를 복수 개 포함하는 멀티 코어 시스템에서, 가상 아키텍쳐에 기반하여 로드 밸런싱(Load Balancing)을 수행하는 멀티 코어 시스템의 동작 방법은, 상기 복수 개의 재구성 가능한 프로세서 중에서 과부하가 발생한 제1 재구성 가능한 프로세서를 검색하는 단계; 상기 제1 재구성 가능한 프로세서에서 구동 중인 어플리케이션에 대응하는 상기 가상 아키텍쳐를 획득하는 단계; 상기 복수 개의 재구성 가능한 프로세서 중에서 상기 획득한 가상 아키텍쳐를 포함하는 상기 물리적 아키텍쳐를 갖는 제2 재구성 가능한 프로세서를 검색하는 단계; 및 상기 제2 재구성 가능한 프로세서로 상기 어플리케이션을 이주시켜 로드 밸런싱을 수행하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 생성하는 가상 아키텍쳐 생성 장치는, 상기 어플리케이션의 요구사항(Requirement), 상기 어플리케이션을 실행하는 시스템의 요구사항 및 상기 어플리케이션의 특성을 분석하는 분석부; 및 상기 재구성 가능한 프로세서의 물리적 아키텍쳐(Physical Architecture), 상기 어플리케이션의 요구사항, 상기 시스템의 요구사항 및 상기 어플리케이션의 특성에 기반하여, 상기 어플리케이션에 대응하는 상기 가상 아키텍쳐를 생성하는 생성부를 포함할 수 있다.
본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템은, 어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 생성부; 상기 복수 개의 가상 아키텍쳐에 기반하여 상기 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 컴파일부; 상기 복수 개의 바이너리 파일 각각에 대하여, 상기 바이너리 파일의 일부를 상기 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하여 실행 성능을 기록하고, 상기 복수 개의 바이너리 파일 중 상기 실행 성능이 가장 높은 바이너리 파일을 선택하며, 상기 선택된 바이너리 파일에서 상기 실행된 일부를 제외한 나머지를 상기 선택된 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하는 처리부를 포함할 수 있다.
본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템은, 제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 생성부; 상기 복수 개의 제1 가상 아키텍쳐에 기반하여 상기 제1 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 컴파일부; 상기 제1 어플리케이션에 대한 가상 아키텍쳐 정보를 획득하고, 상기 획득된 가상 아키텍쳐 정보에 대응하는 유사 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보에서 검색하며, 상기 제2 어플리케이션이 사용한 제2 가상 아키텍쳐를 검색하고, 상기 복수 개의 제1 가상 아키텍쳐 중에서 상기 제2 가상 아키텍쳐와 유사도가 최대인 가상 아키텍쳐를 선택하고, 상기 선택된 유사도가 최대인 가상 아키텍쳐에 대응하는 바이너리 파일을 선택하는 처리부를 포함할 수 있다.
본 발명의 일실시예에 따른 물리적 아키텍쳐가 상이한 재구성 가능한 프로세서를 복수 개 포함하고, 가상 아키텍쳐에 기반하여 로드 밸런싱(Load Balancing)을 수행하는 멀티 코어 시스템은, 상기 복수 개의 재구성 가능한 프로세서 중에서 과부하가 발생한 제1 재구성 가능한 프로세서를 검색하는 제1 검색부; 상기 제1 재구성 가능한 프로세서에서 구동 중인 어플리케이션에 대응하는 상기 가상 아키텍쳐를 획득하는 제1 처리부; 상기 복수 개의 재구성 가능한 프로세서 중에서 상기 획득한 가상 아키텍쳐를 포함하는 상기 물리적 아키텍쳐를 갖는 제2 재구성 가능한 프로세서를 검색하는 제2 검색부; 및 상기 제2 재구성 가능한 프로세서로 상기 어플리케이션을 이주시켜 로드 밸런싱을 수행하는 제2 처리부를 포함할 수 있다.
또한, 본 발명의 실시예들에 따르면, 어플리케이션의 특성/요구사항 등을 고려하여 가상 아키텍쳐를 생성함으로써, 어플리케이션이 요구하는 디자인 스페이스(Design Space)만을 고려할 수 있고, 따라서 컴파일 시간을 단축할 수 있다. 또한, 최소의 하드웨어 자원으로 고성능을 얻거나, 하드웨어의 전력을 조절하여 저전력 효과를 얻는 등의 어플리케이션의 성능 효율을 증가시킬 수 있다.
또한, 본 발명의 실시예들에 따르면, 가상 아키텍쳐에 기반하여 실행 성능을 동적으로 튜닝(Dynamic performance tuning)할 수 있고, 이기종 시스템에서는 동적인 부하 밸런싱(dynamic load balancing)을 수행할 수 있다.
도 1은 종래의 재구성 가능한 프로세서에서 어플리케이션을 구성하는 기존 방법을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 장치의 구성을 나타내는 도면이다.
도 3은 본 발명의 일실시예에 따른 가상 아키텍쳐를 나타내는 도면이다.
도 4a는 본 발명의 일실시예에 따른 런타임 시스템의 구성을 나타내는 도면이다.
도 4b는 본 발명의 일실시예에 따른 복수 개의 가상 아키텍쳐를 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따른 물리적 아키텍쳐가 상이한 복수 개의 재구성 가능한 프로세서에 대한 공통 가상 아키텍쳐를 나타내는 도면이다.
도 6은 본 발명의 일실시예에 따른 멀티 코어 시스템의 구성을 나타내는 도면이다.
도 7은 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 방법을 나타내는 흐름도이다.
도 8은 본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 샘플링하는 런타임 시스템의 동작 방법을 나타내는 흐름도이다.
도 9은 본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 추정하는 런타임 시스템의 동작 방법을 나타내는 흐름도이다.
도 10는 본 발명의 일실시예에 따른 로드 밸런싱을 수행하는 멀티 코어 시스템의 동작 방법을 나타내는 흐름도이다.
이하에서, 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 장치의 구성을 나타내는 도면이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 장치(240)는 어플리케이션(Application, 응용)에 대응하도록 재구성 가능한 프로세서(Reconfigurable Processor)의 가상 아키텍쳐(Virtual Architecture)를 생성할 수 있다. 따라서, 가상 아키텍쳐 생성 장치(240)는 재구성 가능한 프로세서의 재구성 특징을 이용하여 어플리케이션에 적합한 프로세서의 구성을 찾을 수 있고, 이에 시스템 전체의 성능을 향상 시킬 수 있다.
예를 들면, 가상 아키텍쳐 생성 장치(240)는 고성능, 저전력, 응답시간 등의 어플리케이션의 요구사항(Requirement)(212), 어플리케이션이 구동되는 시스템의 요구사항(212), 어플리케이션의 특성, 재구성 가능한 프로세서의 물리적 아키텍쳐(Physical Architecture)(211) 등을 파악하고, 파악된 정보를 고려하여 재구성 가능한 프로세서의 하드웨어의 재구성 범위를 찾을 수 있다. 또한, 가상 아키텍쳐 생성 장치(240)는 찾게 된 프로세서의 하드웨어의 재구성 범위를 이용하여 어플리케이션에 대한 바이너리 파일(Binary File)(230)을 생성할 수 있다. 따라서, 기존 방법이 어플리케이션을 하드웨어에 맞추어야 했던 것과 달리, 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 장치(240)는 하드웨어를 어플리케이션에 맞출 수 있다.
상술한 동작을 수행하기 위하여, 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 장치(240)는 분석부(241) 및 생성부(242)를 포함할 수 있다.
분석부(241)는 (1) 어플리케이션의 요구사항(Requirement)(212), (2) 어플리케이션을 실행하는 시스템의 요구사항(212) 및 (3) 어플리케이션의 특성을 분석할 수 있다.
어플리케이션의 요구사항(212)은 어플리케이션의 코드(210)에서 pragma 형식으로 올 수 있다. 일실시예에 따른 어플리케이션의 요구사항(212)은 고성능, 저전력, 응답시간 등일 수 있다.
시스템의 요구사항(212)은 런타임(Runtime)에 수집된 정보를 활용할 수 있다. 일실시예에 따른 시스템의 요구사항(212)은 런타임(Runtime)시 하드웨어의 특정 부분이 사용 불가능한 것 등이 될 수 있다.
또한, 일실시예에 따른 어플리케이션의 특성은 어플리케이션이 사용하는 기능 및 데이터 플로우(Data Flow), 반복 횟수 등일 수 있다.
생성부(242)는 분석한 3가지의 정보 및 재구성 가능한 프로세서의 물리적 아키텍쳐(Physical Architecture)(211)의 정보에 기반하여, 어플리케이션에 대응하는 가상 아키텍쳐를 생성할 수 있다. 이 때 생성부(242)는 가상 아키텍쳐가 재구성 가능한 프로세서의 물리적 아키텍쳐(211)의 부분집합(Subset)이 되도록 가상 아키텍쳐를 생성할 수 있다. 또한, 일실시예에 따른 생성부(242)는 가상 아키텍쳐를 복수 개 생성할 수 있다. 따라서, 어플리케이션을 구동하는 런타임 시스템(Runtime System)은 복수 개의 가상 아키텍쳐 중 실행 성능이 가장 좋은 가상 아키텍쳐를 선택하여 어플리케이션을 실행할 수 있다. 또 다른 실시예에 따라서는, 어플리케이션을 구동하는 런타임 시스템은 복수 개의 가상 아키텍쳐를 동시에 2개 이상 선택하여, 동시에 복수 개의 어플리케이션을 실행할 수 있다. 이에 대해서는 도 4 및 도 7을 참조하여 뒤에서 다시 상세히 설명한다.
도 3은 본 발명의 일실시예에 따른 가상 아키텍쳐를 나타내는 도면이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 장치(240)의 생성부(242)는 어플리케이션(302)의 요구사항(212), 시스템의 요구사항(212), 어플리케이션(302)의 특성, 재구성 가능한 프로세서의 물리적 정보(301)를 이용하여, 어플리케이션(302)에 대응하는 가상 아키텍쳐(310, 320, 330)를 생성할 수 있다. 도 3에 표시된 3개의 가상 아키텍쳐(310, 320, 330)는 하드웨어, 연결(Interconnection) 등의 구성(Configuration)이 서로 다르고, 따라서 동작 및 성능도 상이할 수 있다.
예를 들어, 어플리케이션(302)이 고성능을 요구하는 경우, 가상 아키텍쳐 생성 장치(240)는 자원을 최대한 많이 사용할 수 있도록 가상 아키텍쳐를 생성할 수 있다. 또한, 어플리케이션(302)이 저전력을 요구하는 경우, 가상 아키텍쳐 생성 장치(240)는 하드웨어 공유 등을 통하여 자원 사용을 최소화할 수 있도록 가상 아키텍쳐를 생성할 수 있다.
따라서, 가상 아키텍쳐 생성 장치(240)의 생성부(242)는 사용 기능에 맞는 하드웨어 혹은 하드웨어의 조합을 선택하거나, 어플리케이션의 특성 중 하나인 데이터 플로우에 따라 재구성 가능한 프로세서의 연산 유닛(Function Unit, FU) 사이의 연결(Interconnection)을 선택하여 가상 아키텍쳐를 생성할 수 있다. 또한, 어플리케이션에서 반복 사용하는 부분의 수를 아는 경우, 생성부(242)는 반복 사용하는 부분의 수에 기반하여 가상 아키텍쳐의 설정을 변경할 수 있다.
다시 도 2를 참조하면, 가상 아키텍쳐 생성 장치(240)는 컴파일부(Compile Unit)(220)를 더 포함할 수 있다. 도 2에는 가상 아키텍쳐 생성 장치(240)와 컴파일부(220)가 별개의 구성으로 나타나 있지만, 실시예에 따라서는, 가상 아키텍쳐 생성 장치(240)와 컴파일부(220)는 하나의 모듈로 통합되거나 또는 별개의 모듈로 구현될 수 있다. 예를 들어, 가상 아키텍쳐 생성 장치(240)는 컴파일부(220)의 내부에 하나의 모듈로 삽입될 수 있다.
컴파일부(220)는 생성부(242)에서 생성한 가상 아키텍쳐에 대한 정보(243)에 기반하여 어플리케이션의 코드(Code)(210)를 컴파일(Compile)할 수 있다.
실시예에 따라서는, 컴파일부(220)는 어플리케이션의 코드(210)의 컴파일에 실패할 수 있고, 이 때, 생성부(242)는 컴파일의 실패에 대한 실패 정보를 더 이용하여, 가상 아키텍쳐를 재생성할 수 있다.
상술한 것과 같이, 가상 아키텍쳐 생성 장치는 어플리케이션에 적합한 가상 아키텍쳐를 생성할 수 있고, 이하, 상술한 동작이 완료된 이후에 런타임 시스템이 가상 아키텍쳐에 기반하여 실행 성능을 튜닝(Tuning)하는 동작에 대해서 설명한다.
도 4a는 본 발명의 일실시예에 따른 런타임 시스템의 구성을 나타내는 도면이다.
도 4a를 참조하면, 본 발명의 일실시예에 따른 런타임 시스템(400)은 생성부(410), 컴파일부(420) 및 처리부(430)를 포함할 수 있다.
생성부(410)는 어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성할 수 있다. 또한, 컴파일부(420)는 복수 개의 가상 아키텍쳐에 기반하여 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성할 수 있다. 생성부(410) 및 컴파일부(420)의 동작에 대해서는 도 2에서 상세히 설명하였으므로, 설명을 생략한다.
생성부(410)에 의해 복수 개의 가상 아키텍쳐가 생성되고, 컴파일부(420)에 의해 각 가상 아키텍쳐에 기반한 복수 개의 바이너리 파일이 생성되었을 때, 런타임 시스템(400)의 처리부(430)는 실행 성능(Performance)이 가장 좋은 가상 아키텍쳐 기반 바이너리 파일을 선택할 수 있다. 따라서, 성능 향상을 위한 조절이 가능해진다.
처리부(430)는 복수 개의 바이너리 파일 각각에 대하여, 바이너리 파일의 일부를 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하여 실행 성능을 기록할 수 있다. 자세히 설명하면, 처리부(430)는 복수 개의 바이너리 파일 중에서 어느 하나의 바이너리 파일을 선택하고, 선택된 바이너리 파일의 일부를 가상 아키텍쳐(선택된 바이너리 파일에 대응하는 가상 아키텍쳐임)에서 실행하여 실행 성능을 기록할 수 있다. 그리고 처리부(430)는 나머지 바이너리 파일에 대해서도 순차적으로 상술한 동작(바이너리 파일의 일부를 실행하여 가상 아키텍쳐에서 실행하여 실행 성능을 기록하는 동작)을 수행할 수 있다.
모든 바이너리 파일에 대해서 실행 성능을 기록하면, 처리부(430)는 복수 개의 바이너리 파일 중 실행 성능이 가장 높은(가장 좋은) 바이너리 파일을 선택할 수 있다. 또한, 처리부(430)는 선택된 바이너리 파일의 나머지(이미 실행된 일부를 제외한 나머지)를 선택된 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행할 수 있다.
상술한 동작에 의해서 런타임 시스템(400)은 가상 아키텍쳐에 기반한 실행 성능 튜닝(또는 샘플링(Sampling))을 수행할 수 있다.
본 발명의 일측에 따르면, 런타임 시스템(400)은 실행 성능을 튜닝하기 위한 방법으로서 또 다른 방법을 이용할 수 있다. 이 때, 런타임 시스템(400)은 가상 아키텍쳐 정보(Virtual Architecture Information, VAI)를 이용하여 가상 아키텍쳐 기반 바이너리 파일을 선택할 수 있다. 즉, 런타임 시스템(400)은 유사한 가상 아키텍쳐 정보를 가지는 두 개의 어플리케이션은 성능 결과도 유사할 것이라는 가정 하에, 이전(Prior) 유사한 어플리케이션의 가상 아키텍쳐 기반 바이너리 파일 선택 결과를 이용할 수 있다. 이하 런타임 시스템(400)이 제1 어플리케이션에 대한 성능 결과가 높은 바이너라 파일을 선택하기 위한 동작에 대해서 설명한다.
생성부(410)는 제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성할 수 있다. 또한, 컴파일부(420)는 생성된 복수 개의 제1 가상 아키텍쳐에 기반하여 제1 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성할 수 있다. 생성부(410) 및 컴파일부(420)의 동작에 대해서는 도 2에서 상세히 설명하였으므로, 설명을 생략한다.
처리부(430)는 제1 어플리케이션에 대한 가상 아키텍쳐 정보를 획득할 수 있다.
또한, 처리부(430)는 획득된 제1 어플리케이션에 대한 가상 아키텍쳐 정보에 대응하는 유사 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보(Prior Knowledge)에서 검색할 수 있다. 즉, 처리부(430)는 제1 어플리케이션의 가상 아키텍쳐 정보와 가장 유사한 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보에서 검색할 수 있다. 실시예에 따라서는, 처리부(430)는 유사도를 연산하여, 유사도가 가장 높은 가상 아키텍쳐 정보를 갖는 어플리케이션을 선택할 수 있다.
제2 어플리케이션이 검색되면, 처리부(430)는 제2 어플리케이션이 사용한 제2 가상 아키텍쳐를 검색할 수 있다.
또한, 처리부(430)는 제1 어플리케이션에 대하여 생성된 복수 개의 제1 가상 아키텍쳐 중에서 검색된 제2 가상 아키텍쳐와 유사도가 최대인 가상 아키텍쳐를 선택할 수 있다. 예를 들어, 처리부(430)는 복수 개의 제1 가상 아키텍쳐 각각과 제2 가상 아키텍쳐 사이의 유사도를 각각 연산하고, 그 중 연산도가 가장 높은 제1 가상 아키텍쳐를 선택할 수 있다.
처리부(430)는 유사도가 최대인 가상 아키텍쳐가 선택되면, 선택된 유사도가 최대인 가상 아키텍쳐에 대응하는 바이너리 파일을 선택할 수 있다.
상술한 동작에 의해서 런타임 시스템(400)은 가상 아키텍쳐에 기반한 실행 성능 튜닝(또는 추정(Estimation)을 수행할 수 있다.
이상 도 4a를 참조하여 설명한, 런타임 시스템(400)이 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 2가지의 방법(샘플링 및 추정)은 함께 사용 가능하고 주기적으로 반복 수행이 가능하다.
본 발명의 또 다른 일측에 따르면, 런타임 시스템(400)은 복수 개의 가상 아키텍쳐를 생성하고, 생성된 복수 개의 가상 아키텍쳐 위에서 동시에 복수 개의 어플리케이션을 실행할 수 있다.
예를 들어, 도 4b를 참조하여 설명하면, 생성부(410)는 제1 어플리케이션에 대응하는 제1 가상 아키텍쳐(441) 및 제2 어플리케이션에 대응하는 제2 가상 아키텍쳐(442)를 생성할 수 있다. 이 때, 생성부(410)는 제1 가상 아키텍쳐(441) 및 제2 가상 아키텍쳐(442)가 물리적 아키텍쳐(450)의 일부도 공통으로 포함하지 않도록 제1, 2 가상 아키텍쳐(441, 442)를 생성할 수 있다.
또한, 컴파일부(420)는 제1 가상 아키텍쳐(441)에 기반하여 제1 어플리케이션에 대한 제1 바이너리 파일을 생성하고, 제2 가상 아키텍쳐(442)에 기반하여 제2 어플리케이션에 대한 제2 바이너리 파일을 생성할 수 있다.
또한, 처리부(430)는 제1 가상 아키텍쳐(441)에서 제1 바이너리 파일을 실행하고, 제2 가상 아키텍쳐(442)에서 제2 바이너리 파일을 실행할 수 있다. 즉, 생성부(410)에 의해 생성된 제1, 2 가상 아키텍쳐(441, 442) 사이에는 공통되는 물리적 아키텍쳐가 일부도 없기 때문에, 처리부(430)는 제1, 2 가상 아키텍쳐(441, 442) 위에서 제1, 2 어플리케이션을 동시에 실행할 수 있다. 따라서, 런타임 시스템(400)은 자원을 분할 사용할 수 있다(Resource Partitioning 기법).
도 5는 본 발명의 일실시예에 따른 물리적 아키텍쳐가 상이한 복수 개의 재구성 가능한 프로세서에 대한 공통 가상 아키텍쳐를 나타내는 도면이다.
도 5를 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템(Multi Core System)은 물리적 아키텍쳐가 상이한 복수 개의 재구성 가능한 프로세서(510, 520)를 포함할 수 있다. 예를 들어, 제1 재구성 가능한 프로세서(510)와 제2 재구성 가능한 프로세서(520)은 멀티 코어 시스템에 포함되어 있는 프로세서로서, 각각은 물리적 아키텍쳐가 서로 다를 수 있다.
이러한 경우, 멀티 코어 시스템은 물리적 아키텍쳐가 상이한 복수 개의 재구성 가능한 프로세서(510, 520)로부터 공통의 가상 아키텍쳐(Common Virtual Architecture)(530)를 도출할 수 있다. 따라서, 어플리케이션이 공통의 가상 아키텍쳐(530)를 갖거나, 또는 공통의 가상 아키텍쳐(530)의 부분집합(Subset)인 경우, 그 어플리케이션은 제1 재구성 가능한 프로세서(510)와 제2 재구성 가능한 프로세서(520)에서 동작할 수 있다. 이러한 특징을 이용하여, 제1 재구성 가능한 프로세서(510)와 제2 재구성 가능한 프로세서(520)를 포함하는 이기종 멀티 코어 시스템은 동적 시간에 어플리케이션 이동을 통한 부하 분배를 수행할 수 있다. 이하, 도 6을 참조하여, 멀티 코어 시스템이 부하 분배(로드 밸런싱, Load Balancing)를 수행하는 동작에 대해서 설명한다.
도 6은 본 발명의 일실시예에 따른 멀티 코어 시스템의 구성을 나타내는 도면이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템(600)은 물리적 아키텍쳐가 상이한 재구성 가능한 프로세서를 복수 개 포함할 수 있다. 또한, 멀티 코어 시스템(600)은 가상 아키텍쳐에 기반하여 로드 밸런싱(Load Balancing)을 수행할 수 있다.
로드 밸런싱을 수행하기 위하여, 본 발명의 일실시예에 따른 멀티 코어 시스템(600)은 제1 검색부(601), 제1 처리부(602), 제2 검색부(603) 및 제2 처리부(604)를 포함할 수 있다.
제1 검색부(601)는 복수 개의 재구성 가능한 프로세서 중에서 과부하가 발생한 제1 재구성 가능한 프로세서를 검색할 수 있다.
제1 처리부(602)는 과부하가 발생한 제1 재구성 가능한 프로세서에서 구동 중인 어플리케이션에 대응하는 가상 아키텍쳐를 획득할 수 있다.
구동 중인 어플리케이션의 가상 아키텍쳐를 획득하면, 제2 검색부(603)는 복수 개의 재구성 가능한 프로세서 중에서 어플리케이션을 이주시키기 위한 제2 재구성 가능한 프로세서를 검색할 수 있다. 이 때, 제2 검색부(603)는 구동 중인 어플리케이션의 가상 아키텍쳐를 부분집합으로 하는 물리적 아키텍쳐를 갖는 프로세서를 어플리케이션을 이주시키기 위한 제2 재구성 가능한 프로세서로서 검색할 수 있다.
제2 재구성 가능한 프로세서가 검색되면, 제2 처리부(604)는 검색된 제2 재구성 가능한 프로세서로 어플리케이션을 이주(Migrate)시켜 로드 밸런싱을 수행할 수 있다.
실시예에 따라서는, 어플리케이션이 이주 가능한 제2 재구성 가능한 프로세서가 복수 개 검색될 수 있다. 이러한 경우, 제2 검색부(603)는 검색된 복수 개의 제2 재구성 가능한 프로세서 중에서 부하가 가장 작은 재구성 가능한 프로세서를 검색할 수 있다. 또한, 부하가 가장 작은 재구성 가능한 프로세서가 검색되면, 제2 처리부(604)는 검색된 부하가 가장 작은 재구성 가능한 프로세서로 어플리케이션을 이주시켜 로드 밸런싱을 수행할 수 있다.
도 7은 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 방법을 나타내는 흐름도이다.
도 7을 참조하면, 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 방법은 어플리케이션(Application, 응용)에 대응하도록 재구성 가능한 프로세서(Reconfigurable Processor)의 가상 아키텍쳐(Virtual Architecture)를 생성할 수 있다. 따라서, 가상 아키텍쳐 생성 방법은 재구성 가능한 프로세서의 재구성 특징을 이용하여 어플리케이션에 적합한 프로세서의 구성을 찾을 수 있고, 이에 시스템 전체의 성능을 향상 시킬 수 있다.
예를 들면, 가상 아키텍쳐 생성 방법은 고성능, 저전력, 응답시간 등의 어플리케이션의 요구사항(Requirement), 어플리케이션이 구동되는 시스템의 요구사항, 어플리케이션의 특성, 재구성 가능한 프로세서의 물리적 아키텍쳐(Physical Architecture) 등을 파악하고, 파악된 정보를 고려하여 재구성 가능한 프로세서의 하드웨어의 재구성 범위를 찾을 수 있다. 또한, 가상 아키텍쳐 생성 방법은 찾게 된 프로세서의 하드웨어의 재구성 범위를 이용하여 어플리케이션에 대한 바이너리 파일(Binary File)을 생성할 수 있다. 따라서, 기존 방법이 어플리케이션을 하드웨어에 맞추어야 했던 것과 달리, 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 방법은 하드웨어를 어플리케이션에 맞출 수 있다.
상술한 동작을 수행하기 위하여, 본 발명의 일실시예에 따른 가상 아키텍쳐 생성 방법은 (1) 어플리케이션의 요구사항(Requirement), (2) 어플리케이션을 실행하는 시스템의 요구사항 및 (3) 어플리케이션의 특성을 분석할 수 있다(710).
어플리케이션의 요구사항은 어플리케이션의 코드에서 pragma 형식으로 올 수 있다. 일실시예에 따른 어플리케이션의 요구사항은 고성능, 저전력, 응답시간 등일 수 있다.
시스템의 요구사항은 런타임(Runtime)에 수집된 정보를 활용할 수 있다. 일실시예에 따른 시스템의 요구사항은 런타임(Runtime)시 하드웨어의 특정 부분이 사용 불가능한 것 등이 될 수 있다.
또한, 일실시예에 따른 어플리케이션의 특성은 어플리케이션이 사용하는 기능 및 데이터 플로우(Data Flow), 반복 횟수 등일 수 있다.
가상 아키텍쳐 생성 방법은 분석한 3가지의 정보 및 재구성 가능한 프로세서의 물리적 아키텍쳐(Physical Architecture)의 정보에 기반하여, 어플리케이션에 대응하는 가상 아키텍쳐를 생성할 수 있다(720). 이 때 가상 아키텍쳐 생성 방법은 가상 아키텍쳐가 재구성 가능한 프로세서의 물리적 아키텍쳐의 부분집합(Subset)이 되도록 가상 아키텍쳐를 생성할 수 있다. 또한, 일실시예에 따른 가상 아키텍쳐 생성 방법은 가상 아키텍쳐를 복수 개 생성할 수 있다. 따라서, 어플리케이션을 구동하는 런타임 시스템(Runtime System)은 복수 개의 가상 아키텍쳐 중 실행 성능이 가장 좋은 가상 아키텍쳐를 선택하여 어플리케이션을 실행할 수 있다.
본 발명의 일측에 따르면, 가상 아키텍쳐 생성 방법은 가상 아키텍쳐에 대한 정보에 기반하여 어플리케이션의 코드(Code)를 컴파일(Compile)할 수 있다(730). 컴파일이 성공하는지 여부를 판단하여(740), 어플리케이션의 코드의 컴파일에 실패하는 경우, 가상 아키텍쳐 생성 방법은 컴파일의 실패에 대한 실패 정보를 더 이용하여, 가상 아키텍쳐를 재생성할 수 있다(750).
상술한 것과 같이, 가상 아키텍쳐 생성 방법은 어플리케이션에 적합한 가상 아키텍쳐를 생성할 수 있고, 이하, 상술한 동작이 완료된 이후에 런타임 시스템이 가상 아키텍쳐에 기반하여 실행 성능을 튜닝(Tuning)하는 동작에 대해서 설명한다.
도 8은 본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 샘플링하는 런타임 시스템의 동작 방법을 나타내는 흐름도이다.
도 8을 참조하면, 본 발명의 일실시예에 따른 런타임 시스템의 동작 방법은 어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성할 수 있다(810). 또한, 런타임 시스템의 동작 방법은 복수 개의 가상 아키텍쳐에 기반하여 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성할 수 있다(820).
런타임 시스템의 동작 방법에 의해 복수 개의 가상 아키텍쳐가 생성되고, 런타임 시스템의 동작 방법에 의해 각 가상 아키텍쳐에 기반한 복수 개의 바이너리 파일이 생성되었을 때, 런타임 시스템의 동작 방법은 실행 성능(Performance)이 가장 좋은 가상 아키텍쳐 기반 바이너리 파일을 선택할 수 있다. 따라서, 성능 향상을 위한 조절이 가능해진다.
런타임 시스템의 동작 방법은 복수 개의 바이너리 파일 각각에 대하여, 바이너리 파일의 일부를 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하여 실행 성능을 기록할 수 있다(830). 자세히 설명하면, 런타임 시스템의 동작 방법은 복수 개의 바이너리 파일 중에서 어느 하나의 바이너리 파일을 선택하고, 선택된 바이너리 파일의 일부를 가상 아키텍쳐(선택된 바이너리 파일에 대응하는 가상 아키텍쳐임)에서 실행하여 실행 성능을 기록할 수 있다. 그리고 런타임 시스템의 동작 방법은 나머지 바이너리 파일에 대해서도 순차적으로 상술한 동작(바이너리 파일의 일부를 실행하여 가상 아키텍쳐에서 실행하여 실행 성능을 기록하는 동작)을 수행할 수 있다(840).
모든 바이너리 파일에 대해서 실행 성능을 기록하면, 런타임 시스템의 동작 방법은 복수 개의 바이너리 파일 중 실행 성능이 가장 높은(가장 좋은) 바이너리 파일을 선택할 수 있다(850). 또한, 런타임 시스템의 동작 방법은 선택된 바이너리 파일의 나머지(이미 실행된 일부를 제외한 나머지)를 선택된 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행할 수 있다(860).
상술한 동작에 의해서 런타임 시스템의 동작 방법은 가상 아키텍쳐에 기반한 실행 성능 튜닝(또는 샘플링(Sampling))을 수행할 수 있다.
도 9는 본 발명의 일실시예에 따른 가상 아키텍쳐에 기반하여 실행 성능을 추정하는 런타임 시스템의 동작 방법을 나타내는 흐름도이다.
도 9를 참조하면, 본 발명의 일실시예에 따른 런타임 시스템의 동작 방법은 가상 아키텍쳐 정보(Virtual Architecture Information, VAI)를 이용하여 가상 아키텍쳐 기반 바이너리 파일을 선택할 수 있다. 즉, 런타임 시스템의 동작 방법은 유사한 가상 아키텍쳐 정보를 가지는 두 개의 어플리케이션은 성능 결과도 유사할 것이라는 가정 하에, 이전(Prior) 유사한 어플리케이션의 가상 아키텍쳐 기반 바이너리 파일 선택 결과를 이용할 수 있다. 이하 런타임 시스템의 동작 방법이 제1 어플리케이션에 대한 성능 결과가 높은 바이너라 파일을 선택하기 위한 동작에 대해서 설명한다.
런타임 시스템의 동작 방법은 제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성할 수 있다(910). 또한, 런타임 시스템의 동작 방법은 생성된 복수 개의 제1 가상 아키텍쳐에 기반하여 제1 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성할 수 있다(920).
런타임 시스템의 동작 방법은 제1 어플리케이션에 대한 가상 아키텍쳐 정보를 획득할 수 있다(930).
또한, 런타임 시스템의 동작 방법은 획득된 제1 어플리케이션에 대한 가상 아키텍쳐 정보에 대응하는 유사 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보(Prior Knowledge)에서 검색할 수 있다(940). 즉, 런타임 시스템의 동작 방법은 제1 어플리케이션의 가상 아키텍쳐 정보와 가장 유사한 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보에서 검색할 수 있다. 실시예에 따라서는, 런타임 시스템의 동작 방법은 유사도를 연산하여, 유사도가 가장 높은 가상 아키텍쳐 정보를 갖는 어플리케이션을 선택할 수 있다.
제2 어플리케이션이 검색되면, 런타임 시스템의 동작 방법은 제2 어플리케이션이 사용한 제2 가상 아키텍쳐를 검색할 수 있다(950).
또한, 런타임 시스템의 동작 방법은 제1 어플리케이션에 대하여 생성된 복수 개의 제1 가상 아키텍쳐 중에서 검색된 제2 가상 아키텍쳐와 유사도가 최대인 가상 아키텍쳐를 선택할 수 있다(960). 예를 들어, 런타임 시스템의 동작 방법은 복수 개의 제1 가상 아키텍쳐 각각과 제2 가상 아키텍쳐 사이의 유사도를 각각 연산하고, 그 중 연산도가 가장 높은 제1 가상 아키텍쳐를 선택할 수 있다.
런타임 시스템의 동작 방법은 유사도가 최대인 가상 아키텍쳐가 선택되면, 선택된 유사도가 최대인 가상 아키텍쳐에 대응하는 바이너리 파일을 선택할 수 있다(970).
상술한 동작에 의해서 런타임 시스템의 동작 방법은 가상 아키텍쳐에 기반한 실행 성능 튜닝(또는 추정(Estimation)을 수행할 수 있다.
본 발명의 또 다른 일측에 따르면, 런타임 시스템의 동작 방법은 복수 개의 가상 아키텍쳐를 생성하고, 생성된 복수 개의 가상 아키텍쳐 위에서 동시에 복수 개의 어플리케이션을 실행할 수 있다.
예를 들어, 런타임 시스템의 동작 방법은 제1 어플리케이션에 대응하는 제1 가상 아키텍쳐 및 제2 어플리케이션에 대응하는 제2 가상 아키텍쳐를 생성할 수 있다. 이 때, 런타임 시스템의 동작 방법은 제1 가상 아키텍쳐 및 제2 가상 아키텍쳐가 물리적 아키텍쳐의 일부도 공통으로 포함하지 않도록 제1, 2 가상 아키텍쳐를 생성할 수 있다.
또한, 런타임 시스템의 동작 방법은 제1 가상 아키텍쳐에 기반하여 제1 어플리케이션에 대한 제1 바이너리 파일을 생성하고, 제2 가상 아키텍쳐에 기반하여 제2 어플리케이션에 대한 제2 바이너리 파일을 생성할 수 있다.
또한, 런타임 시스템의 동작 방법은 제1 가상 아키텍쳐에서 제1 바이너리 파일을 실행하고, 제2 가상 아키텍쳐에서 제2 바이너리 파일을 실행할 수 있다. 즉, 생성된 제1, 2 가상 아키텍쳐 사이에는 공통되는 물리적 아키텍쳐가 일부도 없기 때문에, 런타임 시스템의 동작 방법은 제1, 2 가상 아키텍쳐 위에서 제1, 2 어플리케이션을 동시에 실행할 수 있다. 따라서, 런타임 시스템은 자원을 분할 사용할 수 있다(Resource Partitioning 기법).
도 10은 본 발명의 일실시예에 따른 로드 밸런싱을 수행하는 멀티 코어 시스템의 동작 방법을 나타내는 흐름도이다.
도 10을 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템은 물리적 아키텍쳐가 상이한 재구성 가능한 프로세서를 복수 개 포함할 수 있고, 이 때, 멀티 코어 시스템의 동작 방법은 가상 아키텍쳐에 기반하여 로드 밸런싱(Load Balancing)을 수행할 수 있다.
로드 밸런싱을 수행하기 위하여, 본 발명의 일실시예에 따른 멀티 코어 시스템의 동작 방법은 복수 개의 재구성 가능한 프로세서 중에서 과부하가 발생한 제1 재구성 가능한 프로세서를 검색할 수 있다(1010).
멀티 코어 시스템의 동작 방법은 과부하가 발생한 제1 재구성 가능한 프로세서에서 구동 중인 어플리케이션에 대응하는 가상 아키텍쳐를 획득할 수 있다(1020).
구동 중인 어플리케이션의 가상 아키텍쳐를 획득하면, 멀티 코어 시스템의 동작 방법은 복수 개의 재구성 가능한 프로세서 중에서 어플리케이션을 이주시키기 위한 제2 재구성 가능한 프로세서를 검색할 수 있다(1030). 이 때, 멀티 코어 시스템의 동작 방법은 구동 중인 어플리케이션의 가상 아키텍쳐를 부분집합으로 하는 물리적 아키텍쳐를 갖는 프로세서를 어플리케이션을 이주시키기 위한 제2 재구성 가능한 프로세서로서 검색할 수 있다.
제2 재구성 가능한 프로세서가 검색되면, 멀티 코어 시스템의 동작 방법은 검색된 제2 재구성 가능한 프로세서로 어플리케이션을 이주(Migrate)시켜 로드 밸런싱을 수행할 수 있다(1040).
실시예에 따라서는, 어플리케이션이 이주 가능한 제2 재구성 가능한 프로세서가 복수 개 검색될 수 있다. 이러한 경우, 멀티 코어 시스템의 동작 방법은 검색된 복수 개의 제2 재구성 가능한 프로세서 중에서 부하가 가장 작은 재구성 가능한 프로세서를 검색할 수 있다. 또한, 부하가 가장 작은 재구성 가능한 프로세서가 검색되면, 멀티 코어 시스템의 동작 방법은 검색된 부하가 가장 작은 재구성 가능한 프로세서로 어플리케이션을 이주시켜 로드 밸런싱을 수행할 수 있다.
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
210: 어플리케이션 코드
211: 전체 HW 정보
212: 요구사항
220: 컴파일부
230: 바이너리 파일
240: 가상 아키텍쳐 생성 장치
241: 분석부
242: 생성부
243: 가상 HW 정보

Claims (15)

  1. 삭제
  2. 삭제
  3. 가상 아키텍쳐에 기반하여 자원을 분할하는 런타임 시스템의 동작 방법에 있어서,
    제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 생성하고, 제2 어플리케이션에 대응하도록 상기 재구성 가능한 프로세서의 제2 가상 아키텍쳐를 생성하는 단계;
    상기 제1 가상 아키텍쳐에 기반하여 상기 제1 어플리케이션에 대한 제1 바이너리 파일을 생성하고, 상기 제2 가상 아키텍쳐에 기반하여 상기 제2 어플리케이션에 대한 제2 바이너리 파일을 생성하는 단계; 및
    상기 제1 가상 아키텍쳐에서 상기 제1 바이너리 파일을 실행하고, 상기 제2 가상 아키텍쳐에서 상기 제2 바이너리 파일을 동시에 실행하는 단계
    를 포함하고,
    상기 제1 가상 아키텍쳐 및 상기 제2 가상 아키텍쳐는
    상기 재구성 가능한 프로세서의 물리적 아키텍쳐를 공유하지 않도록 생성되는 런타임 시스템의 동작 방법.
  4. 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템의 동작 방법에 있어서,
    어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 단계;
    상기 복수 개의 가상 아키텍쳐에 기반하여 상기 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 단계;
    상기 복수 개의 바이너리 파일 각각에 대하여, 상기 바이너리 파일의 일부를 상기 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하여 실행 성능을 기록하는 단계; 및
    상기 복수 개의 바이너리 파일 중 상기 실행 성능이 가장 높은 바이너리 파일을 선택하고, 상기 선택된 바이너리 파일에서 상기 실행된 일부를 제외한 나머지를 상기 선택된 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하는 단계
    를 포함하고,
    상기 어플리케이션에 대응하는 상기 가상 아키텍쳐를 복수 개 생성하는 단계는 상기 재구성 가능한 프로세서의 물리적 아키텍쳐의 부분집합에 기반하는 런타임 시스템의 동작 방법.
  5. 제4항에 있어서,
    상기 가상 아키텍쳐를 복수 개 생성하는 단계는
    상기 어플리케이션의 요구사항(Requirement) 및 상기 어플리케이션을 실행하는 시스템의 요구사항을 분석하는 단계;
    상기 어플리케이션의 특성을 분석하는 단계; 및
    상기 재구성 가능한 상기 프로세서의 물리적 아키텍쳐(Physical Architecture), 상기 어플리케이션의 요구사항, 상기 시스템의 요구사항 및 상기 어플리케이션의 특성에 기반하여, 상기 어플리케이션에 대응하는 상기 가상 아키텍쳐를 복수 개 생성하는 단계
    를 포함하는 런타임 시스템의 동작 방법.
  6. 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템의 동작 방법에 있어서,
    제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 단계;
    상기 복수 개의 제1 가상 아키텍쳐에 기반하여 상기 제1 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 단계;
    상기 제1 어플리케이션에 대한 가상 아키텍쳐 정보를 획득하는 단계;
    상기 획득된 가상 아키텍쳐 정보에 대응하는 유사 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보에서 검색하는 단계;
    상기 제2 어플리케이션이 사용한 제2 가상 아키텍쳐를 검색하는 단계;
    상기 복수 개의 제1 가상 아키텍쳐 중에서 상기 제2 가상 아키텍쳐와 유사도가 최대인 가상 아키텍쳐를 선택하는 단계; 및
    상기 선택된 유사도가 최대인 가상 아키텍쳐에 대응하는 바이너리 파일을 선택하는 단계
    를 포함하는 런타임 시스템의 동작 방법.
  7. 물리적 아키텍쳐가 상이한 재구성 가능한 프로세서를 복수 개 포함하는 멀티 코어 시스템에서, 가상 아키텍쳐에 기반하여 로드 밸런싱(Load Balancing)을 수행하는 멀티 코어 시스템의 동작 방법에 있어서,
    상기 복수 개의 재구성 가능한 프로세서 중에서 과부하가 발생한 제1 재구성 가능한 프로세서를 검색하는 단계;
    상기 제1 재구성 가능한 프로세서에서 구동 중인 어플리케이션에 대응하는 상기 가상 아키텍쳐를 획득하는 단계;
    상기 복수 개의 재구성 가능한 프로세서 중에서 상기 획득한 가상 아키텍쳐를 포함하는 상기 물리적 아키텍쳐를 갖는 제2 재구성 가능한 프로세서를 검색하는 단계; 및
    상기 제2 재구성 가능한 프로세서로 상기 어플리케이션을 이주시켜 로드 밸런싱을 수행하는 단계
    를 포함하는 멀티 코어 시스템의 동작 방법.
  8. 제7항에 있어서,
    상기 로드 밸런싱을 수행하는 단계는
    상기 제2 재구성 가능한 프로세서가 복수 개 검색되는 경우, 상기 검색된 복수 개의 제2 재구성 가능한 프로세서 중에서 부하가 가장 작은 재구성 가능한 프로세서를 검색하는 단계; 및
    상기 검색된 부하가 가장 작은 재구성 가능한 프로세서로 상기 어플리케이션을 이주시켜 상기 로드 밸런싱을 수행하는 단계
    를 포함하는 멀티 코어 시스템의 동작 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템에 있어서,
    어플리케이션에 대응하도록 재구성 가능한 프로세서의 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 생성부;
    상기 복수 개의 가상 아키텍쳐에 기반하여 상기 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 컴파일부;
    상기 복수 개의 바이너리 파일 각각에 대하여, 상기 바이너리 파일의 일부를 상기 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하여 실행 성능을 기록하고, 상기 복수 개의 바이너리 파일 중 상기 실행 성능이 가장 높은 바이너리 파일을 선택하며, 상기 선택된 바이너리 파일에서 상기 실행된 일부를 제외한 나머지를 상기 선택된 바이너리 파일에 대응하는 가상 아키텍쳐에서 실행하는 처리부
    를 포함하되,
    상기 생성부는 상기 재구성 가능한 프로세서의 물리적 아키텍쳐의 부분집합에 기반하여 상기 어플리케이션에 대응하는 상기 가상 아키텍쳐를 생성하는 런타임 시스템.
  13. 가상 아키텍쳐에 기반하여 실행 성능을 튜닝하는 런타임 시스템에 있어서,
    제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 복수 개 생성하는 생성부;
    상기 복수 개의 제1 가상 아키텍쳐에 기반하여 상기 제1 어플리케이션에 대한 바이너리 파일(Binary File)을 복수 개 생성하는 컴파일부;
    상기 제1 어플리케이션에 대한 가상 아키텍쳐 정보를 획득하고, 상기 획득된 가상 아키텍쳐 정보에 대응하는 유사 가상 아키텍쳐 정보를 갖는 제2 어플리케이션을 사전 정보에서 검색하며, 상기 제2 어플리케이션이 사용한 제2 가상 아키텍쳐를 검색하고, 상기 복수 개의 제1 가상 아키텍쳐 중에서 상기 제2 가상 아키텍쳐와 유사도가 최대인 가상 아키텍쳐를 선택하고, 상기 선택된 유사도가 최대인 가상 아키텍쳐에 대응하는 바이너리 파일을 선택하는 처리부
    를 포함하는 런타임 시스템.
  14. 물리적 아키텍쳐가 상이한 재구성 가능한 프로세서를 복수 개 포함하고, 가상 아키텍쳐에 기반하여 로드 밸런싱(Load Balancing)을 수행하는 멀티 코어 시스템에 있어서,
    상기 복수 개의 재구성 가능한 프로세서 중에서 과부하가 발생한 제1 재구성 가능한 프로세서를 검색하는 제1 검색부;
    상기 제1 재구성 가능한 프로세서에서 구동 중인 어플리케이션에 대응하는 상기 가상 아키텍쳐를 획득하는 제1 처리부;
    상기 복수 개의 재구성 가능한 프로세서 중에서 상기 획득한 가상 아키텍쳐를 포함하는 상기 물리적 아키텍쳐를 갖는 제2 재구성 가능한 프로세서를 검색하는 제2 검색부; 및
    상기 제2 재구성 가능한 프로세서로 상기 어플리케이션을 이주시켜 로드 밸런싱을 수행하는 제2 처리부
    를 포함하는 멀티 코어 시스템.
  15. 가상 아키텍쳐에 기반하여 자원을 분할하는 런타임 시스템에 있어서,
    제1 어플리케이션에 대응하도록 재구성 가능한 프로세서의 제1 가상 아키텍쳐(Virtual Architecture)를 생성하고, 제2 어플리케이션에 대응하도록 상기 재구성 가능한 프로세서의 제2 가상 아키텍쳐를 생성하는 생성부;
    상기 제1 가상 아키텍쳐에 기반하여 상기 제1 어플리케이션에 대한 제1 바이너리 파일을 생성하고, 상기 제2 가상 아키텍쳐에 기반하여 상기 제2 어플리케이션에 대한 제2 바이너리 파일을 생성하는 컴파일부; 및
    상기 제1 가상 아키텍쳐에서 상기 제1 바이너리 파일을 실행하고, 상기 제2 가상 아키텍쳐에서 상기 제2 바이너리 파일을 동시에 실행하는 처리부
    를 포함하고,
    상기 제1 가상 아키텍쳐 및 상기 제2 가상 아키텍쳐는
    상기 재구성 가능한 프로세서의 물리적 아키텍쳐를 공유하지 않도록 생성되는 런타임 시스템.
KR1020110110465A 2011-10-27 2011-10-27 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법 KR101894752B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020110110465A KR101894752B1 (ko) 2011-10-27 2011-10-27 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법
US13/438,205 US9703612B2 (en) 2011-10-27 2012-04-03 Virtual architecture generating apparatus and method, and runtime system, multi-core system and methods of operating runtime system and multi-core system
US15/646,747 US10613910B2 (en) 2011-10-27 2017-07-11 Virtual architecture generating apparatus and method, and runtime system, multi-core system and methods of operating runtime system and multi-core system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110110465A KR101894752B1 (ko) 2011-10-27 2011-10-27 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20130046102A KR20130046102A (ko) 2013-05-07
KR101894752B1 true KR101894752B1 (ko) 2018-09-05

Family

ID=48173834

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110110465A KR101894752B1 (ko) 2011-10-27 2011-10-27 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법

Country Status (2)

Country Link
US (2) US9703612B2 (ko)
KR (1) KR101894752B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286084B2 (en) 2013-12-30 2016-03-15 Qualcomm Incorporated Adaptive hardware reconfiguration of configurable co-processor cores for hardware optimization of functionality blocks based on use case prediction, and related methods, circuits, and computer-readable media

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205751A1 (en) * 2003-04-09 2004-10-14 Berkowitz Gary Charles Virtual supercomputer
US20060080638A1 (en) * 2004-08-25 2006-04-13 International Business Machines Corporation Automated multi-platform build and test environment for software application development
US20070294337A1 (en) * 2006-03-31 2007-12-20 Maria Gaos Client-side information processing system, apparatus and methods

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694346B1 (en) 1999-04-30 2004-02-17 International Business Machines Corporation Long running, reusable, extendible, virtual machine
WO2001090887A1 (fr) * 2000-05-25 2001-11-29 Fujitsu Limited Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement
US20030105617A1 (en) * 2001-12-05 2003-06-05 Nec Usa, Inc. Hardware acceleration system for logic simulation
EP1530137A1 (en) 2003-11-10 2005-05-11 Robert Bosch Gmbh Simulation system and computer-implemented method for simulation and verifying a control system
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US20070055957A1 (en) * 2005-09-07 2007-03-08 Richard Birenheide Remote debugging proxy
KR101205325B1 (ko) 2006-05-12 2012-11-29 삼성전자주식회사 시뮬레이션 시스템 및 그 방법
US8028290B2 (en) * 2006-08-30 2011-09-27 International Business Machines Corporation Multiple-core processor supporting multiple instruction set architectures
US8321849B2 (en) 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US8230425B2 (en) * 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
EP2090983A1 (en) * 2008-02-15 2009-08-19 Siemens Aktiengesellschaft Determining an architecture for executing code in a multi architecture environment
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8352952B2 (en) * 2008-12-01 2013-01-08 Citrix Systems, Inc. Systems and methods for facilitating virtualization of a heterogeneous processor pool
KR101068537B1 (ko) 2008-12-18 2011-09-28 한국전자통신연구원 가상화 플랫폼을 이용한 가상화 관리 장치 및 그 제어방법
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9129106B2 (en) * 2009-11-04 2015-09-08 Georgia Tech Research Corporation Systems and methods for secure in-VM monitoring
US8789026B2 (en) * 2011-08-02 2014-07-22 International Business Machines Corporation Technique for compiling and running high-level programs on heterogeneous computers
US9098309B2 (en) * 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US20130157639A1 (en) * 2011-12-16 2013-06-20 SRC Computers, LLC Mobile electronic devices utilizing reconfigurable processing techniques to enable higher speed applications with lowered power consumption
US9594578B2 (en) * 2012-02-28 2017-03-14 Red Hat, Inc. Hardware implementation of a virtual machine interpreter
US8489925B1 (en) * 2012-11-09 2013-07-16 Kaspersky Lab, Zao System and method for processing of system errors
US10747565B2 (en) * 2017-04-18 2020-08-18 Amazon Technologies, Inc. Virtualization of control and status signals

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205751A1 (en) * 2003-04-09 2004-10-14 Berkowitz Gary Charles Virtual supercomputer
US20060080638A1 (en) * 2004-08-25 2006-04-13 International Business Machines Corporation Automated multi-platform build and test environment for software application development
US20070294337A1 (en) * 2006-03-31 2007-12-20 Maria Gaos Client-side information processing system, apparatus and methods

Also Published As

Publication number Publication date
US20130111472A1 (en) 2013-05-02
KR20130046102A (ko) 2013-05-07
US9703612B2 (en) 2017-07-11
US10613910B2 (en) 2020-04-07
US20170308410A1 (en) 2017-10-26

Similar Documents

Publication Publication Date Title
Abdelhamid et al. Scalemine: Scalable parallel frequent subgraph mining in a single large graph
Knüpfer et al. Score-p: A joint performance measurement run-time infrastructure for periscope, scalasca, tau, and vampir
US9569179B1 (en) Modifying models based on profiling information
Knupfer et al. Score-P: A joint performance measurement run-time infrastructure for Periscope Scalasca TAU and Vampir
US20120054722A1 (en) Trace generating unit, system, and program of the same
Malakar et al. Optimal execution of co-analysis for large-scale molecular dynamics simulations
US20160077860A1 (en) Virtual machine placement determination device, virtual machine placement determination method, and virtual machine placement determination program
Sato et al. Whole program data dependence profiling to unveil parallel regions in the dynamic execution
KR102013582B1 (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
KR101962250B1 (ko) 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법
CN109144648B (zh) 统一地执行特征抽取的方法及系统
US9063735B2 (en) Reconfigurable processor and method for processing loop having memory dependency
KR101894752B1 (ko) 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법
Schmitt et al. CASITA: A tool for identifying critical optimization targets in distributed heterogeneous applications
Popov et al. Piecewise holistic autotuning of compiler and runtime parameters
Tsoumakos et al. The case for multi-engine data analytics
Cong et al. A systematic approach toward automated performance analysis and tuning
Wagner et al. Online performance analysis: an event-based workflow design towards exascale
Mirka et al. Automatic energy-efficiency monitoring of openmp workloads
JPWO2017135219A1 (ja) 設計支援装置、設計支援方法、および設計支援プログラム
JP2017010123A (ja) コンパイルを行う計算機、コンパイラ方法、およびコンパイラプログラム
Munir et al. A cost-based storage format selector for materialization in big data frameworks
WO2015014309A1 (en) Compiler and method for global-scope basic-block reordering
Singh et al. Snowpack: Efficient parameter choice for GPU kernels via static analysis and statistical prediction
Chand Requirements Evocation and Analysis using ETL in Cloud Environments

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