KR20130121412A - 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치 - Google Patents

모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치 Download PDF

Info

Publication number
KR20130121412A
KR20130121412A KR1020120044585A KR20120044585A KR20130121412A KR 20130121412 A KR20130121412 A KR 20130121412A KR 1020120044585 A KR1020120044585 A KR 1020120044585A KR 20120044585 A KR20120044585 A KR 20120044585A KR 20130121412 A KR20130121412 A KR 20130121412A
Authority
KR
South Korea
Prior art keywords
core
application
usage rate
cpu
maximum frequency
Prior art date
Application number
KR1020120044585A
Other languages
English (en)
Other versions
KR101463533B1 (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 KR1020120044585A priority Critical patent/KR101463533B1/ko
Publication of KR20130121412A publication Critical patent/KR20130121412A/ko
Application granted granted Critical
Publication of KR101463533B1 publication Critical patent/KR101463533B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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]
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Telephone Function (AREA)

Abstract

모바일 디바이스의 AMP 환경에서 각 어플리케이션의 CPU 사용량을 기반으로 스케줄링을 수행하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치가 제공된다. 스케줄링 방법은 어플리케이션의 실행 요청에 응답하여 제 1 동작 속도를 가진 제 1 코어가 상기 어플리케이션을 실행하고, 제 2 동작 속도를 가진 제 2 코어가 CPU의 사용률을 모니터링하는 단계 및 상기 CPU 사용률이 미리 설정한 제 1 사용률 미만인 경우 상기 어플리케이션을 제 2 코어가 실행하는 단계를 포함할 수 있다. 따라서, 전력 소모를 낮추고 모바일 장치의 배터리 사용 시간을 늘릴 수 있다.

Description

모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치{METHOD OF CORE SCHEDULING FOR ASYMMETRIC MULTI-CORE PROCESSOR IN A MOBILE DEVICE AND APPARATUS FOR PERFORMING THE SAME}
본 발명은 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 장치에 관한 것으로, 더욱 구체적으로는 전력 소모를 낮출 수 있는 코어 스케줄링 방법 및 모바일 장치에 관한 것이다.
프로세서의 성능은 빠르게 향상되어왔다. 코어의 성능을 향상하기 위해 out-of-order, pipelining 과 같은 기술을 발전시켜 적용하였다. 하지만 이러한 기술을 통한 성능 향상은 제한되었는데, 클럭 주파수를 일정 수준이상으로 높이게 될 경우 프로세서는 대량의 전력을 소비하게 되기 때문이다. 또한, 심각한 발열 문제를 동반하기 때문에 클럭 주파수의 증가를 이용한 프로세서의 성능 향상은 한계점에 도달했다. 따라서, 최근의 프로세서들은 멀티코어의 형태로 발전하여 병렬성을 높이는 방법으로 전체적인 시스템의 성능을 향상시키게 되었다.
멀티코어 프로세서는 주로 고성능을 목적으로 하는 PC, server 에서 활용되어 왔으나 최근에는 스마트폰, 태블릿과 같은 모바일 디바이스에도 채택하기 시작하였다. 멀티코어가 superscalar processor 보다 적은 전력을 소모하기는 하지만, 향후 더 많은 코어의 프로세서를 모바일 디바이스가 탑재한다면, 전력 소모는 늘어나게 될 것으로 예측된다.
최근 AMP(Asymmetric Multi-core Processor)라 불리는 프로세서의 형태가 등장하기 시작하였는데, 기존의 SMP(Symmetric Multi-core Processor)와는 다르게, 성능이 다른 코어들을 배치하여 single thread 에 대해서는 높은 처리량을 가지면서 동시에, 병렬성이 우수한 형태의 코어에 대한 연구가 진행되고 있다.
일반적으로 고성능의 코어는 보다 많은 처리량을 수용할 수 있도록 superscalar 의 기능을 최대한 많이 집적하도록 구성하며, 대용량 처리에 집중되어 성능은 좋지만 칩 내에서 차지하는 면적이 크고, 복잡한 구조이며 전력소모가 많다. 반면, 낮은 성능의 코어는 단순하고 기능이 적지만, 작고 효율성을 추구하게 된다. 상대적으로 작은 면적을 가지며, 전력 소모가 훨씬 적게 디자인이 가능하다.
AMP는 동일한 ISA(instruction set architecture)를 가지면서도 성능이 다른 코어들을 하나의 칩에 집적시킴으로써 제 1 동작 속도를 가진 제 1 코어의 장점과 제 2 동작 속도를 가진 제 2 코어 - 여기서, 상기 제 1 동작 속도는 제 2 동작 속도보다 빠른 것을 특징으로 함 - 의 장점을 모두 활용할 수 있다. 또한 각 코어의 ISA 가 동일하기 때문에 어느 코어에서 스레드를 수행시켜도 특별한 인스트럭션(instruction) 변환 과정 없이 실행이 가능하다.
한국 등록 특허 제 10 - 1065436 호("불확실한 계산량을 가진 실시간 병렬 작업을 위한 멀티코어 프로세서의 확률적 스케줄링 방법", 경상대학교산학협력단, 2011년 9월 8일 등록)
본 발명의 목적은 모바일 디바이스의 AMP 환경에서 각 어플리케이션의 CPU 사용량을 고려하여 CPU 사용량이 낮은 태스크를 제 2 동작 속도를 가진 제 2 코어에서 수행하고 제 1 동작 속도를 가진 제 1 코어 - 여기서, 상기 제 1 동작 속도는 제 2 동작 속도보다 빠른 것을 특징으로 함 - 의 전원을 차단함으로써 CPU 사용량 기반의 스케줄링을 수행하여 전력 소모를 낮추고 모바일 장치의 배터리 사용 시간을 늘릴 수 있는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법을 제공하는 것이다.
본 발명의 다른 목적은 모바일 디바이스의 AMP 환경에서 각 어플리케이션의 CPU 사용량을 고려하여 CPU 사용량이 낮은 태스크를 제 2 동작 속도를 가진 제 2 코어에서 수행하고 제 1 동작 속도를 가진 제 1 코어 - 여기서, 상기 제 1 동작 속도는 제 2 동작 속도보다 빠른 것을 특징으로 함 - 의 전원을 차단함으로써 CPU 사용량 기반의 스케줄링을 수행하여 전력 소모를 낮추고 배터리 사용 시간을 늘릴 수 있는 모바일 장치를 제공하는 것이다.
전술한 본 발명의 목적을 달성하기 위한 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법은 어플리케이션의 실행 요청에 응답하여, 제 1 동작 속도를 가진 제 1 코어가 상기 어플리케이션을 실행하고, 제 2 동작 속도를 가진 제 2 코어 - 여기서, 상기 제 1 동작 속도는 제 2 동작 속도보다 빠른 것을 특징으로 함 - 가 CPU의 사용률을 모니터링하는 단계; 및 상기 CPU 사용률이 미리 설정한 제 1 사용률 미만인 경우 상기 제 2 코어가 상기 어플리케이션을 실행하는 단계를 포함할 수 있다. 여기서, 상기 제 2 코어가 상기 어플리케이션을 실행하고 일정 시간이 경과하면 상기 제 1 코어의 전원을 차단하는 단계를 더 포함할 수 있다. 또한, 상기 전원을 차단하는 단계는 상기 CPU 사용률이 미리 설정한 제 2 사용률 미만인 경우, 상기 CPU 사용률이 상기 제 2 사용률 이상인 경우보다 적은 시간 경과 후 상기 제 1 코어의 전원을 차단하는 것을 특징으로 할 수 있다. 상기 제 2 사용률은 상기 제 1 사용률보다 적은 것을 특징으로 할 수 있다. 여기서, 상기 일정 시간은 사용자의 입력에 의해 설정될 수 있다. 또한, 상기 제 1 사용률은 상기 제 2 코어의 최대 주파수 및 제 1 코어의 최대 주파수를 기반으로 결정될 수 있다. 또한, 상기 제 1 사용률은 상기 제 2 코어의 최대 주파수를 상기 제 1 코어의 최대 주파수로 나눈 값을 기반으로 결정될 수 있다. 여기서, 상기 어플리케이션이 종료되면 상기 제 2 코어가 백그라운드 태스크를 수행하는 단계를 더 포함할 수 있다.
본 발명의 다른 목적을 달성하기 위한 모바일 장치는 어플리케이션의 실행 요청에 응답하여, 상기 어플리케이션을 실행하는 제 1 코어; 및 CPU의 사용률을 모니터링하고 상기 CPU 사용률이 미리 설정한 제 1 사용률 미만인 경우 상기 어플리케이션을 실행하는 제 2 코어를 포함할 수 있다. 여기서, 상기 제 2 코어가 상기 어플리케이션을 실행하고 일정 시간이 경과하면 상기 제 1 코어의 전원을 차단하는 제어부를 더 포함할 수 있다. 또한, 상기 제어부는 상기 CPU 사용률이 미리 설정한 제 2 사용률 미만인 경우, 상기 CPU 사용률이 상기 제 2 사용률 이상인 경우보다 짧은 시간 경과 후 상기 제 1 코어의 전원을 차단하는 것을 특징으로 할 수 있다. 여기서, 상기 제 2 사용률은 상기 제 1 사용률보다 적은 것을 특징으로 할 수 있다. 여기서, 사용자의 조작에 의해 수치를 입력받는 입력부를 더 포함하고, 상기 일정 시간은 상기 입력부를 통한 사용자의 입력에 의해 설정되는 것을 특징으로 할 수 있다. 상기 제 1 사용률은 상기 제 2 코어의 최대 주파수 및 제 1 코어의 최대 주파수를 기반으로 결정될 수 있고, 상기 제 1 사용률은 상기 제 2 코어의 최대 주파수를 상기 제 1 코어의 최대 주파수로 나눈 값을 기반으로 결정될 수 있다. 또한, 상기 제 2 코어는 상기 어플리케이션이 종료되면 백그라운드 태스크를 수행하는 것을 특징으로 할 수 있다.
전술한 본 발명의 일 실시예에 따른 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치에 따르면, 모바일 디바이스에서의 AMP 환경을 가정하여 각 어플리케이션의 CPU 사용량을 고려한 스케줄링 방법으로 전력 소모를 낮추어 스마트폰의 배터리 사용시간을 늘릴 수 있는 방안을 제시할 수 있다. 제안하는 스케줄링 방법을 사용하면 뮤직 플레이어와 같이 CPU 사용량이 낮은 태스크를 제 2 코어에서 수행하고 제 1 코어의 전원을 차단함으로써 배터리의 소모를 최소화할 수 있으며, 나아가 병렬로 처리되는 어플리케이션들은 성능까지 크게 향상될 수 있다.
도 1은 대기 모드 상태의 CPU 사용량을 나타내는 그래프이다.
도 2는 뮤직 플레이어를 실행하였을 때의 CPU 사용량을 나타내는 그래프이다.
도 3은 안드로이드 마켓 어플리케이션을 수행하였을 때의 CPU 사용량을 나타내는 그래프이다.
도 4는 어플리케이션의 특성에 따른 분류를 나타내는 그래프이다.
도 5는 본 발명의 일 실시예에 따른 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법의 개념도이다.
도 6은 본 발명의 일 실시예에 따른 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법의 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 모바일 장치의 구성을 나타내는 블록도이다.
도 8은 워크 로드를 제 1 코어와 제 2 코어에서 수행시킬 때, 워크 로드의 전체 수행 시간과 요청(request) 당 처리 시간을 나타내는 그래프이다.
도 9는 AMP 환경에서 CPU-bound 워크 로드와 I/O-bound 워크 로드의 코어 할당에 따른 완료 시간을 비교하는 그래프이다.
도 10은 다양한 코어의 조합에 따른 워크 로드의 처리 시간 및 각 코어로 워크 로드의 스케줄링 여부를 나타내는 그래프이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 명세서의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한 본 발명의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 포함한 것으로 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있고 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리범위에 포함된다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
또한, 이하 제 1 동작 속도를 가진 제 1 코어와 제 2 동작 속도를 가진 제 2 코어에 대해, 제 1 동작 속도는 제 2 동작 속도보다 빠는 것을 특징으로 한다.
도 1은 대기 모드 상태의 CPU 사용량을 나타내는 그래프이고, 도 2는 뮤직 플레이어를 실행하였을 때의 CPU 사용량을 나타내는 그래프이며, 도 3은 안드로이드 마켓 어플리케이션을 수행하였을 때의 CPU 사용량을 나타내는 그래프이다.
도 1 내지 3을 참조하여, 어플리케이션의 분류를 하기에서 설명한다. 도 1 내지 3은 스마트폰에서 동작하는 여러 종류의 어플리케이션들을 대상으로 하여 CPU 사용량을 보여준다. 도 1은 대기모드 상태의 CPU 사용량을 나타낸다. 도 1에 도시된 바와 같이, 대기모드 상태에서의 CPU 사용량은 1% 내외의 매우 낮은 사용률을 보인다.
도 2는 뮤직 플레이어를 실행하였을 때의 CPU 사용률을 나타낸다. 도 2에 도시된 바와 같이 선곡이나 볼륨 조절 등의 플레이어 기능을 처리할 경우는 com.android.music 프로세스가 CPU 를 조금 사용하지만, 사용자의 입력이 없을 경우는 주로 media server 프로세스만 CPU를 사용한다.
도 3은 안드로이드 마켓 어플리케이션을 수행시켰을 때의 CPU 사용률을 나타낸다. 도 3에 도시된 바와 같이 서버와의 트래픽이 많으면 CPU 사용률이 늘어나는 것을 확인할 수 있다.
도 4는 어플리케이션의 특성에 따른 분류를 나타내는 그래프이다.
상기 도 1 내지 3의 내용을 정리하면 도 4와 같다. 대부분의 어플리케이션들을 크게 2가지로 분류할 수 있게 된다. CPU 사용률이 높은 H 그룹은 빠른 응답 시간(response time)이 필요하여 제 1 코어를 사용하면 전체적인 성능 측면에서 유리할 것이다. L 그룹은 제 2 코어에서 수행되면 제 1 코어에서 수행될 때와 비교해보면 성능은 크게 떨어지지 않으면서 전력 소모는 줄일 수 있게 될 것이다.
AMP 의 제 1 코어와 제 2 코어는 동일한 ISA(instruction set architecture)를 사용하기 때문에 어느 코어에서 스레드를 수행시켜도 특별한 인스트럭션(instruction) 변환 과정 없이 실행이 가능하다. 하지만 AMP 하드웨어 위에서 동작하는 운영 체제가 이를 인지하지 못하고, 모두 동일한 코어로 취급하여 기존의 스케줄링 방식대로 태스크를 할당한다면 AMP의 장점을 100% 활용할 수 없게 되고, 결국 전체적인 성능의 저하를 보이게 된다.
또한 전력 소모의 측면에서 코어의 면적 대비 크기가 1/4 로 줄어들면 소모하는 전력량은 1/2 가 된다. 따라서 제 2 코어에서 수행시켜도 되는 어플리케이션들은 제 1 코어에서 제 2 코어로 이주시키고, 제 1 코어의 전원을 차단한다면 그만큼 전력 손실을 줄일 수 있게 된다.
도 5는 본 발명의 일 실시예에 따른 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법의 개념도이다. 도 5를 참조하여, 이하 비대칭 멀티 프로세서 코어 스케줄링 방법을 상세히 설명한다.
도 5에 도시된 바와 같이, 스마트폰이 대기 모드(Standby mode, S510) 상태일 때는 AMP의 제 2 코어(20)에 모든 백그라운드 태스크를 할당한다면 기존의 듀얼코어를 사용하는 기기보다 배터리 소모를 줄여 대기시간을 연장할 수 있을 것이다. 현재 듀얼 코어 스마트폰들은 코어의 사용량이 줄어들 때는 주파수를 낮추는 방법으로 전력 소모량을 줄인다. 하지만 주파수만 줄인다고 하여 제 2 코어(20)만큼 전력 절감 효과를 가져올 수는 없다.
다시 도 5를 참조하면, 액티브 모드(Active mode, S520) 상태로 전환될 때, 제 1 코어(10)가 어플리케이션을 실행할 수 있다(S521). 스마트폰 사용자들은 대개 어플리케이션의 동작 속도에 대하여 관대하지 못하기 때문에 사용자의 QoS를 만족시켜 주는 것이 중요하다. 따라서 사용자의 입력이 스크린에 전달되어 어플리케이션이 실행된다면 제 1 코어(10)에 할당해주어야 할 것이다. 그래서, 항상 fore-ground 태스크를 제 1 코어(10)에 할당시켜주는 것을 원칙으로 한다.
이때 CPU 사용량을 모니터링하는 작업(S523)을 제 2 코어에서 시작할 수 있다. 미리 설정한 제 1 CPU 사용량 미만인 경우, 상기 어플리케이션을 제 2 코어(20)에서 실행될 수 있도록 Core Affinity를 설정할 수 있다(S525). 보다 상세히 설명하면, 초 단위로 모니터링을 하여 CPU 사용량에 따라 예를 들어 세 가지 클래스로 나눌 수 있다. 예를 들어, 상기 CPU 사용량이 미리 설정한 제 1 CPU 사용량 이상인 경우 하이 클래스(High class)로 분류할 수 있고, 상기 CPU 사용량이 미리 설정한 제 1 CPU 사용량 미만이고 미리 설정한 제 2 CPU 사용량 이상인 경우 미디엄 클래스(Medium class)로 분류할 수 있으며, 상기 CPU 사용량이 상기 제 2 CPU 사용량 미만인 경우 로우 클래스(Low class)로 분류할 수 있다.
여기서, 제 2 코어(20)의 최대 주파수를 제 1 코어(10)의 최대 주파수로 나눈 값을 퍼센트로 구하여 문턱(threshold) 값으로 정할 수 있다. 상기 문턱 값이 상기 제 1 CPU 사용량이 될 수 있다. 제 1 코어가 제 2 코어보다 두 배만큼 빠르다면 문턱(threshold) 값은 50% 가 될 수 있다.
상기 문턱 값을 제 1 코어(10)를 켜고 끄는 기준으로 사용할 수 있다. 예를 들어, CPU 사용량이 100% 를 기준으로 문턱 값 이상을 ‘하이’클래스, 문턱 값부터 40%를 ‘미디엄’클래스, 그 미만의 낮은 CPU 사용률을 나타내는 어플리케이션을 ‘로우’클래스로 분류할 수 있다. 기본적인 알고리즘은 미디엄 클래스 및 로우 클래스의 어플리케이션들은 제 2 코어(20)에서 동작할 수 있도록 CPU affinity 값을 설정할 수 있다.
특정 시간이 지나면 더 이상 사용자의 입력이 없을 것으로 판단하여 제 1 코어(10)를 끄도록 할 수 있다. 즉, 상기 제 2 코어(20)가 상기 어플리케이션을 실행하고 일정 시간이 경과하면, 더 이상 제 1 코어(10)를 사용하지 않으므로, 상기 제 1 코어(10)의 전원을 차단할 수 있다(S527).
여기서, 로우 클래스의 어플리케이션들은 제 1 코어(10)를 사용하지 않을 확률이 미디엄 클래스보다 높기 때문에 제 1 코어(10)를 끄기까지의 시간을 짧게 설정할 수 있다. 예를 들어, 상기 미디엄 클래스(Medium class)로 분류할 경우 30초가 경과한 후 제 1 코어(10)의 전원을 차단할 수 있다. 또한, 상기 CPU 사용량이 상기 제 2 CPU 사용량 미만인 경우 로우 클래스(Low class)로 분류할 수 있고, 예를 들면 15초가 경과한 후 제 1 코어(10)의 전원을 차단할 수 있다.
상기 30초 또는 15초와 같은 시간은 스마트폰의 스크린 타임아웃(screen timeout)처럼 사용자가 설정할 수 있다. 이는 사용자마다 선호도가 다르기 때문이다. 그래서 제 1 코어(10)를 사용하는 어플리케이션이 없으면 설정된 시간만큼 기다린 뒤 제 1 코어(10)의 전원을 차단할 수 있다.
도 6은 본 발명의 일 실시예에 따른 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법의 흐름도이다.
도 6에 도시된 바와 같이, 본 발명의 일 실시예에 따른 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법은 먼저 어플리케이션의 실행 요청에 응답하여, 제 1 코어가 상기 어플리케이션을 실행하고, 제 2 코어가 CPU의 사용률을 모니터링할 수 있다(S610). 전술한 바와 같이, 사용자들은 통상적으로 어플리케이션의 동작 속도에 대해서 관대하지 못하므로, 사용자의 QoS를 만족시켜주기 위해, 제 1 코어가 상기 어플리케이션을 실행하도록 할 수 있다. 제 2 코어는 CPU의 사용량을 모니터링 할 수 있다.
모니터링 결과, 상기 CPU 사용률이 미리 설정한 제 1 사용률 미만인 경우 상기 어플리케이션을 제 2 코어가 실행할 수 있다(S620). 즉, 상기 실행된 어플리케이션이 제 1 코어를 이용하지 않아도 속도의 지연이 없을 정도의 작업을 수행하는 경우에는, 제 2 코어가 상기 어플리케이션을 실행하도록 함으로써 보다 전력 소모를 줄일 수 있다.
여기서, 상기 제 1 사용률은 상기 제 2 코어의 최대 주파수 및 제 1 코어의 최대 주파수를 기반으로 결정될 수 있다. 보다 구체적으로, 상기 제 1 사용률은 상기 제 2 코어의 최대 주파수를 상기 제 1 코어의 최대 주파수로 나눈 값이 될 수 있다. 상기 코어들의 최대 주파수는 상기 각각의 코어들이 낼 수 있는 최대 성능과 관련성이 있다. 따라서, 상기 각각의 코어들의 최대 주파수를 기반으로 제 1 코어 또는 제 2 코어 중 어느 코어가 특정 어플리케이션을 수행할지 여부를 결정할 수 있다.
제 1 코어가 제 2 코어에 비해 2배 빠른 경우에는 50 %가 임계 값이 될 수 있다. 따라서, CPU 사용량이 50 % 를 초과하는 경우에는 계속해서 제 1 코어가 특정 어플리케이션을 수행하는 것이 바람직하다. CPU 사용량이 50 % 미만일 경우, 제 2 코어가 상기 특정 어플리케이션을 실행하는 것이 바람직하다.
상기 제 2 코어가 상기 어플리케이션을 실행하고 일정 시간이 경과하면 상기 제 1 코어의 전원을 차단할 수 있다(S630). 즉, 제 2 코어가 상기 어플리케이션을 실행하고 일정 시간이 경과한 경우에는 더 이상 제 1 코어를 사용하지 않으므로 제 1 코어의 전원을 차단하여 전력 소모를 최대한으로 줄이기 위함이다.
여기서, 상기 CPU 사용률이 미리 설정한 제 2 사용률 미만인 경우, 상기 CPU 사용률이 상기 제 2 사용률 이상인 경우보다 적은 시간 경과 후 상기 제 1 코어의 전원을 차단할 수 있다. 상기 제 2 사용률은 상기 제 1 사용률보다 적을 수 있다. 즉, 제 1 사용률과 제 2 사용률을 기준으로, 제 1 사용률보다 더 높은 사용률을 보일 경우에는 예를 들면 '하이'클래스로, 제 1 사용률보다 낮고 제 2 사용률보다 높은 경우에는 '미디엄'클래스로, 제 2 사용률보다 낮은 경우에는 '로우'클래스로 구분할 수 있다. '미디엄'클래스 또는 '로우'클래스일 경우에 제 2 코어가 상기 어플리케이션을 실행하도록 하고, 특히 '로우'클래스일 경우에는 더 짧은 시간이 경과한 후 상기 제 1 코어의 전원을 차단할 수 있다.
여기서, 상기 일정 시간은 사용자의 입력에 의해 설정될 수 있다. 즉, 스마트폰의 스크린 타임아웃과 같이, 사용자가 직접 설정할 수 있다. 이는 사용자마다 선호도가 다르기 때문이다.
이후, 상기 어플리케이션이 종료되면 모바일 장치는 대기 모드에 진입하게 되고, 상기 제 2 코어가 백그라운드 태스크를 수행할 수 있다(S640). 모바일 장치가 대기 모드 상태일 때는 제 2 코어가 백그라운드 태스크를 수행함으로써, 배터리의 소모를 획기적으로 줄일 수 있을 것이다.
도 7은 본 발명의 일 실시예에 따른 모바일 장치의 구성을 나타내는 블록도이다.
도 7에 도시된 바와 같이, 본 발명의 일 실시예에 따른 모바일 장치(700)는 제 1 코어(710), 제 2 코어(720), 제어부(730) 및 입력부(740)를 포함할 수 있다.
제 1 코어(710)는 어플리케이션의 실행 요청에 응답하여, 상기 어플리케이션을 실행할 수 있다.
제 2 코어(720)는 CPU의 사용률을 모니터링하고 상기 CPU 사용률이 미리 설정한 제 1 사용률 미만인 경우 상기 어플리케이션을 실행할 수 있다. 여기서, 상기 제 1 사용률은 상기 제 2 코어(720)의 최대 주파수 및 제 1 코어(710)의 최대 주파수를 기반으로 결정될 수 있다. 보다 구체적으로, 상기 제 1 사용률은 상기 제 2 코어(720)의 최대 주파수를 상기 제 1 코어(710)의 최대 주파수로 나눈 값을 기반으로 결정될 수 있다. 또한, 상기 제 2 코어(720)는 상기 어플리케이션이 종료되면 백그라운드 태스크를 수행할 수 있다.
제어부(730)는 상기 제 2 코어(720)가 상기 어플리케이션을 실행하고 일정 시간이 경과하면 상기 제 1 코어(710)의 전원을 차단할 수 있다. 상기 제어부(730)는 상기 CPU 사용률이 미리 설정한 제 2 사용률 미만인 경우, 상기 CPU 사용률이 상기 제 2 사용률 이상인 경우보다 짧은 시간 경과 후 상기 제 1 코어(720)의 전원을 차단할 수 있다. 상기 제 2 사용률은 상기 제 1 사용률보다 적은 것을 특징으로 할 수 있다.
입력부(740)는 사용자의 조작에 의해 수치를 입력받을 수 있고, 상기 일정 시간은 상기 입력부(740)를 통한 사용자의 입력에 의해 설정될 수 있다.
실험예
현재 상용화된 모바일 AMP가 없기 때문에 DVFS(dynamic voltage and frequency scaling)의 방법을 이용하여 제 1 코어와 제 2 코어로 동작하도록 실험환경을 구성하였다. AMD Opteron 6134 CPU 두 개를 사용하였고 제 1 코어의 클럭 주파수는 2.3 GHz, 제 2 코어의 클럭 주파수는 1.1 GHz로, 제 1 코어는 제 2 코어의 약 2배의 성능을 낼 수 있도록 설정했다. 실험에 사용된 워크 로드는 마이크로 벤치마크중 하나인 SHA-1과 sysbench의 File I/O를 사용하였다. 각각 CPU-bound, I/O-bound 의 특성을 지닌다.
도 8은 각각의 워크 로드를 제 1 코어(2.3GHz)와 제 2 코어(1.1GHz)에서 수행시켜서 워크 로드의 전체 수행시간과 요청(request) 당 처리 시간을 나타내고 있다. I/O-bound 워크 로드는 제 1 코어와 제 2 코어에서 비슷한 처리 시간을 나타낸다. 제 1 코어에서는 11.44, 제 2 코어에서는 11.25로 큰 차이가 없어서 워크 로드가 끝나는 시간도 거의 차이가 없음을 알 수 있다. 반면에 CPU-bound 워크 로드는 단위 시간당 요청 처리 시간의 차이가 크다. 제 1 코어가 1.55, 제 2 코어가 3.24로 동일한 워크 로드를 제 1 코어에서 수행시키면 더 빨리 끝나는 것을 확인할 수 있다.
따라서, CPU-bound 워크 로드는 고성능의 코어를 사용하는 것이 맞지만, 코어의 사용량이 많지 않은 워크 로드는 제 2 코어에서 수행되더라도 성능면에서 큰 차이가 없음을 알 수 있다. 현재 AMP 환경의 코어를 인식할 수 있는 OS가 없기 때문에 코어 사용량이 서로 다른 워크 로드를 잘 구별하여 제 1 코어와 제 2 코어에 할당하는 것이 중요하다.
도 9는 하나의 제 1 코어와 하나의 제 2 코어를 갖는 AMP 환경에서 CPU-bound 워크 로드와 I/O-bound 워크 로드가 어느 코어에 할당되는지에 따른 완료시간을 비교하고 있다. BEST 케이스에서는 CPU-bound 워크 로드가 제 1 코어로 I/O-bound 워크 로드가 제 2 코어로 각각 할당되어 그렇지 않은 WORST의 경우보다 전체 워크 로드의 처리시간이 줄어든 것을 확인할 수 있다. 전체 처리 시간이 줄어든다는 것은 그만큼 코어를 사용하는 시간을 줄여 배터리 소모를 줄일 수 있게 된다.
도 10은 다양한 코어의 조합에 따른 워크 로드의 처리 시간 및 각 코어로 워크 로드의 스케줄링 여부를 나타내는 그래프이다. 본 발명에서 제시한 알고리즘이 도 9의 BEST 케이스처럼 잘 동작하는지 여부를 도 10을 참조하여 확인할 수 있다. 코어의 개수를 변화시키면서 다양한 AMP 환경을 만들어보았다. Fore-ground 태스크를 가급적 빨리 처리할 수 있는 칩을 만드는 것이 제조 업체들의 주된 목표이다. 따라서 제 1 코어의 개수를 늘려가면서 워크 로드의 처리 시간과 각 코어로 워크 로드를 잘 스케줄링하는지를 알아보았다.
도 10의 제 1 코어(FC)와 제 2 코어(SC)의 앞에 적힌 숫자는 각 코어의 개수를 의미한다. 따라서 첫 번째 AMP 환경은 2개의 제 1 코어와 2개의 제 2 코어로 구성됨을 의미하는 것이다. 각 AMP 환경에 동일한 워크 로드를 수행한 결과인데 CPU-bound 워크 로드는 제 1 코어의 개수에 맞게 스레드를 늘려가면서 수행하였다.
제 1 코어에 CPU-bound 워크 로드가 잘 스케줄링되어 스레드의 개수가 증가함에 따라 전체 처리 시간도 짧아지는 것을 확인할 수 있다. 또한 제 1 코어는 사용하지 않으면 전원을 차단하므로 제 1 코어가 켜져 있는 시간을 줄임으로써 도 10의 각 AMP 환경 모두 거의 동일한 전력을 소비하면서 성능은 향상되는 것을 알 수 있다.
또한 부가적으로, 앞으로 어플리케이션들이 병렬성을 고려해서 만들어지게 되면 멀티 코어의 효율을 더 극대화할 수 있을 것이다.
10 : 제 1 코어 20 : 제 2 코어
700 : 모바일 장치 710 : 제 1 코어
720 : 제 2 코어 730 : 제어부
740 : 입력부

Claims (16)

  1. 어플리케이션의 실행 요청에 응답하여 제 1 동작 속도를 가진 제 1 코어가 상기 어플리케이션을 실행하고, 제 2 동작 속도를 가진 제 2 코어가 CPU의 사용률을 모니터링하는 단계; 및
    상기 CPU 사용률이 미리 설정한 제 1 사용률 미만인 경우 상기 제 2 코어가 상기 어플리케이션을 실행하는 단계를 포함하되,
    상기 제 1 동작 속도가 제 2 동작 속도보다 빠른 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  2. 제 1항에 있어서,
    상기 제 2 코어가 상기 어플리케이션을 실행하고 일정 시간이 경과하면 상기 제 1 코어의 전원을 차단하는 단계를 더 포함하는 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  3. 제 2항에 있어서, 상기 전원을 차단하는 단계는
    상기 CPU 사용률이 미리 설정한 제 2 사용률 미만인 경우, 상기 CPU 사용률이 상기 제 2 사용률 이상인 경우보다 적은 시간 경과 후 상기 제 1 코어의 전원을 차단하는 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  4. 제 3항에 있어서,
    상기 제 2 사용률은 상기 제 1 사용률보다 적은 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  5. 제 2항에 있어서, 상기 일정 시간은
    사용자의 입력에 의해 설정되는 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  6. 제 1항에 있어서, 상기 제 1 사용률은
    상기 제 2 코어의 최대 주파수 및 제 1 코어의 최대 주파수를 기반으로 결정되는 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  7. 제 6항에 있어서, 상기 제 1 사용률은
    상기 제 2 코어의 최대 주파수를 상기 제 1 코어의 최대 주파수로 나눈 값을 기반으로 결정되는 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  8. 제 1항에 있어서,
    상기 어플리케이션이 종료되면 상기 제 2 코어가 백그라운드 태스크를 수행하는 단계를 더 포함하는 것을 특징으로 하는 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법.
  9. 어플리케이션의 실행 요청에 응답하여, 상기 어플리케이션을 실행하는 제 1 코어; 및
    CPU의 사용률을 모니터링하고 상기 CPU 사용률이 미리 설정한 제 1 사용률 미만인 경우 상기 어플리케이션을 실행하는 제 2 코어를 포함하는 모바일 장치.
  10. 제 9항에 있어서,
    상기 제 2 코어가 상기 어플리케이션을 실행하고 일정 시간이 경과하면 상기 제 1 코어의 전원을 차단하는 제어부를 더 포함하는 것을 특징으로 하는 모바일 장치.
  11. 제 10항에 있어서, 상기 제어부는
    상기 CPU 사용률이 미리 설정한 제 2 사용률 미만인 경우, 상기 CPU 사용률이 상기 제 2 사용률 이상인 경우보다 짧은 시간 경과 후 상기 제 1 코어의 전원을 차단하는 것을 특징으로 하는 모바일 장치.
  12. 제 11항에 있어서,
    상기 제 2 사용률은 상기 제 1 사용률보다 적은 것을 특징으로 하는 모바일 장치.
  13. 제 10항에 있어서,
    사용자의 조작에 의해 수치를 입력받는 입력부를 더 포함하고,
    상기 일정 시간은 상기 입력부를 통한 사용자의 입력에 의해 설정되는 것을 특징으로 하는 모바일 장치.
  14. 제 9항에 있어서, 상기 제 1 사용률은
    상기 제 2 코어의 최대 주파수 및 제 1 코어의 최대 주파수를 기반으로 결정되는 것을 특징으로 하는 모바일 장치.
  15. 제 14항에 있어서, 상기 제 1 사용률은
    상기 제 2 코어의 최대 주파수를 상기 제 1 코어의 최대 주파수로 나눈 값을 기반으로 결정되는 것을 특징으로 하는 모바일 장치.
  16. 제 9항에 있어서, 상기 제 2 코어는
    상기 어플리케이션이 종료되면 백그라운드 태스크를 수행하는 것을 특징으로 하는 모바일 장치.
KR1020120044585A 2012-04-27 2012-04-27 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치 KR101463533B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120044585A KR101463533B1 (ko) 2012-04-27 2012-04-27 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120044585A KR101463533B1 (ko) 2012-04-27 2012-04-27 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치

Publications (2)

Publication Number Publication Date
KR20130121412A true KR20130121412A (ko) 2013-11-06
KR101463533B1 KR101463533B1 (ko) 2014-11-19

Family

ID=49851653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120044585A KR101463533B1 (ko) 2012-04-27 2012-04-27 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치

Country Status (1)

Country Link
KR (1) KR101463533B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101509938B1 (ko) * 2013-10-11 2015-04-08 고려대학교 산학협력단 태스크 스케줄링 방법 및 장치
US9785465B2 (en) 2014-05-27 2017-10-10 Samsung Electronics Co., Ltd. Method for task group migration and electronic device supporting the same
KR20200140380A (ko) * 2018-04-20 2020-12-15 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 프로세서 코어를 스케쥴링하는 방법, 장치, 단말 및 저장 매체
WO2023106636A1 (ko) * 2021-12-09 2023-06-15 삼성전자 주식회사 전자 장치 및 전자 장치에서 백그라운드 프로세스 제어 기반의 발열 제어 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100491541B1 (ko) * 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 네트웍 환경에서의 컨텐츠 동기화 시스템 및 동기화 방법
KR101128251B1 (ko) * 2004-10-11 2012-03-26 엘지전자 주식회사 실행 프로그램의 장치별 절전모드 제어 장치 및 방법
US8438410B2 (en) * 2010-06-23 2013-05-07 Intel Corporation Memory power management via dynamic memory operation states
KR101065436B1 (ko) * 2010-12-07 2011-09-19 경상대학교산학협력단 불확실한 계산량을 가진 실시간 병렬 작업을 위한 멀티코어 프로세서의 확률적 스케줄링 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101509938B1 (ko) * 2013-10-11 2015-04-08 고려대학교 산학협력단 태스크 스케줄링 방법 및 장치
US9785465B2 (en) 2014-05-27 2017-10-10 Samsung Electronics Co., Ltd. Method for task group migration and electronic device supporting the same
KR20200140380A (ko) * 2018-04-20 2020-12-15 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 프로세서 코어를 스케쥴링하는 방법, 장치, 단말 및 저장 매체
US11782756B2 (en) 2018-04-20 2023-10-10 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and apparatus for scheduling processor core, and storage medium
WO2023106636A1 (ko) * 2021-12-09 2023-06-15 삼성전자 주식회사 전자 장치 및 전자 장치에서 백그라운드 프로세스 제어 기반의 발열 제어 방법

Also Published As

Publication number Publication date
KR101463533B1 (ko) 2014-11-19

Similar Documents

Publication Publication Date Title
US10310588B2 (en) Forcing core low power states in a processor
US10664039B2 (en) Power efficient processor architecture
Doweck et al. Inside 6th-generation intel core: New microarchitecture code-named skylake
EP2513751B1 (en) System and method for controlling central processing unit power in a virtualized system
TWI477945B (zh) 用以控制處理器之渦輪加速模式頻率的方法、及能夠控制其之渦輪加速模式頻率的處理器
KR101476568B1 (ko) 코어 마다의 전압 및 주파수 제어 제공
US8793515B2 (en) Increasing power efficiency of turbo mode operation in a processor
US10990407B2 (en) Dynamic interrupt reconfiguration for effective power management
US7689838B2 (en) Method and apparatus for providing for detecting processor state transitions
CN101379453B (zh) 使用动态工作负载特征来控制cpu频率和电压调节的方法和装置
Attia et al. Dynamic power management techniques in multi-core architectures: A survey study
US20140082630A1 (en) Providing an asymmetric multicore processor system transparently to an operating system
WO2014035541A1 (en) Configuring power management functionality in a processor
EP3237998B1 (en) Systems and methods for dynamic temporal power steering
TW201337771A (zh) 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統
US9110723B2 (en) Multi-core binary translation task processing
KR101463533B1 (ko) 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치
US20140351828A1 (en) Apparatus and method for controlling multi-core system on chip
Ko et al. AMP aware core allocation scheme for mobile devices
Palmur et al. Cpuidle from user space
Chow Characterizing Dynamic Frequency and Thread Blocking Scaling in GPUs: Challenges and Opportunities
Chow Characterizing Dynamic Frequency and Thread Blocking Scaling in GPUs: Challenges and
Marcu Energy-Efficiency Study of Power-Aware Software Applications

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180917

Year of fee payment: 5