KR20130032402A - 전력-최적화된 인터럽트 전달 - Google Patents

전력-최적화된 인터럽트 전달 Download PDF

Info

Publication number
KR20130032402A
KR20130032402A KR20137004633A KR20137004633A KR20130032402A KR 20130032402 A KR20130032402 A KR 20130032402A KR 20137004633 A KR20137004633 A KR 20137004633A KR 20137004633 A KR20137004633 A KR 20137004633A KR 20130032402 A KR20130032402 A KR 20130032402A
Authority
KR
South Korea
Prior art keywords
hardware thread
interrupt
thread
processor
hardware
Prior art date
Application number
KR20137004633A
Other languages
English (en)
Other versions
KR101773224B1 (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 KR20130032402A publication Critical patent/KR20130032402A/ko
Application granted granted Critical
Publication of KR101773224B1 publication Critical patent/KR101773224B1/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/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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
    • 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
    • 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/5033Allocation 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 data affinity
    • 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/5055Allocation 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 software capabilities, i.e. software resources associated or available to the machine
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Bus Control (AREA)

Abstract

장치, 방법, 시스템, 및 컴퓨터 판독 가능 매체가 기술된다. 일 실시예에서, 장치는 프로세서이다. 프로세서는 제1 하드웨어 스레드 및 제2 하드웨어 스레드에 대한 하드웨어 스레드 인터럽트 등가 정보를 추적할 수 있는 스레드 리매핑 로직을 포함한다. 프로세서는 디바이스로부터 발행된 인터럽트를 수신하는 로직을 또한 포함하며, 상기 인터럽트는 제1 하드웨어 스레드와 관련된 친화성(affinity)을 가진다. 프로세서는, 제2 하드웨어 스레드가 인터럽트를 핸들링할 수 있다고 하드웨어 스레드 인터럽트 등가 정보가 입증할 때, 인터럽트를 제2 하드웨어 스레드로 리디렉션하는 로직을 또한 포함한다.

Description

전력-최적화된 인터럽트 전달{POWER-OPTIMIZED INTERRUPT DELIVERY}
본 발명은 하드웨어 스레드 전력 최적화를 위한 인터럽트 리매핑에 관한 것이다.
하드웨어 스레드(예를 들어, 프로세서 내의 동작 코어(operational core))는 저전력 휴면 상태(low power sleep state) 또는 장기 휴면 상태(deep sleep state) 등, 전력 최적화 상태로 들어가는 기능을 가질 수 있다. 입력/출력(I/O) 트래픽은 하드웨어 스레드에 인터럽트를 송신할 수 있으며, 이는 일반적으로 인터럽트를 서비스하기 위해 스레드가 저전력 상태에서 깨어나게 야기한다. 예를 들어, 하드웨어 스레드가 깨어나기를 요구하는 인터럽트들은 무엇보다 플랫폼 컴포넌트 인터커넥트(PCI)-익스프레스 디바이스, PCI 디바이스, 또는 입력/출력 어드밴스드 프로그래머블 인터럽트 컨트롤러(IOAPIC)로부터 비롯될 수 있다. 이 인터럽트들이 종종 도착하고 이들 각각이 하드웨어 스레드가 깨어나기를 요구할 때, 하드웨어 스레드를 전력 최적화 상태로 하는 목적은 이루어지지 않는다.
본 발명은 일례로서 도시된 것으로, 도면들에 의해 제한되지 않으며, 도면들에서, 유사한 참조 부호들은 유사한 요소들을 나타낸다.
도 1은 전력 최적화 인터럽트 전달이 가능한 컴퓨터 시스템의 일 실시예를 도시한다.
도 2는 전력 최적화 인터럽트 전달이 가능한 컴퓨터 시스템의 다른 실시예를 도시한다.
도 3은 각각의 하드웨어 스레드의 현재 전력 상태를 저장하는 데이터 구조뿐만 아니라 하드웨어 스레드/인터럽트 타입 등가 정보의 행렬을 저장하는 데이터 구조를 도시한다.
도 4는 전력 최적화 인터럽트 전달이 가능한 2 소켓 컴퓨터 시스템의 일 실시예를 도시한다.
도 5는 전력 최적화 인터럽트 전달이 가능한 2 노드 컴퓨터 시스템의 일 실시예를 도시한다.
도 6은 인터럽트 전달을 전력 최적화하는 프로세스의 일 실시예의 흐름도이다.
전력 최적화 인터럽트 전달이 가능한 프로세서, 시스템, 방법, 및 컴퓨터 판독 가능 매체의 실시예들이 기술된다.
컴퓨터 시스템은 수개의 하드웨어 스레드들을 포함할 수 있다. 하드웨어 스레드가 프로세서 내의 코어로서 생각되면, 각각의 프로세서가 수개의 코어들을 가진 멀티-프로세서 시스템에서, 잠정적으로 다수의 하드웨어 스레드들이 존재한다. 하드웨어 스레드는 작업중일 것이 요구되지 않을 때 저전력 상태로 들어가는 기능을 가질 수 있다. 저전력 상태에 있는 하드웨어 스레드들이 더 많아 질수록, 컴퓨터 시스템의 총 전력 소비는 더 낮아지게 된다.
서비스를 위해 특정 하드웨어 스레드를 요구하는 I/O 인터럽트가 발생할 때, 목표 하드웨어 스레드는 일반적으로 깨어나게 되고, 이는 휴면중인 하드웨어 스레드의 진행중인 전력 절약을 무효화한다. 따라서, 스레드 리매핑 로직이 각각의 하드웨어 스레드의 인터럽트 등가성 핸들링뿐만 아니라 각각의 하드웨어 스레드의 전력 상태를 계속 추적하는 컴퓨터 시스템 내에 존재할 수 있다. 예를 들어, 소정의 인터럽트의 경우, 인터럽트를 모두 핸들링할 수 있는 4개의 상이한 스레드들이 있을 수 있다. 따라서, 인터럽트가 제1 하드웨어 스레드를 목표로 하고 있으며, 제1 스레드가 저전력 상태이면, 스레드 리매핑 로직은 유효하고 인터럽트를 핸들링할 수 있는 다른 하드웨어 스레드를 탐색할 수 있다. 인터럽트 핸들링을 목적으로 하는 동등한 스레드가 유효하면, 스레드 리매핑 로직은 발견된 다른 하드웨어 스레드가 인터럽트를 핸들링하도록 인터럽트를 전송/리매핑해서, 원래 목표로 한 하드웨어 스레드는 저전력 상태를 유지할 수 있게 한다.
도 1은 전력 최적화 인터럽트 전달이 가능한 컴퓨터 시스템의 일 실시예를 도시한다.
컴퓨터 시스템(100)이 도시되어 있다. 컴퓨터 시스템은 데스크탑, 서버, 워크스테이션, 랩탑, 핸드헬드, 텔레비전 셋탑, 미디어 센터, 게임 콘솔, (자동차 등에서의) 통합 시스템, 또는 다른 타입의 컴퓨터 시스템일 수 있다. 몇몇 실시예들에서, 컴퓨터 시스템(100)은, "프로세서들"이라고도 하는, 하나의 또는 그 이상의 중앙 처리 장치들(CPUs)을 포함한다. 다수의 실시예들에서 잠정적으로 다수의 CPU들이 있더라도, 도 1에 도시된 실시예에서는, 명료성을 위해 오직 CPU(102)만이 도시된다. CPU(102)는 인텔? 코포레이션 CPU들 또는 다른 브랜드의 CPU들일 수 있다. CPU(102)는 상이한 실시예들에서 하나의 또는 그 이상의 코어들을 포함한다. CPU(102)는 4개의 코어들(코어들(104, 106, 108, 및 110))을 포함하는 것으로 도시되어 있다.
다수의 실시예들에서, 각각의 코어는 하나의 또는 그 이상의 실행 유닛들, 은퇴 유닛들(retirement units), 범용 및 특정 레지스터들의 집합 등의 내부 기능 블록들을 포함한다. 단일-스레딩 코어에서, 각각의 코어는 하드웨어 스레드라고 할 수 있다. 코어가 멀티-스레딩 또는 하이퍼-스레딩될 때, 각각의 코어 내에서 동작하는 각각의 스레드는 하드웨어 스레드라고도 할 수 있다. 따라서, 컴퓨터 시스템(100)에서 실행되는 임의의 단일 실행 스레드는 하드웨어 스레드라고 할 수 있다. 예를 들어, 도 1에서, 각각의 코어가 단일-스레딩되면, 시스템(4개의 코어들)에 4개의 하드웨어 스레드들이 존재한다. 다른 한편, 각각의 코어가 멀티-스레딩되고 2개의 스레드들의 상태들을 동시에 유지하는 기능을 가지면, 시스템(코어 당 2개의 스레드들을 가진 4개의 코어들)에 8개의 하드웨어 스레드들이 존재한다.
CPU(102)는 캐시(112)등의 하나의 또는 그 이상의 캐시들을 또한 포함할 수 있다. 도시되지 않은 다수의 실시예들에서, 캐시(112) 외의 추가 캐시들이 구현되어서, 캐시의 다수의 레벨들이 각각의 코어의 실행 유닛들과 메모리 사이에 존재한다. 상이한 실시예들에서, 캐시(112)는 상이한 방법들로 배분될 수 있다. 또한, 캐시(112)는 상이한 실시예들에서 다수의 상이한 크기들 중 하나일 수 있다. 예를 들어, 캐시(112)는 8 메가바이트(MB) 캐시, 16 MB 캐시 등일 수 있다. 또한, 상이한 실시예들에서, 캐시는 직접 매핑 캐시(direct mapped cache), 전체 연관 캐시(fully associative cache), 다중 방식의 집합 연관 캐시(multi-way set-associative cache), 또는 다른 타입의 매핑을 가진 캐시일 수 있다. 다수의 실시예들에서, 캐시(112)는 모든 코어들 간에 공유되는 하나의 큰 부분을 포함할 수 있으며, 또는 수개의 개별적인 기능 슬라이스들(예를 들어, 각각의 코어에 하나의 슬라이스)로 분할될 수 있다. 캐시(112)는 또한, 모든 코어들 간에 공유되는 일부분 및 코어 당 개별적인 기능 슬라이스들인 수개의 다른 부분들을 포함할 수 있다.
다수의 실시예들에서, CPU(102)는 시스템 메모리(116)와 통신하기 위해 인터페이스를 제공하도록 통합 시스템 메모리 컨트롤러(114)를 포함한다. 도시되지 않은 다른 실시예들에서, 메모리 컨트롤러(114)는 컴퓨터 시스템(100)에서 별개의 다른 곳에 위치할 수 있다.
시스템 메모리(116)는 한 타입의 더블 데이터 레이트(DDR) DRAM 등의 다이내믹 랜덤 액세스 메모리(DRAM), 플래시 메모리 등의 비휘발성 메모리, PCM(phase change memory), 또는 다른 타입의 메모리 기술을 포함할 수 있다. 시스템 메모리(116)는 CPU(102)에 의해 동작될 데이터 및 명령들을 저장하기 위한 범용 메모리일 수 있다. 또한, 다이렉트 메모리 액세스(DMA)-가능 I/O(입력/출력) 디바이스 등, 시스템 메모리들을 판독하고 그것에 기록하는 기능을 가진 컴퓨터 시스템(100) 내의 다른 잠정적 디바이스들이 있을 수 있다.
CPU(102)를 시스템 메모리(116)와 연결하는 링크(즉, 버스, 인터커넥트 등)는 데이터, 어드레스, 제어, 및 클록 정보를 수송할 수 있는 하나의 또는 그 이상의 광, 금속, 또는 다른 전선(즉, 라인들)을 포함할 수 있다.
I/O 콤플렉스(118)(예를 들어, I/O 컨트롤러 허브)는 CPU(102)와 외부 I/O 디바이스들 간의 통신을 가능케 하는 I/O 인터페이스(120)를 포함한다. 콤플렉스는 I/O 어댑터들(122 및 124) 등의 하나의 또는 그 이상의 I/O 어댑터들을 포함할 수 있다. I/O 어댑터들은 CPU(102) 내에서 사용되는 호스트 통신 프로토콜을 I/O 디바이스(126) 등의 특정 I/O 디바이스와 호환 가능한 프로토콜로 번역한다. 소정의 I/O 어댑터가 번역할 수 있는 프로토콜들 중 일부는, 무엇보다, PCI(Peripheral Component Interconnect), USB(Universal Serial Bus), IDE, SCSI, 및 1394 "파이어와이어(Firewire)"를 포함한다. 또한, 하나의 또는 그 이상의 무선 프로토콜 I/O 어댑터들이 있을 수 있다. 무선 프로토콜들의 일례들은, 무엇보다, 블루투스, IEEE 802.11-기반 무선 프로토콜들, 및 셀룰러 프로토콜들이다.
다수의 실시예들에서, BIOS(128)(basic input/output system)는 I/O 콤플렉스(118)에 통합되거나 또는 I/O 콤플렉스(118)에 연결된다. BIOS는 부팅 프로세스 중에 주요한 컴퓨터 시스템 컴포넌트들을 초기화하기 위한 명령들을 포함하는 컴퓨터 시스템에 저장된 펌웨어이다.
명료성을 위해 도시되지 않았지만, CPU는 그래픽 및 네트워크 트래픽을 처리하기 위해 고속 I/O 인터페이스들 등의 추가 인터페이스들을 가질 수 있다. 다수의 실시예들에서, 이들 고속 I/O 인터페이스들은 하나의 또는 그 이상의 PCI-익스프레스 인터페이스들을 포함할 수 있다.
다수의 실시예들에서, 컴퓨터 시스템(100)은 가상 기계(VM) 환경들에서 실행되는 하나의 또는 그 이상의 게스트 운영 체제들(OSs)을 가상화된 환경에 제공할 수 있는 하드웨어 및 소프트웨어 로직을 포함한다. 가상 기계 모니터(VMM) 또는 하이퍼바이저는, 각각의 VM, 및 그 내부에서 실행되는 OS 및 애플리케이션들이 시스템에 존재하는 다른 VM들과 분리되고 인식되지 않도록, 각각의 VM의 운영 환경을 분리하기 위해 시스템 내에서 로직으로 구현될 수 있다. 예를 들어, 일부 실시예들에서, 메모리 스토리지(116)에 존재하는 VMM(134)은, 각각, 각각의 VM에서 실행되는 OS(138) 및 OS(142)뿐만 아니라 VM(136) 및 VM(140)을 위한 리소스들을 관리할 수 있다.
또한, CPU(102)는 CPU(102)에 제공된 전력(VCC)을 조절하는 전압 조절 로직(144)을 포함할 수 있다.
매끄러운 가상화 환경을 생성하기 위해, 가상화된 I/O가 일반적으로 사용된다. I/O 가상화 로직(130)은, I/O 디바이스(126) 등, I/O 서브시스템의 I/O 디바이스들을 가상화 및 분리하는 기능을 제공한다. 일부 실시예들에서, I/O 가상화 로직(130)은 인텔? VT-d 아키텍처를 포함한다. 다른 실시예들에서, x86 또는 x86이 아닌 클래스 IOMMU 셋업 등, 다른 타입의 메모리 매핑 I/O 기술이 사용된다.
I/O 디바이스에 의해 개시된 디바이스 전송들(DMAs) 및 인터럽트들은 소정의 VM에 디바이스 분리를 요구하는 주요한 프로세스들이다. 다수의 실시예들에서, I/O 가상화 로직(130)은 시스템 소프트웨어가 다수의 DMA 보호 도메인들을 생성하게 할 수 있다. 보호 도메인은 시스템 메모리의 부집합이 할당되는 분리된 환경이다. 소프트웨어 사용 모델에 따라, DMA 보호 도메인은 VM에 할당된 메모리, 또는 VMM/하이퍼바이저 자체의 파트로서 또는 VM에서 실행중인 게스트-OS 드라이버에 의해 할당된 DMA 메모리를 나타낼 수 있다. I/O 가상화 로직(130)은 시스템 소프트웨어가 보호 도메인에 하나의 또는 그 이상의 I/O 디바이스들을 할당하게 할 수 있다. DMA 분리는 할당되지 않은 I/O 디바이스들로부터 보호 도메인의 물리적 메모리에 대한 액세스를 제한함으로써 달성된다.
인터럽트 핸들링을 위해, I/O 가상화 로직(130)은 "메시지 식별자"를 포함하지만 실제 인터럽트 속성들은 포함하지 않는 DMA 기록 요청이 되도록 인터럽트-메시지 포맷을 변경할 수 있다. 임의의 DMA 요청과 같은 기록 요청은 인터럽트를 생성하는 I/O 디바이스 기능의 리퀘스터-id(requester-id)를 지정할 수 있다. 그 후, 인터럽트 요청이 I/O 가상화 로직(130)에 의해 수신될 때, 인터럽트는 인터럽트들의 테이블 구조를 통해 리매핑된다. 인터럽트-리매핑 테이블의 각각의 엔트리는, 임의의 필요한 인터럽트 속성들(예를 들어, 목적지 CPU, 벡터 등)을 포함해서, 디바이스로부터 고유한 인터럽트 메시지 식별자에 대응한다.
도 1에 도시된 실시예에서, I/O 가상화 로직(130)은 I/O 인터페이스(120)를 통해 하나의 또는 그 이상의 I/O 디바이스들로부터의 요청들을 수신한다. I/O 가상화 로직(130)은, 메모리 컨트롤러(114)의 관통을 허용하기 전에, 상술된 바와 같이, 요청들을 핸들링한다.
도 1에 도시된 실시예 등의 다수의 실시예들에서, 스레드 리매핑 로직(TRL)(132)은 I/O 가상화 로직(130) 내에 존재한다. 다른 실시예들에서, TRL(130)은, CPU(102) 내부의 다른 장소에 또는 도 2에 도시된 바와 같이 가능한 대로 심지어 CPU(102) 외부에 등, 컴퓨터 시스템(100) 내의 다른 곳에 존재한다.
도 2는 전력 최적화 인터럽트 전달이 가능한 컴퓨터 시스템의 다른 실시예를 도시한다.
도 2에 도시된 실시예에서, I/O 콤플렉스(200)가 CPU(102)의 외부에 위치한다는 점에서 상이한 것을 제외하고, CPU(102)는 도 1의 CPU와 유사하다. I/O 콤플렉스(200)는, CPU(102) 외부의 장소로부터만, 도 1에 도시된 바와 같이 작용하는 동일한 기능들을 실행하는, I/O 가상화 로직(202) 및 TRL(204)을 포함한다. I/O 어댑터들(206 및 208)이 또한 동일한 기능들 실행한다. 즉, I/O 디바이스(126) 등의 하나의 또는 그 이상의 I/O 디바이스들에 통신 인터페이스를 제공한다. 다수의 실시예들에서, I/O 콤플렉스(200)는 일련의 구리, 광, 또는 다른 물리적 타입의 라인들/전선들을 통해 CPU(102)에 연결되고 시스템 마더보드에 위치한 개별적인 I/O 컨트롤러 허브이다.
도 1을 참조하면, TRL(132)은 수개의 기능들을 실행한다. 먼저, TRL(132)의 로직은 각각의 하드웨어 스레드의 현재 전력 상태를 추적한다. 다수의 컴퓨터 시스템들은 ACPI(Advanced Configuration and Power Interface) 전력 관리 방식을 구현한다. ACPI는 전력 관리의 산업-표준 형태를 인에이블하며, 소프트웨어, BIOS, 및 하드웨어 내에서 잠정적으로 구현된다. 임의의 소정의 시간에, 하드웨어 스레드는 다수의 전력 상태들 중 하나이거나, 또는 2개의 전력 상태들 사이에서 전이한다. 하드웨어 스레드가 들어갈 수 있는 전력 상태들의 수는 구현할 때 지정될 수 있다. 예를 들어, 하드웨어 스레드가 될 수 있는 상태들 중 일부는 C0(총 동작), C1(중단), C2(기한 연장(stop-clock)), C3(휴면), 및 C4 및 C6 등의 보다 장기의 휴면 상태들이다. 다른 전력 최적화 상태들은 MONITOR 및 MWAIT 스레딩 명령들을 사용할 수 있다. 하드웨어 스레드가 들어갈 수 있는 각각의 전력 상태는 상이한 양의 기능성을 가지거나 또는 기능성이 부족할 수 있다. 일반적으로, 전력 절약이 더 광범위할수록, 하드웨어 스레드가 상태로부터 전이하는 데 걸리는 시간이 더 길어진다.
I/O 디바이스로부터 전력 절약 상태에 들어가거나 또는 그 상태에 머물기를 시도하는 하드웨어 스레드에 송신된 인터럽트들을 제한하거나 또는 전적으로 차단하는 것이 일반적으로 시스템 전력을 절약하는 것이다. 문제점은, 디바이스가 서비스를 받을 인터럽트들을 필요로 한다는 점이다. 따라서, 인입 I/O 디바이스 인터럽트들을 전력 절약 상태들에 있지 않는 대안의 하드웨어 스레드들에 리디렉션해서, 원래 목표로 한 스레드가 저전력 소비 상태에 머물게 함으로써 시스템 전력 절약을 유지하는데 도움을 줄 수 있다.
TRL(132)은 각각의 타입의 인터럽트에 대한 서비스에 호환성이 있는 하드웨어 스레드들에 대한 정보를 저장한 리스트, 테이블, 또는 다른 타입의 데이터 구조에 액세스한다. 다시 말해서, 소정의 타입의 인터럽트의 경우, 해당 인터럽트를 서비스할 수 있는 하드웨어 스레드들의 집합이 존재할 것이다. 예를 들어, 특정 인터럽트(예를 들어, 인터럽트 타입 "A")가 하드웨어 스레드들 1 및 2에 의해 서비스받을 수 있으면, 그 특정 인터럽트 하의 인터럽트-타입 테이블에는 하드웨어 스레드들 1 및 2가 존재할 것이다. 따라서, I/O 디바이스(126) 등의 I/O 디바이스가 하드웨어 스레드 1에 "A" 인터럽트를 송신하고 하드웨어 스레드 1이 저전력 상태이면, TRL(132)은 인터럽트 목표를 하드웨어 스레드 1로부터 하드웨어 스레드 2로 투명하게 리매핑할 수 있다. OS 또는 VMM은 소정의 타입의 인터럽트를 핸들링할 수 있는 하드웨어 스레드들의 집합을 구성할 수 있다. 소정의 인터럽트를 핸들링할 수 있는 하드웨어 스레드들의 집합은 스레드 친화성(affinity), 캐시 공유 토폴로지, 또는 다른 정적 또는 동적 요인들에 기반할 수 있다.
도 3은 각각의 하드웨어 스레드의 현재 전력 상태를 저장하는 데이터 구조뿐만 아니라 하드웨어 스레드/인터럽트 타입 등가 정보의 행렬을 저장하는 데이터 구조를 도시한다.
상술된 바와 같이, 하드웨어 스레드/인터럽트 타입 등가 행렬 테이블은 소정의 인터럽트 타입을 핸들링할 수 있는 스레드들의 집합에 대한 정보를 저장한다. 도 3에 도시된 실시예에서, 스레드 리매핑 로직(300)이 정보 액세스를 갖는 4개의 코어들(코어들 0-3)이 있다. 하드웨어 스레드/인터럽트 타입 행렬 테이블(302)은 소정의 타입의 인터럽트의 핸들링에 호환성이 있는 하드웨어 스레드들의 리스트를 포함한다. 예를 들어, 인터럽트 타입 A는 존재하는 모든 하드웨어 스레드들에 의해 핸들링될 수 있는 반면, 인터럽트 타입 B는 오직 하드웨어 스레드들 0 및 2에 의해서만 핸들링될 수 있다.
하드웨어 스레드 현재 전력 상태 테이블(304)은 각각의 하드웨어 스레드의 현재 전력 상태를 포함한다. 설명을 위해, 테이블은 오직 각각의 스레드가 비휴면 상태인지 또는 휴면 상태인지만을 나타내지만, 실제로, 열거될 수 있는 다수의 상태들이 있을 수 있다. 예를 들어, 스레드는 전력의 임의의 C-상태(예를 들어, C1, C2, C6 등)일 수 있다.
인입 I/O 디바이스 인터럽트(306)가 TRL(300)에 도달할 때, TRL은 목표 하드웨어 스레드가 비휴면 상태인지 또는 휴면 상태인지를 알기 위해 하드웨어 스레드 현재 전력 상태 테이블(304)을 먼저 살핀다. 하드웨어 스레드가 비휴면 상태이면, TRL(300)은 단지 원래 목표로 한 하드웨어 스레드에 인터럽트를 송신할 수 있다. 한편, 원래 목표로 한 하드웨어 스레드가 휴면 상태이면, TRL(300)은 스레드 핸들링 등가성을 찾기 위해 하드웨어 스레드/인터럽트 타입 행렬 테이블(302)을 살피고, 인입 인터럽트를 핸들링할 수 있는 다른 하드웨어 스레드를 찾을 수 있으며, 다른 가능한 하드웨어 스레드가 유효하면, TRL(300)은 가능한 유효한(즉, 비휴면 상태) 스레드에 인터럽트를 리매핑할 수 있다.
다수의 실시예들에서, TRL은 시스템에 존재하는 각각의 CPU 내에 존재해서, 멀티-소켓 컴퓨터 시스템에서는, 다수의 TRL들이 존재한다.
도 4는 전력 최적화 인터럽트 전달이 가능한 2 소켓 컴퓨터 시스템의 일 실시예를 도시한다.
도 4에 도시된 실시예에서, 2개의 CPU들(CPU A(400) 및 CPU B(402))이 존재한다. 또한, 각각의 CPU는 2개의 코어들(CPU A(400) 내의 코어들 A0 및 A1 및 CPU B(402) 내의 코어들 B0 및 B1)을 포함한다. 또한, CPU A(400)는 TRL A(404)를 포함하고, CPU B(402)는 TRL B(406)를 포함한다. 다수의 실시예들에서, 각각의 TRL은 하드웨어 스레드/인터럽트 타입 행렬 테이블(도 3의 302) 및 하드웨어 스레드 현재 전력 상태 테이블(도 3의 304)의 자신의 국부적 복사본(local copy)을 포함한다. 이 테이블들의 다수의 복사본들이 있더라도, 각각의 TRL이 동일한 정보를 갖도록, 이 테이블들 내의 정보는 복사본들에 걸쳐 균일해야만 한다. 이 2개의 테이블들 내의 정보의 거울 복사본들(mirror copies)은 각각의 CPU의 인터-CPU 링크 인터페이스(CPU A(400)의 인터페이스(412) 및 CPU B(402)의 인터페이스(414))에 연결된 인터-CPU 링크(410)를 통해 브로드캐스트되는 인터-CPU 브로드캐스트 메시지들(408)에 의해 유지될 수 있다.
예를 들어, 하드웨어 스레드가 2개의 전력 상태들 간에 전이될 때, 전력 상태 전이 메시지는 컴퓨터 시스템에 존재하는 모든 TRL들에 인터-CPU 인터커넥트를 통해 브로드캐스트될 수 있다. 각각의 TRL은 이 메시지에 래칭하고, 해당 하드웨어 스레드가 전이된 새로운 전력 상태를 나타내기 위해 국부적으로 저장된 하드웨어 스레드 현재 전력 상태 테이블(도 3의 304)을 갱신할 수 있다.
일부 실시예들에서, 전력 상태들 간에 전이중인 하드웨어 스레드는 자신의 메시지를 모든 TRL들에 브로드캐스트한다. 다른 실시예들에서, 전력 상태들 간에 전이중인 하드웨어 스레드는 전이 정보를 국부적 TRL에 송신하고, 차례로 모든 다른 TRL들에 상태 전이를 브로드캐스트한다.
도 5는 전력 최적화 인터럽트 전달이 가능한 2 노드 컴퓨터 시스템의 일 실시예를 도시한다.
도 4에 도시된 실시예에서, 2개의 노드들(노드 A 및 노드 B)이 존재한다. 노드 A는 2개의 CPU들(CPU A0 및 CPU A1)을 포함한다. 각각의 CPU는 2개의 코어들: CPU A0의 코어들 A0a 및 A0b, CPU A1의 코어들 A1a 및 A1b, CPU B0의 코어들 B0a 및 B0b, CPU B1의 코어들 B1a 및 B1b를 포함한다. 노드 A 및 노드 B는 인터-노드 링크(500)를 통해 연결된다. 노드 컨트롤러가 각각의 노드에 존재한다. 노드 컨트롤러 A(502)는 노드 A의 관리를 돕고, 노드 컨트롤러 B는 노드 B의 관리를 돕는다. 인터-노드 통신 트래픽은 각각의 개별적인 노드 컨트롤러를 통해 라우팅될 필요가 있다. 따라서, 전력 상태로 전이할 때 하드웨어 스레드에 의해 송신된 메시지는 노드 컨트롤러들을 통해 노드들 간에 라우팅될 수 있다(2개의 노드들 간에 라우팅된 점선들로 표시됨).
도 6은 인터럽트 전달을 전력 최적화하는 프로세스의 일 실시예의 흐름도이다.
프로세스는 하드웨어, 소프트웨어, 펌웨어, 또는 열거된 타입들의 프로세싱 로직의 임의의 조합에 의해 실행될 수 있는, 프로세싱 로직에 의해 실행된다. 프로세스는 I/O 디바이스 인터럽트를 수신하는 프로세싱 로직으로 시작된다(프로세싱 블록(600)).
그 후, 프로세싱 로직은 인터럽트의 목표(즉, 인터럽트가 스레드에 대해 친화성을 가짐)인 하드웨어 스레드가 전력 절약 상태인 지를 결정한다(프로세싱 블록(602)). 목표 하드웨어 스레드가 전력 절약 상태가 아니면, 프로세싱 로직은 단순히 원래 목표로 한 하드웨어 스레드에 I/O 디바이스 인터럽트를 송신할 수 있다(프로세싱 블록(604)).
한편, 목표 하드웨어 스레드가 전력 절약 상태이면, 프로세싱 로직은 다른 하드웨어 스레드가 호환 가능한 지를 결정한다(즉, 예를 들어, 도 3의 하드웨어 스레드/인터럽트 타입 등가 행렬(302) 내에서, 프로세싱 로직에 액세스 가능한 하드웨어 스레드 등가 정보로부터 획득됨)(프로세싱 블록(606)).
도 6에 도시된 실시예에서, 프로세스가 진행되어, 호환 가능한 하드웨어 스레드가 없으면, 프로세싱 로직은 목표 하드웨어 스레드를 깨우고(프로세싱 블록(608)), 목표 하드웨어 스레드에 인터럽트를 송신한다(604). 도시되지 않은 다른 실시예들에서, 프로세싱 로직은 동등한 CPU 하드웨어 스레드가 (명령 요구 사항들에 대해) 유효해질 때까지 인터럽트를 홀딩할 수 있다.
호환 가능한 하드웨어 스레드가 있으면, 프로세싱 로직은 호환 가능한 하드웨어 스레드가 유효한 지를 결정한다(프로세싱 블록(610)). 예를 들어, 스레드가 또한 장기 휴면 전력 절약 상태이어서 쉽게 유효해질 수 없는 호환 가능한 하드웨어 스레드가 있을 수 있다. 다수의 실시예들에서, 전력 절약 상태들의 등급 순서들이 있어서, 2개의 개별 호환 가능한 스레드들이 둘 다 전력 절약 상태들이면, 프로세싱 로직은 가장 짧은 "장기" 휴면 상태인 스레드를 깨울 수 있어서, 더 긴 장기의 휴면 스레드가 휴면 상태를 유지할 수 있게 한다. 이는 2가지 점을 동시에 달성한다. 먼저, 추가 시스템 전력을 절약중인 더 장기의 휴면 스레드가 더 큰 전력 절약 모드에 머물 수 있게 한다. 둘째로, 더 장기의 휴면 상태가 일반적으로 더 긴 웨이크업 레이턴시를 야기하기 때문에, 덜 장기의 휴면 상태인 스레드가 더 작은 레이턴시로 비휴면 상태로 전이할 수 있다.
도 6에 도시된 프로세스를 참조하면, 호환 가능한 하드웨어 스레드가 유효하지 않으면, 프로세싱 로직은 블록(606)으로 복귀해서, 또 다른 호환 가능한 하드웨어 스레드가 있는 지를 결정한다. 다르게, 호환 가능한 스레드가 유효하면, 프로세싱 로직은 발견된 대안의 동등한 하드웨어 스레드에 I/O 디바이스 인터럽트를 리매핑하고(프로세싱 블록(612)), 리매핑된 인터럽트를 그 대안의 하드웨어 스레드에 송신한다(프로세싱 블록(614)).
본질적으로, 프로세싱 로직은 투명한 방식으로 한 하드웨어 스레드로부터 다른 하드웨어 스레드로 인터럽트를 전이할 수 있다(즉, I/O 디바이스는 본질적으로 인터럽트의 핸들링을 위해 스레드들 간의 전이를 알지 못함).
본 발명의 실시예들의 요소들은 또한 기계 실행 가능 명령들을 저장하기 위한 기계 판독 가능 매체로서 제공될 수 있다. 기계 판독 가능 매체는 플래시 메모리, 광 디스크들, CD-ROM(compact disks-read only memory), DVD(digital versatile/video disks) ROM, 랜덤 액세스 메모리(RAM), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 자기 또는 광 카드들, 전파 매체, 또는 전자 명령들을 저장하기에 적합한 다른 타입의 기계 판독 가능 매체들을 포함할 수 있지만, 이들로만 제한되지는 않는다.
상술된 설명 및 청구항들에서, 용어들 "포함하다(include 및 comprise)"는, 그 파생어들과 함께, 사용될 수 있으며, 서로 동의어들로서 처리되도록 의도된 것이다. 또한, 이하의 설명 및 청구항들에서, 용어들 "연결된(coupled)" 및 "커넥트된(connected)"은, 그 파생어들과 함께, 사용될 수 있다. 이 용어들은 서로 동의어들로서 의도된 것이 아님을 이해해야만 한다. 오히려, 특정 실시예들에서, "커넥트된(connected)"은, 2개의 또는 그 이상의 요소들이 서로 직접적으로 물리적 또는 전기적 접촉을 하고 있음을 나타내는데 사용될 수 있다. "연결된(coupled)"은, 2개의 또는 그 이상의 요소들이 직접적으로 물리적 또는 전기적 접촉을 하고 있음을 의미할 수 있다. 그러나, "연결된(coupled)"은 또한, 2개의 또는 그 이상의 요소들이 서로 직접적으로 접촉하고 있지 않지만, 또 여전히 서로 협력, 상호 작용, 또는 통신함을 의미할 수 있다.
상술된 설명에서, 특정 전문 용어가 본 발명의 실시예들을 나타내는데 사용된다. 예를 들어, 용어 "로직(logic)"은 하나의 또는 그 이상의 기능들을 실행하기 위한 하드웨어, 펌웨어, 소프트웨어(또는 임의의 조합)를 나타낸다. 예를 들어, "하드웨어"의 일례들은, 집적 회로, 유한 상태 기계, 또는 심지어 결합 로직을 포함하지만, 이들로만 제한되지는 않는다. 집적 회로는 마이크로프로세서, 주문형 집적 회로, 디지털 신호 프로세서, 마이크로-컨트롤러 등의 프로세서의 형태를 취할 수 있다.
본 명세서에 걸쳐 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 참조는, 실시예와 연관해서 기술된 특정 피처, 구조 또는 특징이 본 발명의 적어도 하나의 실시예에 포함됨을 의미함을 알아야만 한다. 따라서, 본 명세서의 각종 부분들에서의 "실시예(an embodiment)" 또는 "일 실시예(one embodiment)" 또는 "대안의 실시예(an alternative embodiment)"에 대한 2번의 또는 그 이상의 참조들은 반드시 모두 동일한 실시예를 나타내는 것이 아님을 알아야만 하며 강조된다. 또한, 특정 피처들, 구조들 또는 특징들은 본 발명의 하나의 또는 그 이상의 실시예들에서 적합하게 결합될 수 있다.
유사하게, 본 발명의 실시예들의 상술된 설명에서, 하나의 또는 그 이상의 본 발명의 각종 양상들의 이해를 돕는 본 설명을 간소화하기 위해 각종 피처들은 단일 실시예, 도면, 또는 기술에서 때때로 함께 그룹지어짐을 알아야만 한다. 그러나, 본 명세서의 방법은 청구 대상이 각각의 청구항에 명백히 인용된 것보다 더 많은 피처들을 요구한다는 의도를 반영하는 것으로 해석되지 않을 것이다. 오히려, 이하의 청구항들이 반영하는 바와 같이, 본 발명의 양상들은 상술된 단일 실시예의 모든 피처들보다 더 적게 있다. 따라서, 상세한 설명에 이어지는 청구항들은 본 명세서에서 상세한 설명에 명백히 포함된다.

Claims (25)

  1. 스레드 리매핑 로직을 포함하는 제1 프로세서로서, 상기 스레드 리매핑 로직은
    제1 하드웨어 스레드 및 제2 하드웨어 스레드에 대한 하드웨어 스레드 인터럽트 등가 정보를 추적하고;
    디바이스로부터 발행된 인터럽트를 수신하며 - 상기 인터럽트는 상기 제1 하드웨어 스레드와 관련된 친화성(affinity)을 가짐 - ;
    상기 제2 하드웨어 스레드가 상기 인터럽트를 핸들링할 수 있다고 상기 하드웨어 스레드 인터럽트 등가 정보가 입증할 때, 상기 인터럽트를 상기 제2 하드웨어 스레드에 리디렉션하는 제1 프로세서.
  2. 제1항에 있어서,
    상기 스레드 리매핑 로직은
    상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드에 대한 전력 상태 정보를 추적하도록 더 동작하는 제1 프로세서.
  3. 제1항에 있어서,
    상기 제1 하드웨어 스레드로부터 상기 제2 하드웨어 스레드로의 상기 인터럽트의 리디렉션은 적어도 상기 제1 하드웨어 스레드가 저전력 상태이고 상기 제2 하드웨어 스레드가 총 동작 상태일 때 발생하는 제1 프로세서.
  4. 제2항에 있어서,
    상기 제1 하드웨어 스레드는
    상기 제1 하드웨어 스레드가 전력 상태들을 변경함에 응답해서 제2 프로세서에, 상기 제1 하드웨어 스레드가 동작하는 전력 상태의 변경을 나타내는 전력 전이 메시지를 송신하도록 더 동작하는 제1 프로세서.
  5. 제4항에 있어서,
    상기 스레드 리매핑 로직은
    상기 제1 하드웨어 스레드가 저전력 상태로 전이할 때 프로그래밍된 인터럽트 리디렉션 없이 투명하게 상기 디바이스가 정상 동작을 계속할 수 있도록 더 동작하는 제1 프로세서.
  6. 제5항에 있어서,
    상기 제2 하드웨어 스레드는 상기 인터럽트를 서비스하는 제1 프로세서.
  7. 제4항에 있어서,
    상기 제1 하드웨어 스레드는 상기 제1 프로세서에 존재하고, 상기 제2 하드웨어 스레드는 제2 프로세서에 존재하며, 상기 전력 전이 메시지는 상기 제1 프로세서 및 상기 제2 프로세서에 연결된 인터-프로세서 통신 링크를 가로질러 송신되는 제1 프로세서.
  8. 제7항에 있어서,
    상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드 각각에 대한 상기 하드웨어 스레드 인터럽트 등가 정보 및 상기 전력 상태 정보는 상기 제2 프로세서에 존재하는 제2 스레드 리매핑 로직에서 동시에 추적되는 제1 프로세서.
  9. 제1 하드웨어 스레드 및 제2 하드웨어 스레드에 대한 하드웨어 스레드 인터럽트 등가 정보를 추적하는 단계;
    디바이스로부터 발행된 인터럽트를 수신하는 단계 - 상기 인터럽트는 상기 제1 하드웨어 스레드와 관련된 친화성을 가짐 - ; 및
    상기 제2 하드웨어 스레드가 상기 인터럽트를 핸들링할 수 있다고 상기 하드웨어 스레드 인터럽트 등가 정보가 입증할 때, 상기 인터럽트를 상기 제2 하드웨어 스레드에 리디렉션하는 단계
    를 포함하는 방법.
  10. 제9항에 있어서,
    상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드에 대한 전력 상태 정보를 추적하는 단계를 더 포함하는 방법.
  11. 제9항에 있어서,
    상기 제1 하드웨어 스레드로부터 상기 제2 하드웨어 스레드로 상기 인터럽트를 리디렉션하는 단계는 적어도 상기 제1 하드웨어 스레드가 저전력 상태이고 상기 제2 하드웨어 스레드가 총 동작 상태일 때 발생하는 방법.
  12. 제10항에 있어서,
    상기 제1 하드웨어 스레드가 전력 상태들을 변경함에 응답해서 상기 제2 하드웨어 스레드에, 상기 제1 하드웨어 스레드가 동작하는 전력 상태의 변경을 나타내는 전력 전이 메시지를 송신하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 제1 하드웨어 스레드가 저전력 상태로 전이할 때 프로그래밍된 인터럽트 리디렉션 없이 투명하게 상기 디바이스가 정상 동작을 계속할 수 있도록 하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 제2 프로세서 스레드로 상기 인터럽트를 서비스하는 단계를 더 포함하는 방법.
  15. 제12항에 있어서,
    제1 프로세서 및 제2 프로세서에 연결된 인터-프로세서 통신 링크를 가로질러 상기 전력 전이 메시지를 송신하는 단계를 포함하고, 상기 제1 하드웨어 스레드는 상기 제1 프로세서에 존재하며, 상기 제2 하드웨어 스레드는 상기 제2 프로세서에 존재하는 방법.
  16. 제15항에 있어서,
    상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드 각각에 대한 상기 하드웨어 스레드 인터럽트 등가 정보 및 상기 전력 상태 정보를, 상기 제2 프로세서에 존재하는 제2 스레드 리매핑 로직에서 동시에 추적하는 단계를 더 포함하는 방법.
  17. 제1 하드웨어 스레드와 제2 하드웨어 스레드 간에 정보를 전송하기 위한 인터-하드웨어 스레드 통신 링크;
    적어도 상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드에 대한 하드웨어 스레드 인터럽트 등가 정보를 저장하기 위한 제1 메모리 스토리지;
    적어도 상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드에 대한 전력 상태 정보를 저장하기 위한 제2 메모리 스토리지; 및
    상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드에 대한 상기 하드웨어 스레드 인터럽트 등가 정보를 추적하고;
    디바이스로부터 발행된 인터럽트를 수신하며 - 상기 인터럽트는 상기 제1 하드웨어 스레드와 관련된 친화성을 가짐 - ;
    상기 제2 하드웨어 스레드가 상기 인터럽트를 핸들링할 수 있다고 상기 하드웨어 스레드 인터럽트 등가 정보가 입증할 때, 상기 인터럽트를 상기 제2 하드웨어 스레드에 리디렉션하기 위한
    제1 스레드 리매핑 로직 유닛
    을 포함하는 시스템.
  18. 제17항에 있어서,
    상기 제1 하드웨어 스레드로부터 상기 제2 하드웨어 스레드로의 상기 인터럽트의 리디렉션은 적어도 상기 제1 하드웨어 스레드가 저전력 상태이고 상기 제2 하드웨어 스레드가 총 동작 상태일 때 발생하는 시스템.
  19. 제17항에 있어서,
    상기 제1 스레드 리매핑 로직 유닛은
    상기 제1 하드웨어 스레드가 전력 상태들을 변경함에 응답해서 상기 제2 하드웨어 스레드에, 상기 제1 하드웨어 스레드가 동작하는 전력 상태의 변경을 나타내는 전력 전이 메시지를 송신하도록 더 동작하는 시스템.
  20. 프로세서에 의해 실행될 때, 상기 프로세서가 방법을 실행하도록 야기하는 명령어들이 저장되어 있는 컴퓨터 판독 가능 매체로서, 상기 방법은
    제1 하드웨어 스레드 및 제2 하드웨어 스레드에 대한 하드웨어 스레드 인터럽트 등가 정보를 추적하는 단계;
    디바이스로부터 발행된 인터럽트를 수신하는 단계 - 상기 인터럽트는 상기 제1 하드웨어 스레드와 관련된 친화성을 가짐 - ; 및
    상기 제2 하드웨어 스레드가 상기 인터럽트를 핸들링할 수 있다고 상기 하드웨어 스레드 인터럽트 등가 정보가 입증할 때, 상기 인터럽트를 상기 제2 하드웨어 스레드에 리디렉션하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
  21. 제20항에 있어서,
    상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드에 대한 전력 상태 정보를 추적하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  22. 제20항에 있어서,
    상기 제1 하드웨어 스레드로부터 상기 제2 하드웨어 스레드로 상기 인터럽트를 리디렉션하는 단계는 적어도 상기 제1 하드웨어 스레드가 저전력 상태이고 상기 제2 하드웨어 스레드가 총 동작 상태일 때 발생하는 컴퓨터 판독 가능 매체.
  23. 제22항에 있어서,
    상기 제1 하드웨어 스레드가 전력 상태들을 변경함에 응답해서 상기 제2 하드웨어 스레드에, 상기 제1 하드웨어 스레드가 동작하는 전력 상태의 변경을 나타내는 전력 전이 메시지를 송신하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  24. 제23항에 있어서,
    제1 프로세서 및 제2 프로세서에 연결된 인터-프로세서 통신 링크를 가로질러 상기 전력 전이 메시지를 송신하는 단계를 포함하고, 상기 제1 하드웨어 스레드는 상기 제1 프로세서에 존재하며, 상기 제2 하드웨어 스레드는 상기 제2 프로세서에 존재하는 컴퓨터 판독 가능 매체.
  25. 제24항에 있어서,
    상기 제1 하드웨어 스레드 및 상기 제2 하드웨어 스레드 각각에 대한 상기 하드웨어 스레드 인터럽트 등가 정보 및 상기 전력 상태 정보를, 상기 제2 프로세서에 존재하는 제2 스레드 리매핑 로직에서 동시에 추적하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
KR1020137004633A 2010-08-26 2011-08-02 전력-최적화된 인터럽트 전달 KR101773224B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/869,192 2010-08-26
US12/869,192 US8762994B2 (en) 2010-08-26 2010-08-26 Power-optimized interrupt delivery
PCT/US2011/046255 WO2012027074A1 (en) 2010-08-26 2011-08-02 Power-optimized interrupt delivery

Publications (2)

Publication Number Publication Date
KR20130032402A true KR20130032402A (ko) 2013-04-01
KR101773224B1 KR101773224B1 (ko) 2017-08-31

Family

ID=45698893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137004633A KR101773224B1 (ko) 2010-08-26 2011-08-02 전력-최적화된 인터럽트 전달

Country Status (9)

Country Link
US (2) US8762994B2 (ko)
JP (1) JP5690403B2 (ko)
KR (1) KR101773224B1 (ko)
CN (1) CN103080918B (ko)
BR (1) BR112013004408A2 (ko)
DE (1) DE112011102822T5 (ko)
GB (1) GB2496810B (ko)
TW (1) TWI454902B (ko)
WO (1) WO2012027074A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101638088B1 (ko) 2015-11-04 2016-07-08 주식회사 영화키스톤건축사사무소 미장공사용 개량형 피니셔

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
US8762994B2 (en) 2010-08-26 2014-06-24 Intel Corporation Power-optimized interrupt delivery
EP2458501A1 (en) * 2010-11-30 2012-05-30 France Telecom Method of operating a communication device and related communication device
US8990602B2 (en) * 2010-12-21 2015-03-24 Intel Corporation Apparatus, method, and system for early deep sleep state exit of a processing element
US8656079B2 (en) * 2011-12-19 2014-02-18 Advanced Micro Devices, Inc. Method and apparatus for remapping interrupt types
JP5981020B2 (ja) * 2012-04-24 2016-08-31 インテル コーポレイション 効率的な消費電力管理のための動的インタラプト再コンフィグレーション
US9116750B2 (en) * 2012-08-08 2015-08-25 International Business Machines Corporation Optimizing collective communications within a parallel computer
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US9009508B2 (en) 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US9027029B2 (en) * 2013-03-28 2015-05-05 International Business Machines Corporation Method for activating processor cores within a computer system
US20170300101A1 (en) * 2016-04-14 2017-10-19 Advanced Micro Devices, Inc. Redirecting messages from idle compute units of a processor
US10318428B2 (en) 2016-09-12 2019-06-11 Microsoft Technology Licensing, Llc Power aware hash function for cache memory mapping
US10235202B2 (en) 2016-11-08 2019-03-19 International Business Machines Corporation Thread interrupt offload re-prioritization
US10620983B2 (en) 2016-11-08 2020-04-14 International Business Machines Corporation Memory stripe with selectable size
WO2018176360A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Scalable interrupt virtualization for input/output devices
US10241561B2 (en) 2017-06-13 2019-03-26 Microsoft Technology Licensing, Llc Adaptive power down of intra-chip interconnect
US10599596B2 (en) * 2018-01-08 2020-03-24 Intel Corporation Management of processor performance based on user interrupts
WO2020021745A1 (ja) * 2018-07-24 2020-01-30 三菱電機株式会社 割込み処理方法、コンピュータシステムおよびプログラム製品
CN111459626B (zh) * 2020-03-11 2021-06-01 完美世界(北京)软件科技发展有限公司 一种用于实现不分线无缝游戏世界的方法和装置
DE102021111180A1 (de) * 2021-04-30 2022-11-03 Intel Corporation Verarbeitungsvorrichtung, Steuereinheit, elektronische Vorrichtung, Verfahren für die elektronische Vorrichtung und Computerprogramm für die elektronische Vorrichtung
CN114003363B (zh) * 2021-11-01 2022-07-22 支付宝(杭州)信息技术有限公司 线程间中断信号发送方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772241B1 (en) 2000-09-29 2004-08-03 Intel Corporation Selective interrupt delivery to multiple processors having independent operating systems
US6880030B2 (en) * 2000-12-13 2005-04-12 Wind River Systems, Inc. Unified exception handling for hierarchical multi-interrupt architectures
US7454012B2 (en) 2002-04-29 2008-11-18 Adc Dsl Systems, Inc. Managing power in a line powered network element
US7117285B2 (en) * 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
US20050060590A1 (en) * 2003-09-16 2005-03-17 International Business Machines Corporation Power-aware workload balancing usig virtual machines
JP2004094966A (ja) * 2003-10-17 2004-03-25 Mitsubishi Electric Corp 計算機および計算機システム
US7707341B1 (en) * 2004-05-11 2010-04-27 Advanced Micro Devices, Inc. Virtualizing an interrupt controller
US20060095624A1 (en) 2004-11-03 2006-05-04 Ashok Raj Retargeting device interrupt destinations
US20060112208A1 (en) 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
TWI309765B (en) 2006-03-17 2009-05-11 Asustek Comp Inc Method and apparatus for controlling power supply in a computer system
US20090164820A1 (en) 2007-12-24 2009-06-25 Hewlett-Packard Development Company, L.P. Methods and apparatus for managing power on a computer in the event of a power interruption
JP5173714B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
JP5352848B2 (ja) 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US8566492B2 (en) * 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US8762994B2 (en) 2010-08-26 2014-06-24 Intel Corporation Power-optimized interrupt delivery

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101638088B1 (ko) 2015-11-04 2016-07-08 주식회사 영화키스톤건축사사무소 미장공사용 개량형 피니셔

Also Published As

Publication number Publication date
US8762994B2 (en) 2014-06-24
GB2496810A (en) 2013-05-22
GB201303290D0 (en) 2013-04-10
GB2496810B (en) 2019-05-29
JP2013545150A (ja) 2013-12-19
JP5690403B2 (ja) 2015-03-25
US20120054750A1 (en) 2012-03-01
WO2012027074A1 (en) 2012-03-01
CN103080918B (zh) 2016-08-03
TWI454902B (zh) 2014-10-01
DE112011102822T5 (de) 2013-06-06
TW201229742A (en) 2012-07-16
US20140250250A1 (en) 2014-09-04
KR101773224B1 (ko) 2017-08-31
CN103080918A (zh) 2013-05-01
BR112013004408A2 (pt) 2020-08-25
US9141573B2 (en) 2015-09-22

Similar Documents

Publication Publication Date Title
KR101773224B1 (ko) 전력-최적화된 인터럽트 전달
EP2619675B1 (en) Apparatus, method, and system for implementing micro page tables
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
US8719547B2 (en) Providing hardware support for shared virtual memory between local and remote physical memory
EP1805629B1 (en) System and method for virtualization of processor resources
US20110113426A1 (en) Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US20140095769A1 (en) Flash memory dual in-line memory module management
US20140007098A1 (en) Processor accelerator interface virtualization
US20130055259A1 (en) Method and apparatus for handling an i/o operation in a virtualization environment
KR20140112454A (ko) 플랫폼 애그노스틱 전력 관리
US20170235491A1 (en) Migration of peer-mapped memory pages
US20140173203A1 (en) Block Memory Engine
CN115087961B (zh) 用于相干及非相干存储器请求的仲裁方案
US20130007768A1 (en) Atomic operations on multi-socket platforms
Kornaros et al. Towards full virtualization of heterogeneous noc-based multicore embedded architectures
US20230004417A1 (en) Method and apparatus to select assignable device interfaces for virtual device composition
Bhattacharjee et al. Heterogeneity and Virtualization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal
E902 Notification of reason for refusal
AMND Amendment
AMND Amendment
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant