KR20130021637A - 멀티 코어 시스템의 인터럽트 할당 방법 및 장치 - Google Patents

멀티 코어 시스템의 인터럽트 할당 방법 및 장치 Download PDF

Info

Publication number
KR20130021637A
KR20130021637A KR1020110084020A KR20110084020A KR20130021637A KR 20130021637 A KR20130021637 A KR 20130021637A KR 1020110084020 A KR1020110084020 A KR 1020110084020A KR 20110084020 A KR20110084020 A KR 20110084020A KR 20130021637 A KR20130021637 A KR 20130021637A
Authority
KR
South Korea
Prior art keywords
interrupt
core
control register
interrupt control
register unit
Prior art date
Application number
KR1020110084020A
Other languages
English (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 KR1020110084020A priority Critical patent/KR20130021637A/ko
Priority to US14/234,265 priority patent/US20140136745A1/en
Priority to JP2014527060A priority patent/JP2014524626A/ja
Priority to EP12826403.3A priority patent/EP2750045A4/en
Priority to CN201280041196.8A priority patent/CN103765399A/zh
Priority to PCT/KR2012/006369 priority patent/WO2013027951A1/ko
Publication of KR20130021637A publication Critical patent/KR20130021637A/ko
Priority to JP2017125536A priority patent/JP2017162522A/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 멀티 코어 시스템의 인터럽트 할당 장치 및 방법에 관한 것이다. 본 발명의 일 실시 예에 따르는 멀티 코어 시스템의 각 코어의 인터럽트 처리 능력(capacity)을 기록하는 인터럽트 제어 레지스터부를 구비한 인터럽트 할당 장치의 인터럽트 할당 방법은, 인터럽트를 수신하는 수신 단계, 상기 인터럽트를 수신하면, 상기 인터럽트 제어 레지스터부를 확인하는 확인 단계 및 상기 확인 단계에서 인터럽트 처리가 가능한 상태로 확인된 코어에 상기 인터럽트를 할당하는 할당 단계를 포함할 수 있다. 상기 코어는 상기 인터럽트를 할당받으면 상기 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 불능 상태로 변경하는 신호를 상기 인터럽트 제어 레지스터부에 송신하고 상기 인터럽트를 처리할 수 있다. 본 발명의 일 실시 예에 따르면 멀티 코어 시스템에서 효율적이고 신속한 인터럽트 처리를 위한 인터럽트 할당 방법 및 장치를 제공할 수 있는 효과가 있다.

Description

멀티 코어 시스템의 인터럽트 할당 방법 및 장치 {METHOD AND APPARATUS FOR INTERRUPT ALLOCATION OF MULTI-CORE SYSTEM}
본 발명은 인터럽트 할당 방법 및 장치에 관한 것이다. 더욱 상세하게는, 본 발명은 복수 코어를 가지는 멀티 코어 시스템에서 인터럽트를 할당하는 방법 및 장치에 관한 것이다.
과거 연구자들은 컴퓨터 기타 연산 시스템의 성능 향상을 위해 시스템 코어(core)의 클럭 주파수(clock frequency)를 높이는 방법을 이용하였다. 하지만 코어의 클럭 주파수가 상승하면, 전력 소비와 발열이 상승하는 문제점이 있다. 이러한 문제점 때문에 최근 코어의 클럭 주파수 상승을 통한 성능 향상은 둔화된 상황이다. 이러한 문제점을 회피하기 위하여 연구자들은 시스템의 성능 향상을 위해 코어 개수를 증가시키는 방법을 이용하고 있다.
하지만 여러 개의 코어를 하나의 시스템에 통합시킬 경우 많은 문제점들이 발생된다. 인터럽트의 처리 문제는 그 문제점들 중 한 예이다. 단일 코어 시스템에서 인터럽트가 발생하면 시스템은 곧바로 시스템 내의 유일한 코어에 인터럽트를 할당하여 수행한다. 단일 코어 시스템은 시스템 내 하나의 코어를 포함하기 때문에 선택의 여지가 없다.
하지만 멀티 코어 환경에서 시스템은 특정 인터럽트를 어느 코어에 할당할지 선택해야 한다. 시스템이 인터럽트를 적절한 코어에 할당할 수 없거나, 인터럽트 할당에 지나치게 긴 시간이 소요될 경우, 코어를 여러 개 이용하여 얻을 수 있는 장점이 반감된다.
예를 들어, 현재 인터럽트를 처리할 수 있는 코어 대신 현재 인터럽트를 처리할 수 없는 다른 코어에 인터럽트를 할당하는 경우를 생각할 수 있다. 이 경우 불필요한 인터럽트 지연(interrupt latency)이 발생하고 이는 실시간으로 결과를 얻어야 하는 리얼타임 시스템에서 치명적인 결과를 초래할 수 있다.
대칭형 다중 처리(SMP; Symmetric Multi-Processing) 시스템에서의 인터럽트 처리 방식으로 크게 두 가지 방식이 알려져 있다.
첫 번째 방식은 인터럽트 종류에 따라 처리를 담당하는 코어를 달리하는 방식이다. 각 인터럽트 소스(interrupt source)에서 발생하는 인터럽트를 각각 그에 상응하는 코어가 처리할 수 있다. 이 경우 인터럽트 처리가 분산된다. 따라서, 시스템은 하나의 코어가 모든 인터럽트를 처리하는 방식보다 더 효율적으로 인터럽트를 처리할 수 있다.
두 번째 방식은 특정 인터럽트가 발생한 시점에 인터럽트 제어기가 모든 코어에 해당 인터럽트를 브로드캐스팅 하는 방식이다. 이후 소프트웨어적인 방식으로 선택된 적절한 코어가 해당 인터럽트를 받아들이고(accept) 인터럽트가 할당된(allocation) 사실을 다른 코어에 통지하는 방식으로 인터럽트가 처리된다.
상술한 바와 같은 종래의 인터럽트 처리 방식은 많은 문제점을 내포한다. 상술한 첫 번째 방식, 즉 정적으로 각 인터럽트 소스에서 발생한 인터럽트를 그 인터럽트 소스에 상응하는 코어에 할당하는 방식의 문제점은 다음과 같다. 이 방식에 따르면, 해당 인터럽트 처리를 담당하는 코어가 인터럽트를 바로 처리할 수 없는 상황일 때 인터럽트를 처리하기 위해 대기하는 시간이 길어질 수 있다.
상술한 두 번째 방식, 즉 인터럽트를 모든 코어에 브로드캐스팅하는 방식 또한 문제점이 있다. 하나의 인터럽트를 처리하기 위해서 코어는 인터럽트를 받아들이고(accept) 다른 코어의 중복 수행을 방지하기 위해 인터럽트를 받아들인 사실을 통지한다. 이러한 절차 때문에 많은 지연(latency)이 발생한다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로 멀티 코어 시스템에서 효율적이고 신속한 인터럽트 처리를 위한 인터럽트 할당 방법 및 장치를 제공하는데 그 목적이 있다.
상술한 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따르는 멀티 코어 시스템의 각 코어의 인터럽트 처리 능력(capacity)을 기록하는 인터럽트 제어 레지스터부를 구비한 인터럽트 할당 장치의 인터럽트 할당 방법은, 인터럽트를 수신하는 수신 단계, 상기 인터럽트를 수신하면, 상기 인터럽트 제어 레지스터부를 확인하는 확인 단계 및 상기 확인 단계에서 인터럽트 처리가 가능한 상태로 확인된 코어에 상기 인터럽트를 할당하는 할당 단계를 포함할 수 있다. 상기 코어는 상기 인터럽트를 할당 받으면 상기 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 불능 상태로 변경하는 신호를 상기 인터럽트 제어 레지스터부에 송신하고 상기 인터럽트를 처리할 수 있다.
상술한 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따르는 멀티 코어 시스템의 인터럽트 할당 장치는, 각 코어의 인터럽트 처리 능력(capacity)을 기록하는 인터럽트 제어 레지스터부 및 인터럽트를 수신하면, 상기 인터럽트 제어 레지스터부를 확인하고, 상기 확인 단계에서 인터럽트 처리가 가능한 상태로 확인된 코어에 상기 인터럽트를 할당하는 인터럽트 할당부를 포함할 수 있다. 상기 코어는 상기 인터럽트를 할당 받으면 상기 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 불능 상태로 변경하는 신호를 상기 인터럽트 제어 레지스터부에 송신하고 상기 인터럽트를 처리할 수 있다.
본 발명의 일 실시 예에 따르면 멀티 코어 시스템에서 효율적이고 신속한 인터럽트 처리를 위한 인터럽트 할당 방법 및 장치를 제공할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시 예에 따르는 인터럽트 할당 장치(100)의 블록 구성도이다.
도 2는 인터럽트 할당장치(100)의 인터럽트 처리 과정을 나타낸 모식도이다.
도 3은 본 발명의 일 실시 예에 따르는 인터럽트 할당 과정의 순서도이다.
도 4는 도 3의 단계 340의 상세 순서도이다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
이하, 본 발명의 실시 예들에 의하여 멀티 코어 시스템의 인터럽트 할당 방법 및 장치를 설명하기 위한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이하, 본 명세서에서, 코어(core)는 인터럽트를 스스로 처리할 수 있는 단위 구성부를 말한다.
본 명세서에서, 인터럽트 처리 능력(capacity)은 특정 코어가 현재 인터럽트를 처리할 수 있는 상태인지 아닌지를 나타내는 지시자이다. 해당 코어가 인터럽트를 처리하는 도중에는 다른 인터럽트를 곧바로 처리할 수 없다. 따라서 현재 특정 코어가 인터럽트를 처리하고 있다면 인터럽트 처리 능력(capacity)은 인터럽트 처리 불능(disabled) 상태로 기록된다. 반대로 현재 특정 코어가 인터럽트를 처리하고 있지 않다면 인터럽트 처리 능력(capacity)은 인터럽트 처리 가능(enabled) 상태로 기록된다.
도 1은 본 발명의 일 실시 예에 따르는 인터럽트 할당 장치(100)의 블록 구성도이다. 인터럽트 할당 장치(100)는 멀티 코어 시스템에 포함되거나 멀티 코어 시스템에 부가되어 멀티 코어 시스템에서 발생하는 인터럽트를 코어들(130)에 할당한다. 멀티 코어 시스템은 코어 0(131), 코어 1(132), 코어 2(133) 및 코어 3(133)를 포함한다.
도 1을 참조하면, 인터럽트 할당 장치(100)는 인터럽트 제어 레지스터부(110) 및 인터럽트 할당부(120)를 포함한다.
인터럽트 제어 레지스터부(110)는 각 코어(131, 132, 133, 134)의 인터럽트 처리 능력(capacity)을 기록한다. 즉, 인터럽트 제어 레지스터부(110)는 각 코어(131, 132, 133, 134)가 인터럽트를 처리할 수 있는지, 또는 처리할 수 없는지에 관한 상태를 기록한다. 예를 들어 인터럽트 제어 레지스터부(110)는 코어 0 레지스터(111), 코어 1 레지스터(112), 코어 2 레지스터(113) 및 코어 3 레지스터(114)를 포함할 수 있다. 인터럽트 제어 레지스터부(110)를 구성하는 각 레지스터를 인터럽트 제어 레지스터라고 칭한다.
코어 0 레지스터(111)는 코어 0(131)의 인터럽트 처리 능력을 기록한다. 코어 1 레지스터(112)는 코어 1(132)의 인터럽트 처리 능력을 기록한다. 코어 2 레지스터(113)는 코어 2(133)의 인터럽트 처리 능력을 기록한다. 코어 3 레지스터(114)는 코어 3(134)의 인터럽트 처리 능력을 기록한다. 특정 코어가 현재 인터럽트를 처리할 수 있는 상태이면 그 코어에 상응하는 인터럽트 제어 레지스터는 인터럽트 처리 가능 상태로 설정된다. 특정 코어가 현재 인터럽트를 처리할 수 없는 상태이면 그 코어에 상응하는 인터럽트 제어 레지스터는 인터럽트 처리 불능 상태로 설정된다.
각 인터럽트 제어 레지스터는 예를 들어 1비트 크기의 레지스터가 될 수 있다. 예를 들어 코어 0(131)이 현재 인터럽트를 처리할 수 있는 상태이면 코어 0 레지스터(111)는 '1'로 설정될 수 있다. 반대로 코어 0(131)이 현재 인터럽트를 처리할 수 없는 상태이면 코어 0 레지스터(111)는 '0'로 설정될 수 있다. 상술한 실시 예에서 '1'은 인터럽트 처리 가능 상태를 나타내고, '0'은 인터럽트 처리 불능 상태를 나타낸다. 또한 용어 '인터럽트 제어 레지스터'는 '인터럽트 플래그(flag)'로 대체될 수 있다. '0'/'1'의 두 가지 값으로 나타낼 수 있는 정보라는 뜻에서 용어 "플래그"가 이용될 수 있다. 다만, 가능/불능보다 더 많은 상태, 예를 들어 우선순위나 지연 예상 시간 등의 정보를 인터럽트 제어 레지스터에 기록하는 경우 2비트 이상이 사용될 수도 있다.
인터럽트 제어 레지스터부(110)는 인터럽트 할당부(120)에 각 코어의 인터럽트 처리 능력에 관한 정보를 제공한다. 인터럽트 할당부(120)는 인터럽트 제어 레지스터부(110)를 참조하여 인터럽트를 처리할 수 있는 코어를 확인할 수 있다.
인터럽트 제어 레지스터부(110)는 코어들(130)로부터 신호를 수신하고 그 신호에 따라 인터럽트 제어 레지스터들(111, 112, 113, 114)을 변경할 수 있다. 예를 들어 인터럽트를 할당받은 코어는 그 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 불능 상태로 변경하는 신호를 인터럽트 제어 레지스터부(110)에 송신한다. 그 뒤 인터럽트를 할당받은 코어는 할당받은 인터럽트를 처리한다. 인터럽트의 처리가 끝나면, 인터럽트를 할당받은 코어는 그 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 가능 상태로 변경하는 신호를 인터럽트 제어 레지스터부(110)에 송신한다. 인터럽트 제어 레지스터부(110)는 상술한 신호를 수신하여 그 신호에 따라 인터럽트 제어 레지스터들(111, 112, 113, 114)을 변경한다.
인터럽트 제어 레지스터부(110)는 각 코어가 어떠한 유형의 인터럽트를 처리할 수 있는 상황인지를 기록할 수 있다. 예를 들어 멀티 코어 시스템에서 발생하는 인터럽트의 유형이 보통의 인터럽트(Interrupt) 및 고속 인터럽트(Fast Interrupt) 두 가지라고 가정한다. 이 경우 인터럽트 제어 레지스터부(110)는 I 필드 및 F 필드를 포함할 수 있다. I 필드는 각 코어가 보통의 인터럽트를 처리할 수 있는 상태인지를 나타낸다. F 필드는 각 코어가 고속 인터럽트를 처리할 수 있는 상태인지를 나타낸다.
여기서 보통의 인터럽트는 일반적으로 입출력 장치로부터 발생되는 인터럽트를 일컫는다. 보통의 인터럽트의 종류로는 내부 타이머나 시리얼, 혹은 외부 인터럽트 입력 등을 포함할 수 있다.
고속 인터럽트는 개념적으로는 보통의 인터럽트와 유사하다. 다만 코어 내부에서는 보통의 인터럽트에 비해 고속 인터럽트를 더 빠른 속도록 처리한다. 보통의 인터럽트의 소스는 대부분 고속 인터럽트로도 매핑될 수 있다. 즉, 실시 예에 따라 타이머 인터럽트를 보통의 인터럽트로 처리하거나, 혹은 고속 인터럽트로 처리할 수도 있다.
여기서 예시된 I 필드 및 F 필드는 예시적인 것에 불과하다. 다른 실시 예에 따르면 인터럽트 제어 레지스터부(110)는 한 유형의 인터럽트의 처리 가능 여부만을 기록할 수도 있다. 또 다른 실시 예에 따르면, 인터럽트 제어 레지스터부(110)는 3개 또는 그 이상의 유형의 인터럽트 처리 가능 여부를 기록할 수도 있다. 또한, 인터럽트 제어 레지스터부(110)는 각 코어의 프리엠션/논-프리엠션(preemption/non-preemption) 상태를 기록할 수도 있다. 프리엠션/논-프리엠션 상태는 해당 코어에서 인터럽트를 처리하기 위해 특정 자원이 선점된 상태인지를 나타낸다. 이하에서는 편의상 인터럽트 제어 레지스터부(110)는 보통의 인터럽트를 처리 능력만을 기록하는 것으로 가정한다.
인터럽트 제어 레지스터부(110)는 동기화를 보장해야 한다. 예를 들어, 인터럽트 할당부(120)가 인터럽트 제어 레지스터부(110)를 참조하여 코어 1(132)이 인터럽트를 처리할 수 있다고 판단하여 코어 1(132)에 인터럽트를 할당했다고 가정한다. 그런데, 인터럽트를 할당하기 이전에 코어 1(132)이 인터럽트를 처리할 수 없는 상태로 변경되거나 해서는 안 된다. 인터럽트 할당부(120)가 인터럽트를 순서대로 하나씩 처리하는 경우에는 동기화 문제는 발생하지 않을 것이다. 다만 인터럽트 할당부(120)가 둘 이상이거나, 인터럽트 할당부(120)가 복수의 인터럽트를 병력적으로 할당할 경우에는 문제가 될 수 있다. 이를 위하여 인터럽트 할당부(120)가 인터럽트 할당을 위해 인터럽트 제어 레지스터부(110)를 참조하기 직전부터 그 인터럽트를 할당하기 전까지 다른 구성부나 인터럽트 처리 프로세스가 인터럽트 제어 레지스터(111, 112, 113, 114)를 변경하지 않을 것이 보장돼야 한다.
인터럽트 제어 레지스터부(110)는 각 코어(131, 132, 133, 134)를 구성하는 상태 레지스터와 구분돼야 한다. 인터럽트 제어 레지스터부(110)는 하나의 물리적 레지스터 집합으로 구성된다. 이러한 구성 때문에 인터럽트 할당부(120)는 짧은 시간 내에 인터럽트 제어 레지스터부(110)에 기록된 여러 레지스터(111, 112, 113, 114)를 확인할 수 있다. 따라서 효율적인 인터럽트 할당이 가능하다.
인터럽트 할당부(120)는 인터럽트 제어 레지스터부(110)를 참조하여 적절한 코어에 인터럽트를 할당한다. 인터럽트 할당부(120)는 인터럽트 제어 레지스터부(110)를 참조하여 어떤 코어가 인터럽트를 처리할 수 있는 상태인지 확인한다. 이러한 확인 결과에 따라 인터럽트 할당부(120)는 적절한 코어에 인터럽트를 할당할 수 있다. 인터럽트를 할당받은 코어의 인터럽트 처리 과정은 인터럽트 제어 레지스터부(110)에 대한 설명에서 상술한 바와 같다.
인터럽트 할당부(120)가 인터럽트를 할당할 때 여러 인터럽트 제어 레지스터들(111, 112, 113, 114)를 동시에, 또는 한꺼번에 확인하는 경우에는 인터럽트를 처리할 수 있는 여러 코어가 추출될 수 있다. 이 경우 인터럽트를 처리할 수 있는 임의의 코어에 인터럽트를 할당할 수 있다. 변형 예에 따르면, 미리 설정된 규칙 또는 우선 순위에 따라 인터럽트가 할당될 수도 있다.
인터럽트 할당부(120)가 인터럽트를 할당할 때 모든 인터럽트 제어 레지스터들을 한번에 확인하지 않고, 일부만을 먼저 확인하는 변형 예도 가능하다. 이 변형 예에 따를 때, 효율적인 인터럽트 할당을 위해 인터럽트 할당부(120)는 최근의 인터럽트 할당 내역을 참조할 수 있다. 예를 들어 여러 코어 중 마지막으로 인터럽트를 할당한 코어의 다음 번 코어에 상응하는 인터럽트 제어 레지스터를 우선적으로 확인할 수 있다. 여기서 각 코어의 가상적 순번이 존재하는 것으로 가정한다. 또는 각 코어가 마지막으로 인터럽트를 할당받은 시점을 기준으로 가장 오래 전에 인터럽트를 할당받은 코어에 상응하는 인터럽트 제어 레지스터를 우선적으로 확인할 수 있다. 이러한 할당 정책에 따라 인터럽트가 같은 코어에 반복적으로 할당되는 것을 막을 수 있다.
도 2는 인터럽트 할당장치(100)의 인터럽트 처리 과정을 나타낸 모식도이다.
여러 인터럽트 소스들(210) 중 어느 한 소스에서 인터럽트(INT0)이 발생한다. 인터럽트 소스에서 인터럽트가 발생하면 일단 인터럽트 할당 장치(100)는 그 인터럽트를 수신한다. 인터럽트 할당 장치(100)는 도 1을 참조해 설명한 바와 같은 과정을 거쳐 적절한 코어에 그 인터럽트를 동적으로 할당한다. 예를 들어 인터럽트 할당 장치(100)가 인터럽트(INT0)를 수신할 당시 코어1(132)에 상응하는 코어 1 레지스터(112)가 인터럽트 처리 가능 상태로 기록됐다고 가정한다. 인터럽트 할당부(120)는 인터럽트 제어 레지스터부(110)를 참조하여 코어1(132)이 인터럽트를 처리할 수 있는 상태임을 인지할 수 있다. 그에 따라 인터럽트 할당부(120)는 코어 1(131)에 인터럽트(INT0)를 할당한다. 코어 1(131)은 인터럽트를 할당 받으면 코어 1 레지스터(111)를 인터럽트 처리 불능(disabled) 상태로 변경한다. 그 뒤 코어 1(131)은 인터럽트를 처리한다. 인터럽트 처리가 완료되면, 코어 1(131)은 코어 1 레지스터(111)를 인터럽트 처리 가능(enabled) 상태로 변경한다.
도 3은 본 발명의 일 실시 예에 따르는 인터럽트 할당 과정의 순서도이다.
단계 310에서 인터럽트 할당부(120)는 인터럽트를 수신하였는지 판단한다. 인터럽트 할당부(120)가 인터럽트를 수신하지 않은 경우 과정은 단계 315로 진행하여 인터럽트 할당부(120)는 인터럽트 수신 시까지 대기한다. 인터럽트 할당부(120)가 인터럽트를 수신한 경우 과정은 단계 320으로 진행한다
단계 320에서 인터럽트 할당부(120)는 각 인터럽트 제어 레지스터(111, 112, 113, 114)를 확인한다. 즉 인터럽트 할당부(120)는 인터럽트 제어 레지스터부(110)의 인터럽트 제어 레지스터(111, 112, 113, 114)를 확인한다. 상술한 바와 같이 인터럽트 제어 레지스터(111, 112, 113, 114)는 각 코어의 인터럽트 처리 능력을 지시한다. 단계 330에서 인터럽트 할당부(120)는 단계 320의 확인 과정을 참조하여 어느 하나 이상의 인터럽트를 처리할 수 있는 코어가 존재하는지 판단한다. 모든 인터럽트 제어 레지스터(111, 112, 113, 114)가 인터럽트 처리 불능 상태인 경우 인터럽트 할당부(120)는 인터럽트를 처리할 수 있는 코어가 없는 것으로 판단한다. 이 경우 과정은 단계 320으로 돌아가서 인터럽트 할당 장치(100)는 단계 320 내지 단계 330 과정을 반복한다. 어느 하나 이상의 인터럽트 제어 레지스터, 예를 들어 코어 1 레지스터(112)가 인터럽트 처리 가능 상태인 경우 인터럽트 할당부(120)는 인터럽트를 처리할 수 있는 코어가 있다고 판단한다. 이 경우 과정은 단계 340으로 진행한다.
단계 340에서 인터럽트 할당부(120)는 인터럽트를 처리할 수 있는 코어에 인터럽트를 할당한다. 인터럽트 처리가 완료되면 인터럽트 할당이 해제된다. 단계 340의 자세한 수행은 도 4를 참조하여 후술한다.
도 4는 도 3의 단계 340의 상세 순서도이다.
단계 410에서 인터럽트 할당부(120)는 인터럽트를 처리할 수 있는 코어에 인터럽트를 할당한다. 예를 들어 인터럽트 할당부(120)가 코어 x, 예를 들어 코어 1(132)에 인터럽트를 할당한다고 가정한다. 코어 x, 코어 x 레지스터는 서로 상응하는 임의의 코어 및 인터럽트 제어 레지스터이다. 이하에서는 코어 x가 코어 1(132)이고 코어 x 레지스터가 코어 1 레지스터(112)인 경우를 가정하여 설명한다.
단계 415에서 인터럽트 제어 레지스터부(110)는 코어 x, 예를 들어 코어 1(132)로부터 그에 상응하는 코어 1 레지스터(112)를 인터럽트 처리 불능 상태로 변경하는 신호를 수신한다. 코어 1(132)은 인터럽트를 할당받으면, 다른 인터럽트를 처리할 수 없는 상태가 된다. 따라서 코어 1(132)은 코어 1(132)에 상응하는 코어 1 레지스터(112)를 인터럽트 처리 불능 상태로 변경하는 신호를 인터럽트 제어 레지스터부(110)로 송신한다.
단계 420에서 인터럽트 제어 레지스터부(110)는 인터럽트를 할당받은 코어 1(132)에 상응하는 코어1 레지스터(112)를 인터럽트 처리 불능 상태로 변경한다. 단계 420의 변경은 단계 415에서 수신한 신호에 따른 것이다. 즉, 인터럽트 제어 레지스터부(110)는 수신 신호에 따라 코어 1 레지스터(112)를 인터럽트 처리 불능(disable) 상태로 변경한다.
단계 430에서 인터럽트 제어 레지스터부(110)는 코어 1(132)로부터 코어 1 레지스터(112)를 인터럽트 처리 가능 상태로 변경하는 신호가 수신되는지 판단한다. 코어 1 레지스터(112)를 인터럽트 처리 가능 상태로 변경하는 신호는 예를 들어 해당 인터럽트 처리 완료를 알리는 신호가 될 수 있다. 인터럽트 제어 레지스터부(110)가 코어 1 레지스터(112)를 인터럽트 처리 가능 상태로 설정하는 신호를 수신하면 과정은 단계 440으로 진행한다. 인터럽트 제어 레지스터부(110)가 해당 신호를 수신하지 못한 경우 과정은 단계 435로 진행하여 인터럽트 제어 레지스터부(110)는 해당 신호 수신 시까지 대기한다.
과정 440에서, 인터럽트 제어 레지스터부(110)는 코어 1 레지스터(112)를 인터럽트 처리 가능 상태로 변경한다. 인터럽트 제어 레지스터부(110)는 코어 1 레지스터(112)를 인터럽트 처리 가능 상태로 설정하는 신호를 수신하였으므로 그에 따라 코어 1 레지스터(112)를 변경한다. 코어 1 레지스터(112)가 인터럽트 처리 가능 상태로 설정되면, 이후 인터럽트 할당부(120)는 코어 1(132)이 인터럽트를 처리할 수 있는 상태로 인식하고 인터럽트 할당에 참고할 수 있다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (12)

  1. 멀티 코어 시스템의 각 코어의 인터럽트 처리 능력(capacity)을 기록하는 인터럽트 제어 레지스터부를 구비한 인터럽트 할당 장치의 인터럽트 할당 방법에 있어서,
    인터럽트를 수신하는 수신 단계;
    상기 인터럽트를 수신하면, 상기 인터럽트 제어 레지스터부를 확인하는 확인 단계; 및
    상기 확인 단계에서 인터럽트 처리가 가능한 상태로 확인된 코어에 상기 인터럽트를 할당하는 할당 단계를 포함하고
    상기 코어는 상기 인터럽트를 할당받으면 상기 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 불능 상태로 변경하는 신호를 상기 인터럽트 제어 레지스터부에 송신하고 상기 인터럽트를 처리하는 것을 특징으로 하는 인터럽트 할당 방법.
  2. 제1항에 있어서,
    상기 코어는 상기 인터럽트 처리를 완료한 후 상기 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 가능 상태로 변경하는 신호를 상기 인터럽트 제어 레지스터부에 송신하는 것을 특징으로 하는 인터럽트 할당 방법.
  3. 제2항에 있어서,
    상기 인터럽트 제어 레지스터부는 상기 코어의 신호에 따라 상기 코어에 상응하는 인터럽트 제어 레지스터를 변경하는 것을 특징으로 하는 인터럽트 할당 방법.
  4. 제1항에 있어서,
    상기 인터럽트 제어 레지스터부는 각 코어의 복수 유형의 인터럽트 처리 능력을 기록하는 것을 특징으로 하는 인터럽트 할당 방법.
  5. 제4항에 있어서,
    상기 인터럽트 제어 레지스터부는 각 코어의 프리엠션(preemption)/논-프리엠션(non-preemption) 상태를 기록하는 것을 특징으로 하는 인터럽트 할당 방법.
  6. 제1항에 있어서,
    상기 인터럽트 제어 레지스터부는 각 코어의 인터럽트 처리 능력(capacity)을 기록하는 레지스터를 포함하는 하나의 물리적 집합으로 구성되는 것을 특징으로 하는 인터럽트 할당 방법.
  7. 멀티 코어 시스템의 인터럽트 할당 장치에 있어서,
    각 코어의 인터럽트 처리 능력(capacity)을 기록하는 인터럽트 제어 레지스터부; 및
    인터럽트를 수신하면, 상기 인터럽트 제어 레지스터부를 확인하고, 상기 확인 단계에서 인터럽트 처리가 가능한 상태로 확인된 코어에 상기 인터럽트를 할당하는 인터럽트 할당부를 포함하고,
    상기 코어는 상기 인터럽트를 할당받으면 상기 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 불능 상태로 변경하는 신호를 상기 인터럽트 제어 레지스터부에 송신하고 상기 인터럽트를 처리하는 것을 특징으로 하는 인터럽트 할당 장치.
  8. 제7항에 있어서,
    상기 코어는 상기 인터럽트 처리를 완료한 후 상기 코어에 상응하는 인터럽트 제어 레지스터를 인터럽트 처리 가능 상태로 변경하는 신호를 상기 인터럽트 제어 레지스터부에 송신하는 것을 특징으로 하는 인터럽트 할당 장치.
  9. 제8항에 있어서,
    상기 인터럽트 제어 레지스터부는 상기 코어의 신호에 따라 상기 코어에 상응하는 인터럽트 제어 레지스터를 변경하는 것을 특징으로 하는 인터럽트 할당 장치.
  10. 제7항에 있어서,
    상기 인터럽트 제어 레지스터부는 각 코어의 복수 유형의 인터럽트 처리 능력을 기록하는 것을 특징으로 하는 인터럽트 할당 장치.
  11. 제10항에 있어서,
    상기 인터럽트 제어 레지스터부는 각 코어의 프리엠션(preemption)/논-프리엠션(non-preemption) 상태를 기록하는 것을 특징으로 하는 인터럽트 할당 장치.
  12. 제7항에 있어서,
    상기 인터럽트 제어 레지스터부는 각 코어의 인터럽트 처리 능력(capacity)을 기록하는 레지스터를 포함하는 하나의 물리적 집합으로 구성되는 것을 특징으로 하는 인터럽트 할당 장치.
KR1020110084020A 2011-08-23 2011-08-23 멀티 코어 시스템의 인터럽트 할당 방법 및 장치 KR20130021637A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020110084020A KR20130021637A (ko) 2011-08-23 2011-08-23 멀티 코어 시스템의 인터럽트 할당 방법 및 장치
US14/234,265 US20140136745A1 (en) 2011-08-23 2012-08-10 Method and apparatus for allocating interrupts in a multi-core system
JP2014527060A JP2014524626A (ja) 2011-08-23 2012-08-10 マルチコアシステムのインターラプト割り当て方法及び装置
EP12826403.3A EP2750045A4 (en) 2011-08-23 2012-08-10 METHOD AND APPARATUS FOR ALLOCATING INTERRUPTIONS IN UR MULTICAST SYSTEM
CN201280041196.8A CN103765399A (zh) 2011-08-23 2012-08-10 在多核系统中分配中断的方法和设备
PCT/KR2012/006369 WO2013027951A1 (ko) 2011-08-23 2012-08-10 멀티 코어 시스템의 인터럽트 할당 방법 및 장치
JP2017125536A JP2017162522A (ja) 2011-08-23 2017-06-27 マルチコアシステムのインターラプト割り当て方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110084020A KR20130021637A (ko) 2011-08-23 2011-08-23 멀티 코어 시스템의 인터럽트 할당 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20130021637A true KR20130021637A (ko) 2013-03-06

Family

ID=47746643

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110084020A KR20130021637A (ko) 2011-08-23 2011-08-23 멀티 코어 시스템의 인터럽트 할당 방법 및 장치

Country Status (6)

Country Link
US (1) US20140136745A1 (ko)
EP (1) EP2750045A4 (ko)
JP (2) JP2014524626A (ko)
KR (1) KR20130021637A (ko)
CN (1) CN103765399A (ko)
WO (1) WO2013027951A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102419015B1 (ko) * 2021-12-22 2022-07-08 한화시스템 주식회사 Numa 기반 장비의 인터럽트 분배방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터 프로그램

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3053003A4 (en) 2013-09-30 2017-05-24 Intel Corporation Early wake-warn for clock gating control
CN107102966B (zh) * 2016-02-22 2020-03-13 龙芯中科技术有限公司 多核处理器芯片、中断控制方法及控制器
KR102441045B1 (ko) * 2020-12-14 2022-09-05 현대오토에버 주식회사 멀티 코어 구조의 전자 제어 유닛에서 수행되는 방법, 그리고 이를 구현하기 위한 장치

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55154653A (en) * 1979-05-22 1980-12-02 Nec Corp Interruption distributing system to multiprocessor
US5905897A (en) * 1997-03-20 1999-05-18 Industrial Technology Research Institute Method and apparatus for selecting a nonblocked interrupt request
US7191349B2 (en) * 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
JP2005004562A (ja) * 2003-06-13 2005-01-06 Canon Inc マルチプロセッサシステム、マルチプロセッサシステムの制御方法、およびマルチプロセッサシステムの制御プログラム
GB2409543B (en) * 2003-12-23 2006-11-01 Advanced Risc Mach Ltd Interrupt masking control
KR20080048307A (ko) * 2006-11-28 2008-06-02 삼성전자주식회사 멀티 프로세서 시스템의 인터럽트 전달 장치 및 방법
US8656145B2 (en) * 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
KR101610828B1 (ko) * 2009-09-23 2016-04-08 삼성전자주식회사 멀티코어 프로세서의 인터럽트 온/오프 관리 장치와 방법
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102419015B1 (ko) * 2021-12-22 2022-07-08 한화시스템 주식회사 Numa 기반 장비의 인터럽트 분배방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터 프로그램

Also Published As

Publication number Publication date
JP2017162522A (ja) 2017-09-14
CN103765399A (zh) 2014-04-30
EP2750045A4 (en) 2015-04-08
JP2014524626A (ja) 2014-09-22
EP2750045A1 (en) 2014-07-02
WO2013027951A1 (ko) 2013-02-28
US20140136745A1 (en) 2014-05-15

Similar Documents

Publication Publication Date Title
CN106569891B (zh) 一种存储系统中任务调度执行的方法和装置
EP3092567B1 (en) System and method for isolating i/o execution via compiler and os support
US7689809B2 (en) Transparent return to parallel mode by rampoline instruction subsequent to interrupt processing to accommodate slave processor not supported by operating system
US9348661B2 (en) Assigning a unique identifier to a communicator
US20070180161A1 (en) DMA transfer apparatus
US11474712B2 (en) Method, apparatus, device and storage medium for managing access request
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
US10614004B2 (en) Memory transaction prioritization
KR20180034440A (ko) 효율적인 병렬 컴퓨팅을 위한 단순화된 태스크-기반 런타임을 위한 방법
JP2017162522A (ja) マルチコアシステムのインターラプト割り当て方法及び装置
US9710381B2 (en) Method and apparatus for cache memory data processing
EP3516515B1 (en) Scheduling of tasks in a multiprocessor device
US10289418B2 (en) Cooperative thread array granularity context switch during trap handling
US10459747B2 (en) Exitless timer access for virtual machines
CN102334108A (zh) 具有可指派通用寄存器组的处理器
KR20220014276A (ko) 명령들을 처리하는 저장 장치 및 방법
US8943503B2 (en) Apparatus and method for thread progress tracking using deterministic progress index
JP2015069576A (ja) 情報処理装置および情報処理装置の制御方法
US20160292012A1 (en) Method for exploiting parallelism in task-based systems using an iteration space splitter
US20150212759A1 (en) Storage device with multiple processing units and data processing method
WO2021037124A1 (zh) 一种任务处理的方法以及任务处理装置
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
US10776139B2 (en) Simulation apparatus, simulation method, and computer readable medium
WO2017036041A1 (zh) 数据的同步访问方法和同步访问装置
EP4109255A1 (en) Scheduling in a container orchestration system utilizing hardware topology hints

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid