KR100399385B1 - 적응성인터럽트맵핑메카니즘및방법을사용하는다중처리시스템 - Google Patents

적응성인터럽트맵핑메카니즘및방법을사용하는다중처리시스템 Download PDF

Info

Publication number
KR100399385B1
KR100399385B1 KR1019960007693A KR19960007693A KR100399385B1 KR 100399385 B1 KR100399385 B1 KR 100399385B1 KR 1019960007693 A KR1019960007693 A KR 1019960007693A KR 19960007693 A KR19960007693 A KR 19960007693A KR 100399385 B1 KR100399385 B1 KR 100399385B1
Authority
KR
South Korea
Prior art keywords
interrupt
central
controller
mode
bus
Prior art date
Application number
KR1019960007693A
Other languages
English (en)
Other versions
KR960035261A (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 KR960035261A publication Critical patent/KR960035261A/ko
Application granted granted Critical
Publication of KR100399385B1 publication Critical patent/KR100399385B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Abstract

대칭 다중처리 시스템은 중앙 인터럽트 제어부를 포함하는 것을 제공한다. 중앙 인터럽트 제어부는 복수의 처리부와 복수의 인터럽트 소스들에 결합된다. 인터럽트 소스들은 PCI 버스와 같은 제 1 주변버스에 결합된 복수의 주변장치를 포함한다. 인터럽트 소스들은 또한 ISA 버스와 같은 제 2 주변버스에 결합된 장치들을 포함한다. 중앙 인터럽트 제어부는 2 모드들에서 동작한다. 통과모드라 하는 제 1 모드에서 ISA 주변장치들로 부터의 인터럽트들이 직렬접속형 8259 인터럽트 콘트롤러들과 같은 인터럽트 콘트롤러를 통해 중앙 인터럽트 제어부로 제공된다. 그다음 중앙 인터럽트 제어부는 주처리부에 직접 인터럽트를 통과시킨다. PCI 인터럽트들은 PCI 맵피를 통해 인터럽트 콘트롤러의 다른 사용가능 인터럽트에 제공된다. 통과모드는 DOS 와 같은 재래식 운전시스템들과의 호환성을 허용하므로 유리하다. 선행모드동안 중앙 인터럽트 제어부는 PCI 맵퍼가 디스에이블되게 한다. 선행모드에서, PCI 장치와 ISA 장치들로부터의 인터럽트들은 중앙 인터럽트 제어부에 직접 제공된다. PCI 맵퍼는 선행모드동안 디스에이블되기 때문에 추가 ISA 주변장치가 PCI 인터럽트들과 충돌없이 시스템내에서 지원될 수도 있다.

Description

적응성 인터럽트 맵핑 메카니즘 및 방법을 사용하는 다중처리 시스템
본 발명은 컴퓨터시스템에 관한 것이며, 특히 대칭 다중처리 시스템내에 사용된 인터럽트 제어구조 및 방식에 관한 것이다.
다중처리부를 사용하는 컴퓨터시스템을 현재의 단일처리기장치의 성능을 능가하는 경제적으로 수용할 수 있는 성능을 약속한다. 다중처리환경에서는 단일처리기에서 처리할 모든 처리를 집중시키기 보다는 오히려 개별처리기들에 의해 취급될 수 있는 그룹으로 업무를 분할한다. 그에 의해 전체처리부담을 여러처리기들에 분산하여, 분산된 업무를 동시에 병렬로 실행할 수 있다. 운영시스템 소프트웨어는 프로그램 코드의 여러 부분들을 개별적으로 실행할 수 있는 그룹으로 나눠서 각 그룹에 우선순위를 부여한다.
제 1 도는 복수의 처리부(12A-12C)를 포함하는 일명 대칭 다중처리 시스템(10)의 개통도이다. 각 처리부(12A-12C)는 처리코어(14A-14C), 캐시메모리(16A-16C) 및 버스인터럽트(18A-18C)를 제각기 포함한다. 처리부(12A-12C)는 시스템버스(22)를 통해 메인메모리(20)에 결합된다. 시스템버스(22)에는 한쌍의 I/O 장치들(24,26)이 더 결합되어 있다.
제 1 도의 다중처리 시스템(10)은 모든 처리부(12A-12C)는 동일한 메모리공간(즉, 메인메모리(20)을 공유하며 동일 어드레스 맵핑을 사용하여 메모리공간을 억세스하는 식으로 대칭이다. 다중처리 시스템(10)도 모든 처리부(12A-12C)가 동일 I/O 시스템에 대해 동일 억세스를 공유하는 식으로 대칭이다.
일반적으로 단일카피의 운영시스템 소프트웨어 뿐만아니라 단일카피의 각 사용자 응용파일이 메인메모리(20)에 기억된다. 각각의 처리부(12A-12C)는 단일카피의 운영시스템과 사용자 응용파일들로 부터 실행한다. 비록 처리코어들(14A-14C)이 코드를 동시에 실행하고 있지만 처리부들(12A-12C)중 단 하나만이 조정시간에 시스템버스(22)의 주업무를 가질 수 있음을 주지한다. 따라서 버스중재 메카니즘(도시않됨)을 2 이상의 처리부들의 동시 버스요구들을 중재하여 소정의 중재 알고리즘에 따라 처리부들 중 하나에 마스터자격을 부여한다. 다양한 버스중재기술에 공지되어 있다.
각 처리부(12A-12C)의 고속캐시메모리들(16A-16C)은 제각기 연관된 데이타에 상응하는 메인메모리 어드레스를 나타내는 어드레스 태그와 더불어 각 처리부에 의해 최근에 억세스된 데이타를 기억한다. 프로그램들은 동일 코드구역(code section)을 실행하여 동일데이타 구조를 반복적으로 억세스하기 때문에 캐시가 충분히 클 경우 억세스 할 많은 위치들을 미리 기억시켜 준다.
캐시 메카니즘은 2 가지 클 장점을 제공한다. 첫째 캐시들은 고속메모리로 실행되므로 버스중재 및 버퍼지연없이 억세스될 수 있기 때문에 각각의 캐시내에 기억된 위치들을 억세스하는 것이 메인메모리 억세스보다 훨씬 빠르다. 둘째, 각각의 캐시내에 기억된 위치들을 억세스하는 것은 시스템버스의 억세스를 요구하지 않기 때문에 각 처리기의 버스이용을 크게 줄일 수 있다. 그러므로 시스템버스를 다른 요청된 거래(transaction)를 서비스하는데 이용할 수 있다. 통상적으로 적중률(hitrate)이 높을 수록 전체 시스템 성능이 좋아진다. 적중률은 캐시내에 미리 기억된 위치에 대해 특정처리코어가 억세스하는 퍼센트를 말한다. 최근에 큰 캐시들을 맞는 잘 설계된 시스템들은 90% 이상의 적중률을 달성한다.
캐시메모리들을 사용하는 다중처리 시스템에 대해 중요하게 고려해야할 것은 데이타 응집도(coherency)이다. 메인메모리(20)에 의해 기억된 데이타(및 명령)의 다중 카피들이 하나 이상의 캐시메모리(16A-16C)에 동시에 기억되기 때문에 메모리 서브시스템들중 하나를 갱신(즉 신데이타로 가입)하는 경우에 데이타의 무결성(integrity)을 유지시키기 위해 특수한 메카니즘을 사용해야 한다. 예를 들어 처리코어(14A)에 의해 캐시메모리(16A)내의 특정구역의 데이타는 갱신하고 메인메모리(20)의 대응구역내의 데이타는 갱신하지 않는 상황을 생각하자. 만일 처지코어(14B)가 동일코드구역을 차례로 액세스할 경우 처지코어(14B)가 적합한 데이타를 억세스하는 것을 보장하기 위해 어느 구역을 갱신하고 어느구역을 무효화시킬지를 추적하는 신뢰성 있는 메카니즘이 있어야 한다. 그러므로 캐시 응집도를 효과적으로 유지시킬 목적으로 라이트수루(corite-through) 및 라이트 백(corite-back)기술 등 여러기술이 개발된 바 있다. 이러한 여러가지 캐시응집기술들은 종래기술의 공보 대부분에 기재되어 있으므로 여기서 더 설명하지 않는다.
대칭다중처리 시스템에 대한 또다른 고려할 중요한 것은 여러 시스템 자원들에 의해 발생되는 인터럽트들의 취급과 분산이다. 예를들어 제 1 도의 시스템에서 I/O 장치들(24,26)은 각각 특정사건의 발생(또는 비발생)에 따라 각각의 인터럽트신호를 검증(assert)할 수도 있다. 본 기술분야의 숙련자가 잘 알고 있는 바와 같이 인터럽트들은 키보드, 프린터 및 타이머들과 같은 시스템 자원들에 의해 상례적으로 생성된다. 많은 시스템들은 또한 소프트웨어 인터럽트들을 수용하고 있으므로 소프트웨어 명령에 응답하여 인터럽트를 검증할 수도 있다. 시스템내에서 상이한 수많은 인터럽트들이 발생할 수도 있기 때문에 인터럽트들을 효율적으로 분산취급하여 최적의 시스템성능 및 버스활용성을 활성하기 위한 메카니즘이 제공되어야 한다.
인터럽트들을 취급하는 1 기술은 복수의 인터럽트들을 접수하여 순서를 정해 여러 처리부들에 분산할 수 있는 중앙집중식인터럽트 콘트롤러를 사용한다. 중앙집중식 인터럽트 제어기술과 연관된 문제점은 수용할 수 있는 인터럽트의 총수가 중앙집중식인터럽트 콘트롤러에 제공된 입력핀들의 수에 의해 제한된다는 것이다. 다시말해 예를 들어 만일 중앙집중식 인터럽트 콘트롤러 총 16 인터럽트 입력핀들을 갖고 있을 경우, 16 이상의 인터럽트가 발생되는 장치는 시스템에 수용될 수 없다. 이에 의해 시스템의 융통성이 제한된다. 또한 그러한 시스템에서는 인터럽트 라인 후보를 각 인터럽트 소스에 접속해야 한다. 그러한 인터럽트 라인 후보는 컴퓨터시스템에 하나 이상의 주변장치를 접속하는 원격케이블네트워크들에서는 이용할 수 없다. 따라서 시스템융통성이 또 제한된다. 또한 중요한 것은 다중처리 시스템에 의해 사용되는 인터럽트 방식이 상이한 I/O 버스들상에 접속된 인터럽트장치들을 지원할 수 있다는 것이다. 종래의 단일처리시스템에서는 어드밴스드 마이크로 디바이시즈제의 인기있는 AM8259 인터럽트 콘트롤러와 같은 인터럽트 콘트롤러들이 ISA 주변장치들과 같은 비교적 다수의 주변장치들을 지원하기 위해 사용된다. 또한 그러한 시스템들의 PCI 버스상에 있는 주변장치들을 또한 인터럽트맵퍼(mapper)의 인터럽트맵핑에 의해 융통성있게 지원될 수 있으므로 PCI 인터럽트들을 8259 인터럽트 콘트롤러들상의 이용가능한 입력들에 접속시킬 수 있다. 불행하게도, 8259와 같은 인터럽트 콘트롤러들은 다중처리 시스템들에 인터럽트들을 분산시키기 위해 채택되지 않고 있다. 문제를 복잡하게 하는 것은 DOS 와 같은 재래식 운영시스템들이 시스템내에 8259-타입 인터럽트 콘트롤러를 갖고 있다는 것이다. 따라서 복수의 I/O 버스들상의 주변장치로부터의 인터럽트를 지원하는 다중처리 시스템을 위한 인터럽트 메카니즘과 방법의 출현이 요망되고 있다. 또한 인터럽트 메카니즘과 방법은 개선된 다중처리운영시스템을 수용해야만 하며, 한편 DOS와 같은 통상의 운영시스템과 호환성 있어야 한다.
상술한 문제점들은 본 발명에 의한 대칭다중처리 시스템에 의해 대부분 해결된다. 일실시예에 의하면 중앙 인터럽트 제어부를 포함하는 대칭다중처리 시스템이 제공된다. 중앙 인터럽트 제어부는 복수의 처리부와 복수의 인터럽트 소스들에 결합된다. 인터럽트 소스들은 PCT 버스와 같은 제 1 주변버스에 결합된 복수의 주변장치들을 포함한다. 인터럽트 소스들은 또한 ISA 버스와 같은 제 2 주변버스에 결합된 복수의 주변장치들도 포함한다. 중앙 인터럽트 제어부는 2 모드로 동작한다. 제 1 모드 즉 일명 통과 모드에서는 ISA 주변장치들로 부터의 인터럽트들이 직렬접속 타입 8259 인터럽트 콘트롤러들과 같은 인터럽트 콘트롤러를 통해 중앙 인터럽트 제어부에 제공된다. 그러면 중앙 인터럽트 제어부는 인터럽트를 주처리부로 직접 통과시킨다. PCI 인터럽트들은 PCI 맵퍼를 통해 인터럽트 콘트롤러의 다른 이용가능한 인터럽트 입력들에 제공된다. 통과모드는 DOS 와 같은 재래식 운영시스템과의 호환성을 허용한다. 선행모드동안 중앙 인터럽트 제어부는 PCI 맵퍼를 디스에이블되게 한다. 선행모드에서는 PCI 장치들과 IS 장치들로 부터의 인터럽트들이 중앙 인터럽트 제어부에 직접 제공된다. PCI 맵퍼는 선행모드동안 디스에이블 되기 때문에 추가의 ISA 주변장치들이 PCI 인터럽트들과 충돌없이 시스템내에서 지원될 수 있다.
이하 첨부도면을 참조하여 본 발명의 기타 목적, 장점 및 실시예등을 상세히 설명한다.
제 2 도를 참조하면, 중앙집중식 인터럽트 콘트롤러 메카니즘을 갖는 대칭다중처리 시스템(200)의 개통도가 도시되어 있다. 시스템(200)은CPU 로칼버스(207)를 통해 메인메모리(204)에 결합된 복수의 처리부(202-1 -202-m)를 포함한다. 각 처리부는 처리코어(204-1 -204-m), 캐시메모리(205-1 - 205-m) 및 버스인터럽트(206-1 - 206-m)를 포함한다. 버스브리지(bus bridge((208)는 CPU 로칼버스(207)를 I/O 버스(210)에 결합한다. I/O 장치들(212-1 - 212-n)은 중앙 인터럽트 제어부(220)에 결합된다. I/O 장치들(212-1 - 212 -n) 및 (214)은 버스브리지(208)을 통해 처리부들(202-1 - 202-m) 각각에 의해 억세스될 수 있다.
중앙 인터럽트 제어부는 I/O 장치들(212-1 - 212-n)을 통해 I/O 장치들(212-1)과 인터럽트 콘트롤러(216)로 부터 수신된 인터럽트들은 처리하고 또한 인터럽트들은 처리부들(202-1 - 202-m)에 분산하기 위해 제공된다. 중앙 인터럽트 제어부는 또한 처리부들(201-1 -202-m)에 의해 발생된 소프트웨어와 처리기간의 인터럽트들을 처리한다. 양호한 형에 의하면 중앙 인터럽트 제어부는 최적의 시스템 융통성을 수용하도록 후술하는 바와 같이 다양한 프로그램 가능 구성들로서 실시된다.
I/O 버스는 컴퓨터시스템(200)에 CD-ROM 유니트, 지역통신망(LAN)장치 및 프린터와 같은 주변장치들을 결합하기 위한 어떠한 적합한 버스일 수 있다. 주변버스표준은 예를들어 ISA (industry standard architecture: 공업표준구조)버스, EISA(extended industry standard architecture: 확장공업표준구조) 버스 및 PCI (peripheral component interconnect: 주변부품상호연결)버스 등이 있다. 버스브리지(208)는 I/O 버스와 CPU 로칼버스(207)간에 인터럽트를 제공한다.
처리코어들(204-1 - 204-m)은 소정의 명령세트에 따라 동작하는 데이타 처리부이다. 처리부들은 예를 들어 모델 80486 처리부, 펜티엄 호환성처리부 및 파워 PC 처리부등이 있다. 그러나 처리부들(202-1 - 202-m)은 다른 명령세트들에 따라 동작될 수도 있음을 이해할 수 있다.
캐시메모리(205-1 - 205-m)는 고속메모리장치를 사용하여 실시된다. 각각의 캐시메모리(205-1 - 205-m)는 연판된 처리코어(204-1 - 204-m), 연관된 캐시메모리(205-1 - 205-m) 및 CPU 로칼버스(207)간의 데이타를 지휘처리하는 캐시콘트롤러(도시않됨)와 연관된다. 양호한 형에 의하면 각 처리부의 캐시콘트롤러는 연관된 처리코어와 동시에 동작하여 최대성능을 제공한다.
CPU 로칼버스(207)는 소정의 비트폭을 가지며 또한 컴퓨터시스템의 중요한 버스이다. 메인메모리(204)는 소정크기의 물리적 메모리로서 DRAM(dynamic random access memory)으로 실시할 수도 있다. 메모리 콘트롤러(도시않됨)는 CPU 로칼버스(207)와 메인메모리(204)간에 통신하는 데이타, 어드레스 및 제어신호들의 전송을 지휘제어하는 메인메모리(204)와 연관된다.
인터럽트 콘트롤러(216)는 I/O 장치(211)와 같은 여러 인터럽트 소스들로 부터 유출된 인터럽트 신호들을 기억 및 처리하기 위해 설비된다. 인터럽트 콘트롤러(216)는 예를 들어 어드밴스드 마이크로 디바이시즈상에 의해 제조된 모델 8259A 시리즈 프로그램 가능 인터럽트 콘트롤러이다. 모델 8259A 시리즈 프로그램 가능 인터럽트 콘트롤러에 대해서는 공보(어드밴스드 마이크로 디바이시즈사, 1987년), 3-371-3-388 페이지, "MOS 마이크로프로세서 및 주변장치"에 기재되어 있다.
중앙 인터럽트 제어부에 대해 상세히 설명하기 전에, 중앙 인터럽트 제어부내에는 다양한 구성 레지스터들이 포함되어 있음을 주지한다. 이들 구성레지스터들은 I/O 버스를 통해 프로그램되고 또한 억세스될 수도 있다. 따라서 중앙 인터럽트 제어부는 CPU 로칼버스(207)의 타입과 무관하므로 상이한 타입의 처리부들을 사용하는 다양한 시스템들내에 사용될 수도 있다. 결과적으로 중앙 인터럽트 제어부는 다양한 다중처리 시스템과 접속 및 호환사용될 수 있다.
그다음 제 3 도를 참조하여 중앙 인터럽트 제어부에 대한 구체적인 것을 설명한다. 제 3 도는 I/O 인터럽트 콘트롤러(304)와 처리기 인터럽트 발생기(306)에 결합된 중앙콘트콜러(302)를 갖는 중앙 인터럽트 제어부(220)의 일실시예의 개통도이다. 중앙콘트롤러(302)에는 또한 I/O 버스 인터럽트부(308)도 결합된다. I/O 버스 인터럽트부(308)는 I/O 버스와 중앙콘트롤러(302)간에 인터럽트를 제공하므로 뒤에 상세히 설명하겠지만 중앙 인터럽트 제어부(220)를 프로그램할 수 있을 뿐만 아니라 중앙 인터럽트 제어부(220)의 다른 기능을 수용할 수 있다.
중앙 인터럽트 제어부는 다른 방법으로 또는 추가적으로 프로그래밍하고 또한 다른 기능을 수용하기 위해 중앙 인터럽트 제어부(220)에 CPU 로칼버스(207)를 결합하기 위한 CPU 인터럽트부를 포함할 수도 있음을 알 수 있다. 전술한 바와 같이, 중앙 인터럽트 제어부는 상이한 여러 I/O 장치들로 부터 인터럽트들을 접수할 수 있다. 이들 인터럽트들은 복수의 인터럽트핀들(INTR1-INTRn)에서 수신되어 i/O 인터럽트 콘트롤러(304)에 제공된다. 중앙 인터럽트 제어부는 각 인터럽트핀들(INTR1-INTRn)이 개별적으로 프로그램되어 특정형의 인터럽트를 지정하고, 특별한 교부모드를 지정하고, 우선순위를 지시할 수 있도록 구성된다. 그밖에도 각 인터럽트핀은 특정핀에서 수신되어 식별될 수 있는 인터럽트 신호들의 수를 확장하기 위해 직렬접속모드에서 이용될 수 있다.
이에 대해 이하에 더 설명한다.
중앙콘트롤러(302)는 여러 인터럽트 신호들에 우선순위를 정하여 그들을 처리기인터럽트 발생기(306)에 발송하며, 처리기인터럽트발생기(306)는 다른 것들간에서 각 처리부의 현재업무 우선순위와 각 인터럽트마다 교부모드에 따라 하나 이상의 처리부들(202-1 -202-m)에 인터럽트신호들을 송출한다. 중앙콘트롤러(302)는 시스템용 장치 테이블과 인터럽트 더미를 유지하며 또한 모든 처리부들의 현재의 우선순위들을 유지한다. 중앙콘트롤러(302)는 마지막으로 방송식으로 모든 처리기들에 의해 취급될 필요가 있는 선택된 인터럽트들을 분산하기 위한 메카니즘을 포함한다. 이러한 분산 메카니즘을 더 상세히 설명하면 아래와 같다.
전술한 바와 같이 처리기인터럽트발생기(306)는 여러 인터럽트들을 지정된 처리부(또는 처리부)에 발송한다. 이 실시예에서 중앙 인터럽트 제어부는 처대 256 처리부들간에서 인터럽트들을 분산시키도록 구성된다. 시스템내에 설비된 수많은 처리부들은 하기 설명으로부터 이해될 수 있는 바와 같이 시스템 초기화시 프로그램된다.
제 4 도는 I/O 인터럽트 콘트롤러(304)의 개통도이다. I/O 인터럽트 콘트롤러(304)는 I/O 장치들로 부터 핀들(INTR1, INTR2, -----INTRn)을 통해 인터럽트들을 수신한다. I/O 인터럽트 콘트롤러(304)는 핀들(INTRl - INTRn)에 제각기 결합된 복수의 인터럽트 채널들(402-1-402-n)을 포함한다. 중앙 콘트롤러 인터럽트(404)는각각의 인터럽트 채널(402-1 - 402-n)에 결합된다. 인터럽트 채널들(402-1 - 402-n)은 연관된 인터럽트핀들(INTRl-INTRn)에서 제각기 수신된 인터럽트들을 제각기 처리하는 후보 채널들을 제공한다. 일실시예에서는 I/O 인터럽트 콘트롤러(304)가 최대 256 인터럽트벡터들을 지원하도록 16 인터럽트 신호들로서 직렬 접속될 수 있는 총 16 인터럽트 입력핀들을 포함한다.
각각의 입수되는 인터럽트의 처리를 제어하기 위해 각 인터럽트 채널(402-1 - 402-n)내에는 복수의 레지스터들(제 4 도에 도시않됨)이 구비된다. 이 레지스터들은 시스템의 I/O 공간 또는 메모리 공간내서 맵핑된다. 또한 인터럽트 채널들(402-1 - 402-n)의 내부 레지스터들에 관해서는 이하에 상세히 설명한다.
각각의 인터럽트 채널(402-1 - 402-n)은 그의 연관된 입력핀(INTRl- INTRn)에서 인터럽트 신호의 실증을 검출하여 인터럽트가 처리부들에 발송되어야 할지를 확인하기 위해 인터럽트신호를 처리한다. 인터럽트 특성들은 개별적으로 프로그램될 수 있으므로 어느 인터럽트 채널들(402-1 - 402-n)에도 함축된 위치 의존성을 부가하지 않는다.
제 5 도는 각각의 인터럽트 채널들(402-1 - 402-n)을 나타내는 개통도이다. 제 5 도의 인터럽트 채널(402)은 레지스터부(504)와 인터럽트 수락부(506)에 결합된 인터럽트 입력처리기(502)를 포함한다. 인터럽트 입력처리기(502)는 INTR핀 상의 인터럽트 신호(또는 신호들, 직렬접속 모드가 프로그램될 경우)를 처리하여 직렬접속된 인터럽트들에 대한 전송모드를 판정한다. 만일 핀이 직렬 접속된 핀으로 프로그램되면 현재의 직렬접속된 인터럽트의 인덱스가 판정되어 직렬접속 인터럽트어드레스(CIA) 레지스터내에 기억된다. 인터럽트 채널(402)이 직렬접속모드에서 동작될 때 레지스터부(504)의 번호와 인터럽트 수락부(506)의 번호가 효과적으로 15 회 복제되므로 별도의 인터럽트부채널이 각각의 가능한 직렬접속된 인터럽트 신호마다 제공될 수 있음이 주지된다. 이들 부채널들은 제 5 도에서 영상으로 나타낸다.
각각의 인터럽트 신호는 프로그램가능 제어 레지스터(504A), 수신측 CPU 레지스터(504B), 유사 CPU 레지스터(504C) 및 ID(벡터) 레지스터(504D)와 연관된다. 제어 레지스터(504A)내의 정보에 준하여 인터럽트 수락부(506)는 INTR 핀상의 신호를 처리한다. 만일 인터럽트가 진, 이네이블 및 수락가능 신호일 경우, 인터럽트는 하나 이상의 처리부들에 공급되도록 중앙콘트롤러 인터럽트(404)(제 4 도)상에서 통과된다.
전술한 바와 같이 각각의 INTR핀은 인터럽트핀이 16 독특한 인터럽트들을 나타내는 직렬접속된 신호를 수신할 수 있는 직렬접속모드에서 프로그램될 수 있다. 핀이 직렬접속되도록 프로그램될 때 제 5 도에 영상으로 나타낸 바와 같이 16 개별세트의 레지스터부들과 인터럽트 수락부들이 인터럽트 채널과 연관될 것이다. 중앙 인터럽트 제어부(220)의 직렬접속모드에 대해 이하에 상세히 설명한다. 그 다음 각각의 인터럽트 채널(또는 부채널)의 여러 레지스터들에 대해 생각한다. 전술한 바와 같이, 별개의 레지스터세트가 각각의 가능한 인터럽트 신호마다 구비된다. 이 레지스터들은 제어 레지스터(504A), 수신측 CPU 레지스터(504B), 동족 CPU 레지스터(504C) 및 ID 레지스터(504D)로 명명된다. 이 레지스터들은 소프트웨어로 볼 수있고 또한 메모리맵 또는 I/O 맵된 시스템 공간내에 위치된다. 각각의 인터럽트 신호마다 별도의 제어 레지스터(504A)가 구비되며 프로그램될 수 있다. 각각의 인터럽트 신호에 대한 제어 레지스터(504A)는 각각의 INTR 핀의 기능성을 한정하여 묘사하고 각각은 32 - 비트 레지스터에 의해 실현될 수도 있다. 제 6 도는 제어 레지스터(504A)와 연관된 필드들을 나타내며 표 1 은 제어 레지스터(504A)의 여러 필드들을 나타내며, 표 2 는 직렬접속모드엔코딩을 나타내며, 표 3 은 교부모드엔코딩을 나타내고, 표 4 는 상태비트엔코딩을 나타낸다. 표 1 - 4 에 나타낸 바와 같이, 제어 레지스터(504A)는 채널에 제공될 인터럽트 신호의 타입을 한정하는 여러 정보, 인터럽트핀(즉, 정상 또는 직렬접속모드)의 모드, 인터럽트 신호가 현재 마스크되는지 여부, 인터럽트와 연관된 우선순위, 교부모드를 인터럽트와 연관된 다른 파라메터들과 더불어 기억한다.
표 1 : IIC 제어레지스터필드
표 2 : 직렬접속모드정의
표 3 : 교부모드정의
표 4 : 상태비트정의
제 5 도를 다시 참조하면 수신측 CPU 레지스터(504B)의 정의는 연관된 인터럽트 신호의 현재 상태와 교부모드에 의존한다. 만일 인터럽트가 서비스되지 않으면 수신측 CPU 레지스터(504B)는 인터럽트가 목표하고 있는 처리부들의 그룹 또는 ID 처리부의 ID 를 갖는다. 만일 교부모드가 방송중 또는 최저순위일 경우, 이 레지스터는 연관된 의미를 전하지 않는다.
동족 CPU 레지스터(504C)는 가장 최근에 인터럽트를 서비스받은 처리부(202-1 - 202-m)(제 2 도)의 ID 를 기억한다. ID 레지스터(504D)는 인터럽트의 ID(또는벡터)를 기억한다.
인터럽트들은 중앙콘트롤러 인터럽트(404)를 통해 중앙 콘트롤러(302)로 통과하기 전에 각각의 인터럽트 수락부(506)에 의해 처리된다. 만일 인터럽트가 이네이블(ICR의 EN)되어 마스크(ICR의 MSK)되지 않을 경우, 교부모드, 수신측처리부(만일 있다면), 우선순위 및 인터럽트 ID에 관한 정보와 더불어 중앙 콘트롤러(302)로 통과된다.
상술한 바와 같이, 구조가 중앙 인터럽트 제어부의 각각의 인터럽트 핀(INTRl-INTRn)이 직접 인터럽트로서 또는 직렬접속된 인터럽트로서 프로그램되도록 되어 있다. 만일 제어 레지스터(504A)내에 직렬접속 비트가 세트되면 연관된 인터럽트 채널은 총 15 추가 확장 인터럽트들을 수용한다. 이들 확장 인터럽트들 각각은 제 5 도에서 영상으로 나타낸 바와 같이 후부인터럽트 제어 레지스터(ICR)(504A), 수신측 CPU 레지스터(504B), 동족 CPU 레지스터(504C) 및 ID 레지스터(504D)와 연관된다. 확장 인터럽트 제어 레지스터들의 CSD, CM 및 ISA 필드들은 정의되지 않은 것을 제외하고 이들 레지스터들은 표 1- 4 에 의해 정의된 것들과 동일하다.
CM 필드는 직렬접속모드로 16 인터럽트들중 하나를 억세스하기 위해 사용되는 방법을 결정한다. 16 인터럽트들 중 하나의 인덱스는 인터럽트 입력처리기내에 위치된 CIA 레지스터에 의해 결정된다. CM 모드는 CIA 를 연산하는 매카니즘을 결정한다.
제 7 도 및 제 8 도는 특정핀을 직렬접속하기 위한 하드웨어 구성들을 나타낸다. 중앙 인터럽트 제어부는 이들 상이한 직렬접속모드들을 통해 인터럽트 확장을 지원한다. 처음 2 모드들에서는 단일 물리 인터럽트핀(INTRl - INTRn)이 다중 I/O 장치들의 인터럽트들을 선택된 인터럽트 부채널들에 발송하며, 세째모드에서는 컴퓨터시스템내에서 종래의 8259-타입 인터럽트 콘트롤러의 통합을 허용한다. 이에 의해 재래의 PC 하드웨어와 소프트웨어의 호환성이 제공된다.
제 7 도를 먼저 참조하면 하드웨어 구성이 "직렬코드화(serial coded)" 모드로서 인용되는 것이 무엇인지를 나타낸다. 제 7 도는 특정 인터럽트 채널이 직렬모드화 직렬 접속모드에 세트될 때 활성화되는 인터럽트 입력처리기(502)의 내부를 나타내는 개통도이다. 제 6 도에 나타낸 바와 같이, 인터럽트 입력처리기(502)는 전이기(shifter) 제어회로(572) 및 직렬디코드회로(574)에 결합된 제어부(570)를 포함한다. 제어부(570)는 대응제어레지스터(504A)의 CSD 의 CM 필드들에 응답된다. CM 필드(즉, 직렬접속모드필드)가 현재 모드가 직렬코드화 직렬접속모드일 때, 제어부(570)는 대응인터럽트핀(INTR)에서 직렬로 전송된 인코드 데이타가 특정 인터럽트신호의 활성도를 식별하도록 디코드되는 식으로 전이기 회로(572)와 직렬디코드회로(574)를 작동시킨다. 인터럽트 입력처리기(502)는 쉬프트레지스터(584)와 병렬인터럽트 검출회로(586)에 결합된 인터럽트 데이타 인코더를 포함하는 원격 인터럽트 취급기(580)에 결합된다.
병렬 인터럽트 검출회로(586)에는 복수의 인터럽트 신호들(0-15)이 제공된다. 원격인터럽트취급기(580)는 장치인터럽트들을 모아서 연관된 인터럽트 채널의 INTR 라인상의 코드화 직렬 메시지를 통해 중앙인터럽트 제어부에 각각의 인터럽트신호의 상황을 통신한다. 병렬인터럽트 검출회로(586)는 원격인터럽트취급기(580)에 제공되는 인터럽트 신호를 모니터한다. 만일 어느 인터럽트 신호에서 전이가 발생하면 인터럽트 데이타 인코더(582)가 인코드된 직렬 메시지를 쉬프트레지스터(584)를 통해 인터럽트 입력처리기(502)로 발송한다. 직렬 데이타는 인터럽트 채널의 INTR 라인에 제공된 직렬코드화 메시지라인상에 전송된다. 쉬프트레지스터(584)는 각각의 직렬코드화 메시지가 전송되고 있을 때 인터럽트 입력처리기에 동기 쉬프트클록을 제공한다.
일실시예에서는 인코드된 메시지가 직렬 접속된 인터럽트 신호 번호와 6 비트형의 인터럽트 상태로 구성된다. 가능한 인코딩 방식을 다음과 같다.
비트들 5 : 4 인터럽트 상태 00 로우로 전이된 인터럽트
01 하이로 전이된 인터럽트
10 보존
11 보존
비트 3 : 0 직렬접속된 입력신호들에 대한 인터럽트 번호는 0 - 15로 열거된다.
예를 들어 인터럽트 신호(3)가 로우에서 하이로 전이하는 상황을 생각해 보자. 이전이는 병렬 인터럽트검출회로(586)에 의해 검출된다. 인터럽트 데이타 인코더(582)는 발생된 전이의 종별과 전이된 특정인터럽트 신호를 나타내는 인코드된 값을 생성한다. 예를 들어 만일 상기 코딩방식이 사용되는 경우, "010111"의 인코드값은 인터럽트신호7("0111")에서 하이로의 전이를 나타낸다. 그 다음 직렬디코드부(574)는 인터럽트데이타 인터럽트(582)의 코딩방식에 따라 수신된 메시지를 디크도하여 메시지를 지정된 인터럽트 서브채널의 인터럽트 수락부(506)에 제공한다. 그 다음 대응하는 인터럽트 신호에 대한 인터럽트수락부(506)는 인터럽트가 이네이블(제어 레지스터의 EN)되어 마스크(제어레지스터의 MSK)되지 않은 경우 중앙 콘트롤러(302)에 인터럽트를 통과한다. 앞의 설명과 마찬가지로 인터럽트 수락부(506)가 중앙 콘트롤러(302)에 인터럽트를 통과할 때 인터럽트는 교부모드, 수신 CPU(있다면), 우선순위 및 인터럽트신호에 대한 인터럽트(ID)에 관한 정보와 더불어 통과된다.
제 6 도의 직렬코드화 직렬접속구성에 의하면 직렬채널은 활성도가 하나 이상의 인터럽트 신호라인상에 발생할때만 능동상태이므로 저전력 및 전기적으로 조용한 확장기술을 제공한다. 또한 인코딩방식은 추가종류의 메시지를 수용하도록 보존값을 제공한다.
제 8 도는 교호하는 직렬접속구성의 개통도이다. 제 7 도의 것에 상용하는 회로부분들은 동일번호를 부여한다. 이 구성에서는 특정 인터럽트신호의 활성도를 나타내는 값을 인코딩하기 보다 오히려 병렬인터럽트 검출회로(586)의 상태는 쉬프트레지스터(584)을 통해 인터럽트 입력처리기(502)에 연속적으로 직접 통신된다. 그와 같이, 쉬프트레지스터(584)는 병렬인터럽트 검출회로(586)의 상태를 나타내는 직렬신호를 연속으로 생성하며 전이기제어부(572)는 직렬전송을 병렬데이타로 변환한다. 그다음 병렬데이타는 대응하는 레지스터부(504)내의 연관된 제어와 벡터정보와 더불어 대응하는 인터럽트 수락부(506)에 검출된 인터럽트 신호 전송을 통과시키는 메시지 검출기(590)에 의해 디코드된다.
이러한 구성에서, 인터럽트 입력처리기(502)는 원격인터럽트 쉬프트 레지스터(584)를 연속으로 클록한다. 그다음 현재 데이타가 속하는 인터럽트의 트랙을 유지하고 그것을 적합한 채널에 송출한다. 데이타는 간단히 "인- 하이" 또는 "인 - 로우"이다. 그다음 중앙 콘트롤러(또는 인터럽트 수락부(506))는 데이타가 인터럽트 상태에서 변동을 나타내는 지를 판정해야하므로 어떤 작용을 행해야 한다.
제 2 도의 중앙 인터럽트 제어부(220)의 기타 태양을 그아음 생각한다. 제 9 도를 참조하면 처리기 인터럽트 발생기(306)를 나타내는 개통도가 도시되어 있다. 전술한 바와 같이 처리기 인터럽트 발생기(306)는 중앙 콘트롤러(302)로 부터 인터럽트 정보를 수신하여 처리부에 공급될 처리기 인터럽트 신호들(INTl- INTm)을 생성한다. 도면에 나타낸 바와 같이, 처리기 인터럽트 발생기(306)는 중앙 콘트롤러 인터럽트(602), 처리기간 인터럽트(IPI) 및 소프트웨어 인터럽트 레지스터세트(604)와 CPU 채널세트(606-1 - 606-m)를 포함한다. 시스템내의 각 처리부는 처리기 인터럽트발생기(306)의 연관된 CPU 채널(606-1 - 606-m)로 부터 인터럽트를 수신한다. CPU 채널(606-1 - 606-m)은 중앙 콘트롤러(302)(제 3 도)로 부터 중앙 콘트롤러 인터럽트(602)를 통해 인터럽트들을 수신하여 적당한 처리부(또는 처리부들)로 발송한다.
제 10 도는 처리기 채널들(601-1 - 601-m) 각각을 나타내는 개통도이다. 제 10 도의 CPU 채널(606)은 CPU 채널 레지스터부(650)와 인터럽트 발송제어부(654)에 결합된 인터럽트행렬(quene)(652)을 포함한다. 인터럽트 발송제어부(654)는 대응하는 처리부에 계류부에 계류중인 인터럽트들을 발송한다.
CPU 채널 레지스터부(650)는 현재업무우선순위 레지스터(650A), 현재 인터럽트 ID 레지스터(650B), 처리기 ID 레지스터(650C) 및 제어레지스터(650D)를 포함한다. 이들 레지스터들 각각의 기능들과 비트정의는 그다음 설명된다.
시스템내의 각 처리부는 후보제어레지스터(650D)를 공유하여 중앙인터럽트 제어부(220)에 의해 보인 바와 같은 기능성을 명령한다. 이들은 시스템의 I/O 또는 메모리 공간내에 맵핑되는 32 비트 프로그램가능 레지스터들이다. 제 10A 도는 그와 연관된 필드들과 더불어 CPU 채널 제어 레지스터(650D)를 나타내며 표 5 - 7 은 제어 레지스터 내의 필드들 각각을 설명한다.
표 5 : CIG 제어 레지스터 필드들
표 6 : 인터럽트 전송메카니즘 정의
표 7 : 인터럽트상태정의
처리기 ID 레지스터(650C)는 특정채널과 연관된 처리부(202-1 - 202-m)의 ID 를 기억한다. 현재 인터럽트 ID 레지스터(650B)는 채널에 접속된 처리부에 의해 서비스되고 있는 인터럽트의 ID(벡터)를 기억하기 위해 제공된다. 현재 인터럽트 ID 레지스터(650B)는 인터럽트가 서비스되고 있음을 제어 레지스터의 상태필드가 나타낼때만 유효하다. 현재 업무우선순위 레지스터(650A)는 채널과 연락되는 처리부에 의해 실행되는 업무의 우선순위를 반영한다.
제 9 도를 다시 참조하면, 처리기간 인터럽트와 소프트웨어 인터럽트 레지스터세트(604)는 모든 CPU 채널로 부터 동일한 위치들에서 논리적으로 억세스할 수 있는 한세트의 레지스터들을 제공한다. 이 레지스터 세트내의 공간은 인덱스로서처리기 ID 를 사용함으로서 각각의 CPU 채널에 독특한 레지스터부들을 제공한다. 따라서 2 처리기들이 동일 논리위치에서 맵핑되는 이들 레지스터들로 독출/기입사이클들을 생성할 때 그들은 실제로 별개의 물리 어드레스들을 억세싱할 것이다. 처리부들은 처리간 인터럽트들을 개시하거나 또는 소프트웨어 인터럽트들을 스캐줄하기 위해 이들 레지스터들에 기입한다.
제 10B 도는 처리간 인터럽트(IPI) 레지스터 포맷과 그의 필드들을 나타낸다. 모든 IPI 레지스터들은 시스템의 I/O 위치 또는 메모리 위치에서 소프트웨어에 억세스될 수 있다. 처리부의 ID 는 어느 레지스터가 억세스되고 있는지를 판정하도록 인덱스로서 사용된다. 표 8 내지 11 은 각 IPI 레지스터내의 여러 필드들에 관한 설명을 제공한다.
표 8 : CIG IPI 레지스터 필드들
표 9 : IPI 레지스터상태 필드정의
표 10 : IPI 레지스터 수신코드 필드정의
표 11 : IPI 레지스터 교부모드 필드정의
처리부는 처리기간의 인터럽트를 계획했을 때 IPI 레지스터에 기입을 수행한다. 만일 처리부가 다중 처리기간의 인터럽트를 계획할 수 있을 경우 IPI 레지스터의 ST(상태)필드를 모니터 해야한다. 이 필드가 아이들(idle) 상태인 경우, 처리부는 시스템으로 처리기간의 인터럽트를 주입할 수 있다. 처리부가 IPI 레지스터의 상태를 점검하지 않고 처리기간의 인터럽트를 주입하고 또한 ST 필드가 아이들 상태가 아닐경우, 현재 처리기간 인터럽트와 종전에 계획된 처리기간 인터럽트들의 운명이 결정되지 않는다. 각 처리기 채널용 소프트웨어 인터럽트 레지스터는 처리기간의 인터럽트 레지스터에 대해 특정된 것과 동일한 포맷을 갖는 것이 더 구비될 수도 있음을 주지한다. 그러나 소프트웨어 인터럽트들에 대해 요구된 인터럽트는 인터럽트 요구처리부에만 공급된다.
제 2 도를 다시 참조하여 컴퓨터시스템(200)뿐만아니라 중앙 인터럽트 제어부(220)내의 여러 구성 레지스터의 초기화에 관한 상세한 것을 설명한다. 시스템 구성과정중, 처리부들(202-1 - 202-m)중 하나는 "부트(boot)" 처리부로서 지정된다. 이하 설명에서는 처리부(202-1)가 부트처리부로서 지정된 것으로 가정한다. 제 11 도는 시스템 리세트시 부트처리부의 동작을 나타내는 흐름도이다. 단계 852 에서 처리부(202-1)는 전원 온 자체 검사절차와 초기화절차를 시작한다. 처음에 다른 처리부들(202-2 - 202-m)은 중앙 인터럽트 제어부(220)에 의해 리세트에 유지되는 것이 주지된다. 단계 854 에서 처리부(202-1)는 각 인터럽트 채널의 레지스터부(504)(즉, 제어 레지스터(504A), ID(벡터)레지스터(504D))를 초기화한다. 전술한 바와 같이, 각 인터럽트 채널의 레지스터부(504)는 컴퓨터시스템의 I/O 또는 메모리공간내에 맵핑된다. 각 인터럽트 채널의 각 레지스터는 예정된 식별 어드레스로 지정된다. 각각의 인터럽트 채널의 레지스터부(504)에 제공된 초기화 데이타는 메카니즘(204)의 BIOS 코드내에 기억된다. 그와 같이 각 인터럽트 채널의 레지스터부(504)를 초기화하기 위한 BIOS 코드는 특정시스템 구성(인터럽트 발생 재원의 수와 종별)에 의존하며 시스템 프로그래머에 의해 제공되어야 한다.
처리부(202-1)에 접속되는 중앙 인터럽트 제어부(220)의 CPU 채널(606-1)도 초기화 되어야 한다. 그러나 특정 CPU 채널들(606-1 - 606-m)에 대한 현재 업무 우선순위 레지스터(650A), 현재 인터럽트 ID 레지스터(650B), 처리기 ID 레지스터(650C) 및 제어 레지스터(650D)는 다른 CPU 채널들에 대응하는 레지스터로서 동일 시스템 어드레스 위치(I/O 또는 메모리 공간)에 잔류되어 맵핑된다. 즉, 현재 업무 우선순위 레지스터(650A)의 어드레스는 각 CPU 채널(606-1 - 606-m)마다 동일하다. 마찬가지로, CPU 채널 마다 현재 인터럽트 ID 레지스터(650B)의 어드레스는 각 CPU 채널의 처리기 ID 레지스터(650C) 및 제어 레지스터(650D)에 대한 어드레스 값과 동일하다. 따라서 처리부ID 값은 각각의 CPU 채널(606-1 - 606-m)의 CPU 채널 레지스터부(650)를 초기화 또는 갱신하기 위해 지정된 명령내에 내포되며 각 처리부(202-1 - 202-m)와 연관된다. 이에 대해 이하에 더 상세히 설명한다.
제 12 도는 정상실행중 초기화되어 갱신될 각 CPU 채널(606-1 -606-m)의 CPU 채널 레지스터부(650)을 이네이블하는 하드웨어를 더 상세히 설명하는 도면이다. 제 12 도는 처리부(202-1)와 연관된 ID 레지스터(902-1)를 나타낸다. 동일 ID 레지스터들(902-2 - 902-m)은 또한 처리부들(202-2 - 202-m)와 연관된다. 각 ID 레지스터(202-1 - 202-m)는 특정처리부를 독특하게 식별하는 값을 포함한다. 각 처리부의1D 값은 하드웨어 값일 수 있고 또는 시스템 구성시 제공될 수도 있다. 예를 들어 15 처리부들이 시스템내에 접속될 경우, ID 레지스터들(902-1- 902-16)내의 ID 값들은 제각기 0 - 15 일 수도 있다. 각각의 ID 레지스터들(902-1 - 902-m)을 경유 소프트웨어 명령을 통해 억세스될 수도 있다. ID 레지스터들은 메모리 또는 I/O 공간내에서 맵핑될 수도 있다. 그러나 각 처리부는 동일 어드레스 값을 통해 대응 ID 레지스터(902)를 억세스 한다는 것을 주지한다. 예를 들어 각 처리부(202-1- 202-m)의 ID 레지스터(902)는 2000 : H 의 메모리 위치에서 맵핑될 수도 있다. 따라서, 만일 지정된 처리코어(204-1 - 204-m)가 메모리위치 2000 : H 에 대한 독출사이클을 실행할 경우, 그 처리부에 대한 대응 ID 레지스터(902)내에 기억되어 있는 값은 처리코어에 제공될 것이다. 각 처리코어는 이러한 상황들에서 독특한 값을 독출한다.
제 13 도는 각각의 CPU 채널(606-1 - 606-m)의 각각의 CPU 채널 레지스터부(650)로 부터 데이타가 기입(또는 독출)되는 것을 허용하는 중앙 인터럽트 제어부(220)내에 내장된 회로를 나타낸다. 여기서 시스템내에 총 16 처리부들이 접속될 수 있는 것으로 가정한다. 그러나 다른 방법으로 회로는 예, 256 독특한 처리부들을 수용하도록 구성될 수도 있다. 제 13 도는 개별 16 CPU 채널들에 대한 CPU 채널 레지스터부들(650-1 - 650-16)을 나타낸다. 전술한 바와 같이, 각 CPU 채널 레지스터부(650-1 - 650-16)는 현재 업무우선순위 레지스터(650A), 현재 인터럽트 ID 레지스터(650B), 처리기 ID 레지스터(650C) 및 제어 레지스터(650D)를 포함한다. 이들 레지스터들 각각은 CPU 로칼버스(207)의 데이타 라인으로부터 데이타를수신(또는 제공)하도록 결합된다. 4 - 16 디코더 회로(920)는 또한 CPU 로칼버스(207)의 선택된 데이타 라인들에 그의 입력들에서 결합된다. 4 - 16 디코더 회로(920)의 출력들은 CPU 채널 레지스터부(650-1 - 650-16)의 각 선택라인들에 결합된다. 각각의 CPU 채널 레지스터부(650-1 - 650-16)는 디코더 회로(920)로부터 개별선택신호를 수신한다는 것을 주지한다. 어드레스 디코더(922)는 I/O 버스(210)의 어드레스 라인들에 그의 입력에서 결합된다. 4 래치이네이블 라인들은 어드레스 디코더(922)의 출력에 제공된다. 어드레스 이네이블 라인은 CPU 채널 레지스터부들(650-1 - 650-16)의 현재 업무 우선순위 레지스터(650A)의 래치 이네이블 입력들에 결합되며 마찬가지로 어드레스 디코더 이네이블 라인들은 각각의 현재 ID 레지스터(650B), 각각의 처리기 ID 레지스터(650C) 및 각각의 제어 레지스터(650D)에도 접속된다.
제 12 도 및 제 13 도는 도시된 바와 같은 하드웨어 실시에 의하면 지정된 CPU 채널(606-1 - 606-m)의 CPU 채널 레지스터부(650)를 초기화 또는 갱신해야할 경우 운영시스템 프로그래머가 실행코드를 구성하여 지정된 ID 레지스터(902)내의 처리기 ID 값을 인덱스로서 사용하여 부착된 데이타를 정정 CPU 채널 레지스터부(650)로 보낸다. 예를들어 각 처리부(202-1 - 202-m)의 ID 레지스터(902)가 메모리 위치 2000 : H 에서 맵핑되고 또한 CPU 채널(606-1 - 606-m)의 제어 레지스터(650D)가 3000 : H 의 I/O 어드레스에서 맵핑되는 상황을 생각하자. 만일 운영시스템이 특정처리부에 대한 제어 레지스터(650D)내의 구성 정보를 갱신해야할 경우, 프로그래머는 우선 지정된 처리부가 메모리 위치 2000 : H 에 대한 메모리 독출사이클을 실행하게 하여 특정 처리부의 ID 레지스터내의 값을 독출한다. 그 다음 프로그래머는 연관된 제어 레지스터(650D)내에 기억될 구성데이타와 ID 값을 부가하도록 명령을 불려낼 수도 있다. 그다음, 어드레스위치 3000 : H 에 대한 I/O 기입 명령은 조합된 정보(즉, 처리기 ID 값과 더불어 구성데이타)를 기억하도록 실행된다. 이 I/O 사이클은 각각의 CPU 채널 레지스터부(650-1 - 650-16)의 제어 레지스터들(650D)을 이네이블시키는 어드레스 디코더(922)에 의해 디코드된다. 그다음 구성 데이타가 부가된 처리기 ID 값은 CPU 채널 레지스터부들(650-1 - 650-16)중 선택된 것에 선택된 신호를 제공하는 4 - 16 디코더(920)에 의해 디코드된다. 이에 의해 구성 데이타가 선택된 이네이블된 레지스터들내에만 기억된다. 그에 의해 구성 데이타는 각각의 CPU 채널의 구성 레지스터들에 대한 개별의 후보 어드레스 위치들을 필요로 하지 않고 지정된 CPU 채널(606-1 - 606-m)에 제공된다. 각 CPU 채널 뿐만아니라 독출사이클의 레지스터들을 갱신하기 위한 사이클들도 마찬가지로 달성됨을 주지한다.
필요한 처리기 ID 독출동작을 수행하는 예시적인 코드뿐만아니라 구성 데이타에 ID 를 부가하고 또한 지정된 CPU 채널에 구성 데이타를 기입하기 위한 코드는다음과 같다.
제 11 도는 다시 참조하면, 부트 처리부가 중앙 인터럽트 제어부(220)(각 I/O 채널의 구성 레지스터들이 다른 I/O 채널들로부터의 구성 레지스터들로부터 별도로 후보위치들에서 맵핑된다)내의 I/O 채널들을 초기화한후 부트처리부(202-1)는 CPU 채널(606-1)을 초기화 해야한다. 이는 제 12 도 및 제 13 도와 연관하여 상술한 방법을 사용하여 성취된다. 따라서 단계 856 에서 처리부(202-1)는 대응하는 ID 레지스터(902)를 독출한다. 단계 858 에서, 처리부(202)는 CPU 채널 레지스터부(650)의 지정된 레지스터내에 기억되야 하는 원하는 구성 데이타에 ID 레지스터값을 부가한다. 그다음 처리부(202-1)는 CPU 채널 레지스터부(650)의 선택된 레지스터에 조합된 데이타를 기입하도록 사이클을 실행한다. 이 사이클동안 제 13 도의 4-16 디코더(920)는 CPU 채널(906-1)의 레지스터부(650-1)를 선택하기 위해 사용됨을 주지한다. 동일한 동작은 CPU 채널(606-1)의 CPU 채널 레지스터부(650)의 다른 레지스터내에 추가 초기화데이타를 기입하도록 개시될 수도 있다. 하나의 실시를 위해 현재 업무 우선순위 레지스터(650A)와 제어레지스터(650D)는 초기화 순서 동안 처리부(202-1)에 의해 초기화 데이타로 기입된다. 처리부(202-1)가 CPU 채널 606-1 을 초기화한 후, 처리부(202-1)는 중앙 인터럽트 제어부(220)에 명령을 제공하여 제어부(220)가 나머지 처리부들(202-2 - 202-m)을 리세트로부터 해방되게 한다(단계 862). 그다음(단계 864), 부트처리부(202-1)는 제 14 도에 나타낸 바와 같이 종속초기화 순서의 완료를 대기한다. 이에 의해 초기화순서를 종료한다.
제 14 도는 각 종속처리부(202-2 - 202-m)의 초기화 순서를 나타내는 흐름도이다. 주 처리부(202-1)에 의해 중앙 인터럽트 제어부(220)가 나머지 처리부들을 리세트로부터 해방시킬 때 각 처리부(202-2 - 202-m)는 단계 870 에서 연관된 ID 레지스터(902-2 - 902-m)를 독출하여, 제어 레지스터(650D)내에 기억될 구성데이타와 ID 값을 부가하여(단계 872), 조합된 데이타를 CPU 채널 레지스터부(650)에 기입한다(단계 874). 제 13 도의 디코드회로(920)는 각 특정사이클 동안 식별된 처리기 ID 에 따라 적당한 CPU 채널 레지스터부(650-1 - 650-16)를 선택하도록 이 사이클 동안 능동상태이다. 동일한 동작들은 각 CPU 채널의 업무우선순위 레지스터(650A)를 초기화하도록 반복된다(단계 876). 각 ID 레지스터들(902-2 - 902-m) 내에 들어있는 독특한 ID 값이 CPU 채널 레지스터부(650)의 각 레지스터에 기입된 데이타에 부가되기 때문에 각 처리부(202-2 - 202-m)는 그 자신의 CPU 채널을 구성한다.
제 2 도 및 제 4 도를 다시 참조하면 각각의 지정된 인터럽트 채널(402-1 - 402-n)은 "8259" 모드로서 호출될시에 프로그램될 수도 있음이 이미 언급되었다.이미 연관된 제어 레지스터(504A)의 CM 필드에 의해 지시된 바와 같이 특정 인터럽트 채널이 연관된 제어 레지스터(504A)의 CM 필드에 의해 표시될 때 인터럽트 콘트롤러(216)와 같은 프로그램 가능 인터럽트 콘트롤러가 중앙 인터럽트 제어부(220)에 접속되는 것을 허용한다. 동작의 8259 모드 동안 8259 인터럽트 콘트롤러로부터 인터럽트신호는 프로그램된 우선순위에 따라 중앙 인터럽트 제어부(220)를 통과되고 또한 수신 처리부(202-1 - 202-m)로부터의 확인신호는 중앙 인터럽트 제어부(220)를 통해 인터럽트 콘트롤러(216)로 뒤로 통과된다. 이는 중앙 인터럽트 제어부(220)와 버퍼(219)에 결합된 처리부들(202)중 하나를 나타내는 제 15 도에 도시되어 있다. ISA 인터럽트가 8259 인터럽트 콘트롤러(216)의 인터럽트 입력에 수신될 대 인터럽트들은 중앙 인터럽트 제어부(220)를 통과하며 또한 프로그램된 우선순위와 중앙제어 경로에 따라 지정된 처리부(202)로 통과된다. 지정된 처리부(202)가 사이클을 확인할 때 인터럽트 확인신호(INTA)는 중앙 인터럽트 제어부(220)를 통과하여 8259 인터럽트 콘트롤러(216)의 인터럽트 확인라인에서 수신된다. 인터럽트 콘트롤러(216)은 X-버스(210)(또는 다른 버스)상의 인터럽트 벡터를 구동시키고 인터럽트 벡터는 버퍼(219)를 통해 처리부(202)로 통과된다. 버퍼(219)는 버스브리지(208)내에 내장될 수도 있음을 주지한다. 그에 따라서 8259 직렬접속모드동안 중앙 인터럽트 제어부(220)는 수신하는 처리부(202)의 인터럽트 확인사이클에 직접응답하지 못하는 대신 8259 인터럽트 콘트롤러(216)로 부터 벡터정보가 제공되도록 허용하다. 상술한 바와 같이 8259 직렬접속모드를 수용하면 시스템타이머(834)와 실시간클록(835)을 포함하는 모델 82C206 집적회로와 같은 통합된 인터럽트 소스들을 사용할 수 있어 유리하다는 것도 주지한다.
제 2 도를 다시 참조하면, 다중처리 시스템(202)은 시스템내에 내장되는 하나 이상의 버스들을 횡단전송되는 특수 한정된 사이클을 사용하여 여러 인터럽트들을 가로질러 인터럽트 정보를 이송하도록 구성될 수도 있다. 이는 제 16 도를 참조하면 가장 잘 이해할 수 있다. 제 16 도는 제 2 I/O 버스(282)에 결합된 추가 I/O 장치(280)로서 제 2 도에 표시된 바와 같은 다중처리 시스템의 개통도이다. 제 2 I/O 버스(282)는 버스브리지(284)를 통해 I/O 버스(210)에 결합된다. 버스브리지(284)는 예를 들어 다중처리 시스템에 I/O 장치(280)로 나타낸 바와 같은 휴대용 컴퓨터를 결합하기 위한 결합부(docking station)를 나타낸다. 제 16 도의 시스템에 대해서 I/O 장치(280)는 버스브리지(284)에 인터럽트신호를 제공할 수도 있다. 그러나 중앙 인터럽트 제어부(220)에 버스브리지(284)를 결합시킨 후보 인터럽트핀들의 비이용가능성과 비용부담으로 인해 버스브리지는 중앙 인터럽트 제어부(200)에 의해 수신된 후보라인에서 인터럽트신호를 검증하도록 구성하지 않고, I/O 장치(280)에 의해 인터럽트의 검증에 응답하여 중앙 인터럽트 제어부(220)의 특정 인터럽트 채널이 응답할 후보 메모리 위치에 대한 특수한 사이클 즉, 메모리 또는 I/O 사이클을 수행할 수도 있다. 제 17 도는 버스브리지에 의해 실행된 바와 같은 인터럽트 사이클을 디코드하고 또한 대응 인터럽트 채널내의 대응 인터럽트신호를 검증하도록 구성된 하드웨어를 포함하는 인터럽트 채널을 나타낸다. 제 17 도에 나타낸 바와 같이, 제어부(290)는 제어 레지스터(504A)의 CM 필드에 응답하며 그에 따라 인터럽트 채널 모드가 I/O 버스 모드로서 지정될 경우 인터럽트 사이클디코더(292)를 이네이블한다. 제어부(290)가 인터럽트 사이클 디코더(292)를 이네이블할 때, 버스브리지(284)에 의해 발생된 특수화된 인터럽트 사이클은 인터럽트 입력 처리기(502)의 INTR 입력에서 인터럽트 신호를 검증하는 인터럽트 사이클 디코더(292)에 대해 검출된다. I/O 버스(210)가 PCI 표준구조버스로된 상황에 대해서는 특수 인터럽트 사이클이 PCI 버스의 사이클정의 비트들의 예정된 코딩에 의해 한정될 수도 있다. 다른 방법으로 특수 인터럽트 사이클은 시스템의 메모리 또는 I/O 공간내에 예정된 이네이블에 대한 사이클로서 한정될 수도 있다.
그 다음 중앙 콘트롤러(302)에 의해 인터럽트들의 우선순위화에 관해 설명한다. 제 18 도는 I/O 인터럽트 콘트롤러(304), 중앙 콘트롤러(302) 및 처리기 인터럽트 발생기(306)를 포함하는 중앙 인터럽트 제어부(220)의 일부를 나타내는 개통도이다. 중앙 인터럽트 제어부(220)는 인터럽트 벡터에 따라 고정된 우선순위와 특정 인터럽트를 자동으로 연합하기 보다는 오히려 각 인터럽트가 개별 프로그램기능 인터럽트 벡터와 개별 우선순위를 갖게 한다. 우선순위는 인터럽트 채널용 연관된 제어 레지스터(504A)의 PL 필드내에 기억된다. 전술한 바와 같이 시스템 초기화시 각 인터럽트 채널용 벡터가 세트되고, 그밖에 인터럽트 채널용 우선순위도 세트된다. 특정 인터럽트 요구가 I/O 인터럽트 콘트롤러(304)에 의해 일단 수락되면 인터럽트 벡터와 우선순위 데이타는 중앙 콘트롤러(302)의 인터럽트 스케쥴러(305)에 의해 처리되어 처리기인터럽트 발생기(306)의 지정된 CPU 채널의 계류중인 인터럽트 대기행렬(queue)(652)(제 10 도)로 각 인터럽트 마다 인터럽트 벡터와 우선순위 데이타를 제공한다. 인터럽트들은 인터럽트 제어 레지스터에 의해 지시된 우선순위에 준하여 뿐아니라 이용가능 처리부의 현재 업무 우선순위들에 준하여 우선순위화 방식으로 CPU 채널들의 여러 인터럽트 대기행렬들에 제공된다. 제 18 도는 I/O 버스(210)상의 지정된 I/O 또는 메모리사이클을 통해 각 인터럽트마다 벡터정보와 우선순위정보의 개별 프로그래밍을 허락하는 I/O 버스 인터럽트부(308)내의 디코더부(309)를 나타낸다. 하나의 간단한 구성을 위해 계류중인 인터럽트 요구들은 그들의 우선순위화된 순서로 CPU 채널들의 인터럽트 행렬들에 제공된다.
제 2 도를 다시 참조하면 타이머표시 인터럽트와 같은 선택된 인터럽트들은 각 처리부(202-1 - 202-m)에 방송하는 식으로 제공할 필요가 있을 수도 있다. 만일 특정 인터럽트 신호에 대한 공급모드가 방송모드(즉, 인터럽트용 제어 레지스터(504A)의 DM 필드)로서 지정될 경우, 중앙 콘트롤러(302)는 제 19 도의 흐름도에 나타낸 바와 같이 자동 연속 기술에 따라 동작한다. 제 19 도에 나타낸 바와 같이, 만일 방송으로서 지정된 인터럽트용 인터럽트요구신호가 단계 470 에서 결정된 바와 같이 예정될 경우, 인터럽트는 단계 472 에서 최하 현재 업무우선순위(CPU 채널에 대해 현재 업무 우선순위 레지스터(650A)에 의해 지시된 바와 같음)를 갖는 처리부(202-1 - 202-m)에 제공된다. 단계 474 에서 지정된 처리부는 인터럽트를 서비스하여 중앙 콘트롤러(302)에 인터럽트의 종료(EOI) 명령을 복귀시킨다. 만일 모든 처리부들(202-1 - 202-m)이 인터럽트를 여전히 수신하지 못했을 경우(단계 476), 인터럽트는(인터럽트를 여전히 수신하지 못한 나머지 처리부들중) 이 인터럽트를 여전히 수신하지 못하고 현재 업무최하 우선순위를 갖는 그 다음 처리부(202-1 - 202-m)에 제공된다. 그다음 그다음의 처리부가 인터럽트를 서비스하여 중앙 콘트롤러(302)에 인터럽트 종료명령을 복귀시킨다. 이 과정은 각 처리부(202-1 -202-m)가 인터럽트를 서비스할 때까지 반복된다. 모든 처리부들이 인터럽트를 수신하여 서비스했을 때 그 인터럽트(인터럽트 채널에 대한 제어 레지스터(504A)의 ST 필드의 아이들상태)에 대한 비지비트는 소거된다(단계 478). 지정된 세트의 처리부들이 모든 처리부들보다 오히려 특정 인터럽트를 수신해야할지를 비슷한 자동연속 절차가 실행될 수도 있음을 알 수 있다. 타이머표시 인터럽트들과 같은 인터럽트들이 2 이상의 처리부들에 제공되는 상술한 자동연속 기술에 따라 중앙 콘트롤러(302)는 지시된 현재 업무 최하 우선순위를 갖는 처리부에 인터럽트를 지적 및 선택적으로 통과시킨다. 인터럽트는 종래의 처리부가 인터럽트의 서비스를 완료할 때까지 그다음 처리부들로 통과되지 않는다. 결과적으로 버스쟁탈이 최소화되므로 시스템선응이 상대적으로 높은 업무 우선순위를 갖는 처리부들을 인터럽트 하기전에 현재의 상대적인 최하 업무 우선순위를 갖는 처리부를 인터럽트함으로써 최대화될 수 있다.
또한 중앙 인터럽트 제어부(220)는 의사 인터럽트들의 발생을 방지하도록 구성된다. 전술한 바와 같이 순위가 트리거된 인터럽트가 지정된 처리부에 의해 서비스되고 있을 때 통상적으로 I/O 명령은 인터럽트 서비스경로에 연결되어 인터럽트 소스가 인터럽트신호를 반검증하게 한다. 그다음 인터럽트 서비스가 완료되었음을 중앙 인터럽트 제어부(220)에 통보하도록 인터럽트 종료(EOI) 명령이 실행된다. 처리부가 I/O 명령(인터럽트 소스가 인터럽트 신호를 반검증하게함)을 실행하는 시간과 인터럽트신호가 반검증되는 시간 사이에 충분한 호출이 있는 경우 의사 인터럽트가 발생할 수 있다. 예를 들어 I/O 장치가 여러 버스 인터럽트부들을 통해 원격버스상에 체류할 경우 그러한 호출이 발생할 수 있다. 만일 집중식 인터럽트 콘트롤러가 인터럽트 종료명령에 응답하기 전에 인터럽트 소스가 인터럽트 신호를 반검증하지 못하는 경우, 인터럽트의 연속된 검증이 중앙 인터럽트 제어부(220)에 의해 검출되어 인터럽트가 의도적으로 재기시된다.
제 20 도를 참조하면 중앙 인터럽트 제어부(220)는 디코더부(596)를 통해 I/O 버스(210)에 프로그램 가능한 호출 타이머(595)가 결합되어 있어 유리하다. 프로그램 가능한 호출 타이머(595)는 중앙 콘트롤러(302)가 인터럽트 종료명령을 수신하는 시간과 중앙콘트롤러(302)가 특정 인터럽트 채널의 제어 레지스터(504A)의 상태(ST) 필드를 리세트하는 시간 사이의 프로그램가능 시간지연을 시스템 사용자가 세트함으로서 프로그램될 수 있다. I/O 인터럽트 콘트롤러(304)는 인터럽트가 서비스중임을 나타내거나 또는 중앙 인터럽트 제어부(220)로부터 특정 처리부로 발송되었음을 나타내거나 또는 중앙 콘트롤러(302)내에 대기 행렬완료된 것으로 상태가 나타날 경우 지정된 인터럽트신호를 모니터하지 않는 식으로 구성된다. 일단 중앙 콘트롤러(302)가 특정 인터럽트 신호에 대해 아이들하도록 상태를 리세트하면 I/O 인터럽트 콘트롤러(304)는 다음 검증용 특정 인터럽트 신호를 계속 모니터한다. 프로그램가능 타이머(595)가 특정 인터럽트 채널용 제어 레지스터의 ST 필드의 리세팅을 지연시키기 때문에 의사 인터럽트들이 방지될 수 있음을 주지한다. 또한 프로그램가능 타이머(595)가 그 인터럽트의 패널 제어 레지스터(504A)의 EOI 필드를 통해 각 인터럽트 마다 선택적으로 이네이블 될 수 있음도 주지한다. 또한 디코더(596)가 I/O 버스 인터럽트부(308)의 통합부로서 내장될 수도 있음도 주지한다.
마지막으로 제 21 도를 참조하면 적응 인터럽트 맵핑 메카니즘과 기술을 사용하는 대칭 다중처리 시스템의 개통도가 도시되어 있다. ISA버스(904)는 버스브리지(906)를 통해 PCI 버스(902)에 결합된다. 복수의 PCI 장치들(907-909)을 PCI 버스(902)에 결합된다. 복수의 ISA 장치들(910-912)도 마찬가지로 ISA 버스(904)에 결합된다. 마지막으로 인터럽트 콘트롤러(915)와 PCI 맵퍼(916)는 ISA 버스(904)에 결합된다.
중앙 인터럽트 제어부(220)는 "선행"모드 또는 "통과" 모드에서 동작하도록 구성된다. 통과모드는 결합모드이다. 선행모드는 중앙 인터럽트 제어부(220)의 구성 레지스터내에 1 비트를 세팅함으로써(즉, 제어 레지스터(504A)내에 1 비트를 세팅함으로써) 기입한다. 2 모드동안 다중처리 시스템의 동작을 이하에 더 설명한다.
일반적으로 말해, 인터럽트 콘트롤러(915)는 PCI 장치들(907-909)및 ISA 장치들(91-0912)과 같은 복수의 인터럽팅장치들로부터 제공된 인터럽트들을 우선순위화 처리한다. 인터럽트 콘트롤러(915)는 또한 마스킹기능과 같은 다른 기능들을 제공한다. 인터럽트 콘트롤러(915)는 중앙 인터럽트 제어부(220)에 결합된 라인(920)애서 인터럽트 신호를 생성한다. 인터럽트 콘트롤러(915)는 예를 들어 한쌍의 직렬접속된 AM8259 인터럽트 콘트롤러들을 나타낸다.
PCI 맵퍼(916)는 PCI 장치들(907-909) 각각으로부터 인터럽트 콘트롤러(915)의 개별 인터럽트 입력(A-H)으로 인터럽트 신호를 송출하도록 구성된다. PCI 맵퍼(916)는 시스템 BIOS 가 PCI 장치들(907-909)로부터 PCI 맵퍼(916)를 통해 인터럽트 콘트롤러(915)의 지정된 입력(A-H)(즉, 어느 ISA 장치들(910-912)에 의해 사용되고 있지 않은 입력들)으로 각 인터럽트의 송출을 프로그램하는 것을 유리하게 허용한다. 그에 따라서 시스템 초기화 동안 시스템 BIOS 는 어떤 ISA 장치들이 시스템에 접속되는지를 판정할 수 있고 또한 어떤 PSI 장치들로부터 PCI 맵퍼(916)를 통해 인터럽트 콘트롤러(15)의 사용않된 입력들로 인터럽트들을 맵핑할 수 있다. 또한 ISA 장치들(910-912)과 PCI 장치들(907-909)로부터의 인터럽트들은 중앙 인터럽트 제어부(220)로 직접 제공됨을 주지한다. 이에 따라 이하에 설명한다.
통과모드동안 ISA 장치들(910-912)로 부터의 인터럽트들은 인터럽트 콘트롤러(915)에 제공된다. 상응하는 인터럽트는 와인(920)에서 인터럽트 콘트롤러(915)에 의해 생성되어, 중앙 인터럽트 제어부(220)를 통해 주처리부(202-1)로 직접 통과된다. 마찬가지로 PCI 장치들(907-909)로부터의 인터럽트들은 PCI 맵퍼(916)를 통해 인터럽트 콘트롤러(915)에 제공된다. 다시, PCI 장치들(907-909)중 하나에 의해 검증된 인터럽트는 인터럽트 콘트롤러(915)로부터 라인(920)에서 인터럽트를 검증한다. 그다음 인터럽트 콘트롤러(915)로 부터의 인터럽트는 중앙 인터럽트 제어부(220)를 통해 주처리부(202-1)로 직접 통과된다. 또한 중앙 인터럽트 제어부는 이 모드동안 PCI 장치들(907;909)와 ISA 장치들(910-912)로부터 직접 들어오는 인터럽트들을 무시하도록 구성된다. 통과모드동안 처리부들(202-2 - 202-m)은 아이들 상태로 남고 또한 시스템은 단일처리기 시스템으로서 동작함이 주지된다. 이 모드는 DOS 와 같은 재래식 운영시스템들을 유리하게 수용한다.
다중처리(즉, 윈도우 NT 와 같은)를 지원하는 개선된 운영시스템에 의해 추종하는 주 초기화를 세트할 수도 있는 선행모드동안 PCI 맵퍼(916)는 그의 모든 출력들이 3 상태가 되도록 디스에이블된다. PCI 장치들(907-909)로부터의 인터럽트들은 중앙 인터럽트 제어부(220)에 직접 제공된다. 그다음 이들 인터럽트들의 처리는 상술한 방식으로 성취될 수도 있다. 선행모드동안, 인터럽트 콘트롤러(915)의 인터럽트 출력은 중앙 인터럽트 제어부(220)에 의해 무시된다. 표 12 는 여러 인터럽트들과 PCI 맵퍼(916)에 대해 통과모드와 선행모드의 효과를 아래에 나타낸다.
표 12
그러므로 제 21 도의 다중처리 시스템은 적응 인터럽트 맵핑메카니즘과 방법을 사용하며, 그에 의해 개선된 운영시스템과 재래의 단일 처리운영시스템둘다 쉽게 지원받을 수 있다. PCI 맵퍼(916)가 선행모드동안 디스에이블되기 때문에 추가의 ISA 장치들이 PCI 장치를 (907-909)로부터 인터럽트들과 충돌없이 선행모드동안 ISA 버스(904)에 접속될 수 있다. 따라서 광범위한 시스템구성들이 지원되므로 이용가능한 ISA 인터럽트라인들의 수가 최대화될 수도 있다. 상술한 바와 같이 대칭 다중처리 시스템에 따라 시스템 인터럽트들의 효율적인 관리가 성취될 수 있는 한편 넓은 호환성을 유지할 수 있다. 집중식 인터럽트 제어부에 의해 인터럽트 관리가 달성될 수 있다.
지금까지 양호한 실시예를 들어 본 발명을 설명했으나 청구범위내에서 여러 수정변경실시 가능함을 본분야의 숙련자는 이해할 것이다.
제 1 도는 복수의 처리부(processing unit)를 포함하는 대표적인 대칭 다중처리 시스템의 개통도.
제 2 도는 집중된 인터럽트 콘트롤러 메카니즘(centralized interrupt controller mechanism)을 포함하는 대칭 다중처리 시스템의 개통도.
제 3 도는 중앙 인터럽트 제어부의 개통도.
제 4 도는 I/O 인터럽트 론트롤러의 개통도.
제 5 도는 인터럽트 채널의 개통도.
제 6 도는 인터럽트 채널 제어 레지스터 및 그의 관련된 필드들을 나타낸 도면.
제 7 도는 인터럽트 입력 처리기의 한 직렬접속모드(cascading mode)동안 대칭다중처리 시스템과 연관된 하드웨어를 나타내는 개통도.
제 8 도는 인터럽트 입력처리기의 다른 직렬접속모드동안 대칭다중처리 시스템과 연관된 하드웨어를 나타내는 개통도.
제 9 도는 처리기 인터럽트 발생기의 개통도.
제 10 도는 처리기 채널의 개통도.
제 10A 도는 CPU 채널 제어 래지스터와 그의 연관된 필드들을 나타내는 도면,
제 10B 도는 처리기간 인터럽트 레지스터 및 그의 관련된 필드들을 나타내는 도면.
제 11 도는 시스템 리세트시에 부트(boot) 처리부의 동작을 나타내는 흐름도.
제 12 도는 각 CPU 채널의 CPU 채널 레지스터부를 이네이블시키는 하드웨어를 나타내는 도면.
제 13 도는 중앙 인터럽트 제어부내에 실시된 회로를 나타내는 개통도.
제 14 도는 각 종속 처리부의 초기화 순서를 나타내는 흐름도.
제 15 도는 중앙 인터럽트 제어부에 결합된 처리부들중 하나를 나타내는 개통도.
제 16 도는 인터럽트를 개시하기 위해 특별시 한정된 인터럽트 사이클을 디코드하도록 구성된 하드웨어를 포함하는 인터럽트 채널을 나타내는 개통도.
제 17 도는 인터럽트 사이클을 디코드하도록 구성된 하드웨어를 포함하는 인터럽트 채널을 나타내는 개통도.
제 18 도는 중앙 콘트롤러의 내부를 포함하는 중앙 인터럽트 제어부의 일부를 나타내는 개통도.
제 19 도는 방송모드동안 인터럽트의 교부를 나타내는 흐름도.
제 20 도는 프로그램가능 호출 타이머를 포함하는 중앙제어부의 개통도.
제 21 도는 본 발명에 의한 적응성 인터럽트 맵핑 메카니즘(mappingmechanism) 및 기술을 사용하는 대칭 다중처리 시스템의 개통도.
* 도면의 주요부분에 대한 부호의 설명 *
1. 다중처리 시스템 2. 인터럽트
3. 콘트롤러 4. 중앙 인터럽트 제어부
5. 하드웨어 6. 이네이블
7. 프로그램 8. 메카니즘
9. 컴퓨터 시스템 10. 소프트웨어
11. 주변장치 12. 어드레스
13. 우선순위 14. 버스브리지
15. CPU 로칼버스 16. I/O 버스
17. 캐시메모리

Claims (10)

  1. 제 1 버스와 동작 가능하게 결합된 복수의 처리부와,
    상기 제 1버스에 결합된 제 2버스와,
    상기 제 1버스에 결합된 제 1주변장치와,
    상기 제 2버스와 결합된 제 2주변장치와,
    상기 제 2주변 장치로부터 인터럽트 요청 신호를 수신하기위해 결합된 제 1 입력 라인을 가지면서 상기 제 2버스와 결합된 인터럽트 콘트롤러와,
    상기 제 1주변 장치로부터 인터럽트 요청 신호를 수신하도록 구성되고, 제 2 입력 라인을 통해 상기 인터럽트 신호를 상기 인터럽트 콘트롤러로 전달하며, 상기 제 2버스와 결합되는 인터럽트 맵퍼와, 그리고
    제 1동작 모드의 제 1중앙 인터럽트 제어부 인터럽트 요청 라인을 통하고, 제 2동작 모드의 상기 인터럽트 콘트롤러 출력과 연결되는 제 2중앙 인터럽트 제어부를 통해서 상기 제 1주변장치로부터 상기 인터럽트 신호를 수신하도록 구성되고, 상기 복수의 처리부와 상기 인터럽트 제어 콘트롤러에 동작하도록 결합되며, 제 1 버스에 결합되고, 여기서 상기 제 1 동작모드동안 상기 인터럽트 맵퍼를 디스에이블하도록 신호를 검증하도록 구성되는 중앙 인터럽트 제어부를 포함하는 것을 특징으로 하는 다중처리 컴퓨터 시스템.
  2. 제 1항에 있어서, 상기 중앙 인터럽트 제어부는 제 2동작 모드에서 상기 제2중앙 인터럽트 제어부 요청 라인 상의 상기 제 2주변장치로부터 인터럽트 신호를 수신하도록 구성되는 것을 특징으로 하는 다중처리 컴퓨터 시스템.
  3. 제 2항에 있어서, 상기 중앙 인터럽트 제어부는 제 1동작 모드에서 제 3중앙 인터럽트 제어부 요청 라인 상의 상기 제 2주변장치로부터 인터럽트 신호를 수신하도록 구성되는 것을 특징으로 하는 다중처리 컴퓨터 시스템.
  4. 제 1항에 있어서, 상기 중앙 인터럽트 제어부의 제 1동작 모드와 상기 중앙 인터럽트 제어부의 제 2동작 모드는 상기 중앙 인터럽트 제어부 내부의 구성 레지스트의 한 비트를 통해 프로그램될 수 있는 것을 특징으로 하는 다중처리 컴퓨터 시스템.
  5. 제 1항에 있어서, 상기 제 2동작 모드 중 상기 해당 인터럽트 신호가 상기 복수의 처리부 중 목적지 하나에만 직접적으로 제공되는 것을 특징으로 하는 다중 처리 컴퓨터 시스템.
  6. 제 5항에 있어서, 상기 목적지 처리부는 마스터 처리부인 것을 특징으로 하는 다중 처리 컴퓨터 시스템.
  7. 제 3항에 있어서, 상기 제 1동작 모드 동안 상기 중앙 인터럽트 제어부는 상기 복수의 처리부 중 하나 이상에 상기 인터럽트 신호를 교부하고 처리하도록 구성되는 것을 특징으로 하는 다중 처리 컴퓨터 시스템.
  8. 다중 처리 컴퓨터 시스템에 복수의 인터럽트 신호를 전달하는 방법에 있어서,
    인터럽트 맵퍼를 사용 가능하도록, 모드를 통한 다중 처리 시스템의 경로를 초기화하는 단계와,
    여기서 상기 인터럽트 맵퍼는 하나 이상의 주변장치로부터 하나 이상의 인터럽트 신호들을 인터럽트 콘트롤러로 전달하도록 구성되며,
    상기 인터럽트 맵퍼로 디스에이블 신호를 제공하고, 다음 모드로 진입하는 단계와,
    상기 인터럽트 콘트롤러를 바이패스하도록, 하나 이상의 주변장치들로부터 하나 이상의 인터럽트 신호들을 중앙 인터럽트 제어 유닛으로 제공하는 단계와, 그리고
    상기 중앙 인터럽트 제어부로부터 하나 이상의 인터럽트 신호들을 복수의 처리부 중 하나 이상으로 교부하는 단계를 포함하는 것을 특징으로 하는 다중 처리 컴퓨터 시스템에 복수의 인터럽트 신호를 전달하는 방법.
  9. 제 8항에 있어서, 상기 초기화 단계 중 상기 다중 시스템은 단일 처리 모드로 부트되는 것을 특징으로 하는 다중 처리 컴퓨터 시스템에 복수의 인터럽트 신호를 전달하는 방법.
  10. 제 8항에 있어서, 상기 중앙 인터럽트 처리부의 구성 레지스터 내부의 한 비트를 설정하는 단계를 더 포함하는 것을 특징으로 하는 다중 처리 컴퓨터 시스템에 복수의 인터럽트 신호를 전달하는 방법.
KR1019960007693A 1995-03-21 1996-03-21 적응성인터럽트맵핑메카니즘및방법을사용하는다중처리시스템 KR100399385B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/408,003 US5721931A (en) 1995-03-21 1995-03-21 Multiprocessing system employing an adaptive interrupt mapping mechanism and method
US08/408,003 1995-03-21

Publications (2)

Publication Number Publication Date
KR960035261A KR960035261A (ko) 1996-10-24
KR100399385B1 true KR100399385B1 (ko) 2004-02-05

Family

ID=23614444

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960007693A KR100399385B1 (ko) 1995-03-21 1996-03-21 적응성인터럽트맵핑메카니즘및방법을사용하는다중처리시스템

Country Status (6)

Country Link
US (1) US5721931A (ko)
EP (1) EP0737923B1 (ko)
JP (1) JP3570810B2 (ko)
KR (1) KR100399385B1 (ko)
AT (1) ATE202425T1 (ko)
DE (1) DE69613423T2 (ko)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5944809A (en) * 1996-08-20 1999-08-31 Compaq Computer Corporation Method and apparatus for distributing interrupts in a symmetric multiprocessor system
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
US5925115A (en) * 1997-03-10 1999-07-20 Vlsi Technology, Inc. Method and system for extending interrupt sources and implementing hardware based and software based prioritization of interrupts for an embedded processor
US6256660B1 (en) * 1997-04-08 2001-07-03 International Business Machines Corporation Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts
JP3008896B2 (ja) * 1997-06-16 2000-02-14 日本電気株式会社 共有バス型マルチプロセッサシステムの割り込み負荷分散システム
US6003109A (en) * 1997-08-15 1999-12-14 Lsi Logic Corporation Method and apparatus for processing interrupts in a data processing system
US6219741B1 (en) 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
US6418496B2 (en) * 1997-12-10 2002-07-09 Intel Corporation System and apparatus including lowest priority logic to select a processor to receive an interrupt message
US6571206B1 (en) * 1998-01-15 2003-05-27 Phoenix Technologies Ltd. Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment
US6081861A (en) * 1998-06-15 2000-06-27 International Business Machines Corporation PCI migration support of ISA adapters
US6192439B1 (en) 1998-08-11 2001-02-20 Hewlett-Packard Company PCI-compliant interrupt steering architecture
US6065088A (en) * 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering
US6701429B1 (en) 1998-12-03 2004-03-02 Telefonaktiebolaget Lm Ericsson(Publ) System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location
US6263395B1 (en) * 1999-01-06 2001-07-17 Compaq Computer Corp. System and method for serial interrupt scanning
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US20020099893A1 (en) * 2001-01-24 2002-07-25 Nguyen Tuyet-Huong Thi System and method for the handling of system management interrupts in a multiprocessor computer system
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US6971004B1 (en) * 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US20040111549A1 (en) * 2002-12-10 2004-06-10 Intel Corporation Method, system, and program for improved interrupt processing
US7340740B2 (en) * 2003-04-22 2008-03-04 International Business Machines Corporation Cooperatively multitasking in an interrupt free computing environment
US20040267998A1 (en) * 2003-06-26 2004-12-30 Zimmer Vincent J Method to support legacy and native mode interrupts with multiplexed execution of legacy and native interrupt service
US7584316B2 (en) * 2003-10-14 2009-09-01 Broadcom Corporation Packet manager interrupt mapper
US7028106B2 (en) * 2003-12-05 2006-04-11 Hewlett-Packard Development Company, L.P. Remapping routing information entries in an expander
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US7332976B1 (en) * 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7162559B1 (en) * 2005-03-08 2007-01-09 Emc Corporation System for controlling interrupts between input/output devices and central processing units
US7735141B1 (en) * 2005-03-10 2010-06-08 Noel Steven E Intrusion event correlator
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
JP5006526B2 (ja) * 2005-05-31 2012-08-22 ルネサスエレクトロニクス株式会社 割り込み分配装置
US20070106827A1 (en) * 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
JP4222370B2 (ja) * 2006-01-11 2009-02-12 セイコーエプソン株式会社 デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US20080082710A1 (en) * 2006-09-29 2008-04-03 Dell Products L.P. System and method for managing system management interrupts in a multiprocessor computer system
US7721034B2 (en) * 2006-09-29 2010-05-18 Dell Products L.P. System and method for managing system management interrupts in a multiprocessor computer system
JP2009515280A (ja) * 2006-11-27 2009-04-09 インテル コーポレイション 中央化された割り込みコントローラ
DE102007015507B4 (de) * 2007-03-30 2010-09-02 Advanced Micro Devices, Inc., Sunnyvale Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb
US8092083B2 (en) * 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8040266B2 (en) * 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
JP2009251802A (ja) * 2008-04-03 2009-10-29 Panasonic Corp マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法
US20100088446A1 (en) * 2008-10-06 2010-04-08 Texas Instruments Incorporated Prioritizing interrupt controller
US7849247B2 (en) * 2008-10-14 2010-12-07 Freescale Semiconductor, Inc. Interrupt controller for accelerated interrupt handling in a data processing system and method thereof
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8312195B2 (en) * 2010-02-18 2012-11-13 Red Hat, Inc. Managing interrupts using a preferred binding between a device generating interrupts and a CPU
JP2012009063A (ja) * 2011-09-05 2012-01-12 Intel Corp 中央化された割り込みコントローラ
JP5710712B2 (ja) * 2013-08-22 2015-04-30 インテル コーポレイション 中央化された割り込みコントローラ
US9563588B1 (en) 2014-01-29 2017-02-07 Google Inc. OS bypass inter-processor interrupt delivery mechanism
US9910700B2 (en) * 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
US10459759B2 (en) 2015-08-26 2019-10-29 Netapp, Inc. Migration between CPU cores
CN111506530A (zh) * 2019-01-30 2020-08-07 智原科技股份有限公司 中断管理系统及其管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01255040A (ja) * 1988-04-04 1989-10-11 Fujitsu Ltd 割込みマスク回路
US5125093A (en) * 1990-08-14 1992-06-23 Nexgen Microsystems Interrupt control for multiprocessor computer system
KR920010581A (ko) * 1990-11-30 1992-06-26 정몽헌 콤팩트 디스크 플레이어에서의 트랙 점프방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940001878B1 (ko) * 1990-03-08 1994-03-10 가부시끼가이샤 히다찌세이사꾸쇼 멀티 프로세서시스템 및 인터럽션 제어장치
US5506997A (en) * 1994-01-28 1996-04-09 Compaq Computer Corp. Device for mapping a set of interrupt signals generated on a first type bus to a set of interrupt signals defined by a second type bus and combing the mapped interrupt signals with a set of interrupt signals of the second type bus
US5530891A (en) * 1994-05-31 1996-06-25 Advanced Micro Devices System management interrupt mechanism within a symmetrical multiprocessing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01255040A (ja) * 1988-04-04 1989-10-11 Fujitsu Ltd 割込みマスク回路
US5125093A (en) * 1990-08-14 1992-06-23 Nexgen Microsystems Interrupt control for multiprocessor computer system
KR920010581A (ko) * 1990-11-30 1992-06-26 정몽헌 콤팩트 디스크 플레이어에서의 트랙 점프방법

Also Published As

Publication number Publication date
EP0737923A1 (en) 1996-10-16
ATE202425T1 (de) 2001-07-15
DE69613423D1 (de) 2001-07-26
DE69613423T2 (de) 2002-05-02
JP3570810B2 (ja) 2004-09-29
JPH0916533A (ja) 1997-01-17
US5721931A (en) 1998-02-24
EP0737923B1 (en) 2001-06-20
KR960035261A (ko) 1996-10-24

Similar Documents

Publication Publication Date Title
KR100399385B1 (ko) 적응성인터럽트맵핑메카니즘및방법을사용하는다중처리시스템
US5555430A (en) Interrupt control architecture for symmetrical multiprocessing system
US5564060A (en) Interrupt handling mechanism to prevent spurious interrupts in a symmetrical multiprocessing system
US5781187A (en) Interrupt transmission via specialized bus cycle within a symmetrical multiprocessing system
US5568649A (en) Interrupt cascading and priority configuration for a symmetrical multiprocessing system
US5530891A (en) System management interrupt mechanism within a symmetrical multiprocessing system
US5613126A (en) Timer tick auto-chaining technique within a symmetrical multiprocessing system
US5862366A (en) System and method for simulating a multiprocessor environment for testing a multiprocessing interrupt controller
EP0685798B1 (en) Interrupt controllers in symmetrical multiprocessing systems
JP2855298B2 (ja) 割込み要求の仲裁方法およびマルチプロセッサシステム
US4737932A (en) Processor
KR100203441B1 (ko) 시스템 버스의 중앙집중화된 중재 제어를 행하는 컴퓨터 시스템 및 멀티프로세서시스템
KR100292660B1 (ko) 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템
US5555420A (en) Multiprocessor programmable interrupt controller system with separate interrupt bus and bus retry management
US5696976A (en) Protocol for interrupt bus arbitration in a multi-processor system
US6385678B2 (en) Method and apparatus for bus arbitration with weighted bandwidth allocation
WO1997044734A1 (en) System and method for testing and debugging a multiprocessing interrupt controller
US20020166018A1 (en) Multiprocessor interrupt handling system and method
US10241946B2 (en) Multi-channel DMA system with command queue structure supporting three DMA modes
JPS60246460A (ja) デジタルコンピユ−タ−システムで交信路の制御を割当てる調停機構
WO2003001388A1 (en) System and method for controlling bus arbitration during cache memory burst cycles
US20060015876A1 (en) Light weight context switching technique
US6629178B1 (en) System and method for controlling bus access for bus agents having varying priorities
US6430640B1 (en) Self-arbitrating, self-granting resource access
US5590338A (en) Combined multiprocessor interrupt controller and interprocessor communication mechanism

Legal Events

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

Payment date: 20100827

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee