KR20030037572A - Interrupt controller - Google Patents

Interrupt controller Download PDF

Info

Publication number
KR20030037572A
KR20030037572A KR1020010068821A KR20010068821A KR20030037572A KR 20030037572 A KR20030037572 A KR 20030037572A KR 1020010068821 A KR1020010068821 A KR 1020010068821A KR 20010068821 A KR20010068821 A KR 20010068821A KR 20030037572 A KR20030037572 A KR 20030037572A
Authority
KR
South Korea
Prior art keywords
interrupt
register
priority
source
virtual
Prior art date
Application number
KR1020010068821A
Other languages
Korean (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 KR1020010068821A priority Critical patent/KR20030037572A/en
Publication of KR20030037572A publication Critical patent/KR20030037572A/en

Links

Classifications

    • 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
    • G06F9/4818Priority circuits therefor
    • 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/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Abstract

PURPOSE: An interrupt controller is provided to transmit an interrupt request signal to a CPU for an ARM(Advanced RISC Machines) instruction model only when an interrupt request exists from an interrupt source prior to the currently processed interrupt source. CONSTITUTION: An interrupt controller(10) generates an interrupt request signal(nIRQ) by responding to interrupt requests of the 'n' number of interrupt sources(SOURCE0-SOURCEn-1). An interrupt register(11) includes the 'n' number of bits corresponded to the 'n' number of interrupt sources(SOURCE0-SOURCEn-1). The bits are set individually in accordance with an interrupt request of corresponding interrupt source. When an interrupt is requested from the interrupt source, a bit corresponded to the interrupt register(11) is set as '1'. A priority is decided by a position of a bit of a register. For example, an interrupt source corresponded to the '0'th bit of the interrupt register(11) has the highest priority. Also, an interrupt source corresponded to the 'n'th bit of the interrupt register(11) has the lowest priority. Each bit of the interrupt register(11) is inputted to an interrupt request signal generator(12).

Description

인터럽트 컨트롤러{INTERRUPT CONTROLLER}Interrupt Controller {INTERRUPT CONTROLLER}

본 발명은 인터럽트 컨트롤러에 관한 것으로, 좀 더 구체적으로는 ARM(Advanced RISC Machines) 사의 인스트럭션 모델(instruction model)에서 인터럽트 네스팅(interrupt nesting)이 가능한 인터럽트 컨트롤러에 관한 것이다.The present invention relates to an interrupt controller, and more particularly, to an interrupt controller capable of interrupt nesting in an instruction model of ARM (Advanced RISC Machines).

인터럽트는 비동기적 사건으로, 정상적인 처리를 중지시키고, 인터럽트 핸들러 루틴(interrupt handler rutine)(또는, 인터럽트 서비스 루틴)을 수행한다. 인터럽트는 입/출력 장치(input/output device), 타이머(timer), 기계 검사(machinecheck) 등과 같은 하드웨어와 수퍼바이저(supervisor), 시스템 호출(system call) 또는 트랩(trap) 명령어 등과 같은 하드웨어에 의해 발생된다.An interrupt is an asynchronous event that interrupts normal processing and executes an interrupt handler routine (or interrupt service routine). Interrupts are generated by hardware such as input / output devices, timers, and machinechecks, and by hardware such as supervisors, system call or trap instructions. do.

ARM(Advanced RISC Machines) 사의 인스트럭션 모델(instruction model)은 인터럽트 서비스 루틴을 처리하기 전에 CPSR 레지스터(current program status register)의 I 플래그를 1로 설정한다. 다음, 인터럽트 네스팅(interrupt nesting)을 위해서 CPSR 레지스터(current program status register)의 I 플래그는 1에서 0으로 변경되어야만 한다.The instruction model of Advanced RISC Machines (ARM) sets the I flag of the current program status register (CPSR) to 1 before processing the interrupt service routine. Next, the I flag of the current program status register (CPSR) must be changed from 1 to 0 for interrupt nesting.

한편, 현재 수행중인 인터럽트 서비스 루틴보다 우선 순위(priority)가 낮은 인터럽트 소스에 의해 인터럽트가 발생하는 것을 방지하기 위해, 현재 수행중인 인터럽트 서비스 루틴보다 우선 순위가 낮은 인터럽트를 하나하나 디세이블(disable) 시킨다. 이 방법은 각각의 인터럽트 서비스 루틴이 자신보다 우선순위가 낮은 인터럽트들을 모두 알고 있어야만 하는 문제점이 있었다. 이는 ARM 인스트럭션 모델들이 인터럽트 네스팅을 지원하지 않기 때문이다.On the other hand, in order to prevent an interrupt from being generated by an interrupt source having a lower priority than the interrupt service routine currently being executed, the interrupts having a lower priority than the interrupt service routine currently being executed are disabled one by one. . This method had a problem in that each interrupt service routine had to be aware of all interrupts lower than itself. This is because the ARM instruction models do not support interrupt nesting.

따라서 본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 현재 처리 중인 인터럽트 소스보다 우선순위가 높은 인터럽트 소스로부터 인터럽트 요청이 있을 때에만 CPU로 인터럽트 요청 신호를 전송하는 ARM 인스트럭션 모델을 위한 인터럽트 컨트롤러를 제공하는데 있다.Accordingly, an object of the present invention is to solve the above-described problems, an interrupt for the ARM instruction model that transmits an interrupt request signal to the CPU only when there is an interrupt request from an interrupt source having a higher priority than the interrupt source currently being processed. To provide a controller.

도 1은 본 발명의 바람직한 실시예에 따른 인터럽트 컨트롤러의 구성을 보여주는 도면; 그리고1 shows the configuration of an interrupt controller according to a preferred embodiment of the present invention; And

도 2는 도 1에 도시된 인터럽트 컨트롤러가 인터럽트 요청 신호를 활성화/비활성화시키는 제어 수순을 보여주는 플로우차트이다.FIG. 2 is a flowchart showing a control procedure for enabling / disabling an interrupt request signal by the interrupt controller shown in FIG. 1.

10 : 인터럽트 컨트롤러11 : 인터럽트 레지스터10: interrupt controller 11: interrupt register

12 : 인터럽트 요청 신호 발생기13 : 가상 인터럽트 발생기12: interrupt request signal generator 13: virtual interrupt generator

20 : 레지스터20: register

(구성)(Configuration)

상술한 바와 같은 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 인터럽트 컨트롤러는, 프로세서가 소정의 인터럽트 소스로부터의 인터럽트 요청에 응답해서 인터럽트 서비스 루틴을 수행 중일 때 상기 프로세서에 의해 서비스 중인 인터럽트 소스의 우선 순위보다 높은 우선 순위를 갖는 가상 인터럽트를 발생하고, 그리고 상기 인터럽트 소스들 중 상기 가상 인터럽트의 우선 순위보다 높은 우선 순위를 갖는 인터럽트 소스로부터 인터럽트 요청이 있을 때 상기 프로세서로 인터럽트 요청 신호를 활성화시킨다.In accordance with one aspect of the present invention for achieving the above object, an interrupt controller is configured to determine an interrupt source being serviced by the processor when the processor is executing an interrupt service routine in response to an interrupt request from a predetermined interrupt source. Generate a virtual interrupt having a priority higher than the priority, and activate an interrupt request signal to the processor when there is an interrupt request from an interrupt source having a higher priority than the virtual interrupt among the interrupt sources.

특히, 상기 가상 인터럽트의 우선 순위는 상기 프로세서의 의해 서비스 중인 인터럽트 소스의 우선 순위보다 한 단계 높다.In particular, the priority of the virtual interrupt is one step above the priority of the interrupt source being serviced by the processor.

본 발명의 다른 특징에 의하면, 인터럽트 컨트롤러는: 복수의 인터럽트 소스들에 각각 대응하는 비트들을 포함하고, 상기 비트들 각각은 대응하는 인터럽트 소스로부터의 인터럽트 요청에 따라 개별적으로 세트되는 제 1 레지스터, 현재 서비스 중인 인터럽트 소스의 정보를 저장하기 위한 제 2 레지스터, 상기 제 2 레지스터에 저장된 상기 현재 서비스 중인 인터럽트 소스의 우선 순위보다 높은 우선 순위를 갖는 가상 인터럽트를 발생하는 가상 인터럽트 발생기, 그리고 상기 제 1 레지스터의 상기 비트들과 상기 가상 인터럽트를 받아들이고, 상기 가상 인터럽트보다 우선 순위가 높은 상기 제 1 레지스터의 비트가 세트되었을 때 인터럽트 요청 신호를 활성화시키는 인터럽트 요청 신호 발생기를 포함한다.According to another aspect of the invention, an interrupt controller comprises: a first register, each of which comprises bits corresponding to a plurality of interrupt sources, each of which is individually set according to an interrupt request from a corresponding interrupt source; A second register for storing information of an interrupt source in service, a virtual interrupt generator for generating a virtual interrupt having a higher priority than the priority of the currently serving interrupt source stored in the second register, and of the first register And an interrupt request signal generator that accepts the bits and the virtual interrupt and activates an interrupt request signal when a bit of the first register having a higher priority than the virtual interrupt is set.

이 실시예에 있어서, 상기 인터럽트 요청 신호 발생기는, 상기 가상 인터럽트 발생기로부터 상기 가상 인터럽트가 입력되지 않을 때, 상기 제 1 레지스터의상기 비트들 중 적어도 하나가 세트될 때 상기 인터럽트 요청 신호를 활성화시킨다.In this embodiment, the interrupt request signal generator activates the interrupt request signal when at least one of the bits of the first register is set when the virtual interrupt is not input from the virtual interrupt generator.

이 실시예에 있어서, 상기 가상 인터럽트의 우선 순위는 상기 제 2 레지스터에 저장된 상기 현재 서비스 중인 인터럽트 소스의 우선 순위보다 한 단계 높다.In this embodiment, the priority of the virtual interrupt is one step higher than the priority of the currently serving interrupt source stored in the second register.

(실시예)(Example)

본 발명의 인터럽트 컨트롤러는 프로세서가 소정의 인터럽트 소스로부터의 인터럽트 요청에 응답해서 인터럽트 서비스 루틴을 수행 중일 때, 상기 프로세서에 의해 서비스 중인 인터럽트 소스의 우선 순위보다 높은 우선 순위를 갖는 가상 인터럽트를 발생하고, 상기 인터럽트 소스들 중 상기 가상 인터럽트의 우선 순위보다 높은 우선 순위를 갖는 인터럽트 소스로부터 인터럽트 요청이 있을 때 상기 프로세서로 인터럽트 요청 신호를 활성화시킨다. 따라서, 인터럽트 네스팅을 위해 종래의 인터럽트 서비스 루틴들 각각이 자신보다 우선 순위가 낮은 인터럽트들에 대한 정보를 사전에 알고 있어야 하는 번거러움이 제거되고, CPU가 인터럽트 서비스 루틴을 수행하기 전에 현재 수행될 인터럽트 루틴보다 우선 순위가 낮은 인터럽트들을 디세이블하는 동작이 불필요하다.The interrupt controller of the present invention generates a virtual interrupt having a priority higher than that of an interrupt source being serviced by the processor when the processor is executing an interrupt service routine in response to an interrupt request from a predetermined interrupt source, The interrupt request signal is activated to the processor when an interrupt request is received from an interrupt source having a higher priority than the virtual interrupt among the interrupt sources. This eliminates the need for each of the conventional interrupt service routines for interrupt nesting to know information about interrupts with a lower priority than themselves, and the interrupt to be executed before the CPU performs the interrupt service routine. There is no need to disable interrupts of lower priority than routines.

이하 첨부된 도면 제 1 도 및 제 2 도를 참조하여 본 발명의 바람직한 실시예가 설명된다.Hereinafter, exemplary embodiments of the present invention will be described with reference to the accompanying drawings, FIGS. 1 and 2.

도 1은 본 발명의 바람직한 실시예에 따른 인터럽트 컨트롤러의 구성을 보여주는 도면이다.1 is a diagram illustrating a configuration of an interrupt controller according to a preferred embodiment of the present invention.

도 1을 참조하면, 인터럽트 컨트롤러(10)는 인터럽트 레지스터(11), 우선순위 판별 회로(12) 그리고 가상 인터럽트 발생기(13)를 포함한다. 도 1에 도시된 인터럽트 컨트롤러(10)는 n 개의 인터럽트 소스들로부터의 인터럽트 요청에 응답해서 인터럽트 요청 신호(nIRQ)를 발생한다.Referring to FIG. 1, the interrupt controller 10 includes an interrupt register 11, a priority determination circuit 12, and a virtual interrupt generator 13. The interrupt controller 10 shown in FIG. 1 generates an interrupt request signal nIRQ in response to interrupt requests from n interrupt sources.

도 1을 참조하면, 인터럽트 레지스터(11)는 n 개의 인터럽트 소스들(SOURCE0~SOURCEn-1)에 각각 대응하는 n 개의 비트들을 포함한다. 상기 비트들은 대응하는 인터럽트 소스의 인터럽트 요청에 따라 개별적으로 세트될 수 있다. 예컨대, 인터럽트 소스로부터 인터럽트 요청이 있을 때 레지스터(11)의 대응하는 비트는 '1'로 세트된다. 우선 순위는 이 레지스터의 비트의 위치에 의해 결정된다. 예컨대, 레지스터(11)의 0 번째 비트에 대응하는 인터럽트 소스는 가장 높은 우선 순위를 가지며, 레지스터(11)의 n 번째 비트에 대응하는 인터럽트 소스는 가장 낮은 우선 순위를 갖는다. 상기 레지스터(11)의 각 비트는 인터럽트 요청 신호 발생기(12)로 입력된다.Referring to FIG. 1, the interrupt register 11 includes n bits corresponding to n interrupt sources SOURCE0 to SOURCEn-1, respectively. The bits can be set individually according to the interrupt request of the corresponding interrupt source. For example, when there is an interrupt request from an interrupt source, the corresponding bit in register 11 is set to '1'. The priority is determined by the position of the bits in this register. For example, the interrupt source corresponding to the 0th bit of the register 11 has the highest priority, and the interrupt source corresponding to the nth bit of the register 11 has the lowest priority. Each bit of the register 11 is input to an interrupt request signal generator 12.

도 2는 도 1에 도시된 인터럽트 컨트롤러(10)가 인터럽트 요청 신호(nIRQ)를 활성화/비활성화시키는 제어 수순을 보여주는 플로우차트이다.FIG. 2 is a flowchart showing a control procedure by which the interrupt controller 10 shown in FIG. 1 activates / deactivates the interrupt request signal nIRQ.

도 2를 참조하면, 단계 S100에서 인터럽트 요청 신호 발생기(12)는 인터럽트 레지스터(11)의 비트들을 받아들여서 인터럽트가 발생했는 지의 여부를 판별한다. 판별 결과, 레지스터(11)의 비트들 중 적어도 하나가 세트되으면(즉, '1'이면) 그 제어는 단계 S101로 진행한다. 단계 S101에서 인터럽트 요청 신호 발생기(12)는 인터럽트 요청 신호(nIRQ)를 활성화시킨다. 활성화된 인터럽트 요청 신호(nIRQ)는 CPU(미 도시됨)로 제공된다.2, in step S100, the interrupt request signal generator 12 receives the bits of the interrupt register 11 to determine whether an interrupt has occurred. If at least one of the bits of the register 11 is set (i.e., '1') as a result of the determination, the control proceeds to step S101. In step S101, the interrupt request signal generator 12 activates the interrupt request signal nIRQ. The enabled interrupt request signal nIRQ is provided to the CPU (not shown).

동시에 여러 개의 인터럽트 소스들로부터 인터럽트 요청이 있을 때에는 인터럽트 우선 순위에 따라 순차적으로 처리한다. ARM 사에서 생산되는 마이크로 프로세서는 FIQ(fast interrupt request)와 IRQ(slow interrupt request)의 2 가지 인터럽트만을 제공한다. 따라서, 보통 수십 개의 인터럽트 소스가 존재하는 마이크로프로세서는 인터럽트의 개수를 늘리고 인터럽트 우선 순위(priority)를 체크하기 위해 소프트웨어 또는 하드웨어적인 방법을 채용하고 있다. 소프트웨어적인 방법을 사용하는 경우에는 하드웨어 비용면에서 유리하나 그만큼 성능의 저하를 감수해야 하므로 여러 제품에서 하드웨어에 의한 우선 순위 체크가 널리 사용된다. 하드웨어에 의한 인터럽트 우선 순위 체크 방법은 설계 업체마다 다르다. 우선 순위 체크 방법으로는, SFR(special purpose register)로부터 인터럽트 서비스 루틴이 되는 어드레스를 프로그램 카운터 레지스터로 로드하는 방법, 특정 어드레스에 의해 외부 메모리로부터 읽어들어온 명령어를 가로채어 명령어 필드를 조작함으로서 인터럽트 서비스 루틴으로 이동하는 방법 등이 있다.When there are interrupt requests from several interrupt sources at the same time, they are processed sequentially according to the interrupt priority. ARM microprocessors provide only two interrupts: a fast interrupt request (FIQ) and a slow interrupt request (IRQ). Thus, microprocessors, which typically have dozens of interrupt sources, employ software or hardware methods to increase the number of interrupts and check interrupt priority. In the case of using the software method, hardware cost is advantageous, but the performance deterioration has to be so much that priority checking by hardware is widely used in many products. The method of checking interrupt priority by hardware varies from design to design. The priority checking method includes a method of loading an address which becomes an interrupt service routine from a special purpose register (SFR) into a program counter register, an interrupt service routine by intercepting an instruction read from an external memory by a specific address and manipulating an instruction field. How to go to.

인터럽트 컨트롤러(10)로부터 인터럽트 요청 신호(nIRQ)를 받아들인 CPU는 우선 순위에 따라 선택된 인터럽트 소스에 대응하는 인터럽트 서비스 루틴을 수행한다.The CPU that receives the interrupt request signal nIRQ from the interrupt controller 10 performs an interrupt service routine corresponding to the interrupt source selected according to the priority.

단계 S102에서 인터럽트 요청 신호 발생기(12)는 CPU로부터 활성화된 인터럽트 응답 신호(nINTACK)가 수신되는 지를 판별한다. 판별 결과, CPU로부터 활성화된 인터럽트 응답 신호(nINTACK)가 수신되면 그 제어는 단계 S103으로 진행한다. 단계 S103에서 인터럽트 요청 신호 발생기(12)는 인터럽트 요청 신호(nIRQ)를 비활성화시킨다. 한편, CPU에 의해서 현재 서비스되고 있는 인터럽트 소스의 정보는 레지스터(20)에 저장된다.In step S102, the interrupt request signal generator 12 determines whether an interrupt response signal nINTACK activated from the CPU is received. As a result of the determination, when the interrupt response signal nINTACK activated from the CPU is received, the control proceeds to step S103. In step S103, the interrupt request signal generator 12 deactivates the interrupt request signal nIRQ. On the other hand, information on the interrupt source currently being serviced by the CPU is stored in the register 20.

단계 S104에서 가상 인터럽트 발생기(13)는 레지스터(20)에 저장된 현재 인터럽트 소스의 우선 순위보다 한단계 높은 우선 순위를 갖는 가상 인터럽트(V_INT)를 발생한다.In step S104, the virtual interrupt generator 13 generates a virtual interrupt V_INT having a priority higher than the priority of the current interrupt source stored in the register 20.

단계 S105에서 인터럽트 요청 신호 발생기(12)는 가상 인터럽트 발생기(13)로부터의 가상 인터럽트(V_INT)가 입력된 상태에서 인터럽트 레지스터(11)의 비트들 중 어느 하나가 세트되면 우선 순위 비교 동작을 수행한다. 만일 가상 인터럽트 발생기(13)로부터의 가상 인터럽트(V_INT)의 우선 순위가 인터럽트 레지스터(11)의 세트된 비트의 우선 순위보다 낮으면 그 제어는 종료되며, 가상 인터럽트 발생기(13)로부터의 가상 인터럽트(V_INT)의 우선 순위가 인터럽트 레지스터(11)의 세트된 비트의 우선 순위보다 높으면 그 제어는 단계 S106으로 진행한다. 단계 S106에서 인터럽트 요청 신호 발생기(12)는 인터럽트 요청 신호(nIRQ)를 활성화시킨다. 상기 인터럽트 요청 신호(nIRQ)가 활성화됨에 따라 CPU는 현재 서비스 중인 인터럽트를 중지하고 새로운 인터럽트를 서비스하는 인터럽트 네스팅 동작을 수행할 수 있다.In step S105, the interrupt request signal generator 12 performs a priority comparison operation when any one of the bits of the interrupt register 11 is set while the virtual interrupt V_INT from the virtual interrupt generator 13 is input. . If the priority of the virtual interrupt V_INT from the virtual interrupt generator 13 is lower than the priority of the set bit of the interrupt register 11, the control is terminated, and the virtual interrupt from the virtual interrupt generator 13 ( If the priority of V_INT) is higher than the priority of the set bit of the interrupt register 11, the control proceeds to step S106. In step S106, the interrupt request signal generator 12 activates the interrupt request signal nIRQ. As the interrupt request signal nIRQ is activated, the CPU may perform an interrupt nesting operation that stops an interrupt in service and services a new interrupt.

상술한 바와 같은 본 발명의 인터럽트 컨트롤러(10)는 현재 서비스되고 있는 인터럽트에 대한 정보만을 가지고 인터럽트 네스팅이 가능하도록 한다. 따라서, 종래의 인터럽트 서비스 루틴들 각각이 자신보다 우선 순위가 낮은 인터럽트들에 대한 정보를 사전에 알고 있어야 하는 번거러움이 제거되고, CPU가 인터럽트 서비스 루틴을 서비스하기 전에 현재 서비스될 인터럽트 루틴보다 우선 순위가 낮은 인터럽트들을 디세이블하는 동작이 불필요하다.The interrupt controller 10 of the present invention as described above enables interrupt nesting only with information on the interrupt currently being serviced. This eliminates the hassle of each conventional interrupt service routine having to know information about interrupts of lower priority than itself, and has a higher priority than the interrupt routine currently being serviced before the CPU can service the interrupt service routine. There is no need to disable low interrupts.

예시적인 바람직한 실시예를 이용하여 본 발명의 설명하였지만, 본 발명의 범위는 개시된 실시예들에 한정되지 않는다는 것이 잘 이해될 것이다. 오히려, 본 발명의 범위에는 다양한 변형 예들 및 그 유사한 구성들을 모두 포함될 수 있도록 하려는 것이다. 따라서, 청구범위는 그러한 변형 예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.While the invention has been described using exemplary preferred embodiments, it will be understood that the scope of the invention is not limited to the disclosed embodiments. Rather, the scope of the present invention is intended to include all of the various modifications and similar configurations. Accordingly, the claims should be construed as broadly as possible to cover all such modifications and similar constructions.

이와 같은 본 발명에 의하면, 종래의 인터럽트 서비스 루틴들 각각이 자신보다 우선 순위가 낮은 인터럽트들에 대한 정보를 사전에 알고 있어야 하는 번거러움이 제거되고, CPU가 인터럽트 서비스 루틴을 수행하기 전에 현재 수행될 인터럽트 루틴보다 우선 순위가 낮은 인터럽트들을 디세이블하는 동작이 불필요하다.According to the present invention as described above, the inconvenience that each of the conventional interrupt service routines need to know information about interrupts lower than itself in advance is eliminated, and the interrupt to be executed before the CPU performs the interrupt service routine. There is no need to disable interrupts of lower priority than routines.

Claims (5)

프로세서가 소정의 인터럽트 소스로부터의 인터럽트 요청에 응답해서 인터럽트 서비스 루틴을 수행 중일 때 인터럽트 컨트롤러의 제어 방법에 있어서:A method of controlling an interrupt controller when a processor is executing an interrupt service routine in response to an interrupt request from a predetermined interrupt source: 상기 프로세서에 의해 서비스 중인 인터럽트 소스의 우선 순위보다 높은 우선 순위를 갖는 가상 인터럽트를 발생하는 단계; 그리고Generating a virtual interrupt having a priority higher than that of an interrupt source being serviced by the processor; And 상기 인터럽트 소스들 중 상기 가상 인터럽트의 우선 순위보다 높은 우선 순위를 갖는 인터럽트 소스로부터 인터럽트 요청이 있을 때 상기 프로세서로 인터럽트 요청 신호를 활성화시키는 단계를 포함하는 것을 특징으로 하는 인터럽트 컨트롤러의 제어 방법.Activating an interrupt request signal to the processor when an interrupt request is received from an interrupt source having a higher priority than the virtual interrupt among the interrupt sources. 제 1 항에 있어서,The method of claim 1, 상기 가상 인터럽트의 우선 순위는 상기 프로세서의 의해 서비스 중인 인터럽트 소스의 우선 순위보다 한 단계 높은 것을 특징으로 하는 인터럽트 컨트롤러의 제어 방법.The priority of the virtual interrupt is one step higher than the priority of the interrupt source being serviced by the processor. 인터럽트 컨트롤러에 있어서:For interrupt controllers: 복수의 인터럽트 소스들에 각각 대응하는 비트들을 포함하고, 상기 비트들 각각은 대응하는 인터럽트 소스로부터의 인터럽트 요청에 따라 개별적으로 세트되는 제 1 레지스터와;A first register comprising bits corresponding respectively to a plurality of interrupt sources, each of the bits being individually set according to an interrupt request from a corresponding interrupt source; 현재 서비스 중인 인터럽트 소스의 정보를 저장하기 위한 제 2 레지스터와;A second register for storing information of an interrupt source currently in service; 상기 제 2 레지스터에 저장된 상기 현재 서비스 중인 인터럽트 소스의 우선 순위보다 높은 우선 순위를 갖는 가상 인터럽트를 발생하는 가상 인터럽트 발생기; 그리고A virtual interrupt generator for generating a virtual interrupt having a higher priority than a priority of the currently serving interrupt source stored in the second register; And 상기 제 1 레지스터의 상기 비트들과 상기 가상 인터럽트를 받아들이고, 상기 가상 인터럽트보다 우선 순위가 높은 상기 제 1 레지스터의 비트가 세트되었을 때 인터럽트 요청 신호를 활성화시키는 인터럽트 요청 신호 발생기를 포함하는 것을 특징으로 하는 인터럽트 컨트롤러.And an interrupt request signal generator which accepts the bits of the first register and the virtual interrupt and activates an interrupt request signal when a bit of the first register having a higher priority than the virtual interrupt is set. Interrupt controller. 제 3 항에 있어서,The method of claim 3, wherein 상기 인터럽트 요청 신호 발생기는, 상기 가상 인터럽트 발생기로부터 상기 가상 인터럽트가 입력되지 않을 때, 상기 제 1 레지스터의 상기 비트들 중 적어도 하나가 세트될 때 상기 인터럽트 요청 신호를 활성화시키는 것을 특징으로 하는 인터럽트 컨트롤러.And the interrupt request signal generator activates the interrupt request signal when at least one of the bits of the first register is set when the virtual interrupt is not input from the virtual interrupt generator. 제 3 항에 있어서,The method of claim 3, wherein 상기 가상 인터럽트의 우선 순위는 상기 제 2 레지스터에 저장된 상기 현재 서비스 중인 인터럽트 소스의 우선 순위보다 한 단계 높은 것을 특징으로 하는 인터럽트 컨트롤러.The priority of the virtual interrupt is one step higher than the priority of the currently serving interrupt source stored in the second register.
KR1020010068821A 2001-11-06 2001-11-06 Interrupt controller KR20030037572A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010068821A KR20030037572A (en) 2001-11-06 2001-11-06 Interrupt controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010068821A KR20030037572A (en) 2001-11-06 2001-11-06 Interrupt controller

Publications (1)

Publication Number Publication Date
KR20030037572A true KR20030037572A (en) 2003-05-14

Family

ID=29568137

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010068821A KR20030037572A (en) 2001-11-06 2001-11-06 Interrupt controller

Country Status (1)

Country Link
KR (1) KR20030037572A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851384A (en) * 2018-08-21 2020-02-28 北京嘉楠捷思信息技术有限公司 Interrupt processing method, system and computer readable storage medium

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851384A (en) * 2018-08-21 2020-02-28 北京嘉楠捷思信息技术有限公司 Interrupt processing method, system and computer readable storage medium

Similar Documents

Publication Publication Date Title
US5438677A (en) Mutual exclusion for computer system
KR100762388B1 (en) Low-overhead processor interfacing
US6823517B1 (en) Multi-tasking-real-time operating system for microprocessors with limited memory that constrains context switching to occur only at task level
US7962913B2 (en) Scheduling threads in a multiprocessor computer
EP1080422B1 (en) Software configurable technique for prioritizing interrupts in a microprocessor-based system
US7627705B2 (en) Method and apparatus for handling interrupts in embedded systems
US6425038B1 (en) Conversion of desk-top operating system for real-time control using installable interrupt service routines
US4493034A (en) Apparatus and method for an operating system supervisor in a data processing system
EP0943996B1 (en) Processor having real-time execution control for debug functions without a debug monitor
JP4057911B2 (en) Pre-stored vector interrupt processing system and method
WO2008021414A2 (en) Event-based bandwidth allocation mode switching method and apparatus
WO1996035167A1 (en) System and method for providing cooperative interrupts in a preemptive task scheduling environment
EP2077503A1 (en) Interrupt control device of small hardware size which deals with much interrupt processing flexibility
WO1999027434A1 (en) Using firmware to enhance the functionality of a controller
KR100495240B1 (en) Processor system
US7043582B2 (en) Self-nesting interrupts
US7516311B2 (en) Deterministic microcontroller context arrangement
US6990669B1 (en) Real-time scheduler
US5671424A (en) Immediate system management interrupt source with associated reason register
KR20030037572A (en) Interrupt controller
US5713041A (en) Computer system having a host CPU and a logic for integrating peripheral control functions into the host CPU
KR100329780B1 (en) Interrupt processing apparatus reducing interrupt response time
JP2000250762A (en) Microcomputer
CN116361079A (en) Stack switching method, stack switching device, processor and storage medium
JPH0588918A (en) Method of avoiding waste of machine-cycle

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination