KR100329780B1 - 인터럽트 응답 시간을 줄인 인터럽트 처리 장치 - Google Patents

인터럽트 응답 시간을 줄인 인터럽트 처리 장치 Download PDF

Info

Publication number
KR100329780B1
KR100329780B1 KR1019990065845A KR19990065845A KR100329780B1 KR 100329780 B1 KR100329780 B1 KR 100329780B1 KR 1019990065845 A KR1019990065845 A KR 1019990065845A KR 19990065845 A KR19990065845 A KR 19990065845A KR 100329780 B1 KR100329780 B1 KR 100329780B1
Authority
KR
South Korea
Prior art keywords
interrupt
address
code
storage means
normal
Prior art date
Application number
KR1019990065845A
Other languages
English (en)
Other versions
KR20010058509A (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 KR1019990065845A priority Critical patent/KR100329780B1/ko
Publication of KR20010058509A publication Critical patent/KR20010058509A/ko
Application granted granted Critical
Publication of KR100329780B1 publication Critical patent/KR100329780B1/ko

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

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

Abstract

본 발명은 'LJMP' 수행을 거치지 않고 곧바로 실제 인터럽트 서비스 루틴을 수행하여 인터럽트 응답 시간을 줄이고, 전체 인터럽트 처리 속도를 높인 인터럽트 처리 장치를 제공하기 위한 것으로, 이를 위해 본 발명은 다수의 인터럽트에 대해 각각의 인터럽트 서비스 루틴을 수행하는 마이크로컨트롤러를 위한 인터럽트 처리 장치에 있어서, 각 인터럽트 서비스 루틴이 저장되어 있는 프로그램 메모리의 첫번째 어드레스 + 1에 해당되는 인터럽트 어드레스를 저장하는 인터럽트 어드레스 저장 수단; 상기 각 인터럽트 서비스 루틴의 첫번째 명령어 코드를 저장하는 인터럽트 코드 저장 수단; 인터럽트 인에이블 신호에 응답하여 노말 동작 시와 인터럽트 처리 동작 시에 노말 어드레스 또는 인터럽트 플래그에 의해 지정된 상기 인터럽트 어드레스 저장 수단의 인터럽트 어드레스를 선택적으로 출력하는 제1 선택 수단; 및 상기 인터럽트 인에이블 신호에 응답하여 상기 노말 동작 시와 상기 인터럽트 처리 동작 시에 노말 코드 또는 상기 인터럽트 플래그에 의해 지정된 상기 인터럽트 코드 저장 수단의 명령어 코드를 선택적으로 출력하는 제2 선택 수단을 포함하여, 인터럽트 발생 시 인터럽트 종류에 응답하여 상기 제1 선택 수단으로부터 출력되는 인터럽트 어드레스로 프로그램 카운터를 세팅하고, 상기 제2 선택 수단으로부터 출력되는 인터럽트 코드를 명령어 레지스터에 로딩하여, 인터럽트 처리 동작을 수행한다.

Description

인터럽트 응답 시간을 줄인 인터럽트 처리 장치{INTERRUPT PROCESSING APPARATUS REDUCING INTERRUPT RESPONSE TIME}
본 발명은 마이크로컨트롤러 등과 같은 제어 시스템에 관한 것으로, 특히 제어 시스템에서 빈번하게 발생하는 인터럽트(interrupt)를 처리하는 인터럽트 처리 장치에 관한 것이다.
먼저, 마이크로컨트롤러에서 발생된 인터럽트를 처리하는 종래의 과정을 설명한다.
도 1a는 종래의 인터럽트 처리 메카니즘을 개념적으로 도시한 도면이고, 도 1b는 상기 도 1의 처리 메카니즘을 보다 상세히 설명하기 위하여 프로그램 메모리를 도시한 것이다.
먼저, 다수의 인터럽트가 발생되면, 각 인터럽트에 대한 인터럽트 플래그(flag) 및 우선 순위를 체크하여 그 중 하나의 최우선 인터럽트를 선택하고(10, interrupt polling), 하드웨어적으로 선택된 인터럽트의 벡터가 있는 프로그램 메모리의 번지로 점프(jump)하게 된다(12). 여기서, 하드웨어적으로 선택된 인터럽트의 벡터가 있는 프로그램 메모리 번지로 점프하는 것을 'LCALL'이라 하고, 이를 도면에 도시하였다.
그리고, 인터럽트 벡터가 있는 프로그램 메모리의 번지로 점프한 후 해당 인터럽트 벡터에 대한 실제 인터럽트 서비스 루틴이 있는 메모리의 번지로 다시 점프한다(14). 여기서, 실제 인터럽트 서비스 루틴이 있는 메모리 번지로의 점프를'LJMP'라 하고, 이를 도면에 도시하였다.
이어서, 'LJMP'를 통해 실제 인터럽트 서비스 루틴으로 점프한 후 본격적인 인터럽트 서비스 루틴을 수행한다.
도 1b에서는 인터럽트 체크 동작(10)에서 인터럽트 1을 선택하고, 상기 인터럽트 1에 대한 처리 과정을 일예로 도시한 것이다. 즉, 'LCALL'을 통해 인터럽트 1의 벡터가 있는 프로그램 메모리의 번지로 점프하고, 'LJMP'를 통해 인터럽트 벡터 1에 대한 실제 인터럽트 서비스 루틴이 있는 메모리 번지로 점프한다.
상기와 같이 이루어지는 종래의 인터럽트 처리 과정은, 인터럽트의 발생 시 곧바로 실제 인터럽트 서비스 루틴을 수행하지 않고, 'LJMP'를 한번 더 수행한 후에 실제 인터럽트 서비스 루틴을 본격적으로 수행함으로써 인터럽트 응답 시간이 길고, 전체적인 인터럽트 처리 속도가 떨어지는 문제가 있다.
본 발명은 상기 문제점을 해결하기 위하여 안출된 것으로써, 'LJMP' 수행을 거치지 않고 곧바로 실제 인터럽트 서비스 루틴을 수행하여 인터럽트 응답 시간을 줄이고, 전체 인터럽트 처리 속도를 높인 인터럽트 처리 장치를 제공하는데 그 목적이 있다.
도 1a는 종래의 인터럽트 처리 메카니즘을 개념적으로 도시한 도면.
도 1b는 상기 도 1의 처리 메카니즘을 보다 상세히 설명하기 위하여 프로그램 메모리를 도시한 도면.
도 2는 본 발명의 일실시예에 따른 인터럽트 처리 장치에 대한 블록도.
도 3은 본 발명의 다른 실시예에 따른 인터럽트 처리 장치에 대한 블록도.
* 도면의 주요 부분에 대한 설명
100 : 인터럽트 어드레스 레지스터 파일
120 : 인터럽트 코드 레지스터 파일
140, 160 : 멀티플렉서
180 : 프로그램 카운터
200 : 명령어 레지스터
220 : 명령어 큐
상기 목적을 달성하기 위한 본 발명은, 다수의 인터럽트에 대해 각각의 인터럽트 서비스 루틴을 수행하는 마이크로컨트롤러를 위한 인터럽트 처리 장치에 있어서, 각 인터럽트 서비스 루틴이 저장되어 있는 프로그램 메모리의 첫번째 어드레스 + 1에 해당되는 인터럽트 어드레스를 저장하는 인터럽트 어드레스 저장 수단; 상기 각 인터럽트 서비스 루틴의 첫번째 명령어 코드를 저장하는 인터럽트 코드 저장 수단; 인터럽트 인에이블 신호에 응답하여 노말 동작 시와 인터럽트 처리 동작 시에 노말 어드레스 또는 인터럽트 플래그에 의해 지정된 상기 인터럽트 어드레스 저장 수단의 인터럽트 어드레스를 선택적으로 출력하는 제1 선택 수단; 및 상기 인터럽트 인에이블 신호에 응답하여 상기 노말 동작 시와 상기 인터럽트 처리 동작 시에 노말 코드 또는 상기 인터럽트 플래그에 의해 지정된 상기 인터럽트 코드 저장 수단의 명령어 코드를 선택적으로 출력하는 제2 선택 수단을 포함하여, 인터럽트 발생 시 인터럽트 종류에 응답하여 상기 제1 선택 수단으로부터 출력되는 인터럽트 어드레스로 프로그램 카운터를 세팅하고, 상기 제2 선택 수단으로부터 출력되는 인터럽트 코드를 명령어 레지스터에 로딩하여, 인터럽트 처리 동작을 수행하는 것을 특징으로 한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다.
도 2는 본 발명의 일실시예에 따른 인터럽트 처리 장치에 대한 블록도로서, 각 인터럽트 서비스 루틴이 저장되어 있는 프로그램 메모리의 첫번째 어드레스 + 1에 해당되는 인터럽트 어드레스를 저장하는 프로그램 가능한 인터럽트 어드레스 레지스터 파일(Programmable Interrupt Address Register File, 이하 PIARF라 함)(100), 각 인터럽트 서비스 루틴의 첫번째 명령어 코드를 저장하는 프로그램 가능한 인터럽트 코드 레지스터 파일(Programmable Interrupt Code Register File, 이하 PICRF라 함)(120), 인터럽트 인에이블 신호에 응답하여 노말(normal) 동작 시와 인터럽트 처리 동작 시에 노말 어드레스 또는 인터럽트 플래그에 의해 지정된 상기 PIARF(100)의 인터럽트 어드레스를 선택적으로 출력하는 멀티플렉서(140) 및 인터럽트 인에이블 신호에 응답하여 노말(normal) 동작 시와 인터럽트 처리 동작 시에 노말 코드 또는 인터럽트 플래그에 의해 지정된 상기 PICRF(120)의 명령어 코드를 선택적으로 출력하는 멀티플렉서(160)로 이루어진다. 이때 멀티플렉서(140)로부터 출력되는 어드레스는 프로그램 카운터(180)로 출력되고, 멀티플렉서(160)로부터 출력되는 코드는 명령어 레지스터(200)로 출력되어 인터럽트 발생 시 인터럽트 종류에 따라 명령어 레지스터(200)에는 인터럽트 플래그에 의해 지정된 PICRF(120)의 코드가 로딩되고, 프로그램 카운터(180)에는 인터럽트 플래그에 의해 지정된 PIARF(100)의 인터럽트 어드레스로 세팅된다.
상기와 같이 구성된 본 발명의 인터럽트 처리 장치에 대한 구체적인 동작을 아래에 설명한다.
먼저, 정상적인 노말 명령어의 수행시에는 인터럽트 인에이블 신호가 디스에이블되어 멀티플렉서(140, 160)로부터 각각 노말 어드레스 및 노말 코드가 선택되어 출력된다. 그에 따라, 프로그램 카운터(180)와 명령어 레지스터(200)는 노말 어드레스 및 노말 코드를 각기 입력받아 정상적인 프로그램을 수행한다.
다음으로, 인터럽트가 발생하면 해당 인터럽트의 종류와 인터럽트 우선 순위에 따라 결정된 최우선 순위의 인터럽트에 대한 인터럽트 플래그 신호(Interrupt_Flag[n:0])가 PIARF(100) 및 PICRF(120)로 입력되고, 입력된 인터럽트 플래그 신호(Interrupt_Flag[n:0])에 응답하여 해당 인터럽트 어드레스와 인터럽트 코드가 PIARF(100) 및 PICRF(120)로부터 출력된다. PIARF(100) 및 PICRF(120)로부터 각기 출력된 인터럽트 어드레스 및 인터럽트 코드는 인터럽트 인에이블신호에 의해 멀티플렉서(140, 160)에서 선택되어 프로그램 카운터(180) 및 명령어 레지스터(200)로 출력됨으로써 프로그램 카운터(180)에 세팅된 인터럽트 어드레스와 명령어 레지스터(200)에 저장된 인터럽트 코드에 따라 인터럽트 서비스 루틴이 수행된다.
따라서, 인터럽트 처리 동작 시에 'LJMP'를 수행하지 않고 인터럽트 서비스 루틴으로 곧바로 가 인터럽트 처리를 수행할 수 있다.
도 3은 본 발명의 다른 실시예에 따른 인터럽트 처리 장치에 대한 블록도로서, 명령어 파이프 라인 구조에 적용한 것이다.
도 3에 도시된 바와 같이, 본 발명의 다른 인터럽트 처리 장치는 상기 도 2의 구조와 동일하되, 명령어 파이프 라인 구조에 따라 명령어 큐(instruction queue, 220)를 더 포함하여 이루어진다.
일반적으로, 코드 페치 사이클이 긴 명령어 파이프 라인 구조에서 인터럽트가 걸리게 되면, 파이프 라인이 깨지게 된다. 따라서, 이러한 파이프 라인의 깨짐을 방지하기 위하여 본 발명의 인터럽트 처리 장치에 명령어 큐(220)를 더 구비하여 노말 코드를 입력받아 미리 저장하여 계속적으로 명령어를 실행할 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
상기와 같이 이루어지는 본 발명은, 'LJMP' 수행을 거치는 종래와 다르게 프로그램 가능한 어드레스 및 코드 레지스터 파일과, 노말 동작 및 인터럽트 동작 시 선택적으로 노말 어드레스 및 코드 또는 인터럽트 어드레스 및 코드를 출력하는 멀티플렉서를 구비하여 'LJMP' 수행을 거치지 않고 곧바로 실제 인터럽트 서비스 루틴을 수행함으로써 인터럽트 응답 시간을 줄이고, 전체 인터럽트 처리 속도를 높일 수 있다.
또한, 명령어 코드에 대한 페치 사이클이 긴 경우에 본 발명을 적용하여 파이프라인의 깨짐을 방지함으로써 전체 시스템의 효율을 향상시킬 수 있는 효과가 있다.

Claims (4)

  1. 다수의 인터럽트에 대해 각각의 인터럽트 서비스 루틴을 수행하는 마이크로컨트롤러를 위한 인터럽트 처리 장치에 있어서,
    각 인터럽트 서비스 루틴이 저장되어 있는 프로그램 메모리의 첫번째 어드레스 + 1에 해당되는 인터럽트 어드레스를 저장하는 인터럽트 어드레스 저장 수단;
    상기 각 인터럽트 서비스 루틴의 첫번째 명령어 코드를 저장하는 인터럽트 코드 저장 수단;
    인터럽트 인에이블 신호에 응답하여 노말 동작 시와 인터럽트 처리 동작 시에 노말 어드레스 또는 인터럽트 플래그에 의해 지정된 상기 인터럽트 어드레스 저장 수단의 인터럽트 어드레스를 선택적으로 출력하는 제1 선택 수단; 및
    상기 인터럽트 인에이블 신호에 응답하여 상기 노말 동작 시와 상기 인터럽트 처리 동작 시에 노말 코드 또는 상기 인터럽트 플래그에 의해 지정된 상기 인터럽트 코드 저장 수단의 명령어 코드를 선택적으로 출력하는 제2 선택 수단을 포함하여,
    인터럽트 발생 시 인터럽트 종류에 응답하여 상기 제1 선택 수단으로부터 출력되는 인터럽트 어드레스로 프로그램 카운터를 세팅하고, 상기 제2 선택 수단으로부터 출력되는 인터럽트 코드를 명령어 레지스터에 로딩하여, 인터럽트 처리 동작을 수행하는 것을 특징으로 하는 인터럽트 처리 장치.
  2. 제 1 항에 있어서, 상기 인터럽트 어드레스 저장 수단 및 상기 인터럽트 코드 저장 수단은 각각,
    프로그램 가능한 레지스터 파일을 포함하여 이루어지는 것을 특징으로 하는 인터럽트 처리 장치.
  3. 다수의 인터럽트에 대해 각각의 인터럽트 서비스 루틴을 수행하는 파이프라인 구조의 마이크로컨트롤러를 위한 인터럽트 처리 장치에 있어서,
    각 인터럽트 서비스 루틴이 저장되어 있는 프로그램 메모리의 첫번째 어드레스 + 1에 해당되는 인터럽트 어드레스를 저장하는 인터럽트 어드레스 저장 수단;
    상기 각 인터럽트 서비스 루틴의 첫번째 명령어 코드를 저장하는 인터럽트 코드 저장 수단;
    파이프라인 동작에 응답하여 노말 코드를 미리 페치하여 저장하는 노말 코드 저장 수단;
    인터럽트 인에이블 신호에 응답하여 노말 동작 시와 인터럽트 처리 동작 시에 노말 어드레스 또는 인터럽트 플래그에 의해 지정된 상기 인터럽트 어드레스 저장 수단의 인터럽트 어드레스를 선택적으로 출력하는 제1 선택 수단; 및
    상기 인터럽트 인에이블 신호에 응답하여 상기 노말 동작 시와 상기 인터럽트 처리 동작 시에 상기 노말 코드 저장 수단으로부터의 노말 코드 또는 상기 인터럽트 플래그에 의해 지정된 상기 인터럽트 코드 저장 수단의 명령어 코드를 선택적으로 출력하는 제2 선택 수단을 포함하여,
    인터럽트 발생 시 인터럽트 종류에 응답하여 상기 제1 선택 수단으로부터 출력되는 인터럽트 어드레스로 프로그램 카운터를 세팅하고, 상기 제2 선택 수단으로부터 출력되는 인터럽트 코드를 명령어 레지스터에 로딩하여, 파이프라인 구조에서 파이프라인의 깨짐없이 인터럽트를 처리하는 것을 특징으로 하는 인터럽트 처리 장치.
  4. 제 3 항에 있어서, 상기 인터럽트 어드레스 저장 수단 및 상기 인터럽트 코드 저장 수단은 각각,
    프로그램 가능한 레지스터 파일을 포함하여 이루어지는 것을 특징으로 하는 인터럽트 처리 장치.
KR1019990065845A 1999-12-30 1999-12-30 인터럽트 응답 시간을 줄인 인터럽트 처리 장치 KR100329780B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990065845A KR100329780B1 (ko) 1999-12-30 1999-12-30 인터럽트 응답 시간을 줄인 인터럽트 처리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990065845A KR100329780B1 (ko) 1999-12-30 1999-12-30 인터럽트 응답 시간을 줄인 인터럽트 처리 장치

Publications (2)

Publication Number Publication Date
KR20010058509A KR20010058509A (ko) 2001-07-06
KR100329780B1 true KR100329780B1 (ko) 2002-03-25

Family

ID=19633011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990065845A KR100329780B1 (ko) 1999-12-30 1999-12-30 인터럽트 응답 시간을 줄인 인터럽트 처리 장치

Country Status (1)

Country Link
KR (1) KR100329780B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111045730B (zh) * 2019-12-12 2023-07-21 南京沁恒微电子股份有限公司 一种用于risc-v架构的硬件快速中断处理系统及其方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1040115A (ja) * 1996-07-25 1998-02-13 Nec Eng Ltd 割込み処理システム
KR19990015316A (ko) * 1997-08-05 1999-03-05 윤종용 인터럽트 처리 방법
US5953535A (en) * 1997-03-28 1999-09-14 International Business Machines Corporation Using intelligent bus bridges with pico-code to service interrupts and improve interrupt response
KR19990037242U (ko) * 1998-03-02 1999-10-05 김영환 고속 인터럽트 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1040115A (ja) * 1996-07-25 1998-02-13 Nec Eng Ltd 割込み処理システム
US5953535A (en) * 1997-03-28 1999-09-14 International Business Machines Corporation Using intelligent bus bridges with pico-code to service interrupts and improve interrupt response
KR19990015316A (ko) * 1997-08-05 1999-03-05 윤종용 인터럽트 처리 방법
KR19990037242U (ko) * 1998-03-02 1999-10-05 김영환 고속 인터럽트 장치

Also Published As

Publication number Publication date
KR20010058509A (ko) 2001-07-06

Similar Documents

Publication Publication Date Title
JP5680679B2 (ja) 例外イベントを取り扱うための装置および方法
US20200364054A1 (en) Processor subroutine cache
US5471595A (en) Asynchronous interrupt inhibit method and apparatus for avoiding interrupt of an inseparable operation
EP0378425A2 (en) Branch instruction execution apparatus
US8589664B2 (en) Program flow control
US10430192B2 (en) Vector processing using loops of dynamic vector length
KR940009095B1 (ko) 데이터 처리시스템
EP0777877B1 (en) Processing system, processor, memory storing instruction stream and compiler
JPH01310441A (ja) データ処理装置
IL256717A (en) Data processing
AU9466998A (en) Method for improved interrupt handling within a microprocessor
KR100329780B1 (ko) 인터럽트 응답 시간을 줄인 인터럽트 처리 장치
US6775740B1 (en) Processor having a selector circuit for selecting an output signal from a hit/miss judgement circuit and data from a register file
KR19990072645A (ko) 프로그램제어유닛의명령페치장치및방법
JP2591200B2 (ja) プログラム先取り装置
JPS60231241A (ja) プログラム先行フエツチ制御方式
JP3100705B2 (ja) マイクロプロセッサ内の命令準備のための装置
EP4193250B1 (en) Processing apparatus
KR100654477B1 (ko) 프로세서 동작 방법
JPH0342723A (ja) データ処理装置
JPH0287229A (ja) 実行命令の先取り制御方式
JPS6116334A (ja) デ−タ処理装置
JP2583614B2 (ja) ベクトル演算装置
JPS6152747A (ja) マイクロプロセツサ
JPS638841A (ja) 割込み受取り装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20050221

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee