KR20080047792A - 수면 모드를 지원하는 멀티 코어 시스템 온 칩 - Google Patents

수면 모드를 지원하는 멀티 코어 시스템 온 칩 Download PDF

Info

Publication number
KR20080047792A
KR20080047792A KR1020060117672A KR20060117672A KR20080047792A KR 20080047792 A KR20080047792 A KR 20080047792A KR 1020060117672 A KR1020060117672 A KR 1020060117672A KR 20060117672 A KR20060117672 A KR 20060117672A KR 20080047792 A KR20080047792 A KR 20080047792A
Authority
KR
South Korea
Prior art keywords
core
bus system
sleep mode
sleep
bus
Prior art date
Application number
KR1020060117672A
Other languages
English (en)
Other versions
KR101285665B1 (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 KR1020060117672A priority Critical patent/KR101285665B1/ko
Publication of KR20080047792A publication Critical patent/KR20080047792A/ko
Application granted granted Critical
Publication of KR101285665B1 publication Critical patent/KR101285665B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Power Sources (AREA)

Abstract

본 발명은 복수의 코어(core)를 갖는 시스템 온 칩(SoC: System on Chip)에 관한 것으로, 보다 구체적으로, 효율적인 수면 모드(sleep mode)의 제어가 가능한 SoC에 관한 것이다. 본 발명은 상술한 목적을 달성하기 위해, 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제1 버스 시스템(bus system); 상기 제1 버스 시스템을 제어하는 제1 코어(core); 상기 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제2 버스 시스템; 상기 제2 버스 시스템을 제어하는 제2 코어; 및 상기 제2 코어로부터의 강제 신호에 따라 상기 제1 버스 시스템의 수면 모드 진입을 보류(hold)할지 여부를 결정하는 제1 클록 제어 모듈과, 상기 제1코어로부터의 강제 신호에 따라 상기 제2 버스 시스템의 수면 모드 진입을 보류할지 여부를 결정하는 제2 클록 제어 모듈을 포함하는 클록 제어 모듈을 포함하는 것을 특징으로 한다.
Figure P1020060117672
multi core, soc, 수면 모드, 강제, 클록, 게이팅 제어

Description

수면 모드를 지원하는 멀티 코어 시스템 온 칩{multi core system on chip supporting a sleep mode}
도 1은 종래 기술에 따른 멀티 코어 SoC를 나타내는 블록도이다.
도 2는 종래 기술에 따른 멀티 코어 SoC에 포함되는 시스템 제어 블록의 게이팅 기법을 나타내는 도면이다.
도 3은 본 실시예에 따른 멀티 코어 SoC에 포함되는 시스템 제어 블록의 게이팅 기법을 나타내는 도면이다.
본 발명은 복수의 코어(core)를 갖는 시스템 온 칩(SoC: System on Chip)에 관한 것으로, 보다 구체적으로, 효율적인 수면 모드(sleep mode)의 제어가 가능한 SoC에 관한 것이다.
이하, 하나 또는 복수의 코어를 갖는 시스템 온 칩(이하, 'SoC'라 칭한다)에서의 수면 모드(sleep mode) 동작을 설명한다. 상기 수면 모드(sleep mode)는 전력 절약 등을 이유로 코어 또는 버스가 진입하는 동작 모드이다.
특정한 SoC에서 처리되어야 할 작업(Task)이 없을 경우, 저전력 소비를 위하 여, 클록(clock)을 정지시키는 기법(즉, 수면 모드)이 사용된다. 이러한, 수면 모드의 기법은, 코어(core) 부분만 정지시키는 코어 수면(core sleep)가 있으며, 코어(core)와 그 코어(core)의 버스 시스템(bus system)을 정지시키는 버스 정지(bus stop)가 있다.
이하, 싱글 코어에서의 수면 모드의 동작을 설명한다.
하나의 코어를 갖는 싱글 코어(Single-core) 시스템에서는 코어 수면 및 버스 수면(bus sleep)은 해당 버스 시스템의 코어에 의해 제어된다. 한편, 버스 수면의 적용 여부는, 해당 코어(core)의 제어에 의해 결정된다. 즉, 코어 입장에서 처리할 작업이 존재하지 않고, 버스 시스템 영역을 사용하는 명령의 처리가 완료되었을 경우에 코어 수면 및 버스 수면에 들어갈 수 있다. 만약 버스 시스템이 수면 모드에 진입했을 경우, 그 버스 시스템을 엑세스(access)하는 주체인 코어도 수면 모드 상태이기 때문에, 수면 모드 상태에 있는 버스 시스템 영역의 디바이스가 엑세스되는 경우는 발생하지 않는다.
이하, 멀티 코어에서의 수면 모드의 동작을 설명한다.
멀티 코어 SoC(multi-core SoC)에서 각 코어(예를 들어, 제1, 제2 코어)는, 싱글 코어의 동작처럼, 제2 코어가 제1 코어의 버스(bus)를 엑세스하는지 여부를 체크 하지 않는다. 또한, 싱글 코어와 같이 버스 수면 모드를 적용할 경우, 활성(active) 상태에 있는 다른 코어가 수면 모드에 들어가 있는 버스 시스템 영역을 엑세스 했을 때, 원하지 않는 응답을 받거나 응답이 올 때까지 계속 기다리는 데드 록(dead-lock)상태에 빠지게 된다. 두 경우 모두 저전력을 위해 수면 모드를 운용 할 경우 SoC 동작에 문제가 발생한다.
이하, 상술한 데드 록 상태를 피하기 위한 종래의 방법을 설명한다.
상술한 데드 록(dead-lock) 상태를 피하기 위한 방법으로, 제1 코어(core)가 제2 코어의 버스 시스템(bus system)의 영역을 엑세스하기 전에 엑세스하고자 하는 제2 버스 시스템의 상태를 확인한다. 그런 다음 해당 버스 시스템이 수면 모드일 경우, 인터럽트(인터럽트) 같은 이벤트(event)를 통해 엑세스(access)하고자 하는 버스 시스템과 코어를 활성(active) 상태로 복구 한 다음 엑세스한다. 그리고 수면 모드에 들어가고자 하는 버스 시스템 쪽의 코어는 수면 모드 상태임을 나타낼 수 있는 플래그(flag)를, 양쪽 버스 시스템이 모두 엑세스 할 수 있는 공통의 레지스터 영역에 기록하여야 한다.
도 1은 2개의 코어(101, 102)와 각 코어에 연결된 버스 시스템(103, 104)을 갖는 일반적인 Soc를 나타내는 블록도이다. 도 1은, 두 개의 코어를 구비하는 데, 상기 코어는 DSP 또는 CPU 등이 될 수 있다. 또한, 도 1은 버스 시스템을 구비하는데, 상기 버스 시스템은, 코어에 연결되어 있는 각종 메모리나 레지스터, 주변장치와 이들의 엑세스 경로를 제어하는 블록이다. 또한, 도 1의 버스 브리지(bus bridge)(105)는, 서로 다른 두 개의 버스 시스템에서 다른 쪽 버스 시스템에 존재하는 디바이스 영역을 엑세스하기 위한 다리 역할을 하는 디바이스이다. 또한, 도 1의 시스템 제어 블록(system control block)은, 클록(clock)이나 리셋(reset)과 같은 시스템 관련 신호를 제어하고 공급한다. 또한, 상기 시스템 제어 블록(106)은, 서로 다른 버스 시스템을 갖는 구조에서 전체 시스템을 갖는 공통의 레지스 터(register)영역이 존재는 경우, 각 코어의 인터럽트 제어부(인터럽트 controller)가 이 블록에 존재한다.
도 1은 2개의 코어(101, 102)와 각각의 버스 시스템을 갖는 전형적인 SoC 시스템의 블록 다이어그램이다. 저전력 설계의 한 방법으로 클록 게이팅(clock-gating)(클록 게이팅은 클록을 ON/OFF하는 것을 나타낸다)을 통해 동적 전력을 줄이는 방법을 사용하는데, 이를 위해 각 코어 및 버스 시스템으로 입력되는 클록 게이팅을 제어하는 시스템 제어 블록(106)이 존재한다.
멀티 코어 SoC에서 각 코어의 버스 시스템이 유휴 상태(idle state)에 있을 경우, 각 코어는 버스 시스템을 수면 모드로 진입하게 할 수 있다.
싱글-코어의 경우 그 코어에 해당하는 버스 시스템이 수면모드로 진입하면, 인터럽트 같은 외부 이벤트에 의해 활성 상태로 복원되지 않는 이상, 버스 시스템이 엑세스되는 경우는 없다.
그러나, 멀티-코어 SoC의 경우, 어느 한쪽 버스 시스템이 수면상태로 들어 갈 경우, 수면 상태에 들어가지 않는 다른 코어에 의해 수면 상태에 있는 버스 시스템을 엑세스해야 할 경우가 발생할 수 있다. 이러한 경우 수면 상태에 있는 버스 시스템을 엑세스했기 때문에, 엑세스를 요청한 코어는 적절한 응답을 받을 수 없어 비정상적인 동작을 하거나 데드 록(dead-lock)에 빠진다.
위와 같이 멀티 코어 SoC에서 수면 상태에 들어간 버스 시스템을 활성 상태에 있는 다른 코어가 임의로 엑세스할 수 있는 문제를 방지하기 위해 종래에는 다음과 같은 방법이 제안되었다.
우선, 각 코어와 그 코어에 해당하는 버스 시스템에 대한 클록 ON/OFF를 제어할 수 있는 하드웨어 블록을 싱글-코어의 경우와 마찬가지로 각각의 코어와 버스 시스템에 대해 구현한다.
그 다음, 각 코어는 그 코어에 해당하는 버스 시스템을 수면 모드로 들어가게 하기 전에, 모든 코어가 엑세스할 수 있는 레지스터 영역에 플래그(flag)를 설정함으로써 그 버스 시스템이 수면 모드 상태인 것을 다른 코어가 확인할 수 있게 한다.
그 다음, 활성(active) 상태의 코어가 다른 코어의 버스 시스템 영역을 엑세스하기 전에, 플래그 레지스터(flag register) 영역을 엑세스하여 각 버스 시스템의 상태를 확인한다. 만약 엑세스하고자 하는 버스 시스템이 수면상태에 있는 것으로 확인되면, 수면 상태에 들어간 버스 시스템을 활성(active) 상태로 복원하게 한 후 플래그 레지스터(flag register)를 다시 체크하여 그 버스 시스템의 클록이 활성화되었는지 확인한 다음, 그 버스 시스템 영역을 엑세스한다.
수면상태에 있는 버스 시스템이나 코어를 활성화(active) 상태로 복원하는 방법은 인터럽트(인터럽트) 같은 외부 이벤트(event)에 의해 가능한데, 활성 상태에 있는 코어가 수면 상태에 있는 버스 시스템의 인터럽트 제어부에 외부 인터럽트를 발생시킬 수 있는 경로(path)를 추가함으로써 수면 상태의 버스 시스템이나 코어의 클록(clock)을 다른 코어에 의해 활성화 시킨다.
도 1에 도시된 각종 입출력 신호 및 클록은 도 2 및 이하의 설명에 의해 구체화된다.
제 2도는 종래의 멀티 코어 SoC의 시스템 제어 블록(106) 내부의 클록 게이팅(clock-gating) 기법을 보여 주는 회로도이다.
이하, 도 2를 참조하여 데드 록의 문제를 해결하기 위한 종래의 클록 게이팅 기법을 설명한다.
각각의 코어는, 오직 코어만 수면 모드에 진입시키거나 코어와 버스를 함께 수면 모드에 진입시킬 수 있다. 이 경우, 수면에 들어가기 위해 시스템 제어 블록(106) 내에 있는 Core_sleep(Core 1_sleep, Core 2_sleep) 또는 bus_sleep bit(Core 1_bus_sleep, Core 2_bus_sleep)를 설정한 다음, 수면 모드로의 진입을 지시하는 명령(instruction)을 수행하면 코어쪽에서 sleep_grant 신호Core1_sleep_grant, Core2_sleep_grant)가 발생하여 clock_stop_masking신호가 로우(low)일 경우 core_clock_stop 및 bus clock_stop 신호가 발생한다. 각각의 core_clock_stop 및 bus_clock_stop 신호가 활성화되면 각 clock-gating cell(201, 202, 203, 204)에서 free-running clock(항상 'ON'인 클록)을 차단하여 각 클록 도메인(clock-domain)에 공급되는 클록을 오프(OFF) 시킨다. 상기 free_run clock(또는 free_running clock)은 각 클록 도메인을 위해 클록 생성 블록에서 생성된 신호로서, 게이팅되기 이전의 클록이다. 이 클록은 항상 ON되어 있는 클록으로, 시스템 제어 블록 내부 논리 회로는 게이팅 되지 않는 free_run clock으로 동작하고, 클록이 정지되지 않아야 할 블록은 free_run clock을 그대로 사용한다. 도 2에서 gated clock(예를 들어, Gated_core1_bus_clk)은 free_run clock이 gating cell(201, 202, 203, 204)을 거친 후의 클록이다. 또한, gating cell(201, 202, 203, 204)는 실제 free_run clock을 ON/OFF하여 gated clock을 만드는 셀로서, 게이팅 ON/OFF이 제어는 이전에 만들어진 각각의 clock stop 신호(예를 들어, Core1_bus_clk_stop)에 의해 이루어 진다. 또한, sleep_grant 신호(예를 들어, Core1_sleep_grant)는, 수면 모드를 지원하는 코어가 수면 명령을 내리면 수면 명령 이전 상태를 처리 하고 수면 모드로 들어간 다음 수면 인가 신호(sleep grant signal) 같은 신호를 코어 밖으로 보내어 실제 클록 제어를 하는 블록에서 이 신호를 받은 다음에 클록을 정지시키게 한다. 또한, 이 sleep grant 신호는 코어로 들어 오는 인터럽트신호에 의해 해제가 되어 수면 모드에서 동작을 개시하고 코어 외부로는 동작 모드라는 것을 알린다.
Clock_stop masking 신호는 외부 입력 장치의 키 입력 같은 외부 이벤트나 SoC 내부에서 발생하는 내부 인터럽트 이벤트(internal 인터럽트 event)들에 의해 발생하며, 이들 이벤트 중 하나라도 활성화되면 clock_stop masking신호가 발생하여 clock_stop신호가 로우(low)가 되어 차단되었던 클록(clock)이 공급된다.
또한, 이 clock_stop masking신호는 코어의 인터럽트 신호로서 입력되어 인터럽트를 받은 후 다음 클록에서 sleep_grant 신호를 해제하고 동작을 재개한다. 각 코어는, 자기 쪽 도메인(domain)의 코어 및 버스 시스템의 게이팅을 제어할 수 있으며, 외부 이벤트나 내부 인터럽트 이벤트에 의한 신호에 의해 게이팅을 해제할 수 있다.
따라서, 수면 모드에 있는 버스 시스템을 다른 쪽 코어가 엑세스하기 위해서는, 다른 쪽 코어쪽에서 내부 인터럽트 이벤트 신호의 형태로 인터럽트를 발생시켜 수면 상태에 있는 코어를 깨운(wake-up) 다음 엑세스할 수 있다.
다른 쪽 코어쪽에서 발생 시킨 내부 인터럽트 이벤트에 의해 수면 상태에 있던 코어는, 다른 쪽 코어로부터 버스 엑세스를 허용하기 위해 깨어난 후 유휴 모드의 동작(idle 작업)을 수행하며, 다시 코어의 수면 모드 진입(이하, '코어 수면'이라 칭함)이나 코어 및 버스 시스템의 수면 모드 진입(이하, '코어/버스 수면'이라 칭함)을 결정해야 한다. 코어가 처리할 작업(task)이 없을 경우 코어 수면에 들어갈지 코어/버스 수면에 들어갈지를 결정하는데, 코어/버스에 들어가기 위해서는 버스 시스템의 상태가 휴무(idle)인지 검사해야 한다. 자기 쪽 버스 시스템은 해당 코어에 의해 제어가 이루어 지기 때문에 버스 시스템의 점유 여부를 쉽게 알 수 있으나, 다른 쪽 코어에 의한 자기 쪽 버스 시스템의 엑세스 여부는 임의로 발생한다. 따라서, 프로그램 상에서 다른 쪽 코어와 플래그(flag) 교환을 통해 판단해야 한다. 시스템 제어 블록(106) 내에 양쪽 코어 모두 엑세스할 수 있는 레지스터(register) 영역에 플래그(flag) 레지스터를 두고 이를 이용하여, 버스 수면(버스 시스템의 수면 모드)에 들어가고자 하는 코어는 자기 쪽 버스 시스템이 다른 쪽 코어에 의해 점유되고 있는지 여부를 판단하고, 다른 쪽 버스 시스템을 엑세스하고자 하는 코어는 다른 쪽 버스 시스템이 수면 상태에 있는지 아닌지 판단해야 한다.
본 발명은 종래 기술을 개선하기 위해 제안된 것으로, 본 발명의 목적은 수면 모드로 진입시 문제가 발생하지 않는 멀티 코어 SoC를 제안하는 것이다.
본 발명의 다른 목적은 멀티 코어에 따른 데드 록 현상을 해결하는 수면 모 드 제어 방법을 구비한 멀티 코어 SoC를 제안하는 것이다.
본 발명은 상술한 목적을 달성하기 위해, 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제1 버스 시스템(bus system); 상기 제1 버스 시스템을 제어하는 제1 코어(core); 상기 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제2 버스 시스템; 상기 제2 버스 시스템을 제어하는 제2 코어; 및 상기 제2 코어로부터의 강제 신호에 따라 상기 제1 버스 시스템의 수면 모드 진입을 보류(hold)할지 여부를 결정하는 제1 클록 제어 모듈과, 상기 제1코어로부터의 강제 신호에 따라 상기 제2 버스 시스템의 수면 모드 진입을 보류할지 여부를 결정하는 제2 클록 제어 모듈을 포함하는 클록 제어 모듈을 포함하는 것을 특징으로 한다.
본 발명은 저전력 소비를 위한 멀티 코어 SoC를 제안한다. 보다 구체적으로, 본 발명은 각 코어의 버스 시스템이 수면 모드로 진입할 때 발생할 수 있는 데드 록(dead-lock) 문제를 해결하는 멀티 코어 SoC를 제안한다.
본 발명에 따른 SoC의 구성, 동작 및 특징은 이하에서 설명하는 본 발명의 일 실시예에 의해 구체화될 것이다.
이하, 본 발명이 개선하려는 기본의 데드 록 방지 기술의 특징을 설명한다.
멀티 코어 SoC에서 수면 모드에 있는 버스 시스템을, 활성 상태인 다른 코어가 엑세스 하는 것을 방지하기 위하여 다음과 같은 방법이 사용되었다. 즉, 엑세스하고자 하는 활성화된 코어는 수면 모드의 버스 시스템 쪽으로 인터럽트를 발생시키고, 발생된 인터럽트에 의해 수면 모드에 있는 코어와 버스의 클록을 ON 시킨 다 음 엑세스를 수행한다.
싱글 코어 시스템(즉, 싱글 코어 SoC를 구비한 시스템)에서 수면 모드는, 코어 쪽에서 일정 시간 동안 처리할 태스크가 없을 때 진입하는데, 코어만 수면 모드로 진입하는 경우와 코어와 버스 시스템이 함께 수면 모드에 들어가는가는 경우가 있다. 수면 모드에 들어가 시스템은 인터럽트 같은 외부 이벤트에 의해 활성화 상태로 돌아오는데, 이러한 이벤트들은 수면 모드에 있는 코어 쪽으로 어떠한 작업의 처리를 요구하는 신호들이다. 따라서 인터럽트에 의해 정지되어 있던 클록이 활성화 되어 수면 모드에 있던 코어와 버스 시스템은 수면 모드를 벗어난 다음, 코어는 처리해야 할 작업을 수행하게 된다.
그러나, 멀티 코어 SoC에서 활성 상태에 있는 코어(이하, 설명의 편의를 위해 '제1 코어'라 칭한다)는, 수면 모드에 있는 코어(이하, '제2 코어'라 칭한다) 및 해당 코어에 의해 제어되는 버스 시스템(이하, '제2 버스 시스템'이라 칭한다)을 깨우기 위해 인터럽트를 발생시킨다. 이 경우, 제1 코어는 제2 코어에게 어떠한 작업을 요청할 수도 있고, 단지 수면 모드에 있는 제2 버스 시스템을 엑세스만 하기 위한 목적일 수도 있다.
제2 버스 시스템을 엑세스하기 위해 기존의 방법과 같이 인터럽트를 사용하여 깨우는 동작을 수행하는 경우 다음과 같은 문제가 발생한다.
우선, 제2 코어의 버스 시스템, 즉 제2 버스 시스템에 대한 엑세스를 허용하기 위해서는 특별한 작업을 처리할 필요가 없는 제2 코어까지도 활성화 상태로 복원되어야 한다. 수면 모드로부터 깨어난 후 제2 코어는 단지 제1 코어의 엑세스 요 청을 위한 인터럽트에 대해서도, 특별한 작업이 없을지라도, 인터럽트 소스 확인과 클리어(clear)같은 간단한 서비스 루틴을 처리해주어야 한다. 제2 코어 자체적으로 특별한 작업이 없더라도 활성화 상태로 깨어나는 경우가 발생하면, 전체적으로 수면 모드에 들어갈 수 있는 구간이 줄어들기 때문에 저전력 관리 면에서 비효율적이다.
또한, 처리할 작업이 존재하지 않아, 코어 및 버스 시스템의 수면 모드 진입을 시도하려는 쪽에서, 항상 해당 코어 쪽의 버스 시스템이 다른 쪽 코어에 의해 엑세스가 점유되고 있는지 여부를 검사하여야 한다. 점유되는지 여부를 검사하려면 엑세스하는 시점과 실제 플래그(flag) 값을 읽은 시점, 그리고 수면 모드로의 진입을 허락하는 명령을 내리는 시점과 실제 클록이 정지되어 수면에 들어가는 시점들 사이에 공백이 생길 수 있기 때문에 잘 정의된 프로토콜로 운용하여야 한다. 또한, 경우에 따라서는 소프트웨어적으로 해결할 수 없는 확률적인 에러가 발생할 수 있어 수면 시나리오 운용에 있어서 유연성을 떨어뜨릴 수 있다. 예를 들면, 수면 모드에 진입하려는 코어 쪽에서 자기 쪽 버스 시스템이 점유되고 있는지 아닌 지 플래그(flag)를 검사했을 때 점유되지 않는 것으로 확인되어 수면 모드로의 진입을 허락하는 명령을 처리하는 도중에, 다른 쪽 코어에서 엑세스를 수행할 수 있다. 이런 경우, 버스 시스템의 수면 모드 진입이 가능한지 확인 후 실제 수면 모드 진입 동작을 완료할 때까지, 다른 쪽 코어는 여전히 해당 버스 시스템이 활성화 상태로 파악되므로 때문에 마치 엑세스가 가능한 것처럼 보인다. 그러나, 이 경우 엑세스하고자하는 버스 시스템이 이미 수면 모드에 들어 가기 때문에 데드 록이 발생한 다.
본 실시예는, 버스 시스템(멀티 코어 SoC에서 수면 모드에 있는 버스 시스템)을 엑세스하기 위해 인터럽트를 통해 다른 코어(수면 모드에 있는 코어)까지 깨우지 않고, 나머지 코어(엑세스하고자 하는 활성화된 코어)에서 다른 코어 및 다른 버스 시스템의 클록의 온/오프(ON/OFF)를 직접 제어하는 클록 제어(clock control) 블록을 새롭게 디자인하여 추가한다.
각각의 코어와 버스 시스템에 공급되는 클록은 종래와 마찬가지로 core_sleep(Core1_sleep, Core2_sleep) 신호와 bus_sleep(Core1_bus_sleep, Core2_bus_sleep) 신호에 의해 게이팅(gating) 됨으로써 클록이 온/오프(ON/OFF)된다. Core_sleep 신호와 bus sleep 신호는, 각 코어가 처리할 작업이 없을 경우, 수면 모드 진입과 관련된 일련의 명령을 수행함으로써 발생한다.
코어가 휴무 모드(idle mode)에 들어가 있으며 버스 시스템을 사용하고 있는 작업이 없을 때, 코어는 버스 시스템과 함께 수면 모드로 들어갈 수 있다.
본 실시예에서는, 버스 시스템과 함께 수면 모드에 들어가기 위해 버스 시스템의 사용 여부를 체크할 때, 다른 쪽 코어에 의한 엑세스는 체크할 필요가 없다. 이것은 수면 모드로 들어가는 코어(이하, 'A 코어'라 칭함) 및 버스 시스템(이하, 'A 버스 시스템'이라 칭함) 자체의 클록 제어와 무관하게, 다른 쪽 코어(이하, 'B 코어'라 칭함)에 의해 A 버스 시스템의 클록 제어를 수행하기 때문이다.
A 버스 시스템의 영역을 엑세스하고자 하는 B 코어는, 엑세스하기 전에 A 버스 시스템의 클록을 Forced_ON으로 설정한다. 상기 Forced_ON을 설정하는 것은, B 코어로부터 수신되는 강제 신호(Forced signal)이 온(on)으로 설정되는 것을 의미한다. 이로 인하여, A 코어 및 A 버스 시스템에 대한 수면 모드 진입을 허락하는 명령(수면 명령)이 수행되어도, A 버스 시스템은 Forced_ON 신호로 인해 클록이 OFF되지 않아, A 버스 시스템의 버스는 활성화 상태로 남아 있는다. 따라서, A 코어 및 A 버스 시스템의 수면 모드로의 진입을 허락하는 명령을 수행하는 도중에, B 코어에서 A 버스 시스템의 영역을 엑세스하여도, 엑세스 전에 설정되는 Forced_ON 신호에 의해 A 버스 시스템에 대한 버스 수면이 보류되는 상태가 되므로 문제가 해결된다.
엑세스를 끝낸 B 코어는, Forced_ON신호를 해제(release)하여 A 코어 및 A 버스 시스템에 대한 수면 명령이 내려진 버스 시스템의 클록을 오프(OFF) 상태로 들어가게 한다. 이후 A 코어 및/또는 A 버스 시스템은 인터럽트 같은 외부 이벤트에 의해 깨어날 수 있다. 또한, A 버스 시스템의 클록이 오프(OFF)로 들어간 상태에서 B 코어가 A 버스 시스템을 다시 엑세스하고자 할 경우, Forced_ON신호를 통해 A 버스 시스템의 클록이 ON 되도록 한다. 따라서, A 코어에 어떤 작업을 요청할 경우가 아닌, 단지 수면 상태인 A 버스 시스템의 영역만을 엑세스를 하는 경우, 깨우는(wake-up) 인터럽트를 통해 A 버스 시스템과 A 코어의 클록을 온(ON)하여 전체 시스템을 활성화 상태로 복구시킬 필요 없이, Forced_ON 신호를 통해 A 버스 시스템의 클록만 활성화 시키는 특징이 있다. B 코어는 A 버스 시스템의 영역을 엑세스 한 이후 Forced_ON 신호를 해제(release)하여 A 버스 시스템의 클록을 오프 상태로 되게 하므로, B 코어의 엑세스를 서비스하기 위해 A 코어가 활성화 상태로 돌아오 는 문제를 해결할 수 있다.
이미 수면에 들어간 A 코어 및 A 버스 시스템은, 수면을 깨우는(wake-up) 인터럽트 요소(factor)에 의해 기존의 방식과 마찬가지로 수면 모드로부터 깰 수(wake-up) 수 있다. 수면을 깨우는(Wake-up) 인터럽트 요소로는, 타이머(timer) 인터럽트, 캐 패드 등의 키(key) 입력과 같은 외부 이벤트, 다른 쪽 코어에 의한 인터럽트 등이 가능하다.
도 3은 본 실시예에 따른 멀티 코어 SoC의 시스템 제어 블록의 구조를 나타내는 블록도이다. 도 3의 일례는, 다른 쪽 코어(예를 들어, B 코어)가 상대편 버스 시스템(예를 들어, A 버스 시스템)의 상태에 상관없이 강제로 ON시킬 수 있는 방법을 제공하는 새로운 클록 게이팅 기법(clock gating scheme)을 보여준다. 즉, 상술한 강제 신호(forced signal)을 온(on)으로 설정하여 버스 시스템의 상태로 강제로 On으로 설정한다. 도 3에서 강제 신호는 Force_on_from_core2 및 Force_on_from_core1이다. 각각의 신호는 다른 쪽 코어로부터 수신되어 특정한 버스 시스템을 강제로 On 시킨다.
제안된 구조의 클록 게이팅 기법을 상기 시스템 제어 블록에 적용하면, 휴무(idle) 상태에 있는 코어(예를 들어, A 코어)가 버스 수면에 들어가야 할지 판단할 때, B 코어가 A 버스 시스템을 엑세스하는지 여부에 관계없이, A 코어와 A 버스 시스템에 대한 버스 수면 절차를 수행하면 된다.
만약, B 코어 쪽에서 A 버스 시스템의 버스를 사용하고 있는 중이라면, A 코어와 A 버스 시스템에 대한 버스 수면 절차가 수행 중이더라도, A 버스 시스템 쪽 클록은 게이팅 되지 않고 계속 공급되는 상태로 있게 된다. 이것은 B 코어에서 A 버스 시스템을 엑세스 하기 전에 forced_ON 신호를 활성화 상태로 설정했기 때문이다. 즉, 도 3의 301 블록에 따라, A 코어에서 수행한 수면을 허락하는 명령어에 의해 만들어진 bus_clock_stop 신호(예를 들어, Core1_bus_clk_stop)는 마스킹되어 로우(low) 상태로 바뀌고, 버스 클록에 대한 게이팅은 이루어 지지 않는다.
수면 모드로부터 깨어나는(Wake-up) 경우, 외부 기상 이벤트(external wake-up events)나 내부 인터럽트 이벤트에 의해 게이팅된 클록이 해제되고 수면 인가 신호(sleep_grant)가 해제된 다음 코어가 동작을 재개하는 것은 기존 시스템과 같다.
B 코어가 A 코어에게 어떤 작업을 요청하기 위해서는, 내부 인터럽트 이벤트를 발생시켜 A 코어를 깨우면 된다. 그러나, B 코어가 A 코어에게 어떤 작업을 요청하는 것이 아니라, 단지 A 버스 시스템 영역을 엑세스하는 경우, 기존 구조에서는 내부 인터럽트 이벤트를 통해 A 코어를 깨워야만 했다. 이럴 경우 A 코어는 B 코어의 엑세스가 끝난 후 또다시 A 버스 시스템 점유를 체크하는 과정을 통해 수면 모드로 들어갈지 결정해야 한다.
그러나, 제안된 구조에서는 수면 모드에 있는 버스 시스템, 즉 A 버스 시스템을 B 코어에서 엑세스할 때, A 버스 시스템이 수면 모드 인지 여부를 확인하여 기상(wake-up) 시킬 필요 없이 forced_ON신호를 설정한다. Forced_ON 신호에 의해 bus_clock_stop 신호(예를 들어, Core1_bus_clk_stop)는 마스킹 되어 clock_gating cell(302)에 의해 차단된 gated_bus_clock 신호(예를 들어, Gated_core1_bus_clk) 가 온(ON)되다. 이로 인하여, B 코어에서 A 코어를 깨울 필요 없이 A 버스 시스템 영역을 엑세스할 수 있다.
엑세스를 완료한 후 forced_ON 신호를 설정한 B 코어는 설정을 클리어 함으로써 bus_clock_stop 신호의 마스킹을 해제하여 gated_bus_clock은 gating 셀(302)에 의해 다시 오프(OFF) 상태로 된다. 따라서, B 코어는, A 코어 쪽으로 어떤 작업을 요청하지 않고 단지 A 버스 시스템을 엑세스만 하고자 할 때, forced_ON 신호의 설정/클리어를 통해 정지된 버스 클록을 엑세스하는 동안만 온/오프하면 된다.
새로운 구조를 사용하면, 수면 모드에 들어가고자 하는 A 코어 쪽에서는 A 버스 시스템의 버스가 B 코어에 의해 점유되는가의 체크를 할 필요가 없다. 또한, A 버스 시스템 영역을 엑세스하고자 하는 B 코어는 A 버스 시스템이 수면 중인지 아닌 지 검사하여 수면 중이면 인터럽트를 발생시켜 A 코어를 깨우는 일련의 소프트웨어적 제어를 수행할 필요가 없다.
A 코어 및 A 버스 시스템은, 처리할 작업이 존재하지 않고 또한 자기 쪽에서 내린 A 버스 시스템을 사용하는 명령의 처리가 끝나면 수면 모드로 들어가면 된다. 또한, A 버스 시스템을 엑세스하고자 하는 B 코어는, A 버스 시스템의 클록 온/오프(ON/OFF) 여부와 관계없이 엑세스하기 전에 forced_ON 신호를 설정하여 A 버스 시스템의 클록을 항상 온(on)시켜 놓고, 엑세스가 끝나면 forced_ON 신호를 클리어하여 bus clock_stop 신호의 제어를 A 코어 쪽으로 돌려주면 된다.
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
본 발명의 효과는 다음과 같다.
본 발명에 따라, 수면 상태에 들어간 버스 시스템을 엑세스 하고자 하는 활성 상태의 코어는, 엑세스하고자 하는 버스 시스템의 상태를 체크할 필요가 없다.
즉, 수면 모드를 지원하는 멀티 코어 SoC에서, 활성화 상태에 있는 코어가 다른 쪽 버스 시스템 엑세스를 할 때 상대 쪽 bus 상태 체크 및 sleep시 인터럽트를 통한 wake-up과 같은 과정을 제거할 수 있으므로 전체적인 엑세스 시간이 줄어드는 유리한 효과가 있다.
또한, 코어가 처리할 작업이 없는데도 단지 버스 시스템 엑세스를 허용하기 위해 기상하는 구간이 없어지므로 수면 모드 운용 구간을 최대화 하여 SoC 전체 동작 전력을 줄일 수 있다.
또한, 다른 코어 쪽에서 자기 쪽 버스 시스템 엑세스 여부를 체크할 필요 없이 코어와 버스 시스템 수면 모드로 진입할 수 있으므로, 수면 시나리오 관리 및 운용이 간편하며, 수면 진입 시점, 수면 해제 시점 및 엑세스 여부 체크 시점 사이의 공백으로 인한 확률적 오류를 제거할 수 있다.

Claims (5)

  1. 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제1 버스 시스템(bus system);
    상기 제1 버스 시스템을 제어하는 제1 코어(core);
    상기 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제2 버스 시스템;
    상기 제2 버스 시스템을 제어하는 제2 코어; 및
    상기 제2 코어로부터의 강제 신호에 따라 상기 제1 버스 시스템의 수면 모드 진입을 보류(hold)할지 여부를 결정하는 제1 클록 제어 모듈과, 상기 제1코어로부터의 강제 신호에 따라 상기 제2 버스 시스템의 수면 모드 진입을 보류할지 여부를 결정하는 제2 클록 제어 모듈을 포함하는 클록 제어 모듈
    을 포함하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.
  2. 제1항에 있어서,
    상기 제1 클록 제어 모듈은,
    상기 제1 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제1 버스 시스템의 수면 모드 진입 여부를 결정하되,
    상기 제2 코어로부터의 강제 신호가 온(on)으로 설정되는 경우에는 항상 상기 제1 버스 시스템의 수면 모드 진입을 보류하는 것
    을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.
  3. 제1항에 있어서,
    상기 제2 클록 제어 모듈은,
    상기 제2 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제2 버스 시스템의 수면 모드 진입 여부를 결정하되,
    상기 제1 코어로부터의 강제 신호가 온(on)으로 설정되는 경우에는 항상 상기 제2 버스 시스템의 수면 모드 진입을 보류하는 것
    을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.
  4. 제1항에 있어서,
    상기 클록 제어 모듈은,
    상기 제1 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제1 코어의 수면 모드 진입 여부를 결정하는 것
    을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.
  5. 제1항에 있어서,
    상기 클록 제어 모듈은,
    상기 제2 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제2 코어의 수면 모드 진입 여부를 결정하는 것
    을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.
KR1020060117672A 2006-11-27 2006-11-27 수면 모드를 지원하는 멀티 코어 시스템 온 칩 KR101285665B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060117672A KR101285665B1 (ko) 2006-11-27 2006-11-27 수면 모드를 지원하는 멀티 코어 시스템 온 칩

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060117672A KR101285665B1 (ko) 2006-11-27 2006-11-27 수면 모드를 지원하는 멀티 코어 시스템 온 칩

Publications (2)

Publication Number Publication Date
KR20080047792A true KR20080047792A (ko) 2008-05-30
KR101285665B1 KR101285665B1 (ko) 2013-07-11

Family

ID=39664117

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060117672A KR101285665B1 (ko) 2006-11-27 2006-11-27 수면 모드를 지원하는 멀티 코어 시스템 온 칩

Country Status (1)

Country Link
KR (1) KR101285665B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683251B2 (en) 2010-10-15 2014-03-25 International Business Machines Corporation Determining redundancy of power feeds connecting a server to a power supply
WO2020105749A1 (ko) * 2018-11-21 2020-05-28 엘지전자 주식회사 차량에 구비되는 장치 및 그 제어 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804632B2 (en) 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US7451333B2 (en) 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683251B2 (en) 2010-10-15 2014-03-25 International Business Machines Corporation Determining redundancy of power feeds connecting a server to a power supply
WO2020105749A1 (ko) * 2018-11-21 2020-05-28 엘지전자 주식회사 차량에 구비되는 장치 및 그 제어 방법

Also Published As

Publication number Publication date
KR101285665B1 (ko) 2013-07-11

Similar Documents

Publication Publication Date Title
US6775786B2 (en) Method and apparatus for power mode transition in a multi-thread processor
US7430673B2 (en) Power management system for computing platform
US6711691B1 (en) Power management for computer systems
TWI622874B (zh) 省電處理器架構
JP4685312B2 (ja) データ処理システムおよび電力節約方法
KR101529018B1 (ko) 멀티코어 컴퓨팅 디바이스들에 대한 다이나믹 슬립
US5586332A (en) Power management for low power processors through the use of auto clock-throttling
US9921985B2 (en) Direct memory access controller
EP3872604B1 (en) Hardware automatic performance state transitions in system on processor sleep and wake events
US7451333B2 (en) Coordinating idle state transitions in multi-core processors
US6125450A (en) Stop clock throttling in a computer processor through disabling bus masters
US8402291B2 (en) Method, device, and system for guaranteed minimum processor power state dwell time
TWI546635B (zh) 用於功率管理之方法及裝置以及相關積體電路
GB2537852B (en) Controlling transitions of devices between normal state and quiescent state
US9448617B2 (en) Systems and methods for messaging-based fine granularity system-on-a-chip power gating
CN113093899B (zh) 一种跨电源域数据传输方法
JP2004514211A (ja) バス結合された回路ブロックのための電力管理の方法及び構成
KR101285665B1 (ko) 수면 모드를 지원하는 멀티 코어 시스템 온 칩
KR101896494B1 (ko) 컴퓨팅 디바이스들에서의 전력 관리

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee