KR20190094364A - 클럭 게이팅 인에이블 생성 - Google Patents

클럭 게이팅 인에이블 생성 Download PDF

Info

Publication number
KR20190094364A
KR20190094364A KR1020197016577A KR20197016577A KR20190094364A KR 20190094364 A KR20190094364 A KR 20190094364A KR 1020197016577 A KR1020197016577 A KR 1020197016577A KR 20197016577 A KR20197016577 A KR 20197016577A KR 20190094364 A KR20190094364 A KR 20190094364A
Authority
KR
South Korea
Prior art keywords
clock
pipeline
gating
clock signal
counter
Prior art date
Application number
KR1020197016577A
Other languages
English (en)
Other versions
KR102143089B1 (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 퀄컴 인코포레이티드
Publication of KR20190094364A publication Critical patent/KR20190094364A/ko
Application granted granted Critical
Publication of KR102143089B1 publication Critical patent/KR102143089B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • G06F17/505
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/04Clock gating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • G06F2217/78
    • 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
    • Y02D10/128

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Power Sources (AREA)
  • Information Transfer Systems (AREA)
  • Image Processing (AREA)

Abstract

일 실시예에서, 파이프라인을 위한 클럭-게이팅 시스템은 파이프라인에 클럭 신호를 전달하거나 또는 게이팅하도록 구성된 클럭-게이팅 디바이스, 및 클럭 제어기를 포함한다. 클럭 제어기는, 파이프라인의 입력에서의 입력 패킷들의 수를 추적하고, 파이프라인의 출력에서의 출력 패킷들의 수를 추적하고, 입력 패킷들의 수 및 출력 패킷들의 수에 기초하여 클럭 신호를 게이팅할지 또는 전달할지를 결정하고, 클럭 신호를 전달하라는 결정이 이루어지면 클럭 신호를 전달하도록 클럭-게이팅 디바이스에게 명령하며, 그리고 클럭 신호를 게이팅하라는 결정이 이루어지면 클럭 신호를 게이팅하도록 클럭-게이팅 디바이스에게 명령하도록 구성된다.

Description

클럭 게이팅 인에이블 생성
[0001] 본 출원은, 2016년 12월 13일자로 미국 특허 및 상표청에 출원된 가출원 번호 제62/433,547호, 및 2017년 8월 1일자로 미국 특허 및 상표청에 출원된 정규 출원 번호 제15/666,107호에 대한 우선권 및 이들의 이익을 주장하며, 이들의 전체 내용은 인용에 의해 본원에 통합된다.
[0002] 본 개시내용의 양상들은 클럭 게이팅(clock gating)에 관한 것으로, 더욱 상세하게는 클럭 게이팅 인에이블(enable) 생성에 관한 것이다.
[0003] 모바일 디바이스의 배터리 수명을 연장하기 위해서는 모바일 디바이스에서의 전력 소모를 감소시키는 것이 중요하다. 모바일 디바이스에서의 칩(다이)의 전력 소모에 대한 상당한 원인 제공자는 칩 상의 트랜지스터들의 스위칭에 기인하는 동적 전력이다. 이 점과 관련하여, 칩 상에서의 동적 전력 소모를 감소시키기 위해 다양한 전력 감소 방식들이 개발되었다. 하나의 방식은, 칩 상의 회로(예컨대, 파이프라인)가 사용되지 않을 때(예컨대, 데이터를 프로세싱하지 않을 때) 그 회로에 대한 클럭 신호를 게이팅하는 것을 수반한다. 회로에 대한 클럭 신호를 게이팅하는 것은 회로의 트랜지스터들이 스위칭하는 것을 금지하여서, 동적 전력을 감소시킨다.
[0004] 다음은, 하나 이상의 실시예들의 기본적인 이해를 제공하기 위하여 그러한 실시예들의 간략화된 요약을 제시한다. 이러한 요약은 모든 고려된 실시예들의 광범위한 개요가 아니며, 모든 실시예들의 핵심적인 또는 중요한 엘리먼트들을 식별하지도 임의의 또는 모든 실시예들의 범위를 서술하지도 않는 것으로 의도된다. 이러한 요약의 유일한 목적은, 추후에 제시되는 더욱 상세한 설명에 대한 서론으로서 간략화된 형태로 하나 이상의 실시예들의 일부 개념들을 제시하는 것이다.
[0005] 하나의 양상은 파이프라인을 위한 클럭-게이팅 시스템에 관한 것이다. 클럭-게이팅 시스템은 파이프라인에 클럭 신호를 전달하거나 또는 게이팅하도록 구성된 클럭-게이팅 디바이스, 및 클럭 제어기를 포함한다. 클럭 제어기는, 파이프라인의 입력에서의 입력 패킷들의 수를 추적하고, 파이프라인의 출력에서의 출력 패킷들의 수를 추적하고, 입력 패킷들의 수 및 출력 패킷들의 수에 기초하여 클럭 신호를 게이팅할지 또는 전달할지를 결정하고, 클럭 신호를 전달하라는 결정이 이루어지면 클럭 신호를 전달하도록 클럭-게이팅 디바이스에게 명령하며, 그리고 클럭 신호를 게이팅하라는 결정이 이루어지면 클럭 신호를 게이팅하도록 클럭-게이팅 디바이스에게 명령하도록 구성된다.
[0006] 제2 양상은 클럭 게이팅을 위한 방법에 관한 것이다. 방법은, 파이프라인의 입력에서의 입력 패킷들의 수를 추적하는 단계, 파이프라인의 출력에서의 출력 패킷들의 수를 추적하는 단계, 및 입력 패킷들의 수 및 출력 패킷들의 수에 기초하여 파이프라인에 클럭 신호를 전달할지 또는 게이팅할지를 결정하는 단계를 포함한다. 방법은 또한, 클럭 신호를 전달하라는 결정이 이루어지면 파이프라인에 클럭 신호를 전달하는 단계, 및 클럭 신호를 게이팅하라는 결정이 이루어지면 클럭 신호를 게이팅하는 단계를 포함한다.
[0007] 전술한 그리고 관련된 목적들의 달성을 위해, 하나 이상의 실시예들은, 이하에서 완전히 설명되고 특히 청구항들에서 언급된 특징들을 포함한다. 다음의 설명 및 첨부된 도면들은, 하나 이상의 실시예들의 소정의 예시적인 양상들을 상세히 제시한다. 그러나, 이들 양상들은, 다양한 실시예들의 원리들이 이용될 수 있는 다양한 방식들 중 오직 몇몇만을 표시하며, 설명된 실시예들은 모든 그러한 양상들 및 그들의 등가물들을 포함하는 것으로 의도된다.
[0008] 도 1은 이미지 프로세싱 파이프라인의 예를 도시한다.
[0009] 도 2a는 유한 상태 머신을 포함하는 클럭-게이팅 시스템의 예를 도시한다.
[0010] 도 2b는 도 2a의 유한 상태 머신에 대한 예시적인 상태 다이어그램을 도시한다.
[0011] 도 3은 파이프라인의 각각의 스테이지에서 유효 데이터 및/또는 준비 신호를 체크하도록 구성된 클럭-게이팅 시스템의 예를 도시한다.
[0012] 도 4는 본 개시내용의 양상들에 따른, 클럭-게이팅 시스템의 예를 도시한다.
[0013] 도 5는 본 개시내용의 소정의 양상들에 따른, 클럭 제어기의 예시적인 구현을 도시한다.
[0014] 도 6은 본 개시내용의 소정의 양상들에 따른, 도 5의 클럭 제어기가 클럭 제어기의 타이밍 동작들을 위한 클럭 신호를 수신하는 예를 도시한다.
[0015] 도 7은 상이한 클럭 게이팅 방법들 및 상이한 파이프라인 깊이들에 대한 칩 면적(area)들의 예들을 도시하는 표이다.
[0016] 도 8은 본 개시내용의 소정의 양상들에 따른, 클럭-게이팅 시스템에서 사용될 수 있는 클럭 게이팅 셀(CGC; clock gating cell)의 예를 도시한다.
[0017] 도 9는 본 개시내용의 소정의 양상들에 따른, 클럭 게이팅을 위한 방법을 예시하는 흐름도이다.
[0018] 첨부된 도면들과 관련하여 아래에서 제시된 상세한 설명은 다양한 구성들의 설명으로서 의도되며, 본원에서 설명된 개념들이 실시될 수 있는 유일한 구성들을 표현하는 것으로 의도되지 않는다. 상세한 설명은 다양한 개념들의 완전한 이해를 제공하는 목적을 위해 특정 세부사항들을 포함한다. 그러나, 이러한 개념들이 이러한 특정 세부사항들 없이 실시될 수 있다는 것이 당업자들에게 자명할 것이다. 일부 사례들에서, 잘 알려진 구조들 및 컴포넌트들은 그러한 개념들을 불명료하게 하는 것을 방지하기 위하여 블록 다이어그램 형태로 도시된다.
[0019] 시스템은, 데이터 소스로부터의 데이터를 프로세싱하고 프로세싱된 데이터를 데이터 싱크에 출력하도록 구성된 파이프라인을 포함할 수 있다. 파이프라인은 (예컨대, 순차적으로) 데이터를 프로세싱하는 다수의 파이프라인 스테이지들(프로세싱 유닛들 또는 엘리먼트들로 또한 지칭됨)을 포함한다. 예컨대, 이미지 데이터 소스, 이를테면 카메라 센서 또는 메모리로부터의 이미지 데이터를 프로세싱하기 위해 파이프라인이 사용될 수 있다.
[0020] 이 점과 관련하여, 도 1은 이미지 프로세싱 파이프라인(110)(이미지 신호 프로세싱(ISP; image signal processing) 모듈로 또한 지칭됨)의 예를 도시한다. 이미지 프로세싱 파이프라인(110)은 데이터 소스(105)(예컨대, 카메라 센서, 메모리 등)로부터 데이터(예컨대, 이미지 데이터)를 수신한다. 이미지 프로세싱 파이프라인(110)은 수신된 데이터를 프로세싱하고, 프로세싱된 데이터(예컨대, 프로세싱된 이미지 데이터)를 데이터 싱크(115)(예컨대, 디스플레이 프로세서, 중앙 프로세싱 유닛(CPU; central processing unit), 메모리 등)에 출력한다. 이미지 프로세싱 파이프라인(110)은 데이터를 프로세싱하기 위한 다수의 파이프라인 스테이지들을 포함한다. 이미지 프로세싱은 잡음 필터링, 색 정정, 톤 매핑, 디모자이킹(demosaicing) 등 중 하나 이상을 포함할 수 있다.
[0021] 이미지 프로세싱 파이프라인(110)은 이미지 프로세싱 파이프라인(110)의 타이밍 동작들을 위한 클럭 신호("clk"로 표기됨)를 수신한다. 클럭 신호(clk)는, 이미지 프로세싱 파이프라인(110)이 데이터를 프로세싱하는 데 요구된다. 그러나, 프로세싱될 필요가 있는 데이터가 이미지 프로세싱 파이프라인(110)에 없는 소정의 시간 기간들(예컨대, 프레임들 사이)이 있다. 이러한 시간 기간들 동안, 전력을 절약하기 위해 이미지 프로세싱 파이프라인(110)에 대한 클럭 신호(clk)를 게이팅(디스에이블(disable))하는 것이 바람직하다. 클럭 신호(clk)를 게이팅하는 것은, 프로세싱될 필요가 있는 데이터가 파이프라인(110)에 없을 때 이미지 프로세싱 파이프라인(110)에서의 트랜지스터들의 스위칭을 정지시킴으로써 동적 전력 소모를 감소시킨다.
[0022] 도 2a는 하나의 접근법에 따른 클럭 게이팅의 예를 도시한다. 이 접근법에서, 클럭-게이팅 시스템(215)은 클럭 인에이블 유한 상태 머신(FSM; finite state machine)(220) 및 클럭-게이팅 디바이스(225)를 포함한다. 아래에서 추가로 논의된 바와 같이, 클럭-게이팅 디바이스(225)는 FSM(220)의 제어 하에서 이미지 프로세싱 파이프라인(210)에 대한 클럭 신호(clk)를 선택적으로 게이팅하도록 구성된다.
[0023] 이 예에서, 이미지 프로세싱 파이프라인(210)은 데이터 소스(도 2a에서 도시되지 않음)로부터 유효 데이터(예컨대, 픽셀 데이터)를 프레임들로 수신하며, 여기서, 각각의 프레임은 유효 데이터의 다수의 라인들을 포함한다. 도 2a에서, 데이터 소스로부터 이미지 프로세싱 파이프라인(210)에 의해 수신되는 유효 데이터는 "rx_vld"로 표기되고, 이미지 프로세싱 파이프라인(210)에 의해 데이터 싱크(도 2a에서 도시되지 않음)에 출력되는 유효 데이터는 "tx_vld"로 표기된다.
[0024] 이 예에서, 이미지 프로세싱 파이프라인(210)은 데이터 소스로부터 수신 제어 신호("rx_ctrl"로 표기됨)를 수신하고, 데이터 싱크에 송신 제어 신호("tx_ctrl"로 표기됨)를 출력한다. 수신 제어 신호(rx_ctrl)는 착신(incoming) 프레임의 시작(start)("rxsof"로 표기됨), 착신 프레임의 끝(end)("rxeof"로 표기됨), 착신 라인의 시작("rxsol"로 표기됨) 및 착신 라인의 끝("rxeol"로 표기됨)을 표시하는 마커들을 포함한다. 송신 제어 신호(tx_ctrl)는 발신(outgoing) 프레임의 시작("txsof"로 표기됨), 발신 프레임의 끝("txeof"로 표기됨), 발신 라인의 시작("txsol"로 표기됨) 및 발신 라인의 끝("txeol"로 표기됨)을 표시하는 마커들을 포함한다.
[0025] 동작 중에, FSM(220)은 수신 제어 신호(rx_ctrl) 및 송신 제어 신호(tx_ctrl)를 수신하고, 수신된 제어 신호들에 기초하여 클럭 신호(clk)를 게이팅(디스에이블)하도록 클럭-게이팅 디바이스(225)에게 명령할지 또는 클럭 신호(clk)를 전달(인에이블)하도록 클럭-게이팅 디바이스(225)에게 명령할지를 결정한다. 예컨대, FSM(220)은, 인접한 프레임들 사이에는 유효 데이터가 없다고 가정하여, 발신 프레임의 끝(txeof)과 다음 착신 프레임의 시작(rxsof) 사이에는 클럭 신호(clk)를 게이팅(디스에이블)하도록 클럭-게이팅 디바이스(225)에게 명령할 수 있다. FSM(220)은 또한, 인접한 라인들 사이에는 유효 데이터가 없다고 가정하여, 발신 라인의 끝(txeol)과 다음 착신 라인의 시작(rxsol) 사이에는 클럭 신호(clk)를 게이팅(디스에이블)하도록 클럭-게이팅 디바이스(225)에게 명령할 수 있다. 따라서, FSM(220)은 전력 소모를 감소시키기 위해 인접한 프레임들 사이에는 그리고 프레임 내의 인접한 라인들 사이에는 클럭 신호(clk)를 게이팅(디스에이블)할 수 있다. 도 2b는 클럭 신호(clk)가 유휴 상태에서 게이팅되는 소정의 양상들에 따른, FSM(220)에 대한 예시적인 상태 머신 다이어그램을 도시한다.
[0026] 이 접근법의 단점은, 액티브 라인 내에 하나 이상의 버블들이 있을 때 FSM(220)이 클럭 신호(clk)를 게이팅(디스에이블)하지 않는다는 것이며, 여기서, 버블은 유효 데이터가 없는 갭이다. 따라서, 이러한 접근법은 파이프라인(210)에 유효 데이터가 없는 소정의 시간 기간들 동안 클럭 신호(clk)를 게이팅(디스에이블)할 기회들을 놓쳐서, 전력을 낭비한다.
[0027] 도 3은 다른 접근법에 따른 클럭 게이팅의 예를 도시한다. 이 접근법에서, 이미지 프로세싱 파이프라인(310)은 데이터 소스(도 3에서 도시되지 않음)로부터 유효 데이터(rx_vld)를 수신하고, 데이터 싱크(도 3에서 도시되지 않음)에 유효 데이터(tx_vld)를 출력한다. 부가하여, 이미지 프로세싱 파이프라인(310)은 이미지 프로세싱 파이프라인(310)이 데이터 소스로부터 유효 데이터를 수신할 준비가 됨을 데이터 소스에게 표시하기 위해 데이터 소스에 수신 준비 신호("rx_rdy"로 표기됨)를 출력한다. 이미지 프로세싱 파이프라인(310)은 또한, 데이터 싱크가 이미지 프로세싱 파이프라인(310)으로부터 유효 데이터를 수신할 준비가 됨을 표시하는 송신 준비 신호("tx_rdy"로 표기됨)를 데이터 싱크로부터 수신한다.
[0028] 이 예에서, 이미지 프로세싱 파이프라인(310)은 이미지 프로세싱 파이프라인(310)에서의 상이한 지점들에 유효 데이터(예컨대, 픽셀 데이터)를 래치하기 위한 래치들(315-1 내지 315-3), 및 상이한 파이프라인 스테이지들에서 유효 데이터를 프로세싱하도록 구성된 프로세싱 유닛들(320-1 내지 320-3)(예컨대, 조합 로직(combinational logic))을 포함한다. 이미지 프로세싱 파이프라인(310)은 또한, 수신 준비 신호(rx_rdy)를 생성하기 위한 로직(325-1 내지 325-3)을 포함한다. 예컨대, 로직(325-1 내지 325-3)은 유효 데이터에 대해 래치들을 체크할 수 있고, 파이프라인(310)이 데이터 소스로부터 추가 유효 데이터를 수신할 준비가 되어 있는지 여부를 결정하기 위해 송신 준비 신호(tx_rdy)를 체크할 수 있다. 예컨대, 로직(325-1 내지 325-3)은, 래치들이 풀(full)이고 송신 준비 신호(tx_rdy)가 어서트되지(asserted) 않으면, 수신 준비 신호(rx_rdy)를 디-어서트(de-assert)할 수 있다. 이 경우, 파이프라인(310)은 풀일 수 있고, 추가 유효 데이터를 위한 공간(room)을 파이프라인(310)에 만들기 위해 데이터 싱크에 유효 데이터를 출력(송신)할 수 없을 수 있다. 래치들(315-1 내지 315-3), 프로세싱 유닛들(320-1 내지 320-3) 및/또는 로직(325-1 내지 325-3)은 클럭 신호(clk)(도 3에서 도시되지 않음)를 사용하여 타이밍될 수 있다.
[0029] 이 예에서, 클럭-게이팅 시스템은 파이프라인(310)에 임의의 유효 데이터가 있는지 여부를 체크하는 클럭-게이팅 제어 로직(330)(도 3에서 OR 게이트로서 표현됨)을 포함한다. 클럭-게이팅 제어 로직(330)은, 유효 데이터 및/또는 준비 신호에 대해 파이프라인 스테이지들의 각각의 파이프라인 스테이지를 체크함으로써 이를 수행한다. 클럭-게이팅 제어 로직(330)이 파이프라인 스테이지들 중 적어도 하나에서 유효 데이터 및/또는 준비 신호를 검출하면, 클럭-게이팅 제어 로직(330)은 이미지 프로세싱 파이프라인(310)에 대한 클럭 신호(clk)를 인에이블(전달)한다. 클럭-게이팅 제어 로직(330)이 어떤 유효 데이터 및/또는 준비 신호도 검출하지 않으면, 클럭-게이팅 제어 로직(330)은 클럭 신호(clk)를 디스에이블(게이팅)한다.
[0030] 도 2a를 참조하여 위에서 논의된 이전의 클럭-게이팅 접근법과는 달리, 이 접근법은 액티브 라인 내의 버블(유효 데이터가 없는 갭) 동안 클럭 신호(clk)를 게이팅(디스에이블)할 수 있다. 그 이유는, 이 접근법이 파이프라인(310)에 유효 데이터가 없을 때 클럭 신호(clk)를 게이팅(디스에이블)하기 때문이다. 그러나, 이 접근법은 잠재적으로, 파이프라인 깊이가 클 때, 클럭 주파수들이 높을 때 등의 경우 타이밍 관련 이슈들로 이어질 수 있다. 그 이유는, 파이프라인 깊이(파이프라인 스테이지들의 수)가 증가함에 따라 클럭-게이팅 제어 로직(330)으로의 팬 인(fan in)(즉, 입력들의 수)이 증가하기 때문이다. 팬 인의 증가는 클럭-게이팅 제어 로직(330)에서의 전파 지연들을 증가시키며, 이는 클럭-게이팅 제어 로직(330)이 특히 고주파수들에서 적절한 동작을 위한 소정의 타이밍 요건들을 충족시키는 것을 더욱 어렵게 한다. 결과적으로, 이 접근법을 사용하여 파이프라인(310)을 스케일 업(scale up)하는 것은 어렵다.
[0031] 도 4는 본 개시내용의 소정의 양상들에 따른 클럭-게이팅 시스템(415)을 도시한다. 클럭-게이팅 시스템(415)은 클럭 제어기(420) 및 클럭-게이팅 디바이스(425)를 포함한다. 아래에서 추가로 논의된 바와 같이, 클럭-게이팅 디바이스(425)는 클럭 제어기(420)의 제어 하에서 이미지 프로세싱 파이프라인(410)에 대한 클럭 신호(clk)를 선택적으로 게이팅하도록 구성된다.
[0032] 동작 중에, 이미지 프로세싱 파이프라인(410)은 데이터 소스로부터 유효 데이터(예컨대, 픽셀 데이터)를 패킷들로 수신하고, 데이터 싱크에 유효 데이터(예컨대, 픽셀 데이터)를 패킷들로 출력한다. 각각의 패킷은 N 비트의 유효 데이터(예컨대, 8 내지 14 비트)를 포함할 수 있다. 클럭 제어기(420)는 이미지 프로세싱 파이프라인(410)의 입력에서의 입력 패킷들의 수(이미지 프로세싱 파이프라인(410)에 의해 수신된 패킷들의 수)를 추적한다. 클럭 제어기(420)는 또한, 이미지 프로세싱 파이프라인(410)의 출력에서의 출력 패킷들의 수(이미지 프로세싱 파이프라인(410)에 의해 출력된 패킷들의 수)를 추적한다. 일 예에서, 클럭 제어기(420)는 수신 준비 신호(rx_rdy)가 어서트될 때 입력 패킷들의 수를 추적하고, 송신 준비 신호(tx_rdy)가 어서트될 때 출력 패킷들의 수를 추적한다. 다른 예에서, 클럭 제어기(420)는, 각각, 수신 준비 신호(rx_rdy) 및 송신 준비 신호(tx_rdy)와 독립적으로 입력 패킷들의 수를 추적하고 출력 패킷들의 수를 추적한다.
[0033] 그런 다음, 클럭 제어기(420)는 이미지 프로세싱 파이프라인(410)이 비어 있는지(empty)(파이프라인(410)에 유효 데이터가 없는지) 여부를 결정하기 위해 입력 패킷들의 수와 출력 패킷들의 수를 비교한다. 예컨대, 클럭 제어기(420)는 입력 패킷들의 수와 출력 패킷들의 수가 일치할 때 파이프라인(410)이 비어 있다고 결정할 수 있고, 입력 패킷들의 수와 출력 패킷들의 수가 일치하지 않을 때 파이프라인(410)이 비어 있지 않다고 결정할 수 있다.
[0034] 클럭 제어기(420)가 파이프라인(410)이 비어 있다고 결정하면, 클럭 제어기(420)는 전력을 절약하기 위해 파이프라인(410)에 대한 클럭 신호(clk)를 게이팅(디스에이블)하도록 클럭-게이팅 디바이스(425)에게 명령할 수 있다. 일 예에서, 파이프라인(410)이 비어 있다고 결정한 후에, 클럭 제어기(420)는 또한, 파이프라인(410)의 입력에 유효 데이터의 착신 패킷이 있는지 여부를 체크할 수 있다. 클럭 제어기(420)가 유효 데이터의 착신 패킷을 검출하지 않으면, 클럭 제어기(420)는 파이프라인(410)에 대한 클럭 신호(clk)를 게이팅(디스에이블)하도록 클럭-게이팅 디바이스(425)에게 명령할 수 있다.
[0035] 클럭 제어기(420)가 파이프라인(410)이 비어 있지 않다고 결정하면, 클럭 제어기(420)는 클럭 신호(clk)를 인에이블(언게이팅)된 상태로 남겨 둘 수 있다.
[0036] 파이프라인(410)에 대한 클럭 신호(clk)가 게이팅(디스에이블)된 후에, 클럭 제어기(420)는 유효 데이터의 입력 패킷에 대해 파이프라인(410)의 입력을 모니터링할 수 있다. 클럭 제어기(420)가 입력 패킷을 검출하면, 파이프라인(410)이 입력 패킷을 프로세싱하는 것을 시작할 수 있도록, 클럭 제어기(420)는 클럭 신호(clk)를 인에이블(전달)한다. 클럭 제어기(420)가 입력 패킷을 검출하지 않으면, 클럭 제어기(420)는 클럭 신호(clk)를 디스에이블(게이팅)된 상태로 남겨 둔다. 일 예에서, 클럭 제어기(420)는 수신 준비 신호(rx_rdy)가 어서트될 때 입력 패킷에 대해 파이프라인(410)의 입력을 모니터링한다. 이 예에서, 파이프라인(410)은 클럭 신호(clk)가 게이팅될 때 수신 준비 신호(rx_rdy)를 홀딩한다. 다른 예에서, 클럭 제어기(420)는 수신 준비 신호(rx_rdy)와 독립적으로 입력 패킷에 대해 파이프라인(410)의 입력을 모니터링한다.
[0037] 클럭 제어기(420)가 액티브 라인 내의 버블 동안 클럭 신호(clk)를 게이팅할 수 있다는 점에서, 클럭 제어기(420)는 도 2a를 참조하여 위에서 논의된 제1 클럭-게이팅 접근법보다 유리하다. 그 이유는, 버블 동안 파이프라인(410)이 비어 있게 될 때 클럭 제어기(420)가 클럭 신호(clk)를 게이팅하기 때문이다.
[0038] 추가로, 클럭 제어기(420)가 도 3에서 도시된 클럭-게이팅 제어 로직(330)과 비교하여 작은 팬 인(입력들의 수)을 갖는다는 점에서, 클럭 제어기(420)는 도 3을 참조하여 위에서 논의된 제2 클럭-게이팅 접근법보다 유리하다. 그 이유는, 클럭 제어기(420)가 유효 데이터 및/또는 준비 신호에 대해 파이프라인(410)의 각각의 파이프라인 스테이지를 체크하는 대신에 파이프라인(410)의 입력 및 출력을 체크하기 때문이다. 결과적으로, 클럭 제어기(420)의 팬 인은 더 많은 파이프라인 스테이지들이 부가됨에 따라 증가할 필요가 없으며, 이는 이 접근법을 더욱 스케일러블(scalable)하게 한다. 이 접근법의 비교적 작은 팬 인은 위에서 논의된 제2 클럭-게이팅 접근법과 연관된 타이밍 이슈들을 완화시킨다.
[0039] 도 5는 본 개시내용의 소정의 양상들에 따른, 클럭 제어기(420)의 예시적인 구현을 도시한다. 이 예에서, 클럭 제어기(420)는 제1 제어 디바이스(510), 제1 카운터(520), 제2 제어 디바이스(515), 제2 카운터(525), 비교 디바이스(540) 및 클럭 제어 디바이스(550)를 포함한다. 아래에서 추가로 논의된 바와 같이, 제1 카운터(520)는 입력 패킷들의 수를 카운트하도록 구성되고, 제2 카운터(515)는 출력 패킷들의 수를 카운트하도록 구성된다. 각각의 카운터는 최대 카운터 값에 도달할 때 랩 어라운드(wrap around)하는 랩-어라운드 카운터일 수 있다.
[0040] 동작 중에, 제1 제어 디바이스(510)는 (예컨대, 수신 준비 신호(rx_rdy)가 어서트될 때) 유효 데이터의 입력 패킷들에 대해 파이프라인(410)의 입력을 모니터링한다. 예컨대, 각각의 착신 패킷은 패킷 표시자(예컨대, 구분 문자)에 의해 표시될 수 있다. 패킷 표시자는 패킷의 시작 또는 패킷의 끝에 위치될 수 있다. 이 예에서, 제1 제어 디바이스(510)는 개개의 패킷 표시자를 검출함으로써 입력 패킷을 검출할 수 있다. 제1 제어 디바이스(510)가 입력 패킷을 검출할 때마다, 제1 제어 디바이스(510)는 제1 카운터(520)의 카운트 값을 증분(increment)시킬 수 있다. 따라서, 이 예에서, 제1 카운터(520)는 입력 패킷들의 수를 추적한다.
[0041] 제2 제어 디바이스(515)는 (예컨대, 송신 준비 신호(tx_rdy)가 어서트될 때) 유효 데이터의 출력 패킷들에 대해 파이프라인(410)의 출력을 모니터링한다. 예컨대, 각각의 발신 패킷은 패킷 표시자(예컨대, 구분 문자)에 의해 표시될 수 있다. 패킷 표시자는 패킷의 시작 또는 패킷의 끝에 위치될 수 있다. 이 예에서, 제2 제어 디바이스(515)는 개개의 패킷 표시자를 검출함으로써 출력 패킷을 검출할 수 있다. 제2 제어 디바이스(515)가 출력 패킷을 검출할 때마다, 제2 제어 디바이스(515)는 제2 카운터(525)의 카운트 값을 증분시킬 수 있다. 따라서, 이 예에서, 제2 카운터(525)는 출력 패킷들의 수를 추적한다.
[0042] 비교 디바이스(540)는 제1 카운터(520)의 카운트 값과 제2 카운터(525)의 카운트 값을 비교한다. 카운트 값들이 일치하면, 비교 디바이스(540)는 파이프라인(410)이 비어 있다고 결정한다. 카운트 값들이 일치하지 않으면, 비교 디바이스(540)는 파이프라인(410)이 비어 있지 않다고 결정한다. 그런 다음, 비교 디바이스(540)는 비교에 기초하여 빈 플래그를 생성하고, 여기서, 빈 플래그(empty flag)는 파이프라인(410)이 비어 있는지 여부를 표시한다. 예컨대, 빈 플래그는, 파이프라인(410)이 비어 있다는 결정이 이루어질 때 제1 로직 값(예컨대, 1)을 가질 수 있고, 파이프라인(410)이 비어 있지 않다는 결정이 이루어질 때 제2 로직 값(예컨대, 0)을 가질 수 있다.
[0043] 클럭 제어 디바이스(550)는 비교 디바이스(540)로부터 빈 플래그를 수신하도록 구성된다. 빈 플래그가 파이프라인이 비어 있지 않다고 표시하면, 클럭 제어 디바이스(550)는 클럭 신호(clk)를 인에이블(언게이팅)된 상태로 남겨 둘 수 있다. 이 경우, 클럭-게이팅 디바이스(425)는 파이프라인(410)에 클럭 신호(clk)를 전달한다. 빈 플래그가 파이프라인이 비어 있다고 표시하면, 클럭 제어 디바이스(550)는 파이프라인(410)에 대한 클럭 신호(clk)를 게이팅(디스에이블)하도록 클럭-게이팅 디바이스(425)에게 명령할 수 있다. 일 예에서, 빈 플래그가 파이프라인이 비어 있다고 표시하면, 클럭 제어 디바이스(550)는 또한, 파이프라인(410)의 입력에 유효 데이터의 착신 패킷이 있는지 여부를 체크할 수 있다. 클럭 제어 디바이스(550)가 유효 데이터의 착신 패킷을 검출하지 않으면, 클럭 제어 디바이스(550)는 파이프라인(410)에 대한 클럭 신호(clk)를 게이팅(디스에이블)하도록 클럭-게이팅 디바이스(425)에게 명령할 수 있다. 이 예에서, 클럭 제어 디바이스(550)는 개개의 패킷 표시자(예컨대, 구분 문자)를 검출함으로써 착신 패킷을 검출할 수 있다. 클럭-게이팅 디바이스(425)가 클럭 신호(clk)를 게이팅(디스에이블)할 때, 클럭-게이팅 디바이스(425)는 클럭 신호(clk)의 로직 상태와 독립적으로 파이프라인(410)에 일정한 로직 상태(0 또는 1)를 출력한다.
[0044] 파이프라인(410)에 대한 클럭 신호(clk)가 게이팅(디스에이블)된 후에, 클럭 제어 디바이스(550)는 유효 데이터의 입력 패킷에 대해 파이프라인(410)의 입력을 모니터링할 수 있다. 클럭 제어 디바이스(550)가 입력 패킷을 검출하면, 클럭 제어 디바이스(550)는 클럭 신호(clk)를 인에이블(전달)한다. 클럭 제어 디바이스(550)가 입력 패킷을 검출하지 않으면, 클럭 제어 디바이스(550)는 클럭 신호(clk)를 디스에이블(게이팅)된 상태로 남겨 둔다.
[0045] 일 예에서, 클럭 제어 디바이스(550)는, 클럭 신호(clk)를 인에이블하기 위해 클럭-게이팅 디바이스(425)에 제1 로직 값(예컨대, 1)을 출력하고 클럭 신호(clk)를 게이팅(디스에이블)하기 위해 클럭-게이팅 디바이스(425)에 제2 로직 값(예컨대, 0)을 출력하도록 구성될 수 있다. 이 예에서, 클럭 제어 디바이스(550)는 빈 플래그가 파이프라인이 비어 있지 않다고 표시할 때 제1 로직 값을 출력한다. 클럭 제어 디바이스(500)는 빈 플래그가 파이프라인이 비어 있다고 표시할 때 제2 로직 값을 출력할 수 있다. 일 예에서, 클럭 제어 디바이스(550)는, 빈 플래그가 파이프라인(410)이 비어 있다고 표시할 뿐만 아니라 파이프라인의 입력에서 입력 패킷이 검출되지도 않을 때, 제2 로직 값을 출력할 수 있다. 클럭 신호(clk)가 게이팅된 후에, 클럭 제어 디바이스(550)는 입력 패킷에 대해 파이프라인의 입력을 모니터링할 수 있고, 클럭 신호(clk)를 재-인에이블(re-enable)하기 위해 입력 패킷의 검출 시에 제2 로직 값으로부터 제1 로직 값으로 자신의 출력을 변화시킬 수 있다.
[0046] 클럭 제어기(420)는 또한, 클럭 제어기(420)의 시간 동작들에 대한 클럭 신호(clk)를 수신할 수 있다. 이 점과 관련하여, 도 6은 제1 제어 디바이스(510), 제1 카운터(520), 제2 제어 디바이스(515), 제2 카운터(525) 및 비교 디바이스(540)가 클럭-게이팅 디바이스(425)의 출력으로부터 클럭 신호(clk)를 수신하는 예를 도시한다. 따라서, 이 예에서, 파이프라인(410)에 대한 클럭 신호(clk)가 디스에이블(게이팅)될 때, 전력을 절약하기 위해 제1 제어 디바이스(510), 제1 카운터(520), 제2 제어 디바이스(515), 제2 카운터(525) 및 비교 디바이스(540)에 대한 클럭 신호(clk)가 또한 게이팅된다. 제1 카운터(520)와 제2 카운터(525)는, 클럭 신호(clk)가 게이팅될 때 그들의 현재 카운트 값들을 홀딩할 수 있다. 이 예에서, 제1 카운터(520)와 제2 카운터(525) 각각은, 클럭 신호(clk)가 재-인에이블될 때, 홀딩된 카운트 값으로부터 카운팅을 재개할 수 있다. 대안적으로, 카운터들(520 및 525)은 클럭 신호(clk)가 게이팅될 때 리셋될 수 있다. 이 예에서, 제1 카운터(520)와 제2 카운터(525) 각각은, 클럭 신호(clk)가 재-인에이블될 때, 리셋된 카운트 값(예컨대, 0)으로부터 카운팅을 시작할 수 있다.
[0047] 파이프라인(410)에 대한 클럭 신호(clk)가 게이팅될 때 클럭 제어 디바이스(550)에 대한 클럭 신호(clk)가 게이팅되지 않도록, 클럭 제어 디바이스(550)에 대한 클럭 신호(clk)는 클럭-게이팅 디바이스(425)를 우회할 수 있다. 이 예에서, 클럭 신호(clk)는, 파이프라인(410)의 입력에서 입력 패킷을 검출하고 입력 패킷의 검출 시에 파이프라인(410)에 대한 클럭 신호(clk)를 인에이블(전달)하기 위해 사용되는, 클럭 제어 디바이스(550)의 시간 동작들에 사용될 수 있다. 다른 예에서, 파이프라인(410)의 입력에 입력 패킷이 존재할 때 클럭 신호(clk)를 인에이블하기 위해, 클럭 제어 디바이스(550)는 클럭 신호(clk)를 필요로 하지 않는 하나 이상의 로직 게이트들을 포함할 수 있다. 이 경우, 클럭 신호(clk)는 클럭-게이팅 디바이스(425)에 제공될 필요가 없다.
[0048] 클럭 제어기(420)의 다양한 컴포넌트들은 아래에서 추가로 논의된 바와 같이 동기식 선입 선출(FIFO; first-in first-out) 제어기로부터의 컴포넌트들을 사용하여 구현될 수 있다.
[0049] 동기식 FIFO 제어기는 FIFO 메모리로의 데이터의 기록 및 FIFO 메모리로부터의 데이터의 판독을 제어한다. 이 점과 관련하여, FIFO 제어기는 기록 카운터, 판독 카운터 및 비교 디바이스를 포함할 수 있다. 기록 카운터의 카운트 값은 데이터가 FIFO 메모리에 입력될 때 증분되고, 데이터가 기록될 FIFO 메모리에서의 위치(어드레스)를 특정하는 기록 포인터를 생성하기 위해 사용된다. 판독 카운터의 카운트 값은 데이터가 FIFO 메모리로부터 판독될 때 증분되고, 데이터가 판독될 FIFO 메모리에서의 위치(어드레스)를 특정하는 판독 포인터를 생성하기 위해 사용된다. 비교 디바이스는 FIFO 메모리가 비어 있는지 여부를 결정하기 위해 기록 포인터와 판독 포인터를 비교하고, FIFO 메모리가 비어 있는지 여부를 표시하는 비교에 기초하여 빈 플래그를 출력한다. 예컨대, 비교 디바이스는 기록 포인터와 판독 포인터가 일치할 때 FIFO 메모리가 비어 있다고 결정할 수 있다.
[0050] 일 예에서, 클럭 제어기(420)의 제1 카운터(520), 제2 카운터(525) 및 비교 디바이스(540)는 FIFO 제어기로부터의 기록 카운터, 판독 카운터 및 비교 디바이스를 사용하여 구현될 수 있다. 이 예에서, 파이프라인(410)은 파이프라인(410)이 비어 있는지 여부를 결정하는 목적을 위해 FIFO 메모리로서 취급된다. 이는 클럭 제어기(420)가, 클럭 제어기(420)에 대한 빈 플래그를 생성하기 위해 FIFO 제어기에 대한 빈 플래그를 생성하는 데 사용된, FIFO 제어기의 컴포넌트들(예컨대, 기록 카운터, 판독 카운터 및 비교 디바이스)을 재사용할 수 있게 한다.
[0051] 위의 예에서 파이프라인(410)이 비어 있는지 여부를 결정하는 목적을 위해 파이프라인(410)이 FIFO 메모리로서 취급되지만, 파이프라인은 다른 측면들에서 FIFO 메모리와 상이하다는 것이 주목되어야 한다. 예컨대, 파이프라인(410)이 데이터를 프로세싱하는 반면, FIFO 메모리는 단순히 데이터를 저장(예컨대, 버퍼링)한다.
[0052] 도 7은 상이한 파이프라인 깊이들(즉, 상이한 수들의 파이프라인 스테이지들)에 대해 논의된 3 개의 상이한 클럭-게이팅 방법들에 대한 칩 면적들의 예들을 도시하는 표(700)이다. 표(700)의 처음 4 개의 행들은 2, 50, 100 및 500의 파이프라인 깊이들에 대한 FSM 접근법(도 2a에서 도시됨)에 대한 칩 면적들의 예들을 도시한다. 표(700)의 다음 4 개의 행들은 2, 50, 100 및 500의 파이프라인 깊이들에 대한 OR 게이트 접근법(도 3에서 도시됨)에 대한 칩 면적들의 예들을 도시한다. 표(700)의 마지막 4 개의 행들은 2, 50, 100 및 500의 파이프라인 깊이들에 대한 FIFO 접근법(도 4-도 6에서 도시됨)에 대한 칩 면적들의 예들을 도시한다.
[0053] 도 7에서 도시된 바와 같이, FSM 접근법에 대한 칩 면적은 파이프라인 깊이가 증가함에 따라 증가하지 않는다. 대조적으로, OR 게이트 접근법에 대한 칩 면적은 파이프라인 깊이의 증가들에 따라 대략 선형으로 증가한다. 그 이유는, 각각의 부가적인 파이프라인 스테이지에 대한 OR 게이트에 부가적인 입력이 부가되기 때문이다. 파이프라인 깊이의 증가들이 OR 게이트가 차지하는 칩 면적의 상당한 증가들을 초래할 수 있기 때문에, OR 게이트 접근법은 그다지 스케일러블하지 않다. 칩 면적의 상당한 증가는 칩 상의 귀중한 실면적(real estate)을 차지할 뿐만 아니라 전력 소모의 상당한 증가로 바뀐다.
[0054] FIFO 접근법에 대한 칩 면적은 파이프라인 깊이의 증가들에 따라 약간 증가한다. 칩 면적의 증가는 파이프라인 깊이가 증가함에 따라 더 많은 수의 착신 및 발신 패킷들을 추적하는 데 필요한 여분의 비트들에 기인한다. 여분의 비트들은 파이프라인 깊이의 log2(즉, 밑이 2인 로그)로 스케일링된다. 표(700)에서 도시된 바와 같이, FIFO 접근법에 대한 칩 면적의 증가는 OR 게이트 접근법보다 상당히 더 적다. 따라서, 파이프라인 깊이가 증가함에 따라, FIFO 접근법은 OR 게이트 접근법보다 상당히 더 적은 면적 및 전력을 필요로 한다.
[0055] 도 7에서 도시된 예에서 FIFO 접근법은 FSM 접근법보다 더 많은 칩 면적을 점유한다. 그러나, 위에서 논의된 바와 같이, FIFO 접근법이 액티브 라인들에서의 버블들 동안 클럭 신호(clk)를 게이팅할 수 있는 반면, FSM 접근법은 버블들 동안 클럭 신호(clk)를 게이팅하지 않는다. 따라서, FIFO 접근법은 클럭 신호를 더욱 자주 게이팅(즉, 클럭 신호를 게이팅할 더 많은 기회들을 활용)하여서, 클럭 게이팅으로부터 더 많은 전력 절감이 되게 할 수 있다.
[0056] 클럭-게이팅 디바이스(425)는 기술분야에서 알려진 다수의 클럭-게이팅 셀(CGC; clock-gating cell)들 중 임의의 클럭-게이팅 셀을 사용하여 구현될 수 있다. 예컨대, 칩(다이)용 표준 셀 라이브러리는 통상적으로, 하나 이상의 CGC들을 포함한다. 이 예에서, 클럭-게이팅 디바이스(425)를 구현하기 위해 셀 라이브러리에서의 CGC들 중 하나가 선택될 수 있다.
[0057] 이 점과 관련하여, 도 8은 클럭-게이팅 디바이스(425)를 구현하기 위해 사용될 수 있는 예시적인 클럭-게이팅 셀(CGC; clock-gating cell)(810)을 도시한다. 이 예에서, CGC(810)는 네거티브-에지 트리거식 래치(negative-edge triggered latch)(820) 및 AND 게이트(830)를 포함한다. CGC(810)는 클럭 제어 디바이스(550)로부터 게이트 제어 신호를 수신하는 게이트-제어 입력(812), 클럭 신호(clk)를 수신하는 클럭 입력(814), 및 파이프라인(410)의 클럭 입력에 커플링된 출력(816)을 갖는다. 래치(820)는 게이트 제어 신호를 수신하는 제어 입력(822), 클럭 신호(clk)를 수신하는 클럭 입력(824), 및 출력(826)을 갖는다. AND 게이트(830)는 래치(820)의 출력(826)에 커플링된 제1 입력(832), 클럭 신호(clk)를 수신하는 제2 입력(834), 및 CGC(810)의 출력(816)에 커플링된 출력(836)을 갖는다.
[0058] 이 예에서, CGC(810)는 클럭 제어 디바이스(550)로부터의 게이트 제어 신호가 로우(low)(로직 0)일 때 클럭 신호(clk)를 게이팅한다. 이 경우, CGC(810)는 클럭 신호(clk)의 로직 상태에 관계 없이 파이프라인(410)에 로직 0을 출력한다. CGC(810)는 게이트 제어 신호가 하이(high)(로직 1)일 때 파이프라인(410)에 클럭 신호(clk)를 전달한다. 게이트 제어 신호는 또한, 게이트 제어 신호가 파이프라인에 대한 클럭 신호(clk)가 인에이블되는지 여부를 제어하기 때문에, 클럭 인에이블 신호로 지칭될 수 있다.
[0059] 동작 중에, 래치(820)는 클럭 신호(clk)의 하강 에지에서 게이트 제어 신호의 로직 값을 래칭하고, 게이트 제어 신호의 래칭된 로직 값을 AND 게이트(830)의 제1 입력(832)에 출력한다. 게이트 제어 신호의 래칭된 로직 값이 로직 1이면, AND 게이트(830)는 CGC(810)의 출력(816)에 클럭 신호(clk)를 전달한다. 게이트 제어 신호의 래칭된 로직 값이 로직 0이면, AND 게이트(830)는 클럭 신호(clk)의 로직 상태에 관계 없이 로직 0을 출력하여서, 클럭 신호(clk)를 효과적으로 게이팅한다. 이 예에서, 래치(820)는 CGC(810)의 출력(816)에서의 글리치들을 방지하기 위해 사용된다. 도 8에서 도시된 CGC(810)가 단지 예시적이며, 클럭-게이팅 디바이스(425)가 기술분야에서 알려진 다른 CGC들을 사용하여 구현될 수 있다는 것이 인식되어야 한다.
[0060] 도 9는 본 개시내용의 소정의 양상들에 따른, 클럭 게이팅을 위한 방법(900)을 예시한다. 방법(900)은 클럭 제어기(420) 및 클럭-게이팅 디바이스(425)에 의해 수행될 수 있다.
[0061] 단계(910)에서, 파이프라인의 입력에서의 입력 패킷들의 수가 추적된다. 예컨대, 입력 패킷들의 수는, 각각의 입력 패킷에 대해 제1 카운터(예컨대, 제1 카운터(520))의 카운트 값을 증분시킴으로써 추적될 수 있다.
[0062] 단계(920)에서, 파이프라인의 출력에서의 출력 패킷들의 수가 추적된다. 예컨대, 출력 패킷들의 수는, 각각의 출력 패킷에 대해 제2 카운터(예컨대, 제2 카운터(525))의 카운트 값을 증분시킴으로써 추적될 수 있다.
[0063] 단계(930)에서, 입력 패킷들의 수 및 출력 패킷들의 수에 기초하여 파이프라인에 클럭 신호를 전달할지 또는 게이팅할지에 대한 결정이 이루어진다. 예컨대, 입력 패킷들의 수와 출력 패킷들의 수가 일치하면, 클럭 신호를 게이팅하라는 결정이 이루어질 수 있고, 입력 패킷들의 수와 출력 패킷들의 수가 일치하지 않으면, 파이프라인에 클럭 신호를 전달하라는 결정이 이루어질 수 있다.
[0064] 단계(940)에서, 클럭 신호를 전달하라는 결정이 이루어지면, 파이프라인에 클럭 신호가 전달된다.
[0065] 단계(950)에서, 클럭 신호를 게이팅하라는 결정이 이루어지면, 클럭 신호는 게이팅된다.
[0066] 위에서 논의된 클럭 제어기(420)는 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그램가능 로직 디바이스, 이산 하드웨어 컴포넌트들(예컨대, 로직 게이트들), 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 결합으로 구현될 수 있다. 프로세서는, 기능들을 수행하기 위한 코드를 포함하는 소프트웨어를 실행함으로써, 본원에서 설명된 기능들을 수행할 수 있다. 소프트웨어는 컴퓨터-판독가능 저장 매체, 이를테면 RAM, ROM, EEPROM, 광학 디스크, 및/또는 자기 디스크 상에 저장될 수 있다.
[0001] 본 개시내용 내에서, "예시적인" 것이란 단어는 "예, 사례 또는 예시로서의 역할을 하는" 것을 의미하기 위해 사용된다. "예시적인" 것으로서 본원에서 설명된 임의의 구현 또는 양상이 본 개시내용의 다른 양상들에 비해 반드시 바람직하거나 또는 유리한 것으로서 해석되어야 하는 것은 아니다. 마찬가지로, "양상들"이란 용어는, 본 개시내용의 모든 양상들이 논의된 특징, 장점 또는 동작 모드를 포함할 것을 요구하지 않는다.
[0002] 본 개시내용이 이미지 프로세싱 파이프라인의 예를 사용하여 위에서 논의되지만, 본 개시내용이 이 예로 제한되지 않는다는 것이 인식되어야 한다. 본 개시내용의 실시예들은 다른 유형들의 파이프라인들에 적용될 수 있고, 다른 유형들의 파이프라인들은 데이터를 프로세싱하여 이 다른 유형들의 파이프라인들에 대한 클럭 신호를 게이팅한다.
[0003] 본 개시내용의 이전 설명은 당업자가 본 개시내용을 사용하거나 또는 실시하는 것을 가능하게 하기 위해 제공된다. 본 개시내용에 대한 다양한 수정들은 당업자들에게 용이하게 자명할 것이며, 본원에서 정의된 일반적인 원리들은 본 개시내용의 사상 또는 범위를 벗어나지 않고 다른 변형들에 적용될 수 있다. 따라서, 본 개시내용은 본원에서 설명된 예들로 제한되는 것으로 의도되는 것이 아니라, 본원에서 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 부합할 것이다.

Claims (20)

  1. 파이프라인을 위한 클럭-게이팅(clock-gating) 시스템으로서,
    상기 파이프라인에 클럭 신호를 전달(pass)하거나 또는 게이팅하도록 구성된 클럭-게이팅 디바이스; 및
    클럭 제어기
    를 포함하며,
    상기 클럭 제어기는,
    상기 파이프라인의 입력에서의 입력 패킷들의 수를 추적하고,
    상기 파이프라인의 출력에서의 출력 패킷들의 수를 추적하고,
    상기 입력 패킷들의 수 및 상기 출력 패킷들의 수에 기초하여 상기 클럭 신호를 전달할지 또는 게이팅할지를 결정하고,
    상기 클럭 신호를 전달하라는 결정이 이루어지면 상기 클럭 신호를 전달하도록 상기 클럭-게이팅 디바이스에게 명령하며, 그리고
    상기 클럭 신호를 게이팅하라는 결정이 이루어지면 상기 클럭 신호를 게이팅하도록 상기 클럭-게이팅 디바이스에게 명령하도록
    구성되는,
    파이프라인을 위한 클럭-게이팅 시스템.
  2. 제1 항에 있어서,
    상기 클럭 제어기는,
    제1 카운터;
    상기 파이프라인의 입력에서 상기 입력 패킷들을 검출하고, 상기 검출된 입력 패킷들 각각에 대해 상기 제1 카운터의 카운트 값을 증분시키도록 구성된 제1 제어 디바이스 ―상기 제1 카운터의 카운트 값은 상기 입력 패킷들의 수를 표시함―;
    제2 카운터; 및
    상기 파이프라인의 출력에서 상기 출력 패킷들을 검출하고, 상기 검출된 출력 패킷들 각각에 대해 상기 제2 카운터의 카운트 값을 증분시키도록 구성된 제2 제어 디바이스
    를 포함하며,
    상기 제2 카운터의 카운트 값은 상기 출력 패킷들의 수를 표시하는,
    파이프라인을 위한 클럭-게이팅 시스템.
  3. 제2 항에 있어서,
    상기 클럭 제어기는,
    상기 제1 카운터의 카운트 값과 상기 제2 카운터의 카운트 값을 비교하고, 상기 비교에 기초하여 플래그를 생성하도록 구성된 비교 디바이스 ―상기 플래그는 상기 파이프라인이 비어 있는지(empty) 여부를 표시함―; 및
    상기 플래그가 상기 파이프라인이 비어 있음을 표시하지 않으면 상기 클럭 신호를 전달하도록 상기 클럭-게이팅 디바이스에게 명령하고, 상기 플래그가 상기 파이프라인이 비어 있음을 표시하면 상기 클럭 신호를 게이팅하도록 상기 클럭-게이팅 디바이스에게 명령하도록 구성된 클럭 제어 디바이스
    를 더 포함하는,
    파이프라인을 위한 클럭-게이팅 시스템.
  4. 제3 항에 있어서,
    상기 플래그는 상기 제1 카운터의 카운트 값과 상기 제2 카운터의 카운트 값이 일치하면 상기 파이프라인이 비어 있음을 표시하는,
    파이프라인을 위한 클럭-게이팅 시스템.
  5. 제4 항에 있어서,
    상기 플래그는 상기 제1 카운터의 카운트 값과 상기 제2 카운터의 카운트 값이 일치하지 않으면 상기 파이프라인이 비어 있음을 표시하지 않는,
    파이프라인을 위한 클럭-게이팅 시스템.
  6. 제2 항에 있어서,
    상기 제1 제어 디바이스는 입력 패킷의 구분 문자(delimiter)를 검출함으로써 상기 입력 패킷들 각각을 검출하도록 구성되는,
    파이프라인을 위한 클럭-게이팅 시스템.
  7. 제6 항에 있어서,
    상기 제2 제어 디바이스는 출력 패킷의 구분 문자를 검출함으로써 상기 출력 패킷들 각각을 검출하도록 구성되는,
    파이프라인을 위한 클럭-게이팅 시스템.
  8. 제1 항에 있어서,
    상기 클럭 제어기는, 상기 입력 패킷들의 수가 상기 출력 패킷들의 수와 일치하면 상기 클럭 신호를 게이팅하도록 상기 클럭-게이팅 디바이스에게 명령하고, 상기 입력 패킷들의 수가 상기 출력 패킷들의 수와 일치하지 않으면 상기 클럭 신호를 전달하도록 상기 클럭 게이팅 디바이스에게 명령하도록 구성되는,
    파이프라인을 위한 클럭-게이팅 시스템.
  9. 제8 항에 있어서,
    상기 클럭 신호를 게이팅하도록 상기 클럭-게이팅 디바이스에게 명령한 후에, 상기 클럭 제어기는 추가로, 다음 입력 패킷에 대해 상기 파이프라인의 입력을 모니터링하고, 상기 다음 입력 패킷의 검출 시에 상기 클럭 신호를 전달하도록 상기 클럭-게이팅 디바이스에게 명령하도록 구성되는,
    파이프라인을 위한 클럭-게이팅 시스템.
  10. 제1 항에 있어서,
    상기 파이프라인은 이미지 프로세싱 파이프라인인,
    파이프라인을 위한 클럭-게이팅 시스템.
  11. 파이프라인의 입력에서의 입력 패킷들의 수를 추적하는 단계;
    상기 파이프라인의 출력에서의 출력 패킷들의 수를 추적하는 단계;
    상기 입력 패킷들의 수 및 상기 출력 패킷들의 수에 기초하여 상기 파이프라인에 클럭 신호를 전달할지 또는 게이팅할지를 결정하는 단계;
    상기 클럭 신호를 전달하라는 결정이 이루어지면 상기 파이프라인에 상기 클럭 신호를 전달하는 단계; 및
    상기 클럭 신호를 게이팅하라는 결정이 이루어지면 상기 클럭 신호를 게이팅하는 단계
    를 포함하는,
    클럭 게이팅을 위한 방법.
  12. 제11 항에 있어서,
    상기 입력 패킷들의 수를 추적하는 단계는 상기 입력 패킷들 각각에 대해 제1 카운터의 카운트 값을 증분시키는 단계를 포함하고, 상기 출력 패킷들의 수를 추적하는 단계는 상기 출력 패킷들 각각에 대해 제2 카운터의 카운트 값을 증분시키는 단계를 포함하는,
    클럭 게이팅을 위한 방법.
  13. 제12 항에 있어서,
    상기 제1 카운터의 카운트 값을 증분시키는 단계는,
    입력 패킷의 구분 문자를 검출함으로써 상기 파이프라인의 입력에서 상기 입력 패킷들 각각을 검출하는 단계; 및
    상기 검출된 입력 패킷들 각각에 대해 상기 제1 카운터의 카운트 값을 증분시키는 단계
    를 포함하는,
    클럭 게이팅을 위한 방법.
  14. 제12 항에 있어서,
    상기 제2 카운터의 카운트 값을 증분시키는 단계는,
    출력 패킷의 구분 문자를 검출함으로써 상기 파이프라인의 출력에서 상기 출력 패킷들 각각을 검출하는 단계; 및
    상기 검출된 출력 패킷들 각각에 대해 상기 제2 카운터의 카운트 값을 증분시키는 단계
    를 포함하는,
    클럭 게이팅을 위한 방법.
  15. 제12 항에 있어서,
    상기 클럭 신호를 전달할지 또는 게이팅할지를 결정하는 단계는,
    상기 제1 카운터의 카운트 값과 상기 제2 카운터의 카운트 값을 비교하는 단계; 및
    상기 비교에 기초하여 상기 클럭 신호를 전달할지 또는 게이팅할지를 결정하는 단계
    를 포함하는,
    클럭 게이팅을 위한 방법.
  16. 제15 항에 있어서,
    상기 클럭 신호를 전달할지 또는 게이팅할지를 결정하는 단계는, 상기 제1 카운터의 카운트 값과 상기 제2 카운터의 카운트 값이 일치하면 상기 클럭 신호를 게이팅하도록 결정하는 단계를 포함하는,
    클럭 게이팅을 위한 방법.
  17. 제16 항에 있어서,
    상기 클럭 신호를 전달할지 또는 게이팅할지를 결정하는 단계는, 상기 제1 카운터의 카운트 값과 상기 제2 카운터의 카운트 값이 일치하지 않으면 상기 클럭 신호를 전달하도록 결정하는 단계를 포함하는,
    클럭 게이팅을 위한 방법.
  18. 제11 항에 있어서,
    상기 클럭 신호를 전달할지 또는 게이팅할지를 결정하는 단계는,
    상기 입력 패킷들의 수가 상기 출력 패킷들의 수와 일치하면 상기 클럭 신호를 게이팅하도록 결정하는 단계; 및
    상기 입력 패킷들의 수가 상기 출력 패킷들의 수와 일치하지 않으면 상기 클럭 신호를 전달하도록 결정하는 단계
    를 포함하는,
    클럭 게이팅을 위한 방법.
  19. 제18 항에 있어서,
    상기 클럭 신호를 게이팅한 후에, 다음 입력 패킷에 대해 상기 파이프라인의 입력을 모니터링하는 단계; 및
    상기 다음 입력 패킷의 검출 시에 상기 클럭 신호를 전달하는 단계
    를 더 포함하는,
    클럭 게이팅을 위한 방법.
  20. 제11 항에 있어서,
    상기 파이프라인은 이미지 프로세싱 파이프라인인,
    클럭 게이팅을 위한 방법.
KR1020197016577A 2016-12-13 2017-11-27 클럭 게이팅 인에이블 생성 KR102143089B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662433547P 2016-12-13 2016-12-13
US62/433,547 2016-12-13
US15/666,107 2017-08-01
US15/666,107 US10761559B2 (en) 2016-12-13 2017-08-01 Clock gating enable generation
PCT/US2017/063306 WO2018111526A1 (en) 2016-12-13 2017-11-27 Clock gating enable generation

Publications (2)

Publication Number Publication Date
KR20190094364A true KR20190094364A (ko) 2019-08-13
KR102143089B1 KR102143089B1 (ko) 2020-08-10

Family

ID=62489120

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197016577A KR102143089B1 (ko) 2016-12-13 2017-11-27 클럭 게이팅 인에이블 생성

Country Status (11)

Country Link
US (1) US10761559B2 (ko)
EP (1) EP3555726B1 (ko)
JP (1) JP6746791B2 (ko)
KR (1) KR102143089B1 (ko)
CN (1) CN110073311B (ko)
AU (1) AU2017377949B2 (ko)
BR (1) BR112019010936A2 (ko)
ES (1) ES2801598T3 (ko)
HU (1) HUE050331T2 (ko)
TW (1) TWI722258B (ko)
WO (1) WO2018111526A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11114057B2 (en) * 2018-08-28 2021-09-07 Samsung Display Co., Ltd. Smart gate display logic
US11099602B2 (en) * 2019-04-30 2021-08-24 International Business Machines Corporation Fault-tolerant clock gating
CN112462845A (zh) * 2020-11-25 2021-03-09 海光信息技术股份有限公司 数据传输时钟控制电路、方法和处理器
US20230179206A1 (en) * 2021-12-07 2023-06-08 Mediatek Inc. Clock gating cells

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004078581A (ja) * 2002-08-19 2004-03-11 Nec Corp 通信データ処理回路
KR20080039824A (ko) * 2006-11-01 2008-05-07 인텔 코오퍼레이션 프로세싱 코어들의 독립 전력 제어
JP2009284008A (ja) * 2008-05-19 2009-12-03 Nec Corp パケット処理装置、パケット制御方法及びパケット制御プログラム
KR20110027567A (ko) * 2009-09-09 2011-03-16 엘피다 메모리 가부시키가이샤 클럭 생성 회로, 이를 포함하는 반도체 디바이스, 및 데이터 프로세싱 시스템

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636074B2 (en) 2002-01-22 2003-10-21 Sun Microsystems, Inc. Clock gating to reduce power consumption of control and status registers
JP2004274099A (ja) 2003-03-05 2004-09-30 Nec Corp パケット処理回路
TWI253556B (en) * 2003-06-11 2006-04-21 Faraday Tech Corp Pipeline-based circuit with a postponed clock-gating mechanism for reducing power consumption and related driving method thereof
US6822481B1 (en) * 2003-06-12 2004-11-23 Agilent Technologies, Inc. Method and apparatus for clock gating clock trees to reduce power dissipation
US7594200B2 (en) * 2005-12-19 2009-09-22 International Business Machines Corporation Method for finding multi-cycle clock gating
US7802118B1 (en) * 2006-12-21 2010-09-21 Nvidia Corporation Functional block level clock-gating within a graphics processor
US7797561B1 (en) * 2006-12-21 2010-09-14 Nvidia Corporation Automatic functional block level clock-gating
US8073669B2 (en) * 2007-08-21 2011-12-06 International Business Machines Corporation Method and apparatus for detecting clock gating opportunities in a pipelined electronic circuit design
US7861192B2 (en) * 2007-12-13 2010-12-28 Globalfoundries Inc. Technique to implement clock-gating using a common enable for a plurality of storage cells
JP2012515377A (ja) * 2009-01-12 2012-07-05 ラムバス・インコーポレーテッド クロック転送低電力シグナリングシステム
US9557795B1 (en) 2009-09-23 2017-01-31 Xilinx, Inc. Multiprocessor system with performance control based on input and output data rates
CN102193580A (zh) 2010-02-12 2011-09-21 布鲁旺德通讯有限公司 用于时钟门控控制的方法和装置
US8533648B2 (en) * 2010-05-13 2013-09-10 Oracle International Corporation Automatic clock-gating propagation technique
US9444440B2 (en) * 2011-06-30 2016-09-13 Stmicroelectronics International N.V. Transition detector
JP2013125436A (ja) 2011-12-15 2013-06-24 Panasonic Corp 画像処理回路および半導体集積回路
US9323315B2 (en) * 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US20140225655A1 (en) * 2013-02-14 2014-08-14 Qualcomm Incorporated Clock-gated synchronizer
KR101844809B1 (ko) * 2013-09-30 2018-04-03 인텔 코포레이션 클록 게이팅 제어를 위한 조기의 웨이크-경고
GR20130100707A (el) * 2013-12-23 2015-07-31 Arm Limited, Μεταφραση διευθυνσης σε μια συσκευη επεξεργασιας δεδομενων
US9154130B2 (en) * 2014-01-14 2015-10-06 Analog Devices, Inc. Four-state input detection circuitry
US10204532B2 (en) * 2015-09-25 2019-02-12 Intel Corporation Multiple input cryptographic engine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004078581A (ja) * 2002-08-19 2004-03-11 Nec Corp 通信データ処理回路
KR20080039824A (ko) * 2006-11-01 2008-05-07 인텔 코오퍼레이션 프로세싱 코어들의 독립 전력 제어
JP2009284008A (ja) * 2008-05-19 2009-12-03 Nec Corp パケット処理装置、パケット制御方法及びパケット制御プログラム
KR20110027567A (ko) * 2009-09-09 2011-03-16 엘피다 메모리 가부시키가이샤 클럭 생성 회로, 이를 포함하는 반도체 디바이스, 및 데이터 프로세싱 시스템

Also Published As

Publication number Publication date
AU2017377949B2 (en) 2021-08-19
AU2017377949A1 (en) 2019-05-16
TW201826710A (zh) 2018-07-16
BR112019010936A2 (pt) 2019-10-01
EP3555726B1 (en) 2020-04-22
US20180164846A1 (en) 2018-06-14
KR102143089B1 (ko) 2020-08-10
CN110073311B (zh) 2023-03-24
EP3555726A1 (en) 2019-10-23
CN110073311A (zh) 2019-07-30
ES2801598T3 (es) 2021-01-11
JP6746791B2 (ja) 2020-08-26
US10761559B2 (en) 2020-09-01
HUE050331T2 (hu) 2020-11-30
TWI722258B (zh) 2021-03-21
JP2020513628A (ja) 2020-05-14
WO2018111526A1 (en) 2018-06-21

Similar Documents

Publication Publication Date Title
KR102143089B1 (ko) 클럭 게이팅 인에이블 생성
US6822481B1 (en) Method and apparatus for clock gating clock trees to reduce power dissipation
US8812878B2 (en) Limiting false wakeups of computing device components coupled via links
US11181941B2 (en) Using a stuttered clock signal to reduce self-induced voltage noise
US8041856B2 (en) Skip based control logic for first in first out buffer
US7934113B2 (en) Self-clearing asynchronous interrupt edge detect latching register
US20130314134A1 (en) Apparatus and method for synchronising signals
US9304571B2 (en) Interrupt based power state management
US20050275441A1 (en) Method and/or apparatus for generating a write gated clock signal
US8514004B2 (en) Clock management unit and method of managing a clock signal
EP3825860A1 (en) Memory access control
US7564266B2 (en) Logic state catching circuits
US8370565B2 (en) Boot system
US7639046B2 (en) Method to reduce power consumption within a clock gated synchronous circuit and clock gated synchronous circuit
US10270434B2 (en) Power saving with dynamic pulse insertion
US10366019B1 (en) Multiprocessor system having efficient and shared atomic metering resource
US7916575B2 (en) Configurable latching for asynchronous memories
US20170115686A1 (en) Method and Apparatus for Natural Clock Generation in the System
KR20230121629A (ko) 감소된 전력 소비로 증가된 데이터 전송 인터페이스주파수를 지원하는 데이터 파이프라인 회로 및 관련 방법
CN114696809A (zh) 信号产生电路及操作系统

Legal Events

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