KR20120040819A - 디지털 시스템에서 동적 클럭 제어 장치 및 방법 - Google Patents

디지털 시스템에서 동적 클럭 제어 장치 및 방법 Download PDF

Info

Publication number
KR20120040819A
KR20120040819A KR1020100102270A KR20100102270A KR20120040819A KR 20120040819 A KR20120040819 A KR 20120040819A KR 1020100102270 A KR1020100102270 A KR 1020100102270A KR 20100102270 A KR20100102270 A KR 20100102270A KR 20120040819 A KR20120040819 A KR 20120040819A
Authority
KR
South Korea
Prior art keywords
clock frequency
bus
cpu
frequency
change
Prior art date
Application number
KR1020100102270A
Other languages
English (en)
Other versions
KR101740338B1 (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 KR1020100102270A priority Critical patent/KR101740338B1/ko
Priority to US13/276,503 priority patent/US8924753B2/en
Publication of KR20120040819A publication Critical patent/KR20120040819A/ko
Application granted granted Critical
Publication of KR101740338B1 publication Critical patent/KR101740338B1/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/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable 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/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
    • 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/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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/3253Power saving in bus
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명은 디지털 시스템에서 CPU 및 BUS의 클럭 주파수를 동적으로 변경하기 위한 것으로서, 상기 디지털 시스템은, 상기 CPU의 동작 정보에 따라 상기 CPU의 클럭 주파수의 변경 여부를 결정하고, 상기 BUS의 동작 정보에 따라 상기 BUS의 클럭 주파수의 변경 여부를 결정하는 AFS 제어부와, 상기 AFS 제어부의 결정에 따라 상기 CPU의 클럭 주파수 및 상기 BUS의 클럭 주파수를 생성하는 클럭 제어부를 포함하며, 상기 AFS 제어부는, 상기 BUS의 클럭 주파수를 제1값으로 상향 변경할 것을 결정한 경우, 상기 제1값이 상기 CPU의 현재 클럭 주파수보다 높으면, 상기 BUS의 클럭 주파수를 상기 제1값으로 상기 CPU의 클럭 주파수를 상기 제1값 보다 크거나 같은 값으로 변경할 것을 상기 클럭 제어부로 요청한다.

Description

디지털 시스템에서 동적 클럭 제어 장치 및 방법{APPARATUS AND METHOD FOR ADAPTIVE FREQUENCY SCALING IN DIGITAL SYSTEM}
본 발명은 디지털 시스템에 관한 것으로, 특히, 디지털 시스템에서 CPU(Centural Processing Unit) 및 BUS의 클럭 주파수를 동적으로 변경하기 위한 장치 및 방법에 관한 것이다.
최근 PC(Personal Computer) 급 CPU 및 일부 임베디드(Embedded) 프로세서(processor)에 동적 전압 및 클럭 주파수 제어(DVFS : Dynamic Voltage and Frequency Scaling) 기술이 적용되고 있다고 있다. 상기 동적 전압 및 클럭 주파수 제어 기술은 주로 CPU의 동작량(Activity)을 측정 또는 예측하여 CPU 또는 시스템 전체의 클럭 주파수를 변경하는 방식에 의한다.
하지만, 상기 동적 전압 및 클럭 주파수 제어 기술은 CPU 자체만의 동작 정보만을 측정하여 CPU의 전압 및 클럭 주파수만을 변경한다. 이에 따라, 전력 감소의 범위가 CPU로 한정되는 문제점이 있다. 또한, CPU 이외의 독자적인 BUS의 대역폭을 요구하는 기능 블럭이 존재할 수 있으며, 이 경우, CPU 중심의 동적 전압 및 클럭 주파수 제어 기술에 의해 오히려 시스템 성능이 저하되는 현상이 발생하는 문제점이 있다.
따라서, 본 발명의 목적은 디지털 시스템에서 클럭 주파수를 변경하여 시스템의 전력 소모를 줄이기 위한 장치 및 방법을 제공함에 있다.
본 발명의 다른 목적은 디지털 시스템에서 CPU 및 BUS의 클럭 주파수를 동적으로 변경하기 위한 장치 및 방법을 제공함에 있다.
본 발명의 또 다른 목적은 디지털 시스템에서 CPU의 동작량을 고려하여 CPU 및 BUS의 클럭 주파수를 동적으로 변경하기 위한 장치 및 방법을 제공함에 있다.
본 발명의 또 다른 목적은 디지털 시스템에서 BUS의 동작량을 고려하여 CPU 및 BUS의 클럭 주파수를 동적으로 변경하기 위한 장치 및 방법을 제공함에 있다.
본 발명의 또 다른 목적은 디지털 시스템에서 BUS 클럭을 이용하는 기능 블럭들을 고려하여 클럭 주파수를 동적으로 변경하기 위한 장치 및 방법을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명의 제1견지에 따르면, CPU 및 BUS를 포함하는 디지털 시스템은, 상기 CPU의 동작 정보에 따라 상기 CPU의 클럭 주파수의 변경 여부를 결정하고, 상기 BUS의 동작 정보에 따라 상기 BUS의 클럭 주파수의 변경 여부를 결정하는 AFS 제어부와, 상기 AFS 제어부의 결정에 따라 상기 CPU의 클럭 주파수 및 상기 BUS의 클럭 주파수를 생성하는 클럭 제어부를 포함하며, 상기 AFS 제어부는, 상기 BUS의 클럭 주파수를 제1값으로 상향 변경할 것을 결정한 경우, 상기 제1값이 상기 CPU의 현재 클럭 주파수보다 높으면, 상기 BUS의 클럭 주파수를 상기 제1값으로 상기 CPU의 클럭 주파수를 상기 제1값 보다 크거나 같은 값으로 변경할 것을 상기 클럭 제어부로 요청하는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 제2견지에 따르면, CPU 및 BUS를 포함하는 디지털 시스템의 동작 방법은, 상기 CPU의 동작 정보에 따라 상기 CPU의 클럭 주파수의 변경 여부를 결정하는 과정과, 상기 BUS의 동작 정보에 따라 상기 BUS의 클럭 주파수의 변경 여부를 결정하는 과정과, 상기 BUS의 클럭 주파수를 제1값으로 상향 변경할 것을 결정한 경우, 상기 제1값이 상기 CPU의 현재 클럭 주파수보다 높은지 확인하는 과정과, 상기 제1값이 상기 CPU의 현재 클럭 주파수보다 높으면, 상기 BUS의 클럭 주파수를 상기 제1값으로 상기 CPU의 클럭 주파수를 상기 제1값 보다 크거나 같은 값으로 변경하는 과정을 포함하는 것을 특징으로 한다.
디지털 시스템에서 CPU 및 BUS의 동작 정보를 고려하여 CPU 및 BUS의 클럭 주파수를 동적으로 변경함으로써, 전력 소모를 줄일 수 있다. 나아가, 기능 블럭 및 외부의 동작 정보를 기초로 CPU 및 BUS의 클럭 주파수를 제어함으로써, 시스템의 성능을 보장함과 동시에 전력 감소 효과가 발생한다.
도 1은 본 발명의 실시 예에 따른 디지털 시스템의 블록 구성을 도시하는 도면,
도 2는 본 발명의 실시 예에 따른 디지털 시스템의 AFS(Adaptive Frequency Scailing) 제어부의 구성 예를 도시하는 도면,
도 3은 본 발명의 실시 예에 따른 디지털 시스템의 CPU 모니터링을 위한 슬레이브 제어부의 구성 예를 도시하는 도면,
도 4는 본 발명의 실시 예에 따른 디지털 시스템의 BUS 모니터링을 위한 슬레이브 제어부의 구성 예를 도시하는 도면,
도 5는 본 발명의 실시 예에 따른 디지털 시스템의 기능 블럭 모니터링을 위한 슬레이브 제어부의 구성 예를 도시하는 도면,
도 6은 본 발명의 실시 예에 따른 디지털 시스템의 마스터 제어부의 구성 예를 도시하는 도면,
도 7은 본 발명의 실시 예에 따른 디지털 시스템의 CPU 모니터링을 위한 슬레이브 제어부의 동작 절차를 도시하는 도면,
도 8은 본 발명의 실시 예에 따른 디지털 시스템의 BUS 모니터링을 위한 슬레이브 제어부의 동작 절차를 도시하는 도면,
도 9는 본 발명의 실시 예에 따른 디지털 시스템의 기능 블럭 모니터링을 위한 슬레이브 제어부의 동작 절차를 도시하는 도면,
도 10은 본 발명의 실시 예에 따른 디지털 시스템의 외부 AP(Application Processor) 모니터링을 위한 슬레이브 제어부의 동작 절차를 도시하는 도면,
도 11a 내지 도 11c는 본 발명의 실시 예에 따른 디지털 시스템의 마스터 제어부의 동작 절차를 도시하는 도면.
이하 본 발명의 바람직한 실시 예를 첨부된 도면의 참조와 함께 상세히 설명한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우, 그 상세한 설명은 생략한다.
이하 본 발명은 디지털 시스템에서 CPU 및 BUS의 클럭 주파수를 동적으로 변경하기 위한 기술에 대해 설명한다.
CPU 및 BUS의 클럭 주파수는 서로 밀접하게 연관된다. 따라서, 어느 하나만을 개별적으로 변경할 경우, 다른 하나에 미치는 영향을 최소화하기 위하여, 변경 범위가 다른 하나의 현재 클럭 주파수에 제한된다. 이에 따라, 전력 감소의 범위가 한정된다. 널리 사용되는 동기 방식(Synchronous) 시스템에서, CPU 및 BUS 간 클럭 주파수 관계는 정해져 있다. 일반적으로, CPU의 클럭 주파수가 BUS의 클럭 주파수보다 빠르거나, 같아야 한다. 이러한 조건에서, CPU와 BUS의 클럭 주파수의 개별적인 제어의 문제점을 예를 들면 다음과 같다.
첫째, CPU에 대한 동적 전압 및 클럭 주파수 제어/동적 클럭 주파수 제어 시, CPU의 동작량이 많지 않아 CPU 클럭 주파수를 낮추고자 할 경우, 낮출 수 있는 클럭 주파수의 최대치는 BUS 클럭 주파수의 최대치이다. BUS 클럭 주파수 미만으로 CPU 클럭 주파수를 낮추면, CPU 및 BUS 간 클럭 주파수 관계가 틀어지므로 정상 동작이 이루어지지 아니한다.
둘째, BUS에 대한 동적 전압 및 클럭 주파수 제어/동적 클럭 주파수 제어 시, BUS의 동작량이 많아져서 BUS 클럭 주파수를 올리고자 할 경우, CPU 및 BUS간 클럭 주파수 관계에 따라, BUS 클럭 주파수의 최대치는 현재의 CPU 클럭 주파수이다.
또한, BUS를 데이터 전송 통로로써 사용하는 각각의 기능 블럭들 및 BUS는 서로 밀접하게 연관된다. 따라서, 일방적으로 BUS 클럭 주파수를 변경할 경우, 기능 블럭의 성능이 보장되지 않는다. 왜냐하면, BUS의 동작량만을 근거로 BUS의 클럭 주파수를 변경하는 방식은, 'BUS의 동작량이 적으면, 기능 블럭 내부에서 BUS 클럭으로 동작하는 모듈의 동작량도 적다'라는 가정이 전제되기 때문이다. 그러나, 실제로 BUS를 통해 데이터를 전송하기 전, 기능 블럭이 선처리(pre-processing)를 위해 BUS 클럭을 사용하는 상황이 존재한다. 따라서, 선처리 시, BUS의 클럭 주파수가 낮으면, 기능 블럭의 성능이 저하될 수 있다.
CPU, BUS 및 기능 블럭들이 SoC(System on a Chip)에 구현되어 있는 경우, 상술한 문제는 SoC 내부 뿐만 아니라 SoC 외부의 다른 AP(Application Processor)와의 I/F(Interface)에서도 발생할 수 있다. 다시 말해, CPU 및 BUS의 클럭 주파수가 SoC 내부 동작에 영향을 줌은 물론, SoC 외부의 다른 AP의 성능에 영향을 주는 경우도 있다. 예를 들어, AP 및 모뎀 칩(Modem chip) 간 I/F가 있는 경우에 BUS의 클럭 주파수가 상기 AP에 영향을 줄 수 있다. 시스템 내의 클럭 소스는 한정되어 있으므로, 상기 AP 및 상기 모뎀 칩의 I/F와 같은 간단한 I/F는 동작 클럭 및 BUS 클럭을 공유하는 경우가 흔하다. 따라서, 외부 AP의 동작 또한 CPU 및 BUS의 클럭 주파수 변경 시 고려됨이 바람직하다.
결론적으로, SoC 내부에서 CPU 및 BUS의 클럭 주파수를 변경하는 경우, CPU의 동작 상태, BUS의 동작 상태, 기능 블록의 동작 상태 등의 SoC 내부 뿐만 아니라, 외부의 상황을 고려함이 바람직하며, 단순히 CPU 및 BUS의 동작량을 근거로 클럭 주파수를 제어하는 방안은 바람직하지 못하다.
따라서, 본 발명은 CPU 및 BUS의 동작량을 측정하고, 각 기능 블럭의 동작 정보 및 SoC 외부의 동작 정보를 수집 및 정리한 후, 수집/정리된 정보에 기초하여 CPU 및 BUS의 클럭 주파수를 동적으로 제어하는 방안을 제안한다.
BUS의 동작 정보는 사용되는 BUS 프로토콜 종류에 따라 구체적인 형태가 달라진다. 본 발명은 가장 널리 사용되는 ARM사의 AMBA 3.0 AXI BUS 프로토콜을 기준으로 설명한다. 하지만, 본 발명은 상기 AXI 프로토콜에 제한되지 아니하며, 다른 BUS 프로토콜, 예를 들어, OCP 등의 프로토콜이 사용될 수 있다. 또한, 각각의 기능 블럭들의 동작 정보 및 SoC 외부의 동작 정보의 전달 방식 구체적 I/F 프로토콜에 의해 달라진다. 이하 본 발명은 가장 쉽게 구현할 수 있는 요청(Request) 및 인터럽트(interrupt) 형태의 간단한 프로토콜 기준으로 설명한다. 나아가, CPU 및 BUS의 클럭 주파수 제어를 위한 알고리즘 및 구현 방안은 여러 가지 형태가 가능하나, 본 발명은 마스터/슬레이브(Master/Slave) 형태를 예로 들어 설명한다.
이하 설명의 편의를 위해, 본 발명은 'CPU의 클럭 주파수'를 'CPU 주파수'로, 'BUS의 클럭 주파수'를 'BUS 주파수'로 칭한다.
도 1은 본 발명의 실시 예에 따른 디지털 시스템의 블록 구성을 도시하고 있다. 예를 들어, 상기 디지털 시스템은 SoC일 수 있다. 이하 설명에서, 상기 디지털 시스템은 SoC로 가정된다.
상기 도 1을 참고하면, 상기 디지털 시스템은 AFS(Adaptive Frequency Scailing)제어부(110), 클럭제어부(120), CPU(130), BUS(140), 다수의 기능블럭들(150-1 내지 150-5)를 포함한다. 여기서, 상기 다수의 기능블럭들(150-1 내지 150-5)은 마스터 기능 블럭 및 슬레이브 기능 블럭으로 구분될 수 있다.
상기 AFS제어부(110)는 상기 CPU(130), 상기 BUS(140), 상기 다수의 기능블럭들(150-1 내지 150-5), SoC 외부 등의 동작 정보를 제공받고, 제공된 동작 정보에 기초하여 CPU 주파수 및 BUS 주파수를 결정한다. 그리고, 상기 AFS제어부(110)는 상기 클럭제어부(120)로 결정된 상기 CPU 주파수 및 상기 BUS 주파수를 제공한다.
상기 클럭제어부(120)는 내부 PLL(Phase Loop Lock) 또는 외부 PLL로부터 기준 클럭을 제공받고, 제공된 기준 클럭을 분주함으로써 상기 CPU 주파수 및 상기 BUS 주파수를 생성한다. 이때, 상기 클럭제어부(120)는 상기 AFS제어부(110)의 결정에 따라 상기 CPU 주파수 및 상기 BUS 주파수를 생성한다.
상기 CPU(130)는 상기 SoC의 주 연산을 담당하는 처리 장치로서, 상기 클럭제어부(120)로부터 제공되는 CPU 주파수를 이용하여 동작한다. 상기 BUS(140)는 상기 CPU(130), 상기 기능블럭들(150-1 내지 150-5)의 데이터를 전달하기 위한 전기적 통로이며, 상기 클럭제어부(120)로부터 제공되는 BUS 주파수를 이용하여 동작한다.
상기 기능블럭들(150-1 내지 150-5)은 상기 SoC의 동작을 위한 각각의 기능들을 수행하는 블럭들로서, 별도의 클럭 또는 상기 BUS 클럭을 이용하여 동작한다. 예를 들어, 상기 기능블럭들(150-1 내지 150-5)은 모뎀, 메모리 컨트롤러(memory controller), DSP(Digital Signal Processor), USB(Universal Serial Bus) 컨트롤러, PCI(Peripheral Component Interconnect) 인터페이스 등을 포함할 수 있다. 예를 들어, 상기 BUS 클럭을 이용한 동작은 상기 BUS(140)를 통해 송신할 데이터의 가공, 상기 BUS(140)를 통해 송수신되는 데이터의 버퍼링(buffering) 등을 포함한다.
도 2는 본 발명의 실시 예에 따른 디지털 시스템의 상기 AFS제어부(110)의 구성 예를 도시하고 있다. 상기 도 2는 마스터/슬레이브 방식에 따르는 경우의 상기 AFS제어부(110)의 구성 예를 도시하고 있다. 상기 마스터/슬레이브 방식은 마스터가 슬레이브들 각각으로부터 상기 CPU 주파수 및 상기 BUS 주파수의 변경을 요청(Request) 받고, 현재 CPU 주파수 및 현재 BUS 주파수를 변경할 것인지, 아니면 기각(Reject)할 것인지를 결정하는 방식을 의미한다.
상기 도 2를 참고하면, 상기 AFS제어부(110)는 제1슬레이브제어부(212), 제2슬레이브제어부(214), 제3슬레이브제어부(216), 제4슬레이브제어부(218), 마스터제어부(220)를 포함하여 구성될 수 있다.
상기 제1슬레이브제어부(212)는 상기 CPU(130)의 동작을 모니터링하고, CPU(130)의 동작량에 따라 CPU 주파수를 선택한 후, 선택된 CPU 주파수를 상기 마스터제어부(220)로 요청한다. 예를 들어, 상기 CPU(130)의 동작량은 상기 CPU(130)가 아이들(idle) 상태인 시간 구간의 길이를 반영한 동작 카운트(activity count) 값을 통해 측정될 수 있다. 여기서, 상기 동작 카운트 값은 상기 아이들 상태인 시간 구간이 길수록 커지거나, 반대로, 상기 아이들 상태가 아닌, 즉, 액티브(active) 상태인 시간 구간이 길수록 커질 수 있다. 예를 들어, 상기 CPU(130)가 액티브/아이들 여부에 따라 내부 클럭을 온/오프하는 경우, 상기 제1슬레이브제어부(212)는 상기 온/오프되는 내부 클럭을 카운팅함으로서 상기 동작 카운트 값을 결정할 수 있다. 이 경우, 상기 제1슬레이브제어부(212)는 상기 동작 카운트 값을 미리 정의된 임계값(threshold)과 비교한 후, 상기 동작 카운트 값이 더 크면 동작량이 많으므로 상기 CPU 주파수를 상향 변경 것을 판단하고, 상기 동작 카운트 값이 더 작으면 동작량이 적으므로 상기 CPU 주파수를 하향 변경할 것을 판단한다. 이때, 선택 가능한 CPU 주파수 후보들이 3개 이상인 경우, 다수의 임계값이 정의될 수 있다. 또한, 상기 CPU 주파수의 상향 여부를 판단하기 위한 임계값 및 클럭 주파수 하향 여부를 판단하기 위한 임계값은 별도로 정의될 수 있다.
상기 제2슬레이브제어부(214)는 상기 BUS(140)의 동작을 모니터링하고, 상기 BUS(140)의 동작량에 따라 BUS 주파수를 선택한 후, 선택된 BUS 주파수를 상기 마스터제어부(220)로 요청한다. 예를 들어, 상기 제2슬레이브제어부(214)는 미리 정의된 기준 시간 동안 상기 BUS(140)의 동작이 없는 때 상기 클럭 주파수를 하향 변경할 것을 요청하고, BUS 주파수가 하향 변경된 상태에서 상기 BUS(140)의 동작이 발생하면 상기 BUS 주파수를 상향 변경할 것을 요청할 수 있다. 이때, 상기 상향 변경 또는 하향 변경은 3개 이상의 후보 값들을 이용하여 단계적으로 이루어지거나, 또는, 2개의 후보 값들을 이용하여 2 단계로 이루어질 수 있다. 이때, 상기 제2슬레이브제어부(214)는 해당 BUS 프로토콜에 따른 상기 BUS(140)의 동작 여부를 나타내는 신호를 이용하여 상기 동작 여부를 판단할 수 있다. 예를 들어, AXI 프로토콜이 사용되는 경우, 상기 BUS(140)의 동작 여부는 'VALID' 신호 및 'READY' 신호를 OR 연산함으로써 판단될 수 있다.
상기 제3슬레이브제어부(216)는 상기 기능블럭들(150-1 내지 150-5)의 동작을 모니터링하고, 상기 기능블럭들(150-1 내지 150-5)의 동작을 위해 요구되는 BUS 주파수 및 CPU 주파수 중 적어도 하나를 선택한 후, 선택된 CPU 주파수 또는 BUS 주파수를 상기 마스터제어부(220)로 요청한다. 즉, 상기 기능블럭들(150-1 내지 150-5) 각각의 성능을 보장하기 위해, 상기 제3슬레이브제어부(216)는 상기 기능블럭들(150-1 내지 150-5) 내부의 상기 BUS(140)의 클럭을 사용하는 모듈이 동작을 시작할 때 상기 BUS 주파수를 필요한 만큼 상향 변경할 것을 요청한다. 또한, 해당 모듈이 S/W(Sofrware)의 실행을 필요로 하는 경우, S/W의 실행 속도를 보장하기 위해, 상기 제3슬레이브제어부(216)는 상기 CPU 주파수 또한 필요한 만큼 상향 변경할 것을 요청한다. 다시 말해, 상기 제3슬레이브제어부(216)는 상기 기능블럭들(150-1 내지 150-5) 각각에서 요구되는 상기 BUS 주파수들 중 최대값 및 상기 CPU 주파수들 중 최대값을 상기 마스터제어부(220)로 요청한다.
상기 제4슬레이브제어부(218)는 상기 외부 기능 블럭의 동작을 모니터링하고, 상기 외부 기능 블럭들의 동작을 위해 요구되는 상기 BUS 주파수를 결정한 후, 결정된 클럭 주파수를 상기 마스터제어부(220)로 요청한다. 상기 제4슬레이브제어부(218)는 상기 제3슬레이브제어부(216)과 유사한 구조를 가지되, 요구 클럭 주파수를 상기 기능블럭들(150-1 내지 150-5)이 아닌 SoC의 외부 AP들로부터 제공받는다. 예를 들어, 상기 요구 클럭 주파수는 상기 외부 AP의 GPIO(General Purpose Input/Output)를 통해 제공될 수 있다.
상기 마스터제어부(220)는 상기 슬레이브제어부들(212, 214, 216, 218) 각각으로부터의 클럭 주파수 변경 요청(Freq. Ch. Req.)들을 참고하여 상기 CPU 주파수 및 상기 BUS 주파수를 결정한다. 그리고, 상기 마스터제어부(220)는 현재 CPU 주파수 및 현재 BUS 주파수를 결정된 바에 따라 변경할 것을 상기 클럭제어부(120)로 요청한다. 이때, 상기 BUS 주파수의 변경만이 요청되더라도, 상기 CPU 주파수 및 상기 BUS 주파수 모두의 변경이 결정될 수 있다. 반대로, 상기 CPU 주파수의 변경이 요청되더라도, 현재 BUS 주파수를 고려하여 요청받은 값과 다른 값으로 변경될 수 있다. 또한, 상기 마스터제어부(220)는 상기 슬레이브제어부들(212, 214, 216, 218)의 요청에 대한 수락 여부를 통지하고, 상기 CPU 주파수 또는 상기 BUS 주파수 변경 시 변경된 CPU 주파수 또는 변경된 BUS 주파수를 상기 슬레이브제어부들(212, 214, 216, 218)로 통지한다.
상기 도 2에 도시된 구성을 참고하여 상기 제1슬레이브제어부(212)로부터 상기 CPU 주파수 변경이 요청되는 경우를 설명하면 다음과 같다.
상기 제1슬레이브제어부(212)는 상기 CPU(130)의 동작 정보를 이용하여, 다수의 상향 임계값들 및 다수의 하향 임계값들 중 현재 CPU 주파수에서 사용되어야할 하나의 상향 임계값 및 하나의 하향 임계값을 결정한다. 그리고, 상기 제1슬레이브제어부(212)는 1 주기의 참조 시간 동안 카운팅된 동작 카운트 값 및 상향 임계값/하향 임계값을 비교하고, 상기 상향 임계값보다 상기 동작 카운트 값이 크면 CPU 주파수에 대한 상향 변경을 판단하고, 상기 하향 임계값보다 상기 동작 카운트 값이 작으면 CPU 주파수에 대한 하향 변경을 판단한다.
그리고, 상기 제1슬레이브제어부(212)는 현재 설정(configuration)에 따라 상향/하향 변경의 구체적인 요청 CPU 주파수를 선택한다. 여기서, 상기 설정(configuration)은 구제척인 실시 예 및 본 발명의 실시자의 의도에 따라 달라지는 것으로서, 변경 가능한 CPU 주파수의 후보들 또는 범위를 정의한다. 이어, 상기 제1슬레이브제어부(212)는 선택된 CPU 주파수로의 변경을 상기 마스터제어부(220)로 요청한다. 예를 들어, 상기 제1슬레이브제어부(212)는 상기 CPU 주파수의 변경을 요청하는 신호 및 상기 요청 CPU 주파수를 나타내는 신호를 송신한다.
이때, CPU 주파수의 하향 변경이 요청된 경우, 상기 마스터제어부(220)는 요청받은 CPU 주파수가 현재 BUS 주파수보다 낮은지 판단한다. 만일, 상기 요청받은 CPU 주파수가 현재 BUS 주파수보다 더 높거나 같은 경우, 상기 마스터제어부(220)는 상기 CPU 주파수를 상기 요청받은 값으로 변경할 것을 결정한다. 반면, 상기 요청받은 CPU 주파수가 현재 BUS 주파수보다 더 낮은 경우, 상기 마스터제어부(220)는 상기 CPU 주파수를 가능한 범위에서 최소값으로, 다시 말해, 상기 BUS 주파수보다 높거나 같은 CPU 주파수 후보들 중 최소값으로 변경할 것을 결정한다.
이후, 상기 마스터제어부(220)는 다른 슬레이브제어부들(214, 216, 218) 중 적어도 하나로부터의 BUS 주파수 변경 요청과 상기 제1슬레이브제어부(212)의 CPU 주파수 변경 요청 간 충돌이 발생하는지 판단한다. 여기서, 상기 충돌 여부는 상기 CPU 주파수 및 상기 BUS 주파수 간 관계, 즉, 상기 BUS 주파수가 상기 CPU 주파수보다 높아질 수 없다는 관계에 의해 판단된다. 예를 들어, 요청받은 BUS 주파수가 현재 CPU 주파수보다 크거나 같으면, 상기 CPU 주파수는 하향 변경될 수 없다. 만일, 상기 충돌이 발생하면, 상기 마스터제어부(220)는 상기 제1슬레이브제어부(212)로 요청이 거부됨을 통지한다. 반면, 상기 충돌이 발생하지 아니하면, 상기 마스터제어부(220)는 상기 CPU 주파수를 결정된 값으로 변경할 것을 상기 클럭제어부(120)로 요청한다. 이에 따라, 상기 클럭제어부(120)는 상기 마스터제어부(220)의 요청에 따라 상기 CPU 주파수를 변경하고, 변경됨을 상기 마스터제어부(220)로 통지한다. 이후, 상기 마스터제어부(220)는 현재 CPU 주파수 상태를 갱신하고, 상기 슬레이브제어부들(212, 214, 216, 218)로 변경된 CPU 주파수 값을 통지한다. 이에 따라, 상기 슬레이브제어부들(212, 214, 216, 218) 각각도 현재 클럭 주파수 상태를 갱신한다.
상기 도 2에 도시된 구성을 참고하여 상기 제2슬레이브제어부(214)로부터 상기 BUS 주파수 변경이 요청되는 경우를 설명하면 다음과 같다.
상기 제2슬레이브제어부(214)는 미리 정의된 기준 시간 동안 상기 BUS(140)의 동작이 있는지 여부를 판단한다. 예를 들어, AXI 프로토콜이 적용된 경우, 상기 제2슬레이브제어부(214)는 'VALID' 신호 및 'READY' 신호를 OR한 값을 통해 아이들(idle) 상태인지 여부를 판단함으로서 상기 BUS(140)의 동작 여부를 확인할 수 있다. 상기 기준 시간 동안 상기 BUS(140)의 동작이 없으면, 상기 제2슬레이브제어부(214)는 상기 BUS 주파수를 하향 변경할 것을 판단한다. 그리고, 상기 제2슬레이브제어부(222)는 현재 설정(configuration)에 따라 하향 변경의 구체적인 요청 BUS 주파수를 선택한다. 여기서, 상기 제2슬레이브제어부(214)의 구체적인 설정(configuration)에 따라, 상기 하향 변경의 요청 BUS 주파수는 단계적으로, 또는, 최소값으로 선택될 수 있다. 이어, 상기 제2슬레이브제어부(222)는 선택된 요청 BUS 주파수로의 변경을 상기 마스터제어부(220)로 요청한다. 예를 들어, 상기 제2슬레이브제어부(222)는 상기 CPU 주파수의 변경을 요청하는 신호 및 상기 요청 CPU 주파수를 나타내는 신호를 송신한다.
이때, 상기 마스터제어부(220)는 다른 슬레이브제어부들(216, 218) 중 적어도 하나의 CPU 주파수 또는 BUS 주파수 변경 요청과 상기 제2슬레이브제어부(214)의 BUS 주파수 변경 요청 간 충돌이 발생하는지 판단한다. 예를 들어, 다른 슬레이브제어부들(216, 218) 중 적어도 하나에 의해 요청되는 BUS 주파수가 상기 제2슬레이브제어부(214)에 의해 요청되는 BUS 주파수보다 높으면, 상기 제2슬레이브제어부(214)의 BUS 주파수 변경 요청은 받아들여질 수 없다. 만일, 상기 충돌이 발생하면, 상기 마스터제어부(220)는 상기 제2슬레이브제어부(214)로 요청이 거부됨을 통지한다. 반면, 상기 충돌이 발생하지 아니하면, 상기 마스터제어부(220)는 상기 BUS 주파수를 하향 변경할 것을 상기 클럭제어부(120)로 요청한다. 이에 따라, 상기 클럭제어부(120)는 상기 마스터제어부(220)의 요청에 따라 상기 BUS 주파수를 변경하고, 변경됨을 상기 마스터제어부(220)로 통지한다. 이후, 상기 마스터제어부(220)는 현재 클럭 주파수 상태를 갱신하고, 슬레이브제어부들(212, 214, 216, 218)로 변경된 BUS 주파수 값을 통지한다. 이에 따라, 상기 슬레이브제어부들(212, 214, 216, 218) 각각도 현재 클럭 주파수 상태를 갱신한다.
상기 BUS 주파수가 최대값이 아닌 상태에서, 상기 BUS(140)의 동작이 발생하면, 상기 제2슬레이브제어부(214)는 상기 BUS 주파수를 상향 변경할 것을 판단한다. 그리고, 상기 제2슬레이브제어부(222)는 현재 설정(configuration)에 따라 상향 변경의 구체적인 요청 BUS 주파수를 선택한다. 여기서, 상기 제2슬레이브제어부(214)의 구체적인 설정(configuration)에 따라, 상기 상향 변경의 요청 BUS 주파수는 단계적으로, 또는, 최소값으로 선택될 수 있다. 이어, 상기 제2슬레이브제어부(222)는 선택된 요청 BUS 주파수로의 변경을 상기 마스터제어부(220)로 요청한다. 예를 들어, 상기 제2슬레이브제어부(222)는 상기 CPU 주파수의 변경을 요청하는 신호 및 상기 요청 CPU 주파수를 나타내는 신호를 송신한다.
이때, 상기 요청 BUS 주파수가 현재 CPU 주파수보다 낮거나 같은 경우, 상기 마스터제어부(220)는 상기 BUS 주파수를 상향 변경할 것을 상기 클럭제어부(120)로 요청한다. 반면, 상기 요청 BUS 주파수가 현재 CPU 주파수보다 높으면, 상기 마스터제어부(220)는 상기 BUS 주파수 및 상기 CPU 주파수 모두를 상향 변경할 것을 상기 클럭제어부(120)로 요청한다. 이때, 상향 변경되는 상기 CPU 주파수의 값은 상향 변환되는 상기 BUS 주파수의 값보다 크거나 같다. 이후, 상기 마스터제어부(220)는 상기 클럭제어부(120)로부터 CPU 주파수 및 BUS 주파수 중 적어도 하나가 변경됨을 통지받고, 현재 클럭 주파수 상태를 갱신한 후, 상기 슬레이브제어부들(212, 214, 216, 218)로 변경된 CPU 주파수 및 BUS 주파수 중 적어도 하나의 값을 통지한다. 이에 따라, 상기 슬레이브제어부들(212, 214, 216, 218) 각각도 현재 클럭 주파수 상태를 갱신한다.
상기 도 2에 도시된 구성을 참고하여 상기 제3슬레이브제어부(216)으로부터 상기 BUS 주파수 또는 상기 CPU 주파수의 변경이 요청되는 경우를 설명하면 다음과 같다.
상기 제3슬레이브제어부(216)은 기능블력들(150-1 내지 150-5) 각각으로부터 CPU 주파수 또는 BUS 주파수의 변경 요청들을 수신하고, 상기 변경 요청들을 비교함으로써 요청받은 CPU 주파수들 중 최대값 및 요청받은 BUS 주파수들 중 최대값을 결정한다. 이후, 상기 제3슬레이브제어부(216)는 상기 최대값들을 현재 CPU 주파수 및 현재 BUS 주파수와 비교한다. 비교 결과, 요청받은 CPU 주파수들 중 최대값이 현재 CPU 주파수보다 크면, 상기 제3슬레이브제어부(216)는 상기 요청받은 CPU 주파수들의 최대값으로 CPU 주파수를 상향 변경할 것을 상기 마스터제어부(220)로 요청한다. 또한, 요청받은 BUS 주파수들 중 최대값이 현재 BUS 주파수보다 크면, 상기 제3슬레이브제어부(216)는 상기 요청받은 BUS 주파수들의 최대값으로 BUS 주파수를 상향 변경할 것을 상기 마스터제어부(220)로 요청한다. 본 발명의 다른 실시 예에 따라, 상기 제3슬레이브제어부(216)의 설정(configuration)에 따라 요청 가능한 CPU 주파수 및 BUS 주파수의 후보 값들이 정해져 있는 경우, 상기 제3슬레이브제어부(216)는 상기 최대값보다 크거나 같고, 상기 최대값과 가장 근접한 후보 값으로 상기 CPU 주파수 또는 상기 BUS 주파수를 상향 변경할 것을 상기 마스터제어부(220)로 요청한다.
상기 CPU 주파수의 상향 변경만이 요청된 경우, 상기 마스터제어부(220)는 상기 CPU 주파수를 상향 변경할 것을 상기 클럭제어부(120)로 요청한다.
상기 BUS 주파수의 상향 변경만이 요청된 경우, 상기 마스터제어부(220)는 상기 CPU(130)의 현재 클럭 주파수 및 상기 BUS(140)의 요청 클럭 주파수를 비교한다. 비교 결과, 상기 BUS(140)의 요청 클럭 주파수가 더 낮거나 같으면, 상기 마스터제어부(220)는 상기 BUS 주파수를 상향 변경할 것을 상기 클럭제어부(120)로 요청한다. 반면, 상기 BUS(140)의 요청 클럭 주파수가 더 높으면, 상기 마스터제어부(220)는 상기 BUS(140) 및 상기 CPU(130) 모두의 클럭 주파수를 상향 변경할 것을 상기 클럭제어부(120)로 요청한다.
상기 CPU 주파수 및 상기 BUS 주파수 모두의 상향 변경이 요청된 경우, 상기 마스터제어부(220)는 요청받은 CPU 주파수 및 요청받은 BUS 주파수를 비교한다. 비교 결과, 상기 요청받은 BUS 주파수가 상기 요청받은 CPU 주파수보다 더 낮거나 같으면, 상기 마스터제어부(220)는 상기 제3슬레이브제어부(216)에 의해 요청된 바에 따라 상기 CPU 주파수 및 상기 BUS 주파수를 상향 변경할 것을 상기 클럭제어부(120)로 요청한다. 반면, 상기 요청받은 BUS 주파수가 상기 요청받은 CPU 주파수보다 더 높으면, 상기 마스터제어부(220)는 상기 BUS 주파수를 상기 요청받은 BUS 주파수 값으로, 상기 CPU 주파수를 상기 요청받은 BUS 주파수 값보다 크거나 같은 값으로 상향 변경할 것을 상기 클럭제어부(120)로 요청한다.
이후, 상기 마스터제어부(220)는 상기 클럭제어부(120)로부터 CPU 주파수 및 BUS 주파수 중 적어도 하나가 변경됨을 통지받고, 현재 클럭 주파수 상태를 갱신한 다. 그리고, 상기 마스터제어부(220)는 상기 슬레이브제어부들(212, 214, 216, 218)로 변경된 CPU 주파수 및 변경된 BUS 주파수 중 적어도 하나의 값을 통지한다. 이에 따라, 상기 슬레이브제어부들(212, 214, 216, 218) 각각도 현재 클럭 주파수 상태를 갱신한다.
이때, 상기 기능블럭들(150-1 내지 150-5)가 필요한 CPU 주파수 또는 BUS 주파수는 상기 기능블럭들(150-1 내지 150-5)의 동작이 종료될 때까지 유지되어야 한다. 따라서, 상기 제3슬레이브제어부(216)는 필요한 CPU 주파수 또는 BUS 주파수를 상기 기능블럭들(150-1 내지 150-5)의 동작이 종료될 때까지 유지할 것을 상기 마스터제어부(220)로 요청한다. 이에 따라, 상기 기능블럭들(150-1 내지 150-5)의 동작 중에 다른 슬레이브제어부들(212, 214, 218) 중 적어도 하나로부터 상기 기능블럭들(150-1 내지 150-5)이 필요로 하는 CPU 주파수 또는 BUS 주파수 보다 낮은 값으로 CPU 주파수 또는 BUS 주파수를 변경할 것이 요청되면, 상기 마스터제어부(220)는 상기 다른 슬레이브제어부들(212, 214, 218) 중 적어도 하나로부터의 요청을 무시한다.
도 3은 본 발명의 실시 예에 따른 디지털 시스템에서 상기 CPU(130)를 모니터링하기 위한 슬레이브 제어부(212)의 구성 예를 도시하고 있다.
상기 도 3에 도시된 바와 같이, 상기 제1슬레이브제어부(212)는 상기 CPU(130)의 동작량을 측정하는 동작카운터(activity counter)(302), 동작 카운트 값 및 임계값의 비교 주기를 정의하는 참조시간레지스터(Ref. time register)(304), 상기 비교 주기 마다 초기화되는 참조시간카운터(Ref. time counter)(306), 상기 비교 주기의 경과 여부를 판단하는 비교기(308), 비교 주기 마다 동작 카운트 값을 출력하는 MUX(Multiplexer)(310), 상향 임계값들 각각을 저장하는 다수의 레지스터들(312-1 내지 312-3) 및 하향 임계값들 각각을 저장하는 다수의 레지스터들(314-1 내지 314-3), 임계값 및 카운터 값을 비교하는 비교기(316), 상기 비교기(316)의 비교 결과에 따라 상기 CPU 주파수의 변경을 요구하는 FSM(Frequency Scailing Module)(318)을 포함한다.
상기 도 3은 CPU 주파수 변경이 4개 단계로 변경되는 경우의 실시 예를 도시한다. 따라서, 3개의 상향 임계값들 및 3개의 하향 임계값들이 정의된다. 상기 참조시간카운터(306)는 상기 참조시간레지스터(304)에 저장된 참조 시간 값까지 클럭을 카운팅한다. 클럭 카운트 값이 상기 참조 시간 값과 같아지는 때, 상기 비교기(308)의 출력 값이 변화하고, 이로 인해, 상기 MUX(310)의 출력이 변화한다. 즉, 상기 MUX(310)는 상기 클럭 카운트 값 및 상기 참조 시간 값이 상이할 동안 자신의 출력의 귀환 값을 출력하고, 상기 클럭 카운트 값 및 상기 참조 시간 값이 같아지는 때 상기 동작카운터(302)로부터 제공되는 동작 카운트 값을 출력한다. 따라서, 상기 비교기(316)는 상기 클럭 카운트 값 및 상기 참조 시간 값이 같아지는 때 새로운 동작 카운트 값을 제공받는다. 상기 새로운 동작 카운트 값은 1 주기의 참조 시간 동안 카운팅된 상기 CPU(130)의 내부 클럭 개수일 수 있다. 상기 비교기(316)는 상기 새로운 동작 카운트 값 및 현재 CPU 주파수에 대응되는 상향 임계값/하향 임계값을 비교한 후, 비교 결과를 상기 FSM(318)로 제공한다. 상기 FSM(318)은 상기 비교 결과에 기초하여 현재 CPU 주파수를 상향 변경할지, 하향 변경할지, 또는, 유지할지를 결정하고, CPU 주파수의 변경이 필요하면 원하는 요구 CPU 주파수 및 클럭 주파수 변경 요청(Request)을 마스터제어부(220)로 제공한다. 또한, 상기 FSM(318)은 현재 CPU 주파수 및 현재 BUS 주파수를 나타내는 현재 클럭 주파수 상태 정보를 유지한다.
상기 FSM(318)으로 입/출력되는 신호들은 다음과 같다. '현재 클럭 주파수(CurrentFreq)'는 현재의 클럭 주파수를 나타내는 신호, 'Ack'는 요구한 클럭 주파수 변경이 수락되었는지 여부를 나타내는 신호, '클럭 주파수 변경 요청(FreqChangRequest)'은 클럭 주파수 변경을 요청함을 의미하는 신호, '요구 클럭 주파수(WantedFreq)'은 요구하는 클럭 주파수 값을 나타내는 신호, 'Configuration'은 변경 가능한 CPU 주파수의 후보들을 정의하거나 범위를 정의하는 신호이다.
도 4은 본 발명의 실시 예에 따른 디지털 시스템의 BUS 모니터링을 위한 슬레이브 제어부(214)의 구성 예를 도시하고 있다.
상기 도 4에 도시된 바와 같이, 상기 제2슬레이브제어부(214)는 상기 BUS(140)의 동작이 없는 시간 구간 동안 클럭 개수를 카운팅하는 아이들카운터(idle counter)(402), 상기 BUS 주파수를 하향 변경하기 위한 기준 시간을 정의하는 레지스터(404), 상기 아이들카운터(402)의 출력인 아이들 카운트 값 및 상기 기준 시간 값을 비교하는 비교기(406), 상기 비교기(406)의 비교 결과에 따라 상기 BUS 주파수 변경을 요구하는 FSM(408)을 포함한다.
상기 도 4를 참고하면, 상기 버스(140)의 동작이 없는 동안 상기 아이들카운터(402)의 아이들 카운트 값은 증가하고, 상기 버스(140)의 동작이 있음을 나타내는 신호가 입력되는 상기 아이들 카운트 값은 초기화된다. 상기 아이들 카운트 값 및 상기 레지스터(404)에 저장된 기준 시간 값은 상기 비교기(406)에서 비교되고, 비교 결과는 상기 FSM(408)로 제공된다. 이때, 상기 아이들 카운트 값이 더 크면, 상기 FSM(408)는 상기 기준 시간 동안 상기 BUS(140)의 동작이 없었음을 판단하고, 상기 마스터제어부(220)로 상기 BUS 주파수를 하향 변경할 것을 요청한다. 또한, 상기 BUS 주파수가 하향 변경된 상태에서 상기 기준 시간 값이 더 크면, 상기 FSM(408)는 상기 BUS(140)의 동작이 발생하였음을 판단하고, 상기 마스터제어부(220)로 상기 BUS 주파수 상향 변경을 요청한다. 또한, 상기 FSM(408)은 현재 CPU 주파수 및 현재 BUS 주파수를 나타내는 현재 클럭 주파수 상태 정보를 유지한다.
상기 FSM(408)으로 입/출력되는 신호들은 다음과 같다. '현재 클럭 주파수(CurrentFreq)'는 현재의 클럭 주파수를 나타내는 신호, 'Ack'는 요구한 클럭 주파수 변경이 수락되었는지 여부를 나타내는 신호, '클럭 주파수 변경 요청(FreqChangRequest)'은 클럭 주파수 변경을 요청함을 의미하는 신호, '요구 클럭 주파수(WantedFreq)'은 요구하는 클럭 주파수 값을 나타내는 신호, 'Configuration'은 변경 가능한 CPU 주파수의 후보들을 정의하거나 범위를 정의하는 신호이다.
도 5는 본 발명의 실시 예에 따른 디지털 시스템의 상기 기능블럭들(150-1 내지 150-5)을 모니터링하기 위한 슬레이브 제어부(216)의 구성 예를 도시하고 있다.
상기 도 5에 도시된 바와 같이, 상기 제3슬레이브제어부(216)는 상기 기능블럭들(150-1 내지 150-5) 각각에서 요구되는 CPU 주파수 또는 BUS 주파수들을 비교하는 비교기(502), 상기 비교기(502)의 비교 결과에 따라 상기 CPU 주파수 또는 상기 BUS 주파수의 변경을 요구하는 FSM(504)를 포함한다.
상기 도 5를 참고하면, 상기 기능블럭들(150-1 내지 150-5)로부터의 클럭 주파수 변경 요청들은 상기 비교기(502)에 의해 비교되고, 상기 비교기(502)는 최대값을 상기 FSM(504)로 제공한다. 상기 요청 CPU 주파수 또는 요청 BUS 주파수들 중 최대값을 제공받은 상기 FSM(504)는 상기 최대값이 현재 CPU 주파수 또는 현재 BUS 주파수보다 큰지 확인하고, 크면, 상기 CPU 주파수 또는 상기 BUS 주파수를 해당 최대값으로 상향 변경할 것을 상기 마스터제어부(220)로 요청한다. 또한, 상기 FSM(504)은 현재 CPU 주파수 및 현재 BUS 주파수를 나타내는 현재 클럭 주파수 상태 정보를 유지한다.
상기 FSM(504)으로 입/출력되는 신호들은 다음과 같다. '현재 클럭 주파수(CurrentFreq)'는 현재의 클럭 주파수를 나타내는 신호, 'Ack'는 요구한 클럭 주파수 변경이 수락되었는지 여부를 나타내는 신호, 'Configuration'은 변경 가능한 CPU 주파수의 후보들을 정의하거나 범위를 정의하는 신호, '클럭 주파수 변경 요청(FreqChangRequest)'은 클럭 주파수 변경을 요청함을 의미하는 신호, '요구 클럭 주파수(WantedFreq)'은 요구하는 클럭 주파수 값을 나타내는 신호이다.
이때, 상기 기능블럭들(150-1 내지 150-5) 각각으로부터의 클럭 주파수 변경 요청은 기능 블럭 A와 같이 기능 블럭 하나당 다수이거나, 또는 기능 블럭 B와 같이 기능 블럭 하나당 하나일 수 있다. 예를 들어, 본 발명의 실시 예에 따라, 하나의 기능 블럭 내에서 상기 BUS(140)의 클럭을 사용하는 모듈(module) 별로 정밀하게 클럭 주파수를 조정하고자 하는 경우, 상기 기능 블럭 A와 같이 상기 BUS(140)의 클럭을 사용하는 모듈별로 요구 클럭 주파수가 제공된다. 또는 본 발명의 다른 실시 예에 따라, 보다 간단한 방식으로서, 상기 기능 블럭 B와 같이 하나의 기능 블럭 내에서 상기 BUS(140)의 클럭을 사용하는 모듈 중 하나라도 동작하면 해당 기능 블럭의 최대 요구 클럭 주파수가 제공된다.
상기 도 5에서, 기능 블럭의 클럭 주파수 변경 요청은 각 모듈에서 직접 제공되는 것으로 도시되었다. 하지만, 본 발명의 다른 실시 예에 따라, 상기 클럭 주파수 변경 요청을 제공하는 별도의 블럭이 존재할 수 있다. 이 경우, 상기 별도의 블럭은 상기 모듈들의 동작 상태를 관찰하고, 상기 모듈들이 동작하는 경우, 대응되는 클럭 주파수 변경 요청을 상기 비교기(502)로 제공할 수 있다.
도 6는 본 발명의 실시 예에 따른 디지털 시스템의 상기 마스터제어부(220)의 구성 예를 도시하고 있다.
상기 도 6에 도시된 바와 같이, 상기 마스터제어부(220)는 상기 슬레이브제어부들(212, 214, 216, 218)로부터의 클럭 주파수 변경 요청에 따라 상기 CPU 주파수 및 상기 BUS 주파수를 결정하는 FSM(602)을 포함한다.
상기 도 6을 참고하면, 상기 FSM(602)은 상기 슬레이브제어부들(212, 214, 216, 218)의 클럭 주파수 변경 요청들을 참고하여 CPU 주파수 및 BUS 주파수를 결정하고, 결정된 CPU 주파수 및 BUS 주파수를 상기 클럭제어부(120)로 요청한다. 이때, 상기 FSM(602)은 상기 슬레이브제어부들(212, 214, 216, 218)의 클럭 주파수 변경 요청 간 충돌 여부를 판단하고, 충돌 발생 여부에 따라 요청을 무시할 수 있다. 또한, 상기 FSM(602)은 현재 CPU 주파수 및 현재 BUS 주파수를 나타내는 현재 클럭 주파수 상태 정보를 유지한다.
상기 FSM(602)으로 입/출력되는 신호들은 다음과 같다. '클럭 주파수 변경 요청(FreqChangRequest)'은 클럭 주파수 변경을 요청함을 의미하는 신호, '요구 클럭 주파수(WantedFreq)'은 요구하는 클럭 주파수를 나타내는 신호, 'Ack'는 요구된 클럭 주파수 변경이 수락되었는지 여부를 나타내는 신호, '현재 클럭 주파수(CurrentFreq)'는 현재의 클럭 주파수를 나타내는 신호, '요구 CPU 클럭 주파수(WantedCpuFreq)'는 상기 클럭제어부(120)로 요구되는 상기 CPU 주파수를 나타내는 신호, '요구 BUS 클럭 주파수(WantedBusFreq)'는 상기 클럭제어부(120)로 요구되는 상기 BUS 주파수를 나타내는 신호, '변경요청(ChRequest)'는 상기 클럭제어부(120)로 클럭 주파수 변경을 요청함을 나타내는 신호, 'ChAck'는 상기 클럭제어부(120)로부터 제공되는 클럭 주파수의 변경 여부를 나타내는 신호, 'Configuration'은 변경 가능한 CPU 주파수의 후보들을 정의하거나 범위를 정의하는 신호이다.
도 7은 본 발명의 실시 예에 따른 디지털 시스템의 CPU 모니터링을 위한 상기 제1슬레이브제어부(212)의 동작 절차를 도시하고 있다.
상기 도 7을 참고하면, 상기 제1슬레이브제어부(212)는 701단계에서 1주기의 참조 시간 동안 동작 카운트 값을 생성한다. 여기서, 상기 동작 카운트 값은 상기 CPU(130)가 아이들 상태인 시간 구간이 길수록 커지거나, 반대로, 상기 아이들 상태가 아닌, 즉, 액티브 상태인 시간 구간이 길수록 커질 수 있다. 예를 들어, 상기 CPU(130)가 액티브/아이들 여부에 따라 내부 클럭을 온/오프하는 경우, 상기 제1슬레이브제어부(212)는 상기 온/오프되는 내부 클럭을 카운팅함으로서 상기 동작 카운트 값을 결정할 수 있다.
상기 동작 카운트 값을 생성한 후, 상기 제1슬레이브제어부(212)는 703단계로 진행하여 현재 CPU 주파수에 대응되는 상향 임계값 및 하향 임계값을 선택한다. 즉, 선택 가능한 CPU 주파수 후보들이 3개 이상인 경우, 다수의 임계값들이 정의될 수 있다. 이 경우, 상기 제1슬레이브제어부(212)는 상기 다수의 상향/하향 임계값들 중 한 쌍(pair)의 상향/하향 임계값을 선택한다. 여기서, 상기 상향 임계값 및 상기 하향 임계값은 같은 값이거나 서로 다른 값일 수 있다.
이어, 상기 제1슬레이브제어부(212)는 705단계로 진행하여 상기 동작 카운트 값이 상기 상향 임계값보다 큰지 판단한다. 상기 동작 카운트 값이 상기 상향 임계값보다 크면, 상기 제1슬레이브제어부(212)는 707단계로 진행하여 상기 CPU 주파수를 상향 변경할 것을 판단한다. 즉, 상기 동작 카운트 값이 상기 상향 임계값보다 크면, 현재 상기 CPU(130)의 동작량이 많은 것이므로, 상기 제1슬레이브제어부(212)는 상기 CPU 주파수를 상향 변경할 것을 판단한다.
상기 705단계에서, 상기 동작 카운트 값이 상기 상향 임계값보다 작거나 같으면, 상기 제1슬레이브제어부(212)는 709단계로 진행하여 상기 동작 카운트 값이 상기 하향 임계값보다 작은 판단한다. 상기 동작 카운트 값이 상기 하향 임계값보다 작으면, 상기 제1슬레이브제어부(212)는 711단계로 진행하여 상기 CPU 주파수를 상향 변경할 것을 판단한다. 즉, 상기 동작 카운트 값이 상기 하향 임계값보다 작으면, 현재 상기 CPU(130)의 동작량이 적은 것이므로, 상기 제1슬레이브제어부(212)는 상기 CPU 주파수를 하향 변경할 것을 판단한다.
상기 707단계에서 상기 CPU 주파수를 상향 변경할 것을 판단하거나, 상기 711단계에서 상기 CPU 주파수를 하향 변경할 것을 판단한 후, 상기 제1슬레이브제어부(212)는 713단계로 진행하여 설정(configuration)에 따라 구체적인 요청 CPU 주파수 값을 선택한다. 여기서, 상기 설정(configuration)은 구제척인 실시 예 및 본 발명의 실시자의 의도에 따라 달라지는 것으로서, 변경 가능한 CPU 주파수의 후보들 또는 범위를 정의한다. 예를 들어, 상기 설정은 CPU 주파수의 후보들을 최대 주파수, 최대 주파수의 1/2, 최대 주파수의 1/4, 최대 주파수의 1/8 등으로 정의할 수 있다.
이어, 상기 제1슬레이브제어부(212)는 715단계로 진행하여 상기 마스터제어부(220)로 상기 CPU 주파수를 변경할 것을 요청한다. 이때, 상기 제1슬레이브제어부(212)는 상기 요청 CPU 주파수 값을 함께 제공한다. 예를 들어, 상기 제1슬레이브제어부(212)는 상기 CPU 주파수의 변경을 요청하는 신호 및 상기 요청 CPU 주파수를 나타내는 신호를 송신한다.
이후, 상기 제1슬레이브제어부(212)는 717단계로 진행하여 상기 CPU 주파수의 변경 요청이 거부되는지 수락되는지 확인한다. 여기서, 상기 변경 요청의 거부/수락 여부는 상기 마스터제어부(212)로부터 수신되는 Ack/Nack 신호를 통해 확인된다. 상기 변경 요청이 수락되면, 상기 제1슬레이브제어부(212)는 719단계로 진행하여 변경된 클럭 주파수가 통지되는지 확인한다. 이때, 상기 변경된 클럭 주파수는 CPU 주파수 및 BUS 주파수 중 적어도 하나를 포함한다. 상기 변경된 클럭 주파수가 통지되면, 상기 제1슬레이브제어부(212)는 721단계로 진행하여 현재 클럭 주파수 상태 정보를 통지된 바에 따라 갱신한다.
도 8은 본 발명의 실시 예에 따른 디지털 시스템의 BUS 모니터링을 위한 상기 제2슬레이브제어부(214)의 동작 절차를 도시하고 있다.
상기 도 8을 참고하면, 상기 제2슬레이브제어부(214)는 801단계에서 미리 정의된 기준 시간 동안 상기 BUS(140)의 동작이 없는지 판단한다. 상기 BUS(140)의 동작 여부는 상기 BUS(140)의 동작 시 생성되는 신호를 관찰함으로써 판단될 수 잇다. 예를 들어, AXI 프로토콜이 적용된 경우, 상기 제2슬레이브제어부(214)는 'VALID' 신호 및 'READY' 신호를 OR한 값을 통해 아이들(idle) 상태인지 여부를 판단함으로서 상기 BUS(140)의 동작 여부를 판단할 수 있다.
만일, 상기 기준 시간 동안 상기 BUS(140)의 동작이 없으면, 상기 제2슬레이브제어부(214)는 803단계로 진행하여 상기 BUS 주파수를 하향 변경할 것을 판단한다. 반면, 상기 기준 시간 경과 전에 상기 BUS(140)의 동작이 발생하면, 상기 제2슬레이브제어부(214)는 805단계로 진행하여 상기 BUS 주파수를 상향 변경할 것을 판단한다. 단, 상기 상향 변경은 현재 BUS 주파수가 상기 기준 시간 동안의 미동작으로 인해 하향 변경된 경우에만 판단된다. 따라서, BUS 주파수가 상기 기준 시간 동안의 미동작으로 인해 하향 변경된바 없다면, 상기 805단계는 배제된다. 본 발명의 다른 실시 예에 따라, 상기 상향 변경은 현재 BUS 주파수가 최대가 아닌 경우에만 판단될 수 있다. 이 경우, 현재 BUS 주파수가 최대인 경우, 상기 805단계는 배제된다.
상기 803단계에서 상기 BUS 주파수를 하향 변경할 것을 판단하거나, 상기 805단계에서 상기 BUS 주파수를 상향 변경할 것을 판단한 후, 상기 제2슬레이브제어부(214)는 807단계로 진행하여 설정(configuration)에 따라 구체적인 요청 CPU 주파수 값을 선택한다. 여기서, 상기 설정(configuration)은 구제척인 실시 예 및 본 발명의 실시자의 의도에 따라 달라지는 것으로서, 변경 가능한 BUS 주파수의 후보들 또는 범위를 정의한다. 따라서, 상기 제2슬레이브제어부(214)의 구체적인 설정(configuration)에 따라, 상기 하향/상향 변경의 요청 BUS 주파수는 단계적으로, 또는, 최소값/최대값으로 선택될 수 있다.
이어, 상기 제2슬레이브제어부(214)는 809단계로 진행하여 상기 마스터제어부(220)로 상기 BUS 주파수를 변경할 것을 요청한다. 이때, 상기 제2슬레이브제어부(214)는 상기 요청 BUS 주파수 값을 함께 제공한다. 예를 들어, 상기 제2슬레이브제어부(214)는 상기 BUS 주파수의 변경을 요청하는 신호 및 상기 요청 BUS 주파수를 나타내는 신호를 송신한다.
이후, 상기 제2슬레이브제어부(214)는 811단계로 진행하여 상기 BUS 주파수의 변경 요청이 거부되는지 수락되는지 확인한다. 여기서, 상기 변경 요청의 거부/수락 여부는 상기 마스터제어부(212)로부터 수신되는 Ack/Nack 신호를 통해 확인된다. 상기 변경 요청이 수락되면, 상기 제2슬레이브제어부(214)는 813단계로 진행하여 변경된 클럭 주파수가 통지되는지 확인한다. 이때, 상기 변경된 클럭 주파수는 CPU 주파수 및 BUS 주파수 중 적어도 하나를 포함한다. 상기 변경된 클럭 주파수가 통지되면, 상기 제2슬레이브제어부(214)는 815단계로 진행하여 현재 클럭 주파수 상태 정보를 통지된 바에 따라 갱신한다.
도 9는 본 발명의 실시 예에 따른 디지털 시스템의 기능 블럭 모니터링을 위한 상기 제3슬레이브제어부(216)의 동작 절차를 도시하고 있다.
상기 도 9를 참고하면, 상기 제3슬레이브제어부(216)는 901단계에서 기능 블럭을 위한 BUS 주파수 상향 요청이 발생하는지 판단한다. 여기서, 상기 BUS 주파수 상향 요청은 기능 블럭 내부의 상기 BUS(140)의 클럭을 사용하는 모듈이 동작을 시작할 때 발생한다.
상기 기능 블럭을 위한 BUS 주파수 상향 요청이 발생하면, 상기 제3슬레이브제어부(216)는 903단계로 진행하여 요청받은 BUS 주파수의 최대값을 확인한다. 즉, 다수의 기능 블럭을 위한 BUS 주파수 상향 요청들이 발생한 경우, 상기 제3슬레이브제어부(216)는 각 요청의 요청 BUS 주파수들 중 최대값을 확인한다. 만일, 하나의 요청만이 발생한 경우, 상기 최대값은 상기 하나의 요청의 요청 BUS 주파수이다.
이어, 상기 제3슬레이브제어부(216)는 905단계로 진행하여 상기 최대값이 현재 BUS 주파수보다 큰지 판단한다. 만일, 상기 최대값이 상기 현재 BUS 주파수보다 작거나 같으면, 상기 BUS 주파수의 상향 변경을 요청할 필요가 없으므로, 상기 제3슬레이브제어부(216)는 본 절차를 종료한다.
반면, 상기 최대값이 상기 현재 BUS 주파수보다 크면, 상기 제3슬레이브제어부(216)는 907단계로 진행하여 상기 마스터제어부(220)로 상기 BUS 주파수를 상기 최대값으로 상향 변경할 것을 요청한다. 이때, 상기 제3슬레이브제어부(216)는 상기 요청 BUS 주파수 값을 함께 제공한다. 예를 들어, 상기 제3슬레이브제어부(216)는 상기 BUS 주파수의 변경을 요청하는 신호 및 상기 요청 BUS 주파수를 나타내는 신호를 송신한다.
상기 901단계에서, 상기 기능 블럭을 위한 BUS 주파수 상향 요청이 발생하지 아니하면, 상기 제3슬레이브제어부(216)는 909단계로 진행하여 기능 블럭을 위한 CPU 주파수 상향 요청이 발생하는지 판단한다. 여기서, 상기 CPU 주파수 상향 요청은 기능 블럭 내부의 모듈이 S/W를 실행하고자할 때 발생한다.
상기 기능 블럭을 위한 CPU 주파수 상향 요청이 발생하면, 상기 제3슬레이브제어부(216)는 911단계로 진행하여 요청받은 CPU 주파수의 최대값을 확인한다. 즉, 다수의 기능 블럭을 위한 CPU 주파수 상향 요청들이 발생한 경우, 상기 제3슬레이브제어부(216)는 각 요청의 요청 CPU 주파수들 중 최대값을 확인한다. 만일, 하나의 요청만이 발생한 경우, 상기 최대값은 상기 하나의 요청의 요청 CPU 주파수이다.
이어, 상기 제3슬레이브제어부(216)는 913단계로 진행하여 상기 최대값이 현재 CPU 주파수보다 큰지 판단한다. 만일, 상기 최대값이 상기 현재 CPU 주파수보다 작거나 같으면, 상기 CPU 주파수의 상향 변경을 요청할 필요가 없으므로, 상기 제3슬레이브제어부(216)는 본 절차를 종료한다.
반면, 상기 최대값이 상기 현재 CPU 주파수보다 크면, 상기 제3슬레이브제어부(216)는 915단계로 진행하여 상기 마스터제어부(220)로 상기 CPU 주파수를 상기 최대값으로 상향 변경할 것을 요청한다. 이때, 상기 제3슬레이브제어부(216)는 상기 요청 CPU 주파수 값을 함께 제공한다. 예를 들어, 상기 제3슬레이브제어부(216)는 상기 CPU 주파수의 변경을 요청하는 신호 및 상기 요청 CPU 주파수를 나타내는 신호를 송신한다.
이후, 상기 제3슬레이브제어부(216)는 917단계로 진행하여 상기 BUS 주파수 또는 상기 CPU 주파수의 변경 요청이 거부되는지 수락되는지 확인한다. 여기서, 상기 변경 요청의 거부/수락 여부는 상기 마스터제어부(212)로부터 수신되는 Ack/Nack 신호를 통해 확인된다. 상기 변경 요청이 수락되면, 상기 제3슬레이브제어부(216)는 919단계로 진행하여 변경된 클럭 주파수가 통지되는지 확인한다. 이때, 상기 변경된 클럭 주파수는 CPU 주파수 및 BUS 주파수 중 적어도 하나를 포함한다. 상기 변경된 클럭 주파수가 통지되면, 상기 제3슬레이브제어부(216)는 921단계로 진행하여 현재 클럭 주파수 상태 정보를 통지된 바에 따라 갱신한다.
도 10은 본 발명의 실시 예에 따른 디지털 시스템의 외부 AP 모니터링을 위한 상기 제4슬레이브제어부(218)의 동작 절차를 도시하고 있다.
상기 도 10을 참고하면, 상기 제4슬레이브제어부(218)는 1001단계에서 외부 AP를 위한 BUS 주파수 상향 요청이 발생하는지 판단한다. 여기서, 상기 BUS 주파수 상향 요청은 상기 BUS(140)의 클럭을 사용하는 AP가 동작을 시작할 때 발생한다.
상기 외부 AP를 위한 BUS 주파수 상향 요청이 발생하면, 상기 제4슬레이브제어부(218)는 1003단계로 진행하여 요청받은 BUS 주파수의 최대값을 확인한다. 즉, 다수의 외부 AP을 위한 BUS 주파수 상향 요청들이 발생한 경우, 상기 제4슬레이브제어부(218)는 각 요청의 요청 BUS 주파수들 중 최대값을 확인한다. 만일, 하나의 요청만이 발생한 경우, 상기 최대값은 상기 하나의 요청의 요청 BUS 주파수이다.
이어, 상기 제4슬레이브제어부(218)는 1005단계로 진행하여 상기 최대값이 현재 BUS 주파수보다 큰지 판단한다. 만일, 상기 최대값이 상기 현재 BUS 주파수보다 작거나 같으면, 상기 BUS 주파수의 상향 변경을 요청할 필요가 없으므로, 상기 제4슬레이브제어부(218)는 본 절차를 종료한다.
반면, 상기 최대값이 상기 현재 BUS 주파수보다 크면, 상기 제4슬레이브제어부(218)는 1007단계로 진행하여 상기 마스터제어부(220)로 상기 BUS 주파수를 상기 최대값으로 상향 변경할 것을 요청한다. 이때, 상기 제4슬레이브제어부(218)는 상기 요청 BUS 주파수 값을 함께 제공한다. 예를 들어, 상기 제4슬레이브제어부(218)는 상기 BUS 주파수의 변경을 요청하는 신호 및 상기 요청 BUS 주파수를 나타내는 신호를 송신한다.
이후, 상기 제4슬레이브제어부(218)는 1009단계로 진행하여 상기 BUS 주파수 의 변경 요청이 거부되는지 수락되는지 확인한다. 여기서, 상기 변경 요청의 거부/수락 여부는 상기 마스터제어부(212)로부터 수신되는 Ack/Nack 신호를 통해 확인된다. 상기 변경 요청이 수락되면, 상기 제4슬레이브제어부(218)는 1011단계로 진행하여 변경된 클럭 주파수가 통지되는지 확인한다. 이때, 상기 변경된 클럭 주파수는 CPU 주파수 및 BUS 주파수 중 적어도 하나를 포함한다. 상기 변경된 클럭 주파수가 통지되면, 상기 제4슬레이브제어부(218)는 1013단계로 진행하여 현재 클럭 주파수 상태 정보를 통지된 바에 따라 갱신한다.
도 11a 내지 도 11c는 본 발명의 실시 예에 따른 디지털 시스템의 상기 마스터제어부(220)의 동작 절차를 도시하고 있다.
상기 도 11a 내지 도 11c을 참고하면, 상기 마스터제어부(220)는 1101단계에서 적어도 하나의 슬레이브 제어부로부터 클럭 주파수, 즉, CPU 주파수 및 BUS 주파수 중 적어도 하나의 변경 요청이 수신되는지 확인한다.
적어도 하나의 클럭 주파수 변경 요청이 수신되면, 상기 마스터제어부(220)는 1103단계로 진행하여 요청받은 CPU 주파수 및 BUS 주파수 중 적어도 하나의 최대값을 확인한다. 즉, 다수의 클럭 주파수 변경 요청들이 발생한 경우, 상기 마스터제어부(220)는 각 요청의 요청 CPU/BUS 주파수들 중 최대값을 확인한다. 이때, CPU 주파수 변경 요청 및 BUS 주파수 변경 요청이 모두 발생한 경우, 요청 CPU 주파수의 최대값 및 요청 BUS 주파수의 최대값이 각각 결정된다. 단, CPU 주파수 및 BUS 주파수 각각에 대하여 하나의 요청만이 발생한 경우, 상기 최대값은 상기 하나의 요청의 요청 CPU 주파수 및 요청 BUS 주파수이다.
이후, 상기 마스터제어부(220)는 1105단계로 진행하여 변경 요청의 대상이 CPU 주파수인지, BUS 주파수인지, CPU 주파수 및 BUS 주파수 모두인지 판단한다. 상기 마스터제어부(220)는 상기 변경 요청 대상이 상기 CPU 주파수만이면 1107단계로 진행하고, 상기 변경 요청 대상이 상기 BUS 주파수만이면 1125단계로 진행하고, 상기 변경 요청 대상이 상기 CPU 주파수 및 상기 BUS 주파수 모두이면 1145단계로 진행한다.
상기 1105단계에서, 상기 변경 요청 대상이 상기 CPU 주파수만이면, 상기 마스터제어부(220)는 1107단계로 진행하여 상기 CPU 주파수의 변경 요청이 상향 변경인지 하향 변경인지 판단한다. 즉, 상기 마스터제어부(220)는 요청 CPU 주파수가 현재 CPU 주파수보다 큰 값인지, 또는 작은 값인지 판단한다.
상기 CPU 주파수의 변경 요청이 상향 요청이면, 상기 마스터제어부(220)는 1109단계로 진행하여 현재 CPU 주파수가 최대인지 판단한다. 다시 말해, 상기 마스터제어부(220)는 상기 CPU 주파수가 상향 변경이 가능한지, 다시 말해, 현재 CPU 주파수를 더 높일 수 있는지 판단한다.
만일, 상기 현재 CPU 주파수가 최대이면, 상기 마스터제어부(220)는 1111단계로 진행하여 상기 CPU 주파수의 상향 변경 요청을 거부한다. 즉, 상기 마스터제어부(220)는 상기 CPU 주파수를 상향 변경하지 아니할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 거부됨을 통지한다. 그리고, 상기 마스터제어부(220)는 본 절차를 종료한다.
반면, 상기 현재 CPU 주파수가 최대이면, 상기 마스터제어부(220)는 1113단계로 진행하여 상기 CPU 주파수의 상향 변경 요청을 수락한다. 즉, 상기 마스터제어부(220)는 상기 CPU 주파수를 상향 변경할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 수락됨을 통지한다.
상기 1107단계에서, 상기 CPU 주파수의 변경 요청이 하향 요청이면, 상기 마스터제어부(220)는 1115단계로 진행하여 요청 CPU 주파수가 현재 BUS 주파수보다 크거나 같은지 판단한다. 즉, 상기 CPU 주파수가 상기 BUS 주파수 보다 낮을 수 없다는 조건에 근거하여, 상기 마스터제어부(220)는 상기 요청 CPU 주파수가 상기 CPU 주파수 및 상기 BUS 주파수의 관계를 만족하는 범위인지 판단한다.
만일, 상기 요청 CPU 주파수가 상기 현재 BUS 주파수보다 크거나 같으면, 상기 마스터제어부(220)는 상기 1113단계로 진행하여 상기 CPU 주파수의 하향 변경 요청을 수락한다. 즉, 상기 마스터제어부(220)는 상기 CPU 주파수를 하향 변경할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 수락됨을 통지한다.
반면, 상기 요청 CPU 주파수가 상기 현재 BUS 주파수보다 작으면, 상기 마스터제어부(220)는 상기 1115단계로 진행하여 현재 BUS 주파수보다 크거나 같은 범위에서 요청을 수락한다. 즉, 상기 마스터제어부(220)는 상기 CPU 주파수를 상기 현재 BUS 주파수와 같은 값으로 하향 변경할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 수락됨을 통지한다.
상기 1113단계 또는 상기 1117단계에서 변경 요청을 수락한 후, 상기 마스터제어부(220)는 1119단계로 진행하여 상기 1113단계 또는 상기 1117단계에서 결정된 바에 따라 상기 클럭제어부(120)로 상기 CPU 주파수의 변경을 요청한다. 예를 들어, 상기 마스터제어부(220)는 상기 CPU 주파수의 변경을 요청하는 신호 및 상기 요청 CPU 주파수를 나타내는 신호를 송신한다. 이후, 상기 마스터제어부(220)는 1121단계로 진행하여 상기 클럭제어부(120)로부터 변경된 클럭 주파수 값이 통지되는지 판단한다. 상기 변경된 클럭 주파수 값이 통지되면, 상기 마스터제어부(220)는 1123단계로 진행하여 현재 클럭 주파수 상태 정보를 통지된 바에 따라 갱신하고, 슬레이브제어부들로 상기 변경된 클럭 주파수 값을 통지한다.
상기 1105단계에서, 상기 변경 요청 대상이 상기 BUS 주파수만이면, 상기 마스터제어부(220)는 1125단계로 진행하여 상기 BUS 주파수의 변경 요청이 상향 변경인지 하향 변경인지 판단한다. 즉, 상기 마스터제어부(220)는 요청 BUS 주파수가 현재 BUS 주파수보다 큰 값인지, 또는 작은 값인지 판단한다. 만일, 상기 BUS 주파수의 변경 요청이 하향 요청이면, 상기 마스터제어부(220)는 1133단계로 진행한다.
반면, 상기 BUS 주파수의 변경 요청이 상향 요청이면, 상기 마스터제어부(220)는 1127단계로 진행하여 현재 BUS 주파수가 최대인지 판단한다. 다시 말해, 상기 마스터제어부(220)는 상기 BUS 주파수가 상향 변경이 가능한지, 다시 말해, 현재 BUS 주파수를 더 높일 수 있는지 판단한다.
만일, 상기 현재 BUS 주파수가 최대이면, 상기 마스터제어부(220)는 1129단계로 진행하여 상기 BUS 주파수의 상향 변경 요청을 거부한다. 즉, 상기 마스터제어부(220)는 상기 BUS 주파수를 상향 변경하지 아니할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 거부됨을 통지한다. 그리고, 상기 마스터제어부(220)는 본 절차를 종료한다.
반면, 상기 현재 BUS 주파수가 최대가 아니면, 상기 마스터제어부(220)는 1131단계로 진행하여 상기 요청 BUS 주파수가 현재 CPU 주파수보다 큰지 판단한다. 즉, 상기 CPU 주파수가 상기 BUS 주파수 보다 낮을 수 없다는 조건에 근거하여, 상기 마스터제어부(220)는 상기 요청 BUS 주파수가 상기 CPU 주파수 및 상기 BUS 주파수의 관계를 만족하는 범위인지 판단한다.
만일, 상기 요청 BUS 주파수가 상기 현재 CPU 주파수보다 작거나 같으면, 상기 마스터제어부(220)는 1133단계로 진행하여 상기 BUS 주파수의 상향 변경 요청을 수락한다. 즉, 상기 마스터제어부(220)는 상기 BUS 주파수를 상기 요구 BUS 주파수로 상향 변경할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 수락됨을 통지한다.
이어, 상기 마스터제어부(220)는 1135단계로 진행하여 상기 클럭제어부(120)로 상기 BUS 주파수를 상기 요구 BUS 주파수로 상향 변경할 것을 요청한다. 예를 들어, 상기 마스터제어부(220)는 상기 BUS 주파수의 변경을 요청하는 신호 및 상기 요청 BUS 주파수를 나타내는 신호를 송신한다.
상기 1131단계에서, 상기 요청 BUS 주파수가 상기 현재 CPU 주파수보다 크면, 상기 마스터제어부(220)는 상기 1137단계로 진행하여 상기 BUS 주파수의 상향 변경 요청을 수락한다. 상기 마스터제어부(220)는 상기 BUS 주파수를 상기 요구 BUS 주파수로 상향 변경할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 수락됨을 통지한다. 그리고, 상기 마스터제어부(220)는 상기 CPU 주파수를 상향 변경할 것을 결정한다. 즉, 상기 CPU 주파수가 상기 BUS 주파수보다 낮을 수 없으므로, 상기 마스터제어부(220)는 상기 BUS 주파수의 상향 변경에 따라 상기 CPU 주파수도 상향 변경할 것을 결정한다.
이어, 상기 마스터제어부(220)는 1139단계로 진행하여 상기 클럭제어부(120)로 상기 BUS 주파수를 상기 요구 BUS 주파수로 상향 변경할 것을, 상기 CPU 주파수를 상기 요구 BUS 주파수와 같은 값으로 상향 변경할 것을 요청한다. 예를 들어, 상기 마스터제어부(220)는 상기 BUS 주파수 및 상기 CPU 주파수의 변경을 요청하는 신호, 상기 요청 BUS 주파수를 나타내는 신호, 상기 요청 CPU 주파수를 나타내는 신호를 송신한다.
이후, 상기 마스터제어부(220)는 1141단계로 진행하여 상기 클럭제어부(120)로부터 변경된 클럭 주파수 값이 통지되는지 판단한다. 상기 변경된 클럭 주파수 값이 통지되면, 상기 마스터제어부(220)는 1143단계로 진행하여 현재 클럭 주파수 상태 정보를 통지된 바에 따라 갱신하고, 슬레이브제어부들로 상기 변경된 클럭 주파수 값을 통지한다.
상기 1105단계에서, 상기 변경 요청 대상이 상기 CPU 주파수 및 BUS 주파수 모두이면, 상기 마스터제어부(220)는 1145단계로 진행하여 현재 CPU 주파수 및 요청 CPU 주파수 모두가 최대 CPU 주파수인지 판단한다. 만일, 상기 현재 CPU 주파수 및 상기 요청 CPU 주파수 모두가 최대 CPU 주파수이면, 상기 마스터제어부(220)는 1147단계로 진행하여 상기 CPU 주파수의 상향 변경 요청을 거부한다. 이에 따라, 상기 마스터제어부(220)는 해당 슬레이브 제어부로 변경 요청이 거부됨을 통지한다. 그리고, 상기 마스터제어부(220)는 상기 1125단계로 진행한다.
반면, 상기 현재 CPU 주파수 및 상기 요청 CPU 주파수 중 적어도 하나가 최대 CPU 주파수가 아니면, 상기 마스터제어부(220)는 1149단계로 진행하여 현재 BUS 주파수 및 요청 BUS 주파수 모두가 최대 CPU 주파수인지 판단한다. 만일, 상기 현재 BUS 주파수 및 상기 요청 BUS 주파수 모두가 최대 CPU 주파수이면, 상기 마스터제어부(220)는 1151단계로 진행하여 상기 BUS 주파수의 상향 변경 요청을 거부한다. 이에 따라, 상기 마스터제어부(220)는 해당 슬레이브 제어부로 변경 요청이 거부됨을 통지한다. 그리고, 상기 마스터제어부(220)는 상기 1107단계로 진행한다.
반면, 상기 현재 BUS 주파수 및 상기 요청 BUS 주파수 중 적어도 하나가 최대 BUS 주파수가 아니면, 상기 마스터제어부(220)는 1153단계로 진행하여 요청 CPU 주파수가 요청 BUS 주파수보다 크거나 같은지 판단한다. 즉, 상기 CPU 주파수가 상기 BUS 주파수 보다 낮을 수 없다는 조건에 근거하여, 상기 마스터제어부(220)는 상기 요청 CPU 주파수 및 상기 요청 BUS 주파수가 상기 CPU 주파수 및 상기 BUS 주파수의 관계를 만족하는 범위인지 판단한다.
만일, 상기 요청 CPU 주파수가 상기 요청 BUS 주파수보다 크거나 같으면, 상기 마스터제어부(220)는 1155단계로 진행하여 상기 CPU 주파수의 변경 요청 및 상기 BUS 주파수의 변경 요청을 수락한다. 즉, 상기 마스터제어부(220)는 상기 CPU 주파수 및 상기 BUS 주파수를 상기 요구 CPU 주파수 및 상기 요구 BUS 주파수로 변경할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 수락됨을 통지한다.
반면, 상기 요청 CPU 주파수가 상기 요청 BUS 주파수보다 작으면, 상기 마스터제어부(220)는 1157단계로 진행하여 상기 BUS 주파수의 변경 요청을 수락한다. 즉, 상기 마스터제어부(220)는 상기 BUS 주파수를 상기 요구 BUS 주파수로 변경할 것을 결정하고, 해당 슬레이브 제어부로 변경 요청이 수락됨을 통지한다. 그리고, 상기 마스터제어부(220)는 상기 CPU 주파수를 상향 변경할 것을 결정한다. 즉, 상기 CPU 주파수가 상기 BUS 주파수보다 낮을 수 없으므로, 상기 마스터제어부(220)는 상기 CPU 주파수를 상기 요청 BUS 주파수와 같은 값으로 변경할 것을 결정한다.
상기 1155단계 또는 상기 1157단계에서 상기 CPU 주파수 및 상기 BUS 주파수의 변경을 결정한 후, 상기 마스터제어부(220)는 1159단계로 진행하여 상기 1155단계 또는 상기 1157단계에서 결정된 바에 따라 상기 클럭제어부(120)로 상기 CPU 주파수 및 상기 BUS 주파수의 변경을 요청한다. 예를 들어, 상기 마스터제어부(220)는 상기 CPU 주파수 및 상기 BUS 주파수의 변경을 요청하는 신호, 상기 요청 CPU 주파수를 나타내는 신호 및 상기 요청 BUS 주파수를 나타내는 신호를 송신한다. 이후, 상기 마스터제어부(220)는 1161단계로 진행하여 상기 클럭제어부(120)로부터 변경된 클럭 주파수 값들이 통지되는지 판단한다. 상기 변경된 클럭 주파수 값들이 통지되면, 상기 마스터제어부(220)는 1163단계로 진행하여 현재 클럭 주파수 상태 정보를 통지된 바에 따라 갱신하고, 슬레이브제어부들로 상기 변경된 클럭 주파수 값들을 통지한다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (33)

  1. CPU 및 BUS를 포함하는 디지털 시스템에 있어서,
    상기 CPU의 동작 정보에 따라 상기 CPU의 클럭 주파수의 변경 여부를 결정하고, 상기 BUS의 동작 정보에 따라 상기 BUS의 클럭 주파수의 변경 여부를 결정하는 AFS 제어부와,
    상기 AFS 제어부의 결정에 따라 상기 CPU의 클럭 주파수 및 상기 BUS의 클럭 주파수를 생성하는 클럭 제어부를 포함하며,
    상기 AFS 제어부는, 상기 BUS의 클럭 주파수를 제1값으로 상향 변경할 것을 결정한 경우, 상기 제1값이 상기 CPU의 현재 클럭 주파수보다 높으면, 상기 BUS의 클럭 주파수를 상기 제1값으로 상기 CPU의 클럭 주파수를 상기 제1값 보다 크거나 같은 값으로 변경할 것을 상기 클럭 제어부로 요청하는 것을 특징으로 하는 시스템.
  2. 제1항에 있어서,
    상기 AFS 제어부는,
    다수의 슬레이브 제어부들로부터의 적어도 하나의 클럭 주파수 변경 요청을 참고하여 상기 CPU의 클럭 주파수 및 상기 BUS의 클럭 주파수의 상향/하향 변경 여부를 결정하는 마스터 제어부를 포함하며,
    상기 다수의 슬레이브 제어부들은,
    상기 CPU의 동작량에 따라 상기 CPU의 클럭 주파수의 변경 여부를 판단하고, 상기 CPU의 클럭 주파수의 변경을 요청하는 제1슬레이브 제어부와,
    상기 BUS의 동작량에 따라 상기 BUS의 클럭 주파수의 변경 여부를 판단하고, 상기 BUS의 클럭 주파수의 변경을 요청하는 제2슬레이브 제어부와,
    상기 디지털 시스템 내의 적어도 하나의 기능 블럭의 동작 정보를 이용하여 상기 BUS의 클럭 주파수 및 상기 CPU의 클럭 주파수 중 적어도 하나의 변경 여부를 판단하고, 상기 BUS의 클럭 주파수 및 상기 CPU의 클럭 주파수 중 적어도 하나의 변경을 요청하는 제3슬레이브 제어부를 포함하는 것을 특징으로 하는 시스템.
  3. 제2항에 있어서,
    상기 제1슬레이브 제어부는, 상기 CPU가 아이들(idle) 상태인 시간 구간의 길이를 반영한 동작 카운트(activity count) 값을 생성한 후, 상기 동작 카운트 값이 미리 정의된 상향 임계값(threshold) 보다 크면 상기 CPU의 클럭 주파수를 상향 변경할 것을 판단하고, 상기 동작 카운트 값이 미리 정의된 하향 임계값 보다 작으면 CPU의 클락 주파수를 주파수를 하향 변경할 것을 판단하는 것을 특징으로 하는 시스템.
  4. 제3항에 있어서,
    상기 동작 카운트 값은, 상기 아이들 상태인 시간 구간이 길수록 커지는 변수, 또는, 액티브(active) 상태인 시간 구간이 길수록 커지는 변수인 것을 특징으로 하는 시스템.
  5. 제4항에 있어서,
    상기 동작 카운트 값은, 상기 CPU의 액티브/아이들 여부에 따라 온/오프되는 내부 클럭을 카운팅한 값인 것을 특징으로 하는 시스템.
  6. 제5항에 있어서,
    상기 동작 카운트 값은, 미리 정의된 1주기의 참조 시간 동안 카운팅된 상기 내부 클럭 개수인 것을 특징으로 하는 시스템.
  7. 제3항에 있어서,
    상기 제1슬레이브 제어부는, 상기 동작 카운트 값을 상기 상향 임계값 및 상기 하향 임계값과 비교하기에 앞서, 다수의 상향 임계값들 및 다수의 하향 임계값들 중 상기 CPU의 현재 클럭 주파수에 대응되는 하나의 상향 임계값 및 하나의 하향 임계값을 선택하는 것을 특징으로 하는 시스템.
  8. 제2항에 있어서,
    상기 제2슬레이브 제어부는, 미리 정의된 기준 시간 동안 상기 BUS의 동작이 없는 때 상기 BUS의 클럭 주파수를 하향 변경할 것을 요청하고, 클럭 주파수가 하향 변경된 상태에서 상기 BUS의 동작이 발생하면 상기 BUS의 클럭 주파수를 상향 변경할 것을 요청하는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서,
    상기 제2슬레이브 제어부는, 3개 이상의 클럭 주파수 후보 값들을 이용하여 단계적로 상기 BUS의 클럭 주파수를 하향 변환하는 것을 특징으로 하는 시스템.
  10. 제8항에 있어서,
    상기 제2슬레이브 제어부는, 3개 이상의 클럭 주파수 후보 값들을 이용하여 단계적로 상기 BUS의 클럭 주파수를 상향 변환하는 것을 특징으로 하는 시스템.
  11. 제2항에 있어서,
    상기 제3슬레이브 제어부는, 상기 적어도 하나의 기능 블럭 내부의 적어도 하나의 모듈 중, 상기 BUS의 클럭을 사용하는 모듈이 동작을 시작하는 경우 상기 BUS의 클럭 주파수를 상향 변경할 것을 요청하고, S/W(Sofrware)의 실행을 필요로 하는 경우 상기 CPU의 클럭 주파수를 상향 변경할 것을 요청하는 것을 특징으로 하는 시스템.
  12. 제11항에 있어서,
    상기 제3슬레이브 제어부는, 상기 적어도 하나의 기능 블럭으로부터 다수의 클럭 주파수 변경 요청들이 발생하는 경우, 요청된 클럭 주파수 값들 중 최대값으로 상향 변경할 것을 요청하는 것을 특징으로 하는 시스템.
  13. 제2항에 있어서,
    상기 디지털 시스템은, SoC(System on a Chip)이며,
    상기 다수의 슬레이브 제어부들은, 상기 SoC 외부 AP(Application Processor)의 동작을 위해 요구되는 상기 BUS의 클럭 주파수를 선택한 후, 선택된 클럭 주파수가 상기 BUS의 현재 클럭 주파수보다 높으면, 상기 선택된 클럭 주파수로 상기 BUS의 클럭 주파수를 상향 변경할 것을 상기 마스터 제어부로 요청하는 제4슬레이브 제어부를 포함하는 것을 특징으로 하는 시스템.
  14. 제2항에 있어서,
    상기 마스터 제어부는, 다수의 클럭 주파수 변경 요청들이 발생하면 상기 클럭 주파수 변경 요청들 간 충돌 여부를 판단하고, 충돌이 발생하면 상기 클럭 주파수 변경 요청들 중 적어도 하나를 거부하는 것을 특징으로 하는 시스템.
  15. 제14항에 있어서,
    상기 마스터 제어부는, 상기 CPU의 클럭 주파수의 하향 변경 요청 및 상기 BUS의 클럭 주파수 변경 요청이 모두 발생한 경우, 상기 BUS의 요청 클럭 주파수가 상기 CPU의 현재 클럭 주파수보다 크거나 같으면 상기 CPU의 클럭 주파수는 하향 변경될 수 없음을 판단하고, 상기 CPU의 클럭 주파수를 하향 변경할 것을 요청한 슬레이브 제어부로 요청이 거부됨을 통지하는 것을 특징으로 하는 시스템.
  16. 제2항에 있어서,
    상기 마스터 제어부는, 상기 클럭 제어부로부터 상기 CPU의 클럭 주파수 또는 상기 BUS의 클럭 주파수 중 적어도 하나의 변경이 통지되면, 상기 CPU의 클럭 주파수 또는 상기 BUS의 클럭 주파수 중 적어도 하나의 변경된 값을 저장하고, 상기 CPU의 클럭 주파수 또는 상기 BUS의 클럭 주파수 중 적어도 하나의 변경된 값을 상기 다수의 슬레이브 제어부들로 통지하는 것을 특징으로 하는 시스템.
  17. 제16항에 있어서,
    상기 다수의 슬레이브 제어부들은, 상기 마스터 제어부로부터 통지되는 상기 CPU의 클럭 주파수 또는 상기 BUS의 클럭 주파수 중 적어도 하나의 변경된 값을 저장하는 것을 특징으로 하는 시스템.
  18. CPU 및 BUS를 포함하는 디지털 시스템의 동작 방법에 있어서,
    상기 CPU의 동작 정보에 따라 상기 CPU의 클럭 주파수의 변경 여부를 결정하는 과정과,
    상기 BUS의 동작 정보에 따라 상기 BUS의 클럭 주파수의 변경 여부를 결정하는 과정과,
    상기 BUS의 클럭 주파수를 제1값으로 상향 변경할 것을 결정한 경우, 상기 제1값이 상기 CPU의 현재 클럭 주파수보다 높은지 확인하는 과정과,
    상기 제1값이 상기 CPU의 현재 클럭 주파수보다 높으면, 상기 BUS의 클럭 주파수를 상기 제1값으로 상기 CPU의 클럭 주파수를 상기 제1값 보다 크거나 같은 값으로 변경하는 과정을 포함하는 것을 특징으로 하는 방법.
  19. 제18항에 있어서,
    상기 CPU의 클럭 주파수의 변경 여부를 결정하는 과정은,
    상기 CPU가 아이들(idle) 상태인 시간 구간의 길이를 반영한 동작 카운트(activity count) 값을 생성하는 과정과,
    상기 동작 카운트 값이 미리 정의된 상향 임계값(threshold) 보다 크면 상기 CPU의 클럭 주파수를 상향 변경할 것을 판단하는 과정과,
    상기 동작 카운트 값이 미리 정의된 하향 임계값 보다 작으면 CPU의 클락 주파수를 주파수를 하향 변경할 것을 판단하는 과정을 포함하는 것을 특징으로 하는 방법.
  20. 제19항에 있어서,
    상기 동작 카운트 값은, 상기 아이들 상태인 시간 구간이 길수록 커지는 변수, 또는, 액티브(active) 상태인 시간 구간이 길수록 커지는 변수인 것을 특징으로 하는 방법.
  21. 제20항에 있어서,
    상기 동작 카운트 값은, 상기 CPU의 액티브/아이들 여부에 따라 온/오프되는 내부 클럭을 카운팅한 값인 것을 특징으로 하는 방법.
  22. 제21항에 있어서,
    상기 동작 카운트 값은, 미리 정의된 1주기의 참조 시간 동안 카운팅된 상기 내부 클럭 개수인 것을 특징으로 하는 방법.
  23. 제19항에 있어서,
    상기 CPU의 클럭 주파수의 변경 여부를 판단하는 과정은,
    상기 동작 카운트 값을 상기 상향 임계값 및 상기 하향 임계값과 비교하기에 앞서, 다수의 상향 임계값들 및 다수의 하향 임계값들 중 상기 CPU의 현재 클럭 주파수에 대응되는 하나의 상향 임계값 및 하나의 하향 임계값을 선택하는 과정을 포함하는 것을 특징으로 하는 방법.
  24. 제18항에 있어서,
    상기 BUS의 클럭 주파수의 변경 여부를 결정하는 과정은,
    미리 정의된 기준 시간 동안 상기 BUS의 동작이 없는 때 상기 BUS의 클럭 주파수를 하향 변경할 것을 결정하는 과정과,
    클럭 주파수가 하향 변경된 상태에서 상기 BUS의 동작이 발생하면 상기 BUS의 클럭 주파수를 상향 변경할 것을 결정하는 과정을 포함하는 것을 특징으로 하는 방법.
  25. 제24항에 있어서,
    상기 BUS의 클럭 주파수의 하향 변경은, 3개 이상의 클럭 주파수 후보 값들을 이용하여 단계적로 수행되는 것을 특징으로 하는 방법.
  26. 제24항에 있어서,
    상기 BUS의 클럭 주파수의 상향 변경은, 3개 이상의 클럭 주파수 후보 값들을 이용하여 단계적로 수행되는 것을 특징으로 하는 방법.
  27. 제18항에 있어서,
    상기 디지털 시스템 내의 적어도 하나의 기능 블럭의 동작 정보를 이용하여 상기 BUS의 클럭 주파수 및 상기 CPU의 클럭 주파수 중 적어도 하나의 변경 여부를 판단하는 과정과,
    상기 BUS의 클럭 주파수 및 상기 CPU의 클럭 주파수 중 적어도 하나를 변경하는 과정을 더 포함하는 것을 특징으로 하는 방법.
  28. 제27항에 있어서,
    상기 디지털 시스템 내의 적어도 하나의 기능 블럭의 동작 정보를 이용하여 상기 BUS의 클럭 주파수 및 상기 CPU의 클럭 주파수 중 적어도 하나의 변경 여부를 판단하는 과정은,
    상기 적어도 하나의 기능 블럭 내부의 적어도 하나의 모듈 중, 상기 BUS의 클럭을 사용하는 모듈이 동작을 시작하는 경우 상기 BUS의 클럭 주파수를 상향 변경할 것을 판단하는 과정과,
    상기 적어도 하나의 기능 블럭 내부의 적어도 하나의 모듈 중, S/W(Sofrware)의 실행을 필요로 하는 경우 상기 CPU의 클럭 주파수를 상향 변경할 것을 판단하는 과정을 포함하는 것을 특징으로 하는 방법.
  29. 제28항에 있어서,
    상기 디지털 시스템 내의 적어도 하나의 기능 블럭의 동작 정보를 이용하여 상기 BUS의 클럭 주파수 및 상기 CPU의 클럭 주파수 중 적어도 하나의 변경 여부를 판단하는 과정은,
    상기 적어도 하나의 기능 블럭으로부터 다수의 클럭 주파수 변경 요청들이 발생하는 경우, 요청된 클럭 주파수 값들 중 최대값으로 상향 변경할 것을 판단하는 과정을 포함하는 것을 특징으로 하는 방법.
  30. 제18항에 있어서,
    상기 디지털 시스템은, SoC(System on a Chip)이며,
    상기 SoC 외부 AP(Application Processor)의 동작을 위해 요구되는 상기 BUS의 클럭 주파수를 선택하는 과정과,
    선택된 클럭 주파수가 상기 BUS의 현재 클럭 주파수보다 높으면, 상기 선택된 클럭 주파수로 상기 BUS의 클럭 주파수를 변경하는 과정을 더 포함하는 것을 특징으로 하는 방법.
  31. 제18항에 있어서,
    다수의 클럭 주파수 변경 요청들이 발생 시, 상기 다수의 클럭 주파수 변경 요청들 간 충돌이 발생하면 상기 클럭 주파수 변경 요청들 중 적어도 하나를 거부하는 과정을 더 포함하는 것을 특징으로 하는 방법.
  32. 제31항에 있어서,
    상기 클럭 주파수 변경 요청들 중 적어도 하나를 거부하는 과정은,
    상기 CPU의 클럭 주파수의 하향 변경 요청 및 상기 BUS의 클럭 주파수 변경 요청이 모두 발생한 경우, 상기 BUS의 요청 클럭 주파수가 상기 CPU의 현재 클럭 주파수보다 크거나 같으면 상기 CPU의 클럭 주파수는 하향 변경될 수 없음을 판단하는 과정과,
    상기 CPU의 클럭 주파수의 하향 변경 요청을 거부하는 과정을 포함하는 것을 특징으로 하는 방법.
  33. 제18항에 있어서,
    상기 CPU의 클럭 주파수 또는 상기 BUS의 클럭 주파수 중 적어도 하나의 변경이 완료되면, 상기 CPU의 클럭 주파수 또는 상기 BUS의 클럭 주파수 중 적어도 하나의 변경된 값을 저장하는 과정을 더 포함하는 것을 특징으로 하는 방법.
KR1020100102270A 2010-10-20 2010-10-20 디지털 시스템에서 동적 클럭 제어 장치 및 방법 KR101740338B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100102270A KR101740338B1 (ko) 2010-10-20 2010-10-20 디지털 시스템에서 동적 클럭 제어 장치 및 방법
US13/276,503 US8924753B2 (en) 2010-10-20 2011-10-19 Apparatus and method for adaptive frequency scaling in digital system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100102270A KR101740338B1 (ko) 2010-10-20 2010-10-20 디지털 시스템에서 동적 클럭 제어 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120040819A true KR20120040819A (ko) 2012-04-30
KR101740338B1 KR101740338B1 (ko) 2017-05-26

Family

ID=45973996

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100102270A KR101740338B1 (ko) 2010-10-20 2010-10-20 디지털 시스템에서 동적 클럭 제어 장치 및 방법

Country Status (2)

Country Link
US (1) US8924753B2 (ko)
KR (1) KR101740338B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588915B2 (en) 2012-12-18 2017-03-07 Samsung Electronics Co., Ltd. System on chip, method of operating the same, and apparatus including the same
KR20190013768A (ko) * 2016-05-27 2019-02-11 퀄컴 인코포레이티드 공급 전압 드룹들을 감소시키고 전력 소비를 최소화시키도록 공급 전압을 조정하기 위한 적응적 전압 변조 회로들
US10345850B2 (en) 2014-08-12 2019-07-09 Samsung Electronics Co., Ltd. Method and apparatus for adaptive device re-configuration
US10809793B2 (en) 2014-03-31 2020-10-20 Samsung Electronics Co., Ltd. Power control method and apparatus for low power system of electronic device

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5776789B2 (ja) * 2011-11-15 2015-09-09 富士通株式会社 電力制御装置、電子計算機及び電力制御方法
US9304570B2 (en) * 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
US9690736B2 (en) * 2012-07-10 2017-06-27 Nvidia Corporation Managing state transitions of a data connector using a finite state machine
JP2014021786A (ja) * 2012-07-19 2014-02-03 International Business Maschines Corporation コンピュータ・システム
US9986159B2 (en) * 2013-04-05 2018-05-29 Nvidia Corporation Technique for reducing the power consumption for a video encoder engine
KR102166935B1 (ko) * 2013-11-11 2020-10-16 삼성전자주식회사 동적 전압 주파수 스케일링을 수행하기 위한 동작 주파수 변경 방법, 시스템 온-칩 및 이를 구비하는 모바일 기기
US9501299B2 (en) * 2014-06-16 2016-11-22 Intel Corporation Minimizing performance loss on workloads that exhibit frequent core wake-up activity
US10108564B2 (en) 2016-03-28 2018-10-23 Qualcomm Incorporated Active and stall cycle based dynamic scaling of processor frequency and bus bandwidth
US20190101969A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Control Blocks for Processor Power Management
US11036275B2 (en) * 2019-03-29 2021-06-15 Intel Corporation Detection of known workload patterns
IT201900018587A1 (it) 2019-10-11 2021-04-11 St Microelectronics Srl Disposizione circuitale comprendente un circuito slave che riceve un segnale di clock esterno da un circuito master, relativo procedimento
US11888318B2 (en) * 2022-04-07 2024-01-30 Micron Technology, Inc. Transient load management for a system-on-chip meeting an activity threshold
US20240004444A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Rest-of-chip power optimization through data fabric performance state management

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7124315B2 (en) 2002-08-12 2006-10-17 Hewlett-Packard Development Company, L.P. Blade system for using multiple frequency synthesizers to control multiple processor clocks operating at different frequencies based upon user input
JP4359031B2 (ja) 2002-09-18 2009-11-04 株式会社リコー システムコントローラ
US7290161B2 (en) * 2003-03-24 2007-10-30 Intel Corporation Reducing CPU and bus power when running in power-save modes
US7865749B2 (en) * 2003-10-31 2011-01-04 International Business Machines Corporation Method and apparatus for dynamic system-level frequency scaling
TW200519573A (en) * 2003-12-04 2005-06-16 Compal Electronics Inc Method for dynamically adjusting frequency of CPU
KR100716730B1 (ko) * 2004-06-11 2007-05-14 삼성전자주식회사 중앙 처리 장치의 아이들 상태에서의 시스템 전력 소모절감을 위한 방법 및 그 방법을 적용한 모바일 장치
US8250394B2 (en) * 2006-03-31 2012-08-21 Stmicroelectronics International N.V. Varying the number of generated clock signals and selecting a clock signal in response to a change in memory fill level
KR101622195B1 (ko) * 2009-11-05 2016-05-18 삼성전자주식회사 동적 버스 클럭을 제어하기 위한 장치 및 방법
US8694811B2 (en) * 2010-10-29 2014-04-08 Texas Instruments Incorporated Power management for digital devices

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588915B2 (en) 2012-12-18 2017-03-07 Samsung Electronics Co., Ltd. System on chip, method of operating the same, and apparatus including the same
US10809793B2 (en) 2014-03-31 2020-10-20 Samsung Electronics Co., Ltd. Power control method and apparatus for low power system of electronic device
US10345850B2 (en) 2014-08-12 2019-07-09 Samsung Electronics Co., Ltd. Method and apparatus for adaptive device re-configuration
KR20190013768A (ko) * 2016-05-27 2019-02-11 퀄컴 인코포레이티드 공급 전압 드룹들을 감소시키고 전력 소비를 최소화시키도록 공급 전압을 조정하기 위한 적응적 전압 변조 회로들

Also Published As

Publication number Publication date
KR101740338B1 (ko) 2017-05-26
US8924753B2 (en) 2014-12-30
US20120102345A1 (en) 2012-04-26

Similar Documents

Publication Publication Date Title
KR101740338B1 (ko) 디지털 시스템에서 동적 클럭 제어 장치 및 방법
EP3137965B1 (en) Cpu/gpu dcvs co-optimization for reducing power consumption in graphics frame processing
KR101813435B1 (ko) 멀티-프로세서 시스템 온 칩에서의 에너지 효율 인지 열 관리
KR20180121531A (ko) 최적의 퍼포먼스 및 전력 절약을 위한 적응적 주변 컴포넌트 상호접속 익스프레스 링크 하위상태 개시
KR101695338B1 (ko) 동적 주파수 메모리 제어
US10509455B2 (en) Method and apparatus to control a link power state
US20120110351A1 (en) Power management for digital devices
US9152210B2 (en) Method and apparatus for determining tunable parameters to use in power and performance management
EP1865403B1 (en) A single chip 3D and 2D graphics processor with embedded memory and multiple levels of power controls
JP2006185407A (ja) ピーク電力制御方法および装置
WO2017202315A1 (zh) 一种电源适配器的控制方法及控制装置
EP3189441A1 (en) Frequency and power management
CN107992391B (zh) 一种多核处理器变频的方法和装置
CN116225200A (zh) 芯片及其功耗管理方法、电子装置
KR20180138351A (ko) 씨피유 전력 제어 장치 및 방법
US20100070793A1 (en) Clock supply device
KR102333391B1 (ko) 전자 장치 및 이의 전력 제어 방법
JP2016508297A (ja) チャネル・アウェアなジョブ・スケジューリング
US20160127259A1 (en) System and method for managing safe downtime of shared resources within a pcd
US9292468B2 (en) Performing frequency coordination in a multiprocessor system based on response timing optimization
US10712767B2 (en) Clock generator and clock generation method
EP2775395B1 (en) Integrated circuit, electronic device and instruction scheduling method
US10719107B2 (en) Method and apparatus to maintain node power budget for systems that share a power supply
CN115373506A (zh) 集成电路、动态电压和频率缩放调节器及包括其的系统
JP2005216297A (ja) バス要求信号発生装置及びそれを含んだシステム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant