KR101362017B1 - 스레드 시프트 : 스레드들의 코어들로의 할당 - Google Patents

스레드 시프트 : 스레드들의 코어들로의 할당 Download PDF

Info

Publication number
KR101362017B1
KR101362017B1 KR1020127001232A KR20127001232A KR101362017B1 KR 101362017 B1 KR101362017 B1 KR 101362017B1 KR 1020127001232 A KR1020127001232 A KR 1020127001232A KR 20127001232 A KR20127001232 A KR 20127001232A KR 101362017 B1 KR101362017 B1 KR 101362017B1
Authority
KR
South Korea
Prior art keywords
thread
processor core
allocating
core
instruction
Prior art date
Application number
KR1020127001232A
Other languages
English (en)
Other versions
KR20120017471A (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 KR20120017471A publication Critical patent/KR20120017471A/ko
Application granted granted Critical
Publication of KR101362017B1 publication Critical patent/KR101362017B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

스레드를 이종 프로세서 코어들로 할당하기 위한 기술들이 일반적으로 설명된다. 예시적인 기술은 스레드를 프로세싱 이종 프로세서 코어와 관련된 실시간 컴퓨팅 데이터를 모니터링하는 단계, 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 이종 프로세서 코어들로 스레드를 할당하는 단계, 및/또는 각각 할당된 이동 프로세서 코어에 의해 스레드를 실행하는 단계를 포함할 수도 있다.

Description

스레드 시프트 : 스레드들의 코어들로의 할당{THREAD SHIFT: ALLOCATING THREADS TO CORES}
본 출원은 2009년 9월 11일에 출원된 "THREAD SHIFT: ALLOCATING THREADS TO CORES" 라는 명칭의 미국 특허 출원 제 12/557,971 호를 우선권 주장하며, 상기 출원의 개시물은 그 전체가 참조로서 통합된다.
본 출원은 Wolfe 등에 의해 2009년 4월 21일에 출원된 "THREAD MAPPING IN MULTI-CORE PROCESSORS" 라는 명칭의 공동 계류중인 미국 특허 출원 제 12/427,602호, Wolfe 등에 의해 2009년 9월 11일에 출원된 "MAPPING OF COMPUTER THREADS ONTO HETEROGENEOUS RESOURCES" 라는 명칭의 미국 특허 출원 제 12/557,985 호 및 Wolfe 등에 의해 2009년 9월 11일에 출원된 "CACHE PREFILL ON THREAD MIGRATION" 라는 명칭의 공동 계류중인 미국 특허 출원 제 12/557,864 호와 관련될 수도 있으며, 상기 출원들의 전체 개시물들은 본 명세서에 참조로서 통합된다.
본 개시는 멀티-코어 컴퓨터 시스템에 관한 것이며, 보다 상세하게는, 멀티-코어 컴퓨터 시스템과 관련된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 스레드의 코어 할당을 효율적으로 조정하는 것에 관한 것이다.
본 개시는 일반적으로 멀티-코어 컴퓨터 처리에 관한 것이다. 구체적으로, 본 개시는 실시간 컴퓨팅 데이터에 기초하여 스레드들의 코어 할당을 효율적으로 조정하는 것에 관한 것이다.
본 개시의 제 1 양태는 일반적으로 스레드를 이종 프로세서 코어들로 할당하는 방법을 설명한다. 이러한 방법은 이종 프로세서 코어(들)과 관련된 실시간 컴퓨팅 디바이스를 모니터링하는 단계, 및 모니터링된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 이종 프로세서 코어(들)로 스레드를 할당하는 단계를 포함할 수도 있다.
제 1 양태의 일부 실시예들에서, 이 방법은 또한, 각각 할당된 이종 프로세서 코어에 의해 상기 스레드를 실행하는 단계를 포함할 수도 있다. 일부 실시예들에서, 실시간 컴퓨팅 데이터를 모니터링하는 단계는, 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있는 시기를 결정하는 단계를 포함할 수도 있다. 일부 실시예들에서, 스레드를 할당하는 단계는, 스레드가 스레드 완료 목표 데드라인보다 뒤처졌었는지 여부에 적어도 부분적으로 기초할 수도 있다. 일부 실시예들에서, 실시간 컴퓨팅 데이터는 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있다는 표시를 포함할 수도 있다.
제 1 양태의 일부 실시예들에서, 실시간 컴퓨팅 데이터는 명령어 당 사이클 레이트 (cycles per instruction rate) 를 포함할 수도 있다. 일부 실시예들에서, 명령어 당 사이클 레이트는 적어도 부분적으로, 시간 간격에 걸쳐 완료된 명령어 당 클록 사이클들의 총 수의 비율에 의해 결정될 수도 있다.
제 1 양태의 일부 실시예들은 명령어 당 사이클 레이트를 명령어 당 목표 사이클 레이트와 비교하는 단계를 포함할 수도 있다. 이러한 실시예에서, 스레드를 할당하는 단계는, 명령어 당 사이클 레이트와 명령어 당 목표 사이클 레이트의 비교에 적어도 부분적으로 기초할 수도 있다. 일부 실시예들에서, 스레드를 할당하는 단계는 스레드를 이종 프로세서 코어(들)에 동적으로 할당하는 단계를 포함할 수도 있다.
제 1 양태의 일부 실시예들에서, 이 방법은 또한 모니터링된 실시간 컴퓨팅 데이터를 스레드 할당 소프트웨어 툴로 전송하는 단계, 및 모니터링된 실시간 컴퓨팅 데이터에 기초하여 스레드 할당 툴 소프트웨어를 이용하여 미리결정된 이종 프로세서 코어에 스레드를 할당하는 단계를 포함할 수도 있다.
일부 실시예들에서, 실시간 컴퓨팅 데이터는, 미리결정된 시각에 스레드가 제 1 이종 프로세서 코어로부터 제 2 이종 프로세서 코어로 할당될 것을 지시하는 체크포인트(들)을 포함할 수도 있다. 이러한 실시예들에서, 스레드를 할당하는 단계는 이 체크포인트(들)에 적어도 부분적으로 기초할 수도 있다.
제 1 양태의 일부 실시예들에서, 이 방법은 또한, 이종 프로세서 코어(들)에 복수의 스레드들 각각을 독립적으로 할당하는 단계를 포함할 수도 있다. 이러한 실시예들에서, 스레드는 복수의 스레드들을 포함할 수도 있고, 복수의 스레드들 각각은 실시간 컴퓨팅 데이터와 연관된다.
본 개시의 제 2 양태는 일반적으로 스레드를 제 1 이종 프로세서 코어로부터 제 2 이종 프로세서 코어로 할당하는 방법을 설명한다. 이러한 방법은 제 1 이종 프로세서 코어와 연관된 클록 사이클들의 총 수를 모니터링하는 단계, 제 1 이종 프로세서 코어에 의해 완료된 명령어들의 총 수를 모니터링하는 단계, 미리결정된 시간 간격에 걸쳐 완료된 명령어 당 클록 사이클들의 총 수의 비율에 적어도 부분적으로 기초하여 CPI (cycles per instruction) 값을 계산하는 단계, 및 CPI 값에 적어도 부분적으로 기초하여 스레드를 제 2 이종 프로세서 코어로 할당하는 단계를 포함할 수도 있다.
제 2 양태의 일부 실시예들에서, 이 방법은 또한, 스레드를 할당하기 전에, 스레드를 할당하기 전에 CPI 값을 목표 CPI 값과 비교하는 단계를 포함할 수도 있다. 이러한 실시예들에서, 할당하는 단계는 목표 CPI 값과 같은 CPI 값에 적어도 부분적으로 기초할 수도 있다. 일부 실시예들은 스레드를 할당하기 전에, CPI 값을 목표 CPI 값과 비교하는 단계를 포함할 수도 있다. 이러한 실시예들에서, 할당하는 단계는 목표 CPI 값을 초과하는 상기 CPI 값에 적어도 부분적으로 기초할 수도 있다. 목표 CPI 값은 스레드와 연관된 소프트웨어 애플리케이션의 실행 전에 그리고/또는 스레드와 연관된 소프트웨어 애플리케이션의 실행 동안 정의될 수도 있다.
제 2 양태의 일부 실시예들에서, 실시간 컴퓨팅 데이터는, 미리결정된 시각에 스레드가 제 1 이종 프로세서 코어로부터 제 2 이종 프로세서 코어로 할당될 것을 지시하는 체크포인트(들)을 포함할 수도 있다. 이러한 실시예들에서, 할당하는 단계는 체크포인트(들)와 연관된 미리결정된 시각에 적어도 부분적으로 기초할 수도 있다.
본 개시의 제 3 양태는 일반적으로 머신 판독가능 명령들이 저장된 저장 매체와 같은 물품을 설명한다. 프로세싱 유닛(들)에 의해 실행되는 경우, 이러한 머신 판독가능 명령들은, 스레드를 프로세싱하는 제 1 이종 프로세서 코어와 관련된 실시간 컴퓨팅 데이터를 모니터링하고, 그리고 모니터링된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 제 2 이종 프로세서 코어에 스레드를 할당하도록 컴퓨팅 플랫폼을 인에이블할 수도 있다.
제 3 양태의 일부 실시예들에서, 머신 판독가능 명령들은 또한 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있는지를 결정하도록 컴퓨팅 플랫폼을 인에이블할 수도 있다. 이러한 실시예들에서, 스레드를 할당하는 것은 스레드가 스레드 완료 목표 데드라인보다 뒤처져있었는지 여부에 적어도 부분적으로 기초할 수도 있다.
제 3 양태의 일부 실시예들에서, 이 물품은 또한, 실시간 컴퓨팅 데이터를 수신하고 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 미리결정된 이종 프로세서 코어에 스레드를 할당하도록 구성된 스레드 할당 소프트웨어 툴을 포함할 수도 있다. 일부 실시예들에서, 머신 판독가능 명령들은 또한 모니터링된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 제 2 이종 프로세서 코어로 스레드를 동적으로 할당하도록 컴퓨팅 플랫폼을 인에이블할 수도 있다.
본 개시의 제 4 양태는 일반적으로 멀티-코어 프로세서들을 설명한다. 이러한 멀티-코어 프로세서들은 제 1 이종 프로세서 코어 및 제 2 이종 프로세서 코어를 포함할 수도 있다. 멀티-코어 프로세서는 스레드를 프로세싱하는 제 1 이종 프로세서 코어와 관련된 실시간 컴퓨팅 데이터를 모니터링하고, 모니터링된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 제 2 이종 프로세서 코어로 스레드를 할당하고, 그리고 스레드가 제 2 이종 프로세서 코어로 할당된 후 제 2 이종 프로세서 코어에 의해 스레드를 실행하도록 구성될 수도 있다.
일부 실시예들에서, 제 1 프로세서 코어가 제 1 능력을 갖고 제 2 프로세서 코어가 제 1 능력과는 상이한 제 2 능력을 갖도록, 멀티-코어 프로세서는 이종 하드웨어를 포함할 수도 있다. 일부 실시예들에서, 제 1 능력 및 제 2 능력은 각각, 그래픽 리소스, 수학적 계산 리소스, 명령어 세트, 엑셀러레이터, SSE, 캐시 사이즈 및/또는 브랜치 예측자에 대응한다.
전술한 개요는 단지 예시적인 것이며, 임의의 방식으로 제한하도록 의도되는 것은 아니다. 전술된 예시적인 양태들, 실시형태들 및 특징들에 부가하여, 추가의 양태들, 실시형태들 및 특징들이 도면들 및 하기의 상세한 설명을 참조하여 명백해질 것이다.
본 개시물의 전술된 다른 특징들은 첨부된 도면들과 함께 취득된 하기의 설명 및 첨부된 특허청구범위들로부터 더 명백해질 것이다. 이러한 도면들은 본 개시물에 따른 몇몇 실시형태들만을 도시하고, 따라서 그 범위를 제한하는 것으로 간주되지 않는 것을 이해할 때, 본 개시물은 첨부된 도면들의 이용을 통해 추가적인 특별사항 및 세부사항과 함께 설명될 것이다.
도 1 은 다수의 이종 코어들을 가진 예시적인 멀티-코어 시스템을 도시하는 블록도이다.
도 2 는 복수의 이종 프로세스 코어들 중 적어도 하나에 스레드를 할당하는 예시적인 방법을 도시하는 흐름도이다.
도 3 은 스레드를 제 1 이종 프로세서 코어로부터 제 2 이종 프로세서 코어로 할당하는 예시적인 방법을 도시하는 흐름도이다.
도 4 는 머신 판독가능 명령들을 포함하는 저장 매체를 포함하는 예시적인 물품을 도시하는 개략도이다.
도 5 는 본 개시물의 적어도 일부 실시형태들에 따라 모두 구성되는, 스레드 할당 구현들을 위해 배열될 수도 있는 예시적인 컴퓨팅 디바이스를 도시하는 블록도이다.
하기의 상세한 설명에서, 본 명세서의 일부를 형성하는 첨부된 도면들이 참조된다. 도면들에서, 유사한 도면부호들은 그 문맥이 다르게 지시하지 않으면, 통상적으로 유사한 컴포넌트들을 식별한다. 상세한 설명, 도면들 및 특허청구범위들에서 설명되는 예시적인 실시형태들은 제한하는 것으로 의도되지 않는다. 다른 실시형태들이 사용될 수도 있고, 본 명세서에 제시된 주제의 범위 또는 사상를 벗어나지 않고 다른 변경들이 실행될 수도 있다. 본 명세서에 일반적으로 설명되고 도면들에 도시된 것과 같은, 본 개시물의 양태들은 매우 다양한 상이한 구성들로 배열되고, 치환되고, 결합되며, 설계될 수도 있으며, 이러한 구성들은 모두 명백하게 고려되며, 본 개시물의 일부를 형성하는 것이 용이하게 이해될 것이다.
본 개시물은 특히, 멀티-코어 컴퓨터 시스템과 관련된 방법, 시스템, 디바이스 및/또는 장치를 도출하며, 더욱 상세하게는 멀티-코어 컴퓨터 시스템과 관련된 실시간 컴퓨팅 팩터들에 적어도 부분적으로 기초하여 스레드의 코어 할당을 효율적으로 조정하는 것을 도출한다.
본 개시물은 일부 컴퓨터 시스템들이 복수의 프로세서 코어들을 포함할 수도 있는 것을 고려한다. 이종 하드웨어를 구비한 멀티-코어 시스템에서, 일부 코어들은 다른 코어들에서 이용할 수 없는 특정 하드웨어 능력들을 가질 수도 있다. 일부 예시적인 컴퓨터 시스템들에서, (명령어들의 시퀀스일 수도 있고, 다른 스레드들과 병렬로 실행할 수도 있는) 적어도 하나의 스레드는 적절한 코어에 할당될 수도 있다. 스레드 할당은 스레드들을 적절한 코어들과 연관시키도록 활용될 수도 있다. 일부 예시적인 컴퓨터 시스템들에서, 스레드는 스레드의 실행 동안 일 코어로부터 다른 코어로 재할당될 수도 있다. 본 개시물은 일반적으로 스레드들을 지칭하지만, 이는 본 개시물의 범위 내에서 프로세스들, 태스크들 등의 맵핑을 포함한다.
예시적인 실시형태에서, 스레드와 연관된 데이터는, 스레드가, 다른 코어로 또는 스레드가 할당되어야하는 코어로 할당될 시기를 결정하는데 사용될 수도 있다. 예를 들어, 시스템은 스레드가 목표 데드라인보다 뒤처지고 있는지 여부를 결정하기 위해 스레드와 관련된 실시간 컴퓨팅 데이터를 사용할 수도 있다. 예를 들어, 스레드가 목표 데드라인보다 뒤처지고 있다면, 스레드는 더 빠른 코어로 이동할 수도 있다.
도 1 은 본 개시물의 적어도 일부 실시형태들에 따라 배열되는, 다수의 이종 코어들을 가지는 예시적인 멀티-코어 시스템을 도시하는 블록도이다. 예시적인 멀티-코어 시스템 (100) 은 복수의 프로세서 코어들 (102, 104 및/또는 106) 을 포함할 수도 있다. 예시적인 실시형태에서, 멀티-코어 시스템 (100) 은 각각 상이한 능력들을 가지는 하나 이상의 코어들 (102, 104 및/또는 106) 을 포함할 수도 있다. 다시 말해서, 멀티-코어 시스템 (100) 은 이종 하드웨어를 포함할 수도 있다. 예를 들면, 하나의 코어 (102) 는 강화된 그래픽 리소스들을 포함할 수도 있고, 다른 코어 (104) 는 강화된 수학적 계산 리소스들을 포함할 수도 있고, 또 다른 코어 (106) 는 대용량 캐시를 포함할 수도 있다.
도 1 에 도시된 것과 같이, 소프트웨어 애플리케이션 (108) 은 몇몇 스레드들 (또는 프로세스들 및/또는 태스크들) 을 포함할 수도 있다. 실시간 컴퓨팅 팩터들에 기초하여 스레드들을 적절한 코어로 효율적으로 할당하기 위해서, 본 명세서에서 설명되는 스레드 할당 방법들은 소프트웨어 애플리케이션 (108) 에 동작가능하게 접속된 스레드 할당 시스템 (112) 에 의해 구현될 수도 있다. 일부 실시형태들에서, 실시간 모니터링 시스템 (110) 은 스레드 할당 시스템 (112) 에 동작가능하게 커플링되어, 스레드들 (114, 116, 및/또는 118) 을 하기에서 상세히 설명되는 하나 이상의 코어들 (102, 104 및/또는 106) 로 효율적으로 할당하는 것을 지원할 수도 있다.
도 1 의 예시적인 실시형태에서, 스레드 할당 시스템 (112) 은 스레드들을 적절한 코어로 할당할 수도 있다. 구체적으로, 스레드 할당 시스템 (112) 은 제 1 스레드 (스레드 #1; 114) 를 코어 (102) 로 맵핑할 수도 있고, 제 2 스레드 (스레드 #2; 116) 를 코어 (104) 로 맵핑할 수도 있고, 제 3 스레드 (스레드 #3; 118) 를 코어 (106) 로 맵핑할 수도 있다.
일부 예시적인 실시형태들에서, 처음에 강화된 그래픽 능력들에서 이익을 얻을 수도 있는 스레드는 강화된 그래픽 리소스들을 가진 코어에서 처음에 실행될 수도 있다. 이후에 스레드가 강화된 수학적 계산 능력들에서 이익을 얻을 수도 있다는 예상에 적어도 부분적으로 기초하여, 스레드에 속하는 데이터는 강화된 수학적 계산 능력을 가지는 코어로 전송되어 그 실행을 완료할 수도 있다.
일부 예시적인 실시형태들에서, 코어들은 상이한 명령어 세트들을 포함할 수도 있다: 상이한 엑셀러레이터들 (예컨대, 디지털 신호 프로세서들 (DSP들) 및/또는 상이한 SSE들 (스트리밍 SIMD (단일 명령어, 다중 데이터) 확장들)); (L1 및 L2 캐시들과 같은) 더 큰 및/또는 더 작은 캐시들; 상이한 브랜치 예측자들 (프로그램의 명령어 흐름 내에서 조건 브랜치가 취득될 수 있는지의 여부를 결정하는 프로세서의 일부분); 및/또는 기타 등등. 코어들 간의 이러한 차이 및/또는 다른 차이에 적어도 부분적으로 기초하여, 상이한 코어들은 특정 태스크들에 대하여 상이한 능력들을 제공할 수도 있다.
일부 예시적인 실시형태들에서, 스레드들은 코어들의 하드웨어 능력들에 적어도 부분적으로 기초하여, (예컨대, 스레드 할당 시스템 (112) 을 활용하여) 개별 코어들로 할당될 수도 있다. 예를 들면, 큰 L1 캐시 (메모리) 요구와 연관된 스레드는 큰 L1 하드웨어를 포함하는 코어로 할당될 수도 있다. 유사하게, 큰 SSE (명령어 세트) 요구와 연관된 스레드는 네이티브 SSE 하드웨어 구현을 포함하는 코어로 할당될 수도 있다. 이러한 실시예들은 비제한적이며, 스레드들은 임의의 하드웨어 특성, 명령어 세트, 및/또는 코어 및/또는 스레드의 다른 특성에 적어도 부분적으로 기초하여 할당될 수도 있다. 추가로, 본 개시물은 스레드들이 하드웨어 능력들에 기초하여 코어로 할당되지 않으면, 스레드는 대신에 스레드에 대한 프로세싱 시간을 증가시킬 수도 있는 소프트웨어 에뮬레이션 (emulation) 을 이용하여 처리될 수도 있는 것을 고려한다.
일부 예시적인 실시형태들에서, 스레드를 상이한 코어로 할당할지 여부 및/또는 그러한 할당을 수행할 시기를 결정하는 것은 스레드의 이전 실행과 관련된 데이터를 포함할 수도 있는 실행 프로파일의 적어도 일부분의 평가를 포함할 수도 있다. 일부 예시적인 실시형태들에서, 실행 프로파일은 참조로서 통합된 미국 특허 출원 공개 공보 제 2007/0050605 호에 개시된 것과 같은 프리즈-드라이드 고스트 페이지 실행 프로파일 (freeze-dried ghost page execution profile) 생성 방법을 이용하여 생성될 수도 있다. 이러한 방법은, 스레드의 적어도 일부분의 실행을 미리 시뮬레이팅하고, 이 실행과 관련된 성능 통계치들 및 측정치들을 생성하기 위해 쉐도우 (shadow) 프로세서, 또는 일부 실시형태들에서 쉐도우 코어를 이용할 수도 있다.
일부 예시적인 실시형태들에서, 프로세서들 및 캐시들은 프로그램이 실행할 때의 정보를 수집하도록 구성될 수도 있다. 예를 들면, 이러한 정보는 프로그램이 참조하는 캐시 라인들을 포함할 수도 있다. 일부 예시적인 실시형태들에서, 캐시 사용에 관한 데이터는 (예컨대, 남아있는 스레드 프로세스 라인들의 수를 카운팅함으로써) 어떤 스레드들이 교체될 것인지를 결정하도록 평가될 수도 있다. 예시적인 실시형태에서, 성능 카운터는 실행중인 스레드들의 라인 축출들 (line evictions) 을 추적하도록 구성될 수도 있고 및/또는 더 높은 우선순위의 태스크를 시작하기 위해 어떤 태스크를 플러쉬 아웃 (flush out) 할 수 있는지 결정하기 위해 그 정보를 이용할 수도 있다. 성능 카운터는 또한 태스크가 시작된 이후의 라인 축출들을 추적하도록 구성될 수도 있다.
예시적인 멀티-코어 시스템은 본 개시물에 따른 이용을 위해 채택된 성능 카운터를 포함할 수도 있다. 다양한 코어들은 성능 카운터에 동작가능하게 커플링될 수도 있다. 성능 카운터는 예컨대, 컴퓨터 시스템 내의 하드웨어-관련 동작들의 수를 나타내는 카운트를 저장하도록 구성될 수도 있다. (예컨대, 일 코어로부터 다른 코어로의) 스레드 할당은 성능 카운터에 의해 수집되는 데이터를 이용하여 적어도 부분적으로 결정될 수도 있다.
일부 예시적인 실시형태들은 특정 태스크에 대한 캐시 풋프린트 (cache footprint) 의 사이즈를 고려할 수도 있다. 일부 예시적인 실시형태들에서, 블룸 (Bloom) 필터들은 스레드에 대한 캐시 풋프린트의 크기를 특정하는데 이용될 수 있다. 예시적인 블룸 필터는 하나의 엘리먼트가 일 세트의 멤버인지 여부를 테스트하기 위해 이용될 수도 있는 공간 효율적인 확률 데이터 구조일 수도 있다. 일부 예시적인 블룸 필터들을 이용할 경우, 가 긍정적 판단 (false positives) 이 가능하지만, 가 부정적 판단 (false negatives) 은 불가능하다. 일부 예시적인 블룸 필터들에서, 엘리먼트들이 세트에 추가될 수도 있지만, (카운팅 필터를 이용하여 어드레싱될 수 있다고 하더라도) 제거되지 않을 수도 있다. 일부 예시적인 블룸 필터들에서, 더 많은 엘리먼트들이 세트에 부가될수록 가 긍정적 판단들의 확률은 더 커진다. 비어있는 (empty) 블룸 필터는 모두 0 으로 세팅된 m 개 비트들의 비트 어레이일 수도 있다. 추가로, k 개의 상이한 해시 (hash) 함수들이 정의될 수도 있고, 그 각각은 일부 세트 엘리먼트를 균일한 랜덤 분포를 갖는 m 개 어레이 위치들 중 하나로 할당하거나 해싱할 수도 있다. 엘리먼트를 추가하기 위해서는, 엘리먼트는 k 개 어레이 위치들을 획득하기 위해 k 개 해시 함수들 각각에 공급될 수도 있다. 이러한 위치들에서의 비트들은 1 로 세팅될 수도 있다. (예컨대, 이것이 세트 내에 있는지 여부를 테스트하기 위해) 엘리먼트에 대하여 질의하기 위해서는, 그 엘리먼트는 k 개 어레이 위치들을 획득하기 위해 k 개 해시 함수들의 각각으로 공급될 수도 있다. 일부 예시적인 블룸 필터들에서, 이러한 위치들 중 임의의 위치에서의 비트가 0 이면, 그 엘리먼트는 세트 내에 있지 않고; 그 엘리먼트가 세트 내에 있다면, K 개 어레이 위치들에서 모든 비트들은 엘리먼트가 삽입되었을 경우에 1 로 세팅된다. 일부 예시적인 블룸 필터들에서, k 개 어레이 위치들에서 모든 비트들이 1 이면, 그 엘리먼트는 세트 내에 있거나, 다른 엘리먼트들의 삽입 동안 비트들이 1 로 세팅된다.
일부 예시적인 실시형태들에서, 블룸 필터는 현재 스레드에 의해 이용되고 있는 캐시의 부분들을 추적하도록 이용될 수도 있다. 예를 들어, 필터는 스레드가 최초에 코어 상에 스케줄링된 경우에 비어있을 수도 있다. 캐시 라인이 스레드에 의해 이용될 때마다, 필터 세트에 추가될 수도 있다. 질의들의 시퀀스는 캐시 데이터 이동의 비용을 평가하기 위해 스레드 풋프린트를 추정하는데 이용될 수도 있다. 일부 예시적인 실시형태들에서, 필터 내의 "1" 비트들의 개수의 간단한 모집단 카운트 (population count) 는 스레드의 캐시 풋프린트를 추정하기 위해 이용될 수도 있다. 일부 예시적인 실시형태들에서, 카운팅 블룸 필터들이 이용될 수도 있다. 카운팅 블룸 필터에서, 각각의 필터 엘리먼트는 캐시 라인이 스레드에 의해 이용되는 경우에 증분될 수도 있고, 캐시 라인이 무효화될 경우에 감분될 수도 있는 카운터일 수도 있다.
일부 예시적인 실시형태들에서, 스레드 이동을 위한 캐시 데이터는 프리 페치 (pre-fetch) 될 수도 있다. 프리 페치는 당업계에 공지된 것과 같이 하드웨어 프리 페처 (prefetcher) 에 의해 수행될 수도 있다. 이러한 프리 페처는 참조로서 통합되는 미국 특허 제 7,318,125 호에 개시된다. 즉, 시스템이 스레드를 새로운 코어로 전송할 것을 준비하고 있는 경우에, 현재 코어로부터의 레퍼런스들은 이동을 준비하기 위해 새로운 코어로 전송될 수도 있다. 따라서, 새로운 코어는 이동을 위한 준비로 "워밍업될" 수도 있다. 일부 실시형태들에서, 이동될 스레드에 관한 실질적으로 모든 데이터가 새로운 코어에 의해 프리 페치될 수도 있다. 일부 다른 예시적인 실시형태들에서, 이동될 스레드에 관한 데이터의 일부분은 새로운 코어에 의해 프리 페치될 수도 있다. 예를 들어, 캐시 미스들, 캐시 히트들 및/또는 라인 축출들은 프리 페치될 수도 있다. 일부 예시적인 실시형태들에서, 데이터를 새로운 코어 내에 캐싱하는 (따라서 궁극적으로는 요구되지 않을 수도 있는 데이터로 새로운 코어를 채우는) 것보다, 데이터는 예컨대, 사이드/스트림 버퍼로 프리 페치될 수도 있다.
본 명세서에서 이용되는 것과 같이, "캐시 히트 (cache hit)" 는 캐싱되었던 데이터뿐만 아니라 대응하는 데이터를 참조하기 위한 성공적인 시도를 지칭할 수도 있다. 본 명세서에서 이용되는 것과 같이, "캐시 미스" 는 캐시 내에서 발견되지 않은 데이터뿐만 아니라 대응하는 데이터를 참조하기 위한 시도를 지칭할 수도 있다. 본 명세서에서 이용되는 것과 같이, "라인 축출" 은 캐시 내의 상이한 데이터에 대한 공간을 형성하는 것과 같이 캐시로부터 캐싱된 라인을 제거하는 것을 지칭할 수도 있다. 라인 축출은 또한 라이트 백 (write-back) 동작을 포함하며, 따라서 캐시 내의 수정된 데이터는 캐시로부터 제거되기 전에 더 높은 캐시 레벨 또는 메인 메모리에 기록될 수도 있다.
도 2 는 본 개시물의 적어도 일부 실시형태들에 따라 배열되는 복수의 이종 프로세서 코어들 중 적어도 하나로 스레드를 할당하는 예시적인 방법 200을 도시하는 흐름도이다. 예시적인 방법 200은 프로세싱 동작들 202 및/또는 204 중 하나 이상을 포함할 수도 있다. 프로세싱은 동작 202에서 시작하며, 이 동작은 스레드를 프로세싱하기 위해서 각각 구성된 하나 이상의 이종 프로세서 코어들과 관련된 실시간 컴퓨팅 데이터를 모니터링하는 단계를 포함할 수도 있다. 프로세싱은 동작 202에서 동작 204로 진행할 수도 있다. 동작 204는, 모니터링된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 하나 이상의 이종 프로세서 코어들로 스레드를 할당하는 단계를 포함할 수도 있다.
일부 실시형태들에서, 모니터링 동작 202는, 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있는지를 결정하는 단계를 포함할 수도 있고, 할당 동작 204는, 스레드가 스레드 완료 목표 데드라인보다 뒤처졌었는지 여부에 적어도 부분적으로 기초할 수도 있다. 일부 실시예들에서, 실시간 컴퓨팅 데이터는 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있다는 표시를 포함할 수도 있다.
일부 실시형태들에서, (다른 프로세서 코어 상의 별개의 하드웨어에 의해 실시될 수도 있는) 모니터링 동작 202는 스레드 처리와 동시에 발생할 수도 있고 또는 간헐적으로 발생 (즉, 체크포인트들 또는 스케줄링 인터립트들에서 발생) 할 수도 있다. 스레드는 언제라도 실행 또는 중단 (즉, 멈춤) 중 어느 하나일 수도 있다. 일부 실시예들에서, 스레드는 완료 데드라인이 있을 수도 있고 스레드가 다른 것으로 할당될 때까지 하나의 코어 상에서 실행되고 있을 가능성이 높을 수도 있다. 일부 실시형태들에서, 실시간 데이터는 동시에 평가될 수도 있다. 일부 실시예들에서, 스레드가 중단될 수도 있고, 실시간 데이터가 평가될 수도 있고, 스레드가 동일한 코어 또는 상이한 코어로 재할당될 수도 있다.
예시적인 실시형태에서, 실시간 컴퓨팅 데이터는 명령어 당 사이클 레이트 (cycles per instruction rate) 를 포함할 수도 있으며, 명령어 당 사이클 레이트는 적어도 부분적으로, 미리결정된 시간 간격에 걸쳐 완료된 명령어 당 클록 사이클들의 총 수의 비율에 의해 결정될 수도 있다. 다른 예시적인 실시형태에서, 명령어 당 사이클 레이트는 명령어 당 목표 사이클 레이트와 비교될 수도 있고, 할당 동작 204는, 명령어 당 사이클 레이트와 명령어 당 목표 사이클 레이트의 비교에 적어도 부분적으로 기초할 수도 있다. 또 다른 예시적인 실시형태에서, 할당 동작 204는 동적으로 발생할 수도 있다.
또 다른 실시형태에서, 실시간 컴퓨팅 데이터는, 미리결정된 시각에 스레드가 제 1 이종 프로세서 코어로부터 제 2 이종 프로세서 코어로 할당될 것을 지시하는 적어도 하나의 체크포인트를 포함할 수도 있고, 할당 동작 204는 적어도 하나의 체크포인트에 적어도 부분적으로 기초할 수도 있다.
다른 실시형태에서, 방법 200은 또한, 실시간 컴퓨팅 데이터를 스레드 할당 소프트웨어 툴로 전송하는 단계를 포함할 수도 있다. 스레드 할당 소프트웨어 툴은 스레드를 미리결정된 이종 프로세서 코어로 할당하도록 구성될 수도 있다. 다른 실시형태에서, 스레드는 복수의 스레드들일 수도 있으며, 복수의 스레드들 각각은 실시간 컴퓨팅 데이터와 연관될 수도 있으며, 스레드들 각각은 이종 프로세서 코어들에 독립적으로 할당될 수도 있다.
도 3 은, 본 개시의 적어도 일부 실시형태들에 따라서 배열되는, 스레드를 제 1 이종 프로세서 코어로부터 제 2 이종 프로세서 코어로 할당하는 예시적인 방법 300을 도시하는 흐름도이다. 이러한 방법 300은 하나 이상의 프로세싱 동작들 302, 304 및/또는 306을 포함할 수도 있다.
프로세싱은 동작 302에서 시작할 수도 있으며, 동작 302는 제 1 이종 프로세서 코어와 연관된 클록 사이클들의 총 수 및/또는 제 1 이종 프로세서 코어에 의해 완료된 명령어들의 총 수 중 하나 이상을 모니터링하는 단계를 포함할 수도 있다. 프로세싱은 동작 302로부터, 시간 간격에 걸쳐 완료된 명령어 당 클록 사이클들의 총 수의 비율에 적어도 부분적으로 기초하여 명령어 당 사이클들 (CPI; cycles per instruction) 값을 계산하는 단계를 포함하는 동작 304로 진행할 수도 있다. 이후, 프로세싱은 동작 304로부터, 이 CPI 값에 적어도 부분적으로 기초하여 스레드를 제 2 이종 프로세서 코어로 할당하는 단계를 포함할 수도 있는 동작 306으로 진행할 수도 있다.
예시적인 실시형태에서, 이 방법은 또한, 할당 동작 306 전에, CPI 값을 목표 CPI 값과 비교하는 단계를 포함할 수도 있으며, 할당 동작 306은 목표 CPI 값과 대략적으로 같은 CPI 값에 적어도 부분적으로 기초할 수도 있다. 다른 실시형태에서, 이 방법은 또한, 할당 동작 306 전에, CPI 값을 목표 CPI 값과 비교하는 단계를 포함할 수도 있으며, 할당 동작 306은 목표 CPI 값을 초과하는 CPI 값에 적어도 부분적으로 기초할 수도 있다.
다른 실시형태에서, 목표 CPI 값은 스레드와 연관된 소프트웨어 애플리케이션의 실행 전에 또는 스레드와 연관된 소프트웨어 애플리케이션의 실행 동안 정의될 수도 있다.
또 다른 실시형태에서, 실시간 컴퓨팅 데이터는, 미리결정된 시각에 스레드가 일 이종 프로세서 코어로부터 다른 이종 프로세서 코어로 할당될 것을 지시하도록 구성되는 하나 이상의 체크포인트들을 포함할 수도 있다. 이러한 방식에서, 할당 동작 306은 적어도 하나의 체크포인트와 연관된 미리결정된 시각에 적어도 부분적으로 기초할 수도 있다.
도 4는 본 개시의 적어도 일부 실시형태들에 따라서 배열되는 머신 판독가능 명령들을 포함하는 저장 매체 (400) 를 포함하는 예시적인 물품의 개략도이다. 하나 이상의 프로세싱 유닛들에 의해 실행되는 경우, 이러한 머신 판독가능 명령들은, 스레드를 프로세싱하는 제 1 이종 프로세서 코어와 관련된 실시간 컴퓨팅 데이터를 모니터링하고 (동작 402); 이 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 제 2 이종 프로세서 코어에 스레드를 할당하도록 (동작 404) 컴퓨팅 플랫폼을 인에이블할 수도 있다.
일부 실시예들에서, 머신 판독가능 명령들은 또한 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있는지를 결정하도록 컴퓨팅 플랫폼을 동작가능하게 인에이블되도록 구성될 수도 있다. 이러한 방식으로, 할당 동작 404는 스레드가 스레드 완료 목표 데드라인보다 뒤처져있었는지 여부에 적어도 부분적으로 기초할 수도 있다.
다른 실시형태에서, 물품은 또한, 실시간 컴퓨팅 데이터를 수신하도록 구성된 스레드 할당 소프트웨어 툴을 더 포함할 수도 있다. 스레드 할당 소프트웨어 툴은 미리결정된 이종 프로세서 코어에 스레드를 할당하도록 구성될 수도 있다.
일부 실시형태들에서, 머신 판독가능 명령들은 모니터링된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 다른 이종 프로세서 코어로 스레드를 동적으로 할당하도록 컴퓨팅 플랫폼을 동작가능하게 인에이블하도록 구성될 수도 있다.
일부 실시형태에서, 멀티-코어 프로세서는 제 1 이종 프로세서 코어 및 제 2 이종 프로세서 코어를 포함할 수도 있다. 이러한 멀티-코어 프로세서는 스레드를 프로세싱하는 제 1 이종 프로세서 코어와 관련된 실시간 컴퓨팅 데이터를 모니터링하고, 모니터링된 실시간 컴퓨팅 데이터에 적어도 부분적으로 기초하여 제 2 이종 프로세서 코어로 스레드를 할당하고, 그리고 스레드가 제 2 이종 프로세서 코어로 할당된 후 제 2 이종 프로세서 코어에 의해 스레드를 실행하도록 구성될 수도 있다.
도 5 는 본 개시물의 적어도 일부 실시형태들에 따른 스레드 할당을 위해 배열된 예시적인 컴퓨팅 디바이스 (900) 를 도시하는 블록도이다. 매우 기본적인 구성 (901) 에서, 컴퓨팅 디바이스 (900) 는 통상적으로 하나 이상의 프로세서들 (910) 및 시스템 메모리 (920) 를 포함할 수도 있다. 메모리 버스 (930) 는 프로세서 (910) 와 시스템 메모리 (920) 사이에서 통신하기 위해 이용될 수도 있다.
원하는 구성에 따라, 프로세서 (910) 는 마이크로프로세서 (μP), 마이크로제어기 (μC), 디지털 신호 프로세서 (DSP), 또는 그 임의의 조합을 포함하지만 이에 제한되지 않는 임의의 타입 중 하나일 수 있다. 프로세서 (910) 는 레벨 1 캐시 (911) 및 레벨 2 캐시 (912) 와 같은 하나 이상의 레벨의 캐시, 프로세서 코어 (913) 및 레지스터들 (914) 을 포함할 수 있다. 프로세서 코어 (913) 는 산술 논리 유닛 (ALU), 부동 소수점 유닛 (FPU), 디지털 신호 프로세싱 코어 (DSP 코어), 또는 이들의 임의의 조합을 포함할 수 있다. 메모리 제어기 (915) 는 또한 프로세서 (910) 와 함께 이용될 수 있거나, 일부 구현들에서 메모리 제어기 (915) 는 프로세서 (910) 의 내부 부분일 수도 있다.
원하는 구성에 따라, 시스템 메모리 (920) 는 (RAM 과 같은) 휘발성 메모리, (ROM, 플래시 메모리, 등과 같은) 비-휘발성 메모리, 또는 이들의 임의의 조합을 포함하지만 이에 제한되지 않는 임의의 타입일 수 있다. 시스템 메모리 (920) 는 통상적으로 운영 시스템 (921), 하나 이상의 애플리케이션들 (922), 및 프로그램 데이터 (924) 를 포함한다. 애플리케이션 (922) 은 스레드를 하나 이상의 실행 특성들과 연관시키고, 스레드를 적어도 하나의 이종 하드웨어 컴포넌트에 할당하도록 배열될 수도 있는 스레드 할당 알고리즘 (923) 을 포함할 수도 있다. 프로그램 데이터 (924) 는 스레드를 적절한 이종 하드웨어 컴포넌트로 할당하기 위해 유용할 수도 있는 스레드 할당 데이터 (925) 를 포함할 수도 있다. 일부 실시형태들에서, 애플리케이션 (922) 은 본 명세서에 설명된 다양한 방법들에 따라 스레드가 적절한 프로세서 코어에 효율적으로 할당될 수 있도록 프로그램 데이터 (924) 와 함께 운영 시스템 (921) 상에서 동작하도록 배열될 수 있다. 상기 개시된 기본 구성은 도 5 에서 점선 (901) 내의 컴포넌트들에 의해 도시된다.
컴퓨팅 디바이스 (900) 는 추가의 특징들 또는 기능을 가질 수 있고, 기본 구성 (901) 과 임의의 요구되는 디바이스들 및 인터페이스들 사이의 통신들을 용이하게 하도록 추가의 인터페이스들을 가질 수 있다. 예를 들면, 버스/인터페이스 제어기 (940) 는 저장 인터페이스 버스 (941) 를 통해 기본 구성 (901) 과 하나 이상의 데이터 저장 디바이스들 (950) 사이에 통신들을 용이하게 하는데 이용될 수도 있다. 데이터 저장 디바이스들 (950) 은 착탈가능 저장 디바이스들 (951), 착탈불가능 저장 디바이스들 (952) 또는 이들의 조합일 수 있다. 착탈가능 저장 디바이스 및 착탈불가능 저장 디바이스의 예들은, 몇 가지만 예를 들면, 플렉서블 디스크 드라이브들 및 하드 디스크 드라이브들 (HDD) 과 같은 자기 디스크 드라이브, 컴팩트 디스크 (CD) 또는 디지털 다기능 디스크 (DVD) 드라이브들과 같은 광학 디스크 드라이브, 솔리드 스테이트 드라이브들 (SSD) 및 테이프 드라이브들을 포함한다. 예시적인 컴퓨터 저장 매체는 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성의, 착탈가능 및 착탈불가능 매체를 포함할 수 있다.
시스템 메모리 (920), 착탈가능 저장장치 (951) 및 착탈불가능 저장장치 (952) 는 모두 컴퓨터 저장 매체의 예들이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크들 (DVD) 또는 다른 광학 저장장치, 자기 카세트들, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스들 또는 원하는 정보를 저장하는데 이용될 수 있고 컴퓨팅 디바이스 (900) 에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 제한되지 않는다. 그러한 임의의 컴퓨터 저장 매체는 디바이스 (900) 의 일부분일 수 있다.
컴퓨팅 디바이스 (900) 는 또한 버스/인터페이스 제어기 (940) 를 통해 다양한 인터페이스 디바이스들 (예컨대, 출력 인터페이스들, 주변 인터페이스들 및 통신 인터페이스들) 로부터 기본 구성 (901) 으로의 통신을 용이하게 하기 위한 인터페이스 버스 (942) 를 포함할 수 있다. 예시적인 출력 디바이스들 (960) 은 하나 이상의 A/V 포트들 (963) 을 통해 디스플레이 또는 스피커들과 같은 다양한 외부 디바이스들로 통신하도록 구성될 수도 있는, 그래픽 프로세싱 유닛 (961) 및 오디오 프로세싱 유닛 (962) 을 포함한다. 예시적인 주변 인터페이스들 (970) 은 하나 이상의 I/O 포트들 (973) 을 통해 입력 디바이스들 (예컨대, 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스, 등등) 또는 다른 주변 디바이스들 (예컨대, 프린터, 스캐너, 등등) 과 같은 외부 디바이스들과 통신하도록 구성될 수 있는, 직렬 인터페이스 제어기 (971) 또는 병렬 인터페이스 제어기 (972) 를 포함할 수 있다. 예시적인 통신 디바이스 (980) 는 하나 이상의 통신 포트들 (982) 을 통한 네트워크 통신을 경유하여 하나 이상의 다른 컴퓨팅 디바이스들 (990) 과의 통신들을 유용하게 하도록 배열될 수 있는, 네트워크 제어기 (981) 를 포함한다. 통신 접속은 통신 매체의 일 예이다. 통신 매체는 통상적으로 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 반송파 또는 다른 전송 메커니즘과 같이 변조된 데이터 신호 내의 다른 데이터에 의해 구현될 수도 있고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호" 는 신호 내의 정보를 인코딩하도록 하는 방식으로 설정되거나 변경된 특성들 중 하나 이상을 가지는 신호일 수 있다. 제한되지 않는 예로서, 통신 매체는 유선 네트워크 또는 직접-유선 접속과 같은 유선 매체 및 음향, 무선 주파수 (RF), 적외선 (IR) 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다. 본 명세서에서 이용되는 것과 같은 용어, 컴퓨터 판독가능 매체는 저장 매체 및 통신 매체 양자를 포함할 수 있다.
컴퓨팅 디바이스 (900) 는 셀 폰, 개인 휴대 정보 단말기 (PDA), 개인 미디어 플레이어 디바이스, 무선 웹-와치 디바이스, 개인 핸드셋 디바이스, 애플리케이션용 디바이스 또는 전술된 기능들 중 임의의 것을 포함하는 하이브리드 디바이스와 같은 소형 폼 팩터 포터블 (또는 모바일) 전자 디바이스의 일부분으로 구현될 수 있다. 컴퓨팅 디바이스 (900) 는 또한 랩톱 컴퓨터 및 비-랩톱 컴퓨터 구성들 양자를 포함하는 퍼스널 컴퓨터로서 구현될 수 있다.
본 명세서에 설명된 주제는 때때로 상이한 컴포넌트들 내에 포함된 또는 이들에 접속된 상이한 컴포넌트들을 예시한다. 이렇게 도시된 아키텍쳐들은 예시적인 것이고, 사실상 동일한 기능을 달성하는 수많은 다른 아키텍쳐들이 구현될 수 있다는 것이 이해될 것이다. 개념적인 관점에서, 동일한 기능을 달성하기 위한 컴포넌트들의 임의의 배열은 효과적으로 "연관되어", 바람직한 기능이 달성된다. 따라서, 특정 기능을 달성하도록 조합된 본 명세서의 임의의 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" 의 가능성을 포함하도록 이해될 것이다.
본 명세서에서 다양한 양태들 및 실시형태들이 개시되었으나, 당업자에게는 다른 양태들 및 실시형태들이 명백할 것이다. 본 명세서에 개시된 다양한 양태들 및 실시형태들은 설명을 위한 것이고 제한하는 것으로 의도되지 않으며, 진정한 범위 및 사상이 하기의 특허청구범위에 의해 나타난다.

Claims (24)

  1. 하나 이상의 프로세서 코어들에 스레드를 할당하는 방법으로서,
    상기 스레드를 제 1 프로세서 코어에 할당하는 단계;
    상기 제 1 프로세서 코어와 관련된 컴퓨팅 데이터를 모니터링하는 단계;
    상기 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있는지를 결정하는 단계; 및
    상기 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있다는 결정에 적어도 부분적으로 기초하여, 상기 제 1 프로세서 코어와는 상이한 상기 프로세서 코어들 중 하나 이상의 제 2 프로세서 코어로 상기 스레드를 할당하는 단계를 포함하는, 스레드를 할당하는 방법.
  2. 제 1 항에 있어서,
    상기 제 2 프로세서 코어에 의해 상기 스레드를 실행하는 단계를 더 포함하는, 스레드를 할당하는 방법.
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서,
    상기 컴퓨팅 데이터는 명령어 당 사이클 레이트 (cycles per instruction rate) 를 포함하는, 스레드를 할당하는 방법.
  6. 제 5 항에 있어서,
    상기 명령어 당 사이클 레이트는 적어도 부분적으로, 시간 간격에 걸쳐 완료된 명령어 당 클록 사이클들의 총 수의 비율로 결정되는, 스레드를 할당하는 방법.
  7. 제 6 항에 있어서,
    상기 명령어 당 사이클 레이트를 명령어 당 목표 사이클 레이트와 비교하는 단계를 더 포함하고,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계는, 상기 명령어 당 사이클 레이트와 상기 명령어 당 목표 사이클 레이트의 비교에 적어도 부분적으로 기초하는, 스레드를 할당하는 방법.
  8. 제 1 항에 있어서,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계는 상기 스레드를 상기 제 2 프로세서 코어로 동적으로 할당하는 단계를 포함하는, 스레드를 할당하는 방법.
  9. 제 1 항에 있어서,
    상기 모니터링된 컴퓨팅 데이터를 스레드 할당 소프트웨어 툴로 전송하는 단계, 및
    상기 모니터링된 컴퓨팅 데이터에 기초하여 상기 스레드 할당 소프트웨어 툴을 이용하여 상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계를 더 포함하는, 스레드를 할당하는 방법.
  10. 제 1 항에 있어서,
    상기 컴퓨팅 데이터는, 특정 시각에 상기 스레드가 상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 할당될 것을 지시하는 하나 이상의 체크포인트들을 포함하고,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계는 상기 하나 이상의 체크포인트들에 적어도 부분적으로 기초하는, 스레드를 할당하는 방법.
  11. 삭제
  12. 스레드를 제 1 프로세서 코어로부터 제 2 프로세서 코어로 할당하는 방법으로서,
    상기 스레드를 상기 제 1 프로세서 코어로 할당하는 단계;
    상기 제 1 프로세서 코어와 연관된 클록 사이클들의 총 수를 모니터링하는 단계;
    상기 제 1 프로세서 코어에 의해 완료된 명령어들의 총 수를 모니터링하는 단계;
    상기 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있는지를 결정하는 단계;
    특정 시간 간격에 걸쳐 완료된 명령어 당 클록 사이클들의 총 수의 비율에 적어도 부분적으로 기초하여 명령어 당 사이클 (CPI; cycles per instruction) 값을 계산하는 단계;
    상기 명령어 당 사이클 값 및 상기 스레드가 상기 스레드 완료 목표 데드라인보다 뒤처지고 있는 것에 적어도 부분적으로 기초하여, 상기 제 1 프로세서 코어와는 상이한 상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계를 포함하는, 스레드를 할당하는 방법.
  13. 제 12 항에 있어서,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하기 전에, 상기 명령어 당 사이클 값을 목표 명령어 당 사이클 값과 비교하는 단계를 더 포함하고,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계는 상기 목표 명령어 당 사이클 값과 같은 상기 명령어 당 사이클 값에 적어도 부분적으로 기초하는, 스레드를 할당하는 방법.
  14. 제 12 항에 있어서,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하기 전에, 상기 명령어 당 사이클 값을 목표 명령어 당 사이클 값과 비교하는 단계를 더 포함하고,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계는 상기 목표 명령어 당 사이클 값을 초과하는 상기 명령어 당 사이클 값에 적어도 부분적으로 기초하는, 스레드를 할당하는 방법.
  15. 제 13 항에 있어서,
    상기 스레드와 연관된 소프트웨어 애플리케이션의 실행 전에 목표 명령어 당 사이클 값이 정의되는, 스레드를 할당하는 방법.
  16. 제 13 항에 있어서,
    상기 스레드와 연관된 소프트웨어 애플리케이션의 실행 동안에 목표 명령어 당 사이클 값이 정의되는, 스레드를 할당하는 방법.
  17. 제 12 항에 있어서,
    상기 제 2 프로세서 코어로 상기 스레드를 할당하는 단계는 적어도 하나의 체크포인트와 연관된 특정 시각에 적어도 부분적으로 기초하는, 스레드를 할당하는 방법.
  18. 머신 판독가능 명령들이 저장된 머신 판독가능 저장 매체로서,
    상기 머신 판독가능 명령들은, 하나 이상의 프로세싱 유닛들에 의해 실행되는 경우, 컴퓨팅 플랫폼으로 하여금, 동작가능하게,
    스레드를 제 1 프로세서 코어로 할당하게 하고;
    상기 제 1 프로세서 코어와 관련된 컴퓨팅 데이터를 모니터링할 수 있게 하고;
    상기 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있는지를 결정할 수 있게 하고; 그리고
    상기 스레드가 스레드 완료 목표 데드라인보다 뒤처지고 있다는 결정에 적어도 부분적으로 기초하여, 상기 제 1 프로세서 코어와는 상이한 제 2 프로세서 코어로 상기 스레드를 할당하게 하는, 머신 판독가능 저장 매체.
  19. 삭제
  20. 제 18 항에 있어서,
    상기 머신 판독가능 명령들은, 상기 컴퓨팅 플랫폼으로 하여금,
    상기 컴퓨팅 데이터를 수신하게 함으로써 상기 컴퓨팅 데이터에 적어도 부분적으로 기초하여 상기 제 2 프로세서 코어로 상기 스레드를 할당할 수 있게 하도록 더욱 동작 가능한, 머신 판독가능 저장 매체.
  21. 제 18 항에 있어서,
    상기 머신 판독가능 명령들은, 상기 컴퓨팅 플랫폼으로 하여금,
    상기 모니터링된 컴퓨팅 데이터에 적어도 부분적으로 기초하여 상기 제 2 프로세서 코어로 상기 스레드를 동적으로 할당할 수 있게 하도록 더욱 동작 가능한, 머신 판독가능 저장 매체.
  22. 멀티-코어 프로세서로서,
    제 1 프로세서 코어; 및
    제 2 프로세서 코어를 포함하고,
    상기 멀티-코어 프로세서는,
    스레드를 상기 제 1 프로세서 코어로 할당하고;
    상기 스레드를 프로세싱하는 상기 제 1 프로세서 코어와 관련된 컴퓨팅 데이터를 모니터링해서 상기 스레드가 스레드 완료 목표 데드라인에 뒤처지고 있는지를 결정하게 하고;
    상기 스레드가 스레드 완료 목표 데드라인에 뒤처지고 있다는 결정에 적어도 부분적으로 기초하여 상기 제 2 프로세서 코어로 상기 스레드를 할당하고; 그리고
    상기 스레드가 상기 제 2 프로세서 코어로 할당된 후 상기 제 2 프로세서 코어에 의해 상기 스레드를 실행하도록 구성되는, 멀티-코어 프로세서.
  23. 제 22 항에 있어서,
    상기 제 1 프로세서 코어가 제 1 능력을 갖고 상기 제 2 프로세서 코어가 상기 제 1 능력과는 상이한 제 2 능력을 가져서, 상기 멀티-코어 프로세서는 하드웨어를 포함하는, 멀티-코어 프로세서.
  24. 제 23 항에 있어서,
    상기 제 1 능력 및 상기 제 2 능력 각각은, 그래픽 리소스, 수학적 계산 리소스, 명령어 세트, 액셀러레이터, SSE, 캐시 사이즈 및/또는 브랜치 예측자 중 적어도 하나에 대응하는, 멀티-코어 프로세서.
KR1020127001232A 2009-09-11 2010-06-04 스레드 시프트 : 스레드들의 코어들로의 할당 KR101362017B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/557,971 US8881157B2 (en) 2009-09-11 2009-09-11 Allocating threads to cores based on threads falling behind thread completion target deadline
US12/557,971 2009-09-11
PCT/US2010/037496 WO2011031356A1 (en) 2009-09-11 2010-06-04 Thread shift: allocating threads to cores

Publications (2)

Publication Number Publication Date
KR20120017471A KR20120017471A (ko) 2012-02-28
KR101362017B1 true KR101362017B1 (ko) 2014-02-11

Family

ID=43731741

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127001232A KR101362017B1 (ko) 2009-09-11 2010-06-04 스레드 시프트 : 스레드들의 코어들로의 할당

Country Status (6)

Country Link
US (1) US8881157B2 (ko)
JP (1) JP5615361B2 (ko)
KR (1) KR101362017B1 (ko)
CN (1) CN102473113B (ko)
GB (1) GB2485683B (ko)
WO (1) WO2011031356A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012046302A1 (ja) * 2010-10-05 2012-04-12 富士通株式会社 マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム
US8751720B2 (en) * 2010-11-08 2014-06-10 Moon J. Kim Computationally-networked unified data bus
US8832414B2 (en) 2011-03-24 2014-09-09 Empire Technology Development Llc Dynamically determining the profitability of direct fetching in a multicore architecture
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US8990830B2 (en) * 2011-07-19 2015-03-24 International Business Machines Corporation Thread management in parallel processes
US8621473B2 (en) 2011-08-01 2013-12-31 Honeywell International Inc. Constrained rate monotonic analysis and scheduling
US8875146B2 (en) 2011-08-01 2014-10-28 Honeywell International Inc. Systems and methods for bounding processing times on multiple processing units
US8887160B2 (en) * 2011-11-21 2014-11-11 Hewlett-Packard Development Company, L.P. Mapping tasks to execution threads
KR101869325B1 (ko) * 2011-12-13 2018-06-21 한국전자통신연구원 이종 멀티코어 환경에서의 코어 배정 장치
US9207977B2 (en) 2012-02-06 2015-12-08 Honeywell International Inc. Systems and methods for task grouping on multi-processors
US20150205614A1 (en) * 2012-03-21 2015-07-23 Mika Lähteenmäki Method in a processor, an apparatus and a computer program product
US9003218B2 (en) * 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
US9141361B2 (en) * 2012-09-30 2015-09-22 Intel Corporation Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation
US9612868B2 (en) 2012-10-31 2017-04-04 Honeywell International Inc. Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors
US9317331B1 (en) * 2012-10-31 2016-04-19 The Mathworks, Inc. Interactive scheduling of an application on a multi-core target processor from a co-simulation design environment
US9940170B2 (en) * 2012-12-24 2018-04-10 Empire Technology Development Llc Dynamically managing distribution of data and computation across cores for sequential programs
EP2939114A1 (en) 2012-12-26 2015-11-04 Huawei Technologies Co., Ltd. Processing method for a multicore processor and multicore processor
CN103012146A (zh) * 2013-01-10 2013-04-03 厦门大学 从糖的醇解液中萃取乙酰丙酸乙酯的方法
KR101553649B1 (ko) * 2013-05-13 2015-09-16 삼성전자 주식회사 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
CN105830046A (zh) * 2013-08-15 2016-08-03 英派尔科技开发有限公司 具有基于石墨烯的晶体管的异构多核处理器
US9411922B2 (en) 2013-08-15 2016-08-09 Empire Technology Development Llc Yield optimization of processor with graphene-based transistors
KR101684677B1 (ko) * 2013-12-26 2016-12-09 한국전자통신연구원 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법
EP3111333B1 (en) * 2014-02-27 2022-03-30 Mercury Kingdom Assets Limited Thread and data assignment in multi-core processors
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
US20190146837A1 (en) * 2014-09-29 2019-05-16 Samsung Electronics Co., Ltd. Distributed real-time computing framework using in-storage processing
US9348644B2 (en) * 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
US10402072B2 (en) * 2015-05-04 2019-09-03 Graphisoft Se Predictive background updating
KR102384345B1 (ko) * 2015-05-15 2022-04-19 삼성전자 주식회사 스레드를 실행하는 방법, 프로세서 및 기록매체
KR102509988B1 (ko) * 2015-12-15 2023-03-14 삼성전자주식회사 커넥션 기반 로드 밸런싱을 위한 저장 시스템 및 방법
US10223171B2 (en) * 2016-03-25 2019-03-05 Intel Corporation Mitigating load imbalances through hierarchical performance balancing
US10034407B2 (en) 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
US11513805B2 (en) 2016-08-19 2022-11-29 Wisconsin Alumni Research Foundation Computer architecture with synergistic heterogeneous processors
EP3370125A1 (en) * 2017-03-01 2018-09-05 PLETHORA IIoT, S.L. Device and system including multiple devices for supervision and control of machines in industrial installation
KR101852610B1 (ko) * 2017-11-16 2018-04-27 (주)시큐레이어 Ai 학습 기반 실시간 분석 시스템을 이용한 자원 사용 방법 및 이를 사용한 매니지먼트 서버
CN111542808B (zh) * 2017-12-26 2024-03-22 三星电子株式会社 预测电子设备上运行应用的线程的最优数量的方法和系统
CN110737358A (zh) * 2019-09-02 2020-01-31 Oppo(重庆)智能科技有限公司 一种线程绑定方法及终端、存储介质
US11392418B2 (en) 2020-02-21 2022-07-19 International Business Machines Corporation Adaptive pacing setting for workload execution
US11531563B2 (en) * 2020-06-26 2022-12-20 Intel Corporation Technology for optimizing hybrid processor utilization

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021931A1 (en) * 2001-02-19 2005-01-27 Anderson Adrian John Control of priority and instruction rates on a multithreaded processor
US20090217277A1 (en) * 2008-02-27 2009-08-27 Sun Microsystems, Inc. Use of cpi power management in computer systems

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628323A (ja) * 1992-07-06 1994-02-04 Nippon Telegr & Teleph Corp <Ntt> プロセス実行制御方法
US5394548A (en) * 1992-10-09 1995-02-28 Fujitsu Limited Multi-media scheduling system
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
US5968115A (en) * 1997-02-03 1999-10-19 Complementary Systems, Inc. Complementary concurrent cooperative multi-processing multi-tasking processing system (C3M2)
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
GB0015276D0 (en) * 2000-06-23 2000-08-16 Smith Neale B Coherence free cache
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
JP2003006175A (ja) 2001-06-26 2003-01-10 Hitachi Ltd プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置
JP3964821B2 (ja) 2003-04-21 2007-08-22 株式会社東芝 プロセッサ、キャッシュシステム及びキャッシュメモリ
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
JP2005031771A (ja) 2003-07-08 2005-02-03 Hitachi Ltd ジョブスケジューリング管理方法及びシステム並びにプログラム
US7353516B2 (en) * 2003-08-14 2008-04-01 Nvidia Corporation Data flow control for adaptive integrated circuitry
US7614056B1 (en) * 2003-09-12 2009-11-03 Sun Microsystems, Inc. Processor specific dispatching in a heterogeneous configuration
US7360218B2 (en) * 2003-09-25 2008-04-15 International Business Machines Corporation System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
US7461376B2 (en) * 2003-11-18 2008-12-02 Unisys Corporation Dynamic resource management system and method for multiprocessor systems
US7360102B2 (en) * 2004-03-29 2008-04-15 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processor manipulation
GB2415060B (en) * 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US7318125B2 (en) * 2004-05-20 2008-01-08 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
JP2006028323A (ja) 2004-07-15 2006-02-02 Toyobo Co Ltd ポリマー組成物の製造方法
US20060037017A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7526661B2 (en) * 2004-12-02 2009-04-28 Intel Corporation Performance state-based thread management
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
JP4445410B2 (ja) 2005-02-24 2010-04-07 株式会社ルネサステクノロジ 情報処理装置
JP2007021045A (ja) 2005-07-20 2007-02-01 Topcon Corp 収差補正装置、光学装置及び眼底観察装置
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
JP2007108944A (ja) 2005-10-12 2007-04-26 Renesas Technology Corp 半導体集積回路装置
JP4523921B2 (ja) 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
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
JP2008090546A (ja) 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
JP4308241B2 (ja) 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
US8006077B2 (en) * 2007-03-29 2011-08-23 Intel Corporation Thread migration control based on prediction of migration overhead
US8230425B2 (en) * 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
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
US7890298B2 (en) * 2008-06-12 2011-02-15 Oracle America, Inc. Managing the performance of a computer system
US8561073B2 (en) * 2008-09-19 2013-10-15 Microsoft Corporation Managing thread affinity on multi-core processors
JP5526567B2 (ja) 2009-03-10 2014-06-18 日産自動車株式会社 溶接接合部材
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US8683476B2 (en) * 2009-06-30 2014-03-25 Oracle America, Inc. Method and system for event-based management of hardware resources using a power state of the hardware resources
JP2011031134A (ja) 2009-07-30 2011-02-17 Toto Ltd 光触媒塗装体、および光触媒コーティング液

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021931A1 (en) * 2001-02-19 2005-01-27 Anderson Adrian John Control of priority and instruction rates on a multithreaded processor
US20090217277A1 (en) * 2008-02-27 2009-08-27 Sun Microsystems, Inc. Use of cpi power management in computer systems

Also Published As

Publication number Publication date
JP2013501297A (ja) 2013-01-10
WO2011031356A1 (en) 2011-03-17
JP5615361B2 (ja) 2014-10-29
CN102473113B (zh) 2015-06-10
CN102473113A (zh) 2012-05-23
GB2485683A (en) 2012-05-23
US8881157B2 (en) 2014-11-04
GB201121591D0 (en) 2012-01-25
KR20120017471A (ko) 2012-02-28
US20110067029A1 (en) 2011-03-17
GB2485683B (en) 2017-10-18

Similar Documents

Publication Publication Date Title
KR101362017B1 (ko) 스레드 시프트 : 스레드들의 코어들로의 할당
KR101361945B1 (ko) 컴퓨터 스레드들의 이종 리소스들로의 맵핑
KR101361928B1 (ko) 스레드 이송 시의 캐시 프리필링
TWI564719B (zh) 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品
US8683136B2 (en) Apparatus and method for improving data prefetching efficiency using history based prefetching
TWI596479B (zh) 具有資料預取器的處理器及其運作方法
US8606994B2 (en) Method for adapting performance sensitive operations to various levels of machine loads
US10776270B2 (en) Memory-efficient last level cache architecture
US7392269B2 (en) Conditional garbage based on monitoring to improve real time performance
US10108548B2 (en) Processors and methods for cache sparing stores
WO2016097810A1 (en) Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon mode
EP3129886A1 (en) Dynamic cache replacement way selection based on address tag bits
WO2016097795A1 (en) Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode
US8285931B2 (en) Methods for reducing cache memory pollution during parity calculations of RAID data
US8832414B2 (en) Dynamically determining the profitability of direct fetching in a multicore architecture
US8996833B2 (en) Multi latency configurable cache
US20040078550A1 (en) Multi-processor computing system having a JAVA stack machine and a RISC-based processor
Hao et al. A prediction based CMP cache migration policy

Legal Events

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

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 6