KR0128273B1 - 데이타처리 시스템, 다중프로세서 데이타처리 시스템에서 다수의 인터럽트를 유지관리, 처리하는 시스템 및 방법 - Google Patents

데이타처리 시스템, 다중프로세서 데이타처리 시스템에서 다수의 인터럽트를 유지관리, 처리하는 시스템 및 방법

Info

Publication number
KR0128273B1
KR0128273B1 KR1019940023768A KR19940023768A KR0128273B1 KR 0128273 B1 KR0128273 B1 KR 0128273B1 KR 1019940023768 A KR1019940023768 A KR 1019940023768A KR 19940023768 A KR19940023768 A KR 19940023768A KR 0128273 B1 KR0128273 B1 KR 0128273B1
Authority
KR
South Korea
Prior art keywords
interrupt
interrupt request
queue
processor
priority
Prior art date
Application number
KR1019940023768A
Other languages
English (en)
Other versions
KR950009461A (ko
Inventor
루이스 아른트 리차드
오토 니콜슨 제임스
존 실하 에드워드
마크 써버 스티븐
메이 영즈 에이미
Original Assignee
윌리암 티. 엘리스
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윌리암 티. 엘리스, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 윌리암 티. 엘리스
Publication of KR950009461A publication Critical patent/KR950009461A/ko
Application granted granted Critical
Publication of KR0128273B1 publication Critical patent/KR0128273B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Abstract

하위 단일-프로세서 시스템(low-end uni-processor system)으로부터 상위 다중-프로세서(MP) 시스템까지 스케일링 가능한 데이터 처리 시스템내의 인터럽트 서브시스템(interrupt subsystem)이 개시되었다. 이 인터럽트 서브시스템은 다중-프로세서 시스템에서, 다수의 소오스(source)로부터의 인터럽트를 큐잉(queueing)하고, 인터럽트를 최상의 프로세서로 큐잉한다. 외부 인터럽트 메카니즘은 인터럽트 경로배정층(interrupt routing layer)과 인터럽트 제공층(interrupt presentation layer)의 2개의 층으로 분리된다. 인터럽트 경로배정층은 인터럽트 제공층내의 적절한 인터럽트 관리 영역으로 인터럽트 조건을 경로배정한다. 인터럽트 제공층은 인터럽트를 서비스/프로세스하는 시스템 소프트웨어로 인터럽트 소오스를 전송(communication)한다. 인터럽트 서브시스템내에 2개의 층을 제공하므로써, 응용 혹은 시스템 소프트웨어는 인터럽트 소오스 혹은 유형과 무관하게 작성될 수 있다. 인터럽트 경로배정층은 소프트웨어로부터 특정 하드웨어 구현의 상세한 사항을 은폐한다. 인터럽트 제공층은 시스템 및/혹은 응용 소프트웨어와 인터페이스(interface)하고, 하드웨어 독립적 기능을 제공한다.

Description

데이타처리 시스템, 다중프로세서 데이타처리 시스템에서 다수의 인터럽트를 유지관리, 처리하는 시스템 및 방법
제1도는 데이터 처리 시스템의 블록도.
제2도는 인터럽트 제어기를 통한 데이터 프로세서로의 장치 접속을 도시한 블록도.
제3도는 소프트웨어 큐에 접속하는 논리 서버의 구성요소를 도시한 도면.
제4도는 인터럽트 제어기의 내부 구조를 도시한 도면.
제5도는 하드웨어 및 소프트웨어 큐 구조를 도시한 도면.
제6a 및 6b도는 I/O 제어기, 인터럽트 경로배정층 및 인터럽트 제공층을 포함하는 전반적인 인터럽트 서브시스템의 흐름도.
제7도는 인터럽트 요구에 대한 버스 타이밍도.
제8도는 인터럽트 리셋에 대한 버스 타이밍도.
* 도면의 주요부분에 대한 부호의 설명
22:시스템 상호접속부 24, 40, 41:프로세서
26:메모리 28:입출력 장치
29:시스템 버스 30:입출력 제어기
42, 43:큐 44, 45:전역 큐
52:인터럽트 경로배정층 50:인터럽트 제공층
본 발명은 데이터 처리 시스템(data processing system)에 관한 것으로, 특히 데이터 처리 시스템에서 인터럽트 소오스(interrupt source)와 인터럽트 프로세서(interrupt processor)간에 인터럽트 정보를 신호하는 방법에 관한 것이다.
데이터 처리 시스템에서, 인터럽트는 소정 소오스(given source)에 인터럽트 조건(interrupt condition)이 존재한다는 사실을 프로세서에 신호하는데 사용된다. 이러한 인터럽트 소오스는, 예를 들면, 어떤 형태의 서비스를 요구하는 시스템 버스상의 어댑터 카드(adapter card)일 수 있다. 요구되는 서비스는 데이터 전송을 개시하거나, 혹은 최근에 변경된 상태 레지스터(state register)를 판독하는 것일 수 있다.
프로세서가 인터럽트를 수용할 수 있는 상태이면, 환언하면 인터럽트가 인에이블된 경우, 프로세서는 인터럽트 수신시 인터럽트 처리를 개시한다. 이러한 인터럽트 처리는 전형적으로 프로세서가 인터럽트 소오스를 질의하고, 인터럽트 유형에 기초하여 기능을 수행하고, 인터럽트를 리셋/턴오프(resetting/turning off)하는 것을 포함한다.
또한, 종래의 시스템에서는 인터럽트 우선순위(priority)가 이용되어 왔다. 소정 시간에 둘 이상의 인터럽트 신호가 활성화되는 경우, 프로세서는 인터럽트 우선순위에 따라 우선적으로 서비스할 인터럽트를 알 수 있다.
인터럽트 제어기는 인터럽트 신호를 리셋하는 것과 같이, 요구된 특정의 인터럽트 핸드쉐이크 기능(interrupt handshake functions)을 수행하도록 설계된다. 이러한 전형적인 인터럽트 제어기의 대표적인 예로는, 캐나다 산타클라라 바우워 애비뉴 3065 리터러처 디파트먼트 소재의 인텔사(Intel Corp.)로부터 입수가능한 1981년도판 인텔 콤포넌트 데이터 카탈로그(Intel Component Data Catalog)에 기술되어 있으며, 본 명세서에서 참조로서 인용된 인텔 8259 제어기가 있다. 이들 인터럽트 제어기는 다수의 인터럽트 소오스를 모니터(monitor)할 수 있으며, 단지 하나의 인터럽트 라인(interrupt line)을 사용하여 프로세서를 인터럽트할 수 있다.
현재 인터럽트신호를 발생하는 방법은 주로 소수의 인터럽트 소오스 혹은 우선순위 레벨을 가진 단일프로세서 시스템에 대해 설계되었다. 대부분의 시스템은 플래너(planar)상에 하드와이어된(hardwired) 하나 이상의 인터럽트 라인으로 인터럽트를 전송한다. 둘 이상의 프로세서가 인터럽트를 서비스할 수 있는 다중프로세서 환경(multiprocessor environment)에서, 이러한 유형의 인터럽트 신호 기법은 버스의 복잡도를 가중시킨다. 각 인터럽트 소오스로부터의 인터럽트 신호는 이러한 인터럽트를 서비스할 수 있는 각각의 프로세서 혹은 인터럽트 제어기에 배선되어야 한다.
다중처리 데이터 처리 시스템의 요구를 만족시키기 위하여는 시스템의 각 프로세서에 대해 전용 인터럽트 제어기가 필요하다. 이러한 접근방법에 따르면, 비용이 많이 소요될뿐만 아니라, 다수의 소오스로부터 발생된, 서비스를 위해 다수의 프로세서로 경로배정(route)되어야 하는 인터럽트들을 밀도있게 관리할 수 없다.
다수의 인터럽트 소오스 및 우선순위 레벨이 허용되는, 확장가능한 방법이 필요하다. 또한, 다중 프로세서 및 다중 인터럽트 제어기를 구비한 다중처리 시스템에서 사용하기 위한 인터럽트 정보 신호생성 방법이 필요하다.
현재의 인터럽트 시스템은 하드웨어 특정적이며, 소프트웨어 종속성의 정도는 차이가 있다. 인터럽트의 유형 혹은 수를 변경하면 특정 운영체제 소프트웨어(particular operating system software)에 대해서도 변경이 이루어져야 한다. 따라서, 기본 하드웨어 인터럽트 구조에 대해 소프트웨어 독립성(software independence)을 제공하는 인터럽트 서브시스템(interrupt subsystem)이 필요하다.
본 발명은 데이터 처리 시스템내의 인터럽트 서브시스템을 제공한다. 본 발명의 인터럽트 서브시스템은 하위 단일-프로세서 시스템(low-end uni-processor system)으로부터 상위 다중-프로세서(multi-processor;MP)시스템에 이르기까지 스케일링 가능하다. 이러한 인터럽트 서브시스템은 다수의 소오스로부터의 인터럽트를 큐잉(queuing)하고, MP 시스템내 최상의 프로세서의 인터럽트를 큐잉한다. 이는 외부 인터럽트 메카니즘(external interrupt mechanism)을 2개의 층(layer), 즉 인터럽트 경로배정층(interrupt routing layer)과 인터럽트 제공층(interrupt presentation layer)으로 분리하므로써 성취된다. 인터럽트 경로배정층은 인터럽트 조건을 인터럽트 제공층내의 적절한 인터럽트 관리영역(interrupt management area)으로 경로배정한다. 인터럽트 경로배정층은 하위/저가 및 상위/고성능 시스템 모두를 지원하도록 스케일링될 수 있다. 인터럽트 제공층은 인터럽트 소오스를 그 인터럽트를 서비스 및 처리하기 위한 시스템 소프트웨어로 전송한다. 이 소프트웨어는 인터럽트 조건을 수신하고, 해당 인터럽트 조건을 리셋시킨다. 또한, 이 소프트웨어는 인터럽트를 수신하였음을 표시하고, 인터럽트 제공층에게 인터럽트를 처리했음을 통지한다.
인터럽트 서브시스템내에 2개의 층을 제공하므로써, 응용 혹은 시스템 소프트웨어는 인터럽트 소오스 혹은 유형에 무관하게 또한 기본 시스템 하드웨어 구조와 무관하게 작성될 수 있다. 인터럽트 경로배정층은 소프트웨어로부터 특정 하드웨어 구현의 세부사항을 은폐한다. 인터럽트 제공층은 시스템 및/혹은 응용 소프트웨어에 인터페이스(interface)하며, 하드웨어 독립적 기능(hardware independent functionality)을 제공한다.
본 발명은 또한 인터럽트 요구 및 인터럽트 리셋의 양자에 대한 인터럽트 패킷 프로토콜(interrupt packet protocol)을 정의한다. 하드와이어된 방법에 비해 다수의 장점을 갖는 어드레스 버스 패킷(address bus packets)이 사용된다. 인터럽트 소오스(이하 I/O 제어기 혹은 IOC로 칭함)는 인터럽트 요구를 가지면, 어드레스 버스를 요구한다. 버스가 승인되면, IOC는 어드레스 버스를 통해 인터럽트 요구 패킷을 전송한다. 인터럽트 제어기는 그 정보를 처리하여 프로세서로 인터럽트를 신호한다. 다중처리 시스템에서, 인터럽트 제어기는 그 인터럽트 정보를 적절한 프로세서로 경로배정할 수도 있다. 프로세서는 인터럽트 처리를 완료하면, 인터럽트 제어기에게 IOC로 리셋 패킷을 전송하도록 경고한다. 그러면, 인터럽트 제어기는 어드레스 버스를 요구한다. 어드레스 버스가 승인되면, 인터럽트 제어기는 어드레스 버스를 통해 인터럽트 리셋 패킷을 전송한다.
통상적으로 각 어드레스에 대하여 다수의 데이터 전송 사이클이 있게 되므로, 데이터 버스는 어드레스 버스보다 과중하게 사용된다. 어드레스 버스를 통해 인터럽트 정보를 전송하므로써, 분주히 사용되는 데이터 버스를 사용하지 않고 활용도가 낮은 자원, 즉, 어드레스 버스를 사용할 수 있다. 본 바람직한 실시예에서, 어드레스 버스를 사용하는 또 다른 장점은 시스템 버스상의 모든 IC 칩은 전체 데이터 버스를 사용하지는 않는다. 따라서, 어드레스 버스를 통해 전송되는 인터럽트 패킷은 추가의 핀(pin)이나 와이어(wire)를 사용하지 않고 시스템에 이미 존재하는 어드레스 라인을 사용한다. 이는 다수의 개별적인 인터럽트 라인을 사용하는 종래방법과 대조된다.
메모리맵 I/O(memory mapped I/O)가 가장 널리 사용되는 입력 및 출력 동작 수행 방법이므로, 인터럽트 패킷을 전송하기 위한 방법으로도 사용된다. 메모리멥 I/O가 입/출력을 수행하는 가장 통상적인 방법이므로 시스템 버스상의 모든 칩은 이미 메모리맵 I/O를 수행하는 논리를 갖고 있다.
본 발명의 바람직한 실시예에서, 인터럽트 패킷 정의는 512개의 IOC각각으로부터 16개의 인터럽트 소오스를 허용하며, 256개의 인터럽트 우선순위 레벨이 있다. 각 시스템은 256개의 인터럽트 서버(interrupt servers)를 가질 수 있다. 따라서, 본 패킷 정의를 광범위한 장치에서 사용할 수 있다. 인터럽트 요구 패킷과 인터럽트 리셋 패킷내에는 인터럽트 패킷으로 보다 많은 정보를 전송할 필요가 있는 시스템에 의해 사용될 수 있도록 예비 비트(reserved bits)가 마련되어 있다. 따라서, 본 패킷 정의는 장래의 시스템을 위한 확장성을 또한 제공한다.
종래의 하드와이어드 인터럽트 시스템은 인터럽트에 대한 즉시 정보(immediate information)를 거의 제공하지 못했다. 본 발명에 따른 버스 패킷 방법은 동시에 또한 동일 위치에서 인터럽트 소오스, IOID, 우선순위 및 서버 정보 모두를 제공한다. 이러한 시스템 융통성(system flexibility)에 부가하여, 시스템 인터럽트 디버깅(debugging)을 더욱 용이하게 한다. 어떤 종류의 인터럽트 리셋이 전송중인지를 IOC에게 알려주기 위하여 인터럽트 리셋 패킷의 예비 어드레스 비트(0-2)에 정보가 삽입될 수 있다.
인터럽트는 어드레스 버스를 통해 전송되므로, 다른 인터럽트 및 다른 시스템 동작에 따라 순서화된다. 이는, 인터럽트를 시스템 레벨에서 보다 관찰이 용이하게 하며 시스템에 대한 비동기성(asynchronous)을 감소시키므로, 디버깅 동안에 도움이 된다.
인터럽트 정보는 플래너상에 하드와이어되는 대신에 인터럽트 패킷의 각종 필드(field)내에 정의되기 때문에, 이러한 인터럽트 시스템은 프로그램가능성이 매우 높다. 인터럽트 우선순위, 서버번호, 인터럽트 소오스 및 I/O 제어기 ID는 모두 이 패킷 구조를 사용하여 프로그램가능하다. 따라서, 본 발명에 따른 인터럽트 구조는 하드와이어드 시스템 인터럽트 구조보다 융통성이 있다.
따라서, 본 발명의 목적은 개선된 데이터 처리 시스템을 제공하는데 있다.
본 발명의 다른 목적은 데이터 처리 시스템내에 개선된 인터럽트 서브시스템을 제공하는데 있다.
본 발명의 또 다른 목적은 다중 프로세서 데이터 처리 시스템내에 개선된 인터럽트 시스템을 제공하는데 있다.
본 발명의 또 다른 목적은 개선된 인터럽트 신호 방법을 제공하는데 있다.
본 발명의 상기한 목적 및 다른 목적은 첨부된 도면을 참조하여 이하에서 더욱 상세히 설명된다.
제1도에는 데이터 처리 시스템(20)의 논리도가 도시되어 있다. 시스템 상호연결부(system interconnect)(22)는 각종 시스템 구성요소들, 즉, 프로세서(24), 메모리(26) 및 시스템 상호연결부(22)에 직접 결합된 입/출력 제어기(input/output controller;IOC)(30)를 경유하여 결합된 I/O(28)간의 데어터 전송을 가능케 한다. 또한, 선택사양적 시스템 버스(29)를 통해 프로세서에 부가의 I/O 및 IOC가 접속될 수도 있다. 시스템 상호연결부(22)는 다수의 상이한 구조(예를 들어, 시스템 버스, 스위치 등)중의 하나일 수 있으며, 시스템 종속적(system dependent)이다. 본 바람직한 실시예에서, 시스템 상호연결부는 시스템 버스이다.
오늘날 시스템에 대한 외부 인터럽트 구조(external interrupt structure)는 간단한 단일 사용자 퍼스널 컴퓨터로부터 다수의 프로세서 계층으로 구성된 다중사용자 시스템(multi-user system)에 이르는 광범위한 시스템 요건을 망라하도록 요구된다. 종래 기술로는 이러한 범위를 효과적으로 처리할 수 없다. 인터럽트 시스템에 대한 프로그래밍 인터페이스(programming interface), 즉, 논리적 측면은 일관성이 있어야 한다. 제2도에는 전형적인 인터럽트 구조가 도시되며, 이 도면에서 인터럽트를 발생시킬 수 있는 장치(32)(제1도의 I/O(28) 및 IOC(30)를 포함함)는 인터럽트 제어기(34)를 통해 서비스 프로세서(service processor)(24)와 인터페이스한다. 본 발명은 일관된 프로그래밍 모델을 유지하면서 광범위한 시스템에 걸쳐 스캐일링가능한 개선된 인터럽트 제어 구조를 제공한다.
이제 제3도를 참조하면, 시스템 소프트웨어입장에서 바라본 시스템의 논리도가 n개(최대 256개)의 이벤트 큐(queues of events)의 논리도로서 도시된다. 각 소프트웨어 큐(42, 43)내에는 우선순위화된 이벤트 리스트(prioritized list of events)가 유지된다. 이들 이벤트는 하드웨어 발생 인터럽트(예를 들면, IOC로부터의 외부 인터럽트)와 소프트웨어 발생 인터럽트(예를 들면, 프로세서간(inter-processor) 인터럽트)를 포함한다. 각 큐(42, 43)에는 논리 서버(logical server)가 연관된다. 큐(0 내지 m)는 논리 서버 #0과 연관되고, 큐(m+1 내지 n)는 논리 서버 #1과 연관된다. 추가적인 프로세서를 구비한 추가적인 논리 서버도 유사하게 구성될 수 있다. 단일 프로세서 시스템의 경우에는 하나의 서버가 있고, 따라서, 하나의 큐가 있다. 다중 프로세서 시스템의 경우에는 각 프로세서와 연관된 하나의 큐와, 하나의 논리 서버로 간주되는 프로세서의 집합체(collection of processors)와 연관된 적어도 하나의 전역 큐(global queue)가 존재한다. 예를 들어, 제3도에 하나의 프로세서(40)와 연관된 각각의 큐(42)와 프로세서(0 내지 m)의 집합체와 연관된 전역 큐(44)가 도시된다. 프로세서(40)들의 집합체는 논리서버 #0(38)으로 도시된다. 마찬가지로, 각각의 큐(43)는 각 프로세서(41)와 연관되며, 전역 큐(45)는 프로세서(m+1 내지 n)의 집합체와 연관된다. 프로세서(41)들의 집합체는 논리 서버#1(39)로 도시된다. 다중 프로세서 시스템의 경우에는 각각의 전역 큐에 의해 사용가능한 프로세서를 판정하는 메카니즘(mechanism)이 있어야 한다. 이 메카니즘은 제4도를 참조하여 보다 상세히 기술되는 바와 같이 사용가능 프로세서 레지스터(Available Processor Register:APR)에 의해 제공된다.
제3도를 계속 참조하면, 각 큐(42, 43)에는 0x00 내지 0xff 범위의 서버 번호가 연관된다. 집합체내의 각 프로세서(40, 41)에는 0x00로부터 오름차순으로 서버 번호가 할당되고, 다중프로세서를 서비스하는 큐(즉, 전역 큐)에는 0xff로부터 내림차순으로 서버 번호가 할당된다. 큐 길이(queue length)(즉, 큐내의 우선순위화된 리스트의 길이)는 구현에 따라 다르지만, 1의 최소 깊이(minimum depth of one)를 가진다.
외부 인터럽트는 IOC(들), 집합체내 다른 프로세서들 및 시스템내 다른 소오스들(예를 들면, 돌발적인 전력 오프 경고 인터럽트)로 인해 발생된다. 이하 보다 상세히 기술되는 바와 같이, 상이한 소오스는 상이한 물리적 신호 메카니즘을 요구하지만, 서버(전역 큐에 대한 논리 서버이거나 다른 큐에 대한 프로세서)에 제시되는 논리적 외형(logical appearance)은 최우선 이벤트를 선두로 하는 하나의 큐이다. 최고 우선순위(즉, 최대로 선호되는) 인터럽트는 0x00로 정의되고, 최저 우선순위(즉, 최소로 선호되는) 인터럽트는 0xff로 정의된다. 따라서, 인터럽트 레벨 0x55는 인터럽트 레벨 0xff 보다는 우선순위가 높고, 인터럽트 레벨 0x00보다는 우선순위가 낮다.
본 발명은 외부 인터럽트 메카니즘(즉, 인터럽트 제어기)을 2개의 층, 즉, (i) 인터럽트 제공층과 (ii) 인터럽트 경로배정층으로 분리한다. 이들 층은 제4 및 제6a 및 6b도에 도시되어 있다. 제4도를 참조하면, 인터럽트 제공층(50)은 프로세서 혹은 서버와 연관된 레지스터를 포함한다. 운영체제 소프트웨어는 이들 프로세서 혹은 서버와 인터페이스하여 개별적인 인터럽트를 발생 및 처리한다. 인터럽트 제공층(50)은 단지 시스템내의 프로세서 혹은 서버의 수에 의해서만 변경되는 정의(definition)를 가진다. 인터럽트 경로배정층(52)은 소오스로부터 목적지(destinations)로 인터럽트를 경로배정하며, 특성상 훨씬 더 구현 특정적이다. 시스템 소프트웨어는 파워온시에 인터럽트 경로배정층(52)의 구성을 셋업해야 할 수도 있지만, 인터럽트시마다 이 인터럽트 경로배정층에 인터페이스해야 할 필요는 없다.
이제부터 인터럽트를 관리하는데 사용되는 레지스터를 간단히 설명하고, 차후에 보다 상세히 기술하다.
*사용가능 프로세서 레지스터(Available Processor Register:APR)
-어느 프로세서가 인터럽트를 경로배정하기 위한 특정 서버로 사용가능한지를 알기 위해 인터럽트 경로배정층 하드웨어에 의해 사용되는 선택사양적 레지스터. APR은 대체로 전역 큐와 함께 사용되며, 제4도에서 참조부호(39)로 도시된다.
*전역 큐 인터럽트 요구 레지스터(Global Queued Interrupt Request Register;G_QIRR)
-이 레지스터는 1바이트 혹은 4바이트(32 비트워드)로 기입될 수 있으며, 제4도에서는 참조부호(73)로 도시된다.
-비 프로세서 특정 서버 큐(non-processor specific server queue)로서, 대칭형 MP(symmetric MP:SMP) 시스템에서 사용된다.
-다음 2개의 레지스터로 구성된다.
①전역 최우선 요구 레지스터(Global Most Favord Request;G_MFRR)-이것은 하나의 MFRR이다.
②인터럽트 소오스 명세 레지스터(Interrupt Source Specification Register;ISSR).
-G_MFRR 인터럽트의 소오스 명세를 구성하기 위해 SMP 시스템에서 사용된다.(XISR 참조).
*큐 인터럽트 요구 레지스터(Queued Interrupt Request Register;QIRR)
-이 레지스터는 1바이트 혹은 4바이트(32 비트 워드)로 기입될 수 있으며, 제4도에 참조부호(61)로 도시된다.
-프로세서마다 적어도 하나와, 비 프로세서 특정 서버 큐마다에 하나인 다음 2개의 레지스터로 구성된다.
①최우선 요구 레지스터(MFRR)
-큐상의 최우선 요구의 우선순위를 유지한다.
-이 레지스터는 기입이 발생하였음을 확인하기 위해 소프트웨어에 의해 되판독될 수 있다.
②인터럽트 소오스 명세 레지스터(ISSR)
*외부 인터럽트 요구 레지스터(External Interrupt Request Register;XIRR)
-프로세서당 하나로서, 제4도에 참조부호(60)로 도시된다. 인터럽트에 대하여 시스템 소프트웨어에 단일 소오스 식별자(source identifier)를 제공한다.
-다음 2개의 레지스터로 구성된다.
①현재 프로세서 우선순위 레지스터(Current Processor Priority Register;CPPR)
-이 레지스터는 소프트웨어에 의해 현재 프로세서 우선순위를 유지하도록 갱신된다.
-소프트웨어가 특정 어드레스의 XIRR에 로드 인스트럭션(load instruction) 을 송출했을 때, 실행된 로드 인스트럭션에 의해 전달된 XISR 데이터에 의해 표시되는 인터럽트 우선순위로 갱신된다.
②외부 인터럽트 소오스 레지스터(XISR)
-대기중인 인터럽트(pending interrupt)의 소오스(혹은 대기 인터럽트가 없는 경우 0의 값)를 나타낸다.
*외부 인터럽트 벡터 레지스터(External Interrupt Vector Register;XIVR)
-제4도에 참조부호(70)로 도시되며, 각 IOC의 인터럽트 레벨당 하나.
-각 인터럽트 레벨을 우선순위화하는데 사용된다.
-특정 서버에 특정 인터럽트를 벡터지정(vector)하는데 사용될 수 있다.
인터럽트 경로배정층
인터럽트 경로배정층의 목적은 최우선 인터럽트 요구를 최저 우선순위로 동작하는 프로세서, 즉, 최상의 프로세서로 경로배정하는데 있다. 인터럽트 경로배정층은 입력되는 요구보다 높은 레벨에서 실행되는 프로세서로 인터럽트를 전송하는 것을 최대한 피한다. 본 발명은 인터럽트 경로배정층이 시스템 요건(system requirements)에 따라 상이하게 구현될 수 있도록 한다. 따라서, 상이한 구현은 상기한 목적에 상이한 레베르이 정확도로 접근할 수 있으며, 이것은 인터럽트 요구의 경로배정시에 지연(delay)의 변화로서 나타난다. 인터럽트로 인하여 예상되는 시스템 부하(system load)가 클수록, 인터럽트 경로배정 하드웨어는 적절한 시스템 성능을 성취하기 위하여 상기한 목적에 더 근접하여야 한다. 본 목적을 충분히 성취하기 위하여, 인터럽트 경로배정 하드웨어는 시스템의 상태(즉, 사이클마다의 정확한 프로세서 우선순위와 모든 논리적인 인터럽트 요구 큐의 내용)를 완전히 파악하고 있어야 한다. 이는 실제로는 불가능할 수도 있는데, 그 이유는, (i)인터럽트 경로배정층내의 하드웨어 큐보다 더욱 많은 잠재적인 인터럽트 요구가 있을 수도 있고, 혹은 (ii) 프로세서로부터 인터럽트 경로배정 하드웨어로 프로세서 우선순위를 전달하는데 다수의 사이클이 요구되므로, 사이클마다의 정확한 프로세서 우선순위에 관하여 인터럽트 경로배정층내의 특정 레벨이 불확실성이 있기 때문이다. 큐 깊이의 문제는, IOC로 하여금 인터럽트 경로배정 하드웨어에 의해 거절된 인터럽트 요구 메시지를 재제출하도록 요구하므로써 처리된다. 이렇게 하므로서, 인터럽트 경로배정 하드웨어는, 어떤 오버플로우(overflow) 경우를 처리하는데 사용되는 인터럽트 거절 메카니즘을 사용하여 예상되는 경우의 소정 퍼센트를 만족시키도록 큐 깊이(최소 1)를 구현할 수 있다. 시스템 소프트웨어는 영향받은 인터럽트 요구를 단지 가변 지연시키는 거절 메카니즘의 존재를 의식하지 못한다. 인터럽트 경로배정 하드웨어가 처음 프로세서에 요구를 경로배정할 때 진정한 프로세서 우선순위를 모를 수도 있으므로, 인터럽트 경로배정 하드웨어는, 특정 프로세서에 요구를 초기 할당한 후 소프트웨어가 그의 동작 우선순위를 변경하는 경우에 대해 준비해야 한다. 프로세서 우선순위 변경을 고려하지 않으면 우선순위 역전 및 심각한 시스템 성능 저하를 야기할 수 있으며(우선순위 역전은 현재 프로세서 우선순위
보다 낮은 우선순위를 갖는 인터럽트가 큐잉되고, 이 큐잉된 인터럽트로 인하여 프로세서보다 높은 우선순위를 갖는 인터럽트가 프로세서에 진입하여 인터럽트 서비스 받을 수 없게 되는 경우에 발생할 수 있다), 프로세서의 우선순위가 큐잉된 인터럽트 우선순위보다 낮은 우선순위로 저하될때까지 큐잉된 인터럽트는 서비스되지 않는다. 또한, 인터럽트 거절 메카니즘은 큐 자원 문제(queue resource problems)를 극복하기 위해 사용될 수도 있다. 인터럽트를 거절하여 IOC에 복귀시키므로써, IOC는 인터럽트 경로배정층 큐잉 메카니즘에 대한 확장으로서 동작한다.
인터럽트 소오스는 전형적으로 단 한 번 인터페이스(71)(제4도 참조)를 통하여 특정 인터럽트를 인터럽트 경로배정층으로 전송한다. 단, 이것은 다음의 사항중 하나가 발생되지 않았을 때이다. 즉, (i) 인터럽트가 인터럽트 경로배정층에 의해 거절되거나, 혹은 (ii) XISR값이 인터럽트 소스와 동일하게 되는 XIRR로의 소프트웨어 기입에 의해 리셋되고, 인터럽트중인 소오스의 인터럽트가 여전히 대기중(즉, 아직 서비스되지 않은 경우)중 하나가 발생되지 않았을 때이다. 이는 제 6A 및 6B 도를 참조하여 차후에 보다 상세히 기술된다.
(i) 하위 장치(low-end machine)를 위한, 외부 인터럽트 우선순위 및 소오스로 구성된 프로세서마다의 단일의 구성요소 큐(single element queue), 혹은 (ii) 상위 장치(high-end machine)를 위한, 다수의 외부 인터럽트 소오스 큐 레지스터를 포함하여, 인터럽트 경로배정층(52)의 다양한 구현이 가능하다. 하드웨어는 인터럽트 경로배정층내의 정확한 하드웨어 큐잉 구현이 인터럽트 제공층과 인터페이스하는 시스템 소프트웨어에 대해 무관할 것을 보장한다. 본 명세서에서 참조로 인용된 미합중국 특허 제 4,807,111 호에 기술된, 엔티티(entities)가 우선순위 순으로 유지되는 하드웨어 레지스터 파일처럼, 이용가능한, 본 기술분야에 잘 알려진 각종 유형의 큐잉 기법이 있다. 본 발명의 주요 특징은 인터럽트 제공층에 의한 이러한 큐의 사용이다. 이 인터럽트 제공층은 인터럽트 경로배정층내의 기초가 되는 큐 구현으로부터 소프트웨어의 독립성을 제공한다.
시스템 셋업시에, 설정 소프트웨어는 지원될 수 있는 논리서버의 수와, 어느 프로세서가 어느 논리 서버를 지원하는지와, 그리고, 어느 인터럽트가 어느 서버로 지향되는지를 포함하는, 인터럽트 경로배정층 구성을 결정해야만 한다. 이것은 몇 개의 구현 특정 레지스터를 판독하거나, 혹은 ROM에 구성 정보를 저장하므로써 수행
된다. APR은 어느 프로세서가 어느 논리 서버 큐에 대해 동작하는지를 지정한다. 특정 셋업 결정은 하드웨어에 종속적이며 상이한 하드웨어 구현간에 상이할 것이다. 유일한 요건은 앞서 나열된 셋업 정보가, 여하히 결정되었는지 간에 결정이 되면, 차후의 인터럽트 경로배정층에 의한 액세스를 위해 APR에 배치된다는 것이다.
인터럽트 제공층
프로세서간 인터럽트 메카니즘은 시스템 메모리내에 제3도에 도시된 각 큐(42, 43)와 연관된는 물리적 요구 블록 큐(physical queue of request blocks)(제5도, 참조부호(57))를 갖는다. 이들 각 소프트웨어-관리큐(software managed queue)는 소프트웨어에 의해 우선순위순으로 유지된다. 큐의 구현은 인터럽트 메카니즘내에 정의되지 않고, 운영체제 소프트웨어에 맡겨진다. 각종 큐의 구현은 예상 사용 빈도에 따라 다를 수가 있다.
각 큐에는 최우선 요구 레지스터(MFRR)(시스템 메모리공간내에 위치됨)가 연관된다. 프로그램이 특정 프로세서에 의해 수행되는 서비스를 필요로 하면, 그 프로세서 큐에 요구 블록을 큐잉하고, 이 새로운 요구가 보다 높은 우선순위에 있는지를 판정하며, 그러한 경우에는, 새로운 요구의 우선순위값이 MFRR에 기입된다.
프로그램
이 서비스할 요구를 큐잉해재(dequeue)하면, 큐상의 다음 요구의 우선순위값이 MFRR로 로딩된다. 큐잉해제 후, 큐가 비게 되면, 최소 우선순위 값(0xff)이 MFRR로 로딩된다. MFRR이 0xff이외의 다른 값을 가지면, 해당 우선순위의 인터럽트가 그 큐를 서비스하는 프로세서에게 참조부호(72)로 도시된 라인을 통해 신호되어야 함을 인터럽트 경로배정층내의 인터럽트 하드웨어에게 표시한다.
각 프로세서에는 외부 인터럽트 요구 레지스터(XIRR)(60)를 포함하는 메모리맵 인터럽트 관리 영역(memory mapped Interrupt management area)이 연관된다. XIRR은 4바이트 장치(facility)로서, 현재 프로세서 우선순위 레지스터(CPPR)와 외부 인터럽트 소오스 레지스터(XISR)의 2개 필드(field)로 구성된다.
CPPR은 프로세서의 동작 우선순위를 포함한다. CPPR은 시스템 소프트웨어에 의해 기입되어, 보다 낮은 우선순위 요구로 부터의 인터럽트를 방지한다. 프로세서의 CPPR 필드가 인터럽트 요구의 우선순위보다 낮은 경우, 인터럽트 경로배정층은 단순히 인터럽트 요구를 이 프로세서로 경로 배정한다. 시스템 소프트웨어는 1-바이트 레지스터로 CPPR에 저장하여 인터럽트 경로배정층내의 인터럽트 하드웨어에게 프로세서의 현재 동작 우선순위를 알린다.
인터럽트의 소오스를 판정하기 위하여, 시스템 소프트웨어는 XIRR에 로드 인스트럭션을 발생하므로써 XISR을 판독한다. XISR의 값은 인터럽트 소오스(IOC인 경우에는 IOID 및 레벨, 프로세서인 경우에는 서버 큐)를 명시한다. 이 정보에 기초하여, 소프트웨어는 인터럽트를 서비스하기 위해 호출할 적절한 프로그램 혹은 프로세스를 판정할 수 있다. XISR은, 로드 동작에 대하여는 인터럽트 경로배정층으로부터의 판독전용 레지스터, 저장 동작에 대하여는 인터럽트 경로배정층에 대한 기입 전용 레지스터로서의 기능을 제공한다. 즉, 하드웨어는 XISR에 대한 기입을 (후술하는 바와 같이, XISR 비트 자신들에 직접 기록하기 위한 신호가 아니라) 인터
럽트중인 소오스로 인터럽트 리셋을 전송하기 위한 신호로 해석하므로, 기입되는 내용과 판독되는 내용이 다를 수 있다. XISR은 XIRR로 4-바이트 액세스가 지향될 때, CPPR과 더불어 자동적으로 액세스되어야 한다. IOC로부터의 인터럽트인 경우, XISR의 상위 비트는 IOC IOID를 나타내고, 하위 4비트는 IOC내에서 최대 16개의 소오스(혹은 레벨)를 정의한다. 이 레지스터의 몇 개 값이 정의된 의미를 가진다. XISR은 차후에 보다 상세히 기술될 것이다.
인터럽트 메카니즘의 인터럽트 제공층은 시스템내의 각 프로세서에 대해 인터럽트 관리 영역을 통해 구현되는데, 표 1에 도시된 바와 같다. 인터럽트 관리 영역은 데이터 처리 시스템의 메모리 공간내에 있다. 프로세서 인터럽트 관리 영역의 시작 어드레스(starting address)는 이후 베이스 어드레스(Base Address:BA)로 참
조된다. BA는 각 프로세서에 대해 상이하고(즉, 각각의 프로세서에 대해 별개의 인터럽트 관리 영역이 있고), 이들 영역은 임의의 프로세서에 의해 액세스될 수 있다(즉, 액세스를 방지하기 위한 보호가 없다). 프로세서에 대한 BA는 구성시에 셋업된다. 인터럽트 관리 영역의 구성은 다음과 같다.
표 1:인터럽트 관리 영역:인터럽트 제공층 레지스터 큐잉(Queuing)
제5도는 전술한 각종 큐간의 상호관계를 도시한다. 시스템 소프트웨어에 대해 일관성있고 하드웨어 독립적인 인터페이스를 제공하는 소프트웨어 큐(42, 43)가 참조부호(53)로 특정 프로세서 X에 대해 도시된다. 큐 X는 XIRR 레지스터(54)를 통해 프로세서 X와 인터페이스한다. 블록(55)에서, 이 XIRR 레지스터는 인터럽트 경로배정층(52)에 의해 변경될 수 있다. 경로배정층에 의해 최우선 순위를 선택하는 블록(55)은 다수의 인터럽트 유형을 고려해야 한다. 블록(56)에서 하드웨어 큐내에 유지되는 하드웨어 인터럽트는 블록(58)에 의해 인터럽트 경로배정층(52)에 제공된다. 이들 하드웨어 인터럽트는 블록(51)의 개별적인 IOC 하드웨어 큐로부터 발생된다. 또한, 소프트웨어 인터럽트가 인터럽트 경로배정층(52)에 제공될 수 있다. 이들 소프트웨어 인터럽트(예를 들면, 프로세서간 인터럽트)는 블록(57)에서 소프트웨어 관리 큐내에 유지되며, MFRR 레지스터를 통해 블록(59)에 의해 인터럽트 경로배정층에 제공된다.
요약하면, 시스템 소프트웨어에 제공되는 제4도의 소프트웨어 큐(42, 43)는 소프트웨어-관리 큐와 하드웨어 인터럽트 큐의 조합이다. 따라서, 하드웨어 큐는 경로배정층과 IOC사이에서 분산될 수 있다. 또한, 하드웨어-발생 큐와 및 소프트웨어-발생 큐는 균일한 인터페이스, 즉, XIRR 레지스터를 사용하여 시스템 소프트웨어에 제공된다.
인터럽트 처리(Interrupt-Handling)
제6a 및 6b도는 인터럽트 처리의 전반적인 흐름을 도시한다. 단계(74)에서, IOC는 서비스를 필요로 하는 인터럽트를 가질 때, 우선 이 인터럽트가 제공될 필요가 있는 최고 우선순위의 인터럽트인지를 판정한다. 단계(75)에서, 아직 서비스되지 않은 더 높은 우선순위의 인터럽트가 있는 경우, 먼저 그 인터럽트를 제공한다. 단계(76)에서, IOC는 제공될 특정 인터럽트와 연관된 XIVR을 선택하여, XIVR로부터의 서버 번호 및 우선순위와 인터럽트 경로배정층에게 서비스를 요구하고 있는 IOC IOID 및 그 IOC내의 소오스를 나타내는 번호를 전송한다. 단계(77)에서, 인터럽트를 경로배정층은 인터럽트 정보로부터의 서버 번호를 사용하여 인터럽트를 특정 프로세서(서버)로 경로배정하거나(분기 98), 혹은 서버번호가 시스템의 특정 프로세서와 대응하지 않는 경우에는 단계(78)에서 인터럽트를 경로배정할 프로세서를 선택한다. 후자의 경우에 있어, 하드웨어가 인터럽트를 경로배정할 프로세서를 선택하는 방법은 구현 종속적이며, 시스템 설계주안점(system design point)(예를 들면, 하위 장치의 경우에는 비용 혹은 상위 머신의 경우에는 성능)에 기초하여 최적화될 수 있다. 이 경로배정 결정블록(78)에 제공되는 정보는 동작중인 각종 프로세서의 우선순위(CPPR값)와 그 프로세서를 대기하며 큐잉된 상태에 있는 다른 우선순위들(예를 들면, 그 프로세서에 대한 MFRR 혹은 G_MFRR)이다. 단계(79)에서, IOC로부터 수신된 인터럽트의 우선순위가 기존의 큐잉된 인터럽트보다 낮거나 혹은 동등한 경우, 단계(96)에서 인터럽트는 거절되어 IOC로 복귀되고, IOC는 차후에 (예를 들면, 소정의 정해진 시간이 경과한 후에) 인터럽트를 재제공해야 한다. IOC로부터의 인터럽트가, 목표 프로세서(target processor)의 XIRR에 이미 배치되어 있는 기존의 큐잉된 인터럽트보다 높은 우선순위인 경우 (단계 80), 단계(95)에서 이전에 XIRR에 배치된 인터럽트는 거절되어 IOC로 복귀되고, 단계(81)에서 새로운 인터럽트가 발생된다. 인터럽트 경로배정층 메카니즘의 특정한 구현에 따르면, 경로배정층내에 인터럽트를 큐잉하여 차후에 제공하도록 할 수도 있지만, 본 바람직한 실시예에서는, 경로배정층이 인터럽트를 거절하여 소오스로 복귀시키고, 소오스는 차후에 인터럽트를 다시 제공한다.
XISR의 로딩은 원자적(atomic)이어야 한다. 즉, 하드웨어는 시스템 소프트웨어와 인터럽트 경로배정층이 XISR을 동시에 액세스(예를 들어, 프로세서가 XIRR을 판독하려고 하는 것과 동시에 하드웨어가 보다 높은 우선순위 요구에 의해 XIRR을 갱신하려고 시도하는 경우처럼)하지 않도록 보장해야 한다.
단계(83)에서, XISR 값이 0이 아닌 경우, 인터럽트는 프로세서 하드웨어로 향하는 인터럽트 신호를 통해 하드웨어에 의해 프로세서로 신호된다. 인터럽트가 신호되고, 단계(84)에서 인터럽트가 인에이블될 때, 단계(85)에서 소프트웨어는 인터럽트 신호를 수신하여 인터럽트 처리를 시작한다. 인터럽트 처리의 초기에, 소프트웨어는 XIRR을 판독하고 (단계86), 인터럽트 처리가 종료될 때까지 그 값을 저장한다. 단계(86)에서, 소프트웨어가 XIRR을 판독할 때, 하드웨어는 XISR값에 의해 표시되어 인터럽트 우선순위를 CPPR에 배치하고, XISR을 0으로 세트한다. CPPR을 인터럽트 우선순위 값으로 세트하므로써 소프트웨어는 다음을 행할 필요가 없다. 즉, 인터럽트 서비스의 개시시에 프로세서 우선순위가 인터럽트 우선순위와 동일하게 되므로, 인터럽트 경로배정층은 보다 낮은 우선순위의 인터럽트에 의해 그 인터럽트 서비스를 방해하지 않는다. XISR을 0으로 세트하므로써, 프로세서에 대한 인터럽트 신호가 비활성화되고, 차후에 프로세서가 XIRR을 판독하는 경우, XISR의 0값은 대기중인 인터럽트가 없음을 신호한다. 일단 프로세서가 BA+4에서 XIRR을 판독하므로써 인터럽트가 프로세서로 제공되면, 이는, 소프트웨어가 인터럽트 처리를 시작하며, 따라서, 인터럽트 경로배정층은 요구를 선점(preempt)하거나 취소(cancel)할 수 없다는 것을 하드웨어에 신호한다. XIRR을 판도간 후, 소프트웨어는 XIRR의 XISR 필드 값을 사용하여 호출할 인터럽트 서비스 루틴을 판정한다. 단계(87)에서, XISR이 QIRR을 가리키는 경우, 소프트웨어는 단계(88)에서 그 큐로부터 최우선 큐 엔트리를 제거하고 QIRR의 MFRR을 그 큐상의 새로운 최우선 엔트리의 우선순위 값으로 세트하거나, 혹은, 큐가 비어있는 경우에는 0xff 값으로 세트한다. 단계(89)에서, XISR이 G_QIRR을 가리키는 경우, 단계(90)에서, 소프트웨어는 전역 큐로부터 최우선 큐 엔트리를 제거하고 G_QIRR의 G_MFRR을 그 큐상의 새로운 최우선 엔트리의 우선순위 값으로 세트하거나, 혹은, 큐가 비어있는 경우 0xff 값으로 세트한다. XISR이 소프트웨어 큐 중의 하나를 가리키지 않는 경우, 이것은 외부 인터럽트 서비스 루틴을 가리키므로, 단계(91)에서 소프트웨어는 인터럽트를 서비스할 적절한 장치 구동기(device driver)를 호출한다. 외부 인터럽트의 경우, 장치 구동기가 인터럽트를 서비스한 후, 서비스 루틴의 과정동안 IOC내의 인터럽트를 리셋한다(예를 들면, 대부분의 하드웨어는 IOC의 어드레스 공간내 특정 어드레스로의 저장 인스트럭션을 발생하여 IOC내의 그 인터럽트를 리셋한다). 단계(92)에서, 인터럽트 소오스와는 상관없이, 서비스 종료시, 소프트웨어는 XIRR을 인터럽트 서비스 시작(92)시에 XISR로부터 판독되어 저장된 값으로 BA+4에 기입한다. XIRR이 BA+4에 기입될 때, CPPR은 저장 데이터 값(이 경우, 인터럽트 서비스 시작시의 CPPR의 값)으로 설정되며, 제각기 단계(93, 94)에서, 기입된 XISR 데이터(이 경우, 인터럽트 시작시 XISR의 값)에 명시된 IOID 및 IOC내의 소오스를 이용하여 인터럽트 경로배정층 및 IOC에 인터럽트 리셋을 발생한다(따라서, 이 경우, 이제 막 서비스된 인터럽트가 리셋된다). IOC가 리셋을 수신한 때, 단계(97)에서, 하드웨어가 여전히 인터럽트가 대기중인 것으로 판단한 경우(예를 들면, 소프트웨어 서비스 및 XIRR로의 기입 후에 인터럽트가 다시 발생한 경우), 단계(74)에서 인터럽트 제공 프로세스가 다시 시작된다.
XIRR는 외부 인터럽트 관리 영역에서 두 번 나타난다. 어드레스 BA+0은 인터럽트 폴링(polling)에 사용되도록 설계된다. 어드레스BA+4는 판독 혹은 기입시 부수 효과(side effect)를 가지며, 인터럽트 큐잉 처리시에 하드웨어가 소프트웨어를 지원하도록 하므로써 효과적인 인터럽트 처리 소프트웨어가 허용되도록 설계된다. 이들 레지스터와 그들의 용도는 차후에 상세히 기술된다.
프로세서간 인터럽트
최우선 요구 레지스터(MFRR)는 이 프로세서의 소프트웨어 관리 큐상에 큐잉된 최우선 요구의 우선순위를 유지한다. 0xff 이외의 값이 기입되는 경우, MFRR은 그 프로세서를 인터럽트하기 위한 권한을 얻고자 다른 외부 인터럽트와 경쟁한다. MFRR의 우선순위가 그 프로세서로 경로배정된 모든 인터럽트 요구중 최고이면, 적절한 값이 XISR에 로딩되고 (XISR 레지스터 설명 참조), 인터럽트가 프로세서에 신호된다. 프로세서가 BA+4에서 XIRR을 판독할 때, MFRR내의 값은 하드웨어에 의해 CPPR로 로딩된다. MFRR은, MFRR 기입이 수행되었음을 보장하기 위하여 소프트웨어에 의해 되판독될 수 있다.
프로세서간 인터럽트의 처리동안, 최고 우선순위 요구는 MFRR과 연관된 소프트웨어 큐로부터 소프트웨어에 의해 큐잉 해제되며, 본 기술분야에서 알려진 종래의 큐 관리 기법을 사용하여, 다음 선호된 요구의 우선순위가 소프트웨어에 의해 MFRR로 로딩된다.
전역 큐
MP 시스템에서, 시스템 메모리 공간은, 소프트웨어에 의해 어떤 서버 그룹내 임의의 프로세서로 프로세서간 인터럽트를 전송하는데 사용되는 하나 이상의 전역 큐 MFRR을 포함한다. 인터럽트 경로배정층이 그 자신의 알고리즘에 기초하여 요구를 수신할 프로세서를 판정하며 XISR로 로딩되는 값은 전역 큐를 나타내는 IOID이라는 것을 제외하고는, 전역 큐 MFRR은 전술한 프로세서마다의 MFRR과 아주 유사하게 동작한다. 이 경로배정 알고리즘은 시스템 설계주안점에 기초하여 유사하게 최적화 될 수 있다. 예를 들면, 비용에 주안점은 두어 최적화된 시스템은 우선순위 비교 논리를 구현할 필요가 없도록 랜덤 프로세서로 경로배정할 수 있고, 반면에 고성능을 목적으로 구현된 시스템은 최소 선호 우선순위에서 실행되는 프로세서로 항상 경로배정하려고 시도한다.
외부 인터럽트 백터 레지스터(External Intterupt Vector Register:XIVR)
각각의 IOC(30)는 자신이 지원하는 각각의 외부 인터럽트에 대해 하나의 외부 인터럽트 백터 레지스터(70)를 포함한다. 이들 각 레지스터의 비트는 다음과 같이 정의된다.
표 2:XIVR 레지스터 설명
이들 레지스터는 IOC 어드레스 공간에 상주하고, 이들 레지스터의 어드레스는 IOC의 특정 설계에 의해 정의된다.
외부 인터럽트 요구 레지스터(XIRR)
XIRR은 어드레서 BA+0 및 BA+4에 있는 4-바이트 레지스터이다. 어드레스 BA+0의 XIRR에 로드 인스트럭션(load instruction)을 발생하면, CPRR 및 XISR의 내용은 부수효과 없이 프로세서로 전송된다. 이는 외부 인터럽트의 소프트웨어 폴링(software polling)을 위해 설계된다. 어드레스 BA+4의 XIRR에 로드 인스트럭션을 발생하면, 다음과 같은 원자적 부수 효과가 발생된다.
XIRR의 내용을 복귀시키기 전에,
*제6b도의 단계(86)에서, 그의 BA가 액세스되고 있는 프로세서로의 인터럽트 신호(72)가 인터럽트 경로배정층에 의해 비활성화 된다. XIRR의 내용은, 비활성화된 인터럽트 신호가 프로세서의 내부 인터럽트 논리를 통해 전달되었음을 보장하기에 충부한 시간이 경과한 후에야 요구 프로세서로 복귀된다.
XIRR로부터의 데이터가 프로세서에 전송된 후에,
*CPRR의 내용이 XISR에 신호된 인터럽트의 우선순위로 설정된다(XISR DL 0인 경우, CPPR 필드는 수정되지 않는다).
*XISR은 0x000000으로 리셋된다. 이제 보다 높은 우선순위의 후속하는 인터럽트 요구가 인터럽트를 신호하고 XIRR에 제공된다.
시스템 소프트웨어가 인터럽트를 처리하기 시작할 때, 프로세서는 인터럽트를 금지시킨다(즉, 후속하는 모든 외부 인터럽트를 차단한다). 인터럽트 처리 시퀸스동안, 소프트웨어는 인터럽트를 인에이블하여 후속 인터럽트가 제공될 수 있도록 한다. 인터럽트 경로배정층의 인터럽트 신호 종료와의 경쟁을 피하기 위해, 인터럽트를 인에이블하기 전에 BA+4에서의 XIRR 내용이 프로세서에 확실히 반환되도록 주의해야 한다. 이러한 경쟁은 정의되지 않은 결과를 초래할 수 있다. 프로세서가 위험한 인스트럭션을 실행할 가능성에 대항하여 데이터의 반환을 보장하는 한가지 방법은 코드중에서 XIRR 값 데이터에 의존하는 부분을 인터럽트를 인에이블하는 코드 앞에 배치하는 것이다. XIRR값을 수신하는 프로세서 레지스터는 그 자신과 비교되고, 이러한 비교 결과를 이용하여 동일시-분기 인스트럭션(branch-if-equal instruction)이 실행되며, 이 때 분기 목표 어드레스는 다음 인스트럭션 위치이다.
이와 같이 XIRR의 로딩시에 CPPR을 세트하므로써, 소프트웨어가 XIRR에 로드 인스트럭션을 송출한 때부터 새로운 값으로 CPPR에 저장 인스트럭션을 송출할 때까지, 모든 보다 낮거나 동등한 우선순위의 외부 인터럽트는 거절된다.
BA+0의 XIRR로 저장 인스트럭션을 송출하는 것은 정의되어 있지 않다(데이터는 무시된다). BA+4의 XIRR에 저장하는 것은 원자적 부수 효과를 가져오며, 이 부수효과는 1바이트 저장인 경우와 4바이트 저장인 경우에 대해 상이하다. 저장 인스트럭션이 1바이트 저장인 경우, 이것은 CPPR로의 저장이다(CPPR 레지스터 설명을 참조). 4바이트 길이로 XIRR에 저장 인스트럭션이 송출되면, XISR로의 저장 인스트럭션에 동반하는 데이터에 표시된 소오스(저장시에 XISR에 표시된 소오스가 아님)로 인터럽트 리셋이 전송된다. XISR로의 저장 인스트럭션에 포함된 데이터는 XISR내에 기입되지 않는다(또한, 그 후 로드 인스트럭션에 의해 판독하여도 이 데이터를 얻을 수 없다). 오히려, 인터럽트 경로배정층( 및, 프로세서간 인터럽트 및 전역 큐 인터럽트를 제외한 인터럽트에 대하여는 IOC)에 리셋될 소오스를 표시하는데 사용된다. 이 어드레스의 XISR에 저장 인스트럭션을 송출하므로써, 소오스는 후속하는 인스트럭션을 저장 인스트럭션에 수반하는 데이터에 표시된 레벨로 제공할 수 있게 된다. 4-바이트 저장의 경우, 바이트 0이 CPPR에 저장되지만, 시스템 소프트웨어는 이러한 CPPR 저장이 이전의 CPPR값보다 낮거나 동등한 우선순위라는 것을 보장하는데, 그 이유는 하드웨어는 이러한 경우에 대해 이중 리셋(dual resets)(하나는 보다 높거나 동등한 우선순위로 CPPR 값을 변경하기 위한 것이며, 다른 하나는 XISR에 기입하기 위한 것임)를 처리할 필요가 없기 때문이다.
인터럽트 경로배정층 하드웨어가, 보다 높은 레벨로부터 보다 낮은 레벨로의 CPPR의 변경시에 인터럽트를 거절하도록 선택되는 경우, XIRR에 대한 4-바이트 저장시 인터럽트 경로배정층 하드웨어는 다음 2가정 중 하나를 행할 수 있다. 즉,
1. 소오스로 2개의 거절을 회송(CPPR 변경에 대한 것과 XISR 기입에 대한 것임)
2. XISR 기입에 대한 거절을 전송(CPPR의 기입은 이전의 CPPR 값보다 낮은 우선순위여야 한다는 사실을 이용하며, 이는 소프트웨어상에 가해진 요건임).
본 명세서에 설명된 인터럽트 메카니즘이 상이한 프로세서를 가질수도 상이한 시스템에서 사용될 수 있게 하기 위하여 인터럽트 경로배정층은 특정 프로세서의 모든 인터럽트 신호 제한이 만족됨을 보장해야 한다. 예를 들어, 프로세서가 내부적으로 인터럽트 신호를 래치하지 않고, 프로세서의 인터럽트 제공 사이클동안 인터럽트 신호가 비활성화된 때 적절한 동작을 보장할 수 없는 경우, 인터럽트 경로배정층은 인터럽트 신호를 외부적으로 래치하여 인터럽트 거절의 결과가 아닌 XISR의 판독에 의하여 래치를 리셋해야 한다.
인터럽트 처리기(interrupt handler)의 종료시에, 인터럽트 처리기 초기에 판독된 값으로 BA+4의 XIRR을 기입하는 것은 IOC에 명시적인 인터럽트 종료를 알리고 프로세서 동작 우선순위를 이전-인터럽트 값으로 복귀시키는 복합 효과를 가져온다.
소프트웨어가 인터럽트를 폴링하는 경우, 이 소프트웨어는 인터럽트를 수신하기로 결정한 후, BA+4의 XIRR에 로드 인스트럭션을 송출하므로써 하드웨어에게 인터럽트가 수신되었음을 신호해야 한다. 그 후, 소프트웨어는 BA+0에서 판독된 값과 XISR을 비교하여, 하드웨어가 로딩중에 XISR을 변경하지 않았음을 확인한다.
현재 프로세서 우선순위 레지스터(CPPR)
이 레지스터는 1바이트 레지스터로서, 연관된 프로세서의 현재 우선순위를 포함한다. 이 레지스터는 어드레스 BA+0와 BA+4에 있다. (BA+0 혹은 BA+4의) CPPR로 1바이트 로드 인스트럭션을 송출하는 것은 어떤 부수효과도 일으키지 않는다. CPPR은 XIRR 레지스터내의 필드이다. 각 프로세서는 그 자신의 CPPR을 가진다. 프로세서의 상태를 변경하면, 소프트웨어는 프로세서의 프로세스 우선순위를 CPPR내에 저장할 수 있다. 인터럽트 경로배정층은 이 CPPR 우선순위에 비해 낮은 우선순위를 갖는 프로세서에 대한 모든 인터럽트를 거절한다. 따라서, CPPR을 현재 상태로 유지하면, 외부 인터럽트는 보다 높거나 동등한 우선순위의 처리를 인터럽트하지 못한다.
CPPR은 XIRR내의 필드로서, XIRR의 일부로서 판독 혹은 기입 될 수 있다. CPPR의 내용이 변경될 때, 인터럽트 경로배정층은 단지 보다 높은 레벨의 인터럽트만이 프로세서로 신호되고 XIRR에 제공될 것을 보장한다. 이것은 하드웨어 비교기를 사용하여 성취된다. 입력되는 인터럽트 우선순위가 현재 CPPR보다 낮거나 동등한 경우, 인터럽트는 거절되어 소오스로 복귀된다. CPPR에 대한 임의의 저장 후에 제공할 최우선 인터럽트를 하드웨어가 재계산(혹은 인터럽트 거절에 의해)하는 것은 우선순위의 변경방향이 보다 낮은 우선순위로 향하는 경우에 허용가능하며, CPPR로의 저장이 임의의 큐잉된 인터럽트에 비해 높거나 동등한 우선순위인 경우에는 이러한 재계산이 필수적이다. CPPR로의 저장으로 인해 XIRR로부터 인터럽트가 제거된 때, XISR내의 인터럽트를 대체하기 위해 대기중인 보다 높은(새로운 CPPR값 보다 높은) 우선순위의 인터럽트가 없는 경우, 인터럽트 제공 하드웨어는 (CPPR 저장과 함께 자동적으로) XISR을 0으로 설정하여 대기중인 인터럽트가 없음을 나타내며, 프로세서로의 인터럽트 요구 라인(request line)을 로우로 구동한다.
외부 인터럽트 소오스 레지스터(XISR)
이 레지스터는 3-바이트 레지스터로서, 인터럽트 소오스의 어드레스를 포함한다. 각 프로세서는 그 자신의 XISR을 가진다. 이 레지스터는 어드레스 BA+1와 BA+5에 있다. 그러나, 이 레지스터는 원자성을 위하여 XIRR의 일부로 액세스되어야 한다. 어드레스 BA+0의 XIRR에 로드 인스트럭션을 송출하면 XISR의 내용이 부수효과없이 프로세서로 복귀된다. 이는 외부 인터럽트의 소프트웨어 폴링을 위해 설계된다. 어드레스 BA+4의 XIRR로 로드 인스트럭션을 송출하면 XIRR의 내용이 프로세서로 복귀된 후에 원자적으로 XISR을 0x000000으로 리셋하는 부수효과를 가져온다. 그리고 나서, 후속하는 보다 높은 우선순위의 인터럽트 요구는 인터럽트를 신호하고 XIRR에 제공된다.
표 3에 도시되고 설명된 바와 같이, 몇 개의 값은 XISR 레지스터내에서 특별한 의미를 지닌다.
표 3:XISR 특정 값
큐 인터럽트 요구 레지스터(Queued Interrupt Request Register:QIRR)
큐 인터럽트 요구 레지스터는 4바이트 레지스터로서, 제 1 바이트는 최우선 요구 레지스터(MFRR)이며 나머지 하위 3바이트는 ISSR이 된다. 소프트웨어는 단일 바이트, MFR, 혹은 4 바이트 전체를 기입할 수 있다.
최우선 요구 레지스터(Most Favored Request Register;MFRR)
이것은 1바이트 레지스터이다. 이 레지스터의 내용은 시스템 소프트웨어에 의해 제어되며, 특정의 MFRR이 연관되는 프로세서 혹은 서버에 대한 IP 인터럽트 큐(42, 43)상의 최우선 프로세서간(IP) 인터럽트 우선순위를 표시한다. 임의의 프로세서에 대한 MFRR이 0xff 값으로 설정된 경우, 해당 프로세서에 대한 IP 인터럽트 큐(42, 43)내에는 어떤 인터럽트도 존재하지 않으며, 하드웨어는 이 프로세서로 IP 인터럽트를 신호하지 않는다. 시스템 소프트웨어가 프로세서에 대한 IP 큐(42, 43)상에 무언가를 배치하면, 이것은 이 레지스터를 IP 큐상의 최우선 인터럽트의 우선순위로 세트한다. 이 레지스터가 0xff 이외의 값인 경우, 인터럽트 경로배정층은 이를 XIRR을 통해 프로세서로 제공하기 위해 경쟁하는 또 다른 인터럽트 요구로서 취급한다. MFRR내의 값이 프로세서로 지향된 모든 인터럽트 요구 중 최우선 값인 경우, 적절한 값이 XISR내에 세트되고(XISR 설명 참조), 인터럽트가 프로세서로 신호된다. 다른 모든 인터럽트 소오스의 경우처럼, 인터럽트가 경로배정층에 의해 거절되거나 혹은 소프트웨어가 인터럽트의 종료를 송출한 때 인터럽트 조건이 리셋되지 않는 경우에만, MFRR 인터럽트는 다시 제공된다. 이 인터럽트 조건은 MFRR이 0xff 이외의 값을 가지는 것으로 받아들여진다. 따라서, 일단 MFRR이 0xff 이외의 값을 가지고, 인터럽트 경로배정층이 인터럽트를 경로배정하기 시작하는 경우, 인터럽트 경로배정층은 후속하는 MFRR 값의 변경으로 인해 이 인터럽트 요구를 인터럽트 제공층으로 재경로배정하지 않는다. 인터럽트 경로배정층이 MFRR 인터럽트 요구를 재경로배정하게 되는 유일한 경우는 인터럽트 거절 혹은 인터럽트 리셋으로 인한 경우이다(MFRR이 0xff 값을 갖지 않는 경우). 이 MFRR의 값은 소프트웨어 저장 동작에 의해서만 변경된다. 각 프로세서는 적어도 하나의 MFRR을 가진다. 또한, MP 시스템에는 하나 이상의 전역 MFRR이 있다. 특정 프로세서의 IP 인터럽트 메카니즘과 연관되는 MFRR은 어드레스 BA+12, BA+16 등에 위치된다.
전역 큐 인터럽트 요구 레지스터(Global Queued Interrupt Request Register;G_QIRR) 큐 인터럽트 요구 레지스터(73)는 4바이트 레지스터로서, 제 1 바이트는 MFRR인 전역 최우선 요구 레지스터(G_MFRR)이고, 나머지 하위 3바이트는 ISSR이다. 소프트웨어는 단일 바이트, G_MFRR 혹은 4바이트 전체를 기입할 수 있다. 전역 서버의 인터럽트 관리 영역의 개시 어드레스는 그의 베이스 어드레스(base address;BA)로서 참조된다. 각각의 전역 서버에 대한 BA는 상이하며, 셋업시에 설정된다. 전역 서버 인터럽트 관리 영역의 구조는 다음과 같다.
표 4:인터럽트 관리 영역:인터럽트 제공층 레지스터
인터럽트 소오스 명시 레지스터(Interrupt Source Specification Register;ISSR)는 대응하는 MFRR과 연관된 인터럽트가 프로세서로 신호될 때 XISR내로 로딩되는 값을 포함한다.
장치와 제어기간의 인터럽트 신호발생
표 5는 IBM 파워피씨 601(IBM PowerPC 601) 시스템 버스용으로 설계된 인터럽트 패킷 포맷을 기술한다. 이 시스템 버스는 또한 본 명세서에서 배경기술 자료로서 참조로 인용된 1992년도판 파워피씨 601 RISC 마이크로프로세서 사용자 매뉴얼(Power PC601 RISC Microprocessor User's Manual)에 상세히 기술되어 있다. 다른 프로세서를 사용하는 다른 데이터 처리 장치에 대해서도 동일한 어드레스 비트 정의(address bit definition)가 이용될 수 있다. 전송 유형 비트(transfer type bit)는 601 버스에 특정되며, 다른 버스 아카텍처에서는 달라질 수 있다.
전송 유형 필드는, 예를 들어, 인터럽트 요구 혹은 인터럽트 리셋과 같은, 어드레스 버스상에서 발생하는 전송 유형을 식별하는데 사용된다. 전역(GBL) 비트는 버스상의 모든 장치가 트랜잭션(transaction)을 감시해야 함을 표시하는데 이용되며, 인터럽트 패킷 전송에 대해 항상 인에이블된다. 어드레스 비트 라인은 4개의 서브세트(subset)로 그룹화된다. 어드레스 비트(0-2)는 발생되고 있는 특정 유형의 전송에 대해 더 많은 정보를 제공하는데 사용된다. 인터럽트 요구 동작에 대해, 어드레스 비트0-2는 이것이 제 1 인터럽트 제공인지 후속하는 인터럽트 제공인지를 표시하며, 따라서, 이 인터럽트가 이전에 거절되어 재제공되고 있는지를 표시한다. 인터럽트 리셋동작에 대해, 어드레스 비트0-2는 인터럽트 리셋의 원인을 표시한다. 어드레스 비트3-11는 요구하는 IOC의 시스템 어드레스 혹은 경로를 명시한다. 어드레스 비트12-15는 IOC내의 최대 16개 소오스중 어느 소오스가 요구를 발생하였는지를 식별한다. 어드레스 비트16-23, 즉, 서버 번호는 인터럽트 소오스의 XIVR 레지스터로부터 직접 얻어진다. 서버 비트는 각 서버에 의해 그 특정 서버에 대한 셋업시에 구성 레지스터에 기입된 서버 번호에 비교된다. 요구 패킷내 어드레스 비트24-31는 인터럽트 우선순위를 포함하며 또한 인터럽트 소오스의 XIVR로부터 얻어진다. 이들 우선순위 비트는 인터럽트 요구를 수용할 것인지의 여부를 판정하기 위해 CPPR내의 현재 값과 비교된다. 리셋 패킷내의 어드레스 비트24-31는 예비 비트로서, X'00'를 포함한다.
제7도 및 제8도는 데이터 처리 인터럽트 서브시스템의 버스 신호 타이밍(bus signalling)을 도시한 것이다.
제7도를 참조하면 IOC는 인터럽트 요구를 가지면, 버스 요구 신호, 즉, BR(100) 을 활성화시키므로써 중앙 버스 중재기(central bus arbitrator)로부터 어드레스 버스를 요구한다. 중재기는 대응하는 버스 승인(bus grant;BG) 신호(102)를 활성화시키므로써 IOC에게 버스를 승인한다. 그 후, IOC는 어드레스 버스를 통해 인터럽트 요구 패킷을 전송한다. 이는 전송 개시 신호(transfer start;TS)(104), 버스 어드레스 신호(110) 및 전송유형 신호(TT)(108) 라인을 특정 값(테이블5에 정의됨)으로 구동하여 특정 소오스와 우선순위의 인터럽트임을 인터럽트 제어기에게 알리므로써 수행된다. 또한, 어드레스 버스 비지 신호(signal address bus busy;ABB)(106)는 IOC에 의해 로우(low)로 구동되어 어드레스 버스가 사용중임을 표시한다. 인터럽트 제어기는 이 정보를 처리하여 프로세서로 인터럽트를 신호한다. 다중프로세서 시스템에서는, 전술한 바와 같이, 인터럽트 제어기가 인터럽트 정보를 적절한 프로세서로 경로배정할 수 있다. 어드레스 긍정응답 신호(address acknowledgement signal;AACK)는 중재기에 의해 로우로 구동되어 트랜잭션의 어드레스부분이 완성되었음을 표시한다.
이제 제8도를 참조하면, 프로세서가 인터럽트 처리를 완료하면, 인터럽트 제어기에게 IOC로 리셋 패킷을 전송(이것은 앞서 언급된 바와 같이 XIRR 레지스터로의 저장을 의미한다)하도록 경고한다. 그리고 나서, 인터럽트 제어기는 버스 요구 신호 BR(100)을 활성화시키므로써 중앙 버스 중재기로부터 어드레스 버스를 요구한
다. 중재기는 대응하는 버스 승인 신호(BG)(102)를 활성화시키므로써 IOC에게 버스를 승인한다. IOC는 어드레스 버스를 통해 인터럽트 리셋 패킷을 전송한다. 이것은 TS(104), 버스 어드레스 신호(110) 및 TT(108) 라인을 특정 값(표 5에 정의됨)으로 구동하여 인터럽트가 서비스되었음을 IOC에게 알리므로써 수행된다. 또한, 어
드레스 버스 비지 신호(ABB)(106)는 IOC에 의해 로우로 구동되어 어드레스 버스가 사용중임을 표시한다. 어드레스 긍정응답 신호(AACK)는 버스 중재기에 의해 로우로 구동되어 트랜잭션의 어드레스부분이 완료되었음을 나타낸다.
보유기간(tenure)은 하나의 어드레스 전송과 0 내지 8 사이클간의 데이터 전송으로 구성된다. 통상적으로 각 어드레스에 대해 4사이클의 데이터 전송이 있으므로, 데이터 버스는 어드레스 버스보다 과중하게 사용된다. 어드레스 버스를 통해 인터럽트 정보를 전송하므로써, 사용도가 높은 데이터 버스 대신 사용도가 낮은 자원, 즉, 어드레스 버스를 사용할 수 있다. 어드레스 버스를 사용하는 또다른 장점은, 본 바람직한 실시예에서, 현재 시스템 버스상의 모든 IOC가 전체 어드레스 버스를 사용한다는 것이다. 그러나, IOC는 모두가 전체 데이터 버스를 사용하지는 않는다. 본 발명에 따라 어드레스 버스를 통해 전송되는 인터럽트 패킷은 추가의 핀이나 와이어를 사용하지 않고 시스템에 이미 존재하는 어드레스 라인을 사용한다. 이것은 몇 개의 개별적인 인터럽트 라인을 사용하는 종래 방법과는 대조적이다. 메모리맵 I/O가 가장 널리 사용되는 입/출력 방법이므로, 인터럽트 패킷을 전송하기 위한 방법으로서 사용된다. 가장 통상적인 입/출력 방법이며 당분야에 공지된 종래 기술을 사용하므로, 이 시스템 버스상의 모든 칩은 메모리맵 I/O를 행할 논리 회로를 이미 구비하고 있다.
본 발명의 바람직한 실시예에서, 인터럽트 패킷 정의는 512개의 각 IOC로부터 16개의 인터럽트 소오스를 허용한다. 256개의 인터럽트 우선순위 레벨이 있다. 각 시스템은 256개의 인터럽트 서버를 가질 수 있다. 따라서, 이러한 패킷 정의는 광범위한 장치에서 이용될 수 있다. 인터럽트 요구 패킷 및 인터럽트 리셋 패킷에는 예비 비트가 마련되어, 인터럽트 패킷내에 더욱 많은 정보를 전송할 필요가 있는 시스템에 의해 사용될 수 있다. 따라서, 본 발명에 따른 패킷 정의는 장래의 시스템을 위한 확장성을 제공한다.
종래의 하드와이어드 인터럽트 시스템은 인터럽트에 대한 즉시 정보를 거의 제공하지 못했다. 버스 패킷 방법은 동시에 및 동일 위치에서 인터럽트 소오스, IOID, 우선순위 및 서버 정보 모두를 제공한다. 또한, 이러한 시스템 융통성에 부가하여 본 방법은 시스템 인터럽트 디버깅을 더욱 용이하게 한다. 전송되는 인터럽트 리셋의 종류를 IOC에게 알려주기 위하여 인터럽트 리셋 패킷의 예비 어드레스 비트0-2에 정보가 삽입될 수 있다.
인터럽트 패킷 정의내에 256개의 가능한 인터럽트 서버가 허용된다. 이것은 시스템내에 인터럽트를 수신하는 프로세서가 최대 256개까지 있을 수 있음을 의미한다. 이러한 패킷 정의로 인하여 인터럽트가 상이한 프로세서로 보다 용이하게 경로배정될 수 있다. 또한, 256개의 가능한 인터럽트 서버가 각 시스템에 정의될 수 있어, 시스템내에 최대 256개의 인터럽트 제어기가 허용된다. 전술한 바와 같이 각각 인터럽트 제어기는 단일 프로세서를 서비스할 수 있으며 또는 서버 집단(batch of servers)이 각 프로세서를 서비스할 수 있다.
인터럽트는 어드레스 버스를 통해 전송되므로, 다른 인터럽트 및 다른 시스템 동작과 함께 시퀀스화된다. 이것은 인터럽트를 시스템 레벨에서 보다 현저하게 하고 시스템에 대한 비동기성을 감소시키므로, 디버깅동안에 도움이 된다. 예를 들어, 어드레스 버스상에 제공되는 인터럽트를 검출하기 위하여 시스템 버스가 모니터될 수
있다. 어드레스 패킷은 시퀀스화되어 있으므로(즉, 중첨(overlap)되거나 혹은 동시에 제공되지 않으므로), 어떤 동작이 후속 동작을 호출 혹은 야기하였는지를 판정하기가 쉽다.
인터럽트 정보가 플래너상에 하드와이어드되는 대신에 인터럽트 패킷의 각종 필드내에 정의되므로, 이러한 인터럽트 시스템은 프로그램가능성이 높아진다. 인터럽트 우선순위, 서버 번호, 인터럽트 소오스 및 I/O 제어기 ID는 모두 이 패킷 구조를 사용하여 프로그램가능하다. 따라서, 이러한 인터럽트 구조가 하드와이어드 시스템의 인터럽트 구조보다 융통성이 있다.
이상 본 발명이 특정 실시예를 참조하여 도시되고 설명되었으나, 당업자라면 본 발명의 사상 및 범주를 벗어나지 않고서도 형태 및 세부사항에서 다양한 변경이 있을 수 있음을 할 것이다.

Claims (25)

  1. 다수의 프로세서(a plurality of processors)와 다수의 인터럽트 소스(a plurality of interrupt sources)를 구비하는 데이터 처리 시스템(a data processing system)내에서 인터럽트 요구(interrupt requests)를 처리하는 시스템―상기 각 인터럽트 요구는 우선순위(a priority)와 연관되며, 상기 다수의 프로세서는 가변 우선순위와 연관됨―에 있어서, ①상기 인터럽트 요구를 저장하기 위한 다수의 큐(a plurality of queues)를 포함하는 소프트웨어-액세스 가능 인터럽트 제공층(a software-accessible interrupt presentation layer)―상기 다수의 큐 각각은 상기 다수의 프로세서중 제각기의 프로세서와 연관되며, 상기 다수의 큐중 각 큐내의 인터럽트 요구는 상기 다수의 프로세서중 제각기 연관된 프로세서에 의해서만 처리됨―과, ②상기 다수의 인터럽트 소오스중 특정의 소오스에 의해 송출된 인터럽트 요구를 상기 다수의 프로세서중 특정의 프로세서와 연관된 상기 다수의 큐중 특정의 큐로 경로배정하기 위한 하드웨어 경로배정 수단(a hardware routing means)과, ③상기 특정 프로세서의 상기 가변 우선순위보다 낮은 우선순위를 갖는 상기 인터럽트 요구에 응답하여, 상기 특정 프로세서의 상기 가변 우선순위보다 높은 우선순위를 갖는 다른 인터럽트 요구가 상기 특정 큐에 의해 수신되고 상기 특정 큐가 채워져 있으면, 상기 특정 큐로부터 상기 인터럽트 요구를 제거하는 우선순위 역전 방지 수단(means for preventing priority inversion)을 포함하는 인터럽트 요구 처리 시스템.
  2. 제1항에 있어서, 상기 하드웨어 경로배정 수단은 상기 인터럽트 요구를, 상기 인터럽트 요구와 연관된 우선순위와 상기 다수의 프로세서와 연관된 가변 우선순위에 기초하여 결정된 최상의 프로세서(a best processor)로 경로배정하는 인터럽트 요구 처리 시스템.
  3. 제1항에 있어서, 상기 특정 프로세서에 제공된 상기 인터럽트 요구는 상기 다수의 인터럽트 소오스중 어느 인터럽트 소오스가 상기 인터럽트 요구를 송출하였는지를 명시하는 단일 소오스 식별자(a single source identifier)를 포함하는 인터럽트 요구 처리 시스템.
  4. 다수의 프로세서와 다수의 인터럽트 소오스를 구비한 데이터 처리 시스템내에서 인터럽트 요구를 처리하기 위한 방법―상기 각 인터럽트 요구는 우선순위와 연관되고, 상기 다수의 프로세서 각각은 가변 우선순위와 연관되며, 상기 데이터 처리 시스템은 소프트웨어-액세스가능 인터럽트 제공층을 포함하되, 상기 인터럽트 제공층은 상기 인터럽트 요구를 저장하기 위한 다수의 큐를 포함하고, 상기 다수의 큐 각각은 상기 다수의 프로세서중 단일의 프로세서와 연관됨―에 있어서, ①상기 다수의 인터럽트 소오스중 특정 소오스로부터 제 1 인터럽트 요구를 송출하는 단계와, ②상기 제 1 인터럽트 요구를 상기 다수의 프로세서중 특정의 프로세서와 연관된 상기 인터럽트 제공층내의 특정 큐로 경로배정하는 단계와, ③상기 제 1 인터럽트 요구를 상기 특정 프로세서와 연관된 상기 특정 규내에 큐잉(queuing)하는 단계―상기 특정 프로세서만이 상기 특정 큐내의 인터럽트 요구를 처리함―와, ④그 후, 상기 특정 큐에서 상기 특정 프로세서의 상기 가변 우선순위보다 더 높은 우선순위를 갖는 제 2 인터럽트 요구의 수신에 응답하여, 상기 특정 큐가 채워져 있으면, 상기 특정 큐로부터 상기 제 1 인터럽트 요구를 삭제하는 단계를 포함하는 인터럽트 요구 처리 방법.
  5. 제4항에 있어서, 상기 다수의 프로세서 각각은 상기 가변 우선순위와 연관되며, 상기 제 1 인터럽트 요구를 큐잉하는 상기 단계는 상기 인터럽트 요구와 연관된 우선순위와 상기 다수의 프로세서와 연관된 가변 우선순위에 기초하여 결정된 최상의 프로세서에 의한 액세스를 위해 상기 제 1 인터럽트 요구를 큐잉하는 것을 포함하는 인터럽트 요구 처리 방법.
  6. 제1항에 있어서, 상기 다수의 프로세서중 적어도 두 개의 프로세서는 논리 서버(a logical server)로 그룹화되며, 상기 인터럽트 제공층은 상기 논리 서버와 연관된 서버 큐(a server queue)를 포함하며, 상기 하드웨어 경로배정 수단은 인터럽트 요구를 상기 서버 큐로 경로배정하는 수단과, 상기 서버 큐내에 상기 인터럽트 요구를 큐잉하는 수단을 포함하는 인터럽트 요구 처리 시스템.
  7. 제6항에 있어서, 상기 우선순위 역전 방지 수단은 상기 서버 큐가 채워졌을 때 상기 서버 큐에서 제 2 인터럽트 요구의 수신에 응답하여 상기 서버 큐로부터 선택된 인터럽트 요구(a selected interrupt request)를 삭제―상기 제 2 인터럽트 요구는 상기 선택된 인터럽트 요구보다 높은 우선순위를 가짐―하는 인터럽트 요구 처리 시스템.
  8. 제6항에 있어서, 상기 하드웨어 경로배정 수단은 상기 인터럽트 요구를 상기 논리 서버내의 최상의 프로세서로 경로배정하며, 상기 최상의 프로세서는 상기 인터럽트 요구와 연관된 우선순위와 상기 논리 서버내의 프로세서와 연관된 가변 우선순위에 기초하여 결정되는, 인터럽트 요구 처리 시스템.
  9. 제4항에 있어서, 상기 다수의 프로세서중 적어도 두 개의 프로세서를 논리 서버로 그룹화하는 단계와, 상기 인터럽트 제공층내에 상기 논리 서버와 연관된 서버 큐를 제공하는 단계―상기 서버 큐내에 큐잉된 인터럽트 요구는 상기 논리 서버내의 상기 적어도 두 개의 프로세서중 어느 것에 의해 액세스되어 서비스될 수 있음 ― 를 더 포함하는 인터럽트 요구 처리 방법.
  10. 제9항에 있어서, 상기 제 1 인터럽트 요구를 큐잉하는 상기 단계는 상기 논리 서버내의 최상의 프로세서에 의한 액세스를 위해 상기 제 1 인터럽트 요구를 큐잉하는 것을 포함하며, 상기 최상의 프로세서는 상기 제 1 인터럽트 큐와 연관된 우선순위와 상기 논리 서버내의 상기 다수의 프로세서중 그룹화된 프로세서와 연관된 가변 우선순위에 기초하여 결정되는, 인터럽트 요구 처리 방법.
  11. 제1항에 있어서, 상기 다수의 인터럽트 소오스의 각각은 상기 경로배정 수단에 의해 거절된 인터럽트 요구를 저장하기 위한 수단과, 상기 경로배정 수단에 의해 거절된 상기 인터럽트 요구를 재송출하기 위한 수단 을 포함하는 인터럽트 요구 처리 시스템.
  12. 제1항에 있어서, 상기 인터럽트 요구는 상기 다수의 인터럽트 소오스중 상기 특정 소오스로부터 상기 데이터 처리 시스템의 어드레스 버스(an address bus)를 통해 상기 경로배정 수단으로 전송되는 인터럽트 요구 처리 시스템.
  13. 제1항에 있어서, 상기 다수의 인터럽트 소오스는 상기 다수의 프로세서를 포함하는 인터럽트 요구 처리 시스템.
  14. 제4항에 있어서, 인터럽트 요구를 거절하는 단계와, 상기 특정 인터럽트 소오스에서 상기 특정 인터럽트 소오스에 의해 송출된 상기 거절된 인터럽트 요구를 저장하는 단계와, 상기 거절된 인터럽트 요구를 재송출하는 단계 를 더 포함하는 인터럽트 요구 처리 방법.
  15. 제4항에 있어서,상기 제 1 인터럽트 요구를 송출하는 단계는 상기 제 1 인터럽트 요구를 상기 다수의 인터럽트 소오스중 상기 즉정 소오스로부터 상기 데이터 처리 시스템의 어드레스 버스를 통해 상기 특정 큐로 전송하는 것을 포함하는 인터럽트 요구 처리 방법.
  16. 제4항에 있어서, 상기 다수의 인터럽트 소오스중 특정 소오스로부터 제 1 인터럽트 요구를 송출하는 상기 단계는 상기 다수의 프로세서중 특정 프로세서로부터 제 1 인터럽트 요구를 송출하는 것을 포함하는 인터럽트 요구 처리 방법.
  17. 제1항에 있어서, 상기 특정 프로세서와 연관된 상기 특정 큐는 적어도 하나의 하드웨어-발생 인터럽트 큐와 적어도 하나의 소프트웨어-발생 인터럽트 큐를 포함하는 논리 큐(a logical queue)인 인터럽트 요구 처리 시스템.
  18. 제17항에 있어서, 상기 인터럽트 제공층은 상기 적어도 하나의 소프트웨어-발생 인터럽트 요구 큐와 상기 적어도 하나의 하드웨어-발생 인터럽트 요구 큐중에서 선택된 최우선 인터럽트 요구만을 제공하는 인터럽트 요구 처리 시스템.
  19. 제4항에 있어서, 상기 특정 프로세서와 연관된 상기 특정 큐는 적어도 하나의 하드웨어-발생 인터럽트 큐와 적어도 하나의 소프트웨어-발생 인터럽트 큐를 포함하는 논리 큐이며, 상기 방법은 상기 특정 프로세서와 연관된 상기 특정 큐내에 큐잉된 인터럽트 요구를 서비스를 위해 상기 특정 프로세서에 제공하는 단계를 더 포함하는 인터럽트 요구 처리 방법.
  20. 제19항에 있어서, 상기 인터럽트 요구를 제공하는 단계는 상기 적어도 하나의 소프트웨어-발생 인터럽트 요구 큐와 상기 적어도 하나의 하드웨어-발생 인터럽트 요구 큐중에서 선택된 최우선 인터럽트 요구만을 제공하는 것을 포함하는 인터럽트 요구 처리 방법.
  21. 제1항에 있어서, 상기 하드웨어 경로배정 수단은 상기 특정 큐가 채워지고 상기 인터럽트 요구와 연관된 우선순위가 상기 특정 큐내의 다른 인터럽트 요구와 연관된 우선순위보다 낮은 경우 상기 인터럽트 요구를 거절하는 수단을 포함하는 인터럽트 요구 처리 시스템.
  22. 제1항에 있어서, 상기 특정 프로세서에 제공된 상기 인터럽트 요구를 서비스하기 위한 소프트웨어 인터럽트 서비스 수단을 더 포함하는 인터럽트 요구 처리 시스템.
  23. 제4항에 있어서, 상기 특정 큐가 채워지고 상기 인터럽트 요구와 연관된 우선순위가 상기 특정 큐내의 다른 인터럽트 요구와 연관된 우선순위보다 낮은 경우 상기 인터럽트 요구를 큐잉하지 않고 상기 인터럽트 요구를 거절하는 단계를 더 포함하는 인터럽트 요구 처리 방법.
  24. 제4항에 있어서, 상기 특정 프로세서에 의해 실행되는 인터럽트 서비스 소프트웨어를 이용하여 상기 특정 큐내의 상기 인터럽트 요구를 액세스하는 단계와, 상기 특정 프로세서에 의해 액세스된 상기 인터럽트 요구를 서비스하는 단계를 더 포함하는 인터럽트 요구 처리 방법.
  25. 제24항에 있어서, 상기 특정 큐에 의해 액세스된 상기 인터럽트 요구는 상기 다수의 인터럽트 소오스중에서 어느 소오스가 상기 인터럽트 요구를 송출하였는지를 명시하는 단일 소오스 식별자를 포함하는 인터럽트 요구 처리 방법.
KR1019940023768A 1993-09-20 1994-09-17 데이타처리 시스템, 다중프로세서 데이타처리 시스템에서 다수의 인터럽트를 유지관리, 처리하는 시스템 및 방법 KR0128273B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12418293A 1993-09-20 1993-09-20
US08/124,182 1993-09-20
US08/124.182 1993-09-20

Publications (2)

Publication Number Publication Date
KR950009461A KR950009461A (ko) 1995-04-24
KR0128273B1 true KR0128273B1 (ko) 1998-04-15

Family

ID=22413303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940023768A KR0128273B1 (ko) 1993-09-20 1994-09-17 데이타처리 시스템, 다중프로세서 데이타처리 시스템에서 다수의 인터럽트를 유지관리, 처리하는 시스템 및 방법

Country Status (8)

Country Link
US (1) US5701495A (ko)
EP (1) EP0644487B1 (ko)
JP (1) JP3312266B2 (ko)
KR (1) KR0128273B1 (ko)
CN (1) CN1101026C (ko)
BR (1) BR9403514A (ko)
CA (1) CA2123447C (ko)
DE (1) DE69419680T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101134557B1 (ko) * 2010-12-23 2012-04-13 한전케이디엔주식회사 인터럽트 방식을 이용한 데이터 교환방법 및 이를 이용하는 지능형 전자장치

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835743A (en) * 1994-06-30 1998-11-10 Sun Microsystems, Inc. Application binary interface and method of interfacing binary application program to digital computer
US5689713A (en) * 1995-03-31 1997-11-18 Sun Microsystems, Inc. Method and apparatus for interrupt communication in a packet-switched computer system
US6034945A (en) 1996-05-15 2000-03-07 Cisco Technology, Inc. Method and apparatus for per traffic flow buffer management
US6021456A (en) * 1996-11-12 2000-02-01 Herdeg; Glenn Arthur Method for communicating interrupt data structure in a multi-processor computer system
US6249521B1 (en) * 1997-02-14 2001-06-19 Advanced Micro Devices, Inc. Method and apparatus for creating a port vector
US6105071A (en) * 1997-04-08 2000-08-15 International Business Machines Corporation Source and destination initiated interrupt system for message arrival notification
US6098105A (en) * 1997-04-08 2000-08-01 International Business Machines Corporation Source and destination initiated interrupt method for message arrival notification
US6098104A (en) * 1997-04-08 2000-08-01 International Business Machines Corporation Source and destination initiated interrupts for message arrival notification, and related data structures
US6201813B1 (en) 1997-06-30 2001-03-13 Cisco Technology, Inc. Method and apparatus for using ATM queues for segmentation and reassembly of data frames
US6487202B1 (en) 1997-06-30 2002-11-26 Cisco Technology, Inc. Method and apparatus for maximizing memory throughput
US6430191B1 (en) 1997-06-30 2002-08-06 Cisco Technology, Inc. Multi-stage queuing discipline
US6526060B1 (en) * 1997-12-05 2003-02-25 Cisco Technology, Inc. Dynamic rate-based, weighted fair scheduler with explicit rate feedback option
DE19882676T1 (de) * 1998-02-16 2000-07-27 Siemens Ag Integrierte Schaltung
GB9809183D0 (en) * 1998-04-29 1998-07-01 Sgs Thomson Microelectronics Microcomputer with interrupt packets
US6249906B1 (en) 1998-06-26 2001-06-19 International Business Machines Corp. Adaptive method and system to minimize the effect of long table walks
US6134710A (en) * 1998-06-26 2000-10-17 International Business Machines Corp. Adaptive method and system to minimize the effect of long cache misses
US6065088A (en) * 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering
US6148361A (en) * 1998-12-17 2000-11-14 International Business Machines Corporation Interrupt architecture for a non-uniform memory access (NUMA) data processing system
US6606716B1 (en) * 1999-10-06 2003-08-12 Dell Usa, L.P. Method and system for automated technical support for computers
US6430643B1 (en) 1999-09-02 2002-08-06 International Business Machines Corporation Method and system for assigning interrupts among multiple interrupt presentation controllers
US6775292B1 (en) 2000-01-24 2004-08-10 Cisco Technology, Inc. Method for servicing of multiple queues carrying voice over virtual circuits based on history
US6845419B1 (en) * 2000-01-24 2005-01-18 Freescale Semiconductor, Inc. Flexible interrupt controller that includes an interrupt force register
US6842811B2 (en) 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
US7142558B1 (en) 2000-04-17 2006-11-28 Cisco Technology, Inc. Dynamic queuing control for variable throughput communication channels
US6813666B2 (en) * 2001-02-12 2004-11-02 Freescale Semiconductor, Inc. Scaleable arbitration and prioritization of multiple interrupts
US20020178313A1 (en) * 2001-03-30 2002-11-28 Gary Scott Paul Using software interrupts to manage communication between data processors
US6940865B2 (en) * 2001-04-17 2005-09-06 Atheros Communications, Inc. System and method for interleaving frames with different priorities
JP4066621B2 (ja) 2001-07-19 2008-03-26 富士通株式会社 全文検索システム及び全文検索プログラム
US7003611B2 (en) * 2003-09-30 2006-02-21 International Business Machines Corporation Method and apparatus for handling interrupts using a set of interrupts servers associated with presentation controllers
US7831979B2 (en) * 2004-04-28 2010-11-09 Agere Systems Inc. Processor with instruction-based interrupt handling
US20050283554A1 (en) * 2004-06-22 2005-12-22 General Electric Company Computer system and method for queuing interrupt messages in a device coupled to a parallel communication bus
US7143223B2 (en) * 2004-10-14 2006-11-28 International Business Machines Corporation Method, system and program product for emulating an interrupt architecture within a data processing system
JP4148223B2 (ja) * 2005-01-28 2008-09-10 セイコーエプソン株式会社 プロセッサおよび情報処理方法
US7386642B2 (en) * 2005-01-28 2008-06-10 Sony Computer Entertainment Inc. IO direct memory access system and method
JP2006216042A (ja) * 2005-02-04 2006-08-17 Sony Computer Entertainment Inc 割り込み処理のためのシステムおよび方法
US7680972B2 (en) * 2005-02-04 2010-03-16 Sony Computer Entertainment Inc. Micro interrupt handler
JP5243711B2 (ja) * 2006-11-10 2013-07-24 セイコーエプソン株式会社 プロセッサ
US7844784B2 (en) 2006-11-27 2010-11-30 Cisco Technology, Inc. Lock manager rotation in a multiprocessor storage area network
US7882283B2 (en) * 2006-11-27 2011-02-01 Cisco Technology, Inc. Virtualization support in a multiprocessor storage area network
US8677014B2 (en) * 2006-11-27 2014-03-18 Cisco Technology, Inc. Fine granularity exchange level load balancing in a multiprocessor storage area network
US8190561B1 (en) * 2006-12-06 2012-05-29 At&T Mobility Ii Llc LDAP replication priority queuing mechanism
US7752370B2 (en) * 2007-04-12 2010-07-06 International Business Machines Corporation Splitting one hardware interrupt to multiple handlers
US7992059B2 (en) 2007-09-11 2011-08-02 International Business Machines Corporation System and method for testing a large memory area during processor design verification and validation
US8006221B2 (en) 2007-09-11 2011-08-23 International Business Machines Corporation System and method for testing multiple processor modes for processor design verification and validation
US8019566B2 (en) * 2007-09-11 2011-09-13 International Business Machines Corporation System and method for efficiently testing cache congruence classes during processor design verification and validation
US20090070570A1 (en) * 2007-09-11 2009-03-12 Shubhodeep Roy Choudhury System and Method for Efficiently Handling Interrupts
US8099559B2 (en) * 2007-09-11 2012-01-17 International Business Machines Corporation System and method for generating fast instruction and data interrupts for processor design verification and validation
US8607035B2 (en) * 2008-08-29 2013-12-10 Texas Instruments Incorporated Multi-core processing utilizing prioritized interrupts for optimization
US9038073B2 (en) 2009-08-13 2015-05-19 Qualcomm Incorporated Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
US8788782B2 (en) 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
US8762532B2 (en) 2009-08-13 2014-06-24 Qualcomm Incorporated Apparatus and method for efficient memory allocation
US10057333B2 (en) 2009-12-10 2018-08-21 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
CA2707196C (en) 2009-12-10 2016-11-01 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US9979589B2 (en) 2009-12-10 2018-05-22 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US9959572B2 (en) * 2009-12-10 2018-05-01 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US8261128B2 (en) 2010-08-04 2012-09-04 International Business Machines Corporation Selection of a domain of a configuration access
US9336029B2 (en) 2010-08-04 2016-05-10 International Business Machines Corporation Determination via an indexed structure of one or more partitionable endpoints affected by an I/O message
US8495271B2 (en) 2010-08-04 2013-07-23 International Business Machines Corporation Injection of I/O messages
US8549202B2 (en) 2010-08-04 2013-10-01 International Business Machines Corporation Interrupt source controller with scalable state structures
US20120226842A1 (en) * 2011-03-02 2012-09-06 Research In Motion Limited, an Ontario, Canada corporation Enhanced prioritising and unifying interrupt controller
US20130007533A1 (en) * 2011-06-28 2013-01-03 Miller Gary L Data processing system having a sequence processing unit and method of operation
CN102855156B (zh) * 2011-06-30 2015-05-27 重庆重邮信科通信技术有限公司 一种中断控制器及中断控制方法
US10241923B2 (en) 2012-11-06 2019-03-26 International Business Machines Corporation Configurable I/O address translation data structure
US9575912B2 (en) * 2014-04-08 2017-02-21 Infineon Technologies Ag Service request interrupt router with shared arbitration unit
CN103955410B (zh) * 2014-05-23 2017-10-27 苏州国芯科技有限公司 基于多中断源优先级排序的中断控制方法
US10437755B2 (en) 2015-11-16 2019-10-08 International Business Machines Corporation Techniques for handling interrupts in a processing unit using virtual processor thread groups
US10248593B2 (en) 2017-06-04 2019-04-02 International Business Machines Corporation Techniques for handling interrupts in a processing unit using interrupt request queues
US10210112B2 (en) 2017-06-06 2019-02-19 International Business Machines Corporation Techniques for issuing interrupts in a data processing system with multiple scopes
US10438682B2 (en) 2017-12-21 2019-10-08 International Business Machines Corporation List insertion in test segments with non-naturally aligned data boundaries
CN109271267B (zh) * 2018-08-27 2022-11-22 北京达佳互联信息技术有限公司 路由数据处理方法、装置、电子设备及存储介质
CN113220541B (zh) * 2021-06-10 2021-09-07 北京全路通信信号研究设计院集团有限公司 一种多核处理器的内存巡检方法及系统

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4271468A (en) * 1979-11-06 1981-06-02 International Business Machines Corp. Multiprocessor mechanism for handling channel interrupts
US4349873A (en) * 1980-04-02 1982-09-14 Motorola, Inc. Microprocessor interrupt processing
US4413317A (en) * 1980-11-14 1983-11-01 Sperry Corporation Multiprocessor system with cache/disk subsystem with status routing for plural disk drives
US4394727A (en) * 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
JPS57191758A (en) * 1981-05-20 1982-11-25 Hitachi Ltd System for storing test program in main storage
US4604500A (en) * 1981-12-02 1986-08-05 At&T Bell Laboratories Multiprocessing interrupt arrangement
US4495569A (en) * 1982-06-28 1985-01-22 Mitsubishi Denki Kabushiki Kaisha Interrupt control for multiprocessor system with storage data controlling processor interrupted by devices
US4530091A (en) * 1983-07-08 1985-07-16 At&T Bell Laboratories Synchronization of real-time clocks in a packet switching system
JPS61107456A (ja) * 1984-10-30 1986-05-26 Toshiba Corp 割込制御方式
IT1184553B (it) * 1985-05-07 1987-10-28 Honeywell Inf Systems Architettura di sistema a piu' processori
JPS6258341A (ja) * 1985-09-03 1987-03-14 Fujitsu Ltd 入出力割込処理方式
JPS62243058A (ja) * 1986-04-15 1987-10-23 Fanuc Ltd マルチプロセツサシステムの割込制御方法
US4914653A (en) * 1986-12-22 1990-04-03 American Telephone And Telegraph Company Inter-processor communication protocol
US4807111A (en) * 1987-06-19 1989-02-21 International Business Machines Corporation Dynamic queueing method
JPH0282343A (ja) * 1988-09-20 1990-03-22 Hitachi Ltd マルチプロセッサシステムの割込処理方式
US5109490A (en) * 1989-01-13 1992-04-28 International Business Machines Corporation Data transfer using bus address lines
JPH0346051A (ja) * 1989-07-14 1991-02-27 Oki Electric Ind Co Ltd マルチプロセッサシステムの割込み制御方式
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
EP0444376B1 (en) * 1990-02-27 1996-11-06 International Business Machines Corporation Mechanism for passing messages between several processors coupled through a shared intelligent memory
US5138709A (en) * 1990-04-11 1992-08-11 Motorola, Inc. Spurious interrupt monitor
US5179707A (en) * 1990-06-01 1993-01-12 At&T Bell Laboratories Interrupt processing allocation in a multiprocessor system
US5125093A (en) * 1990-08-14 1992-06-23 Nexgen Microsystems Interrupt control for multiprocessor computer system
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
US5282272A (en) * 1990-12-21 1994-01-25 Intel Corporation Interrupt distribution scheme for a computer bus
US5410710A (en) * 1990-12-21 1995-04-25 Intel Corporation Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
AU2270892A (en) * 1991-06-26 1993-01-25 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
GB2259161B (en) * 1991-08-24 1995-05-10 Motorola Israel Ltd System recovery
US5404535A (en) * 1991-10-22 1995-04-04 Bull Hn Information Systems Inc. Apparatus and method for providing more effective reiterations of processing task requests in a multiprocessor system
EP0602858A1 (en) * 1992-12-18 1994-06-22 International Business Machines Corporation Apparatus and method for servicing interrupts in a multiprocessor system
US5381541A (en) * 1993-05-26 1995-01-10 International Business Machines Corp. Computer system having planar board with single interrupt controller and processor card with plural processors and interrupt director

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101134557B1 (ko) * 2010-12-23 2012-04-13 한전케이디엔주식회사 인터럽트 방식을 이용한 데이터 교환방법 및 이를 이용하는 지능형 전자장치

Also Published As

Publication number Publication date
DE69419680T2 (de) 2000-03-02
BR9403514A (pt) 1995-06-20
KR950009461A (ko) 1995-04-24
EP0644487B1 (en) 1999-07-28
CA2123447C (en) 1999-02-16
JP3312266B2 (ja) 2002-08-05
JPH07105156A (ja) 1995-04-21
DE69419680D1 (de) 1999-09-02
EP0644487A3 (en) 1995-11-29
CN1120197A (zh) 1996-04-10
CN1101026C (zh) 2003-02-05
CA2123447A1 (en) 1995-03-21
EP0644487A2 (en) 1995-03-22
US5701495A (en) 1997-12-23

Similar Documents

Publication Publication Date Title
KR0128273B1 (ko) 데이타처리 시스템, 다중프로세서 데이타처리 시스템에서 다수의 인터럽트를 유지관리, 처리하는 시스템 및 방법
US5448698A (en) Inter-processor communication system in which messages are stored at locations specified by the sender
EP0644489A2 (en) Method and apparatus for signalling interrupt information in a data processing system
JP2525997B2 (ja) I/o割込みサブクラスの認識方法
KR100292660B1 (ko) 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템
EP0426323B1 (en) Portable, resource sharing file server using co-routines
EP0317466B1 (en) Reverse flow control mechanism and method
US7950016B2 (en) Apparatus for switching the task to be completed in a processor by switching to the task assigned time slot
US7350006B2 (en) System and method of interrupt handling
EP0511476A2 (en) Multiprocessor system
US6848015B2 (en) Arbitration technique based on processor task priority
JPH1055284A (ja) スレッドをスケジュールする方法及びそのシステム
CN107797848B (zh) 进程调度方法、装置和主机设备
GB2204974A (en) Programmable i/o sequencer for use in an i/o processor
JPH1097509A (ja) 対称型マルチプロセッサ・システムにおいて割り込みを分散する方法および装置
AU603876B2 (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
EP0317481A2 (en) Remote storage management mechanism and method
JP2002041449A (ja) バスシステム及びその実行順序の調整方法
EP0049521A2 (en) Information processing system
US11645215B2 (en) Efficient selection of a particular processor thread for handling an interrupt
US8090801B1 (en) Methods and apparatus for performing remote access commands between nodes
WO2007039933A1 (ja) 演算処理装置
US20230042247A1 (en) Shared unit instruction execution
KR20010095103A (ko) 데이터 블록 전송 방법 및 장치
EP0602916A2 (en) Cross-bar interconnect apparatus

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: 20031006

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee