KR100329780B1 - 인터럽트 응답 시간을 줄인 인터럽트 처리 장치 - Google Patents
인터럽트 응답 시간을 줄인 인터럽트 처리 장치 Download PDFInfo
- 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
Links
- 230000004044 response Effects 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
Classifications
-
- 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
- G06F9/4818—Priority circuits therefor
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction 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)를 처리하는 인터럽트 처리 장치에 관한 것이다.
먼저, 마이크로컨트롤러에서 발생된 인터럽트를 처리하는 종래의 과정을 설명한다.
도 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 선택 수단; 및상기 인터럽트 인에이블 신호에 응답하여 상기 노말 동작 시와 상기 인터럽트 처리 동작 시에 노말 코드 또는 상기 인터럽트 플래그에 의해 지정된 상기 인터럽트 코드 저장 수단의 명령어 코드를 선택적으로 출력하는 제2 선택 수단을 포함하여,인터럽트 발생 시 인터럽트 종류에 응답하여 상기 제1 선택 수단으로부터 출력되는 인터럽트 어드레스로 프로그램 카운터를 세팅하고, 상기 제2 선택 수단으로부터 출력되는 인터럽트 코드를 명령어 레지스터에 로딩하여, 인터럽트 처리 동작을 수행하는 것을 특징으로 하는 인터럽트 처리 장치.
- 제 1 항에 있어서, 상기 인터럽트 어드레스 저장 수단 및 상기 인터럽트 코드 저장 수단은 각각,프로그램 가능한 레지스터 파일을 포함하여 이루어지는 것을 특징으로 하는 인터럽트 처리 장치.
- 다수의 인터럽트에 대해 각각의 인터럽트 서비스 루틴을 수행하는 파이프라인 구조의 마이크로컨트롤러를 위한 인터럽트 처리 장치에 있어서,각 인터럽트 서비스 루틴이 저장되어 있는 프로그램 메모리의 첫번째 어드레스 + 1에 해당되는 인터럽트 어드레스를 저장하는 인터럽트 어드레스 저장 수단;상기 각 인터럽트 서비스 루틴의 첫번째 명령어 코드를 저장하는 인터럽트 코드 저장 수단;파이프라인 동작에 응답하여 노말 코드를 미리 페치하여 저장하는 노말 코드 저장 수단;인터럽트 인에이블 신호에 응답하여 노말 동작 시와 인터럽트 처리 동작 시에 노말 어드레스 또는 인터럽트 플래그에 의해 지정된 상기 인터럽트 어드레스 저장 수단의 인터럽트 어드레스를 선택적으로 출력하는 제1 선택 수단; 및상기 인터럽트 인에이블 신호에 응답하여 상기 노말 동작 시와 상기 인터럽트 처리 동작 시에 상기 노말 코드 저장 수단으로부터의 노말 코드 또는 상기 인터럽트 플래그에 의해 지정된 상기 인터럽트 코드 저장 수단의 명령어 코드를 선택적으로 출력하는 제2 선택 수단을 포함하여,인터럽트 발생 시 인터럽트 종류에 응답하여 상기 제1 선택 수단으로부터 출력되는 인터럽트 어드레스로 프로그램 카운터를 세팅하고, 상기 제2 선택 수단으로부터 출력되는 인터럽트 코드를 명령어 레지스터에 로딩하여, 파이프라인 구조에서 파이프라인의 깨짐없이 인터럽트를 처리하는 것을 특징으로 하는 인터럽트 처리 장치.
- 제 3 항에 있어서, 상기 인터럽트 어드레스 저장 수단 및 상기 인터럽트 코드 저장 수단은 각각,프로그램 가능한 레지스터 파일을 포함하여 이루어지는 것을 특징으로 하는 인터럽트 처리 장치.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045730B (zh) * | 2019-12-12 | 2023-07-21 | 南京沁恒微电子股份有限公司 | 一种用于risc-v架构的硬件快速中断处理系统及其方法 |
Citations (4)
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 | 김영환 | 고속 인터럽트 장치 |
-
1999
- 1999-12-30 KR KR1019990065845A patent/KR100329780B1/ko not_active IP Right Cessation
Patent Citations (4)
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 |