KR20120036630A - 인터럽트 처리 장치 및 방법 - Google Patents
인터럽트 처리 장치 및 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/268—Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task 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
다수의 CPU를 갖는 멀티프로세서 시스템에서의 인터럽트 처리 기술과 관련된다.
인터럽트 레이턴시(interrupt latency)는 인터럽트 처리에 소요되는 지연 시간에 대응되는 것으로 시스템 동작에 중요한 영향을 미치는 요인 중 하나이다. 특히 실시간성이 강조되는 정보통신기기에서 인터럽트 레이턴시가 예상치 못한 원인에 의해 늘어나게 되면 응답 시간 역시 그에 비례하여 증가하기 때문에 통화 음이 끊기거나 화면의 영상이 제대로 출력되지 못하는 현상이 발생할 수 있다.
또한 최근에는 여러 개의 CPU를 갖는 멀티프로세서 시스템이 이러한 정보통신기기에 적용되면서 멀티프로세서 시스템에서 인터럽트를 어떻게 효율적으로 처리할지에 대하 연구가 활발히 진행되고 있다.
멀티프로세서 시스템에서 효율적으로 인터럽트를 처리하기 위하여 인터럽트 처리 시 각 CPU 별로 인터럽트 발생량을 측정함으로써 CPU간 인터럽트의 발생 비율의 밸런스를 맞출 수 있다. 그렇지만 인터럽트의 발생량을 측정하는 이 방법은 인터럽트가 발생한 시점에서의 시스템 상태가 아닌 인터럽트 발생 이전의 상태만을 고려하기 때문에 사용자와의 인터랙션 및 디바이스 내부적인 동작에 의해 다양한 유형의 인터럽트가 랜덤하게 발생하는 최근의 정보통신기기에는 적합하지 아니하다.
또한, 특정 CPU가 인터럽트를 처리하는 동안 또 다른 인터럽트가 발생한다면, 이 인터럽트는 이전에 실행되던 인터럽트를 중단시킬 수 있고, 이로 인하여 이전에 실행되던 인터럽트의 레이턴시는 후에 발생한 인터럽트의 처리가 끝날 때까지 지연되는 문제점이 있다.
인터럽트 처리 오버헤드 및 레이턴시를 줄일 수 있는 인터럽트 처리 장치 및 방법이 제공된다.
본 발명의 일 양상에 따른 인터럽트 처리 장치는, 인터럽트를 처리할 다수의 프로세싱 코어, 및 인터럽트를 수신하고, 각각의 프로세싱 코어의 실행 모드가 예외 처리 또는 인터럽트 처리를 위한 IRQ 모드인지 여부를 판별하고, 수신된 인터럽트를 IRQ 모드에 있지 아니한 프로세싱 코어로 제공하는 인터럽트 분배부를 포함한다.
본 발명의 다른 양상에 따른 인터럽트 처리 장치는, 다수의 프로세싱 코어, 각각의 프로세싱 코어의 상태/성능 정보를 검출하는 모니터부, 및 검출된 상태/성능 정보에 따라 수신된 인터럽트를 다수의 프로세싱 코어 중 어느 하나로 제공하는 인터럽트 분배부를 포함한다.
본 발명의 일 양상에 따른 인터럽트 처리 방법은, 다수의 프로세싱 코어를 포함하는 시스템의 인터럽트 처리 방법에 있어서, 각각의 프로세싱 코어의 상태/성능 정보를 검출하는 단계, 및 검출된 상태/성능 정보에 따라 수신된 인터럽트를 다수의 프로세싱 코어 중 어느 하나로 제공하는 단계를 포함한다.
개시된 내용에 의하면, 인터럽트를 가장 잘 처리할 수 있는 프로세싱 코어로 인터럽트가 전달되며, 어떤 프로세싱 코어가 이미 인터럽트를 처리하고 있는 경우, 이 프로세싱 코어로는 인터럽트가 전달되지 않기 때문에 인터럽트 처리에 따른 레이턴시 및 오버헤드를 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 인터럽트 처리 장치를 도시한다.
도 2는 본 발명의 다른 실시예에 따른 인터럽트 처리 장치를 도시한다.
도 3은 본 발명의 일 실시예에 따른 인터럽트 처리 방법을 도시한다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 인터럽트 처리 방법을 도시한다.
도 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)
- 인터럽트를 처리할 다수의 프로세싱 코어; 및
상기 인터럽트를 수신하고, 상기 각각의 프로세싱 코어의 실행 모드가 예외 처리 또는 인터럽트 처리를 위한 IRQ 모드인지 여부를 판별하고, 상기 수신된 인터럽트를 상기 IRQ 모드에 있지 아니한 프로세싱 코어로 제공하는 인터럽트 분배부; 를 포함하는 인터럽트 처리 장치. - 제 1 항에 있어서, 상기 인터럽트 분배부는
상기 IRQ 모드에 있지 아니한 프로세싱 코어가 여러 개인 경우, 각 프로세싱 코어의 성능을 고려하여 어느 하나를 선택하고, 선택된 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치. - 제 2 항에 있어서, 상기 성능은
상기 각 프로세싱 코어의 인터럽트 수신 횟수, 상기 각 프로세싱 코어가 수신했던 인터럽트의 개수, 또는 상기 각 프로세싱 코어의 사용량, 가용량 또는 작업량을 포함하는 인터럽트 처리 장치. - 다수의 프로세싱 코어;
각각의 프로세싱 코어의 상태/성능 정보를 검출하는 모니터부; 및
상기 검출된 상태/성능 정보에 따라 수신된 인터럽트를 상기 다수의 프로세싱 코어 중 어느 하나로 제공하는 인터럽트 분배부; 를 포함하는 인터럽트 처리 장치. - 제 4 항에 있어서, 상기 모니터부는
상기 각 프로세싱 코어의 실행 모드를 검출하는 제 1 모니터부; 를 포함하는 인터럽트 처리 장치. - 제 5 항에 있어서, 상기 인터럽트 분배부는
상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치. - 제 5 항에 있어서, 상기 모니터부는
상기 각 프로세싱 코어의 인터럽트 마스킹 상태를 검출하는 제 2 모니터부; 를 더 포함하는 인터럽트 처리 장치. - 제 7 항에 있어서, 상기 인터럽트 분배부는
상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치. - 제 7 항에 있어서, 상기 모니터부는
상기 각 프로세싱 코어가 수신했던 인터럽트의 개수 및 상기 각 프로세싱 코어의 가용량을 검출하는 제 3 모니터부; 를 더 포함하는 인터럽트 처리 장치. - 제 9 항에 있어서, 상기 인터럽트 분배부는
상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 1차로 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어를 2차로 선택한 후, 2차로 선택된 프로세싱 코어 중 상기 인터럽트의 개수 또는 상기 가용량에 따라 어느 하나의 프로세싱 코어를 최종적으로 선택하고, 최종적으로 선택된 프로세싱 코어로 상기 인터럽트를 제공하는 인터럽트 처리 장치. - 다수의 프로세싱 코어를 포함하는 시스템의 인터럽트 처리 방법에 있어서,
각각의 프로세싱 코어의 상태/성능 정보를 검출하는 단계; 및
상기 검출된 상태/성능 정보에 따라 수신된 인터럽트를 상기 다수의 프로세싱 코어 중 어느 하나로 제공하는 단계; 를 포함하는 인터럽트 처리 방법. - 제 11 항에 있어서, 상기 검출하는 단계는
상기 각 프로세싱 코어의 실행 모드를 검출하는 과정을 포함하는 인터럽트 처리 방법. - 제 12 항에 있어서, 상기 제공하는 단계는
상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어로 상기 인터럽트를 제공하는 과정을 포함하는 인터럽트 처리 방법. - 제 12 항에 있어서, 상기 검출하는 단계는
상기 각 프로세싱 코어의 인터럽트 마스킹 상태를 검출하는 과정을 더 포함하는 인터럽트 처리 방법. - 제 14 항에 있어서, 상기 제공하는 단계는
상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어로 상기 인터럽트를 제공하는 과정을 포함하는 인터럽트 처리 방법. - 제 14 항에 있어서, 상기 검출하는 단계는
상기 각 프로세싱 코어가 수신했던 인터럽트의 개수 및 상기 각 프로세싱 코어의 가용량을 검출하는 과정을 더 포함하는 인터럽트 처리 방법. - 제 16 항에 있어서, 상기 제공하는 단계는
상기 검출된 실행 모드로써 IRQ 모드를 갖는 프로세싱 코어를 제외한 나머지 프로세싱 코어를 1차로 선택하고, 선택된 프로세싱 코어 중 상기 인터럽트 마스킹 상태에 따라 인터럽트를 수신할 수 있는 프로세싱 코어를 2차로 선택한 후, 2차로 선택된 프로세싱 코어 중 상기 인터럽트의 개수 또는 상기 가용량에 따라 어느 하나의 프로세싱 코어를 최종적으로 선택하고, 최종적으로 선택된 프로세싱 코어로 상기 인터럽트를 제공하는 과정을 포함하는 인터럽트 처리 방법.
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)
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)
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)
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)
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 |
-
2010
- 2010-10-08 KR KR1020100098405A patent/KR101717494B1/ko active IP Right Grant
-
2011
- 2011-07-07 US US13/177,988 patent/US9460032B2/en not_active Expired - Fee Related
Patent Citations (4)
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)
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 |