KR101744126B1 - 비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법 - Google Patents

비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법 Download PDF

Info

Publication number
KR101744126B1
KR101744126B1 KR1020150165765A KR20150165765A KR101744126B1 KR 101744126 B1 KR101744126 B1 KR 101744126B1 KR 1020150165765 A KR1020150165765 A KR 1020150165765A KR 20150165765 A KR20150165765 A KR 20150165765A KR 101744126 B1 KR101744126 B1 KR 101744126B1
Authority
KR
South Korea
Prior art keywords
core
instruction
execution
interrupt
low power
Prior art date
Application number
KR1020150165765A
Other languages
English (en)
Other versions
KR20160079646A (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 KR20160079646A publication Critical patent/KR20160079646A/ko
Application granted granted Critical
Publication of KR101744126B1 publication Critical patent/KR101744126B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5044Allocation 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 hardware capabilities
    • 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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3063Pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

다양한 실시예들은 전반적으로 인스트럭션의 실행의 현 플로우에 대한 인터럽트의 영향들을 최소화하도록 고 기능성 코어와 저 전력 코어 간의 협력을 위한 기법들에 관한 것이다. 장치는 저 전력 코어 및 고 기능성 코어를 포함하며, 상기 저 전력 코어는 제 1 인스트럭션 파이프라인(instruction pipeline)을 포함하며, 상기 저 전력 코어는 상기 제 1 인스트럭션 파이프라인 내에서의 실행의 제 1 플로우를 중지시키고 제 1 인스트럭션 파이프라인에서 핸들러 루틴의 인스트럭션을 실행하여서 인터럽트의 핸들링의 제 1 태스크를 수행하며, 상기 고 기능성 코어는 제 2 인스트럭션 파이프라인을 포함하며, 상기 고 기능성 코어는, 상기 제 1 태스크의 수행 이후에, 상기 제 2 인스트럭션 파이프라인 내에서의 실행의 제 2 플로우를 따르도록 상기 제 2 인스트럭션 파이프라인에서 상기 인터럽트를 핸들링하는 제 2 태스크의 인스트럭션의 실행을 스케줄링하며, 상기 제 1 태스크는 상기 제 2 태스크보다 더 시간-민감성(time-sensitive)이다. 다른 실시예들이 기술 및 청구된다.

Description

비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법{TECHNIQUES FOR COOPERATIVE EXECUTION BETWEEN ASYMMETRIC PROCESSOR CORES}
컴퓨팅 디바이스 내의 하나 이상의 상대적으로 고 기능성(high function) 코어를 포함하는 프로세서 컴포넌트를 채용하는 것이 통상적이 되었다. 이러한 고 기능성 코어는 다수의 실행가능한 인스트럭션이 동시에 실행의 다양한 스테이지에 있을 수 있는 상대적으로 깊은(deep) 파이프라인을 형성하도록 다수의 프로세싱 피처(features)를 포함할 수 있다. 이러한 고 기능성 코어는, 실행을 위해 파이프라인 내로 들어갈 다음의 실행가능한 인스트럭션이 필요할 때에 하나 이상의 상대적으로 큰 캐시 내로부터 코어에 대해 보다 용이하게 사용가능하게 되는 것을 보장하는 것의 일부로서, 데이터 및 실행가능한 인스트럭션 양쪽 모두의 검색 및 저장을 빠르게 하기 위한 하나 이상의 상대적으로 큰 캐시를 또한 포함하고/하거나 이들에 연결될 수 있다. 이러한 고 기능성 코어는 또한 캐시 내에 사용가능한 실행가능 인스트럭션이 실행될 다음의 실행가능 인스트럭션을 포함할 확률을 증가시키기 위해 분기 예측의 상대적으로 공교한 형태를 갖는 상대적으로 공교한 인스트럭션 프리페치(prefetch) 알고리즘을 채용할 수 있다. 그러나, 고 기능성 프로세서 코어의 아키텍처에 대한 이러한 추가사항 및 개선사항 중 많은 것들이, 인스트럭션 실행의 현 플로우에서의 변화를 요구하는 이벤트, 예를 들어 하드웨어 인터럽트 및 예외사항의 결과로서 전체적으로 완료되지 않을 수 있다.
도 1은 프로세싱 시스템의 예시적인 실시예를 예시한 것이다.
도 2는 프로세서 컴포넌트의 코어들 간에서 인터럽트들의 핸들링의 예시적인 분배를 예시한 것이다.
도 3a, 3b 및 3c는 함께, 네트워크를 통해 데이터를 수신하는 것과 연관된 하드웨어 인터럽트를 핸들링하는 것의 예시적인 실시예를 예시한 것이다.
도 4a, 4b, 4c, 4d 및 4e는 함께 스토리지 디바이스로부터 페이지를 수신하는 것과 연관된 페이지 폴트 및 하드웨어 인터럽트를 핸들링하는 것의 예시적인 실시예를 예시한 것이다.
도 5 및 도 6은 각기 실시예에 따른 로직 플로우를 예시한 것이다.
도 7은 실시예에 따른 프로세싱 아키텍처를 예시한 것이다.
다양한 실시예들은 전반적으로 인스트럭션 실행의 현 플로우에 대한 인터럽트의 영향을 최소화하기 위한, 프로세서 컴포넌트의 고 기능성 코어 및 저 전력 코어 간에서의 협력을 위한 기법에 관한 것이다. 명료성을 위해, 각종 상이한 컴퓨팅 아키텍처에서 어휘 "인터럽트(interrupt)"에 부여된 상이한 의미를 고려하면, 본 명세서에서 사용되는, 용어 "인터럽트"는 프로세서 컴포넌트에 연결된 하드웨어 컴포넌트에 의해서 생성된 하드웨어 인터럽트, 및 적어도 페이지 폴트를 포함하는, 프로세서 컴포넌트 자체의 내부 로직에 의해서 생성되는 예외사항을 말한다. 적어도 일부 인터럽트는 고 기능성 코어보다 간단한 아키텍처를 가질 수 있으며, 고 기능성 코어보다 보다 작은 캐시 및/또는 보다 덜 복잡한 인스트럭션 파이프라인을 포함하는 저 전력 코어에 대한 것이다. 저 전력 코어는 하나 이상의 상대적으로 시간-민감성 태스크 및/또는 비순차적 어드레스 로케이션으로의 빈번한 액세스를 요구하는 태스크를 수행하도록 수신된 인트럽트와 연관된 핸들러 루틴의 인스트럭션을 실행할 수 있다. 이러한 태스크는 상대적으로 작은 정량의 데이터의 이동, 하드웨어 컴포넌트의 상태 및/또는 제어 레지스터와의 상호작용, 및/또는 프로토콜 변환을 수반할 수 있다. 그렇게 할 시에, 저 전력 코어는 데이터의 보다 큰 정량에 속하는 데이터의 분할된(separated) 보다 적은 정량의 리스트를 어셈블리하거나 할 수 있으며/없거나 이러한 보다 작은 정량이 향하게 될 목적지를 결정할 수 있다. 일부 실시예들에서, 이러한 태스크의 수행 후에, 저 전력 코어는 하나 이상의 수신된 인터럽트와 연관된 추가 태스크가 고 기능성 코어에 의해서 수행될 것임을 표시하는 것을 고 기능성 코어에 통지할 수 있다. 다른 실시예들에서, 저 전력 코어는 고 기능성 코어가 추가 태스크를 수행하기 위해 필요한 정보를, 그것의 정상적으로 스케줄링된 태스크 중에서 고 기능성 코어에 의해서 수행되는 폴링(polling) 동안에 고 기능성 코어가 상기 정보의 위치를 파악할 수 있는 방식으로, 가용한 상태로 만들 수 있다. 고 기능성 코어에 의해서 수행될 이러한 추가 태스크는, 고 기능성 프로세서 코어가 오퍼레이팅 시스템 및/또는 하나 이상의 애플리케이션 루틴의 일부를 실행할 시에 태스크의 그 정상적인 스케줄링 내에 상기 추가 태스크를 포함시킬 수 있도록, 저 전력 코어에 의해서 수행되는 것들과 같이 시간-민감성이지 않을 수 있다.
저 전력 코어 및 고 기능성 코어 양쪽 모두는 매칭 쌍으로 단일 프로세싱 컴포넌트 내에 포함될 수 있다. 일부 실시예들에서, 프로세서 컴포넌트는 프로세서 컴포넌트에 의해서 실행되는 오퍼레이팅 시스템, 디바이스 드라이버 및/또는 애플리케이션 루틴이 이러한 2 개의 코어 중 어느 것(들)이 임의의 소정 시간에 각각의 인스트럭션을 실행하고 있는 중인 것을 인지하지 않고서도, 다양한 시간에서 사용되도록 저 전력 코어 및 고 기능성 코어 중 어느 하나 또는 양자의 사용을 인에이블하는 방식으로 아키텍처될 수 있다. 그러나, 다른 실시예들에서, 오퍼레이팅 시스템 자체가 어느 코어가 사용되는지를 지시할 수 있거나, 양쪽 코어들이 사용되는 것을 지시할 수도 있다. 일부 실시예들에서, 고 기능성 코어 및 저 전력 코어는 실질적으로 동일한 인스트럭션 세트를 실행할 수 있다. 그러나, 다른 실시예들에서, 저 전력 코어 및 고 기능성 코어 각각에 의해서 실행되는 인스트럭션 세트들 간에 어느 정도의 차이가 존재할 수 있다. 예시적으로, 고 기능성 코어는 저 전력 코어에 의해서 지원되지 않은 하이 매스(high math) 인스트럭션 및/또는 다른 특정 인스트럭션을 가질 수 있다. 오퍼레이팅 시스템, 디바이스 드라이버 및/또는 특정 애플리케이션 루틴은 이러한 코어들 양쪽 모두의 존재 및/또는 하나 또는 다른 것이 현재 동작되고 있는 때를 알 수 있으며, 각 코어에 의해서 지원되는 인스트럭션 세트들에서의 차이를 알 수 있다. 이러한 실시예들 각각에서, 오퍼레이팅 시스템, 디바이스 드라이버 및/또는 애플리케이션 루틴을 위한 실행가능한 인스트럭션이 저장될 수 있는 다양한 범위의 어드레스에 액세스하기 위해 프로세서 컴포넌트로 오퍼레이팅 시스템에 의해서 주어진 허가사항은 이러한 코어들 양쪽 모두에 동일하게 적용될 수 있다. 이로써, 저 전력 코어 및 고 기능성 코어 중 어느 하나는 동일한 저장된 인스트럭션 및/또는 동일한 저장된 데이터에 액세스할 수 있다. 저 전력 코어 및 고 기능성 코어는 인스트럭션을 실행할 시에 그들 간의 코히어런시(coherency)를 보장하기 위해 그들 간의 다양한 타입의 통신 중 임의의 것을 채용할 수 있다.
저 전력 코어는 고 기능성 코어보다 보다 작은 캐시, 및/또는 무순서(out-of-order) 실행을 할 수 있는, 고 기능성 코어보다 소수의 스테이지들을 갖는 보다 간단한 인스트럭션 파이프라인을 포함할 수 있다. 이로써, 심지어 저 전력 코어가 고 기능성 코어와 실질적으로 동일한 인스트럭션 세트를 실행할 수 있는 실시예들에서도, 저 전력 코어에 의한 이러한 실행은 보다 낮은 레이트의 전력 소모량으로 그리고 보다 낮은 속력으로 이루어질 수 있다. 그러나, 보다 작은 캐시 및/또는 보다 간단한 인스트럭션 파이프라인을 사용하면, 인터럽트에 의해서 현 플로우의 인스트럭션을 실행할 시에 초래되는 효율의 손실은 고 기능성 코어에서처럼 크지 않다. 프로세서 컴포넌트는 저 전력 코어 및 고 전력 코어 중 오직 하나 또는 다른 것만이 동작되는 모드를 포함하는 다양한 모드로 동작하도록 구성가능할 수 있다. 이러한 모드들 동안에, 전력 및/또는 프로세서 클록 신호는 전력 소모량을 줄이고/이거나 프로세서 컴포넌트로부터 방출된 열의 양을 제어하도록 동작하지 않는 이러한 2 개의 코어 중 하나로부터 제거될 수 있다. 그러나, 프로세서 컴포넌트는 이러한 코어 양쪽 모두가 동시에 동작될 수 있는 모드로 동작하도록 또한 구성가능할 수 있다. 또한, 프로세서 컴포넌트는 프로세싱 자원에 대한 현재 요구수준에 기초하여 이러한 모드들 중 2 개 이상의 모드 간에서 스위칭할 수 있다. 저 전력 코어 및 고 기능성 코어가 실질적으로 동일한 인스트럭션 세트를 실행하는 실시예들에서, 프로세서 컴포넌트는 이러한 모드들 간에서의 변경을, 자율적으로 그리고 오퍼레이팅 시스템 또는 디바이스 드라이버의 개입 없이 실행할 수 있다. 그러나, 다른 실시예들에서, 이러한 모드들 간에서의 변경은 변경할 모드 및/또는 이러한 변경을 하는 시점을 선택할 시에 고려될 필요가 있을 수 있는 팩터를 모니터링하기 위한 보다 양호한 능력을 갖는 것으로 간주될 수 있는 오퍼레이팅 시스템의 지시에 의한 것일 수 있다.
예시적으로, 고 기능성 코어는 동작하지만 고 기능성 코어의 프로세싱 자원들에 대한 상대적으로 낮은 요구수준(demand)이 존재하는 시간들에서, 프로세서 컴포넌트는 고 기능성 코어는 동작하는 것을 중지하며 저 전력 코어가 고 기능성 코어 대신에 오퍼레이팅 시스템, 디바이스 드라이버들 및 애플리케이션 루틴들의 인스트럭션을 실행하도록 동작되는 모드로 (프로세스 컴포넌트의 제어 하에서 또는 오퍼레이팅 시스템의 제어 하에서) 스위칭될 수 있다. 프로세싱 자원들에 대한 요구수준이 증가하여 저 전력 코어가 지원할 수 없는 수준에 접근하는 이후의 시간에서는, 프로세서 컴포넌트는 고 기능성 코어가 다시 동작되는 모드로 스위칭될 수 있다. 또한, 이러한 고 전력 코어의 동작은 저 전력 코어의 연속된 동작에 부가될 수 있으며, 이러한 경우 저 전력 코어는 인터럽트의 표시사항을 수신하고 이러한 인터럽트와 연관된 적어도 시간-민감성 태스크들을 수행하는 방식으로 양 코어들이 인터럽트를 핸들링하는데 있어서 협력한다.
저 전력 코어 및 고 기능성 코어가 인터럽트를 핸들링하기 위해 협력하는 것의 실례로서, 데이터 수신을 표시하는, 네트워크 인터페이스 컨트롤러(NIC)로부터 발생하는 인터럽트의 표시사항은 저 전력 코어가 초기에 핸들링하도록 하기 위해 저 전력 코어로 라우팅될 수 있다. 저 전력 코어는 인터럽트 디스크립션(description) 테이블(IDT)에 액세스하여 NIC로부터의 인터럽트와 연관된 핸들러 루틴의 어드레스를 결정함으로써 인터럽트의 핸들링을 시작할 수 있으며, 이어서 상기 어드레스에서 시작되는 상기 핸들러의 인스트럭션을 실행하는 것을 시작할 수 있다. 그렇게 할 시에, 저 전력 코어는 NIC 및 프로세서 컴포넌트 양쪽 모두에 액세스 가능한 저장 로케이션들의 세트에서 네트워크 패킷 버퍼 내에서 NIC에 의해 저장된 데이터 중의 하나 이상의 수신 패킷에 액세스할 수 있다. 저 전력 코어는 패킷들 중 하나 이상의 패킷의 헤더 내의 정보를 검사하여 프로세스, 루틴, 스레드의 식별자 또는 인스트럭션 실행에 대한 다른 타입의 플로우를 검색하고, 이러한 식별자들의 테이블을 사용하여 어떠한 플로우의 실행이 하나 이상의 패킷 내의 데이터의 목적지로서 의도되는지를 결정할 수 있다. 저 전력 코어가 네트워크 패킷 버퍼 내에 저장된 각 패킷의 헤더로부터 이러한 식별자들을 검색할 경우, 저 전력 코어는, 목적지로서 식별된 상이한 플로우의 실행 각각에 대해서, 해당 플로우의 실행으로 향하게 되는 네트워크 패킷 버퍼 내의 패킷들로의 포인터들의 링크된 리스트를 생성할 수 있다.
일부 실시예들에서, 저 전력 코어가 실행 특정 플로우로 향하는 데이터의 충분한 패킷들에 대한 임계치에 도달되었는지를 결정할 때에, 저 전력 코어는 특정 플로우의 실행에 의해 사용되기 위해 데이터가 수신되었음을 알리는 표시사항을 고 기능성 코어에게 알릴 수 있으며, 이러한 패킷들에 대한 링크된 리스트로의 액세스를, 그리고 어느 플로우의 실행이 링크된 리스트 내에서 포인팅된 패킷들의 목적지인지를 알리는 표시사항으로의 액세스를 고 기능성 코어로 제공할 수 있다. 이어서, 이러한 표시사항에 응답하여, 고 기능성 코어는 네트워크 스택과 연관된 오퍼레이팅 시스템의 일부를 실행할 시에, 링크된 리스트를 사용하여 링크된 리스트에 의해서 포인팅된 하나 이상의 수신된 패킷으로부터 데이터를 추출할 수 있으며, 이 추출된 데이터를 상기 플로우의 실행과 연관된 데이터 버퍼(예를 들어, 애플리케이션 루틴과 연관된 데이터 버퍼) 내에 저장할 수 있다. 그러나, 다른 실시예들에서, 고 전력 코어는, 스케줄링된 방식대로, 상이한 플로우들의 실행에 대해서 저 전력 코어에 의해 구축된 패킷들의 하나 이상의 링크된 리스트를 반복하여(recurringly) 폴링(poll)할 수 있다. 고 기능성 코어가 특정 플로우의 실행으로 향하는 데이터의 충분한 패킷들에 대한 임계치에 도달되었다고 결정하면, 고 기능성 코어는 상기 특정 플로우의 실행과 연관된 링크 리스트를 사용하여 링크 리스트에 의해 포인팅된 하나 이상의 패킷으로부터 데이터를 추출할 수 있으며, 상기 특정 플로우의 실행과 연관된 버퍼 내에 상기 추출된 데이터를 저장할 수 있다.
일부 실시예들에서, NIC로부터의 인터럽트와 연관된 핸들러 루틴을 실행하면, 저 전력 코어는 N 추가 인터럽트를 발행하는 NIC의 능력을 임시적으로 디스에이블링함으로써 NIC로부터의 추가 인터럽트의 빈도를 제약할 수 있다. 이는 NIC로부터의 일 인터럽트에 응답하여 저 전력 코어에 의해서 수행되는 태스크들이 보다 많은 패킷을 수신하는 것의 결과로서 NIC로부터의 다른 인터럽트에 의해서 중단되는 것을 막도록 이루어질 수 있다. 대신에, 저 전력 코어는 보다 많은 패킷을 수신하는 것을 알리기 위해 NIC를 폴링하는 것에 임시적으로 관여할 수 있다. NIC로부터의 현 인터럽트를 핸들링하는 것을 완료하면, 저 전력 코어는 인터럽트를 발행하는 NIC의 능력을 다시 인에이블시킬 수 있다. 이벤트(예를 들어, 추가 패킷을 수신하는 것)의 통지사항을 얻기 위해 인터럽트를 사용하는 것과 그렇게 하기 위해 폴링을 사용하는 것 간의 이러한 토글링(toggling)은 "준(semi)-폴링"으로서 지칭될 수 있다.
저 전력 코어가 인터럽트를 핸들링하는 것의 일부로서 하나 이상의 태스크를 수행하도록 고 기능성 코어에 알리는 실시예들에서, 고 기능성 코어에게의 이러한 알림(signaling)은 다양한 메커니즘들 중 임의의 것을 통해 이루어질 수 있다. 예시적으로, 코어-대-코어 인터럽트 또는 메시지-전달 기능(message-passing functionality)이 존재할 수 있다. 또한, 이러한 시그널링은 인터럽트-유사 방식으로 고 기능성 코어에 의해 취급되거나 그렇지 않을 수도 있다. 예시적으로, 고 기능성 코어는 임의의 인터럽트를 핸들링하는 것과 전적으로 관련될 수 없는 고 기능성 코어에 의해 수행될 다른 태스크들 중에서 고 기능성 코어에 의해 수행될 핸들러-관련 태스크를 스케줄링함으로써, 저 전력 코어에 의한 이러한 시그널링에 응답할 수 있다.
본 명세서에서 사용되는 표기 및 명명법을 일반적으로 참조하면, 후술하는 상세한 설명의 일부는 컴퓨터 또는 네트워크 컴퓨터에서 수행되는 프로그램 프로시져로 제시될 수 있다. 이러한 절차적인 설명 및 표현은 당업자가 다른 당업자에게 그들의 업무의 본질을 가장 효과적으로 전달하기 위해 사용된다. 여기서 프로시져는 일반적으로 원하는 결과에 이르는 자기 일관적인 동작의 연속으로서 이해된다. 이러한 동작은 물리적 양의 물리적 조작을 필요로 하는 것이다. 항상 그러한 것은 아니지만, 일반적으로 이들 양은 저장, 전달, 결합, 비교 및 조작될 수 있는 전기적, 자기적 또는 광학적 신호의 형태를 갖는다. 주로 통상적으로 사용되고 있다는 이유로, 이들 신호는 비트, 값, 엘리먼트, 심볼, 캐릭터, 용어, 숫자 등으로 부르는 것이 때로는 편리하다. 그러나, 이들 모두 및 유사한 용어가 적절한 물리적 양과 관련될 수 있고 이들 양에 적용되는 단지 편리한 레이블임에 유의해야 한다.
또한, 이러한 조작은 추가 및 비교와 같은 용어로 불릴 수 있으며, 이것은 일반적으로 인간 조작자가 수행하는 정신적 동작과 관련된다. 그러나, 본 명세서에 설명된 하나 이상의 실시예의 일부를 구성하는 동작에 있어서 대부분의 경우, 그러한 인간 조작자의 능력은 필요하지 않거나 바람직하지 않다. 대신 이러한 동작은 머신의 동작이다. 다양한 실시예의 동작을 수행하는 유용한 머신은 본 명세서의 교시 내용에 따라 작성되고 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 구성되는 범용 디지털 컴퓨터 및/또는 필요한 목적에 맞게 특별히 구성된 장치를 포함한다. 다양한 실시예는 이러한 동작을 수행하는 장치 또는 시스템과 또한 관련된다. 이들 장치는 필요한 목적에 맞게 특별히 구성될 수 있거나, 범용 컴퓨터를 포함할 수 있다. 다양한 이들 머신에 필요한 구조는 제공되는 설명으로부터 드러날 것이다.
이제 도면을 참조하면, 해당 도면에서 동일한 참조 번호는 전체적으로 동일한 엘리먼트를 나타내는데 사용된다. 이하의 설명에서, 설명을 목적으로, 다양한 특정 세부 사항이 이들의 완전한 이해를 위해 설명된다. 그러나, 새로운 실시예는 이러한 특정 세부 사항이 없이도 실시될 수 있음은 분명할 것이다. 다른 예에서, 공지의 구조 및 장치는 설명을 용이하게 하기 위해 블록도의 형태로 표시된다. 청구항은 모든 변경, 균등 및 대안을 그 범위 내에 포함하는 것을 의도한다.
도 1은 스토리지 디바이스(60), 원격 디바이스(90) 및 컴퓨팅 디바이스(500) 중 하나 이상을 포함하는 프로세싱 시스템(1000)의 실시예의 블록도를 예시한다. 컴퓨팅 디바이스(500)는 저장 인터페이스 컨트롤러(565)를 통한 커플링을 통해서 데이터(36)의 블록들의 형태로 데이터(36)를 스토리지 디바이스(60)와 교환할 수 있으며, 저장 인터페이스 컨트롤러(565)에 의해서 컴퓨팅 디바이스(500)는 스토리지 디바이스(60)의 동작을 제어할 수 있다. 다양한 실시예들에서, 스토리지 디바이스(60)는 컴퓨팅 디바이스(500) 외부에 있을 수 있거나, 컴퓨팅 디바이스(500) 내에 포함될 수 있다(이는 점선들로 표시된 바와 같음). 이와 달리 또는 추가적으로, 컴퓨팅 디바이스(500)는 데이터(39)의 부분들이 네트워크 패킷들로 교환되는 프로토콜을 포함하는, 다양한 프로토콜들 중 임의의 것을 사용하여서 네트워크 인터페이스 컨트롤러(NIC)(595)를 통한 네트워크(999)를 통해서 데이터(39)를 원격 디바이스(90)와 교환할 수 있다.
컴퓨팅 디바이스(500)는 다양한 태스크들 중 임의의 것을 수행하도록 하나 이상의 애플리케이션 루틴(740)을 실행하도록 동작될 수 있다. 애플리케이션 루틴들(740) 각각은 다양한 타입들의 애플리케이션 중 임의의 것일 수 있으며, 이러한 다양한 타입들의 애플리케이션은 워드 프로세서들, 스프레드시트 편집기들(spreadsheet editors), CAD/CAM 소프트웨어, 웹사이트 브라우저들, 오디오/시각적 레코딩 및/또는 재생 소프트웨어, 사진 편집기 등을 포함하지만 이로 한정되지 않는다. 하나 이상의 애플리케이션 루틴(740)의 이러한 실행을 인에이블하는 것의 일부로서, 컴퓨팅 디바이스(500)는 또한 오퍼레이팅 시스템(340)을 실행하도록 동작될 수 있다. 오퍼레이팅 시스템(340)는 하나 이상의 애플리케이션 루틴(740)을 포함하는 다양한 루틴들의 실행을 지원하기 위해 오퍼레이팅 환경을 제공하는 다양한 타입들의 오퍼레이팅 시스템 중 임의의 것일 수 있다. 컴퓨팅 디바이스(500)는 컴퓨팅 디바이스(500)의 하나 이상의 컴포넌트(예를 들어, 저장 인터페이스 컨트롤러(565) 및/또는 NIC(595) 및/또는 컴퓨팅 디바이스(500)에 연결될 수 있는 하나 이상의 다른 디바이스(예를 들어, 스토리지 디바이스(60) 및/또는 원격 디바이스(90)을 이용하기 위해 해당 오퍼레이팅 환경의 기능을 확장시킬 수 있는 하나 이상의 디바이스 드라이버를 실행시키도록 더 동작될 수 있다.
보다 일반적으로, 이러한 디바이스들(60, 90 및 500) 각각은 다양한 타입들 중 임의의 타입의 컴퓨팅 디바이스일 수 있으며, 이러한 컴퓨팅 디바이스는 데스크탑 컴퓨터 시스템, 데이터 입력 단말(entry terminal), 랩탑 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 핸드헬드 PDA(handheld personal data assistant), 스마트폰, 스마트 안경, 스마트 와치, 디지털 카메라, 프로세서 컴포넌트를 내장한 스마트 카드, 의류 내에 내장된 신체 착용형 컴퓨팅 디바이스, 차량(예를 들어, 자동차, 자전거, 휠체어, 등) 내에 내장된 컴퓨팅 디바이스, 서버, 서버들의 클러스터(cluster of servers), 서버 팜(server farm), 등을 포함하지만 이로 한정되지 않는다.
도시 및 논의된 바와 같이, 적어도 컴퓨팅 디바이스들(90 및 500)은 데이터를 반송하는 신호들을 교환할 수 있으며 이러한 교환들은 네트워크(999)를 통해서 발생할 수 있다. 그러나, 이러한 컴퓨팅 디바이스들 중 하나 또는 양자도 또한 네트워크(999)를 통해서 또 다른 컴퓨팅 디바이스들(미도시)과도 데이터를 교환할 수도 있다. 다양한 실시예들, 적어도 네트워크(999)는 단일 빌딩 또는 다른 상대적으로 제한된 구역 내에서 확장되는 것으로 가능하게 한정된 단일 네트워크, 가능하게는 상당한 거리만큼 확장하는 연결된 네트워크들의 결합일 수 있고/있거나 인터넷을 포함할 수 있다. 따라서, 적어도 네트워크(999)는 신호들이 교환될 수 있게 하는 다양한 통신 기술들(또는 이들의 조합) 중 임의의 것에 기초할 수 있으며, 이러한 통신 기술들은 전기적으로 및/또는 광학적으로 도전성의 케이블을 사용하는 유선 기술들 및 적외선, 무선 주파수 또는 다른 형태의 무선 전송을 사용하는 무선 기술들을 포함할 수 있지만 이로 한정되지 않는다.
다양한 실시예들에서, 컴퓨팅 디바이스(500)는 프로세서 컴포넌트(550), 스토리지(560), 제어부들(520), 인터럽트 라우터(555), 디스플레이(580), 컴퓨팅 디바이스(500)를 스토리지 디바이스(60)에 연결하는 저장 컨트롤러(565) 및 컴퓨팅 디바이스(500)를 네트워크(999)에 연결하는 NIC(595) 중 하나 이상을 포함할 수 있다. 프로세서 컴포넌트(550)는 고 기능성 코어(551) 및 저 전력 코어(552) 중 하나 이상을 포함할 수 있다. 저장 로케이션들의 어드레스들의 범위들로 구성된 스토리지(560)의 부분들은 시스템 컨텍스트(360) 및 하나 이상의 사용자 컨텍스트(760)로서 지정될 수 있다. 시스템 컨텍스트(360) 내에, 오퍼레이팅 시스템(340), 페이지 테이블(335), 페이지 버퍼(366), 네트워크 큐 버퍼(369), IDT(인터럽트 디스크립터 테이블)(235), 변환 테이블(266), 플로우 테이블(269), 스토리지 디바이스 드라이버(146), 네트워크 디바이스 드라이버(149), 블록 버퍼(166) 및 네트워크 패킷 버퍼(169) 중 하나 이상이 저장될 수 있다. 도시된 바와 같이, 오퍼레이팅 시스템(340)은 모드 컨트롤러(345)를 포함할 수 있다. 또한, 일부 실시예들에서는, 스토리지 디바이스 드라이버(146) 및/또는 네트워크 디바이스 드라이버(149)가 오퍼레이팅 시스템(340)의 벤더(vendor)가 아닌 벤더(들)에 의해서 제공될 수 있지만, 이들이 상호작용하는 방식의 측면에서는, 스토리지 디바이스 드라이버(146) 및/또는 네트워크 디바이스 드라이버(149)는 도시된 바와 같은, 오퍼레이팅 시스템(340)의 컴포넌트들로서 고려될 수 있다. 하나 이상의 사용자 컨텍스트(760) 각각 내에는, 애플리케이션 루틴(740) 및 애플리케이션 데이터 버퍼(730) 중 하나 또는 양쪽 모두가 저장될 수 있다. 애플리케이션 데이터 버퍼(730) 내에는 데이터(36 및/또는 39)의 적어도 부분들의 카피들이 저장될 수 있는 로케이션들이 지정될 수 있다.
고 기능성 코어(551) 및 저 전력 코어(552) 양쪽 모두는 실질적으로 동일한 인스트럭션 세트를 실행할 수 있으며, 이로써 코어들(551 및 552) 중 어느 하나 또는 양쪽 모두가 하나 이상의 애플리케이션 루틴(740), 오퍼레이팅 시스템(340), 및/또는 디바이스 드라이버, 예를 들어 스토리지 디바이스 드라이버(146) 및/또는 네트워크 디바이스 드라이버(149) 중 임의의 것의 인스트럭션을 실행하게 할 수 있다. 이와 달리, 다른 것에 의해서 실행될 수 없는 고 기능성 코어(551) 또는 저 전력 코어(552) 중 하나에 의해서 실행될 수 있는 인스트럭션의 세브세트가 존재할 수 있다. 이전에 논의된 바와 같이, 프로세서 컴포넌트(550)는, 오퍼레이팅 시스템(300)과 같은 실행가능한 인스트럭션으로 구성된 루틴이 코어들(551 및/또는 552) 중 어느 것이 임의의 소정의 시간에 인스트럭션을 실행할지를 알지 않으면서도 다양한 시간에서 코어들(551 및 552) 중 어느 하나 또는 양쪽 모두의 사용을 인에이블하는 방식으로 아키텍처될 수 있다. 이와 달리, 디바이스 드라이버, 오퍼레이팅 시스템(340)의 컴포넌트 및/또는 애플리케이션 루틴(740)은 다양한 시간에서 코어들(551 및 552) 중 어느 하나 또는 양쪽 모두의 사용을 지시할 수 있다. 다시, 실행가능한 인스트럭션 및/또는 데이터가 저장될 수 있는 다양한 범위의 어드레스들에 프로세서 컴포넌트(550)가 액세스하고자 하는데 부여되는 허가사항은 코어들(551 또는 552) 중 어느 하나가 동일한 저장된 인스트럭션 및/또는 동일한 저장된 데이터를 액세스할 수 있도록 코어들(551 및 552) 양쪽 모두에 동일하게 적용될 수 있다.
저 전력 코어(552)는 고 기능성 코어(551)와 같이 프로세싱 자원을 많이 제공할 수 없지만, 저 전력 코어(552)는 고 기능성 코어(551)보다 낮은 레이트로 전력을 소비함으로써 전력을 보존할 수 있다. 오퍼레이팅 시스템(340)의 모드 컨트롤러(345)는 컴퓨팅 디바이스(500)의 동작 동안에 오퍼레이팅 시스템(340) 및/또는 다양한 디바이스 드라이버에 의해 관측된 다양한 상태에 응답하여 2 개 이상의 모드 중 임의의 하나의 모드로 프로세서 컴포넌트(550)를 둠으로써 저 전력 코어(552) 및 고 기능성 코어(551) 간의 그러한 차이를 이용할 수 있다. 이러한 모드들 중에는, 오직 고 기능성 코어(551)만이 인스트럭션을 실행하도록 동작되는 모드, 오직 저 전력 코어(552)만이 인스트럭션을 실행하도록 동작되는 모드, 및 코어들(551 및 552) 양쪽 모두가 인스트럭션을 실행하도록 동작되는 모드가 있을 수 있다.
일부 실시예들에서, 모드 컨트롤러(345)는 프로세싱 자원에 대한 요구 수준을 모니터링할 수 있으며 이 요구 수준에 따라 다수의 모드 중 임의의 모드로 프로세서 컴포넌트(550)를 동적으로 둘 수 있다. 예시적으로, 프로세싱 자원에 대한 요구가 저 전력 코어(552) 단독에 의해 제공될 수 있는 수준으로 떨어지면, 모드 컨트롤러(345)는 프로세서 컴포넌트(550)를, 저 전력 코어(552)는 인스트럭션을 실행하지만, 고 기능성 코어(551)는 인스트럭션을 실행하지 않는 모드에 둔다. 또한, 프로세싱 자원들에 대한 요구 수준이 저 전력 코어(552)가 제공할 수 있는 것의 상한치에 근사한 수준으로 올라가면, 모드 컨트롤러(345)는 고 기능성 코어(551) 및 저 전력 코어(552) 양쪽 모두가 협력하는 방식으로, 인터럽트들의 핸들링과 연관된 인스트럭션을 포함하는, 인스트럭션을 실행하는 모드로 프로세서 컴포넌트(550)를 둘 수 있다.
도 2는 고 기능성 코어(551) 및 저 전력 코어(552)가 인스트럭션을 이러한 협력적 방식으로 실행하는 프로세서 컴포넌트(550)의 모드의 예시적인 실시예의 양태들을 보다 세부적으로 예시한다. 도시된 바와 같이, 고 기능성 코어(551) 및 저 전력 코어(552) 각각은 각기 인스트럭션 파이프라인(5511 및 5521)을 포함할 수 있다. 본 기술 분야의 당업자에게 인식가능한 바와 같이, 인스트럭션 파이프라인들(5511 및 5521) 각각은 인스트럭션 실행 로직의 다양한 부분을 포함하며, 이 부분들 각각은 실행의 플로우, 예를 들어, 오퍼레이팅 시스템(340)의 루틴, 애플리케이션 루틴(740) 중 하나, 디바이스 드라이버 등을 구성하는 일련의 실행가능한 인스트럭션을 실행하는 다양한 양태를 수행한다. 또한, 도시된 바와 같이, 고 기능성 코어(551) 및 저 전력 코어(552) 각각은 캐시(5512 및 5522)를 각기 포함할 수 있다. 또한, 코어들(551 및 552)은 코어-간 상호접속부(553)에 의해 링크될 수 있으며, 이 상호접속부에 의해 일 코어는 다른 코어에게 그들 간에 인스트럭션의 실행을 조율하는데 필요한 정보를 알릴 수 있다. 또한 도시된 바와 같이, 저장 인터페이스 컨트롤러(565) 및 NIC(595) 각각은 다양한 양태의 기능을 제어하고/하거나 각각의 상태를 모니터링하기 위해 하나 이상의 레지스터(5651 및 5951)를 각기 포함할 수 있다.
고 기능성 코어(551)의 인스트럭션 파이프라인(5511)에서, 각 인스트럭션의 실행은 저 전력 코어(552)의 인스트럭션 파이프라인(5521)에서보다, 실행 로직의 개별 스테이지들의 대응하게 큰 정량에 의해 수행되는 스테이지들의 큰 정량으로 분할될 수 있다. 이와 달리 또는 추가적으로, 고 기능성 코어(551)의 인스트럭션 파이프라인(5511)의 스테이지들 각각은 저 전력 코어(552)의 인스트럭션 파이프라인(5521)의 스테이지들 각각보다 인스트럭션의 큰 정량의 실행의 스테이지를 동시에 수행할 수 있다. 이러한 능력은 고 기능성 코어(551) 내에서의 보다 넓은 레지스터의 사용 및/또는 고 기능성 코어(551) 내에서의 인스트럭션 실행의 보다 많은 스레드들을 동시에 지원할 수 있는 능력의 제공으로 인한 것일 수 있다. 이와 달리 또는 추가적으로, 고 기능성 코어(551) 내의 인스트럭션 파이프라인(5511)의 다수의 것이 존재할 수 있으며, 고 기능성 코어(551) 내의 파이프라인 인스트럭션(5511)의 정량은 저 전력 코어(552) 내의 파이프라인 인스트럭션(5521)의 정량보다 클 수 있다(예를 들어, 인스트럭션 파이프라인(5511)의 2 개 이상의 것 대 인스트럭션 파이프라인(5521)의 하나의 것이 존재할 수 있다. 다른 대안으로서, 인스트럭션 파이프라인(5511)은 분기가 이루어질 수 있는 인스트럭션의 추측적 실행 및/또는 인스트럭션의 무순서 실행을 포함하는, 인스트럭션을 실행할 시에 참여하는, 가능한 한 많은 인스트럭션 파이프라인(5511)의 스테이지를 유지하고자 하는 다양한 기법 중 임의의 것을 채용할 수 있다.
고 기능성 코어(551)의 캐시(5512)는 저 전력 코어(552)의 캐시(5522)보다 보다 많은 인스트럭션의 프리페치 및/또는 저장을 지원할 수 있는 보다 큰 캐시일 수 있다. 캐시(5512)의 캐리 라인은 보다 넓고/거나, 캐시(5522)에서보다 캐시(5512)에서 캐시 라인의 보다 큰 정량이 존재할 수 있다. 이와 달리 또는 추가적으로, 저 전력 코어(552)의 캐시(5522)에서보다 고 기능성 코어(551)의 캐시(5512)에서 보다 공교한 프리페치 알고리즘 및/또는 조직적 아키텍처(organizational architecture)이 채용될 수 있다. 예시적으로, 고 기능성 코어(551)는 보다 많은 다양한 상황하에서 어떠한 인스트럭션이 프리페치되어야 하는지를 보다 정확하게 결정할 수 있는 보다 공교한 분기 예측 알고리즘을 채용할 수 있다. 다른 실례들에서는, 캐시(5512)가 16-웨이(way) 세트 결합성(set associative)일 수 있는 한편, 캐시(5522)는 오직 4-웨이 세트 결합성일 수 있다.
이러한 차이의 결과로서, 고 기능성 코어(551)는 실행의 일 플로우의 인스트럭션을 실행하는 것으로부터 실행의 다른 플로우의 인스트럭션을 실행하는 것으로 이루어지는 천이들에서 상대적으로 높은 정도의 예측성이 존재하도록, 다수의 루틴 각각의 실행의 하나 이상의 플로우들의 실행이 스케줄링되는 방식으로 다수의 루틴을 실행하는데 더 적합할 수 있다. 이러한 보다 높은 예측성은 주어진 시간에, 보다 많은 인스트럭션의 실행이 "인 플라이트(in flight)" 상태에 있게 할 수 있는 더욱 양호한 파이프라인의 활용을 야기할 수 있다. 이러한 보다 높은 예측성은 또한 프리페치할 인스트럭션을 선택하는 분기 예측의 보다 양호한 사용을 인에이블할 수 있으며/있거나 보다 큰 캐시의 캐시 라인들의 보다 효율적인 사용을 야기할 수 있다. 이로써, 하나 이상의 애플리케이션 루틴(740)의 인스트럭션이, 코어들(551 및 552) 모두가 인스트럭션을 실행하도록 동작할 때에, 고 기능성 코어(551)(도시된 바와 같음)에 의해서는 실행되고 저 전력 코어(552)에 의해서는 실행되지 않는 것이 바람직한 것으로 간주될 수 있다.
이에 대응하게, 이러한 차이들의 결과로서, 저 전력 코어(552)는 인터럽트들의 매우 보다 덜 예측가능한 발생에 응답하여 실행되도록 요구될 수 있는 핸들러 루틴들(handler routines)의 적어도 보다 시간-민감성 부분들을 실행하는데 보다 양호하게 맞추어질 수 있다. 다시, 본 명세서에서 사용되는, 용어 "인터럽트(interrupt)"는 다른 하드웨어 컴포넌트(예를 들어, 저장 인터페이스 컨트롤러(565) 또는 NIC(595))로부터 프로세서 컴포넌트(550)에 의해 수신될 수 있는 하드웨어 인터럽트, 및 페이지 폴트를 포함하는 프로세서 컴포넌트(550) 자체의 내부 로직에 의해 생성되는 예외사항들을 말할 수 있다. 임의의 소정 시간에 "인 플라이트" 상태에 있는 보다 소수의 인스트럭션의 실행을 수행하도록 보다 소수의 스테이지들을 갖는 보다 덜 광범위한(less extensive) 파이프라인의 소거(clearing)는 인터럽트를 핸들링하는 결과로서 실행의 일 플로우를 실행하는 것에서 실행의 다른 플로우를 실행하는 것으로의 각 천이로 인해서 발생하는 비효율의 정도를 감소시킬 수 있다. 마찬가지로, 보다 작은 캐시에서의 보다 소수의 캐시 라인의 축출(evicting)은 또한 인터럽트를 핸들링하기 위한 그러한 천이로 인해 발생하는 캐시 내에 저장된 데이터의 사용 부재(lack)로부터 발생하는 비효율을 줄일 수 있다. 이로써, 코어들(551 및 552) 양쪽 모두가 인스트럭션을 실행하도록 동작되는 시간들에서, 오퍼레이팅 시스템(340) 및/또는 디바이스 드라이버들의 핸들링 루틴들의 적어도 보다 시간-민감성의 부분들의 인스트럭션이 저 전력 코어(552)(도시된 바와 같음)에 의해서는 실행되고 고 기능성 코어(551)에 의해서는 실행되지 않는 것이 바람직한 것으로 간주될 수 있다. 그러나, 보다 스케줄링된 방식으로 실행되는 것에 보다 더 적합할 수 있는 핸들링 루틴들의 다른 부분들은 고 기능성 코어(551)(또한 도시된 바와 같음)에 의해 실행될 수 있다.
코어들(551 및 552)의 상이한 것들이 인스트럭션을 실행하도록 동작될 수 있는 다양한 모드들 중 임의의 모드에서 프로세서 컴포넌트(550)의 동작을 인에블하는 것의 일부로서, 모드 컨트롤러(345)는 어떠한 인터럽트를 코어들(551 및 552) 중 어느 하나 또는 양쪽 모두로 라우팅할지를 인터럽트 라우터(interrupt router)에 동적으로 표시하도록 추가적으로 동작가능할 수 있다. 이는 컴퓨팅 디바이스(500)의 하드웨어 컴포넌트들, 예를 들어 저장 인터페이스 컨트롤러(565) 및 NIC(595)로부터 인터럽트 라우터(555)를 통해 프로세서 컴포넌트(550)로 릴레이된(relayed) 하드웨어 인터럽트를 포함할 수 있다. 이는, 예를 들어 페이지 폴트(page falut)와 같은, 프로세서 컴포넌트(550) 내에서 내부적으로 생성된 예외사항을 또한 포함할 수 있다. 예시적으로, 프로세서 컴포넌트(550)가 코어들(551 또는 552) 중 하나가 인스트럭션을 실행하도록 동작하며 다른 것은 인스트럭션을 실행하지 않는 모드로 모드 컨트롤러(345)에 의해 두어지게 된 시간에서, 모드 컨트롤러(345)는 그렇게 동작된 코어들(551 또는 552) 중 하나로 모든 인터럽트를 라우팅하도록 인터럽트 라우터(555)에게 알릴 수 있다. 프로세서 컴포넌트(550)가 모드 컨트롤러(345)에 의해, 코어들(551 및 552) 양쪽 모두가 인스트럭션을 실행하도록 동작되는 모드로 두어지게 된 다른 시간에서, 모드 컨트롤러(345)는 코어들(551 또는 552) 중 하나 또는 다른 하나로 수신된 모든 인터럽트들을 라우팅하거나 인터럽트들의 상이한 것들을 다양한 방식들 중 임의의 것으로 코어들(551 및 552) 간에 분배하도록 인터럽트 라우터(555)에게 알릴 수 있다. 모드 컨트롤러(345)는 프로세서 컴포넌트(550)의 현 모드 및 인터럽트들이 이전에 논의한 바와 같이, 프로세싱 자원에 대한 요구 수준 변화들에 기초하여 코어들(551 및 552) 간에 분배되는 방식으로 양자를 동적으로 변화시킬 수 있다.
도 1로 돌아가면, 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 오퍼레이팅 시스템(340)은, 적어도 오퍼레이팅 시스템(340)의 컴포넌트들 및/또는 오퍼레이팅 시스템(340)에 의해 유지되는 데이터의 다양한 버퍼/테이블이, 하나 이상의 애플리케이션 루틴(740)이 오퍼레이팅 시스템(340)의 이러한 컴포넌트들 및/또는 이러한 버퍼들/테이블들을 판독 및/또는 수정할 수 있는 정도를 적어도 한정하는 액세스 허가사항의 특정 세트와 함께, 저장될 수 있는 시스템 컨텍스트(360)로서 스토리지(560)의 일부를 규정할 수 있다. 또한, 오퍼레이팅 시스템(340)은 하나 이상의 애플리케이션 루틴(740) 각각을 개별적으로 저장하기 위해 사용자 컨텍스트들(760)의 개별 컨텍스트를 또한 규정할 수도 있으며, 각 애플리케이션 루틴은 하나 이상의 애플리케이션 루틴(740) 각각이 서로 및/또는 (2 개 이상의 사용자 컨텍스트(760)가 존재한다면) 각각에 의해서 유지되는 데이터의 임의의 버퍼/테이블을 액세스 및/또는 수정할 수 있는 정도를 적어도 한정하는 액세스 허가사항의 세트와 함께 저장된다. 이러한 방식들은 결함성 및/또는 악의적인 루틴에 의해서 취해질 수 있는 원치 않은 행위들의 정도를 한정하기 위해 바람직한 것으로 간주될 수 있다.
또한, 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 오퍼레이팅 시스템(340), 하나 이상의 애플리케이션 루틴(740) 각각, 및 스토리지 디바이스 드라이버(146) 및/또는 네트워크 디바이스 드라이버(149)를 포함하는 각 디바이스 드라이버는 각각이 수행하는 기능들을 지원하기 위해 하나 이상의 버퍼 또는 테이블을 인스턴스화, 유지 및/또는 사용할 수 있다. 이러한 버퍼들 중 일부는 데이터 및/또는 루틴의 카피가 프로세스들 간 및/또는 스토리지(560) 내에 규정된 분할된 컨텍스트들 간에서(예를 들어, 시스템 컨텍스트(360) 및 사용자 컨텍스트들(760) 중 하나 이상의 컨텍스트 간에서 및/또는 2 개 이상의 사용자 컨텍스트들이 존재한다면 사용자 컨텍스트들(760) 중 상이한 것들 간에서) 전달되게 할 수 있다. 또한, 이러한 테이블들 중 일부는 데이터의 다양한 피스들(pieces)의 및/또는 다양한 루틴들의 실행가능한 인스트럭션의 세트의 상태 및/또는 로케이션을 추적하는데 사용될 수 있는 어드레스 및/또는 다른 형태의 인덱싱이 사용될 수 있는 단일 로케이션을 제공할 수 있다. 예시적으로, 오퍼레이팅 시스템(340)은 연관된 핸들러 루틴이 저장될 수 있는 스토리지(560) 내의 어드레스로 인터럽트의 식별자를 상관시키기 위해 IDT(235)를 인스턴스화 및 유지할 수 있다. 이와 달리 또는 추가적으로, 오퍼레이팅 시스템(340) 또는 애플리케이션 루틴들(740) 각각은 하나 이상의 사용자 컨텍스트(760) 각각 내에서 애플리케이션 데이터 버퍼(730)를 인스턴스화 및/또는 유지할 수 있으며, 상기 하나 이상의 사용자 컨텍스트(760) 각각 내에서 하나 이상의 애플리케이션 루틴(740)의 개별 루틴이 사용자 스페이스들(760) 각각 내부로 또는 외부로 데이터 및/또는 인스트럭션의 전달들을 인에이블하는 메커니즘으로서 저장될 수 있다.
다른 실례로서, 오퍼레이팅 시스템(340) 및/또는 스토리지 디바이스 드라이버(146)는, 데이터의 및/또는 실행가능한 인스트럭션의 페이지가 하나 이상의 고속 휘발성 스토리지 컴포넌트(예를 들어, 스토리지(560)의 적어도 부분의 컴포넌트들) 및 하나 이상의 저속 비휘발성 스토리지 디바이스(예를 들어, 스토리지 디바이스(60)) 내의 저장 로케이션들 간에서 요구가 발생할 때마다(on a demand-driven basis) 전달될 수 있는(예를 들어, "스와핑될 수 있는(swapped)") 가상 어드레싱 방식을 구현하는 것의 일부로서, 하나 이상의 버퍼/테이블을 구현할 수 있다. 상세하게는, 오퍼레이팅 시스템(340)은 고속 휘발성 스토리지 및 저속 비휘발성 스토리지 간에서 데이터의 및/또는 인스트럭션의 페이지 전달을 버퍼링하기 위한 페이지 버퍼(366)를 인스턴스화 및/또는 유지할 수 있다. 적어도 스토리지 디바이스(60)를 저속 비휘발성 스토리지 디바이스로서 채용하는 것을 지원하기 위해, 스토리지 디바이스 드라이버(146)는 데이터 및/또는 인스트럭션의 페이지들과 연관된 데이터 및/또는 인스트럭션의 블록들의 스토리지 디바이스(60)로의 및/또는 이로부터의 저장 및/또는 검색을 버퍼링하기 위한 블록 버퍼(166)를 인스턴스화 및/또는 유지할 수 있다. 오퍼레이팅 시스템(340)은 또한 고속 휘발성 스토리지 내에 저장된 데이터 및/또는 인스트럭션의 페이지들의 가상 어드레스들을 상기 스토리지 내의 그들의 저장 로케이션들의 물리적 어드레스들로 상관시키는 페이지 테이블(335)을 인스턴스화 및/또는 유지할 수 있다. 또한, 다양한 실시예들에서, 오퍼레이팅 시스템(340) 또는 스토리지 디바이스 드라이버(146) 중 어느 하나는 저속 비휘발성 스토리지 내에 저장된 데이터 및/또는 인스트럭션의 페이지들의 가상 어드레스들을 이러한 페이지들이 상기 스토리지 내에서 저장된 블록들의 식별자들과 상관시키는 변환 테이블(266)을 인스턴스화 및/또는 유지할 수 있다.
다른 실례로서, 오퍼레이팅 시스템(340) 및/또는 네트워크 디바이스 드라이버(149)는 데이터 및/또는 실행가능한 인스트럭션이 컴퓨팅 디바이스(500) 및 하나 이상의 다른 디바이스 간에서 네트워크(예를 들어, 네트워크(999)를 통해서 교환될 수 있게 하는 네트워크 스택(stack)을 구현하는 것의 일부로서 하나 이상의 버퍼/테이블을 구현할 수 있다. 상세하게는, 오퍼레이팅 시스템(340)은 데이터 및/또는 인스트럭션이 컴퓨팅 디바이스(500) 및 다른 디바이스 간에서 네트워크(999)를 통해서 전달되는 것을 버퍼링하는 것의 일부로서 수신된 패킷이 검색될 수 있는 어드레스들의 하나 이상의 큐로 구성된 네트워크 큐 버퍼(369)를 인스턴스화 및/또는 유지할 수 있다. 일부 실시예들에서, 이러한 큐 각각은 저장된 패킷을 포인팅하기 위한 링크된 리스트 또는 다양한 다른 타입의 데이터 구조 중 임의의 것으로서 구현될 수 있다. 적어도 네트워크 인터페이스 컨트롤러(595)를 이러한 전달들을 위한 네트워크(999)로의 인터페이스로서 채용하는 것을 지원하기 위해, 네트워크 디바이스 드라이버(149)는 데이터 및/또는 인스트럭션을 반송하는 패킷들의 네트워크(999)를 통한 다른 디바이스로의 및/또는 디바이스로부터의 전송 및/또는 수신을 버퍼링하는 네트워크 패킷 버퍼(169)를 인스턴스화 및/또는 유지할 수 있다. 또한, 다양한 실시예들에서, 오퍼레이팅 시스템(340) 또는 네트워크 디바이스 드라이버(149) 중 어느 하나는 오퍼레이팅 시스템(340)의 및/또는 하나 이상의 애플리케이션 루틴(740)의 실행가능한 인스트럭션으로 구성된 실행의 플로우들과 패킷들을 상관시키는 것을 보조하기 위해 실행의 플로우들의 식별자들의 플로우 테이블(269)을 인스턴스화 및/또는 유지할 수 있다.
도 3a 내지 도 3c는 함께 네트워크(999)를 통한 원격 디바이스(90)로부터 데이터(39)를 수신하는 것으로부터 발생하는 인터럽트(예를 들어, NIC(595)로부터의 하드웨어 인터럽트)를 핸들링할 시에 프로세서 컴포넌트(550)의 코어들(551 및 552) 간에서의 협력의 예시적인 실시예를 도시한다. 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 네트워크를 통해 전달되는 데이터는 먼저 해당 패킷 각각의 의도된 목적지 디바이스에 대한 정보를 제공하는 헤더를 포함하는 패킷으로 상기 네트워크를 통해 각각이 개별적으로 전송된 데이터의 다수의 보다 작은 피스로 분할될 수 있다. 데이터를 구성하는 패킷들이 목적지에서 데이터를 재생성하기 위해 데이터의 그들의 보다 작은 피스들이 어셈블리될 순서에 대응하는 순서로 전송될 수 있지만, 이러한 패킷들 중 상이한 것들이 목적지 디바이스에서 무순서로 수신될 수 있도록 네트워크를 통한 상이한 경로들을 따라서 반송될 수도 있다. 이로써, 본 예시적인 실시예에서, 데이터(39)의 피스들을 반송하는 패킷들은 예측불가능한 시간에 그리고 예측 불가능한 순서로 NIC(595)에서 수신될 수 있으며, 이는 예측불가능한 시간에 NIC(595)에 의한 2 개 이상의 하드웨어 인터럽트의 생성을 촉발시킬 수 있다. 이제 설명되는 바와 같이, 프로세서 컴포넌트(550)의 코어들(551 및 552)은 오퍼레이팅 시스템(340) 및/또는 하나 이상의 애플리케이션 루틴(740)의 실행의 플로우들에 대한 교란을 효율적으로 최소화하는 방식으로 이러한 인터럽트를 핸들링하기 위해 인스트럭션의 상이한 세트들을 실행시키도록 협력할 수 있다.
도 3a를 참조하면, NIC(595)는 네트워크(999)를 통해 전송되기 이전에 데이터(39)가 원격 디바이스(90)에 의해 분할된 데이터의 피스들 중 하나를 반송하는 패킷들 중 하나를 수신할 수 있다. 이 패킷의 수신에 응답하여, NIC(595)는 네트워크 패킷 버퍼(169) 내에 상기 패킷의 컨텐츠들을 저장할 수 있으며, 인터럽트 라우터(555)에 의해서 수신될 수 있는 인터럽트(예를 들어, 하드웨어 인터럽트)를 발행할 수 있다. 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 하드웨어 인터럽트를 발행하는 것은 적어도 NIC(595) 및 인터럽트 라우터(555) 간에서 연장된 전기 도전체 상에서의 전압 레벨을 스위칭하는 것 또는 그들 간에서 연장된 버스를 통한 인터럽트 메시지를 전송하는 것 중 어느 하나를 포함할 수 있다. 전기적 도전체가 사용되는 경우, 인터럽트 라우터(555)는 이러한 전기적 도전체들 중 다수의 것 상에서 하드웨어 인터럽트들을 수신할 수 있으며, 전기적 도전체들 각각은 인터럽트 자체의 식별자가 되는 식별자가 지정될 수 있으며, 상기 식별자는 특정 핸들러 루틴과 상관될 수 있다. 인터럽트 메시지가 사용되는 경우에는, 메시지 자체가 식별자를 자체적으로 특정할 수 있다. 인터럽트 라우터(555)가 이러한 인터럽트를 NIC(595)로부터 수신하는 정확한 방식이 무엇이든, 인터럽트 라우터(555)는 인터럽트의 식별자의 표시자와 함께 인터럽트의 발생을 알리는 표시사항을 프로세서 컴포넌트(550)에 릴레이할 수 있다.
논의된 바와 같이, 모드 컨트롤러(345)는 고 기능성 코어(551) 및 저 전력 코어(552) 중 어느 것이 프로세서 컴포넌트(550)에 의해 수신된 인터럽트들 중 일부 또는 전부를 수신하는지를 제어할 수 있다. 다시 말하자면, 모드 컨트롤러(345)는 다양한 인터럽트들을 코어들(551 및 552) 중 하나 또는 양쪽 모두에 분배하도록 인터럽트 라우터(555)에게 지시함으로써 이러한 바를 실행할 수 있다. 일부 실시예들에서, 인터럽트 라우터(555)는 다수의 전기적 도전체 중에서 상기 인터럽트를 릴레이할 선택된 하나의 전기적 도전체에 의해 코어들(551 또는 552) 중 하나 또는 다른 하나로 인터럽트를 라우트할 수 있다. 다른 실시예들에서, 인터럽트 컨트롤러(555)는 인터럽트 메시지를 프로세서 컴포넌트(550)에 전송할 수 있으며, 이 메시지에는 상기 코어들(551 또는 552) 중에서 어느 코어가 상기 인터럽트를 수신할지가 특정될 수 있다. 모드 컨트롤러(345)는 인터럽트 라우터(555)에 지시하여 모든 수신된 인터럽트들이 저 전력 코어(552)로 라우팅되게 하거나, 특정 인터럽트들은 저 전력 코어(552)로 라우팅되는 한편 다른 인터럽트들은 고 기능성 코어(551)로 라우팅되게 할 수 있다. 인터럽트 라우터(555)에 의해 인터럽트들을 코어들(551 및 552) 간에 라우팅하는 것의 정확한 성질이 무엇이든 상관없이, 본 예시적인 실시예에서, NIC(595)로부터 인터럽트 라우터(555)에 의해 프로세서 컴포넌트(550)로 릴레이된 이러한 인터럽트는 인터럽트 라우터(555)에 의해서 저 전력 코어(552)로 라우팅된다.
이러한 특정 인터럽트를 NIC(595)로부터 인터럽트 라우터(555)를 통해서 수신하는 것에 응답하여, 저 전력 코어(552)는 상기 인터럽트의 첨부된 식별자를 사용하여 IDT(235)를 참조하여서 상기 식별자와 연관된 핸들러 루틴의 스토리지(560) 내의 어드레스를 획득할 수 있다. 다시 말하자면, IDT(235)는 이러한 인터럽트들 각각과 연관된 핸들러 루틴의 어드레스들로 인터럽트들의 식별자들을 상관시키는 테이블일 수 있다. 도시된 바와 같이, 이 특정 인터럽트의 식별자와 연관될 수 있는 핸들러 루틴은 네트워크 디바이스 드라이버(149)의 실행가능한 인스트럭션의 일부를 구성하는 핸들러 루틴(1491)일 수 있다. 다시 말하자면, 스토리지(560)는 NIC(595)를 사용할 수 있는 능력으로 오퍼레이팅 시스템(340)을 증강시키거나/시키고, 네트워크를 통한 다른 디바이스들과의 통신들을 위해 다른 형태들의 보다 일반적인 지원을 오퍼레이팅 시스템(340)에 부가하기 위해 네트워크 디바이스 드라이버(149)를 저장할 수 있다. 핸들러 루틴(1491)의 적어도 일부가 저장된 스토리지(560) 내의 어드레스를 검출한 경우, 저 전력 코어(552)는 상기 어드레스로 점프를 실행하여 핸들러 루틴(1491)의 인스트럭션을 실행하기 시작할 수 있다.
컴퓨팅 디바이스(500)의 일부 실시예들에서, 다수의 하드웨어 컴포넌트가 NIC(595)로부터의 인터럽트들과 연관된 인터럽트 식별자를 공유할 수 있음에 유의한다. 전기적 도전체가 NIC(595)로부터 인터럽트들을 인터럽트 라우터(555)로 반송하는데 사용되는 경우에, 상기 동일한 전기적 도전체가 하드웨어 인터럽트를 인터럽트 라우터(555)로 반송하기 위해 상기 전기적 도전체를 또한 사용할 수 있는 컴퓨팅 디바이스(300)의 하나 이상의 다른 하드웨어 컴포넌트와 공유될 수 있다. 이로써, NIC(595)로부터의 이 특정 인터럽트와 연관된 식별자는 다수의 핸들러 루틴의 다수의 어드레스와 상관될 수 있으며, 여기서 이러한 핸들러 루틴들 각각은 상이한 하드웨어 컴포넌트와 연관될 수 있다. 이로써, 하드웨어 인터럽트를 특정 식별자와 연관된 특정 전기적 도전체 상에서 수신하는 것이 상기 인터럽트의 가능한 소스들을 어느 정도로 좁게 할 수는 있지만, NIC(595)가 상기 전기적 도전체 상에서 하드웨어 인터럽트를 알리는 표시사항을 전송하였지, 네트워크 인터페이스 컨트롤러(595)와 함께 상기 전기적 도전체를 공유할 수 있는 하나 이상의 다른 하드웨어 컴포넌트가 상기 표시사항을 전송하지는 않았다는 것을 입증하기 위해 일부 형태의 테스트가 수행될 필요가 있을 수 있다. 이러한 테스트는 상기 전기적 도전체를 공유하는 다수의 하드웨어 컴포넌트 각각과 연관된 핸들러 루틴들 각각을 구성하는 인스트럭션의 부분을 수행하는 것을 수반할 수 있으며, 여기서 이러한 부분들 각각은 수행할 테스트를 포함한다.
핸들러 루틴들 각각 내의 상기 테스트는 해당 컴포넌트가 하드웨어 인터럽트를 발행했는지의 여부를 표시할 수 있는 비트 값을 체크하기 위해 해당 하드웨어 컴포넌트와 연관된 특정 어드레스에서 연관된 하드웨어 컴포넌트의 레지스터의 판독을 포함할 수 있다. 이로써, NIC(595)의 레지스터들(5951) 중 하나 이상은 하나 이상의 어드레스에서 저 전력 코어(552)에 액세스할 수 있으며, NIC(595)가 하나 이상의 다른 하드웨어 컴포넌트들과 공유할 수 있는 해당 전기적 도전체 상에서 하드웨어 인터럽트의 표시사항을 NIC(595)가 전송했는지의 여부를 결정하기 위해 저 전력 코어(552)에 의해 판독될 수 있는 적어도 단일 비트를 포함할 수 있다. 이로써, 그리고 도 2를 다시 간략하게 참조하면, 저 전력 코어(552)는 해당 전기적 도전체를 통해 하드웨어 인터럽트를 발행한 것이 NIC(595)였는지를 확인하기 위해 하나 이상의 레지스터(5951) 중 적어도 하나에 액세스하게 저 전력 코어(552)가 지시되도록 NIC(595)에 대한 이러한 테스트를 수행하는 인스트럭션을 실행시킴으로써 핸들러 루틴(1491)의 인스트럭션을 실행하는 것을 시작할 수 있다.
도 3b를 참조하면, NIC(595)가 하드웨어 인터럽트를 발행했다고 확인하였으면, 저 전력 코어(552)는 핸들러 루틴(1491)의 인스트럭션을 실행하는 것을 계속할 수 있으며, 이로써 저 전력 코어(552)로 하여금 네트워크 패킷 버퍼(169)로 액세스하여서 하나 이상의 수신된 패킷의 헤더를 검사하여 실행의 어떠한 플로우가 컴퓨팅 디바이스(500) 내의 이러한 패킷들 각각의 콘텐츠들의 목적지인지를 결정할 수 있다. 보다 상세하게는, 오퍼레이팅 시스템(340) 및/또는 하나 이상의 애플리케이션 루틴(740) 각각을 실행시키는 것은 오퍼레이팅 시스템(340)과 연관된 및/또는 하나 이상의 애플리케이션 루틴(740) 각각과 연관된 실행의 하나 이상의 플로우에서 인스트럭션을 실행시키는 것을 수반할 수 이다. 네트워크를 통한 컴퓨팅 디바이스(500) 및 하나 이상의 다른 컴퓨팅 디바이스들 간에서의 통신들에 수반될 수 있는 실행의 이러한 플로우들 중 적어도 몇몇 플로우에는 식별자가 할당될 수 있으며, 그러한 식별자들은 플로우 테이블(269) 내에 열거될 수 있다.
이러한 식별자가 할당된 실행의 플로우가 네트워크를 통해 다른 디바이스로 데이터 또는 다른 응답에 대한 요청을 전송하면, 이 실행의 플로우의 식별자가 해당 요청 내에 포함될 수 있다. 이로써, 데이터(39)를 반송하는 하나 이상의 패킷이 컴퓨팅 디바이스(500)로부터 전송된 요청에 응답하여 NIC(595)에 의해 수신되면, 그러한 하나 이상의 패킷의 헤더는 이 요청을 행한 컴퓨팅 디바이스(500) 내의 실행의 플로우의 식별자의 표시사항을 포함할 수 있다. 이로써, 하나 이상의 수신된 패킷들의 콘텐츠를 향하게 할 목적지를 결정하는 것의 일부로서, 저 전력 코어(552)는 하나 이상의 패킷의 헤더(들)로부터 이러한 식별자의 표시사항을 검색할 수 있다. 이어서, 저 전력 코어(552)는 그러한 식별자들을 사용하여 실행의 어느 플로우가 패킷들의 콘텐츠들이 향하게 될 목적지인지를 지시하는 표시사항을 플로우 테이블(269)로부터 검색할 수 있다. 플로우 테이블(269)은 그러한 식별자들이 할당된 실행의 플로우들로 실행의 플로우들의 식별자들을 상관시킬 수 있다. 본 예시적인 실시예에서, 네트워크 패킷 버퍼(169) 내에 저장된 패킷들의 적어도 서브세트에 대한 목적지로서 식별된 실행의 플로우는 애플리케이션 루틴들(740) 중 하나의 실행의 플로우일 수 있다.
저 전력 코어(552)가 핸들러 루틴(1491)의 인스트럭션의 실행에 의해서 헤더들로부터 실행의 플로우들의 식별자들을 검색하고 수신 패킷들 중 하나 이상의 것의 데이터가 향할 수 있는 실행의 하나 이상의 플로우를 식별하도록 지시받을 때에, 저 전력 코어(552)는 네트워크 패킷 버퍼(169) 내에 저장된 패킷들 중 하나 이상의 것에 대한 목적인 실행의 각 플로우와 연관된 패킷들로의 포인터들의 큐(예를 들어, 링크된 리스트)를 구성할 수 있다. 저 전력 코어(552)는 패킷들의 하나 이상의 것 내의 데이터에 대한 목적지로서 식별된 실행의 각 플로우에 대해서, 이러한 큐를 네트워크 큐 버퍼(369) 내에 저장할 수 있다. 이로써, 원격 디바이스(90)에서 NIC(595)로 데이터(39)를 반송하는 패킷들에 대해서, 저 전력 코어는 각각 데이터(39)의 일부를 반송하는 네트워크 패킷 버퍼(169) 내의 패킷들로의 포인터들의 큐를, 실행의 어느 플로우가 데이터(39)의 목적지인지를 알리는 표시사항과 함께 생성할 수 있다.
저 전력 코어(552)가 식별자(들)의 이러한 검색을 수행하고 및/또는 포인터들의 이러한 큐들 중 하나 이상을 생성할 때에, NIC(595)는 네트워크(999)를 통해서 원격 디바이스(90)로부터 보다 많은 데이터(39)를 반송하는 보다 많은 패킷들을 계속 수신할 수 있다. 일부 실시예들에서, 네트워크 인터페이스 컨트롤러(595)는 다른 이러한 패킷이 수신될 때마다 새로운 하드웨어 인터럽트를 발행할 수 있으며, 이는 핸들러 루틴(1491)의 실행이 초래되는 앞서 기술된 방식의 빈번한 반복을 야기할 수 있다. 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 이는 바람직하지 않다고 사료될 수 있는데, 그 이유는 그것이 패킷들의 수신의 핸들링을 또한 각각이 유발하도록 의도된 보다 많은 하드웨어 인터럽트에 의해 이미 반복적으로 방해되고 있는 중에 있는 패킷들의 수신의 핸들링을 초래할 수 있기 때문이다. 이를 다루기 위해, 일부 실시예들에서는, 저 전력 코어(552)가 패킷 헤더(들)을 검사하고 및/또는 하나 이상의 패킷으로부터 목적지의 식별자를 추출할 경우에, 저 전력 코어(552)는 핸들러 루틴(1491)의 인스트럭션의 실행에 의해서, 이러한 인터럽트들을 더 발행할 수 있는 NIC(595)의 능력을 적어도 임시적으로 디스에이블하도록 지시된다. 이는 저 전력 코어(552)가 NIC(595)의 하나 이상의 레지스터(5951) 중 하나 이상의 비트들로 값을 기록하고, 그로부터 하드웨어 인터럽트의 전송을 적어도 임시적으로 디스에이블하도록 지시되는 것을 수반할 수 있다. 그러나, 보다 많은 패킷의 수신이 핸들러 루틴(1491)의 실행 동안에 무시되지 않는 것을 보장하기 위해, 저 전력 코어(552)는 또한 보다 많은 패킷이 수신된 것을 나타내는 표시사항에 대하여 네트워크 패킷 버퍼(169) 및/또는 NIC(595)의 하나 이상의 레지스터(5951)의 폴링을 반복하는 것에 참여하도록 지시될 수 있다. 헤더(들)의 분석 및/또는 포인터들의 큐(들)의 생성이 수행되는 동안에 추가 패킷들의 수신에 응답하여, 이러한 활동들은 그러한 추가 수신된 패킷들로 확장될 수 있다. 네트워크 패킷 버퍼(169) 내에 현재 있는 패킷들 모두에 대하여 패킷 헤더(들)를 검사하는 것 및/또는 포인터들의 큐들을 생성하는 것을 완료하였으면, 및/또는 핸들러 루틴(1491)의 실행을 완료하였으면, 저 전력 코어(552)는 다시 네트워크 인터페이스 컨트롤러(595)의 레지스터들(5951) 중 하나 이상에 액세스하여 인터럽트 라우터(555)로 인터럽트들을 전송할 수 있는 NIC(595)의 능력을 다시 인에이블할 수 있다. 다시 말하자면, 이러한 인터럽트들의 사용 및 네트워크 패킷들의 도달을 검출하기 위한 폴링 간의 전환은 "준-폴링(semi-polling)"으로 지칭될 수 있다.
이미 언급한 바와 같이, 데이터(39)는 NIC(595)에 의해 하나 이상의 패킷으로 수신될 수 있다. 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 네트워크(999)는 데이터(예를 들어, 데이터(39)) 및/또는 이를 통해서 전송된 인스트럭션이 먼저 개별 패킷 내에서 네트워크를 통해서 각각 전송될 수 있는 데이터의 보다 작은 피스들로 분할되는, 다수의 네트워크 프로토콜 중 임의의 것을 채용할 수 있다. 또한, 데이터(39)를 분할할 시에, 데이터(39)의 그러한 보다 작은 피스들이 데이터(39)를 재생성하기 위해 결합될 수 있는 순서는 네트워크 인터페이스 컨트롤러(595)에 의해 수신된 패킷들이 데이터(39)의 피스들이 컴퓨팅 디바이스(500) 내에서 데이터(39)를 재생성하도록 결합되어야 하는 순서를 그들의 헤더 내에 표시하는 표시사항을 포함할 수 있도록 그러한 패킷들의 헤더들 내에 표시될 수 있다. 그러한 패킷들 간에서의 순서에 대한 이러한 표시사항은 필요할 수 있으며, 그 이유는 패킷들이 원격 디바이스(90)에 의해 전송된 순서가 이들이 NIC(595)에 의해 수신된 순서가 아닐 수 있기 때문이다. 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 데이터(39)의 피스를 반송하는 패킷들 각각은 네트워크(999)를 통해 상이한 경로를 취할 수 있으며, 이로써 패킷들 중 상이한 것들은 NIC(595)에 도달하는데 상이한 시간을 갖게 될 수가 있다. 따라서, 패킷들은 그들의 콘텐츠들이 데이터(39)를 재생성하기 위해 결합되어야 하는 순서와 다르게 수신될 수 있으며, 이로써 마찬가지로 무순서로 네트워크 패킷 버퍼(169) 내에 저장될 수 있다.
다양한 실시예들에서, 네트워크 패킷 버퍼(169)는 네트워크 인터페이스 컨트롤러(595) 그 자체 내에 포함된 저장 로케이션들로 구성될 수 있거나, 스토리지(560) 내의 저장 로케이션들 간에서 규정될 수 있다. 이로써, 수신된 패킷들에 액세스할 시에, 저 전력 코어(552)는 NIC(595)의 일부 또는 스토리지(560)의 일부 중 어느 하나에 액세스할 수 있다. 네트워크 패킷 버퍼(169)가 구현되는 정확한 방식이 무엇이든, 네트워크 패킷 버퍼(169)는 패킷들을 저장하기 위한 상대적으로 한정된 용량(limited capacity)을 가질 수 있다. 일부 실시예들에서, 네트워크 패킷 버퍼(169)가 완전하게 채워지도록 허용되어 어떠한 더 이상의 패킷들도 그 내에 저장될 수 없는 경우에는, NIC(595)는 그러한 다른 디바이스들에 의해 그러한 거절된 패킷들의 재전송을 발생시키는 프토토콜을 사용하여 네트워크(999)를 통해 그러한 다른 디바이스들로부터 보다 많은 패킷들을 수용하는 것을 거절할 수 있으며, 이러한 프로토콜은 그러한 패킷들이 소거 및/또는 오버라이트될 수 있도록 네트워크 패킷 버퍼(169) 내에서 이미 저장된 패킷들의 콘텐츠들의 추출 및 헤더들의 검사를 위한 보다 많은 시간을 확보하기 위한 메커니즘을 갖는다. 이로써, 적어도 네트워크 패킷 버퍼(169) 내에 저장된 하나 이상의 패킷의 헤더의 이러한 검사를 수행하는 정도까지 핸들러 루틴(1491)을 실행하는 것은 시간-민감성 태스크일 수 있으며 이로써 핸들러 루틴(1491)의 적어도 일부의 실행이 보다 신속하게 발생하게 할 수 있도록 인터럽트의 사용을 채용하는 것이 적합한 것으로 간주될 수 있다.
포인터들의 큐들 각각을 생성할 시에, 저 전력 코어(552)는 패킷들로의 포인터들이 각 큐에서 열거되어 그들의 헤더들 내에서 발견된 그러한 패킷들 간의 순서의 표시사항들을 따르도록 하는 방식을 구성하기를 시도할 수 있다. 이로써, 저 전력 코어(552)는 각각 내에 반송된 데이터의 피스들이 데이터(39)를 재생성하도록 재어셈블리되어야 하는 순서로 큐 내에 데이터(39)의 피스들을 반송하는 패킷들을 리스트하고자 시도할 수 있다. 그러나, 다른 실시예들에서, 저 전력 코어(552)는 실행의 각 목적지 플로우에 대하여 각 큐 내의 패킷들을 열거하는 바들을 구성하고자 하는 그러한 시도를 할 수 없을 수 있다. 데이터(39)를 반송하는 패킷들의 정량을 수신하고 네트워크 큐 버퍼(369) 내에 그러한 패킷들을 열거하는 큐를 생성하고 저장하는 것이 이루어지면, 저 전력 코어(552)는 다수의 패킷이 네트워크(999)로부터 수신되었고 네트워크 패킷 버퍼(169) 내에 저장되었음을 알리는 표시사항으로 고 기능성 코어(551)에 시스널링할 수 있으며 이로써 고 기능성 코어(551)는 다수의 패킷의 콘텐츠들을 그러한 콘첸츠들의 목적지(들)로서 식별된 하나 이상의 플로우와 연관된 버퍼들로 카피시키는 카피 동작들을 수행할 것이다. 고 기능성 코어(551)로의 이러한 표시사항은 또한 네트워크 패킷 버퍼(169) 및/또는 네트워크 큐(369)의 어드레스의 표시사항을 포함할 수도 있다.
다양한 메커니즘들 중 임의의 것이 고 기능성 코어(551)로의 이러한 표시사항을 반송하기 위해 저 전력 코어(552)에 의해서 채용될 수 있다. 저 전력 코어(552)는 코어-대-코어 상호접속부(553)를 통해 코어-대-코어 인터럽트를 고 기능성 코어(551)에 전달할 수 있다. 그러나, 저 전력 코어(552)가, 저 전력 코어(552)에 의해 NIC(595)로부터 최초에 수신된 인터럽트를 핸들링하는 것의 일부로서 이러한 카피 동작들을 수행하기 위해 실행의 다른 플로우를 시작하도록, 고 기능성 코어(551)가 실행의 현 플로우의 인스트럭션을 실행하는 것을 중지하는 것을 요구하지 않는 메시지 또는 다른 표시사항을 고 기능성 코어(551)에 전송하는 것이 바람직한 것으로 생각될 수 있다. 대신에, 고 기능성 코어(551)가 오퍼레이팅 시스템(340) 및/또는 하나 이상의 애플리케이션 루틴(740)의 실행의 다른 플로우들 간에 이러한 카피 동작들을 수행하기 위한 실행의 플로우를 스케줄링하도록 허용되는 것이 바람직한 것으로 간주될 수 있다.
또 다른 대안으로서, 그들이 실행의 목적지 플로우(들)로 카피될 필요가 있는 콘텐츠를 갖는 다수의 패킷이라는 것을 알리는 임의의 이러한 직접적인 표시사항을 저 전력 코어(552)가 고 기능성 코어(551)에 제공하지 않는 것일 수 있다. 대신에, 고 기능성 코어(551)는 이러한 카피 동작들을 수행할 시에 고 기능성 코어(551)가 사용할 수 있는 하나 이상의 큐가 준비되었다는 사실을 알리는 표시사항에 대해서 스케줄링된 반복하는 방식으로 네트워크 큐 버퍼(369)를 체크하도록 오퍼레이팅 시스템(340)에 의해서 이미 지시될 수 있다. 이러한 카피 동작들을 수행하기 위한 임계치를 만족시키기에 충분한 수의 패킷들의 정량을 열거하는 이러한 큐들 중 하나 이상의 위치를 파악하는 것에 응답하여, 고 기능성 코어(551)는 실행의 그들의 목적지 플로우(들)로 그러한 패킷들의 콘텐츠들의 그러한 카피동작을 스케줄링할 수 있다.
고 기능성 코어(551)에게 그렇게 통보하기 위해 인터럽트를 사용하는 것을 피하고 고 기능성 코어(551)가 NIC(595)로부터의 인터럽트를 핸들링하는 것과 연관된 인스트럭션의 실행을 스케줄링하도록 하게 하는 것은 고 기능성 코어(551)의 다양한 특징들을 보다 효율적으로 사용할 수 있다고 간주될 수 있다. 달리 말하면, 저 전력 코어(552) 및 고 기능성 코어(551)는 인터럽트를 직접적으로 핸들링하는데 있어서 보다 효율적인 저 전력 코어(552)가 인터럽트를 핸들링하는 것과 연관된 하나 이상의 시간-민감성 태스크를 수행하도록 그렇게 하는 한편, 고 기능성 코어(551)는 시간-민감성이지 않을 수 있거나 또는 그렇게 시간-민감성이지 않을 수 있는 인터럽트를 핸들링하는 것과 연관된 다른 태스크들의 실행을 스케줄링하게 허용되도록, NIC(595)로부터의 인터럽트에 응답할 시에, 서로 협력하게 지시될 수 있다.
고 기능성 코어(551)가 데이터(39)의 적어도 부분이 네트워크 패킷 버퍼(169) 내에 저장된 패킷들로 수신되었다는 것을, 네트워크 큐(369) 내의 실행의 목적지 플로우의 정체의 표시사항과 함께 알게 되는 정확한 방식이 무엇이든간에, 일단 알게되었으면, 고 기능성 코어(551)는 카피 동작(들)을 수행하도록 데이터 전달 컴포넌트(341)의 인스트럭션을 실행할 수 있다. 도 3c를 참조하면, 데이터 전달 컴포넌트(341)를 그렇게 실행할 시에, 고 기능성 코어(551)는 데이터(39)를 반송한 네트워크 패킷 버퍼(169) 내에 저장되고 하나 이상의 패킷을 포함하는 네트워크 큐(369)의 큐 내에 열거된 상기 하나 이상의 패킷으로부터의 데이터(39)의 피스들을 카피하도록 지시될 수 있다. 고 기능성 코어(551)는, 이러한 카피 동작들을 수행할 시에, 데이터(39)의 그러한 피스들을, 데이터(39)에 대한 목적지로서 큐 내에서 표시된 실행의 플로우를 포함한 애플리케이션 루틴들(740) 중 하나와 연관된 애플리케이션 데이터 버퍼(730)로 카피할 수 있다. 그렇게 할 시에, 그리고 도시된 바와 같이, 데이터 전달 컴포넌트(341)를 실행할 시에 고 기능성 코어(551)에 의하여 데이터(39)의 적어도 부분을 이렇게 카피하는 것은 상기 애플리케이션 데이터 버퍼(730)를 포함하는 해당 사용자 컨텍스트들(760) 중 하나의 콘텐츠들을 수정하기 위해 시스템 컨텍스트(360) 내의 데이터 전달 컴포넌트(341)의 보다 높은 허가사항일 수 있는 것을 사용하는 것을 수반할 수 있다.
도 4a 내지 도 4e는 함께, 애플리케이션 루틴들(740) 중 하나의 실행 동안에 페이지 폴트로부터 기인되는 인터럽터들의 쌍을 핸들링할 시에 프로세서 컴포넌트(550)의 코어들(551 및 552) 간의 협력(프로세서 컴포넌트(550) 내로부터의 페이지 폴트 및 저장 인터페이스 컨트롤러(565)로부터의 하드웨어 인터럽트의 알림)의 예시적인 실시예를 도시한다. 다시 말하자면, 본 명세서에서 사용되는 바와 같이, 용어 "인터럽트"는 프로세서 컴포넌트(550)가 아닌 다른 하드웨어 컴포넌트들로부터 기인되는 하드웨어 인터럽트들 및 페이지 폴트들을 포함하여서 프로세서 컴포넌트(550) 내에서 발생하는 예외사항들을 말한다. 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 가상 메모리 방식이 사용되는 컴퓨팅 디바이스에서, 데이터 및/또는 실행가능한 인스트럭션의 페이지들은 그러한 페이지들 각각의 콘텐츠들이 사용되는 빈도 및/또는 그러한 콘텐츠들이 얼마나 최근에 사용되었는지에 기초하여서 고속 휘발성 스토리지 및 저속 비휘발성 스토리지 간에서 교환될 수 있다. 이로써, 고속 휘발성 스토리지(예를 들어, 스토리지(560)의 일부)로부터 저속 비휘발성 스토리지(예를 들어, 스토리지 디바이스(60))로 전달된 페이지 내의 데이터 및/또는 인스트럭션이 루틴(예를 들어, 애플리케이션 루틴들(740) 중 하나)를 실행하는 것의 일부로서 실행될 필요가 있을 수 있지만, 이러한 실행은 데이터 및/또는 인스트럭션의 페이지가 고속 휘발성 스토리지로 다시 전달되기까지는 발생할 수 없는, 인스턴스들(instances)이 발생할 수 있다. 이러한 상황은 페이지 폴트로서 지칭될 수 있으며, 고속 휘발성 스토리지로의 그러한 역 전달이 발생하도록 지시하는 실행의 현 플로우를 인터럽션하는 결과를 야기할 수 있다. 이제 설명될 바와 같이, 프로세서 컴포넌트(550)의 코어들(551 및 552)은 오퍼레이팅 시스템(340) 및/또는 애플리케이션 루틴들(740) 중 하나 이상의 다른 것의 인스트럭션의 실행에 대한 교란들을 효율적으로 최소화하는 방식으로 양 인터럽트들을 핸들링할 시에 협력하도록 인스트럭션의 상이한 세트들을 실행하게 협력할 수 있다.
도 4a를 참조하면, 고 기능성 코어(551)는 스토리지(560) 내에 규정된 사용자 컨텍스트들(760) 중 연관된 하나 내의 애플리케이션 루틴들(740) 중 하나를 실행하는 것에 관여할 수 있다. 그러나, 그렇게 할 시에, 스토리지(560) 내에 현재 저장되지 않은 페이지 내에 있는 상기 애플리케이션 루틴(740)의 인스트럭션의 일부가 도달되고/되거나 데이터가 스토리지(560) 내에 현재 저장되지 않았지만 대신에 조기에 스토리지 디바이스(60)로 전달된 페이지로부터 필요된다. 이는 스토리지(560) 내의 상기 페이지에 대한 물리적 어드레스로 상기 페이지의 가상 어드레스를 상관시키기 위해 페이지 테이블(366)을 참조하고 스토리지(560) 내에 상기 페이지에 대한 물리적 어드레스가 현재 존재하지 않는다고 도출함으로써, 상기 페이지의 데이터 및/또는 인스트럭션을 검색하고자 하는 것이 시도될 때에 오퍼레이팅 시스템(340)의 페이지 관리기 컴포넌트(342)의 실행 동안에 고 기능성 코어(551)에 의해서 그렇다고 결정될 수 있다. 응답 시, 고 기능성 코어(551)는 페이지 폴트의 표시사항(예를 들어, 인터럽트들의 쌍 중 제 1 인터럽트)을 저 전력 코어(552)에 알릴 수 있다. 페이지 폴트의 이러한 표시사항을 수신하는 것에 응답하여서, 저 전력 코어(552)는 오퍼레이팅 시스템(340)의 실행가능한 인스트럭션의 일부를 구성하는 페이지 폴트 핸들러 루틴(343)의 실행을 시작할 수 있다.
도 4b를 참조하면, 페이지 폴트 핸들러 루틴(343)의 인스트럭션의 실행을 시작할 시에, 저 전력 코어(552)는 페이지의 가상 어드레스를, 상기 페이지의 콘텐츠들을 포함할 수 있는 스토리지 디바이스(60) 내의 데이터의 하나 이상의 블록의 하나 이상의 식별자로 상관시키기 위해 변환 테이블(266)을 참조할 수 있다. 도시된 바와 같이, 페이지(페이지(35)로서 지정됨)는 다수의 블록(33) 내의 스토리지 디바이스(60) 내에 조기에 저장되었을 수도 있다. 그러나, 본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 페이지(35)가 블록들(33) 중 하나 이상을 점유하는지의 여부는 다양한 실시예들에서 적어도, 페이지(35) 및 블록들(33) 각각의 상대적 크기들(예를 들어, 비트들 또는 바이트들의 단위임)에 의존할 수 있다. 따라서, 페이지(35)가 2 개 이상의 블록(33) 중 적어도 일부를 점유하는 것으로서 이렇게 도시하는 것은 한정적으로 취해지지 말아야 한다. 페이지(35)와 연관된 하나 이상의 블록(33)의 식별자(들)이 변환 테이블(266)로부터 검색되었으면, 저 전력 코어(552)는, 페이지 폴트 핸들러 루틴(343)의 인스트럭션의 실행을 계속할 시에, 페이지(35)가 스토리지 디바이스(60) 내에서 저장된 하나 이상의 블록(33)으로부터 페이지(35)가 검색될 것을 요청하는 요청을 스토리지 디바이스 드라이버(146)를 통해서 저장 인터페이스 컨트롤러(565)에 전달할 수 있다. 응답 시에, 저장 인터페이스 컨트롤러(565)는 스토리지 디바이스(60)로부터 하나 이상의 블록(33)의 콘텐츠들을 요청할 수 있다. 저장 인터페이스 컨트롤러(565) 및 스토리지 디바이스(60)가 개별 컴포넌트들로서 도시되었지만, 하나가 다른 것으로 통합된 다른 실시예들이 가능하다는 것이 주목되어야 한다.
도 4c를 참조하면, 저장 인터페이스 컨트롤러(565)는 스토리지 디바이스(60)로부터 하나 이상의 블록(33)의 콘텐츠들을 수신할 수 있다. 하나 이상의 블록(33)의 수신에 응답하여서, 저장 인터페이스 컨트롤러(565)는 그러한 블록들의 콘텐츠들을 블록 버퍼(166) 내에 저장할 수 있으며, 인터럽트 라우터(555)에 의해서 수신될 수 있으며 인터럽트의 식별자의 표시자와 함께 프로세서 컴포넌트(550)로 릴레이될 수 있는 하드웨어 인터럽트를 발행할 수 있다. 모드 컨트롤러(345)가 이러한 인터럽트가 저 전력 코어(552)로 라우팅되도록 구성되는 것으로서 가정되면, 저 전력 코어(552)는 이러한 하드웨어 인터럽트의 수신에 대하여, 상기 인터럽트의 첨부된 식별자를 사용하여서 IDT(235)를 참조하여서 식별자와 연관된 핸들러 루틴의 스토리지(560) 내의 어드레스를 획득함으로써 응답할 수 있다. 다시 말하자면, IDT(235)는 그러한 인터럽트들 각각과 연관된 핸들러 루틴(들)의 어드레스들로 인터럽트들의 식별자들을 상관시키는 테이블일 수 있다. 도시된 바와 같이, 이러한 특정 하드웨어 인터럽트의 식별자와 연관될 수 있는 핸들러 루틴은 스토리지 디바이스 드라이버(146)의 실행가능한 인스트럭션의 일부를 구성하는 핸들러 루틴(1461)일 수 있다. 핸들러 루틴(1461)의 적어도 일부가 저장된 스토리지(560) 내의 어드레스를 검색하였으면, 저 전력 코어(552)는 상기 어드레스로 점프하여서, 핸들러 루틴(1461)의 인스트럭션을 실행하는 것을 시작할 수 있다.
그러나, 한 번 더 말하자면, 인터럽트 라우터(555)로 인터럽트를 전송하기 위해 저장 인터페이스 컨트롤러(565)와 동일한 전기적 도전체를 다수의 하드웨어 컴포넌트이 공유할 수 있다는 것이다. 이러한 또는 다른 상황의 결과로서, 이러한 하드웨어 인터럽트와 연관된 특정 식별자는 다수의 핸들러 루틴의 다수의 어드레스와 상관될 수 있으며, 그러한 핸들러 루틴들 각각은 상이한 하드웨어 컴포넌트와 연관될 수 있으며, 일부 형태의 테스트가 이러한 특정 인터럽트를 발행한 것은 저장 인터페이스 컨트롤러(565)였다는 것을 입증하기 위해 수행될 필요가 있을 수 있다. 다시 말하자면, 이러한 테스트는 하나 이상의 핸들러 루틴 각각을 구성하는 인스트럭션의 일부를 수행하는 것을 수반할 수 있으며, 핸들러 루틴(1461)에 의한 이러한 테스트를 인에이블하기 위해, 저장 컨트롤러(565)의 레지스터들(5651) 중 하나 이상이, 이러한 하드웨어 인터럽트를 발행한 것이 저장 인터페이스 컨트롤러(565)인지 아닌지를 결정하기 위해, 하나 이상의 어드레스에서 저 전력 코어(552)에 의해서 도달될 수 있다.
이로써, 그리고 도 4d를 참조하면, 저장 인터페이스 컨트롤러(565)가 하드웨어 인터럽트를 발행했는지를 확인하기 위해 저 전력 코어(552)가 하나 이상의 레지스터(5651) 중 적어도 하나에 액세스하게 지시되도록, 저장 인터페이스 컨트롤러(565)에 대한 이러한 테스트를 수행하는 인스트럭션을 실행함으로써, 저 전력 코어(552)는 핸들러 루틴(1461)의 인스트럭션을 실행하는 것을 시작할 수 있다. 저장 인터페이스 컨트롤러(565)가 하드웨어 인터럽트를 발행했다고 확인하였으면, 저 전력 코어(552)는 핸들러 루틴(1461)의 인스트럭션을 실행하는 것을 계속할 수 있으며, 이로써 저 전력 코어(552)로 하여금 그 내에 저장된 하나 이상의 블록(33)로부터 페이지(35)를 검색하기 위해 블록 버퍼(166)를 액세스하게 할 수 있으며, 페이지(35)를 페이지 버퍼(366) 내에 저장할 수 있다.
본 기술 분야의 당업자에게 인식될 수 있는 바와 같이, 다양한 상황들은 하나 이상의 블록(33)이 비-인접 방식으로(in a non-contiguous manner) 스토리지 디바이스(60) 내에 분산될 수 있는 것으로 이어질 수 있다. 또한, 스토리지 디바이스(60)가 하나 이상의 블록(33)을 거기로 제공하도록 하는 요청을 저장 인터페이스 컨트롤러(565)로부터 수신할 때에, 예를 들어, 플래터들(platters)에 대한 자기적 헤드들의 현 위치들 및/또는 고체상 저장 컴포넌트들의 어느 뱅크가 스토리지 디바이스(60) 내에서 현재 액세스되고 있는 지와 같은 요인들은 그들의 콘텐츠들이 페이지(35)를 재구성하기 위해 어떻게 결합될 필요가 있는지에 대하여 순서가 없는 방식으로 하나 이상의 블록(33)을 검색하여서 이를 저장 인터페이스 컨트롤러로 제공하는 것으로 이어질 수 있다. 이로써, 블록들(33) 중 비-인접하는 것들이 저장 인터페이스 컨트롤러(565)에 의해서 수신되고 저장 인터페이스 컨트롤러(565)에 의해서 블록 버퍼(166) 내에 저장되는 때에, 저 전력 코어(552)는 페이지(35)의 비-인접 부분들을 블록 버퍼(166)로부터 검색할 수 있다. 또한, 블록 버퍼(166)는, 그 내에 저장된 블록들(33)로부터 페이지(35)의 부분들의 검색이 시간-민감성 태스크여서 하나 이상의 블록(33)의 수신을 알리기 위해 하드웨어 인터럽트의 사용이 적합하다고 간주될 수 있도록, 한정된 용량을 가질 수 있다.
블록 버퍼(166)로부터 페이지(35)의 부분들을 검색하고 그러한 부분들을 페이지 버퍼(366) 내에 저장할 시에, 저 전력 코어(552)는 페이지(35)를 재생성하기 위한 그들의 적합한 순서로 페이지(35)의 부분들을 결합시킬 수 있다. 페이지 버퍼(366) 내의 페이지(35)의 이러한 재생성 후에, 저 전력 코어(552)는 다음으로 상이한 실시예들에서 다양한 상이한 조치들을 취할 수 있다.
일부 실시예들에서, 페이지 폴트의 핸들링을 완료하는 것은, 고 기능성 코어(551)가 페이지(35)를 시스템 컨텍스트(360) 내의 페이지 버퍼(366)로부터 사용자 컨텍스트(760) 내로 카피하는 것을 포함할 수 있으며, 상기 사용자 컨텍스트(760) 내에서 애플리케이션 루틴(740)은 페이지(35)를 검색할 필요로 이어지는 실행의 플로우에서 실행 중이다. 이러한 실시예들의 일부에서, 저 전력 코어는 페이지(35)가 페이지 버퍼(366) 내에 저장되었음을 알리는 표시사항을 고 기능성 코어(551)에 시그널링할 수 있다. 다시 말하자면, 다양한 메커니즘들 중 임의의 것이 이러한 표시사항을 고 기능성 코어(551)에 전달하는데 저 전력 코어(552)에 의해서 사용될 수 있다. 또한, 한번 다시 말하자면, 또 다른 대안으로서, 이러한 표시사항은 전혀 저 전력 코어(552)에 의해서 고 기능성 코어(551)로 제공되지 않을 수 있으며, 고 기능성 코어(551)는 페이지 버퍼(366)의 폴링을 반복함으로써 페이지(35)의 적어도 일부가 페이지 버퍼(366) 내에 저장되었다고 알 수 있다. 고 기능성 코어(551)에 의해서 인스트럭션의 실행의 현 플로우에 대한 중단을 일으키는, 코어들(551 및 552) 간의 인터럽트의 형태의 사용을 적어도 피하고, 대신에 고 기능성 코어(551)가, 실행의 다른 정상적으로 스케줄링된 플로우들 간에 페이지(35)를 페이지 버퍼(366) 내에 저장하는 것에 대한 응답을 스케줄링하도록 하는 것이 또한 바람직하다고 사료될 수 있다.
고 기능성 코어(551)가 페이지 버퍼(366) 내에 페이지(35)의 적어도 일부가 저장되었다는 것을 알게 된 정확한 방식이 무엇이든 상관없이, 일단 그렇게 알려졌으면, 고 기능성 코어(551)는 응답 시에 페이지 관리기 컴포넌트(342)의 인스트럭션 실행할 수 있다. 도 4e를 참조하면, 페이지 관리기 컴포넌트(342)를 그렇게 실행할 시에, 고 기능성 코어(551)는 페이지(35)를 시스템 컨텍스트(360) 내측의 페이지 버퍼(366)로부터 사용자 컨텍스트(760)의 일부가 되는 것으로 할당될 수 있는 스토리지(560) 내의 일련의 저장 로케이션들로 카피하도록 지시될 수 있으며, 이 사용자 컨텍스트(760) 내에서는, 실행을 위해 가용하지 않다고 발견된 애플리케이션 루틴(740)의 다음의 인스트럭션, 및/또는 가용하지 않다고 발견된 상기 애플리케이션 루틴(740)에 의해서 필요한 데이터를 제공하도록, 상기 애플리케이션 루틴(740)이 고 기능성 코어(551)에 의해서 실행 중이며, 이로써 이러한 실행이 계속되게 할 수 있다.
그러나, 다른 실시예들에서, 페이지 폴트의 핸들링의 완료는 저 기능성 코어(552) 또는 고 기능성 코어(551) 중 어느 하나가 페이지(35)에 의해서 현재 점유된 페이지 버퍼(366)의 부분을 제공하는 스토리지(560)의 저장 로케이션들을 시스템 컨텍스트(360)로부터 애플리케이션 루틴(740)이 실행 중인 사용자 컨텍스트(760) 내로 재맵핑하는 것을 포함할 수 있다. 달리 말하면, 페이지(35)를 일 컨텍스트에서 다른 컨텍트스로 전달하기 위해 스토리지(560)의 일 부분으로 다른 부분으로 페이지(35)를 카피하는 대신에, 페이지(35)에 의해서 이미 점유된 스토리지(560)의 부분이 일 컨텍스트에서 다른 컨텍스트로 간단하게 재맵핑될 수 있다. 저 전력 코어(552)가 이러한 재맵핑을 수행할 경우에, 이 코어는 페이지 폴트 핸들러(343)의 인스트럭션을 실행하는 것의 일부로서 그렇게 행할 수 있으며, 이는 페이지(35)가 그렇게 재맵핑되도록 가용하게 되게 페이지(35)가 페이지 버퍼(366) 내에 저장되었다는 것을 알리는 표시사항을 수신할 수 있다. 이러한 재맵핑 후에, 저 전력 코어(552)는 고 기능성 코어(551)에게 이러한 재맵핑에 대하여 시그널링하여서 고 기능성 코어(551)가 페이지 관리기 컴포넌트(342)의 인스트러션들을 실행하는 것으로 복귀하여서 페이지(35)의 인스트럭션 및/또는 데이터의 로딩을 유발하여서 애플리케이션 루틴(740)의 다음의 인스트럭션 및/또는 상기 데이터를 실행을 위해 고 기능성 코어(551)에 제공할 수 있다. 그러나, 고 기능성 코어(551)가 이러한 재맵핑을 수행할 경우에, 이 코어는 페이지 관리기 컴포넌트(342)를 실행시키는 것의 일부로서 그렇게 행할 수 있으며, 저 전력 코어(552)는 일단 페이지(35)가 페이지 버퍼(366) 내에서 저장되었으면 고 기능성 코어(551)에 알리며 이로써 고 기능성 코어(551)는 이러한 재맵핑을 수행하도록 페이지 관리기 컴포넌트(342)의 인스트럭션을 실행할 수 있게 될 수 있다.
다양한 실시예들에서, 스토리지(560)는 매우 다양한 정보 저장 기술들 중 임의의 것에 기초할 수 있으며, 이러한 기술들은 가능하게는 전력의 비중단된 공급을 요구하는 휘발성 기술들을 포함하며, 가능하게는 분리가능하거나 가능하지 않을 수 있는 머신-판독가능한 저장 매체들의 사용을 수반하는 기술들을 포함할 수 있다. 이로써, 이러한 스토리지들 각각은 임의의 매우 다양한 타입들(또는 타입들의 조합)의 스토리지 디바이스를 포함할 수 있으며, 이러한 디바이스들은 다음으로 한정되지 않지만 다음을 포함할 수 있다: ROM(read-only memory), RAM(random-access memory), 동적 RAM(DRAM), 더블-데이터-레이트 DRAM(DDR-DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 프로그램가능한 ROM(PROM), 소거가능한 프로그램가능한 ROM(EPROM), 전기적으로 소거가능한 프로그램가능한 ROM(EEPROM), 플래시 메모리, 폴리머 메모리(예를 들어, 페로일렉트릭 폴리머 메모리(ferroelectric polymer memory)), 오보닉 메모리(ovonic memory), 상변화(phase change) 또는 페로일렉트릭 메모리(ferroelectric memory), SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 자기적 또는 광학적 카드들, 하나 이상의 개별 페로마그네틱 디스크 드라이브(individual ferromagnetic disk drives), 또는 하나 이상의 어레이들로 조직화된 복수의 스토리지 디바이스(예를 들어, RAID(Redundant Array of Independent Disks) 어레이로 조직화된 다수의 페로마그네틱 디스크 드라이브). 이들 스토리지 각각이 단일의 블록으로 도시되어 있지만, 하나 이상의 이들 스토리지는 다른 스토리지 기술에 기반할 수 있는 복수의 스토리지 디바이스를 포함할 수 있음에 유의해야 한다. 따라서, 예를 들어, 하나 이상의 도시된 각각의 스토리지는 프로그램 및/또는 데이터가 머신 판독 가능 저장 매체 상에서 임의의 형태로 저장 및 전달될 수 있는 광학 드라이브 또는 플래시 메모리 카드 리더, 비교적 오랜 기간 동안 프로그램 및/또는 데이터를 국소적으로 저장하는 강자성체 디스크 드라이브, 및 프로그램 및/또는 데이터에 비교적 빠르게 액세스할 수 있는 하나 이상의 휘발성 솔리드 스테이트 메모리 디바이스(예를 들어, SRAM 또는 DRAM)의 조합을 나타낼 수 있다. 이들 스토리지 각각은 동일한 스토리지 기술에 근거한 복수의 스토리지 컴포넌트로 구성될 수 있지만, 이들은 용도(예를 들어, 일부 DRAM 디바이스는 메인 스토리지로 이용되고, 다른 DRAM 디바이스는 그래픽 컨트롤러의 별개의 프레임 버퍼로 이용될 수 있다)에 따라 다르게 처리되어 별도로 관리될 수 있음에 유의해야 한다.
다양한 실시예에서, 네트워크 인터페이스 컨트롤러(595)는 기술된 바와 같이 이러한 컴퓨팅 디바이스들이 다른 디바이스들로 연결되게 할 수 있는 매우 다양한 시그널링 기술들 중 임의의 것을 사용할 수 있는 네트워크로(999)로의 인터페이스를 구현할 수 있다. 이들 인터페이스 각각은 이러한 연결을 가능하게 하는 필요 기능의 적어도 일부를 제공하는 회로를 포함한다. 그러나, 이들 인터페이스 각각은 프로세서 컴포넌트들 중 대응하는 것들에 의해 실행되는 인스트럭션의 시퀀스들로 적어도 일부가 구현될 수 있다(예를 들어, 프로토콜 스택 또는 다른 특징을 구현). 전기적 및/또는 광학적 도전 케이블이 채용되는 경우에, 이러한 인터페이스들은 RS-232C, RS-422, USB, Ethernet(IEEE-802.3) 또는 IEEE-1394를 포함하되 이에 제한되지 않는 다양한 산업 표준의 임의의 것에 따르는 시그널링 및/또는 프로토콜을 이용할 수 있다. 무선 신호 전송의 사용이 수반되는 경우에, 이들 인터페이스들은 IEEE 802.11a, 802.11b, 802.11g, 802.16, 802.20(통상 "모바일 브로드밴드 와이어리스 액세스"라고 불림), 블루투스, 지그비(ZigBee), 또는 GSM/GPRS(GSM with General Packet Radio Service), CDMA/1xRTT, EDGE(Enhanced Data Rates for Global Evolution), EV-DO(Evolution Data Only/Optimized), EV-DV(Evolution For Data and Voice), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), 4G LTE 등을 포함하되 이에 제한되지 않는 다양한 산업 표준의 임의의 것에 따르는 시그널링 및/또는 프로토콜을 이용할 수 있다.
도 5는 로직 플로우 2100의 일 실시예를 예시한다. 로직 플로우 2100는 본 명세서에서 기술된 하나 이상의 실시예에 의해서 실행되는 동작들 일부 또는 전부를 나타낼 수 있다. 보다 상세하게는, 로직 플로우 2100는 오퍼레이팅 시스템(340)의 적어도 일부 및/또는 하나 이상의 디바이스 드라이버를 실행할 시에 프로세서 컴포넌트(550)에 의해서 수행되고/되거나 컴퓨팅 디바이스(500)의 다른 컴포넌트(들)에 의해서 수행되는 동작들을 예시한다.
2110에서, 컴퓨팅 디바이스의 프로세서 컴포넌트의 저 전력 코어(예를 들어, 컴퓨팅 디바이스(500)의 프로세서 컴포넌트(550)의 저 전력 코어(552)는 컴퓨팅 디바이스의 하드웨어 컴포넌트로부터 발생하는 인터럽트를 수신할 수 있다. 다시 말하자면, 본 명세서에서 사용되는 바와 같이, 용어 "인터럽트"는 프로세서 컴포넌트 외부의 하드웨어 컴포넌트들에 의해서 생성된 하드웨어 인터럽트들 및 페이지 폴트들을 포함하여, 프로세서 컴포넌트의 내부 로직에 의해서 생성되는 예외사항들을 포함한다. 이 경우에, 인터럽트는 하드웨어 인터럽트이다. 전술한 바와 같이, 오퍼레이팅 시스템은 저 전력 코어 또는 고 기능성 코어(예를 들어, 모드 컨트롤러(345) 및 고 기능성 코어(551) 중 어느 것으로 하나 이상의 하드웨어 인터럽트를라우팅할지를 동적으로 결정하고, 그렇게 하도록 인터럽트 라우터(예를 들어, 인터럽트 라우터(555)에게 지시할 수 있는 모드 컨트롤러(mode controller)를 포함할 수 있다.
2120에서, 저 전력 코어는 수신된 인터럽트의 식별자를 사용하여서 하드웨어 인터럽트의 하나 이상의 가능한 소스일 수 있는 것과 연관된 하나 이상의 ISR의 하나 이상의 어드레스를 검색할 수 있다. 전술한 바와 같이, 일부 컴퓨팅 디바이스들에서, 다수의 하드웨어 컴포넌트는 하드웨어 인터럽트의 표시사항을 전송할 단일 전기적 도전체의 사용을 공유할 수 있으며, 이로써 하드웨어 인터럽트의 소스들이 식별될 필요가 있을 수 있다.
2130에서, 저 전력 코어는, 인터럽트의 소스가 모호할 수 있는 실시예들에서, 하나 이상의 핸들러 루틴 각각과 연관된 하드웨어 컴포넌트가 이 하드웨어 인터럽트의 소스인지의 여부를 결정하기 위해 테스트(들)을 저 전력 코어가 수행하게 하는, 하나 이상의 핸들러 루틴 각각의 인스트럭션의 서브세트를 실행할 수 있다. 2132에서, 이러한 테스트(들)의 수행으로 인해서, 저 전력 코어는, 저 전력 코어에 의해서 수신된 하드웨어 인터럽트의 소스로서 네트워크로부터 하나 이상의 패킷을 수신한 컴퓨팅 디바이스의 네트워크 인터페이스 컨트롤러(NIC)(예를 들어, NIC(595)를 식별하였다.
2140에서, 저 전력 코어는 네트워크 인터페이스 컨트롤러가 수신된 패킷(들)을 저장한 패킷 버퍼 내의 수신된 패킷(들)의 헤더(들)를 검사한다. 보다 상세하게는, 그리고 전술한 바와 같이, 저 전력 코어는 각 패킷의 콘텐츠들(예를 들어, 반송되는 데이터 및/또는 인스트럭션)의 의도된 목적지인 실행의 플로우의 식별자를 포함하는 정보의 하나 이상의 피스를 그러한 헤더(들)로부터 검색할 수 있다. 2142에서, 저 전력 코어는 상기 검색된 식별자(들)를 사용하여서,(예를 들어, 저 전력 코어 또는 고 기능성 코어 중 어느 하나에 의해서 실행될 수 있는 오퍼레이팅 시스템(340) 또는 애플리케이션 루틴(740)의 부분에 속하는 실행의 플로우인)컴퓨팅 디바이스 내의 루틴의 실행의 일부가 되는 것으로서 실행의 목적지 플로우를 식별할 수 있다. 다시 말하자면, 실행의 목적지 플로우를 그렇게 식별하기 위해, 저 전력 코어는 실행의 목적지 플로우와 식별자를 상관시키기 위해 이러한 식별자들의 테이블을 사용할 수 있다.
2150에서, 저 전력 코어는, 패킷들 중 하나 이상의 것의 콘텐츠들의 목적지로서 식별된 실행의 각 플로우에 대해서, 실행의 상기 플로우에 대해서 의도된 바와 같이 그들의 식별자들에 의해서 표시된 패킷들로의 포인터들의 큐를 생성할 수 있다. 이어서, 저 전력 코어는 2152에서 실행의 해당 목적지 플로우의 각 큐에 대한 표시사항과 함께 그렇게 생성된 하나 이상의 큐를 네트워크 큐 버퍼 내에 저장할 수 있다. 전술한 바와 같이, 수신된 패킷들의 콘텐츠들이 패킷들로부터 검색되게 하고 실행의 그들의 목적지 플로우(들)로 제공되게 하도록 하는 헤더(들)의 검사 및/또는 네트워크 큐 버퍼에 저장된 큐(들)의 생성은 시간-민감성 태스크들일 수 있는데 그 이유는 다음의 패킷이 수신될 때를 제어할 도리가 없을 수 있기 때문이다.
2160에서, 저 전력 코어는 고 기능성 코어에게, 하나 이상의 패킷 중 하나 이상의 피스 내에 반송된 데이터 및/또는 인스트럭션의 적어도 일부가 네트워크 데이터 버퍼 내에 저장되었다는 표시사항을, 그러한 패킷들로의 포인터들의 큐를 검색한 위치의 표시사항 및/또는 실행의 목적지 플로우의 표시사항과 함께, 시그널링할 수 있다. 이와 달리, 그리고 논의한 바와 같이, 저 전력 코어는 이러한 표시사항을 고 기능성 코어에 전혀 제공하지 않을 수 있으며, 대신에, 고 기능성 코어가 네트워크 큐 버퍼 내의 임계치를 만족시키는 패킷들의 정량을 열거하는 큐를 저장하는 것을 검출할 수 있다. 2162에서, 이어서, 고 기능성 코어는 네트워크 패킷 버퍼로부터, 실행의 목적지 플로우에 의해서 액세스될 수 있는 사용자 컨텍스트 또는 시스템 컨텍스트 내의 로케이션으로, 열거된 패킷들 내에 저장된 데이터 및/또는 인스트럭션의 일부(또는 전부)를 카피하기 위해 해당 큐 내에 패킷 들을 열거한 바를 따르도록 데이터를 카피하기 위한 보다 효율적인 능력을 채용할 수 있다.
도 6은 로직 플로우 2200의 일 실시예를 예시한다. 로직 플로우 2200는 본 명세서에서 기술된 하나 이상의 실시예에 의해서 실행되는 동작들 일부 또는 전부를 나타낼 수 있다. 보다 상세하게는, 로직 플로우 2200는 오퍼레이팅 시스템(340)의 적어도 일부, 애플리케이션 루틴(740), 및/또는 하나 이상의 디바이스 드라이버를 실행할 시에 프로세서 컴포넌트(550)에 의해서 수행되고/되거나 컴퓨팅 디바이스(500)의 다른 컴포넌트(들)에 의해서 수행되는 동작들을 예시한다.
2210에서, 컴퓨팅 디바이스의 프로세서 컴포넌트의 저 전력 코어(예를 들어, 컴퓨팅 디바이스(500)의 프로세서 컴포넌트(550)의 저 전력 코어(552)는 프로세서 컴포넌트의 고 기능성 코어(예를 들어, 고 기능성 코어(551)에 의한 애플리케이션 루틴(예를 들어, 하나 이상의 애플리케이션 루틴(740) 중 하나)의 인스트럭션의 실행 동안에 페이지 폴트의 발생으로부터 기인되는 인터럽트를 수신할 수 있다. 전술한 바와 같이, 프로세서 컴포넌트의 저 전력 코어 및 고 기능성 코어 모두가 인스트럭션을 실행하도록 동작되는 것의 일부로서, 고 기능성 코어의 내부 로직에 의해서 생성된 페이지 폴트들은 적어도 보다 시간에 민감한 측면들을 다루기 위해 저 기능성 코어로 향할 수 있다.
2220에서, 저 전력 코어는(예를 들어, 스토리지 디바이스(60) 및 저장 인터페이스 컨트롤러(565)와 같은)컴퓨팅 디바이스의 저장 인터페이스 컨트롤러의 제어 하에서 스토리지 디바이스로부터 필요한 페이지를 요청할 수 있다. 전술한 바와 같이, 저장 인터페이스 컨트롤러(565)로 요청을 할 때에, 저 전력 코어는 저 전력 코어에 의해서 변환 테이블을 사용하여서 페이지의 가상 어드레스로 상관된 블록들의 식별자들을 사용하여서 (예를 들어, 하나 이상의 블록(33) 및 페이지(35)와 같은) 페이지를 포함하는 스토리지 디바이스 내의 하나 이상의 블록의 검색을 요청할 수 있다.
2230에서, 저장 인터페이스 컨트롤러는 페이지가 저장될 수 있는 하나 이상의 블록을 수신할 수 있으며, 저장 인터페이스 컨트롤러가 그러한 블록(들)을 수신할 때에 그러한 블록(들)을 블록 버퍼 내에 저장할 수 있다. 2232에서, 저장 인터페이스 컨트롤러는 블록 버퍼 내의 한정된 공간일 수 있는 공간을 이제 차지하게 되는 블록들에 대해서 조치가 취해지도록 하드웨어 인터럽트를 프로세서 컴포넌트에 전송할 수 있다. 전술한 바와 같이, 이 하드웨어 인터럽트는 페이지 폴트의 발생과 연관된 제 2 인터럽트가 되며, 제 1 인터럽트는 페이지 폴트 자체를 고 기능성 코어로부터 저 전력 코어에게 알리는 것일 수 있다. 또한 전술한 바와 같이, 블록 버퍼 내에 저장된 블록들 중으로부터 데이터 및/또는 인스트럭션을 검색하는 것은 시간-민감성 태스크일 수 있는데 그 이유는 저장 인터페이스 컨트롤러는 곧 스토리지 디바이스로부터 보다 많은 블록들을 수신하고 저장할 필요가 있을 수 있기 때문이다.
2240에서, 저 전력 코어는 저장 인터페이스 컨트롤러에서 발생한 하드웨어 인터럽트를 수신한다. 2242에서, 저 전력 코어는 수신된 하드웨어 인터럽트의 식별자를 사용하여서 저장 인터페이스 컨트롤러와 연관된 핸들러 루틴의 어드레스를 검색할 수 있다. 그러나, 다시 말하자면, 컴퓨팅 디바이스의 어떠한 하드웨어 컴포넌트가 이러한 하드웨어 인터럽트를 발생시켰는지를 결정하기 위한 테스트들을 수행할 필요가 있을 수 있다. 이로써, 다시 말하자면, 다수의 핸들러 루틴에 대한 다수의 어드레스가 하드웨어 인터럽트와 연관된 식별자에 기초하여서 IDT로부터 검색될 수 있으며, 이러한 테스트들 중 하나 이상을 구현하기 위한 이러한 핸들러 루틴들 중 하나 이상의 것의 인스트럭션이, 이 하드웨어 인터럽트의 소스(본 실례에서는, 저장 인터페이스 컨트롤러)를 결정하기 위해, 저 전력 코어에 의해서 실행될 필요가 있을 수 있다.
2250에서, 저 전력 코어는 지금까지 수신되어서 블록 버퍼 내에 저장된 하나 이상의 블록 내로부터 필요한 페이지의 피스들을 검색할 수 있으며, 이어서 2252에서 그러한 피스(들)를 페이지 버퍼 내에 저장할 수 있다. 전술한 바와 같이, 저 전력 코어는 페이지의 피스들을 페이지 버퍼 내에 저장할 때에 이 페이지를 재어셈블리하기를 시도할 수 있다.
2260에서, 저 전력 코어는 고 기능성 코어에게 페이지가 페이지 버퍼 내에 저장되었다는 표시사항을 알릴 수 있다. 이와 달리, 그리고 전술한 바와 같이, 저 전력 코어는 이러한 표시사항을 고 기능성 코어에 전혀 제공하지 않을 수 있으며, 대신에, 고 기능성 코어는 반복되는 폴링(recurring polling)을 통해서 페이지 버퍼 자체 내로 페이지를 저장하는 것을 검출할 수 있다. 2262에서, 이어서, 고 기능성 코어는 해당 애플리케이션의 실행이 계속되도록 하기 위해 애플리케이션 루틴에 할당된 사용자 컨텍스트 내의 로케이션으로 페이지 버퍼 내에 저장된 페이지를 카피하도록 데이터를 카피하는 보다 효율적인 능력을 채용할 수 있다. 또는, 2262에서, 이어서, 고 기능성 코어는 페이지 버퍼가 존재하는 시스템 컨텍스트로부터의 필요한 페이지가 점유하는 페이지 버퍼의 일부를 애플리케이션 루틴의 사용자 컨텍스트 내로 재맵핑할 수 있으며, 이어서 상기 재맵핑된 페이지 내의 애플리케이션 루틴의 실행을 계속할 수 있다. 그러나, 또 다른 대안으로서, 저 전력 코어가 이러한 재맵핑을 수행할 수 있으며, 이어서 저 전력 코어는 페이지가 이렇게 재맵핑되었음을 고 기능성 코어에게 알릴 수 있으며 이로써 그것은 이제 실행될 인스트럭션을 위해 해당 사용자 컨텍스트 내에서 가용하게 된다.
도 7은 전술한 다양한 실시예를 구현하기에 적합한 예시적인 프로세싱 아키텍처(3000)의 일 실시예를 도시한다. 보다 구체적으로, 프로세싱 아키텍처(3000)(또는 이들의 변형)는 컴퓨팅 디바이스들(100, 300, 500 또는 700) 중 하나 이상의 일부로서 및/또는 컨트롤러(600)의 일부로서 구현될 수 있다. 프로세싱 아키텍처(3000)의 컴포넌트들에는 컴퓨팅 디바이스들(100, 300, 500 또는 700) 및 컨트롤러(600)의 일부로서 이전에 도시되고 기술된 컴포넌트들의 적어도 일부의 참조 부호들의 마지막 두 자리 수에 대응하는 마지막 두 자리 수를 갖는 참조 부호들이 부여되었음이 주목되어야 한다. 이는 각각의 컴포넌트들을 상관시키는 것을 도우기 위해 이루어진다.
프로세싱 아키텍처(3000)는 하나 이상의 프로세서, 멀티 코어 프로세서, 코프로세서, 메모리 유닛, 칩셋, 컨트롤러, 주변기기, 인터페이스, 오실레이터, 타이밍 디바이스, 비디오 카드, 오디오 카드, 멀티미디어 입력/출력(I/O) 컴포넌트, 파워 서플라이 등을 포함하되 이에 제한되지 않는 디지털 프로세싱에서 흔히 이용되는 다양한 엘리먼트를 포함한다. 본 출원에서 사용되는 것과 같이, "시스템" 및 "컴포넌트"라는 용어는 디지털 프로세싱이 수행되는 컴퓨팅 디바이스 엔터티로서 하드웨어, 하드웨어와 소프트웨어의 결합, 소프트웨어, 또는 실행중인 소프트웨어를 의미하며, 도시된 예시적인 프로세싱 이키텍처가 그 예로서 제공된다. 예를 들어, 컴포넌트는 프로세서 컴포넌트 상에서 동작하는 프로세스, 프로세서 컴포넌트 자체, 광학 및/또는 마그네틱 저장 매체를 이용할 수 있는 스토리지 디바이스(예를 들어, 하드 디스크 드라이브, 어레이 내의 복수의 스토리지 디바이스 등), 소프트웨어 오브젝트, 실행 가능한 일련의 명령, 실행의 스레드, 프로그램 및/또는 모든 컴퓨팅 디바이스(예를 들어, 모든 컴퓨터)일 수 있지만 이에 제한되는 것은 아니다. 예시에 의해서, 서버 상에서 동작하는 애플리케이션 및 서버 모두 컴포넌트 일 수 있다. 하나 이상의 컴포넌트는 프로세스 및/또는 실행의 스레드 내에 상주할 수 있고, 컴포넌트는 하나의 컴퓨팅 디바이스 상에 국부화 및/또는 둘 이상의 컴퓨팅 디바이스 사이에 분산될 수 있다. 또한, 컴포넌트는 동작을 조율하기 위해 다양한 형태의 통신 매체를 통해 서로 통신적으로 연결될 수 있다. 조율은 정보의 일방향 또는 쌍방향 교환과 관련될 수 있다. 예를 들어, 컴포넌트는 통신 매체를 통해 통신되는 신호의 형태로 정보를 통신할 수 있다. 정보는 하나 이상의 신호 라인에 위치하는 신호로서 구현될 수 있다. 메시지(커맨드, 상태, 어드레스 또는 데이터 메시지를 포함함)는 이러한 신호들 중 하나이거나 이러한 신호들 중 복수 개일 수 있으며, 다양한 접속들 및/또는 인터페이스들 중 임의의 것을 통해서 직렬로 또는 실질적으로 병렬로 전송될 수 있다.
도시된 바와 같이, 프로세싱 아키텍처(3000)를 구현함에 있어서, 컴퓨팅 디바이스는 적어도 프로세서 컴포넌트(950), 스토리지(960), 다른 디바이스에 대한 인터페이스(990) 및 연결부(955)를 포함한다. 설명될 바와 같이, 프로세싱 아키텍처(3000)를 구현하는 컴퓨팅 디바이스의 의도된 사용 및/또는 사용 조건을 포함하는 다양한 측면에 따라서, 그러한 컴퓨팅 디바이스는 한정하지 않고 디스플레이 인터페이스(985)와 같은 추가 컴포넌트들을 더 포함할 수 있다.
연결부(955)는 하나 이상의 버스, 포인트 투 포인트 접속, 송수신기, 버퍼, 크로스포인트 스위치 및/또는 적어도 프로세서 컴포넌트(950)를 스토리지(960)에 통신적으로 연결시키는 다른 도전체 및/또는 로직을 포함한다. 연결부(955)는 프로세서 컴포넌트(950)를 인터페이스(990), 오디오 서브시스템(970) 및 디스플레이 인터페이스(985)에(이러한 및/또는 다른 컴포넌트들 중 어느 것이 또한 존재하느냐에 따라서)더 연결시킬 수 있다. 프로세서 컴포넌트(950)가 연결부(955)에 의해 그렇게 연결되면, 프로세서 컴포넌트(950)는 프로세싱 아키텍처(3000)를 구현하는 전술한 컴퓨팅 디바이스들 중 어느 것(들)이든지 이들에 대하여서, 위에서 길게 기술한 태스크들 중 다양한 것들을 수행할 수 있다. 연결부(955)는 신호가 광학적으로 및/또는 전기적으로 전달되는 다양한 기술들 또는 기술들의 조합으로 구현될 수 있다. 또한, 연결부(955)의 적어도 일부분은 AGP(Accelerated Graphics Port), CardBus, E-ISA(Extended Industry Standard Architecture), MCA(Micro Channel Architecture), NuBus, PCI-X(Peripheral Component Interconnect(Extended), PCI-E(PCI Express), PCMCIA(Personal Computer Memory Card International Association) 버스, HyperTransport™, Quick경로 등을 포함하되 이에 제한되지 않는 다양한 산업 표준의 임의의 것에 따르는 타이밍 및/또는 프로토콜을 이용할 수 있다.
전술한 바와 같이, (프로세서 컴포넌트들(550 및 560)에 대응하는) 프로세서 컴포넌트(950)는 임의의 매우 다양한 기술 중 임의의 것을 이용하고 다수의 방법 중 임의의 것으로 물리적으로 결합된 하나 이상의 코어로 구현된 매우 다양한 상업적으로 입수가능한 프로세서들 중 임의의 것을 포함할 수 있다.
전술한 바와 같이, 스토리지(960)(스토리지(560 및 660)에 대응함)는 매우 다양한 기술들 또는 기술들의 조합에 근거하는 하나 이상의 구별되는 스토리지 디바이스로 구성될 수 있다. 보다 구체적으로, 도시된 바와 같이, 스토리지(960)는 휘발성 스토리지(961)(예를 들어, RAM 기술의 하나 이상의 형태에 근거한 솔리드 스테이트 스토리지), 비휘발성 스토리지(962)(예를 들어, 내용을 보존하기 위해 지속적인 전력의 공급을 필요로 하지 않는 솔리드 스테이트, 강자성체 또는 다른 스토리지) 및 제거 가능한 매체 스토리지(963)(예를 들어, 컴퓨팅 디바이스 간에 정보가 전달될 수 있도록 하는 제거 가능한 디스크 또는 솔리드 스테이트 메모리 카드 스토리지) 중 하나 이상을 포함할 수 있다. 다수의 구별되는 타입의 스토리지들을 가능하게 포함하는 것으로서 스토리지(960)를 이렇게 도시하는 것은 일 타입은 프로세서 컴포넌트(950)에 의한 데이터의 보다 빠른 조작을 가능하게 하는 비교적 빠른 판독 및 기록 능력을 제공함(다만, 지속적으로 전력을 요구하는 "휘발성" 기술을 이용함)에 반해, 다른 타입은 비휘발성 스토리지의 비교적 높은 밀도를 제공(다만, 비교적 느린 판독 및 기록 능력을 제공할 가능성이 높음)하는 컴퓨팅 디바이스들의 스토리지 디바이스들의 2 개의 이상의 타입들의 통상적인 사용의 인식에 따라서 된 것이다.
다른 기술을 이용한 다른 스토리지 디바이스의 종종 다른 특성을 고려하면, 이러한 다른 스토리지 디바이스가 다른 인터페이스를 통해 그들의 다른 스토리지 디바이스에 연결된 다른 스토리지 컨트롤러를 통해 컴퓨팅 디바이스의 다른 부분에 연결되는 것은 자명하다. 예시적으로, 휘발성 스토리지(961)가 제공되고, 이것은 RAM 기술에 근거하며, 휘발성 스토리지(961)는 아마도 행 및 열 어드레싱을 이용하는 휘발성 스토리지(961)에 적절한 인터페이스를 제공하는 스토리지 컨트롤러(965a)를 통해 연결부(955)에 통신적으로 연결될 수 있으며, 스토리지 컨트롤러(965a)는 휘발성 스토리지(961) 내에 저장된 정보를 보존하도록 하는 행 리프레싱 및/또는 다른 유지 태스크를 수행할 수 있다. 다른 예로서, 비휘발성 스토리지(962)가 제공되고, 이것은 하나 이상의 강자성체 및/또는 솔리드 스테이트 디스크 드라이브를 포함하며, 비휘발성 스토리지(962)는 아마도 정보의 블록 및/또는 실린더 및 섹터의 어드레싱을 이용하는 비휘발성 스토리지(962)에 적절한 인터페이스를 제공하는 스토리지 컨트롤러(965b)를 통해 연결부(965)에 통신적으로 연결될 수 있다. 또 다른 예로서, 제거 가능한 매체 스토리지(963)가 제공되며, 이것은 유형의 머신 판독 가능한 저장 매체(969)의 하나 이상의 피스를 이용하는 하나 이상의 광학 및/또는 솔리드 스테이트 디스크 드라이브를 포함하고, 제거 가능한 매체 스토리지(963)는 아마도 정보의 블록의 어드레싱을 이용하는 제거 가능한 매체 스토리지(963)에 적절한 인터페이스를 제공하는 스토리지 컨트롤러(965c)를 통해 연결부(955)에 통신적으로 연결될 수 있으며, 스토리지 컨트롤러(965c)는 판독, 삭제 및 기록 동작을 유형의 머신 판독 가능한 저장 매체(969)의 수명을 연장하는 것에 특정한 방식으로 조정할 수 있다.
휘발성 스토리지(961) 또는 비휘발성 스토리지(962)의 하나 또는 다른 하나는 각각이 기반하는 기술에 따라 프로세서 컴포넌트(950)에 의해 실행 가능한 일련의 명령을 포함하는 루틴이 저장된 머신 판독 가능한 저장 매체의 형태로 만들어진 제품을 포함할 수 있다. 예시적으로, 비휘발성 스토리지(962)는 강자성체 기반의 디스크 드라이브(예를 들어, 소위 "하드 드라이브")를 포함하고, 이들 각 디스크 드라이브는 일반적으로 플로피 디스켓과 같은 저장 매체와 비슷한 방식으로, 일련의 명령과 같은 정보를 저장하기 위해 다양한 패턴으로 자기적으로 반응하는 입자의 코팅이 증착되고 자기적으로 배향되는 하나 이상의 회전 플래터를 이용한다. 다른 예로서, 비휘발성 스토리지(962)는 컴팩트 플래시 카드와 비슷한 방식으로 일련의 명령과 같은 정보를 저장하는 솔리드 스테이트 스토리지 디바이스의 뱅크로 구성될 수 있다. 또한, 실행 가능한 루틴 및/또는 데이터를 저장하기 위해 다른 시점에 컴퓨팅 디바이스에 다른 형태의 스토리지 디바이스를 이용하는 것은 통상적이다. 따라서, 프로세서 컴포넌트(950)에 의해 실행되는 일련의 명령을 포함하는 루틴은 초기에는 유형의 머신 판독 가능한 저장 매체(969)에 저장될 수 있고, 해당 루틴이 실행될 때 프로세서 컴포넌트(950)에 의한 보다 빠른 액세스를 가능하게 하는 유형의 머신 판독 가능한 저장 매체(969) 및/또는 휘발성 스토리지(961)가 지속적으로 필요하지는 않은 장기 스토리지로서 비휘발성 스토리지(962)에 해당 루틴을 복사하는데 후속하여 제거 가능한 매체 스토리지(963)가 이용될 수 있다.
전술한 바와 같이, 인터페이스(990)(가능하게는 인터페이스(590)에 대응함)는 컴퓨팅 디바이스를 하나 이상의 다른 디바이스에 통신적으로 연결하는데 이용될 수 있는 다양한 통신 기술 중 임의의 것에 대응하는 임의의 다양한 시그널링 기술을 이용할 수 있다. 또한, 유선 또는 무선 신호의 하나 또는 모두의 다양한 형태가 프로세서 컴포넌트(950)가 가능하게는 네트워크(예를 들어, 네트워크(999)) 또는 네트워크들의 상호접속된 세트를 통해 입력/출력 디바이스(예를 들어, 도시된 키보드(920) 또는 프린터(925)) 및/또는 다른 컴퓨팅 디바이스와 상호 작용하도록 하기 위해 이용될 수 있다. 어느 컴퓨팅 디바이스에 의해 종종 지원되어야 하는 복수의 시그널링 및/또는 프로토콜의 완전히 종종 다른 특성을 인식하여, 인터페이스(990)는 복수의 다른 인터페이스 컨트롤러(995a, 995b, 995c)를 포함하는 것으로 도시되었다. 인터페이스 컨트롤러(995a)는 도시된 키보드(920)와 같은 사용자 입력 디바이스로부터 직렬적으로 전달된 메시지를 수신하기 위해 임의의 다양한 형태의 유선 디지털 시리얼 인터페이스 또는 무선 주파수 무선 인터페이스를 이용할 수 있다. 인터페이스 컨트롤러(995b)는 도시된 네트워크(999)(아마도 하나 이상의 링크, 더 작은 네트워크 또는 아마도 인터넷으로 구성된 네트워크)를 통해 다른 컴퓨팅 디바이스에 액세스하기 위해 임의의 다양한 케이블 기반 또는 무선 신호, 타이밍 및/또는 프로토콜을 이용할 수 있다. 인터페이스(995c)는 도시된 프린터(925)로 데이터를 전달하기 위해 직렬 또는 병렬 신호 전달 중 하나를 사용할 수 있는 임의의 다양한 전기 전도적인 케이블을 이용할 수 있다. 인터페이스(990)의 하나 이상의 인터페이스 컨트롤러를 통해 통신적으로 연결될 수 있는 디바이스의 다른 예로는, 사람들이 만들 수 있는 음성 또는 다른 사운드들을 통해서 이들에 의해서 시그널링되는 명령들 및/또는 데이터를 수용하도록 사람들의 사운드들을 모니터링하는 마이크로폰, 리모컨, 스타일러스 펜, 카드 리더기, 지문 인식기, 가상 현실 상호 작용 장갑, 그래픽 입력 태블릿, 조이스틱, 다른 키보드, 레티나 스캐너, 터치 스크린의 터치 입력 컴포넌트, 트랙볼, 다양한 센서, 제스처들 및/또는 얼굴 표정들을 통해서 사람들에 의해서 시그널링된 명령들 및/또는 데이터를 수용하도록 사람들의 움직임을 모니터링하기 위한 카메라 또는 카메라 어레이, 레이저 프린터, 잉크젯 프린터, 기계적 로봇, 밀링 머신 등이 있으나 이에 제한되는 것은 아니다.
컴퓨팅 디바이스는 통신적으로 디스플레이(예를 들어, 도시된 예시적인 디스플레이(980)와 연결(또는 아마도 실제로는 포함하는데)되는데, 프로세싱 아키텍처(3000)를 구현하는 이러한 컴퓨팅 디바이스는 디스플레이 인터페이스(985)를 또한 포함할 수 있다. 보다 일반적인 형태의 인터페이스가 디스플레이와의 통신 연결에 이용될 수 있지만, 디스플레이 상에 컨텐츠를 다양한 형태로 시각적으로 디스플레이하는데 종종 필요한 다소 특수한 추가 프로세싱 및 사용되는 케이블 기반의 인터페이스의 다소 특수한 본질로 인해, 별도의 디스플레이 인터페이스를 제공하는 것이 바람직한 경우가 있다. 디스플레이(980)의 통신 연결에 있어서 디스플레이 인터페이스(985)가 이용하는 유선 및/또는 무선 시그널링 기술은 다양한 아날로그 비디오 인터페이스, DVI(Digital Video Interface), 디스플레이포트(DisplayPort) 등을 포함하되 이에 제한되지 않는 임의의 다양한 산업 표준에 따르는 시그널링 및/또는 프로토콜을 이용할 수 있다.
보다 일반적으로, 여기에서 기술 및 묘사되는 컴퓨팅 디바이스(200, 700)의 다양한 엘리먼트는 다양한 하드웨어 엘리먼트, 소프트웨어 엘리먼트, 또는 이들의 조합을 포함할 수 있다. 하드웨어 엘리먼트의 예는, 디바이스, 로직 디바이스, 컴포넌트, 프로세서, 마이크로 프로세서, 회로, 프로세서 컴포넌트, 회로 엘리먼트(예를 들어, 트랜지스터, 저항, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuits), PLD(programmable logic devices), DSP(digital signal processor), FPGA(field programmable gate array), 메모리 유닛, 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어 엘리먼트의 예는, 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 소프트웨어 개발 프로그램, 머신 프로그램, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 펑션, 방법, 프로시져, 소프트웨어 인터페이스, API(application program interface), 명령 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 조합을 포함할 수 있다. 그러나, 실시예를 하드웨어 엘리먼트 및/또는 소프트웨어 엘리먼트를 이용하여 구현할 것인지를 결정하는 것은 원하는 계산 속도, 파워의 정도, 열 저항, 프로세싱 사이클 버짓, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제한 요소와 같은 다양한 요인에 따라 주어진 구현에 바람직하도록 변경될 수 있다.
일부 실시예들은 "하나의 실시예" 또는 "일 실시예"라는 표현을 그 파생어와 함께 사용하여 기재될 수 있다. 이러한 용어는 실시예와 관련하여 기재된 특정의 구성, 구조 또는 특징이 적어도 하나의 실시예에 포함되는 것을 의미한다. 명세서의 여러 곳에서 "하나의 실시예에서"라는 구절이 사용되지만, 이것은 반드시 동일한 실시예를 가리키는 것은 아니다. 또한, 일부 실시예에는 "커플링된" 및 "연결된"이라는 표현을 그 파생어와 함께 기재될 수 있다. 이들 용어는 반드시 서로 동의어로서 의도된 것은 아니다. 예를 들어, 일부 실시예는 둘 이상의 엘리먼트가 서로 물리적 또는 전기적으로 직접 접촉되어 있는 것을 나타내기 위해 "연결된" 및/또는 "커플링된"이라는 용어를 사용하여 기재될 수 있다. 그러나, "커플링된"이라는 용어는 둘 이상의 엘리먼트가 서로 직접 접촉하지 않지만 서로 협력하거나 상호 작용하고 있는 것을 의미할 수 있다. 또한, 상이한 실시예들로부터의 양태들 또는 요소들은 조합될 수 있다.
본 명세서의 요약서는 독자가 기술적 개시의 본질을 빠르게 확인할 수 있도록 하기 위해 제공되는 것임이 강조된다. 요약서는 청구항의 범위 또는 의미를 해석 또는 제한하기 위해 사용되지 않을 것이라는 점을 이해하는 전제로 제출된다. 또한, 전술한 발명의 상세한 설명에서 본 개시를 간소화하기 위해 다양한 특징이 단일의 실시예로 함께 그룹화되어 있음을 알 수 있다. 이 개시의 방법은 청구된 실시예가 각 청구항에서 명시적으로 기재되기 보다는 부가적인 특징을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 그 보다는, 후술하는 청구항에서 보이는 것과 같이, 발명의 대상은 개시된 단일 실시예의 모든 특징의 일부에 존재한다. 따라서, 후술하는 청구항은 발명의 상세한 설명에 포함되며, 각 청구항은 별개의 실시예로서 그 자체가 존재하는 상태로 존재한다. 첨부하는 청구항에서, "포함하는(including)" 및 "여기서(in which)"라는 용어 각각은 "포함하는(comprising)" 및 "여기서(wherein)"와 동의어로서 사용된다. 또한, "제 1", "제 2", "제 3" 등의 용어는 단순한 레이블로서 사용될 뿐 그들의 대상에 대한 순서로서의 요구사항을 부과하는 의도는 없다.
전술한 것은 개시된 아키텍처의 예를 포함한다. 물론, 모든 인식 가능한 컴포넌트 및/또는 방법론의 조합을 기재하는 것은 불가능하지만, 당업자는 보다 많은 조합 및 치환이 가능함을 인식할 수 있다. 따라서, 신규한 아키텍처는 첨부하는 청구항의 정신 및 범위 내에 포함되는 그러한 모든 교환, 변경 및 변형을 포함하는 것을 의도한다. 자세한 개시는 다른 실시예와 관련된 예시를 제공하는 것에 의존한다. 아래 제시되는 실례들은 제한하는 것을 의도하지 않는다.
실례 1에서, 장치는, 프로세서 컴포넌트의 저 전력 코어(lower power core)로서, 상기 저 전력 코어는 제 1 인스트럭션 파이프라인(instruction pipeline)을 포함하며, 상기 저 전력 코어는 인터럽트(interrupt)를 핸들링하는 제 1 태스크를 수행하기 위해, 상기 제 1 인스트럭션 파이프라인 내에서의 실행의 제 1 플로우를 중지시키며 상기 제 1 인스트럭션 파이프라인 내에서의 핸들러 루틴(handler routine)의 인스트럭션을 실행시키는, 상기 저 전력 코어; 및 상기 프로세서 컴포넌트의 고 기능성 코어(higher function core)로서, 상기 고 기능성 코어는 제 2 인스트럭션 파이프라인을 포함하며, 상기 고 기능성 코어는, 상기 제 1 태스크의 수행 이후에, 상기 제 2 인스트럭션 파이프라인 내에서의 실행의 제 2 플로우를 따르도록 상기 제 2 인스트럭션 파이프라인에서 상기 인터럽트를 핸들링하는 제 2 태스크의 인스트럭션의 실행을 스케줄링하는, 상기 고 기능성 코어를 포함하며, 상기 제 1 태스크는 상기 제 2 태스크보다 시간-민감성(time-sensitive)이다.
실례 1의 논의 대상을 포함하는 실례 2에서, 상기 저 전력 코어는 상기 고 기능성 코어보다 낮은 레이트로 전력을 소모할 수 있다.
실례 1 및 실례 2 중 임의의 실례의 논의 대상을 포함하는 실례 3에서, 상기 제 2 인스트럭션 파이프라인은 상기 제 1 인스트럭션 파이프라인보다 인스트럭션 실행의 스테이지들의 보다 큰 정량 또는 상기 제 1 인스트럭션 파이프라인에 의해서 지원되지 않은 인스트럭션의 무순서 실행을 수행하기 위한 능력 중 적어도 하나를 포함할 수 있다.
실례 1 내지 실례 3 중 임의의 실례의 논의 대상을 포함하는 실례 4에서, 상기 저 전력 코어는 제 1 캐시를 포함할 수 있으며, 상기 고 기능성 코어는 제 2 캐시를 포함할 수 있으며, 상기 제 2 캐시는 상기 제 1 캐시보다 큰 정량의 캐시 라인들 또는 상기 제 1 캐시보다 큰 세트 결합성(associativity) 중 적어도 하나를 포함한다.
실례 1 내지 실례 4 중 임의의 실례의 논의 대상을 포함하는 실례 5에서, 장치는 상기 프로세서 컴포넌트의 자원들에 대한 요구 수준에 기초하여서 적어도 제 1 모드 및 제 2 모드 중 하나로 상기 프로세서 컴포넌트를 동적으로 두는 모드 컨트롤러를 포함할 수 있으며, 상기 제 1 모드에서 상기 저 전력 코어 및 상기 고 기능성 코어 양자가 인스트럭션을 실행하도록 동작되며, 상기 제 2 모드에서 상기 저 전력 코어는 인스트럭션을 실행시키도록 동작하지만, 상기 고 기능성 코어는 인스트럭션을 실행시키도록 동작하지 않는다.
실례 1 내지 실례 5 중 임의의 실례의 논의 대상을 포함하는 실례 6에서, 상기 모드 컨트롤러는 상기 프로세서 컴포넌트가 상기 제 1 모드 또는 상기 제 2 모드 중 어느 모드에 있는지에 따라서 상기 인터럽트를 향하게 할, 상기 저 전력 코어 및 고 기능성 코어 중 하나를 선택할 수 있다.
실례 1 내지 실례 6 중 임의의 실례의 논의 대상을 포함하는 실례 7에서, 상기 인터럽트는 하드웨어 인터럽트를 포함할 수 있으며, 상기 장치는 상기 프로세서 컴포넌트에 연결된 인터럽트 라우터를 포함할 수 있으며, 상기 인터럽트 라우터는 인터럽트 라우터에 의한 상기 하드웨어 인터럽트의 수신을 알리는 표시사항을 상기 모드 컨트롤러에 의해서 선택된 상기 저 전력 코어 및 고 기능성 코어 중 하나로 릴레이할 수 있다.
실례 1 내지 실례 7 중 임의의 실례의 논의 대상을 포함하는 실례 8에서, 상기 장치는 네트워크 패킷 버퍼; 상기 프로세서 컴포넌트를 네트워크에 연결하고 상기 네트워크로부터 패킷을 수신하는 것에 응답하여서, 상기 네트워크 패킷 버퍼 내에 상기 패킷을 저장하고, 상기 인터럽트를 상기 프로세서 컴포넌트에 전송하는, 네트워크 인터페이스 컨트롤러(NIC); 및 상기 NIC로부터의 상기 인터럽트의 전송을 수신하고 상기 인터럽트의 소스로서의 상기 NIC의 식별자와 함께 상기 인터럽트의 수신을 알리는 표시사항을 상기 프로세서 컴포넌트에 릴레이(relay)하는, 인터럽트 라우터를 포함할 수 있다.
실례 1 내지 실례 8 중 임의의 실례의 논의 대상을 포함하는 실례 9에서, 상기 장치는 인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)을 포함할 수 있으며, 상기 저 전력 코어는 상기 식별자를 사용하여서 상기 IDT로부터 다수의 핸들러 루틴의 다수의 어드레스를 검색할 수 있으며, 상기 다수의 핸들러 루틴은 상기 핸들러 루틴을 포함할 수 있으며, 상기 다수의 어드레스는 상기 핸들러 루틴의 어드레스를 포함할 수 있으며, 상기 저 전력 컴포넌트는 상기 다수의 어드레스의 각 어드레스를 사용할 수 있으며 상기 인터럽트의 소스로서 NIC를 식별하기 위해 상기 제 1 인스트럭션 파이프라인 내에서의 상기 다수의 핸들러 루틴의 각 핸들러 루틴의 인스트럭션을 실행할 수 있다.
실례 1 내지 실례 9 중 임의의 실례의 논의 대상을 포함하는 실례 10에서, 상기 저 전력 코어는, 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 네트워크 패킷 버퍼 내에 저장된 다수의 패킷 각각으로부터 식별자를 검색할 수 있으며, 상기 식별자는 상기 다수의 패킷의 각각의 패킷이 향하는 실행의 플로우를 표시할 수 있다.
실례 1 내지 실례 10 중 임의의 실례의 논의 대상을 포함하는 실례 11에서, 상기 저 전력 코어는, 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 실행의 목적지 플로우와 연관된 상기 다수의 패킷 중 하나 이상의 패킷을 열거하는 큐(queue)를 생성하고 상기 큐를 네트워크 큐 버퍼 내에 저장할 수 있다.
실례 1 내지 실례 11 중 임의의 실례의 논의 대상을 포함하는 실례 12에서, 상기 장치는 오퍼레이팅 시스템(operating system)의 데이터 전달 컴포넌트를 포함하며, 상기 데이터 전달 컴포넌트는 상기 고 기능성 코어에 의해서 실행되어서, 상기 제 2 태스크로서, 상기 큐를 검색하고, 상기 큐 내에 열거된 상기 하나 이상의 패킷으로부터의 데이터를 상기 네트워크 패킷 버퍼로부터, 상기 오퍼레이팅 시스템의 시스템 컨텍스트(system context)와는 별개로 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 카피하며, 상기 애플리케이션 루틴은 상기 실행의 목적지 플로우를 포함할 수 있다.
실례 1 내지 실례 12 중 임의의 실례의 논의 대상을 포함하는 실례 13에서, 상기 장치는 상기 고 기능성 코어에 의한 실행을 위해 오퍼레이팅 시스템의 페이지 관리기 컴포넌트, 및 상기 저 전력 코어에 의한 실행을 위한 페이지 폴트 핸들러 루틴을 포함할 수 있으며, 상기 페이지 관리기 컴포넌트는 고속 스토리지 내의 애플리케이션 루틴의 인스트럭션의 페이지들을 실행할 고 기능성 코어에 제공하며, 상기 페이지 폴트 핸들러 루틴은 상기 고 기능성 코어에 의해서 실행될 상기 애플리케이션 루틴의 인스트럭션의 다음 페이지가 저속 스토리지 디바이스에 저장되고 상기 고속 스토리지에는 저장되지 않은 페이지 폴트에 대해서 응답할 수 있다.
실례 1 내지 실례 13 중 임의의 실례의 논의 대상을 포함하는 실례 14에서, 상기 페이지 폴트는 상기 고 기능성 코어가 상기 고속 스토리지로부터 상기 다음 페이지의 인스트럭션을 검색하려고 하는 시도에서의 실패의 결과로서 상기 고 기능성 코어에 의해서 검출될 수 있다.
실례 1 내지 실례 14 중 임의의 실례의 논의 대상을 포함하는 실례 15에서, 상기 장치는 상기 프로세서 컴포넌트를 상기 저속 스토리지 디바이스에 연결하는 저장 인터페이스 컨트롤러를 포함할 수 있으며, 상기 저 전력 코어는 상기 페이지 폴트 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 저속 스토리지 디바이스로부터 상기 다음 페이지의 검색을 요청할 수 있다.
실례 1 내지 실례 15 중 임의의 실례의 논의 대상을 포함하는 실례 16에서, 상기 장치는 블록 버퍼; 및 상기 저장 인터페이스 컨트롤러로부터 상기 인터럽트의 전송을 수신하고 상기 인터럽트의 소스로서의 상기 저장 인터페이스 컨트롤러의 식별자와 함께 상기 인터럽트의 수신을 알리는 표시사항을 상기 프로세서 컴포넌트에 릴레이하는 인터럽트 라우터를 포함할 수 있으며, 상기 저장 인터페이스 컨트롤러는 상기 저속 스토리지 디바이스로부터 데이터의 블록을 수신하는 것에 응답하여서 상기 인터럽트를 상기 인터럽트 라우터에 전송하고 상기 데이터의 블록을 상기 블록 버퍼 내에 저장하며, 상기 데이터의 블록은 상기 다음 페이지의 일부를 포함할 수 있다.
실례 1 내지 실례 16 중 임의의 실례의 논의 대상을 포함하는 실례 17에서, 상기 장치는 인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)을 포함할 수 있으며, 상기 저 전력 코어는 상기 식별자를 사용하여서 다수의 핸들러 루틴의 다수의 어드레스를 상기 IDT로부터 검색할 수 있으며, 상기 다수의 핸들러 루틴은 상기 핸들러 루틴을 포함할 수 있으며, 상기 다수의 어드레스는 상기 핸들러 루틴의 어드레스를 포함할 수 있으며, 상기 저 전력 컴포넌트는 상기 다수의 어드레스의 각 어드레스를 사용하여서 상기 인터럽트의 소스로서 상기 저장 인터페이스 컨트롤러를 식별하기 위해 상기 제 1 인스트럭션 파이프라인 내에서의 상기 다수의 핸들러 루틴의 각 핸들러 루틴의 인스트럭션을 실행할 수 있다.
실례 1 내지 실례 17 중 임의의 실례의 논의 대상을 포함하는 실례 18에서, 상기 저 전력 코어는, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 블록 버퍼 내에 저장된 다수의 블록으로부터 데이터의 다수의 피스를 검색하고 상기 다음 페이지를 재생성하는 순서로 상기 데이터의 다수의 블록을 상기 페이지 버퍼 내에 저장할 수 있으며, 상기 데이터의 다수의 블록은 상기 데이터의 블록을 포함할 수 있다.
실례 1 내지 실례 18 중 임의의 실례의 논의 대상을 포함하는 실례 19에서, 상기 페이지 관리기는 상기 저 전력 코어에 의해서 상기 페이지 버퍼 내에서 다음 페이지의 재생성 이후에 상기 제 2 태스크로서 오퍼레이팅 시스템의 시스템 컨텍스트와는 별도의 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 상기 페이지 버퍼로부터의 상기 다음 페이지를 카피한다.
실례 1 내지 실례 19 중 임의의 실례의 논의 대상을 포함하는 실례 20에서, 상기 페이지 관리기는 상기 저 전력 코어에 의해서 상기 페이지 버퍼 내에서의 상기 다음 페이지의 재생성 후에, 상기 제 2 태스크로서 오퍼레이팅 시스템의 시스템 컨텍스트 내의 페이지 버퍼로부터의 다음 페이지를 애플리케이션 루틴의 사용자 컨텍스트로 재맵핑할 수 있다.
실례 1 내지 실례 20 중 임의의 실례의 논의 대상을 포함하는 실례 21에서, 상기 저 전력 코어는 상기 오퍼레이팅 시스템의 시스템 컨텍스트 내의 상기 페이지 버퍼로부터의 상기 다음 페이지를 상기 애플리케이션 루틴의 사용자 컨텍스트로 재맵핑할 수 있으며, 상기 고 기능성 코어는 상기 저 전력 코어에 의한 상기 다음 페이지의 재맵핑 후에, 상기 다음 페이지로 점프하여서 상기 애플리케이션 루틴의 실행을 계속할 수 있다.
실례 22에서, 컴퓨터 구현 방법은 인터럽트에 응답하여서 프로세서 컴포넌트의 저 전력 코어의 제 1 인스트럭션 파이프라인 내에서의 실행의 제 1 플로우를 중지시키는 단계; 상기 저 전력 코어에 의해서, 상기 인터럽트에 응답하여서, 핸들러 루틴의 어드레스를 검색하는 단계; 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행시켜서 상기 인터럽트를 핸들링하는 제 1 태스크를 수행하는 단계; 및 상기 저 전력 코어에 의한 상기 제 1 태스크의 수행 이후에, 상기 프로세서 컴포넌트의 고 기능성 코어에 의해서, 상기 고 기능성 코어의 제 2 인스트럭션 파이프라인 내에서의 실행의 제 2 플로우를 따르도록 상기 제 2 인스트럭션 파이프라인에서 상기 인터럽트를 핸들링하는 제 2 태스크의 인스트럭션의 실행을 스케줄링하는 단계를 포함하며, 상기 제 1 태스크는 상기 제 2 태스크보다 시간-민감성이다.
실례 22의 논의 대상을 포함하는 실례 23에서, 이 방법은 상기 프로세서 컴포넌트를 상기 프로세서 컴포넌트의 자원들에 대한 요구 수준에 기초하여서 적어도 제 1 모드 및 제 2 모드 중 하나로 동적으로 두는(placing) 단계로서, 상기 제 1 모드에서는 상기 저 전력 코어 및 상기 고 기능성 코어 모두가 인스트럭션을 실행하도록 동작되며, 상기 제 2 모드에서는 상기 저 전력 코어는 인스트럭션을 실행하도록 동작되지만 상기 고 기능성 코어는 인스트럭션을 실행하도록 동작되지 않는, 상기 동적으로 두는 단계; 및 상기 프로세서 컴포넌트가 상기 제 1 모드 또는 상기 제 2 모드 중 어느 모드에 있는지에 기초하여서 상기 인터럽트를 향하게 할 상기 저 전력 코어 또는 상기 고 기능성 코어를 선택하는 단계를 포함할 수 있다.
실례 22 내지 실례 23 중 임의의 실례의 논의 대상을 포함하는 실례 24에서, 상기 방법은 상기 저 전력 코어에서, 상기 프로세서 컴포넌트를 네트워크에 연결하는 네트워크 인터페이스 컨트롤러(NIC)로부터 상기 인터럽트의 전송을, 상기 인터럽트의 소스로서의 상기 NIC의 식별자와 함께 수신하는 단계를 포함할 수 있으며, 상기 NIC는 상기 네트워크로부터 패킷을 수신하는 것에 응답하여서 상기 인터럽트를 전송한다.
실례 22 내지 실례 24 중 임의의 실례의 논의 대상을 포함하는 실례 25에서, 상기 방법은 상기 저 전력 코어에 의해서 상기 식별자를 사용하여서 인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)로부터 다수의 핸들러 루틴의 다수의 어드레스를 검색하는 단계를 포함할 수 있으며, 상기 다수의 핸들러 루틴은 상기 핸들러 루틴을 포함할 수 있으며, 상기 다수의 어드레스는 상기 핸들러 루틴의 어드레스를 포함할 수 있으며, 상기 방법은, 상기 인터럽트의 소스로서 NIC를 식별하기 위해 상기 다수의 어드레스에서 상기 다수의 핸들러 루틴의 각 핸들러 루틴의 인스트럭션을 상기 제 1 인스트럭션 파이프라인 내에서 실행하는 단계를 포함할 수 있다.
실례 22 내지 실례 25 중 임의의 실례의 논의 대상을 포함하는 실례 26에서, 상기 방법은 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 네트워크 패킷 버퍼 내에 저장된 다수의 패킷 각각으로부터 식별자를 검색하는 단계를 포함할 수 있으며, 상기 식별자는 상기 다수의 패킷 중 각 패킷이 향하는 실행의 플로우를 표시할 수 있다.
실례 22 내지 실례 26 중 임의의 실례의 논의 대상을 포함하는 실례 27에서, 상기 방법은 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 실행의 목적지 플로우와 연관된 상기 다수의 패킷 중 하나 이상의 패킷을 열거하는 큐(queue)를 생성하는 단계; 및 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 큐를 네트워크 큐 버퍼 내에 저장하는 단계를 포함할 수 있다.
실례 22 내지 실례 27 중 임의의 실례의 논의 대상을 포함하는 실례 28에서, 상기 방법은, 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 큐를 검색하는 단계; 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 큐 내에 열거된 상기 하나 이상의 패킷으로부터의 데이터를 상기 네트워크 패킷 버퍼로부터, 상기 오퍼레이팅 시스템의 시스템 컨텍스트(system context)와는 별개로 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 카피하는 단계를 포함할 수 있으며, 상기 애플리케이션 루틴은 상기 실행의 목적지 플로우를 포함할 수 있다.
실례 22 내지 실례 28 중 임의의 실례의 논의 대상을 포함하는 실례 29에서, 상기 방법은, 상기 제 2 인스트럭션 파이프라인 내에서 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인에서 실행될 상기 애플리케이션 루틴의 인스트럭션의 페이지들을 고속 스토리지로부터 검색하는 단계; 상기 제 2 인스트럭션 파이프라인 내에서 상기 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인에서 실행될 상기 애플리케이션 루틴의 인스트럭션의 다음 페이지가 상기 고속 스토리지가 아니라 저속 스토리지 내에 저장된, 페이지 폴트(page falut)를 검출하는 단계; 및 상기 제 1 인스트럭션 파이프라인 내에서 페이지 폴트 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 페이지 폴트에 응답하여서, 상기 프로세서 컴포넌트를 상기 저속 스토리지 디바이스에 연결시키는 저장 인터페이스 컨트롤러로부터, 상기 저속 스토리지 디바이스로부터 상기 다음 페이지를 검색하라는 요청을 하는 단계를 포함할 수 있다.
실례 22 내지 실례 29 중 임의의 실례의 논의 대상을 포함하는 실례 30에서, 상기 방법은, 상기 저 전력 코어에서, 상기 저장 인터페이스 컨트롤러로부터의 인터럽트의 전송을, 상기 인터럽트의 소스로서의 상기 저장 인터페이스 컨트롤러의 식별자와 함께 수신하는 단계를 포함할 수 있으며, 상기 저장 인터페이스 컨트롤러는 상기 저속 스토리지 디바이스로부터 데이터의 블록을 수신하는 것에 응답하여서 상기 인터럽트를 전송할 수 있다.
실례 22 내지 실례 30 중 임의의 실례의 논의 대상을 포함하는 실례 31에서, 상기 방법은, 상기 저 전력 코어에 의해서 상기 식별자를 사용하여서 인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)로부터 다수의 핸들러 루틴의 다수의 어드레스를 검색하는 단계를 포함할 수 있으며, 상기 다수의 핸들러 루틴은 상기 핸들러 루틴을 포함할 수 있으며, 상기 다수의 어드레스는 상기 핸들러 루틴의 어드레스를 포함할 수 있으며, 상기 방법은, 상기 인터럽트의 소스로서 상기 저장 인터페이스 컨트롤러를 식별하기 위해 상기 다수의 어드레스에서 상기 다수의 핸들러 루틴의 각 핸들러 루틴의 인스트럭션을 상기 제 1 인스트럭션 파이프라인 내에서 실행하는 단계를 포함할 수 있다.
실례 22 내지 실례 31 중 임의의 실례의 논의 대상을 포함하는 실례 32에서, 상기 방법은, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 저장 인터페이스 컨트롤러에 의해서 블록 버퍼 내에 저장된 데이터의 다수의 블록으로부터 데이터의 다수의 피스를 검색하는 단계; 및 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 다음 페이지를 재생성하는 순서로 페이지 버퍼 내에 상기 데이터의 다수의 블록을 저장하는 단계를 포함할 수 있으며, 상기 데이터의 다수의 블록은 상기 데이터의 블록을 포함할 수 있다.
실례 22 내지 실례 32 중 임의의 실례의 논의 대상을 포함하는 실례 33에서, 상기 방법은, 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 페이지 버퍼 내에서 상기 다음 페이지의 재생성 이후에 상기 제 2 태스크로서 상기 페이지 버퍼로부터의 상기 다음 페이지를, 오퍼레이팅 시스템의 시스템 컨텍스트와는 별도로 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 카피하는 단계를 포함할 수 있다.
실례 22 내지 실례 33 중 임의의 실례의 논의 대상을 포함하는 실례 34에서, 상기 방법은, 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 페이지 버퍼 내의 상기 다음 페이지의 재생성 이후의 상기 제 2 태스크로서, 상기 오퍼레이팅 시스템의 시스템 컨텍스트 내의 상기 페이지 버퍼로부터의 상기 다음 페이지를 상기 애플리케이션 루틴 사용자 컨텍스트로 재맵핑하는 단계를 포함할 수 있다.
실례 35에서, 장치는 프로세서 컴포넌트의 저 전력 코어로서, 상기 저 전력 코어는 제 1 인스트럭션 파이프라인을 포함하며, 상기 저 전력 코어는 페이지 폴트를 핸들링하는 제 1 태스크를 수행하기 위해, 상기 제 1 인스트럭션 파이프라인의 실행의 제 1 플로우를 중지시키고 상기 제 1 인스트럭션 파이프라인 내에서 페이지 폴트 핸들러 루틴(page falut handler routine)의 인스트럭션을 실행시키는, 상기 저 전력 코어; 및 상기 프로세서 컴포넌트의 고 기능성 코어로서, 제 2 인스트럭션 파이프라인을 포함하는, 상기 고 기능성 코어를 포함하며, 상기 고 기능성 코어는 상기 제 2 인스트럭션 파이프라인 내에서 고속 스토리지로부터의 애플리케이션 루틴의 인스트럭션을 실행하고, 상기 고 기능성 코어에 의해서 실행될 상기 애플리케이션 루틴의 인스트럭션의 다음 페이지가 상기 고속 스토리지가 아니라 저속 스토리지 디바이스에 저장된 것에 응답하여서, 페이지 폴트의 표시사항을 상기 저 전력 코어에 제공할 수 있다.
실례 35의 논의 대상을 포함하는 실례 36에서, 상기 저 전력 코어는 상기 고 기능성 코어보다 낮은 레이트로 전력을 소모할 수 있다.
실례 35 및 실례 36 중 임의의 실례의 논의 대상을 포함하는 실례 37에서, 상기 제 2 인스트럭션 파이프라인은 상기 제 1 인스트럭션 파이프라인보다 인스트럭션 실행의 스테이지들의 보다 큰 정량 또는 상기 제 1 인스트럭션 파이프라인에 의해서 지원되지 않은 인스트럭션의 무순서 실행을 수행하기 위한 능력 중 적어도 하나를 포함할 수 있다.
실례 35 내지 실례 37 중 임의의 실례의 논의 대상을 포함하는 실례 38에서, 상기 저 전력 코어는 제 1 캐시를 포함할 수 있으며, 상기 고 기능성 코어는 제 2 캐시를 포함할 수 있으며, 상기 제 2 캐시는 상기 제 1 캐시보다 큰 정량의 캐시 라인들 또는 상기 제 1 캐시보다 큰 세트 결합성(associativity) 중 적어도 하나를 포함한다.
실례 35 내지 실례 38 중 임의의 실례의 논의 대상을 포함하는 실례 39에서, 장치는 상기 프로세서 컴포넌트를 상기 저속 스토리지 디바이스에 연결하는 저장 인터페이스 컨트롤러를 포함하며, 상기 저 전력 코어는 상기 페이지 폴트 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 저속 스토리지 디바이스로부터 상기 다음 페이지의 검색을 요청할 수 있다.
실례 35 내지 실례 39 중 임의의 실례의 논의 대상을 포함하는 실례 40에서, 장치는 블록 버퍼; 및 상기 저장 인터페이스 컨트롤러로부터 상기 인터럽트의 전송을 수신하고 상기 인터럽트의 소스로서의 상기 저장 인터페이스 컨트롤러의 식별자와 함께 상기 인터럽트의 수신을 알리는 표시사항을 상기 프로세서 컴포넌트에 릴레이하는 인터럽트 라우터를 포함할 수 있으며, 상기 저장 인터페이스 컨트롤러는 상기 저속 스토리지 디바이스로부터 데이터의 블록을 수신하는 것에 응답하여서 상기 인터럽트를 상기 인터럽트 라우터에 전송하고 상기 데이터의 블록을 상기 블록 버퍼 내에 저장하며, 상기 데이터의 블록은 상기 다음 페이지의 일부를 포함할 수 있다.
실례 35 내지 실례 40 중 임의의 실례의 논의 대상을 포함하는 실례 41에서, 상기 장치는 인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)을 포함하며, 상기 저 전력 코어는 상기 식별자를 사용하여서 상기 저장 인터페이스 컨트롤러와 연관된 핸들러 루틴의 어드레스를 상기 IDT로부터 검색할 수 있다.
실례 35 내지 실례 41 중 임의의 실례의 논의 대상을 포함하는 실례 42에서, 상기 저 전력 코어는, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 블록 버퍼 내에 저장된 다수의 블록으로부터 데이터의 다수의 피스를 검색하고 상기 다음 페이지를 재생성하는 순서로 상기 데이터의 다수의 블록을 상기 페이지 버퍼 내에 저장할 수 있으며, 상기 데이터의 다수의 블록은 상기 데이터의 블록을 포함할 수 있다.
실례 35 내지 실례 42 중 임의의 실례의 논의 대상을 포함하는 실례 43에서, 상기 고 전력 코어는, 상기 저 전력 코어에 의하여 상기 페이지 버퍼 내에서의 상기 다음 페이지의 재생성 후에, 상기 오퍼레이팅 시스템의 시스템 컨텍스트 내의 상기 페이지 버퍼로부터의 상기 다음 페이지를 상기 애플리케이션 루틴의 사용자 컨텍스트로 재맵핑할 수 있다.
실례 35 내지 실례 43 중 임의의 실례의 논의 대상을 포함하는 실례 44에서,상기 저 전력 코어는 상기 페이지 버퍼 내에서의 상기 다음 페이지의 재생성 후에, 상기 오퍼레이팅 시스템의 시스템 컨텍스트 내의 상기 페이지 버퍼로부터의 상기 다음 페이지를 상기 애플리케이션 루틴의 사용자 컨텍스트로 재맵핑하고, 상기 고 기능성 코어는 상기 저 전력 코어에 의한 상기 다음 페이지의 재맵핑 후에, 상기 다음 페이지로 점프하여서 상기 애플리케이션 루틴의 실행을 계속할 수 있다.
실례 45에서, 적어도 하나의 유형의 머신-판독가능한 저장 매체는 인스트럭션을 포함하며,상기 인스트럭션은 프로세서 컴포넌트에 의해서 실행되어서, 상기 프로세서 컴포넌트로 하여금, 인터럽트에 응답하여서 상기 프로세서 컴포넌트의 저 전력 코어의 제 1 인스트럭션 파이프라인 내에서의 실행의 제 1 플로우를 중지시키게 하고; 상기 저 전력 코어에 의해서, 상기 인터럽트에 응답하여서, 핸들러 루틴의 어드레스를 검색하게 하고; 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행시켜서 상기 인터럽트를 핸들링하는 제 1 태스크를 수행하게 하고; 상기 저 전력 코어에 의한 상기 제 1 태스크의 수행 이후에, 상기 프로세서 컴포넌트의 고 기능성 코어에 의해서, 상기 고 기능성 코어의 제 2 인스트럭션 파이프라인 내에서의 실행의 제 2 플로우를 따르도록 상기 제 2 인스트럭션 파이프라인에서 상기 인터럽트를 핸들링하는 제 2 태스크의 인스트럭션의 실행을 스케줄링하게 하며, 상기 제 1 태스크는 상기 제 2 태스크보다 시간-민감성이다.
실례 45의 논의 대상을 포함하는 실례 46에서, 상기 프로세서 컴포넌트는, 상기 프로세서 컴포넌트를 상기 프로세서 컴포넌트의 자원들에 대한 요구 수준에 기초하여서 적어도 제 1 모드 및 제 2 모드 중 하나로 동적으로 두는(placing) 단계로서, 상기 제 1 모드에서는 상기 저 전력 코어 및 상기 고 기능성 코어 모두가 인스트럭션을 실행하도록 동작되며, 상기 제 2 모드에서는 상기 저 전력 코어는 인스트럭션을 실행하도록 동작되지만 상기 고 기능성 코어는 인스트럭션을 실행하도록 동작되지 않는, 상기 동적으로 두는 단계를 실행하고, 상기 프로세서 컴포넌트가 상기 제 1 모드 또는 상기 제 2 모드 중 어느 모드에 있는지에 기초하여서 상기 인터럽트를 향하게 할 상기 저 전력 코어 또는 상기 고 기능성 코어를 선택하는 단계를 실행하도록 지시받을 수 있다.
상기 실례 45 내지 실례 46 중 임의의 실례의 논의 대상을 포함하는 실례 47에서, 상기 프로세서 컴포넌트는, 상기 저 전력 코어에서, 상기 프로세서 컴포넌트를 네트워크에 연결하는 네트워크 인터페이스 컨트롤러(NIC)로부터 상기 인터럽트의 전송을, 상기 인터럽트의 소스로서의 상기 NIC의 식별자와 함께 수신하도록 지시받으며, 상기 NIC는 상기 네트워크로부터 패킷을 수신하는 것에 응답하여서 상기 인터럽트를 전송할 수 있다.
상기 실례 45 내지 실례 47 중 임의의 실례의 논의 대상을 포함하는 실례 48에서, 상기 프로세서 컴포넌트는 상기 저 전력 코어에 의해서 상기 식별자를 사용하여서 인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)로부터 다수의 핸들러 루틴의 다수의 어드레스를 검색하도록 지시받으며, 상기 다수의 핸들러 루틴은 상기 핸들러 루틴을 포함할 수 있으며, 상기 다수의 어드레스는 상기 핸들러 루틴의 어드레스를 포함할 수 있으며, 상기 프로세서 컴포넌트는, 상기 인터럽트의 소스로서 NIC를 식별하기 위해 상기 제 1 인스트럭션 파이프라인 내에서 상기 다수의 어드레스에서 상기 다수의 핸들러 루틴의 각 핸들러 루틴의 인스트럭션을 실행하도록 지시받을 수 있다.
상기 실례 45 내지 실례 48 중 임의의 실례의 논의 대상을 포함하는 실례 49에서, 상기 프로세서 컴포넌트는, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 네트워크 패킷 버퍼 내에 저장된 다수의 패킷 각각으로부터 식별자를 검색하도록 지시받을 수 있으며, 상기 식별자는 상기 다수의 패킷의 각각의 패킷이 향하는 실행의 플로우를 표시할 수 있다.
상기 실례 45 내지 실례 49 중 임의의 실례의 논의 대상을 포함하는 실례 50에서, 상기 프로세서 컴포넌트는, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 실행의 목적지 플로우와 연관된 상기 다수의 패킷 중 하나 이상의 패킷을 열거하는 큐를 생성하고; 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 큐를 네트워크 큐 버퍼 내에 저장하도록 지시받을 수 있다.
상기 실례 45 내지 실례 50 중 임의의 실례의 논의 대상을 포함하는 실례 51에서, 상기 프로세서 컴포넌트는, 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 큐를 검색하고; 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 네트워크 데이터 버퍼로부터의 상기 큐 내에 열거된 하나 이상의 패킷으로부터의 데이터를, 오퍼레이팅 시스템의 시스템 컨텍스트와는 별도로 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 카피하도록 지시받을 수 있으며, 상기 애플리케이션 루틴은 실행의 상기 목적지 플로우를 포함한다.
상기 실례 45 내지 실례 51 중 임의의 실례의 논의 대상을 포함하는 실례 52에서, 상기 프로세서 컴포넌트는, 상기 제 2 인스트럭션 파이프라인 내에서 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인 내에서 실행할 상기 애플리케이션 루틴의 인스트럭션의 페이지들을 고속 스토리지로부터 검색하고; 상기 제 2 인스트럭션 파이프라인 내에서 상기 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인에서 실행될 상기 애플리케이션 루틴의 인스트럭션의 다음 페이지가 상기 고속 스토리지가 아니라 저속 스토리지 디바이스 내에 내에 저장된, 페이지 폴트(page falut)를 검출하고; 상기 제 1 인스트럭션 파이프라인 내에서 페이지 폴트 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 페이지 폴트에 응답하여서, 상기 프로세서 컴포넌트를 상기 저속 스토리지 디바이스에 연결시키는 저장 인터페이스 컨트롤러로부터, 상기 저속 스토리지 디바이스로부터 상기 다음 페이지를 검색하라는 요청을 하도록 지시받을 수 있다.
상기 실례 45 내지 실례 52 중 임의의 실례의 논의 대상을 포함하는 실례 53에서, 상기 프로세서 컴포넌트는, 상기 저 전력 코어에서, 상기 저장 인터페이스 컨트롤러로부터의 인터럽트의 전송을, 상기 인터럽트의 소스로서의 상기 저장 인터페이스 컨트롤러의 식별자와 함께 수신하도록 지시받을 수 있고, 상기 저장 인터페이스 컨트롤러는 상기 저속 스토리지 디바이스로부터 데이터의 블록을 수신하는 것에 응답하여서 상기 인터럽트를 전송할 수 있다.
상기 실례 45 내지 실례 53 중 임의의 실례의 논의 대상을 포함하는 실례 54에서, 상기 프로세서 컴포넌트는 상기 저 전력 코어에 의해서 상기 식별자를 사용하여서 인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)로부터 다수의 핸들러 루틴의 다수의 어드레스를 검색하도록 지시받으며, 상기 다수의 핸들러 루틴은 상기 핸들러 루틴을 포함할 수 있으며, 상기 다수의 어드레스는 상기 핸들러 루틴의 어드레스를 포함할 수 있으며, 상기 프로세서 컴포넌트는, 상기 인터럽트의 소스로서 저장 인터페이스 컨트롤러를 식별하기 위해 상기 제 1 인스트럭션 파이프라인 내에서 상기 다수의 어드레스에서 상기 다수의 핸들러 루틴의 각 핸들러 루틴의 인스트럭션을 실행하도록 지시받을 수 있다.
상기 실례 45 내지 실례 54 중 임의의 실례의 논의 대상을 포함하는 실례 55에서, 상기 프로세서 컴포넌트는, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 저장 인터페이스 컨트롤러에 의해서 블록 버퍼 내에 저장된 데이터의 다수의 블록으로부터 데이터의 다수의 피스를 검색하고; 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 다음 페이지를 재생성하는 순서로 페이지 버퍼 내에 상기 데이터의 다수의 블록을 저장하도록 지시받을 수 있고, 상기 데이터의 다수의 블록은 상기 데이터의 블록을 포함한다.
상기 실례 45 내지 실례 55 중 임의의 실례의 논의 대상을 포함하는 실례 56에서, 상기 프로세서 컴포넌트는 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 페이지 버퍼 내에서 상기 다음 페이지의 재생성 이후에, 상기 제 2 태스크로서 상기 페이지 버퍼로부터의 상기 다음 페이지를, 오퍼레이팅 시스템의 시스템 컨텍스트와는 별도로 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 카피하도록 지시받을 수 있다.
상기 실례 45 내지 실례 56 중 임의의 실례의 논의 대상을 포함하는 실례 57에서, 상기 프로세서 컴포넌트는, 상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 페이지 버퍼 내의 상기 다음 페이지의 재생성 이후의 상기 제 2 태스크로서, 상기 오퍼레이팅 시스템의 시스템 컨텍스트 내의 상기 페이지 버퍼로부터의 상기 다음 페이지를 상기 애플리케이션 루틴 사용자 컨텍스트로 재맵핑하도록 지시받을 수 있다.
실례 58에서, 적어도 하나의 머신-판독가능한 저장 매체는 인스트럭션을 포함할 수 있으며, 상기 인스트럭션은 컨트롤러 프로세서 컴포넌트에 의해서 실행되어서, 컴퓨팅 디바이스로 하여금 상기 실례들 중 임의의 것을 수행하게 지시할 수 있다.
실례 59에서, 장치는 위의 실례들 중 임의의 것을 수행하기 위한 수단을 포함할 수 있다.

Claims (25)

  1. 실행의 플로우(flow)를 제어하는 장치로서,
    프로세서 컴포넌트의 저 전력 코어(lower power core)―상기 저 전력 코어는 제 1 인스트럭션 파이프라인(instruction pipeline)을 포함하며, 상기 저 전력 코어는 인터럽트(interrupt)를 핸들링하는 제 1 태스크를 수행하기 위해, 상기 제 1 인스트럭션 파이프라인 내에서의 실행의 제 1 플로우를 중지시키며 상기 제 1 인스트럭션 파이프라인 내에서의 핸들러 루틴(handler routine)의 인스트럭션을 실행시킴―와,
    상기 프로세서 컴포넌트의 고 기능성 코어(higher function core)―상기 고 기능성 코어는 제 2 인스트럭션 파이프라인을 포함하며, 상기 고 기능성 코어는, 상기 제 1 태스크의 수행 이후에, 상기 제 2 인스트럭션 파이프라인 내에서의 실행의 제 2 플로우를 따르도록 상기 제 2 인스트럭션 파이프라인에서 상기 인터럽트를 핸들링하는 제 2 태스크의 인스트럭션의 실행을 스케줄링함―를 포함하며,
    상기 제 1 태스크는 상기 제 2 태스크보다 더 시간-민감성인(time-sensitive)
    장치.
  2. 제 1 항에 있어서,
    네트워크 패킷 버퍼와,
    상기 프로세서 컴포넌트를 네트워크에 연결하고, 상기 네트워크로부터 패킷을 수신하는 것에 응답하여 상기 네트워크 패킷 버퍼 내에 상기 패킷을 저장하고 상기 인터럽트를 상기 프로세서 컴포넌트에 전송하는 네트워크 인터페이스 컨트롤러(NIC)와,
    상기 NIC로부터의 상기 인터럽트의 전송을 수신하고, 상기 인터럽트의 소스로서의 상기 NIC의 식별자와 함께 상기 인터럽트의 수신을 알리는 표시를 상기 프로세서 컴포넌트에 릴레이(relay)하는 인터럽트 라우터를 포함하는
    장치.
  3. 제 2 항에 있어서,
    상기 저 전력 코어는, 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 네트워크 패킷 버퍼 내에 저장된 다수의 패킷 각각으로부터 식별자를 검색하고,
    상기 식별자는 상기 다수의 패킷 중 각 패킷이 향하는 실행의 플로우를 표시하는
    장치.
  4. 제 3 항에 있어서,
    상기 저 전력 코어는, 상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 실행의 목적지 플로우와 연관된 상기 다수의 패킷 중 하나 이상의 패킷을 열거하는 큐(queue)를 생성하고 상기 큐를 네트워크 큐 버퍼 내에 저장하는
    장치.
  5. 제 4 항에 있어서,
    오퍼레이팅 시스템(operating system)의 데이터 전달 컴포넌트를 포함하며,
    상기 데이터 전달 컴포넌트는 상기 고 기능성 코어에 의해서 실행되어서, 상기 제 2 태스크로서, 상기 큐를 검색하고, 상기 큐 내에 열거된 상기 하나 이상의 패킷으로부터의 데이터를 상기 네트워크 패킷 버퍼로부터, 상기 오퍼레이팅 시스템의 시스템 컨텍스트(system context)와는 별개로 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 카피(copy)하며,
    상기 애플리케이션 루틴은 상기 실행의 목적지 플로우를 포함하는
    장치.
  6. 실행의 플로우를 제어하기 위한 컴퓨터 구현 방법으로서,
    인터럽트에 응답하여서 프로세서 컴포넌트의 저 전력 코어의 제 1 인스트럭션 파이프라인 내에서의 실행의 제 1 플로우를 중지시키는 단계와,
    상기 저 전력 코어에 의해, 상기 인터럽트에 응답하여 핸들러 루틴의 어드레스를 검색하는 단계와,
    상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행시켜 상기 인터럽트를 핸들링하는 제 1 태스크를 수행하는 단계와,
    상기 저 전력 코어에 의한 상기 제 1 태스크의 수행 이후에, 상기 프로세서 컴포넌트의 고 기능성 코어에 의해, 상기 고 기능성 코어의 제 2 인스트럭션 파이프라인 내에서의 실행의 제 2 플로우를 따르도록 상기 제 2 인스트럭션 파이프라인에서 상기 인터럽트를 핸들링하는 제 2 태스크의 인스트럭션의 실행을 스케줄링하는 단계를 포함하며,
    상기 제 1 태스크는 상기 제 2 태스크보다 더 시간-민감성인
    컴퓨터 구현 방법.
  7. 제 6 항에 있어서,
    상기 프로세서 컴포넌트를 상기 프로세서 컴포넌트의 자원에 대한 요구 수준에 기초하여 동적으로 제 1 모드 또는 제 2 모드에 두는(placing) 단계―상기 제 1 모드에서는 상기 저 전력 코어 및 상기 고 기능성 코어 모두가 인스트럭션을 실행하도록 동작되며, 상기 제 2 모드에서는 상기 저 전력 코어는 인스트럭션을 실행하도록 동작되지만 상기 고 기능성 코어는 인스트럭션을 실행하도록 동작되지 않음―와,
    상기 프로세서 컴포넌트가 상기 제 1 모드 또는 상기 제 2 모드 중 어느 모드에 있는지에 기초하여 상기 인터럽트를 향하게 할 상기 저 전력 코어 또는 상기 고 기능성 코어를 선택하는 단계를 포함하는
    컴퓨터 구현 방법.
  8. 제 6 항에 있어서,
    상기 제 2 인스트럭션 파이프라인 내에서 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인에서 실행될 상기 애플리케이션 루틴의 인스트럭션의 페이지를 고속 스토리지(storage)로부터 검색하는 단계와,
    상기 제 2 인스트럭션 파이프라인 내에서 상기 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인에서 실행될 상기 애플리케이션 루틴의 인스트럭션의 다음 페이지가 상기 고속 스토리지가 아니라 저속 스토리지 디바이스 내에 저장되어 있는 페이지 폴트(page fault)를 검출하는 단계와,
    상기 제 1 인스트럭션 파이프라인 내에서 페이지 폴트 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 페이지 폴트에 응답하여, 상기 프로세서 컴포넌트를 상기 저속 스토리지 디바이스에 연결시키는 저장 인터페이스 컨트롤러에게 상기 저속 스토리지 디바이스로부터의 상기 다음 페이지의 검색을 요청하는 단계를 포함하는
    컴퓨터 구현 방법.
  9. 제 8 항에 있어서,
    상기 저 전력 코어에서, 상기 저장 인터페이스 컨트롤러로부터의 상기 페이지 폴트의 전송을, 상기 페이지 폴트의 소스로서의 상기 저장 인터페이스 컨트롤러의 식별자와 함께 수신하는 단계를 포함하며,
    상기 저장 인터페이스 컨트롤러는 상기 저속 스토리지 디바이스로부터 데이터 블록을 수신하는 것에 응답하여 상기 페이지 폴트를 전송하는
    컴퓨터 구현 방법.
  10. 제 9 항에 있어서,
    상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 저장 인터페이스 컨트롤러에 의해서 블록 버퍼 내에 저장된 다수의 데이터 블록으로부터 다수의 데이터 블록을 검색하는 단계와,
    상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 다음 페이지를 재생성하는 순서로 페이지 버퍼 내에 상기 다수의 데이터 블록을 저장하는 단계를 포함하며,
    상기 다수의 데이터 블록은 상기 데이터 블록을 포함하는
    컴퓨터 구현 방법.
  11. 제 10 항에 있어서,
    상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 페이지 버퍼 내의 상기 다음 페이지의 재생성 이후의 상기 제 2 태스크로서, 상기 다음 페이지를 오퍼레이팅 시스템의 시스템 컨텍스트 내의 상기 페이지 버퍼로부터 상기 애플리케이션 루틴의 사용자 컨텍스트로 재맵핑(remap)하는 단계를 포함하는
    컴퓨터 구현 방법.
  12. 실행의 플로우들을 제어하기 위한 장치로서,
    프로세서 컴포넌트의 저 전력 코어―상기 저 전력 코어는 제 1 인스트럭션 파이프라인을 포함하며, 상기 저 전력 코어는 페이지 폴트를 핸들링하는 제 1 태스크를 수행하기 위해, 상기 제 1 인스트럭션 파이프라인의 실행의 제 1 플로우를 중지시키고 상기 제 1 인스트럭션 파이프라인 내에서 페이지 폴트 핸들러 루틴(page fault handler routine)의 인스트럭션을 실행시킴―와,
    상기 프로세서 컴포넌트의 고 기능성 코어―상기 고 기능성 코어는 제 2 인스트럭션 파이프라인을 포함하며, 상기 고 기능성 코어는 상기 제 2 인스트럭션 파이프라인 내에서 고속 스토리지로부터의 애플리케이션 루틴의 인스트럭션을 실행하고, 상기 고 기능성 코어에 의해 실행될 상기 애플리케이션 루틴의 인스트럭션의 다음 페이지가 상기 고속 스토리지가 아니라 저속 스토리지 디바이스에 저장되어 있는 것에 응답하여 페이지 폴트의 표시를 상기 저 전력 코어에 제공함―를 포함하는
    장치.
  13. 제 12 항에 있어서,
    상기 프로세서 컴포넌트를 상기 저속 스토리지 디바이스에 연결하는 저장 인터페이스 컨트롤러를 포함하며,
    상기 저 전력 코어는 상기 페이지 폴트 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 저속 스토리지 디바이스에게 상기 다음 페이지의 검색을 요청하는
    장치.
  14. 제 13 항에 있어서,
    블록 버퍼와,
    상기 저장 인터페이스 컨트롤러로부터 상기 페이지 폴트의 전송을 수신하고, 상기 페이지 폴트의 소스로서의 상기 저장 인터페이스 컨트롤러의 식별자와 함께 상기 페이지 폴트의 수신의 표시를 상기 프로세서 컴포넌트에 릴레이하는 인터럽트 라우터를 포함하며,
    상기 저장 인터페이스 컨트롤러는 상기 저속 스토리지 디바이스로부터 데이터 블록을 수신하는 것에 응답하여 상기 페이지 폴트를 상기 인터럽트 라우터에 전송하고 상기 데이터 블록을 상기 블록 버퍼 내에 저장하며,
    상기 데이터 블록은 상기 다음 페이지의 일부를 포함하는
    장치.
  15. 제 14 항에 있어서,
    인터럽트 디스크립터 테이블(interrupt descriptor table:IDT)을 포함하며,
    상기 저 전력 코어는 상기 식별자를 사용하여 상기 저장 인터페이스 컨트롤러와 연관된 핸들러 루틴의 어드레스를 상기 IDT로부터 검색하는
    장치.
  16. 제 15 항에 있어서,
    상기 저 전력 코어는, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 블록 버퍼 내에 저장된 다수의 데이터 블록으로부터 다수의 데이터 피스를 검색하고, 상기 다음 페이지를 재생성하는 순서로 상기 다수의 데이터 블록을 페이지 버퍼 내에 저장하며,
    상기 다수의 데이터 블록은 상기 데이터 블록을 포함하는
    장치.
  17. 제 16 항에 있어서,
    상기 저 전력 코어는 상기 페이지 버퍼 내에서의 상기 다음 페이지의 재생성 후에, 상기 다음 페이지를 오퍼레이팅 시스템의 시스템 컨텍스트 내의 상기 페이지 버퍼로부터 상기 애플리케이션 루틴의 사용자 컨텍스트로 재맵핑하고,
    상기 고 기능성 코어는 상기 저 전력 코어에 의한 상기 다음 페이지의 재맵핑 후에, 상기 다음 페이지로 점프하여 상기 애플리케이션 루틴의 실행을 계속하는
    장치.
  18. 인스트럭션을 포함하는 적어도 하나의 유형의 머신-판독가능한 저장 매체로서,
    상기 인스트럭션은 프로세서 컴포넌트에 의해서 실행될 때, 상기 프로세서 컴포넌트로 하여금,
    인터럽트에 응답하여 상기 프로세서 컴포넌트의 저 전력 코어의 제 1 인스트럭션 파이프라인 내에서의 실행의 제 1 플로우를 중지시키게 하고,
    상기 저 전력 코어에 의해, 상기 인터럽트에 응답하여 핸들러 루틴의 어드레스를 검색하게 하고,
    상기 제 1 인스트럭션 파이프라인 내에서의 상기 핸들러 루틴의 인스트럭션을 실행시켜 상기 인터럽트를 핸들링하는 제 1 태스크를 수행하게 하고,
    상기 저 전력 코어에 의한 상기 제 1 태스크의 수행 이후에, 상기 프로세서 컴포넌트의 고 기능성 코어에 의해, 상기 고 기능성 코어의 제 2 인스트럭션 파이프라인 내에서의 실행의 제 2 플로우를 따르도록 상기 제 2 인스트럭션 파이프라인에서 상기 인터럽트를 핸들링하는 제 2 태스크의 인스트럭션의 실행을 스케줄링하게 하며,
    상기 제 1 태스크는 상기 제 2 태스크보다 더 시간-민감성인
    머신-판독가능한 저장 매체.
  19. 제 18 항에 있어서,
    상기 프로세서 컴포넌트는, 상기 저 전력 코어에서, 상기 프로세서 컴포넌트를 네트워크에 연결하는 네트워크 인터페이스 컨트롤러(NIC)로부터 상기 인터럽트의 전송을, 상기 인터럽트의 소스로서의 상기 NIC의 식별자와 함께 수신하도록 지시되며(caused),
    상기 NIC는 상기 네트워크로부터 패킷을 수신하는 것에 응답하여 상기 인터럽트를 전송하는
    머신-판독가능한 저장 매체.
  20. 제 19 항에 있어서,
    상기 프로세서 컴포넌트는, 상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 네트워크 패킷 버퍼 내에 저장된 다수의 패킷 각각으로부터 식별자를 검색하도록 지시되며,
    상기 식별자는 상기 다수의 패킷의 각각의 패킷이 향하는 실행의 플로우를 표시하는
    머신-판독가능한 저장 매체.
  21. 제 20 항에 있어서,
    상기 프로세서 컴포넌트는,
    상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 실행의 목적지 플로우와 연관된 상기 다수의 패킷 중 하나 이상의 패킷을 열거하는 큐를 생성하고,
    상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 큐를 네트워크 큐 버퍼 내에 저장하도록 지시받는
    머신-판독가능한 저장 매체.
  22. 제 21 항에 있어서,
    상기 프로세서 컴포넌트는,
    상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 큐를 검색하고,
    상기 제 2 인스트럭션 파이프라인 내에서 상기 제 2 태스크의 인스트럭션을 실행할 시에, 상기 네트워크 패킷 버퍼로부터의 상기 큐 내에 열거된 하나 이상의 패킷으로부터의 데이터를, 오퍼레이팅 시스템의 시스템 컨텍스트와는 별도로 사용자 컨텍스트 내에 저장된 애플리케이션 루틴의 애플리케이션 데이터 버퍼로 카피하도록 지시받고,
    상기 애플리케이션 루틴은 실행의 상기 목적지 플로우를 포함하는
    머신-판독가능한 저장 매체.
  23. 제 18 항에 있어서,
    상기 프로세서 컴포넌트는,
    상기 제 2 인스트럭션 파이프라인 내에서 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인 내에서 실행할 상기 애플리케이션 루틴의 인스트럭션의 페이지, 또는 상기 애플리케이션 루틴과 연관된 데이터를 고속 스토리지로부터 검색하고,
    상기 제 2 인스트럭션 파이프라인 내에서 상기 애플리케이션 루틴의 인스트럭션을 실행할 시에, 상기 제 2 인스트럭션 파이프라인에서 실행될 상기 애플리케이션 루틴의 인스트럭션의 다음 페이지 또는 데이터의 다음 페이지가 상기 고속 스토리지가 아니라 저속 스토리지 디바이스 내에 저장되어 있는 페이지 폴트(page falut)를 검출하고,
    상기 제 1 인스트럭션 파이프라인 내에서 페이지 폴트 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 페이지 폴트에 응답하여, 상기 프로세서 컴포넌트를 상기 저속 스토리지 디바이스에 연결시키는 저장 인터페이스 컨트롤러에게 상기 저속 스토리지 디바이스로부터의 상기 다음 페이지의 검색을 요청하도록 지시받는
    머신-판독가능한 저장 매체.
  24. 제 23 항에 있어서,
    상기 프로세서 컴포넌트는, 상기 저 전력 코어에서, 상기 저장 인터페이스 컨트롤러로부터의 상기 페이지 폴트의 전송을, 상기 페이지 폴트의 소스로서의 상기 저장 인터페이스 컨트롤러의 식별자와 함께 수신하도록 지시받고,
    상기 저장 인터페이스 컨트롤러는 상기 저속 스토리지 디바이스로부터 데이터 블록을 수신하는 것에 응답하여 상기 페이지 폴트를 전송하는
    머신-판독가능한 저장 매체.
  25. 제 24 항에 있어서,
    상기 프로세서 컴포넌트는,
    상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 저장 인터페이스 컨트롤러에 의해 블록 버퍼 내에 저장된 다수의 데이터 블록으로부터 다수의 데이터 블록을 검색하고,
    상기 제 1 인스트럭션 파이프라인 내에서 상기 핸들러 루틴의 인스트럭션을 실행할 시에, 상기 다음 페이지를 재생성하는 순서로 페이지 버퍼 내에 상기 다수의 데이터 블록을 저장하도록 지시받고,
    상기 다수의 데이터 블록은 상기 데이터 블록을 포함하는
    머신-판독가능한 저장 매체.
KR1020150165765A 2014-12-26 2015-11-25 비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법 KR101744126B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/583,308 2014-12-26
US14/583,308 US9563431B2 (en) 2014-12-26 2014-12-26 Techniques for cooperative execution between asymmetric processor cores

Publications (2)

Publication Number Publication Date
KR20160079646A KR20160079646A (ko) 2016-07-06
KR101744126B1 true KR101744126B1 (ko) 2017-06-07

Family

ID=56117277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150165765A KR101744126B1 (ko) 2014-12-26 2015-11-25 비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법

Country Status (4)

Country Link
US (3) US9563431B2 (ko)
KR (1) KR101744126B1 (ko)
CN (2) CN108647046B (ko)
DE (1) DE102015119894A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104197299A (zh) * 2014-08-21 2014-12-10 浙江生辉照明有限公司 照明装置及基于该装置的语音播报系统及方法
US9563431B2 (en) * 2014-12-26 2017-02-07 Intel Corporation Techniques for cooperative execution between asymmetric processor cores
US9715268B2 (en) * 2015-05-08 2017-07-25 Microsoft Technology Licensing, Llc Reducing power by vacating subsets of CPUs and memory
US10567479B2 (en) * 2015-08-05 2020-02-18 Facebook, Inc. Managing a device cloud
US10541958B2 (en) 2015-08-05 2020-01-21 Facebook, Inc. Controlling a device cloud
US10652594B2 (en) 2016-07-07 2020-05-12 Time Warner Cable Enterprises Llc Apparatus and methods for presentation of key frames in encrypted content
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
CN106095696B (zh) * 2016-07-26 2018-11-09 上海航天测控通信研究所 一种基于自适应路由及调度策略的高速缓存装置
WO2018183542A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
CN110741356B (zh) 2017-04-10 2024-03-15 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
WO2019014265A1 (en) 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR CALCULATION NODES AND STORAGE NODES
WO2019014268A1 (en) 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR FLOW PROCESSING
US10958948B2 (en) * 2017-08-29 2021-03-23 Charter Communications Operating, Llc Apparatus and methods for latency reduction in digital content switching operations
US10939142B2 (en) 2018-02-27 2021-03-02 Charter Communications Operating, Llc Apparatus and methods for content storage, distribution and security within a content distribution network
CN108446174B (zh) * 2018-03-06 2022-03-11 苏州大学 基于资源预分配与公共引导代理的多核作业调度方法
US20190041950A1 (en) * 2018-03-28 2019-02-07 Intel Corporation System, Apparatus And Method For Data Driven Low Power State Control Based On Performance Monitoring Information
US10785306B1 (en) * 2019-07-11 2020-09-22 Alibaba Group Holding Limited Data transmission and network interface controller

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010538371A (ja) 2007-08-27 2010-12-09 マーベル ワールド トレード リミテッド 動的コア切り替え

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298431B1 (en) * 1997-12-31 2001-10-02 Intel Corporation Banked shadowed register file
JP3097648B2 (ja) * 1998-02-04 2000-10-10 日本電気株式会社 情報処理装置及び情報処理方法
US6898696B1 (en) * 1999-06-14 2005-05-24 International Business Machines Corporation Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction
US6725354B1 (en) * 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7461275B2 (en) * 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7865703B2 (en) * 2006-05-05 2011-01-04 International Business Machines Corporation Method and apparatus for executing instrumentation code within alternative processor resources
JP2007328461A (ja) 2006-06-06 2007-12-20 Matsushita Electric Ind Co Ltd 非対称マルチプロセッサ
CN1877536A (zh) * 2006-06-30 2006-12-13 浙江大学 嵌入式sram操作系统中断的实现方法
WO2008114975A1 (en) * 2007-03-20 2008-09-25 Min Hur Method and system for managing online shopping mall of lottery type
US8527709B2 (en) 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US7996663B2 (en) * 2007-12-27 2011-08-09 Intel Corporation Saving and restoring architectural state for processor cores
DE102008010943A1 (de) * 2008-02-25 2009-09-03 Fujitsu Siemens Computers Gmbh Verfahren zur Behandlung von Unterbrechungsaufforderungen bei einem Prozessor
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US20090327556A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Processor Interrupt Selection
US8892916B2 (en) * 2008-08-06 2014-11-18 International Business Machines Corporation Dynamic core pool management
CN101354664B (zh) * 2008-08-19 2011-12-28 中兴通讯股份有限公司 多核处理器中断负载均衡方法和装置
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
US7996595B2 (en) * 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US20110320766A1 (en) * 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
TWI454905B (zh) * 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
WO2013085794A1 (en) * 2011-12-06 2013-06-13 Advanced Micro Devices, Inc. Method and apparatus for servicing page fault exceptions
WO2013090605A2 (en) * 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Saving and restoring shader context state and resuming a faulted apd wavefront
WO2013101032A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
US8984200B2 (en) * 2012-08-21 2015-03-17 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US9009508B2 (en) * 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US9411641B2 (en) * 2012-10-04 2016-08-09 Lawrence J. Dickson Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US9135183B2 (en) * 2013-03-13 2015-09-15 Samsung Electronics Co., Ltd. Multi-threaded memory management
US9880842B2 (en) * 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US9256535B2 (en) * 2013-04-04 2016-02-09 Advanced Micro Devices, Inc. Conditional notification mechanism
CN103218029B (zh) * 2013-04-09 2015-06-17 电子科技大学 一种超低功耗处理器流水线结构
KR20140139371A (ko) * 2013-05-27 2014-12-05 한국전자통신연구원 멀티 코어 시스템 반도체 제어 장치 및 방법
US20150007196A1 (en) * 2013-06-28 2015-01-01 Intel Corporation Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores
US10386900B2 (en) * 2013-09-24 2019-08-20 Intel Corporation Thread aware power management
US9398118B2 (en) * 2013-09-24 2016-07-19 Innovask, Inc. Processing apparatus for bus data
US9858115B2 (en) * 2013-10-30 2018-01-02 Mediatek Inc. Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
US20150186160A1 (en) * 2014-01-02 2015-07-02 Advanced Micro Devices, Inc. Configuring processor policies based on predicted durations of active performance states
US10417149B2 (en) * 2014-06-06 2019-09-17 Intel Corporation Self-aligning a processor duty cycle with interrupts
US9563431B2 (en) * 2014-12-26 2017-02-07 Intel Corporation Techniques for cooperative execution between asymmetric processor cores

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010538371A (ja) 2007-08-27 2010-12-09 マーベル ワールド トレード リミテッド 動的コア切り替え

Also Published As

Publication number Publication date
DE102015119894A1 (de) 2016-06-30
US10782978B2 (en) 2020-09-22
US10346175B2 (en) 2019-07-09
CN108647046A (zh) 2018-10-12
US9563431B2 (en) 2017-02-07
CN108647046B (zh) 2023-11-21
KR20160079646A (ko) 2016-07-06
US20160188344A1 (en) 2016-06-30
CN105739949A (zh) 2016-07-06
US20190278609A1 (en) 2019-09-12
US20170212762A1 (en) 2017-07-27
CN105739949B (zh) 2018-06-05

Similar Documents

Publication Publication Date Title
KR101744126B1 (ko) 비대칭적 프로세서 코어 간의 협력적 실행을 위한 기법
US20180004578A1 (en) Techniques for distributed processing task portion assignment
US10282132B2 (en) Methods and systems for processing PRP/SGL entries
US9280474B2 (en) Adaptive data prefetching
US10437479B2 (en) Unified addressing and hierarchical heterogeneous storage and memory
EP3338413A1 (en) Techniques for routing packets between virtual machines
US10120781B2 (en) Techniques for detecting race conditions
JP6408514B2 (ja) 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
CN102646446B (zh) 硬件动态高速缓存电源管理
KR101752117B1 (ko) 단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치
JP2008047116A (ja) 入力/出力装置とメモリ間のデータ転送の融通性のある制御
CN103647807A (zh) 一种信息缓存方法、装置和通信设备
JP6254603B2 (ja) メッセージシグナル割込みの通信
US20170091127A1 (en) Techniques to Couple with a Storage Device via Multiple Communication Ports
US20130232293A1 (en) High performance storage technology with off the shelf storage components
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
CN110399219B (zh) 内存访问方法、dmc及存储介质
US10346328B2 (en) Method and apparatus for indicating interrupts
CN102609240B (zh) 处理器电路及读取数据的方法
CN115933965A (zh) 存储器存取控制
JP2012043249A (ja) メモリの制御装置、及び制御方法
KR20220047825A (ko) 계층적 메모리 장치
WO2024064776A1 (en) Address translation service management
CN117632784A (zh) 静默高速缓存行逐出

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal