KR101457262B1 - 코어 및 어플리케이션 특성에 기초하여 멀티프로세서 시스템상에서 실행하는 어플리케이션에 대한 코어 선택 - Google Patents

코어 및 어플리케이션 특성에 기초하여 멀티프로세서 시스템상에서 실행하는 어플리케이션에 대한 코어 선택 Download PDF

Info

Publication number
KR101457262B1
KR101457262B1 KR1020117030918A KR20117030918A KR101457262B1 KR 101457262 B1 KR101457262 B1 KR 101457262B1 KR 1020117030918 A KR1020117030918 A KR 1020117030918A KR 20117030918 A KR20117030918 A KR 20117030918A KR 101457262 B1 KR101457262 B1 KR 101457262B1
Authority
KR
South Korea
Prior art keywords
core
core component
component
process change
type
Prior art date
Application number
KR1020117030918A
Other languages
English (en)
Other versions
KR20120031020A (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 KR20120031020A publication Critical patent/KR20120031020A/ko
Application granted granted Critical
Publication of KR101457262B1 publication Critical patent/KR101457262B1/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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

멀티프로세서 컴퓨터 시스템 상에서 실행하는 어플리케이션 프로그램을 스케줄링하기 위한 기술이 개시된다. 예시적인 방법들은, 임의의 다이-내 프로세스 변화에 대해 제 1, 제 2, 제 3, 및 제 4 코어 컴포넌트들을 분석하는 단계, 제 1, 제 2, 제 3, 제 4 코어 컴포넌트들의 동작 상태를 결정하는 단계, 블룸 필터의 도움으로 각각의 컴포넌트 유형에 대한 최적의 코어 컴포넌트들을 선택하는 단계, 어플리케이션 프로그램에 의해 어떤 코어 컴포넌트 유형이 이용되는지를 정적으로 결정하는 단계, 그리고 어플리케이션 프로그램에 의해 이용된 코어 컴포넌트 유형에 대한 최적의 코어 컴포넌트를 갖는 코어 상에서 실행하도록 어플리케이션 프로그램을 스케줄링하는 단계를 포함하지만 이에 한정하지 않는다.

Description

코어 및 어플리케이션 특성에 기초하여 멀티프로세서 시스템상에서 실행하는 어플리케이션에 대한 코어 선택{CORE SELECTION FOR APPLICATIONS RUNNING ON MULTIPROCESSOR SYSTEMS BASED ON CORE AND APPLICATION CHARACTERISTICS}
본 특허 출원은, 발명의 명칭이 "Thread Throttling" 으로 2009년 7월 23일자로 출원된 출원 일련 번호 제 12/507,952 호에 관한 것이다.
집적 회로 기술이 스케일링을 계속함에 따라, 프로세스 변화 - 공칭 사양들로부터 프로세스 파라미터들의 다이버전스 - 는 아키텍쳐 및 시스템 레벨들에서 무시될 수 없는 문제가 되고 있다. 사실상, 이 변화는, 칩들 내에서 증가되는 누설 전력 소비 및 제한된 프로세서 주파수 향상 [1] 과 같은 중요한 의미를 갖는다.
칩 멀티프로세서 (CMP) 시스템, 또는 CMP 시스템 내의 컴포넌트들의 콘텍스트에서, 현재 그리고 가까운 미래 기술에서의 다이-내 프로세스 변화는 칩 내의 독립적인 코어들이 소모할 수도 있는 전력의 양을 실질적으로 다르게 하고 지원할 수도 있는 최대 주파수가 사실상 다르게 하도록 야기할 수도 있다. 다른 곳에서 [3] 보고되었던 이러한 효과는, 균일 시스템과 같은 대형 CMP 시스템들에 비해 더 이상 정확하지 않다는 것을 시사한다.
제 1 양태에서, 일반적으로, 본 개시물은 다수의 코어들을 갖는 컴퓨터 시스템 내에서 실행하는 어플리케이션 프로그램을 스케줄링하기 위한 방법을 설명하는데, 이 방법은 프로세스 변화에 대해 제 1 코어 컴포넌트 유형의 제 1 복수의 코어 컴포넌트들을 분석하는 단계, 제 1 복수의 코어 컴포넌트들의 분석에 기초하여 제 1 복수의 코어 컴포넌트들로부터 제 1 최적의 코어 컴포넌트를 선택하는 단계, 및 제 1 최적의 코어 컴포넌트 상에서 실행하도록 어플리케이션 프로그램을 스케줄링하는 단계를 포함한다.
제 2 양태에서, 일반적으로, 본 개시물은 다수의 코어들을 갖는 컴퓨터 시스템 내에서 실행하는 어플리케이션 프로그램을 스케줄링하기 위한 컴퓨터-판독가능 매체에 인코딩된 소프트웨어를 갖는 컴퓨터 프로그램 제품을 설명한다. 이 소프트웨어는, 프로세스 변화에 대해 제 1 코어 컴포넌트 유형의 제 1 복수의 코어 컴포넌트들을 분석하고, 제 1 복수의 코어 컴포넌트들의 분석에 기초하여 제 1 복수의 코어 컴포넌트들로부터 제 1 최적의 코어 컴포넌트를 선택하고, 제 1 최적의 코어 컴포넌트 상에서 실행하도록 어플리케이션 프로그램을 스케줄링하도록, 실행될 때 동작가능한, 명령들을 포함한다.
제 3 양태에서, 일반적으로, 본 개시물은 다수의 코어들, 및 다수의 코어들에 동작가능하게 커플링된 컴퓨터-판독가능 매체를 갖는 컴퓨터 시스템을 설명한다. 다수의 코어들 각각은 제 1 및 제 2 코어 컴포넌트 유형들의 코어 컴포넌트들을 포함한다. 컴퓨터-판독가능 매체는, 프로세스 변화에 대해 제 1 코어 컴포넌트 유형의 제 1 복수의 코어 컴포넌트들을 분석하고, 제 1 복수의 코어 컴포넌트들의 분석이 기초하여 제 1 복수의 코어 컴포넌트들로부터 제 1 최적의 코어 컴포넌트를 선택하고, 그리고 제 1 최적의 코어 컴포넌트 상에서 실행하도록, 어플리케이션 프로그램을 스케줄링하도록 컴퓨터 시스템을 구성하는 컴퓨터 실행가능 명령들을 포함한다.
전술한 개요는 단지 예시적이며, 임의의 제한적인 방법이 되도록 의도되지 않는다. 전술한 예시적인 양태, 실시형태, 및 특징들에 더해, 추가적인 양태, 실시형태, 및 특징들이 도면 및 이하의 상세한 설명을 참조하여 명백하게 될 것이다.
본 개시물은, 이하의 도면에 따라서 취해진 이하의 상세한 설명 및 첨부된 청구항들로부터 더 잘 이해될 수 있다. 도면의 컴포넌트들은 반드시 스케일링되지는 않고, 대신에 개시된 청구물의 원리를 예시할 때 스케일링이 강조된다. 이러한 도면들이 본 개시물에 따라서 단지 몇몇 실시형태들만을 도시하고 있고, 이에 따라 그 범위를 제한하는 것으로 고려되지 않는다는 것을 이해하는 것은, 본 개시물이 첨부된 도면들의 이용을 통해서 추가적인 특정 사항 및 세부사항을 이용하여 설명될 것이다.
도 1 은 본 개시물의 적어도 몇몇 실시형태들에 따른 컴퓨터 시스템을 예시한다.
도 2 는, 도 2a 및 도 2b 의 멀티프로세서의 각각의 코어의 상세한 도면을 포함하는, 본 개시물의 적어도 몇몇 실시형태들에 따른 오퍼레이팅 시스템에 의해 실행되는 어플리케이션 프로그램을 예시한다.
도 3 은, 본 개시물의 적어도 몇몇 실시형태들에 따라서, 메모리 제어기로 전송되는 요청들을 발행하는 스레드들로 분할되는 어플리케이션 프로그램의 개략적인 표현을 예시한다.
도 4 는 본 개시물의 적어도 몇몇 실시형태들에 따라서 배열된 플로우차트를 예시한다.
이하의 설명은 청구된 청구물의 전반적인 이해를 제공하기 위해 구체적인 세부사항들과 함께 다양한 예시들을 설명한다. 그러나, 청구된 청구물이 본 명세서에 개시된 몇몇 또는 그 이상의 구체적인 세부사항들 없이도 실행될 수도 있다는 것은 당업자에게는 이해될 것이다. 또한, 몇몇 상황에서, 주지된 방법, 절차, 시스템, 컴포넌트들 및/또는 회로들이 청구물을 불필요하게 방해하는 것을 회피하기 위해 상세하게 설명되지 않았다. 이하의 상세한 설명에서, 그 일부를 형성하는 첨부된 도면들에 대한 참조가 이루어진다. 도면들에서, 유사한 심볼들은 통상적으로 내용이 그 이외의 것을 나타내지 않는 한 유사한 컴포넌트들을 식별한다. 상세한 설명, 도면, 및 청구항에서 설명된 예시적인 실시형태들은 제한적인 것을 의미하지 않는다. 본 명세서에 나타난 발명의 사상 또는 범위를 벗어나지 않고, 다른 실시형태들이 활용될 수도 있고, 다른 변화들이 이루어질 수도 있다. 본 명세서에 일반적으로 설명되고 도면들에 예시된 바와 같이, 본 개시물의 양태들은 다양한 상이한 구성들로 배열되고, 치환되고, 조합되고 설계될 수 있으며, 이 구성들은 명백하게 고찰되어 본 개시물의 일부를 이룬다.
이는, 칩-내 프로세스 변화를 고려하면서 스레드들을 지능적으로 스케줄링하는데 유리하다. 그러나, 칩 내의 코어들의 수가 증가함에 따라, 어떤 코어가 주어진 스레드를 효과적으로 실행하는지를 판정하는 것은 복잡한 태스크가 된다.
본 명세서에 고찰되는 것과 같이, 다이-내 프로세스 변화는 CMP 시스템 내의 개별적인 코어들로 하여금 소모되는 스태틱 전력 및 지원되는 최대 주파수 모두 상이하게 하도록 야기할 수도 있다. 유사하게, 다이-내 프로세스 변화는 CMP 시스템 내의 개별적인 코어들 내의 컴포넌트들이 소모되는 스태틱 전력 및 지원되는 최대 주파수 모두 상이하게 하도록 야기할 수도 있다. 이 환경에서, 어플리케이션들을 스케줄링하거나 또는 어플리케이션들로부터의 스레드들을 스케줄링할 때 변화 효과를 무시하는 것은, 차선의 선택일 수도 있다.
다이-내 프로세스 변화는, 코어 컴포넌트들로 알려져 있는, 개별적인 코어들 내의 컴포넌트들이 실패하도록 야기하거나 또는 차선의 성능을 제공하도록 야기할 수도 있다. 코어 컴포넌트는, 예를 들어, 분기 예측기, 캐시, 부동 소수점 유닛, 메모리 버스와 같은 특정 유형의 버스, 및 파이프라인 디자인에 이용되는 포워딩 회로, 레지스터 파일, 또는 명령 큐를 포함할 수도 있다. 코어 컴포넌트가 실패하거나 또는 차선의 성능을 제공하는 경우, CMP 시스템의 성능은 그 속도가 늦춰질 수도 있다.
이러한 환경에서, 다이-내 프로세스 변화의 효과를 무시하는 것은 전체 CMP 시스템의 차선의 성능을 결과로 초래할 수도 있다. 특정 코어 내의 다이-내 프로세스 변화의 효과를 결정하는데 이용될 수도 있는 몇몇 하드웨어 컴포넌트들이 이용가능할 수도 있다. 사실상, 정교한 온-칩 전력 모니터들 및 제어기들, 예를 들어, 인텔의 Foxton technology [4] 가 코어들의 전력 불균일을 측정하고 관리하도록 이용될 수도 있다. 또한, 다수의 온-칩 주파수 도메인들을 지원하고 AMD 의 Quad-Core Opteron [2] 에서와 같은 독립적인 각각의 코어의 주파수를 변화시키는 능력은, 코어들의 주파수 불균일을 활용 (exploit) 하도록 이용될 수도 있다.
결과로서, 본 개시물은, CMP 시스템 내의 또는 CMP 시스템의 다양한 코어 컴포넌트 내의 다이-내 프로세스 변화에 대해 인지가 어플리케이션 또는 어플리케이션 내의 스레드들을 스케줄링하는데 유리하여, 전력을 절약하고 쓰루풋을 향상시킬 수도 있다는 것을 식별한다. 변화-인지 방식으로 어플리케이션들을 스케줄링하고, 각각의 개별적인 코어의 상이한 전력 및 주파수 특성을 고려함으로써, 또는 특정 코어 또는 코어들 내의 코어 컴포넌트들에 대한 다이-내 프로세스 변화를 고려함으로써, 전력의 상당한 절약 또는 쓰루풋의 상당한 증가를 달성할 수도 있다.
도 1 은 본 개시물의 적어도 몇몇 실시형태들에 따라서 배열된 컴퓨터 시스템을 예시한다. 도 1 은 프로세서 (110), 메모리 (120) 및 하나 이상의 드라이브들 (130) 을 포함하는 컴퓨터 (100) 를 예시한다. 드라이브들 (130) 및 그와 관련된 컴퓨터 저장 매체는 컴퓨터 판독가능 명령들의 저장소, 데이터 구조들, 프로그램 모듈들 및 컴퓨터 (100) 에 대한 다른 데이터를 제공할 수도 있다. 드라이브들 (130) 은 오퍼레이팅 시스템 (140), 어플리케이션 프로그램 (150), 프로그램 모듈 (160), 및 데이터베이스 (180) 를 포함할 수도 있다. 예를 들어, 오퍼레이팅 시스템 (140) 및/또는 어플리케이션 프로그램 (150) 은, 컴퓨터 (100) 로 하여금 도 4 에서 구체화된 기능들 및/또는 동작들을 수행하게 하기 위한 프로그램 명령들을 포함할 수도 있다. 컴퓨터 (100) 는 사용자 입력 디바이스들 (190) 을 포함할 수도 있는데, 이 사용자 입력 디바이스들을 통해서 사용자가 커맨드 및 데이터를 입력할 수도 있다. 입력 디바이스들은 전자 디지타이저, 마이크로폰, 키보드 및 포인팅 디바이스 (일반적으로, 마우스, 트랙볼 또는 터치 패드를 지칭) 를 포함할 수도 있다. 다른 입력 디바이스들은 조이스틱, 게임 패드, 위성 디쉬, 스캐너 등을 포함할 수도 있다.
이러한 디바이스들 및 다른 입력 디바이스들은 시스템 버스에 커플링될 수도 있는 사용자 입력 인터페이스를 통해서 프로세서 (110) 에 커플링될 수도 있고, 또는 병렬 포트, 게임 포트 또는 USB (universal serial bus) 등과 같은 다른 인터페이스 또는 버스 구조들에 의해 연결될 수도 있다. 컴퓨터 (100) 는 출력 주변 인터페이스 (194) 등을 통해서 연결될 수도 있는 스피커, 프린터, 또는 디바이스 (202) 와 같은 주변 출력 디바이스들을 포함할 수도 있다.
컴퓨터 (100) 는, 하나 이상의 컴퓨터들로의 로지컬 접속부들, 예를 들어, 네트워크 인터페이스 (196) 에 연결된 원격 컴퓨터를 이용하여 네트워킹 환경에서 동작할 수도 있다. 원격 컴퓨터는 퍼스널 컴퓨터 (PC), 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공통 네트워크 노드일 수도 있고, 또는 컴퓨터 (100) 에 관련하여 전술된 수많은 또는 모든 엘리먼트들을 포함할 수도 있다.
네트워킹 환경은, 오피스, 기업차원의 광대역 네트워크 (WAN), 협대역 네트워크 (LAN), 인트라넷 및 인터넷을 포함할 수도 있다. 일 예시에서, 컴퓨터 (100) 는 데이터가 이동하는 소스 머신일 수도 있고, 원격 컴퓨터는 목적 머신을 포함할 수도 있고, 또는 포함하지 않을 수도 있다. 소스 및 목적 머신은 네트워크 (108) 또는 임의의 다른 수단에 의해 접속되지 않을 수도 있지만, 그 대신에, 데이터는 소스 플랫폼에 의해 기록되고 목적 플랫폼 또는 플랫폼들에 의해 판독될 수 있는 임의의 매체를 통해서 이주될 수도 있다. LAN 또는 WLAN 네트워킹 환경에서, 컴퓨터 (100) 는 네트워크 인터페이스 (196) 또는 어댑터를 통해서 LAN 또는 WAN 에 접속될 수도 있다. WAN 네트워킹 환경에서, 컴퓨터 (100) 는, 예를 들어, 인터넷 또는 네트워크 (108) 와 같은 WAN 을 통해서 통신을 확립하기 위한 다른 수단들 또는 모뎀을 포함할 수도 있다. 컴퓨터들 사이의 통신 링크를 확립하는 다른 수단이 이용될 수도 있다.
컴퓨터 주변기기는 시스템 버스를 통해서 컴퓨터 (100) 의 프로세서 (110) 및 메모리 (120) 에 커플링된 임의의 디바이스를 포함할 수도 있다. 컴퓨터 주변기기는, 디스플레이 (202), 프린터, 또는 스피커, 드라이브들 (130), 사용자 입력 디바이스들 (190) (예를 들어, 키보드, 마우스, 및 마이크로폰) 및 네트워크 인터페이스 (196) 를 포함하는 출력 주변 인터페이스에 연결된 임의의 디바이스를 포함할 수도 있다. 컴퓨터 주변기기의 컴포넌트들은, 전력을 이용할 수도 있는 컴퓨터 주변기기들 내에 임의의 디바이스를 포함할 수도 있고, 스피커, 라이팅 엘리먼트 (예를 들어, 발광 다이오드, 또는 디스플레이, 디스플레이 엘리먼트들 (예를 들어, LCD, LED, OLED, CRT, 또는 플라즈마 디스플레이) 를 위한 라이팅을 제공하는데 이용된) 백라이트들, 또는 반도체 칩 (예를 들어, 중앙 처리 장치 (CPU), 그래픽 처리 장치 (GPU), 메모리) 과 같은 임의의 디바이스일 수도 있다. 일 실시형태에 따르면, 컴퓨터 (100) 는 네트워킹 환경에서 접속될 수도 있어서, 프로세서 (110) 및/또는 프로그램 모듈 (160) 은 전력 감소를 수행하고 사용자 경험에 대해 최소의 피해를 갖는 보존을 수행할 수도 있다.
몇몇 예시에서, 컴퓨터 시스템 내에서 실행하는 어플리케이션 프로그램을 스케줄링하는 방법이 설명된다. 컴퓨터 시스템은 제 1 및 제 2 코어들 및 어플리케이션 프로그램을 실행하는 오퍼레이팅 시스템을 갖는 멀티프로세서를 포함한다. 제 1 코어는, 제 1 및 제 2 코어 컴포넌트 유형들의 제 1 및 제 2 코어 컴포넌트들을 각각 가질 수도 있다. 제 2 코어는 제 1 및 제 2 코어 컴포넌트 유형들의 제 3 및 제 4 코어 컴포넌트들을 각각 가질 수도 있다. 이 방법은, 임의의 다이-내 프로세서 변화에 대해 제 1, 제 2, 제 3, 및 제 4 코어 컴포넌트들을 분석하는 단계, 및 제 1, 제 2, 제 3, 제 4 코어 컴포넌트들의 동작 상태를 결정하는 단계를 포함할 수도 있다. 이 방법은, 각각의 컴포넌트 유형에 대한 최적의 코어 컴포넌트들을 선택하는 단계 및 어플리케이션 프로그램에 의해 어떤 코어 컴포넌트 유형들이 이용되는지를 결정하는 단계를 포함할 수도 있다. 이 방법은, 어플리케이션 프로그램에 의해 이용되는 코어 컴포넌트 유형에 대한 최적의 코어 컴포넌트를 갖는 코어 상에서 실행하도록 어플리케이션 프로그램을 스케줄링하는 단계를 포함할 수도 있다.
몇몇 다른 예시에서, 컴퓨터 시스템 내에서 실행하는 복수의 어플리케이션 프로그램들을 스케줄링하기 위한 방법이 설명된다. 컴퓨터 시스템은 제 1 및 제 2 코어를 갖는 멀티프로세서 및 어플리케이션 프로그램들을 실행하는 오퍼레이팅 시스템을 포함할 수도 있다. 제 1 코어는 제 1 및 제 2 코어 컴포넌트 유형들의 제 1 및 제 2 코어 컴포넌트들을 각각 가질 수도 있다. 제 2 코어는 제 1 및 제 2 코어 컴포넌트 유형들의 제 3 및 제 4 코어 컴포넌트들을 각각 가질 수도 있다. 이 방법은, 제 1, 제 2, 제 3 및 제 4 코어 컴포넌트들의 동작 상태들을 결정하는 단계, 및 각각의 컴포넌트 유형에 대한 최적의 코어 컴포넌트들을 선택하는 단계를 포함할 수도 있다. 이 방법은, 각각의 어플리케이션 프로그램에 의해 어떤 코어 컴포넌트 유형이 이용되는지를 결정하는 단계, 및 각각의 어플리케이션 프로그램에 의해 이용된 코어 컴포넌트 유형에 대한 최적의 코어 컴포넌트를 갖는 코어 상에서 실행하도록 각각의 어플리케이션 프로그램을 스케줄링하는 단계를 포함할 수도 있다.
또 다른 예시에서, 컴퓨터 시스템 내에서 실행하는 어플리케이션 프로그램을 스케줄링하기 위한 방법이 설명된다. 컴퓨터 시스템은, 제 1 및 제 2 코어들, 및 어플리케이션 프로그램을 실행시키는 오퍼레이팅 시스템을 포함한다. 제 1 코어는, 제 1 및 제 2 코어 컴포넌트 유형의 제 1 및 제 2 코어 컴포넌트들을 각각 가질 수도 있다. 제 2 코어는, 제 1 및 제 2 코어 컴포넌트 유형의 제 3 및 제 4 코어 컴포넌트들을 가질 수도 있다. 이 방법은, 제 1, 제 2, 제 3 및 제 4 코어 컴포넌트들의 동작 상태를 결정하는 단계, 및 각각의 어플리케이션 프로그램에 의해 어떤 코어 컴포넌트 유형들이 이용되는지를 결정하는 단계를 포함할 수도 있다. 이 방법은, 어플리케이션 프로그램에 의해 이용되는 코어 컴포넌트 유형에 대한 최적의 코어 컴포넌트를 갖는 코어 상에서 실행하도록 어플리케이션 프로그램을 스케줄링하는 단계를 포함할 수도 있다.
도 2 는 본 개시물의 적어도 몇몇 실시형태들에 따라서 오퍼레이팅 시스템에 의해 실행되는 어플리케이션 프로그램을 나타낸다. 도 2 에 도시된 바와 같이, 오퍼레이팅 시스템 (140) 은 드라이브들 (130) 로부터의 어플리케이션 프로그램 (150) 을 실행할 수도 있다. 예를 들어, 오퍼레이팅 시스템 (140) 및/또는 어플리케이션 프로그램들 (150) 은 컴퓨터 (100) 로 하여금 도 4 에 구체화된 기능 및/또는 동작들을 실행하게 하는 프로그램 명령들을 포함할 수도 있다. 어플리케이션 프로그램 (150) 은, 멀티프로세서 (111) 에서 오퍼레이팅 시스템 (140) 에 의해 실행될 수도 있는 임의의 어플리케이션, 프로그램, 프로그램의 일부, 또는 스레드일 수도 있다. 어플리케이션 프로그램 (150) 은, 메모리 제어기 (210) 를 이용하여, 데이터 (230) 를 메모리 (120) 에 로딩할 수도 있고 메모리 (120) 로부터 데이터 (230) 에 액세스한다. 어플리케이션 프로그램 (150) 은, 하나 이상의 요청들 (226) 을 이용하여 메모리 (120) 의 메모리 뱅크 (122) 로 로딩하고 그리고 메모리 뱅크 (122) 로부터 데이터 (230) 에 액세싱하는 것과 같은 태스크를 달성하기 위해 스레드 (220) 로 지칭되는 다수의 서브-어플리케이션들을 실행할 수도 있다. 스레드 (220) 는 어플리케이션 프로그램 (150) 에 의해 실행될 수도 있다. 어플리케이션 프로그램 (150) 은, 어플리케이션 프로그램이 그 태스크를 수행하기 위해 필요한 것으로 판단되는 만큼의 많은 수의 스레드들 (220) 로 태스크의 실행을 분할할 수도 있다. 예를 들어, 어플리케이션 프로그램 (150) 은 다수의 페이지를 갖는 문서를 이용하는 워드 프로세싱 프로그램이고, 어플리케이션 프로그램 (150) 이 그 문서의 각각의 페이지들을 스펠 체크하는 태스크를 수행하도록 구성되는 경우에, 어플리케이션 프로그램 (150) 은 그 문서를 스펠 체크하는 태스크를 다수의 스레드들로 분할하여 각각의 스레드들 (220) 이 그 문서의 일부를 스펠 체크하도록 할 수도 있다. 각각의 스레드 (220) 는 실행을 위해 멀티프로세서 (111) 에 전송될 수도 있다. 멀티프로세서 (111) 내에서 실행될 때, 각각의 스레드 (220) 는 메모리 (120) 내의 데이터 (230) 에 대한 요청 (226) 을 생성할 수도 있다. 요청 (226) 은, 멀티 프로세서 (111) 가 효과적으로 동작하도록 요청 (226) 을 조직할 수도 있는 메모리 제어기 (210) 에 전송될 수도 있다.
도 2 에 도시된 바와 같은 몇몇 실시형태에서, 멀티프로세서 (111) 는 2 개 이상의 스레드 (220) 를 동시에 실행할 수도 있는 프로세서들을 포함할 수도 있다. 멀티프로세서 (111) 는, 코어 (412 및 512) 로서 알려진 다수의 프로세서들, 또는 멀티스레디드 프로세서로서 알려진 다수의 스레드 (220) 를 동시에 실행시킬 수도 있는 단일의 프로세서 (412 또는 512 중 오직 하나) 를 포함할 수도 있다. 예를 들어, 도 2 는 2 개의 코어들 (412 및 512) 을 포함하는 예시적인 멀티프로세서 (111) 를 예시하지만, 임의의 특정 수의 코어들로 제한되지 않는다. 용어 "코어" 는, 단일의 스레드를 프로세싱할 수도 있고 단일의 스레드를 프로세싱할 수도 있는 프로세서 또는 프로세서 내의 일부를 지칭할 수도 있는 임의의 디바이스를 지칭하도록 이용된다. 멀티스레디드 프로세서는 다수의 코어들을 갖는 프로세서로서 지칭될 수도 있다. 다수의 프로세서들을 갖는 컴퓨터 (100) 는 다수의 코어들을 갖는 컴퓨터 (100) 로서 본 명세서에서 지칭될 수도 있다.
도 2a 및 도 2b 는 코어들 (412 및 512) 각각의 세부사항들을 나타내는 멀티프로세서 (111) 의 상세한 도면을 포함한다. 도시된 바와 같이, 각각의 코어 (412 또는 512) 는 코어 컴포넌트들 (413 또는 513) 을 포함할 수도 있고, 이 코어 컴포넌트들은 코어에 대한 설정 함수 또는 동작을 수행할 수도 있는 각각의 코어 내에 있는 엘리먼트들 일 수도 있다. 예를 들어, 분기 예측기 (415 또는 515), 캐시 (417 또는 517), 부동 소수점 유닛 (419 또는 519), 특정 유형의 버스 (421 또는 521) (예를 들어, 메모리 버스) 또는 파이프라인 설계에 이용된 포워딩 회로 (423 또는 523), 레지스터 (425 또는 525), 또는 명령 큐 (427 또는 527) 를 포함할 수도 있는 코어 컴포넌트 유형들로서 알려져 있는, 코어 컴포넌트들 (413 또는 513) 의 다양한 유형이 존재할 수도 있다. 코어 컴포넌트 (413 또는 513) 가 실패하거나 또는 차선의 성능을 제공하는 경우, 코어의 성능, 궁극적으로는 멀티프로세서 (111) 의 성능이 감속될 수도 있다. 또한, 코어 (412) 는 예를 들어, 코어 (512) 의 분기 예측기 (515) 보다 빠르게 수행할 수도 있는 분기 예측기 (415) 를 가질 수도 있다. 이러한 예시에서, 분기 예측기의 가중된 이용을 요구하는 어플리케이션 프로그램 (150) 은 제 2 코어 (512) 보다 제 1 코어 (412) 상에서 더 잘 수행될 수도 있다.
도 3 은 본 개시물의 몇몇 실시형태들에 따라서 메모리 제어기에 전송된 요청들을 발행할 수도 있는 스레드들로 분할되는 어플리케이션 프로그램의 개략적인 표현을 예시한다. 도 3 에 도시된 바와 같이, 어플리케이션 (150) 은 다수의 스레드들 (220a-220n) 로 분할될 수도 있고, 여기서 n 은 스레드들 (220) 의 수를 나타낼 수도 있고, 각각의 스레드는 어플리케이션 (150) 에 대한 태스크를 수행할 수도 있고, 예를 들어 도 2 의 멀티프로세서 (111) 상에서 실행될 수도 있다. 멀티프로세서는 어플리케이션 프로그램 (150) 으로부터 개별적으로 또는 동시에 다수의 스레드들 (220a-220n) 을 수신 및 실행하도록 구성될 수도 있다. 멀티프로세서상에서 실행된 각각의 스레드 (220) 는 각각의 다른 스레드 (220) 와는 별개로 실행될 수도 있고, 메모리 (120) 내에 저장된 데이터 (230) 에 대한 다수의 요청들 (226a1-226n0) 을 발행할 수도 있으며, 여기서 제 1 인덱스 (a...n) 는 요청 (226) 과 관련된 스레드 (220) 를 나타내고, 제 2 인덱스 (1...o) 는 특정 스레드 (220) 와 관련된 요청들 (226) 의 수를 나타낸다.
제조시에, 도 2a 및 도 2b 에 도시된 각각의 코어 컴포넌트 (413 또는 513) 는 약간의 정도의 프로세스 변화를 겪을 수도 있고, 이러한 변화는 코어 컴포넌트들이 실패하거나 또는 차선의 성능을 제공하도록 야기할 수도 있다. 프로세스 변화는, 그들의 공칭 값들을 초과하는 반도체 프로세싱 관련 파라미터들 (예를 들어, 도핑 밀도, 이동성, 저항, 커패시턴스, 인덕턴스, 이득, 속도, 대역폭, 임계 전압, 기생 효과, 누설 등에 관련된 파라미터들) 의 변화를 지칭하고, 예를 들어, 작은 피쳐 크기를 제조하는데 있어서의 어려움을 초래할 수도 있다. 모델링 및 분석의 목적을 위해, 변화는 다이-투-다이 (D2D) 변화 (또는 코어-투-코어 변화) 및 다이-내 (WID) 변화 (또는 코어-내 변화) 로 고장날 수도 있다. WID 프로세스 변화는 시스템적 그리고 랜덤 효과들로 더 분할될 수도 있다. WID 프로세스 변화는 컴퓨터 내의 전력 및 주파수의 코어-투-코어 변화에 대해 직접적인 효과를 가질수도 있다.
WID 프로세스 변화에 의해 영향을 받을 수도 잇는 예시적인 반도체 프로세싱 파라미터들은, 예를 들어, 임계 전압 (Vth) 및 효율적인 게이트 길이 (Leff) 를 포함한다. 이러한 예시적인 파라미터들은 트랜지스터의 스위칭 속도 및 누설 전압에 임팩트를 줄 수도 있다. 더 높은 Vth 와 Leff 변화는 칩에 걸쳐서 트랜지스터 속도 (또는 대역폭) 의 더 높은 변화에 해당할 수도 있다. 이는, 프로세서 또는 코어 컴포넌트들 내의 더 느린 트랜지스터들이 프로세서의 주파수 또는 프로세서 내의 코어 컴포넌트들의 성능을 결정할 수도 있기 때문에, 더 느린 프로세서 (또는 멀티프로세서들) 또는 더 느린 코어 컴포넌트들을 초래할 수도 있다. 멀티프로세서 (111) 에서, 상이한 코어들이 상이한 주파수들을 지원할 수도 있고, 코어들 내의 상이한 코어 컴포넌트들은 성능의 변화를 가질 수도 있다. 또한, Vth 가 변화함에 따라서, 트랜지스터 누설은 프로세서 또는 멀티프로세서에 걸쳐서 변화할 수도 있다. 낮은-Vth 트랜지스터들은 높은-Vth 트랜지스터들이 절약하는 것 보다 더 많은 전력을 소비할 수도 있다. 그 결과, 이러한 변화를 통해서, 프로세서 및 멀티프로세서들은 실질적으로 더 많은 누설 전력을 소비할 수도 있다. 멀티프로세서에서, 상이한 코어들은 트랜지스터 누설의 양을 변화시킬 수도 있다.
모델 시스템적 변화에 대해, 프로세서 또는 멀티프로세서, 또는 프로세서 또는 멀티프로세서 내의 개별적인 코어 컴포넌트들은 그리드로 분할될 수도 있다. 각각의 그리드 포인트는 파라미터의 시스템적 컴포넌트의 주어진 하나의 값일 수도 있고, 이 값은 μ=0 및 표준 편차 σsys 의 공칭 분포를 갖는 것으로 가정될 수도 있다. 시스템적 변화는 공간 상관 (spatial correlation) 에 의해 특징화될 수도 있어서, 칩 상의 인접 영역들은 동일한 시스템적 컴포넌트 값들을 대략적으로 가질 수도 있다.
랜덤 변화가 개별적인 트랜지스터들의 레벨로 발생할 수도 있고, μ=0 및 표준 편차 σsys 의 공칭 분포를 이용하여 분해적으로 모델링될 수도 있다. 랜덤 및 시스템적 컴포넌트들이 정상적으로 그리고 개별적으로 분포될 수도 있기 때문에, 이들의 효과는 부가적일 수도 있다.
프로세스 변화를 가지는 환경에서, 멀티프로세서 내의 각각의 프로세서 코어는 상이한 전력량을 소비할 수도 있고 상이한 최대 주파수를 지원할 수도 있어서, 그 결과 하나의 코어에서 다른 코어로의 성능의 변화를 초래한다. 추가적으로, 프로세서 (또는 멀티프로세서) 코어 내의 각각의 코어 컴포넌트는 상이한 양의 전력을 소모할 수도 있고, 상이한 최대 주파수를 지원할 수도 있어서, 이에 따라 코어마다의 성능의 변화를 초래한다. 또한, 특정 코어 컴포넌트들은 완전하게 실패하거나 또는 차선적인 방식으로 수행할 수도 있다. 그 결과, 실패하거나 또는 차선의 성능을 제공하는 코어 컴포넌트들을 갖는 코어들은, 이러한 코어 컴포넌트들에 더 많이 의존하는 다른 어플리케이션 프로그램들 만큼 효과적으로 특정 어플리케이션 프로그램들을 수행하지 않을 수도 있다.
다양한 설명된 실시형태들에서, 어플리케이션들은, 실질적으로, 도 4 에 설명된 것과 같은 어플리케이션 스케줄링 알고리즘을 이용하여 스케줄링되어, 변화에 영향 받은 멀티프로세서가 균일한 시스템인 것처럼, 멀티프로세서의 성능을 최대화하거나 또는 멀티프로세서의 전력 이용을 최소화할 수도 있다. 이 환경에서, 2 개의 높은-레벨의 설계 문제가 존재할 수도 있다. 첫 번째 문제는, 멀티프로세서의 상이한 코어들이 동일한 주파수 (균일한 주파수) 에서 동일한 주파수가 아닌 주파수 (균일하지 않은 주파수) 에서 사이클링 해야만 하는지의 여부에 대한 문제일 수도 있다. 두 번째 문제는, 멀티프로세서의 주파수 및 전압이 동적으로 (DVFS) 또는 동적인 아닌 (no DVFS) 것으로 변화될 수도 있는지의 여부에 대한 문제일 수도 있다. 이러한 구성에 대해, 오퍼레이팅 시스템 또는 어플리케이션 프로그램들은 전력을 최소화하거나 또는 성능을 최대화하기 위해 어플리케이션 스케줄링 및 전력 관리를 위한 변화-인지 어플리케이션 스케줄링 알고리즘을 포함할 수도 있다. 어플리케이션 스케줄링 알고리즘은, 예를 들어, 우선순위, 공평성, 또는 결핍-회피와 같은 오퍼레이팅 시스템에 의해 이용될 수도 있는 다른 스케줄링 기준을 보완할 수도 있다. 어플리케이션 스케줄링 알고리즘과 관련된 더욱 많은 정보들이 2008 년 International Symposium on Computer Architecture (ISCA) 363-374 페이지에서 Radu Teodorescu 와 Joseph Torrellas 에 의한 "Variation-Aware Application Scheduling and Power Management for Chip Multiprocessors" 에서 발견될 수 있고, 이들 모두는 본 출원에 부합하지 않는 경우를 제외하고는, 본 명세서에 참조로서 통합된다.
도 4 는 본 개시물의 적어도 몇몇 실시형태들에 따라서 배열된 플로우차트를 예시한다. 도 4 를 참조하여, 그 성능을 개선시키거나 또는 각각의 개별적인 코어의 전력 이용 특징을 최소화하기 위해, 어플리케이션 프로그램들은 어플리케이션 스케줄링 알고리즘 (600) 을 이용하여 오퍼레이팅 시스템에 의해 특정 코어들 또는 코어 컴포너넌트들 상에서 변화-인지 방식으로 실행하도록 스케줄링될 수도 있다. 어플리케이션 스케줄링 알고리즘 (600) 은 특정 코어 또는 코어들 내의 코어 컴포넌트들에 대한 프로세스 변화를 고려할 수도 있고, 어플리케이션 프로그램들을 동작시킬 때 전력의 차선적인 절감 또는 쓰루풋의 차선적인 증가를 허용할 수도 있다.
사용시에, 오퍼레이팅 시스템 및/또는 어플리케이션 프로그램은 블록 (601) 에서 어플리케이션 스케줄링 알고리즘 (600) 을 활성화시킬 수도 있고, 어플리케이션 스케줄링 알고리즘 (600) 은 블록 (602) 에서 프로세스 변화에 대해 멀티프로세서의 각각의 코어 내의 코어 컴포넌트들을 분석하도록 배열될 수도 있다. 프로세스 변화에 대해 코어 컴포넌트들을 분석할 때, 어플리케이션 스케줄링 알고리즘 (600) 은, 블록 (604) 에서, 코어 컴포넌트가 기능적인지의 여부를 결정하도록 구성될 수도 있다. 코어 컴포넌트가 기능적인 것으로 결정되는 경우, 어플리케이션 스케줄링 알고리즘 (600) 은, 다이-내 프로세스 변화 및/또는 다이-투-다이 프로세스 변화를 시험 (examine) 하고 그리고 동일한 유형의 다른 코어 컴포넌트들과 비교할 때 코어 컴포넌트가 어떻게 잘 기능하는지를 결정하도록 배열될 수도 있다. 일 예시에서, 어플리케이션 스케줄링 알고리즘 (600) 은, 특정 분기 예측기가 기능적인지의 여부를 결정한 경우, 그 특정 분기 예측기의 성능을 다른 분기 예측기들의 성능과 또는 미리결정된 일련의 측정치들 (예를 들어, 유사한 분기 예측기들에 대한 평균 동작 전압 및/또는 평균 동작 주파수) 의 성능과 비교할 수도 있다. 코어 컴포넌트의 성능을 동일한 유형의 다른 코어 컴포넌트들의 성능과 비교할 때, 어플리케이션 스케줄링 알고리즘 (600) 은 기능적 또는 비능적인 것으로서 코어 컴포넌트의 동작 상태를 언급 (예를 들어, 기록 또는 저장) 하도록 배열될 수도 있고, 이 동작 상태가 기능적인 경우, 어플리케이션 스케줄링 알고리즘 (600) 은 블록 (606) 에서 성능 또는 전력 효율과 관련하여 코어 컴포넌트가 어떻게 잘 기능하는지를 레이팅 (rate) (예컨대, 랭크 또는 점수) 하도록 배열될 수도 있다. 코어 컴포넌트가 어떻게 잘 기능하는지의 레이팅은 예를 들어, 1.0 에서 10.0 의 스케일 또는 임의의 다른 적당한 스케일과 같은 스케일일 수도 있다.
각각의 코어 컴포넌트에 주목하고 레이팅할 때, 어플리케이션 스케줄링 알고리즘 (600) 은, 블록 (608) 에서, 오퍼레이팅 시스템 상에서 실행하는 각각의 어플리케이션 프로그램에 의해 어떤 코어 컴포넌트 유형들이 이용될 수도 있는지, 또는 각각의 어플리케이션 프로그램에 대해 어떤 코어 컴포넌트 유형들이 중요할 수도 있는지를 결정하도록 배열될 수도 있고; 이는 어플리케이션의 컴파일 (compilation) 동안 일어날 수도 있다. 컴파일러는, 어떤 컴포넌트들이 각각의 어플리케이션 또는 스레드에 의해 이용되는지를 나타내는 정보를 발생시킬 수도 있다. 알고리즘 (600) 은, 블록 (610) 에서, 어플리케이션 프로그램에 의해 이용된 코어 컴포넌트 유형의 적어도 하나의 최적의 코어 컴포넌트를 갖는 코어상에서 실행하도록 각각의 어플리케이션 프로그램을 스케줄링할 수도 있다. 최적의 코어 컴포넌트는, 기능적일 수도 있고 기능적인 동작 상태를 가질 수도 있는 코어 컴포넌트일 수도 있다. 일 예시에서, 최적의 코어 컴포넌트가 가장 높은 랭킹을 갖는 동작 상태를 가질 수도 있는 코어 컴포넌트일 수도 있다. 다른 예시에서, 최적의 코어 컴포넌트는 평균 이상의 랭킹을 가질 수도 있는 코어 컴포넌트일 수도 있다. 일 실시형태에서, 어플리케이션 스케줄링 알고리즘 (600) 은 어플리케이션 프로그램에 의해 이용된 코어 컴포넌트 유형의 가장 최적의 코어 컴포넌트들을 갖는 코어상에서 실행하도록 어플리케이션 프로그램을 스케줄링할 수도 있다.
어플리케이션 스케줄링 알고리즘 (600) 은 어떤 코어 상에서 어떤 어플리케이션 프로그램이 실행하도록 스케줄링되는지를 결정할 수도 있다. 예를 들어, 각각의 코어 컴포넌트는 라벨링될 수도 있고, 예컨대, 이러한 분기 예측기는 1 로 라벨링될 수도 있고, 부동 소수점 멀티플라이어는 2 로 라벨링될 수도 있고, 정수 멀티플라이어는 3 으로 라벨링될 수도 있다. 각각의 코어에 대해, 별도의 불룸 필터가 존재할 수도 있고, 여기서 각각의 블룸 필터는 관련 코어상에서 실패하는 코어 컴포넌트들의 라벨(들) 을 저장한다. 예를 들어, 특정 코어의 분기 예측기가 실패하는 경우, 1 이 분기 예측기의 라벨이기 때문에, 관련 블룸 필터는 엘리먼트 1 을 포함할 수도 있다. 어플리케이션 (또는 스레드) 이 스케줄링될 때, 어플리케이션 스케줄링 알고리즘 (600) 은, 특정 코어의 어플리케이션 요건과 능력이 일치하는지를 체크할 수도 있다. 예를 들어, 어플리케이션이 부동 소수접 멀티플라이어를 요구하는 경우, 개별적인 코어들의 블룸 필터들을 체크하여 이 필터들이 엘리먼트 2 (부동 소수점 멀티플라이어 라벨에 해당) 하는지의 여부를 관찰할 수도 있다. 블룸 필터 테이블이 엘리먼트를 포함하는 경우, 어플리케이션은 다른 코어상에 스케줄링될 수도 있다. 만약 포함하지 않는 경우에는, 코어는 그 어플리케이션에 대해 이용될 수도 있다.
다양한 실시형태들에서, 개시된 방법들은 컴퓨터 시스템을 이용하기 위한 컴퓨터 프로그램 제품으로서 구현될 수도 있다. 이러한 구현들은, 컴퓨터 판독가능 매체 (예를 들어, 디스켓, CD-ROM, ROM, 또는 고정식 디스크) 와 같은 유형의 매체 (tangible medium) 상에 고정될 수도 있고, 또는 매체를 통해서 네트워크에 접속된 통신 어댑터와 같은 다른 인터페이스 디바이스 또는 모뎀을 통해서 컴퓨터 시스템에 송신가능할 수도 있는 일련의 컴퓨터 명령들을 포함할 수도 있다. 이 매체는, 유형의 매체 (예를 들어, 광학 또는 아날로그 통신 라인), 또는 무선 기술 (예를 들어, 마이크로웨이브, 적외선 또는 다른 송신 기술들) 을 이용하여 구현된 매체 둘 중 하나일 수도 있다. 일련의 컴퓨터 명령들은 시스템에 대해 본 명세서에 앞서 설명된 모든 기능 또는 기능의 일부를 채용한다. 당업자는, 이러한 컴퓨터 명령들이 수많은 컴퓨터 아키텍쳐 또는 오퍼레이팅 시스템들을 이용하여 수많은 프로그래밍 언어들로 기록될 수 있다는 것을 이해해야만 한다. 또한, 이러한 명령들은, 반도체, 자기, 광, 또는 다른 메모리 디바이스들과 같은 임의의 메모리 디바이스에 저장될 수도 있고, 광, 적외선, 마이크로웨이브, 또는 다른 송신 기술들과 같은 임의의 통신 기술을 이용하여 송신될 수도 있다. 이러한 컴퓨터 프로그램 제품은 첨부된 인쇄 또는 전자 문서 (예를 들어, 슈링크 랩 소프트웨어 (shrink wrapped software)) 를 이용하여 제거가능한 매체로서 분포될 수도 있고, (예를 들어, 시스템 ROM 또는 고정 디스크 상의) 컴퓨터 시스템을 통해서 사전-로딩될 수도 있으며, 또한 네트워크 (예를 들어, 인터넷 또는 World Wide Web) 를 통해서 서버 또는 전자 게시판으로부터 분포될 수도 있는 것이 기대된다. 물론, 개시된 청구물의 몇몇 실시형태들은 소프트웨어 (예를 들어, 컴퓨터 프로그램 제품) 및 하드웨어 모두의 조합으로서 구현될 수도 있다. 개시된 청구물의 또 다른 실시형태들은 전체적으로 하드웨어로서, 또는 전체적으로 소프트웨어 (예를 들어, 컴퓨터 프로그램 제품) 으로서 구현된다.
본 명세서에 설명된 청구물은 상이한 다른 컴포넌트들 내에 포함된 또는 이들에 연결된 상이한 컴포넌트들을 예시한다. 이렇게 도시된 아키텍쳐들은 예시적인 것이고, 사실상 동일한 기능을 달성하는 수많은 다른 아키텍쳐들이 구현될 수 있다는 것을 이해해야만 한다. 개념적인 관점에서, 동일한 기능을 달성하기 위한 컴포넌트들의 임의의 배열은 효과적으로 "연관되어", 바람직한 기능이 달성된다. 따라서, 특정 기능을 달성하도록 조합된 본 명세서의 임의의 2 개의 컴포넌트들은 서로 "연관된" 것으로 관찰될 수 있어서, 아키텍쳐 또는 매게 컴포넌트들과는 관계없이, 바람직한 기능이 달성된다. 이와 같이, 이렇게 연관된 임의의 2 개의 컴포넌트들은 서로에 대해 "동작가능하게 연결", 또는 "동작가능하게 커플링" 되어 바람직한 기능을 달성하는 것으로서 관찰될 수 있고, 이렇게 연관될 수 있는 임의의 2 개의 컴포넌트들은 서로에 대해 "동작가능하게 커플링되어 바람직한 기능을 달성하는 것으로 관찰될 수 있다. 동작가능하게 커플링가능한 구체적인 예는 물리적으로 합치가능한 및/또는 물리적으로 상호작용가능한 컴포넌트들 및/또는 무선으로 상호작용가능함 및/또는 무선으로 상호작용가능한 컴포넌트들 및/또는 논리적으로 상호작용 및/또는 논리적으로 상호작용가능한 컴포넌트들을 포함하지만 이에 한정하지 않는다.
본 명세서에서의 실질적으로 임의의 복수 및/또는 단수 용어들을 사용하는 것과 관련하여, 당업자는 문맥 및/또는 명세서에 적당하도록 복수에서 단수로 및/또는 단수에서 복수로 전환할 수 있다. 다양한 단수/복수 전환은 명백함을 위해 본 명세서에 명확하게 설명될 수도 있다.
일반적으로, 본 명세서에 그리고 특히 첨부된 청구항들 (예를 들어, 첨부된 청구항들의 본문) 에 사용되는 용어는 일반적으로 "개방적인" 용어들 (예를 들어, 용어 "포함하는" 은 "포함하지만 한정하지 않는" 으로 해석되어야만 하고, 용어 "가지는" 은 "적어도 가지는" 것으로서 해석되어야만 하고, 용어 "포함하다" 는 "포함하지만 이에 한정하지 않는다" 로서 해석되어야만 한다) 로서 의도되는 것을 당업자는 이해할 것이다. 또한, 구체적인 갯수의 도입된 청구항 기재가 의도되는 경우, 이러한 의도는 청구항에서 명시적으로 기재될 것이고, 이러한 기재의 부재시에는 어떠한 의도도 존재하지 않는다는 것을 당업자는 이해해야만 한다. 예를 들어, 이해를 돕기 위해, 다음의 첨부된 청구항들이 청구항 기재를 도입하기 위해 서두 어구 "적어도 하나" 및 "하나 이상" 의 이용을 포함할 수도 있다. 그러나, 이러한 어구들의 이용은, 부정관사 "a" 또는 "an" 에 의한 청구항 기재의 도입이 이러한 하나의 기재만을 포함하는 발명들에 이러한 도입된 청구항을 포함하는 임의의 특정 청구항을 제한하는 것을 함축하는 것으로 구성되지 않아야만 하고, 동일한 청구항이 서두 어구 "하나 이상" 또는 "적어도 하나" 그리고 부정 관사 "a" 또는 "an" 를 포함할 때조차도 (예를 들어, "a" 및/또는 "an" 은 통상적으로 "적어도 하나" 또는 "하나 이상" 을 의미하는 것으로 파악되어야만 한다); 청구항 기재를 도입하는데 이용된 정관사의 이용에 대해서도 동일하다. 또한, 특정 갯수의 도입된 청구항 인용이 명백하게 인용되는 경우에도, 이러한 인용이 적어도 인용된 갯수를 의미하는 것으로 통상적으로 이해되어야만 한다는 것을 당업자는 파악할 것이다 (예를 들어, 통상적으로 다른 수식어 없이 "2 개의 기재" 의 그대로의 기재는 적어도 2 개의 기재들, 또는 2 개 이상의 기재들을 의미한다). 또한, "A, B, 및 C 중 적어도 하나 등" 과 유사한 관례가 이용되는 예에서, 일반적인 이러한 구성은 당업자가 그 관례를 이해할 것이라는 방식으로 의도된다 (예를 들어, "A, B 및 C 중 적어도 하나를 갖는 시스템" 은 A 하나만을, B 하나만을, C 하나만을, A 와 B 함께, A 와 C 함께, B 와 C 함께, 및/또는 A,B, 및 C 함께 등을 갖는 시스템을 포함하지만 이에 한정하지 않는다). "A, B 또는 C 중 적어도 하나 등" 과 유사한 관례가 이용되는 이러한 예시에서, 일반적인 이러한 구성은 당업자가 그 관례를 이해하는 방식으로 의도된다 (예를 들어, "A, B, 또는 C 중 적어도 하나를 갖는 시스템" 은 A 하나만을, B 하나만을, C 하나만을, A 와 B 함께, A 와 C 함께, B 와 C 함께, 및/또는 A, B 및 C 함께 등을 포함하지만 이에 한정하지 않는다). 또한, 상세한 설명, 청구항들, 또는 도면들에서 2 개 이상의 선택적인 용어들을 나타내는 사실상 임의의 이접적 단어 및/또는 문구는 용어들 중 하나, 용어들, 용어 모두를 포함하는 가능성을 고려하는 것으로 이해되어야만 한다는 것이 당업자에게는 이해될 것이다. 예를 들어, 어구 "A 또는 B" 는 "A" 또는 "B" 또는 "A 및 B" 의 가능성을 포함하는 것으로 이해될 것이다.
개시된 청구물의 다양한 실시형태들이 설명되지만, 당업자에게는 다른 실시형태들 및 구현들이 개시물의 범위 내에서도 가능하다는 것이 명백할 것이다. 따라서, 개시된 청구물은 첨부된 청구항 및 그 동등물을 고려하는 것을 제외하고는 제한되지 않는다.
참조문헌들
[1] 2003년 6월, 회로 설계 자동화 컨퍼런스 (Design Automation Conference) 에서, S. Borkar, T. Karnik, S. Narendra, J. Tschanz, A. Keshavarzi, 및 V. De 에 의한 "Parameter variations and impact on circuits and microarchitecture".
[2] 2007년 2월, 국제 고체 상태 회로 컨퍼런스 (International Solid State Circuits Conference) 에서, J. Dorsey, S. Searles, M. Ciraula, S. Johnson, N. Bujanos, D. Wu, M. Braganza, S. Meyers, E. Fang, 및 R. Kumar 에 의한 "An integrated quadcore Opteron processor".
[3] 2007년 4월, 회로 설계, 자동화 및 테스트 (Design, Automation and Test) 에서, E. Humenay, D. Tarjan, 및 K. Skadron 에 의한 "The impact of systematic process variations on symmetrical performance in chip multiprocessors".
[4] 2006년 1월, 고체 상태 회로 저널 (Journal of Solid-State Circuits) 에서, R. McGowen, C. A. Poirier, C. Bostak, J. Ignowski, M. Millican, W. H. Parks, 및 S. Naffziger 에 의한 "Power and temperature control on a 90-nm Itanium family processor".

Claims (22)

  1. 둘 이상의 코어들을 갖는 컴퓨터 시스템 내에서 실행하는 어플리케이션 프로그램을 스케줄링하는 방법으로서, 각각의 코어는 각각의 코어 컴포넌트들을 사용할 수 있고, 상기 코어 컴포넌트들은 상기 코어들을 위한 기능이나 동작들을 수행하는 상기 코어들 내부의 구성요소이고,
    상기 방법은,
    제 1 레이팅을 생성하기 위해 프로세스 변화에 기초하여 제 1 코어 컴포넌트를 분석하는 단계로서, 상기 프로세스 변화는 다이-내 프로세스 변화와 다이-투-다이 프로세스 변화 중 어느 하나 또는 양자 모두를 포함하고, 상기 제 1 코어 컴포넌트는 제 1 컴포넌트 유형이고, 상기 제 1 컴포넌트 유형은 공칭 값을 갖고, 상기 프로세스 변화는 상기 제 1 코어 컴포넌트가 상기 공칭 값과는 다른 제 1 성능 값에서 기능을 하도록 하는, 상기 제 1 코어 컴포넌트를 분석하는 단계;
    제 2 레이팅을 생성하기 위해 상기 프로세스 변화에 기초하여 제 2 코어 컴포넌트를 분석하는 단계로서, 상기 제 2 코어 컴포넌트는 상기 제 1 컴포넌트 유형이고, 상기 프로세스 변화는 상기 제 2 코어 컴포넌트가 상기 공칭 값과는 다른 제 2 성능 값에서 기능을 하도록 하는, 상기 제 2 코어 컴포넌트를 분석하는 단계;
    상기 제 1 및 제 2 레이팅에 기초하여, 상기 제 1 코어 컴포넌트를 선택하는 단계; 및
    상기 제 1 코어 컴포넌트를 이용하는 스케줄링된 코어 상에서 실행하도록 상기 어플리케이션 프로그램을 스케줄링하는 단계를 포함하는, 어플리케이션 프로그램 스케줄링 방법.
  2. 제 1 항에 있어서,
    상기 어플리케이션 프로그램에 의해 이용되는 어플리케이션 코어 컴포넌트 유형을 결정하는 단계를 더 포함하고,
    상기 어플리케이션 코어 컴포넌트 유형은 상기 제 1 코어 컴포넌트 유형인, 어플리케이션 프로그램 스케줄링 방법.
  3. 제 1 항에 있어서,
    상기 제 1 코어 컴포넌트 유형은, 분기 예측기 (branch predictor), 캐시, 부동 소수점 유닛 (floating point unit), 버스, 포워딩 회로 (forwarding circuit), 레지스터 파일 및 명령 큐 (instructions queue) 로 구성된 그룹으로부터 선택된, 어플리케이션 프로그램 스케줄링 방법.
  4. 제 1 항에 있어서,
    상기 프로세스 변화는 다이-투-다이 프로세스 변화인, 어플리케이션 프로그램 스케줄링 방법.
  5. 제 1 항에 있어서,
    상기 제 1 및 제 2 코어 컴포넌트를 분석하는 단계는:
    상기 제 1 및 제 2 코어 컴포넌트 각각의 동작 상태를 결정하는 단계; 및
    상기 제 1 및 제 2 코어 컴포넌트 각각의 상기 동작 상태를 블룸 필터 (bloom filter) 에 저장하는 단계를 포함하는, 어플리케이션 프로그램 스케줄링 방법.
  6. 제 1 항에 있어서,
    상기 제 1 및 제 2 코어 컴포넌트를 분석하는 단계는, 상기 제 1 및 제 2 성능 값에 기초하여, 상기 제 1 및 제 2 코어 컴포넌트 각각을 랭킹 (ranking) 하는 단계를 포함하는, 어플리케이션 프로그램 스케줄링 방법.
  7. 제 1 항에 있어서,
    상기 제 1 컴포넌트 유형은 제 1 코어 컴포넌트 유형이고, 상기 공칭 값은 제 1 공칭 값이고, 상기 프로세스 변화는 제 1 프로세스 변화이고,
    상기 방법은,
    제 3 레이팅을 생성하기 위해 제 2 프로세스 변화에 기초하여 제 3 코어 컴포넌트를 분석하는 단계로서, 상기 제 3 코어 컴포넌트는 상기 제 2 컴포넌트 유형이고, 상기 제 2 컴포넌트 유형은 제 2 공칭 값을 갖고, 상기 제 2 프로세스 변화는 상기 제 3 코어 컴포넌트가 상기 제 2 공칭 값과는 다른 제 3 성능 값에서 기능을 하도록 하는, 상기 제 3 코어 컴포넌트를 분석하는 단계;
    제 4 레이팅을 생성하기 위해 상기 제 2 프로세스 변화에 기초하여 제 4 코어 컴포넌트를 분석하는 단계로서, 상기 제 4 코어 컴포넌트는 상기 제 2 컴포넌트 유형이고, 상기 제 2 프로세스 변화는 상기 제 4 코어 컴포넌트가 상기 제 2 공칭 값과는 다른 제 4 성능 값에서 기능을 하도록 하는, 상기 제 4 코어 컴포넌트를 분석하는 단계;
    상기 제 3 및 제 4 레이팅에 기초하여, 상기 제 3 코어 컴포넌트를 선택하는 단계; 및
    상기 스케줄링된 코어 상에서 실행하도록 상기 어플리케이션 프로그램을 스케줄링하는 단계를 더 포함하고, 상기 스케줄링된 코어는 상기 제 3 코어 컴포넌트를 이용할 수 있는, 어플리케이션 프로그램 스케줄링 방법.
  8. 제 7 항에 있어서,
    상기 어플리케이션 프로그램에 의해 이용되는 제 1 어플리케이션 코어 컴포넌트 유형 및 제 2 어플리케이션 코어 컴포넌트 유형을 결정하는 단계를 더 포함하고,
    상기 제 1 어플리케이션 코어 컴포넌트 유형 및 상기 제 2 어플리케이션 코어 컴포넌트 유형은, 상기 제 1 코어 컴포넌트 유형 및 제 2 코어 컴포넌트 유형인, 어플리케이션 프로그램 스케줄링 방법.
  9. 제 7 항에 있어서,
    상기 제 1 코어 컴포넌트 유형 및 상기 제 2 코어 컴포넌트 유형은, 분기 예측기, 캐시, 부동 소수점 유닛, 버스, 포워딩 회로, 레지스터 파일 및 명령 큐로 구성된 그룹으로부터 독립적으로 선택되는, 어플리케이션 프로그램 스케줄링 방법.
  10. 제 7 항에 있어서,
    상기 제 3 및 제 4 코어 컴포턴트를 분석하는 단계는:
    상기 제 3 및 제 4 코어 컴포넌트 각각의 동작 상태를 결정하는 단계; 및
    상기 제 3 및 제 4 각각의 동작 상태를 블룸 필터에 저장하는 단계를 더 포함하는, 어플리케이션 프로그램 스케줄링 방법.
  11. 제 7 항에 있어서,
    상기 제 3 및 제 4 코어 컴포턴트를 분석하는 단계는, 상기 제 3 및 제 4 성능 값에 기초하여, 상기 제 3 및 제 4 코어 컴포넌트 각각을 랭킹하는 단계를 포함하는, 어플리케이션 프로그램 스케줄링 방법.
  12. 제 7 항에 있어서,
    상기 제 1 및 제 3 코어 컴포넌트는 상이한 코어들 상에 있는, 어플리케이션 프로그램 스케줄링 방법.
  13. 둘 이상의 코어들을 갖는 컴퓨터 시스템 내에서 실행하는 어플리케이션 프로그램을 스케줄링하는 컴퓨터-판독가능 명령들을 기록한 컴퓨터-판독가능 매체로서, 각각의 코어는 각각의 코어 컴포넌트들을 사용할 수 있고, 상기 코어 컴포넌트들은 상기 코어들을 위한 기능이나 동작들을 수행하는 상기 코어들 내부의 구성요소이고,
    상기 컴퓨터-판독가능 명령들은, 프로세서에 의한 실행에 응답하여,
    제 1 레이팅을 생성하기 위해 프로세스 변화에 기초하여 제 1 코어 컴포넌트를 분석하되, 상기 프로세스 변화는 다이-내 프로세스 변화와 다이-투-다이 프로세스 변화 중 어느 하나 또는 양자 모두를 포함하고, 상기 제 1 코어 컴포넌트는 제 1 컴포넌트 유형이고, 상기 제 1 컴포넌트 유형은 공칭 값을 갖고, 상기 프로세스 변화는 상기 제 1 코어 컴포넌트가 상기 공칭 값과는 다른 제 1 성능 값에서 기능을 하도록 하고;
    제 2 레이팅을 생성하기 위해 상기 프로세스 변화에 기초하여 제 2 코어 컴포넌트를 분석하되, 상기 제 2 코어 컴포넌트는 상기 제 1 컴포넌트 유형이고, 상기 프로세스 변화는 상기 제 2 코어 컴포넌트가 상기 공칭 값과는 다른 제 2 성능 값에서 기능을 하도록 하고;
    상기 제 1 및 제 2 레이팅에 기초하여, 상기 제 1 코어 컴포넌트를 선택하고;
    상기 제 1 코어 컴포넌트를 이용하는 스케줄링된 코어 상에서 실행하도록 상기 어플리케이션 프로그램을 스케줄링하도록,
    동작가능한, 컴퓨터-판독가능 매체.
  14. 제 13 항에 있어서,
    상기 프로세서에 의한 실행에 응답하여,
    상기 어플리케이션 프로그램에 의해 이용되는 어플리케이션 코어 컴포넌트 유형을 결정하도록, 동작가능한 컴퓨터-판독가능 명령들을 더 포함하고,
    상기 어플리케이션 코어 컴포넌트 유형은 상기 제 1 컴포넌트 유형인, 컴퓨터-판독가능 매체.
  15. 제 13 항에 있어서,
    상기 프로세스 변화는 상기 다이-투-다이 프로세스 변화이고, 상기 제 1 컴포넌트 유형은, 분기 예측기, 캐시, 부동 소수점 유닛, 버스, 포워딩 회로, 레지스터 파일 및 명령 큐로 구성된 그룹으로부터 선택되는, 컴퓨터-판독가능 매체.
  16. 제 13 항에 있어서,
    상기 분석하기 위한 명령들은, 상기 프로세서에 의한 실행에 응답하여,
    상기 제 1 및 제 2 코어 컴포넌트 각각의 동작 상태를 결정하고,
    상기 제 1 및 제 2 코어 컴포넌트 각각의 상기 동작 상태를 블룸 필터에 저장하도록,
    동작가능한, 컴퓨터-판독가능 매체.
  17. 제 13 항에 있어서,
    상기 제 1 컴포넌트 유형은 제 1 코어 컴포넌트 유형이고, 상기 공칭 값은 제 1 공칭 값이고, 상기 프로세스 변화는 제 1 프로세스 변화이고,
    상기 컴퓨터-판독가능 매체는, 상기 프로세서에 의한 실행에 응답하여,
    제 3 레이팅을 생성하기 위해 제 2 프로세스 변화에 기초하여 제 3 코어 컴포넌트를 분석하되, 상기 제 3 코어 컴포넌트는 상기 제 2 컴포넌트 유형이고, 상기 제 2 컴포넌트 유형은 제 2 공칭 값을 갖고, 상기 제 2 프로세스 변화는 상기 제 3 코어 컴포넌트가 상기 제 2 공칭 값과는 다른 제 3 성능 값에서 기능을 하도록 하고;
    제 4 레이팅을 생성하기 위해 상기 제 2 프로세스 변화에 기초하여 제 4 코어 컴포넌트를 분석하되, 상기 제 4 코어 컴포넌트는 상기 제 2 컴포넌트 유형이고, 상기 제 2 프로세스 변화는 상기 제 4 코어 컴포넌트가 상기 제 2 공칭 값과는 다른 제 4 성능 값에서 기능을 하도록 하고;
    상기 제 3 및 제 4 레이팅에 기초하여, 상기 제 3 코어 컴포넌트를 선택하고;
    상기 스케줄링된 코어 상에서 실행하도록 상기 어플리케이션 프로그램을 스케줄링하되, 상기 스케줄링된 코어는 상기 제 3 코어 컴포넌트를 이용할 수 있도록,
    동작가능한 명령들을 더 포함하는, 컴퓨터-판독가능 매체.
  18. 제 17 항에 있어서,
    상기 제 1 및 제 3 코어 컴포넌트는 상이한 코어들 상에 있는, 컴퓨터-판독가능 매체.
  19. 둘 이상의 코어들로서, 상기 둘 이상의 코어들 각각은 제 1 코어 컴포넌트 유형 및 제 2 코어 컴포넌트 유형의 코어 컴포넌트들을 사용할 수 있는, 상기 둘 이상의 코어들, 및
    상기 둘 이상의 코어들에 동작가능하게 커플링된 컴퓨터-판독가능 매체를 포함하는 컴퓨터 시스템으로서,
    상기 컴퓨터-판독가능 매체는, 상기 컴퓨터 시스템에 의한 실행에 응답하여, 상기 컴퓨터 시스템으로 하여금,
    제 1 레이팅을 생성하기 위해 프로세스 변화에 기초하여 제 1 코어 컴포넌트를 분석하되, 상기 프로세스 변화는 다이-내 프로세스 변화와 다이-투-다이 프로세스 변화 중 어느 하나 또는 양자 모두를 포함하고, 상기 제 1 코어 컴포넌트는 제 1 컴포넌트 유형이고, 상기 제 1 컴포넌트 유형은 공칭 값을 갖고, 상기 프로세스 변화는 상기 제 1 코어 컴포넌트가 상기 공칭 값과는 다른 제 1 성능 값에서 기능을 하도록 하고;
    제 2 레이팅을 생성하기 위해 상기 프로세스 변화에 기초하여 제 2 코어 컴포넌트를 분석하되, 상기 제 2 코어 컴포넌트는 상기 제 1 컴포넌트 유형이고, 상기 프로세스 변화는 상기 제 2 코어 컴포넌트가 상기 공칭 값과는 다른 제 2 성능 값에서 기능을 하도록 하고;
    상기 제 1 및 제 2 레이팅에 기초하여, 상기 제 1 코어 컴포넌트를 선택하고;
    상기 제 1 코어 컴포넌트를 이용하는 스케줄링된 코어 상에서 실행하도록 어플리케이션 프로그램을 스케줄링하도록 하는,
    컴퓨터-판독가능 명령들을 포함하는, 컴퓨터 시스템.
  20. 제 19 항에 있어서,
    상기 컴퓨터-판독가능 매체는, 상기 컴퓨터 시스템에 의한 실행에 응답하여,
    제 3 레이팅을 생성하기 위해 제 2 프로세스 변화에 기초하여 제 3 코어 컴포넌트를 분석하되, 상기 제 3 코어 컴포넌트는 상기 제 2 컴포넌트 유형이고, 상기 제 2 컴포넌트 유형은 제 2 공칭 값을 갖고, 상기 제 2 프로세스 변화는 상기 제 3 코어 컴포넌트가 상기 제 2 공칭 값과는 다른 제 3 성능 값에서 기능을 하도록 하고;
    제 4 레이팅을 생성하기 위해 상기 제 2 프로세스 변화에 기초하여 제 4 코어 컴포넌트를 분석하되, 상기 제 4 코어 컴포넌트는 상기 제 2 컴포넌트 유형이고, 상기 제 2 프로세스 변화는 상기 제 4 코어 컴포넌트가 상기 제 2 공칭 값과는 다른 제 4 성능 값에서 기능을 하도록 하고;
    상기 제 3 및 제 4 레이팅에 기초하여, 상기 제 3 코어 컴포넌트를 선택하고;
    상기 스케줄링된 코어 상에서 실행하도록 상기 어플리케이션 프로그램을 스케줄링하되, 상기 스케줄링된 코어는 상기 제 3 코어 컴포넌트를 이용할 수 있도록 하는,
    컴퓨터-판독가능 명령들을 더 포함하는, 컴퓨터 시스템.
  21. 제 1 항에 있어서,
    상기 제 1 및 제 2 코어 컴포넌트를 분석하는 단계는, 상기 제 1 및 제 2 코어 컴포넌트의 전력 효율에 기초하여, 상기 제 1 및 제 2 코어 컴포넌트 각각을 랭킹하는 단계를 포함하는, 어플리케이션 프로그램 스케줄링 방법.
  22. 제 1 항에 있어서,
    상기 스케줄링된 코어 상에서 실행하도록 상기 어플리케이션 프로그램을 스케줄링하는 단계는, 상기 스케줄링된 코어와 연관된 상기 제 1 코어 컴포넌트를 사용하도록 상기 어플리케이션 프로그램을 스케줄링하는 단계를 포함하는, 어플리케이션 프로그램 스케줄링 방법.
KR1020117030918A 2009-07-23 2010-06-25 코어 및 어플리케이션 특성에 기초하여 멀티프로세서 시스템상에서 실행하는 어플리케이션에 대한 코어 선택 KR101457262B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/508,552 2009-07-23
US12/508,552 US8924975B2 (en) 2009-07-23 2009-07-23 Core selection for applications running on multiprocessor systems based on core and application characteristics
PCT/US2010/039933 WO2011011155A1 (en) 2009-07-23 2010-06-25 Core selection for applications running on multiprocessor systems based on core and application characteristics

Publications (2)

Publication Number Publication Date
KR20120031020A KR20120031020A (ko) 2012-03-29
KR101457262B1 true KR101457262B1 (ko) 2014-10-31

Family

ID=43498407

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117030918A KR101457262B1 (ko) 2009-07-23 2010-06-25 코어 및 어플리케이션 특성에 기초하여 멀티프로세서 시스템상에서 실행하는 어플리케이션에 대한 코어 선택

Country Status (5)

Country Link
US (1) US8924975B2 (ko)
JP (1) JP5526420B2 (ko)
KR (1) KR101457262B1 (ko)
CN (1) CN102473110B (ko)
WO (1) WO2011011155A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8689037B2 (en) * 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8909962B2 (en) * 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9128705B2 (en) * 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
US9563250B2 (en) 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US8775830B2 (en) * 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
US20110145559A1 (en) * 2009-12-16 2011-06-16 Thomson Steven S System and method for controlling central processing unit power with guaranteed steady state deadlines
US8650426B2 (en) * 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US8559307B2 (en) * 2009-12-28 2013-10-15 Empire Technology Development Llc Routing packets in on-chip networks
US9268611B2 (en) * 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
US9063730B2 (en) * 2010-12-20 2015-06-23 Intel Corporation Performing variation-aware profiling and dynamic core allocation for a many-core processor
US9158592B2 (en) 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
KR20130074401A (ko) * 2011-12-26 2013-07-04 삼성전자주식회사 계층적 스케줄러를 갖는 멀티코어 기반의 컴퓨팅 장치 및 계층적 스케줄 방법
US9575806B2 (en) * 2012-06-29 2017-02-21 Intel Corporation Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring
US9081625B2 (en) * 2012-10-16 2015-07-14 Dell Products, L.P. Method for reducing execution jitter in multi-core processors within an information handling system
US9599977B1 (en) * 2013-03-14 2017-03-21 Cirrus Logic, Inc. Programmable system architecture for power controllers including thread execution responsive to power train event
US9027029B2 (en) * 2013-03-28 2015-05-05 International Business Machines Corporation Method for activating processor cores within a computer system
US9852000B2 (en) * 2013-08-27 2017-12-26 Empire Technology Development Llc Consolidating operations associated with a plurality of host devices
US9076775B2 (en) * 2013-09-04 2015-07-07 Qualcomm Incorporated System and method of varying gate lengths of multiple cores
WO2015163506A1 (ko) * 2014-04-25 2015-10-29 전자부품연구원 그래픽 처리 장치의 동작을 위한 작업 할당 시스템 및 방법
US9557797B2 (en) 2014-05-20 2017-01-31 Qualcomm Incorporated Algorithm for preferred core sequencing to maximize performance and reduce chip temperature and power
US11016742B2 (en) 2015-06-24 2021-05-25 Altera Corporation Channel sizing for inter-kernel communication
US9489205B1 (en) * 2015-07-03 2016-11-08 Yong-Kyu Jung Compiler-assisted look-ahead instruction-fetch and branch-prediction system apparatus and method for microprocessors
US10372493B2 (en) * 2015-12-22 2019-08-06 Intel Corporation Thread and/or virtual machine scheduling for cores with diverse capabilities
US10146286B2 (en) * 2016-01-14 2018-12-04 Intel Corporation Dynamically updating a power management policy of a processor
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10725834B2 (en) 2017-11-30 2020-07-28 International Business Machines Corporation Job scheduling based on node and application characteristics
US11568236B2 (en) 2018-01-25 2023-01-31 The Research Foundation For The State University Of New York Framework and methods of diverse exploration for fast and safe policy improvement
JP2021089601A (ja) 2019-12-04 2021-06-10 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
US11886224B2 (en) * 2020-06-26 2024-01-30 Advanced Micro Devices, Inc. Core selection based on usage policy and core constraints

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282572A1 (en) * 2006-06-01 2007-12-06 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US20080005539A1 (en) * 2006-06-30 2008-01-03 Velhal Ravindra V Method and apparatus to manage processor cores

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2272085A (en) * 1992-10-30 1994-05-04 Tao Systems Ltd Data processing system and operating system.
JPH09167141A (ja) * 1995-12-18 1997-06-24 Hitachi Ltd 負荷分散制御方法
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6021076A (en) * 1998-07-16 2000-02-01 Rambus Inc Apparatus and method for thermal regulation in memory subsystems
US6772352B1 (en) 2000-09-29 2004-08-03 Intel Corporation Method and apparatus for reducing the rate of commands being issued if the rate exceeds a threshold which is based upon a temperature curve
US7140016B2 (en) * 2000-11-29 2006-11-21 Texas Instruments Incorporated Media accelerator quality of service
JP3817449B2 (ja) * 2001-07-30 2006-09-06 株式会社ルネサステクノロジ データ処理装置
DE10313605B4 (de) * 2003-03-26 2009-03-19 Qimonda Ag Vorrichtung und Verfahren zum Steuern mehrerer Speicherbausteine
JP2004355435A (ja) 2003-05-30 2004-12-16 Canon Inc アクセス調停装置
JP4213572B2 (ja) 2003-11-28 2009-01-21 株式会社東芝 電子機器およびプロセッサ速度制御方法
JP3870189B2 (ja) 2003-12-15 2007-01-17 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリアクセスに関する設定を行うデータ転送レート制御装置、情報処理装置、制御方法、プログラム、及び記録媒体
US7984442B2 (en) * 2004-01-29 2011-07-19 Klingman Edwin E Intelligent memory device multilevel ASCII interpreter
JP3862715B2 (ja) * 2004-06-01 2006-12-27 株式会社ソニー・コンピュータエンタテインメント タスク管理方法、タスク管理装置、半導体集積回路、電子装置、およびタスク管理システム
US8122187B2 (en) 2004-07-02 2012-02-21 Qualcomm Incorporated Refreshing dynamic volatile memory
JP4197672B2 (ja) * 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
JP2006209525A (ja) 2005-01-28 2006-08-10 Matsushita Electric Ind Co Ltd メモリシステム
JP4367856B2 (ja) * 2005-07-07 2009-11-18 レノボ シンガポール プライヴェート リミテッド プロセス制御システム及びその制御方法
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7590473B2 (en) 2006-02-16 2009-09-15 Intel Corporation Thermal management using an on-die thermal sensor
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US7596430B2 (en) * 2006-05-03 2009-09-29 International Business Machines Corporation Selection of processor cores for optimal thermal performance
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US7830690B2 (en) 2006-10-30 2010-11-09 Intel Corporation Memory module thermal management
US7596714B2 (en) * 2006-11-20 2009-09-29 Intel Corporation Methods and apparatus to manage throttling in computing environments
US20080234953A1 (en) 2007-03-22 2008-09-25 Ignowski James S Power estimation for a semiconductor device
US8001338B2 (en) * 2007-08-21 2011-08-16 Microsoft Corporation Multi-level DRAM controller to manage access to DRAM
US8055822B2 (en) * 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
US8332865B2 (en) * 2008-02-21 2012-12-11 International Business Machines Corporation Adjunct processor load balancing
US9032223B2 (en) * 2008-09-05 2015-05-12 Intel Corporation Techniques to manage operational parameters for a processor
US8161304B2 (en) * 2009-01-20 2012-04-17 Microsoft Corporation Power management for large memory subsystems
US8055805B2 (en) * 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282572A1 (en) * 2006-06-01 2007-12-06 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US20080005539A1 (en) * 2006-06-30 2008-01-03 Velhal Ravindra V Method and apparatus to manage processor cores

Also Published As

Publication number Publication date
KR20120031020A (ko) 2012-03-29
JP2012533827A (ja) 2012-12-27
US20110023047A1 (en) 2011-01-27
US8924975B2 (en) 2014-12-30
CN102473110B (zh) 2015-09-30
WO2011011155A1 (en) 2011-01-27
JP5526420B2 (ja) 2014-06-18
CN102473110A (zh) 2012-05-23

Similar Documents

Publication Publication Date Title
KR101457262B1 (ko) 코어 및 어플리케이션 특성에 기초하여 멀티프로세서 시스템상에서 실행하는 어플리케이션에 대한 코어 선택
CN106843430B (zh) 用于能效和节能的方法、装置和系统
KR101373947B1 (ko) 스레드 스로틀링
US9977699B2 (en) Energy efficient multi-cluster system and its operations
US9075610B2 (en) Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
CN102812439B (zh) 用于在多处理器计算机系统中分派任务的方法和系统
US8776066B2 (en) Managing task execution on accelerators
US7191349B2 (en) Mechanism for processor power state aware distribution of lowest priority interrupt
US7689838B2 (en) Method and apparatus for providing for detecting processor state transitions
Attia et al. Dynamic power management techniques in multi-core architectures: A survey study
Jin et al. A survey on software methods to improve the energy efficiency of parallel computing
CN102822801A (zh) 响应于服务水平协议而分配计算系统功率水平
KR20120117020A (ko) 동적 전력 관리를 위한 도메인 특정 언어, 컴파일러 및 jit
US20150301858A1 (en) Multiprocessors systems and processes scheduling methods thereof
Fakhar et al. Software level green computing for large scale systems
CN104205077A (zh) 包括可配置最大处理器电流的针对能效和节能的方法、装置和系统
CN107636615A (zh) 基于运行时功率效率判定的自适应硬件加速器
Ramesh et al. Energy management in embedded systems: Towards a taxonomy
Nagalakshmi et al. Analysis of power management techniques in multicore processors
Wang et al. An architecture‐level graphics processing unit energy model
Sato et al. Multiple clustered core processors
Banerjee et al. Characterization of Smartphone Governor Strategies
Jiang et al. Energy management for microprocessor systems: Challenges and existing solutions
Hu et al. G2LC: Resources autoscaling for real time bioinformatics applications in IaaS
Francisco Lorenzon et al. Runtime Adaptability: The Key for Improving Parallel Applications

Legal Events

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

Payment date: 20170929

Year of fee payment: 4