KR100292660B1 - 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템 - Google Patents

프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템 Download PDF

Info

Publication number
KR100292660B1
KR100292660B1 KR1019960703537A KR19960703537A KR100292660B1 KR 100292660 B1 KR100292660 B1 KR 100292660B1 KR 1019960703537 A KR1019960703537 A KR 1019960703537A KR 19960703537 A KR19960703537 A KR 19960703537A KR 100292660 B1 KR100292660 B1 KR 100292660B1
Authority
KR
South Korea
Prior art keywords
interrupt
iau
bus
register
processor
Prior art date
Application number
KR1019960703537A
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 피터 엔. 데트킨
Application granted granted Critical
Publication of KR100292660B1 publication Critical patent/KR100292660B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • 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)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

멀티프롯서 프로그래머블 인터럽트 제어기(MPIC)는 인터럽트 요구(IRQ) 관련 메시지를 처리하기 위해 1개의 클록 와이어와 2개의 데이타 와이어를 가진 별개의 3개 와이어 인터럽트 버스(15)를 갖는다. 각 프로세서 칩(114)은 IRQ를 수용하기 위해 인터럽트 버스(15)에 접속된 내장 인터럽트 수용 유니트(IAU)를 갖는다. I/0 디바이스 인터럽트 라인은 각기 인터럽트 버스(15)에 접속된 하나 이상의 인터럽트 전달 유니트(IDUs, 113)에 연결된다. 최하위 우선순위 모드 중재 프로시저에 대한 수정은 역시 자격있는 프로세서에게 IRQs의 일정 분배를 위한 수단을 제공한다. IRQs에 대한 실제적 서비스 제공은 시스템 버스(110)에 의해 행해진다. MPIC 클러스터 시스템은 개객의 MPIC 시스템(클러스터)의 인터럽트 처리능력이 성능을 다루는 인터럽트가 클러스터 관리자의 사용에 의해 초과될 때마다 확장된 인터럽트 제어기 시스템에 개개의 MPIC 시스템을 상호 접속하는 수단을 제공한다.

Description

[발명의 명칭]
프로세서가 통합된 인터럽트 제어기를 갖춘 멀티프로세서 프로그래머블 인터럽트 제어기 시스템
[도면의 간단한 설명]
제1도는 종래의 일반적 기술인 유니프로세서 프로그래머블 인터럽트 제어기의 블록도.
제2도는 바람직한 멀티프로세서 프로그래머블 인터럽트 제어기(MPIC) 시스템의 블록도.
제3도는 인터럽트 전달 유니트(IDU)의 구조를 나타내는 도.
제4도는 I/O 선택 레지스터 비트 할당을 나타내는 도.
제5도는 I/0 ID 레지스터 비트 할당을 나타내는 도.
제6도는 I/0 버젼 레지스터 비트 할당을 나타내는 도.
제7도는 방향지정 테이블 엔트리 비트 할당 레이아웃을 나타내는 도.
제8도는 인터럽트 수용 유니트(IAU)의 구조를 나타내는 도.
제9도는 IAU ID 레지스터 비트 할당을 나타내는 도.
제10도는 15 MPIC 시스템까지 상호접속하기 위한 클러스터 관리자의 사용을 나타내는 도.
제11도는 IAU 목적지 포맷 레지스터 비트 할당을 나타내는 도.
제12도는 IAU 논리 목적지 레지스터 비트 할당을 나타내는 도.
제13도는 IAU 로컬 벡터 테이블 비트 할당 레이아웃을 나타내는 도.
제14도는 IAU 인터럽트 명령 레지스터 비트 할당 레이아웃을 나타내는 도.
제15도는 IRR, ISR 및 TMR 비트 할당을 나타내는 도.
제16도는 IAU 인터럽트 수용 프로세스의 흐름도.
제17도는 IAU 타스크 우선순위 레지스터 비트 할당을 나타내는 도.
제18도는 IAU 의사 인터럽트 벡터 레지스터 비트 할당을 나타내는 도.
제19도는 IAU 인터럽트 종료 레지스터 비트 할당을 나타내는 도.
제20도는 IAU 원격 레지스터를 나타내는 도.
제21도는 IAU 버젼 레지스터 비트 할당을 나타내는 도.
제22도는 레벨 트리거 인터럽트용 EOI 우선순위 메시지 포맷을 나타내는 도.
제23도는 쇼트 메시지 포맷을 나타내는 도.
제24도는 IAU 인터럽트 버스 상태 사이클 디코딩을 나타내는 도.
제25도는 포커스 프로세서 메시지 포맷이 없는 최하위 우선순위를 나타내는 도.
제26도는 원격 판독 메시지 포맷을 나타내는 도.
제27도는 IAU 에러 상태 레지스터 비트 할당을 나타내는 도.
제28도는 분할 구성 레지스터 비트 할당을 나타내는 도.
제29도는 IAU 타임 벡터 테이블 포맷을 나타내는 도.
[발명의 상세한 설명]
[발명의 분야]
본 발명은 멀티프로세서 시스템에서 인터럽트 요구 메시지에 대한 관리에 관한 것이다.
[발명의 배경]
프린터, 스캐너 및 디스플레이 디바이스와 같은 컴퓨터 품목을 포함하는 입/출력 주변 장치는 적당한 기능을 보증하기 위하여 호스트 프로세서에 의해 주기적인 서비스 제공을 요구한다. 서비스는 예를 들면, 데이타 전달, 데이타 수집, 및/또는 제어신호를 포함할 수 있다. 각 주변장치는 실제로 디바이스의 형태 뿐만 아니라 그것의 프로그램된 사용법에 종속되는 별개의 서비싱 스케쥴을 갖는다. 호스트 프로세서는 하나 이상의 배경 프로그램을 실행하는 동안 디바이스들의 각각의 요구에 따라서 이들 디바이스 사이에서 자신의 서비싱 활동을 다중 송신하도록 요구받는다. 서비스 요구를 호스트에 조언하는 2가지 방법은 폴드 디바이스와 디바이스 인터럽트 방법이 사용되어 왔다.
전자의 방법에 있어서는, 각 주변 디바이스는 플래그가 서비스 요구를 지시하는 것으로 세트되었는지를 알기 위해 주기적으로 검사되고, 반면에 후자의 방법에 있어서는, 디바이스 서비스 요구는 호스트를 인터럽트할 수 있는 인터럽트 제어기로 루팅되고 현 프로그램으로부터 특별한 인터럽트 서비스 루틴으로 분기를 강제한다. 이 인터럽트 방법은 호스트가 폴링하는 동안 불필요한 클럭 사이클에 충달될 필요가 없기 때문에 유리하다. 본 발명이 역점을 두는 것은 이 후자의 방법이다. 본 발명에 의해 역점을 둔 특별 문제는 멀티프로세서 시스템 환경에 있어서 인터럽트의 관리이다.
주로 공통의 주변 디바이스를 갖는 일련의 네트워크된 컴퓨터인 멀티프로세서 시스템은 인터럽트 제어방법을 계획하는데 있어서 난제를 일으킨다. 예를 들어, 많은 사용자들에게 서비스하는 컴퓨터 네트워크의 경우에 있어서, 어떠한 최적의 방식으로 인터럽트 처리적재를 분배하는 것은 매우 바람직하다. 상위 우선순위 일을 처리하는 프로세서는 하위 우선순위 일을 가진 프로세서를 이용할 수 있을 때 이런 의무가 경감되어져야 한다. 최하위 우선순위로 동작하는 프로세서는 인터럽트 서비싱 요구에 의해 균일하게 부담되어야 한다. 또한 특별한 환경은 특별한 I/O 디바이스가 미리 선택된(또는 포커스) 프로세서에 의해 독점적으로 서비스되어야 하는 것을 요구할 수 있다. 이와 같이 본 발명은 멀티프로세서 시스템에 있어서 최적의 동적 및 정적 인터럽트 서비싱 문제를 다룬다.
인텔사의 82C59A 및 82380 프로그래머블 인터럽트 제어기(PICs)에 의해 구현된 종래의 기술은 많은 외부 인터럽트 요구 입력을 수용하도록 고안되었다. 제 1도에서 도시된 그런 제어기의 필수 구조는 다음의 6개의 주요 블록으로 구성된다.
IRR: 인터럽트 요구 레지스터(11)는 서비스를 요구하는 라인(16)의 모든 인터럽트 레벨(IRQx)을 저장한다.
ISR: 인터럽트 서비스 레지스터(12)는 서비스되고 있는 모든 인터럽트 레벨, 인터럽트 종료(EOI)를 수신시에 갱신되고 있는 상태를 저장한다.
IMR: 인터럽트 마스크 레지스터(13)는 어느 IRQ 라인(16)이 마스크되어야 하는지 또는 IRR(11)에서 동작에 의해서 디스에이블되어야 하는지를 나타내는 비트를 저장한다.
VR: 레지스터 집합으로서, 각 IRQ 라인(16)에 대해 하나씩인 벡터 레지스터(19)는 호스트가 요구를 서비스하기 위해 모든 필요정보를 포함하면서, 호스트 프로세서에 제공된 데이타 버스(17)상의 미리 프로그램된 인터럽트 벡터 수를 저장한다.
PR: 우선순위 리솔버(15), IRR(11)에 세트된 비트의 우선순위를 결정하는 논리블럭, 최상위 우선순위가 선택되고 호스트 프로세서로부터 인터럽트 승인 사이클 (INTA) 동안에 ISR(12)의 대응하는 비트에 저장된다.
제어 논리: 동일 PIC내에서 다른 내부 블록의 전체 동작을 조정하고, IRR(11)의 하나 이상의 비트가 액티브일 때, 호스트 입력 인터럽트(INT) 라인을 활동시키고, VR(19)가 INTA 사이클 동안에 데이타 버스(17)로 인터럽트 벡터를 구동하는 것을 가능하게 하고, 현재 서비스되는 것보다 같은 우선순위 또는 낮은 우선순위를 갖는 모든 인터럽트를 금지시킨다.
몇가지 다른 방법이 여러 종류의 IRQ 라인(16)에 우선순위를 할당하는데 사용되어 왔으며, 다음 사항을 포함한다:
1) 완전 내포된 모드,
2) 자동 순환- 동일 우선순위 디바이스, 모드
3) 특정 순환- 특정 우선순위 모드
완전 내포된 모드는 모든 IRQ 입력 라인(16)이 최상위 우선순위로부터 최하위 우선순위로 배열되는 멀티레벨 인터럽트 구조를 지원하며, 대표적으로 IRQ(0)는 최상위 우선순위로 할당되는 반면에 IRQ(7)는 최하위 우선순위에 할당된다.
인터럽트하는 디바이스가 동일 우선순위일 때 자동 순환 우선순위는 가장 최근에 서비스된 IRQ 라인이 최하위 우선순위에 할당되도록 할당된 우선순위를 순환(순환이동) 시킴으로써 달성된다. 이 방법에 있어서, 인터럽트 서비스 접근가능성은 각 경쟁 디바이스에 대해 통계적으로 레벨되는 경향이 있다.
특정 순환방법은 사용자가 어떤 IRQ 라인이 최하위 우선순위를 받는지를 선택하고 그 다음 모든 IRQ 라인이 순차적으로(순환적을) 더 높은 우선순위에 할당되는 것을 허용함으로써 사용자에게 융통성을 제공한다.
상기 설명으로부터, 설명된 유형의 PIC 구조는 유니 프로세서 시스템을 수용하지만, 복수의 주변 디바이스를 갖는 본 발명의 주안점이 되는 복수의 공유 주변 디바이스를 갖는 멀티프로세서 시스템을 수용하지 않음을 알 수 있다.
[발명의 요약]
본 발명의 목적은 다음의 성능을 포함하는, 그러나 제한되지는 않는, 멀티프로세서 프로그래머블 인터럽트 제어기(MPIC) 시스템을 제공하는 것이다.
1) 인터럽트 요구(IRQ) 및 IRQ 수신 승인신호에 대한 통신과 자격있는 서버 사이에 IRQ 서비스 중재를 위한 메모리(또는 시스템) 버스와 구별되는 개별 인터럽트 버스,
2) 각기 자신의 일련의 인터럽트 라인을 가진 복수의 I/O 주변 서브 시스템에 대한 인터럽트 서비스 제공,
3) 동적 및 정적 멀티프로세서 인터럽트 관리,
4) 프로그래머블 인터럽트 벡터와 각 IRQ 핀을 위한 정보 조정,
5) 임의의 프로세서가 인터럽트 타스크의 동적 재할당을 위해 임의의 다른 프로세서를 인터럽트하도록 하는 프로세서간 인터럽트,
6) 인터럽트 타스크의 프로그래머블 재할당을 정의하는 운영체제,
7) 마스크 불가능 인터럽트(NMIs), 프로세서 리세트와 시스템 디버깅에 관계된 시스템 와이드 기능 지원,
본 발명은 다음 3개의 주요 서브시스템 성분을 포함하는 MPIC 시스템 구조 수단에 의해 이들 성능을 달성한다.
1) 메모리(시스템) 버스와 구별되는 별개의 인터럽트 버스,
2) 인터럽트 버스와 일련의 IRQ 핀에 접속되고 프로세서 선택 및 인터럽트 우선순위와 벡터 정보를 위한 방향 지정 테이블을 갖는 I/0 인터럽트 전달 유니트(IDU),
3) 수용 승인, IRQ 보류, 네스팅 및 마스킹 동작과 프로세서간 인터럽트 관리를 포함하는 특정 시스템에 대한 인터럽트 요구를 관리하기 위해 인터럽트 버스에 접속된 프로세서 관련 인터럽트 수용 유닛(IAU),
더욱 상세히는 본 발명은 3 와이어 동기식 버스를 사용하는데, 이들중 2개는 데이타용 와이어, 1개는 클록용 와이어이고, 2개의 데이타 와이어중 1개는 버스 및 최하위 우선 순위 중재용이다.
또한, 클러스터 관리자에 의해서 상호 접속된 복수의 MPIC 시스템을 포함하는 클러스터된 계층적 인터럽트 제어 시스템은 인터럽트 메시지 소스 및 목적지를 위한 기본 MPIC 성능이 초과될 때 사용하기 위해 개시된다.
본 발명은 아래에 주어진 자세한 설명과 발명에 대해 제출한 실시예에 대한 첨부 도면으로부터 더 완전하게 이해될 수 있지만 그 실시예의 도면은 특별한 실시예에 대하여 발명을 한정하는 것이 아니라 단지 설명과 이해를 위한 것이다.
[바람직한 실시예의 상세한 설명]
멀티프로세서 프로그래머블 인터럽트 제어기(MPIC)가 개시되었다. 다음 설명에서, 본 발명의 바람직한 실시예에 대한 완전한 이해를 제공하기 위해 여러 특정 상세 사항이 설명된다. 그러나, 당업자는 이러한 상세 사항 없이도 본 발명이 실시될 수 있다는 것은 자명할 것이다. 또한 본 발명을 불필요하게 애매하지 않도록 하기 위해 공지된 회로는 상세히 나타내지 않거나 블록도 형태로 나타내었다.
또한, 본 발명을 설명하는데 있어서, 본 바람직한 실시예에 특유한 신호 이름이 참조된다. 이러한 특정 이름에 대한 참조는 본 발명의 범위 및 정신에 대한 제한으로 이해되어서는 안된다.
A. 구조의 개관
멀티프로세서 환경에서 인터럽트 서비스를 조정하기 위해 멀티프로세서 프로그래머블 인터럽트 제어기(MPIC) 시스템이 설계되었다. 현재의 실행은 주로 다수의 주변장치의 인터럽트가 프로그래머블 인터럽트 제어기(PIC)에 의해 도움을 받는 단일 프로세서에 의해 서비스되는 유니프로세서와 관련된다. 멀티프로세서에서, 유사한 프로세스 그룹 사이에 인터럽트 서비스 제공의 부담을 공유하는 것은 흔히 바람직하다. 이것은 프로세스 관련 그룹에 인터럽트 서비스 요구를 방송하는 능력과 프로세서 사이의 타스크의 적절한 할당을 결정하는 매커니즘을 의미한다. 유니프로세서 설계 문제는 매우 간단하다: 프로세서에 전용된 PIC는 각각의 인터럽트 요구(IRQ) 라인에 우선순위를 할당하고, 할당된 우선순위에 따라 요구를 명령하며 적절한 서비스 루틴을 적시에 개시시키기 위해 프로세서로 필요한 정보를 전달한다.
MPIC 시스템은 여러 프롯서에 정적 및 동적 인터럽트 타스크 할당을 제공한다.
완전한 정적 모드로 작동할 때, MPIC 시스템은 규정된 스케쥴에 따라 각각의 인터럽트를 할당하는 유니프로세서 시스템의 PIC로서 많은 기능을 한다.
동적 모드로 작동할 때, MPIC는 프로세서간 관련 타스크 우선순위를 고려하여 인터럽트 타스크 할당을 관리한다.
더욱 전형적인 사용은 정적 및 동적 인터럽트 관리에 대한 요소를 필요로 하는 것이 예상된다. 예를 들면, 허가 고려사항이 서비스 소프트웨어의 공유 사용을 배제할 때 정적 할당이 이루어질 수 있다. 다른 환경하에서, 공통 주변 서브시스템을 공유하는 프로세서의 서브세트에 인터럽트 서비스 타스크를 제한하기 위해 바람직할 수 있다. 극단적인 경우에, 모든 프로세서는 모든 주변 서브시스템으로부터의 인터럽트 요구에 종속된다.
제 2도는 바람직한 MPIC 시스템(100)의 블록도이다. 이 시스템은 4개의 주요부: 메모리(또는 시스템) 버스(100); 메모리 버스(110)와 별개인 인터럽트 버스 (115); 메모리 버스 인터페이스(MBI/F)(117)에 의해 메모리 버스(110)에 그리고 인터럽트 허용 유닛(IAUs)(114)에 의해 인터럽트 버스(115)에 인터페이스되는 다수의 프로세서 유닛(CPUs)(112); 및 메모리 버스 인터페이스(MBI/F)에 의해 메모리 버스(110)에 그리고 인터럽트 전달 유닛(IDU)(113)에 의해 인터럽트 버스(115)에 인터페이스되는 적어도 하나의 I/O서브 시스템(116)으로 이루어진다.
I/O 서브시스템(116)은 IDU(113)에 접속된 다수의 인터럽트 요구(IRQ) 라인을 갖는 단일 디바이스 또는 각각이 하나 이상의 IRQ 라인(119)을 갖는 디바이스의 집합일 수 있다. 바람직한 실시예에서, 각각의 IDU(113)는 16개 IRQ 입력 라인까지 수용할 수 있다. 결과적으로, MBI/F(118)는 I/O 서브시스템(116)을 메모리 버스(110)에 접속하기 위한 단일 또는 복수의 인터페이스 유닛일 수 있다.
바람직한 실시예에서, IAU(114)는 더욱 효율적인 신호 접속을 위해 CPU(112) 칩상에 있다. 또한 MBl/F(117)는 CPU 버스(120) 프로토콜이 메모리 버스(110)의 프로토콜과 양립한다면 필요하지 않을 수 있다.
제 2도의 구조는 시스템 성분 사이에 인터럽트-관련 제어 메시지를 보냄으로써 메모리 버스(110)에 의해 수행되어야만 하는 교통을 감소시키는 인터럽트 버스(115)를 제공한다. 메모리 버스(110)는 단지 IRQ의 실제 서비스에만 사용되며 IRQ 중재, 할당 및 수용승인에는 필요치 않다.
각각의 IDU는 입력라인(119)상에 16개의 IRQ까지 수용하며 각각의 액티브 IRQ 입력 라인에 대해 적절히 포맷된 IRQ 메시지를 인터럽트 버스(115)를 통해 모든 IAU(114)에 방송한다. IRQ 메시지는 IRQ 소스 및 IRQ의 우선순위를 식별하기 위한 모든 필요한 정보를 포함한다.
각각의 IAU(114)는 방송 메시지를 검사하여 이 메시지를 수용할 것인지의 여부를 결정한다. 만일 IRQ 메시지는 하나 이상의 IAU에 의해 수용된다면, 중재 프로시저가 경쟁 유닛 사이에 호출된다. 최하위 우선순위를 갖는 IAU는 중재에서 승리하여 IRQ를 수용하며, 자신의 관련 CPU로의 전달을 보류한다. 또한 IAU(114)는 인터럽트의 마스킹 및 내포를 제공하며 인터럽트 요구(INTR), 인터럽트 승인(INTA) 및 인터럽트 종료(EOI)를 포함하여 자신의 로컬 프로세서와의 모든 상호작용을 처리한다.
IAU(114)는 인터럽트 버스(114)상의 IRQ 방송을 수용할 뿐만 아니라 프로세서간 인터럽트를 발생할 수 있다. IAU는 또한 IAU와 관련된 CPU에 타이머를 제공한다.
B. 인터럽트 제어
모든 IDU(113) 및 IAU(114)의 인터럽트 제어기능은 멀티프로세서 시스템에서 인터럽트 소스로부터 인터럽트 목적지로 인터럽트를 전달함에 있어서 집합적으로 응답한다.
인터럽트는 시스템의 어딘가에서의 어떤 상태를 지시하는 이벤트이며 이런 상태를 처리하기 위해 하나 이상의 프로세서가 이런 상태를 처리할 것을 필요로 한다. 인터럽트에 응답하여 프로세서에 의해 취해진 행동은 인터럽트 서비스 또는 인터럽트 핸들링으로서 참조된다.
시스템에서 각각의 인터럽트는 시스템에서의 다른 인터럽트와 구별되는 식별자를 가진다. 식별자는 일반적으로 인터럽트의 벡터라고 참조된다. 벡터는 프로세서가 인터럽트를 위한 올바른 핸들러를 찾게 한다. 프로세서가 인터럽트를 수용할 때, 프로세서는 자신의 인터럽트 테이블에 핸들러의 엔트리 포인트를 위치시키기 위해 벡터를 사용한다. 이 구조는 16 내지 255 범위의 값을 갖는 240개의 별개의 벡터를 지지한다.
각각의 인터럽트는 프로세서의 다른 활동과 관련하여 서비스되어야 할 적시성을 결정하는 인터럽트 우선순위를 갖는다. 구조는 16개 가능한 인터럽트 우선순위를 허용한다: 제로는 최하위 우선순위가 되며 15는 최상위 우선순위가 된다. 타스크 우선순위 레지스터(TPR)에서의 값 15는 인터럽트 벡터를 요구하는 모든 인터럽트를 마스크 오프한다. 인터럽트 A에 대한 서비스가 인터럽트 B에 대한 서비스보다 긴급하다면, 인터럽트 A의 우선순위가 인터럽트 B의 우선순위보다 높다. 인터럽트 우선순위는 인터럽트의 벡터에 의해 함축되며, 즉 우선순위=벡터/16이다.
16개의 상이한 인터럽트 벡터는 단일 인터럽트 우선순위를 공유할 수 있다.
각각의 IAU(114)는 주어진 우선순위 클래스에서 단지 2개의 인터럽트를 보류할 수 있기 때문에, 클래스의 인터럽트의 갯수는 단일 CPU가 동작할 때만은 2개로 제한되는 것이 바람직하다. 그러나, N번의 CPU 기능횟수를 갖는 멀티프로세서 프로세서 동작에 대해, 클래스당 보류된 인터럽트의 바람직한 수는 N/2이다.
전형적으로, 우선순위 모델은 고(15)로부터 저(0)까지의 인터럽트 우선순위로 다음과 같이 구성될 수 있다.
따라서, 전원공급 등과 같은 긴급 주의를 필요로 하는 시스템 이벤트는 최고 우선순위를 가지며, 그 다음으로 프로세서(CPU) 인터럽트, 로컬 CPU 관련 인터럽트, IAU 타이머 인터럽트, I/0 인터럽트 및 프로시저 콜 관련 인터럽트 순으로 우선순위를 갖는다. 이 예에서, 우선순위 0는 사용되지 않았다.
IRQ는 멀트 프로세서 시스템의 외부(I/0) 디바이스, 로컬(CPU에 대해) 디바이스, IAU(114) 타이머 및 CPU를 포함하는 다수의 소스로부터 발생된다. I/0 디바이스 또는 CPU에 대해 로컬인 디바이스로부터의 IRQ는 신호 에지 트랜지션 또는 신호레벨을 사용하여 그들의 인터럽트 라인(119)을 활성화시킬 수 있다. IAU 타이머는 온-칩 내부 인터럽트를 발생시킨다. CPU는 셀프-인터럽트 소프트웨어, 선점 스케쥴링 테이블 룩-업 버퍼(TLB) 플러싱 및 인터럽트 진행을 지지하여 다른 CPU 또는 CPU 세트를 인터럽트할 수 있다. 프로세서는 자신의 로컬 IAU의 인터럽트 명령 레지스터(ICR)에 기록함으로써 인터럽트를 발생시킨다.
C. IDU 구조
제 3도에 도시된 IDU(114)는 I/0 인터럽트 라인(119)을 수용하는 한 세트의 IRQ 핀, 인터럽트 방향 지정 테이블(201) 및 인터럽트 버스(115)로부터 인터럽트 제어 관련 메시지를 송신 및 수신하는 메시지 유닛(202)으로 이루어진다. 방향 지정 테이블은 목적지(DEST) 모드 및 16개의 I/O 인터럽트 라인의 각각에 대한 벡터 엔트리를 갖는다.
인터럽트 라인 활성화는 대응 테이블 엔트리를 선택하여 인터럽트 버스(115)상에서 방송하기 위한 적절한 IRQ 메시지를 포맷팅하기 위해 송신/수신 유닛(202)에 전달한다.
방향 지정 테이블(201)의 내용은 소프트웨어로 제어된다. 각각의 테이블 엔트리 레지스터는 64 비트 폭이다. 모든 레지스터는 32 비트 판독 및 저장으로 액세스된다. 각각의 IDU(114)는 고유 어드레스에 위치된다.
또한, 각각의 IDU(114)는 5개의 32 비트 I/O 레지스터(203-207)를 갖는다.
선택 레지스터(204)는 제 4도에 도시된 바와 같이, 소프트웨어로 하위 8 비트(비트 0-7)에 기록함으로써 어느 I/O 레지스터의 내용이 윈도우 레지스터(203)에 나타나야 하는지를 선택한다. 이것은 나머지 4개 I/O 레지스터의 내용에 대한 소프트웨어 조작을 허용한다.
윈도우 레지스터(203)는 선택 레지스터(204)에 의해 선택된 레지스터에 매핑된다.
ID 레지스터(205)는 IDU의 실제 이름으로써 역할을 하는 IDU 4 비트 식별코드를 포함한다. 각각의 IDU에는 고유 이름(ID)이 할당된다. 비트 할당은 제 5도에 도시된다. 파워업시, 제로로 리세트된다. 그 내용은 사용전에 반드시 소프트웨어에 의해 공급되어야 한다. 중재 레지스터(206)는 IDU를 위한 버스 중재 우선순위를 포함한다. 그것의 초기 내용은 ID 레지스터(205)의 ID로부터 유도된다. 순환 우선순위 체계는 중재의 승리자가 최하위 우선순위 에이전트가 되고 중재 ID가 제로로 간극되는 인터럽트 버스 중재에 사용된다. 중재 ID가 15인 에이전트를 제외한 모든 다른 버스 에이전트는 자신의 ID를 1씩 증가시킨다. ID=15인 에이전트는 승리자의 ID를 가지며 1만큼 증가시킨다. 중재 ID는 성공적으로 전송된 메시지에 대해서만 조정된다.
성공적으로 전송된 수단은 그 메시지에 대해 어떠한 CS 에러 또는 수용 에러도 없는 것으로 보고된다. 중재 레지스터(206)는 표명되지 않은 메시지를 갖는 레벨-트리거 INIT 동안 ID 레지스터(205)의 내용이 로드된다.
버젼 레지스터(207)는 IDU의 버젼 구현을 식별한다. 제 6도의 레지스터 비트 맵은 비트(0-7)가 버젼 수에 할당되고 하드와이어되고 판독전용임을 나타낸다. 비트(16-23)는 방향 지정 테이블(201)의 최대 할당 벡터 인덱스 값(nmax)을 표현한다. 각각의 IDU는 최대 16개 인터럽트 라인까지 수용할 수 있으며, 각각의 MPIC 시스템은 240개 인터럽트 벡터(0≤n≤230)까지 수용할 수 있으므로, 완전한 능력을 가진 시스템은 하나의 nmax가 각각의 IDU의 버젼 레지스터(207)에 할당된, nmax=15, 31, 47, 63,…, 224, 239인 15개의 IDU를 갖는다.
방향 지정 테이블(201)은 각각의 인터럽트 입력 핀에 대한 전용 엔트리를 갖는다. 인터럽트 우선순위의 개념은 IDU상의 실제 인터럽트 입력 핀의 위치와는 무관계하다. 반면에, 소프트웨어는 인터럽트되어야 할 해당 인터럽트의 벡터(그리고 우선순위)를 원하는 것을 각각의 핀에 대해 개별적으로 결정할 수 있다. 각각의 개별 핀에 대해, 운영체제는 인터럽트의 목적지 및 전달모드 뿐만 아니라 인터럽트가 에지 또는 레벨로서 신호되어야 하는지의 여부인 신호 극성(로우 액티브 또는 하이 액티브)을 지정할 수 있다. 방향 지정 테이블에서 정보는 대응 인터럽트 핀상의 인터럽트 명시사항을 MPIC 시스템 메시지로 번역하는데 사용될 수 있다. 유효 에지로서(및 글리치가 아닌) 인식 되어져야 할 에지-센시티브 인터럽트 입력라인(119)상의 신호를 위해, 핀상의 입력레벨은 IDU(113)가 인터럽트 버스를 통하여 대응 메시지를 방송할 때까지 그리고 목적지에 의해 수용된 메시지가 목적지 필드에 지정될 때까지 표명된 채 남아있어야만 한다. 그런 후에만 소스 IDU는 그 인터럽트 입력 핀상의 새로운 에지를 인식할 수 있을 것이다. 이 새로운 에지는 만일 목적지 IAU에 의한 그것의 수용이 인터럽트 요구 레지스터(IRR) 비트를 0에서 1로 야기한다면(다른 말로 하면, 인터럽트가 이미 목적지에서 보류되지 않았다면) 핸들러의 새로운 호출결과로 될 것이다.
IDU 구현에서 방향 지정 테이블의 엔트리의 최소수는 16이어야 한다. I/0버젼 레지스터는 이 IDU의 방향 지정 테이블의 엔트리의 수를 포함한다. 방향 지정 테이블 (201)의 엔트리의 레이아웃은 제 7도에 도시되어 있다.
각각의 방향 지정 테이블 엔트리는 다음과 같이 정의되는 64 비트 스트링이다.
벡터[0:7]: 벡터 필드는 이 인터럽트를 위한 인터럽트 벡터를 포함하는 8 비트 필드이다. 벡터 값은 10 내지 FE(16진수) 까지의 범위이다.
전달 모드[8:10]: 전달 모드는 목적지 필드에 리스트된 IAU가 이 신호의 수신시 어떻게 작용해야 하는 것을 지정하는 3 비트 필드이다. 특정 트리거 모드와 관련되어 사용될 때만 임의의 전달모드가 의도한 대로 동작됨을 유의하라. 이러한 제한은 각각의 전달모드에 대해 아래의 테이블에 지시되어 있다.
000(고정): 목적지에 리스트된 모든 프로세서 코어의 INTR(마스크가능 인터럽트) 입력에 신호 전달을 의미. "고정" 전달 모드를 위한 트리거 모드는 에지 또는 레벨일 수 있다.
001(최하위 우선순위): 지정된 목적지에 리스트된 모든 프로세서중에서 최하위 우선 순위로 실행하는 프로세서 코어의 INTR 입력에 신호 전달을 의미. "최하위 우선순위" 전달 모드를 위한 트리거 모드는 에지 또는 레벨일 수 있다.
010(SMI): 시스템 관리 인터럽트를 의미. "에지" 트리거 모드를 필요로 하는 "SMI"와 동일한 전달 모드. 벡터 정보는 무시되지만 모두 제로로 프로그램되어야 한다.
100(NMI): 목적지에 리스트된 모든 프로세서 코어의 NMI(마스크불가능 인터럽트) 입력에 신호 전달을 의미하며, 벡터 정보는 무시된다. "NMI"는 "레벨" 트리거 인터럽트로서 프로그램되는 경우에도 "에지" 트리거 인터럽트로서 취급된다.
101(INIT): INIT 신호를 표명함으로써 목적지에 리스트된 모든 프로세서 코어에 신호를 전달. 모든 주소 지정된 IAU는 그들의 INIT상태를 가정한다. INIT는 다르게 프로그램된 경우에도 항상 "에지" 트리거 인터럽트로써 취급될 수 있다.
111(ExtINT): 외부 접속된(인텔 8259A-호환가능) 인터럽트 제어기에서 발생된 인터럽트로써 목적지에 리스트된 모든 프로세서 코어의 INTR 입력에 신호를 전달. 이 ExtINT 전달에 대응하는 인터럽트 승인(INTA) 사이클은 벡터를 공급하는 것 으로 예상되는 외부 제어기로 보내진다. "ExtINT"의 전달모드는 "에지" 트리거 모드를 필요로 한다.
목적지 모드[11]: 이 필드는 다음과 같은 목적지 필드의 해석을 판정한다.
0(물리적 모드): 물리적 모드에서, 목적지 IAU는 자신의 ID에 의해 식별된다. 목적지 필드의 비트(56-59)는 4 비트 IAU를 지정한다.
1(논리적 모드): 논리적 모드에서, 목적지는 각각의 IAU의 논리 목적지 레지스터 및 목적지 포맷 레지스터의 제어하에 논리 목적지상에서 매칭함으로써 식별된다.
목적지 필드의 비트(56-63)(8 MSB)는 8 비트 IAU ID를 지정한다.
전달 상태[12]: 전달 상태는 이 인터럽트의 전달의 현재 상태를 포함하는 1 비트 필드이다. 2개 상태는 다음과 같이 정의된다.
0(유휴): 현재 이 인터럽트를 위한 어떠한 활동도 없음을 의미.
1(전송 보류): 인터럽트가 주입지만, 인터럽트 버스가 비지인 상태, 또는 이때 인터럽트를 수용할 수신 IAU의 무능력에 기인하여 인터럽트의 전달이 임시 보류되는 것을 의미.
전달 상태는 소프트웨어 판독전용이고, 이 비트에 영향을 주지 않는(32 비트 워드의 부분으로서) 이 필드에 소프트웨어 기록한다.
인터럽트 입력 핀 극성[13]: 이 비트는 IDU의 인터럽트 핀에 연결된 각 인터럽트 신호의 극성을 지정한다. 값 0는 신호가 하이 활성임을 의미하고, 값 1은 신호가 로우 활성임을 의미한다.
원격 IRR[14]: 이 비트는 레벨-트리거 인터럽트에 사용되며, 에지-트리거 인터럽트에 대해선 미정의되었음을 의미한다. 레벨-트리거 인터럽트에 대해, 이 비트는 IAU가 IDU에 의해 송신된 레벨 인터럽트를 수용할 때 세트된다. 원격 IRR 비트는 인터럽트 입력 라인 레벨이 인액티브일 때 또는 인터럽트 종료(EOI) 메시지가 IAU로부터 수신될 때 리세트된다.
트리거 모드[15]: 트리거 모드 필드는 인터럽트를 트리거하는 인터럽트 핀상의 신호 유형을 지시한다. 제로는 에지-센시티브를 지시하며, 1은 레벨-센시티브를 지시한다.
마스크[16]: 인터럽트의 주입을 마스크하기 위해 이 비트를 사용한다. 0는 이 인터럽트의 주입이 마스크되지 않았음을 지시한다. 마스크되지 않은 인터럽트 핀상의 레벨 또는 에지는 목적지로 인터럽트를 전달하는 결과로 된다. 1은 이 인터럽트의 주입이 마스크되었음을 지시한다. 마스크된 인터럽트 입력 핀상에서 신호가 전달된 에지-센시티브 인터럽트는 단순히 무시된다(즉, 전달되지 않으며 보류로 되지 않는다).
레벨-센시티브 핀상에서 발생하는 레벨-표명 또는 표명해제도 무시되며 어떠한 부작용도 일으키지 않는다. 인터럽트가 IAU에 의해 수용된 후 마스크 비트를 비마스크로부터 마스크로의 변경은 그 인터럽트에 어떠한 영향도 미치지 않는다. 이러한 작용은 인터럽트하는 디바이스가 인터럽트가 프로세서에 알려지기 전에 인터럽트를 철회하는 경우에도 마찬가지이다. 인터럽트 메시지가 IAU에 의해 수용된 후이지만 인터럽트가 프로세서에 분배되기 전에 마스크 비트가 세트되는 경우를 처리하는 것은 소프트웨어의 책임이다.
버퍼 플러서 인에이블[17]: 이 비트는 인터럽트당 기준으로 I/O 레지스터의 플러싱을 제어한다. 이 비트가 제로로 세트되었을 때, I/0 레지스터는 I/O 인터럽트가 IAU로 전송되기 전에 플러시되어야 한다. 이 비트가 1로 세트되었을 때, I/0 레지스터의 플러싱은 I/0 인터럽트를 IAU로의 전송전에 요구되지 않는다.
목적지[56:63]: 이 엔트리의 목적지 모드가 "물리적 모드"이면, 비트(56-59)는 IAU lD를 포함한다. 만일 논리적 모드이면, 목적지 필드는 잠재적으로 한 세트의 프로세서를 정의한다. 목적지 필드(56-63)의 비트는 논리 목적지 주소를 지정한다.
D. IAU 구조
IAU는 로컬 프로세서 인터럽트 소스, 인터럽트 수용, 프로세서로 인터럽트를 분배 및 프로세서간 인터럽트 전송에 대해 책임이 있다. 인터럽트의 전달 모드에 종속하여, 어느 것도 아닌, 약간 또는 모든 IAU는 인터럽트를 수용할 수 있다. IAU는 인터럽트를 자신의 프로세서로 전달할 경우에만 인터럽트를 수용할 수 있다. 인터럽트를 수용하는 것은 순전히 MPIC간 문제이며, 인터럽트를 로컬 프로세서에 분배하는 것은 단지 IAU 및 자신의 관련 프로세서를 포함할 뿐이다. 제 8도는 IAU의 블록도이다.
소프트웨어는 IAU의 레지스터를 판독 및 기록함으로써 IAU와 상호 작용한다. 목적은 각각의 IAU의 레지스터 세트가 각각의 프로세서에 대해 동일 주소에서 나타나도록 하는 것이다. 소프트웨어는 그후 멀티프로세서 시스템에서, 어느 프로세서가 현재 코드를 실행하는지와는 독립적으로 인터럽트를 제어하기 위해 동일 주소를 사용한다.
IAU를 위한 주소 공간(메모리 공간)은 32 비트 주소에 대해 FEEO 0000(16진수)로 고정되며 4K 바이트의 메모리를 예비해 둔다. 전형적으로, 소프트웨어는 IDU를 매우 빈번하게 액세스하지만 IAU에 대한 액세스는 성능-임계이다. 메모리 공간에 로컬 유닛을 위치시키는 것은 IAU 레지스터로의 소프트웨어 기록이 프로세서에 알려질 수 있기 때문에 최상의 성능을 산출한다. 기록 알림은 INTA(인터럽트 승인) 사이클이 INTA를 하는 프로세서에 의한 모든 버퍼된 기록의 플러시를 강제하는 한 행해진다.
모든 레지스터는 32 비트 로드 및 저장을 사용하고 고유 주소에 의해 액세스된다. 이것은, 임의의 레지스터의 필드(예를 들면, 비트, 바이트)를 수정하기 위해, 전체 32 비트 레지스터가 판독되어야 하고, 이 필드가 수정되어야 하고 32 비트가 재기록되어야 함을 의미한다. 또한, 64 또는 256 비트 폭으로서 설명되는 레지스터는 복수개의 독립한 32 비트 레지스터로서 액세스된다.
r 또는 〈예비〉 또는 〈예비〉를 포함하는 레지스터 설명 필드는 구조에 의해 예비된다. 구조에 의해 예비된다. 예비 필드는 모드 제로로 판독될 것이다.
인터럽트의 목적지는 시스템에서 프로세서 그룹, 모든 프로세서, 일 프로세서 또는 프로세서가 아닐 수 있다. 상이한 목적지가 각각의 인터럽트에 대해 지정될 수 있다.
송신자는 2개 목적지 모드인 물리적 모드 및 논리적 모드중의 하나에 인터럽트의 목적지를 지정한다.
물리적 모드에서, 목적지 프로세서는 고유한 4 비트 ID에 의해 지정된다. 오직 하나의 목적지 또는 모든(모든 목적지의 ID) 것으로의 방송은 이 모드로 지정될 수 있다.
각각의 IDU 및 IAU는 유닛의 ID를 포함하는 ID를 갖는다. ID는 MPIC 유닛의 실제 이름으로서의 역할을 한다. ID는 파워-업시 로드된다. 이것은 어떠한 부작용 없이 항상 소프트웨어로 판독될 수 있다.
물리적 모드에서, ID는 목적지 정보를 지정하는데 사용된다. 바람직한 실시 예에서, 최대 15개 IAU가 지지된다. 모두 1로 된 ID는 모든 IAU로의 방송을 나타낸다. 제 9도는 IAU ID 레지스터(301)의 비트 할당을 도시한다.
논리적 모드에서, 목적지는 8 비트 논리 목적지 필드를 사용하여 지정된다. 모든 IAU는 수신자가 인터럽트에 의해 타겟되는지를 결정하기 위해 매치되는 인터럽트의 목적지 필드에 대해 논리 목적지 레지스터(LDR)(302)의 8 비트 필드를 포함한다.
각각의 IAU의 추가의 8 비트 목적지 포맷 레지스터(DFR)(302)는 목적지 필드가 LDR에 대해 어떻게 비교되는지를 정확히 정의한다. 다른 말로 하면, DFR(302)은 논리 모드 목적지 정보의 해석을 정의한다. 목적지 포맷 레지스터의 4 비트(비트 24 내지 27)는 항상 1들로 고정된다. 제 10도 및 제 11도는 DFR(302) 및 LDR(303)을 위한 비트 할당을 나타낸다.
DFR(302) 및 LDR(303)은 클러스터-기준 전달 모드의 플랫 모델 인터럽트 전달 모델을 달성하기 위해 프로그램될 수 있다.
플랫 모델에 대해, DFR(302)의 비트(28-31)는 반드시 1들로 프로그램되어야 한다. DFR의 비트(0-27)는 항상 1들이다.
또한, 목적지 정보의 비트(24-31)는 해독 필드로 해석된다. 이 필드는 IAU의 LDR에 대해 비교된다. 만일 비트 매치(즉, 목적지 필드 및 LDR의 대응 비트쌍중의 적어도 하나가 매치된다면)가 존재한다면, 이 IAU는 인터럽트 전달을 위해 선택된다.
목적지 필드의 각각의 비트 위치는 개별 IAU에 대응한다. 이 체계는 IAU의 임의 그룹의 지정을 단순히 멤버의 비트를 1로 세트하는 것을 허용하지만 시스템에서 최대 8개 IAU를 허용할 뿐이다.
모두에 대한 방송은 목적지의 8 비트 모두를 1로 세트함으로써 달성된다. 이것은 MPIC 시스템의 모든 IAU를 선택한다.
클러스터 모델에 대해, FDR의 비트(28-31)는 제로로 프로그램되어야 한다. 이 모델에서, 2개의 연결 플랫 클러스터 및 계층 클러스터가 있다.
플랫 클러스터 모델에서, 모든 클러스터는 단일 인터럽트 버스에 연결된다. 목적지 필드의 비트(28-31)는 IAU가 클러스터의 부분인지를 결정하기 위해 LDR의 비트(28-31)에 대해 비교되는 목적지 클러스터의 부호화된 주소이다. 목적지 필드의 하위 4 비트 및 LDR의 비트(24-27)는 클러스트내에서 개별 IAU를 식별하기 위해 비교된다. 클러스터내의 임의의 프로세서 세트는 클러스트를 명명하고 클러스터내의 선택된 멤버를 위한 LDR 목적지 필드(비트 24-27)에 비트를 세트함으로써 지정될 수 있다. 이 모드에서, 4개의 프로세서를 각각 갖는 15개 클러스터가 지지될 수 있다. 그러나, 중재 ID는 인터럽트 버스상에서 단지 15개 에이전트만을 지지하며, 따라서 이 모드에서 지지되는 전체 프로세서의 수는 MPIC ID에 의해 지지된다. 모두에 대한 방송은 모든 목적지 비트를 1로 세트함으로써 달성된다. 이것은 모든 클러스터상에서 매치를 보장하며, 각 클러스터내의 모든 IAU를 선택할 것이다.
계층 클러스터 모델에서, 플랫 클러스트는 계층 인터럽트 버스를 통하여 연결된다. 클러스터 관리자는 인터럽트 버스간을 통과하는 메시지를 처리한다.
제 10도는 계층 클러스터 모델인, 각각의 버스가 클러스터 관리자(600)를 통하여 결합된 15개 클러스터(클러스터 0-14)중의 하나와 연관된 15개 MPIC 인터럽트 버스(I-버스 0-14)의 연결을 도시한다. 명확성을 위해, 제 10도는 CPU에 접속된 공통 시스템(메모리) 버스 및 IDU에 의해 역할을 하는 주변 유닛을 도시하지 않았음을 유의하라. IRO 및 관련 메지시는 여러 I-버스에 제한된다. 이 실제의 IRQ 서비스는 공통 시스템 버스(도시되지 않음)상에서 수행된다.
클러스터 관리자(600)는 한 세트의 송신 논리 유닛(602) 및 수신 논리 유닛(603) 쌍을 포함하며, 각각의 송신/수신 쌍은 자신의 I-버스 및 클러스터 관리자(600)의 내부 버스 (601)에 접속된다. 내부 버스(601)에 액세스하는 송신 및 수신 논리 유닛(602 및 603)은 내부 버스(601)의 제어를 위한 임의의 내용을 결정하는 중재 및 제어 유닛(605)에 의해 제어된다. 수신 논리 유닛(603)은 의도된 타겟 클러스트를 지정하는 목적지 주소 정보를 임시로 저장하기 위한 큐와 이 타겟 주소를 해독하기 위한 논리를 포함한다.
송신 논리 유닛(602)은 관련 클러스터로 정해진 내부 버스(601)로부터 주소 정보를 수용하며 관련 I-버스상에서 IDU로서 역할을 한다. 이러한 방식으로, 임의의 클러스터 중의 임의의 에이전트는 임의 또는 모든 다른 클러스터의 에이전트에 인터럽트-관련 메시지를 전달할 수 있다.
제 10도의 예에서, 각각의 클러스터에 대해 8개의 CPU(IAU와 관련된) 및 6개의 IDU가 도시되어 있다. 현재의 구현에서, 각각의 I-버스는 에이전트로서 역할하는 수신 및 송신 논리 쌍을 포함하는 15개 에이전트로 제한된다. 그러나, 에이전트 유형의 혼합은 에이전트의 전체 수가 15를 초과하지 않는 한 변경될 수 있다. 예를 들면, 클러스터는 13개 프로세서를 가질 수 있으며, 일 IDU 및 클러스터 관리자 포트 및 각각의 클러스터는 에이전트 유형의 혼합을 변경시킬 수 있다. 각각의 클러스터 관리자(600)는 아래에 설명되는 주소지정 제한으로 인해 15개의 송신/수신 논리 유닛(602, 603)으로 제한된다.
따라서, 만일 각각의 클러스터가 13개 프로서세 및 1 IDU를 가진다면, 클러스터 시스템은 195개 CPU 및 15개 IDU를 처리할 수 있다.
클러스터 시스템이 동작할 수 있는,
1) 클러스터내 동작 또는
2) 클러스터간 동작 2가지 기본 모드가 있다.
클러스터내 동작모드는 클러스터내 인터럽트의 전달과 관계가 있다. 클러스터간 동작 모드는 클러스터간 인터럽트 메시지 통신과 관계가 있다.
클러스터내 동작 모드에서, 클러스터의 에이전트에 의해 동일 클러스터의 다른 에이전트로의 I/O 인터럽트, IPI, NMI, INIT 또는 SMI의 전달을 위해, 물리적 주소 모드가 사용된다. 다음의 전달 모드가 동일 클러스터의 다른 에이전트로 통신하기 위해 에이전트에 의해 사용될 수 있다.
I/0 인터럽트: 고정전달모드: 하나 또는 전부(물리적 주소지정 모드에서만); 최하위 우선순위: 방송을 갖는 최하위 우선순위(물리적 주소지정 모드에서만).
IPIs: 고정전달모드: 하나 또는 전부(물리적 목적지 모드에서만); 최하위 우선순위: 방송을 갖는 최하위 우선순위(물리적 목적지 모드에서만).
NMI, SMI, INIT: 고정전달모드: 하나 또는 전부(물리적 목적지 모드에서만);
원격판독(Remote Read): 고정전달모드: 하나만(물리적 목적지 모드에서만).
클러스터 사이의 통신을 위해, 논리적 목적지 모드(계층 클러스터를 갖는)가 사용된다.
이 모드에서, 목적지 포맷 레지스터의 비트(28-31)는 제로로 프로그램되어야 하며 비트 (24-27)는 이 클러스터의 에이전트를 주소지정하는데 사용되어야 한다. 논리 목적지 주소의 에이전트 필드(비트 24-27) 및 클러스터 필드(비트 28-31)는 부호화된 필드로 사용된다. 클러스터 필드내 값 15는 모든 클러스터로의 방송을 지시하며 에이전트 필드내의 값 15은 이 클러스터의 모든 에이전트를 지시한다. 모든 클러스터의 모든 에이전트를 선택하기 위해, 값 15는 클러스터 및 에이전트 필드에 놓여야 한다.
다음 전달모드는 클러스터간 통신을 위한 것이다.
I/0 인터럽트: 고정전달모드: 하나 또는 전부(논리적 목적지 모드에서만); 최하위 우선순위: 방송을 갖는 최하위 우선순위(논리적 목적지 모드에서만).
IPIs: 고정전달모드: 하나 또는 전부(논리적 목적지 모드에서만); 최하위 우선순위: 방송을 갖는 최하위 우선순위(논리적 목적지 모드에서만).
NMI, SMI, INIT: 고정전달모드: 하나 또는 전부(논리적 목적지 모드에서만);
원격 판독: 클러스터 사이에선 지지되지 않음.
클러스터간 동작에서, 송신자 클러스터의 에이전트는 자신의 I-버스를 통하여 논리적 목적지 모드로 메시지를 송신한다. 클러스터 관리자(600)는 메시지를 수용하고, 큐를 수신하는 수신논리유닛(603)에 메시지를 놓으며 목적지 클러스터를 결정하기 위해 주소 정보를 해독한다. 클러스터 관리자 제어기(605)는 내부 버스(601)를 획득하여 타겟 클러스터의 송신논리유닛(602)에 메시지를 놓는다. 타겟 클러스터의 송신논리유닛은 자신의 I-버스를 획득하고, 논리적 목적지 모드로부터 물리적 목적지 모드로 메시지를 변환하며 메시지를 자신의 I-버스를 통하여 방송한다. 이러한 방식으로, 임의의 클러스터가 인터럽트 메시지를 임의 또는 모든 클러스터로 송신할 수 있다.
각각의 프로세서는 프로세서가 현재 실행하는 코드와 관련된 중요도를 반영하는 프로세서 우선순위를 갖는다. 이 코드는 프로세스의 부분 또는 스레드일 수 있으며, 인터럽트 핸들러일 수 있다. 프로세서의 우선순위는 프로세서가 스레드를 스위치하고, 스레드 또는 핸들러가 인터럽트 핸들러를 마스크 아웃하기 위해 자신의 우선순위를 높이거나 낮추고, 프로세서가 이전에 인터럽트된 활동으로 인터럽트 핸들러를 들여보내고 이전에 인터럽트된 활동으로부터 반환함에 따라서 변화한다.
프로세서는 프로세서의 프로세서 우선순위가 그룹의 모든 프로세서중에서 최하위이면 주어진 프로세서 그룹에서 최하위 우선순위이다. 하나 이상의 프로세서가 주어진 그룹에서 최하위 우선순위가 될 수 있음을 주목하라.
만일 프로세서가 현재 인터럽트를 서비스하거나, 인터럽트를 위한 요구 보류를 현재 갖는다면 프로세서는 인터럽트의 목표이다. 목표 프로세서 검사는 의사 인터럽트 벡터 레지스터의 9 비트를 프로그래밍함으로써 인에이블/디스에이블될 수 있다.
인터럽트 전달은 IDU중의 하나에서 자신의 인터럽트를 인터럽트 시스템으로 주입하는 인터럽트 소스로 개시한다. 전달은 서비스하는 프로세서가 자신의 로컬 IAU에게 인터럽트 종료(EOI) 명령을 발행함으로써 인터럽트 전달이 종료되었음을 알릴때만 완료된다. 그런 후에만 인터럽트의 발생이 제거된 것에 관한 모든 관련 정보를 갖는다.
인터럽트 시스템은 지정된 목적지로 정확히 한 번의 인터럽트 수용 세만틱스를 보장한다.
명백하게, 단일-에지 인터럽트 또는 레벨 인터럽트는 인터럽트의 단일 발생으로서 카운트한다. 유니프로세서 시스템에서, 이미 보류중인 인터럽트의 발생은 이전 발생 인터럽트와 구별될 수 없다. 모든 인터럽트 발생은 동일 인터럽트 IRR 비트에 기록된다. 따라서 이것들은 "동일" 인터럽트 발생으로 취급된다.
최하위 우선순위 전달모드에 대해, 인터럽트를 우선 자신의 포커스 프로세서(만일 그것이 현재 하나를 가진다면)로 전달함으로써 멀티프로세서 시스템에서 동일한 작용이 달성될 수 있다. 만일 인터럽트가 포커스 프로세서를 가진다면, 인터럽트는 우선순위 정보에 무관하게 인터럽트의 포커스 프로세서로 전달된다.
에지 트리거 인터럽트 입력 핀상의 각각의 에지 발생은 명백히 일회 이벤트이고, 에지의 각각의 발생이 전달된다. 레벨 트리거 인터럽트 입력 핀상의 액티브 레벨은 "연속 이벤트" 이상을 표현한다. 반복하면, 레벨이 액티브인 동안 인터럽트 메시지를 방송하는 것은 인터럽트 버스의 포화를 야기하게 되며 사실상, 동일 프로세서(포커스 프로세서)가 타겟이 될 수 없기 때문에 거의 쓸모없는 정보를 전송한다.
반면에, 레벨 트리거 인터럽트에 대해, IAU는 목적지 IAU에서 인터럽트 입력 핀의 상태를 재생한다. 소스 IAU는 이것은 레지스터 그룹(312)의 적절한 목적지 IAU의 인터럽트 요구 레지스터(또는 보류 비트)의 상태를 추적함으로써 달성한다.목적지 IAU는 그 레벨 인터럽트에 대한 EOI가 목적지 IAU에 의해 서비스될 때 원격 IRR 비트를 리셋트시키기 위해 모든 IAU에 MPIC간 메시지를 송신한다. 그 후, 관련 IDU는 그 레벨 인터럽트의 원격 인터럽트 요구 레지스터(IRR) 비트를 리세트한다.
IAU는 클래스당 단지 2개 인터럽트만을 보류하는 IRR내의 저장장소를 갖기 때문에, IAU는 동일 클래스에서 추가의 인터럽트를 수용할 수 없을 가능성이 있다. 이 경우에, IAU는 송신자에게 상태 사이클 수단을 통하여 동일 인터럽트를 나중에 "재시도" 하라는 메시지를 알린다.
IDU는 자신의 인터럽트 라인을 순환 방식으로 순차적으로(상위에서 하위로) 스캔한다. 인터럽트가 액티브이고 전달상태 비트가 세트되었음을 IDU가 알았을 때, IDU는 그 인터럽트를 인터럽트 버스로 전송한다. 유리 레지스터가 비지상태이기 때문에 또는 검사합 에러 또는 어떠한 응답 에러도 없기 때문에 이 인터럽트가 어떠한 IAU에 의해서도 수용되지 않는다면, IDU는 인터럽트를 위해 유휴시키기 위해 자신의 전달상태비트를 리셋트시키지 않지만 다음 인터럽트 라인으로 가며 스캐닝을 계속한다. IDU는 그 순서가 스캔 시퀸스가 되었을 때만 "재시도"를 필요로 하는 인터럽트로 되돌아간다.
IPI(프로세서간 인터럽트) 메시지는 또한 인터럽트 버스를 사용하며 메시지 재시도를 위해 동일 규칙을 따른다.
인터럽트 버스상에서 반복되는 메시지 재시도는 유효 대역폭 손실 결과가 된다. 이상적으로, 재시도는 다음 기술을 사용하여 최소화될 수 있다. 버퍼공간 유지의 비이용성으로 인한 목적지 IAU의 메시지 수용불가에 의한 결과인 재시도는 인터럽트 버스 전송지수 백오프 방법을 사용한 IDU의 송신으로 최소화될 수 있다. 검사 합 에러 또는 수용 에러에 기인한 재시도는 하드에러로써 취급되기 전에 한 번 또는 두 번의 재시도로 제한되어야 한다. 검사 합 및 수용 에러에 의해 야기된 재시도를 중지 시키기 위한 중재는 소프트웨어의 책임이다.
원격 판독 메시지는 검사 합 에러가 존재하지 않는다면 항상 수용된다. 원격 판독 메시지를 위한 재시도는 없다. NMI, SMI, INIT 및 ExtINT 인터럽트는 검사 합 및 수용 에러를 위해 재시도 된다. 이들 인터럽트는 검사 합 또는 수용 에러가 없다면 IAU에 의해 항상 수용된다.
MPIC는 목적지 프로세서를 선택하는 두가지 모드인 고정 우선순위 및 최하위 우선 순위를 지지한다. 고정 우선순위는 정적 분배모드인 반면에 최하위 우선순위는 동적모드이다.
고정 방향 지정 모드에서, 인터럽트는 인터럽트가 공급되는 목적지 정보로 매치하는 모든 IAU에 무조건으로 전달된다. I/O 디바이스 인터럽트에 대해, 전형적으로 오직 단일 IAU만이 목적지에 리스트됨을 유의하라. 우선순위 및 목적정보는 무시된다. 목적지 프로세서의 우선순위가 인터럽트의 우선순위보다 높거나 같다면, 인터럽트는 목적지 프로세서의 로컬 IAU에서 로컬 보류로써 유지된다. 프로세서 우선순위가 충분히 낮다면, 보류 인터럽트는 프로세서의 로컬 IAU에 의해 프로세서에 분배된다.
고정 방향 지정은 모든 프로세서에 인터럽트 로드의 정적 분배를 허용한다. 이것은 또한 멀티프로세서 시스템 환경에서 기능하는 단일-스레드 디바이스 드라이버 존재를 허용한다. 이것은 드라이버를 고정 프로세서에 결합시키는 소프트웨어 및 이 프로세서에만 디바이스의 인터럽트를 지시하는 IDU의 셋업을 필요로 한다.
최하위 우선순위 전달방법하에서, 프로세서는 최하위 프로세서 우선순위 값을 갖는 지정된 목적지의 하나의 인터럽트를 처리할 것이다. 만일 일 이상의 프로세서가 최하위 우선순위이면, 이러한 동일함을 타개하기 위해 고유 중재 ID가 사용된다. 최하위 우선순위 동적 전달에서 인터럽트는 인터럽트 포커스 프로세서가 1을 갖는다면 인터럽트의 포커스 프로세서에 의해 항상 취해진다. 우선순위 클래스를위한 프리 또는 이용가능 유지 레지스터를 갖는 IAU만 최하위 우선순위 중재에 참여할 것이다.
최하위 우선순위 전달 방법은 상위 우선순위 타스크의 최소 인터럽션을 보장한다.
각각의 IAU는 단지 자신의 고유 관련 프로세서 우선순위만을 알기 때문에, 최하위 우선 순위 프로세서 결정은 인터럽트 버스상에서의 중재에 의해 행해진다.
모든 IDU 및 IAU는 인터럽트 전달동안 통신한다. 인터럽트 정보는 전용된 3-와이어 인터럽트 버스상에서 방송 메시지 형태로 상이한 MPIC 유닛 사이에 교환된다. 이들 MPIC 메시지의 포맷은 소프트웨어로는 명백하지 않다.
4 비트 중재 ID(Arb ID 레지스터(307))는 ID 레지스터(301)의 내용으로부터 유도된다.
MPIC는 버스 중재를 위한 순환 우선순위 체계를 이용한다. Arb ID는 메시지가 성공적으로 전송될 때마다 갱신된다. 공통 인터럽트 버스를 사용하는 각각의 IAU는 고유 ID를 가져야 한다. 중재 ID는 또는 최하위 우선순위 중재동안 동일 우선순위 상태를 해결하는데 사용된다.
IDU(113)의 방향 지정 테이블(제 3도)은 I/0 서브시스템에서 발생하는 인터럽트를 프로세서로 향하게 하는 역할을 한다. 제 8도의 로컬 벡터 테이블(332)은 로컬 프로세서에 한정되는 인터럽트와 등가이다. 로컬 벡터 테이블(332)은 제 13도에 도시한 바와 같이 4개의 32 비트 엔트리인 타이머, 로컬 인터럽트 0, 로컬 인터럽트 1 및 에러 인터럽트를 포함한다.
제 13도에서 할당된 비트 필드는 다음과 같다.
벡터[0:7]: 이 엔트리를 위한 인터럽트를 발생할 때 사용하기 위한 벡터 비트 필드이다.
벡터 값은 10 내지 FF(16진수) 범위이다
전달 모드[7:10]: 이 필드는 단지 로컬 인터럽트 엔트리 1 및 2를 위해서만 존재하며, 제 3도에 도시된 IDU의 방향 지정모드(201)의 전달모드에서와 동일 의미를 갖는다. 타이머 엔트리는 로컬 프로세서에 에지 트리거 마스크가능 인터럽트를 발생시킨다.
전달모드필드는 타이머 인터럽트 엔트리를 위해 존재하지 않는다.
전달 상태[12]: 로컬 벡터 테이블 엔트리의 전달상태는 방향 지정 테이블(201)에서의 전달상태와 동일하다(유휴, 송신 보류). 이 필드는 소프트웨어 판독 전용이다.
인터럽트 입력 핀 극성[13]: 이 비트는 IAU의 인터럽트 핀에 접속된 각각의 인터럽트 신호의 극성을 지정한다. 0 값은 신호가 하이 액티브이고, 1 값은 신호가 로우 액티브인 것을 의미한다.
원격 IRR[14]: 이 비트는 레벨 트리거 인터럽트에 사용되며, 에지 트리거 인터럽트를 위해서는 정의되지 않는다. 레벨 트리거 인터럽트에 대해, 이 비트는 IAU의 수용 논리가 인터럽트를 수용할 때 세트된다. 원격 IRR 비트는 IDU의 인터럽트 입력 라인(119)의 대응 라인 레벨이 인액티브이거나 EOI 메시지가 IAU로부터의 수신될 때 리셋트 된다.
트리거 모드[15]: 트리거 모드 필드는 인터럽트를 트리거하는 로컬 인터럽트 핀 상에서 신호의 유형을 지시한다. 0은 에지-센시티브를 지시하고 1은 레벨-센시티브를 지시한다. 로컬 인터럽트 핀만이 에지 또는 레벨 트리거로서 프로그램될 수 있다. 타이머 인터럽트는 항상 에지 트리거로서 취급된다.
마스크[16]: 0은 인터럽트의 주입을 인에이블하며, 1은 인터럽트의 주입을 마스크한다.
타이머 모드[17]: 0은 1회 모드를 지시하며, 1은 주기 모드를 지시한다(이 필드는 타이머 엔트리를 위해서만 정의된다).
프로세서는 자신의 로컬 IAU의 인터럽트 명령 레지스터(ICR)(305)에 기록함으로써 프로세서간 인터럽트(IPIs)를 발생시킨다. 개념적으로, 이것은 프로세서가 인터럽트 방향 지정 테이블 엔트리를 제공하는 것으로 여겨질 수 있다. 놀랄 정도는 아니 지만, 인터럽트 명령 레지스터(305)의 레이아웃은 제 3도의 방향 지정 테이블(201)의 엔트리의 레이아웃과 동일하다. 이 레지스터의 포맷은 프로세서가 에지 트리거 인터럽트를 발생하게 함을 유의해야 한다. 프로세서는 프로세서에 의해 본래 수용되었던 디바이스 인터럽트를 다른 프로세서로 진행시키는데 사용될 수 있다. 이것은 또한 유용한 디버그 특징이 될 수 있다. 모든 프로세서간 인터럽트는 다르게 프로그램되었을 경우에도 에지 트리거로써 취급된다.
ICR(305)의 모든 필드는 판독 전용인 원격 판독상태 및 전달상태 필드의 경우를 제외하곤 소프트웨어에 의한 판독전용이다. 인터럽트 벡터를 포함하는 ICR에 32 비트 워드 기록은 인터럽트 메시지가 송신되어짐을 야기한다.
ICR(305)에 대한 비트 할당이 제 14도에 도시되었으며 아래와 같이 설명된다.
벡터[0:7]: 벡터 ID는 송신되는 인터럽트를 식별한다. 전달 모드가 "원격 판독"이면, 벡터 필드는 원격 IAU에서 판독되어야 할 레지스터의 주소를 포함한다.
전달 모드[8:10]: 전달 모드는 목적지 필드에 리스트된 IAU가 이 신호의 수신시 작용하는 법을 지정하는 3 비트 필드이다. 모든 프로세서간 인터럽트는 레벨 트리거 인터럽트로서 프로그램된 경우에도(나중에 설명되는 특정 INIT 경우를 제외하곤) 에지 트리거 인터럽트로서 작용한다.
000(고정): 목적지에 리스트된 모든 프로세서 코어의 INTR 신호상의 신호 전달을 의미한다. 항상 레지 트리거임. 트리거 모드 및 레벨 정보는 무조건(don't care)이다.
001(최하위 우선순위): 지정된 목적지에 리스트된 모든 프로세서중에서 최하위 우선 순위로 실행하는 프로세서 코어의 INTR 신호상의 신호 전달을 의미한다. 항상 에지 트리거임. 트리거 모드 및 레벨 정보는 무조건이다.
010(SMI): 시스템 관리 인터럽트를 의미. "SMI"와 동일한 전달 모드는 "에지" 트리거 인터럽트로써 취급된다. 벡터 정보는 무시된다. 트리거 모드 및 레벨 정보는 무조건이다.
011(원격 모드): 인터럽트 버스를 통하여 자신의 레지스터중의 하나의 값을 송신할 것을 원격 IAU에 요구하는 것이다. 레지스터는 벡터 필드에 주소를 제공함 으로써 선택된다. 레지스터 값은 IAU를 송신함으로써 래치되며 로컬 프로세서에 의해 판독될 수 있는 원격 레지스터에 저장된다. "원격 판독"의 전달모드는 에지 트리거 모드를 필요로 한다.
100(NMI): 목적지에 리스트된 모든 프로세서 코어의 NMI 입력에 신호를 전달하는 것을 의미한다. "NMI"는 만일 "레벨" 트리거 인터럽트로서 프로그램되는 경우에도 "에지" 트리거 인터럽트로서 취급된다. 트리거 모드 및 레벨 정보는 무조건이다.
101(INIT): INIT 신호를 표명함으로써 목적지에 리스트된 모든 프로세서 코어에 신호를 전달하는 것을 의미한다. 모든 주소지정된 IAU는 자신들의 INIT 상태를 가정한다. INIT는 다음의 특정 경우를 제외하곤 다르게 프로그램된 경우에도 항상 "에지 트리거" 인터럽트로써 취급된다. INIT가 트리거 모드="레벨" 및 레벨 모드=0 (즉, 표명해제일 때), 자신들의 MPIC IDs를 갖는 자신들의 Arb IDs를 동기화하기 위해 모든 MPIC 에이전트에 대한 동기화 메시지로서 해석될 것이다. 그 후, 이 메시지는 "INIT 표명해제"로서 참조된다. INIT가 "에지" 트리거 인터럽트로서 프로그램되었을 때, "레벨" 정보는 무조건이다.
목적지 모드[11]: 이 필드의 해석은 방향 지정 테이블(201)의 목적지 모드 필드와 동일하다.
전달 상태[12]: 0 값은 인터럽트를 위한 어떠한 작용도 없음을 의미한다. 1 값은 인터럽트 버스가 비지중이거나 또는 수신하는 IAU가 인터럽트를 수용하기 위한 자유 인터럽트 슬롯을 가지지 않기 때문에 이 인터럽트의 전달이 임시 보류를 의미한다.
만일 메시지가 검사 합(CS) 에러 또는 무응답 에러를 만나면, IAU는 에러 상태 레지스터에 적절한 에러 비트를 세트하고 메시지를 재시도할 것이다. 소프트웨어는 이것을 하드 에러로서 취급하기 전에 허용된 재시도의 수를 결정한다.
레벨[14]: 이 비트는 상기한 INIT 전달 모드의 특정 경우에 사용된다. 그 밖의 모든 다른 전달 모드에 대해, 이 비트는 무조건이다.
트리거 모드[15]: 이 비트는 상기한 INIT 전달 모드의 특정 경우에 사용된다. 그 밖의 모든 다른 전달 모드에 대해, 이 비트는 무조건이다.
원격 판독 상태[16:17]: 이 필드는 원격 판독 레지스터에 포함된 데이타의 상태를 지시한다. 이 필드는 소프트웨어에 대해 판독전용이다. 소프트웨어가 전달 모드 "원격 판독"을 사용하여 인터럽트 명령 레지스터(305)에 기록할 때마다, 원격판독상태는 "진행중" (도달할 원격 데이타를 대기중)이 된다. 원격 MPIC 에이전트는 고정량의 인터럽트 버스 사이클로 응답하는 것이 예상된다. 만일 원격 에이전트가 그렇게 하는 것이 불가능하다면, 그 후 원격 판독상태는 "비유효"가 된다. 만일 성공이라면, 원격 판독상태는 "유효"로 결정된다. 소프트웨어는 원격판독명령의 성공 및 완료를 결정하기 위해 이 필드를 조사해야 한다. 이 2 비트 코드는 다음과 같은 의미를 갖는다.
00(비유효): 원격 판독 레지스터의 내용은 비유효이다. 이것은 원격 판독 명령이 발행된 후 원격 에이전트가 레지스터 내용을 정시에 전달하지 못했거나 메시지가 검사합 에러를 갖는 경우이다.
01(진행중): 원격 판독 명령이 발행되었고, 이 IAU가 원격 에이전트로부터 도달하는 데이타를 대기한다.
10(유효): 최근 원격 판독 명령이 완료되었으며, 원격 판독 레지스터의 원격 레지스터 내용이 유효하다.
목적지 속기[18:19]: 이 필드는 속기 표기가 사용된 속기 코드에 의해 인터럽트의 목적지를 지정하는데 사용되었는지의 여부를 지시한다. 목적지 속기는 8 비트 목적지 필드를 사용하지 않으며 IAU 인터럽트 명령 레지스터(305)에 단일 32 비트 기록으로 소프트웨어에 의해 송신될 수 있다. 2 비트 코드는 다음과 같이 해석된다.
00(목적지 필드): 어떠한 속기도 사용되지 않음을 의미한다. 목적지는 인터 럽트 명령 레지스터(305)의 제 2 워드(비트 32-63)의 32 비트 목적지 필드에 지정된다.
01(셀프): 동일 IAU가 인터럽트의 단독 목적지임을 의미한다. 이것은 소프트웨어 인터럽트에 유용하다. 인터럽트 명령 레지스터의 목적지 필드는 무시된다. 이 모드에서, 최하위 우선순위 및 원격 판독 전달모드는 지지되지 않는다.
10(셀프를 포함한 전부): 인터럽트가 인터럽트를 송신하는 프로세서를 포함하는 시스템의 "모든" 프로세서로 송시되어져야 함을 의미한다. 송신 IAU는 목적지 필드를 갖는 메시지를 모두 1로 세트한다. 글로벌 TLB(캐쉬 테이블 룩-어사이드 버퍼) 플러시 및 방송 타이머 인터럽트는 이 모드를 위한 전형적인 사용이다. 이 모드에서, 최하위 우선순위 및 원격 판독 전달모드는 지지되지 않는다.
11(셀프를 제외한 전부): 인터럽트를 송신하는 프로세서를 제외하고 시스템의 "모든" 프로세서로 인터럽트가 송신되어져야 함을 의미. IAU는 물리적 목적지 모드 필드 및 ID 필드를 전부 1로 세트하는 메시지를 방송한다. 셀프를 제외한 전부 (All-excl-self)는 프로세서 플러시 명령어를 사용하여 "셀프"가 플러시되는 TLB 플러시 및 부트 프로세서 초기의 선택에 유용하다.
목적지[56:63]: 이 필드는 목적지 속기가 "목적지-필드"로 세트되었을 때만 사용된다. 만일 목적지 모드가 물리적 모드이면, 비트(56-59)는 IAU ID를 포함한다. 만일 논리적 모드이면, 8 비트 목적지 필드의 해석은 IAU의 목적지 포맷 레지스터(303) 및 LDR(302)에 추가로 종속된다.
모든 IAU는 인터럽트 버스를 통하여 방송하는 모든 메시지를 수신한다. IAU는 먼저, 논리적 주소모드에서, 만일 그것이 자신의 목적지 포맷 레지스터의 제어하에 LDR(302) 또는 (물리적 주소모드에서) 자신의 ID 레지스터에 대해 메시지의 8 비트 목적지 필드를 맷칭에 의한 메시지 목적지인지를 검사한다. 매치하는 모든 IAU는 "그룹에 속함"으로 칭해진다.
일단 IAU가 그것이 목적지인 것으로 결정하면, 그것은 (NMI, SMI, INIT, ExtINT를 제외하고) 그 특정 인터럽트를 위해 인터럽트 요구 레지스터(IRR)의 슬롯의 이용가능성을 검사한다. 고정 전달 모드에서, 만일 슬롯을 이용할 수 없다면, IAU는 상태 사이클 동안 버스상에 "재시도" 상태를 놓을 것이다. 만일 그것이 인터럽트를 수용할 수 있다면, 그것은 상태 사이클이 다른 에이전트가 버스상의 "제외" 또는 "재시도" 상태로 놓는 것을 알게 될 때까지 대기한다. 버스상에 제외 또는 재시도 상태가 없다면, IAU는 인터럽트를 수용한다.
최하위 우선순위 전달모드에서, 유용한 인터럽트 슬롯을 갖는 IAU만이 최하위 우선 순위 중재에 참여할 것이다.
NMI, INIT, SMI 또는 ExtINT에 대한 메시지가 전달될 것이라면, 목적지에 기재된 모든 IAU는 연관된 프로세서에 대응 출력신호를 절대적으로 표명한다. ISR, IRR 등은 이러한 유형의 인터럽트에 대해 바이패스되고, 벡터정보는 SMI를 제외하고는 정의되지 않는다. SMI에 대해, 벡터필드는 장래의 호환성을 위해 제로로 프로그래밍되어야 한다.
IAU는 그 로컬 ICR 및 인터럽트 버스로부터 인터럽트를 허용할 수 있기 때문에, IAU허용 리소스에 대한 이들 인터럽트 사이에 경쟁이 있을 것이다. 경쟁시에, 인터럽트 버스는 ICR 및 로컬 인터럽트를 수반하여 최상위 우선순위를 가질 것이다.
각 IAU는 제 8도에 도시되고 제 15도에 도시된 바와 같이 포맷되는 레지스터 그룹(312)의 IRR, ISR, 및 TMR 레지스터를 포함하며, 이들은 인터럽트의 허용 및 허용된 인터럽트를 로컬 프로세서로 분배하는 역할을 한다. 인터럽트 요구 레지스터(IRR)는 IAU에 의해 허용된 인터럽트를 포함하지만 연관 프로세서로 분배되지 않는다. 서비스 레지스터(ISR)는 프로세서에 의해 현재 서비스중인 인터럽트, 즉, 프로세서로 분배되어졌지만 프로세서가 인터럽트의 종료(EOI) 신호를 지정하지 않은 인터럽트를 포함한다.
각 인터럽트는 인터럽트의 우선순위를 결정하는 연관 벡터를 가진다. 인터럽트가 서비스되고 있을 때에, 모든 동일하거나 우선순위가 낮은 인터럽트는 IAU에 의해 자동적으로 마스크된다.
트리거 모드 레지스터(TMR)는 인터럽트가 에지인지 레벨인지를 지시한다. 이 정보는 각각의 MPIC 인터럽트 요구 메시지로 전송되고 인터럽트의 방향 지정 테이블(201) 엔트리의 트리거 모드 비트를 반영한다. IRR은 ISR 비트가 INTA 사이클동안 세트되는 동시에 클리어된다. TMR 비트값이 1이라면, 로컬 IAU는 해당 인터럽트에 대한 EOI사이클이 생길 때에 모든 IDU에 표명해제 메시지를 송신할 것이다.
ISR, IRR, 및 TMR 레지스터는 소프트웨어에 의해 판독만 된다. 각각의 이들 256 비트 레지스터는 8개의 개별 32비트 레지스터로서 액세스된다. 프로세서는 로컬 IAU의 타스크 우선순위 레지스터(하기에 설명됨)에 기입함으로써 인터럽트를 마스크한다.
각각의 이들 레지스터(IRR, ISR, TMR)는 비트 "1"이 벡터 "1"을 갖는 인터럽트를 추적할 경우에 256비트의 비트 어레이로서 소프트웨어에 의해 확인된다. 이 들 레지스터는 단지 소프트웨어이고 비트 0-15는 축적된다.
TMR(트리거 모드 레지스터): 인터럽트의 허용시에, TMR 비트는 에지 트리거된 인터럽트에 대해 클리어(0)되고 레벨 트리거된 인터럽트에 대해 세트(1)된다. TMR 비트값이 0이라면, 아무일도 없다. TMR 비트값이 1이라면, 로컬 IAU는 해당 인터럽트의 EOI 사이클동안에 EOI 메시지를 모든 IDU로 송신한다.
IRR(인터럽트 요구 레지스터): 허용되었지만 IAU에 의해 분배되지 않은 액티브 인터럽 요구를 포함한다. IRR의 비트는 IAU가 인터럽트를 허용할 때에 세트되고 INTA사이클이 생길 때에 클리어된다.
ISR(인 서비스 레지스터): 프로세서에 전달되어졌지만 완전히 서비스되지 않은 인터럽트를 마크한다(인터럽트의 종료가 수신되지 않음). ISR 레지스터는 인터럽트 스택의 현상태를 반영한다. 최상위 우선순위 IRR에 대한 ISR 비트는 INTA 사이클동안에 세트된다. EOI 사이클동안에, 최상위 우선순위 ISR 비트는 클리어되고, 대응 TMR 비트가 세트되었다면 EOI 메시지는 모든 IDU로 송신될 것이다.
IRR, ISR, 및 TMR 레지스터에 부가하여, 각 우선순위 레벨에 대해 유지 레지스터(311)가 있다. 이들 레지스터는 IRR 및 TMR 레지스터로 각각 패스되기 이전에 인터럽트 및 트리거 레벨 정보를 일시적으로 저장하는데 사용된다.
제 16도는 IAU의 인터럽트 허용 처리의 순서도이다. 처리는 IAU가 인터럽트 버스로부터 인터럽트 요구 메시지(IRQ)를 대기하고 있는 단계(500)에서 시작한다. IRQ의 수신시에, IAU는 단계(501)에서 목적지로서 지정되는지를 확인하기 위해 검사하고 그렇지 않다면 IAU는 메시지를 포기하고 단계(500)로 복귀한다. IAU가 지정된 목적지 라면, 단계(503)는 IRQ가 NMI, SMI, INIT, ExtINT 또는 RR(리모트-리얼) 유형의 인터럽트인지를 검사하고, 그렇다면 단계(504)에서 메시지를 허용하고 단계(500)로 복귀한다.
모드 전달이 고정된다면, 단계(506)는 인터럽트 슬롯이 유용한지를 확인하기 위해 검사하고, 그렇지 않다면 단계(507)에서 상태비트를 재시도로 세트하고 단계(502)에서 메시지를 포기하고, 단계(500)로 복귀한다. 인터럽트 슬롯이 유용하다면, 단계(508)는 상태가 재시도인지를 검사하고, 그렇다면 단계(502)에서 메시지를 포기하고 단계(500)로 복귀한다. 재시도가 아니라면, IAU는 단계(509)에서 메시지를 허용하고 단계(500)로 복귀한다. 단계(505)에서의 전달모드가 최하위 우선순위라면, 단계(510)는 IAU가 포커스 인지를 검사하고, 그렇다면 단계(513)에서 메시지를 허용한다. 그렇지 않으면, 처리는 다른 IAU가 포커스인지를 검사하는 단계(512)로 이동하고, 그렇다면 단계(513)에서 메시지를 포기하고 단계(500)로 다시 진행한다. 포커스가 존재하지 않으면, 단계(514)는 인터럽트 슬롯이 유용한지를 검사하고 그렇지 않다면 상태를 재시도로 세트하고 단계(502)에서 메시지를 포기한 후에 단계(500)로 복귀한다. 그렇지 않으면, 인터럽트 슬롯이 유용하다면, 중재가 단계(516)에서 주문되고, IAU가 단계(517)에서 중재를 얻는다면 메시지를 허용하고 단계(500)로 복귀한다. IAU가 중재를 잃는다면, 메시지는 단계(502)에서 포기되고 처리는 단계(500)로 복귀한다.
각각의 IAU는 그 로컬 프로세서의 우선순위를 추적한다. 프로세서 우선순위 는 프로세서가 타스크(프로세스, 스레드)를 교환할 때마다 변할 수 있고, 프로세서의 현재 타스크는 그 우선순위를 올리거나 내리고, 프로세서는 인터럽트 핸들러에 진입하거나 프로세서는 인터럽트 핸들러로부터 복귀한다.
타스크 교환 및 타스크 우선순위는 명시적 소프트웨어 작용의 결과이다. 오퍼레이팅 시스템은 타스크 스케쥴링 클래스의 수를 한정할 수 있다. 대안적으로 다른 클래스는 사용자코드 대 시스템코드로 할당될 수 있다. 다른 클래스의 타스크가 인터럽트가 진입할 때 실행중이라면, 최소한의 중요한 클래스의 타스크를 현재 실행중인 프로세서를 인터럽트하는데 효과적일 수 있다. 명료하게, 일 프로세서가 다른 프로세서가 작업을 행하고 있는 동안에 유휴상태라면, 유휴 프로세서는 인터럽트를 서비스하기 위한 명백한 타겟일 것이다. 이것은 최하위 우선순위 전달선택에 참여할 수 있는 모든 인터럽트 레벨 미만의 우선순위 레벨을 정의하는데 있어서의 사용이라는 것을 함축한다.
가끔 오퍼레이팅 시스템은 인터럽트가 서비스되고 있는 것을 차단할 필요가 있을 수 있다. 예컨대, 디바이스 드라이버와 그 인터럽트 핸들러 사이의 공유 데이타 구조에 대한 액세스를 동기화시키기 위해서, 드라이버는 인터럽트의 우선순위와 동일하거나 높도록 드라이버의 우선순위를 올린다.
IAU는 제 8도의 그 타스크 우선순위 레지스터(IRR; 314)를 거쳐 상기를 지원한다. 상기를 이용하고자 하는 소프트웨어는 타스크 우선순위 레지스터를 갱신함으로써 우선 순위 변화를 IAU에 알리도록 요구된다. TRR(314)의 폭은 256까지의 상이한 우선 순위를 제공하는 8비트이다. 이 레지스터의 4 MSB는 16 인터럽트 우선순위에 대응하며, 한편 4 LSB는 그 이상의 정밀도를 제공한다. 우선순위는 x:y로서 표기되며, 여기에서 x는 4 MSB의 값이고 y는 4 LSB의 값이다. 예컨대, 0〈= y 〈=15 (및 4 MSB에서 0)에 따른 TRR값 {0:y}은 상술된 타스크 스케쥴링 클래스의 우선순위를 표현하는데 사용될 수 있다(유휴상태에서 y=0; 백그라운드에서 y=1 등). 모두 우선 순위 0:0을 가지는 벡터 0-15(프로세서에 의해 미리 정의되곤 함)를 갖는 인터럽트를 제외하고, 다른 모든 인터럽트의 우선순위 및 그 핸들러는 1〈= x 〈=15에 따른 {x:0}이고 상기 베이스 타스크 우선순위 {0:y}이다. y는 단지 최하위 우선순위 중재에 사용된다. 예컨대, 인터럽트 벡터(123)는 우선순위 7:0(즉, 123/16=7의 정수부)이고 7:0과 동일하거나 큰 값으로 우선순위를 올리는 타스크에 의해 마스크될 수 있다. 제 17도는 TRR(314)에 대한 비트할당을 도시한다.
IAU의 타스크 우선순위 레지스터의 정보 및 IAU의 인 서비스 레지스터로부터 유도된 정보로부터, IAU는 프로세서 우선순위값을 계산하고 그것을 프로세서 우선순위 레지스터(306)에 저장한다. 프로세서 우선순위값은 타스크 우선순위(4 MSB) 및 최상위 순서 ISR 비트 세트((벡터/16):0)의 우선순위의 최대치로서 계산된다. 이 값은 보류중인 인터럽트가 프로세서로 분배될 수 있는지 없는지를 판단하는데 사용된다.
IAU는 TPR, ISR, 및 IRR 레지스터의 값을 사용함으로써 최하위 우선순위 모드에서 허용될 다음 인터럽트의 우선순위를 계산한다. 계산된 값은 제 8도의 최하위 우선순위 중재 ID 레지스터(307)에 저장된다. 우선순위값은 타스크 우선순위(4 MSB), 최상위 순서 ISR 비트 세트((벡터/16):0)의 우선순위 및 최상위 순서 IRR 비트 세트 ((벡터/16):0)의 우선순위의 최대치로서 계산된다. 이 값은 최하위 우선순위 인터럽트 전달의 부분으로서 중재동안에 사용된다.
일단 IAU가 인터럽트를 허용한다면, 그 로컬 프로세서로의 인터럽트의 전달을 보증한다. 마스크가능한 인터럽트를 로컬 프로세서로 분배하는 것은 IAU가 인터럽트를 그 프로세서 코어로 전달할 때에 시작한다. 프로세서가 인에이블된 인터럽트를 가진다면, 인터럽트를 서비스할 것이다. IAU는 INTA 사이클동안에 최상위 우선순위 보류 인터럽트의 8 비트 벡터를 프로세서 코어로 전달한다. INT/INTA 프로토콜로 인해 인터럽트의 ISR 비트가 세트되고 IRR 비트가 클리어된다. IAU는 현재 인터럽트에 대한 EOI가 수신될 때까지 현재 ISR의 우선순위 레벨과 동일하거나 적은 보류 인터럽트를 모두 마스크할 것이다.
로컬 프로세서 INT 신호가 현재 표명되고 있는 인터럽트의 레벨로 또는 그 레벨 이상으로 프로세서가 그 타스크 우선순위를 올릴 상황이 생길 수 있다. INTA 사이클이 발행될 때에, 분배될 예정이었던 인터럽트는 마스크되어진다. 이 경우에, 연관 IAU는 의사 인터럽트 벡터를 프로세서 코어로 복귀시킬 것이다. 의사 인터럽트 벡터를 분배하는 것은 ISR 레지스터에 영향을 주지 않으므로, 이 벡터에 대한 소프트웨어 핸들러는 EOI 없이 바로 복귀되어야 한다. 벡터가 유효한 인터럽트와 공유된다면, 핸들러는 유효한 인터럽트에 대해 호출되는지(ISR 비트 세트) 아닌지(ISR 비트 클리어)를 검사하기 위해 ISR 레지스터의 벡터의 비트를 판독할 수 있다. 256 벡터의 범위가 주어지면, 의사 인터럽트를 유효한 인터럽트를 오버 로드하는 것은 통상의 실행인 것으로 기대되는지 않는다. IAU에 의해 복귀된 의사 인터럽트 벡터는 프로그래머블하다.
모든 IAU는 파워업 이후에 디스에이블된 상태로 초기화한다. 디스에이블된 IAU 만이 INIT, NMI, SMI, 및 RR 메시지에 응답한다. IRR 및 ISR 레지스터의 보류 인터럽트는 유지될 것이고 로컬 프로세서에 의한 마스킹 또는 핸들링을 요구할 것이다. IAU는 다른 인터럽트 버스 메시지를 허용하기 시작하기 전에 명시적으로 인에이블되어야 한다. 디스에이블될 경우에, 시스템 소프트웨어는 어떤 인터럽트 메시지 전송도 허용되지 않을 것이라면 ICR(인터럽트 명령 레지스터; 305)을 로드하는 것을 피해야 한다. 그러나, 디스에이블된 IAU는 Arb ID 레지스터(307)의 그 Arb ID를 시스템 IAU의 휴지와 함께 최신으로 유지하기 위해서 모든 인터럽트 버스 메시지를 주시한다.
로컬 프로세서의 소프트웨어는 의사 인터럽트 벡터(SIU) 레지스터(325; 제 18도)의 비트 8을 프로그래밍함으로써 연관 IAU를 인에이블 또는 디스에이블할 수 있다. 또한, SIV 레지스터의 비트 9는 최하위 우선순위 전달모드의 ;경우에 포커스 프로세서 검사를 인에이블 또는 디스에이블한다.
제 18도는 SIV 레지스터(325)에 대한 비트 할당을 나타낸다. 비트 0-7은 모든 보류 인터럽트가 마스크되거나 어떤 인터럽트(IRR)도 보류중이 아닐 경우에 INTA 사이클 동안에 해제를 위한 하드와이어된 논리적 비트이다. 0일 경우에 비트 8은 디스에이블된 상태로 IAU를 배정한다. 논리적 0으로 세트될 경우에 포커스 프로세서 검사를 인에이블한다.
인터럽트 핸들러로부터 복귀하기 전에, 소프트웨어는 인터럽트의 종료(EOI) 명령을 그 연관 IAU EOI 레지스터(315)에 발행해야 한다. 이것은 인터럽트가 더 이상 서비스중이 아니기 때문에 IAU가 ISR 레지스터의 최상위 우선순위를 클리어하도록 한다.
EOI를 수신할 시에, IAU는 다음 최상위 우선순위 활동으로 복귀함으로써 우선순위 선정을 수행한다. 이것은 앞서 인터럽트된 핸들러(ISR로부터), 보류 인터럽트 요구(IRR로 부터), 또는 인터럽트된 타스크(타스크 우선순위로부터)일 수 있다.
EOI를 수신할 시에, ISR 레지스터의 최상위 비트가 레벨 트리거된 인터럽트에 대한 것이라면, IAU는 대응 원격 IRR 비트를 표명해제하기 위해 EOI 메시지를 모든 IDU로 송신한다. 제 19도에 도시된 바와 같이, EOI에 대한 코드의 선택은 임의적이다.
모든 IAU가 전형적으로 동일한 주소 범위를 차지하기 때문에, IAU의 레지스터는 단지 연관 로컬 프로세서에 의해 액세스될 수 있다. 시스템 디버링의 관점으로부터, 이것은 그 연관 프로세서가 어떤 이유로든 단절한다면 대량의 상태정보가 액세스불가능하게 될 수 있다는 것을 의미한다. 멀티프로세서 시스템의 디버깅을 지원하기 위해서 IAU는 판독전용 액세스를 시스템의 임의의 다른 IAU의 임의의 레지스터에 제공하는 메카니즘을 지원한다.
"원격" IAU의 임의의 레지스터를 판독하기 위해, 프로세서는 인터럽트 명령 레지스터(305)에 "원격 판독"의 전달모드를 명시하는 것을 기입한다. 원격 IAU는 통상의 방식으로 인터럽트 명령 레지스터의 목적지 필드에 명시된다. 디버그 소프트웨어는 물리적 수신지 모드의 타겟 IAU ID를 사용함으로써 단일 IAU를 선택한다. 어떤 벡터도 원격 레지스터 액세스와 연관되기 때문에, 인터럽트 명령 레지스터의 벡터 필드는 판독될 개개의 원격 32비트 레지스터를 선택하는데 사용된다. 선택기 값은 IAU의 주소공간의 레지스터의 주소(오프셋)에 대응한다. "원격 판독" 명령을 송신하는 것은 결국 인터럽트 버스상에 MPIC 메시지를 송신하는 것이다. 목적지 IAU는 선택된 레지스터의 32 비트 내용을 인터럽트 버스상에 배치함으로써 응답한다. 이 값은 송신 IAU에 의해 판독되고 그 로컬 IAU로의 정규 레지스터 액세스를 사용하여 소프트웨어가 도달할 수 있는 원격 레지스터(304)에 배치된다. 원격 레지스터는 판독전용 소프트 웨어이다.
원격 레지스터의 내용은 인터럽트 명령 레지스터의 전달상태가 다시 "유휴"로 될 때에 유용하다. 제 20도에 도시된 바와 같이 원격 레지스터(304)는 주소(FFEO _OOCO)에 있다.
각 IAU는 그 버젼 코드에 의한 다른 구현을 식별하는 하드와이어된 버젼 레지스터(317)를 포함한다. 이것은 소프트웨어가 다른 구현 사이에 호환성을 제공하도록 한다. 버젼 레지스터(317)는 또한 IDU의 최상위 엔트리에 대응한 하드와이어된 로컬 벡터 테이블 엔트리를 저장한다. 제 21도는 버젼 레지스터의 비트할당을 나타낸다.
각 IAU는 그 로컬 프로세서 리세트 라인에 접속된 리셋 입력라인을 가진다. IAU 및 프로세서는 동시에 리세트된다. 모든 IAU는 리세트의 하강에지에서 그들의 ID를 얻는다.
파워업 리세트 이후에, IRR, ISR, TMR, ICR, TPR, 홀딩 레지스터, 타이머 초기 카운트 레지스터, 타이머 카운트 레지스터, RR, LDR 및 제산 구성 레지스터는 논리적 0로 리세트된다. 로컬 벡터 테이블 엔트리는 마스크 비트가 1로 세트되는 것을 제외하고 0으로 리세트된다. 목적지 포맷 레지스터는 모두 1로 리세트된다. IAU ID 레지스터 값은 프로세서로부터 로드된다. 모든 내부상태 머신상태는 리세트된다. 또한, 인터럽트 버스는 의사 인터럽트 벡터 레지스터의 비트 8을 0으로 세트함으로써 디스에이블 된다.
초기화 리세트(INIT)는 IAU ID 레지스터가 프로세서에 의해 로드되지 않는다는 것을 제외하고는 파워업 리세트와 동일한 효과를 가진다. INIT 표명해제 메시지가 방송된 이후에, 모든 IAU는 그들의 중재 ID 레지스터(307)를 그들의 ID 레지스터(301)로부터의 값으로 로드한다.
E. 인터럽트 버스
일 실시예에서, 인터럽트 버스(110)는 모든 IDU 및 IAU를 접속하는 3개의 와이어 동기 버스이다. 와이어중 2개는 데이타 전송용으로 사용되고 세 번째의 와이어는 클록이다. 데이타전송 와이어중 하나만이 인터럽트 버스 중재에 요구된다.
인터럽트 버스는 논리적으로 와이어-OR 및 전기적으로 오픈-드레인, 2개의 버스 사용 중재를 제공하는 접속, 및 최하위 우선순위에 대한 중재이다. 오픈-드레인이라면, 버스는 설계전용 종료 튜닝이 요구되지 않도록 "충분한" 속도로 실행된다. 더욱이, 메시지를 수신하거나 중재에 참여하는 각 MPIC 에이전트는 다음 구동사이클이 금지되어야 하는지를 판단하기 위해서 버스를 래치하고 래치된 정보에 대한 일부의 단순한 논리동작을 수행하는데 단일 버스 사이클에 충분한 시간이 주어져야 한다. 인터럽트 버스(110) 속도는 대략 16 MHz로 동작한다.
하기에 프로토콜 설명에서 논의된 모든 값은 논리적 값이다; 즉 "구동된 버스"는 논리 1이고 "비구동된 버스"는 논리 0이다. 전기적 값은 논리 1에 대해 0이고 논리 0에 대해 1이다.
인터럽터 버스(110)는 버스 소유권을 얻기 위해 1 와이어 중재를 사용한다. 회전 우선순위 체계가 버스중재를 위해 사용된다. 중재의 승자는 최하위 우선순위 에이전트가 되고 0으로 된 Arb ID를 가정한다. Arb ID가 15인 에이전트를 제외하고 모든 다른 에이전트는 그들의 Arb ID를 1씩 증분시킨다. Arb ID는 성공적으로 전송된 메시지에 대해서만 변화된다(증분되거나 가정된다). 메시지는 어떤 에러도 해당 메시지에 대해 보고되지 않았다면 성공적으로 전송된다.
MPIC는 2개의 다른 우선순위 체계: 정규 또는 EOI를 사용하여 인터럽트 버스를 얻을 수 있다. EOI는 최상위 우선순위를 가진다. EOI 우선순위는 IAU로부터 IDU로 레벨 인터럽트에 대한 EOI 메시지를 송신하는데 사용된다. 에이전트가 EOI 우선순위를 갖는 버스를 요구할 경우에, 정규 우선순위를 갖는 버스를 요구하는 모든 다른 에이전트는 백오프한다.
버스 중재 사이클은 인터럽트 버스에 대한 시작 사이클(비트 0=eoi, 비트 1=1)을 구동하는 에이전트에 의해 시작한다. 비트 0=1은 "EOI" 우선순위를 지시하고 비트 0=0은 정규우선순위를 지시한다. 비트 1은 1이어야 한다.
사이클 2-5 동안에, 에이전트는 버스의 비트 0으로 중재 ID를 구동한다. 상위 ID비트는 ID의 하위비트에 앞서 먼저 연속적인 사이클로 구동된다. 소정 사이클에서의 모든 패자는 이전 사이클에 대한 타이 브레이커(tie breaker)로서 매 순차사이클을 사용하여 버스를 드롭오프한다. 이 과정은 임의의 에이전트가 다른 에이전트가 기회를 가지기 전에 1번 이상의 버스를 얻을 수 없다는 것을 보증함으로써 "공정성"을 제공한다. 따라서, 모든 에니전트가 버스를 동시에 액세스하려고 시도한다면, 이 과정의 반복된 적용은 모든 에이전트가 액세스를 가지기 전에 각 에이전트가 1번만 버스를 액세스한다는 것을 보증할 것이다.
버스중재이후에, 승자는 버스의 독점적 사용을 부여받고 버스상에서 그 실제 메시지를 구동할 것이다. MPIC 메시지는 4개의 포맷: 14사이클 EOI 메시지, 21 사이클 쇼트 메시지, 32 사이클 최하위 우선순위 메시지, 및 39 사이클 원격 판독 메시지를 담당한다. 인터럽트 버스상의 모든 에이전트는 메시지에서 적합한 필드를 검사함으로써 인터럽트 메시지의 길이를 안다.
IAU로부터 IDU로의 레벨 트리거된 인터럽트에 대해, EOI 우선순위 메시지가 사용된다. 메시지는 인터럽트 우선순위 벡터(V[0:7])를 포함한다. 메시지를 수신한 IDU는 해당 인터럽트에 대한 원격 IRR 비트를 리세트한다. 인터럽트 신호가 IRR 비트가 리세트된 이후에 여전히 활동중이라면, IDU는 그것을 새로운 인터럽트로서 취급할 것이다. 제 22도는 레벨 트리거된 인터럽트에 대한 EOI 메시지용 프로토콜 포맷을 나타낸다.
포커스 프로세서 인터럽트에 따른 고정, NMI, SMI, Reset, ExtINT, 및 LP의 전달을 위해 쇼트 메시지가 사용된다. 전달모드비트(M[0:2])는 21 버스 사이클을 위하는 쇼트 메시지 포맷을 명시한다.
사이클 1은 시작 사이클이다. 사이클 2-5는 초기에 설명된 바와 같이 버스중재용이다. MPIC ID 비트는 한 번에 1 비트씩 버스상으로 송신된다. 이를 위해 1 데이타 버스비트만이 사용된다. 다른 비트는 0이어야 한다.
사이클 6 및 7은 함께 목적지 모드 비트 및 전달 모드 비트를 제공한다. 사이클 8은 레벨 및 트리거 모드 정보를 제공한다.
사이클 10-13은 8 비트 인터럽트 벡터이다. 벡터는 단지 고정된 전달 모드 및 최하위 우선순위에 대해서 정의된다. "원격 판독"의 전달모드에 대해, 벡터필드는 원격으로 판독될 레지스터의 주소를 포함한다.
DM이 0(물리적 모드)이라면, 사이클 15 및 16은 MPIC ID이고 사이클 13 및 14는 0이다. DM이 1(논리적 모드)이라면, 사이클 13-16은 8 비트 목적지 필드이다. 논리적 모드 8 비트 목적지 필드의 해독은 목적지 포맷 레지스터를 사용하여 로컬 유니트에 의해 수행된다. "셀프를 포함한 전부(all-including-self)" 및 "셀프를 배제한 전부(all-excluding-self)"된 속기는 물리적 목적지 모드이고 전부의 MPIC ID 값을 포함한 목적지 필드는 1이다. 송신 MPIC 에이전트는 그 자체의 메시지에 응답해야 하는지 그렇지 않아야 하는지를 식별한다.
사이클 17은 사이클 6-16에서의 데이타에 걸친 검사합(CS)이다. 이 필드는 모든 데이타 비트(DM, MO-3, L, TM, VO-7, DO-7)의 누적합(모드 4)이다. 메시지를 구동하는 (단일)에이전트는 사이클 17에서 검사합을 제공한다.
사이클 18은 수신된 메시지에 포함된 정보에 근거한 다양한 내부 계산을 수행하기 위해 모든 에이전트에 의해 00으로서 구동된 포스트앰블 사이클이다. 계산중 한가지는 사이클 6-16에서 수신된 데이타의 계산된 검사합계를 취하고 그것을 사이클 18에서의 값에 비교한다. 임의의 에이전트가 사이클 17에서 통과된 것과 다른 검사합을 계산한다면, 에이전트는 그것을 11로서 구동함으로써 사이클 19에서 인터럽트 버스상에 에러를 신호지정할 것이다. 이것이 발생한다면, 모든 에이전트는 메시지가 결코 송신되지 않았다고 가정할 것이고 송신자는 인터럽트 버스에 대한 재중재를 포함하는 메시지를 다시 송신하려고 시도한다. 최하위 우선순위 전달에서, 인터럽트가 포커스 프로세서를 가질 경우에, 포커스 프로세서는 사이클 19 동안에 10을 구동함으로써 이것을 지시할 것이다. 이것은 인터럽트가 허용되어졌고, 중재가 선취되고, 쇼트 메시지 포맷이 사용된다는 것을 모든 다른 에이전트에 알린다. 사이클 19 및 20은 메시지의 상태, 즉 허용된 상태, 검사합 에러, 재시도, 또는 에러를 지시한다. 제 24도는 모든 전달모드에 대한 상태신호조합 및 그 의미를 나타낸다.
제 15도의 최하위 우선순위(포커스 프로세서없이) 메시지는 포커스 프로세서를 가지지 않는 최하위 우선순위 모드에서 인터럽트를 전달하는데 사용된다. 이러한 메시지에 대해 사이클 1-21은 상술된 쇼트 메시지에 대해서 동일하다. 상태 사이클 19는 포커스 프로세서(10)가 있는지를 식별하고 사이클 20에서의 11의 상태값은 최하위 우선순위 중재에 대한 요구를 지시한다. 사이클 21-28은 최하위 우선순위 프로세서를 중재하는데 사용된다. 중재에 참여하는 프로세서는 인터럽트 버스사이에 그들의 프로세서 우선순위를 구동한다. IRR에서 "프리 인터럽트 슬롯"을 갖는 IAU만이 최하위 우선 순위 중재에 참여할 것이다.
사이클 29-30는 2 이상의 프로세서가 최하위 우선순위를 갖는 경우에 결합을 끊는데 사용된다. 버스중재 ID는 결합을 끊는데 사용된다. 사이클 33은 유휴 사이클이다.
원격 판독 메시지는 다른 IAU에서의 레지스터를 판독하기 위한 IAU에 의해 사용된다. 메시지 포맷은 처음 21사이클에 대한 쇼트 메시지와 동일하다. 사이클 21-36은 원격 레지스터 주소데이타를 포함한다. 사이클 37에서의 상태 정보는 데이타가 양호한지 아닌지를 명시한다. 원격 판독 사이클은 결코 재시도되지 않는다는 점에서 항상 성공적이다(데이타가 유효인지 무효인지에 상관없이). 이에 대한 근거는 원격 판독이 디버그 특징이라는 점이고 응답가능하지 않은 "단절된" 원격 IAU로 인해 디버거를 단절시키지 않도록 해야 한다. 제 26도는 메시지 포맷을 나타낸다.
각 IAU는 해당 유니트에 의해 검출된 모든 에러를 기록하는 에러 상태 레지스터 (제 27도 참조)를 가진다. 이 레지스터는 판독전용 레지스터이고 "예비" 비트를 제외한 레지스터에서의 비트는 일단 판독도면 리세트된다. "예비" 비트는 INIT 메시지의 결과로서 리세트된다. 비트가 이 레지스터에 세트될 때마다, TRAP는 프로세서 코어에 발생될 것이다(에러신호를 통해). 로컬 프로세서가 이 레지스터를 판독할 때까지, 보다 많은 에러가 누적할 수 있다. 인터럽트 버스상에 에러를 검출하는 것은 IAU의 책임이다. IAU는 에러상태 레지스터를 가지지 않으므로 에러 로깅에 참여하지 않는다.
IDU는 임의이 에러를 검출하였다면 IDU에게 통지하도록 버스상태 사이클에 참여한다. 에러 레지스터 비트정의어는 하기와 같고 제 27도에 도시되어 있다.
CS 에러 송신: IAU는 송신된 메시지에 대한 검사합 에러를 검출할 경우에 이 검사 합 에러비트를 세트한다.
CS 에러 수신: IAU는 수신되었던 메시지에 대한 검사합 에러를 검출할 경우에 이 비트를 세트한다.
수용 에러 송신: IAU는 송신된 메시지가 버스상의 임의의 에이전트에 의해 수용되지 않았다는 것을 검출할 경우에 이 에러비트를 세트한다.
수용 에러 수신: 수신된 메시지가 버스상의 임의의 에이전트에 의해 수용되지 않았을 경우에 그 자체를 포함한 이 에러비트를 세트한다.
불법 벡터 송신: 이 비트는 IAU가 버스상에 송신중인 메시지의 불법벡터를 검출할 경우에 세트된다.
불법 벡터 수신: 이 비트는 IAU가 수신된 메시지의 불법벡터를 검출할 경우에 세트된다. 이것은 로컬 벡터 테이블 인터럽트 및 ICR로부터의 자체 인터럽트에서의 불법 벡터 코드를 포함한다.
불법 레지스터 주소: 이 비트는 로컬 프로세서가 연관 IAU로 구현되지 않은 레지스터를 액세스하려고 할 경우에 세트된다.
중재는 또한 최하위 프로세서 우선순위를 갖는 IAU를 검색하는데 사용된다. 최하위 우선순위(LP) 중재는 최하위 우선순위로 실행하는 다수의 IAU가 있을 경우에 결합을 브레이크하기 위해 4 비트 중재 ID가 첨부된 IAU의 프로세서 우선순위 값의 값을 사용한다. 프로세서 우선순위 레지스터의 모든 8 비트는 LP 중재를 위해 사용된다.
F. 타이머 아키텍쳐
각 IAU는 로컬 프로세서에 의한 사용을 위해 1개의 32 비트폭 프로그래머블 2진 타이머를 포함한다. MPIC는 그 클록베이스를 발생하기 위해 CPU 버스클록을 사용한다. 타이머는 단안정 모드 또는 주기모드에서 동작하도록 프로그래밍될 수 있다. 제산 구성 레지스터는 타이머 동작을 위한 타이머 클록주파수를 선택하기 위해 소프트웨어에 의한 사용용으로 제공된다.
제 28도는 제산구성 레지스터(321)의 포맷을 나타낸다. 비트 3, 1, 및 0은 1, 2, 4, 8, 16, 32, 64 및 28의 인수에 의해 제산을 산출하기 위해 CPU 버스 클록에 인가되는 코드화된 인수에 의한 제산을 포함한다.
소프트웨어는 그 초기 카운트 레지스터(320)를 프로그래밍함으로써 타이머 진행을 시작한다. 타이머는 이 값을 현재 카운트 레지스터(319)로 복사하고 타이머 클록 펄스에 대한 1 카운트의 속도로 카운트 다운을 시작한다. IAU타이머는 단안정 또는 주기적일 수 있는 프로그래머블 모드를 가진다. 타이머가 단안정 모드에서 0에 도달한 이후에, 타이머는 단순히 재프로그래밍될 때까지 0에 머문다. 주기 모드에서, 타이머는 초기 카운트 레지스터로부터 그 현재 카운트 레지스터를 자동적으로 다시 로드하고 다시 카운트 다운을 시작한다.
타이머 인터럽트 발생은 디스에이블되거나 인에이블될 수 있고, 임의의 인터럽트 벡터가 명시될 수 있다. 인에이블되어 타이머가 0에 도달할 경우에, 인터럽트가 IAU에서 발생된다. 타이머로 발생된 인터럽트는 항상 에지로서 취급된다. 그들은 단지 로컬프로세서에 대한 마스크가능 인터럽트를 발생할 수 있다.
그 인터럽트가 마스크되어진 타이머 세트업은 시간 간격을 측정하기 위한 현재 카운트 레지스터를 판독함으로써 로컬 프로세서에 의해 샘플링될 수 있는 타임 베이스로서 유용하다. IAU의 레지스터 공간을 판독전용 사용자 페이지로 매핑함으로써, 사용자 프로그램의 효율적인 성능 모니터링이 지원될 수 있다. 요구된다면, 소프트웨어는 다른 IAU에 대한 주기적 타이머 인터럽트가 엇갈려져 동시에 그들의 인터럽트(예컨대, 타임 슬라이스 인터럽트)를 그들의 로컬 프로세서로 모두 전달하지 않도록 보증할 수 있다. 이 엇갈림은 공유된 리소스(버스, 캐시라인, 디스패치 큐, 록)에 대한 경쟁의 버스트를 피한다. "자연스럽게" 발생하는 랜덤니스는 엇갈림을 보증하는데 충분할 수 있다.
로컬 벡터 테이블(322)에 사용되는 타이머 벡터 포맷은 제 29도에 도시되어 있다. 벡터[0:7]는 타이머가 인터럽트를 발생할 경우에 사용될 8 비트 인터럽트 벡터이다. 비트 12는 전달 상태비트이다. 비트 16은 마스크되는지 마스크되지 않는지를 지시하는데 사용되고, 비트 17은 단안정 또는 주기적 타이머 모드를 지시한다.

Claims (2)

  1. 공통 시스템 버스, 인터럽트 요구 신호 라인 셋트를 갖춘 적어도 하나의 I/0 주변장치 서브시스템 및 적어도 두 개의 프로세서 유닛을 갖는 멀티프로세서 시스템에서의 동작을 위한 멀티프로세서 프로그래머블 인터럽트 제어기(MPIC)시스템에 있어서,
    a) 인터럽트 버스 동기화 클록 신호를 위한 하나의 와이어와 데이터 통신을 위한 제 1 데이터 와이어 및 제 2 데이터 와이어로 이루어 지고, 상기 제 1 데이터와이어는 또한 인터럽트 버스의 제어를 위한 중재 메시지에 사용되는, 3-와이어 동기 인터럽트 버스;
    b) i) I/0 주변장치 인터럽트 요구 라인 셋트로부터의 인터럽트 요구 신호와, 대응 입력 핀을 활성화시킴으로써 지시된 인터럽트 요구 신호를 수신하기 위한 인터럽트 요구 신호 입력 핀 셋트;
    ii) 인터럽트 요구 신호 입력 핀에 연결되며, 활성 입력 핀에 대응하고 인터럽트 우선순위 레벨, 서비스 모드 및 프로세서 선택정보를 갖는 인터럽트 벡터를 포함하는 인터럽트 요구 메시지를 선택하기 위한 방향지정 테이블;
    iii) 방향지정 테이블 및 인터럽트 버스에 연결되며, 인터럽트 메시지를 인터럽트 버스상에 방송하기 위한 수단; 및
    ⅳ) 인터럽트 버스에 연결되며, 인터럽트 버스의 제어를 위한 중재를 위해 인터럽트 버스의 제 1 데이터 와이어에 연결된 수단을 포함하는, 인터럽트 버스에 연결된 인터럽트 전달 유닛(IDU);
    c) ⅰ) 인터럽트 버스에 방송하는 인터럽트 요구 메시지를 수신하는 수단;
    ⅱ) 연관된 프로세서가 서비스하기에 적합하다는 인터럽트 요구 메시지를 수용하는 수단;
    ⅲ) 연관된 프로세서가 인터럽트 요구 메시지를 서비스할 수 있을 때까지 수용된 인터럽트 요구 메시지를 보류시키는 수단;
    ⅳ) 인터럽트 버스에 인터럽트 요구 메시지를 방송하는 수단;
    ⅴ) 인터럽트 버스의 제 1 데이터 와이어에 연결된 인터럽트 버스의 제어를 중재하는 수단; 및
    ⅵ) IAU가 타겟 IAU에 사전할당된 주소로 레지스터의 내용을 판독할 것을 요구하기 위한 수단을 포함하는, 인터럽트 버스와 연관된 프로세서에 연결된 인터럽트 수용 유닛(IAU)을 포함하며, 각각의 IAU는 사전할당된 식별번호를 가지고, IAU는,
    a) 인터럽트 버스 메시지 전달의 실제 목적지 모드를 선택하고,
    b) 상기 실제 목적지의 주소로서 타겟 IAU 식별 번호를 지정하고,
    c) 그 내용이 판독되어야 할 레지스터의 주소에 대응하는 번호를 배정하여 타겟 IAU로 하여금 주소지정된 레지스터의 내용을 인터럽트 버스에 배정하고,
    d) 원격 IAU 레지스터 판독을 요구하는 상기 IAU에 의해 인터럽트 버스상의 레지스터 내용을 판독하여, 원격 IAU 레지스터 판독을 요구하는 것을 특징으로 하는 멀티프로세서 프로그래머블 인터럽트 제어기(MPIC) 시스템.
  2. 공통 시스템 버스, 인터럽트 요구 신호 라인 셋트를 갖춘 적어도 하나의 I/0 주변장치 서브시스템 및 적어도 두 개의 프로세서 유닛을 갖는 멀티프로세서 시스템에서의 동작을 위해, 인터럽트 버스 동기화 클록 신호를 위한 하나의 와이어와 데이터 통신을 위한 제 1 데이터 와이어 및 제 2 데이터 와이어로 이루어지고, 상기 제 1 데이터 와이어는 또한 인터럽트 버스의 제어를 위한 메시지를 중재하는 데에 사용되는, 3-와이어 동기 인터럽트 버스와; 인터럽트 버스에 연결된 인터럽트 전달 유닛(IDU)과; 인터럽트 버스와 연관된 프로세서에 연결된 인터럽트 수용 유닛(IAU)을 포함하는 멀티프로세서 프로그래머블 인터럽트 제어기(MPIC) 시스템을 동작시키는 방법에 있어서,
    a) I/0 주변장치 인터럽트 요구 라인 셋트로부터의 인터럽트 요구신호와, 대응 입력 핀을 활성화시킴으로써 지시된 인터럽트 요구 신호를 인터럽트 요구신호 입력 핀 셋트에 수신하는 단계;
    b) 활성 입력 핀에 대응하는 인터럽트 요구 신호 입력 핀에 연결되며, 인터럽트 우선순위 레벨, 서비스 모드 및 프로세서 선택정보를 갖는 인터럽트 벡터를 포함하는 인터럽트 요구 메시지를 IDU 방향지정 테이블로부터 선택하는 단계;
    c) 인터럽트 버스상에 인터럽트 메시지를 방송하는 단계;
    d) 인터럽트 메시지를 방송하기 위해 IDU에 의한 액세스가 요구될 때 인터럽트 버스의 제어를 중재하는 단계;
    e) 인터럽트 버스상에 방송되어 있는 인터럽트 요구 메시지를 수신하는 단계;
    f) 연관된 프로세서가 서비스하기에 적합하다는 인터럽트 요구 메시지를 수용하는 단계;
    g) 연관된 프로세서가 인터럽트 요구 메시지를 서비스할 수 있을때 까지 수용된 인터럽트 요구 메시지를 보류시키는 단계;
    h) 인터럽트 버스상에 인터럽트 요구 메시지를 방송하는 단계;
    i) 인터럽트 버스의 제 1데이터 와이어에 연결된 인터럽트의 제어를 중재하는 단계; 및
    j) 주어진 인터럽트 요구를 서비스하기에 적합한 IAUs간에 인터럽트 버스상에 최하위 우선순위 모드 중재를 중재하는 단계로 이루어지고, 모든 기타 적합한 프로세서에 비해 최하위 우선순위의 타스크로 동작하는 적합한 프로세서와 연관된 IAU가 주어진 인터럽트 요구를 서비스하도록 선택되는, 상기 IAU를 동작시키는 방 법; 및 IAU가 타겟 IAU에 사전할당된 주소를 갖춘 레지스터의 내용을 판독할 것을 요구하는 IAU를 위한 방법을 포함하며, 상기 레지스터의 내용을 판독할 것을 요구하는 IAU를 위한 상기 방법에서;
    각각의 IAU는 사전할당된 식별번호를 가지고, IAU는
    a) 인터럽트 버스 메시지 전달의 실제 목적지 모드를 선택하는 단계;
    b) 상기 실제 목적지의 주소로서 타겟 IAU 식별 번호를 지정하는 단계;
    c) 판독되어야 할 레지스터의 내용의 주소에 대응하는 수를 위치시키고 타겟 IAU로 하여금 주소지정된 레지스터의 내용을 인터럽트 버스에 위치시키는 단계; 및
    d) 원격 IAU 레지스터 판독을 요구하는 상기 IAU에 의해 인터럽트 버스상의 레지스터 내용을 판독하는 단계로 이루어지는 절차를 이용하여 원격 IAU 레지스터 판독을 요구하는 것을 특징으로 하는 MPIC 시스템을 동작시키는 방법.
KR1019960703537A 1993-12-30 1994-12-21 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템 KR100292660B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/176,122 US5495615A (en) 1990-12-21 1993-12-30 Multiprocessor interrupt controller with remote reading of interrupt control registers
US08/176122 1993-12-30
PCT/US1994/014711 WO1995018416A1 (en) 1993-12-30 1994-12-21 A multiprocessor programmable interrupt controller system with processor-integrated interrupt controllers

Publications (1)

Publication Number Publication Date
KR100292660B1 true KR100292660B1 (ko) 2001-09-17

Family

ID=22643068

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960703537A KR100292660B1 (ko) 1993-12-30 1994-12-21 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템

Country Status (9)

Country Link
US (1) US5495615A (ko)
EP (1) EP0737336B1 (ko)
KR (1) KR100292660B1 (ko)
AU (1) AU689201B2 (ko)
CA (1) CA2179397C (ko)
DE (1) DE69429279T2 (ko)
GB (1) GB9610760D0 (ko)
SG (1) SG49050A1 (ko)
WO (1) WO1995018416A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010062514A2 (en) * 2008-10-28 2010-06-03 Intel Corporation Technique for communicating interrupts in a computer system
KR101004240B1 (ko) 2007-09-06 2010-12-24 인텔 코오퍼레이션 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
JPH06161779A (ja) * 1992-11-17 1994-06-10 Fujitsu Ltd データ処理装置の割込み制御方式
US5590338A (en) * 1993-07-23 1996-12-31 Dell Usa, L.P. Combined multiprocessor interrupt controller and interprocessor communication mechanism
US5734844A (en) * 1993-10-08 1998-03-31 Cyrix Corporation Bidirectional single-line handshake with both devices driving the line in the same state for hand-off
US5568649A (en) * 1994-05-31 1996-10-22 Advanced Micro Devices Interrupt cascading and priority configuration for a symmetrical multiprocessing system
US5905898A (en) * 1994-05-31 1999-05-18 Advanced Micro Devices, Inc. Apparatus and method for storing interrupt source information in an interrupt controller based upon interrupt priority
US5564060A (en) * 1994-05-31 1996-10-08 Advanced Micro Devices Interrupt handling mechanism to prevent spurious interrupts in a symmetrical multiprocessing system
US6081880A (en) * 1995-03-09 2000-06-27 Lsi Logic Corporation Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file
DE69610450T2 (de) * 1995-03-13 2001-04-26 Sun Microsystems Inc Virtueller Ein/Ausgabeprozessor
US5966529A (en) * 1995-05-15 1999-10-12 Zsp Corporation Processor having auxiliary operand register file and complementary arrangements for non-disruptively performing adjunct execution
KR960042387A (ko) * 1995-05-31 1996-12-21 유기범 하이파이플러스 인터럽트버스 중재방법
US5900025A (en) * 1995-09-12 1999-05-04 Zsp Corporation Processor having a hierarchical control register file and methods for operating the same
US5894578A (en) * 1995-12-19 1999-04-13 Advanced Micro Devices, Inc. System and method for using random access memory in a programmable interrupt controller
US5850558A (en) * 1995-12-19 1998-12-15 Advanced Micro Devices System and method for referencing interrupt request information in a programmable interrupt controller
US5850555A (en) * 1995-12-19 1998-12-15 Advanced Micro Devices, Inc. System and method for validating interrupts before presentation to a CPU
US5948093A (en) * 1996-02-09 1999-09-07 Advanced Micro Devices, Inc. Microprocessor including an interrupt polling unit configured to poll external devices for interrupts when said microprocessor is in a task switch state
US6141769A (en) * 1996-05-16 2000-10-31 Resilience Corporation Triple modular redundant computer system and associated method
US5923887A (en) * 1996-05-20 1999-07-13 Advanced Micro Devices, Inc. Interrupt request that defines resource usage
US5961585A (en) * 1997-01-07 1999-10-05 Apple Computer, Inc. Real time architecture for computer system
US5875320A (en) * 1997-03-24 1999-02-23 International Business Machines Corporation System and method for synchronizing plural processor clocks in a multiprocessor system
US5953535A (en) * 1997-03-28 1999-09-14 International Business Machines Corporation Using intelligent bus bridges with pico-code to service interrupts and improve interrupt response
US6012121A (en) * 1997-04-08 2000-01-04 International Business Machines Corporation Apparatus for flexible control of interrupts in multiprocessor systems
US6256660B1 (en) 1997-04-08 2001-07-03 International Business Machines Corporation Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts
US5907712A (en) * 1997-05-30 1999-05-25 International Business Machines Corporation Method for reducing processor interrupt processing time by transferring predetermined interrupt status to a system memory for eliminating PIO reads from the interrupt handler
US5884051A (en) * 1997-06-13 1999-03-16 International Business Machines Corporation System, methods and computer program products for flexibly controlling bus access based on fixed and dynamic priorities
JP3008896B2 (ja) * 1997-06-16 2000-02-14 日本電気株式会社 共有バス型マルチプロセッサシステムの割り込み負荷分散システム
FR2775370B1 (fr) * 1998-02-20 2001-10-19 Sgs Thomson Microelectronics Procede de gestion d'interruptions dans un microprocesseur
GB9809197D0 (en) 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Microcomputer with packet translation for event packets and memory acess packets
GB9809183D0 (en) * 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Microcomputer with interrupt packets
GB9809201D0 (en) 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Microcomputer chips with interconnected address and data paths
GB9809182D0 (en) * 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Microcomputer with bit packets for interrupts,control and memory access
GB9809203D0 (en) * 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Packet distribution in a microcomputer
GB2339035B (en) 1998-04-29 2002-08-07 Sgs Thomson Microelectronics A method and system for transmitting interrupts
GB9809199D0 (en) 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Interrupt and control packets for a microcomputer
US6701429B1 (en) 1998-12-03 2004-03-02 Telefonaktiebolaget Lm Ericsson(Publ) System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location
KR100279929B1 (ko) * 1998-12-24 2001-02-01 서평원 교환기에서의 이중화 프로세서_
US6272618B1 (en) 1999-03-25 2001-08-07 Dell Usa, L.P. System and method for handling interrupts in a multi-processor computer
US6496873B1 (en) * 1999-05-21 2002-12-17 International Business Machines Corporation Real time device driver interface apparatus and method therefor
DE19955776C1 (de) * 1999-11-19 2001-07-19 Infineon Technologies Ag Multitasking-Prozessorsystem
US6772257B1 (en) 1999-12-23 2004-08-03 Intel Corporation Method and apparatus for processing interrupts
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
WO2001069390A2 (en) * 2000-03-15 2001-09-20 Arc Cores, Inc. Method and apparatus for debugging programs in a distributed environment
US6732298B1 (en) * 2000-07-31 2004-05-04 Hewlett-Packard Development Company, L.P. Nonmaskable interrupt workaround for a single exception interrupt handler processor
US20020099893A1 (en) * 2001-01-24 2002-07-25 Nguyen Tuyet-Huong Thi System and method for the handling of system management interrupts in a multiprocessor computer system
US6813665B2 (en) 2001-09-21 2004-11-02 Intel Corporation Interrupt method, system and medium
US7389496B2 (en) * 2003-07-02 2008-06-17 Agere Systems Inc. Condition management system and a method of operation thereof
US7596779B2 (en) * 2004-02-19 2009-09-29 Agere Systems Inc. Condition management callback system and method of operation thereof
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
US20060136608A1 (en) * 2004-12-22 2006-06-22 Gilbert Jeffrey D System and method for control registers accessed via private operations
TW200810523A (en) * 2005-12-23 2008-02-16 Nxp Bv An AV renderer peripheral with dual interrupt lines for staggered interrupts
US7936397B2 (en) * 2006-02-07 2011-05-03 Anuncio Media, Llc Method and process for electronically posting bulletin board messages
US8214574B2 (en) * 2006-09-08 2012-07-03 Intel Corporation Event handling for architectural events at high privilege levels
US8190864B1 (en) * 2007-10-25 2012-05-29 Oracle America, Inc. APIC implementation for a highly-threaded x86 processor
US7685347B2 (en) * 2007-12-11 2010-03-23 Xilinx, Inc. Interrupt controller for invoking service routines with associated priorities
US20090172229A1 (en) * 2007-12-28 2009-07-02 Krystof Zmudzinski Methods for selecting cores to execute system management interrupts
JP2010160713A (ja) * 2009-01-09 2010-07-22 Yokogawa Electric Corp フィールド制御装置およびフィールド制御方法
US7996595B2 (en) * 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US8260996B2 (en) 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8321614B2 (en) 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8234431B2 (en) 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US8909836B2 (en) * 2012-10-08 2014-12-09 Andes Technology Corporation Interrupt controller, apparatus including interrupt controller, and corresponding methods for processing interrupt request event(s) in system including processor(s)
US9792232B2 (en) * 2015-11-16 2017-10-17 International Business Machines Corporation Techniques for queueing interrupts in a data processing system
US11403110B2 (en) * 2019-10-23 2022-08-02 Texas Instruments Incorporated Storing a result of a first instruction of an execute packet in a holding register prior to completion of a second instruction of the execute packet
US11341069B2 (en) * 2020-10-12 2022-05-24 Advanced Micro Devices, Inc. Distributed interrupt priority and resolution of race conditions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179707A (en) * 1990-06-01 1993-01-12 At&T Bell Laboratories Interrupt processing allocation in a multiprocessor system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1425173A (en) * 1972-05-03 1976-02-18 Gen Electric Co Ltd Data processing systems
US3812463A (en) * 1972-07-17 1974-05-21 Sperry Rand Corp Processor interrupt pointer
US4156277A (en) * 1977-09-26 1979-05-22 Burroughs Corporation Access request mechanism for a serial data input/output system
US4268904A (en) * 1978-02-15 1981-05-19 Tokyo Shibaura Electric Co., Ltd. Interruption control method for multiprocessor system
NL7907179A (nl) * 1979-09-27 1981-03-31 Philips Nv Signaalprocessorinrichting met voorwaardelijke- -interrupteenheid en multiprocessorsysteem met deze signaalprocessorinrichtingen.
DE3009308A1 (de) * 1980-03-11 1981-10-01 Siemens AG, 1000 Berlin und 8000 München Verfahren und anordnung zum uebertragen von datensignalen
US4654820A (en) * 1983-11-30 1987-03-31 At&T Bell Laboratories Interrupt bus structure
US4648029A (en) * 1984-08-27 1987-03-03 International Business Machines Corporation Multiplexed interrupt/DMA request arbitration apparatus and method
US5067071A (en) * 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
JPH07104841B2 (ja) * 1986-07-24 1995-11-13 株式会社日立製作所 多重処理システムの割込み制御方法
US4839800A (en) * 1986-08-29 1989-06-13 Bull Hn Information Systems Inc. Data processing system with a fast interrupt
US4980854A (en) * 1987-05-01 1990-12-25 Digital Equipment Corporation Lookahead bus arbitration system with override of conditional access grants by bus cycle extensions for multicycle data transfers
US5274767A (en) * 1988-09-23 1993-12-28 Allen-Bradley Company, Inc. Programmable controller with module identification and diagnostic mechanism
US5060139A (en) * 1989-04-07 1991-10-22 Tektronix, Inc. Futurebus interrupt subsystem apparatus
US5193187A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Fast interrupt mechanism for interrupting processors in parallel in a multiprocessor system wherein processors are assigned process ID numbers
US5410710A (en) * 1990-12-21 1995-04-25 Intel Corporation Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
JP2625589B2 (ja) * 1991-04-22 1997-07-02 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサ・システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179707A (en) * 1990-06-01 1993-01-12 At&T Bell Laboratories Interrupt processing allocation in a multiprocessor system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101004240B1 (ko) 2007-09-06 2010-12-24 인텔 코오퍼레이션 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택
WO2010062514A2 (en) * 2008-10-28 2010-06-03 Intel Corporation Technique for communicating interrupts in a computer system
WO2010062514A3 (en) * 2008-10-28 2010-07-22 Intel Corporation Technique for communicating interrupts in a computer system
US8103816B2 (en) 2008-10-28 2012-01-24 Intel Corporation Technique for communicating interrupts in a computer system
US8312198B2 (en) 2008-10-28 2012-11-13 Intel Corporation Technique for communicating interrupts in a computer system
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system

Also Published As

Publication number Publication date
DE69429279D1 (de) 2002-01-10
AU689201B2 (en) 1998-03-26
DE69429279T2 (de) 2002-07-25
SG49050A1 (en) 1998-05-18
CA2179397C (en) 2001-08-21
EP0737336B1 (en) 2001-11-28
AU1516195A (en) 1995-07-17
EP0737336A1 (en) 1996-10-16
CA2179397A1 (en) 1995-07-06
GB9610760D0 (en) 1996-07-31
US5495615A (en) 1996-02-27
EP0737336A4 (en) 1997-05-07
WO1995018416A1 (en) 1995-07-06

Similar Documents

Publication Publication Date Title
KR100292660B1 (ko) 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템
US5555420A (en) Multiprocessor programmable interrupt controller system with separate interrupt bus and bus retry management
US5758169A (en) Protocol for interrupt bus arbitration in a multi-processor system
US5410710A (en) Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
US5283904A (en) Multi-processor programmable interrupt controller system
EP0535821B1 (en) Method and apparatus for dynamically steering undirected interrupts
US6502136B1 (en) Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage
KR100457146B1 (ko) 비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐
EP0827085B1 (en) Method and apparatus for distributing interrupts in a scalable symmetric multiprocessor system without changing the bus width or bus protocol
EP0644487B1 (en) Scalable system interrupt structure for a multiprocessing system
US4720784A (en) Multicomputer network
US4769768A (en) Method and apparatus for requesting service of interrupts by selected number of processors
US5944809A (en) Method and apparatus for distributing interrupts in a symmetric multiprocessor system
JP4250207B2 (ja) 対称多重処理システム、そのための割込制御ユニット、および対称多重処理システム内でプロセッサ割込信号を開始するための方法
EP0644489A2 (en) Method and apparatus for signalling interrupt information in a data processing system
Beck et al. VLSI Assist for a Multiprocessor
EP0139568B1 (en) Message oriented interrupt mechanism for multiprocessor systems
GB2277388A (en) Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
EP0340347B1 (en) Bus arbitration system
WO2005020111A2 (en) Hardware register access via task tag id

Legal Events

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

Payment date: 20130228

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 14

EXPY Expiration of term