KR101004240B1 - 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택 - Google Patents

프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택 Download PDF

Info

Publication number
KR101004240B1
KR101004240B1 KR1020080087954A KR20080087954A KR101004240B1 KR 101004240 B1 KR101004240 B1 KR 101004240B1 KR 1020080087954 A KR1020080087954 A KR 1020080087954A KR 20080087954 A KR20080087954 A KR 20080087954A KR 101004240 B1 KR101004240 B1 KR 101004240B1
Authority
KR
South Korea
Prior art keywords
processor
processors
cluster
interrupt
interrupts
Prior art date
Application number
KR1020080087954A
Other languages
English (en)
Other versions
KR20090026100A (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 KR20090026100A publication Critical patent/KR20090026100A/ko
Application granted granted Critical
Publication of KR101004240B1 publication Critical patent/KR101004240B1/ko

Links

Images

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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

일부 실시예들에서, 장치는, 인터럽트들(interrupts)이 송신(direct)되는 프로세서들의 클러스터를 식별(identify)하기 위해 프로세서 클러스터 식별 번호를 각각 갖는 인터럽트들과 연관되는 논리적 목적지(logical destination) 식별 번호들을 수신하는 프로세서 선택 로직을 포함한다. 논리적 목적지 식별 번호들은, 프로세서들의 식별된 클러스터 내의 어떤 프로세서들이 인터럽트들 중 대응하는 하나를 수신하는 것이 가능한지 각각 식별한다. 프로세서 선택 로직은 인터럽트를 수신하는 이용가능한 프로세서들 중 하나를 선택하고, 이용가능한 프로세서들 중 선택된 하나는 논리적 목적지 식별 번호들에서의 대응하는 비트(bit)의 상대적인 위치(position)를 통해 식별된다. 다른 실시예들이 기술된다.
Figure R1020080087954
인터럽트, 프로세서 선택 로직, 클러스터, 논리적 목적지 식별 번호

Description

프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택{PROCESSOR SELECTION FOR AN INTERRUPT IDENTIFYING A PROCESSOR CLUSTER}
본 발명의 실시예들은 일반적으로 프로세서들에 대한 인터럽트들에 관한 것이다.
APIC(Advanced Programmable Interrupt Controller)는 인터럽트 요청들을 수신하고 프로그램가능한 절차(procedure)들 또는 우선 순위(priority)들에 따른 인터럽트 출력들을 제공하는 프로그램 가능한 인터럽트 제어기(PIC)이다. 로컬(local) APIC들은 (마이크로프로세서들과 같은) 프로세서들에 이용된다. I/O APIC들은 (입/출력(I/O) 제어기 허브(ICH)와 같은) 칩셋 디바이스들 및 주변 디바이스들에 이용된다. 주변 디바이스들의 예들은, PCI-SIG®에 의해 제공된, 2006년 12월 20일자, PCI 익스프레스® 기본 사양 수정본 2.0과 같은 PCI 익스프레스(PCIe) 표준들 중 하나 또는 PCI(Peripheral Component Interconnect) 표준들 중 하나와 호환가능한 ICH에 연결된 디바이스를 포함한다. xAPIC는 확장된 APIC이고, 이는 초기 APIC들과 유사하지만 일부 부가적인 특징들을 갖고, xAPIC 아키텍처에서, 로컬 및 I/O APIC들은 APIC 버스를 통해서보다는 오히려 시스템 버스를 통해 통신한다. 또 다른 확장된 xAPIC는 부가적인 확장(extension)들 및 특징들을 포함한다.
프로세서 패키지들은 하나보다 많은 코어를 포함하고, 코어 각각은 하나보다 많은 프로세서를 포함한다. 물리적 모드(physical mode) 인터럽트들은, 인터럽팅(interrupting) 디바이스가 물리적 식별 번호에 의해 프로세서를 지정(designate)하는 인터럽트들이거나 또는 모든 프로세서들에 대한 브로드캐스트(broadcast)이다. 논리적 모드(logical mode) 인터럽트들은, 인터럽팅 디바이스가 논리적 식별 번호 또는 번호들에 의해 프로세서 또는 프로세서들을 지정하는 인터럽트들이다. APIC 인터럽트 전달(delivery)들은 지정된(directed) 인터럽트들(단일 프로세서 타겟), 다중-캐스트(다중 프로세서 타겟) 및 브로드캐스트(모든 프로세서들)를 포함한다. 가장 낮은 우선 순위 인터럽트에서, 가장 낮은 프로세서 우선 순위에 있는 프로세서를 선택하여 인터럽트에 응답하는 절차가 이용된다. 가장 낮은 우선 순위는 - 종종 애드 혹(ad hac) 방식의 또는 프로세서 우선 순위에 대한 스테일 데이터(stale data)를 갖는 - 칩셋에서 결정될 수 있다. 우선 순위 정보는 종종 신뢰할 수 없기 때문에, 일부 칩셋들은 (라운드 로빈(round robin) 기술과 같은) 특정 프로세서만을 선택하고, 다른 프로세서들이 인터럽트들을 수신하지만 그들에 응답하지 않는 브로트캐스트 방식으로 그 프로세서에 인터럽트를 제공한다.
논리적인 모드는, 지정된 인터럽트들에 상당히 큰 융통성(flexibility)을 제공하고, 마이크로소프트 윈도우즈 & 일부 리눅스 쉬링크-랩(shrink-wrap) 운영 시 스템들에 의해 이용된 모드이다. xAPIC 아키텍처의 논리적 모드는, 운영 시스템 소프트웨어에, 시스템의 각각의 프로세서에 대한 고유 식별자인, 논리적 APIC 식별 번호(ID)를 초기화하는데 있어서 융통성을 제공한다. (프로세서들은 물리적 AIPC ID들도 포함함) 디바이스들 또는 IOxAPIC들뿐만 아니라 다른 프로세서들이 이러한 ID를 이용하여 이러한 프로세서에 인터럽트들을 송신한다. 논리적 xAPIC ID의 초기화에 있어서 융통성이 주어지면, 플랫폼의 실제 물리적 토폴리지(topology)와 ID들이 할당되는 방법 간에 관계가 없다. 운영 시스템 초기화가, 프로세서들을 그룹화하는데에 있어 운영 시스템들에 더 큰 융통성을 허여한다 하더라도, 이는, 플랫폼 레벨에서, 지정된 논리적 모드 인터럽트들의 라우팅(routing)을 악화시킨다. 논리적 모드 인터럽트들의 라우팅은, 인터럽트들을 브로드캐스팅함으로써 그리고 만일 인터럽트가 그의 로컬 APIC ID와 매치된다면 로컬 프로세서 로직이 인터럽트를 받아들이도록 함으로써 행해진다.
각각의 인터럽트들에 대해 각각 프로세서 체크를 함으로써, 성능 및 전력이 비효율적으로 된다. 예를 들어, 브로트캐스트 접근법 하에, 각각의 프로세서는, 프로세서가 저전력 상태에 있다 하더라도, 인터럽트가 프로세서로 지정되는지를 확인하기(see) 위해 체크한다. 인터럽트들이 사실상 종종 생기기 때문에, 그것은 프로세서를 심한(deep) 저전력 상태로 유지하는 것을 어렵게 만든다. 또한, 인터럽트가 지정되지 않는 패키지들에 인터럽트들을 송신함에 있어, 상호접 속(interconnect)들에 대한 트래픽이 존재하기 때문에 성능이 감소된다. 하나의 접근법 하에서, 운영 시스템은, 프로세서들이 시작되는 순서로 논리적 ID들을 할당함으로써, 프로세서들의 논리적 클러스터가 동일한 패키지의 프로세서들에 대해 존재하도록 시도된다. 이러한 접근법은, 브로드캐스팅이 여전히 이용되는지에 따라서, 부분적인 해결만을 제공한다. 따라서, 효과적인 방식으로 프로세서들에 라우팅될 수 있는 논리적인 APIC들을 생성할 필요성이 남아있다.
일부 실시예들에서, 시스템은 프로세서 물리적 ID들로부터 각각의 프로세서에 대한 논리적 APIC ID들을 생성한다. 논리적 APIC ID들은 클러스터 내에 프로세서 클러스터 ID(인트라-클러스터(intra-cluster) ID) 및 프로세서 번호를 포함한다. 논리적 APIC ID들은, 클러스터 내의 모든 프로세서들이 동일한 프로세서 패키지에 포함되도록 생성된다. 이는, 인터럽트들이 모든 프로세서 패키지들로 브로드캐스트된다기 보다는, 오히려 하나의 프로세서 패키지로만 지정될 수 있기 때문에, 상호접속들에 대한 트래픽을 감소시킨다. 또한, 다른 프로세서 패키지들에서의 프로세서들 (또는 일부 경우들에서, 동일한 프로세서 패키지 내의 다른 클러스터들)은 인터럽트들을 수신하지 않고, 따라서, 인터럽트가 프로세서들에 지정되는지 여부를 결정하지 않아도 되기 때문에, 전력 소모를 감소시킨다. 일부 경우들에서, 이는 프로세서들이 슬립 상태(sleep state)가 되는 것을 막는다.
일부 실시예들에서, 논리적 목적지 식별 번호는 인터럽트에 응답하는 것이 가능한 프로세서들을 포함할 수 있다. 프로세서 선택 로직은, 인터럽트를 수신하 기 위해 이용가능한 프로세서들 중 하나를 선택한다.
다음의 설명에서, 물리적 APIC ID들은 물리적 프로세서 식별 번호들의 예들이고, 논리적 APIC ID들은 논리적 프로세서 식별 번호들의 예들이다. 논리적 APIC ID 생성 로직은 논리적 식별 번호 생성 로직의 예이다.
1. 시스템 개관
도 1은 본 발명들의 일부 실시예들에서 이용될 수 있는 시스템을 도시하지만, 다른 실시예들은 상이한 상세들을 포함하는 시스템들을 포함할 수 있다. 도 1을 참조하면, 시스템은 입/출력 허브(IOH)(12)에 연결된 적어도 하나의 프로세서 패키지(0) 및 프로세서 패키지(1)를 포함하는 다중 프로세서 패키지들을 포함한다. IOH(12)는 IOH I/O APIC(14), 재지정(redirection) 로직(18), 및 프로세서 선택 로직(20)을 포함한다. PCIe I/O APIC(28)를 포함하는 PCIe 디바이스(26)는 인터럽트 인터페이스 회로(30)를 통해 IOH(12)에 연결된다. (키보드 및 마우스와 같은) 디바이스들(36)은 IOH I/O APIC(14)를 통해 인터럽트들을 제공한다. IOH I/O APIC(14), I/O PCIe APIC(28), 및 로컬 APIC들(72-1...72-4 및 78-1...78-4)은 xAPIC들 또는 확장된 xAPIC들과 같은 다양한 타입의 APIC들일 수 있다. 대안적으로, APIC들 이외에 인터럽트 제어기들이 이용될 수 있다.
패키지(0)는 코어들(0 및 1) 및 언코어(uncore)(42)로서 본원에 언급된 부가적인 회로를 포함한다. 코어(0)는, 로컬 APIC들(72-1 및 72-2)을 각각 포함하는 프로세서들(70-1 및 70-2)을 포함하고, 코어(1)는 로컬 APIC들(72-3 및 72-4)을 포 함하는 프로세서들(70-3 및 70-4)을 포함한다. 패키지(1)는 코어들(2 및 3) 및 언코어(52)로서 언급되는 부가적인 회로를 포함한다. 코어(2)는 로컬 APIC들(78-1 및 78-2)을 각각 포함하는 프로세서들(76-1 및 76-2)을 포함하고, 코어(3)는 로컬 APIC들(78-3 및 78-4)을 각각 포함하는 프로세서들(76-3 및 76-4)을 포함한다. 패키지들(0 및 1)은 특별히 도시되지 않은 다양한 컨포넌트들을 포함할 것이다. (주메모리 DRAM과 같은) 메모리(64)는 언코어(42)에 연결되고, 메모리(66)는 언코어(52)에 연결된다. (운영 시스템(OS)을 유지하는 하드 드라이브를 포함하는) 메모리(60)는 IOH(12)에 연결된다. 메모리(60)와 IOH(12) 사이에 중간 컴포넌트들이 존재할 수 있다. BIOS 메모리(62)는 IOH(12)에 연결된다.
프로세서들(70-1, 70-2, 70-3 및 70-4)은 물리적 APIC ID들(P0, P1, P2, 및 P3)을 각각 갖는다. (도 6의) 논리적 APIC ID 생성 로직은, 물리적 ID들(P0, P1, P2 및 P3, 및 P16, P17, P18 및 P19)에 기초하여 각각, 논리적 APIC ID들(L0, L1, L2 및 L3, 및 L16, L17, L18 및 L19)을 제공한다. (물론, P0...P4 및 P16...P19 및 L0...L3 및 L16...L19는 문자("P" 또는 "L") 및 숫자가 아니라, ID 비트들을 나타낸다.) 일부 실시예들에서, 패키지들(0 또는 1)은 2개 이상의 코어들을 포함하고(예를 들어, 도 8을 참조한다), 코어는 2개 이상의 프로세서들을 포함할 수 있다. 도시된 실시예에서, P3와 P16 사이의 물리적 ID들 및 L3와 L6 사이의 대응하는 논리적 ID들에 갭(gap)이 존재한다. 이러한 이유는, 16개의 실제 프로세서들이 존재하는지 아니든지 간에, 이러한 실시예들에서, 클러스터가 16개의 프로세서들에 대한 ID들을 포함하기 때문이다. 프로세서 패키지는 하나의 칩(다이) 또는 하나보 다 많은 칩을 포함할 수 있다. 프로세서 패키지는 0, 하나 또는 하나보다 많은 메모리 칩들을 포함할 수 있다.
재지정 로직(18)은 디바이스(26)로부터 값(예를 들어, 10비트 값)을 수신하고, 패키지(0) 또는 패키지(1)에 인터럽트를 제공한다. 인터럽트에 응답하기 위해 어떤 프로세서가 이용되는지에 대한 결정이 다양한 장소(place)들에서 이루어질 수 있다. 예를 들어, 실시예에 따라, IOH(12)의 프로세서 선택 로직(20) 및/또는 (언코어(42)의 프로세서 선택 서브-로직(46) 또는 언코어(52)의 프로세서 선택 서브-로직(56)과 같은) 언코어의 프로세서 선택 서브-로직에서 결정이 이루어질 수 있다. 서브-로직(46)의 필터(48) 및 서브-로직(56)의 필터(58)는, 예를 들어, 전력 상태(c-상태들) 및/또는 프로세서 우선 순위에 기초하여 컨시더레이션(consideration) 프로세서로부터 걸러내는데(filter out) 이용될 수 있다. 유사한 필터가 프로세서 선택 로직(20)에 이용될 수 있다. 일부 실시예들에서, 프로세서 선택 로직(20)이 아니라, 프로세서 선택 서브-로직만이 존재한다.
도 2는, 도 1과 유사하고, 도 1의 IOH APIC(14), 재지정 로직(18), 프로세서 선택 로직(20), 및 인터럽트 인터페이스 회로(30)와 유사하거나 또는 동일할 수 있는 IOH APIC(114), 재지정 로직(118), 프로세서 선택 로직(120) 및 인터럽트 인터페이스 회로(130)를 갖는 IOH(112)를 도시한다. 도 2는 또한, 프로세서들(0)의 클러스터 및 프로세서들(1)의 클러스터를 포함하는 프로세서 패키지(0), 프로세서들(2)의 클러스터 및 프로세서들(3)의 클러스터를 포함하는 프로세서 패키지(1), 프로세서들(2)(N-1)의 클러스터 및 프로세서들(2)((N-1)+1)의 클러스터들을 포함하 는 프로세서 패키지(N-1)를 도시한다. 프로세서 패키지들(0, 1, ... N-1)은 상호접속들(142-0, 142-1...142-N-1)을 통해 IOH(112)에 연결된다. 일부 실시예들에서, 프로세서들을 분리하기 위해 개별(separate) 상호접속들이 존재하고, 다른 실시예들에서, 하나의 상호접속 세트는, 각각의 클러스터에 대한 하나의 인터럽트 세트 또는 각각의 프로세서 패키지에 대해 이용된다. 인터럽트의 클러스터 ID들은 어떤 클러스터들이 인터럽트를 수신하는지 나타낸다.
예를 들어, 클러스터 ID가 0000000000000010b(여기서 b는 이진법(binary)을 나타낸다)임을 가정한다. 이것은, 클러스터(2)가 인터럽트를 수신하는 것을 나타낸다. 이는, 인터럽트가 모든 프로세서들에 브로드캐스트되는 접근법에 비해, 더 적은 트래픽을 수반하고, 상호접속들에 대한 더 적은 전력을 수반한다. 인터럽트는 상호접속들(142-0 및 142N-1)로 송신되지 않으므로, 대역폭에 기여하는 이러한 상호접속들에 대해 더 적은 트래픽이 존재하고, 전력을 감소시킨다. 또한, 클러스터들(0, 1, 3, 2(N-1), 및 2(N-1)+1)에서의 프로세서들은 인터럽트가 프로세서들에 지정되는지 여부를 체크할 필요가 없어, (특히, 프로세서가, 인터럽트가 프로세서에 지정되는지 여부를 결정하기 위해 심한 저전력 상태가 되어야 하는 경우에) 전력을 감소시킨다. 국지성(locality)으로 인해, 상이한 클러스터들의 프로세서들 사이에 더 적은 캐시 라인 트랙픽(cache line traffic)이 존재할 수도 있다. 다른 실시예들은 프로세서 패키지들에 프로세서들의 상당히 많은 클러스터를 포함할 수 있다. (포함된다면 언코어들과 같은) 다른 컴포넌트들은 도 2에 도시되지 않는다. IOH와 프로세서 패키지들 사이에 브리지들과 같은 부가적인 컴포넌트들이 존재할 수 있다. 또한, 시스템에서 하나보다 많은 IOH가 존재할 수 있다.
도 3은 프로세서 패키지(0)를 수신하는 소켓(0), 프로세서 패키지(N-1)를 수신하는 소켓(N-1), 및 IOH 칩을 수신하는 소켓(194)을 포함하는 소켓들을 포함하는 (PCB와 같은) 회로 보드(190)를 도시한다. 일부 구현들에서, 회로 보드(190)는 프로세서 패키지들 및 다양한 다른 칩들에 대한 부가적인 소켓들을 포함하지만, 다른 구현들에서, 회로 보드(190)는 2개의 소켓만을 포함한다. 본원에 이용된 바와 같이, "소켓"이라는 용어는, 칩 또는 칩들을 회로 보드에 연결시키기 위한 다양한 기술들을 커버한다.
2. APIC ID 초기화
일부 실시예들에서, 물리적 APIC ID들은 예를 들어, 리셋되어 다음 전력 사이클까지 유지될 때, 하드웨어 및/또는 마이크로-코드에 의해 통계적으로 초기화/래치된다(initialized/latched). 도 4는, 일부 실시예들에서, 대응하는 로컬 APIC에 포함되는 32비트 물리적 APIC ID를 보유하는(hold) 레지스터(110)를 도시한다.
논리적 모드에 이용되는 논리적 APIC ID는, 2개의 필드들 - 프로세서들의 클러스터 내의 16비트 와이드 클러스터 ID 및 16비트 와이드 논리적 ID - 로 분할(partition)된다. 논리적 ID의 16개의 최상위 비트들이 목적지 클러스터의 주소 또는 식별 번호를 포함하는 한편, 하위 16개의 비트들은 클러스터 내의 개별적인(individual) 로컬 APIC를 식별한다. 논리적 ID 부분(portion)은 - 예를 들어, 프로세서 클러스터의 프로세서(0)에 대해 비트(0), 프로세서 클러스터의 프로세서(1)에 대해 비트(1)이 설정되는 등- 클러스터의 프로세서 마다 1비트를 갖는 비 트-마스크(bit-mask)일 수 있다. 도 5는, 비트들 (16 내지 31)이 클러스터 ID를 보유하고, 비트들(0 내지 15)이 인트라-클러스터 논리적 ID를 보유하는, 32비트 논리적 APIC ID를 보유하는 레지스터(112)를 도시한다. 현실적인 문제로서, 많은 시스템들은, 예를 들어, 클러스터 ID를 식별하는데 1 또는 2비트가 요구되도록, 적은 수의 프로세서 클러스터들을 가질 것이다. 상이한 실시예들에서, 나머지 비트들은 상이하게 처리될 수 있다. 예를 들어, 비트들 중 일부는 일부 시스템들에서 무시되고 다른 시스템들에서 이용된다.
초기화 알고리즘을 통해, 플랫폼 토폴로지에 기초하여 논리적 APIC ID와 물리적 APIC ID 사이에 수립된(established), 불변(persistent)의 관계가 존재할 수 있다. 이는, 브로드캐스트를 행하는 것과 반대되는 것으로서, 인터럽트들을 라우팅하기 위해, 특정 프로세서 패키지들(소켓들)의 정보(knowledge)를 라우팅 패브릭(routing fabric)에 제공한다.
프로세서 클러스터가 16개의 프로세서들로의 제한을 가질 수 있는 경우에, 프로세서 패키지에 16개 보다 많은 프로세서들이 존재한다면, 그 후 패키지 마다 다중 클러스터가 존재할 것이다. 클러스터에 16개보다 적은 프로세서들이 존재한다면, 그 후 APIC ID들의 패딩(padding)이 이용될 수 있다.
논리적 APIC ID 생성 로직(216)은 물리적 APIC ID들로부터 논리적 APIC ID들을 생성한다. 논리적 APIC ID 생성 로직(216)은 하드웨어, 소프트웨어 또는 마이크로코드 또는 그들의 조합에서 구현될 수 있다. 하드웨어는 언코어 또는 로컬 APIC 또는 다른 곳에 있을 수 있다. 일부 실시예들에서, 클러스터 내에 16비트 논 리적 ID를 제공하기 위해, 물리적 APIC ID의 하위 4비트가 "디코딩"되도록(즉, 1<< 물리적 APIC ID[3:0]) 논리적 APIC ID가 유도된다(derived). 그 후, 물리적 APIC ID의 나머지 16비트들은 논리적 xAPIC ID의 클러스터 ID 부분을 형성한다. 따라서, 논리적 xAPIC ID는 다음 식을 이용하여 로컬 xAPIC ID로부터 유도된다:
논리적 APIC ID = [(물리적 APIC ID[19:4] << 16)∥(1 << 물리적 APIC ID[3:0])]
식에서, 심볼 ∥은 "또는(OR)"을 의미하지만 덧셈(addition)으로 대체될 수 있고, 동일한 결과가 달성될 수 있다.
이 식은 다음과 같이 유사한 방법으로 다시 쓰여질 수 있다:
논리적 ID = (1 << 로컬 xAPIC ID[3:0]) //인트라-클러스터 논리적 ID
∥(로컬 xAPIC ID[19:4] << 16) //클러스터 ID
도 7은 레지스터(210)의 물리적 APIC ID를, 레지스터(212)의 논리적 APIC ID로 변환하는 논리적 APIC들을 유도하는 프로세스의 예를 도시한다. 비트들(20-31)은 무시되거나 다양한 목적으로 이용될 수 있다.
도 8은 2개의 프로세서 각각을 갖는 4개의 코어들을 각각 포함하는 프로세서 패키지들(0 및 1)에서 물리적 APIC ID를 통해 논리적 APIC ID를 획득하는 예를 도시한다. 패키지 마다 16개보다 적은 프로세서가 존재하기 때문에, 패키지 마다 하나의 클러스터만이 존재한다. 패키지(0)를 참조하면, 프로세서(P0)에 대한 물리적 APIC ID는 00000b로서 도시된다. "b"는 이진법에 대한 것이다. 맨 처음의 0은 클러스터 ID로부터 나오고, 클러스터가 패키지(0)내의 하나임을 나타낸다. 도면에서 의 공간을 절약하기 위해, 클러스터 ID로부터의 다른 비트들은 도 8에 도시되지 않는다. 4개의 밑줄친 0들은 인트라-클러스터 ID에 존재하고, (0을 모두 나열함 없이)물리적 APIC ID가 0인것을 나타낸다. 상술된 절차 다음으로, 인트라-클러스터 논리적 ID의 최하위 비트(the least significant bit, LSB)에서 "1"로 시작하고, 그렇지 않으면 0들을 포함하고, 그 후, 물리적 ID의 처음 4개의 비트들에서 발견된 양(amount)만큼 "1" 시프트함으로써, 논리적 APIC ID가 생성된다. 프로세서(P0)의 물리적 ID의 처음 4개의 비트들은 0000이고, "1"은 시프트되지 않기 때문에, 따라서, 논리적 ID는 ("h"가 16진법을 지칭하는 경우에) 0001h이다. 16진법은 큰 수(large number)들이 도 8에 도시되도록 하는데 이용된다. 클러스터 ID(0)는 물리적 ID의 비트들(4-16)에서와 동일하게 유지된다. 프로세서(P1)의 경우에, 클러스터 ID가 클러스터(0)에 대해 0이도록 "1"이 하나의 비트만큼 시프트되어, 물리적 ID의 4개의 LSB들은 0001이고, 논리적 ID는 1이 하나의 비트만큼 시프트됨으로써 야기되는 0002h이다. 예를 들어, 프로세서(P5)의 경우에, "1"은 십진법으로 32이거나 6진법으로 20인 5비트만큼 좌측로 시프트된다. 클러스터 ID가 물리적 및 논리적 APIC ID들 둘 다에서 1인 것을 제외하고, 패키지(1)에 대해 동일하게 따른다.
초기화는 예를 들어, 구현의 용이성에 따라 시간의 여러 지점들에서 일어날 수 있다. 초기화가 일어날 수 있는 때에 대한 예들은, 물리적 APIC ID가 초기화될 때 리셋으로부터 벗어나는 기간 또는 운영 시스템이 먼저 논리적 APIC ID를 판독하는 시점을 포함한다. 필요하다면, APIC ID들의 패딩을 갖는 상기 알고리즘은, 각각의 APIC 클러스터가 단일 프로세서 패키지로 한정된다는 것을 확신할 수 있다.
3. 프로세서 선택 로직 및 재지정
프로세서 선택 로직은, 프로세서를 선택하여 이용가능한 선택들로부터 인터럽트를 수신한다. 논리적 APIC가 인터럽트를 수신하도록 하는 것은, 인터럽트를 수신하는 프로세서의 예이다. 종래 기술에서, 프로세서들은 최저 우선 순위 스킴을 통해 인터럽트들 선택한다. 그러나, 아래 설명되는 바와 같이, 어떤 프로세서가 인터럽트를 수신하는지를 결정하는데에, 프로세서 우선 순위 이외 또는 그에 부가하는 요소(factor)들이 고려될 수 있다.
운영 시스템은, 클러스터 및 인터럽트에 대해 이용가능한 바와 같은 클러스터 내의 적어도 하나의 프로세서를 선택할 수 있다. 이러한 정보는 도 1의 디바이스(26)와 같은 디바이스에 의해 제공된 인터럽트에 직접적으로 또는 간접적으로 포함될 수 있다. 예를 들어, 직접적인 구현에서, 인터럽트는, (일부 비트들이 이용될 수 없는 경우에 16개보다 적은 프로세서들이 존재한다 하더라도) 비트 맵형 방식(bit-mapped fashion)으로 클러스터의 각각의 프로세서에 대해 하나인, 16비트 필드를 포함할 수 있다. 프로세서는 그 프로세서와 연관된 위치(position)에서 "1"로서 이용가능하고, 그러한 위치는 상술된 식 및 도 8의 물리적 APIC ID들로부터 논리적 APIC ID들을 제공하는데 이용된다. 이는 논리적 목적지 ID로 불릴 수 있다. 예로서, 논리적 목적지 ID 비트 마스크가 00101101일 수 있고, 이는 프로세서들(P0, P2, P3 및 P5)이 인터럽트에 대해 이용가능함을 나타낸다. 이는 클러스터에 8개의 프로세서들이 존재한다고 가정하면, 8개의 최좌측의 비트들은 도시되지 않는다. 물론, "0" 및 "1"의 역할은 반대될 수 있어 0은 이용가능한 프로세서를 나타내고, 1은 이용가능하지 않은 프로세서를 나타낸다. 상술된 프로세서 선택 로직은, 어떤 이용가능한 프로세서들이 인터럽트를 수신하는지를 선택할 수 있다. 통상 하나의 프로세서만이 인터럽트를 수신하지만, 일부 경우들에서, 인터럽트는 하나보다 많은 프로세서에 지정될 수 있다는 점이 주목된다.
대안으로서, 디바이스(36)로부터의 인터럽트는 (16비트 인덱스(index)와 같은) 인덱스를 포함할 수 있고, 이는 도 1의 재지정 로직(19)에 포함될 수 있는 재지정 표에 인덱스를 제공한다. 도 9를 참조하면, 재지정 표(230)는, 예를 들어, 상이한 인덱스 값들에 대한 64 비트 엔트리(entry)들을 포함한다. 엔트리(234)는 예이다. 도 10은 일부 실시예들에 따른 예시적인 엔트리(234)에 대한 상세들을 도시하지만, 다른 실시예들에서, 그것은 상이할 수 있다. 도 10을 참조하면, 비트들(48-63)은 클러스터 ID를 나타내고, 이는 도 10의 예로서, 클러스터(2)가 인터럽트를 수신하는 것을 나타낸다. 도 2와 관련된 예를 참조한다. 또한, 도 10을 참조하면, 논리적 목적지 ID는, 고려되는 프로세서 선택 로직(또는 서브-로직)에 대해 이용가능한 프로세서들을 나열한다. 목적지 ID 비트 마스크(011b)는, 프로세서들(P0 및 P1)이 이용가능하고, 나머지 프로세서들은 이용가능하지 않음을 나타낸다. 도시의 편리함을 위해, 16 비트들 중 3비트만이 도 10에 도시된다. 다른 예로서, 목적지 비트 마스크는 프로세서들(P0, P2, P3 및 P5)이 이용가능하고, 프로세서들(P1, P4, P6 및 P7)이 이용가능하지 않은 것을 나타내는 00101101b일 수 있다. 본 예에서 프로세서들(P8-P15)은 존재하지 않는다. 하나의 프로세서만 이용가능할 수 있다. 비트들(0 내지 31)은 지정 인터럽트들이 포함되는지 여부와 같은 다양한 타입의 라우팅 정보를 제공할 수 있다. "최저 우선 순위"가 도 10에 도시되지만, 상술된 바와 같이 전력 상태들과 같은 다른 요소들이 고려될 수 있고, 엄밀히 말해서, 최저 우선 순위 선택이 고려될 수 없다.
프로세서 전력 상태들 및 우선 순위들의 정보에 기초하여 클러스터 내의 인터럽트를 라우팅하는데 이용될 수 있는 여러 가능한 구현들이 존재한다. "언코어(uncore)"에서의 하나의 가능한 구현은, 프로세서 전력 상태들 정보 및 우선 순위들을 이용하여, 성능 함축(implication)들을 고려하는 전력 인지(power aware) 인터럽트 라우팅 모두 가능하게 하는 인터럽트 라우팅을 제공한다. 언코어는, - 예를 들어, C0, C1, C2,....C6와 같이 지칭되는 - 프로세서의 C-상태(절전 상태)의 정보를 가질 수 있고, 여기서, C0는 프로세서(또는 코어)가 사용중인 코드(running code)인 상태이고, C1,...C6는 프로세서가 정지한 유휴 상태들이다: C1은 최저 절전 상태이고, C6는 최고 절전 상태이다. C1으로 들어가는 레이턴시(latency)(및 마이크로-아키텍처적 부작용들)는 가장 낮고 한편, C6에 대해 가장 높을 수 있다. (C6와 같은) 더 심한(deeper) C-상태들로부터 최고값을 제공하기 위해, 프로세서가, 가장 긴 가능한 간격 동안 그 상태로 유지하기 위해 C6 상태로 들어가도록 허여하는 것이 바람직할 수 있다. 이러한 가능한 구현에서, 언코어는, (1) 최저 넘버링된 C-상태에서 프로세서(들)을 식별함으로써, 및 (2) 인터럽트에 대한 타겟으로서, 이러한 프로세서들 사이의 최저 우선 순위를 갖는 프로세서를 찾음으로써 타겟을 식별할 수 있다. 이러한 접근법들이 구현될 수 있는 여러 방법들이 존재한다. 구현은, 인입되는 타겟 비트 맵에 대해, 다양한 C-상태들의 패키지에서 프로 세서들의 비트맵을 유지할 수 있고, 그 비트맵에서 최고 또는 최저 APIC ID를 타겟으로서 고를 수 있다. 다른 구현 상세들이 이용될 수 있다.
부가적인 정보 및 실시예들
본원에 언급된 "로직"은 회로들, 소프트웨어, 마이크로코드 또는 그들의 조합에서 구현될 수 있다.
실시예는 본 발명들에 대한 구현 또는 예이다. 명세서에서의 "실시예", "일 실시예", "일부 실시예들", 또는 "다른 실시예들"에 대한 참조는, 실시예들과 관련되어 기술된 특정 특징, 구조 또는 특성이 적어도 일부 실시예들에 포함되지만 반드시 모든 실시예들에 포함되지 않는다는 것을 의미한다. "실시예", "일 실시예", 또는 "일부 실시예들"의 다양한 출현은 반드시 모두 동일한 실시예들을 지칭하지 않는다.
구성요소 "A"가 구성요소 "B"에 연결될 때, 구성요소(A)는 구성요소(B)에 직접 연결될 수 있거나 또는 예를 들어, 구성요소(C)를 통해 간접적으로 연결될 수 있다.
명세서 또는 특허청구범위들에서, 컴포넌트, 특징, 구조, 프로세스 또는 특성 A가 컴포넌트, 특징, 구조, 프로세스 또는 특성 B를 "야기시킨다"는 것이 기재되어 있을 때, 이는, "A"는 "B"의 적어도 부분적인 원인이지만, "B"를 야기시키는 것을 돕는 적어도 하나의 다른 컴포넌트, 특징, 구조, 프로세스 또는 특성이 존재할 수도 있다는 것을 의미한다. 마찬가지로, A가 B에 대해 반응하는 것은, C에 대해 반응하지 않는 것을 의미하지는 않는다.
명세서에서 "일 수 있다(may)", "일지 모른다(might)" 또는 "할 수 있다(could)"가 포함된 컴포넌트, 특징, 구조, 프로세스 또는 특성이 언급되어 있다면, 특정 컴포넌트, 특징, 구조, 프로세스 또는 특성이 포함될 것을 요구하지는 않는다. 명세서 또는 특허청구범위에서 "하나(a)" 또는 "하나(an)"의 구성요소를 언급한다면, 하나의 구성요소만이 존재하는 것을 의미하지는 않는다. 본 발명들은 본원에 기술된 특정 상세들로 제한되지 않는다. 실제, 전술한 설명 및 도면들에 대한 많은 다른 변화들이 본 발명들의 범위 내에서 이루어질 수 있다. 따라서, 본 발명들의 범위를 정의하는 것은, 그에 임의의 수정들을 포함하는 다음의 특허 청구항들이다.
본 발명들은, 본 발명들의 실시예들의 수반하는 도면들 및 아래 주어진 상세 설명으로부터 보다 완전히 이해될 것이나, 기술된 특정 실시예들로 본 발명들을 제한하지 않고, 단지 설명 및 이해를 위해서만 취해져야 한다.
도 1은 본 발명들의 일부 실시예들에 따른, 다중-코어 프로세서 패키지들, 입/출력 허브 및 디바이스를 포함하는 시스템을 대표하는 블록도이다.
도 2는 본 발명들의 일부 실시예들에 따른, 다중-코어 프로세서 패키지들, 입/출력 허브 및 디바이스를 포함하는 시스템을 대표하는 블록도이다.
도 3은 본 발명들의 일부 실시예들에서의 이용을 위한 회로 보드 상의 소켓들을 대표하는 블록도이다.
도 4는 본 발명들의 일부 실시예들에서의 이용을 위한 물리적인 APIC ID 레지스터(register)를 대표하는 블록도이다.
도 5는 본 발명들의 일부 실시예들에서의 이용을 위한 논리적 APIC ID 레지스터를 대표하는 블록도이다.
도 6은 논리적 APIC ID 생성 로직을 대표하는 블록도이다.
도 7은 본 발명들의 일부 실시예들에서의 이용을 위한 물리적 APIC ID로부터의 논리적 APIC ID의 생성을 도시한다.
도 8은 본 발명들의 일부 실시예들에 따라 패키지 마다 4개의 코어 및 코어 마다 2개의 논리적 프로세서들을 갖는 2개의 소켓 시스템에 대한 물리적 및 논리적 APIC ID들을 도시한다.
도 9는 본 발명들의 일부 실시예들에서의 이용을 위한 다중 엔트리(multiple entry)들을 갖는 APIC 재지정 표(redirection table)를 대표하는 블록도이다.
도 10은 본 발명들의 일부 실시예들에서의 이용을 위한 APIC 재지정 표 엔트리를 대표하는 블록도이다.
〈도면의 주요 부분에 대한 부호의 설명〉
12: 입/출력 허브(IOH)
14: IOH I/O APIC
18: 재지정 로직
20: 프로세서 선택 로직
26: PCIe 디바이스
28: PCIe I/O APIC
30: 인터럽트 인터페이스 회로
42, 52: 언코어
64, 66: 메모리

Claims (15)

  1. 인터럽트들이 지정되는(directed) 프로세서들의 클러스터를 식별하기 위한 프로세서 클러스터 식별 번호를 각각 갖는 인터럽트들과 연관된 논리적 목적지 식별 번호들을 수신하는 프로세서 선택 로직 - 상기 논리적 목적지 식별 번호들의 각각은 식별된 프로세서들의 클러스터 내의 어떤 프로세서들이 인터럽트들 중 대응하는 하나를 수신하는 데에 이용가능한지를 식별하기 위한 것임 -
    을 포함하고,
    상기 프로세서 선택 로직은 상기 인터럽트를 수신하는 데에 이용가능한 프로세서들 중 하나를 선택하기 위한 것이고, 상기 이용가능한 프로세서들 중 선택된 하나는 상기 논리적 목적지 식별 번호들에서의 대응하는 비트의 상대적인 위치를 통해 식별되는 인터럽트 제어 장치.
  2. 제1항에 있어서,
    상기 프로세서 선택 로직은 상기 선택 시에 상기 이용가능한 프로세서들의 전력 상태들에 따라 인터럽트를 수신하는 프로세서를 선택하는 인터럽트 제어 장치.
  3. 제1항에 있어서,
    상기 프로세서 선택 로직은 상기 이용가능한 프로세서들의 프로세서 우선 순위(priority)들에 따라 인터럽트를 수신하는 프로세서를 선택하는 인터럽트 제어 장치.
  4. 제1항에 있어서,
    상기 프로세서 선택 로직은 상기 선택 시에 상기 이용가능한 프로세서들의 전력 상태들 및 프로세서 우선 순위들에 따라 인터럽트를 수신하는 프로세서를 선택하는 인터럽트 제어 장치.
  5. 제1항에 있어서,
    상기 프로세서 클러스터 식별 번호가 식별할 수 있는 프로세서들의 클러스터들 중에 있는 프로세서들의 제1 및 제2 클러스터들을 더 포함하고, 상기 제1 클러스터를 포함하는 제1 프로세서 패키지 및 상기 제2 클러스터를 포함하는 제2 프로세서 패키지를 더 포함하는 인터럽트 제어 장치.
  6. 제5항에 있어서,
    상기 프로세서 클러스터 식별 번호가 식별할 수 있는 프로세서들의 클러스터들 중에 있는 프로세서들의 제3 및 제4 클러스터들을 더 포함하는 인터럽트 제어 장치.
  7. 제1항에 있어서,
    상기 논리적 목적지 식별 번호들을 포함하는 엔트리(entry)들을 포함하는 재지정 표(redirection table)를 더 포함하는 인터럽트 제어 장치.
  8. 제7항에 있어서,
    상기 장치는, 인덱스들로서 작용하는 값들을 상기 재지정 표에 제공하는 디바이스들과 인터페이스하는 인터페이스 회로를 포함하는 인터럽트 제어 장치.
  9. 프로세서들의 다수의 클러스터들 중 어떤 클러스터에 인터럽트들이 지정되는지를 프로세서 클러스터 식별 번호로부터 결정하는 단계;
    상기 인터럽트들과 연관된 논리적 목적지 식별 번호들을 수신하는 단계 - 상기 논리적 목적지 식별 번호들의 각각은 식별된 프로세서들의 클러스터 내의 특정 프로세서들을 인터럽트들 중 대응하는 하나를 수신하는 데에 이용가능한 것으로서 식별하기 위한 것임 - ; 및
    상기 인터럽트를 수신하는 데에 이용가능한 프로세서들 중 하나를 선택하는 단계 - 상기 이용가능한 프로세서들 중 선택된 하나는 상기 논리적 목적지 식별 번호들에서의 대응하는 비트의 상대적인 위치를 통해 식별됨 -
    를 포함하는 인터럽트 제어 방법.
  10. 제9항에 있어서,
    프로세서 선택 로직은 상기 선택 시에 상기 이용가능한 프로세서들의 전력 상태들 및 프로세서 우선 순위들에 따라 인터럽트를 수신하는 프로세서를 선택하는 인터럽트 제어 방법.
  11. 제9항에 있어서,
    재지정 표를 통해 상기 논리적 목적지 식별 번호들을 선택하는 단계를 더 포함하는 인터럽트 제어 방법.
  12. 프로세서들의 적어도 하나의 클러스터를 각각 포함하는 프로세서 패키지들;
    프로세서 클러스터 식별 번호들을 각각 포함하는 인터럽트들을 수신하고, 대응하는 프로세서 클러스터 식별 번호에 기초하여 프로세서들의 클러스터들 중 하나에 상기 인터럽트들을 지정하는 로직 - 프로세서 클러스터마다, 해당 클러스터 내의 모든 프로세서들은 단일 프로세서 패키지에 포함됨 - ; 및
    상기 프로세서 클러스터 식별 번호들 중 하나를 각각 갖는 인터럽트들과 연관된 논리적 목적지 식별 번호들을 수신하는 프로세서 선택 로직 - 상기 논리적 목적지 식별 번호들의 각각은 식별된 프로세서들의 클러스터 내의 어떤 프로세서들이 인터럽트들 중 대응하는 하나를 수신하는 데에 이용가능한지를 식별하기 위한 것임 -
    을 포함하고,
    상기 프로세서 선택 로직은 상기 인터럽트를 수신하는 데에 이용가능한 프로세서들 중 하나를 선택하기 위한 것이고, 상기 이용가능한 프로세서들 중 선택된 하나는 상기 논리적 목적지 식별 번호들에서의 대응하는 비트의 상대적인 위치를 통해 식별되는 인터럽트 제어 시스템.
  13. 제12항에 있어서,
    상기 프로세서 클러스터 식별 번호들 중 적어도 일부와 상기 논리적 목적지 식별 번호들 중 적어도 일부를 제공하는 재지정 표를 포함하는 입출력 허브를 더 포함하고, 상기 프로세서 선택 로직은 상기 입출력 허브에 포함되는 인터럽트 제어 시스템.
  14. 제12항에 있어서,
    상기 프로세서 선택 로직은 상기 프로세서 패키지들 중 제1 패키지에 포함된 제1 프로세서 선택 서브-로직 및 상기 프로세서 패키지들 중 제2 패키지에 포함된 제2 프로세서 선택 서브-로직을 포함하는 인터럽트 제어 시스템.
  15. 제12항에 있어서,
    상기 프로세서 선택 로직은 상기 선택 시에 상기 이용가능한 프로세서들의 전력 상태들에 따라 인터럽트를 수신하는 프로세서를 선택하는 인터럽트 제어 시스템.
KR1020080087954A 2007-09-06 2008-09-05 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택 KR101004240B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/850,790 US7769938B2 (en) 2007-09-06 2007-09-06 Processor selection for an interrupt identifying a processor cluster
US11/850,790 2007-09-06

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020100048215A Division KR101035447B1 (ko) 2007-09-06 2010-05-24 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택

Publications (2)

Publication Number Publication Date
KR20090026100A KR20090026100A (ko) 2009-03-11
KR101004240B1 true KR101004240B1 (ko) 2010-12-24

Family

ID=40340233

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020080087954A KR101004240B1 (ko) 2007-09-06 2008-09-05 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택
KR1020100048215A KR101035447B1 (ko) 2007-09-06 2010-05-24 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020100048215A KR101035447B1 (ko) 2007-09-06 2010-05-24 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택

Country Status (4)

Country Link
US (1) US7769938B2 (ko)
KR (2) KR101004240B1 (ko)
CN (2) CN102609311B (ko)
DE (1) DE102008035120B4 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713095B2 (en) 2016-03-28 2020-07-14 Samsung Electronics Co., Ltd. Multi-core processor and method of controlling the same using revisable translation tables

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8032681B2 (en) * 2007-09-06 2011-10-04 Intel Corporation Processor selection for an interrupt based on willingness to accept the interrupt and on priority
US7783811B2 (en) * 2007-12-17 2010-08-24 Microsoft Corporation Efficient interrupt message definition
CN101546276B (zh) * 2008-03-26 2012-12-19 国际商业机器公司 多核环境下实现中断调度的方法及多核处理器
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
US8103816B2 (en) * 2008-10-28 2012-01-24 Intel Corporation Technique for communicating interrupts in a computer system
US7996548B2 (en) * 2008-12-30 2011-08-09 Intel Corporation Message communication techniques
CN101908003B (zh) * 2009-06-05 2014-10-22 Sap股份公司 并行化查询的多核调度
US8688883B2 (en) 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
US8972642B2 (en) * 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded processor
US8949474B1 (en) * 2011-11-21 2015-02-03 Marvell International Ltd. Method for inter-chip and intra-chip addressing using port identifiers and address mapping
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US8806104B2 (en) 2012-09-25 2014-08-12 Intel Corporation Enabling virtualization of a processor resource
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system
US9384156B2 (en) * 2013-11-21 2016-07-05 Microsoft Technology Licensing, Llc Support for IOAPIC interrupts in AMBA-based devices
JP6365224B2 (ja) * 2014-10-21 2018-08-01 富士通株式会社 センシング制御プログラム及び携帯端末装置
US10031573B2 (en) * 2014-11-17 2018-07-24 Mediatek, Inc. Energy efficiency strategy for interrupt handling in a multi-cluster system
US20160188503A1 (en) * 2014-12-25 2016-06-30 Intel Corporation Virtual legacy wire
KR102296740B1 (ko) * 2015-09-16 2021-09-01 삼성전자 주식회사 메모리 장치 및 그것을 포함하는 메모리 시스템
US10216245B2 (en) 2015-12-22 2019-02-26 Cray Inc. Application ramp rate control in large installations
US10289188B2 (en) * 2016-06-21 2019-05-14 Intel Corporation Processor having concurrent core and fabric exit from a low power state
US10747631B2 (en) * 2018-01-19 2020-08-18 DinoplusAI Holdings Limited Mission-critical AI processor with record and replay support
US11675718B2 (en) * 2021-03-26 2023-06-13 Advanced Micro Devices, Inc. Enhanced low-priority arbitration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100292660B1 (ko) 1993-12-30 2001-09-17 피터 엔. 데트킨 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템
WO2006105208A2 (en) 2005-03-28 2006-10-05 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5612128A (en) * 1988-09-09 1997-03-18 Hitachi, Ltd. Ultra fine particles having uneven surfaces and treatment plate using same
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
US5613128A (en) 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US5724527A (en) * 1995-12-28 1998-03-03 Intel Corporation Fault-tolerant boot strap mechanism for a multiprocessor system
US6665761B1 (en) * 1999-07-28 2003-12-16 Unisys Corporation Method and apparatus for routing interrupts in a clustered multiprocessor system
US6687818B1 (en) * 1999-07-28 2004-02-03 Unisys Corporation Method and apparatus for initiating execution of an application processor in a clustered multiprocessor system
US6772241B1 (en) * 2000-09-29 2004-08-03 Intel Corporation Selective interrupt delivery to multiple processors having independent operating systems
US6983339B1 (en) * 2000-09-29 2006-01-03 Intel Corporation Method and apparatus for processing interrupts of a bus
US7328294B2 (en) * 2001-12-03 2008-02-05 Sun Microsystems, Inc. Methods and apparatus for distributing interrupts
US7039740B2 (en) * 2002-07-19 2006-05-02 Newisys, Inc. Interrupt handling in systems having multiple multi-processor clusters
US7051137B2 (en) * 2002-10-31 2006-05-23 Intel Corporation Event delivery
US7191349B2 (en) * 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US7363411B2 (en) * 2003-10-06 2008-04-22 Intel Corporation Efficient system management synchronization and memory allocation
US7222203B2 (en) * 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
US7089341B2 (en) * 2004-03-31 2006-08-08 International Business Machines Corporation Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform
US7496706B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
JP2006352706A (ja) * 2005-06-17 2006-12-28 Hitachi Ltd マイクロプロセッサ、ネットワークシステム及び通信方法
US20060294277A1 (en) 2005-06-24 2006-12-28 Tetrick Raymond S Message signaled interrupt redirection
TW200708969A (en) * 2005-08-24 2007-03-01 Tyan Computer Corp ID allocating method for advanced programmable interrupt controller
CN100478930C (zh) * 2005-11-29 2009-04-15 环达电脑(上海)有限公司 高级可编程中断控制器的识别码配置方法
US20070239917A1 (en) * 2005-12-09 2007-10-11 Ryuji Orita Interrupt routing within multiple-processor system
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US20080162762A1 (en) 2006-12-29 2008-07-03 Gilbert Neiger Interrupt remapping based on requestor identification

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100292660B1 (ko) 1993-12-30 2001-09-17 피터 엔. 데트킨 프로세서가통합된인터럽트제어기를갖춘멀티프로세서프로그래머블인터럽트제어기시스템
WO2006105208A2 (en) 2005-03-28 2006-10-05 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713095B2 (en) 2016-03-28 2020-07-14 Samsung Electronics Co., Ltd. Multi-core processor and method of controlling the same using revisable translation tables

Also Published As

Publication number Publication date
DE102008035120A1 (de) 2009-03-12
US20090070511A1 (en) 2009-03-12
CN102609311B (zh) 2014-12-17
DE102008035120B4 (de) 2014-11-13
KR101035447B1 (ko) 2011-05-18
CN101382910B (zh) 2012-03-07
CN102609311A (zh) 2012-07-25
US7769938B2 (en) 2010-08-03
CN101382910A (zh) 2009-03-11
KR20090026100A (ko) 2009-03-11
KR20100061648A (ko) 2010-06-08

Similar Documents

Publication Publication Date Title
KR101004240B1 (ko) 프로세서 클러스터를 식별하는 인터럽트에 대한 프로세서 선택
JP5124647B2 (ja) クラスタidとイントラクラスタidとを有する論理apicidの作成
US10417160B2 (en) System and method for extended peripheral component interconnect express fabrics
US7865654B2 (en) Programmable bridge header structures
US10063638B2 (en) NVM express controller for remote access of memory and I/O over ethernet-type networks
US7565463B2 (en) Scalable routing and addressing
US8032681B2 (en) Processor selection for an interrupt based on willingness to accept the interrupt and on priority
US20140237156A1 (en) Multi-path id routing in a pcie express fabric environment
US8446824B2 (en) NUMA-aware scaling for network devices
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
WO2012023149A2 (en) Multi-root input output virtualization aware switch
US8725919B1 (en) Device configuration for multiprocessor systems
CN108768667B (zh) 一种用于多核处理器片内核间网络通信的方法
US7110413B2 (en) Downstream broadcast PCI switch
WO2003046740A2 (en) Software transparent system and method for peer-to-peer message routing
US20110072246A1 (en) Node control device interposed between processor node and io node in information processing system
WO2023112646A1 (ja) 情報処理装置、及び情報処理装置の制御方法
US20220229799A1 (en) Processor interface assembly, operation method, and processor
CN115225694A (zh) 数据流传输方法、装置、设备和介质
CN117280331A (zh) 用于处理来自通信网络中的外围设备的请求传输的技术
JPS5858671A (ja) 装置間母線制御方式

Legal Events

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

Payment date: 20131202

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151201

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 9