KR20220020763A - 반도체 장치 - Google Patents
반도체 장치 Download PDFInfo
- Publication number
- KR20220020763A KR20220020763A KR1020210072230A KR20210072230A KR20220020763A KR 20220020763 A KR20220020763 A KR 20220020763A KR 1020210072230 A KR1020210072230 A KR 1020210072230A KR 20210072230 A KR20210072230 A KR 20210072230A KR 20220020763 A KR20220020763 A KR 20220020763A
- Authority
- KR
- South Korea
- Prior art keywords
- clock
- signal
- cpm
- block
- clock signal
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3237—Power saving characterised by the action undertaken by disabling clock generation or distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Semiconductor Integrated Circuits (AREA)
Abstract
반도체 장치가 제공된다. 반도체 장치는, IP 블록, IP 블록에 클럭 신호가 필요한지 여부를 나타내는 클럭 요청 신호를 IP 블록으로부터 제공받고, 클럭 요청 신호를 기초로 IP 블록에 대해 클럭 게이팅을 수행하는 클럭 관리 유닛, IP 블록에 제공되는 클럭 신호을 모니터링 하여 IP 블록에 제공되는 클럭 신호의 주파수와 IP 블록에 제공되는 전압 중 적어도 하나를 조절하는 CPM(Critical Path Monitor), 및 클럭 관리 유닛에 포함되고, CPM에 대해 클럭 게이팅을 수행하는 CPM 클럭 관리자를 포함한다.
Description
본 발명은 반도체 장치에 관한 것이다.
반도체 장치의 집적도 및 사이즈가 커지고 동작 속도도 높아짐에 따라, 저전력 소비 이슈도 매우 중요한 팩터들 중의 하나가 된다. 왜냐하면 전력 소비가 심할 경우에 칩의 온도가 높아져 칩이 동작 불능이 될 수 있으며, 나아가 패키지(package)가 파손되는 경우가 초래될 수도 있다.
반도체 장치 내의 반도체 회로에서, 전력 절감(power reduction)의 목적을 위해 클럭을 제공하거나 차단하는 회로가 필요한 경우가 있다. 클럭 게이팅 회로(Clock Gating Circuit)는 특정 회로의 동작이 필요하지 않는 경우 그 회로에 클럭을 공급하지 않는데 이용되고 있다.
또한, 반도체 장치의 전력 소모를 줄이기 위해 칩 내의 동작 클럭 주파수를 변경하거나 제공되는 구동 전압의 크기를 변경하는 DVFS(Dynamic Voltage Frequency Scaling) 기법도 사용되고 있다.
클럭 게이팅 기법은 클럭을 차단하여 전력 소모를 줄이게 되나, DVFS에서는 모니터링하고 주파수를 변경할 클럭이 항상 필요하다. 따라서, 이 두 가지 기법을 효과적으로 모두 사용하기 위한 연구가 진행되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 전력 소모가 저감된 반도체 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 반도체 장치는, IP 블록, IP 블록에 클럭 신호가 필요한지 여부를 나타내는 클럭 요청 신호를 IP 블록으로부터 제공받고, 클럭 요청 신호를 기초로 IP 블록에 대해 클럭 게이팅을 수행하는 클럭 관리 유닛, IP 블록에 제공되는 클럭 신호을 모니터링 하여 IP 블록에 제공되는 클럭 신호의 주파수와 IP 블록에 제공되는 전압 중 적어도 하나를 조절하는 CPM(Critical Path Monitor), 및 클럭 관리 유닛에 포함되고, CPM에 대해 클럭 게이팅을 수행하는 CPM 클럭 관리자를 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 반도체 장치는, 프로세서, 프로세서에 제공되는 클럭 신호를 출력하는 클럭 생성기, 프로세서에 제공되는 클럭 신호를 모니터링하여 프로세서에 제공되는 클럭 신호의 주파수와 IP 블록에 제공되는 전압 중 적어도 하나를 조절하는 CPM, 및 프로세서로부터 클럭 신호의 제공 중지를 요청하는 신호를 수신한 후, 이에 대한 응답으로 CPM에 대해 클럭 게이팅을 수행하는 CPM 클럭 관리자를 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 반도체 장치는, IP 블록, IP 블록으로부터, IP 블록에 클럭 신호가 필요한지 여부를 나타내는 제1 요청 신호를 제공받고, 이에 기초하여 IP 블록에 제1 클럭 신호를 제공하는 제1 클럭 컴포넌트, 제1 클럭 컴포넌트로부터, IP 블록에 클럭 신호가 필요한지 여부를 나타내는 제2 요청 신호를 제공받고, 이에 기초하여 제1 클럭 컴포넌트에 제2 클럭 신호를 제공하는 제2 클럭 컴포넌트, 및 IP블록에 제공되는 클럭 신호를 모니터링하여 IP블록에 제공되는 클럭 신호의 주파수와 IP 블록에 제공되는 전압 중 적어도 하나를 조절하는 CPM을 포함하되, 제1 클럭 컴포넌트는 IP 블록으로부터 제1 클럭 신호의 제공 중지를 요청하는 신호를 수신한 후, 이에 대한 응답으로 CPM에 제2 클럭 신호의 제공을 중지하겠다는 제3 요청 신호를 전송한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 반도체 장치(System On Chip)를 도시한 블록도이다.
도 2는 몇몇의 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 3은 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 먹스 유닛의 구현 방식을 설명하기 위한 도면이다.
도 4는 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 먹스 유닛의 FSM을 설명하기 위한 도면이다.
도 5는 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 구현 방식을 설명하기 위한 도면이다.
도 6은 몇몇의 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 구조를 설명하기 위한 도면이다.
도 7은 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 비헤이비어를 설명하기 위한 타이밍도이다.
도 8은 몇몇 실시예에 따른 반도체 장치에 포함된 IP 블록을 도시한 블록도이다.
도 9는 복수 개의 클럭 제어 회로 사이의 신호 전송 패스(path)를 도시한 도면이다.
도 10은 DVFS 블록의 동작을 도시한 개념도이다.
도 11은 DVFS 블록의 동작을 도시한 타이밍도이다.
도 12 및 도 13은 CPM 클럭 관리자와 CPM의 동작을 설명하기 위한 도면들이다.
도 14는 몇몇 실시예에 따른 CPM의 구조를 도시한 도면이다.
도 15는 도 14의 캘리브레이션 지연 회로에 대한 예시적인 블록도이다.
도 16은 도 14의 NAND 지연 회로에 대한 예시적인 블록도이다.
도 17은 도 14의 와이어 지연 회로에 대한 예시적인 블록도이다.
도 18은 도 14의 엣지 디텍터에 대한 예시적인 블록도이다.
도 19는 도 14의 포스트 프로세서에 대한 예시적인 블록도이다.
도 20은 CPM의 동작 방법을 설명하기 위한 타이밍도이다.
도 21은 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 22는 또 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 23은 또 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 2는 몇몇의 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 3은 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 먹스 유닛의 구현 방식을 설명하기 위한 도면이다.
도 4는 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 먹스 유닛의 FSM을 설명하기 위한 도면이다.
도 5는 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 구현 방식을 설명하기 위한 도면이다.
도 6은 몇몇의 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 구조를 설명하기 위한 도면이다.
도 7은 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 비헤이비어를 설명하기 위한 타이밍도이다.
도 8은 몇몇 실시예에 따른 반도체 장치에 포함된 IP 블록을 도시한 블록도이다.
도 9는 복수 개의 클럭 제어 회로 사이의 신호 전송 패스(path)를 도시한 도면이다.
도 10은 DVFS 블록의 동작을 도시한 개념도이다.
도 11은 DVFS 블록의 동작을 도시한 타이밍도이다.
도 12 및 도 13은 CPM 클럭 관리자와 CPM의 동작을 설명하기 위한 도면들이다.
도 14는 몇몇 실시예에 따른 CPM의 구조를 도시한 도면이다.
도 15는 도 14의 캘리브레이션 지연 회로에 대한 예시적인 블록도이다.
도 16은 도 14의 NAND 지연 회로에 대한 예시적인 블록도이다.
도 17은 도 14의 와이어 지연 회로에 대한 예시적인 블록도이다.
도 18은 도 14의 엣지 디텍터에 대한 예시적인 블록도이다.
도 19는 도 14의 포스트 프로세서에 대한 예시적인 블록도이다.
도 20은 CPM의 동작 방법을 설명하기 위한 타이밍도이다.
도 21은 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 22는 또 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 23은 또 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 반도체 장치(System On Chip)를 도시한 블록도이다.
도 1을 참조하면, 몇몇 실시예에 따른 반도체 장치(1)는 클럭 관리 유닛(CMU; Clock Management Unit)(100), 제1 및 제2 IP 블록(intellectual property)(200, 210), 전력 관리 유닛(PMU; Power Management Unit)(300), DVFS(Dynamic Voltage Frequency Scaling) 블록(400) 및 클럭 생성기 (500)를 포함할 수 있다.
클럭 관리 유닛(100)은 제1 및 제2 IP 블록(200, 210)으로 제공하기 위한 동작 클럭 신호를 생성할 수 있다. 예를 들면, 클럭 관리 유닛(100)은 제1 IP 블록(200)의 동작에 필요한 제1 동작 클럭 신호(OCLK1)과 제2 IP 블록(210)의 동작에 필요한 제2 동작 클럭 신호(OCLK2)를 생성할 수 있다.
제1 및 제2 IP 블록(200, 210)은 시스템 버스(bus)에 연결되며, 시스템 버스를 통하여 상호 간에 통신할 수 있다. 몇몇의 실시예에서, 제1 및 제2 IP 블록(200, 210)은 예를 들어, 프로세서(processor), 그래픽 프로세서(graphic processor), 메모리 컨트롤러(graphic controller), 입출력 인터페이스 블록(input and output interface block) 등을 포함할 수 있으나, 실시예들이 이에 제한되는 것은 아니다. 또한, 몇몇 실시예에서, 제1 및 제2 IP 블록(200, 210)은 빅 코어(big core)와 리틀 코어(little core)와 같은 연산 처리량이 서로 다른 프로세서들을 포함할 수도 있다.
비록 도면에서는 예시적으로 2개의 IP 블록(200, 210)만 도시하였으나, 실시예들이 이에 제한되는 것은 아니며, 반도체 장치(1)에 포함되는 IP 블록의 개수는 얼마든지 다르게 변형되어 실시될 수 있다.
제1 및 제2 IP 블록(200, 210) 중 적어도 하나는 풀 핸드셰이크 방식(full handshake method)에 따라 클럭 관리 유닛(100)으로 클럭 요청 신호를 전송할 수 있다.
예를 들어, 제1 IP 블록(200)은 풀 핸드셰이크 방식에 따라 클럭 관리 유닛(100)으로 제1 클럭 요청 신호(REQ1)를 전송할 수 있다. 클럭 관리 유닛(100)은 제1 클럭 요청 신호(REQ1)를 수신하고, 제1 IP 블록(200)으로 제1 클럭 응답 신호(ACK1)를 전송할 수 있다. 또한, 동시에 클럭 관리 유닛(100)은 제1 동작 클럭 신호(OCLK1)을 제1 IP 블록(200)으로 전송할 수 있다.
예를 들어, 제2 IP 블록(210)은 풀 핸드셰이크 방식에 따라 클럭 관리 유닛(100)으로 제2 클럭 요청 신호(REQ2)를 전송할 수 있다. 클럭 관리 유닛(100)은 제2 클럭 요청 신호(REQ2)를 수신하고, 제2 IP 블록(210)으로 제2 클럭 응답 신호(ACK2)를 전송할 수 있다. 또한, 동시에 클럭 관리 유닛(100)은 제2 동작 클럭 신호(OCLK2)을 제2 IP 블록(210)으로 전송할 수 있다.
몇몇의 실시예에서, 클럭 관리 유닛(100)과 제1 및 제2 IP 블록(200, 210) 사이의 인터페이스는 풀 핸드셰이크 방식(full handshake method)의 형식을 가질 수 있다. 몇몇의 실시예에서, 이러한 인터페이스는 ARM 사의 Q-채널 인터페이스(Q-Channel Interface) 또는 P-채널 인터페이스(P-Channel Interface)에 따르도록 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
클럭 게이팅(clock gating)은 컴퓨터 시스템 내부를 작은 기능 블록들로 구분한 뒤 사용하지 않는 부분의 전력은 끊는 기능이다. 실제 컴퓨터를 사용하면서 컴퓨터 시스템의 모든 부분이 항상 동작하는 것은 아니므로 사용하지 않는 부분의 블록을 정지시켜서 소비 전력을 낮추고, 더불어 기능이 정지된 블록에서 생기는 발열도 줄일 수 있다.
클럭 관리 유닛(100)은 제1 IP 블록(200)과 제2 IP 블록(210) 중 동작 클럭이 필요하지 않은 IP 블록이 있는 경우, 순차적으로 클럭 게이팅을 수행하여, 동작 클럭이 필요하지 않은 IP 블록의 동작에 오류를 발생시키지 않으면서 자동적으로 클럭 게이팅을 수행하여 전력 소비를 줄일 수 있다.
전력 관리 유닛(300)은 반도체 장치(1)에 공급되는 전압을 제어한다. 예를 들어, 반도체 장치(1)가 대기 모드에 들어가면, 전력 관리 유닛(300)은 전력 조절 회로를 오프 하여 반도체 장치(1)로 제공되는 공급 전압을 차단할 수 있다. 이 때, 전력 관리 유닛(300)은 계속적으로 전력을 소모하지만, 전력 관리 유닛(300)에서 소모되는 전력은 반도체 장치(1) 전체에서 소모되는 전력에 비해 아주 작은 부분에 해당되므로, 대기 모드에서는 반도체 장치(1)의 전력 소비가 크게 줄어들 수 있다.
구체적으로, 전력 관리 유닛(300)은 반도체 장치(1)가 대기 모드인 경우, 클럭 관리 유닛(100)으로 제공되는 공급 전력을 차단할 수 있다. 다만, 이는 제1 및 제2 IP 블록(200, 210)에서 클럭 요청이 없는 경우에 해당할 수 있다.
DVFS 블록(400)은 제1 IP 블록(200)과 제2 IP 블록(210)에 대해 동적 전압 주파수 스케일링 동작을 수행할 수 있다. 몇몇 실시예에서, DVFS 블록(400)은 제1 IP 블록(200)과 제2 IP 블록(210)에 대해 폐쇄 루프 동적 전압 주파수 스케일링 동작(Closed Loop Dynamic Voltage Frequency Scaling)을 수행할 수 있다.
구체적으로, DVFS 블록(400)은 이너 루프(inner loop)를 통해 제1 IP 블록(200)과 제2 IP 블록(210)에 제공되는 클럭 신호를 모니터링하여 필요한 경우 제1 IP 블록(200)과 제2 IP 블록(210)에 제공되는 클럭 신호의 주파수를 조절할 수 있다.
또한, DVFS 블록(400)은 아우터 루프(outer loop)를 통해 제1 IP 블록(200)과 제2 IP 블록(210)에 제공되는 전압을 모니터링하여 필요한 경우 제1 IP 블록(200)과 제2 IP 블록(210)에 제공되는 전압을 조절할 수 있다.
여기서는 설명의 편의상 제1 IP 블록(200)과 제2 IP 블록(210)에 대해 동적 전압 주파수 스케일링 동작을 수행하는 DVFS 블록(400)을 별도로 도시하였으나, DVFS 블록(400)이 도시된 것과 같이 클럭 관리 유닛(100), 전력 관리 유닛(300) 및 클럭 생성기(500) 등과 구분되어 구현되는 것은 아닐 수 있다. 몇몇 실시예에서, 클럭 관리 유닛(100), 전력 관리 유닛(300) 및 클럭 생성기 (500)의 적어도 일부 또는 전부의 구성 요소가 DVFS 블록(400)에 포함될 수도 있다.
이러한 동작을 위해 DVFS 블록(400)은 CPM(Critical Path Monitor)(410)을 포함할 수 있다. 예를 들어, CPM(410)은 제1 IP 블록(200)에 대한 DVFS 동작을 수행하기 위해 제1 IP 블록(200)에 제공되는 클럭 신호를 모니터링할 수 있다. 즉, CPM(410)은 제1 IP 블록(200)에 제공되는 클럭을 모니터링하여 제1 IP 블록(200)에 제공되는 제1 동작 클럭 신호(OCLK1)의 주파수를 조절할 수 있다.
몇몇 실시예에서, CPM(410)은 제2 IP 블록(210)에 대한 DVFS 동작을 수행하기 위해 제2 IP 블록(210)에 제공되는 클럭 신호를 모니터링할 수도 있다. 즉, CPM(410)은 제2 IP 블록(210)에 제공되는 클럭을 모니터링하여 제2 IP 블록(210)에 제공되는 제2 동작 클럭 신호(OCLK2)의 주파수를 조절할 수 있다.
비록 도면에서는 하나의 CPM(410)만 도시하였으나, 실시예가 이에 제한되는 것은 아니다. 몇몇 실시예에서, DVFS 블록(400)은 제1 IP 블록(200)에 제공되는 클럭을 모니터링하여 제1 IP 블록(200)에 제공되는 제1 동작 클럭 신호(OCLK1)의 주파수를 조절하는 제1 CPM과 제2 IP 블록(210)에 제공되는 클럭을 모니터링하여 제2 IP 블록(210)에 제공되는 제2 동작 클럭 신호(OCLK2)의 주파수를 조절하는 제2 CPM을 포함할 수 있다. 즉, IP 블록 별로 독립적인 CPM이 배치될 수도 있다.
몇몇 실시예에서, DVFS 블록(400)은 반도체 장치(1)에 포함된 IP 블록 개수만큼의 CPM을 포함할 수 있다. 즉, 반도체 장치(1)에 n(n은 자연수) 개의 IP 블록이 배치된 경우, DVFS 블록(400)도 n개의 CPM을 포함할 수 있다.
클럭 생성기(500)는 반도체 장치(1)의 동작에 필요한 클럭 신호를 생성할 수 있다. 이하에서는, 클럭 생성기(500)가 PLL(Phase Lock Loop)인 것을 예로 들어 설명할 것이나, 실시예들이 이에 제한되는 것은 아니다. PLL(500)에서 생성된 클럭 신호는 클럭 관리 유닛(100)에 제공되어 제1 및 제 IP 블록(200, 210)에 제공될 수 있다.
도 2는 몇몇 실시예에 따른 반도체 장치(System On Chip)에 포함된 클럭 관리 유닛을 도시한 블록도이다.
도 2를 참조하면, 클럭 관리 유닛(100)은 클럭 컴포넌트(Clock Component)(120a, 120b, 120c, 120d, 120e, 120f, 120g), 채널 관리 회로(Channel Management circuit, CM)(130, 132), 클럭 관리 유닛 컨트롤러(Clock Management Controller, CMU Controller)(110) 및 CPM 클럭 관리자(CPM Clock Manager)(140a, 140b)를 포함한다.
클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g)는 IP 블록(200, 210)에 제공할 클럭 신호를 생성하고, 채널 관리 회로(130, 132)는 클럭 컴포넌트(120f, 120g)와 IP 블록(200, 210) 사이에 배치되어 클럭 관리 유닛(100)과 IP 블록(200, 210) 사이의 통신 채널(Channel, CH)을 제공한다. 그리고 클럭 관리 유닛 컨트롤러(110)는 클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g)를 이용하여 IP 블록(200, 210)에 클럭 신호를 제공한다.
몇몇 실시예에서, 채널 관리 회로(130, 132)가 제공하는 통신 채널(CH)은 ARM 사의 LPI(Low Power Interface), Q-채널 인터페이스(Q-Channel Interface) 또는 P-채널 인터페이스(P-Channel Interface)에 따르도록 구현될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g)는 각각 클럭 소오스(Clock Source, CS)(124a, 124b, 124c, 124d, 124e, 124f, 124g)와, 클럭 소오스(124a, 124b, 124c, 124d, 124e, 124f, 124g)를 각각 제어하는 클럭 제어 회로(Clock Control circuit, CC)(122a, 122b, 122c, 122d, 122e, 122f, 122g)를 포함한다.
여기서, 클럭 소오스(124a, 124b, 124c, 124d, 124e, 124f, 124g)는, 예를 들어, 다중화 회로(MUX circuit), 클럭 분주 회로(clock dividing circuit), 단기 정지 회로(short stop circuit), 클럭 게이팅 회로(clock gating circuit) 등을 포함할 수 있다.
클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g)는 서로 간에 부모-자식 관계를 형성한다. 도시된 예에서, 클럭 컴포넌트(120a)는 클럭 컴포넌트(120b)의 부모이고, 클럭 컴포넌트(120b)는 클럭 컴포넌트(120a)의 자식이자 클럭 컴포넌트(120c)의 부모이다. 또한, 클럭 컴포넌트(120e)는 2 개의 클럭 컴포넌트(120f, 120g)의 부모이고, 클럭 컴포넌트(120f, 120g)는 클럭 컴포넌트(120e)의 자식이다.
한편, 본 실시예에서 PLL(500)에 가장 가깝도록 배치된 클럭 컴포넌트(120a)는 루트(root) 클럭 컴포넌트이고, IP 블록(200, 210)에 가장 가깝도록 배치된 클럭 컴포넌트(120f, 120g)는 리프(leaf) 클럭 컴포넌트이다.
이와 같은 부모-자식 관계는 클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g) 간의 부모-자식 관계에 따라 필연적으로 클럭 제어 회로(122a, 122b, 122c, 122d, 122e, 122f, 122g) 간, 그리고 클럭 소오스(124a, 124b, 124c, 124d, 124e, 124f, 124g) 간에도 형성된다.
클럭 제어 회로(122a, 122b, 122c, 122d, 122e, 122f, 122g)는 부모와 자식 간에 클럭 요청(REQ) 및 이에 대한 애크(acknowledgement)(ACK)를 주고받으며, IP 블록(200, 210)에 동작 클럭 신호(OCLK1, OCLK2)를 제공한다.
예를 들어, IP 블록(200)이 제1 동작 클럭 신호(OCLK1)를 필요로 하지 않는 경우, 예컨데 IP 블록(200)이 슬립(sleep) 상태가 되어야 할 필요가 있는 경우, 클럭 관리 유닛(100)은 IP 블록(200)에 대한 제1 동작 클럭 신호(OCLK1)의 제공을 중지한다.
구체적으로, 채널 관리 회로(130)는, 클럭 관리 유닛(100) 또는 클럭 관리 유닛 컨트롤러(110)의 제어 하에, IP 블록(200)에 제1 동작 클럭 신호(OCLK1)의 제공을 중지하겠다는 제1 신호를 전송한다.
제1 신호를 수신한 IP 블록(200)은 처리 중인 작업을 완료한 후 클럭 신호가 중지되어도 좋다는 제2 신호를 채널 관리 회로(130)에 전송한다. 채널 관리 회로(130)는 IP 블록(200)으로부터 제2 신호를 수신한 후, 자신의 부모에 해당하는 클럭 컴포넌트(120f)에 클럭 신호의 제공을 중지할 것을 요청한다.
예를 들어, 만일 채널 관리 회로(130)가 제공하는 통신 채널(CH)이 Q-채널 인터페이스를 따르는 경우라면, 채널 관리 회로(130)는 IP 블록(200)에 제1 논리 값(예컨대, 논리 로우(logic low), 이하 L로 표시)을 갖는 QREQn 신호를 제1 신호로서 전송한다. 이후 채널 관리 회로(130)는 IP 블록(200)으로부터, 예컨대 제1 논리 값(L)을 갖는 QACCEPTn 신호를 제2 신호로서 수신한 후, 클럭 컴포넌트(120f)에, 예컨대 제1 논리 값(L)을 갖는 클럭 요청(REQ)를 전송한다. 이 경우, 제1 논리 값(L)을 갖는 클럭 요청(REQ)은 "클럭 제공 중지 요청"을 의미한다.
채널 관리 회로(130)로부터 제1 논리 값(L)을 갖는 클럭 요청(REQ), 즉 클럭 제공 중지 요청을 수신한 클럭 제어 회로(122f)는 클럭 소오스(124f)(예를 들어, 클럭 게이팅 회로)를 디스에이블(disable)하여 제1 동작 클럭 신호(OCLK1)의 제공을 중지한다. 이에 따라, 제1 IP 블록(200)은 슬립 모드로 진입할 수 있게 된다.
이 과정에서 클럭 제어 회로(122f)는 제1 논리 값(L)을 갖는 애크(ACK)를 채널 관리 회로(130)에 제공할 수 있다. 여기서, 채널 관리 회로(130)가 제1 논리 값(L)을 갖는 클럭 제공 중지 요청(REQ)을 전송한 후 제1 논리 값(L)을 갖는 애크(ACK)를 수신했다고 하여 클럭 소오스(124f)로부터의 클럭 제공의 중지가 보장되는 것은 아니다.
이러한 애크(ACK)는, 채널 관리 회로(130)의 부모인 클럭 컴포넌트(120f)가 IP 블록(200)에 더 이상 제1 동작 클럭 신호(OCLK1)를 제공을 할 필요가 없다는 것을 클럭 제어 회로(122f)가 인지했다는 의미를 가질 뿐이다.
한편, 클럭 컴포넌트(120f)의 클럭 제어 회로(122f)는 자신의 부모에 해당하는 클럭 컴포넌트(120e)의 클럭 제어 회로(122e)에 제1 논리 값(L)을 갖는 클럭 요청(REQ)을 전송한다.
만일 IP 블록(210) 역시 클럭 신호를 필요로 하지 않는 경우, 예컨대 클럭 제어 회로(122e)가 클럭 제어 회로(122g)로부터 클럭 제공 중지 요청을 수신한 경우라면, 클럭 제어 회로(122e)는 클럭 소오스(124e)(예컨대, 클럭 분주 회로)를 디스에이블하여 클럭 신호의 제공을 중지한다.
이와 같은 동작은 다른 클럭 제어 회로(122a, 122b, 122c, 122d)에 대해서도 마찬가지로 수행될 수 있다.
이와 다르게, 클럭 컴포넌트(120f)의 클럭 제어 회로(122f)가 자신의 부모에 해당하는 클럭 컴포넌트(120e)의 클럭 제어 회로(122e)에 제1 논리 값(L)을 갖는 클럭 요청(REQ)을 전송하였지만, IP 블록(210)이 실행(running) 상태 또는 액티브(active) 상태에 있는 경우라면, 클럭 제어 회로(122e)는 클럭 소오스(124e)를 디스에이블할 수 없다.
이후 IP 블록(210)이 더 이상 클럭 신호를 필요로 하지 않는 경우가 되어서야 비로소 클럭 제어 회로(122e)는 클럭 소오스(124e)를 디스에이블하고 자신의 부모에 해당하는 클럭 제어 회로(120d)에 제1 논리 값(L)을 갖는 클럭 요청(REQ)을 전송할 수 있다. 즉, 클럭 제어 회로(122e)는 자식에 해당하는 클럭 제어 회로(122f, 122g) 모두로부터 클럭 제공 중지 요청을 수신한 경우에만 클럭 소오스(124e)를 디스에이블할 수 있다.
한편, IP 블록(200)이 슬립 상태에 있어서 클럭 소오스(124a, 124b, 124c, 124d, 124e, 124f)가 모두 디스에이블되었다가 IP 블록(200)이 실행 상태 또는 액티브 상태로 진입한 경우, 클럭 관리 유닛(100)은 IP 블록(200)에 대한 클럭 신호의 제공을 재개한다.
채널 관리 회로(130)는 자신의 부모에 해당하는 클럭 컴포넌트(120f)의 클럭 제어 회로(122f)에 제2 논리 값(예컨대, 논리 하이(logic high), 이하 H로 표시)을 갖는 클럭 요청(REQ)을 전송하고, 클럭 제어 회로(122f)로부터의 애크(ACK)를 대기한다. 여기서, 제2 논리 값(H)을 갖는 클럭 요청(REQ)은 "클럭 제공 요청"을 의미하고, 클럭 제공 요청에 대한 애크(ACK)는 클럭 소오스(124f)로부터 클럭 제공이 재개되었음을 의미한다. 클럭 제어 회로(122f)는 클럭 소오스(124f)(예컨대, 클럭 게이팅 회로)를 바로 인에이블(enable)하지 못하고, 부모로부터 클럭 신호가 제공되기를 대기한다.
다음으로 클럭 제어 회로(122f)는 자신의 부모에 해당하는 클럭 제어회로(122e)에 제2 논리 값(H)을 갖는 클럭 요청(REQ), 즉 클럭 제공 요청을 전송하고, 클럭 제어 회로(122e)로부터의 애크(ACK)를 대기한다. 이와 같은 동작은 클럭 제어 회로(122a, 122b, 122c, 122d)에 대해서도 마찬가지로 수행될 수 있다.
클럭 제어 회로(122b)로부터 제2 논리 값(H)을 갖는 클럭 요청(REQ)를 수신한 루트 클럭 컴포넌트인 클럭 제어 회로(122a)는 클럭 소오스(124a)(예컨대, 다중화 회로)를 인에이블하고 애크(ACK)를 클럭 제어 회로(122b)에 전송한다. 이와 같은 방식으로 클럭 소오스(124b, 124c, 124d, 124d, 124e)가 순차적으로 인에이블되면 비로소 클럭 제어 회로(122e)는 클럭 제어 회로(122f)에 클럭 소오스(124e)로부터 클럭 제공이 재개되었음을 알리는 애크(ACK)를 전송한다. 애크(ACK)를 수신한 클럭 제어 회로(122f)는 비로소 클럭 소오스(124f)를 인에이블하여 동작 클럭 신호(OCLK1)를 IP 블록(200)에 제공하고, 채널 관리 회로(130)에 애크(ACK)를 제공한다.
이와 같이 클럭 제어 회로(122a, 122b, 122c, 122d, 122e, 122f, 122g)는 부모와 자식 간에 클럭 요청(REQ) 및 이에 대한 애크 (ACK)를 주고받는 풀 핸드셰이크(full handshake) 방식으로 동작한다. 이에 따라, 클럭 제어 회로(122a, 122b, 122c, 122d, 122e, 122f, 122g)는 하드웨어적으로 클럭 소오스(124a, 124b, 124c, 124d, 124e, 124f, 124g)를 제어하여 IP 블록(200)에 제공되는 동작 클럭 신호(OCLK1)를 제어할 수 있다.
이들 클럭 제어 회로(122a, 122b, 122c, 122d, 122e, 122f, 122g)는 자체적으로 동작하여 부모에게 클럭 요청(REQ)을 전송하거나 클럭 소오스(124a, 124b, 124c, 124d, 124e, 124f, 124g)를 제어할 수 있고, 클럭 관리 유닛 컨트롤러(110)의 제어 하에 동작할 수도 있다.
한편, 몇몇 실시예에서, 클럭 제어 회로(122a, 122b, 122c, 122d, 122e, 122f, 122g)는 부모와 자식 간에 주고받는 클럭 요청(REQ)에 따라 클럭 소오스(124a, 124b, 124c, 124d, 124e, 124f, 124g)를 각각 제어하는 유한 상태 기계(Finite State Machine, FSM)를 포함할 수 있다.
몇몇 실시예에서, 클럭 컴포넌트(120a)는 예를 들어, PLL(500)에 제어 신호(CTL)를 제공함으로써 PLL(500)의 출력 클럭 신호(PLLCK)을 제어하는 PLL 컨트롤러일 수 있다.
PLL 컨트롤러는 오실레이터(OSC)로부터 발진된 일정하거나 가변적인 주파수 신호를 제공받으며, PLL 출력을 사용하는 컴포넌트(component)가 존재하지 않는 경우 자동적으로 PLL(500)을 오프(off)시키도록 동작할 수 있다. 또는, PLL 컨트롤러는 PLL 출력을 사용하는 컴포넌트가 존재하지 않는 경우에 자동적으로 PLL(500)을 바이패스 모드(bypass mode)로 전환시키도록 동작할 수 있다. 또는, PLL 컨트롤러는 PLL 출력을 사용하는 컴포넌트가 존재하지 않는 경우에 PLL(500)의 동작에 아무런 영향을 주지 않을 수도 있다.
PLL 컨트롤러는 클럭을 생성해 내는 임의의 컴포넌트로 구현될 수도 있다. 예를 들어, PLL 컨트롤러는 링 오실레이터(ring oscillator)를 이용하여 구현될 수 있으며, 크리스탈 오실레이터(crystal oscillator)를 이용하여 구현될 수도 있다.
몇몇 실시예에서, 클럭 컴포넌트(120b)는 예를 들어, 클럭 먹스 유닛(Clock Mux Unit)일 수 있다.
클럭 먹스 유닛은 클럭 제어 회로(122b)와 먹스 회로(124b)를 포함할 수 있으며, 클럭 먹스 유닛의 클럭 제어 회로(122b)는 순차적 비헤이비어(sequential behavior)를 갖고 동작할 수 있다.
클럭 제어 회로(122b)는 클럭의 온/오프(on/off)를 제어하고, 클럭이 오프된 상태에서 먹스 회로(124b)의 먹스 셀렉션(selection)의 변경을 위해 자체적으로 클럭 요청 신호를 생성할 수 있다. 클럭 제어 회로(122b)가 먹스 셀렉션(mux selection) 변경을 위해 자체적으로 생성한 클럭 요청 신호는 이전 부모 클럭 컴포넌트와 이후 부모 클럭 컴포넌트에게만 공급되도록 하거나 모든 가능한 부모 클럭 컴포넌트에게 공급되게할 수도 있다. 또는, 클럭 제어 회로(122b)는 먹스 셀렉션의 변경을 위해 자체적으로 클럭 요청 신호를 생성하지 않을 수도 있다.
도 3은 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 먹스 유닛의 구현 방식을 설명하기 위한 도면이고, 도 4는 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 먹스 유닛의 FSM을 설명하기 위한 도면이다.
도 3을 참조하면, 클럭 먹스 유닛은 FSM 및 다중화 회로(SEC_AP_RTL_GFMUX)를 포함한다. FSM은 자식 클럭 컴포넌트로부터 클럭 요청 신호(CHILD_CLK_REQ)를 전송받아 부모 클럭 컴포넌트로 클럭 요청 신호(PARENT_CLK_REQ 0, PARENT_CLK_REQ 1)를 전송한다.
이 때, 클럭 먹스 유닛은 글리치-프리 먹스(glitch-free mux)를 포함할 수 있다. 글리치(glitch)란 불필요한 부분에 발생하는 노이즈 펄스로 인해 발생하는 컴퓨터의 일시적인 오동작을 의미한다.
FSM은 선택 신호(SEL)를 입력받고, 선택 신호(SEL)의 값이 변경됨을 확인한 경우, 선택 신호(SEL)와 먹셀(Muxsel) 신호를 비교한 후, 상기 신호들의 값이 서로 같은지 확인한다.
만약, 상기 신호들의 값이 서로 같지 않은 경우, FSM은 디텍트 체인지(Detect_change) 신호를 생성한다. 여기에서, 디텍트 체인지 신호를 생성하는 과정은, 로우 상태(low state)를 갖는 디텍트 체인지 신호의 값을 하이 상태(high state)로 토글(toggle) 시키거나, 하이 상태(high state)를 갖는 디텍트 체인지 신호의 값을 로우 상태(low state)로 토글 시킴으로써 수행할 수 있다.
클럭 먹스 유닛은 FSM으로부터 출력된 선택 신호(SEL_OUT)에 응답하여 제1 클럭 신호(CLK1) 또는 도시되지 않은 클럭 제어 회로(도 2의 122a)와 다른 클럭 제어 회로로부터 출력된 제2 클럭 신호(CLK2)를 클럭 신호(CLK_OUT)으로서 출력한다. 이 때, 자식 클럭 컴포넌트(예를 들어, 도 2의 120c)는 이러한 클럭 신호(CLK_OUT)를 제공받는다.
도 4를 함께 참조하면, 클럭 먹스 유닛에 포함된 FSM은 다음의 상태들을 포함할 수 있다.
제1 상태(b1)는 하드웨어에 의한 클럭 게이팅이 동작하는 상태로서, 자식 클럭 컴포넌트에 대한 클럭 제공을 중단한 (클럭 먹스 유닛의) 부모 클럭 컴포넌트와, 여전히 클럭 제공을 하며 동작하는 (클럭 먹스 유닛의) 부모 클럭 컴포넌트가 모두 존재할 수 있는 상태이다. 이 상태에서는 클럭 먹스 유닛의 모든 부모 클럭 컴포넌트가 동작하고 있음이 보장되지 않는다. 즉, 이 상태는 불필요한 부모 클럭 컴포넌트의 동작이 중단되어 전력 소모량이 최소화된 상태일 수 있다. 따라서 클럭 먹스 유닛은 선택 신호(SEL)에 따라 선택을 변경하는 작업을 수행할 수 없다. 클럭 게이팅 컴포넌트와 달리, 자식 클럭 컴포넌트로부터의 클럭 요청 신호가 수신되어도 클럭 먹스 유닛은 최적화 상태를 유지할 수 있다.
제2 상태(b2)는 클럭 먹스 유닛은 선택 신호(SEL)에 따라 선택을 변경할 필요가 있어, 클럭 먹스 유닛의 모든 부모 클럭 컴포넌트를 웨이크업(wakeup)한 상태이다.
제3 상태(b3)는 하드웨어에 의한 클럭 게이팅이 동작하지 않는 상태이다. 즉, 모든 부모 클럭 컴포넌트가 웨이크업되어 클럭 신호를 클럭 먹스 유닛에 제공하고 있는 상태이다. 이 단계에서 클럭 먹스 유닛은 선택 신호(SEL)에 따라 선택을 변경할 수 있다.
제4 상태(b4)는, 클럭 먹스 유닛이 선택 신호(SEL)에 따라 선택을 변경한 후, 하드웨어에 의한 클럭 게이팅이 다시 동작하여, 클럭 제공을 할 필요가 없는 부모 클럭 컴포넌트가 동작을 중단하기 시작하는 상태이다. 즉, 클럭 제공을 할 필요가 없는 부모 클럭 컴포넌트에게 클럭 중단 요청 신호 (PARENT_CLK_REQ)를 전송하는 상태이다.
클럭 제공을 할 필요가 없는 부모 클럭 컴포넌트로부터 클럭 응답 신호 PARENT_CLK_ACK)를 수신한 후, 다시 제1 상태(b1)로 돌아갈 수 있다.
다시 도 2를 참조하면, 몇몇 실시예에서, 클럭 컴포넌트(120c)와 클럭 컴포넌트(120e)는 예를 들어, 클럭 분주 유닛(Clock Dividing Unit)일 수 있다. 이하에서는 클럭 컴포넌트(120c)에 대해 예시적으로 설명할 것이나, 클럭 컴포넌트(120e)에 대해서도 동일하게 적용될 수 있다.
클럭 분주 유닛은 클럭 제어 회로(122c)와 분주 회로(124c)를 포함할 수 있으며, 클럭 분주 유닛의 클럭 제어 회로(122c)는 순차적 비헤이비어(sequential behavior)를 갖고 동작할 수 있다. 클럭 제어 회로(122c)는 클럭의 온/오프(on/off)를 제어하고, 클럭이 오프된 상태에서 클럭 분주 회로의 클럭 분주비(clock dividing ratio)의 변경을 위해 자체적으로 클럭 요청 신호를 생성할 수 있다. 클럭 제어 회로(122c)는 클럭이 오프된 상태에서 분주 회로(124c)의 클럭 분주비의 변경을 위해 자체적으로 클럭 요청 신호를 생성하지 않을 수도 있다.
몇몇 실시예에서, 클럭 컴포넌트(120d)는 예를 들어, 단기 정지 유닛(Short Stop Unit)일 수 있다.
단기 정지 유닛은 클럭 제어 회로(120d)와 클럭 게이팅 회로(122d)를 포함할 수 있으며, 단기 정지 유닛의 클럭 제어 회로(120d)는 순차적 비헤이비어(sequential behavior)를 갖고 동작할 수 있다. 클럭 제어 회로(120d)는 클럭의 온/오프(on/off)를 제어할 수 있다. 자식 클럭 컴포넌트로부터 클럭 요청 신호가 비활성화된 경우, 클럭 제어 회로(120d)는 클럭 게이팅 회로(122d)를 활성화시킬 수 있다.
몇몇 실시예에서, 클럭 컴포넌트(120f, 120g)는 예를 들어, 클럭 게이팅 유닛(Clock Gating Unit)일 수 있다.
클럭 게이팅 유닛은 채널 관리 회로(130, 132) 중 적어도 하나와 풀 핸드셰이크(full handshake) 방식에 따라 통신할 수 있다.
도 5는 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 구현 방식을 설명하기 위한 도면이다. 도 6은 몇몇의 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 구조를 설명하기 위한 도면이다. 도 7은 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 게이팅 유닛의 비헤이비어를 설명하기 위한 타이밍도이다.
도 5를 참조하면, 클럭 게이팅 유닛은 FSM(Finite State Machine) 및 클럭 게이팅 셀(SEC_AP_RTL_CLKGATE)을 포함한다. 여기서, FSM이란 유한 개의 상태와 이러한 상태들 간의 변환으로 구성된 계산 모형 또는 기계를 의미한다. 도 5의 FSM 및 클럭 게이팅 셀(SEC_AP_RTL_CLKGATE)은 도 6의 어댑터 및 코어 클럭 게이팅 셀(SEC_AP_RTL_CLKGATE)에 각각 대응될 수 있다. 여기서, FSM 또는 어댑터는, 클럭 컴포넌트에 의해 생성되는 클럭 신호(CLK)와 다른 클럭 도메인에 해당하는 기준 클럭 신호(CLK_RF)에 의해 동작할 수 있고, 클럭 게이팅 셀(SEC_AP_RTL_CLKGATE)과 풀 핸드셰이크를 수행한다.
FSM은 자식 클럭 컴포넌트로부터 수신한 클럭 요청 신호(CHILD_CLK_REQ)를 입력받고, FSM의 상태에 따라 부모 클럭 컴포넌트에 클럭 요청 신호(PARENT_CLK_REQ)를 전송하거나, 클럭 게이팅 셀(SEC_AP_RTL_CLKGATE)을 제어하기 위한 인에이블 신호(EN)을 출력할 수 있다.
클럭 게이팅 셀(SEC_AP_RTL_CLKGATE)은 FSM으로부터 출력된 인에이블 신호(EN)에 따라, 클럭 신호(CLK_IN)를 입력받고, 이를 게이팅하거나 바이패스(bypass)한 클럭 신호(CLK_OUT)를 출력한다.
도 7을 함께 참조하면, 클럭 게이팅 유닛의 FSM은 다음의 상태들을 포함할 수 있다.
제1 상태(a1)는 자식 클럭 컴포넌트로부터 수신한, 제2 논리 값(H)을 갖는 클럭 요청 신호(CHILD_CLK_REQ)에 따라, 클럭 게이팅 동작을 수행하지 않고 자식 클럭 컴포넌트에 클럭 신호(CLK)를 제공하는 상태이다. 이후 자식 클럭 컴포넌트로부터 수신한 클럭 요청 신호(CHILD_CLK_REQ)가 제1 논리 값(L)으로 트랜지션된다.
제2 상태(a2)는 클럭 게이팅 유닛 자체에서 클럭 게이팅 동작을 수행하는 상태이다. 이에 따라 클럭 게이팅 유닛은 자체적인 클럭 게이팅 동작에 필요한 자체 핸드셰이크 레이턴시(local handshake latency)가 소요된 후, 자식 클럭 컴포넌트에 제1 논리 값(L)을 갖는 클럭 응답 신호(CHILD_CLK_ACK)를 전송한다. 더불어, 클럭 게이팅 유닛은 부모 클럭 컴포넌트에 제1 논리 값(L)을 갖는 클럭 요청 신호(PARENT_CLK_REQ)를 전송한다.
제3 상태(a3)는 부모 클럭 컴포넌트에 제1 논리 값(L)을 갖는 클럭 요청 신호(PARENT_CLK_REQ)를 전송하여 클럭 제공을 중지하라는 요청을 전송하는 단계이고, 제4 상태(a4)는 부모 클럭 컴포넌트로부터 이에 대한 제1 논리 값(L)을 갖는 클럭 응답 신호(PARENT_CLK_ACK)를 수신하기까지 대기하는 상태이다. 이는 클럭 게이팅 유닛 내부적으로 게이팅 동작을 완료했기 때문에 부모 컴포넌트에게 클럭 게이팅 동작이 필요하다면 부모 컴포넌트의 클럭 게이팅 동작을 수행하라는 의미이다.
부모 클럭 컴포넌트로부터 이에 대한 제1 논리 값(L)을 갖는 클럭 응답 신호(PARENT_CLK_ACK)를 수신한 후, 제5 상태(a5)에는 클럭 게이팅 유닛의 자식 클럭 컴포넌트에 대한 클럭 제공이 완전히 중단된다.
이 때, 자식 클럭 컴포넌트에서 제2 논리 값(H)을 갖는 클럭 요청 신호(CHILD_CLK_REQ)를 수신하게 되면, 부모 클럭 컴포넌트에 제2 논리 값(H)을 갖는 클럭 요청 신호(PARENT_CLK_REQ)를 전송한 후, 제6 상태(a6)에서 클럭 게이팅 유닛 자체으로 클럭 게이팅 동작을 중지한다.
자체적인 클럭 게이팅 동작을 중단하기 위해 필요한 자체 핸드셰이크 레이턴시(local handshake latency)가 소요된 후, 부모 클럭 컴포넌트로부터 제2 논리 값(H)을 갖는 클럭 응답 신호(PARENT_CLK_ACK)를 수신하면, 클럭 게이팅 유닛은 제7 상태(a7)로 전환되는데, 여기서 제7 상태(a7)는 곧 제1 상태(a1)를 의미한다.
도 1 및 도 2를 참조하면, 전력 관리 유닛(300)은 대기 모드에서 입력되는 웨이크-업(Wake-Up) 신호에 응답하여 오실레이터(OSC)에 전원 제어 신호를 전송할 수 있다. 오실레이터(OSC)는 일정한 주파수 신호를 발생시키는 발진 회로로서, 로직 블록으로 동작 클럭을 공급한다. 일반적으로 사용되는 크리스탈 오실레이터는 크리스탈(XTAL)의 압전 진동을 이용하여 진동수가 정확하고 안정된 신호를 생성한다.
오실레이터(OSC)에 전원이 입력되면, 발진이 시작되면서 미세하고 불안정한 신호에서 점차 안정된 발진 클럭이 출력된다. 클럭 관리 유닛(100)은 오실레이터(OSC)로부터 출력된 발진 클럭이 안정화된 이후에 동작 클럭을 로직 블록으로 공급할 수 있다.
도 8은 몇몇 실시예에 따른 반도체 장치에 포함된 IP 블록을 도시한 블록도이다.
도 8을 참조하면, IP 블록(200)은 채널 어댑터(channel adapter)(202)와 IP 코어(core)(204)를 포함할 수 있다. 도 8은 예시적으로 IP 블록(200)에 대해서만 도시하였으며, 다른 IP 블록(210)도 실질적으로 동일한 구성요소를 포함한다.
도 1, 도 2 및 도 8을 참조하면, 채널 어댑터(202)는 채널 관리 회로 130)와 풀 핸드셰이크(full handshake) 방식에 따라 통신할 수 있다. 채널 어댑터(202)를 통해 IP 블록(200)은 제1 클럭 요청 신호(REQ1)를 전송할 수 있으며, 제1 동작 클럭 신호(OCLK1)를 제공받을 수 있다. 또는 채널 어댑터(202)를 통해 IP 블록(200)은 제1 클럭 요청 신호(REQ1)를 전송하고, 클럭이 존재한다는 ACK 신호를 받을 수 있고, 제1 동작 클럭 신호(OCLK1)는 채널 어댑터(202)에 의해 제어되는 클럭 컴포넌트로부터 직접 공급받을 수도 있다.
IP 코어(204)는 예를 들어, 프로세서(processor), 그래픽 프로세서(graphic processor), 메모리 컨트롤러(graphic controller), 입출력 인터페이스 블록(input and output interface block) 등을 포함할 수 있다.
도 9는 복수 개의 클럭 제어 회로 사이의 신호 전송 패스(path)를 도시한 도면이다.
도 9를 참조하면, 복수 개의 클럭 제어 회로들은 클럭 요청 신호(REQ)와, 이에 대한 응답 신호인 애크(또는 클럭 응답 신호)(ACK)를 포함하는 핸드셰이크 신호를 이용하여 동작할 수 있다. 클럭 요청 신호(REQ) 및 클럭 응답 신호(ACK)는, 예를 들어, 제1 논리 값(L)과 제2 논리 값(H)을 가질 수 있으나, 클럭 요청 신호(REQ) 및 클럭 응답 신호(ACK)를 구현하는 방식이 이에 제한되는 것은 아니다.
몇몇 실시예에서, 클럭 소비자(clock consumer)는 예컨대 제2 논리 값(H)을 갖는 클럭 요청 신호(REQ)를 클럭 제공자(clock provider)에게 전송함으로써, 클럭 제공자에게 클럭이 필요하다는 정보를 전달할 수 있다. 이와 다르게, 클럭 소비자는 예컨대 제1 논리 값(L)을 갖는 클럭 요청 신호(REQ)를 클럭 제공자에게 전송함으로써, 클럭 제공자에게 클럭이 더 이상 필요하지 않다는 정보를 전달할 수 있다.
한편, 클럭 제공자는 예를 들어, 제2 논리 값(H)을 갖는 클럭 응답 신호(ACK)를 클럭 소비자에게 전송할 수 있는데, 이것은 클럭 제공자로부터 클럭 신호가 클럭 소비자에게 안정적으로 공급되고 있음을 나타낸다. 이와 다르게, 클럭 제공자는 제1 논리 값(L)을 갖는 클럭 응답 신호(ACK)를 클럭 소비자에게 전송할 수 있는데, 이것은 클럭 제공자가 클럭 소비자에게 클럭 신호의 제공 여부를 알려줄 수 없다는 것을 지시한다.
예를 들어, 클럭 제어 회로(122b)는, 클럭 소비자의 입장에서, 예컨대 제2 논리 값(H)을 갖는 클럭 요청 신호(PARENT_CLK_REQ)를 클럭 제어 회로(122a)에 전송함으로써, 클럭 제공자에 해당하는 클럭 제어 회로(122a)에게 클럭이 필요하다는 정보를 전달할 수 있다. 이에, 클럭 제어 회로(122a)를 포함하는 클럭 컴포넌트(즉, 클럭 공급자)는, 클럭 제어 회로(122b)를 포함하는 클럭 컴포넌트(즉, 클럭 소비자)에게 클럭 신호를 제공하고, 이후 클럭 제어 회로(122b)는, 예컨대 제2 논리 값(H)을 갖는 클럭 응답 신호(PARENT_CLK_ACK)를 클럭 제어 회로(122a)로부터 수신할 수 있다.
한편, 클럭 제어 회로(122b)는, 클럭 제공자의 입장에서, 예컨대 제2 논리 값(H)을 갖는 클럭 요청 신호(CHILD_CLK_REQ)를 클럭 제어 회로(122f)로부터 수신함으로써, 클럭 소비자에 해당하는 클럭 제어 회로(122f)가 클럭이 필요하다는 것을 알 수 있다. 이에, 클럭 제어 회로(122b)를 포함하는 클럭 컴포넌트(즉, 클럭 공급자)는, 클럭 제어 회로(122f)를 포함하는 클럭 컴포넌트(즉, 클럭 소비자)에게 클럭 신호를 제공하고, 이후 클럭 제어 회로(122b)는, 클럭 제공자의 입장에서, 예컨대 제2 논리 값(H)을 갖는 클럭 응답 신호(CHILD_CLK_ACK)를 클럭 제어 회로(122f)에게 전송할 수 있다.
다른 예를 들어, 클럭 제어 회로(122b)는, 클럭 소비자의 입장에서, 예컨대 제1 논리 값(L)을 갖는 클럭 요청 신호(PARENT_CLK_REQ)를 클럭 제어 회로(122a)에 전송함으로써, 클럭 제공자에 해당하는 클럭 제어 회로(122a)에게 클럭이 더 이상 필요하지 않다는 정보를 전달할 수 있다. 이에, 클럭 제어 회로(122b)는, 예컨대 제1 논리 값(L)을 갖는 클럭 응답 신호(PARENT_CLK_ACK)를 클럭 제어 회로(122a)로부터 수신할 수 있으며, 이것은 클럭 제공자로부터의 클럭 제공이 보장되지 않음을 나타낸다.
한편, 클럭 제어 회로(122b)는, 클럭 제공자의 입장에서, 예컨대 제1 논리 값(L)을 갖는 클럭 요청 신호(CHILD_CLK_REQ)를 클럭 제어 회로(122f)로부터 수신함으로써, 클럭 소비자에 해당하는 클럭 제어 회로(122f)가 클럭이 더 이상 필요하지 않다는 것을 알 수 있다. 이에, 클럭 제어 회로(122b)는, 예컨대 제1 논리 값(L)을 갖는 클럭 응답 신호(CHILD_CLK_ACK)를 클럭 제어 회로(122f)에게 전송할 수 있으며, 이것은 클럭 제공자로부터의 클럭 제공이 보장되지 않음을 나타낸다.
여기서, 이와 같은 클럭 제어 회로들 사이의 조합 패스(combinational path)는, 클럭 제어 회로(122b)가 그 부모인 클럭 제어 회로(122a)에게 클럭 요청 신호(PARENT_CLK_REQ)를 전송한 후 클럭 제어 회로(122b)가 그 부모인 클럭 제어 회로(122a)로부터 클럭 응답 신호(PARENT_CLK_ACK)를 수신하는 패스와, 클럭 제어 회로(122b)가 그 자식인 클럭 제어 회로(122f)로부터 클럭 요청 신호(CHILD_CLK_REQ)를 수신한 후 클럭 제어 회로(122b)가 그 자식인 클럭 제어 회로(122f)에게 클럭 응답 신호(CHILD_CLK ACK)를 전송하는 패스를 포함한다. 하지만, 클럭 제어 회로(122b)가 그 부모인 클럭 제어 회로(122a)로부터 클럭 응답 신호(PARENT_CLK_ACK)를 수신한 후, 클럭 제어 회로(122b)가 그 부모인 클럭 제어 회로(122a)에게 클럭 요청 신호(PARENT_CLK_REQ)를 전송하는 패스는 클럭 제어 회로들 사이의 조합 패스에 포함되지 않는다(도 9에서 'X'로 도시됨).
이와 같은 클럭 요청 신호(REQ)와 클럭 응답 신호(ACK)는 일반적인 풀 핸드셰이크(full handshake) 방식으로 구현되어 있으며, 클럭 제공자과 클럭 소비자는 서로 동일한 단일 클럭 도메인(single clock domain)에 속할 수도 있고, 서로 다른 클럭 도메인에 속할 수도 있다.
본 발명의 몇몇의 실시예에서, 각각의 클럭 제어 회로와 연결되어 통신하는 클럭 먹스 회로, 클럭 분주 회로, 클럭 게이팅 회로 등은 클럭 제어 회로와 서로 다른 클럭 도메인을 이용할 수 있다. 즉, 클럭 요청 신호를 전송하는 신호 라인에서의 클럭 주파수와 실제로 제공받는 동작 클럭의 클럭 주파수는 서로 다를 수 있다.
도 1, 도 2 및 도 9를 참조하여, 풀 핸드셰이크 방식(full handshake method)에 대하여 정리하면 다음과 같다.
IP 블록(200)이 클럭이 필요하면, IP 블록(200)은 제1 클럭 요청 신호(REQ1)를 활성화한다. 예를 들어, IP 블록(200)은 제1 클럭 요청 신호(REQ1)를 하이 상태(high state)로 만들 수 있다.
클럭 관리 유닛(100)은 제1 클럭 요청 신호(REQ1)의 활성화에 응답하여 제1 클럭 요청 신호(REQ1)에 대한 제1 클럭 응답 신호(ACK1)를 활성화한다. 즉, 클럭 관리 유닛(100)은 제1 클럭 응답 신호(ACK1)를 하이 상태(high state)로 만들 수 있다.
클럭 관리 유닛(100)은 제1 클럭 응답 신호(ACK1)의 활성화보다 먼저 제1 동작 클럭 신호(OCLK1)을 IP 블록(200)로 전송할 수 있다. 또는, 클럭 관리 유닛(100)은 제1 클럭 응답 신호(ACK1)의 활성화와 동시에 제1 클럭 신호(OCLK1)을 IP 블록(200)으로 전송할 수 있다.
만약에, IP 블록(200)이 클럭이 불필요한 경우, 제1 클럭 요청 신호(REQ1)를 비활성화한다. 즉, IP 블록(200)은 제1 클럭 요청 신호(REQ1)를 로우 상태(low state)로 만들 수 있다.
제1 클럭 요청 신호(REQ1)가 로우 상태(low state)이면, 클럭 관리 유닛(100)은 제1 클럭 응답 신호(ACK1)를 로우 상태(low state)로 만든다. 그리고, 클럭 관리 유닛(100)은 동시에 제1 동작 클럭 신호(OCLK1)을 비활성화할 수 있다.
IP 블록(200)은 제1 클럭 응답 신호(ACK1)가 활성화 상태인 동안, 정상적으로 동작할 수 있다.
나아가, 클럭 제어 회로(122a, 122b, 122c, 122d, 122e, 122f, 122g) 각각 역시 풀 핸드셰이크 방식(full handshake method)에 따라 통신할 수 있다. 예를 들면, 클럭 제어 회로(122a, 122b) 각각은 예를 들어, PLL 컨트롤러인 클럭 컴포넌트(120a)와 예를 들어 클럭 먹스 유닛인 클럭 컴포넌트(120b) 사이의 풀 핸드셰이크 방식을 지원할 수 있다.
클럭 제어 회로(122b, 122c) 각각은 예를 들어 클럭 먹스 유닛인 클럭 컴포넌트(120b)와 예를 들어, 제1 클럭 분주 유닛인 클럭 컴포넌트(120c) 사이의 풀 핸드셰이크 방식을 지원할 수 있다.
클럭 제어 회로(122c, 122d) 각각은 예를 들어, 제1 클럭 분주 유닛인 클럭 컴포넌트(120c)와 예를 들어, 단기 정지 회로인 클럭 컴포넌트(120d) 사이의 풀 핸드셰이크 방식을 지원할 수 있다.
클럭 제어 회로(122d, 122e) 각각은 예를 들어, 단기 정지 회로인 클럭 컴포넌트(120d)와 예를 들어 제2 클럭 분주 유닛인 클럭 컴포넌트(120e) 사이의 풀 핸드셰이크 방식을 지원할 수 있다.
클럭 제어 회로(122e, 122f) 각각은 예를 들어 제2 클럭 분주 유닛인 클럭 컴포넌트(120e)와 예를 들어 제1 클럭 게이팅 유닛인 클럭 컴포넌트(120f) 사이의 풀 핸드셰이크 방식을 지원할 수 있다.
마찬가지로, 클럭 제어 회로(122f)와 채널 관리 회로(130) 각각은 예를 들어 제1 클럭 게이팅 유닛인 클럭 컴포넌트(120f)와 채널 관리 회로(130) 사이의 풀 핸드셰이크 방식을 지원할 수 있다.
몇몇의 실시예에서, 클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g)과 채널 관리 회로(130, 132) 각각은 조합 회로(combinational circuit)로 구현될 수 있다. 따라서, 활성화된 클럭 요청 신호는 채널 관리 회로(130, 132)로부터 예를 들어 PLL 컨트롤러인 클럭 컴포넌트(120a)까지 한 번에 전송될 수 있다.
다시 도 2를 참조하면, DVFS 블록(400)은 CPM(410)을 이용하여 IP 블록(200, 210)에 대해 동적 전압 주파수 스케일링 동작을 수행할 수 있다.
도 10은 DVFS 블록의 동작을 도시한 개념도이다. 도 11은 DVFS 블록의 동작을 도시한 타이밍도이다.
도 10을 참조하면, DVFS 블록은 하드웨어로 구현된 하드웨어 블록(400a)과 소프트웨어로 구현된 소프트웨어 블록(400b)을 포함할 수 있다.
CPM(410) 및 PLL(500)은 이너 루프(IL)를 구성할 수 있다.
이너 루프(IL)에서, 매 이너 루프(IL) 주기마다, CPM(410)은 회로의 동작 속도를 모니터링할 수 있다. CPM(410)의 모니터링 결과는 매 이너 루프(IL) 주기마다 PLL(500)에 피드백되어 클럭의 주파수가 변경될 수 있다.
이하, 매 이너 루프 주기마다, CPM(410)이 PLL(500)을 이용하여 클럭의 주파수를 변경하는 구성에 대해 설명한다.
도 2, 도 10 및 도 11을 참조하면, CPM(410)은 매 이너 루프 주기(도 11의 Inner Loop #1, #2, #3, #4 등)마다 IP 블록(200)에 제공되는 클럭 신호(CLK1)을 모니터링하여 회로의 동작 속도와 관련된 코드(CODE1)를 생성할 수 있다.
이러한 코드(CODE1)는 PLL(500)을 제어하는 클럭 컴포넌트(120a)에 제공되고, 코드(CODE1)에 따라 PLL(500)의 PLL 출력 클럭 신호(PLLCK)의 주파수 변경이 필요한 경우, 클럭 컴포넌트(120a)는 이에 관한 제어 신호(CTL)를 생성하여 PLL(500)에 인가함으로써 PLL(500)의 PLL 출력 클럭 신호(PLLCK)의 주파수가 변경될 수 있다. 이처럼 PLL(500)의 PLL 출력 클럭 신호(PLLCK)의 주파수가 변경되면, 클럭 컴포넌트(120a)의 출력 클럭 신호(CLK1)의 주파수와 클럭 컴포넌트(120b, 120c, 120d, 120e)의 출력 클럭 신호(CLK)의 주파수 모두 변경되어, 최종적으로 IP 블록(200)에 제공되는 동작 클럭 신호(OCLK1)의 주파수도 변경될 수 있다.
CPM(410), PLL(500), 주파수 모니터(450), 타겟 주파수 결정 모듈(460), 전압 결정 모듈(470), 전압 레귤레이터(310) 등 아우터 루프(OL)를 구성할 수 있다.
도 10 및 도 11을 참조하면, 아우터 루프(OL) 동작은 이너 루프 주기보다 긴 주기(도 11의 t1, t2, t3)로 수행될 수 있다. 즉, 한 번의 아우터 루프(OL) 주기 내에서 복수 회의 이너 루프 동작이 수행될 수 있다.
t1 시점까지 평균 주파수 AF를 타겟으로 이너 루프 동작이 복수회 수행되다가 t1 시점에서 전압 결정 모듈(470)이 주파수 모니터(450)와 타겟 주파수 결정 모듈(460)의 출력을 기초로 다음 주기의 공급 전압을 결정하면, 전압 레귤레이터(310)가 전압을 변경하여 공급 전압이 변경될 수 있다. 이에 따라, t1 시점이후에는 t1시점 이전보다 AV 감소한 전압이 제공될 수 있다.
이후, t2 시점까지 평균 주파수 BF를 타겟으로 이너 루프 동작이 복수회 수행되다가 t2 시점에서 전압 결정 모듈(470)이 주파수 모니터(450)와 타겟 주파수 결정 모듈(460)의 출력을 기초로 다음 주기의 공급 전압을 결정하면, 전압 레귤레이터(310)가 전압을 변경하여 공급 전압이 변경될 수 있다. 이에 따라, t2 시점이후에는 t2시점 이전보다 다시 한번 AV 감소한 전압이 제공될 수 있다.
이후, t3 시점까지 이너 루프 동작이 복수회 수행되는 도중 전압 드룹(voltage droop)이 발생하면, 이너 루프는 이를 보상하기 위해 클럭 주파수를 변경한다. 이후 t3 시점에서 전압 결정 모듈(470)이 주파수 모니터(450)와 타겟 주파수 결정 모듈(460)의 출력을 기초로 다음 주기의 공급 전압을 결정하면, 전압 레귤레이터(310)가 전압을 변경하여 공급 전압이 변경될 수 있다. 이에 따라, t3 시점이후에는 전압 드룹을 보상하기 위해 t3시점 이전보다 BV 증가한 전압이 제공될 수 있다.
이러한 아우터 루프(OL) 동작은 주기(T) 마다 새롭게 설정될 수 있다. 즉, 주기(T)마다 새로운 DVFS 레벨이 셋팅될 수 있다.
몇몇 실시예에서, 아우터 루프(OL) 동작 주기는 이너 루프(IL) 동작 주기보다 길고, DVFS 레벨이 새로 셋팅되는 주기는 아우터 루프(OL) 동작 주기보다 길 수 있다.
이상에서는 CPM(410)과 IP 블록(200)을 예로 들어 DVFS 블록(400)의 동작에 대해 설명하였으나, CPM(410)과 IP 블록(210)도 동일하게 동작할 수 있다.
도 2를 참조하면, CPM 클럭 관리자(140a)는 CPM(410)에 대해 클럭 게이팅을 수행할 수 있다.
몇몇 실시예에서, CPM 클럭 관리자(140a)는 앞서 설명한 클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g)와 유사한 형태로 구현될 수 있다. 즉, CPM 클럭 관리자(140a)는 클럭 제어 회로와 클럭 소오스를 포함할 수 있다. CPM 클럭 관리자(140a)는 클럭 컴포넌트(120a, 120b, 120c, 120d, 120e, 120f, 120g)와 도시된 것과 같이 클럭 체인을 형성할 수 있다.
CPM 클럭 관리자(140a)는 클럭 컴포넌트(120a)로부터 출력된 클럭 신호(CLK1)를 CPM(410)에 제공할 수 있다. 이 때, CPM 클럭 관리자(140a)의 클럭 소오스는 클럭 컴포넌트(120a)로부터 출력된 클럭 신호(CLK1)에 별도의 처리를 하지 않고, 클럭 컴포넌트(120a)로부터 출력된 클럭 신호(CLK1)를 CPM(410)에 제공할 수 있다.
CPM 클럭 관리자(140a)는 클럭 관리 유닛(100) 또는 클럭 관리 유닛 컨트롤러(110)의 제어 하에, CPM(410)에 클럭 신호(CLK1)의 제공을 중지하겠다는 요청 신호(REQ)를 전송할 수 있다.
요청 신호(REQ)를 수신한 CPM(410)은 처리 중인 작업을 완료한 후 클럭 신호가 중지되어도 좋다는 응답 신호(ACK)를 CPM 클럭 관리자(140a)에 전송한다. CPM 클럭 관리자(140a)는 CPM(410)으로부터 응답 신호(ACK)를 수신한 후, 자신의 부모에 해당하는 클럭 컴포넌트(본 예에서는 클럭 컴포넌트(120a))에 클럭 신호의 제공을 중지할 것을 요청한다.
도 12 및 도 13은 CPM 클럭 관리자와 CPM의 동작을 설명하기 위한 도면들이다.
먼저, 도 2 및 도 12를 참조하면, 자식인 클럭 컴포넌트(120b)가 부모인 CPM 클럭 관리자(140a)에 클럭 신호 중단을 요청하는 클럭 요청(REQ)을 전송한다 (①). 이는 예를 들어, IP 블록(200)이 슬립 모드로 진입하기 위해 클럭 신호 중단을 요청하였기 때문일 수 있다. 이에 따라, CPM 클럭 관리자(140a)는 클럭 컴포넌트(120b)에 의해 IP 블록(200)으로부터 클럭 신호 중단 요청이 있었음을 알 수 있다.
이처럼 IP 블록(200)이 슬립 모드로 진입할 경우, IP 블록(200)에 대한 모니터링이 필요하지 않다. 따라서, CPM 클럭 관리자(140a)는 CPM(410)에 클럭 신호의 제공을 중지하겠다는 요청 신호(REQ)를 전송한다(②).
도 13을 참조하면, 몇몇 실시예에서, CPM 클럭 관리자(140a)는 예를 들어, 제1 논리 값(L)을 갖는 클럭 중지 요청 신호(CPM_DOWN_REQn)를 CPM(410)에 제공할 수 있다.
도 12 및 도 13을 참조하면, 제1 논리 값(L)을 갖는 클럭 중지 요청 신호(CPM_DOWN_REQn)를 수신한 CPM(410)은 처리 중인 작업을 완료하는 클린 업(clean up) 동작을 수행한다(③).
구체적으로, CPM(410)은 내부에 배치된 패턴 생성기의 동작을 정지시키고, 이미 생성한 코드 등을 외부로 플러싱(flushing)할 수 있다.
몇몇 실시예에서, CPM 클럭 관리자(140a)는 CPM(410)의 클린 업 동작이 모두 완료될 때까지 클럭 신호(CLK1)를 CPM(410)에 제공할 수 있다. 또한, 몇몇 실시예에서, CPM 클럭 관리자(140a)는 CPM(410)이 활성(active) 상태를 유지하는 동안 클럭 신호(CLK1)를 CPM(410)에 제공할 수 있다. 또한, 다른 몇몇 실시예에서, CPM 클럭 관리자(140a)는 예를 들어, 제1 논리 값(L)을 갖는 클럭 중지 요청 신호(CPM_DOWN_REQn)를 CPM(410)에 제공한 후 일정 시점까지 클럭 신호(CLK1)를 CPM(410)에 제공할 수 있다.
본 실시예에서, CPM(410)에 클럭 신호(CLK1)가 제공되지 않는다고 하여 CPM(410)이 디스에이블되는 것은 아니다. 도 13에 도시된 것과 같이, CPM(410)은 인에이블 신호(CPM_ENABLE)에 의해 지속적으로 인에이블 상태를 유지하나, CPM(410)의 모니터링 동작에 필요한 클럭 신호가 공급되지 않는다.
클린 업 동작이 모두 완료되면, CPM(410)은 클린 업 동작이 완료되었음을 알리는 응답 신호(ACK)를 CPM 클럭 관리자(140a)에 전송한다(④).
도 13을 참조하면, 몇몇 실시예에서, CPM(410)은 예를 들어, 제1 논리 값(L)을 갖는 클럭 중지 응답 신호(CPM_DOWN_ACKn)를 CPM 클럭 관리자(140a)에 제공할 수 있다.
CPM(410)으로부터 응답 신호(ACK)를 수신한 CPM 클럭 관리자(140a)는 부모인 클럭 컴포넌트(120a)에 클럭 신호 중단을 요청하는 클럭 요청(REQ)을 전송한다(⑤).
본 실시예에 따른 반도체 장치(1)는 이러한 동작에 따라 IP 블록(200)에 클럭 신호가 제공되지 않아 CPM(410)이 동작할 필요가 없는 구간(즉, CPM(410)이 모니터링을 수행할 필요가 없는 구간) 동안, CPM(410)에 클럭 신호 제공을 중단함으로써 반도체 장치의 동작 중의 전력 소모를 효과적으로 감소시킬 수 있다.
이상에서는 하나의 CPM(410)과 하나의 CPM 클럭 관리자(140a)의 동작에 대해서만 설명하였으나, 실시예가 이에 제한되는 것은 아니다. 몇몇 실시예에서, DVFS 블록(400)은 제1 IP 블록(200)에 제공되는 클럭을 모니터링하여 제1 IP 블록(200)에 제공되는 제1 동작 클럭 신호(OCLK1)의 주파수를 조절하는 제1 CPM과 제2 IP 블록(210)에 제공되는 클럭을 모니터링하여 제2 IP 블록(210)에 제공되는 제2 동작 클럭 신호(OCLK2)의 주파수를 조절하는 제2 CPM을 포함할 수 있으며, 클럭 관리 유닛(100)도 제1 CPM에 대해 클럭 게이팅을 수행하는 제1 CPM 클럭 관리자와 제2 CPM에 대해 클럭 게이팅을 수행하는 제2 CPM 클럭 관리자를 포함하도록 실시예가 변형되어 실시될 수도 있다.
도 14는 몇몇 실시예에 따른 CPM의 구조를 도시한 도면이다. 도 15는 도 14의 캘리브레이션 지연 회로에 대한 예시적인 블록도이다. 도 16은 도 14의 NAND 지연 회로에 대한 예시적인 블록도이다. 도 17은 도 14의 와이어 지연 회로에 대한 예시적인 블록도이다. 도 18은 도 14의 엣지 디텍터에 대한 예시적인 블록도이다. 도 19는 도 14의 포스트 프로세서에 대한 예시적인 블록도이다. 도 20은 CPM의 동작 방법을 설명하기 위한 타이밍도이다.
도 14를 참조하면, CPM(410)은 패턴 생성기(PG), 제1 및 제2 지연 그룹(delay group)(DG0, DG1), 엣지 디텍터(edge detector)(ED) 및 포스트 프로세서(PP)를 포함할 수 있다.
CPM(410)은 클럭 관리 유닛(도 2의 100)으로부터 클럭 신호(도 2의 CLK1)을 제공받고, 이를 기초로 반도체 회로의 동작 속도를 모니터링할 수 있다.
도 14 및 도 20을 참조하면, 패턴 생성기(PG)는 제공된 클럭 신호(CLK)를 기초로 패턴 신호(A)를 생성할 수 있다. 패턴 생성기(PG)로부터 생성된 패턴 신호(A)는 엣지 디텍터(ED)에 제공될 수 있다.
제1 지연 그룹(DG0)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제1 지연시키고, 제2 지연 그룹(DG1)은 제1 지연 그룹(DG0)의 출력을 제2 지연시켜 지연된 패턴 신호(B)를 엣지 디텍터(ED)에 제공할 수 있다.
몇몇 실시예에서, 제1 지연 그룹(DG0)과 제2 지연 그룹(DG1)은 실질적으로 동일한 구성요소를 포함할 수 있다. 따라서, 이하에서 설명할 제1 지연 그룹(DG0)에 대한 설명은 제2 지연 그룹(DG1)에 대해서도 동일하게 적용될 수 있다.
제1 지연 그룹(DG0)은 제1 지연 체인(delay chain)(SLDC0), 제2 지연 체인(LDC0), 제3 지연 체인(RDC0) 및 제4 지연 체인(WDC0)을 포함할 수 있다.
몇몇 실시예에서, 제1 지연 체인(SLDC0)과 제2 지연 체인(LDC0)과 제3 지연 체인(RDC0)을 구성하는 트랜지스터의 문턱 전압(threshold voltage)은 서로 다를 수 있다.
예를 들어, 제1 지연 체인(SDLC0)을 구성하는 트랜지스터의 문턱 전압은 제2 지연 체인(LDC0)을 구성하는 트랜지스터의 문턱 전압보다 낮을 수 있다. 또한, 제2 지연 체인(LDC0)을 구성하는 트랜지스터의 문턱 전압은 제3 지연 체인(RDC0)을 구성하는 트랜지스터의 문턱 전압보다 낮을 수 있다.
몇몇 실시예에서, 이렇게 서로 다른 문턱 전압을 갖는 트랜지스터는 트랜지스터의 소오스와 드레인의 불순물 농도를 다르게 적용함을써 형성될 수 있다. 즉, 예를 들어, 제1 지연 체인(SLDC0)을 구성하는 트랜지스터의 소오스와 드레인의 불순물 농도와 제2 지연 체인(LDC0)을 구성하는 트랜지스터의 소오스와 드레인의 불순물 농도를 서로 다르게 적용하고, 제2 지연 체인(LDC0)을 구성하는 트랜지스터의 소오스와 드레인의 불순물 농도와 제3 지연 체인(RDC0)을 구성하는 트랜지스터의 소오스와 드레인의 불순물 농도를 서로 다르게 적용하여, 트랜지스터의 문턱 전압을 서로 다르게 구현할 수 있다. 하지만, 실시예들이 이에 제한되는 것은 아니며, 트랜지스터의 문턱 전압을 서로 다르게 구현하는 방법은 이에 제한되지 않는다.
도 14 및 도 15를 참조하면, 제1 지연 체인(SLDC0), 제2 지연 체인(LDC0) 및 제3 지연 체인(RDC0)은 각각 캘리브레이션 지연 회로(CD)를 포함할 수 있다.
캘리브레이션 지연 회로(CD)는 복수의 인버터(INV)를 포함하는 제1 지연 셀(DECELL1)과 복수의 인버터(INV)를 포함하는 제2 지연 셀(DECELL2)을 포함할 수 있다. 제1 지연 셀(DECELL1)의 출력은 제1 선택 먹스(SEMUX1)에 의해 선택되어 제2 지연 셀(DECELL2)로 전달될 수 있다. 제2 지연 셀(DECELL2)의 출력은 제2 선택 먹스(SEMUX2)에 의해 선택되어 외부로 출력될 수 있다.
캘리브레이션 지연 회로(CD)는 캘리브레이션 지연 양을 조절하여 CPM(410)이 생성하는 코드(도 2의 CODE1) 값을 캘리브레이션하는 역할을 수행할 수 있다.
도 14를 참조하면, 캘리브레이션 지연 회로(CD)의 출력은 NAND 지연 회로(NAND2), NOR 지연 회로(NOR2), 인버터 지연 회로(INV) 및 와이어 지연 회로(wire)에 제공될 수 있다.
도 14 및 도 16을 참조하면, NAND 지연 회로(NAND2)는 복수의 NAND 게이트(NAND), NOR 게이트(NOR) 및 인버터(INV)로 구성된 지연 셀을 포함할 수 있다. NOR 게이트(NOR)는 NAND 지연 회로(NAND2)가 디스에이블된 경우 회로 내부에서 발생할 수 있는 토글링(toggling)을 방지하기 위해 삽입될 수 있다. NAND 지연 회로(NAND2)의 더미 NAND 게이트(DNAND)는 로드 캐패시턴스(load capacitance)를 증가시키기 위해 삽입될 수 있다.
도 14 및 도 17을 참조하면, 와이어 지연 회로(wire)는 NOR 게이트(NOR), OR 게이트(OR), 인버터(INV), 멀티플렉서(MUX) 및 복수의 와이어 지연 라인들을 포함할 수 있다.
도 14를 참조하면, 몇몇 실시예에서, CPM(410)은 소정의 제어 신호를 통해 제1 지연 그룹(DG0)에 포함된 제1 지연 체인(SLDC0), 제2 지연 체인(LDC0), 제3 지연 체인(RDC0) 및 제4 지연 체인(WDC0) 중 어느 하나를 활성화시킬 수 있다.
도 14 및 도 20을 참조하면, 예를 들어, IP 블록(도 2의 200)이 제1 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제1 지연 체인(SLDC0)을 통해 제1 지연시켜 NOR 게이트(NOR)에 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제2 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제2 지연 체인(LDC0)을 통해 제1 지연시켜 NOR 게이트(NOR)에 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제3 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제3 지연 체인(RDC0)을 통해 제1 지연시켜 NOR 게이트(NOR)에 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제4 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제4 지연 체인(WDC0)을 통해 제1 지연시켜 NOR 게이트(NOR)에 제공할 수 있다.
몇몇 실시예에서, CPM(410)은 제1 지연 그룹(DG0)과 제2 지연 그룹(DG1)에서 서로 동일한 지연 체인을 활성화시킬 수 있다. 예를 들어, IP 블록(도 2의 200)이 제1 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제1 지연 체인들(SLDC0, SLDC1)을 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제2 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제2 지연 체인들(LDC0, LDC1)을 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제3 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제3 지연 체인들(RDC0, RDC1)을 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제4 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제4 지연 체인들(WDC0, WDC1)을 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다.
몇몇 실시예에서, CPM(410)은 제1 지연 그룹(DG0)과 제2 지연 그룹(DG1)에서 서로 다른 지연 체인을 활성화시킬 수 있다. 예를 들어, IP 블록(도 2의 200)이 제1 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제1 지연 그룹(DG0)의 제1 지연 체인(SLDC0)과, 제2 지연 그룹(DG2)의 제2 지연 체인(LDC1), 제3 지연 체인(RDC1) 및 제4 지연 체인(WDC1) 중 어느 하나를 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제2 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제1 지연 그룹(DG0)의 제2 지연 체인(LDC0)과, 제2 지연 그룹(DG2)의 제1 지연 체인(SLDC1), 제3 지연 체인(RDC1) 및 제4 지연 체인(WDC1) 중 어느 하나를 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제3 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제1 지연 그룹(DG0)의 제3 지연 체인(RDC0)과, 제2 지연 그룹(DG2)의 제1 지연 체인(SLDC1), 제2 지연 체인(LDC1) 및 제4 지연 체인(WDC1) 중 어느 하나를 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다. 또한, IP 블록(도 2의 200)이 제4 상태로 동작할 때, CPM(410)은 패턴 생성기(PG)로부터 생성된 패턴 신호(A)를 제1 지연 그룹(DG0)의 제4 지연 체인(WDC0)과, 제2 지연 그룹(DG2)의 제1 지연 체인(SLDC1), 제2 지연 체인(LDC1) 및 제3 지연 체인(RDC1) 중 어느 하나를 통해 제1 및 제2 지연시켜서 엣지 디텍터(ED)에 지연된 패턴 신호(B) 형태로 제공할 수 있다.
도 14, 도 18 및 도 20을 참조하면, 엣지 디텍터(ED)는 복수의 인버터(INV)와, 복수의 플립플롭(FF)과 복수의 XNOR 게이트(XNOR)와 복수의 XOR 게이트(XOR)를 포함할 수 있다.
제1 지연 그룹(DG0)과 제2 지연 그룹(DG1)을 통해 생성된 지연된 패턴 신호(B)는 인버터(INV)들을 통과함에 따라 점차 지연된다. n(n은 자연수)개의 플립플롭(FF)은 순차적으로 지연된 신호를 래치하고, 래치된 신호를 XNOR 게이트(XNOR) 또는 XOR 게이트(XOR)에 제공하여 패턴 생성기(PG)로부터 생성된 패턴 신호(A)와 비교하여 로우 코드(raw code)를 생성한다.
예를 들어, 도 20을 참조하면, 클럭 신호(CLK)의 0번 엣지와 1번 엣지로부터 패턴 신호(A)의 0번 엣지와 1번 엣지가 생성된다. 그리고, 클럭 신호(CLK)의 0번 엣지로부터 앞서 설명한 지연 체인을 이용하여 지연된 패턴 신호(B)의 0번 엣지가 생성된다.
엣지 디텍터(ED)의 각 플립플롭(FF)은 지연된 패턴 신호(B)의 0번 엣지를 순차적으로 지연시켜 래치한다. 도시된 예에서는 (2i-1) 번째 플립플롭(FF)이 래치한 지연된 패턴 신호(B)의 0번 엣지는 패턴 신호(A)의 1번 엣지보다 앞서 있으나, (2i) 번째 플립플롭(FF)과 (2i+1) 번째 플립플롭(FF)이 래치한 지연된 패턴 신호(B)의 0번 엣지는 패턴 신호(A)의 1번 엣지보다 앞서 있지 않다. 이에 따라, 로우 코드의 (2i-1)번째 비트와, (2i)번째 비트와, (2i+1) 번째 비트의 값은 각각 1, 0, 0이 된다.
다음 클럭 신호(CLK)의 2번 엣지와 3번 엣지로부터 패턴 신호(A)의 2번 엣지와 3번 엣지가 생성된다. 그리고, 클럭 신호(CLK)의 2번 엣지로부터 앞서 설명한 구성을 통해 지연된 패턴 신호(B)의 2번 엣지가 생성된다.
엣지 디텍터(ED)의 각 플립플롭(FF)은 지연된 패턴 신호(B)의 2번 엣지를 순차적으로 지연시켜 래치한다. 도시된 예에서는 (2i-1) 번째 플립플롭(FF)이 래치한 지연된 패턴 신호(B)의 2번 엣지와 (2i) 번째 플립플롭(FF)이 래치한 지연된 패턴 신호(B)의 2번 엣지는 패턴 신호(A)의 3번 엣지보다 앞서 있으나, (2i+1) 번째 플립플롭(FF)이 래치한 지연된 패턴 신호(B)의 2번 엣지는 패턴 신호(A)의 3번 엣지보다 앞서 있지 않다. 이에 따라, 로우 코드의 (2i-1)번째 비트와, (2i)번째 비트와, (2i+1) 번째 비트의 값은 각각 1, 1, 0이 된다.
본 실시예에 따른 엣지 디텍터(ED)는 이와 같은 엣지 비교의 정확성을 높이기 위해, 복수의 XNOR 게이트(XNOR)와, 복수의 XOR 게이트(XOR)를 교대로 사용한다. 즉, (2i-1) 번째 플립플롭(FF)이 래치한 지연된 패턴 신호(B)는 XNOR 게이트(XNOR)에 제공되어 패턴 신호(A)와 비교되고, (2i) 번째 플립플롭(FF)이 래치한 지연된 패턴 신호(B)는 XOR 게이트(XOR)에 제공되어 패턴 신호(A)와 비교된다.
도 14 및 도 19를 참조하면, 포스트 프로세서(PP)는 엣지 디텍터(ED)로부터 로우 코드를 제공받고, 로우 코드에 대해 필요한 프로세싱을 수행할 수 있다.
앞서 설명하 동작에 의할 경우, 엣지 디텍터(ED)가 생성한 로우 코드는 비트 값 0이 출현한 후에는 이론적으로 비트 값 1이 출현하지 않아야 한다. 하지만 실제 동작에서는 여러가지 이유로 인해, 110100과 같은 불완전한 로우 코드가 생성될 수 있다. 포스트 프로세서(PP)는 이러한 불안정한 로우 코드에 대해 프로세싱을 수행한 후 이를 바이너리 코드로 변환하여 출력한다. 이렇게 출력된 코드는 예를 들어, 도 2에 도시된 것과 같이 클럭 컴포넌트(120a) 등에 제공되어 PLL(500)을 제어하는데 이용될 수 있다.
본 실시예에 따른 CPM(410)은 이와 같은 동작을 통해 회로의 동작 속도를 모니터링할 수 있다.
도 21은 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
이하에서는 앞서 설명한 실시예와 중복된 설명은 생략하고 차이점을 위주로 설명한다.
도 21을 참조하면, 본 실시예에서는 CPM 클럭 관리자(140a)가 클럭 컴포넌트(120b)와 클럭 컴포넌트(120c) 사이에 구현된다.
구체적으로, CPM 클럭 관리자(140a)는 클럭 컴포넌트(120b)로부터 출력된 클럭 신호(CLK)를 CPM(410)에 제공할 수 있다. CPM 클럭 관리자(140a)는 클럭 관리 유닛(100) 또는 클럭 관리 유닛 컨트롤러(110)의 제어 하에, CPM(410)에 클럭 신호(CLK)의 제공을 중지하겠다는 요청 신호(REQ)를 전송할 수 있다.
요청 신호(REQ)를 수신한 CPM(410)은 처리 중인 작업을 완료한 후 클럭 신호가 중지되어도 좋다는 응답 신호(ACK)를 CPM 클럭 관리자(140a)에 전송한다. CPM 클럭 관리자(140a)는 CPM(410)으로부터 응답 신호(ACK)를 수신한 후, 자신의 부모에 해당하는 클럭 컴포넌트(예를 들어, 클럭 컴포넌트(120b))에 클럭 신호의 제공을 중지할 것을 요청할 수 있다.
도 22는 또 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
이하에서도 앞서 설명한 실시예들과 중복된 설명은 생략하고 차이점을 위주로 설명한다.
도 22를 참조하면, 본 실시예에서는 CPM 클럭 관리자(140a)가 클럭 컴포넌트(120c)와 클럭 컴포넌트(120d) 사이에 구현된다.
구체적으로, CPM 클럭 관리자(140a)는 클럭 컴포넌트(120c)로부터 출력된 클럭 신호(CLK)를 CPM(410)에 제공할 수 있다. CPM 클럭 관리자(140a)는 클럭 관리 유닛(100) 또는 클럭 관리 유닛 컨트롤러(110)의 제어 하에, CPM(410)에 클럭 신호(CLK)의 제공을 중지하겠다는 요청 신호(REQ)를 전송할 수 있다.
요청 신호(REQ)를 수신한 CPM(410)은 처리 중인 작업을 완료한 후 클럭 신호가 중지되어도 좋다는 응답 신호(ACK)를 CPM 클럭 관리자(140a)에 전송한다. CPM 클럭 관리자(140a)는 CPM(410)으로부터 응답 신호(ACK)를 수신한 후, 자신의 부모에 해당하는 클럭 컴포넌트(예를 들어, 클럭 컴포넌트(120c))에 클럭 신호의 제공을 중지할 것을 요청할 수 있다.
도 23은 또 다른 몇몇 실시예에 따른 반도체 장치에 포함된 클럭 관리 유닛을 도시한 블록도이다.
이하에서도 앞서 설명한 실시예들과 중복된 설명은 생략하고 차이점을 위주로 설명한다.
도 23을 참조하면, 본 실시예에서는 CPM 클럭 관리자(140a)가 클럭 컴포넌트(120d)와 클럭 컴포넌트(120e) 사이에 구현된다.
구체적으로, CPM 클럭 관리자(140a)는 클럭 컴포넌트(120d)로부터 출력된 클럭 신호(CLK)를 CPM(410)에 제공할 수 있다. CPM 클럭 관리자(140a)는 클럭 관리 유닛(100) 또는 클럭 관리 유닛 컨트롤러(110)의 제어 하에, CPM(410)에 클럭 신호(CLK)의 제공을 중지하겠다는 요청 신호(REQ)를 전송할 수 있다.
요청 신호(REQ)를 수신한 CPM(410)은 처리 중인 작업을 완료한 후 클럭 신호가 중지되어도 좋다는 응답 신호(ACK)를 CPM 클럭 관리자(140a)에 전송한다. CPM 클럭 관리자(140a)는 CPM(410)으로부터 응답 신호(ACK)를 수신한 후, 자신의 부모에 해당하는 클럭 컴포넌트(예를 들어, 클럭 컴포넌트(120d))에 클럭 신호의 제공을 중지할 것을 요청할 수 있다.
본 실시예의 경우, CPM 클럭 관리자(140a)가 IP 블록(200, 210)에 인접하게 배치되므로, IP 블록(200, 210)에 제공되는 동작 클럭 신호(OCLK1, OCLK2)와 가장 유사한 클럭 신호를 CPM(410)이 모니터링 할 수 있어 IP 블록(200, 210)의 실제 동작 상황에 부합하는 동적 전압 주파수 스케일링 동작이 가능할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 클럭 관리 유닛
200, 210: IP 블록
300: 전력 관리 유닛
400: DVFS 블록
500: 클럭 생성기
200, 210: IP 블록
300: 전력 관리 유닛
400: DVFS 블록
500: 클럭 생성기
Claims (20)
- IP 블록;
상기 IP 블록에 클럭 신호가 필요한지 여부를 나타내는 클럭 요청 신호를 상기 IP 블록으로부터 제공받고, 상기 클럭 요청 신호를 기초로 상기 IP 블록에 대해 클럭 게이팅을 수행하는 클럭 관리 유닛;
상기 IP 블록에 제공되는 클럭 신호을 모니터링 하여 상기 IP 블록에 제공되는 클럭 신호의 주파수와 상기 IP 블록에 제공되는 전압 중 적어도 하나를 조절하는 CPM(Critical Path Monitor); 및
상기 클럭 관리 유닛에 포함되고, 상기 CPM에 대해 클럭 게이팅을 수행하는 CPM 클럭 관리자를 포함하는 반도체 장치. - 제1항에 있어서,
상기 CPM 클럭 관리자는 상기 CPM에 클럭 신호의 제공을 중지하겠다는 요청 신호를 전송하고,
상기 CPM은 상기 요청 신호에 대한 응답으로 클린 업 동작을 수행한 후, 상기 클린 업 동작이 완료되면 상기 CPM 클럭 관리자에 상기 클린 업 동작이 완료되었음을 나타내는 응답 신호를 전송하는 반도체 장치. - 제2항에 있어서,
상기 요청 신호는 논리 로우 레벨(logical low level)을 갖는 클럭 중지 요청 신호를 포함하고,
상기 응답 신호는 논리 로우 레벨을 갖는 클럭 중지 응답 신호를 포함하는 반도체 장치. - 제1항에 있어서,
상기 클럭 관리 유닛에 PLL 클럭 신호를 제공하는 PLL(Phase Lock Loop)을 더 포함하고,
상기 클럭 관리 유닛은, 상기 PLL에 제어신호를 제공하여 상기 PLL 클럭 신호를 제어하고, 상기 제어된 PLL 클럭 신호를 제공받아 제1 클럭 신호를 출력하는 제1 클럭 컴포넌트를 포함하고,
상기 CPM 클럭 관리자는 상기 제1 클럭 신호를 상기 CPM에 제공하고,
상기 CPM은 상기 제1 클럭 신호를 기초로 코드를 생성하고 생성된 코드를 상기 제1 클럭 컴포넌트에 제공하여 상기 PLL 클럭 신호의 주파수를 조절하는 반도체 장치. - 제4항에 있어서,
상기 CPM은,
상기 제1 클럭 신호를 기초로 제1 패턴 신호를 생성하는 패턴 생성기와,
상기 제1 패턴 신호를 지연시켜 제2 패턴 신호를 생성하는 지연 회로와,
상기 제1 패턴 신호와 상기 제2 패턴 신호를 비교하여 상기 코드를 생성하는 엣지 디텍터를 포함하는 반도체 장치. - 제5항에 있어서,
상기 지연 회로는, 제1 내지 제3 지연 체인을 포함하고,
상기 CPM은 상기 제1 내지 제3 지연 체인 중 어느 하나의 지연 체인을 이용하여 상기 제2 패턴 신호를 생성하는 반도체 장치. - 제6항에 있어서,
상기 제1 지연 체인은 제1 트랜지스터를 이용하여 구현된 제1 소자를 포함하고,
상기 제2 지연 체인은 제2 트랜지스터를 이용하여 구현된 제2 소자를 포함하고,
상기 제3 지연 체인은 제3 트랜지스터를 이용하여 구현된 제3 소자를 포함하고,
상기 제1 내지 제3 트랜지스터의 문턱 전압은 서로 다른 반도체 장치. - 제5항에 있어서,
상기 지연 회로는,
제1 내지 제4 지연 체인을 포함하고 상기 제1 패턴 신호를 제1 지연시키는 제1 지연 그룹과,
제5 내지 제8 지연 체인을 포함하고 상기 제1 지연 그룹의 출력을 제2 지연시켜 상기 제2 패턴 신호를 생성하는 제2 지연 그룹을 포함하고,
상기 CPM은 상기 제1 내지 제4 지연 체인 중 어느 하나의 지연 체인과, 상기 제5 내지 제8 지연 체인 중 어느 하나의 지연 체인을 이용하여 상기 제2 패턴 신호를 생성하는 반도체 장치. - 제1항에 있어서,
상기 클럭 관리 유닛에 PLL 클럭 신호를 제공하는 PLL을 더 포함하고,
상기 클럭 관리 유닛은,
상기 PLL에 제어신호를 제공하여 상기 PLL 클럭 신호를 제어하고, 상기 제어된 PLL 클럭 신호를 제공받아 제1 클럭 신호를 출력하는 제1 클럭 컴포넌트와,
상기 제1 클럭 컴포넌트로부터 상기 제1 클럭 신호를 제공받고, 제2 클럭 신호를 출력하는 제2 클럭 컴포넌트와,
상기 제2 클럭 컴포넌트로부터 상기 제2 클럭 신호를 제공받고, 제3 클럭 신호를 상기 IP 블록에 출력하는 제3 클럭 컴포넌트를 포함하고,
상기 CPM 클럭 관리자는, 상기 제2 클럭 컴포넌트에 상기 제3 클럭 컴포넌트로부터 상기 제2 클럭 신호의 제공 중지를 요청하는 신호가 수신된 후, 이에 대한 응답으로 상기 CPM에 대해 상기 제1 클럭 신호에 대한 클럭 게이팅을 수행하는 반도체 장치. - 제1항에 있어서,
상기 클럭 관리 유닛에 PLL 클럭 신호를 제공하는 PLL을 더 포함하고,
상기 클럭 관리 유닛은,
상기 PLL에 제어신호를 제공하여 상기 PLL 클럭 신호를 제어하고, 상기 제어된 PLL 클럭 신호를 제공받아 제1 클럭 신호를 출력하는 제1 클럭 컴포넌트와,
상기 제1 클럭 컴포넌트로부터 상기 제1 클럭 신호를 제공받고, 제2 클럭 신호를 출력하는 제2 클럭 컴포넌트와,
상기 제2 클럭 컴포넌트로부터 상기 제2 클럭 신호를 제공받고, 제3 클럭 신호를 상기 IP 블록에 출력하는 제3 클럭 컴포넌트를 포함하고,
상기 CPM 클럭 관리자는, 상기 제3 클럭 컴포넌트에 상기 IP 블록으로부터 상기 제3 클럭 신호의 제공 중지를 요청하는 신호가 수신된 후, 이에 대한 응답으로 상기 CPM에 대해 상기 제2 클럭 신호에 대한 클럭 게이팅을 수행하는 반도체 장치. - 제1항에 있어서,
상기 CPM이 모니터링 하는 제1 클럭과 상기 IP 블록에 제공되는 제2 클럭은 서로 다른 클럭인 반도체 장치. - 제11항에 있어서,
상기 CPM은 상기 제1 클럭을 기초로 코드를 생성하여 상기 클럭 관리 유닛에 제공하고,
상기 클럭 관리 유닛은 상기 코드를 기초로 상기 제2 클럭의 주파수를 조절하는 반도체 장치. - 프로세서;
상기 프로세서에 제공되는 클럭 신호를 출력하는 클럭 생성기;
상기 프로세서에 제공되는 클럭 신호를 모니터링하여 상기 프로세서에 제공되는 클럭 신호의 주파수와 상기 프로세서에 제공되는 전압 중 적어도 하나를 조절하는 CPM; 및
상기 프로세서로부터 상기 클럭 신호의 제공 중지를 요청하는 신호를 수신한 후, 이에 대한 응답으로 상기 CPM에 대해 클럭 게이팅을 수행하는 CPM 클럭 관리자를 포함하는 반도체 장치. - 제13항에 있어서,
상기 프로세서는, 단위 시간당 처리 연산양이 다른 제1 프로세서와 제2 프로세서를 포함하고,
상기 CPM은,
상기 제1 프로세서에 제공되는 제1 클럭 신호를 모니터링하여 상기 제1 프로세서에 제공되는 제1 클럭 신호의 주파수를 조절하는 제1 CPM과,
상기 제2 프로세서에 제공되는 제2 클럭 신호를 모니터링하여 상기 제2 프로세서에 제공되는 제2 클럭 신호의 주파수를 조절하는 제2 CPM을 포함하고,
상기 CPM 관리자는,
상기 제1 프로세서로부터 상기 제1 클럭 신호의 제공 중지를 요청하는 신호를 수신한 후, 이에 대한 응답으로 상기 제1 CPM에 대해 클럭 게이팅을 수행하는 제1 CPM 클럭 관리자와,
상기 제2 프로세서로부터 상기 제2 클럭 신호의 제공 중지를 요청하는 신호를 수신한 후, 이에 대한 응답으로 상기 제2 CPM에 대해 클럭 게이팅을 수행하는 제2 CPM 클럭 관리자를 포함하는 반도체 장치. - 제13항에 있어서,
상기 클럭 생성기에 제어신호를 제공하여 상기 클럭 생성기로부터 출력되는 클럭 신호를 제어하고, 상기 제어된 클럭 신호를 제공받아 제1 클럭 신호를 출력하는 제1 클럭 컴포넌트; 및
상기 제1 클럭 신호를 제공받고 상기 프로세서에 제2 클럭 신호를 출력하는 제2 클럭 컴포넌트를 더 포함하고,
상기 CPM 클럭 관리자는, 상기 제2 클럭 컴포넌트가 상기 프로세서로부터 상기 제2 클럭 신호의 제공 중지를 요청하는 신호를 수신한 후, 이에 대한 응답으로 상기 CPM에 대해 상기 제1 클럭 신호에 대한 클럭 게이팅을 수행하는 반도체 장치. - 제15항에 있어서,
상기 CPM 클럭 관리자는 상기 제1 클럭 신호를 상기 CPM에 제공하고,
상기 CPM은 상기 제1 클럭 신호를 기초로 코드를 생성하고 생성된 코드를 상기 제1 클럭 컴포넌트에 제공하여 상기 클럭 생성기로부터 출력되는 클럭 신호의 주파수를 조절하는 반도체 장치. - 제13항에 있어서,
상기 CPM 클럭 관리자는 상기 CPM에 클럭 신호의 제공을 중지하겠다는 논리 로우 레벨을 갖는 클럭 중지 요청 신호를 전송하고,
상기 CPM은 상기 요청 신호에 대한 응답으로 클린 업 동작을 수행한 후, 상기 클린 업 동작이 완료되면 상기 CPM 클럭 관리자에 상기 클린 업 동작이 완료되었음을 나타내는 논리 로우 레벨을 갖는 클럭 중지 응답 신호를 전송하는 반도체 장치. - IP 블록;
상기 IP 블록으로부터, 상기 IP 블록에 클럭 신호가 필요한지 여부를 나타내는 제1 요청 신호를 제공받고, 이에 기초하여 상기 IP 블록에 제1 클럭 신호를 제공하는 제1 클럭 컴포넌트;
상기 제1 클럭 컴포넌트로부터, 상기 IP 블록에 클럭 신호가 필요한지 여부를 나타내는 제2 요청 신호를 제공받고, 이에 기초하여 상기 제1 클럭 컴포넌트에 제2 클럭 신호를 제공하는 제2 클럭 컴포넌트; 및
상기 IP블록에 제공되는 클럭 신호를 모니터링하여 상기 IP블록에 제공되는 클럭 신호의 주파수와 상기 IP 블록에 제공되는 전압 중 적어도 하나를 조절하는 CPM을 포함하되,
상기 제1 클럭 컴포넌트는 상기 IP 블록으로부터 상기 제1 클럭 신호의 제공 중지를 요청하는 신호를 수신한 후, 이에 대한 응답으로 상기 CPM에 상기 제2 클럭 신호의 제공을 중지하겠다는 제3 요청 신호를 전송하는 반도체 장치. - 제18항에 있어서,
상기 CPM은, 상기 제1 클럭 컴포넌트로부터 제공받은 상기 제3 요청 신호에 대한 응답으로, 클린 업 동작이 완료되었음을 나타내는 응답 신호를 상기 제1 클럭 컴포넌트에 전송하는 반도체 장치. - 제19항에 있어서,
상기 제1 클럭 컴포넌트는, 상기 CPM으로부터 제공받은 상기 응답 신호에 대한 응답으로, 상기 제2 클럭 컴포넌트에 상기 제2 클럭 신호의 출력을 중단할 것을 요청하는 제4 요청 신호를 전송하는 반도체 장치.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/372,122 US11592861B2 (en) | 2020-08-12 | 2021-07-09 | Semiconductor device |
DE102021118177.1A DE102021118177A1 (de) | 2020-08-12 | 2021-07-14 | Halbleitervorrichtung |
TW110129231A TW202221464A (zh) | 2020-08-12 | 2021-08-09 | 半導體裝置 |
CN202110923367.0A CN114077570A (zh) | 2020-08-12 | 2021-08-12 | 半导体器件 |
US18/099,077 US11860687B2 (en) | 2020-08-12 | 2023-01-19 | Semiconductor device |
US18/471,844 US12130657B2 (en) | 2020-08-12 | 2023-09-21 | Semiconductor device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200100969 | 2020-08-12 | ||
KR20200100969 | 2020-08-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220020763A true KR20220020763A (ko) | 2022-02-21 |
Family
ID=80475214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210072230A KR20220020763A (ko) | 2020-08-12 | 2021-06-03 | 반도체 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20220020763A (ko) |
-
2021
- 2021-06-03 KR KR1020210072230A patent/KR20220020763A/ko active Search and Examination
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9772648B2 (en) | Low power asynchronous counters in a synchronous system | |
US7183825B2 (en) | State retention within a data processing system | |
US7365596B2 (en) | State retention within a data processing system | |
US7487379B2 (en) | High performance integrated circuit with low skew clocking networks and improved low power operating mode having reduced recovery time | |
US10296065B2 (en) | Clock management using full handshaking | |
KR102467172B1 (ko) | 반도체 장치 | |
US11789515B2 (en) | Semiconductor device | |
US20090119552A1 (en) | Dynamic Frequency Scaling Sequence for Multi-Gigahertz Microprocessors | |
US11860687B2 (en) | Semiconductor device | |
US20060123261A1 (en) | Deep power saving by disabling clock distribution without separate clock distribution for power management logic | |
US8051313B2 (en) | Apparatus, system and method of power state control | |
KR20190084443A (ko) | 반도체 장치 및 반도체 시스템 | |
KR20220020763A (ko) | 반도체 장치 | |
US12130657B2 (en) | Semiconductor device | |
US20240347099A1 (en) | Chip select transmitters for multiple signal levels | |
US7656237B2 (en) | Method to gate off PLLS in a deep power saving state without separate clock distribution for power management logic | |
US20240319761A1 (en) | Semiconductor device performing clock gating and operating method thereof | |
TWI756225B (zh) | 系統晶片、半導體系統以及時鐘信號輸出電路 | |
KR102550422B1 (ko) | 반도체 장치 | |
WO2024220176A1 (en) | Chip select transmitters for multiple signal levels | |
JPH08249275A (ja) | Lsi間における高速データ転送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |