KR20120036630A - 인터럽트 처리 장치 및 방법 - Google Patents

인터럽트 처리 장치 및 방법 Download PDF

Info

Publication number
KR20120036630A
KR20120036630A KR1020100098405A KR20100098405A KR20120036630A KR 20120036630 A KR20120036630 A KR 20120036630A KR 1020100098405 A KR1020100098405 A KR 1020100098405A KR 20100098405 A KR20100098405 A KR 20100098405A KR 20120036630 A KR20120036630 A KR 20120036630A
Authority
KR
South Korea
Prior art keywords
interrupt
processing
processing core
core
cores
Prior art date
Application number
KR1020100098405A
Other languages
English (en)
Other versions
KR101717494B1 (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 KR1020100098405A priority Critical patent/KR101717494B1/ko
Priority to US13/177,988 priority patent/US9460032B2/en
Publication of KR20120036630A publication Critical patent/KR20120036630A/ko
Application granted granted Critical
Publication of KR101717494B1 publication Critical patent/KR101717494B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)

Abstract

인터럽트를 처리할 다수의 프로세싱 코어와, 인터럽트를 수신하고, 각각의 프로세싱 코어의 실행 모드가 예외 처리 또는 인터럽트 처리를 위한 IRQ 모드인지 여부를 판별하고, 수신된 인터럽트를 IRQ 모드에 있지 아니한 프로세싱 코어로 제공하는 인터럽트 분배부를 포함하는 인터럽트 처리 장치가 제공된다.

Description

인터럽트 처리 장치 및 방법{Apparatus and Method for processing interrupt}
다수의 CPU를 갖는 멀티프로세서 시스템에서의 인터럽트 처리 기술과 관련된다.
인터럽트 레이턴시(interrupt latency)는 인터럽트 처리에 소요되는 지연 시간에 대응되는 것으로 시스템 동작에 중요한 영향을 미치는 요인 중 하나이다. 특히 실시간성이 강조되는 정보통신기기에서 인터럽트 레이턴시가 예상치 못한 원인에 의해 늘어나게 되면 응답 시간 역시 그에 비례하여 증가하기 때문에 통화 음이 끊기거나 화면의 영상이 제대로 출력되지 못하는 현상이 발생할 수 있다.
또한 최근에는 여러 개의 CPU를 갖는 멀티프로세서 시스템이 이러한 정보통신기기에 적용되면서 멀티프로세서 시스템에서 인터럽트를 어떻게 효율적으로 처리할지에 대하 연구가 활발히 진행되고 있다.
멀티프로세서 시스템에서 효율적으로 인터럽트를 처리하기 위하여 인터럽트 처리 시 각 CPU 별로 인터럽트 발생량을 측정함으로써 CPU간 인터럽트의 발생 비율의 밸런스를 맞출 수 있다. 그렇지만 인터럽트의 발생량을 측정하는 이 방법은 인터럽트가 발생한 시점에서의 시스템 상태가 아닌 인터럽트 발생 이전의 상태만을 고려하기 때문에 사용자와의 인터랙션 및 디바이스 내부적인 동작에 의해 다양한 유형의 인터럽트가 랜덤하게 발생하는 최근의 정보통신기기에는 적합하지 아니하다.
또한, 특정 CPU가 인터럽트를 처리하는 동안 또 다른 인터럽트가 발생한다면, 이 인터럽트는 이전에 실행되던 인터럽트를 중단시킬 수 있고, 이로 인하여 이전에 실행되던 인터럽트의 레이턴시는 후에 발생한 인터럽트의 처리가 끝날 때까지 지연되는 문제점이 있다.
인터럽트 처리 오버헤드 및 레이턴시를 줄일 수 있는 인터럽트 처리 장치 및 방법이 제공된다.
본 발명의 일 양상에 따른 인터럽트 처리 장치는, 인터럽트를 처리할 다수의 프로세싱 코어, 및 인터럽트를 수신하고, 각각의 프로세싱 코어의 실행 모드가 예외 처리 또는 인터럽트 처리를 위한 IRQ 모드인지 여부를 판별하고, 수신된 인터럽트를 IRQ 모드에 있지 아니한 프로세싱 코어로 제공하는 인터럽트 분배부를 포함한다.
본 발명의 다른 양상에 따른 인터럽트 처리 장치는, 다수의 프로세싱 코어, 각각의 프로세싱 코어의 상태/성능 정보를 검출하는 모니터부, 및 검출된 상태/성능 정보에 따라 수신된 인터럽트를 다수의 프로세싱 코어 중 어느 하나로 제공하는 인터럽트 분배부를 포함한다.
본 발명의 일 양상에 따른 인터럽트 처리 방법은, 다수의 프로세싱 코어를 포함하는 시스템의 인터럽트 처리 방법에 있어서, 각각의 프로세싱 코어의 상태/성능 정보를 검출하는 단계, 및 검출된 상태/성능 정보에 따라 수신된 인터럽트를 다수의 프로세싱 코어 중 어느 하나로 제공하는 단계를 포함한다.
개시된 내용에 의하면, 인터럽트를 가장 잘 처리할 수 있는 프로세싱 코어로 인터럽트가 전달되며, 어떤 프로세싱 코어가 이미 인터럽트를 처리하고 있는 경우, 이 프로세싱 코어로는 인터럽트가 전달되지 않기 때문에 인터럽트 처리에 따른 레이턴시 및 오버헤드를 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 인터럽트 처리 장치를 도시한다.
도 2는 본 발명의 다른 실시예에 따른 인터럽트 처리 장치를 도시한다.
도 3은 본 발명의 일 실시예에 따른 인터럽트 처리 방법을 도시한다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 인터럽트 처리 방법을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 인터럽트 처리 장치를 도시한다.
도 1을 참조하면, 인터럽트 처리 장치(100)는 다수의 프로세싱 코어(101)와 인터럽트 분배부(102)를 포함한다.
프로세싱 코어(101)는 소정의 실행 모드에서 프로그램 코드를 실행한다. 프로세싱 코어(101)에서 실행되는 프로그램 코드는 사용자 응용 프로그램, 커널 서비스, 예외 처리 또는 인터럽트 처리를 위한 핸들러 등이 될 수 있다. 각각의 프로그램 코드는 프로세싱 코어(101)의 특정한 실행 모드에서 실행된다. 예를 들어, 사용자 응용 프로그램은 프로세싱 코어의 user mode에서 실행될 수 있다. 커널의 서비스 코드는 supervisor mode에서 실행될 수 있다. 예외 처리 또는 인터럽트 처리를 위한 코드는 IRQ mode(또는 exception mode)에서 실행될 수 있다. 예컨대, 프로세싱 코어(101)가 user mode에서 사용자 응용 프로그램을 실행하는 도중에 인터럽트가 발생하면, 프로세싱 코어(101)의 실행 모드가 IRQ mode로 바뀌고 바뀌어진 IRQ mode에서 인터럽트를 처리하는 것이 가능하다.
인터럽트 분배부(102)는 인터럽트 소스로부터 인터럽트를 수신한다.
인터럽트를 수신한 인터럽트 분배부(102)는 각각의 프로세싱 코어(101)의 실행 모드가 IRQ 모드인지 여부를 판단한다. 실행 모드는 각각의 프로세싱 코어(101)의 핀(pin) 신호 또는 이 핀(pin)과 연결되는 모드 버스(mode bus)의 신호를 검출하면 알 수 있다.
각각의 프로세싱 코어(101)의 실행 모드가 IRQ 모드인지 여부가 판단되면, 인터럽트 분배부(102)는 IRQ 모드에 있지 아니한 프로세싱 코어(예컨대, core #0, #1) 중 어느 하나(예컨대, core #0)로 수신된 인터럽트를 전달한다. 전술하였듯이, IRQ 모드에 있는 프로세싱 코어(예컨대, core #2)는 이미 인터럽트를 처리하고 있으므로, IRQ 모드에 있는 프로세싱 코어(core #2)에 인터럽트를 전달하면 이미 처리하고 있던 인터럽트의 처리가 중단되면서 이전에 처리하고 있던 인터럽트의 레이턴시(latency)가 증가하게 된다. 따라서 인터럽트 분배부(102)는 각 프로세싱 코어(101)의 실행 모드가 IRQ 모드인지 여부에 따라 인터럽트를 가장 잘 처리할 수 있는 프로세싱 코어(core #0)로 수신된 인터럽트를 전달하는 것이 가능하다.
또한, 본 발명의 일 실시예에 따라, IRQ 모드에 있지 아니한 프로세싱 코어(core #0, #1)가 여러 개인 경우, IRQ 모드에 있지 아니한 프로세싱 코어(core #0, #1)의 성능을 고려하여 그 중 어느 하나의 프로세싱 코어(core #0)를 선택하고 선택된 프로세싱 코어(core #0)로 인터럽트를 전달하는 것도 가능하다. 고려되는 성능은 각각의 프로세싱 코어(101)가 이전 과정에서 몇 개의 인터럽트를 수신했었는지 또는 각각의 프로세싱 코어(101)의 가용량(utilization) 및 작업량(workload)은 얼마인지 등이 될 수 있다.
도 2는 본 발명의 다른 실시예에 따른 인터럽트 처리 장치를 도시한다.
도 2를 참조하면, 인터럽트 처리 장치(200)는 다수의 프로세싱 코어(201), 인터럽트 수신부(202), 모니터부(203), 및 인터럽트 분배부(204)를 포함한다.
프로세싱 코어(201)는 소정의 실행 모드에서 프로그램 코드를 실행한다. 프로세싱 코어(201)에서 실행되는 프로그램 코드는 사용자 응용 프로그램, 커널 서비스, 예외 처리 또는 인터럽트 처리를 위한 핸들러 등이 될 수 있다. 각각의 프로그램 코드는 프로세싱 코어(201)의 특정한 실행 모드에서 실행된다. 예를 들어, 사용자 응용 프로그램은 프로세싱 코어의 user mode에서 실행될 수 있다. 커널의 서비스 코드는 supervisor mode에서 실행될 수 있다. 예외 처리 또는 인터럽트 처리를 위한 코드는 IRQ mode(또는 exception mode)에서 실행될 수 있다. 예컨대, 프로세싱 코어(201)가 user mode에서 사용자 응용 프로그램을 실행하는 도중에 인터럽트가 발생하면, 프로세싱 코어(201)의 실행 모드가 IRQ mode로 바뀌고 바뀌어진 IRQ mode에서 인터럽트를 처리하는 것이 가능하다.
인터럽트 수신부(202)는 인터럽트 소스로부터 인터럽트를 수신한다.
모니터부(203)는 각각의 프로세싱 코어(201)의 상태/성능 정보를 검출한다. 상태/성능 정보는 각각의 프로세싱 코어(201)에 대한 실행 모드 정보, 인터럽트 마스킹 정보, 가용량, 작업량 등을 포함할 수 있다. 모니터부(203)는 인터럽트 수신부(202)가 인터럽트를 수신하는 것에 대응하여 상태/성능 정보를 수집할 수도 있고, 인터럽트 수신부(202)의 관여 없이 지속적으로 상태/성능 정보를 수집할 수도 있다.
본 실시예에 따라, 모니터부(203)는 제 1 모니터부(205), 제 2 모니터부(206), 및 제 3 모니터부(207)를 포함할 수 있다.
제 1 모니터부(205)는 각각의 프로세싱 코어(201)에 대한 실행 모드를 검출한다. 예컨대, 제 1 모니터부(205)는 각각의 프로세싱 코어(201)의 실행 모드가 user mode, supervisor mode, 및 IRQ mode 중 어느 것인지 검출하는 것이 가능하다. 제 1 모니터부(205)는 각각의 프로세싱 코어(201)의 핀(pin) 신호 또는 이 핀(pin)과 연결되는 모드 버스(mode bus)의 신호를 검출해서 실행 모드를 판별하는 것이 가능하다.
제 2 모니터부(206)는 각각의 프로세싱 코어(201)에 대한 인터럽트 마스킹 상태를 검출한다. 인터럽트 마스킹 상태(interrupt masking status)란 어떤 프로세싱 코어(예컨대, core #n)가 인터럽트를 수신할 수 있는 상태인지 여부를 나타낸다. 예를 들어, 어떤 프로세싱 코어(core #n) 내의 레지스터 값을 0 또는 1로 마스킹해서 그 프로세싱 코어(core #n)가 외부의 인터럽트 신호를 수신할 수 없도록 만드는 것이 가능하다. 각각의 프로세싱 코어(201)의 인터럽트 마스킹 상태는 각각의 프로세싱 코어(201)가 프로그램 코드를 실행하면서 수시로 바뀔 수 있다. 제 2 모니터부(206)는 각각의 프로세싱 코어(201)의 인터럽트 마스킹 상태를 저장하는 레지스터 값을 독출해서 인터럽트 마스킹 상태를 판별하는 것이 가능하다.
제 3 모니터부(207)는 각각의 프로세싱 코어(201)에 대한 성능 정보를 검출한다. 성능 정보에는 각각의 프로세싱 코어(201)가 이전 과정에서 몇 개의 인터럽트를 수신했었는지 또는 각각의 프로세싱 코어(201)의 가용량(utilization) 또는 작업량(workload)은 얼마인지 등이 포함될 수 있다. 예컨대, 제 3 모니터부(207)는 프로세싱 코어(201) 별로 런타임(runtime) 동안 작업량을 수집하여 각 프로세싱 코어(201)의 사용량 또는 가용량을 갱신하는 것이 가능하다.
인터럽트 분배부(204)는 모니터부(203)가 검출 및 수집한 상태/성능 정보를 바탕으로 수신된 인터럽트를 다수의 프로세싱 코어(201) 중 어느 하나(예컨대, core #0)로 전달한다.
일 예로써, 인터럽트 분배부(204)는 제 1 모니터부(205)가 검출한 실행 모드에 기초하여 인터럽트를 전달할 수 있다. 예를 들어, 인터럽트 분배부(204)는 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어(예컨대, core #n)를 제외한 나머지 프로세싱 코어(예컨대, core #0, #1, #2) 중 임의의 어느 하나(예컨대, core #0)로 인터럽트를 제공하는 것이 가능하다.
다른 예로써, 인터럽트 분배부(204)는 제 1 모니터부(205)가 검출한 실행 모드와 제 2 모니터부(206)가 검출한 인터럽트 마스킹 상태에 기초하여 인터럽트를 전달할 수 있다. 예를 들어, 인터럽트 분배부(204)는 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어(예컨대, core #n)를 제외한 나머지 프로세싱 코어(예컨대, core #0, #1, #2)를 선택하고, 선택된 프로세싱 코어(예컨대, core #0, #1, #2) 중 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어(예컨대, core #0)로 인터럽트를 제공하는 것이 가능하다.
또 다른 예로써, 인터럽트 분배부(204)는 제 1 모니터부(205)가 검출한 실행 모드, 제 2 모니터부(206)가 검출한 인터럽트 마스킹 상태, 및 제 3 모니터부(207)가 검출한 성능 정보에 기초하여 인터럽트를 전달할 수 있다. 예를 들어, 인터럽트 분배부(204)는 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어(예컨대, core #n)를 제외한 나머지 프로세싱 코어(예컨대, core #0, #1, #2)를 1차적으로 선택한다. 그리고 1차로 선택된 프로세싱 코어(예컨대, core #0, #1, #2) 중 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어(예컨대, core #0, #1)를 2차적로 선택한다. 그리고 2차로 선택된 프로세싱 코어(예컨대, core #0, #1) 중 여태까지 수신한 인터럽트의 개수가 가장 작은 프로세싱 코어(예컨대, core #0)로 인터럽트를 제공하는 것이 가능하다. 또한, 선택적으로, 2차로 선택된 프로세싱 코어(예컨대, core #0, #1) 중 가용량이 많거나 작업량이 적은 프로세싱 코어(예컨대, core #1)를 선택하여 인터럽트를 제공할 수도 있다.
또한, 본 발명의 일 실시예에 따라, 인터럽트 분배부(204)는 제 1 모니터부(205)의 검출 결과인 실행 모드에 따라 인터럽트를 처리할 후보군을 예비적으로 선정한 후, 제 2 모니터부(206)의 검출 결과 또는 제 3 모니터부(207)의 검출 결과 중 어느 하나를 이용하여 인터럽트를 처리할 하나의 프로세싱 코어를 최종적으로 결정하는 것도 가능하다.
또한, 본 발명의 일 실시예에 따라, 인터럽트 분배부(204)는 제 2 모니터부(206)의 검출 결과에 따라 인터럽트를 수신할 수 있는 후보군을 예비적으로 선정한 후, 제 1 모니터부(205)의 검출 결과 또는 제 3 모니터부(207)의 검출 결과 중 어느 하나를 이용하여 인터럽트를 처리할 하나의 프로세싱 코어를 최종적으로 결정하는 것도 가능하다.
도 3은 본 발명의 일 실시예에 따른 인터럽트 처리 방법을 도시한다. 도 1 및 도 3을 참조하여, 본 실시예에 따른 인터럽트 처리 방법을 설명하면 다음과 같다.
먼저, 인터럽트를 수신한다(301). 예컨대, 인터럽트 분배부(102)가 인터럽트 소스로부터 프로세싱 코어(101)에서 처리될 다양한 인터럽트를 수신할 수 있다.
인터럽트가 수신되면, 각 프로세싱 코어(101)의 실행 모드를 판별한다(302). 예컨대, 인터럽트 분배부(102)에 의해, IRQ 모드에 있지 아니한 프로세싱 코어가 검출될 수 있다.
실행 모드가 판별되면, 판별된 실행 모드에 따라 인터럽트를 전달한다(303). 예컨대, 인터럽트 분배부(102)가 IRQ 모드에 있지 아니한 프로세싱 코어로 인터럽트를 제공하는 것이 가능하다. 또한, 선택적으로, IRQ 모드에 있지 아니한 프로세싱 코어가 여러 개 검출된 경우, 검출된 프로세싱 코어들 중에서 각 프로세싱 코어의 성능을 고려하여 로드가 적은 프로세싱 코어에 인터럽트를 제공할 수도 있다.
도 4a 및 도 4b는 본 발명의 다른 실시예에 따른 인터럽트 처리 방법을 도시한다. 도 2, 도 4a 및 도 4b를 참조하여 본 실시예에 따른 인터럽트 처리 방법을 설명하면 다음과 같다.
먼저, 인터럽트를 수신한다(401). 예컨대, 인터럽트 수신부(202)가 인터럽트 소스로부터 프로세싱 코어(201)에서 처리될 다양한 인터럽트를 수신할 수 있다.
인터럽트가 수신되면, 각 프로세싱 코어의 실행 모드를 판별하고 판별된 실행 모드에 따라 인터럽트를 처리할 프로세싱 코어를 1차적으로 선택한다(402). 예컨대, 제 1 모니터부(205)가 각 프로세싱 코어(201)에 관한 실행 모드를 검출하고, 인터럽트 분배부(204)가 검출된 실행 모드에 기초하여 IRQ 모드에 있지 아니한 프로세싱 코어를 선택하는 것이 가능하다.
그리고 1차로 선택된 프로세싱 코어가 1개인지 여부를 판단한다(403). 만약 1차로 선택된 프로세싱 코어가 1개인 경우, 그 프로세싱 코어로 인터럽트를 전달한다(404). 그러나 1차로 선택된 프로세싱 코어가 여러 개인 경우, 각 프로세싱 코어의 인터럽트 마스킹 상태를 판별하고 판별된 상태에 따라 인터럽트를 처리할 프로세싱 코어를 2차적으로 선택한다(405). 예컨대, 제 2 모니터부(206)가 각 프로세싱 코어(201)의 인터럽트 수신 가능 여부를 검출하고, 인터럽트 분배부(204)가 1차로 선택된 프로세싱 코어 중에서 인터럽트 수신이 가능한 프로세싱 코어를 2차로 선택하는 것이 가능하다.
그리고 2차로 선택된 프로세싱 코어가 1개인지 여부를 판단한다(406). 만약 2차로 선택된 프로세싱 코어가 1개인 경우, 그 프로세싱 코어로 인터럽트를 전달한다(404). 그러나 2차로 선택된 프로세싱 코어가 여러 개인 경우, 각 프로세싱 코어의 성능을 판별하고 판별된 성능에 따라 인터럽트를 처리할 프로세싱 코어를 3차적으로 선택한다(407). 예컨대, 제 3 모니터부(207)가 각 프로세싱 코어(201)의 인터럽트 수신 횟수, 수신된 인터럽트의 개수, 사용량, 작업량 등을 검출하고, 인터럽트 분배부(204)가 2차로 선택된 프로세싱 코어 중에서 처리 로드가 적은 프로세싱 코어를 3차로 선택하는 것이 가능하다.
그리고 3차로 선택된 프로세싱 코어가 1개인지 여부를 판단한다(408). 만약 3차로 선택된 프로세싱 코어가 1개인 경우, 그 프로세싱 코어로 인터럽트를 전달한다(404). 그러나 3차로 선택된 프로세싱 코어가 여러 개인 경우, 그 중에서 임의로 하나의 프로세싱 코어를 선택하는 것이 가능하다(409).
이상에서 살펴본 바와 같이, 개시된 실시예에 따른 장치 및 방법에 의하면, 인터럽트를 가장 잘 처리할 수 있는 프로세싱 코어로 인터럽트가 전달되며, 어떤 프로세싱 코어가 이미 인터럽트를 처리하고 있는 경우, 이 프로세싱 코어로는 인터럽트가 전달되지 않기 때문에 인터럽트 처리에 따른 레이턴시 및 오버헤드를 줄일 수 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (17)

  1. 인터럽트를 처리할 다수의 프로세싱 코어; 및
    상기 인터럽트를 수신하고, 상기 각각의 프로세싱 코어의 실행 모드가 예외 처리 또는 인터럽트 처리를 위한 IRQ 모드인지 여부를 판별하고, 상기 수신된 인터럽트를 상기 IRQ 모드에 있지 아니한 프로세싱 코어로 제공하는 인터럽트 분배부; 를 포함하는 인터럽트 처리 장치.
  2. 제 1 항에 있어서, 상기 인터럽트 분배부는
    상기 IRQ 모드에 있지 아니한 프로세싱 코어가 여러 개인 경우, 각 프로세싱 코어의 성능을 고려하여 어느 하나를 선택하고, 선택된 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치.
  3. 제 2 항에 있어서, 상기 성능은
    상기 각 프로세싱 코어의 인터럽트 수신 횟수, 상기 각 프로세싱 코어가 수신했던 인터럽트의 개수, 또는 상기 각 프로세싱 코어의 사용량, 가용량 또는 작업량을 포함하는 인터럽트 처리 장치.
  4. 다수의 프로세싱 코어;
    각각의 프로세싱 코어의 상태/성능 정보를 검출하는 모니터부; 및
    상기 검출된 상태/성능 정보에 따라 수신된 인터럽트를 상기 다수의 프로세싱 코어 중 어느 하나로 제공하는 인터럽트 분배부; 를 포함하는 인터럽트 처리 장치.
  5. 제 4 항에 있어서, 상기 모니터부는
    상기 각 프로세싱 코어의 실행 모드를 검출하는 제 1 모니터부; 를 포함하는 인터럽트 처리 장치.
  6. 제 5 항에 있어서, 상기 인터럽트 분배부는
    상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치.
  7. 제 5 항에 있어서, 상기 모니터부는
    상기 각 프로세싱 코어의 인터럽트 마스킹 상태를 검출하는 제 2 모니터부; 를 더 포함하는 인터럽트 처리 장치.
  8. 제 7 항에 있어서, 상기 인터럽트 분배부는
    상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치.
  9. 제 7 항에 있어서, 상기 모니터부는
    상기 각 프로세싱 코어가 수신했던 인터럽트의 개수 및 상기 각 프로세싱 코어의 가용량을 검출하는 제 3 모니터부; 를 더 포함하는 인터럽트 처리 장치.
  10. 제 9 항에 있어서, 상기 인터럽트 분배부는
    상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 1차로 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어를 2차로 선택한 후, 2차로 선택된 프로세싱 코어 중 상기 인터럽트의 개수 또는 상기 가용량에 따라 어느 하나의 프로세싱 코어를 최종적으로 선택하고, 최종적으로 선택된 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치.
  11. 다수의 프로세싱 코어를 포함하는 시스템의 인터럽트 처리 방법에 있어서,
    각각의 프로세싱 코어의 상태/성능 정보를 검출하는 단계; 및
    상기 검출된 상태/성능 정보에 따라 수신된 인터럽트를 상기 다수의 프로세싱 코어 중 어느 하나로 제공하는 단계; 를 포함하는 인터럽트 처리 방법.
  12. 제 11 항에 있어서, 상기 검출하는 단계는
    상기 각 프로세싱 코어의 실행 모드를 검출하는 과정을 포함하는 인터럽트 처리 방법.
  13. 제 12 항에 있어서, 상기 제공하는 단계는
    상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어로 상기 인터럽트를 제공하는 과정을 포함하는 인터럽트 처리 방법.
  14. 제 12 항에 있어서, 상기 검출하는 단계는
    상기 각 프로세싱 코어의 인터럽트 마스킹 상태를 검출하는 과정을 더 포함하는 인터럽트 처리 방법.
  15. 제 14 항에 있어서, 상기 제공하는 단계는
    상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어로 상기 인터럽트를 제공하는 과정을 포함하는 인터럽트 처리 방법.
  16. 제 14 항에 있어서, 상기 검출하는 단계는
    상기 각 프로세싱 코어가 수신했던 인터럽트의 개수 및 상기 각 프로세싱 코어의 가용량을 검출하는 과정을 더 포함하는 인터럽트 처리 방법.
  17. 제 16 항에 있어서, 상기 제공하는 단계는
    상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 1차로 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어를 2차로 선택한 후, 2차로 선택된 프로세싱 코어 중 상기 인터럽트의 개수 또는 상기 가용량에 따라 어느 하나의 프로세싱 코어를 최종적으로 선택하고, 최종적으로 선택된 프로세싱 코어로 상기 인터럽트를 제공하는 과정을 포함하는 인터럽트 처리 방법.
KR1020100098405A 2010-10-08 2010-10-08 인터럽트 처리 장치 및 방법 KR101717494B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100098405A KR101717494B1 (ko) 2010-10-08 2010-10-08 인터럽트 처리 장치 및 방법
US13/177,988 US9460032B2 (en) 2010-10-08 2011-07-07 Apparatus and method for processing an interrupt

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100098405A KR101717494B1 (ko) 2010-10-08 2010-10-08 인터럽트 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120036630A true KR20120036630A (ko) 2012-04-18
KR101717494B1 KR101717494B1 (ko) 2017-03-28

Family

ID=45926009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100098405A KR101717494B1 (ko) 2010-10-08 2010-10-08 인터럽트 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US9460032B2 (ko)
KR (1) KR101717494B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210006127A (ko) * 2019-07-08 2021-01-18 숭실대학교산학협력단 다중 프로세서 인터럽트 신호 처리 장치
KR102419015B1 (ko) * 2021-12-22 2022-07-08 한화시스템 주식회사 Numa 기반 장비의 인터럽트 분배방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터 프로그램

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336122B2 (en) * 2012-05-07 2016-05-10 Microchip Technology Incorporated Device having configurable breakpoint based on interrupt status
JP6079065B2 (ja) * 2012-08-31 2017-02-15 富士通株式会社 情報処理装置,処理方法及びプログラム
US9678564B2 (en) * 2012-12-21 2017-06-13 Nxp B.V. Multiprocessor system with interrupt distributor
US9575911B2 (en) 2014-04-07 2017-02-21 Nxp Usa, Inc. Interrupt controller and a method of controlling processing of interrupt requests by a plurality of processing units
US10083134B2 (en) * 2015-11-28 2018-09-25 International Business Machines Corporation Configurable processor interrupts for allowing an application to independently handle interrupts
CN108984350B (zh) * 2017-06-01 2023-06-27 龙芯中科技术股份有限公司 一种中断处理功能验证系统和方法
WO2020080882A1 (en) * 2018-10-18 2020-04-23 Samsung Electronics Co., Ltd. Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof
US11630789B2 (en) * 2020-09-11 2023-04-18 Apple Inc. Scalable interrupts
US11803471B2 (en) 2021-08-23 2023-10-31 Apple Inc. Scalable system on a chip

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154080A (ja) * 1996-08-19 1998-06-09 Samsung Electron Co Ltd 非対称マルチプロセッサアーキテクチャーの割り込み及び例外事象を処理するためのシステムおよび方法
KR100495240B1 (ko) * 1999-11-19 2005-06-14 인피니온 테크놀로지스 아게 프로세서 시스템
US20060136642A1 (en) * 2004-12-21 2006-06-22 Ooi Ping C Interrupt distribution for multiprocessor system
US20090248934A1 (en) * 2008-03-26 2009-10-01 International Business Machines Corporation Interrupt dispatching method in multi-core environment and multi-core processor

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161280A (ja) 1993-07-16 1996-06-21 Nec Corp マルチプロセッサシステムの割込み調停方式
JP2908739B2 (ja) * 1994-12-16 1999-06-21 インターナショナル・ビジネス・マシーンズ・コーポレイション 多重プロセッサ・システムにおけるcpuのモニタリング・システム及び方法
KR100215437B1 (ko) * 1996-01-15 1999-08-16 윤종용 디지탈비데오디스크플레이어의 아이, 디 데이타 전송방법
JPH11345135A (ja) 1998-06-03 1999-12-14 Nec Corp 情報処理装置のプロセッサ負荷による割込方法とその制御回路
US20040100982A1 (en) * 1999-09-30 2004-05-27 Sivaram Balasubramanian Distributed real-time operating system
KR100317237B1 (ko) * 1999-10-01 2001-12-22 윤종용 유사 벡터 방식의 인터럽트 컨트롤러 및 그것의 인터럽트 처리 방법
US6968412B1 (en) * 1999-12-30 2005-11-22 Intel Corporation Method and apparatus for interrupt controller data re-direction
US6917997B2 (en) * 2000-06-29 2005-07-12 Palmchip Corporation Integrated circuit including interrupt controller with shared preamble execution and global-disable control bit
US20020065646A1 (en) * 2000-09-11 2002-05-30 Waldie Arthur H. Embedded debug system using an auxiliary instruction queue
TW498213B (en) * 2001-04-18 2002-08-11 Via Tech Inc Method and chipset for supporting interrupts of system management mode in multiple-CPU system
US6952749B2 (en) * 2001-05-02 2005-10-04 Portalplayer, Inc. Multiprocessor interrupt handling system and method
US7328294B2 (en) * 2001-12-03 2008-02-05 Sun Microsystems, Inc. Methods and apparatus for distributing interrupts
US7721024B2 (en) * 2003-11-12 2010-05-18 Dell Products L.P. System and method for exiting from an interrupt mode in a multiple processor system
GB2409543B (en) * 2003-12-23 2006-11-01 Advanced Risc Mach Ltd Interrupt masking control
WO2005099334A2 (en) * 2004-03-31 2005-10-27 Intel Corporation Event handling mechanism
US7200701B2 (en) * 2004-08-26 2007-04-03 Dell Products L.P. System and method for processing system management interrupts in a multiple processor system
US7200700B2 (en) * 2005-05-19 2007-04-03 Inventec Corporation Shared-IRQ user defined interrupt signal handling method and system
ATE519163T1 (de) * 2006-01-04 2011-08-15 Nxp Bv Verfahren und vorrichtung zur interrupt- verteilung in einem multiprozessorsystem
KR20080048307A (ko) 2006-11-28 2008-06-02 삼성전자주식회사 멀티 프로세서 시스템의 인터럽트 전달 장치 및 방법
US7962679B2 (en) * 2007-09-28 2011-06-14 Intel Corporation Interrupt balancing for multi-core and power
US20090172229A1 (en) * 2007-12-28 2009-07-02 Krystof Zmudzinski Methods for selecting cores to execute system management interrupts
US7802042B2 (en) * 2007-12-28 2010-09-21 Intel Corporation Method and system for handling a management interrupt event in a multi-processor computing device
US7962771B2 (en) * 2007-12-31 2011-06-14 Intel Corporation Method, system, and apparatus for rerouting interrupts in a multi-core processor
JP5167844B2 (ja) * 2008-02-05 2013-03-21 日本電気株式会社 プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム
US8356130B2 (en) * 2009-08-14 2013-01-15 Advanced Micro Devices, Inc. Mechanism for recording undeliverable user-level interrupts
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US8473662B2 (en) * 2009-12-18 2013-06-25 Electronics And Telecommunications Research Institute Interrupt-handling-mode determining method of embedded operating system kernel

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154080A (ja) * 1996-08-19 1998-06-09 Samsung Electron Co Ltd 非対称マルチプロセッサアーキテクチャーの割り込み及び例外事象を処理するためのシステムおよび方法
KR100495240B1 (ko) * 1999-11-19 2005-06-14 인피니온 테크놀로지스 아게 프로세서 시스템
US20060136642A1 (en) * 2004-12-21 2006-06-22 Ooi Ping C Interrupt distribution for multiprocessor system
US20090248934A1 (en) * 2008-03-26 2009-10-01 International Business Machines Corporation Interrupt dispatching method in multi-core environment and multi-core processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210006127A (ko) * 2019-07-08 2021-01-18 숭실대학교산학협력단 다중 프로세서 인터럽트 신호 처리 장치
KR102419015B1 (ko) * 2021-12-22 2022-07-08 한화시스템 주식회사 Numa 기반 장비의 인터럽트 분배방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터 프로그램

Also Published As

Publication number Publication date
US20120089761A1 (en) 2012-04-12
US9460032B2 (en) 2016-10-04
KR101717494B1 (ko) 2017-03-28

Similar Documents

Publication Publication Date Title
KR101717494B1 (ko) 인터럽트 처리 장치 및 방법
US9218203B2 (en) Packet scheduling in a multiprocessor system using inter-core switchover policy
EP2466460B1 (en) Compiling apparatus and method for a multicore device
US9772879B2 (en) System and method for isolating I/O execution via compiler and OS support
KR101834195B1 (ko) 다중코어 시스템 및 로드 밸런싱 방법
CN107046508B (zh) 报文接收方法及网络设备
KR101915198B1 (ko) 프로세서간 메시지처리장치 및 방법
US20120137295A1 (en) Method for displaying cpu utilization in a multi-processing system
US9336055B2 (en) Apparatus and method for predicting processing performance
US8051234B2 (en) Multiprocessor system
CN103853620A (zh) 一种众核处理器进程间相互通信的方法、装置及系统
CN101246438A (zh) 一种对称多处理系统中进程与中断的处理方法及装置
JP2006285350A (ja) Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム
CN105378668A (zh) 多处理器系统中的操作系统管理的中断引导
JP6446125B2 (ja) リソースリーク検出の方法、装置及びシステム
US9626314B2 (en) Method and apparatus for allocating interruptions
US9678792B2 (en) Shared resources in a docked mobile environment
US9983911B2 (en) Analysis controller, analysis control method and computer-readable medium
CN102945214A (zh) 基于io延迟时间分布优化中断处理任务的方法
CN102043690A (zh) 多核处理器故障处理方法及多核处理器
KR20120003088A (ko) 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
CN102929819A (zh) 用于处理计算机系统中的存储设备的中断请求的方法
Nabelsee et al. Load-aware scheduling for heterogeneous multi-core systems
WO2013129061A1 (ja) 同時接続数制御システム、同時接続数制御サーバ、同時接続数制御方法および同時接続数制御プログラム
CN111131292B (zh) 报文分流方法、装置、网络安全检测设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant