KR100734158B1 - 인터럽트 강제 레지스터를 포함하는 플렉시블 인터럽트 제어기 - Google Patents

인터럽트 강제 레지스터를 포함하는 플렉시블 인터럽트 제어기 Download PDF

Info

Publication number
KR100734158B1
KR100734158B1 KR1020010003617A KR20010003617A KR100734158B1 KR 100734158 B1 KR100734158 B1 KR 100734158B1 KR 1020010003617 A KR1020010003617 A KR 1020010003617A KR 20010003617 A KR20010003617 A KR 20010003617A KR 100734158 B1 KR100734158 B1 KR 100734158B1
Authority
KR
South Korea
Prior art keywords
interrupt
hardware
generated
software
storage device
Prior art date
Application number
KR1020010003617A
Other languages
English (en)
Other versions
KR20010074544A (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 프리스케일 세미컨덕터, 인크.
Publication of KR20010074544A publication Critical patent/KR20010074544A/ko
Application granted granted Critical
Publication of KR100734158B1 publication Critical patent/KR100734158B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

인터럽트 강제 레지스터(interrupt force register)(120)를 포함하는 플렉시블 인터럽트 제어기(flexible interrupt controller)(28)가 제시된다. 개별 하드웨어 소스들에 의해 현재 행사(assert)되는 하드웨어 인터럽트들(102)은 인터럽트 제어기(28) 내에 포함된 인터럽트 소스 레지스터(interrupt source register)(110)에 저장된다. 독립적인 인터럽트 강제 레지스터(120)는 현재 보류중인 소프트웨어 인터럽트들(104)을 저장하는데, 이러한 보류 소프트웨어 인터럽트들은 데이터 처리 시스템(10) 내의 중앙 처리 장치(CPU)(12)에 의해 소프트웨어 루틴들을 실행함으로써 행사될 수 있다. 일 실시예에서, 인터럽트 소스 레지스터(110) 내 각 비트 위치는 인터럽트 강제 레지스터(120) 내에 대응하는 비트 위치를 가지며, 인터럽트 강제 레지스터(120) 내 각 비트는 인터럽트 소스 레지스터(110) 내의 대응하는 비트와 논리적으로 OR 연산된다. 논리적 OR 연산의 결과들은 인터럽트 보류 레지스터(interrupt pending register)(160) 내에 저장되고, 인터럽트 보류 레지스터(160)의 내용들은 CPU(12)에 제공되는 인터럽트 요청 신호(174)를 발생하기 위하여 서로 비트 와이즈(bit wise) OR 연산된다.

Description

인터럽트 강제 레지스터를 포함하는 플렉시블 인터럽트 제어기 {Flexible interrupt controller that includes an interrupt force register}
본 발명은 예로서 예시되어 첨부 도면들에 제한되지 않고, 도면 내의 동일한 참조부호들은 동일한 요소들을 나타낸다.
도 1은 본 발명의 특정 실시예에 따른 데이터 처리 시스템의 블록도.
도 2는 본 발명의 특정 실시예에 따른 도 1의 인터럽트 회로 부분의 블록도.
도 3은 본 발명의 특정 실시예에 따른 인터럽트 소스 레지스터 및 인터럽트 강제 레지스터의 블록도.
도 4는 본 발명의 특정 실시예에 따른 점프 테이블 및 연관된 포인터들의 블록도.
도 5는 본 발명의 또 다른 실시예에 따른 또 다른 인터럽트 소스 레지스터 및 인터럽트 강제 레지스터를 예시하는 도면.
도 6은 본 발명의 또 다른 실시예에 따른 또 다른 점프 테이블 및 연관된 포인터들의 블록도.
상기 도면 내 구성요소들이 단순성과 명료성을 위해 도시되므로 정확한 축척으로 도시될 필요가 없음을 당업자는 이해할 것이다. 예를 들면, 도면들 내의 요소들의 일부의 치수들은 본 발명의 실시예에 대한 이해를 높이기 위해 다른 요소들에 비해 상대적으로 확대된다.
* 도면의 주요 부분에 대한 부호 설명 *
10 : 데이터 처리 시스템 12 : 중앙 처리 장치(CPU)
14 : 메모리 16 : 타이머
18 : 직렬 회로 20 : 기타 회로
22 : 시스템 통합 회로 24, 26 : 버스
28 : 인터럽트 회로
본 발명은 일반적으로 인터럽트 제어기들에 관한 것으로, 특히 소프트웨어에 의해 제어되는 인터럽트 강제 레지스터를 포함하는 인터럽트 제어기에 관한 것이다.
인터럽트들은 컴퓨터 시스템에서 소프트웨어로 하여금, 소프트웨어의 현재 실행을 변경하고 인터럽트를 "서비스(service)"하는 타스크들을 수행하도록 강제하는 메커니즘을 제공하기 위해 통상적으로 사용된다. 예를 들면, 직렬 데이터 인터페이스 상의 버퍼 내에 저장될, 인입 유효 데이터가 있다면, 그 직렬 데이터 인터페이스는, 서비스될 때, 데이터가 캡처링되어 버퍼 내에 위치되도록 하는 인터럽트를 행사(assert)할 수 있다. 많은 경우에, 다수의 인터럽트들이 인터럽트를 서비스하는 것에 연관된 지연 시간(latency)에 대하여 제한된 허용한계(tolerance)를 갖는 인터럽트 소스들에 관계되기 때문에 인터럽트를 서비스하는 우선순위선정은 중요하다. 예를 들면, 직렬 데이터 인터페이스 상의 데이터는 제한된 양의 시간에 대해서만 유효할 수 있으며, 따라서 데이터가 그 시간 기간 내에 캡처링될 것을 요구한다. 인터럽트들의 서비스는 통상적으로 인터럽트 서비스 루틴(interrupt service routines) 또는 인터럽트 처리기(interrupt handlers)라고 불리는 소프트웨어 루틴들의 이용을 통해 일반적으로 이루어진다.
통상적인 종래 기술의 인터럽트 제어기 모듈은 다중 인터럽트 소스들로부터 인터럽트 요청들을 수신한다. 요청들은 인터럽트 소스들 각각에 대응하는 비트를 갖는 인터럽트 소스 레지스터에 저장되어, 인터럽트 소스 레지스터가 어떤 소스들이 보류 인터럽트들을 행사하고 있는지를 결정하기 위해 판독될 수 있도록 한다. 인터럽트 인에이블 레지스터는 인터럽트 소스 레지스터의 개별 비트 마스킹이 용이하게 되도록, 잠재적인 보류 인터럽트들이 각각에 대응하는 비트를 저장한다. 논리 연산 AND는 인터럽트 보류 레지스터의 내용을 형성하기 위해, 인터럽트 소스 레지스터 및 인터럽트 인에이블 레지스터의 내용상에 수행된다. 따라서, 인터럽트가 행사되고 마스크 레지스터에 의해 인에이블된다면, 상기 논리 연산이 인터럽트 보류 레지스터 내의 그 인터럽트에 대하여 발생될 것이다. 논리 비트-와이즈(bit-wise) OR은 중앙 처리 장치(CPU)에 라우팅되는 인터럽트 신호를 발생하기 위하여 인터럽트 보류 레지스터 상에 수행된다. 그와 같이, 인에이블되는 어떠한 보류 인터럽트들이라도 인터럽트 신호의 행사를 CPU에 강제할 것이다.
인터럽트 신호가 행사되었음을 CPU가 검출할 때, 어떤 인터럽트 서비스 루틴이 응답으로 실행되어야 하는지를 결정하기 위해 인터럽트 보류 레지스터가 조사될 수 있다. 이것은 인터럽트 우선순위선정을 결정하는 것을 포함하며, 그 우선순위선정은 인터럽트 보류 레지스터 내 특정 인터럽트의 비트 위치에 기초할 수 있다. 따라서, 인터럽트 보류 레지스터 내의 상위 비트들(more significant bits)은 하위 비트들(less significant bits)보다 더 높은 우선순위를 가질 수 있다. 인터럽트 소스 레지스터 및 인터럽트 보류 레지스터들은 판독-전용이기 때문에, 그러한 종래 기술의 인터럽트 제어기들은, 소프트웨어 인터럽트 요청들이 하드웨어로 하여금 하나의 인터럽트 요청을 행사하도록 강제함으로써만 발생될 수 있다는 점에서 제한된다.
또 다른 종래 기술의 인터럽트 제어기는 코넬(Connell) 등에 의해 발행된 미국 특허 제 5,459,872 호(이하 "코넬"이라 한다)에서 기술된다. 코넬은 복수의 하드웨어 인터럽트 소스들에 대응하는 보류 인터럽트들을 저장하는 인터럽트 레지스터를 포함하는 인터럽트 제어기를 기술한다. 또한, 인터럽트 레지스터를 수정함으로써 인터럽트 요청들이 행사되도록 할 수 있는 제어 소프트웨어(control software)가 포함된다. 코넬의 가르침이 인터럽트 레지스터에 저장된 하드웨어 인터럽트 표시(indication)들을 수정함으로써 소프트웨어 인터럽트가 발생되도록 허용함에도, 인터럽트 레지스터의 내용을 참조하여서는 하드웨어와 소프트웨어 발생 인터럽트들을 구별할 방법이 없다. 더구나, 코넬에 의한, 인터럽트 제어기에 의해 지원 가능한, 상이한 인터럽트 요청들의 수는 인터럽트 레지스터에 의해 지원되는 하드웨어 인터럽트 소스들의 수로 제한된다.
그러므로, 하드웨어 및 소프트웨어 인터럽트 요청들 모두의 통합된 처리를 제공하면서, 하드웨어 인터럽트들과 소프트웨어 인터럽트들이 구별되도록 하는 인터럽트 제어기에 대한 필요성이 존재한다.
일반적으로, 본 발명은 인터럽트 강제 레지스터를 포함하는 플렉시블 인터럽트 제어기를 제공한다. 하드웨어 소스들에 의해 개별적으로 현재 행사되는 하드웨어 인터럽트들은 인터럽트 제어기에 포함된 인터럽트 소스 레지스터에 저장된다. 독립적인 인터럽트 강제 레지스터는 현재 보류중인 소프트웨어 인터럽트들을 저장하는데, 이러한 보류 소프트웨어 인터럽트들은 데이터 처리 시스템 내 중앙 처리 장치(CPU)에 의해 소프트웨어 루틴들의 실행을 통해 행사될 수 있다. 일 실시예에서, 인터럽트 소스 레지스터 내 각 비트 위치는 인터럽트 강제 레지스터 내에 대응하는 비트 위치를 가지며, 인터럽트 강제 레지스터 내 각 비트는 인터럽트 소스 레지스터 내 대응하는 비트와 논리적으로 OR-연산된다. 논리 OR-연산의 결과들은 인터럽트 보류 레지스터에 저장되고, 인터럽트 보류 레지스터의 내용들은 CPU에 제공될 인터럽트 요청 신호를 발생하기 위하여 모두 비트 와이즈(bit wise) OR-연산된다.
본 발명은 도 1 내지 6을 참조하여 더 잘 이해될 수 있다. 도 1은 중앙 처리 장치(CPU) 회로(12), 메모리 회로(14), 타이머 회로(16), 직렬(serial) 회로(18), 기타 회로(20), 및 시스템 통합 회로(22)를 갖는 데이터 처리 시스템(10)을 도시하는데, 이들은 모두 버스(24) 방식으로 서로 양방향 결합된다.
CPU(12)는 하나 이상의 집적 회로 단자들(integrated circuit terminals)(30)에 의해 데이터 처리 시스템(10) 외부와 결합될 수 있다. 메모리(14)는 하나 이상의 집적 회로 단자들(32)에 의해 데이터 처리 시스템(10) 외부와 결합될 수 있다. 타이머(16)는 하나 이상의 집적 회로 단자들(34)에 의해 데이터 처리 시스템(10) 외부와 결합될 수 있다. 직렬 회로(18)는 하나 이상의 집적 회로 단자들(36)에 의해 데이터 처리 시스템(10) 외부와 결합될 수 있다. 그리고, 기타 회로(20)는 하나 이상의 집적 회로 단자들(38)에 의해 데이터 처리 시스템(10) 외부와 결합될 수 있다. 시스템 통합 회로(22)는 버스(26)에 의해 데이터 처리 시스템(10) 외부와 양방향으로 결합된다. 시스템 통합 회로(22)는 인터럽트 회로(28)를 포함한다. 인터럽트 회로(28)는 집적 회로 단자들(40)에 의해 데이터 처리 시스템(10) 외부와 결합될 수 있고, 버스(24)에 의해 CPU(12)에 결합될 수 있다.
본 발명의 일부 실시예들에서, 데이터 처리 시스템(10)은 단일 집적 회로 상에 형성된 데이터 처리기이다. 일부 실시예에서, 데이터 처리 시스템(10)은 단일 칩 마이크로콘트롤러(single chip microcontroller)이다. 대안 실시예들에서, 데이터 처리 시스템(10)은 어떤 유형의 전기 회로를 사용하여도 구현될 수 있다. 메모리(14)는 어떤 유형의 메모리라도 가능하다. 데이터 처리 시스템(10)의 대안 실시예들은 더 많거나 더 적은 회로 블록들 또는 상이한 회로 블록들을 포함할 수 있다. 예를 들면, 데이터 처리 시스템(10)의 대안 실시예들은 메모리(14), 타이머(16), 직렬 회로(18), 또는 기타 회로(20)를 갖지 않을 수 있다. 본 발명의 일부 실시예들은 CPU(12)의 일부로서 인터럽트 회로(28)를 포함할 수 있고, 시스템 통합 회로(22)를 가지거나 갖지 않을 수 있다.
집적 회로 단자들(30, 32, 34, 36, 38, 및 40)은 전기 신호들이 데이터 처리 시스템(10)으로부터 또는 데이터 처리 시스템(10)으로 전송되도록 하는 어떤 유형의 장치일 수 있다. 예를 들면, 집적 회로 단자들(30, 32, 34, 36, 38, 및 40)은 집적 회로 핀들(integrated circuit pins), 땜납 범프들(solder bumps), 와이어 도체들(wire conductors) 등이 될 수 있다. 또한, 버스(26)는 집적 회로 단자들에 의해 데이터 처리 시스템(10)으로부터 또는 데이터 처리 시스템(10)으로 전기적 신호를 전도한다.
도 2는 본 발명의 일 실시예에 따른 도 1의 인터럽트 회로(28)의 일부를 예시한다. 인터럽트 회로(28)는 인터럽트 소스 레지스터(110), 인터럽트 강제 레지스터(120), 인터럽트 인에이블 레지스터(140), 인터럽트 보류 레지스터(160), 및 논리 게이트들(131-133, 151-153, 및 172)을 포함하는 것으로 도시되어 있다. 본 발명의 일 실시예에서, 인터럽트 소스 레지스터(110), 인터럽트 강제 레지스터(120), 인터럽트 인에이블 레지스터(140), 및 인터럽트 보류 레지스터(160) 각각은 N 비트들을 각각 포함할 수 있으며, 여기서 N은 정수이다.
인터럽트 소스 레지스터(110)는 데이터 처리 시스템(10)에 의해 수신된 하드웨어 인터럽트들에 대응할 수 있는 복수의 입력들을 갖는 저장 디바이스이다. 이러한 하드웨어 인터럽트들은 집적 회로 단자들(40)과 같은 물리적 도체들을 통해 수신될 수 있고, 여기서 하드웨어 인터럽트들(102)의 각각은 특정 하드웨어-발생 인터럽트 소스에 대응한다. 인터럽트 소스 레지스터(110)는 물리적 도체들을 통해 수신된 하드웨어 인터럽트들을 선택적으로 저장하며, 하드웨어-발생 인터럽트들의 각각을 미리 결정된 출력 단자에 제공한다.
인터럽트 소스 레지스터(110)는, 각 트랜스페어런트 래치(transparent latch)가 하드웨어 인터럽트들(102) 중 하나의 값을 저장하고, 하드웨어 인터럽트 라인들(102)과 연관된 값들이 인터럽트 소스 레지스터(110)를 판독함으로써 확인되도록 하는 복수의 트랜스페어런스 래치를 포함할 수 있다. 그러한 트랜스페어런트 래치들은, 상기 하드웨어 인터럽트들(102) 상의 변화가 인터럽트 회로(28)내 부가회로에 타이밍 제약(timing constraints)을 위반하지 않는 방법으로 전달되는 것을 보장하는데 유용하다.
다른 실시예들에서, 인터럽트 소스 레지스터(110)는 하드웨어 인터럽트들(102) 각각에 대해 플립플롭과 같은 개별 비트 레지스터를 포함한다. 하드웨어 인터럽트 소스가 인터럽트 요청을 행사할 때, 그 소스로부터의 특정 인터럽트 요청에 대응하는, 인터럽트 소스 레지스터(110) 내의 비트가 설정(set)된다. 인터럽트 소스 레지스터(110)는 판독 전용 레지스터(read only register)로서 구현되는 것이 바람직하고, 따라서 소프트웨어는 인터럽트 소스 레지스터 내 특정 비트를 설정 또는 소거(cleared) 상태로 강제할 수 없다.
인터럽트 강제 레지스터(120)는 하나 이상의 입력들을 통해 복수의 소프트웨어-발생 인터럽트 신호들(소프트웨어 인터럽트들)(104)을 수신한다. 소프트웨어 인터럽트들(104)은, 서로 다른 소스로부터의 인터럽트를 나타내거나, 소프트웨어-발생 인터럽트들 중 적어도 하나가 하드웨어 인터럽트 소스로서 지정되지 않은 데이터 처리 시스템의 부분에 대응하도록, 하드웨어 인터럽트들(102)과는 상이한 유형의 인터럽트 또는 상이한 소스로부터의 인터럽트를 각각 표시한다. 소프트웨어 인터럽트들은 CPU(12)에 의한, 메모리 (14)에 저장된 소프트웨어의 실행을 통해 발생될 수 있다.
인터럽트 강제 레지스터(120)는 소프트웨어 인터럽트들(104) 각각에 대한 비트 위치를 포함하는 저장 디바이스이다. 인터럽트 강제 레지스터(120)로 구성된 저장 디바이스는 인터럽트 소스 레지스터(110)의 경우와 같이 래치들 또는 레지스터들을 포함한다. 인터럽트 강제 레지스터(120)에 기록을 수행함으로써, 소프트웨어 인터럽트들이 행사되도록 인에이블하기 위해서, 인터럽트 강제 레지스터(120)는 판독/기록 레지스터로서 구성될 수 있다.
인터럽트 소스 레지스터(110) 및 인터럽트 강제 레지스터(120)의 내용들(각각, 하드웨어-발생 인터럽트 신호들 및 소프트웨어-발생 인터럽트 신호들)은 인터럽트 요청 신호(174)를 발생하기 위해서 논리 회로를 이용하여 결합되며, 인터럽트 요청 신호(174)는 데이터 처리 시스템(10)에서 인터럽트가 발생하도록 CPU(12)에 제공된다. 도 2에 도시된 실시예에서, 복수의 OR-게이트들(131-133)은 인터럽트 소스 레지스터(110)내 특정 위치에서의 비트 값과 인터럽트 강제 레지스터(120)내 대응하는 비트 값을 논리적으로 OR 연산하는데 이용된다. 따라서, OR 게이트(131)는 인터럽트 소스 레지스터(110) 내 최하위 비트 위치의 비트와 인터럽트 강제 레지스터(120)의 최하위 위치의 비트를 OR 연산한다. 이 복수의 OR 게이트들(131-133)이 인터럽트 소스 레지스터(110) 내 특정 위치에서의 비트 값과 인터럽트 강제 레지스터(120) 내의 반드시 대응하는 비트들의 값일 필요는 없는 값과 논리적으로 OR 연산하는데 이용되는 다른 실시예들에서도 본 발명이 구현될 수 있음을 이해해야 한다.
데이터 처리 시스템에 포함된 인터럽트들이 마스크 불가능(non-maskable)인 실시예에서, OR 게이트들(131-133)의 출력들은 인터럽트 보류 레지스터(160)에 직접 제공될 수 있다. 그러나, 일부 실시예들에서, 개별 인터럽트들은, 인터럽트 인에이블 레지스터(140)(마스크 레지스터라고도 불린다) 및 다른 인에이블 회로가 데이터 처리 시스템 내 잠재 인터럽트들을 인에이블 또는 디세이블(disable)하는데 이용되도록 마스크 가능하다. 그러므로, OR 게이트들(131-133)의 출력들은 대응하는 복수의 AND 게이트들(151-153)에 입력들로서 제공된다. AND 게이트들(151-153) 각각에 대한 다른 입력은 인터럽트 인에이블 레지스터(140) 내 대응하는 위치에 저장된 비트 값이다. AND 게이트들(151-153)의 출력들은 그 다음 인터럽트 보류 레지스터(160)에 제공된다. 따라서, 인터럽트 인에이블 레지스터(140) 내 설정된 비트들은 보류 인터럽트들이 인터럽트 보류 레지스터(160)에 전달하거나 통과하도록 한다. 인터럽트 인에이블 레지스터(140)는 데이터 처리 시스템 내 판독/기록 레지스터로서 구현되는 것이 바람직하다. 이것은 처리 시스템 내 각 인터럽트들의 동적 마스킹(dynamic masking)을 허용한다.
판독 전용 레지스터일 수 있는 인터럽트 보류 레지스터(160)는 인터럽트 소스 레지스터(110), 인터럽트 강제 레지스터(120), 및 인터럽트 인에이블 레지스터(140) 내 값들의 결과 조합을 저장한다. 인터럽트 보류 레지스터(160) 내 각 비트 위치에 대한 값들은 CPU(12)에 제공되는 인터럽트 요청 신호(174)를 발생하기 위하여 OR 게이트(172)에 의해 함께 비트 와이즈 OR 연산된다. 그러므로, 인터럽트 보류 레지스터(160)내 어떤 비트들이라도 설정된다면, 인터럽트 요청 신호(174)가 행사될 것이다.
인터럽트 보류 레지스터(160)내 비트 위치들(저장 위치들)은 우선순위선정 체계(prioritization scheme)와 관계되는데, 이러한 우선순위선정 체계는 상위 비트 위치의 비트들을 설정함으로써 표시된 인터럽트들이 인터럽트 보류 레지스터(160) 내 하위 비트 위치들의 비트들을 설정함으로써 표시된 인터럽트들 보다 더 높은 우선순위를 갖는 인터럽트들에 대응한다. 예를 들면, 인터럽트 보류 레지스터(160)가 N 비트들을 포함한다면, 비트 위치 0은 가장 낮은 우선순위의 인터럽트에 대응하고, 반면 비트 위치 N-1은 가장 높은 우선순위를 갖는 인터럽트에 대응한다. 제 1 비트 설정 검색 명령(find first bit set instruction)은 가장 높은 우선순위를 갖는 보류 인터럽트를 결정하기 위해 인터럽트 보류 레지스터(160)와 관련하여 이용될 수 있다. 인터럽트 보류 레지스터 내 특정 저장 위치들에 대한 인터럽트 우선순위선정 레벨의 할당은, 인터럽트 소스 레지스터(110) 및 인터럽트 강제 레지스터(120) 내 비트 위치가 그러한 우선순위와 직접 관계된다는 것을 암시한다는 것을 주목하라.
일실시예에서, 도 2에서 도시된 바와 같이, 하드웨어 인터럽트들과 관련된 소스들이 시스템에서 활성화되지 않거나 존재하지 않을 때조차, 인터럽트 회로(28)는 하드웨어 인터럽트들의 존재를 모방(emulate)하기 위해 이용된다. 이것은 인터럽트 강제 레지스터(120) 내에 비트 위치를 갖는 소프트웨어 인터럽트들을 행사하는 소프트웨어를 이용하여 수행되는데, 인터럽트 강제 레지스터는 모방될 하드웨어 인터럽트들이 대응된 인터럽트 소스 레지스터(110) 내 비트 위치에 대응한다.
OR 게이트들(131-133)이 인터럽트 소스 레지스터(110) 내 저장된 값을 인터럽트 강제 레지스터(120) 내 저장된 값과 결합하기 때문에, 인터럽트 강제 레지스터(120)내 특정 비트 위치에 소프트웨어 인터럽트를 강제하는 것은 인터럽트 소스 레지스터(110)내 동일한 비트 위치에 대응하는 수신된 하드웨어 인터럽트와 동일한 방법으로 OR 게이트들(131-133) 중 특정한 하나에 긍정 출력 값(positive output value)을 발생시킬 것이다. 따라서, 복수의 소프트웨어-발생 인터럽트 신호들의 일부는 우선순위 레벨들을 할당받아서, 그 우선순위 레벨들은 하드웨어 인터럽트들을 발생시키고 대응하는 우선순위선정 레벨을 갖는 일부 인터럽트 소스들로부터 인터럽트들을 나타내는데 이용된다. 그러한 모방은 다른 수단을 통해 하드웨어 인터럽트의 행사를 시뮬레이션 하는 것이 비실용적인 경우의 디버깅 동작에 있어 가치가 있다.
CPU(12)가 인터럽트 회로(28)에 의해 발생된 인터럽트 요청(174)을 수신할 때, 동작의 제 1 코스는 전형적으로 인터럽트 보류 레지스터(160)를 판독하는 것이다. 제 1 설정 비트 검색 함수는 인터럽트 보류 레지스터(160)에 의해 표시된 가장 높은 우선순위를 갖는 보류 인터럽트를 결정하기 위해 그 다음 이용될 수 있고, 그 비트 위치는 각 보류 인터럽트에 대한 우선순위를 결정한다. 그 다음에, 최고 우선순위 인터럽트의 비트 위치는, 점프 테이블로부터의 인터럽트 서비스 루틴에 대응하여 페치(fetch)될 벡터를 결정하기 위해 이용된다. 페치된 벡터는 CPU로 하여금, 메모리(14)에 통상적으로 저장되는 적절한 인터럽트 서비스 루틴을 실행하도록 허용한다. 인터럽트 서비스 루틴의 실행은, 완료 시, 시스템의 상태가 인터럽트 서비스 루틴의 실행을 트리거(trigger)한 인터럽트가 행사 취소(deassert)되도록 변경될 수 있는 방법으로 수행된다.
CPU(12)에 의해 인터럽트를 서비스하는 것에 대해 기술된 우선순위선정 체계의 유지를 용이하게 하기 위하여, 현재 서비스되는 인터럽트들과 동일하거나 더 낮은 우선순위를 갖는 인터럽트들은, 더 낮은 우선순위 인터럽트들의 행사가 CPU(12)에 부가적인 인터럽트 요청을 발생시키지 않도록 일반적으로 마스크 오프(mask off)된다(인터럽트 인에이블 레지스터(140)를 이용하여). CPU(12)에 대한 그러한 부가적인 인터럽트 요청들은, CPU(12)가 인터럽트 보류 레지스터(160)를 판독하고 새로 수신된 인터럽트들의 우선순위를 결정하는 결과를 낳을 것이며, 그것은 더 높은 우선순위의 인터럽트 서비스 루틴의 실행 속도 및 효율을 감소시킬 것이다. 그러나, (마스크 오프 되지 않은) 더 높은 우선순위 인터럽트가 수신된다면, CPU는 서비스되고 있던 인터럽트의 서비스의 완료를 지연하면서, 더 높은 우선순위 인터럽트를 서비스하도록 전환(switch)한다.
도 3은 본 발명의 일부 가르침을 이해하고 돕는데 이용되는 인터럽트 소스 레지스터(200) 및 인터럽트 강제 레지스터(201)의 예들을 도시한다. 인터럽트 소스 레지스터(200)는 6 비트들(위치 0-5)을 포함하는 것으로 도시된다. 인터럽트 소스 레지스터(200)의 비트 위치들(1, 3, 및 5)은 특정 하드웨어 인터럽트들에 대응하도록 도시된다. 비트 위치(1)는 병렬 입력/출력(I/O)에 대응하고, 비트 위치(3)는 타이머 인터럽트에 대응하며, 비트 위치(5)는 범용 비동기 송수신 장치(UART : universal asynchronous receiver-transmitter)의 직렬 통신 포트에 대응하는 것으로 도시된다. 도 3에 도시된 인터럽트 소스 레지스터(200)의 예에서, UART는 인터럽트 서비스에 대하여 가장 높은 우선순위를 갖는 것으로 가정된다. 그러므로, 병렬 I/O 인터럽트는 가장 낮은 우선순위 레벨을 갖는다.
UART 인터럽트에 대한 서비스는 UART 직렬 인터페이스 상의 데이터가 처리 시스템 내의 버퍼에 캡처되어 저장되도록 할 수 있다. 일부 경우에, UART 데이터의 복원(decompression)과 같은 후부 처리(backend processing)가 버퍼 내 그 데이터의 저장에 응답하여 요구될 수 있다. 그러한 후부 처리를 용이하게 하기 위하여, 소프트웨어는 버퍼에 저장된 데이터의 복원이 요구됨을 표시하는 소프트웨어 인터럽트를 행사할 수 있다.
정규 동작(normal operation)에서, UART 인터럽트 서비스를 통해 버퍼 내에 배치된 데이터가, 버퍼가 임계 레벨(threshold level) 이상 채워지지 않도록 보장하는 레이트로 복원될 때, 버퍼된 UART 데이터 처리를 위한 요청들에 대응하는 소프트웨어 인터럽트의 우선순위는 일반적으로 낮은 우선순위이다. 이것은 도 3의 인터럽트 강제 레지스터(201)에 대하여 도시되며, 여기서 UART 버퍼의 낮은 우선순위 표시는 인터럽트 강제 레지스터(201)내 비트 위치(2)에 대응하는 것으로 도시된다. 이러한 우선순위 레벨의 소프트웨어 인터럽트들이 UART 버퍼의 서비스를 요청하는데 이용될 때, 그러한 서비스는 더 높은 우선순위를 갖는 인터럽트들의 부재(absence) 상에서 조정(condition)될 것이다. 그러한 더 높은 우선순위 인터럽트 중 하나는 하드웨어 타이머 인터럽트이다. 하드웨어 타이머 인터럽트는 우선순위 레벨(3)을 가지며, 그것은 낮은 우선순위 인터럽트를 요구하는 UART 버퍼의 레벨(2) 우선순위 다음의 더 높은 우선순위이다.
일부 경우에, CPU는 UART 버퍼의 서비스가 더 높은 우선순위로 높여져야 함을 검출할 수 있다. 이는 UART 하드웨어 인터럽트의 서비스가 UART 버퍼로 상당한 양의 데이터를 덤프(dump)하고, 타이머로부터 발행된 더 높은 우선순위 인터럽트들의 처리가 UART 버퍼 오버플로우(overflow)의 위험을 보일 때 발생한다.
데이터 손실을 피하기 위해, UART 버퍼 서비스의 우선순위는, 인터럽트 강제 레지스터(201)에서 UART 버퍼의 높은 우선순위 표시에 의해 표시되는 것과 같이 더 높은 우선순위로 높여진다. 높은 UART 버퍼 표시는 우선순위 레벨(4)에 대응하며, 그것은 인터럽트 소스 레지스터(200)내 타이머의 우선순위보다 더 높은 것이다. 그와 같이, 인터럽트들이 타이머 및 더 높은 우선순위 레벨에서의 UART 버퍼 서비스 모두에 대해 보류된다면, UART 버퍼가 우선적으로 서비스될 것이다.
CPU는 UART 버퍼의 내용들이 우선순위선정의 관점에서 업그레이드를 요구하는지를 결정할 수 있다. UART 버퍼의 낮은 우선순위선정 레벨 또는 높은 우선순위선정 레벨의 어느 한 쪽에 인터럽트들에 기초하여 UART 버퍼를 서비스하는 것을 용이하게 하기 위해서, 도 4에 도시된 점프 테이블(210)이 이용될 수 있다. 점프 테이블(210)은 레벨(2) 우선순위 인터럽트들에 대응하는 포인터(212)를 저장한다. 포인터(212)는 UART 버퍼가 서비스되도록 하는 인터럽트 서비스 루틴(220)으로 향하게 한다. 유사하게, 점프 테이블(210)은 레벨(4) 우선순위 인터럽트들에 대응하는 포인터(214)를 저장한다. 포인터(214)가 또한 UART 버퍼가 서비스되도록 하는 인터럽트 서비스 루틴(220)으로 향하게 한다.
CPU(12)가 인터럽트 요청(174)을 수신할 때, 그것은 현재 가장 높은 우선순위의 보류 인터럽트를 확인하기 위해서 인터럽트 보류 레지스터(160)를 판독한다. 이러한 현재 가장 높은 우선순위의 보류 인터럽트가 레벨(2) 또는 레벨(4)의 우선순위 인터럽트라면, 점프 테이블(210)은 UART 버퍼가 서비스되도록 인터럽트 서비스 루틴(220)으로의 포인터를 얻기 위해 참조될 것이다. 점프 테이블(210)은 또한 하드웨어 인터럽트들에 대응하는 각 우선순위 레벨들의 포인터들을 저장하는데, 이는 인터럽트 소스 레지스터(200)에 대해 기술되는 것을 주목하라.
도 5는 도 3에 대하여 기술된 것과 유사한 시나리오에 대응하는 인터럽트 소스 레지스터(300) 및 인터럽트 강제 레지스터(301)를 도시한다. 도 5와 연관된 예에서, 알람 클럭(alarm clock)에 대응하는 부가적인 하드웨어 인터럽트가, 알람 클럭이 인터럽트 우선순위 레벨(4)을 갖는 인터럽트 소스 레지스터(300)와 연관되어 도시된다. 인터럽트 강제 레지스터(301)에 대하여 도시된 바와 같이, UART 버퍼는 낮은 우선순위 레벨의 UART 버퍼에 기초하여 정규적으로 서비스되며, 그것은 레벨(2)의 우선순위이다. UART 버퍼가 부적절하게 서비스되고 그것의 서비스 레벨을 증가시키기 위해서 그것과 연관된 더 높은 우선순위 레벨을 가질 필요가 있다고, CPU가 결정한다면, 정규 UART 버퍼의 낮은 우선순위 인터럽트보다 오히려 UART 버퍼의 높은 우선순위 레벨에 대응하는 소프트웨어 인터럽트가 행사된다. 그러나, 높은 우선순위 인터럽트의 UART 버퍼가 알람 클럭에 대응하는 하드웨어 인터럽트와 동일한 우선순위를 갖는 것이 분명하다. 양자 모두 레벨(4)의 우선순위 인터럽트이다.
CPU가 레벨(4) 인터럽트에 대한 응답으로 적절한 인터럽트 서비스 루틴을 실행하도록 허가하기 위해서, 도 6에 도시된 점프 테이블(310)은 부가적인 의사 결정을 포함하는 인터럽트 서비스 루틴(330)으로 향하는 포인터(314)를 포함한다. 인터럽트 서비스 루틴(330)은 인터럽트 강제 레지스터(IFR)(301)를 판독하여 인터럽트 강제 레지스터 내의 레벨(4) 우선순위 비트가 설정되어 있는지를 결정하는 결정 단계(332)를 포함한다. 만일 레벨(4) 우선순위에 대응하는 비트가 인터럽트 강제 레지스터(301) 내에 설정된 것으로 결정된다면, 그것은 UART 버퍼가 서비스되는 단계(334)로 진행한다.
인터럽트 강제 레지스터(301) 내의 레벨(4) 우선순위 비트가 설정되지 않은 것으로 결정된다면, 그 레벨(4) 우선순위 인터럽트는, 인터럽트 소스 레지스터(300) 및 인터럽트 강제 레지스터(301)의 레벨(4) 우선순위 비트들의 논리적 OR연산의 결과인 레벨(4) 우선순위 인터럽트로서, 알람 클럭에 의한 인터럽트 행사에 의해 야기된 것이어야 한다. 인터럽트 강제 레지스터(301) 내 레벨(4) 우선순위 비트가 설정되지 않았다고 결정한 결과로서, 알람 클럭이 인터럽트를 행사한 것을 표시하며, 서비스 루틴은 알람 클럭이 서비스되는 단계(336)를 수행할 것이다.
포인터(314)에 대응하는 인터럽트 서비스 루틴(330)은, 알람 클럭으로부터의 하드웨어 인터럽트에 대응하는 인터럽트 소스 레지스터(300)의 레벨(4) 우선순위 인터럽트보다 소프트웨어 인터럽트에 대응하는 인터럽트 강제 레지스터(301)의 레벨(4) 우선순위 인터럽트를 본질적으로 우선시키는 것을 주의한다. 이것은 인터럽트 서비스 루틴(330)이 인터럽트 강제 레지스터(301)의 검사(inspection)에 기초하여 어떤 인터럽트가 서비스될 것인지를 결정한다는 사실 때문이다. 알람 클럭 하드웨어 인터럽트 및 UART 버퍼의 높은 우선순위 소프트웨어 인터럽트 모두 동시에 보류된다면, 인터럽트 강제 레지스터(301)의 검사는, UART 버퍼의 높은 우선순위 소프트웨어 인터럽트가 보류중임을 알고, 따라서 인터럽트 서비스 루틴(330)이 단계(334)로 진행되어 그 UART 버퍼를 서비스한다. 그러므로, 알람 클럭이 UART 버퍼의 높은 우선순위 소프트웨어 인터럽트와 동일한 우선순위 레벨을 갖는 것으로 보임에도, 인터럽트 서비스 루틴(330)은 UART 버퍼의 높은 우선순위 소프트웨어 인터럽트에 그것의 결정 단계(332)의 실행을 통해 부가적인 우선순위를 준다.
대안 인터럽트 서비스 루틴(340)은, 인터럽트 서비스 루틴(340) 내 의사 결정 단계의 고유 우선순위선정이 알람 클럭에 대응하는 하드웨어 인터럽트를 선호한다는 것을 제외하고 인터럽트 서비스 루틴(330)과 비슷한 결과를 제공할 것이다. 점프 테이블(310)은 소프트웨어 인터럽트를 선호하는 인터럽트 서비스 루틴(330)으로의 포인터(314)를 저장하거나, 하드웨어 인터럽트를 선호하는 포인터(316)를 저장할 것이다.
인터럽트 서비스 루틴(340)은, 인터럽트 소스 레지스터(300)를 판독함으로써, 알람 클럭 하드웨어 인터럽트에 대응하는 인터럽트 소스 레지스터(300) 내의 레벨(4) 우선순위 비트가 설정되는지를 결정함으로써 시작된다. 인터럽트 소스 레지스터(300)내 레벨(4) 우선순위 비트가 설정되지 않았다면, CPU는 인터럽트 강제 레지스터(301)내 레벨(4) 우선순위 비트가 설정되어야만 하는 것을 추정(deduce)하며, 따라서 UART 버퍼가 단계(346)에서 서비스된다. 인터럽트 소스 레지스터(300)내 레벨(4) 우선순위 비트가 설정된 것이 결정된다면, 알람 클럭이 단계(344)에서 서비스된다.
점프 테이블(310)이, 인터럽트 서비스 루틴(320)으로 향하는 레벨(2) 우선순위 인터럽트에 대응하는 포인터(312)를 저장하는 것을 주의한다. 인터럽트 서비스 루틴(320)은 UART 버퍼가 서비스되도록 한다. 시스템에서 발생할 수 있는 단 하나의 레벨(2) 우선순위 인터럽트만이 있기 때문에, 인터럽트 서비스 루틴(320)을 실행하는데 있어 어떤 의사결정도 요구되지 않는다. 이것은 UART 버퍼의 낮은 우선순위 소프트웨어 인터럽트이다. 인터럽트 소스 레지스터(300)가 그것의 레벨(2) 우선순위 비트 위치에 대응하는 하드웨어 인터럽트가 없음이 도시된다.
도 2에서 도시된 인터럽트 회로(28)는, 비슷한 우선순위 레벨의 하드웨어 및 소프트웨어 인터럽트 모두 데이터 처리 시스템에서 공존하도록 한다. 이것은 종래 기술의 인터럽트 처리기에 비하여 인터럽트 보류 레지스터에 의해 지원되는 잠재 인터럽트들의 수를 효율적으로 두 배가 되게 한다. 따라서, 인터럽트 보류 레지스터는 N 우선순위 레벨에 대응하는 N 비트 위치들을 포함하며, 그러한 비트 위치들 중 어느 하나에서의 설정 값은 그 우선순위 레벨의 하드웨어 인터럽트 또는 그 우선순위 레벨의 소프트웨어 인터럽트에 대응할 수 있다. 인터럽트 보류 레지스터(160)내 값이 소프트웨어-발생 인터럽트에 의한 것인지 또는 하드웨어-발생 인터럽트에 의한 것인지를 확인하기 위하여, 인터럽트 소스 레지스터(110) 및 인터럽트 강제 레지스터(120) 중 하나 이상이 조사될 수 있다.
인터럽트 소스 레지스터(110)에 의해 수신된 하드웨어 인터럽트들은 인터럽트 소스 레지스터(110)와 결합된 물리적 도체들을 통해 수신된 신호들에 기초하기 때문에, 그러한 물리적 도체들을 통해 수신된 인터럽트들의 인터럽트 우선순위선정 레벨은 영구적으로 할당되거나 물리적 도체가 대응하는 특정 비트 위치에 기초하여 고정된다. 그러나, 인터럽트 강제 레지스터(120)에 제공되는 소프트웨어 인터럽트와 연관된 우선순위선정 레벨들은 소프트웨어 제어에 기초하여 변경될 수 있다.
상기 예에 대하여 기술된 바와 같이, 소프트웨어 인터럽트들의 우선순위 레벨의 제어는, 특정 우선순위 레벨의 소프트웨어 인터럽트가 검출될 때, 점프 테이블이 실행되는 그 특정 소프트웨어 인터럽트에 대응하는 인터럽트 서비스 루틴을 지시하도록 점프 테이블을 수정함으로써 수행된다. 따라서, UART 버퍼의 서비스에 대응하는 소프트웨어 인터럽트는 초기에 우선순위 레벨(2)에 있을 수 있으며, 그 점프 테이블은 레벨(2) 우선순위 소프트웨어 인터럽트가 UART 버퍼를 서비스되도록 야기하는 표시를 저장한다. UART 버퍼가 더 높은 인터럽트 우선순위 레벨과 함께 서비스되어야 하는 것이 CPU에 의해 더 나중에 결정된다면, 미래의 UART 버퍼 소프트웨어 인터럽트는 우선순위 레벨(2)보다 더 높은 우선순위를 갖는 인터럽트 강제 레지스터내의 비트를 설정함으로써 행사된다. 더 높은 우선순위 소프트웨어 인터럽트가 UART 버퍼의 요구되는 서비스를 생성하는 것을 보장하기 위해서, 더 높은 우선순위 레벨에 대응하는 소프트웨어 인터럽트가 UART 버퍼를 서비스하는 인터럽트 서비스 루틴의 실행으로 귀착되도록 점프 테이블이 배열되어야 한다.
인터럽트 우선순위 레벨을 데이터 처리 시스템의 필요에 적응시키기 위해 도 2의 인터럽트 회로(28)의 유연성을 이용하는 다른 예시적인 애플리케이션에서, 수신된 하드웨어 인터럽트들의 유효 우선순위 레벨은 변경될 수 있다. 예를 들면, 그 후에 수신될 더 높은 우선순위의 인터럽트에 의한 인터럽션 없이 CPU 결정자가 서비스되어야 하는 낮은 우선순위 하드웨어 인터럽트가 수신된다면, 그 CPU는 더 높은 우선순위 레벨의 소프트웨어 인터럽트를 행사할 수 있다. 더 높은 우선순위 소프트웨어 인터럽트는, 점프 테이블의 배열에 기초하여, 낮은 우선순위 하드웨어 인터럽트의 인터럽트 서비스 루틴과 유사하게 인터럽트 서비스 루틴의 실행을 트리거 한다. 높은 우선순위 소프트웨어 인터럽트가 서비스되는 동안, 더 낮은 우선순위 인터럽트들은 마스크 오프 될 것이며, 따라서 낮은 우선순위 하드웨어 인터럽트에 의해 처음에 특정된 인터럽트 서비스 루틴의 실행이 인터럽트 되지 않는 것을 보장한다.
유사하게, 수신된 하드웨어 인터럽트에 대한 인터럽트 서비스 루틴의 실행 우선순위는 효과적으로 감소될 수 있다. 이는 높은 우선순위 하드웨어 인터럽트의 수신에 응답하여 더 낮은 우선순위 소프트웨어 인터럽트를 행사함으로써 수행된다. 더 낮은 우선순위 소프트웨어 인터럽트가 행사하면서, 인터럽트 인에이블 레지스터(140)가 우선순위 레벨을 마스크 오프 하기 위해 이용될 수 있으며, 그 우선순위 레벨은 유효 우선순위가 변경된 더 높은 우선순위 레벨의 하드웨어 인터럽트에 대응한다. 그와 같이, 보류 하드웨어 인터럽트는 CPU에 의해 무시될 것이며, 더 높은 레벨의 하드웨어 인터럽트의 초기 수신에 응답하여 발생한 더 낮은 레벨의 소프트웨어 인터럽트는 그 더 낮은 우선순위 레벨에 기초하여 서비스될 것이다.
상기에 직접 기술된 바와 같은 데이터 처리 시스템에서 인터럽트를 서비스하는 우선순위선정에 대한 동적 변화는 데이터 처리 시스템이 그것의 전체 성능을 향상시키도록 유연한 방법으로 적용되게 한다. 점프 테이블 및 인터럽트 강제 레지스터의 소프트웨어 구성과 함께 동작 레지스터의 마스킹 함수를 이용함으로써, 종래 기술 시스템들에서는 할 수 없었던 다양한 우선순위 변경(modification)이 가능하다.
상기 상세한 설명에서, 본 발명은 특정 실시예들을 참조하여 기술되었다. 그러나, 상기 기술 분야에서 통상의 지식을 갖는 자라면, 이하의 청구항에서 설명된 바와 같은 본 발명의 범위로부터 벗어나지 않고 다양한 수정과 변경이 가능하다는 것을 이해할 것이다. 따라서, 상기 상세한 설명과 도면들은 제한적인 의미라기보다 설명적인(illustrative) 의미로 간주되며, 모든 그러한 변형들(modifications)은 본 발명의 범위 내에 포함되도록 의도된다.
본 발명의 장점들 및 문제에 대한 해결책들이 특정 실시예와 관련하여 상기에 기술되었다. 그러나, 장점들, 문제에 대한 해결책들, 및 이러한 어떤 것들을 발생시키거나 더 주장되게 하는 어떠한 구성요소들이라도, 어떤(또는 모든) 청구항들의 중요하거나 요구되는 또는 본질적인 특징이나 요소로 해석되어서는 안 된다. 여기에 사용된 바와 같이, "포함한다(comprise)", "포함하는(comprising)" 또는 그들의 어떤 다른 변형된 용어들은 열거된 구성요소들을 포함하는 공정, 방법, 물건, 또는 장치가 단지 그러한 구성요소들만 포함하는 것이 아니라, 그러한 공정, 방법, 물건, 또는 장치에 고유하거나 또는 명백히 열거되지 않은 다른 구성요소들도 포함하는 비 배타적인 포함(non-exclusive inclusion)에까지 미치도록 의도한 것이다.
본 발명은 하드웨어 및 소프트웨어 인터럽트 요청 모두의 통합된 처리를 위해 제공되며, 하드웨어 및 소프트웨어 인터럽트들이 구별되도록 허가하는 인터럽트 제어기를 제공한다.
본 발명의 데이터 처리 시스템에서 인터럽트를 서비스하는 우선순위선정에 대한 동적 변화는 데이터 처리 시스템이 그것의 전체 성능을 향상시키도록 유연한 방법으로 적용될 수 있게 한다. 점프 테이블 및 인터럽트 강제 레지스터의 소프트웨어 구성과 함께 동작 레지스터의 마스킹 함수를 이용함으로써, 종래 기술의 시스템에서는 할 수 없었던 다양한 우선순위 변경이 가능하다.

Claims (5)

  1. 데이터 처리 시스템에서 인터럽트들을 구현하기 위한 방법에 있어서,
    복수의 입력들을 갖는 제 1 저장 디바이스를 제공하는 단계로서, 상기 복수의 입력들 각각은 하드웨어 인터럽트들을 선택적으로 발생하는 복수의 하드웨어-발생 인터럽트 소스들 중 하나에 개별 물리적 도체에 의해 결합되고 상기 복수의 하드웨어-발생 인터럽트 소스들을 선택적으로 저장하고, 상기 제 1 저장 디바이스는 하나 이상의 하드웨어-발생 인터럽트 신호들을 제공하는, 상기 제 1 저장 디바이스 제공 단계;
    하나 이상의 입력들을 갖는 제 2 저장 디바이스를 제공하는 단계로서, 상기 하나 이상의 입력들 각각은 복수의 소프트웨어-발생 인터럽트 신호들 중 미리 결정된 신호를 수신 및 저장하고, 상기 미리 결정된 복수의 소프트웨어-발생 인터럽트 신호들 중 적어도 일부는 상이한 소스로부터의 인터럽트 또는 상기 하드웨어 인터럽트들과 상이한 유형의 인터럽트를 표시하며, 상기 제 2 저장 디바이스는 하나 이상의 소프트웨어-발생 인터럽트 신호들을 제공하는, 상기 제 2 저장 디바이스 제공 단계; 및
    상기 하나 이상의 하드웨어-발생 인터럽트 신호들 및 상기 하나 이상의 소프트웨어-발생 신호들을 수신하기 위해, 상기 제 1 저장 디바이스 및 상기 제 2 저장 디바이스에 논리 회로를 결합시키는 단계로서, 상기 논리 회로는 상기 데이터 처리 시스템에서 인터럽트가 발생하도록 할 인터럽트 요청 신호를 제공하는, 상기 논리 회로 결합 단계를 포함하고,
    인터럽트 우선순위 레벨이 상기 제 1 및 제 2 저장 디바이스의 특정 저장 위치들에 할당되고, 상기 제 1 저장 디바이스에 결합된 상기 복수의 하드웨어-발생 인터럽트 소스들의 상기 인터럽트 우선순위 레벨은 영구적으로 할당되지만, 상기 제 2 저장 디바이스와 연관된 인터럽트 소스들의 상기 인터럽트 우선순위 레벨의 할당은 소프트웨어 제어에 의해 가변되는, 인터럽트 구현 방법.
  2. 제 1 항에 있어서,
    상기 제 2 저장 디바이스에 저장된 상기 복수의 소프트웨어-발생 인터럽트 신호들의 일부를, 하드웨어 인터럽트들을 발생하고 상기 제 1 저장 디바이스에 결합된 상기 복수의 하드웨어-발생 인터럽트 소스들의 인터럽트 우선순위 레벨과 상이한 우선순위 레벨을 갖는 일부 인터럽트 소스들로부터의 인터럽트들을 나타내기 위해 할당하는 단계를 더 포함하는, 인터럽트 구현 방법.
  3. 인터럽트 제어 회로를 갖는 데이터 처리 시스템에 있어서,
    복수의 하드웨어 인터럽트 소스들;
    복수의 입력들을 갖는 하드웨어 인터럽트 저장 디바이스로서, 상기 복수의 입력들 각각은 복수의 하드웨어 인터럽트 소스들 중 하나에 전기 도체에 의해 결합되고, 상기 하드웨어 인터럽트 저장 디바이스는 하드웨어-발생 인터럽트들을 저장하며, 미리 결정된 출력 단자에서 상기 하드웨어-발생 인터럽트들의 각각을 제공하는, 상기 하드웨어 인터럽트 저장 디바이스;
    복수의 입력들을 갖는 소프트웨어 인터럽트 저장 디바이스로서, 상기 복수의 입력들 각각은 복수의 소프트웨어-발생 인터럽트 신호들 중 미리 결정된 신호를 수신하고, 상기 소프트웨어-발생 인터럽트 신호들 중 적어도 하나는 하드웨어 인터럽트 소스로서 설계되지 않은 상기 데이터 처리 시스템의 일부의 인터럽트 서비스에 대응하는, 상기 소프트웨어 인터럽트 저장 디바이스; 및
    하드웨어-발생 인터럽트들 또는 소프트웨어-발생 인터럽트들의 수신에 응답하여 데이터 처리 시스템 인터럽트 신호를 제공하기 위해, 상기 하드웨어 인터럽트 저장 디바이스 및 상기 소프트웨어 인터럽트 저장 디바이스에 결합된 논리 회로로서, 상기 논리 회로는 하드웨어-발생인 제 1 인터럽트와 소프트웨어 발생인 제 2 인터럽트 사이의 우선순위를, 상기 인터럽트들이 동일한 우선순위를 가질 때 상기 하드웨어-발생 제 1 인터럽트 또는 상기 소프트웨어-발생 제 2 인터럽트 중 하나를 서비스하도록 선택함으로써 결정하는, 상기 논리 회로를 포함하고,
    상기 하드웨어 인터럽트 저장 디바이스 및 상기 소프트웨어 인터럽트 저장 디바이스는 특정 저장 위치들에 대한 할당된 인터럽트 우선순위 레벨을 갖고, 상기 하드웨어 인터럽트 소스들의 상기 인터럽트 우선순위 레벨은 영구적으로 할당되지만, 상기 소프트웨어-발생 인터럽트 신호들과 연관된 인터럽트 소스들의 상기 인터럽트 우선순위 레벨의 할당은 소프트웨어 제어에 의해 가변되는, 데이터 처리 시스템.
  4. 데이터 처리 시스템에서 인터럽트들을 구현하기 위한 방법에 있어서,
    저장된 하드웨어 인터럽트 신호들을 서비스하는 인터럽트의 우선순위를 나타내는 제 1 복수의 우선순위된 저장 위치들을 갖는 제 1 저장 디바이스를 제공하는 단계로서, 상기 제 1 저장 디바이스는 복수의 입력들을 갖고, 상기 복수의 입력들 각각은 하드웨어 인터럽트들을 선택적으로 발생하는 복수의 하드웨어-발생 인터럽트 소스들에 물리 도체에 의해 결합되고 상기 하드웨어 인터럽트들을 저장하고, 상기 제 1 저장 디바이스는 하나 이상의 하드웨어-발생 인터럽트 신호들을 제공하는, 상기 제 1 저장 디바이스 제공 단계;
    저장된 소프트웨어-발생 인터럽트 신호들을 서비스하는 인터럽트의 우선순위를 나타내는 제 2 복수의 우선순위된 저장 위치들을 갖는 제 2 저장 디바이스를 제공하는 단계로서, 상기 제 2 저장 디바이스는 하나 이상의 입력들을 갖고, 상기 하나 이상의 입력들 각각은 복수의 소프트웨어-발생 인터럽트 신호들 중 미리 결정된 신호를 수신 및 저장하고, 상기 미리 결정된 복수의 소프트웨어-발생 인터럽트 신호들은 상이한 소스로부터의 인터럽트 또는 상기 하드웨어 인터럽트들과 상이한 유형의 인터럽트를 표시하며, 상기 제 2 저장 디바이스는 하나 이상의 소프트웨어-발생 인터럽트 신호들을 제공하는, 상기 제 2 저장 디바이스 제공 단계;
    상기 하드웨어-발생 인터럽트 소스들 중 미리 결정된 소스를 모방(emulate)하지만 상기 하드웨어-발생 인터럽트 소스들 중 상기 미리 결정된 소스와 우선순위가 상이한 미리 결정된 소프트웨어-발생 인터럽트 신호를 발생하기 위해, 상기 데이터 처리 시스템으로 소프트웨어를 실행하는 단계로서, 이에 의해 상기 데이터 처리 시스템에서 인터럽트들의 서비스의 우선순위가 동적으로 변경되는, 상기 소프트웨어 실행 단계; 및
    상기 하나 이상의 하드웨어-발생 인터럽트 신호들 및 상기 하나 이상의 소프트웨어-발생 인터럽트 신호들을 수신하기 위해, 상기 제 1 저장 디바이스 및 상기 제 2 저장 디바이스에 논리 회로를 결합시키는 단계로서, 상기 논리 회로는 상기 데이터 처리 시스템에서 인터럽트가 발생하도록 할 인터럽트 요청 신호를 제공하는, 상기 논리 회로 결합 단계를 포함하는, 인터럽트 구현 방법.
  5. 데이터 처리 시스템에서 인터럽트들을 구현하기 위한 방법에 있어서,
    복수의 입력들을 갖는 제 1 저장 디바이스를 제공하는 단계로서, 상기 복수의 입력들 각각은 하드웨어 인터럽트들을 선택적으로 발생하는 복수의 하드웨어-발생 인터럽트 소스들 중 하나에 개별 물리 도체에 의해 결합되고 상기 하드웨어 인터럽트들을 선택적으로 저장하고, 상기 제 1 저장 디바이스는 하나 이상의 하드웨어-발생 인터럽트 신호들을 제공하는, 상기 제 1 저장 디바이스 제공 단계;
    하나 이상의 입력들을 갖는 제 2 저장 디바이스를 제공하는 단계로서, 상기 하나 이상의 입력들 각각은 복수의 소프트웨어-발생 인터럽트 신호들 중 미리 결정된 신호를 수신 및 저장하고, 상기 미리 결정된 복수의 소프트웨어-발생 인터럽트 신호들 중 적어도 일부는 상이한 소스로부터의 인터럽트 또는 상기 하드웨어 인터럽트들과 상이한 유형의 인터럽트를 표시하며, 상기 제 2 저장 디바이스는 하나 이상의 소프트웨어-발생 인터럽트 신호들을 제공하는, 상기 제 2 저장 디바이스 제공 단계;
    상기 하나 이상의 하드웨어-발생 인터럽트 신호들 및 상기 하나 이상의 소프트웨어-발생 신호들을 수신하기 위해, 상기 제 1 저장 디바이스 및 상기 제 2 저장 디바이스에 논리 회로를 결합시키는 단계로서, 상기 논리 회로는 상기 데이터 처리 시스템에서 인터럽트가 발생하도록 할 인터럽트 요청 신호를 제공하는, 상기 논리 회로 결합 단계; 및
    미리 결정된 하드웨어-발생 인터럽트의 우선순위 레벨을, 상기 미리 결정된 하드웨어-발생 인터럽트를 위한 대응하는 하드웨어-발생 인터럽트 소스를 나타내지만 상기 미리 결정된 하드웨어-발생 인터럽트와 우선순위 레벨이 상이한 소프트웨어-발생 인터럽트를 제공함으로써 변경하는 단계를 포함하는, 인터럽트 구현 방법.
KR1020010003617A 2000-01-24 2001-01-22 인터럽트 강제 레지스터를 포함하는 플렉시블 인터럽트 제어기 KR100734158B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/490132 2000-01-24
US09/490,132 US6845419B1 (en) 2000-01-24 2000-01-24 Flexible interrupt controller that includes an interrupt force register

Publications (2)

Publication Number Publication Date
KR20010074544A KR20010074544A (ko) 2001-08-04
KR100734158B1 true KR100734158B1 (ko) 2007-07-03

Family

ID=23946756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010003617A KR100734158B1 (ko) 2000-01-24 2001-01-22 인터럽트 강제 레지스터를 포함하는 플렉시블 인터럽트 제어기

Country Status (5)

Country Link
US (1) US6845419B1 (ko)
JP (1) JP4749556B2 (ko)
KR (1) KR100734158B1 (ko)
CN (1) CN1251077C (ko)
TW (1) TW563029B (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
JP2004199187A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd Cpu内蔵lsi
US7739438B2 (en) * 2003-02-12 2010-06-15 Hewlett-Packard Development Company, L.P. Method for priority-encoding interrupts and vectoring to interrupt code
US7584316B2 (en) * 2003-10-14 2009-09-01 Broadcom Corporation Packet manager interrupt mapper
GB2409543B (en) * 2003-12-23 2006-11-01 Advanced Risc Mach Ltd Interrupt masking control
JP2005242806A (ja) * 2004-02-27 2005-09-08 Renesas Technology Corp データ処理装置
US7162559B1 (en) * 2005-03-08 2007-01-09 Emc Corporation System for controlling interrupts between input/output devices and central processing units
US20060256876A1 (en) * 2005-05-13 2006-11-16 Andre Szczepanek Fast Decode of Pending Interrupts
US7913255B2 (en) * 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
CN100365604C (zh) * 2005-12-02 2008-01-30 北京中星微电子有限公司 一种中断控制处理装置和方法
CN100365605C (zh) * 2005-12-02 2008-01-30 北京中星微电子有限公司 多级中断申请装置和方法
CN100397375C (zh) * 2005-12-02 2008-06-25 北京中星微电子有限公司 多中断处理单元的中断处理的装置和方法
EP2225645B1 (en) 2007-12-17 2011-07-27 Continental Teves AG & Co. oHG Memory mapping system, request controller, multi-processing arrangement, central interrupt request controller, apparatus, method for controlling memory access and computer program product
US7793025B2 (en) * 2008-03-28 2010-09-07 Freescale Semiconductor, Inc. Hardware managed context sensitive interrupt priority level control
US8135884B1 (en) * 2009-05-04 2012-03-13 Cypress Semiconductor Corporation Programmable interrupt routing system
US8112551B2 (en) 2009-05-07 2012-02-07 Cypress Semiconductor Corporation Addressing scheme to allow flexible mapping of functions in a programmable logic array
JP4897851B2 (ja) * 2009-05-14 2012-03-14 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム及びコンピュータ・システムの制御方法
US8135894B1 (en) * 2009-07-31 2012-03-13 Altera Corporation Methods and systems for reducing interrupt latency by using a dedicated bit
CN101699418B (zh) * 2009-10-30 2011-11-16 曙光信息产业(北京)有限公司 一种中断处理方法、系统及设备
CN102822802B (zh) * 2010-03-30 2016-08-03 富士通株式会社 多核处理器系统以及控制方法
US9645823B2 (en) 2011-03-03 2017-05-09 Hewlett-Packard Development Company, L.P. Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity
US8738830B2 (en) * 2011-03-03 2014-05-27 Hewlett-Packard Development Company, L.P. Hardware interrupt processing circuit
US9189283B2 (en) 2011-03-03 2015-11-17 Hewlett-Packard Development Company, L.P. Task launching on hardware resource for client
CN102314399A (zh) * 2011-07-07 2012-01-11 曙光信息产业股份有限公司 一种龙芯刀片设备中断分配的实现方法
US9146776B1 (en) * 2011-08-16 2015-09-29 Marvell International Ltd. Systems and methods for controlling flow of message signaled interrupts
US9367498B2 (en) * 2011-09-14 2016-06-14 Panasonic Intellectual Property Management Co., Ltd. Resource request arbitration device, resource request arbitration system, resource request arbitration method, integrated circuit, and program
US9128920B2 (en) 2011-11-30 2015-09-08 Marvell World Trade Ltd. Interrupt handling systems and methods for PCIE bridges with multiple buses
US8762615B2 (en) * 2011-12-21 2014-06-24 International Business Machines Corporation Dequeue operation using mask vector to manage input/output interruptions
KR101356541B1 (ko) * 2012-01-09 2014-01-29 한국과학기술원 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법
CN102932599A (zh) * 2012-11-09 2013-02-13 北京百纳威尔科技有限公司 基于gpio模拟数据总线实现照相机功能的装置及方法
JP6056576B2 (ja) * 2013-03-18 2017-01-11 富士通株式会社 割り込み要因を特定する方法及び装置
US9665509B2 (en) * 2014-08-20 2017-05-30 Xilinx, Inc. Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
US10078605B2 (en) * 2014-10-22 2018-09-18 Cavium, Inc. Multiple-interrupt propagation scheme in a network ASIC
US10591892B2 (en) 2015-06-05 2020-03-17 Renesas Electronics America Inc. Configurable mapping of timer channels to protection groups
GB2550904B (en) * 2016-05-27 2020-07-15 Arm Ip Ltd Methods and Apparatus for Creating Module Instances
GB2561881A (en) * 2017-04-27 2018-10-31 Airbus Group Ltd Microcontroller
CN112130904B (zh) * 2020-09-22 2024-04-30 黑芝麻智能科技(上海)有限公司 处理系统、处理器间通信方法、以及共享资源管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013483A1 (en) * 1992-01-02 1993-07-08 Amdahl Corporation Software control of hardware interruptions
JPH08272727A (ja) * 1995-03-29 1996-10-18 Oki Electric Ind Co Ltd システムイベント処理機構
KR960038390U (ko) * 1995-05-10 1996-12-18 인터럽트 처리장치
KR19980036697A (ko) * 1996-11-19 1998-08-05 문정환 인터럽트 요구 선택회로

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5057997A (en) * 1989-02-13 1991-10-15 International Business Machines Corp. Interruption systems for externally changing a context of program execution of a programmed processor
CA2123447C (en) * 1993-09-20 1999-02-16 Richard L. Arndt Scalable system interrupt structure for a multiprocessing system
US5671424A (en) 1994-02-02 1997-09-23 Advanced Micro Devices, Inc. Immediate system management interrupt source with associated reason register
US6185629B1 (en) * 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5987601A (en) * 1997-02-14 1999-11-16 Xyron Corporation Zero overhead computer interrupts with task switching
US5937199A (en) * 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
FR2775370B1 (fr) * 1998-02-20 2001-10-19 Sgs Thomson Microelectronics Procede de gestion d'interruptions dans un microprocesseur
US6412081B1 (en) * 1999-01-15 2002-06-25 Conexant Systems, Inc. System and method for providing a trap and patch function to low power, cost conscious, and space constrained applications
GB2345992B (en) * 1999-03-10 2001-01-24 Elan Digital Systems Ltd Apparatus and method for handling peripheral device interrupts
US6625149B1 (en) * 1999-11-29 2003-09-23 Lucent Technologies Inc. Signaled receiver processing methods and apparatus for improved protocol processing
JP4693326B2 (ja) * 1999-12-22 2011-06-01 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013483A1 (en) * 1992-01-02 1993-07-08 Amdahl Corporation Software control of hardware interruptions
JPH08272727A (ja) * 1995-03-29 1996-10-18 Oki Electric Ind Co Ltd システムイベント処理機構
KR960038390U (ko) * 1995-05-10 1996-12-18 인터럽트 처리장치
KR19980036697A (ko) * 1996-11-19 1998-08-05 문정환 인터럽트 요구 선택회로

Also Published As

Publication number Publication date
CN1251077C (zh) 2006-04-12
KR20010074544A (ko) 2001-08-04
US6845419B1 (en) 2005-01-18
CN1309350A (zh) 2001-08-22
JP4749556B2 (ja) 2011-08-17
TW563029B (en) 2003-11-21
JP2001229031A (ja) 2001-08-24

Similar Documents

Publication Publication Date Title
KR100734158B1 (ko) 인터럽트 강제 레지스터를 포함하는 플렉시블 인터럽트 제어기
EP0391173B1 (en) Debug peripheral for microcomputers, microprocessors and core processor integrated circuits and system using the same
US5659679A (en) Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system
US6460107B1 (en) Integrated real-time performance monitoring facility
US6038661A (en) Single-chip data processor handling synchronous and asynchronous exceptions by branching from a first exception handler to a second exception handler
US6081867A (en) Software configurable technique for prioritizing interrupts in a microprocessor-based system
US7793025B2 (en) Hardware managed context sensitive interrupt priority level control
EP0203304B1 (en) Data processor controller
US20020166018A1 (en) Multiprocessor interrupt handling system and method
US7406550B2 (en) Deterministic microcontroller with configurable input/output interface
US5717851A (en) Breakpoint detection circuit in a data processor and method therefor
US5862148A (en) Microcontroller with improved debug capability for internal memory
US7526579B2 (en) Configurable input/output interface for an application specific product
US6915414B2 (en) Context switching pipelined microprocessor
KR100385499B1 (ko) 배경모드에서투명한동작을갖는데이타프로세서및그방법
EP0418932A2 (en) Microcomputer having easily testable interrupt controller
US7136938B2 (en) Command ordering based on dependencies
US5675749A (en) Method and apparatus for controlling show cycles in a data processing system
US7680967B2 (en) Configurable application specific standard product with configurable I/O
US6449675B1 (en) Multifield register having a selection field for selecting a source of an information field
US5826058A (en) Method and apparatus for providing an external indication of internal cycles in a data processing system
KR100223096B1 (ko) 내부 메모리 맵 레지스터를 관측하는 방법 및 장치
WO2006081092A2 (en) Deterministic microcontroller with configurable input/output interface
US5826047A (en) Method and apparatus for external viewing of an internal bus
JP2990800B2 (ja) 割込み処理装置

Legal Events

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

Payment date: 20130611

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140611

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150529

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170601

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee