KR100978147B1 - 중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템 - Google Patents

중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템 Download PDF

Info

Publication number
KR100978147B1
KR100978147B1 KR1020087010965A KR20087010965A KR100978147B1 KR 100978147 B1 KR100978147 B1 KR 100978147B1 KR 1020087010965 A KR1020087010965 A KR 1020087010965A KR 20087010965 A KR20087010965 A KR 20087010965A KR 100978147 B1 KR100978147 B1 KR 100978147B1
Authority
KR
South Korea
Prior art keywords
interrupt
apic
processing units
message
logic
Prior art date
Application number
KR1020087010965A
Other languages
English (en)
Other versions
KR20080089564A (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 KR20080089564A publication Critical patent/KR20080089564A/ko
Application granted granted Critical
Publication of KR100978147B1 publication Critical patent/KR100978147B1/ko

Links

Images

Classifications

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

Abstract

APIC 로직(logic)의 단일 복사본을 갖는 중앙형 인터럽트 콘트롤러는 멀티시퀀서 칩 또는 시스템의 모든 프로세싱 유닛에 대해 APIC 인터럽트 전송 서비스를 제공한다. 중앙형 인터럽트 콘트롤러는 페어니스 방안(fairness scheme)에 따라 인터럽트 서비스를 스케줄링한다. 중앙형 인터럽트 콘트롤러의 적어도 하나의 실시예는 선택된 인터럽트 메시지의 송신을 필터링하기 위한 방화벽 로직을 또한 포함한다. 다른 실시예가 또한 기술되어 청구되어 있다.

Description

중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템{CENTRALIZED INTERRUPT CONTROLLER}
본 발명은 전자 회로 제어 인터럽트의 분야에 관한 것이다. 보다 구체적으로, 다수의 프로세싱 유닛을 위한 중앙형(centralized)의 개선된 프로그램 가능한 인터럽트 콘트롤러(Advanced Programmable Interrupt Controller : APIC)에 관한 것이다.
임의의 컴퓨터 시스템의 성능에 대한 기본으로서, 프로세싱 유닛은 컴퓨터 시스템에 결합된 주변 장치에 의해 요구될 수 있는 각종 간헐적인 "서비스"의 제어를 포함하는 다수의 동작을 수행한다. 프린터, 스캐너 및 디스플레이 장치와 같은 컴퓨터 항목을 포함하는 입/출력("I/O") 주변 설비는 적절한 기능을 보장하기 위해 호스트 프로세서에 의한 간헐적인 서비스를 필요로 한다. 서비스는, 예를 들어, 데이터 전송, 데이터 캡쳐 및/또는 제어 신호를 포함할 수 있다.
각각의 주변 장치는 전형적으로 장치의 유형 뿐만 아니라 그 프로그래밍된 용도에 의존하는 상이한 서비스 스케줄링을 갖는다. 호스트 프로세서는 개별적인 필요에 따라 이들 장치 간의 그 서비스 활동을 멀티플렉싱하면서 하나 이상의 배경 프로그램을 실행한다. 호스트에 서비스의 필요성을 알리는 적어도 2개의 방법, 즉, 폴링(polling) 및 인터럽트(interrupt) 방법이 사용되어 왔다. 전자의 방법에서, 각각의 주변 장치는 서비스 요구를 표시하는 플래그가 설정되었는지 여부를 알 수 있도록 주기적으로 체크된다. 후자의 방법에서, 장치 서비스 요구는 호스트를 인터럽트할 수 있는 인터럽트 콘트롤러로 라우팅되어, 그 현재의 프로그램으로부터의 분기를 특수한 인터럽트 서비스 루틴으로 포싱(forcing)한다. 인터럽트 방법은 호스트가 폴링을 위해 불필요한 클록 사이클을 제공할 필요가 없으므로 유용하다. 본 발명의 개시 내용이 다루는 것이 이러한 후자의 방법이다.
멀티프로세서 컴퓨터 시스템의 도래에 따라, 프로세서 간의 인터럽트를 동적으로 분배하는 인터럽트 관리 시스템이 구현되어 왔다. 개선된 프로그램 가능한 인터럽트 콘트롤러(Advanced Programmable Interrupt Controller : APIC)가 이러한 멀티프로세서 인터럽트 관리 시스템의 예이다. 다수의 멀티프로세서 인터럽트 관리 시스템에 채용되어, 다른 프로세싱 유닛 또는 주변 장치로부터 인터럽트 요구를 검출하고 인터럽트 요구에 대응하는 특정의 서비스가 수행될 필요가 있음을 하나 이상의 프로세싱 유닛에 알리기 위해 APIC 인터럽트 전송 메커니즘이 사용될 수 있다. APIC 인터럽트 전송 시스템에 관한 다른 세부 사항은 "Multiprocessor Programmable Interrrupt Controller System"이란 명칭의 카슨 등(Carson et al.)에 의한 미국 특허 제 5,283,904 호에서 찾아볼 수 있다.
다수의 통상적인 APIC는 다수의 게이트(즉, 하이 게이트 카운트)를 필요로 하는 설계 집약적인 하드웨어이다. 다수의 멀티프로세서 시스템에서, 각각의 코어는 코어 내에 완전하게 자체 포함되는 그 자신의 전용 APIC를 갖는다. 다른 멀티프로세서 시스템의 경우, 각각의 코어는 다수의 논리적 프로세서를 갖는 동시적인 멀티스레딩(multi-threading) 코어이다. 그러한 시스템의 경우, 각각의 논리적 프로세서는 APIC와 연관됨에 따라, 각각의 멀티스레딩된 코어는 그 자신의 아키텍처 상태(architectural state)를 각각 유지하는 다수의 APIC 인터럽트 전송 메커니즘을 포함하며, 그 밖의 모든 APIC의 제어 로직과 전반적으로 동일한 그 자신의 제어 로직을 구현한다. 두 유형의 멀티프로세서 시스템의 경우, 다수의 APIC에 대한 다이 면적 및 누설 전력 비용이 바람직하지 않게 클 수 있다. 또한, 멀티프로세서 시스템에서 인터럽트를 전송하기 위한 다수의 APIC의 동작에 관련된 동적 전력 비용이 또한 바람직하지 않게 클 수 있다.
도면의 간단한 설명
본 발명의 실시예는 유사한 요소가 유사한 부재에 의해 표시되는 이후의 도면을 참조하여 이해될 수 있다. 이들 도면은 다수의 프로세싱 유닛에 대해 중앙형 APIC 콘트롤러에 대한 장치, 시스템 및 방법의 선택된 실시예에 제한하는 것이 아니며 이들 실시예를 예시하도록 제공되는 것으로 의도되어 있다.
도 1은 다수의 프로세싱 유닛에 인터럽트 제어를 제공하기 위한 중앙형 인터럽트 콘트롤러의 적어도 하나의 실시예를 도시하는 블록도이고,
도 2는 중앙형 인터럽트 콘트롤러의 적어도 하나의 실시예에 대한 다른 세부 사항을 도시하는 블록도이며,
도 3은 멀티시퀀서 시스템의 각종 실시예를 도시하는 블록도이고,
도 4는 다수의 코어에 대한 인터럽트 상태의 중앙 레포지토리(repository)의 적어도 하나의 실시예를 도시하는 블록도이며,
도 5는 중앙형 인터럽트 콘트롤러에 대한 인터럽트 시퀀서 블록 동작의 적어도 하나의 실시예를 도시하는 상태도이고,
도 6은 개시된 기법을 수행할 수 있는 컴퓨팅 시스템의 적어도 하나의 실시예를 도시하는 블록도이다.
이하의 설명은 다수의 프로세싱 유닛을 위한 중앙형 APIC에 대한 제조 방법, 시스템 및 제조물의 선택된 실시예를 기술한다. 본 명세서에서 기술된 메커니즘은 단일의 코어 또는 멀티 코어(multi-core) 멀티스레딩 시스템과 함께 이용될 수 있다. 후술하는 설명에서, 본 발명의 보다 완전한 이해를 제공하기 위해, 프로세서 유형, 멀티스레딩 환경, 시스템 구성, 및 멀티시퀀서 시스템에서의 시퀀서의 개수 및 유형과 같은 다수의 특정 세부 사항이 개시되어 있다. 그러나, 당 분야에서 통상의 지식을 가진 자라면 본 발명이 각각의 특정의 세부 사항 없이도 실시될 수 있음이 이해할 것이다. 추가적으로, 몇몇 잘 알려진 구조, 회로 등은 본 발명을 불필요하게 불명확하게 되는 것을 방지하기 위해 도시되어 있지 않다.
도 1은 중앙형 인터럽트 콘트롤러(110)를 포함하는 시스템(100)의 적어도 하나의 실시예를 도시하는 블록도이다. 시스템(100)은 다수의 코어(104(0)-104(n))를 포함한다. 도 1의 점선 및 생략 표시는 시스템(100)이 임의의 수(n)의 코어(여기서 n≥2)를 포함할 수 있음을 도시한다. 당 분야에서 통상의 지식을 가진 자라면 본 발명의 다른 실시예는, 이하 설명되는 바와 같이, 단일의 동시적인 멀티스레딩(simultaneous multi-threading : SMT) 코어(n = 1이 되도록)를 포함할 수 있음을 인지할 것이다.
도 1은 단일의 중앙형 인터럽트 콘트롤러(110)가 코어(104(0)-104(n))와 물리적으로 분리되어 있음을 도시한다. 도 1은 시스템(100)의 각각의 코어(104(0)-104(n))가 로컬 인터커넥트(local interconnect)(102)를 통해 중앙형 인터럽트 콘트롤러(110)에 결합되는 것을 또한 도시한다. 따라서 중앙형 인터럽트 콘트롤러(110)는 로컬 인터커넥트(102)를 통해 각각의 프로세싱 코어와 인터페이싱한다. 중앙형 인터럽트 콘트롤러(110)의 하이 레벨 목적은, 이들 APIC가 통상적인 코어 당 APIC 시스템(per-core APIC system)에서 행하는 것과 마찬가지로 병렬로 동작하고 있는 중임을 이들 시스템(100)에게 나타내는 방식으로 다수의 APIC의 동작을 연속적으로 모방하는 것이다.
시스템(100)의 단일 코어(104)는 SMT, 스위치 온 이벤트 멀티스레딩(switch-on-event multi-threading : SoeMT) 및/또는 시간 멀티플렉싱 멀티스레딩(time multiplexing muti-threading : TMUX)을 포함하여, 임의의 각종 멀티스레딩 방안을 구현할 수 있다. 둘 이상의 하드웨어 스레드 콘텍스트(contexts)("논리적 프로세서")로부터의 인스트럭션이 임의의 특정 시점에서 동시에 프로세서(304)에서 실행되는 경우, 이는 SMT로서 지칭된다. 한편, 단일 코어 멀티스레딩 시스템은 SoeMT를 구현할 수 있으며, 여기서 프로세서 파이프라인은 다수의 하드웨어 스레드 콘텍스트간에 멀티플렉싱되지만, 임의의 주어진 시점에서, 하나의 하드웨어 스레드 콘텍스트로부터의 인스트럭션만이 파이프라인에서 실행될 수 있다. SoeMT의 경우, 스레드 스위치 이벤트가 시간 기반형이면, 이는 TMUX이다. SoeMT 및 TMUX 방안을 지원하는 단일 코어가 멀티스레딩을 지원할 수 있다 하더라도, 이들을 본 명세서에서는 "단일 스레드(single-threaded)"이라고 하는데, 그 이유는 하나의 하드웨어 스레드 콘텍스트로부터의 인스트럭션만이 임의의 주어진 시점에서 실행될 수 있기 때문이다.
각각의 코어(104)는 단일 스레드를 실행할 수 있는 단일 프로세싱 유닛일 수 있다. 또는, 그 코어(104)들 중 하나 이상은, 코어가 한번에 하나의 스레드에 대한 인스트럭션만을 실행하도록, SoeMT 및 TMUX 멀티스레딩을 수행하는 멀티스레딩 코어일 수 있다. 이러한 실시 예에 있어서, 코어(104)는 "프로세싱 유닛"으로서 지칭된다.
적어도 하나의 대안적인 실시예에 있어서, 코어(104)의 각각은 SMT 코어와 같은 멀티스레드 코어이다. SMT 코어(104)의 경우, 코어(104)의 각각의 논리적 프로세서는 "프로세싱 유닛"으로서 지칭된다. 본 명세서에서 사용되는 "프로세싱 유닛"은 스레드를 실행할 수 있는 임의의 물리적 또는 논리적 유닛일 수 있다. 각각의 프로세싱 유닛은 주어진 스레드에 대해 실행될 다음의 인스트럭션을 결정하기 위해 다음-인스트럭션-포인터 로직(pointer logic)을 포함할 수 있다. 그러므로, 프로세싱 유닛을 본 명세서에서는 "시퀀서(sequencer)"라고 지칭할 수 있다.
두 실시예의 경우(단일 스레드 코더 대 멀티 스레드 코어), 각각의 프로세싱 유닛은 그 자신의 인터럽트 콘트롤러 기능과 연관되지만, 이러한 기능에 대한 로직이 각각의 프로세싱 유닛 내에 자체 포함되지 않을 지라도, 그 대신에 중앙형 인터럽트 콘트롤러(110)에 의해 제공된다. 임의의 코어(104)가 SMT 코어이면, 각각의 코어(104)의 각각의 논리적 프로세서는 로컬 인터커넥트(102)를 통해 중앙형 인터럽트 콘트롤러(110)에 결합될 수 있다.
도 3을 간략하게 참조하면, 앞서 설명한 바와 같이, 프로세싱 유닛(또는 "시퀀서")은 논리적 프로세서 또는 물리적 코어일 수 있다. 도 3에 논리적 및 물리적 프로세싱 유닛 간의 이러한 구분이 도시되어 있다. 도 3은 개시된 기법을 수행할 수 있는 멀티 시퀀서 시스템의 실시예(310, 350)의 선택된 하드웨어 특징을 도시하는 블록도이다.
도 3은 단일 코어 멀티 시퀀서 멀티 스레딩 환경(310)의 선택된 하드웨어 특징을 도시한다. 도 3은 또한 다수의 코어 멀티 스레딩 환경(350)의 선택된 하드웨어 특징을 도시하며, 여기서 각각의 시퀀서는 개별적인 물리적 프로세서 코어이다.
단일 코어 멀티 스레딩 환경(310)에서, 단일 물리적 프로세서(304)는 운영 체제 및 사용자 프로그램에게, 본 명세서에서 LP1 내지 LPn으로서 지칭되는 다수의 논리적 프로세서(도시하지 않음)처럼 보이도록 이루어져 있다. 각각의 논리적 프로세서 LP1 내지 LPn는 전체 아키텍처 상태 세트 AS1 - ASn를 각각 유지한다. 적어도 하나의 실시예에 있어서, 아키텍처 상태는, 데이터 레지스터, 세그먼트 레지스터, 제어 레지스터, 디버그 레지스터, 및 모델 특정의 레지스터를 포함한다. 논리적 프로세서 LP1 내지 LPn는 캐쉬, 실행 유닛, 브랜치 예측기, 제어 로직 및 버스와 같은 물리적 프로세서(304)의 대부분의 다른 자원을 공유한다. 그러나, 각각의 논리적 프로세서 LP1 내지 LPn는 그 자신의 APIC와 연관될 수 있다.
다수의 하드웨어 기능이 공유될 수 있지만, 멀티 스레딩 환경(310)에서의 각각의 스레드 콘텍스트는 다음 인스트럭션 어드레스를 독립적으로 생성할 수 있다(예를 들어, 인스트럭션 캐쉬, 실행 인스트럭션 캐쉬, 또는 트레이스(trace) 캐쉬로 부터의 페치(fetch)를 수행함). 따라서, 프로세서(304)는, 다수의 논리적 시퀀서가 단일 물리적 페치/디코드 유닛(322)내에 구현될 수 있다 하더라도, 각각의 스레드 콘텍스트에 대한 인스트럭션을 페치하기 위해 논리적으로 독립적인 다음-인스트럭션-포인터 및 페치 로직(320)을 포함한다. 단일-코어 멀티-스레딩 실시 예의 경우, "시퀀서"라는 용어는, 스레드 콘텍스트에 대한 적어도 다음-인스트럭션-포인터 및 페치 로직(320)과, 그 스레드 콘텍스트에 대한 연관된 아키텍처 상태(312)의 적어도 일부를 포함한다. 단일 코어 멀티 스레딩 시스템(310)의 시퀀서는 대칭형일 필요가 없다는 것에 주목해야 한다. 예를 들어, 동일한 물리적 코어를 위한 2개의 단일 코어 멀티 스레딩 시퀀서는, 이들이 각각 유지하는 아키텍처 상태 정보의 양이 다를 수 있다.
따라서, 적어도 하나의 실시예의 경우, 멀티 시퀀서 시스템(110)은 동시적인 멀티 스레딩을 지원하는 단일 코어 프로세서(304)이다. 각각의 실시 예에 있어서, 동일한 물리적 프로세서 코어(304)가 모든 스레드 인스트럭션을 실행한다 하더라도, 각각의 시퀀서는 그 자신의 인스트럭션 다음-인스트럭션-포인터 및 페치 로직과, 그 자신의 아키텍처 상태 정보를 갖는 논리적 프로세서이다. 이러한 실시예의 경우, 단일 프로세서 코어의 실행 자원이 동시 실행 스레드 간에 공유될 수 있다 하더라도, 논리적 프로세서는 아키텍처 상태의 그 자신의 버전을 유지한다.
도 3은 멀티 코어 멀티 스레딩 환경(350)의 적어도 하나의 실시예를 또한 도시한다. 이러한 환경(350)은 상이한 스레드/슈레드(threads/shreds)의 적어도 일부의 실행이 동시에 진행될 수 있도록 상이한 스레드/슈레드를 각각 실행할 수 있는 2개 이상의 개별적인 물리적 프로세서(304a-304n)를 포함한다. 각각의 프로세서(304a 내지 304n)는 그 각각의 스레드 또는 슈레드에 대한 인스트럭션 정보를 페치하기 위한 물리적으로 독립적인 페치 유닛(322)을 포함한다. 각각의 프로세서(304a-304n)가 단일 스레드/슈레드를 실행하는 실시예에서, 페치/디코드 유닛(322)은 단일의 다음-인스트럭션-포인터 및 페치 로직(320)을 포함한다. 그러나, 각각의 프로세서(304a-304n)가 다수의 스레드 콘텍스트를 지원하는 실시예에서, 페치/디코드 유닛(322)은 각각의 지원된 스레드 콘텍스트를 위해 별도의 다음-인스트럭션-포인터 및 페치 로직(320)을 구현한다. 멀티프로세서 환경(350)에서의 추가적인 다음-인스트럭션-포인터 및 페치 로직(320)의 선택 사양적인 속성이 도 3에 점선으로 도시되어 있다.
도 3에 도시된 멀티 코어 시스템(350)의 적어도 하나의 실시예에 있어서, 시퀀서의 각각은 프로세서 코어(304)일 수 있으며, 다수의 코어(304a-304n)가 단일 칩 패키지(360)에 상주한다. 각각의 코어(304a-304n)는 단일 스레드 또는 멀티 스레드 프로세서 코어일 수 있다. 멀티 코어 시스템(350)의 도시된 단일 칩 실시예가 단지 예시적이라는 것을 표시하기 위해 칩 패키지(360)가 도 3에 점선으로 도시되어 있다. 다른 실시예에 있어서, 멀티 코어 시스템의 프로세서 코어는 개별적인 칩 상에 상주할 수 있다. 즉, 멀티 코어 시스템은 멀티 소켓 대칭형 멀티프로세싱 시스템일 수 있다.
설명의 용이를 위해, 후술하는 설명은 멀티 코어 시스템(350)의 실시예에 초점이 맞추어져 있다. 그러나, 이하 기술된 메커니즘이 멀티 코어 또는 단일 코어 멀티 시퀀서 환경에서 구현될 수 있다는 점에서, 이러한 초점이 제한을 위한 것은 아니다.
도 1을 다시 참조하면, 시스템(100)의 코어(104(0)-104(n))가 로컬 인터커넥트(102)를 통해 서로 결합될 수 있음을 알 수 있다. 로컬 인터커넥트(102)는 코어 간에 요구되는 모든 통신 기능(예를 들어, 캐쉬 스눕(cache snoops) 등과 같음)을 제공할 수 있다. 코어(104(0)-104(n))의 각각은 로컬 인터커넥트(102)를 통해 인터럽트 관련 메시지를 송수신하기 위해 상대적으로 작은 인터페이스 블록을 포함할 수 있다. 일반적으로, 코어의 그러한 인터페이스는 인터럽트 관련 메시지에 관한 아키텍처 상태를 유지하지도 않고, 혹은, 본 명세서에서 기술한 바와 같은 중앙형 인터럽트 콘트롤러에 의해 수행되는 다른 APIC 관련 기능을 수행하거나 인터럽트하는데 우선 순위를 부여하지 않는다는 점에서 상대적으로 간단하다.
코어(104(0)-104(n))는 단일 다이(150(0)) 상에 상주할 수 있다. 적어도 하나의 실시예에 있어서, 도 1에 도시된 시스템(100)은 선택 사양적인 추가 다이를 더 포함할 수 있다. 추가적인 하나 이상의 다이(150(n)까지)의 선택 사양적인 속성은 도 1에 점선 및 생략 기호로 도시되어 있다. 도 1은 다른 다이(150(n)) 상의 프로세싱 유닛으로부터의 인터럽트 메시지가 시스템 인터커넥트(106)를 통해 제 1 다이(150(0))에 통신될 수 있다. 중앙형 인터럽트 콘트롤러(106)는 시스템 인터커넥트(106)를 통해 임의의 다른 다이(150(n)까지의) 및 주변 I/O 디바이스(114)에 결합된다.
당 분야에서 통상의 지식을 가진 자라면 도 1에 도시한 다이(150) 구성은 단지 예시를 위한 것이며 제한을 위한 것은 아니라는 것을 인지할 것이다. 대안적인 실시예에 있어서, 예를 들어, 150(0) 및 150(n)에 대한 소자는 실리콘의 동일한 부분 상에 상주하며, 동일한 로컬 인터커넥트(102)에 결합될 수 있다. 반대로, 각각의 코어(104(0)-104(n))는 반드시 동일한 칩 상에 상주할 필요는 없다. 각각의 코어(104(0)-104(n)) 및/또는 로컬 인터커넥트(102)는 동일한 다이(150) 상에 상주하지 않을 수 있다.
시스템(100)의 코어(104(0)-104(n))의 각각은 로컬 인터커넥트(102)를 통해 다른 시스템 인터페이스 로직(112)에 더 결합될 수 있다. 이러한 로직(112)은, 예를 들어, 시퀀서가 시스템 인터커넥트를 통해 다른 시스템 소자와 인터페이스하도록 하는 다른 인터페이스 로직 또는 캐쉬 코히어런스(coherence) 로직을 포함할 수 있다. 그 다음, 다른 시스템 인터페이스 로직(112)은, 시스템 인터커넥트(116)를 통해 다른 시스템 요소(116)(예를 들어, 메모리와 같은)에 결합될 수 있다.
도 2는 중앙형 인터럽트 콘트롤러(110)의 적어도 하나의 실시예에 대한 다른 세부 사항을 도시하는 블록도이다. 일반적으로, 도 2에 있어서, 중앙형 인터럽트 콘트롤러(110)가 시스템의 코어(예를 들어, 도 1의 코어(104(0)-104(n)) 참조)와 물리적으로 분리되어 있다 하더라도, 중앙형 인터럽트 콘트롤러(110)는 각각의 APIC 인스턴스(instance)의 완전한 아키텍처 상태를 유지하며, 이들 중 하나는 시퀀서의 각각과 연관된다. 중앙형 인터럽트 콘트롤러(110)는 통상적인 시스템에서 코어 당 전용 APIC에 의해 통상적으로 취급되는 모든 인터럽트 큐잉(queueing) 및 우선 순위 기능을 관리한다. 이하 더 상세하게 설명되는 바와 같이, 중앙형 인터럽트 콘트롤러(110)는 시스템 인터커넥트(106)에 결합되는 시스템의 나머지 및 시퀀서 사이의 방화벽으로서 또한 작동할 수 있다.
도 2는 중앙형 인터럽트 콘트롤러(110)가 중앙형 APIC 상태(202)를 포함하는 것을 도시한다. APIC 상태(202)는 전형적인 APIC 프로세싱과 통상적으로 연관된 아키텍처 상태를 포함한다. 즉, APIC 프로세싱은 애플리케이션 프로그래머에게 가시적인 아키텍처 특징이며, 이러한 인터페이스가 본 개시 내용에 의해 변경됨을 의도한 것은 아니다. 시스템이 통상적인 APIC 하드웨어(즉, 각각의 프로세싱 유닛에 대한 하나의 자체 포함되는 APIC) 또는 본 명세서에서 기술된 바와 같은 중앙형 인터럽트 콘트롤러를 포함하는지에 따라, 적어도 하나의 실시예 있어서, 이러한 하드웨어 설계 선택은 애플리케이션 프로그래머에 대해 투명해야 할 것으로 예상된다. 이러한 방식에서는, 시스템에 대한 단일 중앙형 인터럽트 콘트롤러(110)를 이용하는 동시에, 운영 체제 판매자 및 애플리케이션 프로그래머가 예상하는 동일한 아키텍처 인터페이스를 유지함으로써 면적, 동적 전력 및 전력 누설 비용이 감소될 수 있다.
따라서, 블록(202)에서 APIC 상태 정보의 중앙 레포지토리로서 유지된 아키텍처 상태는 일반적으로 통상적인 시스템에서 각각의 APIC에 대해 유지되는 상태이다. 예를 들어, 시스템에 8개의 시퀀서가 존재하는 경우, 중앙형 APIC 상태(202)는 8개의 엔트리의 어레이를 포함할 수 있으며, 각각의 어레이는 통상적인 시스템에서 시퀀서에 대해 유지되는 아키텍처 APIC 상태를 반영한다.(이하 도 4의 설명은, 각각의 엔트리가 특정의 마이크로아키텍처(microarchitectural) 상태를 또한 포함할 수 있음을 표시함)
적어도 하나의 실시예에 있어서, 중앙형 APIC 상태(202)는 레지스터 파일 또는 어레이와 같은 단일 메모리 저장 영역으로서 구현된다. 레지스터 파일 구조는 코어 당 APIC 상태를 랜덤 로직으로서 구현한 종래 방법보다 나은 면적 효율성을 허용할 수 있다.
일반적으로, 중앙형 인터럽트 콘트롤러(110)는 로컬 인터커넥트(102) 및/또는 시스템 인터커넥트(106)를 통해 수신된 인터럽트 메시지의 수신을 모니터링하고, 관련 메시지를 레지스터 파일(202)의 적절한 엔트리에 저장한다. 적어도 하나의 실시예에 있어서, 이것은 입력 메시지에 대한 목적지 어드레스를 모니터링하고, 이 목적지 어드레스와 연관된 APIC 인스턴스 엔트리에 메시지를 저장함으로써 달성된다. 이러한 기능은 이하 더 상세하게 설명되는 바와 같이, 입력 메시지 큐(204, 206)에 의해 수행될 수 있다.
마찬가지로, 중앙형 인터럽트 콘트롤러(110)는 이러한 메시지가 서비스되고 전송될 때까지 출력 인터럽트 메시지의 생성을 모니터링할 수 있고 레지스터 파일(202)의 적절한 엔트리에 메시지를 저장할 수 있다. 적어도 하나의 실시예에 있어서, 이것은 출력 메시지에 대한 소스 어드레스를 모니터링하고, 이 소스 어드레스와 연관된 APIC 인스턴스 엔트리에 메시지를 저장함으로써 달성된다. 이러한 기능은 이하 더 상세하게 설명되는 바와 같이, 출력 메시지 큐(208, 210)에 의해 수행될 수 있다.
일반적으로, 중앙형 인터럽트 콘트롤러(110)의 인터럽트 시퀀서 블록(214)은 서비스를 위해, 중앙형 APIC 상태(202)에 반영된, 그러한 계류 중(pendign)인 인터럽트 메시지를 또한 스케줄링할 수 있다. 이하 더 상세하게 설명되는 바와 같이, 이것은 시퀀서의 계류 중인 인터럽트 활동이 반복적으로 무시되지 않도록 페어니스 방안(fairness scheme)에 따라 달성될 수 있다. 인터럽트 시퀀서 블록(214)은 APIC 인터럽트 전송 로직(212)을 호출하여 서비스를 수행할 수 있다.
따라서 도 2는 중앙형 인터럽트 콘트롤러(110)가 APIC 인터럽트 전송 로직(212)을 포함하는 것을 도시한다. 시스템의 각각의 시퀀서(예를 들어, SMT 코어의 각각의 단일 스레드 코어 또는 각각의 논리적 프로세서)마다 APIC 로직을 복제하는 대신에, 중앙형 인터럽트 콘트롤러(110)는 APIC 인터럽트 전송 로직(212)의 단일의 비-리던던트(non-redundant) 복사본을 제공하여 시스템의 모든 시퀀서에 대해 인터럽트를 서비스한다.
예를 들어, 시스템(예컨대, 도 1의 시스템(100)과 같은)이 8개의 동시적인 SMT 스레드를 각각 지원하는 4개의 코어를 포함하는 경우, 시스템은 통상적으로 APIC 인터럽트 전송 로직(212)의 32개의 복사본을 필요로 한다. 이 대신에, 도 2에 도시된 중앙형 인터럽트 콘트롤러(110)는 APIC 인터럽트 전송 로직(212)의 단일 복사본을 이용하여 주어진 시점에서 활성인 32개의 스레드 모두에 대한 인터럽트 콘트롤러 서비스를 제공한다.
시스템의 다수의 시퀀서가 계류 중인 인터럽트 활동을 동시에 가질 수 있으므로, APIC 인터럽트 전송 로직(212)은 다수의 시퀀서로부터의 경쟁의 주체일 수 있다. 따라서 중앙형 인터럽트 콘트롤러(110)는 인터럽트 시퀀서 블록(214)을 포함한다. 인터럽트 시퀀서 블록(214)은 시퀀서의 각각에 대한 페어 액세스(fair access)를 APIC 인터럽트 전송 로직(212)에 제공하는 방식으로 시스템 내의 모든 인터럽의 서비스를 "시퀀싱"한다. 본질적으로, 중앙형 인터럽트 콘트롤러(110)의 인터럽트 시퀀서 블록(214)은 단일 APIC 로직 블록(212)에 대한 액세스를 제어한다.
따라서, 인터럽트 시퀀서 블록(214)은 공유 APIC 인터럽트 전송 로직(212)에 대한 시퀀서의 액세스를 제어한다. 이러한 기능은 각각의 시퀀서가 APIC 로직에 대한 중간 애드 호크(ad hoc) 액세스를 갖도록, 각각의 시퀀서마다 전용 APIC 로직 블록을 제공하는 통상적인 APIC 시스템과 대조를 이룬다. 단일 APIC 로직 블록(212)은 시스템의 프로세싱 유닛의 각각에 대해, 인터럽트 우선 순위 등의 관점에서 APIC의 전체적인 아키텍처 요건을 제공할 수 있다.
시스템의 임의의 특정의 프로세싱 유닛에 있어서, APIC를 통과하는 인터럽트의 소스/목적지는 다른 프로세싱 유닛 또는 주변 장치일 수 있다. 인트라 다이(intra-die) 프로세싱 유닛 인터럽트는 로컬 인터커넥트(102)를 통해 중앙형 인터럽트 콘트롤러(110)에 의해 전송된다. 다른 다이 상에서의 주변 장치 또는 프로세싱 유닛으로/으로부터의 인터럽트는 시스템 인터커넥트(106)를 통해 전송된다.
도 2는 중앙형 인터럽트 콘트롤러(110)가 로컬 인터커넥트(102) 및 시스템 인터커넥트(106)를 통해 입력 및 출력 인터럽트 메시지를 처리하기 위해 4개의 메시지 큐, 즉, 입력 시스템 메시지 큐(204), 입력 로컬 메시지 큐(206), 출력 로컬 메시지 큐(208) 및 출력 시스템 메시지 큐(210)를 포함하는 것을 도시한다. 입력 로컬 메시지 큐(206) 및 출력 로컬 메시지 큐(208)는 로컬 인터커넥트(102)에 결합되는 한편, 입력 시스템 메시지 큐(204) 및 출력 시스템 메시지 큐(210)는 시스템 인터커넥트(106)에 결합된다. 큐(204, 206, 208 및 210)의 각각은 데이터 저장 장치 뿐만 아니라 제어 로직을 포함하는 미니 콘트롤러(mini-controller) 큐이다.
큐(204, 206, 208 및 210)의 동작에 대한 다른 설명은 도 1, 도 2 및 도 4를 참조하여 이루어진다. 도 4는 중앙형 APIC 상태(202)의 적어도 하나의 실시예에 대한 보다 상세한 도시를 제공한다. 도 4는 중앙형 APIC 상태(202)가 아키텍처 상태(302) 뿐만 아니라 마이크로아키텍처 상태(301, 303)를 포함할 수 있다. 전술한 바와 같이, 시퀀서(104(0)-104(n))의 각각에 대해 유지된 아키텍처 상태(302)는 시퀀서와 통상적으로 연관된 APIC 상태를 반영한다. 아키텍처 APIC 상태(302)의 각각의 엔트리(410)는 본 명세서에서 "APIC 인스턴스"로서 지칭된다. 예를 들어, APIC 인스턴스에 대한 입력 인터럽트 메시지는 해당 인스턴스와 연관된 아키텍처 APIC 상태(302)의 엔트리(410)에 저장될 수 있다. 적어도 하나의 실시예에 있어서, APIC 인스턴스에 대한 엔트리(410)에서 최대 240의 입력 인터럽트 메시지가 유지될 수 있다.
아키텍처 상태(302)에 부가하여, 중앙형 APIC 상태(202)는 각각의 APIC 인스턴스(410)와 연관된 마이크로아키텍처 상태(301) 뿐만 아니라 일반적인 마이크로아키텍처 상태(303)를 포함할 수 있다. 일반적인 마이크로아키텍처 상태(303)는 인터럽트 시퀀서 블록(214)을 보조하기 위한 스코어보드(304)(도 2 참조)를 포함하여 어느 시퀀서가 APIC 로직(212)(도 2 참조)에 대한 액세스를 필요로 하는지를 판정할 수 있다. 적어도 하나의 실시 예에 있어서, 스코어보드(304)는 시스템 내의 각각의 시퀀서에 대한 비트를 유지할 수 있다. 시퀀서의 비트의 값은 APIC 로직(212)이 요구되는 임의의 계류 중인 활동을 시퀀서가 갖는지 여부를 표시할 수 있다. 적어도 하나의 실시 예에 있어서, 시퀀서가 APIC 로직(212)의 주의를 필요로 하는지를 인터럽트 시퀀서 블록(214)(도 2)이 용이하고 신속하게 확인할 수 있도록, 스코어보드(304)는 국소적으로 판독될 수 있다.
인터럽트 시퀀서 블록(214)의 한 특징은 APIC 로직(212)에 대한 액세스를 공평하게 허용하면서, 인터럽트 시퀀서 블록(214)이 APIC 로직(212) 프로세싱을 현재 필요로 하지 않는 시퀀서에 대해 프로세싱 자원을 낭비할 필요없이 스코어보드(204)에 의해 페어니스 방안이 채용되도록 한다. 따라서 스코어보드는 이들 계류 중인 요구에 대한 프로세싱의 현재 상태 및 입력 메시지에 근거하여 행할 작업을 어느 APIC 인스턴스가 갖는지를 추적한다. 인터럽트 시퀀서 블록(214)은 활성 APIC 인스턴스에 대해, 중앙형 APIC 상태(202)로부터의 현재 상태를 판독하고, (해당 특정의 APIC 인스턴스(410)에 대한 아키텍처 상태(302) 및 마이크로아키텍처(301)에 기록된 바와 같이) 현재의 상태에 대해 적절한 액션을 취하며. 그리고 나서 (스코어보드(304)의 비트에 의해 표시된 바와 같이) 계류 중인 작업과 함께 다음 APIC 인스턴스에 대한 프로세스를 반복한다.
입력 인터럽트 메시지가 동일한 다이 상의 다른 시퀀서를 타겟(목표 설정)으로 하여 로컬 인터커넥트(102)를 통해 오는 경우, 입력 로컬 메시지 큐(206)는 메시지를 수신하고 그 목적지를 결정한다. 인터럽트 메시지는 시퀀서 중 하나, 다수, 혹은 모두를 타겟으로 하거나, 아무 것도 타겟으로 하지 않을 수 있다. 큐(206)는 인터럽트를 큐 업(queue up)하기 위해 각각의 타겟 시퀀서에 대한 아키텍처 상태 엔트리(예를 들면, 도 4의 (410) 참조)를 기입할 수 있다. 이러한 경우, 큐(206)는 인터럽트 활동이 계류 중이고 단일 APIC 로직 블록(212)의 서비스가 타겟 시퀀서에 대해 요구되는 것을 표시하기 위해, 이러한 스코어보드 엔트리가 아직 설정되어 있지 않으면, 타겟된 시퀀서에 대한 스코어보드 엔트리를 또한 설정한다.
그러나, 도 4는 입력 로컬 메시지 큐(206)로부터 출력 큐(208)까지 몇몇 인터럽트가 직접 바이패스될 수 있다는 것을 도시한다. 이것은, 예를 들어, 특정의 프로세서에 대해 구체적으로 어드레싱되지 않는 브로드캐스트 메시지에 대해 발생할 수 있다. 도 4는 유사한 바이패스 프로세싱이 입력 시스템 메시지 큐(204)(이하 기술됨)로부터 또한 발생될 수 있다는 것을 도시한다.
입력 인터럽트 메시지가 시퀀서(104(0)-104(n)) 중 하나를 타겟으로 하도록 시스템 인터커넥트(106)를 통해 (I/O 장치 또는 다른 다이 상의 시퀀서로부터) 오는 경우, 큐(206)에 대해 전술한 것과 유사한 프로세싱이 또한 발생될 수 있다. 입력 시스템 메시지 큐(204)는 메시지를 수신하고 그 목적지를 결정한다. 큐(206)는 인터럽트를 큐 업하기 위해 각각의 타겟 시퀀서에 대한 아키텍처 상태 엔트리(410)를 기입하고 따라서 임의의 타겟 시퀀서에 대한 스코어보드 엔트리(412)를 업데이트한다. 대안적으로, 입력 메시지는 전술한 바와 같이, 물론 바이패스될 수 있다.
메시지 큐(204, 206, 208 및 210) 중 하나 이상은 출력 및/또는 입력 메시지에 대한 방화벽 특징을 구현한다. 이러한 방화벽 특징에 관해, 도 2는 도 1과 결합하여 기술되어 있다.
입력 메시지에 관해, 입력 시스템 메시지 큐(204)는 중앙형 인터럽트 콘트롤러(110)와 연관된 다이(150) 상의 시퀀서를 타겟으로 하지 않는 메시지에 대해 불필요한 프로세싱을 방지하기 위해 인터럽트 방화벽으로서 작용할 수 있다. 도 1에 도시한 바와 같이, 시스템(100)은 다수의 멀티 시퀀서 다이(150(0)-150(n))를 포함할 수 있다. 특정의 다이의 시퀀서에 의해 생성된 인터럽트는 시스템 인터커넥트(106)를 통해 다른 다이에 송신될 수 있다. 마찬가지로, 주변 장치(114)에 의해 생성된 인터럽트는 시스템 인터커넥트(106)를 통해 다이에 송신될 수 있다.
다이(150)에 대한 중앙형 인터럽트 콘트롤러(110)(및, 특히, 입력 시스템 메시지 큐(204))는 이러한 메시지에 대한 목적지 어드레스가 다이(150) 상의 임의의 시퀀서(예를 들어, 코어 또는 논리적 프로세서)를 포함하는지를 결정할 수 있다. 메시지가 해당 다이와 연관된 로컬 인터커넥트(102) 상의 임의의 코어 또는 논리적 프로세서를 타겟으로 하지 않는 경우, 입력 시스템 메시지 큐(204)는 로컬 인터커넥트(102) 상의 임의의 시퀀서에 대해 메시지를 전송하는 것을 거부한다. 이러한 방식으로, 입력 시스템 메시지 큐는 이들에 대해 이들 코어/스레드를 "웨이킹하는(waking)" 것을 방지하여 아무런 액션이 필요하지 않다는 것을 간단히 판정한다. 이것은 다수의 개별적인 시퀀서에 대한 절전 상태(power-saving state)로부터 "웨이크 업(wake up)"하기 위한 필요성을 제거하여 메시지가 이들에 대해 타겟으로 되지 않는 것을 단지 판정하기 때문에 전력을 절약하고 로컬 인터커넥트(102)의 대역폭을 유지한다.
논리적 프로세서의 하나 이상이 절전 상태에 있지 않더라도, 입력 시스템 메시지 큐(204)는 현재 수행 중인 작업으로부터 논리적 프로세서를 인터럽트하지 않기 위해 방화벽 특징을 여전히 수행하여, 입력 인터럽트 메시지가 이들 부분에 대해 아무런 액션을 필요로 하지 않는다는 것을 간단히 판정한다.
적어도 하나의 실시 예에 있어서, 출력 메시지에 대한 방화벽이 또한 구현될 수 있다. 이것은 적어도 하나의 실시 예에 있어서, 출력 로컬 메시지 뿐만 아니라, 출력 시스템 메시지에 대해 마찬가지로 적용될 수 있다. 적어도 하나의 실시 예에 있어서, 로컬 메시지에 대한 방화벽 특징은 로컬 인터커넥트(102) 상에서의 각각의 메시지가 모든 시퀀서에 브로드캐스트될 것을 필요로 하지 않고, 타겟 인터럽트 메시지가 특정의 시퀀서로 전송되도록 하는 특징을 로컬 인터커넥트(102)가 지원하는 시스템에 대해서만 구현된다. 이러한 경우에, 출력 로컬 메시지 큐(208)는 로컬 인터커넥트(102) 상의 각각의 인터럽트 메시지를 유니캐스트(unicasr) 또는 멀티캐스트(multicast) 메시지로서 메시지에 의해 타겟 시퀀서에만 전송한다. 이러한 방식에 있어서, 특정의 인터럽트 메시지에 대해 이러한 액션이 필요치 않다고 결정하도록 타겟으로 되지 않은 시퀀서는 이들의 프로세싱을 인터럽트할 필요가 없다. 출력 시스템 메시지는 타겟으로 되지 않은 엔티티(entities)에 불필요하게 전송되지 않도록, 마찬가지로 타겟으로 될 수 있다.
따라서 도 2는 입력 메시지 큐(204, 206)에 의해, 입력 인터럽트 메시지가 중앙형 APIC 상태(202)에 위치한 후에, 인터럽트 시퀀서 블록(214)이 시스템에 대한 APIC 프로세싱을 수행하기 위해 APIC 로직(212)의 단일 복사본에 대해 시스템의 시퀀서 간의 공평한 액세스를 제공하는 것을 도시한다. 인터럽트 시퀀서 블록(214)은 본질적으로 APIC 상태(202)를 통해 순차적으로 진행하고, 이를 필요로 하는 다음 시퀀서에 대해 APIC 로직(212)에 액세스를 제공함으로써, 이러한 페어니스 방안을 구현할 수 있다. 따라서 인터럽트 시퀀서 블록(214)에 의해 구현된 페어니스 방안은 각각의 시퀀서가 인터럽트 전송 블록에 대한 동등한 액세스를 갖도록 허용할 수 있다.
적어도 하나의 실시 예에 있어서, APIC 상태(202)의 엔트리를 통한 개념적인 순차적 스테핑(stepping)은 스코어보드(도 4의 (304) 참조)의 사용에 의해 보다 효율적으로 행해지며, 이는 어느 활성 시퀀서가 APIC 서비스를 필요로 하는 "다음"이 되는지를 판정하기 위해 국소적으로 질의될 수 있다. 적어도 하나의 실시 예에 있어서, 도 5와 결합하여 이하 더 상세하게 기술되는 방법에 따라 순차적인 액세스가 제어될 수 있다.
도 5는 시스템에 대한 APIC 프로세싱을 수행하기 위해 APIC 로직(212)(도 2 참조)에 대해 시스템의 시퀀서 간의 공평한 액세스를 제공하는 인터럽트 시퀀서 블록(214)(도 2 참조)의 적어도 하나의 실시예에 의해 채용된 방법(500)을 도시하는 상태도이다. 도 5에 대한 이하의 설명은 도 2 및 도 4를 참조하여 이루어진다.
일반적으로, 도 5는 인터럽트 시퀀서 블록(214)이 활성 APIC 인스턴스에 대해 중앙형 APIC 상태(202)로부터 현재의 상태를 판독하고, 현재의 상태에 대해 적절한 액션을 취하며, 그 다음에 계류 중인 작업과 함께 다음 APIC 인스턴스에 대한 프로세스를 반복하는 것을 도시한다.
도 5는 상태(502)에서 방법(500)이 개시되는 것을 도시한다. 상태(502)에서 인터럽트 시퀀서 블록(214)은 스코어보드(304)에 컨설팅(consulting)하여 어느 APIC 인스턴스가 수행할 작업을 갖는지를 판정한다. 앞서 기술한 바와 같이, 각각의 APIC 인스턴스에 대해 스코어보드(304)에 하나의 엔트리(412)가 존재할 수 있다. 엔트리(412)는 적어도 하나의 실시 예에 있어서, 1 비트 엔트리일 수 있다. 비트(412)는 해당 특정의 APIC 인스턴스에 대해 중앙형 APIC 상태(202)에 입력 메시지가 기입되지 않는 경우 세팅될 수 있다.
물론, 당 분야에서 통상의 지식을 가진 자라면 스코어보드(304)가 모든 실시예에서 반드시 존재할 필요가 없는 성능 향상이라는 것을 인지할 것이다. 적어도 하나의 실시 예에 있어서, 예를 들어, 인터럽트 시퀀서 블록(214)은 임의의 활성 APIC 인스턴스가 서비스를 필요로 하는지 여부를 판정하기 위해 순서적인 방식으로(순차적 등) 중앙형 APIC 상태(202)의 각각의 엔트리를 통해 진행할 수 있다.
스코어보드(304) 내에 어떤 비트도 세팅되어 있지 않으면, 시퀀서 중 어느 것도 계류 중인 APIC 이벤트를 갖지 못한다. 이러한 경우, 방법(500)은 상태(502)로부터 상태(508)로 천이할 수 있다. 상태(508)에서, 방법(500)은 로직(212)이 필요하지 않으면서 전력을 보존하기 위해, APIC 로직 블록(212)의 적어도 일부분을 전력 하강시킬 수 있다. 전력 하강이 완료되는 경우, 방법(500)은 상태(502)로 다시 천이하여 임의의 새로운 APIC 활동이 검출되는지 여부를 판정한다.
상태(502)에서, 어떠한 새로운 활동도 검출되지 않고(즉, 스코어보드(204)의 어떠한 엔트리도 세팅되지 않음), APIC 로직 블록(212)이 이미 전력 하강되었으면, 방법(500)은 상태(502)로부터 상태(506)로 천이하여 새로운 APIC 활동을 대기할 수 있다.
대기 상태(506) 동안, 방법(500)은 스코어보드(304)의 컨텐츠에 주기적으로액세스하여 임의의 APIC 인스턴스가 계류 중인 APIC 작업을 획득하였는지 여부를 판정할 수 있다. 스코어보드 콘텐츠(304)에 반영된 바와 같은 임의의 입력 APIC 메시지는 상태(506)로부터 상태(502)로 천이를 야기한다. 입력 로컬 메시지 큐(204) 및 입력 시스템 메시지 큐(206)의 상기 설명은 아키텍처 APIC 상태(320)에 대한 설명을 제공하고, 적어도 하나의 실시 예에 있어서, 스코어보드(304) 엔트리는 APIC 인스턴스가 계류 중인 APIC 작업을 획득하였는지를 반영하도록 업데이트된다.
방법(500)은 상태(502)에서 스코어보드(304)의 임의의 엔트리(412)가 세팅되는 경우 수행할 계류 중인 APIC 작업을 적어도 하나의 APIC 인스턴스가 갖는지 여부를 판정할 수 있다. 2개 이상의 이러한 엔트리가 세팅되는 경우, 인터럽트 시퀀서 블록(214)은 어느 APIC 인스턴스가 APIC 로직(212)에 의한 서비스를 다음에 수신하는지를 판정한다. 적어도 하나의 실시 예에 있어서, 인터럽트 시퀀서 블록(214)은 세팅되는 다음 스코어보드 엔트리를 선택함으로써 이러한 결정을 수행한다. 이러한 방식에 있어서, 인터럽트 시퀀서 블록(214)은 APIC 로직(212)에 대한 액세스를 위해 다음 활성 APIC 인스턴스를 순차적으로 선택함으로써 페어니스 방안을 부여한다.
상태(502)에서 APIC 인스턴스의 선택 시에, 방법(500)은 블록(502)으로부터 블록(504)로 천이한다. 블록(504)에서, 인터럽트 시퀀서 블록(214)은 중앙형 APIC 상태(502)로부터 선택된 가상 APIC에 대한 엔트리(410)를 판독한다. 이러한 방식으로, 인터럽트 시퀀서 블록(214)은 어느 APIC 이벤트가 선택된 APIC 인스턴스에 대해 계류 중인지를 판정한다. 다수의 APIC 이벤트는 계류 중이며, 이에 따라 APIC 엔트리(410)에 반영될 수 있다. 상태(504)의 각각의 반복 동안 APIC 인스턴스에 대해 단지 하나의 계류 중인 이벤트가 프로세스된다. 따라서, 순차적인 페어니스 방안의 라운드 로빈 유형이 유지될 수 있다.
동일한 활성 APIC 인스턴스에 대해 다수의 계류 중인 인터럽트 이벤트 중에서 선택하기 위해, 인터럽트 시퀀서 블록(214)은 상태(504) 동안 우선 순위 프로세싱을 수행한다. 이러한 우선 순위 프로세싱은 통상적인 시스템에서의 전용 APIC에 의해 수행된 우선 순위 방안을 에뮬레이트(emulate)할 수 있다. 예를 들어, APIC 인터럽트는 중요도 클래스에 부합하도록 정의된다. 각각의 APIC 인스턴스에 대한 아키텍처 상태 엔트리(410)(도 4)는 적어도 하나의 실시 예에 있어서, 논리적 프로세서 당 240 까지의 계류 중인 인터럽트를 보유할 수 있다. 이들은 16개의 중요도 클래스에 부합할 수 있으며, 이들은 16개의 우선 순위 그룹으로 분류된다. 클래스 16-31의 인터럽트는 클래스 32-47의 인터럽트보다 높은 우선 순위 등으로 되어 있다. 인터럽트 클래스 수가 낮을수록, 인터럽트 우선 순위는 높아진다. 따라서, 인터럽트 시퀀서 블록(214)은 APIC 인스턴스에 대한 240 비트를 주시하며, 2 이상이 세팅되면, 상태(504)에서 (APIC에 대한 현재의 아키텍처 우선 순위 규칙에 근거하여) 단지 하나의 이벤트를 선택한다. 적어도 하나의 실시 예에 있어서, 인터럽트 시퀀서 블록(214)은 APIC 로직(212)을 호출하여 이러한 우선 순위를 수행한다.
그 다음에 방법(500)은 상태(504) 동안 선택된 이벤트에 대해 적절한 액션을 스케줄링하거나 수행한다. 예를 들어, 이벤트는 출력 메시지 큐 중 하나로부터 이미 전송된 인터럽트 메시지에 대해 승인을 대기하는 것일 수 있다. 대안적으로, 이벤트는 출력 인터럽트 메시지가 전송될 필요가 있는 것일 수 있다. 또는, 입력 인터럽트 메시지 또는 승인은 시퀀서 중 하나에 대해 서비스될 필요가 있을 수 있다. 인터럽트 시퀀서 블록(214)은 APIC 로직(212)을 활성화하여 상태(504)에서의 이벤트를 서비스할 수 있다.
승인을 대기하고 있는 중인 경우, 인터럽트 시퀀서 블록(214)은 마이크로아키텍처 상태(303)를 컨설팅하여 이러한 승인이 대기중인지를 판정할 수 있다. 승인을 대기하고 있는 중인 경우, 인터럽트 시퀀서 블록(214)은 APIC 상태(202)의 적절한 엔트리를 컨설팅하여 상태(504)에서 승인이 수신되었는지 여부를 판정한다. 승인 대기중이 아닌 경우, 상태(504)는 다음 시퀀서에 대한 이벤트가 프로세스될 수 있도록 탈출된다.
승인이 수신된 경우, 마이크로아키텍처 상태(503)는 승인을 더 이상 기다리지 않음을 반영하도록 업데이트된다. 인터럽트 시퀀서 블록(214)은 상태(502)로 다시 천이하기 이전에 APIC 인스턴스에 대한 스코어보드(304) 엔트리를 또한 클리어할 수 있다. 적어도 하나의 실시 예에 있어서, 스코어보드 엔트리(304)는 현재 서비스된 이벤트가 단지 APIC 인스턴스에 대해 계류 중인 이벤트인 경우에만 클러어된다.
다른 예로서, 상태(504)에서 서비스될 이벤트가 (로컬 인터커넥트(102) 또는 시스템 인터커넥트(106)를 통한) 인터럽트 메시지의 전송인 경우, 이러한 이벤트는 상태(504)에서 다음과 같이 서비스될 수 있다. 인터럽트 시퀀서 블록(214)은 현재 서비스된 논리적 프로세서에 대한 APIC 인스턴스로부터 전술한 우선 순위 프로세싱에 따라, 어느 출력 메시지가 전송될 필요가 있는지를 판정한다. 그 다음에 출력 메시지는 적절한 출력 메시지 큐(출력 로컬 메시지 큐(208) 또는 출력 시스템 메시지 큐(210))에 대해 원하는 목적지 어드레스에 의해, 전송을 위해 스케줄링된다.
이러한 승인의 수신과 같이, 출력 메시지가 이벤트가 완전하게 서비스되기 이전에, 추가적인 서비스를 필요로 하는 경우, 중앙 콘트롤러(110)는 마이크로아키텍처 상태(303)를 업데이트하여 이러한 이벤트에 대해 다른 서비스가 요구되는지를 표시할 수 있다. (로컬 인터커넥트(102) 또는 시스템 인터커넥트(106)를 통한 입력 승인은 관련 APIC 인스턴스에 대한 상태(504)의 다음 반복 동안 프로세스될 수 있도록, 입력 메시지 큐(204, 206)에서 큐 업될 수 있고, 결과적으로 중앙형 APIC 상태(202)에 대해 업데이트될 수 있다). 그 다음, 그 방법은 상태(504)로부터 상태(502)로 천이한다.
도 6은 개시된 기법을 수행할 수 있는 컴퓨팅 시스템(900)의 적어도 하나의 실시예를 도시하는 블록도이다. 컴퓨팅 시스템(900)은 적어도 하나의 프로세서 코어(904(0)) 및 메모리 시스템(940)을 포함한다. 시스템(900)은 점선 및 생략 기호로 표시된 바와 같이, 추가적인 코어(904(n)까지의)를 포함할 수 있다.
메모리 시스템(940)은 인스트럭션 캐쉬(944) 및/또는 데이터 캐쉬(942)와 같은 하나 이상의 보다 작고, 상대적으로 고속인 캐쉬 뿐만 아니라, 보다 크고, 상대적으로 저속인 메모리 저장 장치(902)를 포함할 수 있다. 메모리 저장 장치(902)는 프로세서(904)의 동작을 제어하기 위한 인스트럭션(910) 및 데이터(912)를 저장할 수 있다.
메모리 시스템(940)은 일반화된 표시의 메모리로서 의도되며, 하드 드라이브, CD-ROM, RAM(random access memory), DRAMM(dynamic random access memory) SRAM(static random access memory)과 같은 각종 형태의 메모리를 포함할 수 있다. 메모리 시스템(940)은 프로세서(904)에 의해 실행될 수 있는 데이터 신호로 표시되는 인스트럭션(910) 및/또는 데이터(912)를 저장할 수 있다. 인스트럭션(910) 및/또는 데이터(912)는 본 명세서에서 기술된 임의의 기법 또는 모든 기법을 수행하는 코드 및/또는 데이터를 포함할 수 있다.
도 6은 각각의 프로세서(904)가 중앙형 인터럽트 콘트롤러(110)에 결합될 수 있음을 도시한다. 각각의 프로세서(904)는 실행 코어(930)에 인스트럭션 정보를 공급하는 프런트 엔드(920)를 포함할 수 있다. 페치된 인스트럭션 정보는 실행 코어(930)에 의한 실행을 대기하도록 캐쉬(225) 내에 버퍼링될 수 있다. 프런트 엔드(920)는 인스트럭션 정보를 실행 코어(930)에 프로그램 순서대로 공급할 수 있다. 적어도 하나의 실시 예에 있어서, 프런트 엔드(920)는 실행될 다음 인스트럭션을 결정하는 페치/디코드 유닛(322)을 포함한다. 시스템(900)의 적어도 하나의 실시 예에 있어서, 페치/디코드 유닛(322)은 단일의 다음-인스트럭션-포인터 및 페치 로직(320)을 포함할 수 있다. 그러나, 각각의 프로세서(904)가 다수의 스레드 콘텍스트를 지원하는 실시예에서, 페치/디코드 유닛(322)은 각각의 지원된 스레드 콘텍스트에 대해 별도의 다음-인스트럭션-포인터 및 페치 로직(320)을 구현한다. 멀티프로세서 환경에 있어서 추가적인 다음-인스트럭션-포인터 및 페치 로직(320)의 선택 사양적인 속성은 도 6의 점선으로 표시되어 있다.
본 명세서에서 기술된 방법의 실시예는 하드웨어, 하드웨어 에뮬레이션 소프트웨어 또는 다른 소프트웨어, 펌웨어 또는 이러한 구현 방법의 결합으로 구현될 수 있다. 본 발명의 실시예는 적어도 하나의 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 소자를 포함하는) 데이터 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그래밍 가능한 시스템에 대해 구현될 수 있다. 이러한 애플리케이션을 위해, 프로세싱 시스템은 예를 들어, DSP(digital signal processor), 마이크로콘트롤러, ASIC(application specific integrated circuit), 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스 템을 포함한다.
프로그램은 전용 또는 특수용 프로그래밍 가능한 프로세싱 시스템에 의해 판독 가능한 저장 매체 또는 장치(예를 들어, 하드 디스크 드라이브, 플로피 디스크 드라이브, ROM, CD-ROM 장치, 플래쉬 메모리 장치, DVD(digital versatile disk) 또는 다른 저장 장치) 상에 저장될 수 있다. 프로세싱 시스템내의 프로세서에 대해 액세스 가능한 인스트럭션은 본 명세서에서 기술된 프로시쥬어를 수행하도록 프로세싱 시스템에 의해 저장 매체 또는 장치가 판독되는 경우 프로세싱 시스템을 구성하고 동작하도록 제공된다. 본 발명의 실시예는 프로세싱 시스템과 함께 사용하도록 구성된 머신 판독 가능한 저장 매체로서 구현되는 것으로 또한 간주될 수 있으며, 여기서, 그와 같이 구성된 저장 매체는 본 명세서에서 기술된 기능을 수행하도록 프로세싱 시스템이 특정적이고 사전 정의된 방식으로 동작하도록 한다.
샘플 시스템(900)은 인텔사로부터 상업적으로 입수 가능한 펜티엄®, 펜티엄® 프로, 펜티엄® Ⅱ, 펜티엄®Ⅲ, 펜티엄® 4, 이타니엄®, 이타니엄® 2 마이크로프로세서 및 모바일 인텔® 펜티엄®Ⅲ 프로세서 - M 및 모바일 인텔® 펜티엄® 4 프로세서 - M에 근거한 프로세싱 시스템을 나타내지만, (다른 마이크로프로세서를 갖는 PC, 엔지니어링 워크스테이션, PDA(personal digital assistants), 다른 휴대용 장치, 셋 탑 박스 등을 포함하는) 다른 시스템이 또한 사용될 수 있다. 하나의 실시 예에 있어서, 샘플 시스템은, 예를 들어, 마이카로소프트사로부터 상업적으로 입수 가능한 Windows™ 운영 체제의 버전을 실행할 수 있지만, 다른 운영 체제 및 그래픽 사용자 인터페이스가 또한 사용될 수 있다.
본 발명의 실시예가 도시되고 기술되었으나, 당 분야에서 통상의 지식을 가진 자라면 첨부된 청구 범위의 범주를 벗어나지 않고 변경 및 수정이 이루어질 수 있음이 명백할 것이다. 예들 들어, 중앙형 APIC 상태(202)의 적어도 하나의 실시예는 단지 하나의 판독 포트 및 하나의 기입 포트를 포함할 수 있다. 이러한 실시 예에 있어서, 입력 시스템 메시지 큐(204), 입력 로컬 메시지 큐(206) 및 인터럽트 시퀀서 블록(214)은 중앙형 APIC 상태(202)에 대한 액세스의 이득을 얻기 위해 중재 로직(도시하지 않음)을 이용할 수 있다.
또한, 예를 들어, 도 5에 도시된 방법(500)의 적어도 하나의 실시예는 상태(508)를 배제할 수 있다. 당 분야에서 통상의 지식을 가진 자라면 상태(508)는 단지 성능 향상(절전)을 제공할 뿐이며, 첨부된 청구 범위에 개시된 발명의 실시 예에 있어서 요구되는 것은 아님을 인지할 것이다.
또한, 예를 들어, 상기 설명에서는 전술한 중앙형 인터럽트 콘트롤러(110)의 적어도 하나의 실시예는 스코어보드(304)를 배제할 수 있음이 기술되어 있다. 각각의 실시 예에 있어서, 인터럽트 시퀀서(214)는 APIC 로직(212)으로부터 서비스를 수신하는 다음 APIC 인스턴스를 결정하기 위해 아키텍처 APIC 상태(302)의 엔트리(410)를 통해 순차적으로 진행할 수 있다.
따라서, 당 분야에서 통상의 지식을 가진 자라면 그 폭넓은 관점에서 본 발명으로부터 벗어나지 않고 수정 및 변형이 이루어질 수 있음을 인지할 것이다. 첨부되는 청구 범위는 본 발명의 범위 내에 해당하는 이러한 모든 수정 및 변경의 범위 내에 있는 것을 포함하는 것이다.

Claims (24)

  1. 다수의 프로세싱 유닛으로 및 다수의 프로세싱 유닛으로부터의 인터럽트 메시지의 전송을 위해 우선 순위 및 제어 기능을 수행하되, 상기 다수의 프로세싱 유닛 사이에 공유되는 단일 로직 블록(single logic block)과,
    상기 로직 블록에 결합되며, 상기 로직 블록에 의해 상기 다수의 프로세싱 유닛에 대한 인터럽트 이벤트를 스케줄링하는 인터럽트 시퀀서 블록과,
    다수의 인터럽트 콘트롤러 - 상기 다수의 인터럽트 콘트롤러의 각각은 상기 다수의 프로세싱 유닛의 각각에 대응하며, 상기 다수의 프로세싱 유닛의 각각에 APIC(Advanced Programmable Interrupt Controller)의 프로그래밍 인터페이스를 제공함 - 의 전체 아키텍처 인터럽트 상태(complete architectural interrupt)를 유지하는 저장 영역과,
    입력 인터럽트 메시지를 수신하고 상기 메시지로부터의 정보를 상기 저장 영역에 배치하는 하나 이상의 입력 메시지 큐와,
    출력 인터럽트 메시지를 전송하는 하나 이상의 출력 메시지 큐를 포함하는
    중앙형 인터럽트 콘트롤러를 위한 장치.
  2. 제 1 항에 있어서,
    상기 단일 로직 블록은 각각의 프로세싱 유닛에 대해 리던던트(redundant) 로직을 포함하는 대신에 비-리던던트(non-redundant) 회로를 포함하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  3. 제 1 항에 있어서,
    상기 인터럽트 시퀀서 블록은 페어니스 방안(fairness scheme)에 따라 상기 다수의 프로세싱 유닛에 대한 상기 인터럽트 이벤트를 스케줄링하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  4. 제 3 항에 있어서,
    상기 인터럽트 시퀀서 블록은 상기 저장 영역의 순차적인 진행(sequential traversal)에 따라 상기 다수의 프로세싱 유닛에 대한 상기 인터럽트 이벤트를 스케줄링하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  5. 제 1 항에 있어서,
    상기 프로세싱 유닛 중 어느 것이 계류 중인(pending) 인터럽트 이벤트를 갖는지에 관한 데이터를 유지하는 스코어보드(scoreboard)를 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  6. 제 1 항에 있어서,
    상기 저장 영역은 마이크로아키텍처(microarchitectural) 상태 정보를 더 저장하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  7. 제 1 항에 있어서,
    상기 다수의 프로세싱 유닛은 로컬 인터커넥트(local interconnect)를 통해 통신하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  8. 제 7 항에 있어서,
    상기 하나 이상의 입력 메시지 큐는 상기 로컬 인터커넥트를 통해 입력 인터럽트 메시지를 수신하는 메시지 큐를 포함하고,
    상기 하나 이상의 출력 메시지 큐는 상기 로컬 인터커넥트를 통해 출력 인터럽트 메시지를 전송하는 메시지 큐를 포함하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  9. 제 7 항에 있어서,
    상기 하나 이상의 입력 메시지 큐는 시스템 인터커넥트(system interconnect)를 통해 입력 인터럽트 메시지를 수신하는 메시지 큐를 포함하고,
    상기 하나 이상의 출력 메시지 큐는 상기 시스템 인터커넥트를 통해 출력 인터럽트 메시지를 전송하는 메시지 큐를 포함하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  10. 제 1 항에 있어서,
    상기 하나 이상의 출력 메시지 큐는 상기 저장 영역으로부터 상기 출력 인터럽트 메시지에 관한 정보를 또한 검색하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  11. 제 1 항에 있어서,
    상기 하나 이상의 출력 메시지 큐는 하나 이상의 상기 출력 인터럽트 메시지의 송신을 금지하는 방화벽 로직(firewall logic)을 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  12. 제 1 항에 있어서,
    상기 하나 이상의 입력 메시지 큐는 하나 이상의 상기 프로세싱 유닛에 대한 하나 이상의 상기 입력 인터럽트 메시지의 송신을 금지하는 방화벽 로직을 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 장치.
  13. 다수의 프로세싱 유닛 중 하나에 대해 아키텍처 인터럽트 상태를 결정하기 위해 저장 어레이를 컨설팅하는(consulting) 단계와,
    비-리던던트 인터럽트 전송 블록의 인터럽트 전송 서비스를 위해 상기 프로세싱 유닛 중 하나를 스케줄링하는 단계를 포함하며,
    상기 저장 어레이는 다수의 인터럽트 콘트롤러의 전체(complete) 아키텍처 인터럽트 상태를 유지하고,
    상기 다수의 인터럽트 콘트롤러의 각각은 상기 다수의 프로세싱 유닛의 각각에 대응하여, 상기 다수의 프로세싱 유닛의 각각에 APIC(Advanced Programmable Interrupt Controller)의 프로그래밍 인터페이스를 제공하며,
    상기 스케줄링은 각각의 프로세싱 유닛이 상기 인터럽트 전송 블록에 대해 동등하게 액세스하도록 하는 페어니스 방안(fairness scheme)에 따라 수행되는
    중앙형 인터럽트 콘트롤러를 위한 방법.
  14. 제 13 항에 있어서,
    상기 인터럽트 전송 블록은 개선된 프로그램 가능한 인터럽트 콘트롤러(advanced programmable interrupt controller : APIC) 로직을 포함하는 중앙형 인터럽트 콘트롤러를 위한 방법.
  15. 제 13 항에 있어서,
    상기 페어니스 방안은 하나 이상의 계류 중인(pending) 인터럽트 이벤트를 갖는 이들 프로세싱 유닛에 대한 순차적인 라운드 로빈(round-robin) 방안인 중앙형 인터럽트 콘트롤러를 위한 방법.
  16. 하나 이상의 스레드(one or more threads)를 실행하는 다수의 프로세싱 유닛과,
    상기 프로세싱 유닛에 결합된 메모리와,
    상기 다수의 프로세싱 유닛에 인터럽트 전송 서비스를 제공하고, 다수의 인터럽트 콘트롤러의 전체 아키텍처 인터럽트 상태를 유지하는 저장 영역을 포함하는 공유 인터럽트 콘트롤러를 포함하되,
    상기 다수의 인터럽트 콘트롤러의 각각은 상기 다수의 프로세싱 유닛의 각각에 대응하며, 상기 다수의 프로세싱 유닛의 각각에 APIC(Advanced Programmable Interrupt Controller)의 프로그래밍 인터페이스를 제공하는
    중앙형 인터럽트 콘트롤러를 위한 시스템.
  17. 제 16 항에 있어서,
    상기 공유 인터럽트 콘트롤러는 상기 다수의 프로세싱 유닛에 대해 APIC 인터럽트 전송 서비스를 또한 제공하는 중앙형 인터럽트 콘트롤러를 위한 시스템.
  18. 제 16 항에 있어서,
    상기 프로세싱 유닛은 자체 포함된 APIC 인터럽트 전송 로직을 포함하지 않는 중앙형 인터럽트 콘트롤러를 위한 시스템.
  19. 제 16 항에 있어서,
    상기 공유 인터럽트 콘트롤러는 방화벽 로직을 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 시스템.
  20. 제 16 항에 있어서,
    상기 다수의 프로세싱 유닛 간에 결합된 로컬 인터커넥트를 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 시스템.
  21. 제 20 항에 있어서,
    상기 공유 인터럽트 콘트롤러는 상기 로컬 인터커넥트를 통한 하나 이상의 인터럽트 메시지의 송신을 금지하는 방화벽 로직을 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 시스템.
  22. 제 16 항에 있어서,
    상기 공유 인터럽트 콘트롤러에 결합된 시스템 인터커넥트를 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 시스템.
  23. 제 22 항에 있어서,
    상기 공유 인터럽트 콘트롤러는 시스템 인터커넥트를 통한 하나 이상의 인터럽트 메시지의 송신을 금지하는 방화벽 로직을 더 포함하는 중앙형 인터럽트 콘트롤러를 위한 시스템.
  24. 제 16 항에 있어서,
    상기 공유 인터럽트 콘트롤러는 상기 다수의 프로세싱 유닛 간의 인터럽트의 직렬 서비스를 또한 스케줄링하는 중앙형 인터럽트 콘트롤러를 위한 시스템.
KR1020087010965A 2006-11-27 2006-11-27 중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템 KR100978147B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2006/045550 WO2008066511A1 (en) 2006-11-27 2006-11-27 Centralized interrupt controller

Publications (2)

Publication Number Publication Date
KR20080089564A KR20080089564A (ko) 2008-10-07
KR100978147B1 true KR100978147B1 (ko) 2010-08-25

Family

ID=38197844

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087010965A KR100978147B1 (ko) 2006-11-27 2006-11-27 중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템

Country Status (4)

Country Link
JP (1) JP2009515280A (ko)
KR (1) KR100978147B1 (ko)
CN (1) CN101305353B (ko)
WO (1) WO2008066511A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5195408B2 (ja) * 2008-12-25 2013-05-08 富士通セミコンダクター株式会社 マルチコアシステム
KR101915198B1 (ko) 2012-08-10 2018-11-05 한화테크윈 주식회사 프로세서간 메시지처리장치 및 방법
US8924615B2 (en) * 2012-10-26 2014-12-30 Arm Limited Communication of message signalled interrupts

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0737923A1 (en) * 1995-03-21 1996-10-16 Advanced Micro Devices, Inc. Interrupt system in microprocessor
EP0827084A2 (en) * 1996-08-20 1998-03-04 Compaq Computer Corporation Method and apparatus for distributing interrupts in a symmetric multiprocessor system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3424644B2 (ja) * 1995-02-09 2003-07-07 日本電気株式会社 プロセッサ間通信の方法
US5689713A (en) * 1995-03-31 1997-11-18 Sun Microsystems, Inc. Method and apparatus for interrupt communication in a packet-switched computer system
US5678057A (en) * 1995-06-07 1997-10-14 Lsi Logic Corporation Multi-Chip-Module (MCM) microcircuit including multiple processors and Advanced Programmable Interrupt Controller (APIC)
JP3059098B2 (ja) * 1996-01-31 2000-07-04 株式会社東芝 マルチプロセッサシステム
JPH10111809A (ja) * 1996-10-08 1998-04-28 Nec Corp 割り込みコントローラ
US5918057A (en) * 1997-03-20 1999-06-29 Industrial Technology Research Institute Method and apparatus for dispatching multiple interrupt requests simultaneously
US6370606B1 (en) * 1998-11-05 2002-04-09 Compaq Computer Corporation System and method for simulating hardware interrupts in a multiprocessor computer system
JP3769428B2 (ja) * 1999-09-30 2006-04-26 富士通株式会社 浮動割込みを保留できる情報処理装置および割込み条件変更命令実行方法
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0737923A1 (en) * 1995-03-21 1996-10-16 Advanced Micro Devices, Inc. Interrupt system in microprocessor
EP0827084A2 (en) * 1996-08-20 1998-03-04 Compaq Computer Corporation Method and apparatus for distributing interrupts in a symmetric multiprocessor system

Also Published As

Publication number Publication date
WO2008066511A1 (en) 2008-06-05
KR20080089564A (ko) 2008-10-07
JP2009515280A (ja) 2009-04-09
CN101305353A (zh) 2008-11-12
CN101305353B (zh) 2013-04-24

Similar Documents

Publication Publication Date Title
US20070106827A1 (en) Centralized interrupt controller
US8219993B2 (en) Frequency scaling of processing unit based on aggregate thread CPI metric
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US8799929B2 (en) Method and apparatus for bandwidth allocation mode switching based on relative priorities of the bandwidth allocation modes
JP3595504B2 (ja) マルチスレッド式プロセッサにおけるコンピュータ処理方法
US9003421B2 (en) Acceleration threads on idle OS-visible thread execution units
US20090320031A1 (en) Power state-aware thread scheduling mechanism
US8516483B2 (en) Transparent support for operating system services for a sequestered sequencer
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
US11360809B2 (en) Multithreaded processor core with hardware-assisted task scheduling
JP2001521215A (ja) マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
US7111182B2 (en) Thread scheduling mechanisms for processor resource power management
KR100978147B1 (ko) 중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템
US6895497B2 (en) Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
US6708259B1 (en) Programmable wake up of memory transfer controllers in a memory transfer engine
JP5710712B2 (ja) 中央化された割り込みコントローラ
JP2012009063A (ja) 中央化された割り込みコントローラ
US20240004808A1 (en) Optimized prioritization of memory accesses

Legal Events

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

Payment date: 20130801

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee