KR20240025227A - Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법 - Google Patents

Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20240025227A
KR20240025227A KR1020220103194A KR20220103194A KR20240025227A KR 20240025227 A KR20240025227 A KR 20240025227A KR 1020220103194 A KR1020220103194 A KR 1020220103194A KR 20220103194 A KR20220103194 A KR 20220103194A KR 20240025227 A KR20240025227 A KR 20240025227A
Authority
KR
South Korea
Prior art keywords
memory
frequency
central processing
processing unit
dvfs
Prior art date
Application number
KR1020220103194A
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 KR1020220103194A priority Critical patent/KR20240025227A/ko
Priority to US18/180,427 priority patent/US20240061492A1/en
Priority to CN202310902861.8A priority patent/CN117590927A/zh
Publication of KR20240025227A publication Critical patent/KR20240025227A/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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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

Abstract

본 발명에 따른 프로세서는, DVFS(Dynamic Voltage and Frequency Scaling) 모듈을 구동하는 중앙 처리 유닛, 상기 중앙 처리 유닛의 동작에 필요한 데이터를 저장하는 메모리 계층, 및 상기 중앙 처리 유닛의 성능을 모니터링하거나 상기 메모리 계층에 연결된 시스템 버스의 트래픽을 모니터링함으로써 마이크로 아키텍처 정보를 생성하는 활동 모니터 유닛을 포함하고, 상기 DVFS 모듈은 상기 마이크로 아키텍처 정보를 이용하여 상기 메모리 계층에서 메모리 스톨이 발생하는 계층을 판별하고, 상기 판별된 계층을 억세스할 때 주파수를 높이는 것을 특징으로 한다.

Description

DVFS을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법{PROCESSOR FOR PERFORMING DYNAMIC VOLTAGE AND FREQUENCY SCALING, ELECTRONIC DEVICE HAVING THE SAME, AND OPERATING METHOD THEREOF}
본 발명은 DVFS(Dynamic Voltage and Frequency Scaling)을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법에 관한 것이다.
일반적으로, 모바일 환경에서의 멀티 쓰레드(multi-thread) 성능 증가를 위하여 코어의 개수가 증가하고 점점 어플리케이션 프로세서(application processor) 내에 여러 멀티미디어 시나리오에 특화된 마스터 IP(Intellectual Property)들이 지속적으로 추가되면서 모리를 사용하는 경쟁 주체가 다양화되고 있다. 따라서, 어플리케이션 프로세서는 DVFS(Dynamic Voltage and Frequency Scaling) 동작을 수행하여 어플리케이션 프로세서 내의 주파수/전압을 조절함으로써, 성능과 전력 소모 정도를 제어하고 있다.
본 발명의 목적은 신규한 DVFS 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 목적은 전력 소모를 줄이는 DVFS 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 목적은 성능을 향상시키는 DVFS 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 프로세서는, DVFS(Dynamic Voltage and Frequency Scaling) 모듈을 구동하는 중앙 처리 유닛; 상기 중앙 처리 유닛의 동작에 필요한 데이터를 저장하는 메모리 계층; 및 상기 중앙 처리 유닛의 성능을 모니터링하거나 상기 메모리 계층에 연결된 시스템 버스의 트래픽을 모니터링함으로써 마이크로 아키텍처 정보를 생성하는 활동 모니터 유닛을 포함하고, 상기 DVFS 모듈은 상기 마이크로 아키텍처 정보를 이용하여 상기 메모리 계층에서 메모리 스톨이 발생하는 계층을 판별하고, 상기 판별된 계층을 억세스할 때 주파수를 높이는 것을 특징으로 한다.
본 발명의 실시 예에 따른 프로세서의 동작 방법은, 성능 모니터 유닛 혹은 버스 트래픽 모니터 유닛에서 마이크로 아키텍처 정보를 모니터링하는 단계; 및 상기 마이크로 아키텍처 정보를 이용하여 중앙 처리 유닛, 캐쉬 메모리, 혹은 메모리 장치의 주파수를 제어하는 단계를 포함하고, 상기 성능 모니터 유닛은 상기 중앙 처리 유닛의 성능을 모니터링하고, 상기 버스 트래픽 모니터 유닛은 상기 캐쉬 메모리와 상기 메모리 장치 사이의 시스템 버스의 트래픽을 모니터링하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 전자 장치는, 프로세서; 및 상기 프로세서에 연결된 메모리 장치를 포함하고, 상기 프로세서는, DVFS(Dynamic Voltage and Frequency Scaling) 모듈을 구동하는 적어도 하나의 중앙 처리 유닛; 상기 적어도 하나의 중앙 처리 유닛의 동작에 필요한 데이터를 임시로 저장하는 캐쉬 메모리; 상기 캐쉬 메모리의 데이터를 시스템 버스를 통하여 상기 메모리 장치에 전송하는 메모리 인터페이스 회로; 및 상기 적어도 하나의 중앙 처리 유닛의 성능을 모니터링 하거나, 상기 시스템의 버스의 트래픽을 모니터링 하는 활동 모니터 유닛을 포함하고, 상기 DVFS 모듈은 상기 활동 모니터 유닛으로부터 마이크로 아키텍처 정보를 수집하고, 상기 마이크로 아키텍처 정보를 이용하여 상기 적어도 하나의 중앙 처리 유닛, 상기 캐쉬 메모리, 및 상기 메모리 인터페이스 회로 중에서 적어도 하나의 주파수를 제어하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 프로세서의 동작 방법은, 활동 모니터 유닛으로부터 마이크로 아키텍처 정보를 수집하는 단계; 상기 마이크로 아키텍처 정보를 이용하여 중앙 처리 유닛의 주파수를 결정하는 단계; 및 상기 마이크로 아키텍처 정보를 이용하여 메모리 계층의 주파수를 결정하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 전자 장치는, 성능 모니터링을 하거나 버스 트래픽을 모니터링 함으로써 마이크로 아키텍처 정보를 생성하는 활동 모니터 유닛; 상기 마이크로 아키텍처 정보를 이용하여 DVFS(Dynamic Voltage and Frequency Scaling) 모듈을 실행함으로써 클록 제어 정보를 생성하는 중앙 처리 유닛; 상기 중앙 처리 유닛의 동작에 필요한 데이터를 저장하는 캐쉬 메모리; 상기 캐쉬 메모리의 데이터를 시스템 버스를 통하여 저장하는 메모리 장치; 및 상기 클록 제어 정보를 이용하여 상기 중앙 처리 유닛, 상기 캐쉬 메모리, 및 상기 메모리 장치 중에서 적어도 하나의 주파수를 변경하는 클록 관리 유닛을 포함할 수 있다.
본 발명의 실시 예에 따른 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법은, 마이크로 아키텍처 정보를 이용하여 메모리 계층 별로 주파수를 제어함으로써, 전력 소모를 줄이면서 효율적으로 주파수를 관리할 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다.
도 1은 실시 예에 따른 전자 장치를 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 DVFS 모듈을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 메모리 계층별 DVFS 동작을 개념적으로 설명하는 도면이다.
도 4는 본 발명의 실시 예에 따른 프로세서의 DVFS 동작을 예시적으로 보여주는 도면이다.
도 5a, 도 5b, 도 5c는 AMU의 동작을 개념적으로 설명하는 도면들이다.
도 6은 본 발명의 실시 예에 따른 MH-DVFS 동작을 예시적으로 보여주는 도면이다.
도 7은 웹 브라우징 시나리오를 대상으로 기존 DVFS 방식과 본 발명의 MH-DVFS을 비교한 결과이다.
도 8은 본 발명의 실시 예에 따른 프로세서의 MSPC와 IPC의 평균치를 비교한 도면이다.
도 9는 본 발명의 실시 예에 따른 프로세서의 전력 소모를 비교한 도면이다.
도 10은 웹 브라우징 시나리오에서 IPC에 따른 MPI의 분포를 예시적으로 보여주는 도면이다.
도 11a는 OC의 주파수에 따른 사이클당 메모리 스톨을 보여주는 도면이고, 도 11b는 MEM의 주파수에 따른 사이클당 메모리 스톨을 보여주는 도면이다.
도 12는 웹 브라우징 시나리오에서 CPU와 메모리 계층의 각각에서 차지하는 소모 전류 비중을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 프로세서의 동작 방법을 예시적으로 보여주는 도면이다.
도 14은 본 발명의 다른 실시 예에 프로세서의 동작 방법을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 전자 장치의 동작을 설명하는 래더 다이어그램이다.
도 16은 본 발명의 실시 예에 따른 멀티-코어 시스템을 예시적으로 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 신경망 연산 시스템을 보여주는 도면이다.
도 19는 본 발명의 실시 예에 따른 신경망 연산 시스템의 계층구조를 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시 할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
일반적으로, 모바일 기기는 배터리 용량이 제한되므로, 다양한 종류의 어플리케이션의 성능을 충족하면서 전력 소모를 최소화하는 효율적인 DVFS(Dynamic Voltage and Frequency Scaling) 기법을 이용해야 한다. 일반적인 DVFS 방식은 CPU(Central Processing Unit) 수행 시간에 비례하여 주파수를 선택하고 있다. 이러한 DVFS 방식은 CPU 집중 업무(intensive job)을 수행할 때 대체로 적절하게 동작하지만, 메모리 집중 업무(memory intensive job)을 수행할 때 비효율적으로 동작하고 있다. 이는 메모리 집중 업무를 수행할 때, 전체 CPU 수행 시간 중에서 실제로 CPU가 동작한 시간 보다 메모리 스톨(memory stall; 메모리 억세스(memory access 동안 CPU가 대기 상태로 있는 것) 시간이 더 큰 비중을 차지하기 때문이다. 이러한 DVFS 방식은 실제로 CPU가 수행한 시간은 적음에도 불구하고 전체 수행 시간을 기준으로 주파수를 선택하기 때문에 요구 성능보다 더 큰 주파수로 동작하고 있다. 그 결과로써 불필요한 전력 소모가 야기되고 있다. 게다가, 메모리 스톨이 지속되더라도, 이러한 사실을 인지하지 못하였기 때문에 CPU 성능 저하가 야기되고 있다.
본 발명의 실시 예에 따른 프로세서, 그것을 포함하는 전자 장치 및 그것의 동작 방법은, 마이크로 아키텍처 정보를 근거로 하여 CPU, Outer Cache, 메모리의 주파수를 계층적으로 제어할 수 있다. 여기서 마이크로 아키텍처 정보는 IPC(Instruction Per Cycle) 정보 혹은 MSPC(메모리 스톨 Per Cycle) 정보를 포함할 수 있다. 이로써, 본 발명의 실시 예에 따른 프로세서, 그것을 포함하는 전자 장치 및 그것의 동작 방법은, 불필요한 CPU 전력 소모를 줄이고, 메모리 스톨을 최소화할 수 있다.
도 1은 실시 예에 따른 전자 장치(10)를 보여주는 도면이다. 도 1을 참조하면, 전자 장치(10)는 프로세서(100) 및 메모리 장치(200)를 포함할 수 있다. 도 1에 도시된 전자 장치(10)는 다양한 종류의 데이터 처리 장치로 이용될 수 있다. 예를 들어, 전자 장치(10)는 프로세서(100)가 채용된 모바일 장치일 수 있다. 또한, 전자 장치(10)는 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 혹은 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID), 웨어러블 컴퓨터, 사물 인터넷 (internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 혹은 e-북(e-book)에 해당될 수 있다.
전자 장치(10)은 다양한 종류의 메모리 장치(200)를 포함할 수 있다. 예를 들어, 메모리 장치(200)는 다양한 종류의 메모리 장치로 구현될 수 있다. 실시 예에 있어서, 메모리 장치(200)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Ramdom Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus Dynamic Ramdom Access Memory) 등과 같은 동적 랜덤 억세스 메모리(Dynamic Ramdom Access Memory, DRAM)로 구현될 수 있다. 또한, 메모리 장치(200)는 플래시 메모리(Flash Memory), PRAM(Phase-change RAM), MRAM(Magnetoresistive RAM), ReRAM(Resistive RAM) 및 FeRAM(Ferroelectric RAM) 중 적어도 하나로 구현될 수 있다.
프로세서(100)는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 시스템 온 칩(SoC)은 소정의 표준 버스 규격을 갖는 프로토콜이 적용된 시스템 버스를 포함할 수 있다. 이러한 시스템 버스에 연결되는 각종 IP(Intellectual Property)들을 포함할 수 있다. 시스템 버스의 표준 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 이외에도, SONICs Inc.의 uNetwork, IBM의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 적용될 수 있다.
프로세서(100)는 CPU(Central Processing Unit, 110), 캐쉬 메모리(120), 메모리 인터페이스 회로(130), 클록 관리 유닛(Clock Management Unit(CMU), 140), 활동 모니터 유닛(Activity Monitor Unit(AMU), 150), 및 전력 관리 집적 회로(Power Management Integrated Circuit(PMIC), 160)를 포함할 수 있다.
CPU(110)는 적어도 하나의 코어(112) 및 DVFS 모듈(114)을 포함할 수 있다. 코어(112)는 독립적인 프로세서일 수 있다. 코어(112)는 명령(instructions)을 실행할 수 있다. 또한, 코어(112)는 DVFS 동작을 수행하기 위한 DVFS 모듈(114)을 캐쉬 메모리(120)로부터 로드하고, 로딩된 DVFS 모듈(114)을 실행할 수 있다. 아래에서 모듈(module)은 각각의 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미하거나 특정한 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수 있다. 다만, 이에 한정되지 않으며 특정한 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서를 의미할 수 있다. 즉, 모듈이란 본 발명의 기술적 사상을 수행하기 위한 하드웨어 혹은 하드웨어를 구동하기 위한 소프트웨어의 기능적 혹은 구조적 결합을 의미할 수 있다.
또한, 코어(112)는 명령을 처리하는 도중, L2 캐시 미스(cache miss)가 발생하는 경우, 연산 동작을 일시적으로 중단하고, 메모리 인터페이스 회로(130)에 엑세스하여 명령 처리에 필요한 데이터를 메모리 장치(200)에 쓰거나 메모리 장치(200)로부터 읽을 수 있다. 아래에서는, 코어(112)가 메모리 인터페이스 회로(130)에 엑세스하는 동작은 코어(112)가 메모리 장치(200)에 엑세스하는 동작을 포괄하는 의미일 수 있다. 코어(112)가 명령 처리에 대한 연산 동작을 중단하고, 메모리 인터페이스 회로(130)에 엑세스하는 것을 메모리 엑세스 스톨(memory access stall)이라 정의할 수 있다.
DVFS 모듈(114)은 프로세서(100) 내의 각종 기능 블록들의 동작 상태를 판단하고, 판단 결과에 따라 각종 기능 블록들의 주파수 혹은 전압을 조절하기 위한 제어 신호들을 클록 관리 유닛(140) 혹은 전력 관리 집적 회로(160)에 제공할 수 있다. 실시 예에 있어서, DVFS 모듈(114)은 CPU(110)에 제공되는 클록 신호의 주파수와 전압을 조절할 수 있다. 이와 독립적으로 DVFS 모듈(114)은 메모리 인터페이스 회로(130)에 제공되는 클록 신호의 주파수와 전압을 조절할 수 있다.
또한, DVFS 모듈(114)은 코어(112)가 실질적으로 연산 동작을 수행하지 않는 메모리 엑세스 스톨 구간의 사이클을 고려하여, DVFS 동작을 수행할 수 있다. 아래에서는 사이클(cycle)은 소정의 구간의 시간을 나타내는 개념일 수 있다. 코어(112) 혹은 메모리 인터페이스 회로(130) 등의 동작 기반이 되는 클록 신호의 주파수에 따라 변경될 수 있다. 예를 들어, 사이클 값이 n인 경우는 동작의 기반이 되는 클록 신호의 n 주기에 대응하는 시간과 대응될 수 있다. 실시 예에 있어서, DVFS 모듈(114)은 제 1 구간 내에서 코어(112)가 명령을 처리하는 동작을 수행하는 구간의 코어 액티브 사이클을 메모리 엑세스 스톨 사이클에 관한 정보에 기초하여 코어(112)가 실질적으로 연산 동작을 수행하는 사이클만을 포함하도록 보정할 수 있다. 예를 들어, 메모리 엑세스 스톨 사이클에 관한 정보는 메모리 엑세스 스톨 사이클을 포함할 수 있다. 또한, 코어 액티브 사이클로부터 메모리 억세스 스톨 사이클을 감산함으로써 코어 액티브 사이클이 보정될 수 있다.
또한, DVFS 모듈(114)은 보정된 코어 액티브 사이클과 제 1 구간 내에서 코어(112)가 유휴 상태에 있는 구간의 코어 유휴 사이클을 이용하여 코어(112)의 로드를 연산할 수 있다. DVFS 모듈(114)은 코어(112)의 로드를 기초로 클록 관리 유닛(140)에 클록 제어 신호(CTR_CC)를 제공하거나, 전력 관리 집적 회로(160)에 전력 제어 신호(CTR_CP)를 제공할 수 있다.
또한, DVFS 모듈(114)은 CPU(110)와는 별개로 메모리 인터페이스 회로(130)에 대한 DVFS 동작을 수행할 수 있다. DVFS 모듈(114)은 메모리 인터페이스 회로(130)로부터 메모리 액티브 사이클(M_Tact)을 수집할 수 있다. 메모리 액티브 사이클(M_Tact)은 CPU(110) 혹은 다른 마스터 IP로부터 수신한 소정의 요청에 응답하여, 메모리 클록 도메인(M_CLK_Domain)에 포함된 메모리 인터페이스 회로(130) 및 메모리 장치(200)가 메모리 동작을 수행하는 사이클을 나타낸다. 실시 예에 있어서, 메모리 액티브 사이클(M_Tact)은 제 2 구간 내에서, 메모리 인터페이스 회로(130)가 CPU(110) 혹은 그 외의 마스터 IP로부터의 요청에 응답하여 메모리 장치(200)를 이용한 데이터 입출력 동작을 수행하는 구간의 데이터 트랜잭션 사이클 및 데이터 입출력 동작 수행을 위해 필요한 동작을 수행하는 구간의 준비 동작 사이클을 포함할 수 있다.
또한, DVFS 모듈(114)은 메모리 인터페이스 회로(130) 및 메모리 장치(200)를 통해 입출력하는 데이터의 대역폭과 대응되는 데이터 트랜잭션 사이클 이외에 메모리 장치(200)를 이용한 데이터 입출력 동작 수행을 위해 필요한 구간을 고려함으로써, 메모리 인터페이스 회로(130)에 대한 로드를 연산할 수 있다. DVFS 모듈(114)은 수집된 메모리 액티브 사이클을 기초로 메모리 인터페이스 회로(130) 및 메모리 장치(200)를 포함하는 메모리 클록 도메인(M_CLK_Domain)의 로드를 연산하고, 이를 기초로 메모리 인터페이스 회로(130)에 대한 DVFS 동작을 수행할 수 있다. 도 1에서 도시되지는 않았지만, 메모리 인터페이스 회로(130)와 메모리 장치(200)는 동일한 메모리 클록 도메인(M_CLK_Domain)에 포함되는 바, 메모리 장치(200)는 DVFS 동작 수행 결과 메모리 인터페이스 회로(130)와 동일한 클록 신호(CLK_M)를 수신하고, 동일한 전력(PW_M)을 수신할 수 있다.
또한, DVFS 모듈(114)은 AMU(150)로부터 마이크로 아키텍처 정보(INF_ARC)를 수신하고, 마이크로 아키텍처 정보(INF_ARC)을 이용하여 IP 별로 계층적 DVFS 동작을 수행할 수 있다. 여기서 마이크로 아키텍처 정보(INF_ARC)는 캐쉬 메모리(120) 및 메모리 인터페이스(130)의 사용량 혹은 버스(101)의 트래픽 정보 관련 정보를 포함할 수 있다. DVFS 모듈(114)은 온-더-플라이(on-the-fly) 혹은 실시간(real time)로 마이크로 아키텍처 정보(INF_ARC)를 모니터링 하고, 그 결과에 따라 IP 별 주파수/전압을 제어할 수 있다.
캐쉬 메모리(120)는 프로그램, 데이터, 혹은 명령을 일시적으로 저장하도록 구현될 수 있다. 캐쉬 메모리(120)는 휘발성 메모리 혹은 비휘발성 메모리로 구현될 수 있다. 캐쉬 메모리(120)는 CPU(110)의 동작에 필요한 데이터를 저장할 수 있다.
메모리 인터페이스 회로(130)는 캐쉬 메모리(120)의 데이터를 시스템 버스(101)을 통하여 메모리 장치(200)로 전송하도록 구현될 수 있다. 메모리 인터페이스 회로(130)는 메모리 장치(200)에 엑세스(access)하여, 메모리 장치(200)에 데이터를 기록하거나 메모리 장치(200)로부터 데이터를 읽을 수 있다. 메모리 인터페이스 회로(130)는 메모리 장치(200)와 인터페이스 할 수 있으며, 메모리 동작과 관련하여 메모리 장치(200)로 기록 및 독출 등의 각종 커맨드를 제공할 수 있다. 이에 따라, 메모리 인터페이스 회로(130)와 메모리 장치(200)는 같은 메모리 클록 도메인(M_CLK_Domain)에 포함될 수 있으며, 같은 메모리 클록 도메인(M_CLK_Domiain) 내의 메모리 인터페이스 회로(130) 및 메모리 장치(200)는 동일한 주파수를 갖는 클록 신호에 기초하여 메모리 동작을 수행할 수 있다.
CMU(140)은 클록 제어 신호(CTR_CC)에 응답하여 스케일링된 주파수를 갖는 클록 신호(CLK_C)를 CPU(110)에 제공하도록 구현될 수 있다.
AMU(150)은 CPU의 성능을 모니터링 하거나, 버스 트래픽을 모니터링 함으로써 마이크로 아키텍처 정보(INF_ARC)를 생성하도록 구현될 수 있다. AMU(150)는 캐쉬 메모리(120)와 메모리 인터페이스 회로(130) 사이의 사용량을 모니터링 할 수 있다. 또한, AMU(150)는 적어도 하나의 메모리 채널에 대한 버스 트래픽을 모니터링을 할 수 있다.
전력 관리 집적 회로(160)는 전력 제어 신호(CTR_CP)에 응답하여 스케일링된 크기를 갖는 전력(PW_C)을 CPU(110)에 제공하도록 구현될 수 있다. 도 1의 도시된 전력 관리 집적 회로(160)는 프로세서(100) 내에 구현되지만, 전력 관리 집적 회로(160)는 프로세서(100)의 외부에 구현될 수 있다. 또한, 프로세서(100)는 전력 관리 집적 회로(160) 대신 전력 관리 유닛을 포함하여 프로세서(100) 내에 기능 블록들에 제공되는 전력을 제어할 수 있다.
한편, 프로세서(100)는 버스(101)에 연결된 주변 블록을 포함할 수 있다. 실시 예에 있어서, 주변 블록은 적어도 하나의 마스터 IP(Intellectual Property)와 통신하는 IO 인터페이스 블록(input/output interface block), USB 호스트 블록(universal serial bus host block), USB 슬레이브 블록(universal serial bus slave block) 등 다양한 종류의 기능 블록들을 포함할 수 있다.
본 발명의 실시 예에 따른 전자 장치(10)는 마이크로 아키텍처 정보(INF_ARC)를 근거로 하여 메모리 계층 내에서 메모리 스톨이 발생하는 계층을 판별하고, 판별된 메모리 스톨 계층을 억세스할 때 주파수/전압을 상향할 수 있다. 이로써, 본 발명의 전자 장치(10)는 메모리 계층 별로 DVFS 기법을 적용함으로써, 전력 소모를 줄이면서 최적의 성능을 보장할 수 있다.
도 2는 본 발명의 실시 예에 따른 DVFS 모듈(114)을 예시적으로 보여주는 도면이다. 도 2을 참조하면, DVFS 모듈(114)은 DVFS 관리자(114-1), CMU 장치 드라이버(114-2), 및 PMIC 장치 드라이버(114-3)를 포함할 수 있다. DVFS 모듈(114)은 활동 모니터 유닛(152)로부터 코어 액티브 사이클을 포함하는 제 1 카운트 정보(CNT1) 및 메모리 엑세스 스톨 사이클을 포함하는 제 2 카운트 정보(CNT2)를 수집할 수 있다.
DVFS 관리자(114_1)은 DVFS 동작을 전반적으로 제어할 수 있다. 실시 예에 있어서, 따른 DVFS 관리자(114_1)은 활동 모니터 유닛(150)로부터 코어 액티브 사이클을 포함하는 제 1 카운트 정보(CNT1), 제 2 카운트 정보(CNT2)를 수집하고, 캐쉬 메모리(120)로부터 임계 CPI(TH_CPI)를 수집할 수 있다. DVFS 관리자(114_1)은 코어의 메모리 엑세스 스톨 사이클에 대한 정보를 생성하기 위해 임계 CPI(TH_CPI)를 이용할 수 있다. 여기서 임계 CPI(TH_CPI)는 코어가 메모리 인터페이스 회로(130)에 대한 엑세스 동작이 필요 없는 복수의 명령들을 처리하는 데에 소요되는 액티브 사이클을 측정하고, 이를 하나의 명령을 처리하기 위해 소요되는 사이클로 변환한 값일 수 있다. 즉, DVFS 관리자(114)은 이러한 임계 CPI(TH_CPI)을 이용하여 코어 액티브 사이클에 포함된 메모리 엑세스 스톨 사이클의 비율을 도출할 수 있다. 실시 예에 있어서, DVFS 관리자(114_1)이 생성하는 메모리 엑세스 스톨 사이클에 대한 정보는 SPI(memory access Stall cycle Per Instruction)을 포함할 수 있다.
또한, DVFS 관리자(114_1)은 제 1 카운트 정보(CNT1) 및 제 2 카운트 정보(CNT2)를 이용하여 코어 액티브 사이클로부터 메모리 엑세스 스톨 사이클을 감산함으로써, 코어가 연산 동작을 수행하는 사이클만을 포함하는 보정된 코어 액티브 사이클을 생성할 수 있다. DVFS 관리자(114_1)은 보정된 코어 액티브 사이클과 보정된 코어 액티브 사이클 및 코어 유휴 사이클의 합에 대한 비율을 이용하여 정확한 코어의 로드를 계산할 수 있다. DVFS 관리자(114_1)은 코어의 로드를 기초로 CMU 장치 드라이버(114_2)와 PMIC 장치 드라이버(114_3)의 각각을 제어할 수 있다. DVFS 모듈(114_1)은 코어 액티브 사이클 내에 포함된 메모리 엑세스 스톨 사이클을 정확하게 카운트하여 생성하고, 이를 이용하여 정확한 코어의 로드를 도출함으로써 효율적인 DVFS 동작을 수행할 수 있다.
또한, DVFS 관리자(114-1)은 아키텍처 정보, 예를 들어, 제 1 및 제 2 카운트 정보(CNT1, CNT2)를 이용하여 메모리 스톨에 따라 메모리 계층별로 최적의 DVFS 동작을 수행하는 MH-DVFS을 포함할 수 있다.
활동 모니터 유닛(150)은 코어 성능 파라미터들을 측정하거나 버스 트래픽을 측정하도록 구현될 수 있다. 활동 모니터 유닛(150)은 액티브 사이클 카운터(151) 및 메모리 억세스 스톨 사이클 카운터(152)를 포함할 수 있다. 액티브 사이클 카운터(151)는 제 1 구간동안 코어가 명령들을 처리하는 동작을 수행하는 구간의 시간을 카운트하여 코어 액티브 사이클을 측정할 수 있다. 제 1 구간은 DVFS 관리자(114_1)에 의해 설정되는 관리자 윈도우(관리자 window)일 수 있다. 여기서 제 1 구간의 길이는 코어에 대한 DVFS 동작 방식에 따라 다르게 변경될 수 있다. 메모리 엑세스 스톨 사이클 카운터(152)는 코어 액티브 사이클 내에서 코어가 메모리 인터페이스 회로(130)에 엑세스하는 구간을 카운트함으로써 메모리 엑세스 스톨 사이클을 측정할 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 계층별 DVFS 동작을 개념적으로 설명하는 도면이다. 도 3에 도시된 바와 같이, 프로세서(100)는 메모리 스톨의 정도에 따라 CPU-Memory 경로의 주파수를 계층적으로 제어함으로써 빠르게 메모리 스톨을 해소하고 불필요한 CPU 전력 소모 제거할 수 있다.
프로세서(100)는 CPU-Memory 경로 중 병목(bottleneck)이 되는 요소의 주파수를 증가시킴으로써 메모리 스톨을 빠르게 해결할 수 있다. 또한, 프로세서(100)는 메모리 스톨이 높고 CPU 처리량이 낮을 경우 CPU의 주파수를 낮추어 불필요한 CPU 전력 소모 제거할 수 있다.
MH-DVFS은 AMU로부터 수집한 마이크로 아키텍처 정보(INF_ARC)를 근거로 하여 메모리 계층(memory hierarchy) 내에서 메모리 스톨이 발생하는 레이어를 판별할 수 있다(S1). MH-DVFS는 메모리 스톨이 발생한 레이어에 억세스할 때 영향을 주는 DVFS 도메인의 주파수를 상향 설정할 수 있다(S2). 이때 설정할 각 도메인의 주파수는 최저 에너지를 달성하는 조합으로 결정될 수 있다. 반면에, CPU의 생산성이 낮을 경우(low IPC and low MSPC), MH-DVFS는 CPU 주파수 하향 설정할 수 있다(S3).
도 4는 본 발명의 실시 예에 따른 프로세서(40)의 DVFS 동작을 예시적으로 보여주는 도면이다. MH-DVFS는 메모리 계층 DVFS 동작을 수행할 수 있다. CPU DVFS 관리자는 CPU의 동작 주파수를 결정할 수 있다. OC DVFS 관리자는 Outer Cache의 동작 주파수를 결정할 수 있다. MEM DVFS 관리자는 memory의 동작 주파수를 결정할 수 있다. AMU(44)는 CPU(41)의 마이크로 아키텍처 정보를 제공할 수 있다. AMU(44)는 PMU와 BTMU를 포함할 수 있다. CPU(41)는 작업(job)을 처리하는 H/W 장치이다. 내부 캐쉬(inner cache)는 CPU 내부에 위치한 캐쉬 메모리이다. 외부 캐쉬(outer cache; 42)는 CPU(41)와 메모리 장치(43) 사이에 위치한 캐쉬 메모리이다. 외부 캐쉬(42)는 독립적인 주파수 운영이 가능하다. 메모리 장치(43)는 독립적인 주파수 운영이 가능하다.
도 5a, 도 5b, 도 5c는 AMU의 동작을 개념적으로 설명하는 도면들이다.
도 5a에 도시된 바와 같이, PMU는 OC와 MIF 사이의 이벤트를 모니터링 할 수 있다. 도 5b에 도시된 바와 같이, PMU는 카운트 활성화 설정/클리어 이벤트 선택하는 레지스터들, 이벤트에 따라 카운팅하는 복수의 카운터들 및 카운트 정보를 저장하는 레지스터들을 포함할 수 있다. 예를 들어, 레지스터들은, CPU_CYCLE, INST_RETIRED, L3D_CACHE, L3D_CACHE_REFILL, STALL_BACKEND_MEM, L2D_CACHE_REFILL, L3D_CACHE_REFILL, L2 PREFETCH REFILL, L3D_CACHE_REFILL_RD, LL_Cache_Rd, LL_Cache_Miss_Rd을 저장할 수 있다. 도 5c에 도시된 바와 같이, BTMU는 CPU에 연결된 버스의 트래픽을 모니터링 할 수 있다.
도 6은 본 발명의 실시 예에 따른 MH-DVFS 동작을 예시적으로 보여주는 도면이다. MH-DVFS는 AMU로부터 마이크로 아키텍처 정보를 수집할 수 있다. 이러한 마이크로 아키텍처 정보는 IPC(Instruction Per Cycle, 매 cycle 당 CPU가 처리한 instruction의 개수, 도 2의 CNT1), MSPC(Memory Stall Per Cycle, 매 cycle 당 CPU가 메모리 스톨 상태로 있었던 회수, 도 2의 CNT2) 일 수 있다.
IPC가 낮고 MSPC가 높을 경우(즉, CPU가 명령을 처리하는 시간 보다 메모리 스톨에 의해 대기하는 시간이 더 많을 경우), MH-DVFS는 CPU DVFS 관리자를 통해 CPU 주파수를 낮출 수 있다. 이에 불필요한 CPU 전력 소모가 감소 될 수 있다.
일반적으로 메모리 스톨은 CPU에서 멀리 위치하고 있는 Memory보다는 가깝게 위치하고 있는 Outer Cache에 더 큰 영향을 받는다. 따라서 MSPC가 높다면(즉, CPU가 메모리 스톨에 의해 대기 상태로 있는 빈도가 높은 경우), data fetching을 지연시키는 병목(bottleneck)은 Outer Cache에 있을 가능성이 매우 높다. 이에 MSPC가 높을 경우, MH-DVFS는 OC DVFS 관리자를 통해 Outer Cache의 동작 주파수를 우선적으로 높일 수 있다. 이로써 메모리 스톨이 해소될 수 있다.
또한, Outer Cache의 주파수를 높였음에도 불구하고 메모리 스톨이 계속해서 지속된다면, 병목(bottleneck)은 Outer Cache가 아닌 Memory에 있을 가능성이 높다. MSPC가 높은 상황이 일정 시간 이상 지속될 경우, MH-DVFS는 MEM DVFS 관리자를 통해 Memory의 동작 주파수를 높일 수 있다. 이로써, 메모리 스톨이 해소될 수 있다.
실시 예에 있어서, MH-DVFS은 마이크로 아키텍처 정보를 이용하여 내부 캐쉬 메모리의 주파수(예를 들어, freq_CPU)를 변경할 수 있다. 실시 예에 있어서, MH-DVFS은 마이크로 아키텍처 정보를 이용하여 CPU의 주파수(freq_CPU)를 결정하는 제 1 관리자, 마이크로 아키텍처 정보를 이용하여 캐쉬 메모리의 주파수(freq_OC)를 결정하는 제 2 관리자, 마이크로 아키텍처 정보를 이용하여 메모리 인터페이스 회로의 주파수(freq_MEM)를 결정하는 제 3 관리자를 제어할 수 있다. 실시 예에 있어서, 마이크로 아키텍처 정보에 따라 제 1 관리자, 제 2 관리자, 및 제 3 관리자의 실행 순서가 결정될 수 있다. 실시 예에 있어서, MH-DVFS은 마이크로 아키텍처 정보를 이용하여 메모리 스톨이 발생하는 메모리 계층을 판별하고, 병목 현상을 해결하기 위하여 판별된 메모리 계층을 억세스할 때 대응하는 주파수를 상승시킬 수 있다.
정리하면, MH-DVFS은, AMU를 통해 수집한 IPC 및 MSPC를 근거로 하여 메모리 스톨의 빈도를 파악하고, 메모리 스톨 빈도가 높을 경우 먼저 Outer Cache의 주파수를 높이고, 그럼에도 불구하고 메모리 스톨이 지속되면 Memory의 주파수까지 올리는 계층적 DVFS 방식을 통해 메모리 스톨을 빠르게 해소할 수 있다. 또한, MH-DVFS는 CPU 수행 시간 대비 실제로 명령을 처리한 시간이 작다면 CPU의 주파수를 낮추어 불필요한 전력 소모를 줄일 수 있다.
도 7은 웹 브라우징 시나리오를 대상으로 기존 DVFS 방식과 본 발명의 MH-DVFS을 비교한 결과를 보여주는 도면이다. 우선 MSPC의 추이를 살펴보면, 전반적으로 MSPC가 낮아졌을 뿐만 아니라 순간적으로 MSPC가 등락할 때 위상의 변화폭도 작아지고 있다. 본 발명의 MH-DVFS는 기존보다 메모리 스톨을 빠르게 해소시키고 있다.
도 8은 본 발명의 실시 예에 따른 프로세서의 MSPC와 IPC의 평균치를 비교한 도면이다. 도 8을 참조하면, MSPC는 18% 감소(2.13→1.81)하고, IPC는 16% 증가(2.32→2.76)하고 있다. 빠른 메모리 스톨 해소로 인해 CPU의 명령 처리량이 늘어난 것으로 해석될 수 있다. 즉, 빠른 메모리 스톨 해소는 CPU 성능 향상으로 이어지고 있다.
도 9는 본 발명의 실시 예에 따른 프로세서의 전력 소모를 비교한 도면이다. 도 9를 참조하면, 전력 소모 측면에서 Outer Cache와 Memory의 경우 주파수 증가로 인해 전력 소모가 2배 가까이 증가하고 있다. 반면에 CPU의 전력 소모는 감소하여 총 전력 소모는 오히려 11% 감소(1176mW → 1056mW)하고 있다. 전체 전력 소모에서 CPU가 차지하는 비중이 Outer Cache와 Memory에 비해 매우 크기 때문에 나타난 결과이다. CPU 전력 소모가 감소한 이유는 low IPC & high MSPC일 때 CPU 주파수를 낮추는 MH-DVFS에 의한 효과와 빠른 메모리 스톨 해소로 인해 CPU의 수행 시간이 줄어듦으로써 주파수 감소에 따른 것이다.
일반적인 DVFS 방식은 CPU execution cycle 중 메모리 스톨 cycle을 decoupling하여 부하(load)를 계산하고, 이에 따라 보다 정확한 DVFS를 수행하고 있다. 결과적으로 일반적인 DVFS 방식은 CPU load에서 메모리 스톨이 차지하는 부분을 소거함으로써 불필요한 CPU 전력 소모를 제거하고 있다. 일반적인 DVFS 방식은 CPU load에서 메모리 스톨을 decoupling함으로써 CPU 주파수를 낮추어 CPU의 소모 전력을 줄이고 있으나, 메모리 스톨의 해결 방법에 대해서는 침묵하고 있다. 반면에 본 발명의 MH-DVFS 방식은 메모리 스톨을 빠르게 해소하고, 그에 따른 전체적인 전력 소모를 줄일 수 있다.
도 10은 웹 브라우징 시나리오에서 IPC(Instruction Per Cycle)에 따른 MPI(메모리 스톨 Per Instruction)의 분포를 예시적으로 보여주는 도면이다. 도 10을 참조하면, low IPC-high MPI 구간에서 군집이 형성되고 있다. 즉, 대체로 IPC가 낮을 때 메모리 스톨이 높은 패턴을 보이고 있다.
OC(Outer Cache), MEM(Memory) 주파수 상승에 의해 low IPC의 군집은 우하향(IPC 증가, MSPC 하락)하는 형태를 보인다. high IPC 영역에서는 큰 변화가 없다. 이는 메모리 스톨 해소에 의한 UX 성능 향상보다, 메모리 스톨 감소에 의한 CPU 전력 소모를 기대하게 한다.
도 11a는 OC의 주파수에 따른 사이클당 메모리 스톨을 보여주는 도면이고, 도 11b는 MEM의 주파수에 따른 사이클당 메모리 스톨을 보여주는 도면이다. 도 11a를 참조하면, OC/MEM 주파수에 따른 MSPC의 히스토그램의 변화가 나타난다. 각 주파수 조건에 따라 latency band (occurrence가 집중되는 영역)가 형성되고 있다. 주파수가 높아질 수록 좌측으로 이동하는 형태를 보인다. latency band는 memory structural latency(memory 구조적으로 access 시에 소모될 수밖에 없는 최소한의 latency)에 의해 형성되고 있다.
메모리 계층 상에서 각 계층은 structural latency와 latency band를 가지므로 이를 통해 메모리 스톨(메모리 스톨)을 발생시키는 layer를 구분할 수 있다. latency band의 좌측은 OC access, latency band를 포함한 나머지는 memory access로 구분되고 있다. latency band는 OC와 MEM 주파수에 모두 영향 받는다. 이는 memory access 시 OC를 거치기 때문이다. 상위 메모리 계층의 메모리 스톨 해소를 위해서 해당 계층뿐만 아니라 하위 계층의 주파수도 함께 높여야 할 수도 있다.
도 12는 웹 브라우징 시나리오에서 CPU와 메모리 계층의 각각에서 차지하는 소모 전류 비중을 예시적으로 보여주는 도면이다. 도 12를 참조하면, 일반적으로 CPU가 메모리 계층 보다 전력 소모가 훨씬 크다. 이 때문에, 메모리 계층의 주파수 증가로 전력이 증가하더라도 CPU 메모리 스톨 감소로 CPU 전력이 줄어든다. 이에 전체 에너지 감소가 이어질 수 있다.
도 13은 본 발명의 실시 예에 따른 프로세서(100)의 동작 방법을 예시적으로 보여주는 도면이다. 도 1 내지 도 13을 참조하면, 프로세서(100)의 동작 방법은 다음과 같이 진행될 수 있다. 프로세서(100)는 PMU/BTMU로부터 마이크로 아키텍처 정보(INT_ARC)를 모니터링 할 수 있다(S110). 프로세서(100)는 마이크로 아키텍처 정보(INT_ARC)를 이용하여 CPU/Cache/Memory의 주파수를 제어할 수 있다(S120).
실시 예에 있어서, 프로세서(100)는 사이클 당 CPU에서 인스트럭션을 실행하는 제 1 카운트 값(CNT1, 도 2 참조)을 카운트하거나 사이클 당 CPU의 메모리 스톨에 대한 제 2 카운트 값(CNT2, 도 2 참조)을 카운트함으로써 마이크로 아키텍처 정보(INT_ARC)를 획득할 수 있다. 실시 예에 있어서, 제 1 카운트 값(CNT1)과 제 2 카운트 값(CNT2)을 이용하여 Cache의 주파수가 상승될 수 있다. 실시 예에 있어서, Cache 주파수를 상승 시킨 후에, 제 1 카운트 값(CNT1)과 제 2 카운트 값(CNT2)을 이용하여 Memory의 주파수가 단계적으로 상승될 수 있다.
한편, 본 발명의 MH-DVFS 방법은 프로세서의 온도를 고려하여 동작할 수 있다.
도 14은 본 발명의 다른 실시 예에 프로세서(100)의 동작 방법을 예시적으로 보여주는 도면이다. 도 1 내지 도 14를 참조하면, 프로세서(100)는 다음과 같이 동작할 수 있다. 프로세서(100)는 PMU/BTMU로부터 마이크로 아키텍처 정보(INT_ARC)를 모니터링 할 수 있다(S210). 프로세서(100)는 내부 온도를 모니터링 할 수 있다(S220). 프로세서(100)는 마이크로 아키텍처 정보(INT_ARC) 및 온도를 이용하여 CPU/Cache/Memory의 주파수를 제어할 수 있다(S230).
도 15는 본 발명의 실시 예에 따른 전자 장치의 동작을 설명하는 래더 다이어그램이다. 도 1 내지 도 15를 참조하면, 전자 장치(10)는 다음과 같이 클록의 주파수를 관리할 수 있다.
PMU/BTMU는 CPU 관련된 INF_ARC를 모니터링 할 수 있다(S10). CPU는 PMU/BTMU로부터 INF_ARC을 수신할 수 있다(S11). CPU는 MH-DVFS를 통하여 전력 소모 및 성능을 위한 INF_ARC를 이용하여 CPU/CACHE/MEM의 최적의 주파수를 판별할 수 있다(S12). CPU는 최적의 주파수에 대응하는 클록 제어 정보를 CMU(Clock Management Unit)으로 전송할 수 있다(S13). CMU는 클록 제어 정보에 응답하여 CPU/CACHE/MEM의 주파수를 변경할 수 있다(S14). CPU는 변경된 CPU 주파수에 따른 클록(CLK_CPU)를 수신할 수 있다(S15). CACHE는 변경된 캐쉬 주파수에 따른 클록(CLK_CACHE)을 수신할 수 있다(S16). MEM는 변경된 메모리 주파수에 따른 클록(CLK_MEM)을 수신할 수 있다(S17).
한편, 본 발명은 멀티 코어 시스템에 적용 가능하다.
도 16은 본 발명의 실시 예에 따른 멀티-코어 시스템(1000)을 예시적으로 보여주는 도면이다. 도 16을 참조하면, 멀티-코어 시스템(1000)은 시스템 온 칩(SoC)과 워킹 메모리(1130), 디스플레이 장치(LCD, 1152), 터치 패널(1154), 저장 장치(1170), 전력 관리 집적 회로(PMIC; 1200)을 포함할 수 있다. 시스템 온 칩(SoC)은 프로세서(CPU)(1110), 디램 제어기(1120), 성능 제어기(1140), AMU(1144), CMU(1146), 사용자 인터페이스 제어기(1150), 메모리 인터페이스 회로(1160), 및 가속기(1180)를 포함할 수 있다. 멀티-코어 시스템(1000)의 구성 요소들은 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 멀티-코어 시스템(1000)는 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.
프로세서(1110)는 멀티-코어 시스템(1000)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 프로세서(1110)는 워킹 메모리(1130)에 로드되는 운영 체제(OS)를 실행할 수 있다. 또한 프로세서(1110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 수 있다. 프로세서(1110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 혹은 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동 가능한 프로세서 코어(이하, 코어)들을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.
프로세서(1110)의 멀티-코어들 각각은 독립된 구동 클록 및 독립된 구동 전압에 의해서 동작하는 복수의 파워 도메인(Power Domain)으로 구성될 수 있다. 그리고 멀티-코어들 각각에 공급되는 구동 전압과 구동 클록 신호를 코어 단위로 차단 혹은 연결할 수 있다. 각각의 파워 도메인들에 제공되는 구동 전압과 클록 신호를 특정 코어로부터 차단하는 것을 핫플러그-아웃(Hotplug-out)이라 칭할 수 있고, 구동 전압과 클록을 특정 코어에 제공하는 것을 핫플러그-인(Hotplug-in)이라 칭할 수 있다. 또한, 각 파워 도메인에 제공되는 구동 클록의 주파수 및 구동 전압의 레벨은 코어들 각각의 처리 로드에 따라 가변 될 수 있다. 즉, 각각의 코어는 태스크들을 처리하는데 소요되는 시간이 길수록 해당 파워 도메인에 제공되는 구동 클록의 주파수나 구동 전압의 레벨을 상승시키는 DVFS 방식으로 제어될 수 있다. DVFS를 통하여 조정된 프로세서(1110)의 구동 전압 및 구동 클록의 동작 주파수를 참조하여 핫플러그-인 및 핫플러그-아웃을 수행할 수 있다.
운영 체제(OS)의 커널(Kernel)에서는 이러한 방식의 프로세서(1110) 제어를 위해서 런 큐(Run Queue)에 있는 태스크들의 수와 프로세서(1110)의 구동 전압 및 구동 클록을 특정 시간 간격으로 모니터링할 수 있다. 또한, 운영체제(OS)의 커널은 모니터링된 정보를 참조하여 프로세서(1110)의 핫플러그-인(Hotplug-in) 혹은 핫플러그-아웃(Hotplug-out)을 제어할 수 있다.
디램 제어기(1120)는 워킹 메모리(1130)와 시스템 온 칩(SoC) 사이에서 인터페이싱을 제공한다. 디램 제어기(1120)는 프로세서(1110)나 다른 기능 블록(Intellectual Property: IP)의 요청에 따라 워킹 메모리(1130)를 액세스할 수 있다. 예를 들면, 디램 제어기(1120)는 프로세서(1110)의 쓰기 요청에 따라 데이터를 워킹 메모리(1130)에 기입할 수 있다. 혹은, 디램 제어기(1120)는 프로세서(1110)의 읽기 요청에 따라 워킹 메모리(1130)로부터 데이터를 읽어내어 데이터 버스(Data bus)를 통해서 프로세서(1110)나 메모리 인터페이스 회로(1160)에 전달할 수 있다.
워킹 메모리(1130)에는 부팅시에 운영 체제(OS)나 기본 응용 프로그램들(Application Program)이 로드될 수 있다. 예를 들면, 멀티-코어 시스템(1000)의 부팅시에 저장 장치(1170)에 저장된 OS 이미지가 부팅 시퀀스에 의거하여 워킹 메모리(1130)로 로드된다. 운영 체제(OS)에 의해서 멀티-코어 시스템(1000)의 제반 입출력 동작들이 지원될 수 있다. 마찬가지로, 사용자의 의하여 선택되거나 기본적인 서비스 제공을 위해서 응용 프로그램들이 워킹 메모리(1130)에 로드될 수 있다. 워킹 메모리(1130)는, 카메라와 같은 이미지 센서로부터 제공되는 영상 데이터를 저장하는 버퍼 메모리로 사용될 수도 있을 것이다. 워킹 메모리(1130)는 SRAM(Static Random Access Memory)이나 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리이거나, PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등의 비휘발성 메모리일 수 있다.
성능 제어기(1140)는 운영 체제(OS)의 커널로부터 제공되는 제어 요청에 따라 시스템 온 칩(SoC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 제어기(1140)는 시스템 온 칩(SoC)의 성능을 높이기 위해서 DVFS(Dynamic Voltage Frequency Scaling)의 레벨을 조정할 수 있다. 혹은, 성능 제어기(1140)는 커널(Kernel)의 요청에 따라 프로세서(1110)의 빅앤리틀(Big.LITTLE)과 같은 멀티-코어 프로세서의 구동 모드를 제어할 수 있다. 이때, 성능 제어기(1140)는 내부에 구동 전압 및 구동 클록의 동작 주파수를 설정하는 성능 테이블(1142)을 포함할 수 있다. 성능 제어기(1140)는 PMIC(1200)에 연결된 PMU(1144) 및 CMU(1146)이 각 파워 도메인에 지정된 구동 전압 및 구동 클록을 제공하도록 제어할 수 있다.
사용자 인터페이스 제어기(1150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 제어기(1150)는 프로세서(1110)의 제어에 따라 액정 표시 장치(152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또한, 사용자 인터페이스 제어기(1150)는 사용자가 요청한 데이터를 표시하도록 디스플레이 장치(1152)를 제어할 수 있다. 사용자 인터페이스 제어기(1150)는 터치 패널(1154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
스토리지 인터페이스 회로(1160)는 프로세서(1110)의 요청에 따라 저장 장치(1170)를 액세스한다. 즉, 스토리지 인터페이스 회로(1160)는 시스템 온 칩(SoC)과 저장 장치(1170) 사이의 인터페이스를 제공한다. 프로세서(1110)에 의해서 처리된 데이터가 스토리지 인터페이스 회로(1160)를 통해 저장 장치(1170)에 저장될 수 있고, 저장 장치(1170)에 저장된 데이터는 스토리지 인터페이스 회로(1160)를 통해 프로세서(1110)에 제공될 수 있다.
저장 장치(1170)는 멀티-코어 시스템(1000)의 저장 매체(Storage Medium)로서 제공된다. 저장 장치(1170)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 저장 장치(1170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(1170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND Flash memory)를 포함할 수 있다. 혹은, 저장 장치(1170)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 비휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다. 본 발명의 다른 실시 예에서는 저장 장치(1170)는 시스템 온 칩(SoC)의 내부에 구비되는 내장 메모리일 수 있다.
가속기(1180)는 멀티미디어 혹은 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 기능 블록(IP)으로 제공될 수 있다. 예를 들면, 가속기(1180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 혹은 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(1190)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스이다. 시스템 인터커넥터(1190)는 예를 들면, 데이터 버스, 어드레스 버스 및 컨트롤 버스를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 워킹 메모리(1130)이나 저장 장치(1170)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(1190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
도 17은 본 발명의 실시 예에 따른 전자 장치(2000)를 예시적으로 보여주는 도면이다. 도 17을 참조하면, 전자 장치(2000)는 전원 관리 칩(Power Management Integrated Circuit; PMIC)(2100), AP(Application Processor)(2200), 입력 장치(2300), 디스플레이 장치(2400), 메모리 장치(2500) 및 배터리(2600)를 포함할 수 잇다.
전원 관리 칩(2100)은 배터리(2600)로부터 전원을 공급받고, AP(2200), 입력 장치(2300), 디스플레이 장치(2400) 혹은 메모리 장치(2500)의 전원을 공급하고 관리할 수 있다. 전자 장치(2000)는 전원 관리 칩(2100)을 적어도 하나를 포함할 수 있다. 실시 예에 있어서, 전자 장치(2000)는 하나의 전원 관리 칩(2100)를 이용하여 AP(2200), 입력 장치(2300), 디스플레이 장치(2400) 혹은 메모리 장치(2500)에 전원을 공급할 수 있다. 다른 실시 예에 있어서, 전자 장치(2000)는 AP(2200), 입력 장치(2300), 디스플레이 장치(2400) 혹은 메모리 장치(2500) 각각에 개별적으로 전원을 공급하기 위한 복수의 전원 관리 칩(2100)을 포함할 수 있다.
AP(2200)는 전자 장치(2000)의 전반적인 동작을 제어할 수 있다. 예를 들어, AP(2200)는 입력 장치(2300)에 의하여 발생한 입력 신호에 따라 메모리 장치(2500)에 저장된 데이터를 디스플레이 장치(2400)를 통하여 표시할 수 있다. 입력 장치(2300)는 터치 패드 혹은 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 혹은 키보드로 구현될 수 있다. AP(2200)는 도 1 내지 도 16에 설명된 바와 같이, DVFS 모듈을 실행함으로써 메모리 계층 별로 활동(성능/병목)을 모니터링하고, 모니터링 결과에 따라 메모리 계층의 주파수/전압을 변경할 수 있다.
메모리 장치(2500)는 전자 장치(2000)의 적어도 하나의 구성 요소에 의해 사용되는 다양한 데이터, 예를 들어, 소프트웨어 및, 이와 관련된 명령에 대한 입력 데이터 혹은 출력 데이터를 저장하도록 구현될 수 있다. 메모리 장치(2500)는, 휘발성 메모리 혹은 비휘발성 메모리를 포함할 수 있다. 실시 예에 있어서, 메모리장치(2500)는, 다양한 태스크에 대응하는 태스크 수행 조건에 대한 정보가 저장될 수 있다. 예를 들어, 전자 장치(2000)는 사용자 식별 정보별로 태스크 수행 조건을 대응시켜 저장할 수 있다. 메모리 장치(2500)는, 전자 장치(2000)의 다양한 동작을 위한 로드 제어 정보를 저장할 수 있다.
배터리(2600)는 충전이 가능한 이차 전지로 구현될 수 있다. 예를 들어, 배터리(2600)는 인터페이스 회로를 통하여 수신되는 전원 혹은 무선 충전 모듈을 통하여 수신되는 전원을 이용하여 충전될 수 있다.
인터페이스 회로는, 외부의 전원 소스에 유선으로 연결됨으로써 외부의 전원 소스로부터의 전원을 전원 관리 칩(2100)로 전달할 수 있다. 인터페이스 회로는 전원을 제공하기 위한 케이블을 연결하기 위한 커넥터로 구현되거나 전원을 제공하기 위한 케이블 및 케이블을 외부의 전원 소스로 연결하기 위한 커넥터로 구현될 수 있다. 예를 들어, 인터페이스 회로는, 다양한 USB(universal serial bus) 타입의 커넥터로 구현될 수 있다. 하지만, 커넥터의 종류에 제한이 없다고 이해되어야 할 것이다. 만약, 외부의 전원 소스로부터 직류의 전원을 수신하는 경우에, 인터페이스 회로는 수신한 직류의 전원을 전원 관리 칩(2100)로 전달하거나, 혹은 전압의 크기를 컨버팅 함으로써 전달할 수 있다. 반면에, 외부의 전원 소스로부터 교류의 전원을 수신하는 경우, 인터페이스 회로는 직류 전원으로 컨버팅 혹은 전압의 크기를 컨버팅 함으로써 전원 관리 칩(2100)로 전달할 수 있다.
무선 충전 모듈은, WPC(Wireless Power Consortium) 표준 (혹은, Qi 표준)에서 정의된 방식 혹은 A4WP(Alliance for Wireless Power) 표준 (혹은, AFA(air fuel alliance) 표준)에서 정의된 방식으로 구현될 수 있다. 무선 충전 모듈은 주변에 형성된 시간에 따라 크기가 변경되는 자기장에 의하여 유도 기전력이 발생되는 코일을 포함할 수 있다. 무선 충전 모듈은 수신용 코일, 적어도 하나의 커패시터, 임피던스 매칭 회로, 정류기, DC-DC 컨버터, 혹은 통신 회로 중 적어도 하나를 포함할 수 있다. 통신 회로는, 온/오프 키잉 변복조 방식의 인-밴드(In-band) 통신 회로로 구현되거나, 혹은 아웃-밴드(Out-of-Band) 통신 회로(예: BLE 통신 모듈)로 구현될 수도 있다. 다양한 실시예에 따라서, 무선 충전 모듈은, RF 방식에 기반하여 빔-포밍된 RF(Radio Frequency) 웨이브를 수신할 수도 있다.
실시 예에 있어서, 인터페이스 회로 혹은 무선 충전 모듈은 충전기(charger)로 연결될 수 있다. 배터리(2600)는 충전기에 의하여 조정된 전원을 이용하여 충전될 수도 있다. 충전기 혹은 컨버터는, 전원 관리 칩(2100)로부터 독립적인 소자로 구현되거나, 혹은 전원 관리 칩(2100)의 적어도 일부로 구현될 수도 있다. 배터리(2600)는, 저장된 전원을 전원 관리 칩(2100)로 전달할 수도 있다. 인터페이스 회로를 통한 전원 혹은 무선 충전 모듈을 통한 전원은, 배터리(2600)로 전달되거나, 혹은 전원 관리 칩(2100)로 전달될 수도 있다.
한편, 본 발명은 신경망 연산 시스템에 적용 가능하다.
도 18은 본 발명의 실시 예에 따른 신경망 연산 시스템(3000)을 보여주는 도면이다. 도 18를 참조하면, 신경망 연산 시스템(3000)은 신경망(neural network) 모델을 실행할 수 있다. 신경망 모델은 인간의 뇌가 정보를 처리하는 학습 방식을 모델링한 것으로서, 음성, 이미지, 비디오 등과 같은 다양한 사용자 데이터에서 객체 혹은 특정 정보를 정확하게 인식하고 판별할 수 있는 모델을 지칭할 수 있다.
신경망 연산 시스템(3000)은 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 혹은 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 신경망 연산 시스템(3000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 혹은 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
신경망 연산 시스템(3000)은 시스템 버스(3001), 프로세서(3100), 메모리 제어기(3200), 및 메모리 장치(3300)를 포함할 수 있다. 시스템 버스(3001)은 프로세서(3100), 메모리 제어기(3200) 및 메모리 장치(3300) 간의 통신을 지원할 수 있다.
프로세서(3100)는 메모리 장치(3300)에 저장된 데이터를 이용하여 신경망 연산을 수행할 수 있다. 예를 들어, 신경망 연산은 신경망 모델에 포함되는 노드 별 데이터 및 가중치를 읽고, 데이터 및 가중치의 컨볼루션 연산을 수행하며, 연산 결과를 저장하거나 출력하는 동작을 포함할 수 있다.
메모리 장치(3300)는 프로세서(3100)가 신경망 연산을 수행하기 위해 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(3300)에는 프로세서(3100)에 의해 실행될 수 있는 하나 이상의 신경망 모델이 로드될 수 있다. 또한, 메모리 장치(3300)에는 신경망 모델의 입력 데이터 및 출력 데이터가 저장될 수 있다. 메모리 장치(3300)는 DRAM(Dynamic Random Access Memory), SDRAM(Synchronous DRAM), SRAM(Static RAM), RRAM(Resistive RAM) 등과 같은 휘발성 메모리를 포함할 수 있으며, 플래시 메모리와 같은 비휘발성 메모리를 포함할 수도 있다.
메모리 제어기(3200)는 프로세서(3100)로부터 수신된 데이터를 메모리 장치(3300)에 저장하는 동작 및 메모리 장치(3300)에 저장된 데이터를 프로세서(3100)로 출력하는 동작을 제어할 수 있다.
프로세서(3100)는 CPU(Central Processing Unit; 3110), GPU(Graphic Processing unit; 3120), NPU(Neural Processing Unit; 3130), DSP(Digital Signal Processor; 3140), 가속기(3150) 등과 같이 데이터의 처리 및 연산을 수행하는 이기종 연산 장치들을 포함할 수 있다. 구체적으로, CPU(3110)는 범용성이 높은 연산 장치일 수 있다. GPU(3120)는 그래픽 처리와 같은 병렬 연산에 최적화된 연산 장치일 수 있다. NPU(3130)는 신경망 연산에 최적화된 연산 장치로서, 컨볼루션 연산과 같이 신경망 연산에 주로 사용되는 단위 연산을 실행하기 위한 논리 블록들을 포함할 수 있다. DSP(3140)는 아날로그 신호의 실시간 디지털 처리에 최적화된 연산 장치일 수 있다. 그리고, 가속기(3150)는 특정 기능을 신속하게 수행하기 위한 연산 장치일 수 있다.
프로세서(3100)가 신경망 모델을 실행할 때 다양한 하드웨어 장치들이 함께 동작할 수 있다. 예를 들어, 신경망 모델을 실행하기 위해서 NPU(3130)뿐만 아니라 CPU(3110), GPU(3120) 등의 이기종 연산 장치들이 함께 동작할 수 있다. 뿐만 아니라, 신경망 모델의 입력 데이터를 읽고, 출력 데이터를 저장하기 위해 메모리 제어기(3200) 및 데이터 버스(3001)가 동작할 수 있다.
도 19는 본 발명의 실시 예에 따른 신경망 연산 시스템의 계층구조를 예시적으로 보여주는 도면이다. 도 19를 참조하면, 신경망 연산 시스템(4000)은 하드웨어 계층(HW), 시스템 소프트웨어 계층(SW) 및 어플리케이션 계층(APP)을 포함할 수 있다.
하드웨어 계층(HW)은 신경망 연산 시스템(4000)의 최하위 계층으로서, 시스템 버스(4001), 프로세서(4110), 및 메모리 제어기(4120) 등의 하드웨어 장치들을 포함할 수 있다. 프로세서(4110)는 이기종 연산 장치들, 예를 들어 CPU(4111), GPU(4112), NPU(4113), DSP(4114) 및 기타 가속기(4115)를 포함할 수 있다.
시스템 소프트웨어 계층(SW)은 하드웨어 계층(HW)의 하드웨어 장치들을 관리하고, 추상화된 플랫폼을 제공할 수 있다. 예를 들어, 시스템 소프트웨어 계층(SW)은 리눅스와 같은 커널을 구동할 수 있다.
시스템 소프트웨어 계층(SW)은 MH-DVFS(4210) 및 신경망 모델 실행기(4220)를 포함할 수 있다. MH-DVFS(4210)는 마이크로 아키텍처 정보를 이용하여 메모리 계층 별로 하드웨어 장치들의 동작 주파수를 결정할 수 있다.
신경망 모델 실행기(4220)는 MH-DVFS(4210)에 의해 결정된 동작 주파수로 동작하는 하드웨어 장치들을 이용하여 신경망 모델을 실행할 수 있다. 또한, 신경망 모델 실행기(4220)는 신경망 모델 실행 결과로서 신경망 모델의 실제 실행시간을 출력할 수 있다.
또한, 시스템 소프트웨어 계층(SW)은 프로세서(4110)에 의해 구동될 수 있다. 예를 들어, 시스템 소프트웨어 계층(SW)은 CPU(4111)에 의해 구동될 수 있다. 하지만, 시스템 소프트웨어 계층(SW)이 구동될 수 있는 연산 장치는 CPU(4111)로 제한되지 않는다고 이해되어야 할 것이다.
어플리케이션 계층(APP)은 시스템 소프트웨어 계층(SW) 상에서 실행될 수 있으며, 복수의 신경망 모델들(4310 ~ 43k0, k는 2 이상의 정수) 및 기타 어플리케이션들(4301)을 포함할 수 있다. 예를 들어, 기타 어플리케이션들(4301)은 카메라 어플리케이션을 포함할 수 있다. 복수의 신경망 모델들(4310 ~ 43k0)은 카메라 어플리케이션에 의해 획득된 이미지 프레임에 포함된 객체를 감지하는 모델, 상기 감지된 객체가 무엇인지 식별하는 모델, 상기 이미지 프레임에서 대상 영역을 감지하는 모델, 상기 감지된 대상 영역을 식별하는 모델, 식별된 대상 영역들을 사람, 자동차, 나무와 같은 의미에 따라 분류하는 모델 등을 포함할 수 있다. 하지만, 신경망 모델들 및 기타 어플리케이션들의 종류가 여기에 제한되지 않는다고 이해되어야 할 것이다.
한편, 신경망 모델이 실행될 때 기타 어플리케이션이 동시에 실행될 수 있으며, 복수의 신경망 모델들이 동시에 실행될 수도 있다. 예를 들어, 신경망 연산 시스템(4000)이 모바일 시스템인 경우, 카메라 어플리케이션을 실행하는 것과 동시에 객체를 감지하기 위한 신경망 모델이 실행될 수 있다. 신경망 모델을 비롯하여 복수의 어플리케이션들이 동시에 실행되는 경우, 하드웨어 장치들에서 자원경합이 발생할 수 있다.
본 발명의 실시 예에 따른 프로세서는 주기적으로 마이크로 아키텍처 정보(uarch information)을 모니터링하는 module A과 모니터링 된 uarch infomration을 근거로 하여 CPU/Cache/Memory의 주파수를 결정하는 module B로 구성될 수 있다. 실시 예에 있어서, module A는 주어진 cycle 동안 CPU가 처리한 instruction의 양, 메모리 스톨의 양을 모니터링 한다. 실시 예에 있어서, module B는 메모리 스톨이 일정 이하, instruction 처리량이 일정 이하일 경우 CPU의 주파수를 제한할 수 있다. 제한된 주파수의 크기는 메모리 스톨과 instruction 처리량에 비례하다. 실시 예에 있어서, module B는 메모리 스톨의 크기를 통해 메모리 스톨이 발생하는 layer를 구분할 수 있다. 실시 예에 있어서, module B는 메모리 스톨이 발생하면 memory hierarchy 내에서 메모리 스톨 발생에 영향을 주는 layer의 주파수를 상승시킬 수 있다. 여기서 상승시킨 주파수는 메모리 스톨의 크기에 비례하게 커지거나 최저 energy를 달성하는 조합으로 결정될 수 있다.
한편, 본 발명은 복수의 메모리 채널들의 각각에 대한 활동을 모니터링 하고, 병목 현상이 일어나는 메모리 채널에 대응하는 메모리 장치의 주파수를 실시간(real-time) 혹은 온-더-플라이(on-the-fly)로 가변할 수 있다.
한편, 상술된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체 뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함 할 것이다.
100: 프로세서
110: 중앙 처리 유닛
120: 캐쉬 메모리
130: 메모리 인터페이스 회로
140: 클록 관리 유닛
140: 활동 모니터 유닛
150: 전원 관리 유닛

Claims (20)

  1. DVFS(Dynamic Voltage and Frequency Scaling) 모듈을 구동하는 중앙 처리 유닛;
    상기 중앙 처리 유닛의 동작에 필요한 데이터를 저장하는 메모리 계층; 및
    상기 중앙 처리 유닛의 성능을 모니터링하거나 상기 메모리 계층에 연결된 시스템 버스의 트래픽을 모니터링함으로써 마이크로 아키텍처 정보를 생성하는 활동 모니터 유닛을 포함하고,
    상기 DVFS 모듈은 상기 마이크로 아키텍처 정보를 이용하여 상기 메모리 계층에서 메모리 스톨이 발생하는 계층을 판별하고, 상기 판별된 계층을 억세스할 때 주파수를 높이는 것을 특징으로 하는 프로세서.
  2. 제 1 항에 있어서,
    상기 활동 모니터 유닛은 상기 중앙 처리 장치의 성능을 모니터링 하는 성능 모니터 유닛; 혹은 상기 시스템 버스의 트래픽을 모니터링 하는 버스 트래픽 모니터 회로를 포함하는 프로세서.
  3. 제 2 항에 있어서,
    상기 성능 모니터 유닛은 사이클 당 상기 중앙 처리 유닛에서 처리하는 인스트럭션 회수를 카운트하거나, 사이클 당 상기 중앙 처리 유닛의 메모리 스톨 회수를 카운트하는 것을 특징으로 하는 프로세서.
  4. 제 3 항에 있어서,
    상기 인스트럭션 회수가 제 1 기준값 이하이거나, 상기 메모리 스톨 회수가 제 2 기준값 이하일 때, 상기 DVFS 모듈은 상기 중앙 처리 유닛의 주파수를 제한하는 것을 특징으로 하는 프로세서.
  5. 제 4 항에 있어서,
    상기 중앙 처리 유닛의 주파수의 크기는 상기 인스트럭션 회수 및 상기 메모리 스톨 회수에 비례하는 것을 특징으로 하는 프로세서.
  6. 제 3 항에 있어서,
    상기 DVFS 모듈은 상기 메모리 스톨 회수를 이용하여 상기 메모리 계층에서 메모리 스톨이 발생하는 상기 계층을 판별하는 것을 특징으로 하는 프로세서.
  7. 제 1 항에 있어서,
    상기 DVFS 모듈은 메모리 스톨 회수에 비례하여 상기 주파수를 상승시키거나 전력 소모를 줄이도록 상기 주파수를 결정하는 것을 특징으로 하는 프로세서.
  8. 제 1 항에 있어서,
    상기 메모리 계층은,
    상기 중앙 처리 유닛의 동작에 필요한 데이터를 임시로 저장하는 캐쉬 메모리; 및
    상기 캐쉬 메모리의 데이터를 상기 시스템 버스를 통하여 메모리 장치에 전송하는 메모리 인터페이스 회로를 포함하는 것을 특징으로 하는 프로세서.
  9. 제 8 항에 있어서,
    상기 마이크로 아키텍처 정보가 사이클 당 메모리 스톨 회수가 기준값 이상임을 지시할 때, 상기 DVFS 모듈은 상기 캐쉬 메모리의 주파수를 높이도록 결정하는 것을 특징으로 하는 프로세서.
  10. 제 9 항에 있어서,
    상기 캐쉬 메모리 주파수를 높이더라도 상기 사이클 당 메모리 스톨 회수가 상기 기준값 이상일 때, 상기 DVFS 모듈은 상기 메모리 인터페이스 회로의 주파수를 높이도록 결정하는 것을 특징으로 하는 프로세서.
  11. 프로세서의 동작 방법에 있어서,
    성능 모니터 유닛 혹은 버스 트래픽 모니터 유닛에서 마이크로 아키텍처 정보를 모니터링하는 단계; 및
    상기 마이크로 아키텍처 정보를 이용하여 중앙 처리 유닛, 캐쉬 메모리, 혹은 메모리 장치의 주파수를 제어하는 단계를 포함하고,
    상기 성능 모니터 유닛은 상기 중앙 처리 유닛의 성능을 모니터링하고,
    상기 버스 트래픽 모니터 유닛은 상기 캐쉬 메모리와 상기 메모리 장치 사이의 시스템 버스의 트래픽을 모니터링하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 마이크로 아키텍처 정보를 모니터링하는 단계는,
    사이클 당 상기 중앙 처리 유닛에서 인스트럭션을 실행하는 제 1 카운트 값을 카운트하는 단계; 및
    사이클 당 상기 중앙 처리 유닛의 메모리 스톨에 대한 제 2 카운트 값을 카운트하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 제 1 카운트 값과 상기 제 2 카운트 값을 이용하여 상기 캐쉬 메모리의 주파수를 상승시키는 단계를 포함하는 방법.
  14. 제 12 항에 있어서,
    상기 캐쉬 메모리의 주파수를 상승 시킨 후에, 상기 제 1 카운트 값과 상기 제 2 카운트 값을 이용하여 상기 메모리 장치의 주파수를 상승시키는 단계를 포함하는 방법.
  15. 제 11 항에 있어서,
    상기 프로세서의 온도를 모니터링하는 단계; 및
    상기 온도를 이용하여 상기 중앙 처리 유닛, 상기 캐쉬 메모리, 및 상기 메모리 장치 중에서 적어도 하나의 주파수를 제어하는 단계를 더 포함하는 방법.
  16. 프로세서; 및
    상기 프로세서에 연결된 메모리 장치를 포함하고,
    상기 프로세서는,
    DVFS(Dynamic Voltage and Frequency Scaling) 모듈을 구동하는 적어도 하나의 중앙 처리 유닛;
    상기 적어도 하나의 중앙 처리 유닛의 동작에 필요한 데이터를 임시로 저장하는 캐쉬 메모리;
    상기 캐쉬 메모리의 데이터를 시스템 버스를 통하여 상기 메모리 장치에 전송하는 메모리 인터페이스 회로; 및
    상기 적어도 하나의 중앙 처리 유닛의 성능을 모니터링 하거나, 상기 시스템의 버스의 트래픽을 모니터링 하는 활동 모니터 유닛을 포함하고,
    상기 DVFS 모듈은 상기 활동 모니터 유닛으로부터 마이크로 아키텍처 정보를 수집하고, 상기 마이크로 아키텍처 정보를 이용하여 상기 적어도 하나의 중앙 처리 유닛, 상기 캐쉬 메모리, 및 상기 메모리 인터페이스 회로 중에서 적어도 하나의 주파수를 제어하는 것을 특징으로 하는 전자 장치.
  17. 제 16 항에 있어서,
    상기 적어도 하나의 중앙 처리 유닛은 내부 캐쉬 메모리를 포함하고,
    상기 DVFS 모듈은 상기 마이크로 아키텍처 정보를 이용하여 상기 내부 캐쉬 메모리의 주파수를 변경하는 것을 특징으로 하는 전자 장치.
  18. 제 16 항에 있어서,
    상기 DVFS 모듈은
    상기 마이크로 아키텍처 정보를 이용하여 상기 적어도 하나의 중앙 처리 유닛의 주파수를 결정하는 제 1 관리자;
    상기 마이크로 아키텍처 정보를 이용하여 상기 캐쉬 메모리의 주파수를 결정하는 제 2 관리자; 및
    상기 마이크로 아키텍처 정보를 이용하여 상기 메모리 인터페이스 회로의 주파수를 결정하는 제 3 관리자를 포함하는 전자 장치.
  19. 제 18 항에 있어서,
    상기 마이크로 아키텍처 정보에 따라 상기 제 1 관리자, 상기 제 2 관리자, 및 상기 제 3 관리자의 실행 순서가 결정되는 것을 특징으로 하는 전자 장치.
  20. 제 16 항에 있어서,
    상기 DVFS 모듈은 상기 마이크로 아키텍처 정보를 이용하여 메모리 스톨이 발생하는 메모리 계층을 판별하고, 상기 판별된 메모리 계층을 억세스할 때 대응하는 주파수를 상승시키는 것을 특징으로 하는 전자 장치.


KR1020220103194A 2022-08-18 2022-08-18 Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법 KR20240025227A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220103194A KR20240025227A (ko) 2022-08-18 2022-08-18 Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법
US18/180,427 US20240061492A1 (en) 2022-08-18 2023-03-08 Processor performing dynamic voltage and frequency scaling, electronic device including the same, and method of operating the same
CN202310902861.8A CN117590927A (zh) 2022-08-18 2023-07-21 处理器、操作该处理器的方法和电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220103194A KR20240025227A (ko) 2022-08-18 2022-08-18 Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20240025227A true KR20240025227A (ko) 2024-02-27

Family

ID=89906667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220103194A KR20240025227A (ko) 2022-08-18 2022-08-18 Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US20240061492A1 (ko)
KR (1) KR20240025227A (ko)
CN (1) CN117590927A (ko)

Also Published As

Publication number Publication date
CN117590927A (zh) 2024-02-23
US20240061492A1 (en) 2024-02-22

Similar Documents

Publication Publication Date Title
US11327555B2 (en) Application processor performing a dynamic voltage and frequency scaling operation, computing system including the same, and operation method thereof
CN102566739B (zh) 多核处理器系统及其动态电源管理方法与控制装置
US8402293B2 (en) Power management in electronic systems
US20060123253A1 (en) System and method for adaptive power management
KR102002899B1 (ko) 시스템-온 칩, 이의 동작 방법, 및 이를 포함하는 장치
JP2015064676A (ja) 情報処理装置、半導体装置、情報処理方法およびプログラム
US11693466B2 (en) Application processor and system on chip
EP2972826B1 (en) Multi-core binary translation task processing
US11734067B2 (en) Multi-core system and controlling operation of the same
US10539995B2 (en) Performance boosting method and system of semiconductor device
WO2016209427A1 (en) Adaptive hardware acceleration based on runtime power efficiency determinations
Choi et al. An adaptive and integrated low-power framework for multicore mobile computing
CN112771470A (zh) 用于对多个知识产权主体和共享电源轨进行共同功率控制的系统、装置及方法
KR20240025227A (ko) Dvfs을 수행하는 프로세서, 그것을 포함하는 전자 장치, 및 그것의 동작 방법
CN115776416A (zh) 总线互连的每通道功率管理
JP2023505459A (ja) 異種プロセッサ間のタスク遷移の方法
US9766672B2 (en) System for managing power provided to a processor or memory based on a measured memory consumption characteristic
US11442522B2 (en) Method of controlling performance boosting of semiconductor device based on at least user input and feedback from previous boosting policies and semiconductor device performing the method
US20240103601A1 (en) Power management chip, electronic device having the same, and operating method thereof
US20230266815A1 (en) Dvfs controlling method, semiconductor device and semiconductor system using the dvfs controlling method
US20220317855A1 (en) Methods and apparatus to process touch data
KR20240043635A (ko) 전력 관리 칩, 그것을 포함하는 전자 장치, 및 그것의 동작 방법
CN117590925A (zh) 集成电路及其操作方法
WO2024006019A1 (en) Platform efficiency tracker