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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task 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)
- 다수의 프로세서(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)을 포함하는 인터럽트 요구 처리 시스템.
- 제1항에 있어서, 상기 하드웨어 경로배정 수단은 상기 인터럽트 요구를, 상기 인터럽트 요구와 연관된 우선순위와 상기 다수의 프로세서와 연관된 가변 우선순위에 기초하여 결정된 최상의 프로세서(a best processor)로 경로배정하는 인터럽트 요구 처리 시스템.
- 제1항에 있어서, 상기 특정 프로세서에 제공된 상기 인터럽트 요구는 상기 다수의 인터럽트 소오스중 어느 인터럽트 소오스가 상기 인터럽트 요구를 송출하였는지를 명시하는 단일 소오스 식별자(a single source identifier)를 포함하는 인터럽트 요구 처리 시스템.
- 다수의 프로세서와 다수의 인터럽트 소오스를 구비한 데이터 처리 시스템내에서 인터럽트 요구를 처리하기 위한 방법―상기 각 인터럽트 요구는 우선순위와 연관되고, 상기 다수의 프로세서 각각은 가변 우선순위와 연관되며, 상기 데이터 처리 시스템은 소프트웨어-액세스가능 인터럽트 제공층을 포함하되, 상기 인터럽트 제공층은 상기 인터럽트 요구를 저장하기 위한 다수의 큐를 포함하고, 상기 다수의 큐 각각은 상기 다수의 프로세서중 단일의 프로세서와 연관됨―에 있어서, ①상기 다수의 인터럽트 소오스중 특정 소오스로부터 제 1 인터럽트 요구를 송출하는 단계와, ②상기 제 1 인터럽트 요구를 상기 다수의 프로세서중 특정의 프로세서와 연관된 상기 인터럽트 제공층내의 특정 큐로 경로배정하는 단계와, ③상기 제 1 인터럽트 요구를 상기 특정 프로세서와 연관된 상기 특정 규내에 큐잉(queuing)하는 단계―상기 특정 프로세서만이 상기 특정 큐내의 인터럽트 요구를 처리함―와, ④그 후, 상기 특정 큐에서 상기 특정 프로세서의 상기 가변 우선순위보다 더 높은 우선순위를 갖는 제 2 인터럽트 요구의 수신에 응답하여, 상기 특정 큐가 채워져 있으면, 상기 특정 큐로부터 상기 제 1 인터럽트 요구를 삭제하는 단계를 포함하는 인터럽트 요구 처리 방법.
- 제4항에 있어서, 상기 다수의 프로세서 각각은 상기 가변 우선순위와 연관되며, 상기 제 1 인터럽트 요구를 큐잉하는 상기 단계는 상기 인터럽트 요구와 연관된 우선순위와 상기 다수의 프로세서와 연관된 가변 우선순위에 기초하여 결정된 최상의 프로세서에 의한 액세스를 위해 상기 제 1 인터럽트 요구를 큐잉하는 것을 포함하는 인터럽트 요구 처리 방법.
- 제1항에 있어서, 상기 다수의 프로세서중 적어도 두 개의 프로세서는 논리 서버(a logical server)로 그룹화되며, 상기 인터럽트 제공층은 상기 논리 서버와 연관된 서버 큐(a server queue)를 포함하며, 상기 하드웨어 경로배정 수단은 인터럽트 요구를 상기 서버 큐로 경로배정하는 수단과, 상기 서버 큐내에 상기 인터럽트 요구를 큐잉하는 수단을 포함하는 인터럽트 요구 처리 시스템.
- 제6항에 있어서, 상기 우선순위 역전 방지 수단은 상기 서버 큐가 채워졌을 때 상기 서버 큐에서 제 2 인터럽트 요구의 수신에 응답하여 상기 서버 큐로부터 선택된 인터럽트 요구(a selected interrupt request)를 삭제―상기 제 2 인터럽트 요구는 상기 선택된 인터럽트 요구보다 높은 우선순위를 가짐―하는 인터럽트 요구 처리 시스템.
- 제6항에 있어서, 상기 하드웨어 경로배정 수단은 상기 인터럽트 요구를 상기 논리 서버내의 최상의 프로세서로 경로배정하며, 상기 최상의 프로세서는 상기 인터럽트 요구와 연관된 우선순위와 상기 논리 서버내의 프로세서와 연관된 가변 우선순위에 기초하여 결정되는, 인터럽트 요구 처리 시스템.
- 제4항에 있어서, 상기 다수의 프로세서중 적어도 두 개의 프로세서를 논리 서버로 그룹화하는 단계와, 상기 인터럽트 제공층내에 상기 논리 서버와 연관된 서버 큐를 제공하는 단계―상기 서버 큐내에 큐잉된 인터럽트 요구는 상기 논리 서버내의 상기 적어도 두 개의 프로세서중 어느 것에 의해 액세스되어 서비스될 수 있음 ― 를 더 포함하는 인터럽트 요구 처리 방법.
- 제9항에 있어서, 상기 제 1 인터럽트 요구를 큐잉하는 상기 단계는 상기 논리 서버내의 최상의 프로세서에 의한 액세스를 위해 상기 제 1 인터럽트 요구를 큐잉하는 것을 포함하며, 상기 최상의 프로세서는 상기 제 1 인터럽트 큐와 연관된 우선순위와 상기 논리 서버내의 상기 다수의 프로세서중 그룹화된 프로세서와 연관된 가변 우선순위에 기초하여 결정되는, 인터럽트 요구 처리 방법.
- 제1항에 있어서, 상기 다수의 인터럽트 소오스의 각각은 상기 경로배정 수단에 의해 거절된 인터럽트 요구를 저장하기 위한 수단과, 상기 경로배정 수단에 의해 거절된 상기 인터럽트 요구를 재송출하기 위한 수단 을 포함하는 인터럽트 요구 처리 시스템.
- 제1항에 있어서, 상기 인터럽트 요구는 상기 다수의 인터럽트 소오스중 상기 특정 소오스로부터 상기 데이터 처리 시스템의 어드레스 버스(an address bus)를 통해 상기 경로배정 수단으로 전송되는 인터럽트 요구 처리 시스템.
- 제1항에 있어서, 상기 다수의 인터럽트 소오스는 상기 다수의 프로세서를 포함하는 인터럽트 요구 처리 시스템.
- 제4항에 있어서, 인터럽트 요구를 거절하는 단계와, 상기 특정 인터럽트 소오스에서 상기 특정 인터럽트 소오스에 의해 송출된 상기 거절된 인터럽트 요구를 저장하는 단계와, 상기 거절된 인터럽트 요구를 재송출하는 단계 를 더 포함하는 인터럽트 요구 처리 방법.
- 제4항에 있어서,상기 제 1 인터럽트 요구를 송출하는 단계는 상기 제 1 인터럽트 요구를 상기 다수의 인터럽트 소오스중 상기 즉정 소오스로부터 상기 데이터 처리 시스템의 어드레스 버스를 통해 상기 특정 큐로 전송하는 것을 포함하는 인터럽트 요구 처리 방법.
- 제4항에 있어서, 상기 다수의 인터럽트 소오스중 특정 소오스로부터 제 1 인터럽트 요구를 송출하는 상기 단계는 상기 다수의 프로세서중 특정 프로세서로부터 제 1 인터럽트 요구를 송출하는 것을 포함하는 인터럽트 요구 처리 방법.
- 제1항에 있어서, 상기 특정 프로세서와 연관된 상기 특정 큐는 적어도 하나의 하드웨어-발생 인터럽트 큐와 적어도 하나의 소프트웨어-발생 인터럽트 큐를 포함하는 논리 큐(a logical queue)인 인터럽트 요구 처리 시스템.
- 제17항에 있어서, 상기 인터럽트 제공층은 상기 적어도 하나의 소프트웨어-발생 인터럽트 요구 큐와 상기 적어도 하나의 하드웨어-발생 인터럽트 요구 큐중에서 선택된 최우선 인터럽트 요구만을 제공하는 인터럽트 요구 처리 시스템.
- 제4항에 있어서, 상기 특정 프로세서와 연관된 상기 특정 큐는 적어도 하나의 하드웨어-발생 인터럽트 큐와 적어도 하나의 소프트웨어-발생 인터럽트 큐를 포함하는 논리 큐이며, 상기 방법은 상기 특정 프로세서와 연관된 상기 특정 큐내에 큐잉된 인터럽트 요구를 서비스를 위해 상기 특정 프로세서에 제공하는 단계를 더 포함하는 인터럽트 요구 처리 방법.
- 제19항에 있어서, 상기 인터럽트 요구를 제공하는 단계는 상기 적어도 하나의 소프트웨어-발생 인터럽트 요구 큐와 상기 적어도 하나의 하드웨어-발생 인터럽트 요구 큐중에서 선택된 최우선 인터럽트 요구만을 제공하는 것을 포함하는 인터럽트 요구 처리 방법.
- 제1항에 있어서, 상기 하드웨어 경로배정 수단은 상기 특정 큐가 채워지고 상기 인터럽트 요구와 연관된 우선순위가 상기 특정 큐내의 다른 인터럽트 요구와 연관된 우선순위보다 낮은 경우 상기 인터럽트 요구를 거절하는 수단을 포함하는 인터럽트 요구 처리 시스템.
- 제1항에 있어서, 상기 특정 프로세서에 제공된 상기 인터럽트 요구를 서비스하기 위한 소프트웨어 인터럽트 서비스 수단을 더 포함하는 인터럽트 요구 처리 시스템.
- 제4항에 있어서, 상기 특정 큐가 채워지고 상기 인터럽트 요구와 연관된 우선순위가 상기 특정 큐내의 다른 인터럽트 요구와 연관된 우선순위보다 낮은 경우 상기 인터럽트 요구를 큐잉하지 않고 상기 인터럽트 요구를 거절하는 단계를 더 포함하는 인터럽트 요구 처리 방법.
- 제4항에 있어서, 상기 특정 프로세서에 의해 실행되는 인터럽트 서비스 소프트웨어를 이용하여 상기 특정 큐내의 상기 인터럽트 요구를 액세스하는 단계와, 상기 특정 프로세서에 의해 액세스된 상기 인터럽트 요구를 서비스하는 단계를 더 포함하는 인터럽트 요구 처리 방법.
- 제24항에 있어서, 상기 특정 큐에 의해 액세스된 상기 인터럽트 요구는 상기 다수의 인터럽트 소오스중에서 어느 소오스가 상기 인터럽트 요구를 송출하였는지를 명시하는 단일 소오스 식별자를 포함하는 인터럽트 요구 처리 방법.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101134557B1 (ko) * | 2010-12-23 | 2012-04-13 | 한전케이디엔주식회사 | 인터럽트 방식을 이용한 데이터 교환방법 및 이를 이용하는 지능형 전자장치 |
Families Citing this family (72)
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)
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 |
-
1994
- 1994-05-12 CA CA002123447A patent/CA2123447C/en not_active Expired - Fee Related
- 1994-08-10 JP JP18796194A patent/JP3312266B2/ja not_active Expired - Fee Related
- 1994-09-12 BR BR9403514A patent/BR9403514A/pt not_active Application Discontinuation
- 1994-09-15 EP EP94306762A patent/EP0644487B1/en not_active Expired - Lifetime
- 1994-09-15 DE DE69419680T patent/DE69419680T2/de not_active Expired - Fee Related
- 1994-09-17 KR KR1019940023768A patent/KR0128273B1/ko not_active IP Right Cessation
- 1994-09-19 CN CN94116433A patent/CN1101026C/zh not_active Expired - Fee Related
-
1995
- 1995-12-18 US US08/573,918 patent/US5701495A/en not_active Expired - Fee Related
Cited By (1)
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 |