KR20170017382A - 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법 - Google Patents

클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법 Download PDF

Info

Publication number
KR20170017382A
KR20170017382A KR1020150111210A KR20150111210A KR20170017382A KR 20170017382 A KR20170017382 A KR 20170017382A KR 1020150111210 A KR1020150111210 A KR 1020150111210A KR 20150111210 A KR20150111210 A KR 20150111210A KR 20170017382 A KR20170017382 A KR 20170017382A
Authority
KR
South Korea
Prior art keywords
clock
processor
clock signal
delay
instruction
Prior art date
Application number
KR1020150111210A
Other languages
English (en)
Other versions
KR102476357B1 (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 KR1020150111210A priority Critical patent/KR102476357B1/ko
Priority to US15/185,505 priority patent/US10983551B2/en
Priority to DE102016214334.4A priority patent/DE102016214334A1/de
Priority to TW105124727A priority patent/TWI762448B/zh
Priority to CN201610642814.4A priority patent/CN106444965B/zh
Publication of KR20170017382A publication Critical patent/KR20170017382A/ko
Application granted granted Critical
Publication of KR102476357B1 publication Critical patent/KR102476357B1/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/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/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • 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
    • 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/14Time supervision arrangements, e.g. real time clock
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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)
  • Microcomputers (AREA)
  • Advance Control (AREA)

Abstract

클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법에 관하여 개시한다. 집적 회로는 초기 설정된 지연 명령어가 호출되는 경우에 상기 지연 명령어에 상응하는 클럭 제어 인자 정보를 생성하는 코어 프로세서 및, 상기 코어 프로세서와 결합되고, 상기 코어 프로세서로부터 제공받은 클럭 제어 인자 정보에 기초하여 결정된 타깃 시간 구간에서 상기 코어 프로세서로의 제1클럭 신호의 공급을 차단시키는 클럭 게이팅 처리를 수행하는 클럭 관리 유닛을 포함한다.

Description

클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법{Clock management unit, integrated circuit and system on chip adopting the same, and clock managing method}
본 발명은 프로세서 및 그 동작 방법에 관한 것으로서, 자세하게는 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법에 관한 것이다.
프로세서를 이용하여 소프트웨어를 구현하다 보면 비교적 짧은 시간 동안에 아무런 동작을 수행하지 않고 기다려야 하는 경우들이 발생된다. 이는 일반적으로 인터럽트 처리와 같이 하드웨어 동작이 끝나기를 기다리는 경우 또는 현재 구동하고 있는 하드웨어 동작이 끝날 것이라고 예상되는 시간이 짧아서 다른 함수를 호출하기 어려운 경우 등과 같은 조건에서 NOP 등과 같은 소프트웨어 지연(delay) 함수를 이용하였다. 그러나, 이러한 소프트웨어 지연 함수를 실행시키는 경우에도 클럭의 토글 동작에 의하여 프로세서에서 불필요한 전력을 소모하는 결과를 초래하였다.
본 발명의 목적은 프로세서에서의 시간 지연 동작이 요구되는 경우에 지연 명령어에 기초하여 하드웨어로 시간 지연 처리 동작 및 클럭 게이팅 처리를 수행하는 클럭 관리 유닛을 제공하는데 있다.
본 발명의 다른 목적은 프로세서에서의 시간 지연 동작이 요구되는 경우에 지연 명령어에 기초하여 하드웨어로 시간 지연 처리 동작 및 클럭 게이팅 처리를 수행하는 클럭 관리 유닛이 적용되는 집적 회로를 제공하는데 있다.
본 발명의 또 다른 목적은 프로세서에서의 시간 지연이 동작이 요구되는 경우에 지연 명령어에 기초하여 하드웨어로 시간 지연 처리 동작 및 클럭 게이팅 처리를 수행하는 클럭 관리 유닛이 적용되는 시스템 온 칩을 제공하는데 있다.
본 발명의 또 다른 목적은 프로세서에서의 시간 지연 동작이 요구되는 경우에 지연 명령어에 기초하여 하드웨어로 시간 지연 처리 동작 및 클럭 게이팅 처리를 수행하는 클럭 관리 방법을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 집적 회로는 초기 설정된 지연 명령어가 호출되는 경우에 상기 지연 명령어에 상응하는 클럭 제어 인자 정보를 생성하는 코어 프로세서 및, 상기 코어 프로세서와 결합되고, 상기 코어 프로세서로부터 제공받은 클럭 제어 인자 정보에 기초하여 결정된 타깃 시간 구간에서 상기 코어 프로세서로의 제1클럭 신호의 공급을 차단시키는 클럭 게이팅 처리를 수행하는 클럭 관리 유닛을 포함한다.
발명의 기술적 사상의 다른 면에 따른 클럭 관리 유닛은 코어 프로세서에서 초기 설정된 지연 명령어가 실행될 때 상기 지연 명령어에서 지정하는 타깃 시간 구간에서 클럭 게이팅 동작을 수행하기 위한 제1타입의 제어신호를 생성하는 제어 회로 및, 제1클럭 신호를 입력받고, 상기 제1타입의 제어신호에 따라서 상기 타깃 시간 구간에서 상기 코어 프로세서의 클럭 입력 단자로 상기 제1클럭 신호가 출력되는 것을 차단시키는 동작을 수행하는 클럭 게이팅 회로를 포함한다.
본 발명의 기술적 사상의 또 다른 면에 따른 시스템 온 칩은 명령어들을 저장하는 메모리, 제1클럭 신호를 이용하여 상기 메모리로부터 명령어를 읽어내어 처리하는 프로세서, 상기 프로세서로 공급되는 상기 제1클럭 신호에 대한 게이팅 처리를 수행하는 클럭 관리 유닛 및, 상기 프로세서와 결합되고, 상기 프로세서에서 실행되는 명령어에 따라서 동작하는 하나 이상의 기능 블록을 포함하고, 상기 클럭 관리 유닛은 상기 프로세서에서 초기 설정된 지연 명령어가 호출되는 경우에 상기 지연 명령어에서 지정하는 타깃 시간 구간 동안에 상기 제1클럭 신호가 상기 프로세서로 공급되는 것을 차단시키는 동작을 수행하는 것을 특징으로 한다.
본 발명의 기술적 사상의 또 다른 면에 따른 클럭 관리 방법은 프로세서에서 초기 설정된 지연 명령어가 호출되는 경우에 상기 지연 명령어에 기초하여 타이머 만료 시간을 설정하는 단계, 상기 프로세서에서 상기 지연 명령어가 실행될 때 타이머 회로에서의 시간 측정 동작을 시작하는 단계, 상기 타이머 회로에서의 시간 측정 동작 시작하고 나서 상기 타이머 만료 시간에 도달될 때까지 상기 프로세서로의 제1클럭 신호의 공급을 차단하는 클럭 게이팅 동작을 수행하는 단계 및, 상기 타이머 만료 시간에 도달될 때 상기 프로세서로의 상기 제1클럭 신호의 공급을 재개하는 동작을 수행하는 단계를 포함한다.
본 발명에 따르면 프로세서의 아키텍쳐(architecture)에서 지연(delay) 동작이 요구되는 경우에 타이머 회로를 포함하는 하드웨어로 구현된 클럭 관리 유닛으로 지연 동작 및 클럭 게이팅 처리를 수행함으로써, 소비 전력을 줄일 수 있는 효과가 발생된다.
그리고, 지연 명령어를 이용하여 하드웨어로 구현된 클럭 관리 유닛으로 지연 동작을 수행하는 동안에도 명령어 파이프라인이 깨지지 않음으로써, 클럭 게이팅 처리 후 클럭 신호의 공급이 재개될 때 지연 명령어에 후속되는 명령어를 빠르게 실행시킬 수 있는 효과가 발생된다.
도 1은 본 발명의 실시 예에 따른 클럭 관리 유닛을 포함하는 집적 회로의 구성 예를 보여준다.
도 2는 본 발명의 실시 예에 따른 클럭 관리 유닛을 포함하는 집적 회로의 다른 구성 예를 보여준다.
도 3은 본 발명의 실시 예에 따른 클럭 관리 유닛을 포함하는 프로세서의 구성 예를 보여준다.
도 4는 본 발명의 실시 예에 따라 새로 정의한 지연 명령어에 대한 구성을 예시적으로 보여준다.
도 5는 본 발명의 실시 예에 따른 클럭 관리 유닛의 구성을 예시적으로 보여준다.
도 6은 도 5에 도시된 클럭 게이팅 회로 구성의 일 예를 보여준다.
도 7은 도 5에 도시된 클럭 게이팅 회로 구성의 다른 예를 보여준다.
도 8은 도 5에 도시된 클럭 게이팅 회로 구성의 또 다른 예를 보여준다.
도 9는 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 일 예를 보여준다.
도 10은 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 다른 예를 보여준다.
도 11은 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 또 다른 예를 보여준다.
도 12는 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 또 다른 예를 보여준다.
도 13은 본 발명의 실시 예에 따른 클럭 관리 유닛의 입/출력 클럭 신호의 상태를 보여준다.
도 14는 도 9와 같은 명령어 파이프라인 상태에 따라 프로세서에서 지연 명령어를 수행하는 경우의 클럭 관리 유닛을 포함하는 집적 회로의 주요 신호들의 파형을 보여준다.
도 15는 도 10과 같은 명령어 파이프라인 상태에 따라 프로세서에서 지연 명령어를 수행하는 경우의 클럭 관리 유닛을 포함하는 집적 회로의 주요 신호들의 파형을 보여준다.
도 16은 도 11과 같은 명령어 파이프라인 상태에 따라 프로세서에서 지연 명령어를 수행하는 경우의 클럭 관리 유닛을 포함하는 집적 회로의 주요 신호들의 파형을 보여준다.
도 17은 도 12와 같은 명령어 파이프라인 상태에 따라 프로세서에서 지연 명령어를 수행하는 경우의 클럭 관리 유닛을 포함하는 집적 회로의 주요 신호들의 파형을 보여준다.
도 18은 본 발명의 실시 예에 따른 집적 회로에 수행되는 클럭 관리 방법의 흐름도의 일 예를 보여준다.
도 19는 본 발명의 실시 예에 따른 집적 회로에 수행되는 클럭 관리 방법의 흐름도의 다른 예를 보여준다.
도 20은 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 일 예를 보여준다.
도 21은 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 다른 예를 보여준다.
도 22는 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 또 다른 예를 보여준다.
도 23은 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 또 다른 예를 보여준다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시 예에 따른 클럭 관리 유닛(120)을 포함하는 집적 회로(1000A)의 구성 예를 보여준다.
도 1을 참조하면, 집적 회로(1000A)는 프로세서(100A) 및 클럭 발생 유닛(200)을 포함한다. 프로세서(100A)는 코어 프로세서(110) 및 클럭 관리 유닛(120)을 포함한다.
예로서, 프로세서(100A)은 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 디지털 카메라, 모바일 장치, 셋톱 박스(set-top-box), 스마트 카드 시스템, 서버 시스템 및 각종 전자 기기 등에 적용될 수 있다.
클럭 발생 유닛(200)은 프로세서(100A)로 입력되는 제1클럭 신호(CLK1_IN)를 생성시킨다. 클럭 발생 유닛(200)은 발진 회로를 이용하여 프로세서(100A)에서 필요로 하는 주파수의 제1클럭 신호(CLK1_IN)를 생성시킬 수 있다.
다른 예로서, 클럭 발생 유닛(200)은 집적 회로(1000A) 외부에 배치될 수 있다. 이 경우에 클럭 발생 유닛(200)에 출력되는 제1클럭 신호(CLK1_IN)는 집적 회로(1000A)와 클럭 발생 유닛(200)을 연결하는 신호 라인을 통하여 프로세서(100A)에서 수신할 수 있다.
코어 프로세서(110)는 CPU(Central Processing Unit)이라고 불려지기도 한다. 코어 프로세서(110)는 프로그램 된 소프트웨어에 기초하여 집적 회로(1000A)를 구성하는 구성 요소들의 동작을 제어한다. 예로서, 코어 프로세서(110)는 레지스터 블록, 명령어 디코더, 산술 연산장치(ALU) 및 제어 로직 등을 포함할 수 있다.
코어 프로세서(110)는 클럭 관리 유닛(120)으로부터 공급되는 제1'클럭 신호(CLK1_OUT)를 이용하여 명령어 파이프라인(pipeline) 기법에 따라서 명령어 패치 동작, 명령어 디코딩 동작, 명령어 실행 동작의 3 단계 동작을 순차적으로 수행할 수 있다.
다른 예로서, 코어 프로세서(110)는 2 단계 명령어 파이프라인을 적용하면 명령어 패치 동작 및 명령어 실행 동작의 2 단계의 동작을 순차적으로 수행할 수도 있다. 또 다른 예로서, 코어 프로세서(110)는 4 단계 명령어 파이프라인을 적용하면, 명령어 패치 동작, 명령어 디코딩 동작, 오퍼랜드 인출 동작, 명령어 실행 동작의 4 단계의 동작을 순차적으로 수행할 수도 있다. 본 발명은 위에 언급된 명령어 파이프라인 기법 이외의 다양한 명령어 파이프라인 기법들이 적용될 수 있다.
프로세서(100A)는 소프트웨어를 구현하는 과정에서 코어 프로세서(110)가 아무런 동작을 수행하지 않고 기다려야 하는 구간들이 발생된다. 예로서, 인터럽트 처리와 같이 하드웨어 동작이 끝나기를 기다리는 경우 또는 현재 구동되고 있는 하드웨어 동작이 끝날 것이라고 예상되는 시간이 짧아서 다른 명령어를 호출하기 어려운 경우 등이 이에 해당될 수 있다.
이 경우에 코어 프로세서(110)는 지연 함수(delay function)를 이용한 NOP(No Operation) 처리에 따라서 시간 지연 동작을 수행할 수도 있다. 그러나, NOP(No Operation) 처리에 따른 지연 동작을 수행하는 경우에도 코어 프로세서(110)에서 클럭 신호를 이용하게 된다. 이로 인하여 불필요한 전력 소모를 발생될 수 있게 된다.
본 발명에서는 코어 프로세서(110)가 아무런 동작을 수행하지 않고 기다려야 하는 구간들이 발생되는 경우에 초기 설정된 지연 명령어(INS_DLY)를 이용하여 타이머 회로를 포함하는 하드웨어로 지연 동작 및 클럭 게이팅 처리를 수행함으로써, 명령어 파이프라인(instruction pipeline)은 계속 유지하면서 소모 전력을 줄이는 기술적 사상을 제안한다. 예로서, 지연 명령어(INS_DLY)는 특수한 명령어로 본 발명에서 새로 정의하였다.
코어 프로세서(110)는 초기 설정된 지연 명령어(INS_DLY)가 호출되는 경우에 지연 명령어에 상응하는 클럭 제어 인자 정보(INF_CG)를 생성하고, 생성된 클럭 제어 인자 정보(INF_CG)를 클럭 관리 유닛(120)에 전달한다.
예로서, 코어 프로세서(110)는 지연 명령어(INS_DLY)를 디코딩한 결과에 기초하여 클럭 제어 인자 정보(INF_CG)를 생성시킬 수 있다. 예로서, 클럭 제어 인자 정보(INF_CG)에는 시간 지연 구간 길이에 대한 정보가 포함될 수 있다. 다른 예로서, 클럭 제어 인자 정보(INF_CG)에는 추가적으로 클럭 분주비 설정 정보, 포스 게이팅(force gating) 정보, 스테터스(status) 정보 중의 적어도 하나 이상의 정보가 포함될 수 있다.
여기에서, 클럭 분주비 설정 정보는 클럭 관리 유닛(120)의 타이머 회로에서 시간 측정을 하는데 이용되는 클럭 신호를 제1클럭 신호(CLK1_IN)로부터 어느 정도 분주 처리하여 주파수를 낮출 것인지를 결정하기 위한 정보이다.
포스 게이팅(force gating) 정보는 지연 명령어(INS_DLY) 실행에 따른 시간 지연 구간 동안에는 인터럽트가 발생되더라도 인터럽트를 무시하는 기능 설정 정보이다. 스테터스(status) 정보는 클럭 관리 유닛(120)의 현재 상태를 코어 프로세서(110)로 알려주는 기능 설정 정보이다. 예로서, 스테터스(status) 정보는 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에 인터럽트에 의하여 코어 프로세서(110)가 다시 동작을 할 때 지연 시간이 얼마나 남아있는 지를 클럭 관리 유닛(120)에서 코어 프로세서(110)로 알려주는 기능을 지원하기 위한 설정 정보이다.
클럭 관리 유닛(120)은 코어 프로세서(110)에서 지연 명령어(INS_DLY)가 실행될 때 코어 프로세서(110)로부터 제공받은 클럭 제어 인자 정보(INF_CG)에 기초하여 결정된 타깃 시간 구간에서 코어 프로세서(110)로 공급되는 제1클럭 신호(CLK1_IN)를 차단시키는 클럭 게이팅 동작을 수행한다. 이에 따라서, 코어 프로세서(110)의 클럭 신호 라인으로는 타깃 시간 구간 동안에 클럭 게이팅 처리된 제1'클럭 신호(CLK1_OUT)가 공급된다. 예로서, 타깃 시간 구간은 시간 지연 구간으로서 지연 명령어(INS_DLY)가 실행되는 시점부터 클럭 제어 인자 정보(INF_CG)에 따른 시간 지연 구간 길이에 해당되는 시점까지로 결정된다.
다른 예로서, 코어 프로세서(110)는 지연 명령어(INS_DLY)가 호출되는 경우에 지연 명령어(INS_DLY)를 그대로 클럭 관리 유닛(120)에 전달할 수도 있다. 이 경우에, 클럭 관리 유닛(120)는 수신된 지연 명령어(INS_DLY)를 디코딩 처리하고, 디코딩 결과에 기초하여 클럭 게이팅 동작을 수행할 수도 있다.
이와 같이, 타이머 회로 등과 같은 하드웨어로 구현되는 클럭 관리 유닛(120)를 통하여 지연 동작 및 클럭 게이팅 처리를 수행할 수 있게 된다.
예로서, 포스 게이팅(force gating) 정보가 시간 지연 구간 동안에 인터럽트를 우선적으로 처리하도록 설정되어 있는 경우에는 클럭 관리 유닛(120)은 다음과 같이 동작한다.
클럭 관리 유닛(120)은 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 타깃 시간 구간 내에서 인터럽트 신호(INT)가 수신되는 경우에 코어 프로세서(110)로 제1클럭 신호(CLK1_IN)의 공급을 재개하는 동작을 수행한다. 클럭 관리 유닛(120)은 코어 프로세서(110)에서 인터럽트 신호(INT)에 따른 인터럽트 태스크를 마친 후에도 타깃 시간 구간 내에 있으면 코어 프로세서(110)로 공급되는 제1클럭 신호(CLK1_IN)를 차단시키는 클럭 게이팅 동작을 재개한다.
지연 명령어(INS_DLY)의 실행을 시작하는 시점부터 코어 프로세서(110)로 공급되는 제1클럭 신호(CLK1_IN)를 차단시키는 클럭 게이팅 동작의 실행을 시작하는 시점 사이에 인터럽트가 발생되면 클럭 관리 유닛(120)은 현재 수행 중인 인터럽트 태스크 처리를 완료할 때까지 코어 프로세서(110)로의 제1클럭 신호(CLK1_IN)의 공급을 허용하는 동작을 수행한다.
만일, 포스 게이팅(force gating) 정보가 시간 지연 구간 동안에 발생되는 인터럽트를 무시하도록 설정되어 있는 경우에는 클럭 관리 유닛(120)은 타깃 시간 구간 내에서는 인터럽트 신호(INT)가 수신되더라도 코어 프로세서(110)로의 제1클럭 신호(CLK1_IN)의 공급을 허용하지 않는다.
코어 프로세서(110)는 지연 명령어(INS_DLY)의 실행에 따른 클럭 게이팅 처리를 완료하고 나서 지연 명령어(INS_DLY) 다음에 실행될 차기 명령어에 대한 실행 처리를 수행한다. 예로서, 코어 프로세서(110)는 명령어 파이프라인 처리 기법에 따라서 지연 명령어(INS_DLY)의 디코딩 동작과 지연 명령어(INS_DLY) 다음에 실행될 차기 명령어에 대한 패치 동작을 동시에 처리하고, 지연 명령어(INS_DLY)의 실행 동작과 차기 명령어에 대한 디코딩 동작을 동시에 처리하고, 지연 명령어(INS_DLY)의 실행 동작에 따른 클럭 게이팅 처리를 완료하고 나서 디코딩 처리된 차기 명령어에 대한 실행 동작을 수행한다. 이에 따라서, 명령어 파이프라인을 유지하면서 하드웨어 회로를 통하여 정확한 시간 지연 및 클럭 게이팅 동작을 구현할 수 있게 된다.
도 2는 본 발명의 실시 예에 따른 클럭 관리 유닛(300)을 포함하는 집적 회로(1000B)의 다른 구성 예를 보여준다.
도 2를 참조하면, 집적 회로(1000B)는 프로세서(100B), 클럭 발생 유닛(200)및 클럭 관리 유닛(300)을 포함한다.
클럭 발생 유닛(200)은 도 1에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다. 도 2의 집적 회로(1000B)에서도 클럭 발생 유닛(200)을 집적 회로(1000B) 외부에 배치할 수 있다. 이 경우에 클럭 발생 유닛(200)에 출력되는 제1클럭 신호(CLK1_IN)는 집적 회로(1000B)와 클럭 발생 유닛(200)을 연결하는 신호 라인을 통하여 집적 회로(1000B)의 클럭 관리 유닛(300)에서 수신할 수 있다.
프로세서(100B)는 제1'클럭 신호(CLK1_OUT)를 이용하여 명령어 파이프라인 기법에 따라서 명령어 처리를 수행할 수 한다. 프로세서(100B)는 코어 프로세서를 포함하고 있다. 예로서, 프로세서(100B)는 단일의 코어 프로세서 또는 멀티 코어 프로세서들을 포함할 수 있다. 예로서, 프로세서(100B)은 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 디지털 카메라, 모바일 장치, 셋톱 박스(set-top-box), 스마트 카드 시스템, 서버 시스템 및 각종 전자 기기 등에 적용될 수 있다.
프로세서(100B)는 초기 설정된 지연 명령어(INS_DLY)가 호출되는 경우에 지연 명령어에 상응하는 클럭 제어 인자 정보(INF_CG)를 생성하고, 생성된 클럭 제어 인자 정보(INF_CG)를 클럭 관리 유닛(300)에 전달한다. 예로서, 프로세서(100B)는 지연 명령어(INS_DLY)를 디코딩한 결과에 기초하여 클럭 제어 인자 정보(INF_CG)를 생성시키고, 생성된 클럭 제어 인자 정보(INF_CG)를 클럭 관리 유닛(300)에 전달할 수 있다. 클럭 제어 인자 정보(INF_CG)에 대해서는 도 1에서 설명하였으므로, 중복적인 설명은 피하기로 한다.
다른 예로서, 프로세서(100B)는 지연 명령어(INS_DLY)가 호출되는 경우에 지연 명령어(INS_DLY)를 그대로 클럭 관리 유닛(300)에 전달할 수도 있다.
클럭 관리 유닛(300)은 프로세서(100B)에서 지연 명령어(INS_DLY)가 실행될 때 프로세서(100B)로부터 제공받은 클럭 제어 인자 정보(INF_CG)에 기초하여 결정된 타깃 시간 구간에서 제1클럭 신호(CLK1_IN)를 차단시키는 클럭 게이팅 동작을 수행한다. 이에 따라서, 타깃 시간 구간 동안에 클럭 게이팅 처리된 제1'클럭 신호(CLK1_OUT)가 프로세서(100B)의 클럭 입력 단자로 공급된다.
프로세서(100B)로부터 지연 명령어(INS_DLY)가 클럭 관리 유닛(300)로 전달되는 경우에는 클럭 관리 유닛(300)은 수신된 지연 명령어(INS_DLY)를 디코딩 처리하고, 디코딩 결과에 기초하여 클럭 게이팅 동작을 수행한다. 이에 따라서, 하드웨어로 구현된 클럭 관리 유닛(300)에 의하여 지연 동작 및 클럭 게이팅 처리를 실행하게 된다.
예로서, 지연 명령어(INS_DLY)에 따른 포스 게이팅(force gating) 정보가 시간 지연 구간 동안에 인터럽트를 우선적으로 처리하도록 설정되어 있는 경우에는 클럭 관리 유닛(300)은 다음과 같이 동작한다.
인터럽트 신호(INT)는 프로세서(100B) 및 클럭 관리 유닛(300)에 함께 인가된다.
클럭 관리 유닛(300)은 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 타깃 시간 구간 내에서 인터럽트 신호(INT)가 수신되는 경우에 프로세서(100B)에 대한 제1클럭 신호(CLK1_IN)의 공급을 재개하는 동작을 수행한다. 즉, 인터럽트 신호(INT)가 수신되는 경우에 제1클럭 신호(CLK1_IN)가 스위칭 온(switching on) 처리되어 클럭 관리 유닛(300)으로 출력되고, 클럭 관리 유닛(300)에서 출력되는 제1'클럭 신호(CLK1_OUT)가 프로세서(100B)로 공급된다.
이에 따라서, 프로세서(100B)는 인터럽트 신호에 따른 인터럽트 태스크를 수행하게 된다. 프로세서(100B)에서 인터럽트 태스크를 마친 시점에도 타깃 시간 구간 내에 있으면, 클럭 관리 유닛(300)은 제1클럭 신호(CLK1_IN)를 차단시키는 클럭 게이팅 동작을 재개한다.
지연 명령어(INS_DLY)의 실행을 시작하는 시점부터 제1클럭 신호(CLK1_IN)를 차단시키는 클럭 게이팅 동작의 실행을 시작하는 시점 사이에 인터럽트가 발생되면, 클럭 관리 유닛(300)은 현재 수행 중인 인터럽트 태스크 처리를 완료할 때까지 제1클럭 신호(CLK1_IN)의 공급을 허용하도록 스위칭 온 처리하는 동작을 수행한다. 이에 따라서, 클럭 관리 유닛(300)은 인터럽트 태스크를 완료할 때까지 클럭 펄스가 발생되는 제1'클럭 신호(CLK1_OUT)를 프로세서(100B)에 공급한다.
만일, 포스 게이팅(force gating) 정보가 시간 지연 구간 동안에 발생되는 인터럽트를 무시하도록 설정되어 있는 경우에는 클럭 관리 유닛(300)은 타깃 시간 구간 내에서는 인터럽트 신호(INT)가 수신되더라도 클럭 게이팅 동작을 중단하지 않는다.
프로세서(100B)는 지연 명령어(INS_DLY)의 실행에 따른 클럭 게이팅 처리를 완료하고 나서, 지연 명령어(INS_DLY) 다음에 실행될 차기 명령어에 대한 실행 처리를 수행한다. 예로서, 프로세서(100B)는 명령어 파이프라인 처리 기법에 따라서 지연 명령어(INS_DLY)의 디코딩 동작과 지연 명령어(INS_DLY) 다음에 실행될 차기 명령어에 대한 패치 동작을 동시에 처리하고, 지연 명령어(INS_DLY)의 실행 동작과 차기 명령어에 대한 디코딩 동작을 동시에 처리하고, 지연 명령어(INS_DLY)의 실행 동작에 따른 클럭 게이팅 처리를 완료하고 나서 디코딩 처리된 차기 명령어에 대한 실행 동작을 수행한다.
도 3은 본 발명의 실시 예에 따른 클럭 관리 유닛(120)을 포함하는 프로세서(100A)의 구성 예를 보여준다.
도 3을 참조하면, 프로세서(100A)는 레지스터 블록(111), 명령어 디코더(112), 제어 로직(113), 산술 논리 장치(ALU; Arithmetic Logic Unit), 클럭 관리 유닛(120) 및 버스(115)를 포함한다.
프로세서(100A) 구성 요소들 중에서 레지스터 블록(111), 명령어 디코더(112), 제어 로직(113), 산술 논리 장치(ALU; Arithmetic Logic Unit) 및 버스(115)를 포함하는 구성을 코어 프로세서라 칭할 수 있다.
버스(115)를 통하여 프로세서(100A)를 구성하는 레지스터 블록(111), 명령어 디코더(112), 제어 로직(113), 산술 논리 장치(ALU; Arithmetic Logic Unit, 114) 및 클럭 관리 유닛(120)은 신호를 주고 받을 수 있다. 제어 로직(113)은 프로세서(100A)의 각 구성 요소들의 동작을 제어하기 위한 명령어 처리 동작을 실행할 수 있다.
레지스터 블록(111)는 데이터를 저장하는 레지스터들과 명령어를 저장하는 레지스터들을 포함한다. 명령어를 저장하는 레지스터들에는 제어 로직(113)에 의하여 호출된 명령어들이 저장된다. 예로서, 명령어들은 프로세서(100A)에 접속된 캐시 또는 메모리에서 읽어낼 수 있다.
명령어 디코더(112)는 레지스터들에 저장된 명령어를 디코딩하는 동작을 수행한다. 제어 로직(113)은 디코딩 처리된 명령어를 실행시킨다. 산술 논리 장치(114)는 산술 연산 및 논리 연산 등의 연산 기능을 수행한다.
제어 로직(113)은 명령어 디코더(112)에서 디코딩 처리된 명령어가 지연 명령어(INS_DLY)인 경우에, 지연 명령어(INS_DLY)를 디코딩한 결과에 기초하여 클럭 제어 인자 정보(INF_CG)를 생성시키고, 생성된 클럭 제어 인자 정보(INF_CG)를 버스(115)를 통하여 클럭 관리 유닛(120)으로 전달한다. 클럭 제어 인자 정보(INF_CG)에 대해서는 도 1에서 설명하였으므로, 중복적인 설명은 피하기로 한다.
다른 예로서, 제어 로직(113)은 지연 명령어(INS_DLY)가 호출되는 경우에 지연 명령어(INS_DLY)를 그대로 클럭 관리 유닛(120)에 전달할 수도 있다.
클럭 관리 유닛(120)은 제어 로직(113)에서 지연 명령어(INS_DLY)가 실행될 때 제공받은 클럭 제어 인자 정보(INF_CG)에 기초하여 클럭 게이팅 동작을 수행한다. 클럭 관리 유닛(120)에서의 클럭 게이팅 동작을 수행하는 과정에 대해서는 아래에서 보다 구체적으로 설명될 것이다.
도 4는 본 발명의 실시 예에 따라 새로 정의한 지연 명령어(INS_DLY)에 대한 구성을 예시적으로 보여준다.
도 4를 참조하면, 시간 지연 구간 동안에 클럭 게이팅 기능을 수행하도록 정의된 지연 명령어(INS_DLY)는 예로서 OP Code 필드(11), Status 필드(12), Force Gating 필드(13), Clock Dividing Value 필드(14) 및 Count Value 필드(15)로 구성될 수 있다.
OP Code 필드(11)에는 시간 지연 명령어를 나타내는 코드가 기입된다. Status 필드(12)에는 클럭 관리 유닛(120)의 상태 정보를 코어 프로세서(110)로 알려주는 기능을 설정하는 정보가 기입된다. 예로서, Status 필드(12)에는 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에 인터럽트에 의하여 코어 프로세서(110)가 다시 동작을 할 때 지연 시간이 얼마나 남아있는 지를 클럭 관리 유닛(120)에서 코어 프로세서(110)로 알려주는 기능 지원 여부를 결정하는 정보가 기입된다. Force Gating 필드(13)에는 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에는 인터럽트가 발생되더라도 인터럽트를 무시하는 기능 지원 여부를 설정하는 정보가 기입된다. Clock Dividing Value 필드(14)에는 클럭 관리 유닛(120)에 포함된 클럭 분주기의 클럭 분주비를 설정하는 정보가 기입된다. Count Value 필드(15)에는 시간 지연 구간 길이에 대한 정보가 기입된다.
도 5는 본 발명의 실시 예에 따른 클럭 관리 유닛(120 또는 300)의 구성을 예시적으로 보여준다.
도 5를 참조하면, 클럭 관리 유닛(120 또는 300)은 제어 회로(410) 및 클럭 게이팅 회로(420)를 포함한다.
제어 회로(410)는 코어 프로세서(110) 또는 프로세서(100B)로부터 지연 명령어(INS_DLY) 또는 클럭 제어 인자 정보(INF_CG)를 수신한다. 클럭 제어 인자 정보(INF_CG)는 지연 명령어(INS_DLY)를 디코딩한 결과에 기초하여 생성되며, 시간 지연 구간 길이에 대한 정보를 포함한다. 클럭 제어 인자 정보(INF_CG)에는 클럭 분주비 설정 정보, 포스 게이팅(force gating) 정보, 스테터스(status) 정보 중의 적어도 하나 이상의 정보가 추가적으로 포함될 수 있다.
제어 회로(410)는 클럭 제어 인자 정보(INF_CG)가 수신되는 경우에 클럭 제어 인자 정보(INF_CG)에 기초하여 클럭 게이팅 동작을 수행하기 위한 제어 신호(CTL)를 생성하여, 클럭 게이팅 회로(420)에 인가한다. 제어 회로(410)에서 생성되는 제어 신호(CTL)에는 클럭 게이팅 회로(420)를 구성하는 구성 요소들을 제어하는데 필요한 하나 이상의 제어 신호가 포함될 수 있다. 예로서, 제어 신호(CTL)에는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 타깃 시간 구간을 측정하기 위한 타이머 제어 신호(CTL_TIMER), 시간 측정에 사용되는 클럭 신호를 생성하는 클럭 분주기의 분주비를 제어하는 분주 제어 신호(CTL_DIV), 클럭 게이팅을 위한 스위칭 제어신호(CTL_SW) 등이 포함될 수 있다.
제어 회로(410)는 지연 명령어(INS_DLY)가 수신될 때 지연 명령어(INS_DLY)에서 지정하는 타깃 시간 구간에서는 클럭 게이팅 회로(420)에서 클럭 펄스가 출력되지 않도록 클럭 게이팅 동작을 수행하기 위한 논리 값을 갖는 제1타입의 제어신호를 생성하고, 타깃 시간 구간 이외의 구간에서는 클럭 게이팅 회로(420)에서 클럭 펄스를 출력시키기 위한 논리 값을 갖는 제2타입의 제어신호를 생성하고, 타깃 시간 구간 내에서 인터럽트 신호(INT)가 수신되는 경우에 클럭 게이팅 회로(420)에서 클럭 펄스를 출력시키기 위한 논리 값을 갖는 제3타입의 제어신호를 생성하고, 타깃 시간 구간 내에서 인터럽트 태스크가 종료될 때 클럭 게이팅 동작을 재개하기 위한 논리 값을 갖는 제4타입의 제어신호를 생성할 수 있다.
위에서 언급한 각종 타입의 제어신호에 대해서는 도 13 내지 도 17에서 상세히 설명될 것이다.
클럭 게이팅 회로(420)는 제1클럭 신호(CLK1_IN)를 입력 받는다. 그리고, 제어 회로(410)로부터 인가되는 제어신호(CTL)에 따라서 타이머 회로를 이용하여 시간의 경과를 측정한다. 클럭 게이팅 회로(420)는 시간의 경과 측정 결과 타깃 시간 구간에 도달되는 경우에 타이머 만료 신호(S_TE)를 제어 회로(410)로 전달한다. 제어 회로(410)는 타이머 만료 신호(S_TE)가 수신될 때 클럭 게이팅 처리를 종료하기 위한 제어 신호(CTL)를 생성한다. 다시 말해, 제어 회로(410)는 타이머 만료 신호(S_TE)가 수신될 때 클럭 게이팅 회로(420)에서 클럭 펄스를 출력시키기 위한 제어 신호(CTL)를 생성한다.
그리고, 클럭 게이팅 회로(420)는 제어 회로(410)로부터 인가되는 제어신호(CTL)에 따라서 스위칭 회로를 제어하여 클럭 게이팅 동작을 수행한다. 클럭 게이팅 회로(420)에 대한 동작은 도 6 내지 도 8에서 상세히 설명하기로 한다.
도 6은 도 5에 도시된 클럭 게이팅 회로 구성의 일 예(420A)를 보여준다.
도 6을 참조하면, 클럭 게이팅 회로(420A)는 스위칭 회로(421), 클럭 분주기(422) 및 타이머 회로(423)를 포함한다.
제1클럭 신호(CLK1_IN)는 스위칭 회로(421) 및 클럭 분주기(422)에 입력된다. 스위칭 회로(421)는 제어 회로(410)로부터 인가되는 스위칭 제어신호(CTL_SW)에 따라서 제1클럭 신호(CLK1_IN)를 출력시키거나 차단시키는 스위칭 동작을 수행한다.
예로서, 스위칭 회로(421)는 스위칭 제어신호(CTL_SW)가 제1논리 상태를 갖는 구간에서는 스위칭 회로(421)가 턴 온(turn on) 되도록 동작하고, 스위칭 제어신호(CTL_SW)가 제2논리 상태를 갖는 구간에서는 스위칭 회로(421)가 턴 오프(turn off) 되도록 동작할 수 있다. 이에 따라서, 스위칭 회로(421)는 스위칭 제어신호(CTL_SW)가 제1논리 상태를 갖는 구간에서는 제1단자(P1)로 입력되는 제1클럭 신호(CLK1_IN)가 제2단자(P2)로 출력되는 것을 허용하고, 스위칭 제어신호(CTL_SW)가 제2논리 상태를 갖는 구간에서는 제1단자(P1)로 입력되는 제1클럭 신호(CLK1_IN)가 제2단자(P2)로 출력되는 것을 차단하게 된다.
즉, 스위칭 회로(421)의 제2단자(P2)에서 출력되는 제1'클럭 신호(CLK1_OUT)는 스위칭 제어신호(CTL_SW)가 제1논리 상태를 갖는 구간에서는 클럭 펄스가 발생되고, 스위칭 제어신호(CTL_SW)가 제2논리 상태를 갖는 구간에서는 클럭 펄스가 발생되지 않게 된다. 예로서, 제1'클럭 신호(CLK1_OUT)는 스위칭 제어신호(CTL_SW)가 제2논리 상태를 갖는 구간에서는 직류 상태(일 예로서, 0V)가 될 수 있다. 제1'클럭 신호(CLK1_OUT)는 코어 프로세서(110)의 클럭 입력 단자 또는 프로세서(100B)의 클럭 입력 단자로 출력된다.
클럭 분주기(422)에서의 클럭 분주비는 제어 회로(410)로부터 인가되는 분주 제어 신호(CTL_DIV)에 따라서 결정된다. 클럭 분주기(422)는 결정된 클럭 분주비에 기초하여 제1클럭 신호(CLK1_IN)를 분주 처리하여 제2클럭 신호(CLK2)를 생성한다. 이에 따라서, 제2클럭 신호(CLK2)는 제1클럭 신호(CLK1_IN)의 주파수보다 낮은 주파수를 갖게 된다.
타이머 회로(423)는 제2클럭 신호(CLK2)를 이용하여 지연 명령어(INS_DLY)에서 지정하는 타깃 시간 구간에 도달되는 경우에 타이머 만료 신호(S_TE)를 생성하고, 생성된 타이머 만료 신호(S_TE)를 제어 회로(410)로 전달한다. 세부적으로, 타이머 회로(423)는 타이머 제어 신호(CTL_TIMER)가 인가되는 시점부터 제2클럭 신호(CLK2)의 카운팅을 시작하고, 카운팅 값이 타깃 시간 구간의 길이에 해당되는 값에 도달될 때 타이머 만료 신호(S_TE)를 생성한다. 예로서, 타이머 제어 신호(CTL_TIMER)는 타이머 인에이블 신호가 될 수 있다.
만일 타깃 시간 구간 동안에 인터럽트가 발생되지 않으면, 스위칭 회로(421)는 스위칭 제어신호(CTL_SW)에 의하여 타깃 시간 구간에서는 클럭 펄스를 출력시키지 않는다. 즉, 스위칭 회로(421)는 타깃 시간 구간 동안에는 제1클럭 신호(CLK1_IN)가 출력되는 것을 차단시킨다. 이에 따라서, 스위칭 회로(421)에서 출력되는 제1'클럭 신호(CLK1_OUT)는 타깃 시간 구간에서는 클럭 펄스가 발생되지 않고, 타깃 시간 구간 이외의 구간에서만 클럭 펄스가 발생된다.
도 7은 도 5에 도시된 클럭 게이팅 회로 구성의 다른 예(420B)를 보여준다.
도 7을 참조하면, 클럭 게이팅 회로(420B)는 스위칭 회로(421) 및 타이머 회로(423)를 포함한다.
도 7의 실시 예에 따른 클럭 게이팅 회로(420B)는 도 6의 실시 예에 따른 클럭 게이팅 회로(420A)의 클럭 분주기(422)를 사용하지 않고, 외부에서 제2클럭 신호(CLK2)를 타이머 회로(423)로 직접 공급하는 회로 구성을 보여준다. 예로서, 도 1 및 도 3의 클럭 관리 유닛(120)에서는 프로세서(100A) 외부에서 인가되는 클럭 신호를 제2클럭 신호(CLK2)로서 클럭 게이팅 회로(420B)의 타이머 회로(423)에 직접 공급할 수도 있다. 이 경우에, 제2클럭 신호(CLK2)는 제1클럭 신호(CLK1_IN)의 주파수보다 낮은 클럭 신호를 사용하는 것이 바람직하다.
도 7에 도시된 스위칭 회로(421) 및 타이머 회로(423)의 동작은 도 6에 도시된 스위칭 회로(421) 및 타이머 회로(423)의 동작과 실질적으로 동등하므로 중복적인 설명은 피하기로 한다.
도 8은 도 5에 도시된 클럭 게이팅 회로 구성의 또 다른 예(420C)를 보여준다.
도 8을 참조하면, 클럭 게이팅 회로(420C)는 스위칭 회로(421) 및 타이머 회로(423)를 포함한다.
도 8의 실시 예에 따르면, 클럭 분주기(422')를 클럭 게이팅 회로(420C)의는 외부에 배치하는 구성을 갖는다. 예로서, 도 1 및 도 3의 클럭 관리 유닛(120)을 구성하는 클럭 게이팅 회로(420C)에서 클럭 분주기(422')는 프로세서(100A) 외부에 배치되도록 설계할 수 있다. 클럭 분주기(422')에 입력되는 클럭 신호는 제1클럭 신호(CLK1_IN) 또는 제3클럭 신호(CLK3)가 이용될 수 있다. 여기에서, 제3클럭 신호(CLK3)는 제1클럭 신호(CLK1_IN)와는 다른 주파수를 갖는 클럭 신호이다.
도 8에 도시된 스위칭 회로(421), 클럭 분주기(422') 및 타이머 회로(423)의 동작은 도 6에 도시된 스위칭 회로(421), 클럭 분주기(422) 및 타이머 회로(423)의 동작과 실질적으로 동등하므로 중복적인 설명은 피하기로 한다.
다음으로, 다양한 조건에서의 도 1 또는 도 2의 프로세서(100A 또는 100B)에서의 지연 명령어를 처리하는 동작과 클럭 관리 유닛(120 또는 300)에서의 클럭 게이팅 처리 동작을 명령어 파이프라인 상태도 및 주요 신호들에 대한 파형도를 참조하여 설명하기로 한다.
도 9는 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 일 예를 보여준다.
도 9에는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간이 T6과 T7 사이의 구간이고, T6과 T7 사이의 구간 동안에 인터럽트가 발생되지 않는 조건 또는 지연 명령어(INS_DLY)의 Force Gating 필드(13)에 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에는 인터럽트가 발생되더라도 인터럽트를 무시하는 기능을 지원하는 정보가 설정된 조건에서의 명령어 파이프라인 상태도를 예시하였다.
우선, T1과 T2 사이의 구간에서 제1명령어(INS_F1)에 대한 패치(fetch; FE) 동작이 이루어진다.
다음으로, T2와 T3 사이의 구간에서 제1명령어(INS_F1)에 대한 디코딩(decoding; DE) 동작과 제2명령어(INS_F2)에 대한 패치 동작이 함께 이루어진다.
다음으로, T3과 T4 사이의 구간에서 제1명령어(INS_F1)에 대한 실행(execution; EX) 동작, 제2명령어(INS_F2)에 대한 디코딩 동작 및 지연 명령어(INS_DLY)에 대한 패치 동작이 함께 이루어진다.
다음으로, T4와 T5 사이의 구간에서 제2명령어(INS_F2)에 대한 실행(execution; EX) 동작, 지연 명령어(INS_DLY)에 대한 디코딩 동작 및 제3명령어(INS_F3)에 대한 패치 동작이 함께 이루어진다.
다음으로, T5와 T6 사이의 구간에서 지연 명령어(INS_DLY)에 대한 실행(execution; EX) 동작, 제3명령어(INS_F3)에 대한 디코딩 동작 및 제4명령어(INS_F4)에 대한 패치 동작이 함께 이루어진다.
Force Gating 필드(13)에 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에는 인터럽트가 발생되더라도 인터럽트를 무시하는 기능을 지원하는 정보가 설정되어 있으므로, T6과 T7 사이의 구간 동안에는 인터럽트의 발생 유무에 관계없이 지연 명령어(INS_DLY)에 기초한 클럭 게이팅 처리를 수행한다. 이에 따라서, T6과 T7 사이의 구간 동안에는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스를 공급하지 않는다.
도 9와 같은 명령어 파이프라인 상태도에 기초하여 프로세서(100A 또는 100B)가 명령어를 처리하는 경우에, 클럭 관리 유닛(120 또는 300)으로 입력되는 제1클럭 신호(CLK1_IN)의 파형과 클럭 관리 유닛(120 또는 300)에서 출력되어 코어 프로세서(110) 또는 프로세서(100B)로 공급되는 제1'클럭 신호(CLK1_OUT)의 파형을 도 13에 도시하였다.
도 13을 참조하면, 제1'클럭 신호(CLK1_OUT)는 T6과 T7 사이의 구간에서 클럭 펄스가 발생되지 않는다는 것을 알 수 있다. 즉, T6과 T7 사이의 구간에서는 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 공급되지 않는다.
도 9와 같은 명령어 파이프라인 상태도에 기초하여 프로세서(100A 또는 100B)가 명령어를 처리하는 경우에, 클럭 관리 유닛(120 또는 300)에서 발생되는 주요 신호들에 대한 파형도를 도 14에 도시하였다.
도 14를 참조하면, 타이머 제어 신호(CTL_TIMER)는 T6 시점에 발생된다. 이에 따라서, 타이머 제어 신호(CTL_TIMER)에 의하여 타이머 회로(423)는 카운팅 동작을 시작한다. 그리고, T6 시점에 스위칭 제어신호(CTL_SW)는 "HIGH" 상태에서 "LOW" 상태로 천이된다. 스위칭 제어신호(CTL_SW)의 "LOW" 상태는 타이머 만료 신호(S_TE)가 발생될 때까지 지속된다. 스위칭 제어신호(CTL_SW)는 타이머 만료 신호(S_TE)가 발생되는 T7 시점에 "LOW" 상태에서 "HIGH" 상태로 천이된다.
이에 따라서 스위칭 제어신호(CTL_SW)가 "LOW" 상태를 갖는 T6과 T7 구간에서는 클럭 관리 유닛(120 또는 300)의 스위칭 회로(421)가 턴 오프(turn off) 되고, "HIGH" 상태인 구간에서는 스위칭 회로(421)가 턴 온(turn on) 된다. 이에 따라서, T6과 T7 사이의 구간에서는 제1'클럭 신호(CLK1_OUT)에서 클럭 펄스가 발생되지 않는다. 이로 인하여, T6과 T7 사이의 구간에서는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 공급되지 않는다.
다시 도 9를 참조하면, 지연 명령어(INS_DLY)의 실행에 따른 클럭 게이팅 동작을 마치고 나서 T7과 T8 사이의 구간에서 제3명령어(INS_F3)에 대한 실행 동작 및 제4명령어(INS_F4)에 대한 디코딩 동작이 함께 이루어진다. 이와 같이, 지연 명령어(INS_DLY)를 처리하는 동안에도 명령어 파이프라인 구조는 깨지지 않게 된다. 즉, 프로세서(100A 또는 100B)는 시간 지연 구간인 T6과 T7 사이에 지연 명령어(INS_DLY)가 실행되는 것처럼 인식한다. 이에 따라서, 프로세서(100A 또는 100B)는 지연 명령어(INS_DLY)의 실행에 따른 클럭 게이팅 동작을 마치고 나서 T7과 T8 사이의 구간에서 제3명령어(INS_F3)에 대한 실행 동작을 수행할 수 있게 된다. 다음으로, T8과 T9 사이의 구간에서 제4명령어(INS_F4)에 대한 실행 동작을 수행할 수 있게 된다.
도 10은 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 다른 예를 보여준다.
도 10에는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 T6과 T7 사이의 구간이고, T6과 T7 사이의 구간 동안에 인터럽트가 발생되고, 지연 명령어(INS_DLY)의 Force Gating 필드(13)에 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에 인터럽트를 무시하는 기능을 지원하지 않는 정보가 설정된 조건에서의 명령어 파이프라인 상태도를 예시하였다.
도 10에 도시된 T1과 T6 사이의 구간에서의 명령어 파이프라인의 상태는 도 9에 도시된 명령어 파이프라인의 상태와 동일하다.
따라서, T5와 T6 사이의 구간에서 지연 명령어(INS_DLY)에 대한 실행 동작, 제3명령어(INS_F3)에 대한 디코딩 동작 및 제4명령어(INS_F4)에 대한 패치 동작이 함께 이루어진다.
도 10과 같은 명령어 파이프라인 상태도에 기초하여 프로세서(100A 또는 100B)가 명령어를 처리하는 경우에, 클럭 관리 유닛(120 또는 300)에서 발생되는 주요 신호들에 대한 파형도를 도 15에 도시하였다.
도 15를 참조하면, 타이머 제어 신호(CTL_TIMER)는 T6 시점에 발생된다. 이에 따라서, 타이머 제어 신호(CTL_TIMER)에 의하여 타이머 회로(423)는 카운팅 동작을 시작한다. 그리고, T6 시점에 스위칭 제어신호(CTL_SW)는 "HIGH" 상태에서 "LOW" 상태로 천이된다. 스위칭 제어신호(CTL_SW)의 "LOW" 상태는 인터럽트 신호(INT)가 발생되는 T6_1a 시점까지 지속된다. T6_1a 시점에 스위칭 제어신호(CTL_SW)는 "LOW" 상태에서 "HIGH"로 천이된다. 그리고, T6_1a 시점에 인터럽트 상태 신호(INT_ON)는 "LOW" 상태에서 "HIGH" 상태로 천이된다. 인터럽트 상태 신호(INT_ON)는 인터럽트 태스크가 수행되는 구간인 T6_1a 시점부터 T6_2a 시점까지 "HIGH" 상태를 유지한다.
스위칭 제어신호(CTL_SW)는 T6_1a 시점부터 인터럽트 상태 신호(INT_ON)가 LOW" 상태로 천이되는 T6_2a 시점까지 "HIGH"를 유지한다. 그리고, T6_2a 시점에 스위칭 제어신호(CTL_SW)는 "HIGH" 상태에서 "LOW" 상태로 천이된다. 스위칭 제어신호(CTL_SW)는 T6_2a 시점부터 타이머 만료 신호(S_TE)가 발생될 때까지 "LOW" 상태를 유지한다. 스위칭 제어신호(CTL_SW)는 타이머 만료 신호(S_TE)가 발생되는 T7 시점에 "LOW" 상태에서 "HIGH" 상태로 천이된다.
이에 따라서 스위칭 제어신호(CTL_SW)가 "LOW" 상태를 갖는 T6과 T6_1a 사이의 구간과 T6_2a와 T7 사이의 구간에서 클럭 관리 유닛(120 또는 300)의 스위칭 회로(421)가 턴 오프(turn off) 되고, "HIGH" 상태인 구간에서는 스위칭 회로(421)가 턴 온(turn on) 된다.
이와 같이, 지연 구간으로 결정된 T6과 T7 사이의 구간 중에서 T6과 T6_1a 사이의 구간과 T6_2a와 T7 사이의 구간에는 제1'클럭 신호(CLK1_OUT)에서 클럭 펄스가 발생되지 않는다. 이로 인하여, T6과 T6_1a 사이의 구간과 T6_2a와 T7 사이의 구간에서는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 공급되지 않는다. 그리고, 지연 구간으로 결정된 T6과 T7 사이의 구간 중에서 인터럽트 발생에 따른 인터럽트 처리가 수행되는 구간인 T6_1a와 T6_2a 사이의 구간에서는 제1'클럭 신호(CLK1_OUT)에서 클럭 펄스가 발생된다. 이로 인하여, T6_1a와 T6_2a 사이의 구간에서는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 정상적으로 공급된다.
다시 도 10을 참조하면, 코어 프로세서(110) 또는 프로세서(100B)는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 T6과 T7 사이의 구간 중에서 T6_1a와 T6_2a 사이의 구간에는 인터럽트 발생에 기초한 인터럽트 명령어(INS_INT)에 따른 인터럽트 태스크를 처리하는 인터럽트 서비스 루틴(ISR)을 실행한다.
코어 프로세서(110) 또는 프로세서(100B)는 지연 명령어(INS_DLY)의 실행에 따른 클럭 게이팅 동작을 마치고 나서 T7과 T8 사이의 구간에서 제3명령어(INS_F3)에 대한 패치 동작을 수행한다. 이는 T6_1a와 T6_2a 사이의 구간에서 인터럽트 서비스 루틴을 수행하였기 때문에 제3명령어(INS_F3)에 대한 패치 동작을 새로 수행한다. 다음으로, T8과 T9 사이의 구간에서 제3명령어(INS_F3)에 대한 디코딩 동작과 제4명령어(INS_F4)에 대한 패치 동작이 함께 이루어진다. 그리고 나서, T9과 T10 사이의 구간에서 제3명령어(INS_F3)에 대한 실행 동작과 제4명령어(INS_F4)에 대한 디코딩 동작이 함께 이루어진다
도 11은 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 또 다른 예를 보여준다.
도 11에는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 T6과 T7 사이의 구간이고, T6과 T7 사이의 구간 동안에 발생된 인터럽트 태스크가 지연 구간 후에 끝나며, 지연 명령어(INS_DLY)의 Force Gating 필드(13)에 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에 인터럽트를 무시하는 기능을 지원하지 않는 정보가 설정된 조건에서의 명령어 파이프라인 상태도를 예시하였다.
도 11에 도시된 T1과 T6 사이의 구간에서의 명령어 파이프라인의 상태는 도 9에 도시된 명령어 파이프라인의 상태와 동일하다.
따라서, T5와 T6 사이의 구간에서 지연 명령어(INS_DLY)에 대한 실행 동작, 제3명령어(INS_F3)에 대한 디코딩 동작 및 제4명령어(INS_F4)에 대한 패치 동작이 함께 이루어진다.
도 11과 같은 명령어 파이프라인 상태도에 기초하여 프로세서(100A 또는 100B)가 명령어를 처리하는 경우에, 클럭 관리 유닛(120 또는 300)에서 발생되는 주요 신호들에 대한 파형도를 도 16에 도시하였다.
도 16을 참조하면, 타이머 제어 신호(CTL_TIMER)는 T6 시점에 발생된다. 이에 따라서, 타이머 제어 신호(CTL_TIMER)에 의하여 타이머 회로(423)는 카운팅 동작을 시작한다. 그리고, T6 시점에 스위칭 제어신호(CTL_SW)는 "HIGH" 상태에서 "LOW" 상태로 천이된다. 스위칭 제어신호(CTL_SW)의 "LOW" 상태는 인터럽트 신호(INT)가 발생되는 T6_1b 시점까지 지속된다. T6_1b 시점에 스위칭 제어신호(CTL_SW)는 "LOW" 상태에서 "HIGH"로 천이된다. 그리고, T6_1b 시점에 인터럽트 상태 신호(INT_ON)는 "LOW" 상태에서 "HIGH" 상태로 천이된다. 인터럽트 상태 신호(INT_ON)는 인터럽트 태스크가 수행되는 구간인 T6_1b 시점부터 T8 시점까지 "HIGH" 상태를 유지한다.
인터럽트 태스크가 끝나는 시점을 나타내는 인터럽트 상태 신호(INT_ON)가 "HIGH" 상태에서 "LOW" 상태로 천이되는 T8 시점이 타이머 만료 신호(S_TE)가 발생되는 T7 시점보다 늦으므로, 스위칭 제어신호(CTL_SW)는 T6_1b 시점부터 다음 지연 명령어(INS_DLY)가 실행될 때까지 "HIGH" 상태를 유지한다.
이에 따라서 스위칭 제어신호(CTL_SW)가 "LOW" 상태를 갖는 T6과 T6_1b 사이의 구간에서 클럭 관리 유닛(120 또는 300)의 스위칭 회로(421)가 턴 오프(turn off) 되고, "HIGH" 상태인 구간에서는 스위칭 회로(421)가 턴 온(turn on) 된다.
이와 같이, 지연 구간으로 결정된 T6과 T7 사이의 구간 중에서 T6과 T6_1b 사이의 구간에는 제1'클럭 신호(CLK1_OUT)에서 클럭 펄스가 발생되지 않는다. 이로 인하여, T6과 T6_1b 사이의 구간에서는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 공급되지 않는다. 그리고, 지연 구간으로 결정된 T6과 T7 사이의 구간 중에서 인터럽트 발생에 따른 인터럽트 처리가 수행되는 구간인 T6_1b와 T7 사이의 구간에서는 제1'클럭 신호(CLK1_OUT)에서 클럭 펄스가 발생된다. 이로 인하여, T6_1b와 T7 사이의 구간에서는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 정상적으로 공급된다.
다시 도 11을 참조하면, 코어 프로세서(110) 또는 프로세서(100B)는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 T6과 T7 사이의 구간 중에서 T6_1b와 T7 사이의 구간에는 인터럽트 발생에 기초한 인터럽트 명령어(INS_INT)에 따른 인터럽트 태스크를 처리하는 인터럽트 서비스 루틴(ISR)을 실행한다.
코어 프로세서(110) 또는 프로세서(100B)는 T6과 T7 사이의 구간에 발생된 인터럽트 태스크가 T7 시점에도 끝나지 않았으므로, T8 시점까지 계속해서 인터럽트 서비스 루틴(ISR)을 실행한다.
코어 프로세서(110) 또는 프로세서(100B)는 인터럽트 서비스 루틴(ISR)의 실행을 마치고 나서, T8과 T9 사이의 구간에서 제3명령어(INS_F3)에 대한 패치 동작을 수행한다. 이는 T6_1a와 T8 사이의 구간에서 인터럽트 서비스 루틴을 수행하였기 때문에 제3명령어(INS_F3)에 대한 패치 동작을 새로 수행한다. 다음으로, T9과 T10 사이의 구간에서 제3명령어(INS_F3)에 대한 디코딩 동작과 제4명령어(INS_F4)에 대한 패치 동작이 함께 이루어진다. 그리고 나서, T10과 T11 사이의 구간에서 제3명령어(INS_F3)에 대한 실행 동작과 제4명령어(INS_F4)에 대한 디코딩 동작이 함께 이루어진다
도 12는 본 발명의 실시 예에 따른 프로세서에서의 지연 명령어를 수행하는 과정을 보여주는 명령어 파이프라인 상태도의 또 다른 예를 보여준다.
도 12에는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 T6과 T7 사이의 구간이고, 지연 명령어(INS_DLY)가 실행되는 구간인 T5와 T6 사이의 구간에서 인터럽트가 발생되고, 지연 명령어(INS_DLY)의 Force Gating 필드(13)에 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에 인터럽트를 무시하는 기능을 지원하지 않는 정보가 설정된 조건에서의 명령어 파이프라인 상태도를 예시하였다.
도 12에 도시된 T1과 T5 사이의 구간에서의 명령어 파이프라인의 상태는 도 9에 도시된 명령어 파이프라인의 상태와 동일하다.
도 12를 참조하면, T5와 T6 사이의 구간에서 지연 명령어(INS_DLY)에 대한 실행(execution; EX) 동작, 제3명령어(INS_F3)에 대한 디코딩 동작 및 제4명령어(INS_F4)에 대한 패치 동작이 함께 이루어진다. 그리고, 지연 명령어(INS_DLY)가 실행되는 구간인 T5와 T6 사이의 구간에서 인터럽트가 발생되었다. 즉, 지연 명령어(INS_DLY)의 실행을 시작하는 T5 시점부터 클럭 게이팅 동작의 실행을 시작하는 T6 시점 사이에 인터럽트가 발생된 사례를 보여준다.
도 12와 같은 명령어 파이프라인 상태도에 기초하여 프로세서(100A 또는 100B)가 명령어를 처리하는 경우에, 클럭 관리 유닛(120 또는 300)에서 발생되는 주요 신호들에 대한 파형도를 도 17에 도시하였다.
도 17을 참조하면, 인터럽트 신호(INT)는 T5_1c 시점에 발생되고, T5_1c 시점에 인터럽트 상태 신호(INT_ON)는 "LOW" 상태에서 "HIGH" 상태로 천이된다. 이에 따라서, 코어 프로세서(110) 또는 프로세서(100B)는 T5_1c 시점에 발생된 인터럽트 신호에 기초하여 인터럽트 서비스 루틴(ISR)을 실행한다.
이와 더불어, 클럭 관리 유닛(120 또는 300)에서는 지연 명령어(INS_DLY) 실행에 따른 클럭 게이팅 처리를 위한 동작을 수행한다. 즉, 타이머 제어 신호(CTL_TIMER)에 의하여 타이머 회로(423)는 카운팅 동작을 시작한다.
그런데, T6 시점에 인터럽트 상태 신호(INT_ON)가 "HIGH" 상태에 있으므로 스위칭 제어신호(CTL_SW)는 "HIGH"상태를 그대로 유지한다. 즉, T6 시점에 스위칭 제어신호(CTL_SW)는 "HIGH"상태에서 "LOW" 상태로 천이되지 않는다.
인터럽트 상태 신호(INT_ON)는 인터럽트 태스크가 수행되는 구간인 T5_1c 시점부터 T6_1c 시점까지 "HIGH" 상태를 유지한다. 인터럽트 태스크가 끝나는 T6_1c 시점이 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 T6과 T7 사이의 구간 내에 있으므로, 스위칭 제어신호(CTL_SW)는 T6_1c 시점에 "HIGH" 상태에서 "LOW" 상태로 천이된다.
스위칭 제어신호(CTL_SW)는 T6_1c 시점부터 타이머 만료 신호(S_TE)가 발생될 때까지 "LOW" 상태를 유지한다. 스위칭 제어신호(CTL_SW)는 타이머 만료 신호(S_TE)가 발생되는 T7 시점에 "LOW" 상태에서 "HIGH" 상태로 천이된다.
이에 따라서 스위칭 제어신호(CTL_SW)가 "LOW" 상태를 갖는 T6_1c와 T7 사이의 구간에서 클럭 관리 유닛(120 또는 300)의 스위칭 회로(421)가 턴 오프(turn off) 되고, "HIGH" 상태인 구간에서는 스위칭 회로(421)가 턴 온(turn on) 된다.
이와 같이, 지연 구간으로 결정된 T6과 T7 사이의 구간 중에서 T6_1c와 T7 사이의 구간에는 제1'클럭 신호(CLK1_OUT)에서 클럭 펄스가 발생되지 않는다. 이로 인하여, T6_1c와 T7 사이의 구간에서는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 공급되지 않는다. 그리고, 지연 구간으로 결정된 T6과 T7 사이의 구간 중에서 인터럽트 발생에 따른 인터럽트 처리가 수행되는 구간인 T6과 T6_1c 사이의 구간에서는 제1'클럭 신호(CLK1_OUT)에서 클럭 펄스가 발생된다. 이로 인하여, T6과 T6_1c 사이의 구간에서는 코어 프로세서(110) 또는 프로세서(100B)로 클럭 펄스가 정상적으로 공급된다.
다시 도 12를 참조하면, 코어 프로세서(110) 또는 프로세서(100B)는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간인 T6과 T7 사이의 구간 중에서 T6와 T6_1c 사이의 구간에는 인터럽트 발생에 기초한 인터럽트 명령어(INS_INT)에 따른 인터럽트 태스크를 처리하는 인터럽트 서비스 루틴(ISR)을 실행한다. 즉, 코어 프로세서(110) 또는 프로세서(100B)는 T5_1c와 T6_1c 사이의 구간에서 인터럽트 서비스 루틴(ISR)을 실행한다.
그리고, 코어 프로세서(110) 또는 프로세서(100B)는 지연 명령어(INS_DLY)의 실행에 따른 클럭 게이팅 동작을 마치고 나서 T7과 T8 사이의 구간에서 제3명령어(INS_F3)에 대한 패치 동작을 수행한다. 이는 T5_1c와 T6_1c 사이의 구간에서 인터럽트 서비스 루틴을 수행하였기 때문에 제3명령어(INS_F3)에 대한 패치 동작을 새로 수행한다. 다음으로, T8과 T9 사이의 구간에서 제3명령어(INS_F3)에 대한 디코딩 동작과 제4명령어(INS_F4)에 대한 패치 동작이 함께 이루어진다. 그리고 나서, T9와 T10 사이의 구간에서 제3명령어(INS_F3)에 대한 실행 동작과 제4명령어(INS_F4)에 대한 디코딩 동작이 함께 이루어진다
다음으로, 도 1 및 도 2에 도시된 실시 예와 같은 집적 회로를 포함하는 다양한 형태의 집적 회로에서 수행되는 클럭 관리 방법에 대하여 설명하기로 한다. 아래에서는 설명의 편의를 위하여 도 2의 집적 회로를 참조하여 클럭 관리 방법을 설명하기로 한다.
도 18은 본 발명의 실시 예에 따른 집적 회로에 수행되는 클럭 관리 방법의 흐름도의 일 예를 보여준다.
도 18에는 지연 명령어(INS_DLY)에 기초하여 결정된 지연 구간에서 인터럽트가 발생되지 않는 조건 또는 지연 명령어(INS_DLY)의 Force Gating 필드(13)에 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에는 인터럽트가 발생되더라도 인터럽트를 무시하는 기능을 지원하는 정보가 설정된 조건에서의 클럭 관리 방법의 흐름도를 보여준다.
프로세서(100B)는 지연 명령어(INS_DLY)가 호출되는지를 판단한다(S101). 예로서, 지연 명령어(INS_DLY)는 프로세서에서 아무런 동작을 수행하지 않고 기다려야 하는 구간이 발생되는 경우에 호출된다.
프로세서(100B)에서 지연 명령어(INS_DLY)가 호출되는 경우에, 클럭 관리 유닛(300)의 제어 회로(410)는 타이머 만료 시간(T_exp)을 설정한다(S102). 예로서, 제어 회로(410)는 프로세서(100B)로부터 수신된 지연 명령어(INS_DLY) 또는 지연 명령어(INS_DLY)를 디코딩 처리하여 생성된 클럭 제어 인자 정보(INF_CG)에 기초하여 타이머 만료 시간(T_exp)을 설정할 수 있다.
클럭 관리 유닛(300)의 제어 회로(410)는 프로세서(100B)에서 지연 명령어(INS_DLY)가 실행되는지를 판단한다(S103).
프로세서(100B)에서 지연 명령어(INS_DLY)가 실행될 때 클럭 관리 유닛(300)의 타이머 회로(423)에서 시간 측정 동작을 시작한다(S104). 예로서, 지연 명령어(INS_DLY)가 실행될 때, 프로세서(100B)에서 사용하는 클럭 주파수보다 낮은 주파수의 클럭 신호를 카운팅하는 동작을 시작함으로써 시간 측정 동작을 시작할 수 있다.
클럭 관리 유닛(300)은 타이머 회로(423)에서 시간 측정 동작을 시작하고 나서, 스위치 회로(420)에서의 클럭 게이팅 동작을 수행한다(S105). 다른 예로서, 타이머 회로(423)에서 시간 측정 동작의 시작과 동시에 스위치 회로(420)에서의 클럭 게이팅 동작을 수행할 수도 있다. 클럭 게이팅 동작은 프로세서(100B)로 클럭 신호가 공급되는 것을 차단시키는 동작이다. 따라서, 클럭 게이팅 동작이 실행되는 구간에서는 프로세서(100B)의 클럭 입력 단자에서 클럭 펄스가 검출되지 않는다.
클럭 관리 유닛(300)의 제어 회로(410)는 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되는지를 판단한다(S106).
타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되지 않는 경우에는 프로세서(100B)로 클럭 신호가 공급되는 것을 차단시키는 클럭 게이팅 동작을 계속 유지한다.
만일 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되는 경우에는 클럭 신호를 프로세서(100B)로 공급하기 위한 클럭 온(CLOCK ON) 처리를 수행한다(S107). 따라서, 타이머 만료 시간(T_exp)에 도달된 후에는 프로세서(100B)로 클럭 신호가 정상적으로 공급된다. 즉, 타이머 만료 시간(T_exp)에 도달된 후에는 프로세서(100B)의 클럭 입력 단자에서 클럭 펄스가 검출된다.
도 19는 본 발명의 실시 예에 따른 집적 회로에 수행되는 클럭 관리 방법의 흐름도의 다른 예를 보여준다.
도 19에는 지연 명령어(INS_DLY)의 Force Gating 필드(13)에 지연 명령어(INS_DLY) 수행 시에 시간 지연 구간 동안에는 인터럽트가 발생되더라도 인터럽트를 무시하는 기능을 지원하지 않는 정보가 설정되어 조건에서의 클럭 관리 방법의 흐름도를 보여준다.
프로세서(100B)는 지연 명령어(INS_DLY)가 호출되는지를 판단한다(S201). 예로서, 지연 명령어(INS_DLY)는 프로세서에서 아무런 동작을 수행하지 않고 기다려야 하는 구간이 발생되는 경우에 호출된다.
프로세서(100B)에서 지연 명령어(INS_DLY)가 호출되는 경우에, 클럭 관리 유닛(300)의 제어 회로(410)는 타이머 만료 시간(T_exp)을 설정한다(S202). 예로서, 제어 회로(410)는 프로세서(100B)로부터 수신된 지연 명령어(INS_DLY) 또는 지연 명령어(INS_DLY)를 디코딩 처리하여 생성된 클럭 제어 인자 정보(INF_CG)에 기초하여 타이머 만료 시간(T_exp)을 설정할 수 있다.
클럭 관리 유닛(300)의 제어 회로(410)는 프로세서(100B)에서 지연 명령어(INS_DLY)가 실행되는지를 판단한다(S203).
프로세서(100B)에서 지연 명령어(INS_DLY)가 실행될 때 클럭 관리 유닛(300)의 타이머 회로(423)에서 시간 측정 동작을 시작한다(S204). 예로서, 지연 명령어(INS_DLY)가 실행될 때, 프로세서(100B)에서 사용하는 클럭 주파수보다 낮은 주파수의 클럭 신호를 카운팅하는 동작을 시작함으로써 시간 측정 동작을 시작할 수 있다.
클럭 관리 유닛(300)은 시간 측정 동작을 시작하고 나서 클럭 게이팅 처리를 수행하기 전에 프로세서(100B)가 인터럽트 상태에 있는지를 판단한다(S205).
프로세서(100B)가 인터럽트 상태에 있는 경우에 현재 실행 중인 태스크가 인터럽트 서비스 루틴(ISR) 상에 있는지를 판단한다(S206).
현재 실행 중인 태스크가 인터럽트 서비스 루틴(ISR) 상에 있는 경우에, 클럭 관리 유닛(300)은 클럭 게이팅 동작을 수행한다(S207). 현재 실행 중인 태스크가 인터럽트 서비스 루틴(ISR) 상에 있다는 것은 지연 명령어(INS_DLY)가 인터럽트 서비스 상에서 실행되고 있다는 것을 의미한다. 이에 따라서, 지연 명령어(INS_DLY)의 실행에 기초하여 프로세서(100B)로 클럭 신호가 공급되는 것을 차단시키는 클럭 게이팅 동작을 실행한다.
오퍼레이션 S207에 따른 클럭 게이팅 동작을 수행하면서 클럭 관리 유닛(300)은 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되는지를 판단한다(S208).
만일 오퍼레이션 S208의 판단 결과 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달된 경우에, 클럭 관리 유닛(300)은 클럭 신호를 프로세서(100B)로 공급하기 위한 클럭 온(CLOCK ON) 처리를 실행한다(S215).
오퍼레이션 S206의 판단 결과 현재 실행 중인 태스크가 인터럽트 서비스 루틴(ISR) 상에 있지 않은 경우에는, 클럭 관리 유닛(300)은 인터럽트 태스크가 완료되는지를 판단한다(S209). 즉, 현재 실행 중인 태스크가 인터럽트 서비스 루틴(ISR) 상에 있지 않은 경우에는 도 12에 도시된 사례와 같이 지연 명령어(INS_DLY)가 실행되는 구간인 T5와 T6 사이의 구간에서 인터럽트가 발생된 것을 의미한다. 따라서, 이 경우에는 인터럽트 태스크가 완료될 때까지 클럭 게이팅 처리를 보류한다.
오퍼레이션 S209의 판단 결과 인터럽트 태스크가 완료된 경우에, 클럭 관리 유닛(300)은 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되는지를 판단한다(S210).
오퍼레이션 S210의 판단 결과 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달된 경우에, 클럭 관리 유닛(300)은 클럭 신호를 프로세서(100B)로 공급하기 위한 클럭 온(CLOCK ON) 처리의 수행을 유지한다(S215).
만일 오퍼레이션 S210의 판단 결과 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되지 않은 경우에, 클럭 관리 유닛(300)은 프로세서(100B)로 클럭 신호가 공급되는 것을 차단시키는 클럭 게이팅 동작을 수행한다(S211).
클럭 게이팅 동작을 수행하면서 클럭 관리 유닛(300)은 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되는지를 판단한다(S212).
오퍼레이션 S211의 판단 결과 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달되지 않은 경우에, 클럭 관리 유닛(300)은 프로세서(100B)로의 인터럽트 요청이 발생되는지를 판단한다(S213). 예로서, 클럭 관리 유닛(300)로 인터럽트 신호가 수신될 때 프로세서(100B)로의 인터럽트 요청이 발생된 것으로 판단할 수 있다.
오퍼레이션 S213의 판단 결과 인터럽트 요청이 발생되지 않으면 클럭 게이팅 동작 상태를 유지하면서 오퍼레이션 S212에서의 타이머 만료 시간(T_exp)에 도달 여부를 판정한다.
오퍼레이션 S213의 판단 결과 인터럽트 요청이 발생된 경우에, 클럭 관리 유닛(300)은 클럭 신호를 프로세서(100B)로 공급하기 위한 클럭 온(CLOCK ON) 처리를 실행한다(S214).
클럭 온(CLOCK ON) 처리 실행을 하고 나서, 클럭 관리 유닛(300)은 요청된 인터럽트에 대한 인터럽트 태스크가 완료되었는지를 판단하는 오퍼레이션 S209를 수행한다.
만일 오퍼레이션 S212의 판단 결과 타이머 회로(423)에서 측정된 시간이 타이머 만료 시간(T_exp)에 도달된 경우에, 클럭 관리 유닛(300)은 클럭 신호를 프로세서(100B)로 공급하기 위한 클럭 온(CLOCK ON) 처리를 실행한다(S215).
도 20은 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 일 예(2000A)를 보여준다.
도 20을 참조하면, 시스템 온 칩(2000A)은 클럭 관리 유닛(2110A)이 내장된 프로세서(2100A), 메모리(2200), 다수의 기능 블록들(2300-1 ~ 2300-N) 및 버스(2400)를 포함한다.
프로세서(2100A)는 버스(2400)를 통하여 접속된 메모리(2200) 및 다수의 기능 블록들(2300-1 ~ 2300-N)의 동작을 제어한다. 프로세서(2100A)는 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 디지털 카메라, 모바일 장치, 셋톱 박스(set-top-box), 스마트 카드 시스템, 서버 시스템 및 각종 전자 기기 등에 적용될 수 있다.
예로서, 프로세서(2100A)는 시간 지연 기능의 수행이 필요할 때 메모리(2200)로부터 지연 명령어(INS_DLY)를 읽어내어 프로세서(2100A) 내의 명령어 레지스터에 저장하는 명령어 패치 동작을 수행할 수 있다. 그리고, 프로세서(2100A)는 명령어 레지스터에 저장된 지연 명령어(INS_DLY)에 대한 디코딩 처리 및 실행 처리를 수행할 수 있다.
클럭 관리 유닛(2110A)은 도 1에서 설명한 클럭 관리 유닛(120)이 적용될 수 있다. 이에 따라서, 클럭 관리 유닛(2110A)은 프로세서(2100A)에서 지연 명령어(INS_DLY)가 실행될 때 시간 지연 구간 내에서의 클럭 게이팅 동작을 수행할 수 있다.
메모리(2200)는 시스템 온 칩(2000A)의 동작에 필요한 명령어들, 데이터 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다. 또한, 비휘발성 메모리를 포함할 수도 있다. 메모리(2200)에 저장된 명령어들 중에서는 본 발명에서 제안하는 지연 기능을 수행하는 지연 명령어(INS_DLY)도 포함된다. 예로서, 도 4와 같은 구조를 갖는 지연 명령어(INS_DLY)가 메모리(2200)에 저장될 수 있다.
기능 블록들(2300-1 ~ 2300-N)은 시스템 온 칩(2000A)에서 지원하는 다양한 기능들을 수행하는 블록이다. 예로서, 기능 블록들(2300-1 ~ 2300-N)은 모뎀, 메모리 컨트롤러, DSP(Digital Signal Processor), USB(Universal Serial Bus) 컨트롤러, PCI(Peripheral Component Interconnect) 인터페이스 등을 포함할 수 있다.
도 21은 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 다른 예(2000B)를 보여준다.
도 21을 참조하면, 시스템 온 칩(2000B)은 프로세서(2100B), 클럭 관리 유닛(2110B), 메모리(2200), 다수의 기능 블록들(2300-1 ~ 2300-N) 및 버스(2400)를 포함한다.
메모리(2200) 및 다수의 기능 블록들(2300-1 ~ 2300-N)은 도 18에 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
프로세서(2100B)는 버스(2400)를 통하여 접속된 클럭 관리 유닛(2110), 메모리(2200) 및 다수의 기능 블록들(2300-1 ~ 2300-N)의 동작을 제어한다. 프로세서(2100B)는 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 디지털 카메라, 모바일 장치, 셋톱 박스(set-top-box), 스마트 카드 시스템, 서버 시스템 및 각종 전자 기기 등에 적용될 수 있다.
예로서, 프로세서(2100B)는 시간 지연 기능의 수행이 필요할 때 메모리(2200)로부터 지연 명령어(INS_DLY)를 읽어내어 프로세서(2100B) 내의 명령어 레지스터에 저장하는 명령어 패치 동작을 수행할 수 있다. 그리고, 프로세서(2100B)는 명령어 레지스터에 저장된 지연 명령어(INS_DLY)에 대한 디코딩 처리 및 실행 처리를 수행할 수 있다.
클럭 관리 유닛(2110B)은 도 2에서 설명한 클럭 관리 유닛(300)이 적용될 수 있다. 이에 따라서, 클럭 관리 유닛(2110B)은 프로세서(2100B)에서 지연 명령어(INS_DLY)가 실행될 때 시간 지연 구간 내에서의 클럭 게이팅 동작을 수행할 수 있다.
도 22는 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 또 다른 예(3000A)를 보여준다.
도 22를 참조하면, 시스템 온 칩(3000A)은 클럭 관리 유닛(3110A)이 내장된 프로세서(3100A), 메모리(3200), 다수의 기능 블록들(3300-1 ~ 3300-N), I/O 제어기(3400), I/O 브리지(3500), 다수의 I/O 디바이스들(3600-1 ~ 3600-K) 및 버스(3700)를 포함한다.
메모리(3200) 및 다수의 기능 블록들(3300-1 ~ 3300-N)은 도 18에 도시된 메모리(2200) 및 다수의 기능 블록들(2300-1 ~ 2300-N)과 실질적으로 동일한 구성 요소에 해당되므로, 중복적인 설명은 피하기로 한다.
프로세서(3100A)는 버스(3700)를 통하여 접속된 메모리(3200), 다수의 기능 블록들(2300-1 ~ 2300-N) 및 I/O 제어기(3400)의 동작을 제어한다. 프로세서(3100A)는 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 디지털 카메라, 모바일 장치, 셋톱 박스(set-top-box), 스마트 카드 시스템, 서버 시스템 및 각종 전자 기기 등에 적용될 수 있다.
예로서, 프로세서(3100A)는 시간 지연 기능의 수행이 필요할 때 메모리(3200)로부터 지연 명령어(INS_DLY)를 읽어내어 프로세서(3100A) 내의 명령어 레지스터에 저장하는 명령어 패치 동작을 수행할 수 있다. 그리고, 프로세서(3100A)는 명령어 레지스터에 저장된 지연 명령어(INS_DLY)에 대한 디코딩 처리 및 실행 처리를 수행할 수 있다.
클럭 관리 유닛(3110A)은 도 1에서 설명한 클럭 관리 유닛(120)이 적용될 수 있다. 이에 따라서, 클럭 관리 유닛(3110A)은 프로세서(3100A)에서 지연 명령어(INS_DLY)가 실행될 때 시간 지연 구간 내에서의 클럭 게이팅 동작을 수행할 수 있다.
I/O 제어기(3400)는 I/O 디바이스들(3600-1 ~ 3600-K)을 제어하는 동작을 수행한다. I/O 제어기(3400)는 프로세서(3100A)로부터 I/O 커맨드를 수신하고, 수신된 I/O 커맨드에 기초하여 I/O 디바이스들(3600-1 ~ 3600-K)을 제어한다.
I/O 브리지(3500)는 프로세서(3100A)와 I/O 디바이스들(3600-1 ~ 3600-K) 간의 데이터 통신을 위한 채널을 제어하는 동작을 수행한다. 예로서, I/O 브리지(2140A)는 PCIe 브리지로 구현할 수 있다.
I/O 디바이스들(3600-1 ~ 3600-K)은 메모리 디바이스, SSD(Solid State Drive), 스마트 카드, 디지털 카메라 등이 될 수 있다.
도 23은 본 발명의 실시 예에 따른 클럭 관리 유닛이 적용되는 시스템 온 칩 구성의 또 다른 예(3000B)를 보여준다.
도 23을 참조하면, 시스템 온 칩(3000B)은 프로세서(3100B), 클럭 관리 유닛(3110B), 메모리(3200), 다수의 기능 블록들(3300-1 ~ 3300-N), I/O 제어기(3400), I/O 브리지(3500), 다수의 I/O 디바이스들(3600-1 ~ 3600-K) 및 버스(3700)를 포함한다.
메모리(3200) 및 다수의 기능 블록들(3300-1 ~ 3300-N)은 도 18에 도시된 메모리(2200) 및 다수의 기능 블록들(2300-1 ~ 2300-N)과 실질적으로 동일한 구성 요소에 해당된다. 그리고, I/O 제어기(3400), I/O 브리지(3500) 및 다수의 I/O 디바이스들(3600-1 ~ 3600-K)은 도 20에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
프로세서(3100B)는 버스(3700)를 통하여 접속된 클럭 관리 유닛(3110B), 메모리(3200), 다수의 기능 블록들(2300-1 ~ 2300-N) 및 I/O 제어기(3400)의 동작을 제어한다. 프로세서(3100B)는 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 디지털 카메라, 모바일 장치, 셋톱 박스(set-top-box), 스마트 카드 시스템, 서버 시스템 및 각종 전자 기기 등에 적용될 수 있다.
예로서, 프로세서(3100B)는 시간 지연 기능의 수행이 필요할 때 메모리(3200)로부터 지연 명령어(INS_DLY)를 읽어내어 프로세서(3100B) 내의 명령어 레지스터에 저장하는 명령어 패치 동작을 수행할 수 있다. 그리고, 프로세서(3100B)는 명령어 레지스터에 저장된 지연 명령어(INS_DLY)에 대한 디코딩 처리 및 실행 처리를 수행할 수 있다.
클럭 관리 유닛(3110B)은 도 2에서 설명한 클럭 관리 유닛(300)이 적용될 수 있다. 이에 따라서, 클럭 관리 유닛(3110B)은 프로세서(3100B)에서 지연 명령어(INS_DLY)가 실행될 때 시간 지연 구간 내에서의 클럭 게이팅 동작을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000A, 1000B; 집적 회로
2000A, 2000B, 3000A, 3000B; 시스템 온 칩
100A, 100B, 2100A, 2100B, 3100A, 3100B; 프로세서
110; 코어 프로세서 111; 레지스터 블록
112; 명령어 디코더 113; 제어 로직
114; ALU 115, 2400, 3700; 버스
120, 300,2110A, 2110B, 3110A, 3110B; 클럭 관리 유닛
200; 클럭 발생 유닛 410; 제어 회로
421; 스위칭 회로 422, 422'; 클럭 분주기
423; 타이머 회로 2200, 3200; 메모리
2300-1 ~ 2300-N, 3300-1 ~ 3300-N; 기능 블록
3400; I/O 제어기 3500; I/O 브리지
3600-1 ~ 3600-K; I/O 디바이스

Claims (20)

  1. 초기 설정된 지연 명령어가 호출되는 경우에 상기 지연 명령어에 상응하는 클럭 제어 인자 정보를 생성하는 코어 프로세서; 및
    상기 코어 프로세서와 결합되고, 상기 코어 프로세서로부터 제공받은 클럭 제어 인자 정보에 기초하여 결정된 타깃 시간 구간에서 상기 코어 프로세서로의 제1클럭 신호의 공급을 차단시키는 클럭 게이팅 처리를 수행하는 클럭 관리 유닛을 포함함을 특징으로 하는 집적 회로.
  2. 제1항에 있어서, 상기 클럭 관리 유닛은 상기 타깃 시간 구간 내에서 인터럽트 신호가 수신되는 경우에 상기 코어 프로세서에 대한 제1클럭 신호의 공급을 재개하는 동작을 수행하는 것을 특징으로 하는 집적 회로.
  3. 제2항에 있어서, 상기 클럭 관리 유닛은 상기 코어 프로세서에서 상기 인터럽트 신호에 따른 인터럽트 태스크를 마친 후에도 상기 타깃 시간 구간 내에 있으면 상기 코어 프로세서로 공급되는 제1클럭 신호를 차단시키는 동작을 재개하는 것을 특징으로 하는 집적 회로.
  4. 제1항에 있어서, 상기 클럭 관리 유닛은
    프로세서 외부로부터 입력되는 제2클럭 신호를 카운팅하여 상기 타깃 시간 구간을 측정하는 타이머 회로;
    상기 제1클럭 신호를 제1 단자로 입력하고, 스위칭 제어신호에 따라서 상기 제1클럭 신호가 제2단자로 출력되는 것을 허용하거나 차단시키는 스위칭 회로; 및
    상기 클럭 제어 인자 정보에 기초하여 상기 클럭 분주기, 상기 타이머 회로 및 상기 스위칭 회로 중의 적어도 하나의 동작을 제어하는 제어 회로를 포함하고,
    상기 제어 회로는 상기 타깃 시간 구간에서 상기 제1클럭 신호가 상기 제2단자로 출력되는 것을 차단하기 위한 논리 상태를 갖는 스위칭 제어신호를 생성시키며, 상기 제2단자는 상기 코어 프로세서의 클럭 신호 입력 단자에 접속되는 것을 특징으로 하는 집적 회로.
  5. 제1항에 있어서, 상기 클럭 관리 유닛은
    상기 제1클럭 신호를 입력하고, 상기 제1클럭 신호의 주파수를 분주비에 기초하여 낮춘 제2클럭 신호를 출력하는 클럭 분주기;
    상기 제2클럭 신호를 카운팅하여 상기 타깃 시간 구간을 측정하는 타이머 회로;
    상기 제1클럭 신호를 제1 단자로 입력하고, 스위칭 제어신호에 따라서 상기 제1클럭 신호가 제2단자로 출력되는 것을 허용하거나 차단시키는 스위칭 회로; 및
    상기 클럭 제어 인자 정보에 기초하여 상기 클럭 분주기, 상기 타이머 회로 및 상기 스위칭 회로 중의 적어도 하나의 동작을 제어하는 제어 회로를 포함하고,
    상기 제어 회로는 상기 타깃 시간 구간에서 상기 제1클럭 신호가 상기 제2단자로 출력되는 것을 차단하기 위한 논리 상태를 갖는 스위칭 제어신호를 생성시키며, 상기 제2단자는 상기 코어 프로세서의 클럭 신호 입력 단자에 접속되는 것을 특징으로 하는 집적 회로.
  6. 제5항에 있어서, 상기 타이머 회로는
    상기 지연 명령어가 실행되는 시점부터 상기 제2클럭 신호를 이용한 시간 길이를 측정하고, 상기 측정된 시간 길이가 상기 타깃 시간 구간의 길이와 일치하는 경우에 타이머 만료 신호를 생성시키는 것을 특징으로 하는 집적 회로.
  7. 제6항에 있어서, 상기 제어 회로는 상기 지연 명령어가 실행될 때 상기 제1클럭 신호가 상기 제2단자로 출력되는 것을 차단하기 위한 논리 상태를 갖는 스위칭 제어신호를 생성시키고, 상기 타이머 만료 신호가 생성될 때 상기 제1클럭 신호가 상기 제2단자로 출력되는 것을 허용하기 위한 논리 상태를 갖는 스위칭 제어신호를 생성시키는 것을 특징으로 하는 집적 회로.
  8. 제1항에 있어서, 상기 지연 명령어는 상기 코어 프로세서의 레지스터에 저장되어 있으며, 상기 지연 명령어는 연산 부호 필드, 스테터스 필드, 포스 게이팅 필드, 클럭 분주비 값을 나타내는 필드, 시간 지연양을 나타내는 필드를 포함하고, 상기 포스 게이팅 필드에는 인터럽트가 발생되더라도 시간 지연 처리를 수행하기 위한 정보를 설정하기 비트가 할당되는 것을 특징으로 하는 집적 회로.
  9. 제1항에 있어서, 상기 지연 명령어의 실행을 시작하는 시점부터 상기 코어 프로세서로 공급되는 제1클럭 신호를 차단시키는 클럭 게이팅 동작의 실행을 시작하는 시점 사이에 인터럽트가 발생되면, 상기 클럭 관리 유닛은 상기 인터럽트에 대한 태스크 처리를 완료할 때까지 상기 코어 프로세서로의 제1클럭 신호의 공급을 허용하는 동작을 수행하는 것을 특징으로 하는 집적 회로.
  10. 제1항에 있어서, 상기 코어 프로세서는 파이프라인 기법을 적용하여 명령어들을 처리하며, 상기 지연 명령어의 실행에 따른 클럭 게이팅 처리를 완료하고 나서 상기 지연 명령어 다음에 실행될 차기 명령어에 대한 실행 처리를 수행하는 것을 특징으로 하는 집적 회로.
  11. 제10항에 있어서, 상기 코어 프로세서는 상기 지연 명령어의 디코딩 동작과 상기 지연 명령어 다음에 실행될 차기 명령어에 대한 패치 동작을 동시에 처리하고, 상기 지연 명령어의 실행 동작과 상기 차기 명령어에 대한 디코딩 동작을 동시에 처리하고, 상기 지연 명령어의 실행 동작에 따른 클럭 게이팅 처리를 완료하고 나서 상기 디코딩 처리된 차기 명령어에 대한 실행 동작을 수행하는 것을 특징으로 하는 집적 회로.
  12. 코어 프로세서에서 초기 설정된 지연 명령어가 실행될 때 상기 지연 명령어에서 지정하는 타깃 시간 구간에서 클럭 게이팅 동작을 수행하기 위한 제1타입의 제어신호를 생성하는 제어 회로; 및
    제1클럭 신호를 입력받고, 상기 제1타입의 제어신호에 따라서 상기 타깃 시간 구간에서 상기 코어 프로세서의 클럭 입력 단자로 상기 제1클럭 신호가 출력되는 것을 차단시키는 동작을 수행하는 클럭 게이팅 회로를 포함함을 특징으로 하는 클럭 관리 유닛.
  13. 제12항에 있어서, 상기 제어 회로는 상기 타깃 시간 구간 이외의 구간에서는 제2타입의 제어신호를 생성하고, 상기 클럭 게이팅 회로는 상기 제2타입의 제어신호에 기초하여 상기 코어 프로세서의 클럭 입력 단자로 상기 제1클럭 신호가 출력되는 것을 허용하는 동작을 수행하는 것을 특징으로 하는 클럭 관리 유닛.
  14. 제12항에 있어서, 상기 제어 회로는 상기 타깃 시간 구간 내에서 인터럽트 신호가 수신되는 경우에 제3타입의 제어신호를 생성하고, 상기 클럭 게이팅 회로는 상기 제3타입의 제어신호에 기초하여 상기 인터럽트 신호에 따른 인터럽트 태스크가 종료되는 시점까지 상기 코어 프로세서의 클럭 입력 단자로 상기 제1클럭 신호가 출력되는 것을 허용하는 동작을 수행하는 것을 특징으로 하는 클럭 관리 유닛.
  15. 제14항에 있어서, 상기 제어 회로는 상기 타깃 시간 구간 내에서 상기 인터럽트 태스크가 종료될 때 제4타입의 제어신호를 생성하고, 상기 클럭 게이팅 회로는 상기 제4타입의 제어신호에 기초하여 상기 타깃 시간 구간이 끝나는 시점까지 상기 코어 프로세서의 클럭 입력 단자로 상기 제1클럭 신호가 출력되는 것을 차단하는 동작을 재개하는 것을 특징으로 하는 클럭 관리 유닛.
  16. 명령어들을 저장하는 메모리;
    제1클럭 신호를 이용하여 상기 메모리로부터 명령어를 읽어내어 처리하는 프로세서;
    상기 프로세서로 공급되는 상기 제1클럭 신호에 대한 게이팅 처리를 수행하는 클럭 관리 유닛; 및
    상기 프로세서와 결합되고, 상기 프로세서에서 실행되는 명령어에 따라서 동작하는 하나 이상의 기능 블록을 포함하고,
    상기 클럭 관리 유닛은 상기 프로세서에서 초기 설정된 지연 명령어가 호출되는 경우에 상기 지연 명령어에서 지정하는 타깃 시간 구간 동안에 상기 제1클럭 신호가 상기 프로세서로 공급되는 것을 차단시키는 동작을 수행하는 것을 특징으로 하는 시스템 온 칩.
  17. 제16항에 있어서, 상기 클럭 관리 유닛은
    제2클럭 신호를 이용하여 상기 타깃 시간 구간을 측정하는 타이머 회로;
    상기 제1클럭 신호를 제1 단자로 입력하고, 스위칭 제어신호에 따라서 상기 제1클럭 신호가 제2단자로 출력되는 것을 허용하거나 차단시키는 스위칭 회로; 및
    상기 클럭 제어 인자 정보에 기초하여 상기 클럭 분주기, 상기 타이머 회로 및 상기 스위칭 회로 중의 적어도 하나의 동작을 제어하는 제어 회로를 포함하고,
    상기 제어 회로는 상기 타깃 시간 구간에서 상기 제1클럭 신호가 상기 제2단자로 출력되는 것을 차단하기 위한 논리 상태를 갖는 스위칭 제어신호를 생성시키며, 상기 제2단자는 상기 프로세서의 클럭 신호 입력 단자에 접속되는 것을 특징으로 하는 시스템 온 칩.
  18. 프로세서에서 초기 설정된 지연 명령어가 호출되는 경우에 상기 지연 명령어에 기초하여 타이머 만료 시간을 설정하는 단계;
    상기 프로세서에서 상기 지연 명령어가 실행될 때 타이머 회로에서의 시간 측정 동작을 시작하는 단계;
    상기 타이머 회로에서의 시간 측정 동작 시작하고 나서 상기 타이머 만료 시간에 도달될 때까지의 타깃 시간 구간에서 상기 프로세서로의 제1클럭 신호의 공급을 차단하는 클럭 게이팅 동작을 수행하는 단계; 및
    상기 타이머 만료 시간에 도달될 때 상기 프로세서로의 상기 제1클럭 신호의 공급을 재개하는 동작을 수행하는 단계를 포함함을 특징으로 하는 클럭 관리 방법.
  19. 제18항에 있어서, 상기 타이머 회로에서의 시간 측정 동작 시작 시점부터 상기 타이머 만료 시간 사이에 상기 프로세서에서 처리할 인터럽트가 요청되는 경우에 상기 프로세서의 상기 제1클럭 신호의 공급을 재개하는 동작을 수행하는 단계를 더 포함함을 특징으로 하는 클럭 관리 방법.
  20. 제19항에 있어서,
    상기 프로세서에서 상기 요청된 인터럽트에 대한 태스크를 수행하는 단계; 및
    상기 인터럽트에 대한 태스크를 마친 후에도 상기 타이머 만료 시간에 도달되지 않은 경우에는 상기 프로세서로의 제1클럭 신호의 공급을 차단하는 클럭 게이팅 동작을 재개하는 단계를 더 포함함을 특징으로 하는 클럭 관리 방법.
KR1020150111210A 2015-08-06 2015-08-06 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법 KR102476357B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020150111210A KR102476357B1 (ko) 2015-08-06 2015-08-06 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
US15/185,505 US10983551B2 (en) 2015-08-06 2016-06-17 Clock management unit, integrated circuit including the clock management unit, system on chip, and method of operating the system on chip
DE102016214334.4A DE102016214334A1 (de) 2015-08-06 2016-08-03 Taktmanagementeinheit, integrierte schaltung, die die taktmanagementeinheit umfasst, ein-chip-system, und verfahren zum betreiben des ein-chip-systems
TW105124727A TWI762448B (zh) 2015-08-06 2016-08-04 時鐘管理電路、以及含有該時鐘管理電路的積體電路
CN201610642814.4A CN106444965B (zh) 2015-08-06 2016-08-08 时钟管理单元、包括其的集成电路和管理时钟的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150111210A KR102476357B1 (ko) 2015-08-06 2015-08-06 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20170017382A true KR20170017382A (ko) 2017-02-15
KR102476357B1 KR102476357B1 (ko) 2022-12-09

Family

ID=58053825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150111210A KR102476357B1 (ko) 2015-08-06 2015-08-06 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법

Country Status (4)

Country Link
US (1) US10983551B2 (ko)
KR (1) KR102476357B1 (ko)
CN (1) CN106444965B (ko)
TW (1) TWI762448B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718320B (zh) * 2016-01-18 2020-11-06 华为技术有限公司 一种时钟任务处理方法、装置及设备
US11099602B2 (en) * 2019-04-30 2021-08-24 International Business Machines Corporation Fault-tolerant clock gating
JP7422066B2 (ja) * 2020-12-28 2024-01-25 ルネサスエレクトロニクス株式会社 半導体装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950005217A (ko) * 1993-08-30 1995-03-20 켄 사쿠마 한국마늘의 껍질을 벗기는 기계
KR100846398B1 (ko) * 2001-08-28 2008-07-16 후지쯔 가부시끼가이샤 반도체 집적 회로 및 클록 제어 방법

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343363B1 (en) 1994-09-22 2002-01-29 National Semiconductor Corporation Method of invoking a low power mode in a computer system using a halt instruction
JPH11203266A (ja) * 1998-01-07 1999-07-30 Mitsubishi Electric Corp マイクロコンピュータ
US6671795B1 (en) 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
KR20030028560A (ko) 2000-08-04 2003-04-08 닛뽄덴끼 가부시끼가이샤 타이머 회로 및 상기 타이머 회로를 내장한 반도체 메모리
US6687838B2 (en) 2000-12-07 2004-02-03 Intel Corporation Low-power processor hint, such as from a PAUSE instruction
WO2003040948A1 (fr) 2001-11-08 2003-05-15 Fujitsu Limited Ordinateur et procede de commande
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7500126B2 (en) 2002-12-04 2009-03-03 Nxp B.V. Arrangement and method for controlling power modes of hardware resources
JP4575795B2 (ja) * 2005-01-31 2010-11-04 パナソニック株式会社 クロック供給回路、半導体システムおよびその設計方法
KR100808052B1 (ko) 2005-09-28 2008-03-07 주식회사 하이닉스반도체 반도체 메모리 장치
US7770050B2 (en) * 2006-05-03 2010-08-03 Sony Computer Entertainment Inc. Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
US7647509B2 (en) 2006-05-12 2010-01-12 Intel Corporation Method and apparatus for managing power in a processing system with multiple partitions
KR20090014692A (ko) 2007-08-07 2009-02-11 한국과학기술원 인터럽트 기반의 프로세서를 위한 인터럽트 대기 명령어를실행하는 인터럽트 처리 방법
US8762692B2 (en) 2007-09-27 2014-06-24 Intel Corporation Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode
CN101452337A (zh) 2008-12-18 2009-06-10 北京中星微电子有限公司 一种外接设备的控制方法和装置
US8156275B2 (en) 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
JP2011150422A (ja) 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
CN102955494A (zh) 2011-08-31 2013-03-06 北京中电华大电子设计有限责任公司 一种wlan芯片的时钟树实现方法和电路
US9009451B2 (en) 2011-10-31 2015-04-14 Apple Inc. Instruction type issue throttling upon reaching threshold by adjusting counter increment amount for issued cycle and decrement amount for not issued cycle
EP2898599B1 (en) 2012-09-19 2019-02-20 Qualcomm Incorporated Clock gating circuit for reducing dynamic power
US9053257B2 (en) 2012-11-05 2015-06-09 Advanced Micro Devices, Inc. Voltage-aware signal path synchronization
US8816743B1 (en) 2013-01-24 2014-08-26 Altera Corporation Clock structure with calibration circuitry
CN103116384B (zh) 2013-02-01 2016-01-20 山东华芯半导体有限公司 一种SoC系统时钟控制的方法和SoC
US9411360B2 (en) * 2014-01-13 2016-08-09 Apple Inc. Method to manage current during clock frequency changes
US9496851B2 (en) * 2014-09-10 2016-11-15 Qualcomm Incorporated Systems and methods for setting logic to a desired leakage state
US9672305B1 (en) * 2015-01-28 2017-06-06 Apple Inc. Method for gating clock signals using late arriving enable signals
CN107315448A (zh) 2017-06-26 2017-11-03 北方电子研究院安徽有限公司 一种低功耗多核SoC的时钟管理架构设计方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950005217A (ko) * 1993-08-30 1995-03-20 켄 사쿠마 한국마늘의 껍질을 벗기는 기계
KR100846398B1 (ko) * 2001-08-28 2008-07-16 후지쯔 가부시끼가이샤 반도체 집적 회로 및 클록 제어 방법

Also Published As

Publication number Publication date
CN106444965B (zh) 2021-06-25
TW201712464A (zh) 2017-04-01
KR102476357B1 (ko) 2022-12-09
TWI762448B (zh) 2022-05-01
CN106444965A (zh) 2017-02-22
US20170038791A1 (en) 2017-02-09
US10983551B2 (en) 2021-04-20

Similar Documents

Publication Publication Date Title
US9225343B2 (en) Electronics device capable of efficient communication between components with asyncronous clocks
JP5074389B2 (ja) Simd並列処理の自動選択を備えたマイクロプロセッサ
US7958333B2 (en) Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
US20180150099A1 (en) Low power autonomous peripheral management
TWI432949B (zh) 經由微架構頻寬節流之處理器電力消耗控制及電壓降
JP5047542B2 (ja) マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)
US8341436B2 (en) Method and system for power-state transition controllers
JP4621706B2 (ja) ハードウェア制御のパワー管理機能を備えたコンピュータ・システム
US20090193234A1 (en) Sequencer controlled system and method for controlling timing of operations of functional units
JP2002544618A (ja) 電力消費を低減するシステムおよび方法
KR102476357B1 (ko) 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
JP2001350738A (ja) フラッシュメモリ内蔵マイクロコンピュータ
US20150301915A1 (en) Processor with debug pipeline
US6779122B2 (en) Method and apparatus for executing a long latency instruction to delay the restarting of an instruction fetch unit
JP2001022582A (ja) 低消費電力マイクロプロセッサおよびマイクロプロセッサシステム
US7114089B2 (en) System for controlling operation of a processor based on information contained within instruction word
US8782293B1 (en) Intra-processor operation control
US6993674B2 (en) System LSI architecture and method for controlling the clock of a data processing system through the use of instructions
CN107667344B (zh) 可变长度指令处理模式
CN113760364B (zh) 逻辑器件的控制器
JP2002182902A (ja) メモリデータアクセス構造およびその方法
JP2004199630A (ja) データ処理装置
JPH0876876A (ja) マイクロプロセッサのクロック供給制御回路
JP2007213415A (ja) メモリ装置
JP2005322266A (ja) 低消費電力マイクロプロセッサおよびマイクロプロセッサシステム

Legal Events

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