KR0185979B1 - 디지탈 데이타 프로세서 및 그 동작 방법 - Google Patents
디지탈 데이타 프로세서 및 그 동작 방법 Download PDFInfo
- Publication number
- KR0185979B1 KR0185979B1 KR1019900020364A KR900020364A KR0185979B1 KR 0185979 B1 KR0185979 B1 KR 0185979B1 KR 1019900020364 A KR1019900020364 A KR 1019900020364A KR 900020364 A KR900020364 A KR 900020364A KR 0185979 B1 KR0185979 B1 KR 0185979B1
- Authority
- KR
- South Korea
- Prior art keywords
- interrupt
- register
- coupled
- interrupt request
- type
- Prior art date
Links
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
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Bus Control (AREA)
Abstract
정규 작업시 사용되는 언프라임 레지스터, 인터럽트시 사용되는 프라임 레지스터, 정규 작업 및 평범 인터럽트 작업시 사용되는 정규 레지스터 세트, 신속 인터버리트 작업시 사용되는 대체 레지스터 세트 및 메모리 스택을 포함하는 마이크로 프로세서, 세개의 상태 비트는 하나 또는 그 이상의 신속 인터럽트가 개시되었으나 끝나지 않은것, 신속 인터럽트가 일어나나 처리되고 있는 다른 신속 인터럽트가 없는 것, CPU가 현재 신속 인터럽트를 처리하고 있자는 것을 나타내는데 사용된다. 이 상태 비트는 리커션 재퍼디가 있는지를 나타내고, 리커션을 방지하기 위해 정규 및 대체 레지스터 세트와 메모리 스택 사이의 정보의 흐름을 제어하는데 사용된다.
Description
제1a도는 본 발명의 특정한 실시예를 포함하는 디지탈 데이터 프로세서 시스템의 간이 기능 블록도.
제1b도는 제1a도의 디지탈 데이터 처리 시스템내에 들어있는 레지스터의 다이어그램.
제1c도는 제1b도에 보이는 두개의 특정한 레지스터내에 들어있는 비트의 다이어그램.
제2도는 본 장치 및 발명을 이용하여 인터럽트 네스팅 예를 도시하는 흐름도.
제3a, b도는 여러가지 상태를 구별하기 위해 상태 비트를 사용하고 디지탈 데이터 프로세서가 인터럽트 처리를 다루고 리커션 제퍼디를 피할 수 있는 두가지 가능한 방법을 나타내는 상태도.
* 도면의 주요부분에 대한 부호의 설명
10 : 디지탈 데이터 프로세서 시스템 12 : 반도체 칩
16 : 정규 레지스터 18 : 대체 레지스터
20 : 언프라임 레지스터 22 : 프라임 레지스터
24: 기타의 레지스터 40 : 버스
50 : 외부 메모리 스택
본 발명은 일반적으로 리커션 제퍼디(recursion jeopardy)를 방지하기 위한 방법 및 장치에 관한 것이다. 특히, 본 발명은 인터럽트와 같은 이례적인 처리를 다루고 마이크로 프로세서에서 리커션 제퍼디를 방지하기 위한 방법 및 장치에 관한 것이다.
마이크로 프로세서 및 그밖의 디지탈 프로세서의 같은 장치에서, 중앙 처리 장치(CPU)는 처리 작업에 이용된다. CPU는 정규 작업 및 이례적인 처리시에 해당분야에 숙련된 사람에게 공지된 방법으로 CPU에 의해 이용되는 칩내 레지스터(on-chip register)를 포함한다. 선행 작업이 인터럽트 작업과 같은 이례적인 처리에 의해 중단될때마다, 인터럽트 처리 프로그램은 동일한 레지스터를 사용하여 그안의 어떤 값을 변경시킬 수도 있기 때문에 리커션 제퍼디 문제가 있다. 문제에 대한 종래의 해결 방법은 인터럽트의 처리를 시작하기 전에 레지스터의 일부 또는 전부의 현재 값을 메모리에 기억시키고(스택킹이라고도 한다.) 인터럽트 처리가 끝나면 메모리로부터 기억된 값을 도로 레지스터 안으로 읽어들이는 것이다. (언스택킹이라고도 한다.) 이 해결 방법은 시간이 소요되고 비교적 광범위한 소프트웨어 지원을 요한다. 그러나, 이 해결 방법은 이론적으로 제한되지 않은 수의 네스트된(nested) 인터럽트 (즉, 다른 인터럽트 프로그램은 중지시키는 인터럽트)를 다룰 수 있는 능력이 있다.
어떤 마이크로 프로세서는 인터럽트 처리중에 사용되는 여러가지의 또다른 칩내 레지스터 세트(레지스터 뱅크라고 알려져 있다)를 제공한다. 인터럽트 프로그램은 중단된 프로그램이 사용하고 있던 것이 아닌 다른 레지스터 세트를 단지 사용함으로써 레지스터 내용을 스택할 필요가 없어진다. 이 해결책은 네스트된 인터럽트의 문제가 고려될때는 실리콘 면적의 관점에서는 비용이 많이 든다. 합리적인 수의 네스트된 인터럽트를 가능케하기 위해 필요한 모든 레지스터를 중복시키는데도 비합리적인 수의 레지스터를 요하게 된다.
게다가, 다수의 레지스터 뱅크를 갖는 기계에 있어서도, 모든 뱅크가 언제 사용될 것인지(리커션 제퍼디가 언제 존재하는지)를 결정하고 문제에 어떤 해결방법을 제공하기 위해서, 어떤 메커니즘이 제공되어야만 한다.
마이크로 프로세서 및 기타 유사한 것에서 리커션 제퍼디를 방지하기 위한 방법 및 장치를 제공하는 것이 본 발명의 목적이다.
마이크로 프로세서 및 기타 유사한 것에서 리커션 제퍼디를 방지하기 위한 방법 및 장치를 제공하는 것이 본 발명의 목적이다.
마이크로프로세서 및 기타 유사한 것에서 리커션 제퍼디를 나타내기 위한 장치를 제공하는 것이 본 발명의 또다른 목적이다.
제한된 수의 칩내 레지스터를 이용하여 제한되지 않은 수의 네스트된 인터럽트에 대비하는 것이 본 발명의 또다른 목적이다.
이러한 그리고 다른 목적은 제1레지스터 뱅크, 제2레지스터 뱅크, 제1상태 비트(status bit), 제2상태 비트 및 인터럽트 신호를 받는 인터럽트 논리를 포함하는 디지탈 데이타를 처리하기 위한 프로세서 시스템에서 실현된다. 수신된 인터럽트 신호가 제1 형인가 또는 제2형인가에 따라서 그리고 두 상태 비트의 값에 따라서, 인터럽트 논리는 뱅크 전환 동작을 할 것인지 스택킹 동작을 할 것인지를 결정하고, 또한 제1 및 제2상태 비트에 대해서 새로운 값을 선정한다.
본 발명의 이러한 그리고 다른 목적 및 장점은 아래의 상세한 설명에 의해 해당 분야에 숙련된 사람에게는 명백할 것이다.
용어 세트(set) 및 클리어(clear)는 상태 비트 또는 유사한 장치를 논리적 진리 상태 또는 논리적 허위 상태로 되게 하는 것을 가리킬때 사용될 것이다.
제1a도를 참고하면, 이 단순화된 형태에서 정규 레지스터 세트(16), 대체 레지스터 세트(18), 언프라임 레지스터(20), 프라임 레지스터(22) 기타의 레지스터(24)를 포함하는 CPU(14)를 갖는 반도체 칩(12)를 구비하는 디지탈 데이터 프로세서 시스템(10)이 도시되어 있다. CPU는 칩내에 있지 않은 메모리 스택(50)에 또한 연결되는 버스(40)에 연결된다. 물론, 어떤 특별한 프로세서 시스템에서는 메모리 스택(50) 및 버스 (40)가 칩내에 포함될 수도 있고 칩밖의 메모리 스택은 단지 예로서 도시되어 있는 것으로 이해하여야 한다. 또한, 메모리스택(50)은 버스(40)에 대한 악세스 동작을 요하고 버스(40)를 통해 메모리 스택을 악세스하는 것은 비교적 느린 동작이지만 레지스터 세트를 악세스하는 것은 고속도 동작이라는 것을 이해하여야 한다. 따라서, 처리중에는 레지스터 세트를 가능한한 많이 이용하고 꼭 필요한 때에만 메모리 스택을 이용하는 것이 바람직하다.
디지탈 데이터 프로세서 시스템(10)에는 주어진 인터럽트가 다른 인터럽트에 대해 우선 순위(priority)를 가지고 있나를 결정하는 다수의 인터럽트 레벨이 있다.
이리하여 더 높은 우선 순위를 갖는 인터럽트는 처리를 기다려야만 하는 더 낮은 우선 순위를 갖는 인터럽트보다 더 빨리 처리를 받게 된다. 인터럽트 우선 순위의 개념은 해당 분야에 숙련된 사람에게는 잘 알려져 있다. 이 특정한 실시예는 다수의 인터럽트가 동일한 레지스터 자원을 사용하려고 할 때 일어날 수 있는 리커션 제퍼디를 취급하고 있지만, 공개된 발명은 어떤 형의 집적 회로상의 어떤 기억 장치 수단에서도 리커션 제퍼디를 방지하는데 사용될 수도 있다는 것을 이해하도록 한다.
디지탈 데이터 프로세서 시스템(10)은 두가지 형의 인터럽트를 이용한다 : 평범 인터럽트(conventional interrupt) 및 신속 인터럽트(fast interrupt). 인터럽트의 형은 인터럽트 처리 루우틴이 정규 레지스터 세트(16)를 사용하게 되느냐 또는 대체 레지스터 세트(18)를 사용하게 되느냐를 결정한다. 평범 인터럽트는 정규 레지스터 세트(16)를 사용하게 되고 신속 인터럽트는 대체 레지스터 세트(18)을 사용하게 된다. 인터럽트 형은 우선순위 방안에는 영향을 미치지 않는다. 평범 인터럽트는 정규 작업 또는 더 낮은 우선 순위 레벨을 갖는 다른 인터럽트를 중단시킨다. 마찬가지로, 신속 인터럽트는 정규 작업 또는 더 낮은 우선 순위 레벨을 갖는 다른 인터럽트를 중단시킨다.
제1b도를 참고하면, 정규 레지스터 세트(16)은 여덟개의 데이터 레지스터(D0 내지 D7) 및 여덟개의 어드레스 레지스터(A0 - A7)으로 구성되는데, 마지막 어드레스 레지스터(A7)은 또한 사용자 스택 포인터(user stack pointer)의 역할도 한다. 대체 레지스터 세트(18)는 정규 레지스터 세트(16)의 레지스터를 중복한 것이다.
CPU는 정규 레지스터 세트(16) 또는 대체 레지스터 세트(18)을 악세스하고 사용하나, 양 레지스터 세트를 동시에 사용하지는 않는다. CPU에 대한 소프트웨이를 작성하는 사용자의 관점에서는, 어느 레지스터 세트가 사용되는지는 상대적으로 알 수 없다. 즉, 사용자는 특정한 명령이 데이터 레지스터(D2)를 오퍼랜드(operand)의 출처 또는 동작의 목적지로 사용할 것을 그저 지시할 따름이다. 하드웨어가 정규 세트(16)의 (D2)레지스터가 악세스될 것인지 또는 대체 세트(18)의 (D2) 레지스터가 악세스될 것인지를 결정할 것이다. 모토로라사의 68000 계열의 마이크로 프로세스(예를들면, MC68000, MC68010, MC68020 및 MC68030 인데 모두 텍사스, 오스틴에 있는 모토로라사로부터 입수 가능하다)의 사용자에게는 잘 알려져 있는 대로, CPU는 사용자 모우드(user mode) 또는 수퍼바이저 모우드 (supervisor mode)로 동작한다. 동작의 모우드는 상태 레지스터(status register, SR) 에 놓여지는 비트에 의해 제어된다.
다시 제1b도를 참고하면, 언프라임 레지스터(20)은 상태 레지스터(SR), 콘택스트 스위치 제어 레지스터(context switch control register, CSC)(31) 및 프로그램 카운터(PC)로 구성되어 있다. 제1도는 참고하면, 프라임 레지스터(22)는 CSC레지스터(31)에 있는 FO(신속 인터럽트 발생)상태
비트(26), FF(첫째 신속 인터럽트) 상태 비트(28), CF(현재 신속 인터럽트)상태 비트(30)을 제외하고는 언프라임 레지스터(20)를 중복한 것이다. FO 상태 비트(26), FF 상태 비트 (28) 및 CF 상태 비트는 중복되어 있지 않다.
CPU는 언프라임 레지스터(20) 또는 프라임 레지스터(22)를 악세스하고 사용하나, 양 레지스터 세트를 동시에 사용하지는 않는다. CSC 레지스터(31) 또는 CSC' 레지스터(32)에 대한 악세스는 동일한 FO 상태 비트(26), FF 상태 비트(28) 및 CF 상태 비트(30)가 악세스되는 결과가 된다. 그러나 A/N 비트(34)는 중복된다. 여러가지 비트의 구별(identity) 및 사용은 아래에서 설명한다.
제1c도를 참고하면, A/N 비트(34)는 CSC 레지스터(31)에 놓인다. 중복의 A/N' 비트(36)은 CSC' 레지스터(32)에 놓인다. CPU(14)가 언프라임 레지스터(20)을 사용하고 있을때는, A/N 비트(34)만 악세스될 수 있다. 유사하게, CPU가 프라임 레지스터(22)를 사용하고 있을때는, A/N'비트(36)만 악세스될 수 있다. A/N 비트(34)도 A/N'비트(36)도 사용자 모우드에서 소프트웨이에 의해 악세스될 수 없지만, 그러나 CPU(14) 하드웨어는 언제나 이 비트의 상태를 읽을 수 있다. 이 특정한 실시예에서, A/N 비트(34) 또는 A/N' 비트(36)은 수퍼바이저 모우드에서 CPU로 하여금 해당되는 정규 레지스터(16) 또는 대체 레지스터(18) 세트를 사용하도록 하는 제어 비트로서 악세스 될 수 있다. 이것은 본 발명을 실행하는데는 요하지 않는 추가적인 특징이다.
그래서 명료하게 하기 위해서, 나머지 설명에서는 A/N비트(34) 및 A/N'비트(36)는 CPU(14) 하드웨어에 의해 읽혀지기만 하는 상태 비트로 사용되는 것으로 가정한다.
A/N비트(34) 또는 A/N'비트(36)는 CPU(14)가 현재 정규 레지스터 세트(16)를 사용하고 있는지 또는 대체 레지스터 세트(18)를 사용하고 있는지를 표시한다. 0의 값은 대체 레지스터 세트(18)를 사용하고 있는 것을 표시하고, 1의 값은 정규 레지스터 세트(16)가 사용되고 있는 것을 표시한다. A/N 비트(32) 또는 A/N' 비트(36)가 정규 레지스터 세트(16) 또는 대체 레지스터 세트(18)의 정보와 함께 스택되면, CPU(14) 하드웨어 또는 소프트웨어 루우틴은 언스택할때 정보가 정규 레지스터 세트(16)에 복귀되어야 하는지 또는 대체 레지스터 세트(18)에 복귀되어야 하는지를 결정하는데 A/N 비트(34) 또는 비트 A/N'(36)를 사용할 수 있다.
언프라임 레지스터(20)는 신속 인터럽트가 처리를 시작하지 않았을때에만 사용될 수 있다. 일단 신속 인터럽트가 수신되고 처리를 시작하면, 프라임 레지스터(22)가 첫번째 신속 인터럽트 및 새로 수신되는 신속 또는 평범 인터럽트에 전적으로 사용된다. CPU(14)는, 첫번째 신속 인터럽트가 완료됐고 처리할 신속 인터럽트가 더이상 없을때까지 언프라임 레지스터(20)의 사용으로 돌아가지 않는다. 또한, 더 높은 우선 순위의 인터럽트의 처리를 중단시킬때마다, A/N' 비트(36), FO 상태 비트(26), FF 상태 비트(28)및 CF 상태 비트(30)을 포함하고 있는 프라임 레지스터(22)는 CPU(14)하드웨어에 의해 자동적으로 메모리 스택(50)에 스택된다.
이 스택킹은 프라임 레지스터(22)가 더 낮은 우선 순위 인터렙트의 처리를 완료하는데 필요한 정보를 가지고 있기 때문에 반드시 필요로 한다.
이 특정한 실시예에서는, 정규(16) 및 대체(18) 레지스터 세트에 비해서, 언프라임(20) 및 프라임(22) 레지스터 사이에는 중요한 차이가 있다. CPU(14)는 일단 신속 인터럽트가 수신되어 인터럽트 처리중에는 내내 프라임 레지스터를 사용하나 이에 반하여 (14)는 인터럽트형에 따라 인터럽트 처리중에 정규 레지스터 세트(16) 또는 대체 레지스터 세트(18)중 어느 것이나 사용할 수 있다. 이 차이는 이 특정한 실시예에서 편의상 만들었다. 언프라임(20) 및 프라임(22) 레지스터를 구비하는 레지스터는 새로운 더 높은 우선 순위의 인터럽트가 수신되면 언제나 스택되어야만 하는 정보를 가지고 있는 레지스터이기 때문에, 이 특정한 실시예에서 CPU(14)는 소프트웨어 처리 시간을 절약하기 위해 리커션 제퍼디가 있을때는 레지스터를 자동적으로 스택한다. 그 반면에, 정규(16) 및 대체(18) 레지스터 세트는, 새로운 더 높은 우선 순위 인터럽트가 특정 레지스터에 있는 정보를 변경시키는 것이라면 특정 레지스터만 스택되는 것을 요하는 데이터 및 어드레스 레지스터이다. 이와같이 정규(16) 및 대체(18) 레지스터 세트에 있는 레지스터의 스택킹은, 불필요한 스택킹에 허비되는 처리 시간이 없도록 소프트웨어 제어를 사용하여 프로그래머에게 맡겨질 수 있다.
제1b도를 참고하면, 기타의 레지스터(24)는 중복이 되지 않고, CPU(14)가 정규 작업을 수행하든지 또는 인터럽트 처리를 수행하든지 이에 상관없이 언제라도 CPU(14)에 의해 사용될 수 있는 레지스터로 구성되어 있다.
중복이 없기 때문에, 인터럽트 루우틴이 기타의 레지스터(24)중 어느것에 있는 데이터에 영향을 미치게 될때는 언제나 인터럽트 루우틴은 영향을 미치게 될 레지스터를 스택하여야만 한다. 기타의 레지스터(24)중 하나 또는 그 이상을 사용하는 소프트웨이 루우틴이 기타의 래지스터(24)중 하나 또는 그 이상을 사용하는 또다른 소프트웨어 루우틴을 중지시킬 가능성이 있으면, 반드시 리커션 제퍼디의 가능성이 있다. 기타의 레지스터(24)에 대한 리커션 제퍼디 문제를 다루는데 조력하는 상태 비트 또는 제어 회로는 없다. 리커션 제퍼디가 실지로 있는지 또는 그렇지 않는지를 결정하는 방법이 없기 때문에, 기타의 레지스터(24)를 사용하는 각 소프트웨어 루우틴은 반드시 리커션 제퍼디가 있다고 가정하여 중단시키는 소프트웨어 루우틴이 영향을 미치게 될 기타의 레지스터(24)를 스택하여야만 한다. 이 특정한 실시예에서, 기타의 레지스터(24)는 CPU(14)가 수퍼바이저 모우드에 있을때만 사용되는 레지스터이다. 기타의 레지스타(24)는 대부분의 응용에서 스택될 필요가 거의 없는 레지스터이며, 이리하여 레지스터를 중복하여 실리콘 면적을 낭비할 이유가 없었고, CPU가 이 레지스터를 자동적으로 스택하게 하여 처리 시간을 허비할 이유가 없었다.
설명된 레지스터는 세 부류인 것이 명백하다 : 중복되며 반드시 자동적으로 스택되는 레지스터(언프라임 및 프라임 레지스터), 중복되지만 필요할때만 소프트 웨어 제어하에서 스택되는 레지스터(정규 및 대체 레지스터) 및 중복되지 않고 필요할때만 소프트웨어 제어하에서 스택되는 레지스터(기타의 레지스터). 본 발명을 사용할 수 있는 많은 다른 레지스터 형태가 있다는 것을 이해하도록 한다.
본 명세서에서 설명되는 레지스터 형태는 사용될 수 있는 많은 가능한 레지스터 형태중의 한 형태일 뿐이다.
예를들면, 위의 설명은 다수의 레지스터 뱅크 경우에도 용이하게 확장될 수 있다. 이경우, 리커션 제퍼디가 일어나기 전에 여러 네스트된 인터럽트가 있을 수 있다. 그러나, 원리는 같다. 또한, 정보를 메모리 스택(50)에 스택하거나 또는 언스택하는데 소프트웨어 명령을 사용할 수도 있고 CPU(14)의 하드웨어를 사용할 수도 있다는 것을 이해하여야 한다.
제1c도를 참고하면, FO 상태 비트(26), FF 상태 비트(28), 및 CF 상태 비트(30)은 모두 CPU(14)의 동작에 의해 자동적으로 세트되는 읽을 수만 있는 상태 비트이다.
세개의 상태 비트중 제1인 FO(신속 인터럽트 발생)(26)는 하나 또는 그 이상의 신속 인터럽트가 개시되었으나 아직 완료되지 않았으면 세트되어 있다. 이 비트는 본 시스템에서 리커션 제퍼디를 나타내고 모든 현재의 신속 인터럽트 처리의 종료와 더불어 클리어될때까지 세트된 채로 있다. 세개의 상태 비트중 제2인 FF (첫째 신속 인터럽트((28)는 신속 인터럽트가 생기고 처리되고 있는 다른 신속 인터럽트가 없을 때 (즉 첫번째 신속 인터럽트이다.) 세트된다. 이것은 첫째 신속 인터럽트후에 잇따르는 모든 인터럽트에 대해서 클리어된다. 세개의 상태 비트중 제3인 CF(현재 신속 인터럽트)(30)는 CPU(14)가 신속 인터럽트 모우드의 작업에 있는 동안만 세트되어 있다. CF 상태 비트(30)은 처리되고 있는 인터럽트가 평범 인터럽트인지 또는 신속 인터럽트인지를 단정하기 위해 하드웨어 및 소프트웨어에 의해 사용될 수 있다. 이와같이, 세개의 상태 비트, 즉 FO 상태 비트(26), FF 상태 비트(28) 및 CF 상태 비트(30)는 정규 레지스터 세트(16), 대체 레지스터 세트(18), 언프라임 레지스터(20) 및 프라임 레지스터(22)의 리커션 제퍼디의 상태에 관한 정보를 발생하고 유지한다. 상태 비트는 CPU(14)에 의해 감시될 수 있으며 프로그래밍시 정규 레지스터세트(16), 대체 레지스터 세트(18), 언프라임 레지스터(20), 프아임 레지스터(22) 및 메모리 스택(50)의 최적 사용을 제공하는데 이용될 수 있다.
정규 레지스터 세트(16)는 정규 작업 및 평범 인터럽트에 이용되고 대체 레지스터 세트(18)는 신속 인터럽트에 이용되는 본 실시예에서, 한 인터럽트가 또다른 인터럽트에 의해 중단되면 리커션 제퍼디가 일어날 수 있다. 왜냐하면 두번째 인터럽트는 첫번째 인터럽트와 같이 동일한 레지스터를 레지스터내의 정보를 기억시키지 않고 이용하려고 하기 때문이다. 인터럽트에 관한 상태를 제공함으로써, 소프트웨어는 레지스터 세트의 일부 또는 전부에 기억되어 있는 정보가 메모리 스택(50)에 기억되어야만 하는지를 검출하도록 앞서 기억된 정보는 언스택되어 하나 또는 그이상의 레지스터에 복귀되어야만 하는지를 검출하도록, 무슨 형의 인터럽트가 현재 처리되고 있는지를 검출하도록 작성될 수 있다. 평범 인터럽트가 정규 작업시에 수신되면 리커션 제퍼디가 또한 있다.
왜냐하면 평범 인터럽트의 처리는 동일한 정규 레지스터세트(16) 및 동일한 프라임 레지스터(22)를 사용하기 때문이다. 첫번째 신속 인터럽트가 수신될때는 리커션 제퍼디가 없다. 왜냐하면 첫번째 신속 인터럽트는 CPU(14)로 하여금 처음으로 정규 레지스터(16)의 사용에서 대체 레지스터의 사용으로 전환시키고 그리고 언프라임 레지스터(20)의 사용에서 프라임 레지스터(22)의 사용으로 전환시키기 때문이다.
이 특정한 실시예에서, CPU(14) 하드웨어는 언프라임 레지스터(20)와 프라임 레지스터(22) 사이에서 전환할 것인지 또는 프라임 레지스터(22)를 스택하고 나서 프라임 레지스터(22)를 사용할 것인지를 결정하기 위해 밀려있는 인터럽트의 인터럽트형과 함께 FO 상태 비트(26), FF 상태 비트(28) 및 CF 상태 비트 (30)을 사용한다. 이 결정은 또한 소프트웨어로 달성될 수 있겠습니다. 이 특정한 실시예에서, CPU(14)는 첫번째 신속 인터럽트가 수신되면 프라임 레지스터(22)를 사용하는 것으로 전환한다. 추가의 신속 또는 평범 인터럽트가 첫번째 신속 인터럽트가 처리를 끝내기 전에 수신되면, CPU는 프라임 레지스터(22)를 계속해서 사용할 것이다. CPU(14)는 밀려있는 신속 인터럽트 루우틴 모두가 처리를 끝낼때까지 언프라임 래지스터(20)을 사용하는 것으로 다시 전환하지 않는다.
CPU(14) 하드웨어는 정규 레지스터 세트(16) 또는 대체 래지스터 세트(18)에 있는 어느 레지스터도 스택하지 않는다. 필요로 하는 이 래지스터의 스택킹은 소프트웨어에서 수행하도록 사용자에게 맡겨진다. 그러나, CPU(14) 하드웨어 루우틴은 CPU(14)가 정규 작업중이냐, 여러 평범 인터럽트를 처리하고 있느냐 또는 신속 인터럽트를 처리하고 있느냐에 기초하여 언프라임 레지스터(20)와 프라임 레지스터(22) 사이에서 절환할것인지를 결정한다.
이번에도, 한 세트의 레지스터를 스택할 것인지 또는 다른 세트의 레지스터로 전환 할 것인지의 결정은 소프트웨어 또는 CPU(14) 하드웨어를 사용하여 달성될 수 있었습니다.
정규 레지스터 세트(16)는 평범 인터럽트뿐만 아니라 정규 작업에도 이용되기 때문에, 훼손될 수도 있는 정보는 평범 인터럽트 핸들러 루우틴의 첫번째 동작으로 정규 레지스터 세트(16)로부터 스택되어야만 한다. 그러나 대체 레지스터 세트(18)는 신속 인터럽트에만 이용되기 때문에, 처리되는 첫번째 신속 인터럽트에 대해서는 대체 레지스터 세트(18)로부터 정보가 스택될 필요가 없다.
그러나 일단 신속 인터럽트가 대체 레지스터 세트(18)를 이용하여 처리되고 있으면, 더 높은 우선 순위를 갖는 신속 인터럽트가 현재의 신속 인터럽트를 중단시키고 동일한 레지스터 세트를 사용하려고 할 수도 있기 때문에 리커션 제퍼디가 있다. 따라서, 더 높은 우선 순위의 신속 인터럽트가 수신되고 처리가 끝나지 않은 신속 인터럽트가 아직 하나 또는 그 이상 있으면, 훼손될 수도 있는 정보는 반드시 대체 레지스터 세트(18)로부터 스택되어야만 한다.
앞에서 기술된 것처럼, FO 상태 비트(26)는 하나 또는 그 이상의 신속 인터럽트가 개시되었으나 아직 끝나지 않은 것을 나타낸다. FO 상태 비트(26)는 모든 신속 인터럽트의 처리가 끝날때까지 세트된 채로 있고 클리어 되지 않는다. 상태 비트(26)는 이와같이 대체 레지스터 세트(18) 및 프라임 레지스터(22)에 대해서 리커션 제퍼디가 있을 것인지 또는 그렇지 않을 것인지를 결정하는데 사용될 수 있다. 리커션 제퍼디가 있고 들어오는 인터럽트가 신속 인터럽트이면, 대체 레지스터 세트(18) 및 프라임 레지스터(22)의 스택킹을 필요로 한다. CPU회로 자체가 레지스터 정보의 모두 또는 일부를 스택할 것인지 또는 스택킹은 소프트웨어 명령을 사용하여 수행을 사용자에게 맡겨질 것인지는 선택적인 것이다.
FF 상태 비트 (28)는 FO 상태 비트 (26)의 이전 상태가 현재 말려있는 신속 인터럽트가 없다는 것을 나타내는 클리어된 상태일때에만 생기는 첫번째 신속 인터럽트에 대해서만 세트된다. FO 상태 비트 (26)는 FF 또한 상태 비트 (28)를 세트하면 첫번째 신속 인터럽트에 의해서도 세트되므로, 첫번째 신속 인터럽트가 끝나기전에 개시되는 더 높은 우선 순위 레벨을 갖는 어떤 신속 인터럽트도 리커션 제퍼디 상황을 일으킬 것이므로 대체 레지스터 세트(18)에 위치한 첫번째 신속 인터럽트의 정보는 인터럽트 핸들러 루우틴의 첫번째 동작으로 스택되는(즉 메모리 스택(50)에 이송되는 것)을 필요로 한다. FO 상태 비트(26), FF 상태 비트 (28), CF 상태 비트 (30) 및 A/N' 비트 (36)를 포함하는 프라임 레지스터(22)의 정보도 또한 스택된다. 두번째 신속 인터럽트 작업을 끝내고 나면, 첫번째 신속 인터럽트 작업에 대한 상태 비트 정보는 언스택되고(메모리 스택(50)으로부터 꺼내어진다.) 첫번째 신속 인터럽트 작업이 재개된다.
첫번째 신속 인터럽트는 FF 상태 비트(28)가 세트되는 유일한 신속 인터럽트이다. 그밖의 모든 신속 인터럽트의 처리시에는, FF 상태 비트(28)는 클리어될 것이다.
따라서, 상태 비트(28)는 밀려있는 신속 인터럽트가 더이상 있는지 또는 그렇지 않은지를 그리고 하나 또는 그 이상의 신속 인터럽트의 정보가 스택에 남아있는지 또는 그렇지 않은지를 결정하는데 사용될 수 있다. CPU(14)회로 자체가 레지스터 정보의 모두 또는 일부를 언스택할 것인지 또는 언스택킹은 소프트웨어 명령을 사용하여 수행을 사용자에게 맡길 것인지는 선택적인 것이다.
CF 상태 비트(30)는 신속 인터럽트가 현재 처리되고 있다는 것을 나타내는데 사용된다. CF 상태 비트(30)는 CPU(14)가 현재 신속 인터럽트를 처리하고 있을때 세트되어 있고, 신속 인터럽트가 안료될 때 또는 더 높은 우선 순위 레벨의 평범 인터럽트가 신속 인터럽트를 증지시키고는 현재 처리되고 있을때 클리어된다.
물론, 동작을 메모리 스택(50)에 기억시키는 요구를 줄이기 위해 추가 레지스터 세트가 반도체 칩(10)에 제공될 수 있다는 것을 해당 분야에 숙련된 사람은 잘 이해할 것이다. 그러나, 문제는 재공된 레지스터 세트의 수와 상관없이, 여분의 레지스터 세트가 스택킹하지 않고 수용할 수 있는 것보다 하나 더 많은 네스트된 인터럽트의 레벨의 항상 있을 수 있다. 스택킹을 필요로 하지 않을 정도로 많은 레지스터 세트를 제공하는 것은 거의 효율적이지 않다. 높은 레벨의 네스팅이 드물게 생기면, 발표된 두개의 칩내의 레지스터 세트를 제공해하고 네스팅시에 메모리 스택(50)을 사용하는 것이 일반적으로 훨씬 효율적이다. 이 예에서 정규 레지스터 세트(16)및/ 또는 대체 레지스터 세트(18)에 있는 정보는 네스팅이 생기지 않으면 메모리 스택(50)에 기억될 필요가 없겠으므로 인터럽트 작업시 메모리 스택에 기억시키고 또는 메모리 스택으로부터 복귀시키는 것과 관련된 오버헤드(overhead)의 대부분이 제거될 것이다.
이 생각을 N개의 레지스터 세트에 확장하면, N개의 인터럽트 네스팅이 있었고 네스팅에서 N+1번째 인터럽트가 이전 인터럽트 작업이 메모리 스택에 기억될 것을 요구한다면 리커션에 대한 제퍼디가 있을 것이다. 이 경우에 첫번째 상태 비트는 적어도 N개의 네스트된 인터럽트가 처리중에 있음 (또는 리커션 해저드(recursion hazard)을 나타내겠고 CPU가 또다른 레지스터 뱅크로 전환하여야 하는지 또는 레지스터의 전부가 사용중인지 CPU는 레지스터 뱅크를 사용하기 전에 더 많은 시간이 소요되는 스택킹 과정을 하여야만 하는지를 나타내겠습니다.
두번째 상태 비트는 CPU가 이제 더 이상 미루어진 인터럽트가 없다는 것을 알게 되도록 어떤 인터럽트가 첫번째 인터럽트 였나를 나타내겠습니다. 추가 상태 비트는 다수 형태의 인터럽트가 있으면 선택적으로 사용될 수 있겠습니다. 예를들면, 제3 상태 비트는 CPU가 현재 평범 인터럽트를 처리하고 있는지 또는 신속 인터럽트를 처리하고 있는지를 나타내는데 사용될 수 있겠습니다. 이 비트들의 조작은, 처음의 인터럽트에 대해서 첫째 인터럽트 상태 비트가 세트되고 N번째 네스팅이 있고 나서 리커션 해저드 상태 비트가 세트되는 바와같이 마찬가지가 되겠습니다. 리커션 해저드 상태 비트는 적어도 N개의 네스트된 인터럽트가 처리중에 있는 동안은 계속해서 세트된 채로 있을 것이다. 첫째 인터럽트 상태 비트는 잇따르는 인터럽트에 의해서 또는 첫째 인터럽트 상태 비트의 세트를 일으킨 첫번째 인터럽트의 완료에 의해서 클리어될 것이다.
특히 제2도를 참고하면, 인터럽트 네스팅 예에 대한 흐름도가 도시되어 있다. 이 예에서, 정규 작업은 우선 순위 레벨 W 를 갖는 신속 인터럽트에 의해 중단된다.
이것은 첫번째 신속 인터럽트이기 때문에, CPU(14)는 언프라임 레지스터(20)의 사용으로부터 프라임 레지스터(22)의 사용으로 전환한다. 대체 레지스터 세트(18)는 신속 인터럽트 작업에 이용되고 현재로서는 리커션 제퍼디가 없으므로, CPU(14)을 스택하지 않으나 그대신 레지스터 뱅큰를 전환하고 레벨 W 신속 인터럽트의 시작전에 대체 레지스터 세트(18)을 선정한다. 또한 이것은 첫번째 신속 인터럽트이고 CPU(14)는 현재 신속 인터럽트 모우드에 있으므로, FO 상태 비트(26), FF 상태 비트 (28) 및 CF 상태 비트 (30)는 모두 세트된다.
레벨 W 신속 인터럽트 작업이 끝나기도 전에, (우선 순위 레벨 W보다 큰) 우선 순위 레벨 X를 갖는 신속 인터럽트가 요구되고 이어서 개시된다. 대체 레지스터 세트(18)은 들어오는 인터럽트가 신속 인터럽트이기 때문에 이네이블된 채로 있다. CPU(14) 하드웨어는 레벨W 인터럽트와 관련된 정보를 프라임 레지스터(22)로부터 메모리 스택(50)에 스택한다.
사용자는, 소프트웨어로, 새로운 인터럽트 X에 의해 훼손될 수도 있는 레벨 W 인터럽트와 관련된 어떤 정보도 대체 레지스터 세트(18)로부터 메모리 스택(50)에 스택하는 선택을 갖는다. CPU(14)는 그리고나서 레벨 X 신속 인터럽트 동작을 시작할 수 있다. FF 상태 비트 (28)는 CPU(14)는 더이상 첫번째 신호 인터럽트를 처리하고 있지 않으므로 클리어된다. 그러나, FO상태 비트 (26) 및 CF 상태 비트 (30)는 신속 인터럽트가 개시되었으나 끝나지 않았고 CPU(14)는 현재 신속 인터럽트를 처리하고 있기 때문에 세트된 채로 있다.
레벨 X 신속 인터럽트 작업이 끝나기도 전에, (우선 순위 레벨 X보다 큰) 우선 순위 레벨 y를 갖는 평범 인터럽트가 요구된다. CPU(14) 하드웨어는 레벨 x 인터럽트와 관련된 정보를 프라임 레지스터(22)로부터 메모리 스택 (50)에 스택한다. 정규 레지스터 세트 (16)가 모든 평범 인터럽트에 사용되기 때문에 CPU는 대체 레지스터 세트(18)의 사용으로부터 정규 레지스터 세트(16)의 사용으로 전환한다. 사용자는, 소프트웨어로, 새로운 인터럽트 y에 의해 훼손될 수도 있는 정규 작업과 관련된 어떤 정보도 정규 레지스터 세트(18)로부터 메모리 스택(50)에 스택하는 선택을 갖는다. 레벨 y평범 인터럽트의 개시와 더불어, 상태 비트 (30)는 CPU(14)가 현재 평범 인터럽트를 처리하고 있기 때문에 클리어된다.
레벨 y 평범 인터럽트 작업이 끝나기도 전에, (우선 순위 레벨 y보다 큰) 우선 순위 레벨 z를 갖는 신속 인터럽트가 요구된다. CPU(14) 하드웨어는 레벨 y 인터럽트와 관련된 정보를 프라임 레지스터(22)로부터 메모리 스택(50)에 스택한다. 대체 레지스터 세트(18)가 모든 신속 인터럽트에 사용되기 때문에 CPU(14)는 정규 레지스터 세트(22)의 사용으로부터 대체 레지스터 세트(18) 사용으로 전환한다. 사용자는, 소프트웨어로, 새로운 인터럽트 z에 의해 훼손될 수도 있는 레벨 x인터럽트와 관련된 어떤 정보도 대체 레지스터 세트(18)로부터 메모리 스택(50)에 스택하는 선택을 갖는다. CPU(14)는 레벨 z 신속 인터럽트 동작을 개시하고 CF 상태 비트 (30)는 CPU(14)가 현재 신속 인터럽트를 처리하고 있으므로 다시 세트된다.
추가 인터럽트가 요구되지 않고 CPU(14)는 레벨 z 신속 인터럽트 작업을 완료하도록 허용된다. 사용자가, 소프트웨어로, 레벨 z 인터럽트 처리의 처음에서 레벨 x 신속 인터럽트 작업과 관련된 어떤 정보를 스택하면, 레벨 x 신속 인터럽트 작업과 관련된 그 정보는 레벨 z 인터럽트 처리의 끝에서 언스택되어 복귀되어야만 하는 것을 유의한다. 일단 레벨 z 신속 인터럽트 작업이 끝났으면, 레벨 y 평범 인터럽트 작업과 관련된 정보는 메모리 스택(50)으로부터 언스택되어 프라임 레지스터(22)에 실리게 된다. CF 상태 비트 (30)는 남아있는 인터럽트가 평범 인터럽트이고 정규 레지스터 세트(16)를 사용해야 하는지 또는 신속 인터럽트이고 대체 레지스터 세트(18)를 사용해야 하는지를 결정하는데 사용될 수 있다.
언스택된 CF 상태 비트(30)는 다음의 인터럽트가 평범 인터럽트(레벨 y)인 것을 나타내고 이 작업에 대한 정보가 여전히 정규 레지스터(16)에 있으므로, CPU(14)는 정규 레지스터 세트(16)를 이네이블하고 레벨 y 평범 인터럽트 작업을 계속한다.
레벨 y 평범 인터럽트의 완료전에, 사용자는, 소프트웨어로, 이전에 스택된 정규 작업과 관련된 어떤 정보도 메모리 스택(50)으로부터 정규 레지스터 세트(16)에 언스택하여야 한다. 일단 레벨 y 평범 인터럽트가 끝났으면, 레벨 x 신속 인터럽트 작업과 관련된 메모리 스택(50)에 기억되어 있는 정보는 프라임 레지스터(22)에 도로 이송된다. CF 상태 비트 (30)의 언스택된 값은 남아있는 인터럽트가 신속 인터럽트인 것을 나타내기 때문에, 레벨 x 신속 인터럽트 작업과 관련된 하여금 정보를 포함하고 있는 대체 레지스터 세트(18)가 이네이블되고 레벨 x 신속 인터럽트 작업이 계속된다.
레벨 x 인터럽트 루우틴의 끝에서, 사용자는, 소프트웨어로, 앞서 스택되었던 레벨 w 신속 인터럽트 작업과 관련된 어떤 정보도 메모리 스택(50)으로부터 대체 레지스터 세트 (18)에 언스택하여야만 한다. 일단 레벨 x 신속 인터럽트 작업이 끝났으면, 레벨 w 신속 인터럽트 동작과 관련된 정보는 메모리 스택 (50)으로부터 언스택되어 프라임 레지스터(22)에 실린다. 언스택된 CF 상태 비트(30)는 다음의 인터럽트가 신속 인터럽트(레벨 w)인 것을 나타내고 이 작업에 대한 정보는 이미 대체 레지스터 세트(18)에 놓여 있으므로, CPU(14)는 대체 레지스터 세트(18)을 이네이블 상태로 유지하고 레벨 w 신속 인터럽트 작업을 계속한다. FF 상태 비트 (28)는 레벨 w 신속 인터럽트에 대해서 세트되어 있기 때문에, 이 인터럽트가 처리중에 있는 마지막 남아있는 신속 인터럽트인 것을 알 수 있다.
일단 레벨 w 첫번째 신속 인터럽트가 완료되었으면, CPU(14)는 먼 프라임 레지스터(20)의 사용으로 도로 전환한다. 첫번째 신속 인터럽트 작업은 언제나 대체 레지스터 세트(18) 및 프라임 레지스터(22)를 사용하는 첫번째 프로세스이기 때문에 어떤 스택킹도 할 필요가 없다. 첫번째 신속 인터럽트 작업의 완료와 함께, CPU(14)는 정규 작업으로 돌아갈 수 있다. 정규 레지스터 세트(16)는 이미 정규 작업과 관련된 정보를 가지고 있고 CPU(14)가 정규 작업을 재개하면서 이네이블되기만 하면 된다.
위에서 설명된 네스팅 과정을 통해서 상태 비트 FO(26), FF(28) 및 CF(30)은 CPU(14)의 현재 상태 및 네스팅 과정의 진행을 나타내는데 이용되었다. 그밖에, 세상태 비트, 네스팅 과정 및 정규 레지스터 세트(16), 대체 레지스터 세트(18), 언프라임 레지스터(20), 프라임 레지스터(22) 및 메모리 스택(50)의 내용 사이의 상관 관계를 알 수 있다. 정규 레지스터 세트 (16), 대체 레지스터 세트(18), 언프라임 레지스터(20), 프라임 레지스터(22) 및 메모리 스택 (50)의 내용 및 동작은 상태 비트 FO(26), FF(28) 및 CF(30)의 사용에 의해 간단하고 효율적으로 제어될 수 있다는 것을 해당 분야에 숙련된 사람은 잘 알 수 있을 것이다.
제3a도 및 제3b도를 참고하면, 이 도면은 리커션 제퍼디를 다루는데 사용될 수 있는 상태 비트에 대한 2가지 가능한 상태도이다. 제3a도는 본 명세서에 기술된 대로 FO 상태 비트(26), FF 상태 비트 (28) 및 CF 상태 비트(30)를 이용하는 양호한 실시예의 상태도(40)이다.
화살표는 인터럽트의 발생을 표시한다. 특정한 인터럽트의 처리가 완료될때, 이전 인터럽트에 대한 상태 비트는 복귀되고 이리하여 CPU(14)는 이전상태로 되돌아 간다.
상태(0)은 신속 인터럽트가 진행중이 아닌 상태를 나타낸다. 상태 (111)은 단 하나의 신속 인터럽트만 일어났고 그리고 가장 가까이 일어난 인터럽트가 신속 인터럽트인 상태를 나타낸다. 상태 (101)은 2 이상의 신속 인터럽트가 일어났고 그리고 가장 가까이 일어난 인터럽트가 신속 인터럽트인 상태를 나타낸다. 상태(110)은 단 하나의 신속 인터럽트가 일어났고 그리고 가장 가까이 일어난 인터럽트가 평범 인터럽트인 상태를 나타낸다. 상태 (100)은 2 이상의 신속 인터럽트가 일어나고 그리고 가장 가까이 일어난 인터럽트가 평범 인터럽트인 상태를 나타낸다. 이 특정한 상태 및 상응하는 비트 표현은 소프트웨어의 프로그래밍의 편의를 위해 선택된 것이고 다른 상태 및 다른 비트 표현도 또한 가능하다.
제3b도는 참고하면, 상태도(50)는 두개의 상태 비트만을 사용하여도 리커션 제퍼디를 다루는 것이 또한 가능할 것이다는 것을 도시한다. 리세트에서 나와서, 두상태 비트는 상태(0)에서 시작하겠습니다. 평범 인터렙트는 상태 비투에 변화를 일으키지 않겠습니다만, 신속 인터럽트는 상태 비트의 값을 1로 바꾸게 되었습니다. 일단 상태 (1)에서, 신속 인터럽트는 상태 비트의 값을 10로 바꾸겠고 평범 인터럽트는 상태 비트의 값을 11로 바꾸게 되었습니다. 상태(10)에서, 신속 인터럽트는 상태 비트의 값을 11로 바꾸겠습니다. 상태 11에서, 평범 인터럽트는 상태 비트의 값을 바꾸지 않겠지만, 신속 인터럽트는 상태 비트의 10로 바꾸게 되었습니다. CPU(14) 하드웨어 또는 소프트웨어 프로그래머는 리커션 제퍼디가 있었는지 또는 그렇지 않은지 인터럽트가 첫번째 신속 인터럽트였는지, 가장 최근의 인터럽트가 신속 인터럽트였는지 또는 평범 인터럽트였는지를 두 상태 비트의 값을 봄으로써 언제나 판별할 수 있겠습니다. 상태(0)는 신속 인터럽트에 대한 리커션 제퍼디가 없는 유일한 상태이다. 상태 (1)은 현재의 인터럽트가 첫번째 신속 인터럽트인 것을 나타낸다.
상태(1) 및 (10)은 신속 인터럽트만에 대한 것이고 상태(0) 및 (11)은 평범 인터럽트만에 대한 것이다.
본 발명은 다음의 경우를 결정하기 위한 메커니즘을 제이기함으로써 리커션 제퍼디에 처할 수 있는 자원의 이용 및 사용을 가능케 한다 : (1) 자원을 이용하려는 어떤 추가 기도도 리커시브 제한을 받지 않는 유사한 자원으로 돌려지도록 리커션 재퍼디가 언제 일어날 것인가; (2) 리커션 문제의 잠재성을 가졌던 자원이 다시 이용될 수 있도록 당장의 리커션 문제의 제퍼디로부터의 회복이 언제 있게 되는가, 이것은, 리커션 제퍼디에 처하기 쉽더라도 리커션 재퍼디를 가지지 않는 제2 자원보다 더 높은 성능의 해결을 제공하는 자원의 이용을 가능케 한다. 더욱이, 본 발명 때문에, 고성능 자원이 리커션 제퍼디의 더 예의적인 경우를 해결하면서 전체적인 시스템 성능 향상을 제공하는 정도의 충분한 깊이를 가지도록 장치가 구성될 수 있습니다.
본 발명의 특정한 실시예를 보여주고 기술하였지만, 추가 변경 및 개선이 해당 분야에 숙련된 사람에게 생각날 것이다. 따라서, 본 발명은 보이는 특정 형태에 제한되지 않는다고 이해해 주기를 바라며 첨부된 청구항에서 본 발명의 정신과 범위를 벗어나지 않는 모든 변경을 포함할 생각이다.
Claims (3)
- 버스: 상기 버스에 결합된 제1레지스터 세트; 상기 버스에 결합된 제2레지스터 세트; 상기 버스에 결합된 제1스타터스 비트; 상기 버스에 결합된 제2스타터스 비트; 상기 제1 및 제2레지스터 세트를 하나씩 활용하도록 버스에 결합된 중앙 처리 장치 수단; 상기 중앙 처리 장치에 결합되며 또한 제1형의 인터럽트 요구를 수신하는 제1인터럽트 요구 신호 콘덕터에 결합된 제1인터럽트 수단; 상기 중앙 처리 장치에 결합되며 또한 제2형의 인터럽트 요구를 수신하는 제2인터럽트 요구 신호 콘덕터에 결합된 제2인터럽트 수신 수단; 제1 및 제2스타터스 비트와 제1 및 제2인터럽트 수신 수단에 결합되며, 제1 또는 제2인터럽트 수신 수단에 의한 인터럽트 요구의 수신에 응답하여 그 인터럽트 요구가, 제1형인지 제2형인지, 제2스타터스 비트가 제1상태에 있는지 제2상태에 있는지, 또한 제2스타터스 비트가 제1상태에 있는지 제2상태에 있는지를 결정하는 상태 결정수단; 및 상기 상태 결정 수단과 중앙 처리 장치 수단에 결합되며, 제1 또는 제2인터럽트 수신 수단에 의한 인터럽트 요구의 수신에 응답하여 중앙 처리 장치 수단에 의한 활용을 위해 제1 및 제2레지스터 세트중 하나를 선택하는 레지스터 선택 수단을 구비하며, 상기 레지스터 선택 수단에 의한 선택은 상태 결정 수단의 결정에 증속되는 것을 특징으로 하는 디지탈 데이터 프로세서,
- 버스; 상기 버스에 결합되며 제1레지스터 서브세트와 제2레지스터 서브세트를 구비하는 제1레지스터 세트; 상기 버스에 결합되며 제3레지스터 서브세트와 제2레지스터 서브세트를 구비하는 제2레지스터 세트; 상기 버스에 결합된 제1스타터스 비트; 상기 버스에 결합된 제2스타터스 비트; 상기 버스에 결합되어 제1 및 제2레지스터 세트를 하나씩 활용하는 중앙 처리 장치 수단; 상기 중앙 처리 장치에 결합되며 또한 제1형의 인터럽트 요구를 수신하는 제1 인터럽트 요구 신호 콘덕터에 결합된 제1인터럽트 수신 수단; 상기 중앙 처리 장치에 결합되며 또한 제2형의 인터럽트 요구를 수신하는 제2인터럽트 요구 신호 콘덕터에 결합된 제2인터럽트 수신 수단; 제1 및 제2스타터스 비트와 제1 및 제2인터럽트 수신 수단에 결합되며 제1 또는 제2인터럽트 수신 수단에 의한 인터럽트 요구의 수신에 응답하여 그 인터럽트 요구가 제1형인지 제2형인지, 제1스타터스 비트가 제1상태에 있는지 제2상태에 있는지, 또한 제2스타터스 비트가 제1상태에 있는지 제2상태에 있는지를 결정하는 상태 결정 수단; 및 상기 상태 결정 수단과 중앙 처리 장치 수단에 결합되며 제1 또는 제2인터럽트 수신 수단에 의한 인터럽트 요구의 수신에 응답하여 중앙 처리 장치 수단에 의한 활용을 위해 제1 및 제3레지스터 서브세트 중 하나와 제2 및 제4레지스터 서브세트중 하나를 선택하는 레지스터 세트 선택 수단을 구비하며, 상기 레지스터 세트 선택 수단에 의한 선택은 상태 결정 수단의 결정에 종속되는 것을 특징으로 하는 디지탈 데이터 프로세서.
- 제1레지스터 세트를 활용하는 비인터럽트 프로세싱을 수행하는 단계; 제1형의 인터럽트 요구 수신 단계; 제2형의 인터럽트 요구 수신 단계; 조건적으로 상기 비인터럽트 프로세싱을 중단하는 단계와 제1형의 인터럽트 요구의 수신하에 인터럽트 프로세싱을 시작하는 단계; 조건적으로 상기 비인터럽트 프로세싱을 중단하는 단계와 제2형의 인터럽트 요구의 수신하에 인터럽트 프로세싱을 시작하는 단계; 제2형의 인터럽트 요구가 수신되었는지 및 완료되지 않았는지의 여부와, 제2형의 인터럽트 요구가 현재 프로세스되고 있는지의 여부에 따라 제1 및 제2스타터스 비트를 세팅 및 클리어링 하는 단계; 및 인터럽트 프로세싱을 시작하면 제1레지스터 세트와 대안 레지스터 세트중 하나를 선택하는 단계를 구비하며, 상기 선택 단계의 결과는 인터럽트 프로세싱의 시간이 제1형의 인터럽트 요구에 의한 것인지 제2형의 인터럽트 요구에 의한 것인지에 종속되며 또한 제1 및 제2스타터스 비트의 상태에 종속되는 것을 특징으로 하는 디지탈 데이터 프로세서 동작 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/461,587 US5115506A (en) | 1990-01-05 | 1990-01-05 | Method and apparatus for preventing recursion jeopardy |
US461,587 | 1990-01-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR910014802A KR910014802A (ko) | 1991-08-31 |
KR0185979B1 true KR0185979B1 (ko) | 1999-05-15 |
Family
ID=23833181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019900020364A KR0185979B1 (ko) | 1990-01-05 | 1990-12-12 | 디지탈 데이타 프로세서 및 그 동작 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5115506A (ko) |
EP (1) | EP0441054B1 (ko) |
JP (1) | JP2972355B2 (ko) |
KR (1) | KR0185979B1 (ko) |
DE (1) | DE69031558T2 (ko) |
HK (1) | HK1003604A1 (ko) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR940001878B1 (ko) * | 1990-03-08 | 1994-03-10 | 가부시끼가이샤 히다찌세이사꾸쇼 | 멀티 프로세서시스템 및 인터럽션 제어장치 |
JP2507833B2 (ja) * | 1990-12-25 | 1996-06-19 | 三菱電機株式会社 | マイクロコンピュ−タ |
JP3110866B2 (ja) * | 1992-06-01 | 2000-11-20 | 株式会社東芝 | マイクロプロセッサ |
US5313640A (en) * | 1992-09-23 | 1994-05-17 | International Business Machines Corporation | Method and system for the efficient response to multiple different types of interrupts |
US5388226A (en) * | 1992-10-05 | 1995-02-07 | Motorola, Inc. | Method and apparatus for accessing a register in a data processing system |
US5386563A (en) * | 1992-10-13 | 1995-01-31 | Advanced Risc Machines Limited | Register substitution during exception processing |
JPH0713772A (ja) * | 1993-06-29 | 1995-01-17 | Mitsubishi Electric Corp | データ処理装置 |
US5642516A (en) * | 1994-10-14 | 1997-06-24 | Cirrus Logic, Inc. | Selective shadowing of registers for interrupt processing |
US5812868A (en) * | 1996-09-16 | 1998-09-22 | Motorola Inc. | Method and apparatus for selecting a register file in a data processing system |
US5903919A (en) * | 1997-10-07 | 1999-05-11 | Motorola, Inc. | Method and apparatus for selecting a register bank |
US5901309A (en) * | 1997-10-07 | 1999-05-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for improved interrupt handling within a microprocessor |
US6493781B1 (en) * | 1999-08-19 | 2002-12-10 | Koninklijke Philips Electronics N.V. | Servicing of interrupts with stored and restored flags |
US7133951B1 (en) * | 2000-02-29 | 2006-11-07 | Bourekas Philip A | Alternate set of registers to service critical interrupts and operating system traps |
DE60132633T2 (de) | 2000-10-18 | 2009-01-15 | Koninklijke Philips Electronics N.V. | Digitale signalprozessorvorrichtung |
US7552261B2 (en) * | 2001-10-12 | 2009-06-23 | Mips Technologies, Inc. | Configurable prioritization of core generated interrupts |
US7487339B2 (en) * | 2001-10-12 | 2009-02-03 | Mips Technologies, Inc. | Method and apparatus for binding shadow registers to vectored interrupts |
WO2003091972A1 (en) * | 2002-04-26 | 2003-11-06 | Telefonaktiebolaget Lm Ericsson | Memory access register file |
CN1678999A (zh) * | 2002-09-03 | 2005-10-05 | 皇家飞利浦电子股份有限公司 | 用于处理嵌套中断的方法和设备 |
US7493478B2 (en) * | 2002-12-05 | 2009-02-17 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
US7680990B2 (en) * | 2003-05-30 | 2010-03-16 | Hewlett-Packard Development Company, L.P. | Superword memory-access instructions for data processor |
TW200511111A (en) * | 2003-07-30 | 2005-03-16 | Koninkl Philips Electronics Nv | Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set |
CN101075219B (zh) * | 2007-06-19 | 2010-08-11 | 北京中星微电子有限公司 | 一种中断处理方法及系统 |
US8151095B1 (en) * | 2008-07-18 | 2012-04-03 | Nvidia Corporation | System and method for context migration across CPU threads |
US9195497B2 (en) | 2012-03-21 | 2015-11-24 | Microchip Technology Incorporated | Microcontroller with context switch |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3858182A (en) * | 1972-10-10 | 1974-12-31 | Digital Equipment Corp | Computer program protection means |
US4217638A (en) * | 1977-05-19 | 1980-08-12 | Tokyo Shibaura Electric Co., Ltd. | Data-processing apparatus and method |
JPS5616248A (en) * | 1979-07-17 | 1981-02-17 | Matsushita Electric Ind Co Ltd | Processing system for interruption |
US4434461A (en) * | 1980-09-15 | 1984-02-28 | Motorola, Inc. | Microprocessor with duplicate registers for processing interrupts |
JPS58129658A (ja) * | 1982-01-29 | 1983-08-02 | Nec Corp | マイクロプログラム制御装置 |
JPS60214044A (ja) * | 1984-04-09 | 1985-10-26 | Nec Corp | マイクロコンピュ−タ |
EP0254247A3 (de) * | 1984-04-26 | 1988-08-10 | BBC Brown Boveri AG | Einrichtung zur Rettung des Rechnerzustandes |
JPS6177936A (ja) * | 1984-09-26 | 1986-04-21 | Nec Corp | 情報処理装置 |
JPS61206043A (ja) * | 1985-03-11 | 1986-09-12 | Hitachi Ltd | 仮想計算機システムにおける割込制御方法 |
JPS63245529A (ja) * | 1987-03-31 | 1988-10-12 | Toshiba Corp | レジスタ退避復元装置 |
JP2594600B2 (ja) * | 1988-02-23 | 1997-03-26 | 日本電気株式会社 | シングルチップマイクロコンピュータ |
-
1990
- 1990-01-05 US US07/461,587 patent/US5115506A/en not_active Expired - Lifetime
- 1990-12-12 KR KR1019900020364A patent/KR0185979B1/ko not_active IP Right Cessation
- 1990-12-20 DE DE69031558T patent/DE69031558T2/de not_active Expired - Lifetime
- 1990-12-20 EP EP90314038A patent/EP0441054B1/en not_active Expired - Lifetime
-
1991
- 1991-01-04 JP JP3010338A patent/JP2972355B2/ja not_active Expired - Lifetime
-
1998
- 1998-03-28 HK HK98102661A patent/HK1003604A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
DE69031558T2 (de) | 1998-03-26 |
JPH04211838A (ja) | 1992-08-03 |
DE69031558D1 (de) | 1997-11-13 |
EP0441054B1 (en) | 1997-10-08 |
HK1003604A1 (en) | 1998-10-30 |
US5115506A (en) | 1992-05-19 |
KR910014802A (ko) | 1991-08-31 |
EP0441054A1 (en) | 1991-08-14 |
JP2972355B2 (ja) | 1999-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR0185979B1 (ko) | 디지탈 데이타 프로세서 및 그 동작 방법 | |
US5386563A (en) | Register substitution during exception processing | |
US3825902A (en) | Interlevel communication in multilevel priority interrupt system | |
CN1098487C (zh) | 用于影响数据处理器中的顺序指令处理的方法和装置 | |
US3771138A (en) | Apparatus and method for serializing instructions from two independent instruction streams | |
EP0407911B1 (en) | Parallel processing apparatus and parallel processing method | |
US4881170A (en) | Instruction prefetch control apparatus | |
US6996821B1 (en) | Data processing systems and method for batching tasks of the same type in an instruction cache | |
US3654621A (en) | Information processing system having means for dynamic memory address preparation | |
RU2134446C1 (ru) | Способ управления перегрузкой сообщениями элементарной программы в мультипроцессорной управляющей системе (варианты) | |
US4320454A (en) | Apparatus and method for operand fetch control | |
US5862340A (en) | Method operating in each node of a computer system providing and utilizing special records for collective communication commands to increase work efficiency at each node | |
AU626067B2 (en) | Apparatus and method for control of asynchronous program interrupt events in a data processing system | |
AU8036587A (en) | Method and device to execute two instruction sequences in an order determined in advance | |
JPS6041138A (ja) | 割込み制御装置 | |
JP2585905B2 (ja) | マルチタスク実行装置 | |
JP3123946B2 (ja) | マイクロコンピュータ | |
WO1990005951A1 (en) | Method of handling unintended software interrupt exceptions | |
JPS58221447A (ja) | デ−タ処理装置 | |
EP0101759B1 (en) | Data processing system having branch instruction prefetching performance | |
CN117112136A (zh) | 中断虚拟化的方法、装置、操作系统、设备及存储介质 | |
WO1994018625A1 (en) | Computer workstation having demand-paged virtual memory | |
JPS6217842A (ja) | プログラム管理方法 | |
JP2001134449A (ja) | データ処理装置とその制御方法 | |
JPH10240702A (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: 20091016 Year of fee payment: 12 |
|
EXPY | Expiration of term |