KR101285665B1 - multi core system on chip supporting a sleep mode - Google Patents

multi core system on chip supporting a sleep mode Download PDF

Info

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

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)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (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 R1020060117672

multi core, soc, 수면 모드, 강제, 클록, 게이팅 제어

The present invention relates to a System on Chip (SoC) having a plurality of cores, and more particularly, to an SoC capable of efficient sleep mode control. The present invention, in order to achieve the above object, a first bus system for controlling access to a peripheral device of at least one core; A first core controlling the first bus system; A second bus system for controlling access to peripheral devices of the at least one core; A second core controlling the second bus system; And a first clock control module for determining whether to hold a sleep mode entry of the first bus system according to a forced signal from the second core, and the second according to a forced signal from the first core. And a clock control module including a second clock control module for determining whether to suspend entering the sleep mode of the bus system.

Figure R1020060117672

multi core, soc, sleep mode, forced, clock, gating control

Description

수면 모드를 지원하는 멀티 코어 시스템 온 칩{multi core system on chip supporting a sleep mode}Multi core system on chip supporting a sleep mode}

도 1은 종래 기술에 따른 멀티 코어 SoC를 나타내는 블록도이다.1 is a block diagram illustrating a multi-core SoC according to the prior art.

도 2는 종래 기술에 따른 멀티 코어 SoC에 포함되는 시스템 제어 블록의 게이팅 기법을 나타내는 도면이다.2 is a diagram illustrating a gating technique of a system control block included in a multi-core SoC according to the related art.

도 3은 본 실시예에 따른 멀티 코어 SoC에 포함되는 시스템 제어 블록의 게이팅 기법을 나타내는 도면이다.3 is a diagram illustrating a gating technique of a system control block included in a multi-core SoC according to the present embodiment.

본 발명은 복수의 코어(core)를 갖는 시스템 온 칩(SoC: System on Chip)에 관한 것으로, 보다 구체적으로, 효율적인 수면 모드(sleep mode)의 제어가 가능한 SoC에 관한 것이다. The present invention relates to a System on Chip (SoC) having a plurality of cores, and more particularly, to an SoC capable of efficient sleep mode control.

이하, 하나 또는 복수의 코어를 갖는 시스템 온 칩(이하, 'SoC'라 칭한다)에서의 수면 모드(sleep mode) 동작을 설명한다. 상기 수면 모드(sleep mode)는 전력 절약 등을 이유로 코어 또는 버스가 진입하는 동작 모드이다. Hereinafter, a sleep mode operation in a system on chip having one or more cores (hereinafter referred to as 'SoC') will be described. The sleep mode is an operation mode in which a core or a bus enters due to power saving.

특정한 SoC에서 처리되어야 할 작업(Task)이 없을 경우, 저전력 소비를 위하 여, 클록(clock)을 정지시키는 기법(즉, 수면 모드)이 사용된다. 이러한, 수면 모드의 기법은, 코어(core) 부분만 정지시키는 코어 수면(core sleep)가 있으며, 코어(core)와 그 코어(core)의 버스 시스템(bus system)을 정지시키는 버스 정지(bus stop)가 있다. If there are no tasks to be processed on a particular SoC, a technique to stop the clock (ie sleep mode) is used for low power consumption. This sleep mode technique has a core sleep that stops only the core portion, and a bus stop that stops the core and the bus system of that core. There is).

이하, 싱글 코어에서의 수면 모드의 동작을 설명한다. The operation of the sleep mode in the single core is described below.

하나의 코어를 갖는 싱글 코어(Single-core) 시스템에서는 코어 수면 및 버스 수면(bus sleep)은 해당 버스 시스템의 코어에 의해 제어된다. 한편, 버스 수면의 적용 여부는, 해당 코어(core)의 제어에 의해 결정된다. 즉, 코어 입장에서 처리할 작업이 존재하지 않고, 버스 시스템 영역을 사용하는 명령의 처리가 완료되었을 경우에 코어 수면 및 버스 수면에 들어갈 수 있다. 만약 버스 시스템이 수면 모드에 진입했을 경우, 그 버스 시스템을 엑세스(access)하는 주체인 코어도 수면 모드 상태이기 때문에, 수면 모드 상태에 있는 버스 시스템 영역의 디바이스가 엑세스되는 경우는 발생하지 않는다.In a single-core system with one core, core sleep and bus sleep are controlled by the core of the bus system. On the other hand, whether or not bus sleep is applied is determined by the control of the core. That is, when there is no work to be processed from the core point of view, and the processing of the command using the bus system area is completed, the core sleep and the bus sleep can be entered. If the bus system enters the sleep mode, the core that accesses the bus system is also in the sleep mode, so that a device in the bus system area in the sleep mode is not accessed.

이하, 멀티 코어에서의 수면 모드의 동작을 설명한다. The operation of the sleep mode in the multi-core is described below.

멀티 코어 SoC(multi-core SoC)에서 각 코어(예를 들어, 제1, 제2 코어)는, 싱글 코어의 동작처럼, 제2 코어가 제1 코어의 버스(bus)를 엑세스하는지 여부를 체크 하지 않는다. 또한, 싱글 코어와 같이 버스 수면 모드를 적용할 경우, 활성(active) 상태에 있는 다른 코어가 수면 모드에 들어가 있는 버스 시스템 영역을 엑세스 했을 때, 원하지 않는 응답을 받거나 응답이 올 때까지 계속 기다리는 데드 록(dead-lock)상태에 빠지게 된다. 두 경우 모두 저전력을 위해 수면 모드를 운용 할 경우 SoC 동작에 문제가 발생한다. In a multi-core SoC, each core (eg, first and second cores) checks whether the second core has access to the bus of the first core, such as the operation of a single core. I never do that. In addition, when applying a bus sleep mode such as a single core, when an active core accesses an area of a bus system that enters sleep mode, it receives a deadly response or continues to wait for a response. You are in a dead-lock state. In both cases, operating the sleep mode for low power causes problems in SoC operation.

이하, 상술한 데드 록 상태를 피하기 위한 종래의 방법을 설명한다.Hereinafter, a conventional method for avoiding the deadlock state described above will be described.

상술한 데드 록(dead-lock) 상태를 피하기 위한 방법으로, 제1 코어(core)가 제2 코어의 버스 시스템(bus system)의 영역을 엑세스하기 전에 엑세스하고자 하는 제2 버스 시스템의 상태를 확인한다. 그런 다음 해당 버스 시스템이 수면 모드일 경우, 인터럽트(인터럽트) 같은 이벤트(event)를 통해 엑세스(access)하고자 하는 버스 시스템과 코어를 활성(active) 상태로 복구 한 다음 엑세스한다. 그리고 수면 모드에 들어가고자 하는 버스 시스템 쪽의 코어는 수면 모드 상태임을 나타낼 수 있는 플래그(flag)를, 양쪽 버스 시스템이 모두 엑세스 할 수 있는 공통의 레지스터 영역에 기록하여야 한다.As a method for avoiding the dead-lock state described above, the state of the second bus system to be accessed is checked before the first core accesses the area of the bus system of the second core. do. Then, when the bus system is in sleep mode, the bus system and core to be accessed are restored to an active state through an event such as an interrupt and then accessed. The core of the bus system to enter the sleep mode must write a flag indicating that the sleep mode is in a common register area that both bus systems can access.

도 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 is a block diagram illustrating a typical Soc with two cores 101, 102 and bus systems 103, 104 connected to each core. 1 has two cores, which may be a DSP or a CPU or the like. 1 also includes a bus system, which is a block for controlling various memories, registers, peripherals, and their access paths connected to a core. In addition, the bus bridge 105 of FIG. 1 is a device serving as a bridge for accessing a device area existing in the other bus system in two different bus systems. The system control block of FIG. 1 also controls and supplies system related signals such as clocks and resets. In addition, the system control block 106 has an interrupt controller (interrupt controller) of each core when there is a common register area having an entire system in a structure having different bus systems. do.

도 1은 2개의 코어(101, 102)와 각각의 버스 시스템을 갖는 전형적인 SoC 시스템의 블록 다이어그램이다. 저전력 설계의 한 방법으로 클록 게이팅(clock-gating)(클록 게이팅은 클록을 ON/OFF하는 것을 나타낸다)을 통해 동적 전력을 줄이는 방법을 사용하는데, 이를 위해 각 코어 및 버스 시스템으로 입력되는 클록 게이팅을 제어하는 시스템 제어 블록(106)이 존재한다.1 is a block diagram of a typical SoC system with two cores 101, 102 and each bus system. One low-power design uses a method of reducing dynamic power through clock-gating (clock gating indicates turning the clock on and off), which uses the clock gating input to each core and bus system. There is a system control block 106 that controls.

멀티 코어 SoC에서 각 코어의 버스 시스템이 유휴 상태(idle state)에 있을 경우, 각 코어는 버스 시스템을 수면 모드로 진입하게 할 수 있다. In a multi-core SoC, when each core's bus system is in an idle state, each core may put the bus system into sleep mode.

싱글-코어의 경우 그 코어에 해당하는 버스 시스템이 수면모드로 진입하면, 인터럽트 같은 외부 이벤트에 의해 활성 상태로 복원되지 않는 이상, 버스 시스템이 엑세스되는 경우는 없다. In the case of a single-core, when the bus system corresponding to the core enters the sleep mode, the bus system is not accessed unless it is restored to the active state by an external event such as an interrupt.

그러나, 멀티-코어 SoC의 경우, 어느 한쪽 버스 시스템이 수면상태로 들어 갈 경우, 수면 상태에 들어가지 않는 다른 코어에 의해 수면 상태에 있는 버스 시스템을 엑세스해야 할 경우가 발생할 수 있다. 이러한 경우 수면 상태에 있는 버스 시스템을 엑세스했기 때문에, 엑세스를 요청한 코어는 적절한 응답을 받을 수 없어 비정상적인 동작을 하거나 데드 록(dead-lock)에 빠진다. However, in the case of a multi-core SoC, when one bus system enters the sleep state, it may be necessary to access the sleep bus system by another core that does not enter the sleep state. In this case, because the bus system is in a sleeping state, the core requesting access cannot receive an appropriate response, causing abnormal operation or dead-lock.

위와 같이 멀티 코어 SoC에서 수면 상태에 들어간 버스 시스템을 활성 상태에 있는 다른 코어가 임의로 엑세스할 수 있는 문제를 방지하기 위해 종래에는 다음과 같은 방법이 제안되었다.As described above, the following method has been proposed in order to prevent a problem in which a bus system entering a sleep state in a multi-core SoC can be randomly accessed by another core in an active state.

우선, 각 코어와 그 코어에 해당하는 버스 시스템에 대한 클록 ON/OFF를 제어할 수 있는 하드웨어 블록을 싱글-코어의 경우와 마찬가지로 각각의 코어와 버스 시스템에 대해 구현한다.First, a hardware block capable of controlling clock ON / OFF for each core and the bus system corresponding to the core is implemented for each core and bus system as in the case of a single core.

그 다음, 각 코어는 그 코어에 해당하는 버스 시스템을 수면 모드로 들어가게 하기 전에, 모든 코어가 엑세스할 수 있는 레지스터 영역에 플래그(flag)를 설정함으로써 그 버스 시스템이 수면 모드 상태인 것을 다른 코어가 확인할 수 있게 한다.Each core then sets a flag in a register area that all cores can access before putting the bus system corresponding to that core into sleep mode. Make sure to check.

그 다음, 활성(active) 상태의 코어가 다른 코어의 버스 시스템 영역을 엑세스하기 전에, 플래그 레지스터(flag register) 영역을 엑세스하여 각 버스 시스템의 상태를 확인한다. 만약 엑세스하고자 하는 버스 시스템이 수면상태에 있는 것으로 확인되면, 수면 상태에 들어간 버스 시스템을 활성(active) 상태로 복원하게 한 후 플래그 레지스터(flag register)를 다시 체크하여 그 버스 시스템의 클록이 활성화되었는지 확인한 다음, 그 버스 시스템 영역을 엑세스한다. Then, before the active core accesses the bus system area of another core, the flag register area is accessed to check the state of each bus system. If the bus system to be accessed is found to be in sleep, restore the bus system to sleep and then check the flag register to see if the clock on that bus system is active. After checking, access the bus system area.

수면상태에 있는 버스 시스템이나 코어를 활성화(active) 상태로 복원하는 방법은 인터럽트(인터럽트) 같은 외부 이벤트(event)에 의해 가능한데, 활성 상태에 있는 코어가 수면 상태에 있는 버스 시스템의 인터럽트 제어부에 외부 인터럽트를 발생시킬 수 있는 경로(path)를 추가함으로써 수면 상태의 버스 시스템이나 코어의 클록(clock)을 다른 코어에 의해 활성화 시킨다.Restoring a sleeping bus system or core to an active state is possible by an external event, such as an interrupt, which is external to the interrupt control of the sleeping bus system. By adding a path that can generate an interrupt, the clock of the sleep bus system or core is activated by another core.

도 1에 도시된 각종 입출력 신호 및 클록은 도 2 및 이하의 설명에 의해 구체화된다.Various input / output signals and clocks shown in FIG. 1 are embodied by FIG. 2 and the following description.

제 2도는 종래의 멀티 코어 SoC의 시스템 제어 블록(106) 내부의 클록 게이팅(clock-gating) 기법을 보여 주는 회로도이다.2 is a circuit diagram illustrating a clock gating technique within the system control block 106 of a conventional multi-core SoC.

이하, 도 2를 참조하여 데드 록의 문제를 해결하기 위한 종래의 클록 게이팅 기법을 설명한다. Hereinafter, a conventional clock gating technique for solving the problem of deadlock will be described with reference to FIG. 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 신호는 코어로 들어 오는 인터럽트신호에 의해 해제가 되어 수면 모드에서 동작을 개시하고 코어 외부로는 동작 모드라는 것을 알린다.Each core may enter only sleep core or sleep core and bus together. In this case, after entering Core_sleep (Core 1_sleep, Core 2_sleep) or bus_sleep bit (Core 1_bus_sleep, Core 2_bus_sleep) in the system control block 106 to enter sleep, an instruction instructing to enter the sleep mode. In this case, sleep_grant signals Core1_sleep_grant and Core2_sleep_grant are generated on the core side, and if the clock_stop_masking signal is low, core_clock_stop and bus clock_stop signals are generated. When each of the core_clock_stop and bus_clock_stop signals is activated, each clock-gating cell (201, 202, 203, 204) blocks the free-running clock (the clock that is always 'ON') and is supplied to each clock-domain. Turn the clock off. The free_run clock (or free_running clock) is a signal generated in the clock generation block for each clock domain and is a clock before being gated. This clock is always on. The logic inside the system control block operates as a non-gated free_run clock, and the block where the clock should not be stopped uses the free_run clock. In FIG. 2, the gated clock (eg, Gated_core1_bus_clk) is a clock after the free_run clock passes through the gating cells 201, 202, 203, and 204. In addition, the gating cells 201, 202, 203, and 204 are cells that generate a gated clock by turning ON / OFF the actual free_run clock, and gating ON / OFF control is performed by each clock stop signal previously generated (for example, Core1_bus_clk_stop). Is made by). In addition, the sleep_grant signal (for example, Core1_sleep_grant) may process a pre-sleep state when a core supporting sleep mode issues a sleep command, enter a sleep mode, and send a signal such as a sleep grant signal out of the core. It stops the clock after receiving this signal in the block that actually controls the clock. In addition, the sleep grant signal is released by the interrupt signal entering the core to start operation in the sleep mode and inform the outside of the core that the operation mode.

Clock_stop masking 신호는 외부 입력 장치의 키 입력 같은 외부 이벤트나 SoC 내부에서 발생하는 내부 인터럽트 이벤트(internal 인터럽트 event)들에 의해 발생하며, 이들 이벤트 중 하나라도 활성화되면 clock_stop masking신호가 발생하여 clock_stop신호가 로우(low)가 되어 차단되었던 클록(clock)이 공급된다. The clock_stop masking signal is generated by an external event, such as a key input from an external input device, or internal interrupt events that occur inside the SoC.If any of these events is enabled, the clock_stop masking signal is generated and the clock_stop signal is low. A low clock is supplied.

또한, 이 clock_stop masking신호는 코어의 인터럽트 신호로서 입력되어 인터럽트를 받은 후 다음 클록에서 sleep_grant 신호를 해제하고 동작을 재개한다. 각 코어는, 자기 쪽 도메인(domain)의 코어 및 버스 시스템의 게이팅을 제어할 수 있으며, 외부 이벤트나 내부 인터럽트 이벤트에 의한 신호에 의해 게이팅을 해제할 수 있다. In addition, this clock_stop masking signal is input as an interrupt signal of the core, and after receiving an interrupt, releases the sleep_grant signal from the next clock and resumes operation. Each core can control gating of cores and bus systems in its own domain and can release gating by signals generated by external events or internal interrupt events.

따라서, 수면 모드에 있는 버스 시스템을 다른 쪽 코어가 엑세스하기 위해서는, 다른 쪽 코어쪽에서 내부 인터럽트 이벤트 신호의 형태로 인터럽트를 발생시켜 수면 상태에 있는 코어를 깨운(wake-up) 다음 엑세스할 수 있다. Therefore, in order for the other core to access the bus system in the sleep mode, the other core can wake up the core in the sleep state by generating an interrupt in the form of an internal interrupt event signal.

다른 쪽 코어쪽에서 발생 시킨 내부 인터럽트 이벤트에 의해 수면 상태에 있던 코어는, 다른 쪽 코어로부터 버스 엑세스를 허용하기 위해 깨어난 후 유휴 모드의 동작(idle 작업)을 수행하며, 다시 코어의 수면 모드 진입(이하, '코어 수면'이라 칭함)이나 코어 및 버스 시스템의 수면 모드 진입(이하, '코어/버스 수면'이라 칭함)을 결정해야 한다. 코어가 처리할 작업(task)이 없을 경우 코어 수면에 들어갈지 코어/버스 수면에 들어갈지를 결정하는데, 코어/버스에 들어가기 위해서는 버스 시스템의 상태가 휴무(idle)인지 검사해야 한다. 자기 쪽 버스 시스템은 해당 코어에 의해 제어가 이루어 지기 때문에 버스 시스템의 점유 여부를 쉽게 알 수 있으나, 다른 쪽 코어에 의한 자기 쪽 버스 시스템의 엑세스 여부는 임의로 발생한다. 따라서, 프로그램 상에서 다른 쪽 코어와 플래그(flag) 교환을 통해 판단해야 한다. 시스템 제어 블록(106) 내에 양쪽 코어 모두 엑세스할 수 있는 레지스터(register) 영역에 플래그(flag) 레지스터를 두고 이를 이용하여, 버스 수면(버스 시스템의 수면 모드)에 들어가고자 하는 코어는 자기 쪽 버스 시스템이 다른 쪽 코어에 의해 점유되고 있는지 여부를 판단하고, 다른 쪽 버스 시스템을 엑세스하고자 하는 코어는 다른 쪽 버스 시스템이 수면 상태에 있는지 아닌지 판단해야 한다.The core, which was asleep by an internal interrupt event generated by the other core, wakes up to allow bus access from the other core and performs idle mode (idle operation), and then enters the sleep mode of the core. In the following, it is necessary to determine 'core sleep') or enter the sleep mode of the core and bus systems (hereinafter referred to as 'core / bus sleep'). If the core has no tasks to perform, it decides whether to enter core sleep or core / bus sleep. To enter the core / bus, it is necessary to check whether the bus system is idle. Since the bus system of the own side is controlled by the corresponding core, it is easy to know whether the bus system is occupied, but access of the own side bus system by the other core occurs arbitrarily. Therefore, it must be determined through flag exchange with the other core in the program. In the system control block 106, a core that wishes to enter a bus sleep (sleep mode of the bus system) by placing a flag register in a register area accessible to both cores and using it is the bus system on its own side. It is necessary to determine whether or not it is occupied by the other core, and whether the core wishing to access the other bus system is determined whether the other bus system is in the sleep state.

본 발명은 종래 기술을 개선하기 위해 제안된 것으로, 본 발명의 목적은 수면 모드로 진입시 문제가 발생하지 않는 멀티 코어 SoC를 제안하는 것이다.The present invention has been proposed to improve the prior art, and an object of the present invention is to propose a multi-core SoC that does not cause a problem when entering the sleep mode.

본 발명의 다른 목적은 멀티 코어에 따른 데드 록 현상을 해결하는 수면 모 드 제어 방법을 구비한 멀티 코어 SoC를 제안하는 것이다.Another object of the present invention is to propose a multi-core SoC having a sleep mode control method for solving the deadlock phenomenon according to the multi-core.

본 발명은 상술한 목적을 달성하기 위해, 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제1 버스 시스템(bus system); 상기 제1 버스 시스템을 제어하는 제1 코어(core); 상기 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제2 버스 시스템; 상기 제2 버스 시스템을 제어하는 제2 코어; 및 상기 제2 코어로부터의 강제 신호에 따라 상기 제1 버스 시스템의 수면 모드 진입을 보류(hold)할지 여부를 결정하는 제1 클록 제어 모듈과, 상기 제1코어로부터의 강제 신호에 따라 상기 제2 버스 시스템의 수면 모드 진입을 보류할지 여부를 결정하는 제2 클록 제어 모듈을 포함하는 클록 제어 모듈을 포함하는 것을 특징으로 한다.The present invention, in order to achieve the above object, a first bus system for controlling access to a peripheral device of at least one core; A first core controlling the first bus system; A second bus system for controlling access to peripheral devices of the at least one core; A second core controlling the second bus system; And a first clock control module for determining whether to hold a sleep mode entry of the first bus system according to a forced signal from the second core, and the second according to a forced signal from the first core. And a clock control module including a second clock control module for determining whether to suspend entering the sleep mode of the bus system.

본 발명은 저전력 소비를 위한 멀티 코어 SoC를 제안한다. 보다 구체적으로, 본 발명은 각 코어의 버스 시스템이 수면 모드로 진입할 때 발생할 수 있는 데드 록(dead-lock) 문제를 해결하는 멀티 코어 SoC를 제안한다. The present invention proposes a multi-core SoC for low power consumption. More specifically, the present invention proposes a multi-core SoC that solves a dead-lock problem that may occur when a bus system of each core enters a sleep mode.

본 발명에 따른 SoC의 구성, 동작 및 특징은 이하에서 설명하는 본 발명의 일 실시예에 의해 구체화될 것이다. The configuration, operation and features of the SoC according to the present invention will be embodied by one embodiment of the present invention described below.

이하, 본 발명이 개선하려는 기본의 데드 록 방지 기술의 특징을 설명한다.Hereinafter, the features of the basic deadlock prevention technique to be improved by the present invention will be described.

멀티 코어 SoC에서 수면 모드에 있는 버스 시스템을, 활성 상태인 다른 코어가 엑세스 하는 것을 방지하기 위하여 다음과 같은 방법이 사용되었다. 즉, 엑세스하고자 하는 활성화된 코어는 수면 모드의 버스 시스템 쪽으로 인터럽트를 발생시키고, 발생된 인터럽트에 의해 수면 모드에 있는 코어와 버스의 클록을 ON 시킨 다 음 엑세스를 수행한다. In multi-core SoCs, the following methods were used to prevent access to the bus system in sleep mode by another active core. That is, the activated core to be accessed generates an interrupt toward the bus system in the sleep mode, turns on the clock of the core and the bus in the sleep mode by the generated interrupt, and then performs the access.

싱글 코어 시스템(즉, 싱글 코어 SoC를 구비한 시스템)에서 수면 모드는, 코어 쪽에서 일정 시간 동안 처리할 태스크가 없을 때 진입하는데, 코어만 수면 모드로 진입하는 경우와 코어와 버스 시스템이 함께 수면 모드에 들어가는가는 경우가 있다. 수면 모드에 들어가 시스템은 인터럽트 같은 외부 이벤트에 의해 활성화 상태로 돌아오는데, 이러한 이벤트들은 수면 모드에 있는 코어 쪽으로 어떠한 작업의 처리를 요구하는 신호들이다. 따라서 인터럽트에 의해 정지되어 있던 클록이 활성화 되어 수면 모드에 있던 코어와 버스 시스템은 수면 모드를 벗어난 다음, 코어는 처리해야 할 작업을 수행하게 된다. In a single core system (ie a system with a single core SoC), sleep mode is entered when there is no task to process for some time on the core side, where only the core enters sleep mode and the core and bus systems sleep together. There is a case to go into. Once in sleep mode, the system comes back to an active state by external events such as interrupts, which are signals that require processing of some task towards the core in sleep mode. As a result, the clock, which was stopped by the interrupt, is activated, and the core and the bus system are in the sleep mode, and the core is taken out of the sleep mode.

그러나, 멀티 코어 SoC에서 활성 상태에 있는 코어(이하, 설명의 편의를 위해 '제1 코어'라 칭한다)는, 수면 모드에 있는 코어(이하, '제2 코어'라 칭한다) 및 해당 코어에 의해 제어되는 버스 시스템(이하, '제2 버스 시스템'이라 칭한다)을 깨우기 위해 인터럽트를 발생시킨다. 이 경우, 제1 코어는 제2 코어에게 어떠한 작업을 요청할 수도 있고, 단지 수면 모드에 있는 제2 버스 시스템을 엑세스만 하기 위한 목적일 수도 있다. However, cores that are active in a multi-core SoC (hereinafter referred to as 'first core' for convenience of description) are referred to as cores in sleep mode (hereinafter referred to as 'second core') and corresponding cores. An interrupt is generated to wake up the controlled bus system (hereinafter referred to as 'second bus system'). In this case, the first core may request some work from the second core, or may only be for accessing the second bus system in the sleep mode.

제2 버스 시스템을 엑세스하기 위해 기존의 방법과 같이 인터럽트를 사용하여 깨우는 동작을 수행하는 경우 다음과 같은 문제가 발생한다. The following problem occurs when performing an awakening operation using an interrupt as in the conventional method for accessing the second bus system.

우선, 제2 코어의 버스 시스템, 즉 제2 버스 시스템에 대한 엑세스를 허용하기 위해서는 특별한 작업을 처리할 필요가 없는 제2 코어까지도 활성화 상태로 복원되어야 한다. 수면 모드로부터 깨어난 후 제2 코어는 단지 제1 코어의 엑세스 요 청을 위한 인터럽트에 대해서도, 특별한 작업이 없을지라도, 인터럽트 소스 확인과 클리어(clear)같은 간단한 서비스 루틴을 처리해주어야 한다. 제2 코어 자체적으로 특별한 작업이 없더라도 활성화 상태로 깨어나는 경우가 발생하면, 전체적으로 수면 모드에 들어갈 수 있는 구간이 줄어들기 때문에 저전력 관리 면에서 비효율적이다. First, even to allow access to the bus system of the second core, i.e., the second bus system, even the second core, which does not need to process special work, must be restored to the activated state. After waking from sleep mode, the second core must handle simple service routines, such as checking the interrupt source and clearing, even if there is nothing special to do with the interrupt for access requests from the first core. If the second core wakes up in an active state even if there is no special work on its own, it is inefficient in terms of low power management because there is less time for entering the sleep mode as a whole.

또한, 처리할 작업이 존재하지 않아, 코어 및 버스 시스템의 수면 모드 진입을 시도하려는 쪽에서, 항상 해당 코어 쪽의 버스 시스템이 다른 쪽 코어에 의해 엑세스가 점유되고 있는지 여부를 검사하여야 한다. 점유되는지 여부를 검사하려면 엑세스하는 시점과 실제 플래그(flag) 값을 읽은 시점, 그리고 수면 모드로의 진입을 허락하는 명령을 내리는 시점과 실제 클록이 정지되어 수면에 들어가는 시점들 사이에 공백이 생길 수 있기 때문에 잘 정의된 프로토콜로 운용하여야 한다. 또한, 경우에 따라서는 소프트웨어적으로 해결할 수 없는 확률적인 에러가 발생할 수 있어 수면 시나리오 운용에 있어서 유연성을 떨어뜨릴 수 있다. 예를 들면, 수면 모드에 진입하려는 코어 쪽에서 자기 쪽 버스 시스템이 점유되고 있는지 아닌 지 플래그(flag)를 검사했을 때 점유되지 않는 것으로 확인되어 수면 모드로의 진입을 허락하는 명령을 처리하는 도중에, 다른 쪽 코어에서 엑세스를 수행할 수 있다. 이런 경우, 버스 시스템의 수면 모드 진입이 가능한지 확인 후 실제 수면 모드 진입 동작을 완료할 때까지, 다른 쪽 코어는 여전히 해당 버스 시스템이 활성화 상태로 파악되므로 때문에 마치 엑세스가 가능한 것처럼 보인다. 그러나, 이 경우 엑세스하고자하는 버스 시스템이 이미 수면 모드에 들어 가기 때문에 데드 록이 발생한 다.In addition, since there is no work to be processed and the core and the bus system attempts to enter the sleep mode, it is always necessary to check whether the bus system on the core side is occupied by the other core. To check whether it is occupied, there may be a gap between the time of access, the reading of the actual flag value, the command to allow entry into sleep mode, and the time the actual clock stops and enters the surface. As such, it should be run with a well-defined protocol. In addition, in some cases, probabilistic errors that cannot be solved in software may occur, thereby reducing flexibility in operating a sleep scenario. For example, if you check the flag on your core to enter sleep mode and check the flag to see if it is not occupied, then you are in the process of processing a command to allow you to enter sleep mode, Access can be performed on the core. In this case, after checking if the bus system can enter the sleep mode until the actual sleep mode entry operation is completed, the other core still seems to be able to access because the bus system is still identified as active. However, in this case, deadlock occurs because the bus system you want to access is already in sleep mode.

본 실시예는, 버스 시스템(멀티 코어 SoC에서 수면 모드에 있는 버스 시스템)을 엑세스하기 위해 인터럽트를 통해 다른 코어(수면 모드에 있는 코어)까지 깨우지 않고, 나머지 코어(엑세스하고자 하는 활성화된 코어)에서 다른 코어 및 다른 버스 시스템의 클록의 온/오프(ON/OFF)를 직접 제어하는 클록 제어(clock control) 블록을 새롭게 디자인하여 추가한다.This embodiment does not wake up another core (core in sleep mode) via an interrupt to access the bus system (bus system in sleep mode on a multi-core SoC), but on the remaining cores (the active core you want to access). Newly designed and added clock control blocks that directly control the ON / OFF clocks of other cores and other bus systems.

각각의 코어와 버스 시스템에 공급되는 클록은 종래와 마찬가지로 core_sleep(Core1_sleep, Core2_sleep) 신호와 bus_sleep(Core1_bus_sleep, Core2_bus_sleep) 신호에 의해 게이팅(gating) 됨으로써 클록이 온/오프(ON/OFF)된다. Core_sleep 신호와 bus sleep 신호는, 각 코어가 처리할 작업이 없을 경우, 수면 모드 진입과 관련된 일련의 명령을 수행함으로써 발생한다. The clocks supplied to the respective cores and the bus system are gated by the core_sleep (Core1_sleep, Core2_sleep) signal and the bus_sleep (Core1_bus_sleep, Core2_bus_sleep) signal as in the related art, so that the clock is turned on / off. The Core_sleep and bus sleep signals are generated by executing a series of commands related to entering sleep mode when each core has no work to process.

코어가 휴무 모드(idle mode)에 들어가 있으며 버스 시스템을 사용하고 있는 작업이 없을 때, 코어는 버스 시스템과 함께 수면 모드로 들어갈 수 있다.When the core is in idle mode and no work is using the bus system, the core can enter sleep mode with the bus system.

본 실시예에서는, 버스 시스템과 함께 수면 모드에 들어가기 위해 버스 시스템의 사용 여부를 체크할 때, 다른 쪽 코어에 의한 엑세스는 체크할 필요가 없다. 이것은 수면 모드로 들어가는 코어(이하, 'A 코어'라 칭함) 및 버스 시스템(이하, 'A 버스 시스템'이라 칭함) 자체의 클록 제어와 무관하게, 다른 쪽 코어(이하, 'B 코어'라 칭함)에 의해 A 버스 시스템의 클록 제어를 수행하기 때문이다.In this embodiment, when checking whether the bus system is used to enter the sleep mode together with the bus system, access by the other core does not need to be checked. This is referred to as the other core (hereinafter referred to as 'B core') regardless of the clock control of the core (hereinafter referred to as 'A core') and bus system (hereinafter referred to as 'A bus system') itself to enter sleep mode. This is because the clock control of the A bus system is performed by the "

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 버스 시스템에 대한 버스 수면이 보류되는 상태가 되므로 문제가 해결된다.Core B wishing to access an area of the A bus system sets the clock of the A bus system to Forced ON before accessing it. Setting Forced_ON means that the forced signal received from the B core is set to on. Because of this, even when a command (sleep command) is executed to allow the A core and A bus systems to enter sleep mode, the A bus system does not turn off the clock due to the Forced_ON signal, so the bus of the A bus system remains active. There is. Therefore, even while accessing the area of the A bus system from the B core while executing a command to allow the A core and the A bus system to enter the sleep mode, the bus to the A bus system is set by the Forced_ON signal set before the access. Sleep is put on hold, which solves the problem.

엑세스를 끝낸 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 코어가 활성화 상태로 돌아오 는 문제를 해결할 수 있다. Upon completion of the access, the B core releases the Forced_ON signal to turn off the clock of the bus system in which the sleep commands for the A core and the A bus system are issued. The A core and / or A bus system can then be woken up by external events such as interrupts. In addition, when the B core attempts to access the A bus system again while the clock of the A bus system is turned off, the clock of the A bus system is turned on through the Forced_ON signal. Thus, when accessing only the area of the A bus system that is sleeping, not requesting any work from the A core, wake-up interrupts turn on the A bus system and the A core clock. This feature enables only the clock on the A bus system via the Forced_ON signal without the need to restore the entire system to an active state. Since core B releases the Forced_ON signal after accessing the area of the bus A system to turn off the clock of the bus A system, the core A returns to the active state to service the access of core B. Can be solved.

이미 수면에 들어간 A 코어 및 A 버스 시스템은, 수면을 깨우는(wake-up) 인터럽트 요소(factor)에 의해 기존의 방식과 마찬가지로 수면 모드로부터 깰 수(wake-up) 수 있다. 수면을 깨우는(Wake-up) 인터럽트 요소로는, 타이머(timer) 인터럽트, 캐 패드 등의 키(key) 입력과 같은 외부 이벤트, 다른 쪽 코어에 의한 인터럽트 등이 가능하다. A-Core and A-bus systems that have already gone to sleep can be woken up from sleep mode as in the conventional way by means of a wake-up interrupt factor. Wake-up interrupt elements can include timer interrupts, external events such as keystrokes such as a keypad, interrupts by the other core, and the like.

도 3은 본 실시예에 따른 멀티 코어 SoC의 시스템 제어 블록의 구조를 나타내는 블록도이다. 도 3의 일례는, 다른 쪽 코어(예를 들어, B 코어)가 상대편 버스 시스템(예를 들어, A 버스 시스템)의 상태에 상관없이 강제로 ON시킬 수 있는 방법을 제공하는 새로운 클록 게이팅 기법(clock gating scheme)을 보여준다. 즉, 상술한 강제 신호(forced signal)을 온(on)으로 설정하여 버스 시스템의 상태로 강제로 On으로 설정한다. 도 3에서 강제 신호는 Force_on_from_core2 및 Force_on_from_core1이다. 각각의 신호는 다른 쪽 코어로부터 수신되어 특정한 버스 시스템을 강제로 On 시킨다. 3 is a block diagram showing the structure of a system control block of a multi-core SoC according to the present embodiment. 3 illustrates a new clock gating technique that provides a way for the other core (e.g., B-core) to be forced on regardless of the state of the other bus system (e.g., A bus system). Show the clock gating scheme. That is, the above-mentioned forced signal is set to on to force it to the state of the bus system. In FIG. 3, the forced signals are Force_on_from_core2 and Force_on_from_core1. Each signal is received from the other core to force a specific bus system on.

제안된 구조의 클록 게이팅 기법을 상기 시스템 제어 블록에 적용하면, 휴무(idle) 상태에 있는 코어(예를 들어, A 코어)가 버스 수면에 들어가야 할지 판단할 때, B 코어가 A 버스 시스템을 엑세스하는지 여부에 관계없이, A 코어와 A 버스 시스템에 대한 버스 수면 절차를 수행하면 된다. Applying the proposed clock gating scheme to the system control block, the B core accesses the A bus system when determining whether a core in idle (eg, A core) should enter the bus sleep. Regardless of whether you do so, you can perform bus sleep procedures for both A-core and A-bus systems.

만약, B 코어 쪽에서 A 버스 시스템의 버스를 사용하고 있는 중이라면, A 코어와 A 버스 시스템에 대한 버스 수면 절차가 수행 중이더라도, A 버스 시스템 쪽 클록은 게이팅 되지 않고 계속 공급되는 상태로 있게 된다. 이것은 B 코어에서 A 버스 시스템을 엑세스 하기 전에 forced_ON 신호를 활성화 상태로 설정했기 때문이다. 즉, 도 3의 301 블록에 따라, A 코어에서 수행한 수면을 허락하는 명령어에 의해 만들어진 bus_clock_stop 신호(예를 들어, Core1_bus_clk_stop)는 마스킹되어 로우(low) 상태로 바뀌고, 버스 클록에 대한 게이팅은 이루어 지지 않는다. If the bus on the A bus system is being used on the B core side, the clock on the A bus system side will remain supplied without being gated even though the bus sleep procedure for the A core and the A bus system is being performed. This is because the forced_ON signal was set to active before accessing the A bus system on the B core. That is, according to block 301 of FIG. 3, the bus_clock_stop signal (for example, Core1_bus_clk_stop) generated by the instruction to allow sleep performed in the core A is masked and changed to a low state, and a gate clock is made. I do not lose.

수면 모드로부터 깨어나는(Wake-up) 경우, 외부 기상 이벤트(external wake-up events)나 내부 인터럽트 이벤트에 의해 게이팅된 클록이 해제되고 수면 인가 신호(sleep_grant)가 해제된 다음 코어가 동작을 재개하는 것은 기존 시스템과 같다.When wake-up, the clock gated by an external wake-up event or an internal interrupt event is released and the core resumes operation after the sleep grant signal (sleep_grant) is released. Is the same as the existing system.

B 코어가 A 코어에게 어떤 작업을 요청하기 위해서는, 내부 인터럽트 이벤트를 발생시켜 A 코어를 깨우면 된다. 그러나, B 코어가 A 코어에게 어떤 작업을 요청하는 것이 아니라, 단지 A 버스 시스템 영역을 엑세스하는 경우, 기존 구조에서는 내부 인터럽트 이벤트를 통해 A 코어를 깨워야만 했다. 이럴 경우 A 코어는 B 코어의 엑세스가 끝난 후 또다시 A 버스 시스템 점유를 체크하는 과정을 통해 수면 모드로 들어갈지 결정해야 한다. In order for B core to request some work from A core, it can wake up A core by generating an internal interrupt event. However, if core B did not request any work from core A, but only accessed the A bus system area, the existing architecture had to wake up core A through an internal interrupt event. In this case, the A core needs to decide whether to enter the sleep mode by checking the occupancy of the A bus system again after the access of the B core.

그러나, 제안된 구조에서는 수면 모드에 있는 버스 시스템, 즉 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 버스 시스템 영역을 엑세스할 수 있다. However, in the proposed architecture, when the bus system in the sleep mode, that is, the A bus system is accessed from the B core, the forced_ON signal is set without checking whether the A bus system is in sleep mode and wake-up. . The bus_clock_stop signal (for example, Core1_bus_clk_stop) is masked by the forced_ON signal to turn on the gated_bus_clock signal (for example, Gated_core1_bus_clk) that is blocked by the clock_gating cell 302. This allows access to the A bus system area without waking the A core from the B core.

엑세스를 완료한 후 forced_ON 신호를 설정한 B 코어는 설정을 클리어 함으로써 bus_clock_stop 신호의 마스킹을 해제하여 gated_bus_clock은 gating 셀(302)에 의해 다시 오프(OFF) 상태로 된다. 따라서, B 코어는, A 코어 쪽으로 어떤 작업을 요청하지 않고 단지 A 버스 시스템을 엑세스만 하고자 할 때, forced_ON 신호의 설정/클리어를 통해 정지된 버스 클록을 엑세스하는 동안만 온/오프하면 된다. After completion of the access, the B core which set the forced_ON signal releases the masking of the bus_clock_stop signal by clearing the setting so that the gated_bus_clock is turned off again by the gating cell 302. Therefore, the B core only needs to be turned on / off while accessing the stopped bus clock through the setting / clearing of the forced_ON signal when requesting only access to the A bus system without requesting any work toward the A core.

새로운 구조를 사용하면, 수면 모드에 들어가고자 하는 A 코어 쪽에서는 A 버스 시스템의 버스가 B 코어에 의해 점유되는가의 체크를 할 필요가 없다. 또한, A 버스 시스템 영역을 엑세스하고자 하는 B 코어는 A 버스 시스템이 수면 중인지 아닌 지 검사하여 수면 중이면 인터럽트를 발생시켜 A 코어를 깨우는 일련의 소프트웨어적 제어를 수행할 필요가 없다. With the new architecture, there is no need to check whether the bus of the A bus system is occupied by the B core on the A core side to enter sleep mode. In addition, the B core, which wishes to access the A bus system area, does not need to perform a series of software controls to check whether the A bus system is asleep and generate an interrupt when it is asleep to wake up the A core.

A 코어 및 A 버스 시스템은, 처리할 작업이 존재하지 않고 또한 자기 쪽에서 내린 A 버스 시스템을 사용하는 명령의 처리가 끝나면 수면 모드로 들어가면 된다. 또한, A 버스 시스템을 엑세스하고자 하는 B 코어는, A 버스 시스템의 클록 온/오프(ON/OFF) 여부와 관계없이 엑세스하기 전에 forced_ON 신호를 설정하여 A 버스 시스템의 클록을 항상 온(on)시켜 놓고, 엑세스가 끝나면 forced_ON 신호를 클리어하여 bus clock_stop 신호의 제어를 A 코어 쪽으로 돌려주면 된다.The A core and the A bus system may enter the sleep mode when there is no work to be processed and the processing of the command using the A bus system issued by the end is completed. In addition, the B core that wants to access the A bus system always sets the forced_ON signal to turn on the A bus system's clock before accessing it regardless of whether the A bus system is turned on or off. After access, clear the forced_ON signal and return control of the bus clock_stop signal to the A core.

본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.It will be apparent to those skilled in the art that the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the above detailed description should not be construed as limiting in all aspects and should be considered as illustrative. The scope of the invention should be determined by reasonable interpretation of the appended claims, and all changes within the equivalent scope of the invention are included in the scope of the invention.

본 발명의 효과는 다음과 같다. The effects of the present invention are as follows.

본 발명에 따라, 수면 상태에 들어간 버스 시스템을 엑세스 하고자 하는 활성 상태의 코어는, 엑세스하고자 하는 버스 시스템의 상태를 체크할 필요가 없다. According to the present invention, an active core, which wishes to access a bus system that has entered a sleep state, does not need to check the state of the bus system that is to be accessed.

즉, 수면 모드를 지원하는 멀티 코어 SoC에서, 활성화 상태에 있는 코어가 다른 쪽 버스 시스템 엑세스를 할 때 상대 쪽 bus 상태 체크 및 sleep시 인터럽트를 통한 wake-up과 같은 과정을 제거할 수 있으므로 전체적인 엑세스 시간이 줄어드는 유리한 효과가 있다.In other words, in multi-core SoCs that support sleep mode, when the active core accesses the other bus system, it can eliminate processes such as checking the other bus state and wake-up through interrupts during sleep. This has the beneficial effect of reducing time.

또한, 코어가 처리할 작업이 없는데도 단지 버스 시스템 엑세스를 허용하기 위해 기상하는 구간이 없어지므로 수면 모드 운용 구간을 최대화 하여 SoC 전체 동작 전력을 줄일 수 있다.In addition, there is no wake-up section to allow bus system access even when the core has nothing to do, thus maximizing sleep mode operation to reduce the SoC overall operating power.

또한, 다른 코어 쪽에서 자기 쪽 버스 시스템 엑세스 여부를 체크할 필요 없이 코어와 버스 시스템 수면 모드로 진입할 수 있으므로, 수면 시나리오 관리 및 운용이 간편하며, 수면 진입 시점, 수면 해제 시점 및 엑세스 여부 체크 시점 사이의 공백으로 인한 확률적 오류를 제거할 수 있다.In addition, it is possible to enter the core and bus system sleep mode without having to check whether the other side of the bus system accesses, so it is easy to manage and operate the sleep scenario, and between the sleep entry time, sleep release time and access check time. Probabilistic errors due to spaces can be eliminated.

Claims (5)

적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제1 버스 시스템(bus system);A first bus system controlling access to a peripheral device of at least one core; 상기 제1 버스 시스템을 제어하는 제1 코어(core);A first core controlling the first bus system; 상기 적어도 하나의 코어의 주변 장치에 대한 엑세스를 제어하는 제2 버스 시스템;A second bus system for controlling access to peripheral devices of the at least one core; 상기 제2 버스 시스템을 제어하는 제2 코어; 및A second core controlling the second bus system; And 상기 제2 코어로부터의 강제 신호에 따라 상기 제1 버스 시스템의 수면 모드 진입을 보류(hold)할지 여부를 결정하는 제1 클록 제어 모듈과, 상기 제1코어로부터의 강제 신호에 따라 상기 제2 버스 시스템의 수면 모드 진입을 보류할지 여부를 결정하는 제2 클록 제어 모듈을 포함하는 클록 제어 모듈A first clock control module for determining whether to hold a sleep mode entry of the first bus system according to a forced signal from the second core, and the second bus according to a forced signal from the first core A clock control module including a second clock control module that determines whether to suspend entering a sleep mode of the system 을 포함하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.Multi-core system on a chip that includes a sleep mode that includes. 제1항에 있어서, The method of claim 1, 상기 제1 클록 제어 모듈은, The first clock control module, 상기 제1 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제1 버스 시스템의 수면 모드 진입 여부를 결정하되,It is determined whether the first bus system enters a sleep mode according to a sleep signal from the first core and a control signal generated by a specific event. 상기 제2 코어로부터의 강제 신호가 온(on)으로 설정되는 경우에는 항상 상기 제1 버스 시스템의 수면 모드 진입을 보류하는 것Suspend entering the sleep mode of the first bus system whenever the forced signal from the second core is set to on 을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.Multi-core system-on-chip supporting sleep mode. 제1항에 있어서, The method of claim 1, 상기 제2 클록 제어 모듈은, The second clock control module, 상기 제2 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제2 버스 시스템의 수면 모드 진입 여부를 결정하되,It is determined whether the second bus system enters the sleep mode according to a sleep signal from the second core and a control signal generated by a specific event. 상기 제1 코어로부터의 강제 신호가 온(on)으로 설정되는 경우에는 항상 상기 제2 버스 시스템의 수면 모드 진입을 보류하는 것Always suspend entering the sleep mode of the second bus system when the forced signal from the first core is set to on 을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.Multi-core system-on-chip supporting sleep mode. 제1항에 있어서, The method of claim 1, 상기 클록 제어 모듈은,The clock control module, 상기 제1 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제1 코어의 수면 모드 진입 여부를 결정하는 것Determining whether to enter the sleep mode of the first core according to a sleep signal from the first core and a control signal generated by a specific event; 을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.Multi-core system-on-chip supporting sleep mode. 제1항에 있어서, The method of claim 1, 상기 클록 제어 모듈은,The clock control module, 상기 제2 코어로부터의 수면 인가 신호 및 특정한 이벤트에 의해 발생한 제어 신호에 따라 상기 제2 코어의 수면 모드 진입 여부를 결정하는 것Determining whether the second core enters the sleep mode according to a sleep application signal from the second core and a control signal generated by a specific event. 을 특징으로 하는 수면 모드를 지원하는 멀티 코어 시스템 온 칩.Multi-core system-on-chip supporting sleep mode.
KR1020060117672A 2006-11-27 2006-11-27 multi core system on chip supporting a sleep mode KR101285665B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060117672A KR101285665B1 (en) 2006-11-27 2006-11-27 multi core system on chip supporting a sleep mode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060117672A KR101285665B1 (en) 2006-11-27 2006-11-27 multi core system on chip supporting a sleep mode

Publications (2)

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

Family

ID=39664117

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060117672A KR101285665B1 (en) 2006-11-27 2006-11-27 multi core system on chip supporting a sleep mode

Country Status (1)

Country Link
KR (1) KR101285665B1 (en)

Families Citing this family (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
CN113165664B (en) * 2018-11-21 2023-11-07 Lg电子株式会社 Device provided in vehicle and control method thereof

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006028652A2 (en) 2004-09-03 2006-03-16 Intel Corporation Coordinating idle state transitions in multi-core processors
US7043405B2 (en) 2001-12-06 2006-05-09 Intel Corporation Distribution of processing activity in a multiple core microprocessor
US20060149975A1 (en) 2004-12-30 2006-07-06 Intel Corporation Operating point management in multi-core architectures

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7043405B2 (en) 2001-12-06 2006-05-09 Intel Corporation Distribution of processing activity in a multiple core microprocessor
WO2006028652A2 (en) 2004-09-03 2006-03-16 Intel Corporation Coordinating idle state transitions in multi-core processors
US20060149975A1 (en) 2004-12-30 2006-07-06 Intel Corporation Operating point management in multi-core architectures

Also Published As

Publication number Publication date
KR20080047792A (en) 2008-05-30

Similar Documents

Publication Publication Date Title
US6981163B2 (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 (en) Power efficient processor architecture
JP4685312B2 (en) Data processing system and power saving method
KR101529018B1 (en) Dynamic sleep for multicore computing devices
US9921985B2 (en) Direct memory access controller
US8966305B2 (en) Managing processor-state transitions
US8195887B2 (en) Processor power management and method
US8402291B2 (en) Method, device, and system for guaranteed minimum processor power state dwell time
KR20100017874A (en) Dynamic processor power management device and method thereof
TWI546635B (en) Method and apparatus for power management and related integrated circuit
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 (en) Cross-power domain data transmission method
JP2004514211A (en) Power management method and configuration for bus-coupled circuit blocks
KR101285665B1 (en) multi core system on chip supporting a sleep mode
KR101896494B1 (en) Power management in computing devices
WO2023206693A1 (en) System sleep method and apparatus and system wake-up method and apparatus
JP4717291B2 (en) Control register and processor

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