KR100457146B1 - 비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐 - Google Patents

비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐 Download PDF

Info

Publication number
KR100457146B1
KR100457146B1 KR10-2001-7006770A KR20017006770A KR100457146B1 KR 100457146 B1 KR100457146 B1 KR 100457146B1 KR 20017006770 A KR20017006770 A KR 20017006770A KR 100457146 B1 KR100457146 B1 KR 100457146B1
Authority
KR
South Korea
Prior art keywords
interrupt
processor
external
node
domains
Prior art date
Application number
KR10-2001-7006770A
Other languages
English (en)
Other versions
KR20010087404A (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 KR20010087404A publication Critical patent/KR20010087404A/ko
Application granted granted Critical
Publication of KR100457146B1 publication Critical patent/KR100457146B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

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

Abstract

비정형 메모리 액세스 컴퓨터 시스템은 노드 상호 연결부에 의해 접속된 적어도 2개의 노드를 포함하는데, 적어도 하나의 노드는 인터럽트를 공급하는 프로세서를 포함하고 있다. 이 노드들을 외부 인터럽트 도메인으로 분할하여 외부 인터럽트는 상기 외부 인터럽트 도메인 내 프로세서에 제공되고, 상기 프로세서에 상기 인터럽트가 발생한다. 각각의 외부 인터럽트 도메인이 통상 한개의 노드만을 포함하고 있더라도, 인터럽트 채널링 또는 인터럽트 퍼넬링은 프리젠테이션을 위한 노드 경계에 따른 외부 인터럽트를 프로세서로 라우트하도록 구현될 수 있다. 일단 프로세서에 제공되면, 소프트웨어는 상기 시스템 내의 프로세서를 실행하여 외부 인터럽트를 서비스할 수 있다. 외부 인터럽트의 서비스를 원할하게 하려면, 종래 기술과 비교할 때 인터럽트 핸들러 폴링 체인의 크기를 축소시켜야 한다. 외부 인터럽트이외에도, 본 발명의 인터럽트 아키텍쳐는 프로세서 상호간 인터럽트(IPI)를 지원하여 프로세서가 상기 시스템에 있는 프로세서 그 자체 또는 하나 이상의 다른 프로세서를 인터럽트하게 할 수 있다. IPI들은 글로벌 시스템 메모리에 있는 메모리 맵핑 레지스터에 기록함으로써 트리거되는데, 글로벌 시스템 메모리는 노드 경계를 따라 IPI의 전송을 용이하게 하고, 하나의 기록 트랜잭션을 인터럽트될 프로세서를 포함하고 있는 각 노드에 전송함으로써 멀티캐스트 IPI가 간단히 트리거될 수 있도록 한다. 또한, 각각의 노드 내에 있는 상기 인터럽트 하드웨어는 공유된 통신 경로를 따라 전달된 인터럽트 트랜잭션을 통해 통신하는 하드웨어 구성 요소로 스케일러빌리티를 위해 분산된다.

Description

비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐{INTERRUPT ARCHITECTURE FOR A NON-UNIFORM MEMORY ACCESS DATA PROCESSING SYSTEM}
컴퓨터 시스템에서는, 종종 인터럽트(interrupts)를 이용하여 프로세서(processor)가 어떤 이벤트(an event)의 발생을 경보하게 하는데, 상기 이벤트는 특수한 핸들링(handling)을 필요로 한다. 상기 인터럽트는, 예컨대 수령 프로세서(recipient processor)로부터 서비스를 요구하거나, 에러 상태(error conditions)를 보고하거나, 장치(devices)간에 간단한 정보를 전달하는데도 이용할 수 있다. 단일 프로세서형 컴퓨터 시스템(uniprocessor computer systems)에서는, 인터럽트를 직접 지원한다. 그 이유는 모든 인터럽트를 단일 프로세서로 다루기 때문이다. 그러나, 멀티프로세서형 컴퓨터 시스템(mutiprocessor computer systems)에서는 상기 인터럽트를 특정한 프로세서 또는 핸들링을 위한 프로세서로 라우트(route)하기 위해 일정 메카니즘을 이용하여야 하기 때문에 복잡도가 증가된다.
종래의 대칭형 멀티프로세서(symmetric multiprocessor;SMP) 컴퓨터 시스템에서는, 인터럽트를 다양한 방법들로 다루는데, 상기 방법들은 하드웨어 및 소프트웨어 메카니즘 모두를 이용하고 있다. 상기 대칭형 멀티프로세서 컴퓨터 시스템은 통상적으로 글로벌 인터럽트 컨트롤러(global interrupt controller)를 사용하고 각각의 프로세서에 의해 실행되는 프로세스의 우선 순위 및 인터럽트의 우선 순위(priority)에 기초하여 인터럽트를 서비스하는 프로세스를 선택한다. 따라서, 상기 인터럽트 컨트롤러는 인터럽트의 우선 순위와 프로세서로 실행되는 프로세스의 우선 순위를 비교하여, 상기 인터럽트보다 낮은 우선 순위를 갖는 프로세스를 실행하고 있는 프로세서를 서비스 프로세서(servicing processor)로 선택한다. 대칭형 멀티프로세서에 있는 프로세서들은 상대적으로 타이트하게(tightly) 접속되어 있기 때문에, 상기 서비스 프로세서에 대한 상기 인터럽트의 라우팅과 프로세스 우선 순위의 결정은 공유 시스템의 상호 연결부(shared system interconnect) 또는 전용 인터럽트 라인(dedicated interrupt lines)을 이용하여 용이하게 달성될 수 있다.
최근, 비정형 메모리 액세스(NUMA)라 불리는 멀티프로세서 컴퓨터 시스템 토폴러지(topology)가 부상하고 있다. 전형적인 비정형 메모리 액세스 컴퓨터 시스템은 하이 레이턴시 노드 상호 연결부(a high latency node interconnect)를 구비할 수 있는데, 상기 상호 연결부는 수개의 멀티프로세서 노드들에 접속되며, 상기 각각의 멀티프로세서 노드는 로컬 시스템 메모리(local system memory)를 구비한다. 상기 비정형 메모리 액세스 컴퓨터 시스템에 있는 복수 개의 프로세서는 타이트하게 접속되어 있지 않기 때문에, 종래의 대칭형 멀티프로세서 인터럽트 서비스 및 통신 메카니즘을 비정형 메모리 액세스 컴퓨터 시스템에 직접 적용할 수 없다. 따라서, 비정형 메모리 액세스 컴퓨터 시스템에는 인터럽트 라우팅 및 통신을 위한 효율적인 메카니즘을 제공하는 인터럽트 핸들링 메카니즘(interrupt handling mechanism)이 필요하다는 것이 명백하다.
본 발명은 데이터 프로세싱(data processing)에 관한 것으로, 특히 비정형 메모리 액세스(Non-Uniform Memory Access;NUMA) 데이터 프로세싱 시스템에서의 데이터 프로세싱에 관한 것이다. 더욱 구체적으로 말하면, 본 발명은 비정형 메모리 액세스(NUMA) 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐에 관한 것이다.
도 1은 본 발명에 따른 비정형 메모리 액세스 컴퓨터 시스템의 구체적인 실시예를 도시한 도면.
도 2는 도 1에 도시한 비정형 메모리 액세스 컴퓨터 시스템으로 이용할 수 있는 물리적 메모리 맵의 실시예를 도시한 도면.
도 3a는 본 발명에 따른 인터럽트 소스 유닛(ISU) 내의 인터럽트 소스 구성 레지스터의 실시예를 도시한 도면.도 3b는 본 발명에 따른 인터럽트 소스 유닛(ISU) 내의 펜딩 인터럽트 레지스터의 실시예를 도시한 도면.
도 4는 본 발명에 따른 인터럽트 수신 유닛(IDU)의 상세 블럭도.
도 5는 본 발명에 따른 인터럽트 소스 유닛의 동작을 도시한 상위 레벨 논리 흐름도.
도 6은 본 발명에 따른 인터럽트 수신 유닛의 동작을 도시한 상위 레벨 논리 흐름도.
도 7은 본 발명에 따른 인터럽트 리소스를 구성하는 구성 루틴의 실시예를 도시한 상위 레벨 논리 흐름도.
도 8은 본 발명에 따른 제1 레벨 인터럽트 핸들러(FLIH) 소프트웨어의 동작을 도시한 상위 레벨 논리 흐름도.
비정형 메모리 액세스(NUMA) 컴퓨터 시스템은 노드 상호 연결부(a node interconnect)에 의해 접속되는 적어도 2개의 노드를 포함하고 있는데, 적어도 하나의 노드는 인터럽트를 서비스하기 위한 프로세서를 포함한다. 본 발명에 따라, 비정형 메모리 액세스 컴퓨터 시스템(하드웨어 및 소프트웨어 구성 요소 모두를 포함함)의 인터럽트 아키텍쳐(interrupt architecture)는 상기 비정형 메모리 액세스 컴퓨터 시스템을 외부 인터럽트 도메인(external interrupt domains)으로 분할하여 외부 인터럽트를 상기 인터럽트가 발생하고 있는 상기 외부 인터럽트 도메인 내의 프로세서에 항상 공급한다. 통상적으로, 각각의 외부 인터럽트 도메인이 한 개의 노드(a single node)만을 구비하고 있더라도, 인터럽트 채널링(interrupt channelling) 또는 인터럽트 퍼넬링(interrupt funnelling)은 프로세서에 제공하기 위하여 외부 인터럽트를 노드 경계 맞은 편으로 라우트하도록 구현될 수 있다.
일단 프로세서에 공급되면, 인터럽트 핸들링 소프트웨어(interrupt handling software)는 상기 시스템 내의 임의의 프로세서를 실행하여 외부 인터럽트를 서비스할 수 있다. 본 발명의 인터럽트 아키텍쳐는 인터럽트 핸들링 소프트웨어를 인에이블하여 외부 인터럽트의 서비스를 원할하게 하여 종래 기술과 비교할 때 인터럽트 핸들러 폴링 체인(트리)[interrupt handler polling chain(tree)]의 크기를 축소할 수 있는 장점이 있다.
외부 인터럽트이외에도, 본 발명의 인터럽트 아키텍쳐는 프로세서 상호간 인터럽트(Inter-Processor Interrupts;IPI)를 지원하여 임의의 프로세서가 상기 NUMA 컴퓨터 시스템에 있는 프로세서 그 자체 또는 하나 이상의 다른 프로세서를 인터럽트하게 할 수 있다. 상기 IPI는 글로벌 시스템 메모리(global system memory)에 있는 메모리 맵핑 레지스터(memory mapped registers)에 기록함으로써 트리거되며, 이는 노드 경계를 따라 IPI의 전송을 용이하게 하고 기록 트랜잭션을 인터럽트될 프로세서를 포함하고 있는 각 노드에 전송함으로써 멀티캐스트 IPI가 간단히 트리거되도록 한다.
본 발명의 인터럽트 아키텍쳐는 수개의 노드를 포함한 소형 비정형 메모리 액세스 컴퓨터 시스템으로부터 수백 개의 노드를 포함한 대형 시스템까지 스케일에 따라 구비되어 있다. 또한, 각각의 노드 내에 있는 상기 인터럽트 하드웨어는 공유된 통신 경로(즉, 로컬 버스 및 상호 연결)를 따라 전달된 인터럽트 트랜잭션을 통하여 하드웨어 구성 요소들이 통신하는 동안 스케일러빌리티(scalability)를 위해 분산된다.
본 발명은 첨부한 도면을 기준으로 일례를 들어 설명하기로 한다.
1.0 비정형 메모리 액세스 컴퓨터 시스템 개요
도 1은 본 발명에 따른 비정형 메모리 액세스 컴퓨터 시스템(NUMA computer system)의 구체적인 실시예를 도시한 도면이다. 이 실시예는, 예컨대 워크스테이션, 서버 또는 메인프레임 컴퓨터로 구현할 수 있다. 도시한 바와 같이, 비정형 메모리 액세스 컴퓨터 시스템(6)은 다수(N≥2)의 프로세싱 노드(8a-8n)를 구비하고 있는데, 상기 프로세싱 노드들은 노드 연결부(22)로 상호 연결되어 있다. 상기 프로세싱 노드(8a-8n) 각각에는 M개(M≥0)의 프로세서(10)가 포함되어 있다. 상기 프로세서(10a-10m)들은, 상기 프로세싱 노드 내에 있을 경우 동일한 것이 바람직하고, 프로세서들 중 PowerPC 라인 내에 있는 프로세서는 뉴욕 아몬크에 소재하는 인터내셔널 비지니스 머신즈(IBM) 회사에서 만든 것으로 구성할 수 있다(PowerPC는 IBM 회사의 상표명이다). 레지스터(registers)외에도, 명령어 흐름 로직(instruction flow logic) 및 실행 유닛(execution units)를 이용하여 프로그램 명령어를 실행하는데, 상기 프로그램 명령어는 프로세서 코어(12)로서 일괄 지정되고, 또한 각각의 프로세서(10a-10m)들은 시스템 메모리(18)로부터 해당 프로세서 코어(12)로 데이터를 보내기 위하여 이용되는 온칩 캐쉬 계층 구조(on-chip cache hierarchy)(14)를 포함한다. 각각의 캐시 계층 구조(14)는, 예컨대 레벨 1(L1) 캐시 및 레벨 2(L2) 캐시를 각각 포함하며, 상기 레벨 1(L1) 캐시 및 레벨 2(L2) 캐시는 각각 8∼32 킬로바이트(kB) 및 1∼16 메가바이트(MB) 사이의 저장 용량을 가질 수 있다. 각 시스템 메모리(18) 내에 저장된 데이터가 비정형 메모리 액세스 컴퓨터 시스템(6)내에 있는 임의의 프로세서(10)에 의해 요구되고 액세스되고 수정될 수 있기 때문에, 상기 비정형 메모리 액세스 컴퓨터 시스템(6)은 캐시 코히어런시 프로토콜(cache coherency protocol)[예컨대, 수정, 배제, 공유, 무효(Modified, Exclusive, Shared, Invalid;MESI) 또는 이들의 변동]을 구현하여 동일한 프로세싱 노드에서의 캐시간과, 상이한 프로세싱 노드에서의 캐시간 모두가 코히어런시(coherency)를 유지하도록 하는 것이 바람직하다.
도시한 바와 같이, 프로세싱 노드(8a-8n)는 각각 노드 컨트롤러(node controller)(20)를 더 포함하며, 상기 노드 컨트롤러는 로컬 상호 연결부(local interconnect)(16) 및 노드 상호 연결부(node interconnect)(22) 사이에 접속된다. 각 노드 컨트롤러(20)는 적어도 2개의 기능을 수행함으로써 프로세싱 노드(8)를 원격 조정하기 위한 로컬 에이젼트(local agent)로서 기능한다. 첫째, 각 노드 컨트롤러(20)는 해당 로컬 상호 연결부(16)를 스누프(snoop)하고, 로컬 통신 트랜잭션(local communication transactions)의 전송을 용이하게 하여 프로세싱 노드(8)를 원격 조정한다. 둘째, 각 노드 컨트롤러(20)는 노드 상호 연결부(22)의 통신 트랜잭션을 스누프하고, 상기 해당 로컬 상호 연결부(16)의 해당 통신 트랜잭션을 마스터(master)한다. 각 로컬 상호 연결부(16)의 통신은 중재기(arbiters)(24)로 컨트롤한다. 상기 중재기(24)는 상기 프로세서(10)에 의해 생성된 버스 요구 신호를 토대로 로컬 상호 연결부(16)에 액세스하는 것을 조정하고, 로컬 상호 연결부(16)의 스누프된 통신 트랜잭션을 위해 코히어런시 응답을 컴파일한다.
비정형 메모리 액세스 컴퓨터 시스템(6)의 각 시스템 메모리(18)에 대한 액세스를 각각의 메모리 컨트롤러(Memory Controller;MC;17)로 조정한다. 프로세서(10a-10m), 노드 컨트롤러(20) 및 그 프로세싱 노드(8)의 다른 장치에 의해 생성된 판독 및 기록 요구를 수신하고 서비스하는 회로이외에도, 각각의 메모리 컨트롤러(17)는 인터럽트 수신 유닛(Interrupt Destination Unit;IDU;19)를 포함하는데, 후술하는 바와 같이, 상기 인터럽트 수신 유닛은 다수의 레지스터 및 관련 로직을 포함하여 인터럽트의 라우팅 및 핸들링을 용이하게 한다.
로컬 상호 연결부(16)를 메자닌 버스 브리지(mezzanine bus bridge)(26)를 통해 메자닌 버스(30)에 접속하고, 상기 메자닌 버스는, 예컨대 PCI(Peripheral Component Interconnect)의 로컬 버스로서 구현할 수 있다. 메자닌 버스 브리지(26)는 프로세서(10)를 통해 로우 레이턴시 경로(a low latency path)와 상위 밴드폭 경로(a high bandwidth path)를 제공하는데, 상기 로우 레이턴시 경로를 통해서는 상기 프로세서(10)가 버스 메모리 및/또는 I/O 어드레스 공간과 대응하는 I/O 장치(32) 및 저장 장치(34) 사이의 장치들에 직접 액세스할 수 있고, 또한 상기 상위 밴드폭 경로를 통해서는 I/O 장치(32) 및 저장 장치(34)가 시스템 메모리(18)에 액세스할 수 있다. I/O 장치(32)는, 예컨대 디스플레이 장치(display device), 키보드(keyboard), 그래픽 포인터(graphical pointer)와 외부 네트워크(external networks) 또는 부속 장치(attached devices)로 연결하기 위한 직렬 및 병렬 포트(serial and parallel ports)를 포함할 수 있다. 한편, 저장 장치(34)는 광 디스크 또는 자기 디스크를 포함하는데, 이 디스크들은 오퍼레이팅 시스템 및 응용 소프트웨어를 위한 비휘발성 기억 장치(non-volatile storage)를 제공할 수 있다.
I/O 장치(32) 및 저장 장치(34)[뿐만 아니라 비정형 메모리 액세스 컴퓨터 시스템(6)의 다른 비프로세서(non-processor) 구성 요소] 모두는 여러 가지 목적으로 인터럽트를 생성할 수 있는데, 상기 목적들에는 인터럽트 요구 라인(interrupt request lines)(35)을 통한 입력 수신의 시그널링, 에러 상태의 보고 등이 포함되어 있다. 이들 인터럽트는, 이하에서 외부 인터럽트(external interrupt)라고 부르고 있는데, 이것은 상기 인터럽트를 프로세서(10)와 다른 구성 요소로 생성하였음을 표시하며, 상기 인터럽트는 하나 이상의 인터럽트 소스 유닛(Interrupt Source Unit;ISU;28a, 28b)에 의해 수집된다. 도 1에는 명료성을 위해 분리하여 도시하였지만, 상기 ISU(28a, 28b)는 메자닌 버스 브리지(26)를 형성하는 칩세트에 양자 택일로 집적화될 수 있다. 후술하는 바와 같이, ISU(28)는 상기 외부 인터럽트를 IDU(19)로 라우트하며, 인터럽트 요구 라인(36)을 통해 외부 인터럽트 및 다른 인터럽트를, 서비스를 위하여 로컬 프로세서(10)에 차례로 공급한다.
로컬 상호 연결부(16) 및 노드 상호 연결부(22)는 버스 기반 브로드캐스트 패브릭(bus-based broadcast fabric), 스위치 기반 브로드캐스트 패브릭(switch-based broadcast fabric), 스위치 기반 비 브로드캐스트 패브릭(switch-based non-broadcast fabric), 또는 버스 및 스위치 기반 구성 요소를 모두 포함하는 하이브리드 상호 연결 아키텍쳐(hybrid interconnect architecture)로 각각 구현될 수 있다. 어떠한 상호 연결 아키텍쳐가 사용되는지에 관계없이, 로컬 상호 연결부(16) 및 노드 상호 연결부(22)는 분리 트랜잭션(split transaction)을 지원하는 것이 바람직하며, 이는 어드레스의 타이밍과 통신 트랜잭션(communication transaction)의 데이터 일부분이 서로 무관하다(independent)는 것을 의미한다. 어드레스 및 데이터 보유 기간(data tenures)이 각 통신 트랜잭션에 속하는 지를 식별하기 위해, 어드레스 및 데이터 패킷(data packets) 모두를 트랜잭션으로 형성하고, 상기 어드레스 및 데이터 패킷을 동일한 트랜잭션 태그로 모두 마크하는 것이 바람직하다.
각 프로세서(10) 및 각각의 다른 장치를 로컬 상호 연결부(16)에 접속하여, 비정형 메모리 액세스 컴퓨터 시스템(6) 전체에 걸쳐 유일하게 식별하는 것이 바람직하며, 이 식별은 상기 장치가 상기 장치의 로컬 ID와 함께 상주하는 프로세싱 노드(8)의 노드 ID를 연계하여 형성된 시스템-와이드 장치(system-wide device) ID에 의해 이루어진다. 예컨대, 최대 4개의 프로세싱 노드(8)가 있고, 많아야 최대 8개의 장치가 각각의 로컬 상호 연결부(16)에 접속될 수 있는 일례에서는, 5 비트 장치 ID가 이용될 수 있으며, 상기 ID는 노드 ID용 2개의 상위 비트(high order bit)와 장치의 로컬 ID용 3개의 하위 비트(low order bit)로 구성된다. 각각의 노드 ID는 해당 노드 컨트롤러(20) 내의 레지스터에서 유지되는 것이 바람직하고, 상기 로컬 ID는 로컬 상호 연결부(16)에 접속된 각 장치 내의 장치 식별 레지스터(identification registers)에서 유지되는 것이 바람직하다. 각각의 시스템-와이드 장치 ID는 해당 장치에 의해 생성된 각각의 트랜잭션 태그의 상위 비트 일부로 이용될 수 있고, 비정형 메모리 액세스 컴퓨터 시스템(6) 전체에 걸쳐 트랜잭션 태그의 유일성이 보장되는 장점이 있다.
1.1 물리적 메모리 맵(Physical Memory Map)
도 2는, 물리적 메모리 맵의 일례를 도시하고 있는데, 상기 물리적 메모리 맵은 각각 시스템 메모리(18)를 포함하는 4개의 프로세싱 노드(8)를 가진 비정형 메모리 액세스 컴퓨터 시스템(6)의 실시예로 이용될 수 있다. 도 2에 도시한 실시예에서는, 비정형 메모리 액세스 컴퓨터 시스템(6)에 있는 모든 장치가 단일 16 기가바이트(GB) 물리적 어드레스 공간(physical address space)(50)을 공유하고 있는데, 상기 어드레스 공간은 범용 메모리 영역(general purpose memory area)(52)과 시스템 컨트롤 및 주변 영역(system control and peripheral areas)(54)을 포함하고 있다. 상기 범용 메모리 영역(52)에 있는 각각의 물리적 어드레스는 시스템 메모리(18) 중 하나에 있는 단일 물리적 위치에만 연관된다. 따라서, 범용 메모리 영역(52)의 전체 콘텐츠는 일반적으로 비정형 메모리 액세스 컴퓨터 시스템(6)에 있는 임의의 프로세서(10)를 통해 액세스될 수 있고, 상기 콘텐츠는 전체 시스템 메모리(18)간에 분할되어 있는 것을 볼 수 있다. 상기 실시예에서는, 범용 메모리 영역(52)을 512 MB 세그먼트로 분할하고, 4개의 프로세싱 노드(8) 각각에 1/4 세그먼트를 할당하고 있다. 상기 프로세싱 노드(8)는 시스템 메모리(18)에 특수한 데이터들을 저장하고 있는데, 이 데이터를 저장한 프로세싱 노드는 그 데이터를 위한 홈 노드(home node)가 되지만, 반대로 다른 프로세싱 노드(8a-8n)는 상기 특수한 데이터에 대해 원격 노드(remote nodes)가 된다고 말할 수 있다.
다시 도 2를 참조하면, 상기 실시예에서 2 GB의 물리적 어드레스를 포함하고 있는 시스템 컨트롤 및 주변 영역(54)은 256 MB 시스템 컨트롤 영역(56), 0.5 GB 주변 I/O 공간(58), 1 GB 주변 메모리 공간(60) 및 초기 프로그램 로드(Initial Program Load;IPL) 영역(62)을 포함한다. 상기 IPL 영역(62)은 IPL(즉, 부트) 코드를 256 MB까지 할당하기 위해 마련된 어드레스를 포함하고 있는데, 상기 코드는 통상 ROM(read-only memory)에 저장된다. 이 IPL 코드는 예컨대 IBM 회사에서 사용하고 있는 AIX(Advanced Interactive Executive;AIX)와 같은 오퍼레이팅 시스템용 로더(loader)를 포함할 것이다. 도시한 바와 같이, 주변 I/O 공간(58)에 있는 0.5 GB를 균일한 크기의 세그먼트들(62)로 나누어 각각의 프로세싱 노드(8) 중 하나에 할당한다. 마찬가지로, 주변 메모리 영역(60)을 균일한 크기 256 MB 세그먼트(66)로 분할하여 특수한 프로세싱 노드(8)에 각각 할당한다.
주변 I/O 공간(58) 및 주변 메모리 공간(60)처럼, 시스템 컨트롤 영역(56)에 있는 물리적 메모리 공간은 복수 개의 세그먼트(70)를 포함하고 있는데, 각 세그먼트는 각각의 프로세싱 노드(8)와 연관되어 있다. 상기 실시예에서, 각 세그먼트(70)는 64 MB의 어드레스 공간을 포함하고 있다. 다른 퍼-노드 컨트롤 정보(per-node control information)를 저장하고자 하는 어드레스이외에도, 각각의 시스템 컨트롤 영역 세그먼트(70)는 해당 프로세싱 노드(8)에서 IDU(19) 및 ISU(28) 내의 레지스터를 인터럽트하도록 할당된 물리적인 어드레스를 포함한다. 후술하는 바와 같이, 본 발명에서 사용되고 있는 메모리 맵핑 레지스터들은 외부 인터럽트를 수신하여 라우트하고, 프로세서 상호간 인터럽트를 호출하여, 프로세싱 노드(8) 간의 인터럽트를 라우트한다.
2.0 인터럽트 아키텍쳐(Interrupt Architecture) 개요
본 발명의 인터럽트 아키텍쳐는 인터럽트를 적어도 3개의 명확한 유형으로 구분한다. 첫째로, 프로세서의 내부 동작으로 트리거(trigger)되는 내부 인터럽트(internal interrupts)가 있다. 상기 내부 인터럽트들은, 예컨대 내부 프로세서 레지스터(internal processor register)의 프로그램 예외(program exception) 또는 오버플로우/언더플로우(overflow/underflow)로 트리거될 수 있다. 둘째로, 전술한 바와 같이, 외부 인터럽트(exteranl interrupts)는 장치(devices)에 의해 생성될 수 있는데, 상기 장치는 프로세서 외부에 있는 장치, 예컨대 I/O 장치 및 시스템 타이머이다. 세째로, 본 발명도 프로세서 상호간 인터럽트(IPI)를 지원하는데, 상기 프로세서 상호간 인터럽트는 제1 프로세서로 생성되어 제2 프로세서를 인터럽트한다.
본 발명의 바람직한 실시예는, 비정형 메모리 액세스 프로세싱 시스템(6)이 인터럽트 아키텍쳐를 통해 외부 및 IPI용 인터럽트 지원(interrupt support)을 제공하고, 상기 인터럽트 아키텍쳐는 OpenPIC(Open Processor Interrupt Controller) 기준의 확장이고 이와 호환성이 있다. 상기 OpenPIC는, 예컨대 1995년 10월,Open Programmable Interrupt Controller(PIC) Register Interface Specification Revision 1.2에 기재되어 본 명세서에 인용 문헌으로 포함되어 있는데, Advanced Micro Devices, Inc 및 Cyrix,Inc가 공동으로 발표하였다. OpenPIC 호환성이 있는 것이 바람직하지만, 본 발명은 시스템 전체에 걸쳐 유일한 메모리 맵핑 인터럽트 컨트롤 레지스터(memory mapped interrupt control registers)를 갖는 시스템에 적용할 수 있다.
본 발명의 인터럽트 아키텍쳐에는 후술하고 있는 하드웨어 및 소프트웨어 구성 요소 모두가 포함되어 있다.
2.1 인터럽트 아키텍쳐 하드웨어(Interrupt Architecture Hardware)
통상 글로벌 인터럽트 컨트롤러(global interrupt controller)를 이용하여, 단일 인터럽트 도메인을 제공하는 종래의 OpenPIC 및 다른 대칭형 멀티프로세서 인터럽트 장치(implementations)와는 대조적으로, 비정형 메모리 액세스 컴퓨터 시스템(6)의 각 프로세싱 노드(8)는 그 자체의 외부 인터럽트 도메인을 형성하는 것이 바람직하며, 상기 각각의 외부 인터럽트 도메인은 도 1에 도시한 바와 같이 그 자체의 각 IDU(19) 및 하나 이상의 ISU(28)를 갖는다. ISU(28)는 인터럽트 소스용 인터럽트 시스템에 인터페이스를 제공하며, IDU(19)는 인터럽트 시스템 및 프로세서(10) 간에 인터페이스를 제공한다. 인터럽트의 효율적인 핸들링을 촉진하고 인터럽트 도메인 간에 인터럽트의 통신을 최소화하기 위해, ISU(28)로 수신된 외부 인터럽트는 로컬 상호 연결부(16)를 따라 전송된 인터럽트 패킷을 이용하여[및 메자닌 버스(30), 장치에 의존하여] 동일한 인터럽트 도메인[즉, 프로세싱 노드(8)] 내 IDU(19)로만 통신하는데, 이 경우에는 상기 프로세싱 노드(8)를 인터럽트를 서비스하도록 구성된 프로세서(10)에 설치한다. 그러나, 구성 정보(configuration information)의 통신, 프로세서 상호간 인터럽트, 인터럽트 인식(interrupt acknowledgements), 인터럽트 커맨드(interrupt commands)의 종료 및 인터럽트 도메인 간의 다른 인터럽트 관련 정보를 IDU(19)에 있는 메모리 맵핑 레지스터를 통해 지원함으로써, 각 프로세싱 노드(8)에서 인터럽트 리소스를 광범위하게 이용할 수 있는 시스템이 가능하다.
2.1.1. 인터럽트 소스 유닛(Interrupt Source Unit;ISU) 구성 요소
도 3a 및 도 3b는, 각각의 인터럽트 소스 유닛(ISU;28)에 있는 인터럽트 소스 구성 레지스터(interrupt source conconfiguration register) 및 인터럽트 펜딩 레지스터(interrupt pending register)의 실시예를 각각 도시하고 있다. 각각의 ISU(28)는 인터럽트 소스당 적어도 하나의 인터럽트 소스 구성 레지스터(72) 및 그 ISU(28)에 의해 지원된 모든 인터럽트 소스를 위한 하나의 인터럽트 펜딩 레지스터(82)를 포함하는 것이 바람직하다.
먼저 도 3a를 참조하면, 각각의 인터럽트 소스 구성 레지스터(72)에는 해당 인터럽트 소스를 위한 인터럽트 벡터(interrupt vector)를 식별하는 벡터 필드(vector field)(73)와, 상기 인터럽트 벡터를 식별하기 위해 추가되는 비트를 저장할 수 있는 인터럽트 벡터 예비 필드(interrupt vector reserved field)(74)와, 해당 인터럽트 소스로 생성된 인터럽트의 우선 순위를 표시하는 우선 순위 필드(priority field)(75)가 포함되어 있다. 상기 실시예에서는, 인터럽트 우선 순위가 최하위 우선 순위인 영으로부터 최상위 우선 순위인 15까지 범위에 있다. 인터럽트 리소스는 각각의 인터럽트 도메인 내에서 유일한 것이 바람직하다. 따라서, 각각의 인터럽트 도메인은 한 개의 레벨 1 인터럽트만을 가지는 것이 바람직하지만, 비정형 메모리 액세스 컴퓨터 시스템(6)에서는 N 개의 레벨 1 인터럽트까지 있을 수 있다. 물론, 종래 기술에서는 인터럽트를 공유할 수 있어, 단일 프로세싱 노드(8) 내에 있는 다수의 인터럽트 소스는 동일한 인터럽트 레벨을 공유하고 있다.
인터럽트 소스 구성 레지스터(72)는 2 개의 예비 필드(76 및 79)와, 인터럽트 신호가 에지 트리거(edge triggered)인지 레벨 트리거(level triggered)인지를 표시하는 감지 비트(sense bit)(77)와, 인터럽트가 저활성(active low)(또는 부의 에지(negative edge))인지 고활성(active high)(또는 정의 에지(positive edge))인지 여부를 표시하는 극성 비트(polarity bit)(78)와, 벡터 필드(73) 및 우선 순위 필드(75)가 사용 중이라 수정될 수 없는지 여부를 표지하는 활성도(ACT) 비트(80)와, 해당 인터럽트 소스로 생성된 인터럽트의 수령을 ISU(28)에 의해 인에이블/디스에이블(enable/disable)하는 마스크(MSK) 필드(81)를 더 포함하고 있다. 따라서, 인터럽트 요구 라인을 통해 특수한 인터럽트 소스로부터 인터럽트를 수령하면, ISU(28)는 적합한 인터럽트 소스 구성 레지스터(72)를 참조하여, 인터럽트 소스를 위한 인터럽트의 인에이블 및 우선 순위와, 인터럽트와 관련된 인터럽트 벡터를 위한 식별자를 결정할 수 있다.
외부 인터럽트가 ISU(28)에 의해 수신되고 적격화(qualify)되면, 상기 ISU(28)는 도 3b의 펜딩 레지스터(82) 내에 하나의 비트를 설정한다. 상기 비트는 인터럽트 소스와 유일하게 관련되는데, 이것은 인터럽트 소스가 펜딩 인터럽트를 가짐을 의미한다. 따라서, 도 3b에 도시한 실시예에서는, 각각의 ISU(28)가 최대 16개의 인터럽트 소스를 지원할 수 있다.
2.1.2 인터럽트 수신 유닛(Interrupt Destination Unit;IDU) 구성 요소
도 4는 프로세싱 노드(8)의 메모리 컨트롤러(17)에 있는 IDU(19)의 세부 블럭도를 도시하고 있다. 상기 IDU(19)는 OpenPIC 호환형(OpenPIC-compliant)이며, 3개의 개별 레지스터 공간, 글로벌 레지스터(global registers)(90), 퍼-프로세서 레지스터(per-processor registers)(92) 및 프로세서 상호간 인터럽트(IPI) 커맨드 레지스터(133)를 포함하고 있으며, 이들은 글로벌 구성 레지스터(102) 내에 규정된 베이스 어드레스(base addresses)로부터 OpenPIC 정의 오프셋(OpenPIC-defined offset)에 있는 프로세싱 노드의 시스템 컨트롤 영역 세그먼트(70) 내에 각각 놓여진다. 어드레싱(addressing)을 단순화하기 위해, 상기 베이스 어드레스 및 프로세싱 노드의 시스템 영역 세그먼트(70) 시작부 사이의 오프셋은 모든 IDU(19)에 대해 동일한 것이 바람직하다. 예컨대, 비정형 메모리 액세스 컴퓨터 시스템(6)의 실시예에서는, 4 개의 프로세싱 노드를 포함하며, 이들 노드 각각은 4개의 프로세서(10)를 포함하고, 이들 모두가 16 GB 물리적 메모리 공간을 공유하고 있는데, 어드레스 비트(30-63)는 A30..A63 0E0000000h-0EFFFFFFFh에 상주하고 있는 시스템 컨트롤 영역(56)으로 000000000h-3FFFFFFFFh 범위까지 정의될 수 있다. 프로세싱 노드(8)에 할당된 노드 번호가 b00-b11 사이의 범위에 있는 노드 번호를 갖는 A36..A37로 정의되는 경우, 노드 번호 b01를 갖는 프로세싱 노드(8)의 시스템 컨트롤 영역 세그먼트(70)는 A30..A63 0E4000000h-0E4FFFFFFh에 위치된다. 모든 시스템 컨트롤 영역 세그먼트(70) 내에서는, 상기 IDU(19)에 있는 레지스터의 베이스 어드레스를 공통적인 임의의 오프셋, 예컨대 000C000h에 배치한다. 따라서, 노드 번호 b01 내에 있는 IDU(19)의 레지스터의 베이스 어드레스는 0E4000000h에 000C00000h를 더하여 0E4C00000h를 산출함으로써 획득될 수 있다. 그 후 노드 번호 b01의 IDU(19) 내에 있는 개개의 레지스터 공간 및 레지스터를 다음과 같은 OpenPIC 정의 오프셋을 이용하여 어드레스할 수 있다.
220000h = 노드 b01에서 글로벌 구성 레지스터(102)로 규정한 베이스어드레스로부터 프로세서 b10의 퍼-프로세서 레지스터(120)까지의 OpenPIC 아키텍트 오프셋
+ 0E4C00000h = 노드 번호 b01의 IDU(19)에 있는 레지스터의 베이스 물리적 어드레스
0E4C220000h = 노드 번호 b01에서 프로세서 b10의 퍼-프로세서
레지스터(120)의 물리적 어드레스0040h = 퍼-프로세서 레지스터(120)로부터 IPI 커맨드 포트 0까지의 OpenPIC 아키텍트 오프셋
+ 0E4C220000h = 노드 번호 b01에서 프로세서 b10의 퍼-프로세서
레지스터(120)의 물리적 어드레스
0E4C220040h = 노드 번호 b01에서 프로세서 b10의 퍼-프로세서
레지스터(120)의 물리적 어드레스
도 4에 도시한 바와 같이, 각각의 IDU(19)에 있는 글로벌 레지스터(90)는 판독 및 기록 특징 보고 레지스터(read-and-write feature reporting register) (100), 판독 및 기록 글로벌 구성 레지스터(read-and-write global configuration register)(102), 판독 전용 벤더 식별 레지스터(read-only vendor identification register)(104), 각각의 IPI 커맨드 포트(후술함)를 위한 하나의 판독 및 기록 프로세서 상호간 인터럽트(IPI) 벡터 레지스터(read-and-write interprocessor interrrupt vector register)(106), 판독 및 기록 의사 벡터 레지스터(read-and-write spurious vector register)(108) 및 판독 및 기록 프로세서 초기화 레지스터(read-and-write processor initialization register)(110)를 포함하고 있다. 글로벌 레지스터(90)는 OpenPIC 정의되고 다음과 같은 정보를 포함하고 있다.
특징 보고 레지스터(100) : 프로세싱 노드에 있는 IPL 코드에 의해 검출된 인터럽트 소스의 총수 및 이 프로세싱 노드용으로 지원된 프로세서의 총수
글로벌 구성 레지스터(102) : 프로세싱 노드용 글로벌 레지스터 공간의 베이스 어드레스
벤더 식별 레지스터(104) : IDU(19) 및 개정 레벨을 포함한 집적 회로 칩의 벤더를 식별함
IPI 벡터 레지스터(106) : 프로세싱 노드에 있는 각각의 IPI 레지스터용 벡터 및 우선 순위 정보
의사 벡터 레지스터(108) : 인터럽트 인식이 프로세서로부터 수신되는 경우와 프로세서용 펜딩 인터럽트가 없는 경우에 반환되는 벡터
프로세서 초기화 레지스터(110) : 프로세싱 노드에서 지원된 각각의 프로세서용 소프트웨어 리셋 신호
글로벌 레지스터(90)를 비정형 메모리 액세스 컴퓨터 시스템(6)에 있는 모든 프로세서(10)가 공유하기 때문에, AIX 오퍼레이팅 시스템의 PAL층에서 소프트웨어 인터럽트 설정 및 핸들링 루틴을 이용하여 모든 프로세싱 노드(8a-8n)에 있는 글로벌 레지스터(90)간에 일관성을 유지한다. 프로세서 초기화 레지스터(110) 외의 다른 기록 인에이블된 레지스터에 대한 업데이트는 로컬 상호 연결부(16)의 N개의 개별 기록 트랜잭션을 초기화하는 프로세서(10)에 의해 수행된다. 로컬 IDU(19)를 타겟팅하는 기록 트랜잭션은 로컬 메모리 컨트롤러(17)에 의해 수신되어 서비스된다. 상기 기록 트랜잭션의 나머지는 로컬 노드 컨트롤러(20)를 사용하여 다른 프로세싱 노드(8)의 노드 컨트롤러(20)에 전달 되는데, 로컬 상호 연결부(16)를 통해 해당 IDU(19)에 기록 트랜잭션을 차례로 공급한다. 글로벌 레지스터(90)로의 액세스를 글로벌 소프트웨어 락(global software lock)에 의해 조정하여, 하나의 프로세서(10)만이 적시에 글로벌 레지스터(90)의 업데이트를 보장한다. 글로벌 레지스터(90)에 대한 업데이트 동안, 모든 인터럽트를 각각의 프로세싱 노드(8)에서 업데이트가 수행될 때까지 차단하여 인터럽트가 사소한 설정으로 발행되는 것을 피할 수 있다. 글로벌 레지스터(90)로부터 값(value)의 로드(load)는 글로벌 레지스터(90)의 로컬 카피에 대한 판독을 계속적으로 단순히 수행하여 모든 글로벌 레지스터(90)가 동기화된다.
다시 도 4를 참조하면, 퍼-프로세서 레지스터(92)는 프로세싱 노드(8)에 의해 지원될 수 있는 각 프로세서(10)에 의해 하나씩 M개의 레지스터 세트(120)를 포함하고 있다. 또한, 퍼-프로세서 레지스터(92)는 OpenPIC로 정의되고, 각각의 레지스터 세트(120)는 판독 및 기록 현행 작업 우선 순위 레지스터(read-and-write current task priority register)(122), 판독 전용 인터럽트 인식 레지스터(read-only interrupt acknowledge register)(124) 및 판독 전용 인터럽트 종료 레지스터[(read-only end of interrupt(EOI) register](126)를 포함하고 있다. 특정한 프로세서를 위한 상기 레지스터 세트(120)는 베이스 어드레스를 이용하여 배치할 수 있으며, 상기 베이스 어드레스는 전술한 바와 같이 글로벌 구성 레지스터(102), 프로세서 ID 및 OpenPIC 아키텍트 오프셋에 포함되어 있다. 퍼-프로세서 레지스터(120)는 다음과 같은 기능을 제공한다.
현행 작업 우선 순위 레지스터(122) : 인터럽트가 공급되지 않는 경우, 현행 작업의 상대적인 작업 우선 순위를 표시함. 인터럽트를 프로세서에 발행하기 위해, 상기 인터럽트 우선 순위는 프로세서용 현행 작업 우선 순위보다 상위이어야 함.
인터럽트 인식 레지스터(124) : 소프트웨어로 읽어 인터럽트를 인식하는 경우, 하드웨어는 해당 프로세서에 펜딩 인터럽트의 인터럽트 벡터를 공급한다. 인터럽트가 펜딩이 아닌 경우, 의사 인터럽트 벡터가 공급된다.
인터럽트 종료(EOI) 레지스터(126) : 소프트웨어로 기록되어 EOI 커맨드를 발행한 프로세서를 위한 서비스 인터럽트에 있어 최상위에 EOI를 발행함. 외부 인터럽트용 EOI 레지스터 기록은 메모리 컨트롤러(17)가 로컬 상호 연결부(16)의 EOI 인터럽트 트랜잭션을 발행하도록 함.
각각의 IDU(19) 내에 있는 제3 레지스터 공간은 IPI 커맨드 레지스터(IPI command registers)(133)의 세트이고, 상기 레지스터(133)는 OpenPIC 호환형(OpenPIC-compliant) 시스템에서는 4개인 IPI 인터럽트의 각 레벨에 대해 하나의 IPI 커맨드 레지스터를 포함한다. 각각의 IPI 커맨드 레지스터(133)는 적어도 M 개의 비트를 포함하는데, 각각의 비트 위치는 M개의 로컬 프로세서(10) 중 하나의 프로세서 ID와 일치한다. 따라서, IPI 커맨드 레지스터(133) 내의 특정 비트 위치에 b'1'을 기록하면, 후술한 바와 같이 적합한 레벨의 IPI가 특정한 프로세서(10)에 발행되도록 한다. IPI 커맨드 레지스터(133)의 N 세트 상태는 인터럽트 핸들링 소프트웨어로 범용 메모리 공간에 있는 IPI 커맨드 레지스터의 마스터 세트(a master set)에서 총괄적으로 유지된다. 예컨대, 비정형 메모리 액세스 컴퓨터 시스템에 있는 각 4개의 프로세싱 노드(8)가 최대 8개의 프로세서를 지원하는 경우, 유지되는 4개의 IPI 커맨드 레지스터의 마스터 세트는 각각 32 비트를 가질 수 있고, 비트 0-7은 프로세싱 노드 0의 프로세서 0-7에 해당하고, 비트 8-15는 프로세싱 노드 1의 프로세서 0-7에 해당한다.
또한, 전술한 글로벌 레지스터(90), 퍼-프로세서 레지스터(92) 및 IPI 커맨드 레지스터(133)이외에도, 각각의 IDU(19)는 글로벌 타이머 인터럽트 소스(global timer interrupt source) 및 다른 OpenPIC 정의 레지스터 또는 다른 레지스터를 포함할 수 있다.
2.1.3 인터럽트 소스 유닛(Interrupt Source Unit;ISU) 동작
도 5는 본 발명에 따른 ISU(28)의 동작에 대한 상위 레벨의 논리 흐름도를 도시하고 있다. 도시한 바와 같이, 이 프로세스는 ISU(28)에 의한 입력의 수신에 따라 블럭(140)에서 개시하고, 이후 블럭(142)로 진행한다. 상기 입력이 버스[즉, 로컬 상호 연결부(16) 또는 메자닌 버스(30)]로부터 수신된 인터럽트 패킷(interrupt packet)인 경우, 후술하는 바와 같이 상기 프로세스는 블럭(152)로 패스된다. 그러나, 상기 입력이 외부 인터럽트[즉, 인터럽트 소스에 의한 인터럽트 요구 라인의 어서션(assertion)]인 경우, 상기 프로세스는 블럭(142)로부터 블럭(144)까지 진행하는데, 적합한 인터럽트 소스 구성 레지스터(72)에 액세스하여 인터럽트에 하나의 레벨을 할당하는 ISU(28)를 설명하고 있다. 상기 ISU(28)는 상기 수신된 외부 인터럽트의 레벨에 있는 인터럽트가 인터럽트 소스 구성 레지스터(72)를 기준으로 현재 차단되었는지 여부를 블럭(146)에서 결정한다. 전술한 본 발명의 바람직한 실시예에서는, 소정의 레벨 중 최대한 하나의 인터럽트가 소정의 시각에 각각의 프로세싱 노드(8) 내에서 활성화한다. 상기 수신된 외부 인터럽트 레벨에서 인터럽트를 차단한 경우, 상기 ISU(28)는 현재 시점에서 더 동작하지 않으며, 상기 인터럽트 소스는 계속하여 인터럽트 요구 라인(35)을 어서트(assert)하거나 나중 시간에 재어서트(reassert)하여야 한다. 이후, 상기 프로세스는 블럭(142)로 복귀한다. 그러나, 블럭(146)에서 상기 수신된 인터럽트의 레벨에서 인터럽트를 차단하지 않도록 결정한 경우, 상기 ISU(28)는 블럭 150에서 도시한 바와 같이, 인터럽트의 레벨 및 인터럽트 벡터를 표시하는 로컬 상호 연결부(16)[및 가능한 메자닌 버스(80)]를 통해 로컬 IDU(19)에 인터럽트 패킷을 발행한다. 또한, 상기 ISU(28)는 수신된 인터럽트 레벨에서 인터럽트를 차단한다. 이후 프로세스는 블럭(150)에서 블럭(142)로 복귀한다. 따라서, 후술하는 바와 같이 인터럽트 채널링이 인에이블되지 않는다면, 모든 외부 인터럽트는 외부 인터럽트가 발생하는 프로세싱 노드(8) 내의 하드웨어에 의해 소프트웨어에 제공된다.
블럭(152)에서, 버스 상의 인터럽트 패킷의 수신에 응답하여, 상기 ISU(28)는 인터럽트 패킷에 규정된 레벨에서 인터럽트 펜딩을 가지는지 여부를 결정한다. 인터럽트 펜딩을 갖지 않은 경우, 상이한 ISU(28)에 의해 프로세스될 인터럽트 패킷은 무시되고, 상기 프로세스는 블럭(142)로 복귀한다. 블럭(152)에서, ISU(28)가 인터럽트 패킷으로 규정된 인터럽트 레벨에서 인터럽트 펜딩을 갖도록 결정한 경우, 상기 프로세스는 블럭(160)으로 진행한다. 상기 블럭(160)에서는 ISU(28)에 의해 수신된 버스 인터럽트 트랜잭션이 EOI 또는 취소 인터럽트 트랜잭션인지 여부를 결정한다. 상기 EOI 또는 취소 인터럽트 트랜잭션이라면, 이 프로세스는 블럭(162)로 이동하는데, 버스 인터럽트 트랜잭션에 규정된 인터럽트 레벨을 위한 인터럽트의 차단을 제거하는 ISU(28)를 설명하고 있다. 이후 상기 프로세스는 전술한 바와 같이 블럭(142)로 복귀한다.
한편, ISU(28)가 상기 수신된 버스 인터럽트 트랜잭션이 EOI 또는 취소 인터럽트 트랜잭션이 아니라고 블럭(160)에서 결정하면, 이 프로세스는 블럭(170)으로 패스하고, 여기에서 버스 인터럽트 트랜잭션이 이후의 시간에 규정된 레벨에서 인터럽트를 재생성하도록 ISU(28)에 요구하는 재발행 트랜잭션(reissue transaction)인지 여부를 결정한다. 상기 버스 인터럽트 패킷이 재발행 트랜잭션 또는 다른 정의된 인터럽트 패킷이 아닌 경우, 상기 프로세스는 블럭(172)로 패스하고, 상기 블럭은 적합한 에러 핸들링 기능을 수행하는 ISU(28)를 설명하고 있다. 그러나, 버스 인터럽트 트랜잭션이 재발행 트랜잭션인 경우, 상기 프로세스는 블럭(174)로 패스한다. 상기 블럭(174)는 블럭(150)에서 도시한 바와 같이, 인터럽트 패킷을 IDU(19)에 재발행하기 이전에 구현에 따른 시간 간격(예컨대, 소정의 클럭 사이클 수)을 대기하는 ISU(28)를 설명하고 있다.
2.1.4 인터넷 수신 장치(Interrupt Destination Unit;IDU) 동작
도 6은 입력을 프로세스할때, IDU(19)의 동작에 대한 상위 레벨의 논리 흐름도를 도시하고 있다. 도시한 바와 같이, 상기 프로세스는 IDU(19)에 의한 입력의 수신에 따라 블럭(180)에서 개시하고, 그 후 블럭(182)로 진행한다. 블럭(182)은 상기 입력이 ISU(28)에 의해 발행된 인터럽트 요구 패킷인지 여부를 결정하는 IDU(19)를 설명한다. 상기 인터럽트 요구 패킷이 아니라면, 후술하는 바와 같이 상기 프로세스는 블럭(200)으로 패스된다. 그러나, IDU(19)에 의해 수신된 입력이 상기 ISU(28)에 의해 발행된 상기 인터럽트 요구 패킷이라면, 이 프로세스는 블럭(184)으로 진행하고, 상기 블럭(184)은 인터럽트 요구 패킷에 규정된 인터럽트 레벨이 (1) 인터럽트를 현재 공급하고 있지 않은 로컬 프로세싱 노드(8)에 있는 프로세서(10)의 현재 작업 우선 순위 레지스터(122)에서 규정된 우선 순위 레벨 이상인지, (2) 프로세서(10) 중 펜딩 대기열(130)에서 엔트리를 획득할 만큼 충분히 상위인지 여부에 대한 결정을 설명하고 있다. 그렇지 않다면, 상기 프로세스는 블럭(186)으로 패스된다. 상기 블럭(186)은 로컬 상호 연결부(16) 상의 재발행 인터럽트 패킷을 전송하는 IDU(19)를 설명하고 있는데, 상기 재발행 인터럽트 패킷은 도 5와 관련하여 전술한 ISU(28)에 의해 수신되어 프로세스된다. 또한, 유사한 재발행 인터럽트 패킷이 블럭(188)에서 도시한 바와 같이 전송될 수 있는데, 이 경우에는 펜딩 대기열(130) 내의 인터럽트가 새로이 수신된 인터럽트보다 하위 레벨을 갖고, 상기 펜딩 대기열(130)이 채워져 상기 펜딩 대기열이 새로운 인터럽트를 위하여 펜딩 대기열(130)로부터 제거된다.
다음의 블럭(184 및 188)에서, 프로세스는 블럭(190)으로 진행하는데, 상기 블럭(190)은 IDU(19)가 상기 프로세서(10)의 인터럽트 요구 라인(36)을 어서트하여 상기 인터럽트를 블럭(184)에서 대기시키는 것을 설명하고 있다. 또한, 블럭(192)에서 도시한 바와 같이, 상기 IDU(19)는 인터럽트의 레벨을 위한 펜딩 플래그를 설정하고, 해당 현재 작업 우선 순위 레지스터(122) 내에서 상기 인터럽트된 프로세서를 위한 활성 플래그(active flag)를 설정한다. 이 후, 상기 프로세스는 전술한 바와 같이 블럭(182)로 복귀한다.
상기 블럭(182)에서는, IDU(19)에 의해 수신된 입력이 인터럽트 요구 패킷이 아닐 경우, 상기 IDU(19)는 블럭(200)에서 상기 수신된 입력 트랜잭션이 인터럽트 인식(ACK) 트랜잭션인지 여부를 결정하는데, 상기 인터럽트 인식 트랜잭션은 인터럽트의 수신을 인식하도록 로컬 프로세서(10)에 의해 로컬 상호 연결부(16) 상에서 전송된 것이다. 상기 수신된 입력이 상기 인터럽트 인식 트랜잭션이 아닌 경우, 상기 프로세스는 후술하는 바와 같이 블럭(220)으로 진행한다. 그러나, IDU(19)에 의해 수신된 상기 입력이 인터럽트 인식 패킷인 경우, 상기 프로세스를 블럭(202)로 패스하는데, 상기 블럭은 인터럽트 요구 라인(36)을 디서트하고, 펜딩 대기열(130)로부터 프로세서의 서비스 대기열(132)로 펜딩 인터럽트를 진행시켜 서비스 대기열 엔트리에 있는 최소한의 인터럽트 레벨을 저장하는 IDU(19)를 설명하고 있다. 블럭(204)에서, 이 후 IDU(19)는 인터럽트 레벨 및 인터럽트 벡터를 포함하는 인터럽트 트랜잭션을 로컬 상호 연결부(16)를 통해 서비스 프로세서(10)에 전송한다. 어떤 이유로든, 전송 프로세서(10)를 위한 펜딩 인터럽트가 없을 때, 인터럽트 ACK 트랜잭션을 IDU(19)로 수신한 경우에는 의사 벡터 레지스터(108)에 포함된 의사 인터럽트 벡터를 상기 프로세서(10)에 공급한다. 이 후, 상기 프로세스는 블럭(182)으로 복귀한다.
인터럽트의 서비스와 함께, 상기 서비스 프로세서(10)는 도 6에 도시한 바와 같이 IDU(19)에 종료 인터럽트(EOI) 기록 트랜잭션을 발행하여 블럭(182)에서 블럭(200) 내지 블럭(220)까지 통과한 다음, 블럭(222)를 통과하게 한다. 상기 블럭(222)은 EOI 기록 트랜잭션에 포함된 인터럽트의 레벨를 위한 펜딩 플래그(pending flag)를 제거하는 IDU(19)를 설명하고 있다. 또한, 블럭(228)에서는, 도 5의 블럭 160 및 블럭 162에 대해 전술한 바와 같이, IDU(19)가 로컬 상호 연결부(16)에 EOI 트랜잭션을 발행하여 소스 ISU(28)의 펜딩 레지스터(82) 내의 인터럽트를 위해 비트 세트를 제거한다. 블럭(224)에서 도시한 바와 같이, 다른 인터럽트가 상기 인터럽트된 프로세서(10)의 펜딩 대기열(130)에 존재하는 경우, 상기 프로세서(10)에게 전술한 블럭(190)를 통과하는 프로세스에 나타낸 바와 같이, 상기 대기열 인터럽트를 통지한다. 다른 예에서는, 인터럽트된 프로세서(10)에 대해 어떠한 추가적인 인터럽트도 펜딩이 아닌 경우, IDU(19)는 블럭(226)에서 도시한 바와 같이, 상기 IDU(19)에 있는 인터럽트된 프로세서(10)를 위해 활성 플래그를 제거한다. 이 후 상기 프로세스는 블럭(182)로 복귀한다.
도 6을 다시 참조하면, 상기 IDU(19)로 수신된 상기 입력 트랜잭션이 인터럽트 요구, ACK 트랜잭션 또는 EOI 트랜잭션이 아닌 경우, 상기 IDU(19)는 블럭(240)에서 입력 트랜잭션이 IPI 커맨드 레지스터(133)를 타겟으로 하는 기록 트랜잭션인지를 결정한다. 기록 트랜잭션이 아닌 경우에는, 상기 프로세스는 블럭(260 내지 264)으로 패스하는데, 상기 블럭(260 내지 264)은 상기 수신된 입력이 유효한 경우 다른 프로세싱을 수행하고, 그렇지 않으면 적절한 에러 복구 활동을 수행하는 IDU(19)를 설명하고 있다. 그러나, 상기 수신된 입력이 IPI 커맨드 레지스터(133)를 타겟팅하는 기록 트랜잭션인 경우, ISU(19)는 IPI용 트리거(trigger)로서 상기 입력을 인식한다.
전술한 외부 인터럽트와 달리, IPI는 비정형 메모리 액세스 컴퓨터 시스템(6)에 있는 임의의 프로세서(10)에 의해 생성될 수 있고, 비정형 메모리 액세스 컴퓨터 시스템(6)에 있는 프로세서 그 자체 및/또는 하나 이상의 다른 프로세서(10)를 타겟으로 할 수 있다. 이러한 IPI를 통상적으로 사용하여 상이한 프로세서(10)를 운영하는 프로세스 사이에 메시지를 비동기적으로 패스한다. IPI를 지원하기 위해, 시스템 가동에서 실행된 셋업 소프트웨어는 각각의 4개의 지원 IPI의 레벨을 초기화한다. 이어서, 비정형 메모리 액세스 컴퓨터 시스템(6) 동작 동안, 소스 프로세서(10)는 메시지의 수령자로서 타겟 프로세서 또는 프로세서(10)를 선택하고, 각 타겟 프로세서(10)의 IPI 레벨의 임계값은 프로세서의 현재 작업 우선 순위 레지스터(122)에 표시된다. 상기 소스 프로세서(10)는 구성 정보 및 각각의 타겟 프로세서(10)의 IPI 레벨의 임계값을 기준으로 어떤 IPI 인터럽트를 선택된 타겟 프로세서(10)의 인터럽트에 이용할지 결정한다. 이후, 소스 프로세서(10)는 공유 메모리 위치에 메시지를 저장하며, 상기 메모리 위치는 선택된 IPI와 관련된 IPI 벡터 레지스터(106)를 이용하여 액세스될 수 있다. 상기 소스 프로세서(10)는 최종적으로 타겟 프로세서(10)를 포함한 각각의 프로세싱 노드(8)에 기록 트랜잭션을 발행하고, 각 기록 트랜잭션은 적합한 IPI 커맨드 레지스터(133)를 타겟으로 한다.
전술한 바와 같이, 이 기록 트랜잭션은 도 6의 블럭(240)에서 IDU(19)에 의해 디코드된다. 상기 블럭(240)으로부터, 상기 프로세스를 블럭(242)으로 패스하고, 상기 블럭(242)은 어떤 우선 순위(레벨)가 타겟 IPI 커맨드 레지스터(133)와 관련되는지를 결정하고, 어떤 로컬 프로세서(10)가 이 레벨의 인터럽트를, 예컨대 IPI 벡터 레지스터(106)를 기준으로 수용하는지를 결정하는 IDU(19)를 설명하고 있다. 로컬 타겟 프로세서(10)가 결정되면, 블럭(244) 및 블럭(246)에서 도시한 바와 같이 IDU(19)는 타겟 프로세서(10)의 인터럽트 요구 라인을 어서트하고, IPI의 인터럽트 레벨를 위한 펜딩 플래그를 설정하고, 타겟 프로세서(10)를 위한 활성 플래그를 설정한다. 이 후, 상기 프로세스는 블럭(182)로 복귀한다.
2.1.5 인터럽트 채널링(Interrupt Channelling)
비정형 메모리 액세스 컴퓨터 시스템(6)의 일부 응용 프로그램를 위해, 비정형 메모리 액세스 컴퓨터 시스템(6)의 프로세싱 리소스를 증가(augment)시키지 않고, 특정 리소스, 예컨대 시스템 메모리(18), I/O 장치(32) 또는 저장 장치(34)를 증대시키는 것은 장점일 수 있다. 이 경우, 프로세서(10)가 없는 하나 이상의 노드(8)를 포함하는 것이 바람직하다. 그러나, 비정형 메모리 액세스 컴퓨터 시스템(6)을 퍼-노드 인터럽트 도메인으로 분할하는 전술한 관점에서, 일부 메카니즘은 프로세서가 없는 노드(8)에 있는 인터럽트 소스에 의해 발생된 외부 인터럽트를 다루는 것이 요구된다. 본 발명의 바람직한 실시예에서는, 프로세서가 없는 노드(8)에 의해 생성된 외부 인터럽트의 핸들링은 인터럽트 채널링에 의해 달성된다.
인터럽트 채널링의 영향으로, 로컬 IDU(19)(존재하는 경우)를 디스에이블하고, 각각 프로세서가 없는 노드(8)의 노드 컨트롤러(20)를 전송 모드로 설정하여 프로세서가 없는 노드(8)의 노드 컨트롤러(20)가 로컬 ISU(28)에 의해 공급된 인터럽트 패킷을 수용하고, 인터럽트 패킷을 지정된 "포스터(foster)" 노드(8)로 전송하며, 상기 포스터 노드는 적어도 하나의 프로세서(10)와 하나의 IDU(19)를 포함한다. 이 전송 모드는, 예컨대 프로세서가 없는 노드의 시스템 컨트롤 영역 세그먼트(70)에 있는 모드 레지스터로 컨트롤될 수 있고, 상기 세그먼트(70)는 상기 시스템 기동시 구성 소프트웨어에 의해 기록되는데, 상기 모드 레지스터는 모드 컨트롤 비트 및 포스터 노드 식별자를 포함하고 있다.
노드 상호 연결부(22)를 따라 전송된 상기 인터럽트 트랜잭션를 수신하면, 상기 포스터 노드(8)의 노드 컨트롤러(20)는 로컬 상호 연결부(16)의 상기 인터럽트 트랜잭션를 동작한다. 이후, 상기 포스터 노드(8)에 있는 IDU(19)는 상기 인터럽트 패킷을 요구하고, 전술한 바와 같이, 서비스용 로컬 프로세서(10)에 상기 인터럽트를 제공한다. 또한, 포스터 노드(8)에 있는 IDU(19)에 의해 발생한 임의의 인터럽트 패킷을 프로세서가 없는 노드(8)에 있는 소스 ISU(28)로 전송한다. 따라서, 인터럽트 채널링을 사용하면, 원격 프로세서가 없는 노드(8)의 상기 인터럽트 소스 및 ISU는 지정된 포스터 노드(8)의 인터럽트 도메인 내에 포함되고, 포스터 노드(8)에서 발생된 외부 인터럽트를 다루는데 사용되는 것과 동일한 형태의 인터럽트 트랜잭션을 이용하여 외부 인터럽트를 다룬다. 노드 상호 연결부(22)의 포인트간 통신 성능을 이용하면, 다수의 "포스터 노드(foster node)"-"차일드 노드(child node)" 간의 관계는 도메인 독립성을 위배하지 않고 동시에 존재할 수 있는 장점이 있다.
시스템 기동 동안 인터럽트 채널링의 특수한 경우를 인터럽트 퍼넬링(interrupt funneling)이라고 부른다. 상기 인터럽트 퍼넬링에서는, 비정형 메모리 액세스 컴퓨터 시스템의 모든 외부 인터럽트를 마스터 프로세서(master processor)로 일시적으로 향하도록 하는데, 상기 마스터 프로세서는 초기에 구성된 것이다. 프로세서의 나머지가 구성되고 인터럽트를 서비스할 수 있은 후, 인터럽트 도메인의 분할이 강화된다.
2.2 인터럽트 소프트웨어(interrupt software)
도 7은 상위 레벨 논리 흐름도인데, 이 흐름도는 본 발명에 따른 인터럽트 리소스를 구성하는 구성 루틴(configuration routine)의 일부분을 도시하고 있다. 도시한 바와 같이, 도 7에 도시한 구성 루틴의 일부분은 블럭(300)에서 개시되며, 초기 파워 온 셀프 테스트(Power on self test;POST) 및 다른 하위 레벨 하드웨어 초기화 코드를 운용한 다음, 블럭(302)로 진행하는 것이 바람직하다. 블럭(302)은 구성 루틴을 도시하고 있는데, 상기 구성 루틴은 비정형 메모리 액세스 컴퓨터 시스템(6)의 어떠한 노드(8)가 외부 인터럽트를 생성할 수 있는 장치를 포함하는지를 식별한다. 다음으로, 블럭(304)에서, 상기 구성 루틴은 외부 인터럽트를 생성할 수 있는 각각 장치에 질의하여 각 장치가 이용하고자 하는 인터럽트의 레벨을 결정한다. 상기 구성 루틴은 각 장치간의 간섭(conflicts)이 있다면 이를 해소하고, 각 장치의 인터럽트에 레벨을 할당한다. 상기 프로세스는 블럭(304)로부터 블럭(310)까지 진행하는데, 상기 블럭(310)은 각각의 인터럽트 레벨에 대하여 인터럽트 레벨의 외부 인터럽트를 생성할 수 있는 모든 장치, 각 장치의 노드 ID 및 각 장치의 레지스터의 물리적 어드레스를 리스트하는 범용 메모리 내의 데이터 구조를 생성하는 구성 루틴을 도시한다. 또한, 구현한 특정 세부 사항에 따라, 인터럽트를 핸들링하는데 유용한 다른 정보를 각각의 데이터 구조 내에 저장할 수 있다.
이 후, 상기 구성 루틴은 블럭(312) 내지 블럭(314)에 도시한 바와 같이, 각 노드(8) 내의 하드웨어를 구성한다. 상기 구성 루틴이 블럭(312)에서 노드(8)를 선택한 후, 이 구성 루틴은 선택된 노드(8)가 프로세서(10)를 포함하고 있는지 결정한다. 프로세서(10)를 포함하고 있지 않다면, 이 구성 루틴은 블럭(330)에 도시한 바와 같이, 선택된 노드(8) 내의 IDU(19)를 디스에이블함으로써 인터럽트 채널링을 구현하고, 예컨대 메모리 맵핑 레지스터에 값을 기록함으로써 ISU(28) 및 노드 컨트롤러(20)를 적절하게 구성한다. 전술한 바와 같이, 상기 노드 컨트롤러(20)의 구성은 전송 모드 비트를 설정하여 전송 모드 레지스터 내의 포스터 노드(8)를 특정하는 것을 포함하고 있다. 또한, 상기 구성 레지스터는 선택된 노드(8)의 노드 ID를 노드 컨트롤러(20) 내의 노드 ID 레지스터에 기록하는 것이 바람직하다. 이후, 상기 프로세스를 블럭(334)으로 패스하며, 상기 블럭(334)은 노드(8)를 추가하여 구성할지 여부를 결정하는 구성 루틴을 도시하고 있다. 노드(8)가 추가되는 경우, 상기 프로세스는 블럭(312)으로 복귀하고, 상기 블럭(312)에서 구성 레지스터는 프로세스할 다음의 노드(8)를 선택한다.
다시 블럭(320)을 참조하면, 상기 구성 루틴이 블럭(312)에서 선택된 노드(8)가 프로세서(10)를 포함한다고 결정한 경우에, 상기 프로세스는 블럭(322)으로 패스한다. 상기 블럭 322은 구성 루틴을 도시하고 있는데, 상기 구성 루틴은 선택된 노드(8) 내에 프로세서(10), IDU(19), ISU(28) 및 노드 컨트롤러(20)를 구성한다. 도시한 바와 같이, 상기 구성은 노드 ID를 노드 컨트롤러(20) 내의 노드 ID 레지스터에 기록하는 단계와, 각각의 프로세서의 자체 ID를 내부 프로세서 ID 레지스터에 기록하는 단계를 포함한다. 이후, 상기 프로세스는 블럭(334)으로 진행하며, 또 다른 노드(8)가 프로세스될 경우, 블럭(336)에서 다른 설정 및 구성 활동을 계속한다.
도 8은 상위 레벨 논리 흐름도인데, 이 흐름도에는 제1 레벨 인터럽트 핸들러(First Level Interrupt Handler;FLTH) 소프트웨어가 IDU(19)에 의해 프로세서(10)에 공급된 인터럽트의 서비스를 용이하게 하는 방식이 설명되어 있다. 도시한 바와 같이, 상기 프로세스는 도 6에 대해 설명한 바와 같이, IDU(19)에 의해 인터럽트 요구 라인의 어서션에 응답하여 블럭(400)에서 개시한다. 상기 인터럽트 요구 라인의 어서션에 응답하여, 프로세서(10)는 예외적으로 상기 제1 레벨 인터럽트 핸들러로 점프하고, 상기 제1 레벨 인터럽트 핸들러는 블럭(402)에서 개시한다. 상기 블럭(402)은 프로세서(10)를 도시하고 있는데, 상기 프로세서는 FLIH의 컨트롤하에 동작하고, IDU(19)로 인터럽트 인식(ACK) 트랜잭션을 전송하여 서비스될 인터럽트의 인터럽트 벡터 및 인터럽트 레벨을 획득한다. 또한, 상기 FLIH는 인터럽트가 IPI 인지 또는 외부 인터럽트인지 여부를 블럭(403)에서 결정한다. 상기 인터럽트가 IPI인 경우, 상기 프로세스는 블럭(405)으로 패스하고, 블럭(405)은 상기 서비스 프로세서(10)가 규정된 IPI 레벨에 대한 공유 메모리 위치로부터 상기 인터럽트 프로세서(10)의 메시지를 판독하는 것을 도시하고 있다. 이후 상기 프로세스를 후술하는 바와 같이 블럭(410)으로 패스한다.
블럭(403)에서, 상기 프로세서(10)에 제공된 인터럽트가 외부 인터럽트라고 결정되면, 상기 프로세스는 블럭(404)으로 패스한다. 상기 블럭(404)에서, 상기 구현에 의해 필요할 경우, 상기 FLIH는 IDU(19)로부터의 인터럽트를 차단하고, 인터럽트를 서비스하도록 요구된 임의의 배타적 인터럽트 리소스 상에서 소프트웨어 락을 얻는다. 이후, 상기 FLIH는 블럭(406)에 도시한 바와 같이, 인터럽트 레벨의 관련 데이터 구조에 대한 포인터 및 인터럽트 레벨을 제2 레벨 인터럽트 핸들러(Second Level Interrupt Handler;SLIH)에 패스한다.
당업자가 이해하고 있는 바와 같이, SLIH는 인터럽트 핸들링 루틴(interrupt handling routine)이다. 특정한 장치에 의해 생성된 인터럽트를 서비스하도록 요구된 동작을 수행하는 다수의 인터럽트 소스가 동일한 레벨의 인터럽트를 생성할 수 있기 때문에, 이 SLIH는 통상 폴링 체인(polling chain)을 형성하기 위해 함께 연결되어 SLIH의 폴링 체인이 프로세스될 때, 체인에 있는 각각의 SLIH는 해당 장치(또는 장치들)을 폴(poll)하여 이 장치가 인터럽트 소스인지를 결정한다. 이 장치가 인터럽트 소스인 경우, 인터럽트를 서비스할 필요가 있는 동작을 수행한다. 본 발명은 인터럽트 핸들링 레이턴시(interrupt handling latency)가 폴링 체인의 길이에 강하게 의존하는 것을 알 수 있는데, 그 결과 인터럽트 핸들링 레이턴시는 상기 비정형 메모리 액세스 컴퓨터 시스템의 외부 인터럽트의 레벨 수와 잠재적인 인터럽트 소스의 수에 의존한다. 따라서, 비정형 메모리 액세스 컴퓨터 시스템(6)이 외부 인터럽트의 16개 레벨만을 가지고, 비정형 메모리 액세스 컴퓨터 시스템(6) 내의 포텐셜 인터럽트 소스의 수가 큰 경우, 인터럽트 핸들링 레이턴시는 크다. 인터럽트 핸들링 레이턴시를 개선하기 위해, 본 발명은 인터럽트 소스용 후보로서 하나 이상의 노드 내의 장치를 제거함으로써 폴링 체인 내의 SLIH의 수를 감소시킨다.
제1 실시예에서는, 폴링 체인에 있는 SLIH의 수를 FLIH의 수 만큼 줄여 상기 인터럽트 레벨을 노드 특정(또는 수퍼세트) 인터럽트 레벨에 대응하고, 상기 노드 특정 인터럽트 레벨은 인터럽트가 발생한 노드 ID를 연결(또는 조합)함으로써 형성되는데, 이 인터럽트는 종래의 인터럽트 레벨로 인터럽트를 수신하는 프로세서(10)에 알려져 있다. 각각의 노드 특정 인터럽트 레벨은 구성 루틴에 의해 메모리에 생성된 해당 인터럽트 데이터 구조를 가지고, 이 데이터 구조는 소정 레벨의 외부 인터럽트를 생성할 수 있는 해당 노드(즉, 인터럽트 도메인)내의 장치만을 리스트한다. 따라서, 블럭(406)의 폴링 체인에 있는 제1 SLIH에 패스된 인터럽트 레벨은 노드 특정 인터럽트 레벨이고, 블럭(406)에서 SLIH에 제공된 포인터는 노드 특정 인터럽트 데이터 구조를 가리키고, 폴링 체인은 노드 특정 인터럽트 데이터 구조에 리스트된 장치와 관련된 SLIH만을 포함한다. 상기 제1 실시예는 동일 레벨에서 다수의 인터럽트 핸들러가 리소스를 서비스하는 인터럽트에 대하여 간섭하지 않고(또는 이에 대한 락(lock)을 획득하지 않고), 상이한 노드(8)에 있는 프로세서(10) 상에서 동시에 동작할 수 있으나, FLIH 및 SLIH가 노드 특정 인터럽트 레벨을 인식할 것을 요구하는 장점이 있다.
다른 예로서, 폴링 체인에 있는 SLIH의 수는 FLIH 자체가 인터럽트 데이터 구조의 서브세트를 SLIH로 패스하는 제2 실시예에 따라 감소될 수 있고, 상기 서브세트 인터럽트 데이터 구조는 외부 인터럽트가 제공된 프로세서와 동일한 노드 ID를 갖는 장치만을 리스트한다. 다른 노드에 있는 장치를 논외로 하면, SLIH의 폴링 트리는 보다 짧아질 수 있다. 이들 실시예 모두는 전술한 인터럽트 채널링과 함께 사용될 수 있는데, 이 경우는 인터럽트 도메인을 위한 구성 루틴에 의해 구축된 데이터 구조는 포스터 노드 및 차일드 노드 내에 장치를 포함한다.
임의의 이벤트에서, 일단 컨트롤이 폴링 체인에 있는 제1 SLIH에 패스되면, FLIH는 블럭(408)에서 도시된 바와 같이 인터럽트 서비스가 완료되기를 기다린다. 중요한 것은, 일단 상기 인터럽트가 SLIH의 폴링 체인에 패스되면, 오퍼레이팅 시스템은 이들 SLIH를 스케쥴하여 비정형 메모리 액세스 컴퓨터 시스템(6)에 있는 임의의 프로세서(10)를 실행할 수 있고, 다른 프로세서(10)를 선택하여 로드 밸런싱(load balancing), 데이터 유사성(data affinity) 또는 다른 기준(other criteria)에 응답하여 SLIH를 실행할 수 있다는 것이다. 인터럽트 소스와 관련된 SLIH의 완료시, 컨트롤은 초기에 상기 인터럽트를 수신한 프로세서(10)에 있는 FLIH로 복귀하고, 블럭(410)에서 도시되고 도 6의 블럭(220)과 관련하여 전술한 바와 같이, 서비스된 인터럽트의 레벨을 규정하는 IDU(19)에 EOI 트랜잭션을 발생한다. 이 후, 상기 FLIH는 블럭(412)에서 종료한다.
전술한 바와 같이, 본 발명은 비정형 메모리 액세스 컴퓨터 시스템을 위한 인터럽트 아키텍쳐를 제공한다. 상기 인터럽트 아키텍쳐는 하드웨어 및 소프트웨어 구성 요소를 포함하는데, 일반적으로 상기 비정형 메모리 액세스 컴퓨터 시스템을 외부 인터럽트 도메인으로 분할하는 것으로 설명되며 외부 인터럽트는 인터럽트가 발생하는 상기 외부 인터럽트 도메인 내의 프로세서에 공급된다. 상기 각각의 외부 인터럽트 도메인이 통산 단일 노드만을 포함하고 있더라도, 인터럽트 채널링 또는 인터럽트 퍼넬링은 프리젠테이션을 위한 노드 경계에 따른 외부 인터럽트를 프로세서로 라우트하도록 구현될 수 있다. 일단 프로세서에 제공되면, 소프트웨어는 상기 시스템 내의 임의의 프로세서를 실행하여 외부 인터럽트를 서비스할 수 있다. 본 발명의 인터럽트 아키텍쳐는 인터럽트 핸들링 소프트웨어를 인에이블하여 종래 기술과 비교할 때 인터럽트 핸들러 폴링 체인(트리)의 크기를 축소함으로써 외부 인터럽트의 서비스를 원할하게 할 수 있는 장점이 있다. 외부 인터럽트이외에도, 본 발명의 인터럽트 아키텍쳐는 프로세서 상호간 인터럽트(IPI)를 지원하여 임의의 프로세서가 상기 시스템에 있는 프로세서 그 자체 또는 하나 이상의 다른 프로세서를 인터럽트하게 할 수 있다. 본 발명은 메모리 맵핑 레지스터를 이용하여 IPI를 트리거하고, 이로써 노드 경계를 따라 IPI의 전송을 용이하게 하며, 단순히 하나의 기록 트랜잭션을 인터럽트될 프로세서를 포함하고 있는 각 노드에 전송함으로써 멀티캐스트 IPI가 트리거될 수 있다. 중요한 점은 본 발명의 인터럽트 아키텍쳐는 수개의 노드를 포함한 소형 비정형 메모리 액세스 컴퓨터 시스템으로부터 수백 개의 노드를 포함한 대형 시스템까지 크기에 따라 구비되어 있다는 것이다. 또한, 각각의 노드 내에 있는 상기 인터럽트 하드웨어는 공유된 통신 경로(즉, 로컬 버스 및 상호 연결)를 따라 전달된 인터럽트 트랜잭션을 통해 통신하는 하드웨어 구성 요소로 스케일러빌리티를 위해 따라 분산된다.
본 발명이 OpenPIC 호환성 있는 실시예에 대해서 설명하고 있을지라도, 본 발명은 OpenPIC 호환성 있는 실시예에 국한되지 않고, 또한 본 발명의 특성이 본 발명의 방법을 지향하는 소프트웨어를 실행하는 컴퓨터 시스템에 대해 기재되어 있더라도, 본 발명은 컴퓨터 시스템에 사용되는 컴퓨터 프로그램 제품으로서 구현될 수 있음은 물론이다. 본 발명의 기능을 정의하는 프로그램은 신호를 내장한 다양한 매체를 통해 컴퓨터 시스템으로 전달될 수 있고, 상기 매체는 기록 가능하지 않은 저장 매체(예컨대, CD-ROM), 기록 가능한 저장 매체(예컨대, 플로피 디스켓, 하드디스크 드라이브, EEPROM) 및 예컨대 컴퓨터와 전화 네트워크와 같은 통신 매체를 제한없이 포함할 수 있다. 그러므로, 본 발명의 기능을 지시하는 컴퓨터 판독 가능한 명령어를 전달하거나 인코딩할 때, 이러한 신호를 내장한 매체는 본 발명의 다른 실시예를 제공할 수 있음은 물론이다.

Claims (30)

  1. 복수 개의 인터럽트 도메인(interrupt domains)을 포함하는 데이터 프로세싱 시스템으로서,
    상기 인터럽트 도메인 각각은, 복수 개의 상호 연결된 프로세싱 노드 중 적어도 하나를 포함하고, 외부 인터럽트를 수신할 수 있는 적어도 하나의 프로세서와 상기 외부 인터럽트를 생성할 수 있는 적어도 하나의 인터럽트 소스를 포함하고, 상기 적어도 하나의 인터럽트 소스에 의해 생성된 외부 인터럽트를 수신하여 상기 외부 인터럽트를 상기 적어도 하나의 프로세서에 제공하는 개별 인터럽트 하드웨어를 구비하며,
    상기 적어도 하나의 프로세서는 인터럽트 핸들링 소프트웨어를 실행하고,
    상기 각 인터럽트 도메인 내에 있는 인터럽트 하드웨어는 인터럽트 도메인 간에 인터럽트를 전달하는데 이용되는 글로벌 액세스 메모리 맵핑 레지스터(globally-accesible memory mapped register)를 포함하며,
    상기 글로벌 액세스 메모리 맵핑 레지스터는 프로세서 상호간 인터럽트를 전달하는데 이용되는 것인 데이터 프로세싱 시스템.
  2. 제1항에 있어서,
    상기 복수 개의 인터럽트 도메인 각각에 있는 인터럽트 하드웨어는 상기 인터럽트 도메인 내에서만 프로세서에 인터럽트를 제공하는 인터럽트 수신(destination) 유닛과, 인터럽트 소스로부터 인터럽트를 수신하는 적어도 하나의 인터럽트 소스 유닛을 포함하는 것인 데이터 프로세싱 시스템.
  3. 제2항에 있어서,
    상기 인터럽트 수신 유닛과 상기 인터럽트 소스 유닛은 인터럽트 정보를 공유된 상호 연결부를 통해 전달하는 것인 데이터 프로세싱 시스템.
  4. 제2항에 있어서,
    상기 복수 개의 인터럽트 도메인 중 적어도 하나의 인터럽트 도메인에 대해, 적어도 하나의 상기 인터럽트 소스 유닛 및 상기 인터럽트 수신 유닛은 상호 연결된 상기 복수 개의 프로세싱 노드 중 상이한 노드에 배치되는 것인 데이터 프로세싱 시스템.
  5. 제4항에 있어서,
    상기 적어도 하나의 인터럽트 소스 유닛을 포함하는 상기 복수 개의 상호 연결된 프로세싱 노드 중 하나는 외부 인터럽트를 수신하기 위한 프로세서들을 포함하지 않는 것인 데이터 프로세싱 시스템.
  6. 제2항에 있어서,
    상기 복수 개의 인터럽트 도메인 중 적어도 하나는 복수 개의 상기 인터럽트 소스 유닛을 포함하는 것인 데이터 프로세싱 시스템.
  7. 제1항에 있어서,
    상기 복수 개의 상호 연결된 노드 중 각 노드 내에 각각 배치되어 있는 복수 개의 로컬 상호 연결부와,
    시스템 상호 연결부와,
    상기 복수 개의 로컬 상호 연결부 중 하나를 노드간 통신을 위해 상기 시스템 상호 연결부에 각각 접속시키는 복수 개의 노드 컨트롤러를 더 포함하는 데이터 프로세싱 시스템.
  8. 제1항에 있어서,
    오퍼레이팅 시스템과 제1 레벨 인터럽트 핸들러와 제2 레벨 인터럽트 핸들러를 저장하는 하나 이상의 상기 프로세싱 노드 내의 메모리를 더 포함하고,
    상기 제1 레벨 인터럽트 핸들러는 상기 프로세서에 의해 실행되고, 상기 외부 인터럽트를 서비스 하는 것을 호출하기 위해 상기 프로세서에 상기 외부 인터럽트가 먼저 제공되며, 상기 제2 레벨 인터럽트 핸들러는 상기 데이터 프로세싱 시스템에 있는 임의의 프로세서에서 실행되도록 상기 오퍼레이팅 시스템에 의해 스케쥴링될 수 있는 것인 데이터 프로세싱 시스템.
  9. 제7항에 있어서,
    각각의 상기 인터럽트 도메인의 상기 글로벌 액세스 메모리 맵핑 레지스터에 각각 물리적 어드레스를 할당하고, 각각의 상기 인터럽트 도메인의 상기 글로벌 액세스 메모리 맵핑 레지스터에 대한 상기 물리적 어드레스는 상기 글로벌 액세스 메모리 맵핑 레지스터를 포함하는 프로세싱 노드에 할당된 메모리 영역으로부터 일정한 오프셋을 갖는 것인 데이터 프로세싱 시스템.
  10. 데이터 프로세싱 시스템에서 외부 인터럽트를 핸들링하기 위한 방법으로서,
    복수 개의 상호 연결된 프로세싱 노드 중 적어도 하나를 각각 포함하는 복수 개의 인터럽트 도메인을 설정하는 단계와,
    상기 복수 개의 인터럽트 도메인 중 특정 인터럽트 도메인 내에서, 인터럽트 하드웨어에서 적어도 하나의 인터럽트 소스에 의해 생성된 외부 인터럽트를 수신하고 상기 외부 인터럽트를 상기 인터럽트 하드웨어에 의해 적어도 하나의 프로세서에 제공하는 단계와,
    상기 특정 인터럽트 도메인의 적어도 하나의 프로세서로, 상기 적어도 하나의 프로세서와 동일한 인터럽트 도메인 내의 프로세서 및 상기 적어도 하나의 프로세서와 상이한 인터럽트 도메인 내의 프로세서 모두에 제공된 인터럽트를 서비스할 수 있는 인터럽트 핸들링 소프트웨어를 실행하는 단계와,
    상기 인터럽트 하드웨어 내에 있는 글로벌 액세스 메모리 맵핑 레지스터를 이용하여 인터럽트 도메인 간에 상기 외부 인터럽트 및 프로세서 상호간 인터럽트를 전달하는 단계와,
    상기 복수의 인터럽트 도메인 중 상기 특정 인터럽트 도메인과 상이한 인터럽트 도메인 내의 프로세서에 제공된 외부 인터럽트를 서비스하는 단계를 포함하고,
    상기 각 인터럽트 도메인은 상기 외부 인터럽트를 수신할 수 있는 적어도 하나의 프로세서와, 상기 외부 인터럽트를 생성할 수 있는 적어도 하나의 인터럽트 소스를 포함하고, 상기 복수 개의 인터럽트 도메인 각각은 개별 인터럽트 하드웨어를 구비하는 것인 외부 인터럽트 핸들링 방법.
  11. 제10항에 있어서,
    상기 복수 개 각각의 인터럽트 도메인 내의 상기 인터럽트 하드웨어는 인터럽트 수신 유닛 및 적어도 하나의 인터럽트 소스 유닛을 포함하고,
    상기 외부 인터럽트를 수신하는 단계는 상기 적어도 하나의 인터럽트 소스 유닛에서 상기 외부 인터럽트를 수신하는 단계를 포함하고,
    상기 외부 인터럽트를 제공하는 단계는 상기 인터럽트 수신 유닛을 이용하여 상기 외부 인터럽트를 상기 적어도 하나의 프로세서에 제공하는 단계를 포함하는 것인 외부 인터럽트 핸들링 방법.
  12. 제11항에 있어서,
    상기 인터럽트 수신 유닛 및 상기 인터럽트 소스 유닛간에의 인터럽트 정보를 공유된 상호 연결부를 통해 전달하는 단계를 더 포함하는 외부 인터럽트 핸들링 방법.
  13. 제12항에 있어서,
    상기 복수 개의 인터럽트 도메인 중 적어도 하나의 인터럽트 도메인에 대해, 상기 공유된 상호 연결부를 통해 인터럽트 정보를 전달하는 단계는 상기 복수 개의 프로세싱 노드 중 적어도 2개의 노드를 상호 연결하는 공유된 상호 연결부를 통해 인터럽트 정보를 전달하는 단계를 포함하는 것인 외부 인터럽트 핸들링 방법.
  14. 제13항에 있어서,
    상기 복수 개의 인터럽트 도메인을 설정하는 단계는, 상기 복수 개의 상호 연결된 프로세싱 노드 중 하나가 외부 인터럽트를 수신하는 프로세서를 포함하지 않고 적어도 하나의 인터럽트 소스 유닛을 포함하는, 적어도 하나의 인터럽트 도메인을 설정하는 단계를 포함하는 것인 외부 인터럽트 핸들링 방법.
  15. 제11항에 있어서,
    상기 복수 개의 인터럽트 도메인을 설정하는 단계는 복수 개의 상기 인터럽트 소스 유닛을 구비한 상기 복수 개의 인터럽트 도메인 중 적어도 하나를 설정하는 단계를 포함하는 것인 외부 인터럽트 핸들링 방법.
  16. 제10항에 있어서,
    상기 인터럽트 도메인 각각의 글로벌 액세스 메모리 맵핑 레지스터에 개별 물리적 어드레스를 할당하는 단계를 더 포함하고, 상기 각각의 인터럽트 도메인의 글로벌 액세스 메모리 맵핑 레지스터의 물리적 어드레스는 상기 글로벌 액세스 메모리 맵핑 레지스터를 포함하는 프로세싱 노드에 할당된 메모리 영역으로부터 일정한 오프셋을 갖는 것인 외부 인터럽트 핸들링 방법.
  17. 복수 개의 상호 연결 노드를 포함하는 데이터 프로세싱 시스템에 사용하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체로서,
    상기 프로그램은 제10항 내지 제16항 중 어느 한 항에 의한 방법을 구현하고, 상기 복수개의 상호 연결 노드 각각은 인터럽트를 생성하는 장치를 포함하고, 상기 복수 개의 노드에 있는 장치들은 동일한 레벨의 인터럽트를 생성할 수 있으며, 상기 복수 개의 상호 연결 노드 중 적어도 하나가 프로세서를 구비하는 것인 컴퓨터로 읽을 수 있는 기록 매체.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR10-2001-7006770A 1998-12-17 1999-11-30 비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐 KR100457146B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/213,998 US6148361A (en) 1998-12-17 1998-12-17 Interrupt architecture for a non-uniform memory access (NUMA) data processing system
US09/213,998 1998-12-17
PCT/GB1999/003988 WO2000036505A1 (en) 1998-12-17 1999-11-30 Interrupt architecture for a non-uniform memory access (numa) data processing system

Publications (2)

Publication Number Publication Date
KR20010087404A KR20010087404A (ko) 2001-09-15
KR100457146B1 true KR100457146B1 (ko) 2004-11-16

Family

ID=22797380

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7006770A KR100457146B1 (ko) 1998-12-17 1999-11-30 비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐

Country Status (13)

Country Link
US (1) US6148361A (ko)
EP (1) EP1141829B1 (ko)
JP (1) JP3606551B2 (ko)
KR (1) KR100457146B1 (ko)
CN (1) CN1128406C (ko)
AT (1) ATE232313T1 (ko)
AU (1) AU1397600A (ko)
CA (1) CA2349662C (ko)
CZ (1) CZ20012154A3 (ko)
DE (1) DE69905287T2 (ko)
HU (1) HUP0104536A3 (ko)
PL (1) PL348253A1 (ko)
WO (1) WO2000036505A1 (ko)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151688A (en) * 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US6546429B1 (en) * 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
FR2792087B1 (fr) * 1999-04-07 2001-06-15 Bull Sa Procede d'amelioration des performances d'un systeme multiprocesseur comprenant une file d'attente de travaux et architecture de systeme pour la mise en oeuvre du procede
US6421775B1 (en) * 1999-06-17 2002-07-16 International Business Machines Corporation Interconnected processing nodes configurable as at least one non-uniform memory access (NUMA) data processing system
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6601234B1 (en) 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US6549949B1 (en) 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6502213B1 (en) * 1999-08-31 2002-12-31 Accenture Llp System, method, and article of manufacture for a polymorphic exception handler in environment services patterns
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6339832B1 (en) * 1999-08-31 2002-01-15 Accenture Llp Exception response table in environment services patterns
US6430643B1 (en) * 1999-09-02 2002-08-06 International Business Machines Corporation Method and system for assigning interrupts among multiple interrupt presentation controllers
US6591348B1 (en) * 1999-09-09 2003-07-08 International Business Machines Corporation Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system
US6564277B1 (en) * 1999-09-30 2003-05-13 Silicon Graphics, Inc. Method and system for handling interrupts in a node controller without attached processors
US6529999B1 (en) * 1999-10-27 2003-03-04 Advanced Micro Devices, Inc. Computer system implementing system and method for ordering write operations and maintaining memory coherency
US6591307B1 (en) * 1999-11-09 2003-07-08 International Business Machines Corporation Multi-node data processing system and method of queue management in which a queued operation is speculatively cancelled in response to a partial combined response
US6799317B1 (en) * 2000-06-27 2004-09-28 International Business Machines Corporation Interrupt mechanism for shared memory message passing
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US6791412B2 (en) 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
TW499795B (en) * 2001-03-19 2002-08-21 Realtek Semiconductor Corp PCI extended function interface and the PCI device using the same
US20020178313A1 (en) * 2001-03-30 2002-11-28 Gary Scott Paul Using software interrupts to manage communication between data processors
US6775730B2 (en) * 2001-04-18 2004-08-10 Sony Corporation System and method for implementing a flexible interrupt mechanism
JP3807250B2 (ja) * 2001-05-18 2006-08-09 日本電気株式会社 クラスタシステム、コンピュータ及びプログラム
US6988155B2 (en) * 2001-10-01 2006-01-17 International Business Machines Corporation Aggregation of hardware events in multi-node systems
US6968411B2 (en) * 2002-03-19 2005-11-22 Intel Corporation Interrupt processing apparatus, system, and method
US7130948B2 (en) * 2002-08-02 2006-10-31 Bian Qiyong B Flexible interrupt handling methods for optical networking apparatuses with multiple multi-protocol optical networking modules
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US7529875B2 (en) * 2003-08-20 2009-05-05 International Business Machines Corporation Assigning interrupts for input/output (I/O) devices among nodes of a non-uniform memory access (NUMA) system
US7117285B2 (en) * 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
US20050198421A1 (en) * 2004-03-08 2005-09-08 Nalawadi Rajeev K. Method to execute ACPI ASL code after trapping on an I/O or memory access
DE602004007489D1 (de) * 2004-05-11 2007-08-23 Sgs Thomson Microelectronics Unterbrechungsbehandlungssystem
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
TWI256591B (en) * 2004-08-11 2006-06-11 Benq Corp Method of reducing interrupts
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
CN100397375C (zh) * 2005-12-02 2008-06-25 北京中星微电子有限公司 多中断处理单元的中断处理的装置和方法
JP4441592B2 (ja) * 2006-02-16 2010-03-31 セイコーエプソン株式会社 並列処理装置及び排他制御方法
US7424563B2 (en) * 2006-02-24 2008-09-09 Qualcomm Incorporated Two-level interrupt service routine
JP4971676B2 (ja) * 2006-04-28 2012-07-11 ルネサスエレクトロニクス株式会社 割り込み制御回路及び割り込み制御方法
US20080086575A1 (en) * 2006-10-06 2008-04-10 Annie Foong Network interface techniques
US8645668B2 (en) 2007-01-11 2014-02-04 Sony Corporation Information processing apparatus, information processing method and computer program
JP2008192128A (ja) * 2007-01-11 2008-08-21 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US8296490B2 (en) 2007-06-29 2012-10-23 Intel Corporation Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system
US8332595B2 (en) * 2008-02-19 2012-12-11 Microsoft Corporation Techniques for improving parallel scan operations
WO2009134217A1 (en) * 2008-04-28 2009-11-05 Hewlett-Packard Development Company, L.P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
US20090327556A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Processor Interrupt Selection
US7996497B2 (en) 2008-06-30 2011-08-09 International Business Machines Corporation Method of handling duplicate or invalid node controller IDs in a distributed service processor environment
US8645596B2 (en) * 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US7996548B2 (en) 2008-12-30 2011-08-09 Intel Corporation Message communication techniques
US8140817B2 (en) * 2009-02-24 2012-03-20 International Business Machines Corporation Dynamic logical partition management for NUMA machines and clusters
US7996595B2 (en) * 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8356130B2 (en) * 2009-08-14 2013-01-15 Advanced Micro Devices, Inc. Mechanism for recording undeliverable user-level interrupts
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US8478877B2 (en) * 2010-02-24 2013-07-02 Oracle International Corporation Architecture-aware allocation of network buffers
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
CN105302577B (zh) * 2015-11-26 2019-05-07 上海兆芯集成电路有限公司 驱动执行单元的机器码产生方法以及装置
CN107533458A (zh) * 2016-02-04 2018-01-02 慧与发展有限责任合伙企业 基于存储器寄存器中断的信令和消息传递
US10496572B1 (en) * 2017-03-06 2019-12-03 Apple Inc. Intracluster and intercluster interprocessor interrupts including a retract interrupt that causes a previous interrupt to be canceled
JP6902948B2 (ja) * 2017-07-13 2021-07-14 日立Astemo株式会社 車両制御装置
US10838760B2 (en) * 2017-11-29 2020-11-17 Nxp Usa, Inc. Systems and methods for interrupt distribution
CN111078387B (zh) * 2017-12-25 2024-01-23 贵阳忆芯科技有限公司 中断聚合装置及其方法
US11611617B2 (en) * 2019-06-16 2023-03-21 Purdue Research Foundation Distributed data store with persistent memory
WO2022036536A1 (en) * 2020-08-18 2022-02-24 Intel Corporation Improving memory training performance by utilizing compute express link (cxl) device-supported memory
US11556485B1 (en) 2021-08-31 2023-01-17 Apple Inc. Processor with reduced interrupt latency
CN117311833B (zh) * 2023-11-29 2024-02-23 苏州元脑智能科技有限公司 一种存储控制方法、装置、电子设备及可读存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4276594A (en) * 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4769768A (en) * 1983-09-22 1988-09-06 Digital Equipment Corporation Method and apparatus for requesting service of interrupts by selected number of processors
US4914571A (en) * 1987-06-15 1990-04-03 International Business Machines Corporation Locating resources in computer networks
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
EP0602858A1 (en) * 1992-12-18 1994-06-22 International Business Machines Corporation Apparatus and method for servicing interrupts in a multiprocessor system
CA2123447C (en) * 1993-09-20 1999-02-16 Richard L. Arndt Scalable system interrupt structure for a multiprocessing system
US5568644A (en) * 1995-05-05 1996-10-22 Apple Computer, Inc. Method and apparatus using a tree structure for the dispatching of interrupts
US5606703A (en) * 1995-12-06 1997-02-25 International Business Machines Corporation Interrupt protocol system and method using priority-arranged queues of interrupt status block control data structures

Also Published As

Publication number Publication date
PL348253A1 (en) 2002-05-20
DE69905287D1 (de) 2003-03-13
US6148361A (en) 2000-11-14
KR20010087404A (ko) 2001-09-15
EP1141829B1 (en) 2003-02-05
ATE232313T1 (de) 2003-02-15
HUP0104536A2 (hu) 2002-03-28
JP3606551B2 (ja) 2005-01-05
CZ20012154A3 (cs) 2001-09-12
JP2000181886A (ja) 2000-06-30
CA2349662A1 (en) 2000-06-22
AU1397600A (en) 2000-07-03
DE69905287T2 (de) 2003-10-30
CA2349662C (en) 2003-02-18
EP1141829A1 (en) 2001-10-10
WO2000036505A1 (en) 2000-06-22
CN1128406C (zh) 2003-11-19
HUP0104536A3 (en) 2002-08-28
CN1330782A (zh) 2002-01-09

Similar Documents

Publication Publication Date Title
KR100457146B1 (ko) 비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐
US6606676B1 (en) Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US5261109A (en) Distributed arbitration method and apparatus for a computer bus using arbitration groups
US5282272A (en) Interrupt distribution scheme for a computer bus
KR100292660B1 (ko) 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템
US9037898B2 (en) Communication channel failover in a high performance computing (HPC) network
EP0535821B1 (en) Method and apparatus for dynamically steering undirected interrupts
US8484307B2 (en) Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8635380B2 (en) Method, system and apparatus for handling events for partitions in a socket with sub-socket partitioning
US7877436B2 (en) Mechanism to provide reliability through packet drop detection
US6986005B2 (en) Low latency lock for multiprocessor computer system
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
US5271020A (en) Bus stretching protocol for handling invalid data
EP0258736A2 (en) Parallel computer with distributed shared memories and distributed task activating circuits
TW457437B (en) Interconnected processing nodes configurable as at least one non-uniform memory access (NUMA) data processing system
US6523076B1 (en) Method and apparatus for synchronizing multiple bus arbiters on separate chips to give simultaneous grants for the purpose of breaking livelocks
JPH1097490A (ja) スケーラブル対称型マルチプロセッサにおいてバス幅またはバス・プロトコルを変更せずに割り込みを分散する方法および装置
US8255913B2 (en) Notification to task of completion of GSM operations by initiator node
US20090199182A1 (en) Notification by Task of Completion of GSM Operations at Target Node
US8275947B2 (en) Mechanism to prevent illegal access to task address space by unauthorized tasks
JPH10320282A (ja) 仮想キャッシュ・コントロール方法及び装置
EP0139568B1 (en) Message oriented interrupt mechanism for multiprocessor systems
JPH1063525A (ja) 情報処理装置、情報処理システム及びその制御方法
US20080209427A1 (en) Hardware Register Access Via Task Tag Id
TW202345009A (zh) 中斷控制器、設備、中斷控制方法、及電腦可讀取媒體

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
LAPS Lapse due to unpaid annual fee