[go: up one dir, main page]

KR101862981B1 - 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법 - Google Patents

명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법 Download PDF

Info

Publication number
KR101862981B1
KR101862981B1 KR1020170015067A KR20170015067A KR101862981B1 KR 101862981 B1 KR101862981 B1 KR 101862981B1 KR 1020170015067 A KR1020170015067 A KR 1020170015067A KR 20170015067 A KR20170015067 A KR 20170015067A KR 101862981 B1 KR101862981 B1 KR 101862981B1
Authority
KR
South Korea
Prior art keywords
instruction set
execution time
instruction
power
parallel
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020170015067A
Other languages
English (en)
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 KR1020170015067A priority Critical patent/KR101862981B1/ko
Application granted granted Critical
Publication of KR101862981B1 publication Critical patent/KR101862981B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • G06F17/5009
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • 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)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 명령어 기반 카운터를 통한 성능 및 전력량 예측을 위한 것으로서, 일실시예에 따른 성능 및 전력량 예측 시스템은 명령어 집합으로부터 CPU 부분 명령어에 대한 소집합과 GPU 부분 명령어에 대한 소집합을 분할하는 명령어 분할 처리부, 및 상기 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측하는 산출부를 포함할 수 있다.

Description

명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법{SYSTEM AND METHOD FOR PREDICTING PERFORMANCE AND ELECTRIC ENERGY USING COUNTER BASED ON INSTRUCTION}
본 발명은 명령어 기반 카운터를 통한 성능 및 전력량 예측을 위한 것으로서, 다중코어 형태의 CPU(Central Processing Unit) 및 GPU(Graphic Processing Unit) 혼합 시스템에서의 프로그램 수행 성능을 예측하는 기술적 사상에 관한 것이다.
명령어(Instruction)는 범용 마이크로프로세서에서 각각 하나의 기능을 수행하는 가장 작은 단위로, RISC(Reduced Instruction Set Computer) 구조를 가진 현시대 대부분의 프로세서에서 그 종류가 대표적으로 수십 가지에서 프로세서의 구조적 차이에 따라 수백 가지로 나뉜다. 일반적으로 명령어에 따라 프로세서에서 수행 완료되기까지 소모되는 시간과 전력량이 차이가 있으며, 같은 명령어일지라도 프로세서의 구조에 따라 차이가 있다.
CPU 및 GPU 혼합 이종 멀티 프로세서 시스템에서의 프로그램 동작 구조는 하나의 프로그램에서 직렬적 처리, 병렬적 처리 및 GPU 가속부분이 시간상으로 구분될 수 있다.
일반적인 프로그램의 경우 직렬적 처리로만 이루어진 경우가 많으나, 독립적인 데이터 연산이 많은 서버의 경우 CPU의 코어에 따라 업무를 여러 단위로 나누어 각 코어에 할당하여 수행하는 경우가 많고, GPU 가속을 통해 수행하는 경우도 존재한다.
기존의 기술에서는 단일 코어에서만 성능/전력을 예측하기 때문에 현재 멀티코어, 이기종 시스템에서의 성능 또는 전력을 예측하기에 한계가 있다.
한국특허출원 제2015-0028298호 "DVFS를 지원하는 멀티코어 플랫폼에서의 전력할당 방법 및 장치" 한국특허출원 제2011-0066601호 "에너지 효율에 따른 멀티코어 프로세서용 응용프로그램의 데이터처리 판단방법" 국제특허출원 제WO2009/000625호 "Processor performance monitoring"
본 발명은 멀티코어나 이기종 시스템에서의 성능, 전력 등을 예측하는 것을 목적으로 한다.
본 발명은 연산장치의 구조에 따른 명령어의 실행시간 및 소모전력량을 예측하는 것을 목적으로 한다.
본 발명은 예측된 실행시간 및 소모전력으로부터 다중코어 형태의 CPU와 GPU가 혼합된 시스템에서의 프로그램 처리 성능을 예측하는 것을 목적으로 한다.
본 발명은 같은 프로그램을 동작 시킬 때 하드웨어의 사양에 따라 서로 다른 성능 변화를 예측하는 것을 목적으로 한다.
일실시예에 따른 성능 및 전력량 예측 시스템은 명령어 집합으로부터 CPU 부분 명령어에 대한 소집합과 GPU 부분 명령어에 대한 소집합을 분할하는 명령어 분할 처리부, 및 상기 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측하는 산출부를 포함할 수 있다.
일실시예에 따른 성능 및 전력량 예측 시스템은 이진 프로그램으로부터 상기 명령어 집합을 추출하는 명령어 추출부를 더 포함할 수 있다.
일실시예에 따른 상기 명령어 분할 처리부는, 상기 CPU 부분 명령어를 직렬적 명령어 집합 및 병렬적 명령어 집합으로 분할하고, 상기 GPU 부분 명령어를 데이터 이동 명령어 집합과 데이터 연산 명령어 집합으로 분할할 수 있다.
일실시예에 따른 상기 산출부는, 상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합 중에서 적어도 하나의 명령어 집합에 대한 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 산출하고, 상기 산출된 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 고려하여 시스템 수행시간 및 소모 전력량을 예측할 수 있다.
일실시예에 따른 상기 산출부는, 상기 병렬적 명령어 집합에 대한 실행시간을 산출하기 위해, 같은 시간대에 처리되는 병렬적 명령어 집합 중에서 가장 긴 실행시간을 갖는 명령어에 대한 실행시간을 상기 병렬적 명령어 집합에 대한 실행시간으로 산출할 수 있다.
일실시예에 따른 상기 산출부는, 하드웨어 성능 매개변수를 반영하여 상기 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측할 수 있다.
일실시예에 따른 상기 산출부는, CPU의 코어 개수, 파이프 라인 단계, GPU에서 데이터 전송 대역폭, 및 유휴소모전력 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용할 수 있다.
일실시예에 따른 상기 산출부는, 데이터가 연산되는 과정에서 처리되는 명령어의 수, 그리드(Grid), 블록(Block), 쓰레드(Thread)의 수 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용할 수 있다.
일실시예에 따른 성능 및 전력량 예측 방법은 명령어 추출부에서, 이진 프로그램으로부터 상기 명령어 집합을 추출하는 단계, 명령어 분할 처리부에서, 명령어 집합으로부터 CPU 부분 명령어에 대한 소집합과 GPU 부분 명령어에 대한 소집합을 분할하는 단계, 및 산출부에서, 상기 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측하는 단계를 포함할 수 있다.
일실시예에 따른 상기 소집합을 분할하는 단계는, 상기 CPU 부분 명령어를 직렬적 명령어 집합 및 병렬적 명령어 집합으로 분할하는 단계, 및 상기 GPU 부분 명령어를 데이터 이동 명령어 집합과 데이터 연산 명령어 집합으로 분할하는 단계를 포함할 수 있다.
일실시예에 따른 상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는, 상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합 중에서 적어도 하나의 명령어 집합에 대한 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 산출하는 단계, 및 상기 산출된 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 고려하여 시스템 수행시간 및 소모 전력량을 예측하는 단계를 포함할 수 있다.
일실시예에 따른 상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는, 상기 병렬적 명령어 집합에 대한 실행시간을 산출하기 위해, 같은 시간대에 처리되는 병렬적 명령어 집합 중에서 가장 긴 실행시간을 갖는 명령어에 대한 실행시간을 상기 병렬적 명령어 집합에 대한 실행시간으로 산출하는 단계를 포함할 수 있다.
일실시예에 따른 상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는, 하드웨어 성능 매개변수를 반영하여 상기 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측하는 단계를 포함할 수 있다.
일실시예에 따른 상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는, CPU의 코어 개수, 파이프 라인 단계, GPU에서 데이터 전송 대역폭, 및 유휴소모전력 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용하는 단계를 포함할 수 있다.
일실시예에 따른 상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는, 데이터가 연산되는 과정에서 처리되는 명령어의 수, 그리드(Grid), 블록(Block), 쓰레드(Thread)의 수 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용하는 단계를 포함할 수 있다.
일실시예에 따르면, 멀티코어나 이기종 시스템에서의 성능, 전력 등을 예측할 수 있다.
일실시예에 따르면, 연산장치의 구조에 따른 명령어의 실행시간 및 소모전력량을 예측할 수 있다.
일실시예에 따르면, 예측된 실행시간 및 소모전력으로부터 다중코어 형태의 CPU와 GPU가 혼합된 시스템에서의 프로그램 처리 성능을 예측할 수 있다.
일실시예에 따르면, 같은 프로그램을 동작 시킬 때 하드웨어의 사양에 따라 서로 다른 성능 변화를 예측할 수 있다.
도 1은 일실시예에 따른 성능 및 전력량 예측 시스템을 설명하는 도면이다.
도 2는 일실시예에 따른 성능 및 전력량 예측 시스템에 의한 처리 과정을 설명하는 도면이다.
도 3은 순차 태스크, 병렬 태스크, 및 GPU 가속의 처리 과정을 설명하는 도면이다.
도 4는 일실시예에 따른 성능 및 전력량 예측 방법을 설명하는 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 성능 및 전력량 예측 시스템(100)을 설명하는 도면이다.
성능 및 전력량 예측 시스템(100)은 다중코어, 이기종 시스템에서의 동작을 필요로 하는 프로그램에 대해서 수행시간 및 소모전력량과 같은 성능을 예측할 수 있다. 또한, 같은 프로그램을 동작 시킬 때 하드웨어의 사양에 따라 서로 다른 성능 변화를 예측할 수 있다.
이를 위해 성능 및 전력량 예측 시스템(100)은 시스템에서의 프로그램 수행 성능을 예측하기 위해, 각 프로세서의 하드웨어적 조건에 따라 프로그램 명령어의 실행시간 및 소모전력량을 산출하고, 명령어 집합으로부터 총 실행시간 및 소모전력을 산출함으로써, 다른 하드웨어적 성능을 가진 시스템에서의 성능 변화 예측이 가능하다.
일실시예에 따른 성능 및 전력량 예측 시스템(100)에 있어서 입력과 출력은 다음과 같다.
어셈블리 언어로 번역된 코드를 가진 프로그램과 기준하는 시스템에서 해당 프로그램을 실행한 명령어 집합을 입력으로 받고, 기준하는 시스템, 예측을 목표하는 시스템의 하드웨어 성능 매개변수를 입력으로 받는다. 여기서 하드웨어 성능 매개변수란, CPU에서 코어의 개수, 파이프라인 단계, GPU에서 데이터 전송 대역폭, 유휴소모전력을 포함할 수 있다.
성능 및 전력량 예측 시스템(100)은 입력을 토대로 목표하는 시스템에서 프로그램 수행 시 소모되는 시간 및 전력량을 결과로 얻을 수 있고, CPU와 GPU별 또는 각 CPU별 예측 성능 및 전력량을 결과로 얻을 수 있다.
보다 구체적으로, 일실시예에 따른 성능 및 전력량 예측 시스템(100)은 명령어 추출부(110), 명령어 분할 처리부(120), 및 산출부(130)를 포함할 수 있다.
일실시예에 따른 명령어 추출부(110)는 이진 프로그램으로부터 명령어 집합을 추출할 수 있다.
일실시예에 따른 명령어 추출부(110)는 수행하고자 하는 프로그램을 컴파일 하여 기계어 또는 어셈블리 언어로 번역된 명령어 집합을 얻을 수 있다. 번역된 명령어 집합에는 프로그램에서 다중코어 형태의 CPU 또는 GPU를 이용하기 위해 호출되는 API(Application Programming Interface)의 이름이 기재될 수 있다.
기계어로 번역된 프로그램은 하드웨어가 하나씩 읽어 처리할 수 있도록 정해진 규격의 명령어로 구성되어 있다.
일실시예에 따른 명령어 추출부(110)는 명령어를 추출하기 위하여 프로그램을 실행하면서 하드웨어에서 처리되는 명령어를 모두 기록할 수 있다.
실제로 처리되는 명령어의 순서 및 회수는 프로세서의 구조마다 크게 다르지 않으므로 대부분의 프로세서에서 같은 명령어 순서를 사용할 수 있다.
이 때 일실시예에 따른 명령어 추출부(110)는 위 항목과 같이 API의 이름이 이용되지 않고 해당 기능이 가진 물리적 또는 논리적 주소가 이용되기 때문에 위 항목에서 얻은 어셈블리어 집합과의 대조를 통해 API의 동작을 확인할 수 있다.
또한, 명령어 분할 처리부(120)는 명령어 집합으로부터 CPU 부분 명령어에 대한 소집합과 GPU 부분 명령어에 대한 소집합을 분할할 수 있다. 일실시예에 따른 산출부(130)는 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측할 수 있다.
명령어 분할 처리부(120)는 수행된 명령어 순서를 확인하며 하드웨어적 동작을 분석할 수 있다. 이 때 명령어 사이에서 호출되는 API의 이름을 토대로 다중코어 형태의 CPU에서 처리되는 명령어 구간을 구분할 수 있다. 또한, 명령어 분할 처리부(120)는 GPU 가속을 수행하는 구간을 특정할 수 있다. 이로써, 명령어 분할 처리부(120)는 단일코어에서의 직렬적 처리구간, 다중코어에서의 병렬적 처리구간, GPU 가속 구간으로 명령어 순서를 분할할 수 있다.
GPU에서는 메인 메모리에서 GPU 메모리로 전송하는 데이터의 양을 매번 파악할 수 있다. 이에 따라 산출부(130)는 GPU 가속이 일어나는 사건에 따라 전송되는 데이터의 양을 파악할 수 있다. 더불어 데이터가 연산되는 과정에서 처리되는 명령어의 수와 GPU 내부의 그리드(Grid), 블록(Block), 쓰레드(Thread)의 수를 파악할 수 있다. 한편, GPU마다 보유한 그리드, 블록, 쓰레드의 개수 및 크기는 다를 수 있으나 실제 사용하는 범위는 일반적으로 프로그램에서 정의되기 때문에, 파악된 정보를 다른 GPU에 적용하는 것이 가능하다.
정리하면, 일실시예에 따른 산출부(130)는 처리되는 명령어에 대한 전체 수행시간을 [수학식 1]과 같이 산출할 수 있다.
[수학식 1]
Figure 112017011303314-pat00001
[수학식 1]에서
Figure 112017011303314-pat00002
는 전체의 수행시간이고,
Figure 112017011303314-pat00003
는 CPU의 수행시간이며,
Figure 112017011303314-pat00004
는 GPU의 수행시간으로 해석될 수 있다.
산출부(130)는 다음의 [수학식 2]를 통해 CPU의 수행시간을 산출할 수 있다.
[수학식 2]
Figure 112017011303314-pat00005
[수학식 2]에서,
Figure 112017011303314-pat00006
는 CPU의 수행시간이고,
Figure 112017011303314-pat00007
는 CPU 부분 명령어들 중에서 직렬적 명령어에 대한 수행시간이고,
Figure 112017011303314-pat00008
는 CPU 부분 명령어들 중에서 병렬적 명령어에 대한 수행시간으로 해석될 수 있다.
즉, 산출부(130)는 모든 직렬 처리 수행시간과 모든 병렬 처리 수행시간의 합을 통해 CPU의 수행시간을 산출할 수 있다.
한편, 일실시예에 따른 산출부(130)는 [수학식 3]을 통해 GPU의 수행시간을 산출할 수 있다.
[수학식 3]
Figure 112017011303314-pat00009
[수학식 3]에서
Figure 112017011303314-pat00010
은 GPU의 수행시간으로 해석될 수 있다. 뿐만 아니라,
Figure 112017011303314-pat00011
는 데이터 이동 명령어에 의한 데이터 이동 시간,
Figure 112017011303314-pat00012
는 데이터 연산 명령어에 의한 데이터 연산 시간을 나타낼 수 있다.
보다 구체적인 처리 과정에 대해서는 이하 도 2를 통해 상세히 설명한다.
도 2는 일실시예에 따른 성능 및 전력량 예측 시스템에 의한 처리 과정(200)을 설명하는 도면이다.
본 발명에 따른 성능 및 전력량 예측 시스템은 어셈블리어와 같은 이진 프로그램(201)으로부터 실제 수행에 필요한 명령어 집합(202)을 추출할 수 있다.
성능 및 전력량 예측 시스템은 추출한 명령어 집합(202)에 대해 CPU 부분 명령어 소집합(203)과 GPU 부분 명령어 소집합(204)으로 분할할 수 있다.
CPU 부분 명령어 소집합(203)은 다중코어의 형태로 구현되는 CPU들이 처리하는 명령어 소집합으로서, 직렬적 명령어 집합(205)과 병렬적 명령어 집합(206)으로 구분될 수 있다.
성능 및 전력량 예측 시스템은 분할한 CPU 부분 명령어 소집합(203)에 대해 직렬적 명령어 집합(205)과 병렬적 명령어 집합(206)으로 분할하여 각각의 수행시간을 산출할 수 있다.
또한, 성능 및 전력량 예측 시스템은 분할한 GPU 부분 명령어 소집합(204)에 대해 데이터 이동 명령어 집합(207)과 데이터 연산 명령어 집합(208)으로 분할하여 각각의 수행시간을 산출할 수 있다.
이를 위해, 성능 및 전력량 예측 시스템의 명령어 분할 처리부는 CPU 부분 명령어 소집합(203)을 직렬적 명령어 집합(205) 및 병렬적 명령어 집합(206)으로 분할하고, GPU 부분 명령어 소집합(204)을 데이터 이동 명령어 집합(207)과 데이터 연산 명령어 집합(208)으로 분할할 수 있다.
성능 및 전력량 예측 시스템의 산출부는, 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합 중에서 적어도 하나의 명령어 집합에 대한 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 산출할 수 있다. 또한, 산출부는 산출된 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 고려하여 시스템 수행시간 및 소모 전력량을 예측할 수 있다.
한편, 산출부는 하드웨어 성능 매개변수(209)를 직렬적 명령어 집합(205), 병렬적 명령어 집합(206), 데이터 이동 명령어 집합(207), 및 데이터 연산 명령어 집합(208)에 반영하여 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측(210)할 수 있다.
보다 구체적으로, CPU의 코어 개수, 파이프 라인 단계, GPU에서 데이터 전송 대역폭, 및 유휴소모전력 중에서 적어도 하나를 하드웨어 성능 매개변수(209)로 이용하여 시스템 수행시간 및 소모 전력량을 예측할 수 있다.
또한, 산출부는 데이터가 연산되는 과정에서 처리되는 명령어의 수, 그리드(Grid), 블록(Block), 쓰레드(Thread)의 수 중에서 적어도 하나를 하드웨어 성능 매개변수로 이용할 수 있다.
도 3은 순차 태스크, 병렬 태스크, 및 GPU 가속의 처리 과정을 설명하는 도면(300)이다.
시스템 수행시간 및 소모 전력량을 예측하기 위해서, 순차 태스크(Sequential Task), 병렬 태스크(Parallel Task), 및 GPU 가속을 위한 수행시간을 합산하여 시스템 수행시간을 산출하고, 그에 따른 소모 전력량을 예측할 수 있다.
순차 태스크(Sequential Task)는 직렬적 명령어 집합으로 해석될 수 있고, 병렬 태스크(Parallel Task)는 병렬적 명령어 집합으로 해석될 수 있으며, GPU 가속을 위한 수행시간은 GPU 부분 명령어 소집합으로 해석될 수 있다.
일실시예에 따른 산출부는 순차 태스크에 의한 수행시간, 즉 직렬 처리 수행시간을 산출할 수 있다.
산출부는 해당 구간에서의 명령어 수행시간의 합을 통해 직렬 처리 수행시간(
Figure 112017011303314-pat00013
)을 산출할 수 있다. 순차 태스크에 포함되는 각 명령어 수행시간은 기본적으로 프로세서의 구조에 따른 사이클을 필요로 하며 파이프라인 구조상 다음 명령어에 따라서 일정 사이클을 절약할 수 있다.
각 사이클은 프로세서 성능에 기재된 수치 혹은 실험적으로 얻어진 값들을 이용하며, 이 사이클들은 프로세서의 동작 주파수에 관계 없이 항상 일정하며, 직렬 처리 수행시간은 프로세서의 동작 주파수로 나누어진다.
이를 기반으로, 직렬 처리 수행시간(
Figure 112017011303314-pat00014
)은 [수학식 4]를 통해 산출할 수 있다.
[수학식 4]
Figure 112017011303314-pat00015
[수학식 4]에서,
Figure 112017011303314-pat00016
은 프로세서의 구조에 따라 필요한 사이클의 수를 나타내며,
Figure 112017011303314-pat00017
은 다음 명령어에 따라서 절약할 수 있는 사이클의 수를 나타낸다. 또한,
Figure 112017011303314-pat00018
는 프로세서의 동작 주파수로 해석될 수 있다.
다음으로, 일실시예에 따른 산출부는 병렬 태스크에 의한 수행시간, 즉 병렬 처리 수행시간을 산출할 수 있다.
일례로 산출부는 병렬적 명령어 집합에 대한 실행시간을 산출하기 위해, 같은 시간대에 처리되는 병렬적 명령어 집합 중에서 가장 긴 실행시간을 갖는 명령어에 대한 실행시간을 병렬적 명령어 집합에 대한 실행시간으로 산출할 수 있다.
구체적으로, 산출부는 병렬 처리 수행시간(
Figure 112017011303314-pat00019
)을 [수학식 5]와 같이 해당 시점에서 동시에 이루어지는 코어당 직렬 처리 수행시간(
Figure 112017011303314-pat00020
) 중 가장 큰 값으로 산출할 수 있다. 이때, 코어당 직렬처리 수행시간(
Figure 112017011303314-pat00021
)은 직렬 처리 수행시간(
Figure 112017011303314-pat00022
)과 같은 방식으로 구한다
[수학식 5]
Figure 112017011303314-pat00023
Figure 112017011303314-pat00024
CPU의 하드웨어 사양이 달라지면 활용할 수 있는 병렬성에서도 차이가 발생하며 이는 성능에도 영향을 미친다. [수학식 6]에서 보는 바와 같이, 코어의 수와 최대로 활용될 수 있는 병렬성은 비례하며, 병렬성이 증가 할수록 코어당 처리할 연산양(
Figure 112017011303314-pat00025
)이 감소하여 코어당 직렬 처리 수행시간(
Figure 112017011303314-pat00026
) 또한 감소한다.
[수학식 6]
Figure 112017011303314-pat00027
=
Figure 112017011303314-pat00028
*
Figure 112017011303314-pat00029
[수학식 6]에서,
Figure 112017011303314-pat00030
은 호스트에 대한 병렬성,
Figure 112017011303314-pat00031
은 타겟에 대한 병렬성으로 해석될 수 있다.
다음으로, 산출부는 GPU 가속에 따른 수행시간(
Figure 112017011303314-pat00032
)를 산출할 수 있다.
GPU의 데이터 연산을 위해서는 메인 메모리에서 GPU 메모리로의 데이터 이동 혹은 복사가 필요하다. 산출부는 각각의 데이터 이동 시간(
Figure 112017011303314-pat00033
)과 데이터 연산시간(
Figure 112017011303314-pat00034
)을 합해 GPU의 총 수행시간(
Figure 112017011303314-pat00035
)을 예측할 수 있다.
먼저, 산출부는 [수학식 7]을 통해 데이터 이동 시간(
Figure 112017011303314-pat00036
)을 산출할 수 있다.
[수학식 7]
Figure 112017011303314-pat00037
[수학식 7]에서 보는 바와 같이, 산출부는 GPU 메모리로의 데이터 이동시간은 기본적으로 데이터의 양()을 메모리 버스의 대역폭(
Figure 112017011303314-pat00039
)으로 나눈 것으로 구할 수 있다. 참고로, [수학식 7]에서 대괄호 '[]'는 가우스 기호를 의미한다.
대역폭(
Figure 112017011303314-pat00040
)은 GPU의 하드웨어 성능에 기재된 것을 이용하거나 실험적으로 측정된 값을 이용한다. 더욱 정확히 하자면 1 바이트의 데이터를 옮기는 것과 64 바이트의 데이터를 옮기는 것은 같은 시간을 요구하는데, 이는 데이터가 한 번에
Figure 112017011303314-pat00041
만큼인 한 블록 또는 한 페이지단위로 이동을 하기 때문이다.
다음으로, 산출부는 [수학식 8]을 통해 GPU의 데이터 연산 시간(
Figure 112017011303314-pat00042
)을 산출할 수 있다.
[수학식 8]
Figure 112017011303314-pat00043
[수학식 8]에서 보는 바와 같이, 데이터 연산 시간(
Figure 112017011303314-pat00044
)은 각 명령어의 수행시간(
Figure 112017011303314-pat00045
)의 합으로 산출할 수 있다. 명령어의 수행시간(
Figure 112017011303314-pat00046
)은 실험적으로 측정할 수 있다.
한편, 산출부는 전체 소모전력은 CPU에서 소모된 전력(
Figure 112017011303314-pat00047
)과 GPU에서 소모된 전력(
Figure 112017011303314-pat00048
)의 합을 통해 전체 소모전력량(
Figure 112017011303314-pat00049
)을 산출할 수 있다.
이를 위해 산출부는 [수학식 9]를 통해 CPU에서 소모된 전력(
Figure 112017011303314-pat00050
)을 산출할 수 있다.
[수학식 9]
Figure 112017011303314-pat00051
CPU에서 소모된 전력(
Figure 112017011303314-pat00052
)은 정적 소모전력(
Figure 112017011303314-pat00053
)과 전체 수행시간(
Figure 112017011303314-pat00054
)의 곱, 그리고 모든 코어에서의 동적 소모전력량(
Figure 112017011303314-pat00055
)의 합으로 산출할 수 있다. 일례로, 정적 소모전력(
Figure 112017011303314-pat00056
)은 프로세서 성능에 기재된 수치 혹은 실험적으로 측정된 값을 이용할 수 있다.
한편, 산출부는 동적 소모전력량(
Figure 112017011303314-pat00057
)을 [수학식 10]으로 산출할 수 있다.
[수학식 10]
Figure 112017011303314-pat00058
산출부는 코어당 동적 소모전력량을 위해, 해당 코어에 할당된 명령어들에 대하여 명령어당 고유 소모전력과 상대 소모전력(
Figure 112017011303314-pat00059
)의 전체 합을 산출하여 구할 수 있다. 이 때 명령어들은 직렬적 혹은 병렬적으로 처리될 수 있으나 개별 코어의 관점에서 볼 때 구분하지 아니하여도 된다.
한편, 산출부는 [수학식 11]을 통해 GPU에서 소모된 전력(
Figure 112017011303314-pat00060
)을 산출할 수 있다.
[수학식 11]
Figure 112017011303314-pat00061
[수학식 11]에서 보는 바와 같이, 산출부는 GPU 소모된 전력(
Figure 112017011303314-pat00062
)에 대하여 정적 소모전력(
Figure 112017011303314-pat00063
)과 전체 수행시간(
Figure 112017011303314-pat00064
)의 곱, 데이터 이동 소비전력(
Figure 112017011303314-pat00065
)과 데이터 이동시간(
Figure 112017011303314-pat00066
)의 곱의 전체 합, 그리고 데이터 연산 소모전력량(
Figure 112017011303314-pat00067
)의 합으로 구한다. 일례로, 산출부는 프로세서 성능에 기재된 수치 또는 실험적으로 측정된 값을 정적 소모전력(
Figure 112017011303314-pat00068
)으로 이용할 수 있다.
한편, 산출부는 [수학식 12]를 통해 데이터 이동 소비전력(
Figure 112017011303314-pat00069
)을 산출할 수 있다.
[수학식 12]
Figure 112017011303314-pat00070
[수학식 12]에서 보는 바와 같이, GPU의 기종에 따라 데이터를 이동시킬 때 소모되는 전력이 다를 수 있다. 이 경우 산출부는 기준이 되는 전력
Figure 112017011303314-pat00071
에서 측정을 목표로 하는 기종과 기준이 되는 기종의 정적 소비전력의 비율로 구한다. 기준이 되는 전력은 실험적으로 측정하여 값을 얻는다.
또한, 산출부는 [수학식 13]을 통해 데이터 연산 소모전력량(
Figure 112017011303314-pat00072
)을 산출할 수 있다.
[수학식 13]
Figure 112017011303314-pat00073
GPU의 기종에 따라 데이터를 연산할때 소모되는 전력이 다를 수 있다. 이 경우에도 산출부는 위의 방식과 같이 기준이 되는 연산 소모전력과 측정하려는 기종의 비율을 구하여 연산 소모 전력량을 계산할 수 있다.
일실시예에 따른 산출부는 [수학식 14]를 이용해서 기준 데이터 연산 소모전력(
Figure 112017011303314-pat00074
)을 산출할 수 있다.
[수학식 14]
Figure 112017011303314-pat00075
일실시예에 산출부는 한 번의 GPU 커널 동작의 수행마다 정수형 데이터 연산 명령어, 부동소수형 데이터 연산 명령어, 분기 제어 명령어 등과 같은 명령어 분류 별 횟수
Figure 112017011303314-pat00076
를 측정할 수 있다. 이에 따라 산출부는 각 명령어 분류에 따른 기준 소모전력
Figure 112017011303314-pat00077
을 실험적으로 측정하여 횟수에 곱한 것을 모두 더하면 기준 데이터 연산 소모전력을 구할 수 있다.
도 4는 일실시예에 따른 성능 및 전력량 예측 방법을 설명하는 도면이다.
일실시예에 따른 성능 및 전력량 예측 방법은 이진 프로그램으로부터 상기 명령어 집합을 추출할 수 있다(단계 401).
또한, 일실시예에 따른 성능 및 전력량 예측 방법은 명령어 분할 처리부에서, 명령어 집합으로부터 CPU 부분 명령어에 대한 소집합과 GPU 부분 명령어에 대한 소집합을 분할하고, 분할된 부분 명령어 소집합들에 대한 시스템 수행시간 및 소모 전력량을 예측할 수 있다.
이를 위해, 일실시예에 따른 성능 및 전력량 예측 방법은 GPU 및 다중코어의 API에 대한 호출여부를 판단할 수 있다(단계 402). 만약, 호출하였다면 다중코어 및 GPU 수행에 따른 명령어를 기록한 뒤 프로그램 종료 여부를 판단할 수 있다(단계 405).
단계 402의 판단 결과, GPU 및 다중코어 API 호출하지 않았다면 단일코어 수행 명령어를 기록하고(단계 404), 단계 405로 분기하여 프로그램 종료 여부를 판단할 수 있다.
단계 405의 판단결과, 프로그램을 종료하지 않는 경우, 단계 401로 분기하여 새로운 명령어 집합의 추출 과정을 반복해서 수행할 수 있다.
다음으로, 성능 및 전력량 예측 방법은 단계 405의 판단결과 프로그램을 종료하지 않는 경우에 명령어 종류별 실행횟수 및 실행순서를 산출할 수 있다(단계 406).
또한, 성능 및 전력량 예측 방법은 단일코어, 다중코어, CPU 가속 부분별 실행시간 및 소모 전력량을 산출할 수 있다(단계 407).
성능 및 전력량 예측 방법은 CPU, GPU, 및 전체 수행시간, 소모전력량을 산출할 수 있다(단계 408).
결국, 본 발명을 이용하면 멀티코어나 이기종 시스템에서의 성능, 전력 등을 예측할 수 있다. 뿐만 아니라, 연산장치의 구조에 따른 명령어의 실행시간 및 소모전력량을 예측할 수 있고, 예측된 실행시간 및 소모전력으로부터 다중코어 형태의 CPU와 GPU가 혼합된 시스템에서의 프로그램 처리 성능을 예측할 수 있다. 또한, 같은 프로그램을 동작 시킬 때 하드웨어의 사양에 따라 서로 다른 성능 변화를 예측할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 성능 및 전력량 예측 시스템
110: 명령어 추출부
120: 명령어 분할 처리부
130: 산출부

Claims (15)

  1. 명령어 집합으로부터 CPU(Central Processing Unit) 부분 명령어에 대한 소집합과 GPU(Graphic Processing Unit) 부분 명령어에 대한 소집합을 분할하고, 상기 CPU 부분 명령어에 대한 소집합을 상기 CPU의 단일 코어에서 직렬로 처리하는 직렬적 명령어 집합 및 상기 CPU의 다중코어에서 병렬로 처리하는 병렬적 명령어 집합으로 분할하며, 상기 GPU 부분 명령어에 대한 소집합을 상기 GPU의 메모리에서 데이터를 수신하기 위한 데이터 이동 명령어 집합과 상기 수신하는 데이터를 상기 GPU에서 연산하기 위한 데이터 연산 명령어 집합으로 분할하는 명령어 분할 처리부; 및
    상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합에 대한 시스템 수행시간 및 소모 전력량을 예측하는 산출부
    를 포함하는 성능 및 전력량 예측 시스템.
  2. 제1항에 있어서,
    이진 프로그램으로부터 상기 명령어 집합을 추출하는 명령어 추출부
    를 더 포함하는 성능 및 전력량 예측 시스템.
  3. 삭제
  4. 제1항에 있어서,
    상기 산출부는,
    상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합 중에서 적어도 하나의 명령어 집합에 대한 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 산출하고,
    상기 산출된 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 고려하여 시스템 수행시간 및 소모 전력량을 예측하는 성능 및 전력량 예측 시스템.
  5. 제4항에 있어서,
    상기 산출부는,
    상기 병렬적 명령어 집합에 대한 실행시간을 산출하기 위해, 같은 시간대에 처리되는 병렬적 명령어 집합 중에서 가장 긴 실행시간을 갖는 명령어에 대한 실행시간을 상기 병렬적 명령어 집합에 대한 실행시간으로 산출하는 성능 및 전력량 예측 시스템.
  6. 제1항에 있어서,
    상기 산출부는,
    하드웨어 성능 매개변수를 반영하여 상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합에 대한 시스템 수행시간 및 소모 전력량을 예측하는 성능 및 전력량 예측 시스템.
  7. 제6항에 있어서,
    상기 산출부는,
    CPU의 코어 개수, 파이프 라인 단계, GPU에서 데이터 전송 대역폭, 및 유휴소모전력 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용하는 성능 및 전력량 예측 시스템.
  8. 제6항에 있어서,
    상기 산출부는,
    데이터가 연산되는 과정에서 처리되는 명령어의 수, 그리드(Grid), 블록(Block), 쓰레드(Thread)의 수 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용하는 성능 및 전력량 예측 시스템.
  9. 명령어 추출부에서, 이진 프로그램으로부터 명령어 집합을 추출하는 단계;
    명령어 분할 처리부에서, 상기 명령어 집합으로부터 CPU 부분 명령어에 대한 소집합과 GPU 부분 명령어에 대한 소집합을 분할하고, 상기 CPU 부분 명령어에 대한 소집합을 상기 CPU의 단일 코어에서 직렬로 처리하는 직렬적 명령어 집합 및 상기 CPU의 다중코어에서 병렬로 처리하는 병렬적 명령어 집합으로 분할하며, 상기 GPU 부분 명령어에 대한 소집합을 상기 GPU의 메모리에서 데이터를 수신하기 위한 데이터 이동 명령어 집합과 상기 수신하는 데이터를 상기 GPU에서 연산하기 위한 데이터 연산 명령어 집합으로 분할하는 단계; 및
    산출부에서, 상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합에 대한 시스템 수행시간 및 소모 전력량을 예측하는 단계
    를 포함하는 성능 및 전력량 예측 방법.
  10. 삭제
  11. 제9항에 있어서,
    상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는,
    상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합 중에서 적어도 하나의 명령어 집합에 대한 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 산출하는 단계; 및
    상기 산출된 실행횟수, 실행순서, 실행시간, 및 관련 코어에 대한 전력량을 고려하여 시스템 수행시간 및 소모 전력량을 예측하는 단계
    를 포함하는 성능 및 전력량 예측 방법.
  12. 제11항에 있어서,
    상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는,
    상기 병렬적 명령어 집합에 대한 실행시간을 산출하기 위해, 같은 시간대에 처리되는 병렬적 명령어 집합 중에서 가장 긴 실행시간을 갖는 명령어에 대한 실행시간을 상기 병렬적 명령어 집합에 대한 실행시간으로 산출하는 단계
    를 포함하는 성능 및 전력량 예측 방법.
  13. 제9항에 있어서,
    상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는,
    하드웨어 성능 매개변수를 반영하여 상기 분할된 직렬적 명령어 집합, 병렬적 명령어 집합, 데이터 이동 명령어 집합, 및 데이터 연산 명령어 집합에 대한 시스템 수행시간 및 소모 전력량을 예측하는 단계
    를 포함하는 성능 및 전력량 예측 방법.
  14. 제13항에 있어서,
    상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는,
    CPU의 코어 개수, 파이프 라인 단계, GPU에서 데이터 전송 대역폭, 및 유휴소모전력 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용하는 단계
    를 포함하는 성능 및 전력량 예측 방법.
  15. 제13항에 있어서,
    상기 시스템 수행시간 및 소모 전력량을 예측하는 단계는,
    데이터가 연산되는 과정에서 처리되는 명령어의 수, 그리드(Grid), 블록(Block), 쓰레드(Thread)의 수 중에서 적어도 하나를 상기 하드웨어 성능 매개변수로 이용하는 단계
    를 포함하는 성능 및 전력량 예측 방법.
KR1020170015067A 2017-02-02 2017-02-02 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법 Expired - Fee Related KR101862981B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170015067A KR101862981B1 (ko) 2017-02-02 2017-02-02 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170015067A KR101862981B1 (ko) 2017-02-02 2017-02-02 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR101862981B1 true KR101862981B1 (ko) 2018-05-30

Family

ID=62300134

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170015067A Expired - Fee Related KR101862981B1 (ko) 2017-02-02 2017-02-02 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101862981B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190085770A (ko) * 2018-01-11 2019-07-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102123117B1 (ko) * 2019-01-15 2020-06-15 연세대학교 산학협력단 다중 노드 시스템에서 성능과 전력을 예측하는 장치 및 그 방법
US11036559B2 (en) 2018-11-06 2021-06-15 Samsung Electronics Co., Ltd. Graphics processor and graphics processing method based on subdivided states

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110252411A1 (en) * 2010-04-08 2011-10-13 The Mathworks, Inc. Identification and translation of program code executable by a graphical processing unit (gpu)
JP2014056425A (ja) * 2012-09-12 2014-03-27 Nippon Telegr & Teleph Corp <Ntt> データ管理装置、データ管理システム、処理割当方法および処理割当プログラム
JP2015509622A (ja) * 2012-02-08 2015-03-30 インテル・コーポレーション 電力を使用するダイナミックcpugpuロードバランシング

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110252411A1 (en) * 2010-04-08 2011-10-13 The Mathworks, Inc. Identification and translation of program code executable by a graphical processing unit (gpu)
JP2015509622A (ja) * 2012-02-08 2015-03-30 インテル・コーポレーション 電力を使用するダイナミックcpugpuロードバランシング
JP2014056425A (ja) * 2012-09-12 2014-03-27 Nippon Telegr & Teleph Corp <Ntt> データ管理装置、データ管理システム、処理割当方法および処理割当プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190085770A (ko) * 2018-01-11 2019-07-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102603245B1 (ko) 2018-01-11 2023-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11036559B2 (en) 2018-11-06 2021-06-15 Samsung Electronics Co., Ltd. Graphics processor and graphics processing method based on subdivided states
KR102123117B1 (ko) * 2019-01-15 2020-06-15 연세대학교 산학협력단 다중 노드 시스템에서 성능과 전력을 예측하는 장치 및 그 방법

Similar Documents

Publication Publication Date Title
KR101839544B1 (ko) 이종 코어의 자동 부하 균형
US11119932B2 (en) Operation of a multi-slice processor implementing adaptive prefetch control
GB2524085A (en) Exception handling in microprocessor systems
KR101862981B1 (ko) 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법
CN111858031B (zh) 一种集群分布式资源调度方法、装置、设备及存储介质
KR20240058195A (ko) 데이터 처리장치 및 데이터 처리방법
WO2023107789A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
CN117806931A (zh) 一种在超算中心用于算力资源建模和评分的方法和装置
US20190294571A1 (en) Operation of a multi-slice processor implementing datapath steering
CN119201232A (zh) 指令处理设备、系统和方法
CN108021563B (zh) 一种指令间数据依赖的检测方法和装置
KR20250028875A (ko) 인공 신경망 모델을 실행하는 장치의 성능 및 전력 효율을 예측하는 방법 및 장치
US20240402757A1 (en) Accurate timestamp or derived counter value generation on a complex cpu
JP2012128771A (ja) 情報処理装置及びプログラム
CN101583926B (zh) 利用缓冲器便于指令执行的方法和系统
Tavares et al. Leveraging vcpu-utilization rates to select cost-efficient vms for parallel workloads
KR101820269B1 (ko) 마이그레이션 방법 및 시스템
KR20170065845A (ko) 프로세서 및 제어 방법
CN120162236B (zh) 芯片执行算子的性能预测方法、装置、电子设备和介质
JP6548848B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US9983879B2 (en) Operation of a multi-slice processor implementing dynamic switching of instruction issuance order
Cheng et al. SystemC coding guideline for faster out-of-order parallel discrete event simulation
US20250004906A1 (en) Adaptive heterogeneous application profiling
KR102123117B1 (ko) 다중 노드 시스템에서 성능과 전력을 예측하는 장치 및 그 방법
KR20120118271A (ko) 가상머신 이동 대상 선택 방법

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20240525

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20240525