KR19990071464A - 범용멀티소스인터럽트구성을갖는고체데이터프로세서 - Google Patents

범용멀티소스인터럽트구성을갖는고체데이터프로세서 Download PDF

Info

Publication number
KR19990071464A
KR19990071464A KR1019980703733A KR19980703733A KR19990071464A KR 19990071464 A KR19990071464 A KR 19990071464A KR 1019980703733 A KR1019980703733 A KR 1019980703733A KR 19980703733 A KR19980703733 A KR 19980703733A KR 19990071464 A KR19990071464 A KR 19990071464A
Authority
KR
South Korea
Prior art keywords
interrupt
int
vector
data processor
bus
Prior art date
Application number
KR1019980703733A
Other languages
English (en)
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 KR19990071464A publication Critical patent/KR19990071464A/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
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

중앙처리장치, 상기 중앙처리장치에 단일 인터럽트 벡터를 선택적으로 신호 전송하는 인터럽트 핸들러 수단, 상기 인터럽트 핸들러 수단에 데이지 연결되어 인터럽트 요청 신호와 인터럽트 인식 신호를 교환하는 복수의 인터럽트 소스를 가진 데이터 프로세서가 개시된다..버스 수단은 모든 서브시스템들을 상호연결한다. 인터럽트 핸들러는 병렬 연결된 모든 인터럽트 소스에 판독 벡터 명령을 전달하여 버스 수단에서 실제 인터럽트 어드레스 벡터 전송을 가능하게 한다.

Description

범용 멀티소스 인터럽트 구성을 갖는 고체 데이터 프로세서
인터럽트 구성은 오랫동안 연구되어 왔으나, 이에 대한 개선과 확장이 여전히 요구된다. 이러한 개발은 질과 양적인 면에서 여러 단계에 놓여 있으며, 이러한 이유로 본 발명은 특별히 아래의 사항을 충족시킨다.
. 일반적으로 200이상의 다수의 상이한 인터럽트 소스 및/또는 인터럽트 원인을 지원한다.
. 일반적으로 16 또는 32인 다수의 상이한 우선 순위를 지원한다.
. 적절한 핸들러 루틴의 신속한 선택을 가능하게 하는 벡터 지원을 제공할 수 있다.
. 사이즈 확장이 용이하다.
. 인터럽트 우선 순위를 융통성 있게 정할 수 있다.
. 루팅 오버헤드를 최소화할 수 있다.
적정한 가격/기능면에서 상기 모든 조건을 충족하는 시스템은 지금까지 없었다.
본 발명은 청구항 제 1 항 전문에 기술된 데이터 프로세서에 관한 것이며, 특히 다수의 인터럽트 소스가 복수의 데이지 체인으로 분배된다.
도 1은 본 발명에 의한 인터럽트 구조의 기본적인 실시예를 도시한 도면.
도 2는 인터럽트 메카니즘의 타이밍도.
도 3은 인터럽트 제어기의 블록도.
도 4는 인터럽트 소스의 블록도.
도 5A 내지 도 5D는 4개의 서로 다른 인터럽트 소스를 도시한 도면.
도 6은 인터럽트 디폴트 벡터 생성기의 블록도.
도 7은 상호연결 구성의 상세한 예를 도시한 도면.
도 8은 상호연결 구성의 예를 도시한 도면.
도 9는 인터럽트 구조의 개략도.
도 10은 인터럽트 인식 데이지 체인과 벡터 선택 메카니즘을 도시한 도면.
본 발명의 목적은 상기 요구사항에 대한 포괄적이고 범용적인 해결책을 제공하는 인터럽트 구조를 구비한 데이터 프로세서를 제공하는 것이다. 그러므로, 본 발명의 특징은 상기 인터럽트 핸들러 수단이 모든 인터럽트 소스에 "판독 벡터" 명령을 병렬로 통신하여 상기 버스 수단에 실제 인터럽트 어드레스 벡터를 전송할 수 있다는 것이다. 특히, 버스는 인터럽트 절차 이외의 다른 유형의 이송에 사용되어 하드웨어 요구사항을 줄인다.
인터럽트 디폴트 벡터 생성기는 상기 데이지 체인 수단을 접합시킨다. 이러한 특징은 블록화된 개발을 방지하며, 그 외의 이점들은 종속 청구항들에서 기술되어 있다.
도 1은 본 발명에 의한 인터럽트 구조의 기본적인 실시예를 나타낸다. 이 블록도에는 집적 회로 VLSI 데이터 프로세서의 주요 서브시스템이 포함된다. 도 1에서, 중앙처리장치(20)는 PI 버스(30)에 접속되어 있으며, 인터럽트 제어기(22), 인터럽트 소스(24, 26), 인터럽트 디폴트 벡터 생성기(28)도 PI 버스(30)에 접속되어 있다. 실제로는, 인터럽트 소스들이 더 많을 수도 있다. 이상적인 시스템에서는 이러한 물리적인 소스들을 20개 이상 구비하여 서로 연관된 고유의 또는 비고유의 인터럽트 벡터에 의해 구별되는 200개 이상의 서로 다른 인터럽트 이유를 발생시킬 수 있다. 도 4에 나타난 대로, 물리적 인터럽트 소스들은 인터럽트 제어기(22)에 연결된 INTREQ 라인들중 하나의 라인에 인터럽트 요청 신호 전송을 나타내기 위해 효과적으로 ORED되며, 동일한 방법으로 인터럽트 콘트롤러(22)로부터의 하위 멀티비트 라인상에서 각 ORED 라인에 하나씩 인터럽트 인식 신호 전송을 수신하기 위해 연속적으로 체인화한다. 이러한 라인들의 수는 1보다 클 수 있으며, 인터럽트 핸들러는, 예를 들면, 계층 구조나 일정표등을 근거로 어느 요청사항이 우선 핸들링되어야 할 지를 판단한다. 또한, 제어기(22)는 라인(32)상의 Interrupt_Read_Vector 신호를 모든 소스들에 제시한다. 적정 인터럽트 벡터는 오버올 버스(30)상에서 실제적으로 부분 자기 선택된 액티브 소스에 의해 중앙 처리 장치(20)에게 제시된다. 이것은 PCT 출원번호 EP 94/01711에서 개시된 PI-버스이다. 또한, 온칩 또는 오프칩 메모리(34), I/O 서브시스템 (36), 그리고 조절 단위(BCU)와 같이 본 발명에 포함되지 않는 다양한 서브시스템(38)과 함께 프로세서가 개시된다. 인터럽트 생성 장치는 인터럽트 소스(24-26)에서 마련된다. 복잡한 인터럽트 소스는 물론 하위 레벨까지 수용하는 구조가 되어야 한다.
무제한의 예제를 위해서, 프로세서는 RISC 프로세서이며, ORED 인터럽트 요청 라인수는 16이다. 인터럽트 제어기 또는 핸들러(22)는 인터럽트 요청을 받으면 인터럽트 마스킹을 실행하며, 가능한 공존 인터럽트들중 어느 것의 우선순위가 높은 지를 판단한다. 적절한 1비트 신호는 마스크되지 않은 인터럽트의 존재를 중앙처리장치(20)에게 보여준다. 중앙처리장치(20)가 실제 인터럽트 벡터 판독을 요구하면, 인터럽트 제어기(22)는 소스가 그 순간에 선택했거나 선택하는 ORED 라인에 대응하는 인식 버스의 특정 라인상에 인식 신호를 생성한다. 인터럽트 소스는 실제 인식 신호를 수신하여 인터럽트 벡터의 하위 부분을 생성하고, 인터럽트 제어기는 상위 부분을 생성한다. 특별한 환경하에서, 인터럽트 인식 신호는 접속된 소스들중 어느 하나에도 수신되지 않고 인터럽트 디폴트 벡터 생성기(28)에 도착하는 경우가 있으며, 이 생성기는 인터럽트 벡터의 하위 부분을 생성한다. 인터럽트 벡터는 중앙처리장치를 위해 버스(30)에 적용된다.
정의
CPU : IC의 중앙처리장치이다. 인터럽트는 정상적인 프로그램의 흐름을 인터럽트하여 인터럽트 서비스 루틴을 실행하기 위해 생성된다.
CPU_INT[M-1..0] : 인터럽트 제어기를 CPU에 연결하는 M라인들로 구성된 단일 CPU 인터럽트 버스이다.
인터럽트 제어기 : 다양한 인터럽트 소스들로부터의 인터럽트 요청을 CPU 인터럽트 요청으로 복호화하고, 가능한 여러(16) ORED REQUEST들로부터 하나를 선택한다. 또한, 인터럽트를 인식하고 인터럽트 벡터의 상위부분을 생성한다.
인터럽트 디폴트 벡터 생성기 : 인터럽트 소스를 대신해 인터럽트 벡터의 하위 부분을 생성한다.
인터럽트 소스 : CPU를 인터럽트하는 IC상의 모든 모듈이다. 어떤 모듈은 하나 이상의 ORED 요청 라인상에 여러 개의 상이한 인터럽트를 생성할 수도 있다.
INT_REQ[N-1..0] : 인터럽트 요청 버스의 N라인들은 인터럽트 소스를 인터럽트 제어기로 연결한다.
INT_ACK[N-1..0] : 인터럽트 인식 버스의 N라인들은 인터럽트 소스를 통해 인터럽트 제어기로부터 발생하여 인터럽트 디폴트 벡터 생성기로 연결된다. INT_ACK[x] 각 라인은 ORED 인터럽트 요청 라인 INT_REQ[x]에 대응된다.
INT_CLEAR : 인터럽트 소스에 위치한 인터럽트 상황 변수 INT_STATUS는 이에 대응하는 인터럽트 해제 변수 INT_CLEAR에 '1'을 기입하면 해제된다.
INT_ENABLE : 인터럽트 소스에 위치한 인터럽트 허용 변수 INT_ENABLE을 '1'로 설정하여 인터럽트 요청 라인에 인터럽트를 허용하거나 '0'을 기입하여 무시할 수도 있다.
INT_MASK : 상이한 인터럽트 요청 라인 INT_REQ[x]을 마스크하기 위한 (선택적) 인터럽트 마스킹 변수.
INT_MASK_LEVEL : 모든 인터럽트 요청 라인 INT REQ[x]을 일정한 레벨 이하로 마스크하기 위한 (선택적) 인터럽트 마스킹 레벨 변수.
INT_PRIORITY[N-1..0] : 각 인터럽트 요청 라인 INT_REQ[x]에 대한 우선순위를 별도로 변경할 수 있는 (선택적) 인터럽트 요청 라인 우선순위 변수.
INT_RD_VECTOR : 이 인터럽트 판독 벡터 라인은 인터럽트 제어기를 모든 인터럽트 소스들에 연결한다. 인터럽트 제어기는 CPU가 인터럽트 벡터 INT_VECTOR를 판독하고자 하는 것을 나타낸다. ACK 신호가 먼저 나타나고 다음에 RD_벡터가 나타난다.
INT_SET : 인터럽트 소스에 위치한 선택적 인터럽트 상황 변수 INT_STATUS는 대응하는 인터럽트 설정 변수 INT_CLEAR에 '1'을 기입하여 설정된다.
INT_STATUS : 인터럽트 소스에 위치한 인터럽트 상황 변수 INT_STATUS는 소스가 CPU를 인터럽트할 때는 '1'이며, 인터럽트 소스가 인터럽트하지 않을 때는 '0'이다.
INT_VECTOR : CPU는 인터럽트시에 인터럽트 벡터 변수를 판독하여 적절한 인터럽트 루틴으로 분기한다. 인터럽트 벡터 변수는 두개의 16비트 부분으로 나누어진다.
INT_VECTOR[31..16] : 인터럽트 벡터 변수의 상위 부분은 항상 인터럽트 제어기에 의해 생성된다.
INT_VECTOR[15..0] : 인터럽트 벡터의 하위 부분은 다양한 인터럽트 소스 또는 인터럽트 디폴트 벡터 생성기에 의해 생성된다.
L : 데이지 체인된 인터럽트 인식 신호가 모든 인터럽트 소스를 통과하여 (인터럽트 제어기로 귀환하기) 위해 필요한 버스 클럭 사이클의 수.
M : CPU 인터럽트 버스의 CPU 종속 넓이. 일반적으로 M=1이다.
N : 인터럽트 요청 버스의 넓이. 보통 N은 16 또는 32이다. 또한, N은 INT_ACK 라인의 수이다.
PI-버스 D : 버스의 데이터 라인들이다.
PI-버스 CLK : 버스의 클럭 신호이다.
인터럽트 소스와 인터럽트 제어기의 변수들
변수는 레지스터의 일부로서 버스를 통해 판독되고 기입된다. 레지스터의 어드레스는 특정한 인터럽트 소스 또는 인터럽트 제어기에 할당된 버스 어드레스의 범위내에서 매핑된다.
각 인터럽트 소스는 여러개의 변수들을 가진다. 생성가능한 인터럽트 각각에 대해 일련의 변수들이(INT_STATUS, INT_ENABLE, INT_CLEAR, 그리고 선택적으로 INT_SET) 있으며, 일반적으로 또 다른 일련의 변수들이 인터럽트 소스를 구비한 장치의 작동을 조절한다. 또한, 하나 이상의 INT_VECTOR[15..0] 변수 또는 상수는 인터럽트 소스의 일부가 된다.
인터럽트 제어기는 INT_VECTOR[31..16]과 같은 여러개의 변수들을 가지며, 또한 마스킹과 우선순위 복호화를 위한 변수들을 가진다. 총 인터럽트 벡터 INT_VECTOR의 어드레스는 인터럽트 제어기에 할당된 어드레스 범위내에서 매핑된다.
인터럽트 디폴트 벡터 생성기는 프로그래밍가능한 디폴트 INT_VECTOR[15..0] 변수를 가진다. 이 경우, 이 변수의 어드레스는 인터럽트 디폴트 벡터 생성기에 할당된 어드레스 범위에서 매핑된다.
인터럽트 요청
인터럽트 소스는 (내부의) 인터럽트 요청을 받으면, 대응하는 INT_STATUS 변수에 '1'을 기입한다. 또한, 대응하는 INT_ENABLE 변수가 '1'이면, 이 요청은 특정한 인터럽트가 연결된 인터럽트 요청 라인 INT_REQ[x]을 통해 인터럽트 제어기로 전송된다. INT_ENABLE 변수가 '0'이면, 내부 요청은 무시된다. INT_ENABLE 이 '1'로 설정된 경우에만 인터럽트 제어기로 전송된다.
마스킹 및 우선순위 정하기
마스킹과 우선순위 정하기에 대해서는 명시된 바가 없다. N 인터럽트 요청 라인들 INT_REQ[N-1..0]들과 M CPU 인터럽트 라인들 CPU_INT[M-1..0]간에는 명시된 순서가 없다. 우선순위 복호화기는 하드웨어에 고정되어 있거나 프로그래밍 가능하다. 마스킹은 엄격한 선결 요건은 아니다.
마스킹과 우선순위 정하기의 가장 간단한 실현 형태는 엄격하고 고정된 계층구조이다. 또 다른 방법으로는, 레지스터의 각 비트가 하나의 인터럽트 요청 라인을 마스킹하는 N-비트 인터럽트 마스크 레지스터가 있다. 인터럽트 마스크 레지스터의 비트가 '1'이면, 대응하는 인터럽트 요청 라인이 허용되며, 비트가 '0'이면 대응 인터럽트 요청 라인은 허용되지 않는다. 세번째 방법으로는, 인터럽트 마스크 레벨 레지스터를 실현하는 것이다. 최소한 인터럽트 마스크 레벨 레지스터의 값과 동가의 순서를 가진 인터럽트 요청 라인만이 허용되며, 나머지는 허용되지 않는다. 우선순위 정하기는 각 인터럽트 요청 라인에 대한 우선순위 변수를 사용하여 각 인터럽트 요청 라인 INT_REQ[x]에 대한 우선순위를 별도로 정한다. 상기 두가지 기능을 통합하여 사용가능하다. 우선순위 정하기에는 라운드 로빈과 같은 다른 방법도 있다.
CPU에 인터페이스하기
N 인터럽트 요청 라인 INT_REQ[N-1..0]을 M CPU 인터럽트 라인 CPU_INT[M-1..0]에 연결하는(마스킹 및 우선순위 정하기를 실행한 후에) 방법은 정해져 있다. 일반적으로 M=1이면 충분하다. CPU가 인터럽트되면, 문맥 저장등과 같은 특정한 기능을 실행한 다음, 인터럽트 벡터로 분기된다. 결국에는, 인터럽트 벡터 INT_VECTOR를 분기 테이블 기초 어드레스에 대한 오프셋으로 사용하여 소프트웨어가 인터럽트 핸들러로 분기된다. 이 방법은 INT_VECTOR, 인터럽트 핸들러 또는 실제 소스로부터의 다양한 비트들에 대한 추가의 처리과정이 요구되지 않으므로 신속하다.
인식 신호 생성하고 인터럽트 벡터 획득하기
인터럽트 벡터 INT_VECTOR는 인터럽트 제어기에 할당된 어드레스 구역에 매핑된 버스 레지스터로서의 어드레스이다. 인터럽트 제어기는 인터럽트 벡터에 대한 버스 판독 요청을 수신하면, REQ에 연관된 인식 신호와 우선순위 마스크를 선택한다. 다음에는, 액티브 소스가 데이지 체인에 (또는 인터럽트 디폴트 벡터 생성기를) 따라 자기 선택하며, 하나의 인터럽트 인식 라인을 통해 인터럽트 소스 (또는 인터럽트 디폴트 벡터 생성기)를 요청하여 인터럽트 벡터 (INT_VECTOR[15..0])의 하위 부분을 PI-버스 D-라인에 둔다. INT_VECTOR[31..16]의 상위 부분은 항상 인터럽트 제어기 자체에서 생성된다.
인터럽트 제어기는 마스킹 및 우선순위 정하기 이전 또는 이후에 인터럽트 요청 라인의 현재값을 래치한다. 현재의 우선순위가 최고인 액티브 인터럽트 요청 라인만이, 마스킹 및 우선순위 구성에 따라, 대응하는 인터럽트 인식 라인상에 데이지 체인된 표시 신호에 의한 응답을 받는다. 기타 인터럽트 요청 라인들은 일시동안 무응답 상태에 머무른다. 데이지 체인은 표시된 인터럽트 인식 라인에 연결된 인터럽트 소스를 통과하기 시작한다.
하나 이상의 인터럽트 소스가, 선택된 인터럽트 요청 라인에 요청 신호를 생성하면, 데이지 체인은 인터럽트 소스들중 하나만이 인식 신호를 획득하도록 한다. 이것은 인터럽트 제어기에 논리적으로 가장 근접하게 연결된 인터럽트 소스가 된다. 다운스트림에 위치한 기타 소스들은 인식 신호로부터 차단된다. 이렇게 하면, 인터럽트 요청 및 인식 라인의 각 쌍에 대한 하위 우선순위의 구성이 명확해진다. 인터럽트 제어기에 가장 가까이 연결된 인터럽트 소스는 데이지 체인내에서 최고의 하위 우선순위를 가진다.
데이지 체인을 통과하는데 충분한 인식 신호를 부여하기 위해 약간의 지연이 도입된다. 지연동안 인터럽트 제어기는 WAT-인식으로 버스 인식 ACK-라인을 구동한다. 지연은 버스 클럭 CLK의 상승 가장자리에 동기하는 L버스 클럭 사이클과 동일하다. 버스 대기 사이클의 정확한 수는 데이지 체인된 인터럽트 인식 라인의 데이지에 의해 결정되며 실시에 의해 좌우된다.
지연 후에, 인터럽트 제어기는 최종 WAT-인식 동안 인터럽트 판독 벡터 신호 INT_RD_VECTOR를 표시하며 (INT_RD_VECTOR 신호가 초기 신호이므로), WAT-인식 대신에 RDY-인식을 가진 버스 ACK-라인을 구동한다. 또한, 이 사이클에서, IN_VECTOR[15..0]의 비트 15에서 0이, 인식된 인터럽트 소스 또는 인터럽트 디폴트 벡터 생성기에 의해 구동되며, 인터럽트 제어기는 인터럽트 벡터 INT_VECTOR[31..16]의 비트 31에서 16을 버스상에 둔다.
인터럽트 제어기는 벡터 판독중에 새로운 인터럽트의 인식을 제한하여 가능한 레이스 컨디션(경합조건)을 방지한다. 인터럽트 벡터의 상위 부분 INT_VECTOR[31..16]은 우선순위 신호 전송을 포함하며, 항상 인터럽트 제어기에 의해 생성된다. 인터럽트 벡터 INT_VECTOR[15..0]의 하위 부분은 최소한 하나에서부터(인터럽트 디폴트 벡터 생성기에) 인터럽트 각각에 대해 여러개에 이르기까지 다양하다.
인터럽트 요청 해제하기
인터럽트 요청이 인터럽트 루틴에 의해 서비스되면, 대응 INT_CLEAR 변수에 '1'을 기입하여 인터럽트 소스를 해제할 수 있다. 판독-수정-기입 과정이 하드웨어를 변경하는 동일 레지스터내의 다른 비트들을 방해할 가능성이 있으므로 '0'을 기입하여 INT_STATUS를 해제하는 것은 바람직하지 못하다.
도 2는 구조의 완전한 타이밍 메카니즘을 보여준다. 신호 INT_REQ[x]는 버스 CLK와 비동기적이며 신호 INT_RD_VECTOR는 동기적이다. 성공적인 결과로서 시스템 버스 클럭, 버스 판독 작동, 버스 작동 코드, 버스 어드레스 신호 전송, 특히 인터럽트 벡터에 포함된 어드레스, 마지막 슬롯이 인터럽트 벡터를 전송하는 버스 데이터 슬롯, 네개의 대기 사이클을 가지며 하나의 후속 인식 사이클을 가진 버스 인식, 인터럽트 요청 신호 전송, CPU 인터럽트 신호 전송, 인터럽트 인식, 인터럽트 인식 리턴 (신호 전송 없음), 그리고 인터럽트 판독 벡터 등의 신호들이 나타난다. 수직파 라인은 적절한 크기의 간격을 나타낸다.
신호
INT_REQ[N-1..0]: 인터럽트 소스들을 인터럽트 제어기에 연결한다. 순서나 우선순위는 없다. 인터럽트 소스는 OR-게이트에 의해 이 라인들에 연결되어 있다. 각 인터럽트 소스들은 하나 또는 그 이상의 인터럽트 요청 라인들에 연결된다. 인터럽트 요청 라인은 비동기적이며 매우 액티브하다.
INT_ACK[N-1..0]: 각 인터럽트 인식 라인 INT_ACK[x]은 하나의 인터럽트 요청 라인 INT_REQ[x]에 대응한다. 인터럽트 인식 라인은 비동기적이며 매우 액티브하다.
CPU가 인터럽트 제어기의 번지를 지정하여 INT_VECTOR를 판독하면, 제어기는 인터럽트 인식 라인들중 정확히 하나를 기동한다. 우선순위와 마스킹 구조에 의해 기동할 인식 라인을 결정한다. 인터럽트 인식 라인은 REQ에 대응하는 인터럽트 소스를 통하여 데이지 체인화한다. 모든 소스는 대응하는 요청 라인에서 인터럽트가 진행중이면, 다른 인터럽트 소스들에 대해 다운스트림에서 인식 신호를 차단한다.
INT_RD_VECTOR: 인터럽트 판독 벡터 라인은 인터럽트 제어기를 인터럽트 벡터의 하위 부분을 생성할 수 있으며 인터럽트 디폴트 벡터 생성기를 포함하는 인터럽트 소스에 연결한다. CPU가 인터럽트 제어기의 번지를 지정하여 INT_VECTOR를 판독하면, L-1 버스 클럭 사이클의 지연후에 인터럽트 제어기에 의해 표시된다. 인터럽트 판독 벡터 라인은 매우 액티브하며 버스 클럭 CLK에 동기적이다.
CPU_INT[M-1..0]: 이러한 M들은 CPU 인터럽트 라인들이며, 인터럽트 제어기를 CPU에 연결하는 M은 보통 1이다 (M=1). 인터럽트 제어기는 인터럽트 요청 라인 INT_REQ[N-1..0]상에 하나 또는 그 이상의 인터럽트 요청을 수신하면, 하나 또는 그 이상의 CPU 인터럽트 라인들을 표시한다 (모든 REQ가 마스크되지 않은 경우). 표시될 라인은 마스킹과 우선순위 구조와 CPU 인터럽트 라인에 대한 매핑에 의해 결정된다. CPU 인터럽트 라인들의 액티브 레벨과 타이밍 동작은 CPU에 의해 좌우된다.
PI-버스 D : PI-버스 데이터 라인들이다.
PI-버스 CLK : PI-버스의 클럭 신호이다.
실제 상황에 따라 ACK=WAT(wait), ACK=RDY(ready)이다.
도 3은 인터럽트 제어기의 블럭도이다. N인터럽트 요청 라인(302)은 우측 상단 모서리에 도착한다. N라인은 마스킹, 우선순위 정하기, 래칭 블럭(310)을 거쳐서 단일(M=1) CPU 인터럽트 라인(306)으로 매핑(308)된다.
인터럽트 벡터에 대한 버스 판독 요청은 버스 인터페이스(318)에서 제어 블럭(314)을 거쳐 루팅된다. 이 블럭은 래칭 블럭(310)과, 라인(304)상에 적절한 데이지 체인된 인터럽 인식을 생성하는 생성 블럭(312)을 제어한다.
L-1 버스 클럭-사이클의 지연후에, 제어 블럭은 차기 버스 CLK 사이클에서 버스(322) D-라인상에 인터럽트 벡터 INT_VECTOR[31..16] 데이터를 배치하기 위해 상위 벡터를 요청한다. 동시에, 제어 블럭 (314)은 차기 PI-버스 CLK 사이클에서 버스 D-라인상에 INT_VECTOR[15..0]를 배치하기 위해 INT_RD_VECTOR 라인을 표시하여 하위 벡터 블럭을 요청한다(인터럽트 소스중 하나 또는 인터럽트 디폴트 벡터 생성기에서). 인터럽트 제어기에서, INT_VECTOR 변수만이 강제적인 요소이다.
INT_VECTOR : 이 인터럽트 벡터 변수는 PI 버스 판독 요청을 발행함으로써 CPU에 의해 판독된다. INT_VECTOR 변수는 두 부분으로 나누어 진다. 상위 16 비트 INT_VECTOR[31..16]는 항상 인터럽트 제어기에 의해 생성된다. 하위 16 비트 INT_VECTOR[15..0]는 인식 인터럽트 소스 또는 인터럽트 디폴트 벡터 생성기에 의해 생성된다.
인터럽트 제어기에서 인터럽트 벡터 변수 INT_VECTOR[31..16]는 고정된 상수(읽기 전용)이거나 프로그래밍가능(또한 기입가능)하다. 다른 INT_VECTOR[31:16] 변수 또는 상수는 마스킹 또는 우선순위 메카니즘에 의한 결정에 따라 선택된다. 우선순위는 INT_VECTOR[31:16]의 일부이다.
INT_MASK : 다양한 인터럽트 요청 라인 INT_REQ[x]을 마스크하는 선택적 인터럽트 마스킹 변수이다. 이 변수에서 각 비트 INT_MASK[x]=0는 대응하는 인터럽트 요청 라인 INT_REQ[x]을 마스크한다.
INT_MASK_LEVEL : 모든 인터럽트 요청 라인 INT_REQ[x]를 일정 레벨 이하로 마스크하기 위해 선택적으로 사용된 인터럽트 마스킹 레벨 변수를 가리킨다. 이 변수의 값이 y라면, x < y인 모든 인터럽트 요청 라인 INT_REQ[x]은 마스크된다 (y=0이면, 어느 인터럽트 요청 라인도 마스크되지 않는다).
INT_PRIORITY[N-1..0] : 선택적 인터럽트 요청 라인 우선순위 변수가 실행되면, 이 변수를 INT_PRIORITY[N-1..0]이라고 한다. 이 변수는 일반적으로 4비트의 넓이 (N=16)를 가지며 각 인터럽트 요청 라인 INT_REQ[x]에 대한 우선순위를 개별적으로 설정한다.
도 4는 인터럽트 소스의 간단한 블럭도이다. 우측과 좌측 상단 모서리에서, 인터럽트 요청 라인이 입력되고(402) 출력된다(406). 입력되는 인터럽트 요청 라인이 액티브하면, 출력되는 인터럽트 요청 라인 역시 액티브하다. 입력되는 인터럽트 요청 라인이 액티브하지 않으면, 출력되는 인터럽트 요청 라인은 인터럽트 소스가 OR(404)을 통해 허용된 (사용가능한) 인터럽트 요청을 가진 경우에 액티브하다.
인터럽트 소스의 좌우측 중간에서, 인터럽트 인식 라인이 입력되고(416) 출력된다(414). 출력되는 인터럽트 인식 라인은 입력되는 인터럽트 인식 라인이 액티브하고 인터럽트 소스가 AND(410)를 통해 사용가능한 인터럽트 요청이 진행되고 있지 않은 경우에만 액티브하다. 이 AND는 선택적이며 인터럽트 소스가 자신의 INT_VECTOR[15..0]를 생성하지 않으면 실행할 필요가 없으나, 인터럽트 제어기에 의해 생성된 디폴트 벡터 INT_VECTOR[15..0]를 사용한다.
도면의 하단에는 버스 인터페이스(420)와 판독 벡터 라인 INT_RD_VECTOR 입력(422)이 도시되어 있다. INT_RD_VECTOR 라인 입력이 액티브이고, 인터럽트 소스에서 인식 인터럽트 요청이 진행중이면, 인터럽트 벡터 INT_VECTOR[15..0]의 하위 부분은 차기 버스 사이클에서 버스 D-라인상에 배치된다. INT_RD_VECTOR 라인 또한 소스가 자신의 INT_VECTOR[15..0]를 생성하지 않으면 실행되지 않는다.
각 인터럽트 소스는 생성하는 각각의 인터럽트에 대해 세개의 (하나를 선택적으로 추가할 수 있음) 1비트 변수를 가진다. 또한, 선택적인 INT_VECTOR[15..0] 변수를 가진다.
1. INT_STATUS : 이 변수는 소스가 CPU를 인터럽트하고자 할 때 '1'이고, 인터럽트 소스가 인터럽트하지 않을 때는 '0'이다. 이 변수는 별도의 레지스터, 플립플롭이거나 (한정된) 상태표시 기계에서 상태에 의해 나타난다. 이 변수는 폴링용 버스에 의해 판독된다. 동일한 레지스터내의 다른 변수들은 하드웨어에 의해 변경된다. 변수를 해제하고 설정하는 것은 INT_CLEAR (그리고 진단용인 선택적 INT_SET) 변수를 통해 실행된다. 변수의 어드레스는 특정 인터럽트 소스에 할당된 버스 어드레스 범위내에서 매핑된다.
2. INT_ENABLE : 이 변수를 '1'로 설정하여 INT_STATUS 변수를 인터럽트 요청 라인으로 (OR 게이트를 통해) 허용하거나, '0'으로 설정하여 INT_STATUS 변수를 무시하여 인터럽트 요청 라인으로부터 절단할 수 있다. INT_ENABLE은 PI-버스를 통해 판독하고 기입된다. 변수의 어드레스는 특정 인터럽트 소스에 할당된 PI-버스 어드레스 범위내에서 매핑된다.
3. INT_CLEAR : INT_STATUS[b]는 대응하는 INT_CLEAR 변수에 '1'을 기입하여 해제한다. 변수에 '0'을 기입하면 무시된다. 변수에 '1'을 기입하면, 변수는 자동으로 '0'으로 리셋된다. 변수의 어드레스는 특정 인터럽트 소스에 할당된 버스 어드레스 범위내에서 매핑된다.
4. INT_SET : 이 선택적인 변수를 대응하는 INT_SET 변수에 '1'을 기입하면 '1'로 설정되며 특정 소스의 인터럽트를 시뮬레이트 할 수 있다. 변수에 '0'을 기입하면 무시된다. 변수에 '1'을 기입하면, 변수는 자동으로 '0'으로 리셋된다. 이 변수는 선택적이다. 변수의 어드레스는 특정 인터럽트 소스에 할당된 PI-버스 어드레스 범위내에서 매핑된다.
INT_VECTOR[15..0] : 인터럽트 벡터 변수 INT_VECTOR의 하위 16비트는 인터럽트 소스(418)에 의해 생성된다. 인터럽트 소스(418)는 판독 벡터 라인 INT_RD_VECTOR(422)상에서 요청을 수신하고 특정 인터럽트가 인식된 후에 하위 16비트를 생성한다. INT_VECTOR[15..0] 변수는 고정된 상수이거나 프로그래밍가능한 레지스터이다. 고정된 상수라면, 그 값은 하드 와이어드이다. 프로그래밍가능한 레지스터인 경우, 어드레스는 인터럽트 소스에 할당된 PI-버스 어드레스 범위에서 매핑된다 (인터럽트 소스에서 프로그래밍가능한 INT_VECTOR[15..0] 변수는 인터럽트 소스에 위치한 로컬 INT_VECTOR[15..0] 어드레스를 통해 판독된다). 일반적으로, 두개의 최하위 비트가 0이어야 테이블에서 오프셋으로 사용된 32비트 어드레스 단어로서 사용될 수 있다. 이 변수는 선택적이다; 인터럽트 디폴트 소스는 기본적으로 INT_VECTOR의 하위 16비트를 생성한다. 요약하자면, 상기 변수와 인터럽트 소스내의 기타 항목들에 대한 상세한 매핑에 대해서는 여기에서 다루어지지 않는다. 별도의 PI-버스 어드레스는 하나 또는 그 이상의 주소지정가능한 레지스터를 추가 또는 결합하여 형성할 수 있다.
모든 인터럽트 소스에 대해, 모든 인터럽트들은 동일한 인터럽트 요청 라인 INT_REQ[x] 또는 상이한 인터럽트 요청 라인에 연결된다. 도 5A와 도 5B에서, 다양한 실시예들이 OR-게이트를 통해 나타나있다. 5B도의 방법은 좀더 융통성이 있다. 5C도에서는, 필요하다면 다양한 인터럽트 요청이 하나의 인터럽트 요청 라인에서 체인화될 수 있다. 5D도에서는, 인터럽트 인식 라인으로의 정확한 매핑이 다중화되면 인터럽트 요청 라인을 프로그래밍가능하도록 할 수 있다.
간단한 인터럽트 소스는 집단화하여 하나의 커다란 인터럽트 소스로 통합되어 버스 인터페이스, 요청 및 인식 메카니즘에 대한 비용과 INT_VECTOR[15..0] 변수를 줄일 수 있다. 모든 인터럽트 소스는 최소한 하나의 라인을 가져야 하며, 인터럽트 핸들러만이 핸들링을 할 수 있다. 각 인터럽트 요청 라인 INT_REQ[x]에 대해, 하나의 인터럽트 인식 라인 INT_ACK[x]는 실행되거나 되지 않는다.
도 6은 인터럽트 디폴트 벡터 생성기의 블럭도이다. 인터럽트 인식 라인 INT_ACK[N-1..0](602)은 좌측에서 입력된다. 도면의 하단에, PI-버스 인터페이스(608)와 판독 벡터 라인 INT_RD_VECTOR 입력(610)이 도시되어 있다. INT_RD_VECTOR 라인 입력과 INT_ACK[x]가 액티브이면, 인터럽트 벡터 INT_VECTOR[15..0](606)의 하위 부분은 차기 PI-버스(612) 사이클에서 인터럽트 디폴트 벡터 생성기에 의해 PI-버스 D-라인상에 배치된다.
INT_VECTOR[15..0] : 인터럽트 디폴트 벡터 생성기에 의해 생성된 (디폴트) 인터럽트 벡터 변수 INT_VECTOR의 하위 16비트이다. 이 생성기는 판독 벡터 라인 INT_RD_VECTOR 상에 요청을 수신하고 INT_ACK[x]가 액티브인 경우 변수를 생성한다. 인터럽트 소스내의 INT_VECTOR[15..0]에 대한 세부사항들은 동일하다.
N다른 INT_VECTOR[15..0] 변수의 배열은 입력되는 INT_ACK[x] 라인 각각에 하나씩 구현되어, 각각의 우선순위 레벨에 대해 서로 다른 인터럽트 벡터가 생성될 수 있도록 한다. 인터럽트 디폴트 벡터 생성기는 인터럽트 제어기와 통합되어 비용을 삭감할 수 있다.
CPU에 대한 유일한 요구사항은 CPU 인터럽트 라인 CPU_INT[M-1..0]에 연결될 충분한 인터럽트 입력을 가지며, 인터럽트 벡터 INT_VECTOR를 판독할 수 있도록 버스 판독 요청을 발행할 수 있어야 하는 것이다. 이러한 판독 요청은 CPU 하드웨어를 통해 직접적으로 또는 소프트웨어에서 인터럽트 루틴을 통해 발행된다.
상호연결
CPU, 인터럽트 제어기, 그리고 다양한 인터럽트 소스들에 대한 상호연결 구조에 대해서는 많은 요구사항이 있다.
인터럽트 요청 라인 INT_REQ[x]는 분리되지 않는다. 이들은 모두 아래의 사항들을 포인트-투-포인트로 연결한 것이다.
. 두개의 서로다른 인터럽트 소스들의 INT_REQ[x] 출력과 INT_REQ[x] 입력
. 동일한 인터럽트 소스의 INT_REQ[x] 출력과 다른 INT_REQ[x] 입력 (도 5A 내지 도 5D 참조)
. 인터럽트 소스의 INT_REQ[x] 출력과 인터럽트 제어기의 INT_REQ[x] 입력
인터럽트 소스에 있어, 인터럽트 요청 라인 INT_REQ[x] 입력이 연결되면, INT_REQ[x] 출력도 또한 연결되어야 한다.
체인에서 첫번째 인터럽트 소스의 INT_REQ[x] 입력은 논리적 '0' 레벨에 연결된다.
인터럽트 인식 라인 INT_ACK[x]는 분리되지 않는다. 이들은 모두 아래의 사항들을 포인트-투-포인트로 연결한 것이다.
. 두개의 서로다른 인터럽트 소스들의 INT_ACK[x] 출력과 INT_ACK[x] 입력
. 동일한 인터럽트 소스의 INT_ACK[x] 출력과 다른 INT_ACK[x] 입력
. 인터럽트 제어기의 INT_ACK[x] 출력과 인터럽트 소스의 INT_ACK[x] 입력
. 인터럽트 소스의 INT_ACK[x] 출력과 인터럽트 디폴트 벡터 생성기의 INT_ACK[x] 입력
. 인터럽트 제어기의 INT_ACK[x] 출력과 인터럽트 디폴트 벡터 생성기의 INT_ACK[x] 입력
인터럽트 소스에 있어, 인터럽트 인식 라인 INT_ACK[x] 출력이 연결되면, INT_ACK[x] 입력과 출력도 또한 연결되어야 한다.
체인에서의 최종 인터럽트 소스의 INT_ACK[x] 출력은 인터럽트 디폴트 벡터 생성기의 대응하는 INT_ACK[x] 입력으로 루팅된다.
모든 인터럽트 소스는 최소한 하나의 인터럽트 요청 라인 INT_REQ[x]과 거의 모든 인터럽트 요청 라인들에 연결되어 있다.
INT_REQ[x] 라인 각각에 대해 대응하는 INT_ACK[x] 라인이 있다. INT_ACK[x] 라인에 인터럽트 소스가 연결되지 않은 경우에도, 인터럽트 디폴트 벡터 생성기로 루팅되어 인터럽트 디폴트 벡터 생성기가 디폴트 INT_VECTOR[15..0]를 생성할 수 있도록 해야 한다. 인터럽트 디폴트 벡터 생성기는 모든 INT_ACK[N-1..0] 라인들에 연결되어야 한다.
모든 인터럽트 소스는 인터럽트 인식 라인 INT_ACK[x] 하나에서 전체에 이르기까지 연결된다. INT_VECTOR[15..0]을 생성하는 인터럽트 소스는 인터럽트 인식 라인 INT_ACK[x]에 연결되지 않아도 된다.
INT_VECTOR[15..0]를 생성하는 인터럽트 소스는 인터럽트 판독 벡터 라인 INT_RD_VECTOR에 연결되어야 한다. INT_VECTOR[15..0]를 생성하지 않는 인터럽트 소스는 인터럽트 판독 벡터 라인 INT_RD_VECTOR에 연결되지 않아도 된다. 또한, 인터럽트 디폴트 벡터 생성기는 INT_RD_VECTOR 라인에 연결되어야 한다.
인터럽트 제어기, 모든 인터럽트 소스들, 인터럽트 디폴트 벡터 생성기는 PI-버스에 연결되어야 한다.
CPU 인터럽트 라인 CPU_INT[M-1..0]은 인터럽트 제어기의 CPU 인터럽트 라인 출력에 의해 CPU의 인터럽트 출력에 연결된다.
도 7은 상호연결 구조를 나타낸다. 여기에서, N=4이고 M=1이다. 네개의 인터럽트 요청 신호 INT_REQ[3..0]와 네개의 인터럽트 인식 라인 INT_ACK[3..0]이 있다.
다양한 인터럽트 소스들이 상호연결되는 방법은 도 8에 도시되어 있다. 또한, 모든 인터럽트 소스들, 인터럽트 제어기, 인터럽트 디폴트 벡터 생성기는 인터럽트 판독 벡터 라인 INT_RD_VECTOR 와 PI-버스에 연결된다. CPU는 도시되지 않았으며, CPU 인터럽트 버스는 단일 라인 CPU_INT로 구성된다. 이런 경우, 소스 C는 INT_ACK[x]에 연결되지 않고 디폴트 벡터의 효과적인 생성에 확실하게 좌우된다.
도 9는 인터럽트 구조를 요약하였으며, 특히 인터럽트 제어기 코어 INTC의 작동, 즉, 인터럽트의 여러가지 다양한 소스들을 보여준다. 우측에서 입력되는 것은 32개의 요청 라인들(918)이며, 각각이 우선순위 레벨을 나타낸다. 이 라인들에 대한 정보가 래치(904)에서 래치된다. 마스크 레지스터(906), AND(902)에서 AND되어 우선순위 결정 요소(908)와 부호기(903)로 이송된다. 부호기는 라인(920)상에서 6비트 신호 CPU_INT[5:0]로 부호화한다. 결정된 우선순위에 따라 코어로부터 제어 신호(911)를 획득하는 각각의 소스들(910, 912, ... 914)을 통해, 나열된 32개의 인식 라인들(909)을 인식한다. 도시된 바와 같이, 소스들은 시스템 버스(916)뿐만 아니라 요청 신호 라인 채널에도 신호를 송신한다. 프로세서는 6비트 인터럽트 코드를 수신하면, 인터럽트 소스에 상없이 핸들링을 스스로 설정한다. 이렇게 하여 상황을 저장하고 인터럽트 루틴으로 분기한다.
그런 다음, 프로세서는 인터럽트 벡터에 대한 버스 판독을 발행한다. 이것은 어드레스이며 인터럽트 제어기는 현재의 최고 인터럽트 레벨을 래치하여 그 레벨에 연결된 소스에게 데이지 체인 질의를 생성한다. 데이지 체인 지연후에 인터럽트 소스는 벡터를 버스에 배치한다. 그런 다음, 제어기는 ACK=OK를 버스 ACK 라인에 배치한다. 이제, 프로세서는 실제적으로 어드레스 오프셋으로 수신한 값을 사용하여 이후의 작동을 결정할 수 있다. 이러한 방법으로, 2차원 배열의 인터럽트가 실현되며, 여기에서는 물리적인 인터럽트 소스들과 각각에 생성된 인터럽트들이 독립적인 값을 가질 수 있다.
소스에는 여러가지 변수들이 있다. INT_X는 인터럽트가 존재하는지(1) 아닌지를 신호로 표시하며 이것은 플립플롭이다. 플립플롭은 인터럽트 소스도 일부로서 속하는 단위에 할당된 PI-버스 범위에서 PI-버스 매핑된 어드레스를 기입하여 리셋된다. 또한, ENAB_X는 (1)을 표시하여 적절한 INT_REQ(L) 라인상에 INT_X를 허용하며 이것은 버스를 통해 판독과 기입이 가능한 또다른 플립플롭이다. 주소는 이 소스가 일부로서 속한 단위에 위치한 버스 범위내에 있다.
도 10은 인터럽트 인식 데이지 체인의 예제와 하나의 특정한 인터럽트 소스에 대한 벡터 선택 메카니즘을 도시한다. 인터럽트 제어기 코어 묶음 (1002)(=909)과 시스템 버스(1004)가 상단에 도시된다. 비트 INT_REQ_X와 인터럽트 인식 INT_ACK_IN이 좌측으로부터 도착한다. 후자는 래치(1008)를 기동하는 요소(1016)에서 반전되어 INT_REQ_X를 래칭한다. '0'이 저장된 경우, 반전된 래치 출력은 AND 게이트(1014)를 개방하여 INT_ACK_OUT이 우측으로 이동할 수 있게 한다. '1'이 저장된 경우, AND 게이트(1014)는 차단되고 인터럽트 제어기 코어로부터 '1'을 수신하는 AND(1010)가 개방되어 버퍼(1012)를 기동한다. 이렇게 하면 인터럽트 벡터가 버스에 배치된다.

Claims (11)

  1. 서브시스템으로서 중앙처리장치와, 상기 중앙처리장치에 단일 인터럽트 벡터를 선택적으로 신호전송하는 인터럽트 핸들러 수단과, 상기 인터럽트 핸들러 수단에 연결되어 인터럽트 요청 신호와 인터럽트 인식 신호를 교환하는 데이지 체인 수단을 거치는 복수의 인터럽트 소스와, 상기 모든 서브시스템들을 상호연결하는 버스 수단을 구비하는 데이터 프로세서에 있어서, 상기 인터럽트 핸들러 수단이 병렬 연결된 모든 인터럽트 소스에 판독 벡터 명령을 병렬로 통신하여 상기 버스 수단에 실제 인터럽트 어드레스 벡터를 전송하는 것을 특징으로 하는 데이터 프로세서.
  2. 제 1 항에 있어서, 상기 데이지 체인 수단은 다수의 개별적인 데이지 체인을 포함하며, 상기 개별적인 데이지 체인들간에 우선순위를 허용하는 데이터 프로세서.
  3. 제 1 항에 있어서, 인터럽트 디폴트 벡터 생성기가 상기 데이지 체인 수단을 접합하는 데이터 프로세서.
  4. 제 1 항에 있어서, 상기 버스 수단은 인터럽트 절차 이외에 다른 유형의 이송을 허용하는 데이터 프로세서.
  5. 제 1 항에 있어서, 상기 인터럽트 벡터는 상기 인터럽트 핸들러 수단과 통신하는 상위부분과 데이지 체인 수단을 거치는 하위 부분을 갖는 데이터 프로세서.
  6. 제 1 항에 있어서, 상기 인터럽트 핸들러 수단은 동시에 수신한 복수의 인터럽트 레벨 신호 전송 중에서 결정하는 인터럽트 결정 수단을 구비하여, 단일의 인터럽트 신호 전송을 상기 중앙처리장치로 전달하는 데이터 프로세서.
  7. 제 1 항에 있어서, 다양한 별도의 병렬 연결된 데이지 체인을 포함한 2차원의 인터럽트 신호 전송 수단을 구비하며, 상기 신호 전송 수단은 특정 인터럽트 벡터의 다양한 서브필드에 대한 개별적인 우선순위 결정을 허용하는 데이터 프로세서.
  8. 제 7 항에 있어서, 첫 번째 순위결정 구간에서 상기 인터럽트 핸들러 수단을 통해 중앙집중 방식으로 복수의 인터럽트 요구들 중에서 선택하고, 두 번째 순위결정 구간에서 원래 상기 데이지 체인을 따라 논리적으로 배열된 복수의 인터럽트 요구들 중에서 배분 데이지 선택 방법을 실행하는 데이터 프로세서.
  9. 제 1 항에 있어서, 최소한 200개의 서로 다른 인터럽트 소스 및/또는 인터럽트 이유를 허용하는 데이터 프로세서.
  10. 제 1 항에 있어서, 약 16 내지 32개의 서로 다른 우선순위 레벨을 지원하는 데이터 프로세서.
  11. 제 1 항에 있어서, 복수의 인터럽트 소스 및/또는 인터럽트 이유들 중에서 인터럽트 우선순위를 융통성있게 할당하는 데이터 프로세서.
KR1019980703733A 1996-09-20 1997-09-03 범용멀티소스인터럽트구성을갖는고체데이터프로세서 KR19990071464A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP96202630.8 1996-09-20
EP96202630 1996-09-20
PCT/IB1997/001055 WO1998012634A2 (en) 1996-09-20 1997-09-03 Solid state data processor with versatile multisource interrupt organization

Publications (1)

Publication Number Publication Date
KR19990071464A true KR19990071464A (ko) 1999-09-27

Family

ID=8224405

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980703733A KR19990071464A (ko) 1996-09-20 1997-09-03 범용멀티소스인터럽트구성을갖는고체데이터프로세서

Country Status (6)

Country Link
US (1) US6098144A (ko)
EP (1) EP0865633B1 (ko)
JP (1) JP3894579B2 (ko)
KR (1) KR19990071464A (ko)
DE (1) DE69726400T2 (ko)
WO (1) WO1998012634A2 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10115885B4 (de) * 2001-03-30 2006-09-21 Infineon Technologies Ag Anordnung zur Priorisierung eines Interrupts
GB2381890B (en) * 2001-11-12 2003-10-29 Mentor Graphics Testing the interrupt sources of a microprocessor
GB2381891B (en) * 2001-11-12 2003-10-29 Mentor Graphics Testing the interrupt priority levels in a microprocessor
GB2396445B (en) * 2002-12-19 2005-12-21 Advanced Risc Mach Ltd An interrupt controller and interrupt controlling method for prioritizing interrupt requests generated by a plurality of interrupt sources
US9753765B1 (en) * 2004-03-22 2017-09-05 Altera Corporation Multi-processor integrated circuits
US7752353B2 (en) * 2007-10-22 2010-07-06 Sandisk Il Ltd. Signaling an interrupt request through daisy chained devices
US7953913B2 (en) * 2008-04-10 2011-05-31 Sandisk Il Ltd. Peripheral device locking mechanism
US8850281B2 (en) 2009-05-12 2014-09-30 Empire Technology Development Llc Digital signatures
US9032476B2 (en) * 2009-05-12 2015-05-12 Empire Technology Development Llc Secure authentication
US8379856B2 (en) * 2009-06-17 2013-02-19 Empire Technology Development Llc Hardware based cryptography
US8606975B2 (en) * 2010-05-21 2013-12-10 Oracle International Corporation Managing interrupts in a virtualized input/output device supporting multiple hosts and functions
US9672186B2 (en) * 2014-06-20 2017-06-06 Nxp Usa, Inc. Electronic monitoring device having wake-up for daisy chain
CN110121703B (zh) * 2016-12-28 2023-08-01 英特尔公司 用于向量通信的系统和方法
CN116150054B (zh) * 2023-02-24 2023-09-05 广州万协通信息技术有限公司 一种基于pcie的中断信息处理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0259949A (ja) * 1988-08-26 1990-02-28 Toshiba Corp ディジーチェーン割込み処理装置
JPH03142504A (ja) * 1989-10-30 1991-06-18 Toshiba Corp プログラマブルコントローラ
JPH05233318A (ja) * 1992-02-18 1993-09-10 Nec Corp マイクロプロセッサ
US5481725A (en) * 1993-08-03 1996-01-02 Intel Corporation Method for providing programmable interrupts for embedded hardware used with programmable interrupt controllers
US5511200A (en) * 1993-12-01 1996-04-23 Intel Corporation Method and apparatus for providing an enhanced programmable priority interrupt controller
US5745772A (en) * 1996-08-02 1998-04-28 Micron Electronics, Inc. Advanced programmable interrupt controller

Also Published As

Publication number Publication date
JP3894579B2 (ja) 2007-03-22
WO1998012634A2 (en) 1998-03-26
EP0865633B1 (en) 2003-11-26
DE69726400T2 (de) 2004-08-26
EP0865633A2 (en) 1998-09-23
DE69726400D1 (de) 2004-01-08
US6098144A (en) 2000-08-01
WO1998012634A3 (en) 1998-06-04
JP2000501538A (ja) 2000-02-08

Similar Documents

Publication Publication Date Title
US5301279A (en) Apparatus for conditioning priority arbitration
US4803622A (en) Programmable I/O sequencer for use in an I/O processor
US5555425A (en) Multi-master bus arbitration system in which the address and data lines of the bus may be separately granted to individual masters
US4485438A (en) High transfer rate between multi-processor units
EP0759594A2 (en) Modular crossbar interconnections in a digital computer
US4378589A (en) Undirectional looped bus microcomputer architecture
US4115854A (en) Channel bus controller
JPS58500145A (ja) 割込連結と監視システム
US5210828A (en) Multiprocessing system with interprocessor communications facility
JPS629948B2 (ko)
CN1570907B (zh) 多处理器系统
KR19990071464A (ko) 범용멀티소스인터럽트구성을갖는고체데이터프로세서
WO1999056217A1 (en) Interrupt controller
JP3208332B2 (ja) 割込み装置
US5664142A (en) Chained DMA devices for crossing common buses
JP2000207247A (ja) コンピュ―タシステムおよびこのコンピュ―タシステムを動作させる方法
US5481677A (en) Data transfer system in which data is transferred to or from a data memory during an instruction fetch cycle
US6487617B1 (en) Source-destination re-timed cooperative communication bus
EP0118669A2 (en) Channel subsystem
US6701388B1 (en) Apparatus and method for the exchange of signal groups between a plurality of components in a digital signal processor having a direct memory access controller
JPH10283304A (ja) 割り込み要求を処理する方法及びシステム
WO1992017846A1 (en) Apparatus and method for fast i/o transfer
JPS58105371A (ja) 多重計算装置とそれらに用いる通信バスの構造
JPH0227696B2 (ja) Johoshorisochi
EP0376003A2 (en) Multiprocessing system with interprocessor communications facility

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application