KR102427067B1 - 이종 스레드 스케줄링 - Google Patents
이종 스레드 스케줄링 Download PDFInfo
- Publication number
- KR102427067B1 KR102427067B1 KR1020177010894A KR20177010894A KR102427067B1 KR 102427067 B1 KR102427067 B1 KR 102427067B1 KR 1020177010894 A KR1020177010894 A KR 1020177010894A KR 20177010894 A KR20177010894 A KR 20177010894A KR 102427067 B1 KR102427067 B1 KR 102427067B1
- Authority
- KR
- South Korea
- Prior art keywords
- cores
- thread
- core
- heterogeneous
- computing device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
프로세싱 작업 부하가 프로세싱 시스템의 이종 프로세싱 코어로 분배되는 이종 스레드 스케줄링 기술이 설명된다. 이종 스레드 스케줄링은, 스레드 고유의 정책에 따라 만들어지는 더 높은 빈도수의 스레드 단위의 배치 결정 및 프로세싱 코어의 상태를 제어하기 위해 사용되는 시스템 전반의 전력 관리 고려 사항의 주기적인 평가의 조합에 기초하여 구현될 수도 있다. 하나 이상의 구현예에서, 전력 효율적인 코어 및 성능 지향 코어를 포함하는 이종 코어를 구비하는 프로세싱 시스템에 대해, 시스템 작업 부하 컨텍스트가 주기적으로 분석된다. 주기적인 분석에 기초하여, 스레드 스케줄링을 위해 전력 효율적인 코어 및 성능 지향 코어의 활성화를 제어하도록, 이종 코어 중 일부에 대해 코어 상태가 설정된다. 그 다음, 이종 코어의 활성 코어 사이에서 개개의 스레드를 스레드 단위 기반으로 할당하기 위해, 개개의 스레드가 코어 상태에 의존하여 스케줄링된다.
Description
모바일 컴퓨팅 디바이스는 모바일 설정에서 유저에게 이용가능하게 만들어지는 기능성을 증가시키도록 개발되어 왔다. 예를 들면, 유저는, 이메일을 체크하고, 웹을 서핑하고, 텍스트를 작성하고, 애플리케이션과 상호 작용하고, 및 등등을 하기 위해, 이동 전화, 태블릿 컴퓨터, 또는 다른 모바일 컴퓨팅 디바이스와 상호 작용할 수도 있다. 모바일 컴퓨팅 디바이스의 개발자가 직면하는 하나의 도전 과제는 효율적인 전력 관리 및 배터리 수명의 연장이다. 예를 들면, 처리 용량에서의 또는 그 근처에서의 프로세서에 의한 태스크의 집중된 프로세싱(extended processing)은 디바이스 배터리를 다 써버릴 수도 있고 디바이스의 셧다운을 강제할 수도 있는 열적 조건을 생성할 수도 있다. 일반적으로 전체적인 디바이스 성능을 대가로, 프로세서 활용도를 제어하기 위해 다양한 전력 관리 전략이 적용될 수도 있다. 디바이스에 대해 구현되는 전력 관리가 성능과 배터리 수명 간의 균형 잡힌 해결책을 찾지 못하면, 디바이스 및 제조 업체에 대한 유저 불만족이 나타날 수도 있다.
프로세싱 작업 부하가 프로세싱 시스템의 이종(heterogeneous) 프로세싱 코어로 분배되는 이종 스레드 스케줄링(heterogeneous thread scheduling) 기술이 설명된다. 이종 스레드 스케줄링은, 스레드 고유의 정책에 따라 만들어지는 더 높은 빈도수의 스레드 단위의 배치 결정 및 프로세싱 코어의 상태를 제어하기 위해 사용되는 시스템 전반의 전력 관리 고려 사항의 주기적인 평가의 조합에 기초하여 구현될 수도 있다. 하나 이상의 구현예에서, 전력 효율적인 코어(power efficient core) 및 성능 지향 코어(performance oriented core)를 포함하는 이종 코어를 구비하는 프로세싱 시스템에 대해, 동작 컨텍스트(operational context)가 주기적으로 분석된다. 주기적인 분석에 기초하여, 스레드 스케줄링을 위해 전력 효율적인 코어 및 성능 지향 코어의 활성화를 제어하도록, 이종 코어의 적어도 일부에 대해 코어 상태(core state)가 설정된다. 그 다음, 이종 코어의 활성 코어 사이에서 개개의 스레드를 스레드 단위 기반으로 할당하기 위해, 개개의 스레드가 코어 상태에 의존하여 스케줄링된다.
이 개요는 하기의 상세한 설명에서 더 설명되는 엄선된 개념을 간소화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 주제의 주요 특징이나 또는 본질적인 특징을 식별하도록 의도된 것이 아니며, 청구된 주제의 범위를 제한하는 데 사용되도록 의도된 것도 아니다.
도 1은 하나 이상의 구현예에 따른 예시적인 동작 환경을 예시한다.
도 2는, 하나 이상의 구현예에 따른, 이종 프로세싱 코어를 구비하는 컴퓨팅 디바이스의 예시적인 상세를 묘사하는 도면이다.
도 3은, 하나 이상의 구현예에 따른, 이종 코어 사이에서의 스레드의 할당을 위한 예시적인 프로시져의 상세를 설명하는 흐름도이다.
도 4는, 하나 이상의 구현예에 따른, 스레드 정책에 기초한 스레드 스케줄링을 위한 예시적인 프로시져의 상세를 설명하는 흐름도이다.
도 5는, 하나 이상의 구현예에 따른, 프로세싱 시스템의 이종 코어의 상태를 선택적으로 제어하기 위한 예시적인 프로시져의 상세를 설명하는 흐름도이다.
도 6은, 하나 이상의 구현예에 따른, 이종 스레드 스케줄링을 위해 활용될 수 있는 시스템의 블록도이다.
도 2는, 하나 이상의 구현예에 따른, 이종 프로세싱 코어를 구비하는 컴퓨팅 디바이스의 예시적인 상세를 묘사하는 도면이다.
도 3은, 하나 이상의 구현예에 따른, 이종 코어 사이에서의 스레드의 할당을 위한 예시적인 프로시져의 상세를 설명하는 흐름도이다.
도 4는, 하나 이상의 구현예에 따른, 스레드 정책에 기초한 스레드 스케줄링을 위한 예시적인 프로시져의 상세를 설명하는 흐름도이다.
도 5는, 하나 이상의 구현예에 따른, 프로세싱 시스템의 이종 코어의 상태를 선택적으로 제어하기 위한 예시적인 프로시져의 상세를 설명하는 흐름도이다.
도 6은, 하나 이상의 구현예에 따른, 이종 스레드 스케줄링을 위해 활용될 수 있는 시스템의 블록도이다.
개관
일반적으로, 디바이스는 프로세서 활용도 및 열적 조건을 제어하기 위한 전력 관리 전략을 구현할 수도 있지만, 전력 관리 결정은 디바이스 성능에 악영향을 끼칠 수도 있다. 따라서, 전력 관리가 불완전하게 구현되어 성능이 저하되면, 디바이스의 유저는 실망할 수도 있다.
프로세싱 작업 부하가 프로세싱 시스템의 이종 프로세싱 코어로 분배되는 이종 스레드 스케줄링 기술이 설명된다. 이종 스레드 스케줄링은, 스레드 고유의 정책에 따라 만들어지는 더 높은 빈도수의 스레드 단위의 배치 결정 및 프로세싱 코어의 상태를 제어하기 위해 사용되는 시스템 전반의 전력 관리 고려 사항의 주기적인 평가의 조합에 기초하여 구현될 수도 있다. 비제한적인 예로서, 오퍼레이팅 시스템은 주기적인 평가를 수행하도록 구성되는 전력 매니저 컴포넌트 및 전력 매니저 컴포넌트의 영향 하에서 더 높은 빈도수의 스레드 단위의 배치 결정을 행하도록 구성되는 스레드 스케줄러 컴포넌트를 포함할 수도 있다.
하나 이상의 구현예에서, 전력 효율적인 코어 및 성능 지향 코어를 포함하는 이종 코어를 구비하는 프로세싱 시스템에 대해, 동작 컨텍스트가 주기적으로 분석된다. 주기적인 분석에 기초하여, 스레드 스케줄링을 위해 전력 효율적인 코어 및 성능 지향 코어의 활성화를 제어하도록, 이종 코어의 적어도 일부에 대해 코어 상태(예를 들면, 활성(active), 아이들(idle), 스로틀(throttled), 등등)가 설정된다. 그 다음, 이종 코어의 활성 코어 사이에서 개개의 스레드를 스레드 단위 기반으로 할당하기 위해, 개개의 스레드가 코어 상태에 의존하여 스케줄링된다.
시스템 전반의 전력 관리 고려 사항 및 스레드 고유의 정책 둘 다를 결합하는 것에 의해, 본원에서 설명되는 이종 스레드 스케줄링 기술은 이종 코어의 세트 사이에서 프로세싱 작업 부하를 효율적으로 분배할 수도 있다. 추가적으로, 전력 사용은, 상이한 코어 사이에서 지능적으로 전환하고, 전력 효율적인 코어를 더 많이 사용하고, 및/또는 미사용의 또는 충분히 활용되지 않는 코어를, 가능할 때마다, 아이들 상태로 배치하는 것에 의해, 최적화될 수도 있다. 또한, 성능 지향 코어는, 허용가능한 시간 제약 내에서 프로세싱 작업 부하 및 우선 순위 태스크를 서비스하도록 적절히 활성화될 수도 있다. 상이한 코어의 클러스터 사이에서 단순히 대대적으로 전환하는 대신(예를 들면, 성능 코어와 저전력 코어 사이에서 완전히 전환함), 스레드 배치, 디바이스 성능, 및 전력 사용을 최적화하기 위해, 상이한 특성을 갖는 코어의 조합이 다양한 시나리오에서 함께 활성화될 수도 있다.
후속하는 논의에서는, "동작 환경"으로 명칭이 부여된 섹션이 제공되어 하나 이상의 구현예가 활용될 수 있는 하나의 예시적인 환경을 설명한다. 이것에 후속하여, "이종 스레드 스케줄링 상세"로 명칭이 부여된 섹션이, 하나 이상의 구현예에 따른 예시적인 상세 및 프로시져를 설명한다. 마지막으로, "예시적인 시스템"으로 명칭이 부여된 섹션이, 이종 스레드 스케줄링의 하나 이상의 구현예를 위해 활용될 수 있는 예시적인 컴퓨팅 시스템, 컴포넌트, 및 디바이스를 설명한다.
동작 환경
도 1은 하나 이상의 실시형태에 따른 동작 환경을 일반적으로 100에서 예시한다. 환경(100)은, 하나 이상의 프로세서 및 디바이스(예를 들면, CPU, GPU, 마이크로컨트롤러, 하드웨어 엘리먼트, 고정식 로직 디바이스, 등등)를 갖는 프로세싱 시스템(104), 하나 이상의 컴퓨터 판독가능 매체(106), 오퍼레이팅 시스템(108), 및 컴퓨터 판독가능 매체 상에 상주하며 프로세싱 시스템에 의해 실행가능한 하나 이상의 애플리케이션(110)을 구비하는 컴퓨팅 디바이스(102)를 포함한다. 프로세싱 시스템(104)은, 병렬 또는 직렬로 구성되는 다수의 독립적인 프로세서 및 하나 이상의 멀티코어 프로세싱 유닛을 포함하도록 구성될 수도 있다. 멀티코어 프로세싱 유닛은, 동일 칩 또는 집적 회로 상에 포함되는 두 개 이상의 프로세서("코어")를 구비할 수도 있다. 하나 이상의 구현예에서, 프로세싱 시스템(104)은, 하기에서 더 상세히 설명되는 바와 같이, 다양한 수행 성능(performance capability), 프로세싱 효율성, 및 전력 사용 특성을 제공하는 이종 코어의 세트를 포함할 수도 있다.
프로세싱 시스템(104)은, 게이밍, 사무 생산성, 이메일, 미디어 관리, 프린팅, 네트워킹, 웹 브라우징, 및 등등을 포함하지만 그러나 이들로 제한되지는 않는 광범위한 기능성(functionality)을 컴퓨팅 디바이스(102)로 제공하기 위해 애플리케이션(110)으로부터 컴퓨터 프로그램 명령어를 검색하여(retrieve) 실행할 수도 있다. 애플리케이션(110)에 관련되는 다양한 데이터 및 프로그램 파일이 또한 포함될 수 있는데, 그 예는 게임 파일, 사무 다큐먼트, 멀티미디어 파일, 이메일, 데이터 파일, 웹 페이지, 유저 프로파일 및/또는 선호도 데이터(preference data), 및 등등을 포함한다.
컴퓨팅 디바이스(102)는, 비제한적인 예로서, 게이밍 시스템, 데스크탑 컴퓨터, 휴대형 컴퓨터, 태블릿 또는 슬레이트 컴퓨터, 개인 휴대형 정보 단말(personal digital assistant; PDA)과 같은 핸드헬드 컴퓨터, 셀폰, 셋탑 박스, 웨어러블 디바이스(예를 들면, 워치, 밴드, 안경, 등등), 및 등등과 같은, 임의의 적절한 컴퓨팅 시스템 및/또는 디바이스로서 구체화될 수 있다. 예를 들면 도 1에서 도시되는 바와 같이, 컴퓨팅 디바이스(102)는 텔레비전 클라이언트 디바이스(112), 컴퓨터(114), 및/또는 미디어 컨텐츠를 디스플레이하는 디스플레이 디바이스(118)에 연결되는 게이밍 시스템(116)으로서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스는, 통합 디스플레이(122)를 포함하는 임의의 타입의 휴대형 컴퓨터, 이동 전화, 또는 휴대형 디바이스(120)일 수도 있다. 컴퓨팅 디바이스는 또한, 유저에 의해 착용되도록, 유저에게 부착되도록, 유저에 의해 휴대되도록, 또는 다르게는 유저에 의해 운반되도록 설계되는 웨어러블 디바이스(124)로서 구성될 수도 있다. 도 1에서 묘사되는 웨어러블 디바이스(124)의 예는, 안경, 스마트 밴드 또는 워치, 및 파드 디바이스(pod device) 예컨대 클립 온 피트니스 디바이스(clip-on fitness device), 미디어 플레이어, 또는 트래커를 포함한다. 웨어러블 디바이스(124)의 다른 예는, 몇몇의 이름을 거론하자면, 배지, 전자 열쇠(key fob), 액세스 카드, 및 반지, 의류 물품, 장갑, 또는 팔찌를 포함하지만 그러나 이들로 제한되지는 않는다. 컴퓨팅 디바이스 중 임의의 것은, 하나 이상의 프로세서 및 메모리 디바이스와 같은 다양한 컴포넌트뿐만 아니라, 상이한 컴포넌트의 임의의 조합과 함께 구현될 수 있다. 컴퓨팅 디바이스(102)를 포함하는 다양한 시스템 및/또는 디바이스를 나타낼 수 있는 컴퓨팅 시스템의 하나의 예는, 도 6과 관련하여 하기에서 도시되고 설명된다.
컴퓨터 판독가능 매체는, 비제한적인 예로서, 컴퓨팅 디바이스와 통상적으로 관련되는 모든 형태의 휘발성 및 불휘발성 메모리 및/또는 저장 매체를 포함할 수 있다. 이러한 매체는 ROM, RAM, 플래시 메모리, 하드 디스크, 착탈식 매체, 및 등등을 포함할 수 있다. 컴퓨터 판독가능 매체는, "컴퓨터 판독가능 저장 매체" 및 "통신 매체" 둘 다를 포함할 수 있는데, 이들의 예는 도 6의 예시적인 컴퓨팅 시스템의 논의에서 발견될 수 있다.
컴퓨팅 디바이스(102)는 또한, 상기 및 하기에서 설명되는 바와 같이 동작하는 전력 매니저 모듈(126) 및 스레드 스케줄러 모듈(128)을 포함할 수도 있다. 전력 매니저 모듈(126) 및 스레드 스케줄러 모듈(128)은, 하드웨어, 소프트웨어, 펌웨어, 및/또는 로직 디바이스의 임의의 적절한 조합을 사용하여 제공될 수도 있다. 예시되는 바와 같이, 전력 매니저 모듈(126) 및 스레드 스케줄러 모듈(128)은, 별개의 독립 모듈로서 구성될 수도 있다. 추가적으로 또는 대안적으로, 전력 매니저 모듈(126) 및 스레드 스케줄러 모듈(128)은 결합될 수도 있고 및/또는, 오퍼레이팅 시스템(108) 또는 다른 애플리케이션(110)의 통합된 컴포넌트인 것과 같이, 다른 모듈의 컴포넌트로서 구현될 수도 있다.
전력 매니저 모듈(126)은, 시스템 전반의 전력 관리 고려 사항을 평가하도록 그리고 평가에 기초하여 프로세서 및 코어의 이용가능성을 관리하도록 동작할 수 있는 기능성을 나타낸다. 이것은, 전체적인 작업 부하, 열적 조건, 유저 존재, 프로세서/코어 활용도(utilization) 및 효용성(utility), 프로세서/코어의 동시적 사용의 레벨 또는 "동시성", 적용 컨텍스트, 디바이스 컨텍스트, 우선 순위, 컨텍스트 단서, 및 시스템 레벨에서 전력 관리 결정을 구동하기 위해 사용될 수도 있는 다른 성능 메트릭을 포함하지만 그러나 이들로 제한되지는 않는 인자를 분석하는 것을 수반할 수도 있다. 전력 매니저 모듈(126)은, 시스템 전반의 성능 메트릭 및 상태의 평가에 기초하여 프로세싱 시스템(104)의 성능을 조정하기 위해, 전력 관리 정책을 적용하도록 구성될 수도 있다. 이것은, 프로세싱 시스템(104)과 함께 포함되는 이종 코어의 상태 및/또는 이용가능성을 제어하는 것을 수반할 수도 있다. 예를 들면, 전력 매니저 모듈(126)은, 미사용 코어를 저전력 모드("파킹된(parked)" 또는 "제한된" 상태)로 "파킹"하도록 그리고 높은 작업 부하 요구(workload demand) 하에서 코어를 더 높은 전력 모드("파킹해제된(unparked)" 또는 "이용가능한" 상태)로 "파킹해제"하도록, 코어 상태를 선택적으로 설정할 수도 있다. 전력 매니저 모듈(126)은 또한, 다음 번 평가까지 작업할 코어의 이용가능성을 전달하기 위해, 파킹된 코어 및 파킹해제된 코어의 선택에 관한 표시를 다른 컴포넌트로 전달할 수도 있다.
스레드 스케줄러 모듈(128)은, 이용가능한 프로세싱 리소스에 걸친 프로세싱 작업 부하의 할당을 관리하도록 동작할 수 있는 기능성을 나타낸다. 이것은, "스레드"로 칭해지는 작업의 단위를, 큐잉, 스케줄링, 우선 순위화, 및 이용가능한 프로세서 및/또는 코어에 걸쳐 디스패치하는 것을 포함할 수도 있다. 스레드 스케줄러 모듈(128)는, 스레드 고유의 정책에 따라 프로세싱 시스템의 코어에 걸쳐 작업 부하를 할당하기 위해, 상대적으로 높은 빈도수의 스레드 단위의 배치 결정을 행하도록 구성된다. 스레드 단위의 배치 결정은 전력 매니저 모듈(126)의 영향 하에서 행해질 수도 있다. 예를 들면, 스레드 스케줄러 모듈(128)에 의한 스레드의 배치는, 전력 매니저 모듈(126)에 의해 이루어지는 시스템 전반의 전력 관리 평가에 따라 이종 코어의 서브셋으로 제한될 수도 있다. 다시 말하면, 스레드 스케줄러 모듈(128)은, 전력 매니저 모듈(126)이 스레드 스케줄링에 대해 이용가능하게 만드는 코어(예를 들면, 파킹해제된 코어)로 제한될 수도 있다. 이종 스레드 스케줄링의 이들 및 다른 양태에 관한 상세는 후속하는 섹션에서 논의된다.
환경(100)은 또한, 컴퓨팅 디바이스(102)가 네트워크(130)를 통해 서비스 공급자(132)에 통신 가능하게 커플링될 수도 있다는 것을 더 묘사하는데, 이것은, 컴퓨팅 디바이스(102)가, 서비스 공급자(132)에 의해 이용가능하게 만들어지는 다양한 리소스(134)에 액세스하고 이들과 상호 작용하는 것을 가능하게 한다. 리소스(134)는, 하나 이상의 서비스 공급자에 의해 네트워크를 통해 통상적으로 이용가능하게 만들어지는 컨텐츠 및/또는 서비스의 임의의 적절한 조합을 포함할 수 있다. 예를 들면, 컨텐츠는, 텍스트, 비디오, 광고, 오디오, 멀티미디어 스트림, 애플리케이션, 애니메이션, 이미지, 웹페이지, 및 등등의 다양한 조합을 포함할 수 있다. 서비스의 몇몇 예는, 온라인 컴퓨팅 서비스(예를 들면, "클라우드" 컴퓨팅), 인증 서비스, 웹 기반의 애플리케이션, 파일 저장 및 협업 서비스, 검색 서비스, 이메일 및/또는 인스턴트 메시징과 같은 메시징 서비스, 및 소셜 네트워킹 서비스를 포함하지만, 그러나 이들로 제한되지는 않는다.
예시적인 동작 환경을 설명하였으므로, 이제, 이종 스레드 스케줄링의 하나 이상의 구현예와 관련되는 예시적인 상세 및 기술을 고려한다.
이종 스레드 스케줄링 상세
추가로 예시하기 위해, 본원에서 설명되는 바와 같은 이종 스레드 스케줄링을 제공하기 위해 활용될 수도 있는 예시적인 디바이스, 컴포넌트, 프로시져, 및 구현 상세의 논의를 이 섹션에서 고려한다. 일반적으로, 상기 및 하기의 예와 관련하여 설명되는 기능성, 피쳐, 및 개념은, 이 섹션에서 설명되는 예시적인 프로시져의 맥락에서 활용될 수도 있다. 또한, 본 문서의 상이한 도면 및 예와 관련하여 설명되는 기능성, 피쳐, 및 개념은 서로 간에 상호 교환될 수도 있고 특정한 도면 또는 프로시져의 맥락에서의 구현예로 제한되지는 않는다. 또한, 본원의 상이한 대표적 프로시져 및 대응하는 도면과 관련되는 블록은 함께 적용될 수도 있고 및/또는 상이한 방식으로 결합될 수도 있다. 따라서, 본원의 상이한 예시적 환경, 디바이스, 컴포넌트, 및 프로시져와 관련하여 설명되는 개개의 기능성, 피쳐, 및 개념은 임의의 적절한 조합으로 사용될 수도 있고 본 설명의 열거된 예에 의해 나타내어지는 특정한 조합으로 제한되지는 않는다.
예시적인 디바이스
도 2는, 하나 이상의 구현예에 따른, 이종 코어를 구비하는 컴퓨팅 디바이스(102)의 예시적인 상세를 일반적으로 200에서 묘사한다. 비제한적인 예로서, 프로세싱 시스템(104)은 성능 지향의 코어(202) 및 전력 효율적인 코어(204)를 구비하는 것으로 묘사된다. 성능 지향 코어(202)는 고성능을 위해 설계된 코어를 나타내고 전력 효율적인 코어(204)는 저전력을 소비하도록 설계된 코어를 나타낸다. 일반적으로, 성능 지향 코어(202)는 특정한 태스크/스레드의 완료를 위한 프로세싱 시간을, 전력 효율적인 코어(204)에 비해, 감소시키도록 구성된다. 마찬가지로, 전력 효율적인 코어(204)는 특정한 태스크/스레드의 완료를 위해, 성능 지향 코어(204)에 비해, 더 적은 전력을 소비하도록 구성된다. 두 개의 상이한 타입의 코어가 나타내어지지만, 성능과 전력 효율성 사이에 상이한 레벨의 밸런스를 제공하도록 구성되는 하나 이상의 타입의 코어와 같은, 상이한 성질(property)을 갖는 추가적인 타입의 코어가 포함될 수도 있다. 따라서, 프로세싱 시스템(104)은, 다양한 수행 성능, 프로세싱 효율성, 및 전력 사용 특성을 제공하는 이종 코어의 세트를 포함할 수도 있다. 본원에서 설명되는 이종 스레드 스케줄링은, 프로세싱 시스템(104)에 대한 이종 코어의 임의의 적절한 구성에 적용될 수도 있다.
비제한적인 예로서, 전력 매니저 모듈(126) 및 스레드 스케줄러 모듈(128)은, 도 2에서, 오퍼레이팅 시스템(108)의 컴포넌트로서 구현되는 것으로 예시된다. 예를 들면, 전력 매니저 모듈(126) 및 스레드 스케줄러 모듈(128)은, 오퍼레이팅 시스템(108)의 커널(206)의 로우 레벨 시스템 컴포넌트로서 구현될 수도 있다. 오퍼레이팅 시스템(108) 또는 다른 것의 컴포넌트로서의 다른 구현예도 또한 고려된다. 상기에서 언급되는 바와 같이, 전력 매니저 모듈(126)은, 다양한 성능 메트릭에 기초하여 시스템 전반의 전력 관리 평가를 행하도록 동작할 수 있는 기능성을 나타내는데, 다양한 성능 메트릭의 예는 상기에서 그리고 하기에서 언급된다. 그 다음, 전력 매니저 모듈(126)은, 코어를 적절히 활성화시키거나 또는 비활성화시키도록, 이종 코어와 관련되는 코어 상태(208)를 설정할 수도 있다. 코어 상태(208)는, 앞서 언급된 바와 같은, 파킹된 또는 제한된 상태, 파킹해제된 또는 제한되지 않은 상태를 포함할 수도 있다. 코어가 전체 성능 중 어떤 비율 또는 부분(fraction)에서 동작하도록 설정될 수도 있는 "스로틀링된" 상태와 같은 다른 중간 상태가 또한 고려된다. 따라서, 전력 매니저 모듈(126)은, 성능 메트릭에 의해 나타내어지는 바와 같은 동작 컨텍스트를 전력 관리 액션 및 코어 상태에 관련시키는 전력 관리 정책을 구현할 수도 있고, 전력 관리 정책에 따라 대응하는 상태로 진입할 것을 코어에게 지시할 수도 있다. 하나 이상의 구현예에서, 전력 매니저 모듈(126)은 다음 번 간격 동안(예를 들면, 다음 번 평가 이전에) 코어의 이용가능성을 제어하기 위해 주기적 간격으로 평가를 행하도록 동작할 수도 있다. 자연적으로, 요구에 따른(on demand) 비주기적 평가도 활용될 수도 있다. 전력 관리 평가, 코어 상태, 및 전력 매니저 모듈(126)에 의해 나타내어지는 다른 기능성에 관한 추가 상세는, 다음의 예시적인 프로시져와 관련하여 발견될 수 있다.
상기에서 언급되는 바와 같이, 스레드 스케줄러 모듈(128)은, 이용가능한 프로세싱 리소스에 걸친 프로세싱 작업 부하의 할당을 관리하도록 동작할 수 있는 기능성을 나타낸다. 스레드 스케줄러 모듈(128)을 통해 이루어지는 배치 결정은, 일반적으로, 전력 매니저 모듈(126)에 의해 이루어지는 평가보다 더 높은 빈도수에서 스레드 단위로 이루어진다. 비제한적인 예로서, 스레드는 약 10 밀리초 아래의 간격에서 스케줄링될 수도 있고, 반면 전력 관리 평가는 약 30 밀리초 또는 그 이상의 간격에서 발생할 수도 있다.
스레드 스케줄러 모듈(128)은, 전력 매니저 모듈(126)에 의해 이용가능하게 만들어지는 이종 코어의 서브셋 사이에서 작업을 할당하기 위해, 스레드 정책(208)을 할당 및 적용하도록 구성될 수도 있다. 스레드 정책(208)은, 프로세싱 시스템(104)과 함께 포함되는 이종 코어의 상이한 타입의 코어에 작업을 배치하기 위한 스레드 고유의 전략을 반영한다. 스레드 정책(208)은, 애플리케이션 타입, 우선 순위, 활동 타입, 스레드 카테고리, 태스크 사이즈, 시간 데드라인, 및 스레드 및 프로세스를 분류하기에 적절할 수도 있는 다른 파라미터와 같은 다양한 기준에 기초하여 할당될 수도 있다. 스레드 정책은, 상이한 타입의 코어와 관련되는 상이한 수행 성능, 프로세싱 효율성, 및 전력 사용 특성과 같은 이종 코어의 비대칭 성질을 고려하도록 구성된다.
한 구현예에서, 복수의 상이한 스레드 정책(208)이 시스템에 의해 정의될 수도 있고 지원될 수도 있다. 스레드 정책은, 예컨대 파라미터의 값을, 대응하는 스레드 정책을 나타내는 상이한 수치적 값으로 설정하는 것에 의해, 스레드와 관련되는 정책 속성(attribute)을 통해 나타내어질 수도 있다. 스레드 정책은 애플리케이션에 의해 선택될 수도 있거나 또는 요청될 수도 있다. 추가적으로 또는 대안적으로, 스레드 스케줄러 모듈(128)는 상기에서 언급되는 바와 같은 다양한 기준을 평가할 수도 있고 개별 스레드를 적절한 정책에 매치시킬 수도 있다. 스레드 스케줄러 모듈(128)은 또한, 애플리케이션에 의해 명시되는 정책을 오버라이드하도록 구성될 수도 있다. 스레드 스케줄링, 스레드 정책(208), 및 스레드 스케줄러 모듈(128)에 의해 나타내어지는 다른 기능성에 관한 추가적인 상세는 다음의 예시적인 프로시져와 관련하여 발견될 수 있다.
예시적인 프로시져
이종 스레드 스케줄링 기술의 추가적인 양태가, 도 3 내지 도 5의 예시적인 프로시져와 관련하여 논의된다. 본 문서에서 설명되는 프로시져는, 본원에서 설명되는 환경, 시스템, 디바이스, 및 컴포넌트를 활용하여 그리고 임의의 적절한 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합과 연계하여 구현될 수도 있다. 프로시져는, 하나 이상의 엔티티에 의해 수행되는 동작을 명시하는 블록의 세트로서 나타내어지며, 각각의 블록에 의한 동작을 수행하기 위한 도시된 순서로 반드시 제한되지는 않는다.
도 3은, 하나 이상의 구현예에 따른, 이종 코어 사이에서의 스레드의 할당을 위한 예시적인 프로시져(300)의 상세를 설명하는 흐름도이다. 프로시져(300)는 적절하게 구성된 컴퓨팅 디바이스에 의해, 예컨대 오퍼레이팅 시스템(108) 및/또는 도 1 및 도 2의 예시적인 컴퓨팅 디바이스와 관련하여 설명되는 다른 기능성에 의해 구현될 수 있다. 프로시져(300)와 관련하여 논의되는 개별 동작 및 상세는 또한, 도 4 및 도 5의 예시적인 프로시져와 관련하여 본원에서 논의되는 동작 및 상세와 다양한 방식으로 결합될 수도 있다.
전력 효율적인 코어 및 성능 지향 코어를 포함하는 이종 코어를 구비하는 프로세싱 시스템에 대한 동작 컨텍스트가 주기적으로 분석된다(블록 302). 예를 들면, 오퍼레이팅 시스템(108)은, 동작 컨텍스트를 인식하기 위해 성능 메트릭을 평가하도록 그리고 동작 컨텍스트에 기초하여 시스템 전반의 전력 관리 결정을 행하도록 구성될 수도 있다. 비제한적인 예로서, 동작 컨텍스트는, 전체 작업 부하, 프로세서/코어 사이에서의 작업 부하 분배, 열적 조건, 유저 존재의 표시, 전력 가용성(예를 들면, 배터리 레벨, 전원 연결, 등등), 애플리케이션 타입, 작업 카테고리, 우선 순위 설정, 및 등등 중 하나 이상의 조합을 반영할 수도 있다. 평가는 본원에서 설명되는 바와 같이 전력 매니저 모듈(126)을 통해, 또는 동등한 기능성을 통해 이루어질 수도 있다.
스레드 스케줄링을 위해 전력 효율적인 코어 및 성능 지향 코어의 활성화를 제어하도록, 동작 컨텍스트에 기초하여 이종 코어 중 적어도 일부에 대해 코어 상태가 설정된다(블록 304). 예를 들면, 분석의 대상인 프로세싱 시스템(104)은, 동작 컨텍스트 및 전력 관리 정책의 분석에 기초하여 선택적으로 활성화될 수도 있거나 또는 비활성화될 수도 있는 이종 코어를 포함할 수도 있다. 전력 관리 정책은, 상이한 동작 컨텍스트에서 이종 시스템 중 어떤 코어가 파킹되고 파킹해제되는지를 정의하도록 구성될 수도 있다. 예를 들면, 낮은 배터리 상태에서는, 전력을 절약하기 위해, 하나 이상의 성능 지향 코어가 아이들 상태에서 파킹될 수도 있고 및/또는 하나 이상의 전력 효율적인 코어가 활성 상태로 파킹해제되어 작업 부하를 서비스할 수도 있다. 다른 예에서, 온도 임계치에 도달하는 임의의 타입의 코어는, 과열 및 손상을 방지하기 위해 파킹될 수도 있다. 하나 이상의 코어가 파킹되면, 다른 코어의 상태는, 현재 작업 부하를 핸들링할 용량을 제공하기 위해, 상응하게 조정될 수도 있다. 이종 시스템의 상이한 타입의 코어의 다양하고 상이한 조합이, 상이한 동작 컨텍스트를 핸들링하기 위한 전력 관리 정책에 의해 지정될 수도 있다. 여기서, 오퍼레이팅 시스템(108)은 동작 컨텍스트의 인식에 응답하여 정책을 적용하여, 전력 관리 정책에 의해 명시되는 코어 상태에서의 대응하는 변경을 지시하도록 구성될 수도 있다. 전력 관리 정책은 성능과 전력 사용 간의 균형 잡힌 해결책을 찾도록 설계 결정을 반영할 수도 있다. 또한, 전력 관리 정책은, 밸런스를 성능 쪽으로 치우치게 하도록 또는 효율적인 전력 사용 쪽으로 치우치게 하도록 개발자 및/또는 유저에 의해 구성가능할 수도 있다. 전력 관리 정책의 적용 및 이종 코어의 상태를 제어하는 것에 관한 추가 상세는, 도 5의 예시적인 프로시져와 관련하여 하기에서 논의된다.
이종 코어에 대한 스레드 스케줄링은, 동작 컨텍스트에 기초하여 이루어지는 코어 상태 선택 및 전력 관리 정책의 영향 하에서 수행될 수도 있다. 특히, 개별 스레드는, 이종 코어의 활성 코어 사이에 개별 스레드를 스레드 단위 기반으로 할당하기 위해, 주기적인 분석에 기초하여 설정되는 코어 상태에 의존하여 스케줄링된다(블록 306). 예를 들면, 오퍼레이팅 시스템(108)은, 스레드 스케줄러 모듈(128) 또는 앞서 논의된 바와 같이 높은 빈도수의 스레드 배치 결정을 행하도록 구성되는 동등한 기능성을 포함할 수도 있다. 스레드 배치는, 시스템 전반의 전력 관리 정책의 주기적 평가에 기초하여 스레드 스케줄링에 대해 이용가능하게 만들어지는 이종 코어의 서브셋으로 제한될 수도 있다. 또한, 개별 스레드와 관련되는 스레드 정책(210)은, 사용할 코어의 선호되는(preferred) 세트가 이용가능한 경우, 사용할 코어의 선호되는 세트를 및/또는 선호되는 코어가 이용가능하지 않은 경우 사용될 수 있는 허용가능한 코어 세트를 지정할 수도 있다. 스레드 정책(210)은, 이종 코어, 하나 이상의 상이한 타입의 코어, 및/또는 대응하는 스레드가 실행하도록 허용되는 특정한 개별 코어의 조합을 명시하도록 다양한 방식으로 구성될 수도 있다. 스레드 정책에 따르면, 선호되는 코어가 지정되면 선호되는 코어에 우선 순위가 주어질 수도 있고, 그 다음, 허용가능한 코어의 더 넓은 세트가 지정되면 허용가능한 코어의 더 넓은 세트로부터 코어가 선택될 수도 있다. 스레드 정책의 적용 및 높은 빈도수의 스레드 배치 결정에 관한 추가적인 상세는, 도 4의 예시적인 프로시져와 관련하여 하기에서 논의된다.
도 4는, 하나 이상의 구현예에 따른, 스레드 정책에 기초한 스레드 스케줄링을 위한 예시적인 프로시져(400)의 상세를 설명하는 흐름도이다. 프로시져(400)는 적절하게 구성된 컴퓨팅 디바이스에 의해, 예컨대 스레드 스케줄러 모듈(128) 및/또는 도 1 및 도 2의 예시적인 컴퓨팅 디바이스와 관련하여 설명되는 다른 기능성에 의해 구현될 수 있다. 프로시져(400)와 관련하여 논의되는 개별 동작 및 상세는 또한, 도 3 및 도 5의 예시적인 프로시져와 관련하여 본원에서 논의되는 동작 및 상세와 다양한 방식으로 결합될 수도 있다.
프로세싱 시스템의 이종 코어 사이에서의 스레드의 할당에 대한 기준을 명시하는 스레드 정책이 개별 스레드에 할당된다(블록 402). 예를 들면, 스레드 스케줄러 모듈(128)은, 본 문헌 전체에 걸쳐 설명되는 높은 빈도수의(예를 들면, 스레드 단위의) 배치 결정의 일부로서, 스레드 정책을 확립하도록, 유지하도록, 그리고 스레드로 할당하도록 동작할 수도 있다. 스레드 정책(210)은, 이종 코어, 하나 이상의 상이한 타입의 코어, 및/또는 대응하는 스레드가 실행하도록 허용되는 특정한 개별 코어의 조합을 명시하도록 다양한 방식으로 구성될 수도 있다. 하나 이상의 구현예에서, 스레드 정책은, 예컨대 비트 맵, 데이터 스트링, 스레드 성질, 매핑 데이터베이스, 또는 선호되는 코어, 허용된 코어 및/또는 제한되는 코어의 표시를 포함할 수도 있는 코어 동질 관계(core affinity)를 스레드 단위 기반으로 나타내도록 구성되는 다른 적절한 데이터 구조체를 사용하는 것에 의해, 허용된 코어를 스레드로 매핑하는 컴팩트한 표현을 생성하기 위해 사용된다.
스레드 정책을 제정하고 할당하기 위해 다양한 기준이 활용될 수도 있다. 예를 들면, 스레드 정책은, 애플리케이션 타입, 우선 순위, 활동 타입, 스레드 카테고리, 태스크 사이즈, 시간 데드라인, 유저 가시성 표시, 및/또는 스레드 및 프로세스를 분류하는 데 적합한 파라미터의 다른 조합 중 하나 이상에 기초하여 확립될 수도 있다. 따라서, 스레드 정책(210)은, 하기에서 더 상세히 설명되는 바와 같이, 다양한 수행 성능, 프로세싱 효율성, 및 전력 사용 특성을 제공하는 이종 코어의 세트 사이에서의 개별 스레드 및 전체 작업 부하의 분배를 제어하도록 구성될 수도 있다. 다시 말하면, 이종 코어는, 상이한 성능, 효율성, 및/또는 전력 사용 특성을 갖는 두 개 이상의 상이한 타입의 코어를 포함할 수도 있다.
예를 들면, 스레드 정책은 전력 효율적인 코어에 낮은 우선 순위 스레드의 배치를 야기하도록 확립될 수도 있고 반면 시간 데드라인 및 높은 우선 순위를 갖는 스레드는 성능 지향 코어와 함께 배치될 수도 있다. 상이한 종류의 애플리케이션 및 상이한 타입의 작업에 대해, 코어의 상이한 조합이 또한 명시될 수도 있다. 전력과 성능 사이의 선택을 스케줄링하는 것, 디바이스 성능을 유저에게 보여주기 위해 가시적인 시나리오의 성능을 우선시하는 것, 유저가 성능 차이를 인지할 수 없을 수도 있는 상황에서 전력 사용을 최소로 하는 것, 성능에 큰 영향을 줄 가능성을 가질 수도 있는 스레드를 가속시키기에 가능한 정도까지, 스케줄링에 이용할 수 있게 만들어진 코어의 서브셋에 걸쳐 작업 부하를 구획하는 것, 및/또는 다양한 특성을 갖는 상이한 이종 코어의 믹스를 사용하고 재빨리 전환하는 것에 의해, 통상적인 동작 조건 하에서 성능과 전력 사용 사이에 밸런스를 제공하는 것을 튜닝하는 능력을 포함하지만 이것으로 제한되지는 않는 다양한 설계 목표를 구현하도록 스레드 정책이 확립될 수도 있다.
또한, 스레드 정책은 기준의 조합을 중심으로 편제되는 상이한 스레드 카테고리에 대응할 수도 있는데, 그 몇몇 예는 상기에서 언급되었다. 예를 들면, 애플리케이션 론칭 스레드, 메시지 통지 스레드, 및 웹 페이지 다운로드 스레드는, 빠른 느낌을 주기 위해, 성능 지향 코어에 배치될 수도 있다. 한편, 백그라운드 태스크, 예컨대 업데이트의 다운로드, 확장 설치(extended install), 및 다른 오래 실행하는 스레드는 전력 효율적인 코어 상에 배치될 수도 있는데, 이들 태스크가 시간에 덜 민감하고 및/또는 유저에게 덜 가시적일 수도 있기 때문이다. 스레드 정책은, 개별 스레드와 함께 사용될 수도 있는 이종 시스템의 코어를 식별하도록 사용될 수도 있다.
다른 예에서, 상이한 타입의 스레드를, 예상된 응답에 기초하여 카테고리로 편제하는 상호 작용 클래스가 정의될 수도 있다. 예로서, 상호 작용 클래스의 세트는, 성능에 크게 영향을 줄 정도로 충분히 길지 않을 수도 있는 짧게 실행하는 스레드(예를 들면, 대략 50 내지 300 밀리초)에 대한 인스턴트 클래스, 다소 더 길게 실행하는(예를 들면, 대략 300 내지 1000 밀리초) 반복적인 시나리오 및 성능에 더 많은 영향을 끼칠 수도 있는 높은 가시성을 갖는 시나리오에 대한 일반 클래스, 성능 부스트로부터 상당한 이익을 얻을 수도 있는 실질적인 작업 부하(예를 들면, 대략 1 내지 10 초)를 갖는 스레드에 대한 응답 클래스, 및 열적 제약과 확장된 시간프레임 및 성능 이득에 대한 상대적으로 낮은 잠재성을 가질 수도 있으며, 따라서 우선 순위가 제거될(deprioritized) 양호한 후보인 길게 실행하는 스레드(예를 들면, 대략 10 내지 600초)에 대한 확장 클래스를 포함할 수도 있다. 그 다음, 상이한 상호 작용 클래스를 핸들링하고 이종 코어 사이에서 선택하는 스케줄링 전략이 상호 작용 클래스와 관련되는 스레드 정책에 의해 반영될 수도 있다.
상기에서 언급되는 바와 같이, 스레드 정책은, 예컨대 정책 속성의 값을, 대응하는 스레드 정책을 나타내는 상이한 수치 값으로 설정하는 것에 의해, 스레드와 관련되는 정책 속성을 통해 나타내어질 수도 있다. 또한, 정책 속성은, 사용할 코어의 선호되는 세트가 이용가능한 경우, 사용할 선호되는 코어 세트 및/또는 선호되는 코어가 이용가능하지 않은 경우 사용될 수 있는 허용가능한 코어 세트와 같은 코어 동질 관계를 지정하도록 구성될 수도 있다.
두 타입의 코어를 구비하는 이종 시스템, 예컨대 성능 지향 코어(202) 및 전력 효율적인 코어(204)를 구비하는 도 2의 예시적인 컴퓨팅 디바이스 상에서의 스케줄링을 위해 상이한 스레드 정책이 확립될 수도 있고 나타내어질 수도 있는 예시적인 예를 고려한다. 이 예에서는, 여섯 개의 상이한 정책이 정의되고, "0"과 "5" 사이의 값을 취할 수도 있는 상기에서 언급되는 바와 같은 정책 속성을 사용하여 스레드와 관련된다. 0의 값은, 스레드에 대해 어떠한 정책도 정의되지 않는다는 것을 나타내는데, 이 경우, 스레드는 코어의 타입에 무관하게 임의의 이용가능한 코어 상에 배치될 수도 있다. 1의 값은, 배치가 기준의 평가에 기초한다는 것을 나타낸다. 이 경우, 스레드 스케줄러 모듈(128)은, 우선 순위, 코어 활용도, 작업 부하 및 스레드를 배치하기 위한 다른 고려 사항을 평가하도록 동작할 수도 있다. 1의 값은 스레드 스케줄러 모듈(128)에 대한 의사 결정을 효과적으로 지연시킨다. 2의 값은, 현재 어느 것도 이용가능하지 않더라도 성능 지향 코어(202)가 사용되어야 한다는 것을 지정한다. 다시 말하면, 2의 값은, 전력 효율적인 코어(204)가 사용되지 않아야 한다는 것을 나타낸다. 3의 값은, 성능 지향 코어(202)가 선호되지만 그러나 코어 가용성에 기초하여 아이들 상태의 전력 효율적인 코어(204)도 또한 사용될 수도 있다는 것을 나타낸다. 4의 값은, 현재 어느 것도 이용가능하지 않더라도 전력 효율적인 코어(204)가 사용되어야 한다는 것을 나타낸다(예를 들면, 성능 지향 코어(202)를 사용하지 않는다). 5의 값은, 전력 효율적인 코어(204)가 선호되지만 그러나 코어 가용성에 기초하여 아이들 상태의 성능 지향 코어(202)도 또한 사용될 수도 있다는 것을 나타낸다. 자연적으로, 상이한 정책의 수 및 종류는 상이한 구현예에서 변할 수도 있다. 추가적으로, 스케줄링을 위해 이용가능한 두 개보다 많은 상이한 타입의 코어를 구비할 수도 있는 다른 이종 시스템에 대해, 동등한 정책이 확립될 수도 있다.
주기적으로 적용되는 전력 관리 정책에 따라 스레드 스케줄링에 대해 활성인 것으로 선택되는 이종 코어의 서브셋이 확인된다(블록 404). 예를 들면, 스레드 스케줄러 모듈(128)는 코어 상태 데이터에 관한 표시를 임의의 적절한 방식으로 획득할 수도 있다. 코어 상태 데이터는, 예컨대 비트 맵, 테이블, 이진 스트링, 매핑 데이터베이스, 또는 파킹된 것 또는 파킹해제된 것과 같은 상태를 나타내기 위한 다른 표현을 사용하는 것에 의해, 현재 시간 기간 동안 스케줄링에 이용가능한 코어를 나타내도록 다양한 방식으로 구성될 수도 있다. 코어 상태 데이터는, 본 문헌에서 앞서 논의된 바와 같이 시스템 전반의 전력 관리의 평가에 기초하여, 뿐만 아니라 후속하는 도 5의 예시적인 프로시져와 관련하여 생성될 수도 있다. 예를 들면, 스레드 스케줄러 모듈(128)은, 이종 코어에 대한 코어 상태에 관한 표시를 제공하도록 구성되는 전력 매니저 모듈(126)로부터의 호출을 통해 코어 상태 데이터를 수신할 수도 있다. 그 다음, 스레드 스케줄러 모듈(128)은 코어 상태 데이터를 분석하여, 스케줄링에 이용가능한 이종 코어의 서브셋을 결정할 수도 있다.
스레드는, 이종 코어의 서브셋 사이에서 그리고 개별 스레드에 할당되는 스레드 정책에 따라 스레드 단위 기반으로 할당된다(블록 406). 예를 들면, 스레드 스케줄러 모듈(128)은, 전력 관리 정책의 적용에 의해 부과되는 제약 하에서 상이한 스레드와 관련되는 스레드 정책을 사용하여 스케줄링을 수행할 수도 있다. 특히, 스레드 스케줄러 모듈(128)은, 블록 404에 따라 확인되는 이종 코어의 서브셋을 사용하는 스케줄링으로 제한된다. 따라서, 스케줄링은, 각각의 스케줄링 이벤트에 대한 사용가능한 코어를 유도하기 위해, 이용가능한 코어를 나타내는 코어 상태 데이터를, 각각의 스레드에 대한 코어 동질 관계를 나타내는 스레드 정책과 조정하는 것을 수반할 수도 있다. 사용가능한 코어의 세트는, 코어 상태 데이터에 의해 나타내어지는 이용가능성과 스레드 정책에 의해 반영되는 코어 동질 관계 사이의 공통부분을 반영한다. 따라서, 특정한 스레드에 할당되는 스레드 정책은, 그 특정한 스레드에 대한 코어 동질 관계를 결정하기 위해 사용될 수도 있고, 스레드는, 결정되는 코어 동질 관계에 따라 이종 코어 중 하나와 함께 배치될 수도 있다.
일반적으로, 코어 상태 데이터에 의해 반영되는 시스템 전반의 제약 및 스레드 정책에 의해 반영되는 스레드 동질 관계 둘 다는 스케줄링 프로세스에서 고수된다. 하나의 접근 방식에서, 파킹되지 않은 코어 아이들 상태의 코어는 파킹된 코어 또는 활성의 코어에 우선하여 목표로 될 수도 있고, 스레드의 할당된 선호도와 관련되는 코어가 먼저 선택될 수도 있다. 아이들 상태인 선호되는 코어가 존재하지 않으면, 스레드는 아이들 상태를 허용하는 코어를 사용하여 스케줄링될 수도 있다. 스레드 동질 관계에 따른 코어의 배치는, 사용가능한 코어 내에서 적절한 아이들 코어를 찾는 것에 의존한다. 배치에 이용가능한 선호되는 코어 또는 허용가능한 코어가 존재하지 않는 경우, 스케줄링은 우선 순위 기반의 스케줄링으로 전환되어, 파킹되지 않은 코어에 걸쳐 스레드를 할당할 수도 있다. 우선 순위 기반의 스케줄링은, 허용가능한 코어의 세트를 목표로 할 수도 있고 및/또는 이미 비지 상태인 프로세서(busy processor) 상에 스레드를 스케줄링하는 오버라이드 알고리즘을 적용하는 것을 수반할 수도 있다.
도 5는, 하나 이상의 구현예에 따른, 프로세싱 시스템의 이종 코어의 상태를 선택적으로 제어하기 위한 예시적인 프로시져(500)의 상세를 설명하는 흐름도이다. 프로시져(500)는 적절하게 구성된 컴퓨팅 디바이스에 의해, 예컨대 전력 매니저 모듈(126) 및/또는 도 1 및 도 2의 예시적인 컴퓨팅 디바이스와 관련하여 설명되는 다른 기능성에 의해 구현될 수 있다. 프로시져(500)와 관련하여 논의되는 개별 동작 및 상세는 또한, 도 3 및 도 4의 예시적인 프로시져와 관련하여 본원에서 논의되는 동작 및 상세와 다양한 방식으로 결합될 수도 있다.
전력 효율적인 코어 및 성능 지향 코어를 포함하는 이종 코어를 구비하는 프로세싱 시스템에 대한 다수의 성능 메트릭이 시간 기간에 걸쳐 추적된다(블록 502). 그 다음, 다수의 성능 메트릭의 분석에 기초하여 후속하는 시간 기간 동안 이종 코어를 선택적으로 활성화하고 비활성화하기 위해, 전력 관리 정책이 적용된다(블록 504). 예를 들면, 전력 매니저 모듈(126)은, 본 문헌의 전체에 걸쳐 설명되는 주기적인 전력 관리 평가의 일부로서, 프로세싱 시스템에 대한 동작 컨텍스트를 나타내는 다양한 성능 메트릭을 추적하도록 동작할 수도 있다. 메트릭의 다양한 타입 및 조합이 고려되는데, 그 예는 앞서 논의되었다. 그 다음, 전력 매니저 모듈(126)은, 상대적으로 낮은 빈도수의 전력 관리 평가를 행하고 이종 코어에 대한 활성화 상태를 상응하게 제어하기 위해, 추적되는 메트릭을 활용할 수도 있다. 이것은, 전력 관리 정책에 따라 전력 효율적인 코어 및 성능 지향 코어에 대한 코어 상태의 변경을 야기하는 것을 수반할 수도 있다.
이종 코어 중에서 후속하는 시간 기간 동안 스레드 스케줄링에 이용가능한 코어를 스레드 스케줄러가 식별하는 것을 가능하게 하고 후속하는 시간 기간 동안 식별된 코어 사이에서 개별 스레드를 할당하기에 충분한 코어 상태 데이터가 스레드 스케줄러로 전달된다(블록 506). 예를 들면, 전력 매니저 모듈(126)은, 다양한 형태로 구성될 수도 있는 파킹된 코어 및 파킹되지 않은 코어를 나타내는 코어 상태 데이터를 생성할 수도 있다. 예로서, 이종 코어의 시스템에 대한 코어 상태(208)는, 비트 맵, 테이블, 이진 스트링, 매핑 데이터베이스, 코어 ID의 리스트, 매트릭스, 또는 다른 표현을 통해, 스레드 스케줄러 모듈(128) 및/또는 다른 컴포넌트로 전달될 수도 있다. 그 다음, 스레드 스케줄러 모듈(128)은, 상기에서, 그리고 본 문헌의 그 밖의 곳에서 도 4의 프로시져와 관련하여 논의되는 바와 같이 스케줄링에 이용가능한 코어의 서브셋을 유도하기 위해, 코어 상태 데이터를 활용할 수도 있다.
하나 이상의 구현예에서, 시스템 레벨 전력 관리를 위해 사용되는 메트릭은, 시간 기간에 걸쳐 추적되는 이종 코어에 대한 동시성 인자 및 효용성 인자를 적어도 포함할 수도 있다. 효용성 인자는, 시간 기간에 걸쳐 작업이 얼마나 잘 수행되고 있는지의 표시이고 이종 코어의 활용도(예를 들면, 시간 기간 동안 코어가 어떻게 점유되고 있는지)에 그리고 이종 코어의 성능 레벨(예를 들면, 코어가 실행하는 빈도수)에 비례할 수도 있다. 동시성 인자는, 이종 코어의 다수의 코어가 함께 실행하고 있는 시간의 양의 표시이다. 이 경우, 후속하는 시간 기간 동안 어떤 코어를 활성화 및/또는 비활성화할지에 관한 결정은, 적어도 코어 효용성 및/또는 코어 동시성 인자의 조합에 의존할 수도 있다. 코어 효용성 및 코어 동시성 인자는, 후속하는 시간 기간 동안 파킹할 그리고 파킹해제할 이종 시스템의 코어의 수 및 타입을 계산하도록 활용될 수도 있다. 코어 효용성 및 코어 동시성 인자를 다양한 방식으로 통합하도록 구성되는 다양한 전력 관리 정책 및 대응하는 코어 활성화 알고리즘이 고려된다.
예시적인 코어 활성화 알고리즘
추가로 예시하기 위해, 코어를 선택적으로 파킹하고 파킹해제하기 위해 하나 이상의 구현예에서 활용될 수도 있는 다음의 예시적인 코어 활성화 알고리즘을 고려한다. 예시적인 코어 활성화 알고리즘은 단지 하나의 예시적인 예로서만 제공되며 본원에서 설명되는 기술은 예시적인 알고리즘으로 제한되도록 의도되지는 않는다.
앞선 논의에 따르면, 예시적인 코어 활성화 알고리즘은, 다음 번 기간 동안의 코어 상태를 선택하기 위해, 이전 기간의 총 효용성 및 동시성의 조합을 사용한다. 코어의 동시적 활동의 히스토그램 표현이 주어지는 가장 작은 가능한 수의 코어 상으로 활용도가 한 데 모인다는(packed) 것을 가정하면, 총 효용성은 활성 코어의 추정 활용도에 걸쳐 분산된다. 그 다음, 이 효용성은, 다음 번 기간 동안 파킹할 또는 파킹해제할 코어를 결정하기 위해, 임계치의 세트에 대해 체크된다. 예를 들면, 코어 및/또는 코어의 각각의 개별 타입의 총 수를 증가시킬지 또는 감소시킬지의 여부를 제어하기 위해, 임계치가 확립될 수도 있다. 임계치의 증가 및 감소는, 상이한 타입의 코어에 대해 독립적으로 선택될 수 있다. 각각의 특정한 코어 타입과 관련하여, 후속하는 성능 지향 코어를 파킹해제하기 위해서 보다 제1 성능 지향 코어를 파킹해제하기 위해서 더 높은 비용을 고려하는(제2 코어가 제1 코어와 공통 전력 리소스를 공유할 수도 있기 때문이다) 정책을 허용하기 위해, 제1 코어 대 후속 코어에 대해, 임계치가 독립적으로 또한 선택될 수도 있다. 마찬가지로, 제3 또는 더 나중의 고성능 코어를 파킹해제하기 위해 고유의 임계치가 적용될 수 있다.
이 맥락에서, 파킹해제된 코어의 카운트는 다음의 방식으로 계산될 수도 있다:
코어 카운트 계산
N은 시스템 상에서의 코어의 총 수이다.
Ci는, 동시에 실행하는 i개의 코어가 소비한 시간의 양이며, 동시 실행 시간으로 칭해진다. UT는 머신 상에서 달성되는 총 효용성이다.
T는 총 경과 시간이다:
Zk는 k 번째 프로세서의 활용도인데, 동시 실행 시간의 분산을 충족할 수 있는 프로세서의 최소 세트 상에 모든 작업이 한 데 모인다는 것을 가정한다.
ZT는 시스템의 총 활용도이다(여기서 1은 단일의 완전히 점유된 프로세서를 나타낸다):
Ui는, 활용도에 비례하는 효용성의 최밀 충전(close packing) 및 분산을 가정한, i 번째 코어의 추정된 효용성이다:
Ui는, 코어가 파킹해제되어야 하는지를 결정하기 위해, 상위(upper) "증가" 임계치(이것은 i의 값마다, 예를 들면, 코어마다 개별적으로 설정될 수 있다)에 비교된다. Ui가 이 임계치 미만이면, 코어가 파킹되어야 하는지를 결정하기 위해, Ui는 상이한 하위 "감소" 임계치에 비교된다. 따라서, 하나 이상의 개별 코어에 대한 효용성은, 이종 코어에 대한 총 효용성 인자 및 동시성 인자에 기초하여 계산될 수도 있다. 그 다음, 하나 이상의 개별 코어에 대한 효용성은, 코어를 활성화할지 또는 비활성화할지의 여부를 결정하기 위해, 코어에 대해 설정되는 임계치에 비교된다. 예를 들면, 효용성이 상위 임계치를 초과하면, 코어는 파킹해제될 수도 있다(예를 들면, 활성화될 수도 있다). 효용성이 하위 임계치 미만이면, 코어는 파킹될 수도 있다(예를 들면, 비활성화될 수도 있다).
성능 지향 코어 및 전력 효율적인 코어의 조합을 구비하는 시스템의 경우에, 상기의 효용성 계산은, 성능 지향 코어에 대한 수 및 코어 상태를 결정하기 위해 사용될 수도 있다. 몇몇 구현예에서, 전력 효율적인 코어를 비롯한 다른 타입의 코어에 대한 수 및 코어 상태를 결정하기 위해, 동등한 효용성 계산 및 임계치가 사용될 수도 있다.
더 낮은 빈도수로 실행하는 코어의 다른 타입에 의해 코어의 효용성이 차감될(offset) 수 있는 이상 상황(anomaly)을 방지하기 위해, i 번째로 가장 많이 활용되는 코어의 실제 측정된 효용성은, 만약 그것이 추정된 효용성보다 더 높으면, 사용될 수도 있다. 추가적으로, 성능에 대한 요구에 대한 빠른 응답을 위해, 코어 활성화 알고리즘은, 관측된 요구의 단일의 싸이클 이후에 성능 지향 코어(또는 다른 타입의 코어)의 이용가능한 카운트를 증가시키도록 구성될 수도 있다. 그러나, 코어의 수를 감소시키는 것은, 관측된 더 가벼운 요구의 다수의 싸이클을 필요로 할 수도 있다. 예를 들면, 코어 활성화 알고리즘은, 코어를 파킹하기 이전에, 낮은 요구의 세 개의 연속하는 싸이클을 관측하도록 설정될 수도 있다. 코어 카운트를 증가 및 감소 둘 다를 하기 위한 싸이클의 수는, 구성가능한 파라미터에 따라 제어될 수도 있다.
상기의 예시적인 상세 및 기술을 고려하였으므로, 이제, 이종 스레드 스케줄링의 하나 이상의 구현예에서 활용될 수도 있는 예시적인 시스템 및 컴포넌트의 논의를 고려한다.
예시적인 시스템
도 6은 본원에서 설명되는 다양한 기술을 구현할 수도 있는 하나 이상의 시스템 및/또는 디바이스를 나타내는 예시적인 컴퓨팅 디바이스(602)를 포함하는 예시적인 시스템(600)을 예시한다. 컴퓨팅 디바이스(602)는, 예를 들면, 서비스 공급자의 서버, 클라이언트와 관련되는 디바이스(예를 들면, 클라이언트 디바이스), 온칩(on-chip) 시스템, 및/또는 임의의 다른 적절한 컴퓨팅 디바이스 또는 컴퓨팅 시스템일 수도 있다.
예시되는 바와 같은 예시적인 컴퓨팅 디바이스(602)는, 서로 통신가능하게 커플링되는 프로세싱 시스템(604), 하나 이상의 컴퓨터 판독가능 매체(606), 및 하나 이상의 I/O 인터페이스(608)를 포함한다. 도시되지는 않았지만, 컴퓨팅 디바이스(602)는, 다양한 컴포넌트를 서로 커플링하는 시스템 버스 또는 다른 데이터 및 커맨드 전송 시스템을 더 포함할 수도 있다. 시스템 버스는, 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 범용 직렬 버스, 및/또는 다양한 버스 아키텍쳐 중 임의의 것을 활용하는 프로세서 또는 로컬 버스와 같은 상이한 버스 구조 중 임의의 하나 또는 조합을 포함할 수 있다. 제어 및 데이터 라인과 같은 다양한 다른 예도 또한 고려된다.
프로세싱 시스템(604)은 하드웨어를 사용하여 하나 이상의 동작을 수행하는 기능성을 나타낸다. 따라서, 프로세싱 시스템(604)은, 프로세서, 기능적 블록, 및 등등으로서 구성될 수도 있는 하드웨어 엘리먼트(610)를 포함하는 것으로 예시된다. 이것은 하드웨어의 구현예를, 주문형 반도체(application specific integrated circuit) 또는 하나 이상의 반도체를 사용하여 형성되는 다른 로직 디바이스로서, 포함할 수도 있다. 하드웨어 엘리먼트(610)는, 하드웨어 엘리먼트(610)를 형성하는 재료 또는 내부에서 활용되는 프로세싱 메커니즘에 의해 제한되지 않는다. 예를 들면, 프로세서는 반도체(들) 및/또는 트랜지스터(예를 들면, 전자 집적 회로(integrated circuit; IC))로 구성될 수도 있다. 이러한 맥락에서, 프로세서 실행가능 명령어는 전자적으로 실행가능한 명령어일 수도 있다.
컴퓨터 판독가능 매체(606)는 메모리/스토리지(612)를 포함하는 것으로 예시된다. 메모리/스토리지(612)는 하나 이상의 컴퓨터 판독가능 매체와 관련되는 메모리/스토리지 용량을 나타낸다. 메모리/스토리지(612)는 휘발성 매체(예컨대 랜덤 액세스 메모리(random access memory; RAM)) 및/또는 불휘발성 매체(예컨대 리드 온리 메모리(read only memory; ROM), 플래시 메모리, 광학 디스크, 자기 디스크, 및 등등)를 포함할 수도 있다. 메모리/스토리지(612)는 고정식 매체(예를 들면, RAM, ROM, 고정식 하드 드라이브 등등)뿐만 아니라 착탈식(removable) 매체(예를 들면, 플래시 메모리, 착탈식 하드 드라이브, 광학 디스크, 및 등등)를 포함할 수도 있다. 컴퓨터 판독가능 매체(606)는 하기에서 더 설명되는 바와 같이 다양한 다른 방식으로 구성될 수도 있다.
입/출력 인터페이스(들)(608)는, 유저가 커맨드 및 정보를 컴퓨팅 디바이스(602)에 입력하는 것을 허용하는, 그리고 정보가 다양한 입/출력 디바이스를 사용하여 유저 및/또는 다른 컴포넌트 또는 디바이스로 제시되는 것을 또한 허용하는 기능성을 나타낸다. 입력 디바이스의 예는, 키보드, 커서 제어 디바이스(예를 들면, 마우스), 음성 동작을 위한 마이크, 스캐너, 터치 기능성(예를 들면, 물리적 터치를 검출하도록 구성되는 용량성 또는 다른 센서), 카메라(예를 들면, 카메라는 제스쳐처럼 터치를 수반하지 않는 움직임을 검출하기 위해, 가시 또는 불가시 파장 예컨대 적외선 주파수를 활용할 수도 있다), 및 등등을 포함한다. 출력 디바이스의 예는 디스플레이 디바이스(예를 들면, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드, 촉각 반응 디바이스, 및 등등을 포함한다. 따라서, 컴퓨팅 디바이스(602)는 유저 상호 작용을 지원하기 위해 하기에서 더 설명되는 바와 같이 다양한 방식으로 구성될 수도 있다.
소프트웨어, 하드웨어 엘리먼트, 또는 프로그램 모듈의 일반적인 맥락에서, 다양한 기술이 본원에서 설명될 수도 있다. 일반적으로, 이러한 모듈은, 특정 태스크를 수행하는 또는 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 엘리먼트, 컴포넌트, 데이터 구조, 및 등등을 포함한다. 본원에서 사용되는 바와 같은 용어 "모듈", "기능성", 및 "컴포넌트"는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 일반적으로 나타낸다. 본원에서 설명되는 기술의 특징은 플랫폼 독립적인데, 그 기술이 다양한 프로세서를 구비하는 다양한 상업적 컴퓨팅 플랫폼 상에서 구현될 수도 있다는 것을 의미한다.
설명된 모듈 및 기술의 구현예는 몇몇 형태의 컴퓨터 판독가능 매체 상에 저장되거나 또는 몇몇 형태의 컴퓨터 판독가능 매체를 통해 송신될 수도 있다. 컴퓨터 판독가능 매체는, 컴퓨팅 디바이스(602)에 의해 액세스될 수도 있는 다양한 매체를 포함할 수도 있다. 비제한적인 예로서, 컴퓨터 판독가능 매체는 "컴퓨터 판독가능 저장 매체" 및 통신 매체를 포함할 수도 있다.
"컴퓨터 판독가능 저장 매체"는, 단순한 신호 송신, 반송파, 또는 신호 그 자체와는 대조적으로, 정보의 저장을 가능하게 하는 매체 및/또는 디바이스를 지칭할 수도 있다. 따라서, 컴퓨터 판독가능 저장 매체는 신호 베어링 매체, 일시적 신호, 또는 신호 그 자체는 포함하지 않는다. 컴퓨터 판독가능 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 로직 엘리먼트/회로, 또는 다른 데이터와 같은 정보의 저장에 적합한 방법 또는 기술로 구현되는 휘발성 및 불휘발성의 착탈식 및 비착탈식 매체 및/또는 스토리지 디바이스와 같은 하드웨어를 포함한다. 컴퓨터 판독가능 저장 매체의 예는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(digital versatile disks; DVD) 또는 다른 광학 스토리지, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 다른 스토리지 디바이스, 유형의(tangible) 매체, 또는 소망의 정보를 저장하기에 적합하며 컴퓨터에 의해 액세스될 수도 있는 제조 물품을 포함할 수도 있지만, 그러나 이들로 제한되는 것은 아니다.
"통신 매체"는, 예컨대 네트워크를 통해, 명령어를 컴퓨팅 디바이스(602)의 하드웨어로 송신하도록 구성되는 신호 베어링 매체를 가리킬 수도 있다. 신호 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 변조된 데이터 신호, 예컨대 반송파, 데이터 신호, 또는 다른 전송 메커니즘에서의 다른 데이터를 구체화할 수도 있다. 통신 매체도 또한 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는, 자신의 특성 중 하나 이상이 신호에 정보를 인코딩하는 것과 같은 방식으로 설정되거나 변경되는 신호를 의미한다. 비제한적인 예로서, 통신 매체는 유선 네트워크 또는 직결 접속과 같은 유선 매체, 및 무선 매체 예컨대 음향, RF, 적외선 및 다른 무선 매체를 포함한다.
앞서 설명된 바와 같이, 하드웨어 엘리먼트(610) 및 컴퓨터 판독가능 매체(606)는, 본원에서 설명되는 기술의 적어도 몇몇 양태를 구현하기 위해 몇몇 실시형태에서 활용될 수도 있는 하드웨어 형태로 구현되는 명령어, 모듈, 프로그래머블 디바이스 로직 및/또는 고정식 디바이스 로직을 나타낸다. 하드웨어 엘리먼트는, 집적 회로 또는 온칩 시스템, 주문형 반도체(application-specific integrated circuit; ASIC), 필드 프로그래머블 게이트 어레이(field-programmable gate array; FPGA), 복합 프로그래머블 로직 디바이스(complex programmable logic device; CPLD), 및 실리콘 또는 다른 하드웨어 디바이스에서의 다른 구현예의 컴포넌트를 포함할 수도 있다. 이 맥락에서, 하드웨어 엘리먼트는, 하드웨어 엘리먼트뿐만 아니라 실행을 위한 명령어를 저장하기 위해 활용되는 하드웨어 디바이스, 예를 들면, 앞서 설명된 컴퓨터 판독가능 저장 매체에 의해 구체화되는 명령어, 모듈, 및/또는 로직에 의해 정의되는 프로그램 태스크를 수행하는 프로세싱 디바이스로서 동작할 수도 있다.
본원에서 설명되는 다양한 기술 및 모듈을 구현하기 위해, 상기의 조합이 또한 활용될 수도 있다. 따라서, 오퍼레이팅 시스템(108), 애플리케이션(110), 전력 매니저 모듈(126), 스레드 스케줄러 모듈(128), 및 다른 프로그램 모듈을 포함하는 소프트웨어, 하드웨어, 또는 프로그램 모듈은, 컴퓨터 판독가능 저장 매체의 몇몇 형태 상에서 및/또는 하나 이상의 하드웨어 엘리먼트(610)에 의해, 구체화되는 하나 이상의 명령어 및/또는 로직으로서 구현될 수도 있다. 컴퓨팅 디바이스(602)는 소프트웨어 및/또는 하드웨어 모듈에 대응하는 특정 명령어 및/또는 기능을 구현하도록 구성될 수도 있다. 따라서, 소프트웨어로서 컴퓨팅 디바이스(602)에 의해 실행가능한 모듈로서의 모듈의 구현예는, 예를 들면, 프로세싱 시스템의 하드웨어 엘리먼트(610) 및/또는 컴퓨터 판독가능 저장 매체의 사용을 통해, 적어도 부분적으로 하드웨어로 달성될 수도 있다. 명령어 및/또는 기능은 본원에서 설명되는 기술, 모듈, 및 예를 구현하도록 하나 이상의 제조 물품(예를 들면, 하나 이상의 컴퓨팅 디바이스(602) 및/또는 프로세싱 시스템(604))에 의해 실행가능/동작가능할 수도 있다.
도 6에서 더 예시되는 바와 같이, 예시적인 시스템(600)은, 퍼스널 컴퓨터(personal computer; PC), 텔레비전 디바이스, 및/또는 모바일 디바이스 상에서 애플리케이션을 실행하고 있을 때 원활한 유저 경험을 위한 유비쿼터스 환경(ubiquitous environment)을 가능하게 한다. 서비스 및 애플리케이션은, 애플리케이션을 활용하는 동안, 비디오 게임을 플레이하는 동안, 비디오를 시청하는 동안, 및 등등의 동안, 한 디바이스에서 다음의 디바이스로 전이할 때 공통의 유저 경험을 위해 모두 세 개의 환경에서 실질적으로 유사하게 실행한다.
예시적인 시스템(600)에서, 다수의 디바이스는 중앙 컴퓨팅 디바이스를 통해 상호접속된다. 중앙 컴퓨팅 디바이스는 다수의 디바이스에 로컬할 수도 있거나 또는 다수의 디바이스로부터 원격에 위치될 수도 있다. 하나 이상의 실시형태에서, 중앙 컴퓨팅 디바이스는, 네트워크, 인터넷, 또는 다른 데이터 통신 링크를 통해 다수의 디바이스에 연결되는 하나 이상의 서버 컴퓨터의 클라우드일 수도 있다.
하나의 실시형태에서, 이 상호접속 아키텍쳐는 다수의 디바이스에 걸쳐 전달될 기능성이, 다수의 디바이스의 유저에게 공통의 그리고 원활한 경험을 제공하는 것을 가능하게 한다. 다수의 디바이스의 각각은 상이한 물리적 요건 및 성능을 구비할 수도 있으며, 중앙 컴퓨팅 디바이스는, 디바이스에 맞춤되면서도(tailored) 여전히 모든 디바이스에 대해 공통인 경험을 디바이스로 전달하는 것을 가능하게 하는 플랫폼을 사용한다. 하나 이상의 실시형태에서, 목표 디바이스의 클래스가 생성되고 경험이 디바이스의 제너릭 클래스(generic class)에 맞춤된다. 디바이스의 클래스는 디바이스의 물리적 피쳐, 사용의 타입, 또는 다른 공통의 특성에 의해 정의될 수도 있다.
다양한 구현예에서, 컴퓨팅 디바이스(602)는, 예컨대 컴퓨터(614), 모바일(616), 및 텔레비전(618) 용도에 대해, 여러 상이한 구성을 취할 수도 있다. 이들 구성의 각각은, 일반적으로 상이한 구조 및 성능을 가질 수도 있는 디바이스를 포함하며, 따라서 컴퓨팅 디바이스(602)는 상이한 디바이스 클래스 중 하나 이상에 따라 구성될 수도 있다. 예를 들면, 컴퓨팅 디바이스(602)는, 퍼스널 컴퓨터, 데스크탑 컴퓨터, 멀티스크린 컴퓨터, 랩탑 컴퓨터, 넷북, 및 등등을 포함하는 디바이스의 컴퓨터(614) 클래스로서 구현될 수도 있다.
컴퓨팅 디바이스(602)는, 모바일 디바이스, 예컨대 이동 전화, 휴대형 음악 플레이어, 휴대형 게임용 디바이스, 태블릿 컴퓨터, 멀티스크린 컴퓨터, 및 등등을 포함하는 디바이스의 모바일(616) 클래스로서 또한 구현될 수도 있다. 컴퓨팅 디바이스(602)는, 일상적인(casual) 시청 환경에서 일반적으로 더 큰 스크린을 갖는 또는 더 큰 스크린에 연결되는 디바이스를 포함하는 디바이스의 텔레비전(618) 클래스로서 또한 구현될 수도 있다. 이들 디바이스는 텔레비전, 셋탑 박스, 게임용 콘솔, 및 등등을 포함한다.
본원에서 설명되는 기술은 컴퓨팅 디바이스(602)의 이들 다양한 구성에 의해 지원될 수도 있으며 본원에서 설명되는 기술의 특정 예로 제한되지는 않는다. 이것은, 컴퓨팅 디바이스(602) 상에 전력 매니저 모듈(126) 및 스레드 스케줄러 모듈(128)을 포함시키는 것을 통해 예시된다. 전력 매니저 모듈(126), 스레드 스케줄러 모듈(128), 및 다른 모듈/애플리케이션에 의해 나타내어지는 기능성은, 예컨대 하기에서 설명되는 바와 같은 플랫폼(622)을 통한 "클라우드"(620)를 통해, 분산형 시스템의 사용을 통해, 모두 또는 부분적으로, 구현될 수도 있다.
클라우드(620)는 리소스(624)에 대한 플랫폼(622)을 포함하고 및/또는 그 플랫폼(622)을 나타낸다. 플랫폼(622)은 클라우드(620)의 하드웨어(예를 들면, 서버) 및 소프트웨어 리소스의 기저의 기능성을 추상화한다. 리소스(624)는, 컴퓨팅 디바이스(602)로부터 원격인 서버 상에서 컴퓨터 프로세싱이 실행되고 있는 동안 활용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수도 있다. 리소스(624)는 인터넷을 통해 및/또는 가입자 네트워크, 예컨대 셀룰러 또는 와이파이 네트워크를 통해 제공되는 서비스를 또한 포함할 수 있다.
플랫폼(622)은 컴퓨팅 디바이스(602)를 다른 컴퓨팅 디바이스와 연결하는 리소스 및 기능을 추상화할 수도 있다. 플랫폼(622)은, 플랫폼(622)을 통해 구현되는 리소스(624)에 대한 조우되는 요구에 대해, 대응하는 레벨의 스케일을 제공하기 위해, 리소스의 스케일링을 추상화하도록 또한 기능할 수도 있다. 따라서, 상호접속된 디바이스 실시형태에서, 본원에서 설명되는 기능성의 구현예는 시스템(600) 전체에 걸쳐 분산될 수도 있다. 예를 들면, 기능성은 컴퓨팅 디바이스(602) 상에서 뿐만 아니라 클라우드(620)의 기능성을 추상화하는 플랫폼(622)을 통해서도 부분적으로 구현될 수도 있다.
예시적인 구현예
본원에서 설명되는 이종 스레드 스케줄링 기술의 예시적인 구현예는, 다음의 예 중 하나 이상의 것 중 하나 또는 임의의 조합을 포함하지만, 그러나 이들로 제한되지는 않는다.
컴퓨팅 디바이스에 의해 구현되는 방법에 있어서, 개별 스레드에 스레드 정책 - 스레드 정책은 프로세싱 시스템의 이종 코어 사이에서의 스레드의 할당을 위한 기준을 명시함 - 을 할당하는 단계; 주기적으로 적용되는 전력 관리 정책에 따라 스레드 스케줄링을 위해 활성인 것으로 선택되는 이종 코어의 서브셋을 확인하는 단계; 및 이종 코어의 서브셋 사이에서 그리고 개별 스레드에 할당되는 스레드 정책에 따라 스레드 단위 기반으로 스레드를 할당하는 단계를 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 이종 코어는 적어도 성능 지향 코어 및 전력 효율적인 코어를 포함하고, 성능 지향 코어는 특정한 태스크의 완료를 위한 프로세싱 시간을 전력 효율적인 코어에 비해 감소시키도록 구성되고, 전력 효율적인 코어는 특정한 태스크의 완료를 위해 성능 지향 코어에 비해 더 적은 전력을 소비하도록 구성된다.
상기에서 설명되는 바와 같은 방법에 있어서, 스레드의 할당을 위한 기준은, 애플리케이션 타입, 우선 순위, 활동 타입, 스레드 카테고리, 태스크 사이즈, 또는 시간 데드라인 중 하나 이상을 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 이종 코어의 서브셋을 확인하는 단계는, 전력 관리 정책의 적용에 기초하여 생성되며 현재 시간 기간 동안 스케줄링에 이용가능한 코어를 나타내도록 구성되는 코어 상태 데이터를 획득하는 단계를 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 스레드를 할당하는 단계는, 특정한 스레드에 대한 선호되는 코어 세트 및 허용가능한 코어 세트를, 특정한 스레드에 할당되는 스레드 정책에 기초하여 생성하는 단계; 선호되는 코어 세트 중 적어도 하나가 서브셋 내에 있고 스케줄링에 이용가능하면, 코어의 선호되는 세트의 코어 상에 스레드를 배치하는 단계; 또는 선호되는 코어 세트 중 적어도 하나가 이용가능하지 않고 허용가능한 코어 세트 중 적어도 하나가 서브셋 내에 있고 스케줄링에 이용가능하면, 허용가능한 코어 세트의 코어 상에 스레드를 배치하는 단계를 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 스레드 정책을 할당하는 단계는, 선호되는 코어, 허용되는 코어, 또는 제한되는 코어 중 적어도 하나를 스레드 단위 기반으로 나타내기 위해, 개별 스레드에 대한 정책 속성의 값을, 상이한 수치 값으로 설정하는 단계를 더 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 스레드 정책은, 이종 코어의 비대칭 성질을 설명하도록 구성된다.
상기에서 설명되는 바와 같은 방법에 있어서, 프로세싱 시스템의 이종 코어는, 두 개보다 많은 상이한 타입의 코어를 포함한다.
컴퓨팅 디바이스에 의해 구현되는 방법에 있어서, 전력 효율적인 코어 및 성능 지향 코어를 포함하는 이종 코어를 구비하는 프로세싱 시스템에 대한 다수의 성능 메트릭을 시간 기간에 걸쳐 추적하는 단계; 다수의 성능 및 시스템 상태 메트릭의 분석에 기초하여 후속하는 시간 기간 동안 이종 코어를 선택적으로 활성화하고 비활성화하기 위해, 전력 관리 정책을 적용하는 단계; 및 이종 코어 중에서 후속하는 시간 기간 동안 스레드 스케줄링에 이용가능한 코어를 스레드 스케줄러가 식별하는 것을 가능하게 하고 후속하는 시간 기간 동안 식별된 코어 사이에서 개별 스레드를 할당하기에 충분한 코어 상태 데이터를 스레드 스케줄러로 전달하는 단계를 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 전력 관리 정책을 적용하는 단계는, 전력 효율적인 코어 및 성능 지향 코어에 대한 코어 상태에서의 변화를 야기하는 단계; 및 코어 상태를 다른 컴포넌트로 전달하도록 구성되는 코어 상태 데이터를 생성하는 단계를 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 성능 메트릭은, 시간 기간에 걸쳐 측정되는 이종 코어에 대한 효용성 인자 및 동시성 인자를 적어도 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 성능 메트릭의 분석에 기초하여 컴퓨팅 디바이스에 대한 동작 컨텍스트 - 동작 컨텍스트는, 전체 작업 부하, 코어 사이에서의 작업 부하 분배, 열적 조건, 유저 존재의 표시, 전력 가용성, 애플리케이션 타입, 작업 카테고리, 또는 우선 순위 설정 중 하나 이상의 조합을 나타냄 - 를 인식하는 단계를 더 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 전력 관리 정책은, 다수의 성능 메트릭의 추적에 의해 나타내어지는 상이한 동작 컨텍스트에서 이종 코어 중 어떤 코어가 파킹되고 파킹해제되는지를 정의하도록 구성된다.
상기에서 설명되는 바와 같은 방법에 있어서, 이종 코어를 선택적으로 활성화하고 비활성화하기 위해 전력 관리 정책을 적용하는 단계는, 이종 코어에 대한 효용성 인자 및 동시성 인자에 기초하여 하나 이상의 개별 코어에 대한 효용성을 계산하는 단계; 하나 이상의 개별 코어에 대해 계산되는 효용성을, 코어를 활성화할지 또는 비활성화할지의 여부를 결정하기 위해 코어에 대해 설정되는 임계치에 비교하는 단계를 포함한다.
상기에서 설명되는 바와 같은 방법에 있어서, 프로세싱 시스템의 이종 코어는, 다양한 상이한 수행 성능, 프로세싱 효율성, 및 전력 사용 특성을 제공한다.
컴퓨팅 디바이스에 있어서, 적어도 전력 효율적인 코어 및 성능 지향 코어를 포함하는 이종 코어를 구비하는 프로세싱 시스템; 및 이종 코어를 통한 프로세싱 작업 부하의 성능을 관리하기 위한 동작들을 수행하도록 프로세싱 시스템을 통해 동작가능한 하나 이상의 모듈을 포함하는 오퍼레이팅 시스템을 포함하고, 상기 동작들은, 프로세싱 시스템에 대한 동작 컨텍스트를 주기적으로 분석하는 동작; 스레드 스케줄링을 위해 전력 효율적인 코어 및 성능 지향 코어의 활성화를 제어하도록 주기적인 분석에 기초하여 이종 코어 중 적어도 일부에 대한 코어 상태를 설정하는 동작; 및 이종 코어의 활성 코어 사이에서 개별 스레드를 스레드 단위 기반으로 할당하기 위해 주기적 분석에 기초하여 설정되는 코어 상태에 의존하여 개별 스레드를 스케줄링하는 동작을 포함한다.
상기에서 설명되는 바와 같은 컴퓨팅 디바이스에 있어서, 스케줄링은 주기적인 분석보다 더 큰 빈도수에서 발생한다.
상기에서 설명되는 바와 같은 컴퓨팅 디바이스에 있어서, 하나 이상의 모듈은, 코어 상태의 주기적 분석 및 설정을 수행하도록 구성되는 전력 매니저 모듈; 및 코어 상태에 의존하여 스케줄링을 수행하도록 구성되는 스레드 스케줄러 모듈을 포함한다.
상기에서 설명되는 바와 같은 컴퓨팅 디바이스에 있어서, 동작 컨텍스트를 주기적으로 분석하는 동작은, 작업 부하, 열적 조건, 유저 존재의 표시, 및 전력 가용성을 추적하는 동작을 포함한다.
상기에서 설명되는 바와 같은 컴퓨팅 디바이스에 있어서, 개별 스레드의 스케줄링은, 각각의 특정한 스레드에 대해, 특정한 스레드에 대한 코어 동질 관계를 결정하기 위해 특정한 스레드에 할당되는 스레드 정책을 사용하는 동작; 및 결정되는 코어 동질 관계에 따라 이종 코어 중 하나와 함께 특정한 스레드를 배치하는 동작을 포함한다.
결론
본 주제가 구조적 피쳐 및/또는 방법론적 액트(act)에 고유한 언어로 설명되었지만, 첨부의 청구범위에서 정의되는 주제가 상기에서 설명되는 특정 피쳐 또는 액트로 반드시 제한되는 것은 아니다는 것이 이해되어야 한다. 오히려, 상기에서 설명되는 특정 피쳐 및 액트는 청구범위를 구현하는 예시적인 형태로서 개시된다.
Claims (20)
- 일 세트의 프로세싱 코어들 간 프로세싱 작업 부하(workload)의 효율적 분배를 위한, 컴퓨팅 디바이스에 의해 구현되는 방법에 있어서,
개별 스레드(thread)들에 스레드 정책들(208) - 상기 스레드 정책들(208)은 프로세싱 시스템(104)의 이종 코어들(heterogeneous cores; 202, 204) 사이에서의 스레드들의 할당을 위한 기준을 명시함 - 을 할당하는 단계;
상기 프로세싱 시스템(104)에 대한 성능 메트릭들을 추적하는 단계;
제1 빈도수로 상기 성능 메트릭들의 분석에 기초하여 후속하는 시간 기간 동안 상기 이종 코어들(202, 204)을 선택적으로 활성화하고 비활성화하기 위해, 전력 관리 정책을 적용하는 단계;
상기 적용된 전력 관리 정책에 따라 스레드 스케줄링을 위해 활성으로서 선택된 상기 이종 코어들(202, 204)의 서브셋을 확인하는 단계; 및
상기 제1 빈도수 보다 더 높은 제2 빈도수로 상기 이종 코어들(202, 204)의 서브셋 사이에서 스레드 단위로 그리고 상기 개별 스레드들에 할당된 상기 스레드 정책들(208)에 따라 스레드들을 할당하는 단계
를 포함하는, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제1항에 있어서,
상기 이종 코어들(202, 204)은 적어도 성능 지향 코어들(performance oriented cores; 202) 및 전력 효율적인 코어들(power efficient cores; 204)을 포함하고, 상기 성능 지향 코어들(202)은 특정 태스크들의 완료를 위한 프로세싱 시간을 상기 전력 효율적인 코어들에 비해 감소시키도록 구성되고, 상기 전력 효율적인 코어들(204)은 특정 태스크들의 완료를 위해 상기 성능 지향 코어들(202)에 비해 더 적은 전력을 소비하도록 구성되는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제1항에 있어서,
스레드의 할당을 위한 상기 기준은, 애플리케이션 타입, 우선 순위, 활동 타입, 스레드 카테고리들, 태스크 사이즈, 시간 데드라인들 중 하나 이상을 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제1항에 있어서,
상기 스레드들을 할당하는 단계는:
특정한 스레드에 대한 선호되는 코어 세트 및 허용가능한 코어 세트를, 상기 특정한 스레드에 할당된 스레드 정책(208)에 기초하여 생성하는 단계;
상기 선호되는 코어 세트 중 적어도 하나의 코어가 상기 서브셋 내에 있고 스케줄링에 이용가능한 경우, 상기 선호되는 코어 세트 중의 코어 상에 상기 스레드를 배치하는 단계; 또는
상기 선호되는 코어 세트 중 적어도 하나의 코어가 이용가능하지 않고 상기 허용가능한 코어 세트 중 적어도 하나의 코어가 상기 서브셋 내에 있고 스케줄링에 이용가능한 경우, 상기 허용가능한 코어 세트 중의 코어 상에 상기 스레드를 배치하는 단계
를 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제1항에 있어서,
상기 스레드 정책(208)들을 할당하는 단계는, 선호되는 코어들, 허용되는 코어들, 또는 제한되는 코어들 중 적어도 하나를 스레드 단위로 나타내기 위하여 개별 스레드들에 대한 정책 속성의 값을 상이한 수치 값들로 설정하는 단계를 더 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제1항에 있어서,
상기 스레드 정책들(208)은, 상기 이종 코어들의 비대칭 성질(property)들을 고려하도록 구성되는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제1항에 있어서,
상기 프로세싱 시스템(104)의 상기 이종 코어들(202, 204)은 두 개 보다 많은 상이한 타입의 코어들을 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제1항에 있어서,
스레드 스케줄러(128)가 상기 후속 시간 기간 동안 스레드 스케줄링에 이용가능한 코어들을 상기 이종 코어(202, 204)들 중에서 식별하고, 상기 제1 빈도수 보다 더 높은 제2 빈도수에서 상기 후속 시간 기간 동안 상기 식별된 코어들 사이에 개별 스레드들을 할당할 수 있도록 하기에 충분한 코어 상태 데이터를 상기 스레드 스케줄러(128)에 전달하는(communicate) 단계
를 포함하는, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제8항에 있어서,
상기 전력 관리 정책을 적용하는 단계는:
전력 효율적인 코어들(204) 및 성능 지향 코어들(202)에 대한 코어 상태들에 있어서의 변화를 야기하는 단계; 및
상기 코어 상태들을 다른 컴포넌트들로 운송하도록 구성된 상기 코어 상태 데이터를 생성하는 단계
를 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제8항에 있어서,
상기 성능 메트릭들은 시간 기간에 걸쳐 측정된 상기 이종 코어들(202, 204)에 대한 적어도 효용성 인자(utility factor) 및 동시성 인자(concurrency factor)를 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제8항에 있어서,
상기 성능 메트릭들의 분석에 기초하여 상기 컴퓨팅 디바이스에 대한 동작 컨텍스트를 인식하는 단계를 더 포함하고,
상기 동작 컨텍스트는 전체 작업 부하, 코어들 사이에서의 작업 부하 분배, 열적 조건들, 유저 존재의 표시들, 전력 가용성, 애플리케이션 타입, 작업 카테고리들, 우선 순위 설정들 중 하나 이상의 조합을 나타내는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제8항에 있어서,
상기 전력 관리 정책은, 다수의 성능 메트릭들의 추적에 의해 나타내어지는 상이한 동작 컨텍스트들에서 상기 이종 코어들(202, 204) 중 어떤 코어가 파킹되고(parked) 파킹해제되는(unparked) 지를 정의하도록 구성되는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제8항에 있어서,
상기 이종 코어들(202, 204)을 선택적으로 활성화 및 비활성화시키기 위하여 전력 관리 정책을 적용하는 단계는:
상기 이종 코어들(202, 204)에 대한 효용성 인자 및 동시성 인자에 기초하여 하나 이상의 개별 코어에 대한 효용성을 계산하는 단계; 및
상기 하나 이상의 개별 코어에 대하여 계산된 상기 효용성을 상기 코어들에 대한 임계치 세트에 비교하여, 상기 코어들을 활성화시킬지 또는 비활성화시킬지를 결정하는 단계
를 포함하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 제8항에 있어서,
상기 프로세싱 시스템의 상기 이종 코어들(202, 204)은, 다양한 상이한 수행 성능들(performance capabilities), 프로세싱 효율성들, 및 전력 사용 특성들을 제공하는 것인, 컴퓨팅 디바이스에 의해 구현되는 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/498,599 US9424092B2 (en) | 2014-09-26 | 2014-09-26 | Heterogeneous thread scheduling |
US14/498,599 | 2014-09-26 | ||
PCT/US2015/051566 WO2016049095A1 (en) | 2014-09-26 | 2015-09-23 | Heterogeneous thread scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170062493A KR20170062493A (ko) | 2017-06-07 |
KR102427067B1 true KR102427067B1 (ko) | 2022-07-28 |
Family
ID=54337349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177010894A KR102427067B1 (ko) | 2014-09-26 | 2015-09-23 | 이종 스레드 스케줄링 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9424092B2 (ko) |
EP (1) | EP3198429B1 (ko) |
KR (1) | KR102427067B1 (ko) |
CN (1) | CN106716365B (ko) |
ES (1) | ES2836353T3 (ko) |
WO (1) | WO2016049095A1 (ko) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160170474A1 (en) * | 2013-08-02 | 2016-06-16 | Nec Corporation | Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory |
WO2016195274A1 (en) * | 2015-06-01 | 2016-12-08 | Samsung Electronics Co., Ltd. | Method for scheduling entity in multi-core processor system |
US9954885B2 (en) * | 2015-06-01 | 2018-04-24 | Shanghai Redneurons Co., Ltd. | Software/hardware device with uncertain service function and structural characterization, and scheduling method thereof |
US9952871B2 (en) * | 2015-06-05 | 2018-04-24 | Arm Limited | Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry |
US10007733B1 (en) * | 2015-06-09 | 2018-06-26 | EMC IP Holding Company LLC | High-performance network data capture and storage |
US9891926B2 (en) | 2015-09-30 | 2018-02-13 | International Business Machines Corporation | Heterogeneous core microarchitecture |
KR102464678B1 (ko) * | 2016-03-18 | 2022-11-11 | 한국전자통신연구원 | 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치 |
US10296074B2 (en) | 2016-08-12 | 2019-05-21 | Qualcomm Incorporated | Fine-grained power optimization for heterogeneous parallel constructs |
US10379904B2 (en) * | 2016-08-31 | 2019-08-13 | Intel Corporation | Controlling a performance state of a processor using a combination of package and thread hint information |
US10503238B2 (en) | 2016-11-01 | 2019-12-10 | Microsoft Technology Licensing, Llc | Thread importance based processor core parking and frequency selection |
US10372494B2 (en) * | 2016-11-04 | 2019-08-06 | Microsoft Technology Licensing, Llc | Thread importance based processor core partitioning |
US10540300B2 (en) * | 2017-02-16 | 2020-01-21 | Qualcomm Incorporated | Optimizing network driver performance and power consumption in multi-core processor-based systems |
US10372495B2 (en) | 2017-02-17 | 2019-08-06 | Qualcomm Incorporated | Circuits and methods providing thread assignment for a multi-core processor |
US10459517B2 (en) * | 2017-03-31 | 2019-10-29 | Qualcomm Incorporated | System and methods for scheduling software tasks based on central processing unit power characteristics |
US10521271B2 (en) | 2017-04-01 | 2019-12-31 | Intel Corporation | Hybrid low power homogenous grapics processing units |
US10639550B2 (en) * | 2017-04-18 | 2020-05-05 | Bullguard Ltd | System and method for dynamically allocating resources to a game process |
US10235178B2 (en) * | 2017-06-02 | 2019-03-19 | Microsoft Technology Licensing, Llc | Performance scaling for binary translation |
US10474600B2 (en) | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
KR102452205B1 (ko) | 2017-11-20 | 2022-10-06 | 삼성전자주식회사 | 멀티 코어 제어 시스템 |
US10700954B2 (en) * | 2017-12-20 | 2020-06-30 | Advanced Micro Devices, Inc. | Scheduling memory bandwidth based on quality of service floorbackground |
WO2019132330A1 (en) * | 2017-12-26 | 2019-07-04 | Samsung Electronics Co., Ltd. | Method and system for predicting optimal number of threads for application running on electronic device |
KR102022972B1 (ko) * | 2018-03-09 | 2019-09-19 | 울산과학기술원 | 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법 |
US10817341B1 (en) * | 2019-04-10 | 2020-10-27 | EMC IP Holding Company LLC | Adaptive tuning of thread weight based on prior activity of a thread |
US11698812B2 (en) | 2019-08-29 | 2023-07-11 | Intel Corporation | System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor |
US11144443B2 (en) | 2019-09-09 | 2021-10-12 | Microsoft Technology Licensing, Llc | Optimization of workloads based on constraints |
KR20210101071A (ko) | 2020-02-07 | 2021-08-18 | 삼성전자주식회사 | 이종의 다중-프로세서에 기반하여 스케줄링을 수행하기 위한 전자 장치 및 그의 동작 방법 |
US20220197367A1 (en) * | 2020-12-18 | 2022-06-23 | Intel Corporation | Hardware and software coordinated cost-aware low power state selection |
US20210149736A1 (en) * | 2020-12-23 | 2021-05-20 | Intel Corporation | Methods, systems, apparatus, and articles of manufacture to extend the life of embedded processors |
US20210224128A1 (en) * | 2020-12-24 | 2021-07-22 | Intel Corporation | Technologies for managing workloads in processor cores |
US20230018828A1 (en) * | 2021-07-13 | 2023-01-19 | Intel Corporation | Device, method and system to provide thread scheduling hints to a software process |
US20230067109A1 (en) * | 2021-08-30 | 2023-03-02 | Apple Inc. | Performance islands for cpu clusters |
CN113608882B (zh) * | 2021-10-11 | 2022-01-28 | 广州紫麦科技股份有限公司 | 基于人工智能和大数据的信息处理方法、系统及云平台 |
US11966789B2 (en) * | 2022-04-27 | 2024-04-23 | Uab 360 It | System and method for queuing node load for malware analysis |
CN115016948B (zh) * | 2022-08-08 | 2022-11-25 | 阿里巴巴(中国)有限公司 | 一种资源访问方法、装置、电子设备及可读存储介质 |
WO2024107188A1 (en) * | 2022-11-17 | 2024-05-23 | Siemens Aktiengesellschaft | Multi-core processing with software-based scheduler and planner |
WO2024206942A1 (en) * | 2023-03-30 | 2024-10-03 | Qualcomm Incorporated | Systems and methods for prioritizing and assigning threads in a heterogeneous processor architecture |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080271043A1 (en) | 2007-04-27 | 2008-10-30 | Hyun Kim | Accurate measurement of multithreaded processor core utilization and logical processor utilization |
US20110113270A1 (en) | 2009-11-12 | 2011-05-12 | International Business Machines Corporation | Dynamic Voltage and Frequency Scaling (DVFS) Control for Simultaneous Multi-Threading (SMT) Processors |
US20120284729A1 (en) * | 2011-05-03 | 2012-11-08 | Microsoft Corporation | Processor state-based thread scheduling |
US8490103B1 (en) | 2007-04-30 | 2013-07-16 | Hewlett-Packard Development Company, L.P. | Allocating computer processes to processor cores as a function of process utilizations |
US20130191817A1 (en) | 2009-12-28 | 2013-07-25 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093147B2 (en) | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
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 |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
US9569270B2 (en) * | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
US8689021B1 (en) | 2010-09-10 | 2014-04-01 | Marvell International Ltd. | System and method for selecting a power management configuration in a multi-core environment according to various operating conditions such as voltage, frequency, power mode, and utilization factor varied on a per-core basis |
US8793686B2 (en) | 2011-06-08 | 2014-07-29 | Microsoft Corporation | Operating system decoupled heterogeneous computing |
US9442773B2 (en) | 2011-11-21 | 2016-09-13 | Qualcomm Incorporated | Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip |
US9727388B2 (en) | 2011-12-29 | 2017-08-08 | Intel Corporation | Migrating threads between asymmetric cores in a multiple core processor |
US10185566B2 (en) | 2012-04-27 | 2019-01-22 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
EP2847674A4 (en) | 2012-05-09 | 2016-01-27 | Intel Corp | PLANNING TASKS AMONG PROCESSORS C URS |
US9619282B2 (en) | 2012-08-21 | 2017-04-11 | Lenovo (Singapore) Pte. Ltd. | Task scheduling in big and little cores |
US9329900B2 (en) | 2012-12-28 | 2016-05-03 | Intel Corporation | Hetergeneous processor apparatus and method |
US9672046B2 (en) | 2012-12-28 | 2017-06-06 | Intel Corporation | Apparatus and method for intelligently powering heterogeneous processor components |
-
2014
- 2014-09-26 US US14/498,599 patent/US9424092B2/en active Active
-
2015
- 2015-09-23 KR KR1020177010894A patent/KR102427067B1/ko active IP Right Grant
- 2015-09-23 WO PCT/US2015/051566 patent/WO2016049095A1/en active Application Filing
- 2015-09-23 EP EP15782115.8A patent/EP3198429B1/en active Active
- 2015-09-23 ES ES15782115T patent/ES2836353T3/es active Active
- 2015-09-23 CN CN201580051981.5A patent/CN106716365B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080271043A1 (en) | 2007-04-27 | 2008-10-30 | Hyun Kim | Accurate measurement of multithreaded processor core utilization and logical processor utilization |
US8490103B1 (en) | 2007-04-30 | 2013-07-16 | Hewlett-Packard Development Company, L.P. | Allocating computer processes to processor cores as a function of process utilizations |
US20110113270A1 (en) | 2009-11-12 | 2011-05-12 | International Business Machines Corporation | Dynamic Voltage and Frequency Scaling (DVFS) Control for Simultaneous Multi-Threading (SMT) Processors |
US20130191817A1 (en) | 2009-12-28 | 2013-07-25 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
US20120284729A1 (en) * | 2011-05-03 | 2012-11-08 | Microsoft Corporation | Processor state-based thread scheduling |
Also Published As
Publication number | Publication date |
---|---|
EP3198429B1 (en) | 2020-11-11 |
WO2016049095A1 (en) | 2016-03-31 |
US20160092274A1 (en) | 2016-03-31 |
EP3198429A1 (en) | 2017-08-02 |
US9424092B2 (en) | 2016-08-23 |
KR20170062493A (ko) | 2017-06-07 |
ES2836353T3 (es) | 2021-06-24 |
CN106716365B (zh) | 2020-07-21 |
CN106716365A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102427067B1 (ko) | 이종 스레드 스케줄링 | |
EP3259825B1 (en) | Heterogeneous battery cell switching | |
EP3535641B1 (en) | Thread importance based processor core partitioning | |
US8943252B2 (en) | Latency sensitive software interrupt and thread scheduling | |
WO2016133688A1 (en) | Heterogeneous battery cell charging | |
US8904399B2 (en) | System and method of executing threads at a processor | |
US10198059B2 (en) | Adaptive doze to hibernate | |
US20180136708A1 (en) | Dynamic Energy Storage Device Charging | |
CN109983419B (zh) | 动态能量存储设备放电 | |
US9939862B2 (en) | Latency-based energy storage device selection | |
US20180136709A1 (en) | Dynamic External Power Resource Selection | |
CN109906437A (zh) | 基于线程重要性的处理器核停止和频率选择 | |
EP3646139A1 (en) | Target based power management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |