KR102239229B1 - 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어 - Google Patents

공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어 Download PDF

Info

Publication number
KR102239229B1
KR102239229B1 KR1020167030999A KR20167030999A KR102239229B1 KR 102239229 B1 KR102239229 B1 KR 102239229B1 KR 1020167030999 A KR1020167030999 A KR 1020167030999A KR 20167030999 A KR20167030999 A KR 20167030999A KR 102239229 B1 KR102239229 B1 KR 102239229B1
Authority
KR
South Korea
Prior art keywords
hardware
cluster
thread
hardware thread
threads
Prior art date
Application number
KR1020167030999A
Other languages
English (en)
Other versions
KR20170002418A (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 KR20170002418A publication Critical patent/KR20170002418A/ko
Application granted granted Critical
Publication of KR102239229B1 publication Critical patent/KR102239229B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register 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/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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

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)
  • Advance Control (AREA)
  • Power Sources (AREA)

Abstract

공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어가 개시된다. 하나의 양상에서, 제어 유닛을 포함하는 동적 부하 밸런싱 회로가 제공된다. 제어 유닛은, 클러스터드 프로세서 코어의 제 1 클러스터와 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하도록 구성된다. 차선의 부하 조건이 존재하면, 제어 유닛은 추가로, 제 1 클러스터의 제 1 하드웨어 스레드의 프라이빗 레지스터(들)의 콘텐츠를 제 2 클러스터의 제 2 하드웨어 스레드의 프라이빗 레지스터(들)에, 제 1 하드웨어 스레드 및 제 2 하드웨어 스레드의 공유 하드웨어 자원들을 통해 전송하도록 구성된다. 제어 유닛은 또한, 공유 하드웨어 자원들을 통해 제 1 하드웨어 스레드와 연관된 제 1 식별자를 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하도록 구성된다.

Description

공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어{DYNAMIC LOAD BALANCING OF HARDWARE THREADS IN CLUSTERED PROCESSOR CORES USING SHARED HARDWARE RESOURCES, AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA}
우선권 주장
[0001] 본 출원은, 2014년 5월 7일자로 출원되고 "DYNAMIC LOAD BALANCING OF HARDWARE THREADS IN CLUSTERED PROCESSOR CORES USING SHARED HARDWARE RESOURCES, AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA"로 명명된 U.S. 특허 출원 시리얼 번호 제 14/271,812호에 대한 우선권을 주장하며, 상기 특허 출원은 본원에 인용에 의해 그 전체가 통합된다.
[0002] 본 개시 내용의 기술은 일반적으로 클러스터드 프로세서 코어(clustered processor core)들의 성능을 개선시키는 것에 관한 것이다.
[0003] 최신 프로세서들, 예컨대, 중앙 프로세싱 유닛(CPU;central processing unit)들은 컴퓨터 명령들을 실행시키기 위한 자원들을 제공하는 하나 또는 그 초과의 하드웨어 스레드들을 포함할 수 있다. 각각의 하드웨어 스레드는, 이 각각의 하드웨어 스레드에 의해서만 액세스가능한 프라이빗 레지스터들(예컨대, 비-제한적 예들로서, 범용 레지스터(GPR;General Purpose Register)들, 제어 레지스터들, 또는 프로그램 카운터들)의 세트를 포함할 수 있다. 프라이빗 레지스터들은 실행을 위한 소프트웨어 스레드를 호스팅하기 위해 하드웨어 스레드에 의해 사용될 수 있다. 프라이빗 레지스터들의 콘텐츠들은 함께 소프트웨어 스레드에 대한 "콘텍스트"를 표현할 수 있고, 이 콘텍스트는 소프트웨어 스레드가 하드웨어 스레드에 의해 실행될 때 주어진 시점에 소프트웨어 스레드의 상태를 정의한다.
[0004] 프로세서 내에서, 하드웨어 스레드들은 "클러스터들"로서 알려진 그룹들로 조직화될 수 있다. 각각의 클러스터는 하나 또는 그 초과의 하드웨어 스레드들을 포함할 수 있고, 또한 클러스터 내의 임의의 하드웨어 스레드에 의해 액세스될 수 있는 공유 클러스터 자원들을 포함할 수 있다. 예컨대, 공유 클러스터 자원들은, 클러스터의 하드웨어 스레드들 각각이 순환하는 방식으로 사용할 수 있는 실행 파이프라인을 포함할 수 있다. 다수의 클러스터들은 추가로, "클러스터드 프로세서 코어들"로 조직화될 수 있다. 각각의 클러스터드 프로세서 코어는, 다수의 클러스터들에 의해 이용될 수 있는 공유 하드웨어 자원들을 포함할 수 있다. 공유 하드웨어 자원들은 비-제한적 예들로서 하나 또는 그 초과의 실행 유닛들(예컨대, 부동 소수점 유닛들 및/또는 산술 논리 유닛들) 및/또는 캐시들(예컨대, 데이터 캐시들)을 포함할 수 있다.
[0005] 일부 상황들에서, 클러스터드 프로세서 코어의 제 1 클러스터는 제 2 클러스터에 관하여 차선의 부하 조건을 경험할 수 있다. 예컨대, 제 1 클러스터의 모든 하드웨어 스레드들이 소프트웨어 스레드들을 실행시키고 있고높은 부하 조건들 하에서 동작하고 있을 수 있는 반면에 제 2 클러스터 내의 하드웨어 스레드들은 과소이용될 수 있다. 차선의 부하 조건은 또한, 단일 클러스터가 양쪽 하드웨어 스레드들 모두를 실행시키고 있다면 절전(power savings)이 구현될 수 있는 상황들에서 제 1 클러스터 및 제 2 클러스터가 각각 하드웨어 스레드를 실행시키고 있다면 발생할 수 있다.
[0006] 차선의 부하 조건의 존재는, 클러스터드 프로세서 코어가 차선의 성능 레벨로 동작하는 것을 야기할 수 있다. 통상적인 소프트웨어-기반 기술들은 소프트웨어 스레드가 하나의 하드웨어 스레드로부터 다른 하드웨어 스레드로 시프팅되는 것을 가능하게 한다. 시프팅 프로세스는 통상적으로, 운영체제가 소프트웨어 스레드의 콘텍스트를 메모리에 저장하고 이후 소프트웨어 스레드를 상이한 하드웨어 스레드에 재로딩할 것을 요구한다. 그러나, 이 프로세스는, 소프트웨어 스레드를 시프팅하는 것의 성능 및/또는 전력 소모 잇점들을 결정하기 위해 필요한 마이크로 아키텍처 데이터에 대한 액세스가 운영체제에 없다면 실현가능하지 않을 수 있다. 게다가, 소프트웨어 스레드의 콘텍스트를 메모리에 저장하는 것은 엄청나게 느릴 수 있다.
[0007] 상세한 설명에서 개시되는 양상들은 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 포함한다. 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어가 또한 개시된다. 이 점과 관련하여, 하나의 양상에서, 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 동적 부하 밸런싱 회로가 제공된다. 동적 부하 밸런싱 회로는, 클러스터드 프로세서 코어의 제 1 클러스터 및 제 2 클러스터에 통신가능하게 커플링되는 제어 유닛을 포함한다. 제어 유닛은, 제 1 클러스터와 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하도록 구성된다. 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 제어 유닛은 추가로, 제 1 클러스터의 제 1 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들의 콘텐츠를 제 2 클러스터의 제 2 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들에, 제 1 하드웨어 스레드 및 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하도록 구성된다. 추가로, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 제어 유닛은 또한, 공유 하드웨어 자원들을 통해 제 1 하드웨어 스레드와 연관된 제 1 식별자를 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하도록 구성된다. 이러한 방식으로, 제 1 클러스터로부터 공유 하드웨어 자원들을 통해 제 2 클러스터로 제 1 하드웨어 스레드의 콘텐츠들을 재배치함으로써, 차선의 부하 조건이 효율적으로 리졸빙될 수 있다.
[0008] 다른 양상에서, 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 동적 부하 밸런싱 회로가 제공된다. 동적 부하 밸런싱 회로는, 클러스터드 프로세서 코어의 제 1 클러스터와 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하기 위한 수단을 포함한다. 동적 부하 밸런싱 회로는, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 제 1 클러스터의 제 1 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들의 콘텐츠를 제 2 클러스터의 제 2 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들에, 제 1 하드웨어 스레드 및 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하기 위한 수단을 더 포함한다. 동적 부하 밸런싱 회로는 또한, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 공유 하드웨어 자원들을 통해 제 1 하드웨어 스레드와 연관된 제 1 식별자를 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하기 위한 수단을 포함한다.
[0009] 다른 양상에서, 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법이 제공된다. 방법은, 클러스터드 프로세서 코어의 제 1 클러스터와 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하는 단계를 포함한다. 방법은, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 제 1 클러스터의 제 1 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들의 콘텐츠를 제 2 클러스터의 제 2 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들에, 제 1 하드웨어 스레드 및 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하는 단계를 더 포함한다. 방법은 또한, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 공유 하드웨어 자원들을 통해 제 1 하드웨어 스레드와 연관된 제 1 식별자를 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하는 단계를 포함한다.
[0010] 다른 양상에서, 비-일시적 컴퓨터-판독가능 매체가 제공되며, 이 비-일시적 컴퓨터-판독가능 매체는, 프로세서로 하여금, 클러스터드 프로세서 코어의 제 1 클러스터와 상기 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하게 하는 컴퓨터 실행가능 명령들을 저장하고 있다. 컴퓨터 실행가능한 명령들은 추가로, 프로세서로 하여금, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 제 1 클러스터의 제 1 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들의 콘텐츠를 제 2 클러스터의 제 2 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들에, 제 1 하드웨어 스레드 및 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하게 한다. 컴퓨터 실행가능한 명령들은 또한, 프로세서로 하여금, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 공유 하드웨어 자원들을 통해 제 1 하드웨어 스레드와 연관된 제 1 식별자를 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하게 한다.
[0011] 도 1은 공유 하드웨어 자원들을 사용하여 하드웨어 스레드들의 부하 밸런싱을 수행하도록 구성되는 동적 부하 밸런싱 회로를 포함하는 예시적 클러스터드 프로세서 코어의 블록도이다.
[0012] 도 2는 동적 부하 밸런싱 회로에 의한 부하 밸런싱 이전에 하드웨어 스레드들에 의한 소프트웨어 스레드들의 호스팅을 예시하는 도 1의 예시적 클러스터드 프로세서 코어의 블록도이다.
[0013] 도 3은 동적 부하 밸런싱 회로의 부하 밸런싱 동작들 동안에 통신 흐름들을 예시하는 도 1의 예시적 클러스터드 프로세서 코어의 블록도이다.
[0014] 도 4는 동적 부하 밸런싱 회로에 의해 부하 밸런싱 동작들이 완료된 이후에 소프트웨어 스레드들의 호스팅을 예시하는 도 1의 예시적 클러스터드 프로세서 코어의 블록도이다.
[0015] 도 5는 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 위한 예시적 프로세스를 예시하는 흐름도이다.
[0016] 도 6은 도 1의 동적 부하 밸런싱 회로를 포함할 수 있는 예시적 프로세서-기반 시스템의 블록도이다.
[0017] 이제, 도면의 피겨(figure)들을 참조하여, 본 개시 내용의 몇몇 예시적 양상들이 설명된다. "예시적"이란 단어는 본원에서 "예, 사례, 또는 예시로서의 역할을 하는"을 의미하기 위해 사용된다. 본원에서 "예시적"으로서 설명되는 임의의 양상이 반드시 다른 양상들에 비하여 바람직하거나 또는 유리한 것으로서 해석되지 않아야 한다.
[0018] 상세한 설명에서 개시되는 양상들은 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 포함한다. 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어가 또한 개시된다. 이 점과 관련하여, 하나의 양상에서, 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 동적 부하 밸런싱 회로가 제공된다. 동적 부하 밸런싱 회로는, 클러스터드 프로세서 코어의 제 1 클러스터 및 제 2 클러스터에 통신가능하게 커플링되는 제어 유닛을 포함한다. 제어 유닛은, 제 1 클러스터와 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하도록 구성된다. 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 제어 유닛은 추가로, 제 1 클러스터의 제 1 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들의 콘텐츠를 제 2 클러스터의 제 2 하드웨어 스레드의 하나 또는 그 초과의 프라이빗 레지스터들에, 제 1 하드웨어 스레드 및 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하도록 구성된다. 추가로, 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 제어 유닛은 또한, 공유 하드웨어 자원들을 통해 제 1 하드웨어 스레드와 연관된 제 1 식별자를 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하도록 구성된다. 이러한 방식으로, 제 1 클러스터로부터 공유 하드웨어 자원들을 통해 제 2 클러스터로 제 1 하드웨어 스레드의 콘텐츠들을 재배치함으로써, 차선의 부하 조건이 효율적으로 리졸빙될 수 있다.
[0019] 이 점과 관련하여, 도 1은 예시적 클러스터드 프로세서 코어(10)의 블록도이다. 본원에 개시된 바와 같이, 클러스터드 프로세서 코어(10)는 클러스터드 프로세서 코어(10)의 클러스터들 내의 하드웨어 스레드들 사이에 부하 밸런싱을 제공하는 동적 부하 밸런싱 회로(12)를 포함한다. 클러스터드 프로세서 코어(10)는, 다른 엘리먼트들 중에서, 알려진 디지털 논리 엘리먼트들, 반도체 회로들, 프로세싱 코어들, 및/또는 메모리 구조들, 또는 이들의 조합들 중 임의의 하나를 포함할 수 있다. 본원에 설명되는 양상들은 엘리먼트들의 임의의 특정한 어레인지먼트로 제한되지 않으며, 개시되는 기술들은 반도체 다이들 또는 패키지들 상의 다양한 구조들 및 레이아웃들로 쉽게 확장될 수 있다.
[0020] 도 1의 예에서, 클러스터드 프로세서 코어(10)는 하드웨어 스레드들(14(0)-14(3))을 포함하며, 이 하드웨어 스레드들(14(0)-14(3)) 각각은 소프트웨어 스레드(미도시)를 호스팅하도록 동작가능하다. 하드웨어 스레드들(14(0)-14(3))은 클러스터들로 조직화되는데, 클러스터(16(0))가 하드웨어 스레드들(14(0) 및 14(1))을 포함하고 클러스터(16(1))가 하드웨어 스레드들(14(2) 및 14(3))을 포함한다. 도 1에 도시된 양상이 예시 목적들만을 위한 것임이 이해되어야 한다. 이에 따라, 일부 양상들은 도 1에서 예시된 것보다 각각의 클러스터(16) 내에 더 많거나 또는 더 적은 개수의 하드웨어 스레드들(14)을 포함할 수 있다. 마찬가지로, 추가로, 일부 양상들이 도 1에서 도시된 것보다 클러스터드 프로세서 코어(10) 내에 더 많은 개수의 클러스터들(16)을 포함할 수 있음이 이해되어야 한다.
[0021] 하드웨어 스레드(14(0))는, 하드웨어 스레드(14(0))에 의해서만 액세스가능한 프라이빗 레지스터(들)(18(0))를 포함한다. 일부 양상들에서, 프라이빗 레지스터(들)(18(0))는 비-제한적 예들로서 개개의 범용 레지스터(들)(GPR(들))(20(0)), 제어 레지스터(들)(22(0)), 및/또는 프로그램 카운터(24(0))를 포함할 수 있다. 프라이빗 레지스터(들)(18(0))의 콘텐츠들(미도시)은 하드웨어 스레드(14(0))에 의해 호스팅되는 소프트웨어 스레드(미도시)에 대한 "콘텍스트"를 표현할 수 있고, 이 콘텍스트는 소프트웨어 스레드가 실행될 때 주어진 시점에 소프트웨어 스레드의 상태를 정의한다. 하드웨어 스레드들(14(1)-14(3))은 마찬가지로, 하드웨어 스레드(14(0))의 프라이빗 레지스터(들)(18(0))에 대응하는 기능성을 각각 갖는 프라이빗 레지스터(들)(18(1)-18(3))를 포함한다. 일부 양상들은, 프라이빗 레지스터(들)(18(1)-18(3))가 비-제한적 예들로서 개개의 GPR(들)(20(1)-20(3)), 제어 레지스터(들)(22(1)-22(3)), 및/또는 프로그램 카운터들(24(1)-24(3))을 포함하는 것을 제공할 수 있다.
[0022] 도 1의 하드웨어 스레드들(14(0)-14(3)) 각각은 또한, 식별자(26(0)-26(3))를 각각 포함한다. 각각의 식별자(26(0)-26(3))는, 대응하는 하드웨어 스레드들(14(0)-14(3))을 식별하기 위해 소프트웨어, 예컨대, 운영체제에 의해 사용될 수 있는 수정가능한 식별을 포함한다. 일부 양상들에서, 식별자들(26) 중 하나 또는 그 초과는 제어 레지스터(들)(22) 중 하나로서 구현될 수 있다. 아래에 더욱 상세히 설명되는 바와 같이, 식별자들(26)은 동적 부하 밸런싱 회로(12)가 소프트웨어에 투명한 방식으로 하나의 클러스터(16)로부터 다른 클러스터로 하드웨어 스레드(14)를 재배치하는 것을 가능하게 한다.
[0023] 도 1에 도시된 바와 같이, 클러스터들(16(0) 및 16(1))은 공유 클러스터 자원들(28(0) 및 28(1))을 각각 제공하고, 이 공유 클러스터 자원들(28(0) 및 28(1))은 각각의 클러스터(16) 내의 하드웨어 스레드들(14)에 의해 액세스되고 공유될 수 있다. 클러스터(16(0))에서, 하드웨어 스레드(14(0))가 버스(30)에 의해 공유 클러스터 자원들(28(0))에 통신가능하게 커플링되는 반면에 하드웨어 스레드(14(1))는 버스(32)에 의해 공유 클러스터 자원들(28(0))에 통신가능하게 커플링된다. 유사하게, 클러스터(16(1))의 하드웨어 스레드(14(2))가 버스(34)에 의해 공유 클러스터 자원들(28(1))에 통신가능하게 커플링되는 반면에 하드웨어 스레드(14(3))는 버스(36)에 의해 공유 클러스터 자원들(28(1))에 통신가능하게 커플링된다. 공유 클러스터 자원들(28(0) 및 28(1)) 각각은 비-제한적 예들로서 실행 파이프라인(미도시)을 포함할 수 있고, 이 실행 파이프라인은, 소프트웨어 스레드들을 실행시키기 위해 순환하는 방식으로 하드웨어 스레드들(14)에 의해 공유될 수 있다. 예컨대, 공유 클러스터 자원들(28(0))의 실행 파이프라인에 대한 액세스는 클러스터(16(0))에 의해 제공되는 선점 멀티태스킹 동작들의 일부로서 하드웨어 스레드들(14(0) 및 14(1)) 각각에 교대로 할당될 수 있다.
[0024] 도 1의 클러스터드 프로세서 코어(10)는 또한 공유 하드웨어 자원들(38)을 제공하고, 이 공유 하드웨어 자원들(38)은 클러스터들(16)의 하드웨어 스레드들(14) 각각에 액세스가능하다. 도 1에 도시된 바와 같이, 하드웨어 스레드(14(0))가 버스(40)에 의해 공유 하드웨어 자원들(38)에 통신가능하게 커플링되는 반면에 하드웨어 스레드(14(1))는 버스(42)에 의해 공유 하드웨어 자원들(38)에 통신가능하게 커플링된다. 마찬가지로, 하드웨어 스레드(14(2))가 버스(44)에 의해 공유 하드웨어 자원들(38)에 통신가능하게 커플링되는 반면에 하드웨어 스레드(14(3))는 버스(46)에 의해 공유 하드웨어 자원들(38)에 통신가능하게 커플링된다. 일부 양상들에서, 공유 하드웨어 자원들(38)은 비-제한적 예들로서 하나 또는 그 초과의 실행 유닛들(48), 예컨대, 부동 소수점 유닛 및/또는 산술 논리 유닛을 포함할 수 있다. 공유 하드웨어 자원들(38)은 또한, 비-제한적 예로서 하나 또는 그 초과의 캐시들(50), 예컨대, 데이터 캐시를 포함할 수 있다.
[0025] 클러스터들(16)의 하드웨어 스레드들(14)은 도 1의 클러스터드 프로세서 코어(10)가 최대 네 개의 소프트웨어 스레드들을 동시에 효과적으로 실행하는 것을 가능하게 한다. 소프트웨어 스레드들의 실행 동안에, 예컨대, 클러스터(16(0))가 클러스터(16(1))에 관하여 차선의 부하 조건을 경험하는 상황들이 발생할 수 있다. 예컨대, 클러스터(16(0))의 하드웨어 스레드들(14(0) 및 14(1))이 높은 부하 조건들 하에서 동작하고 있을 수 있는 반면에 클러스터(16(1))의 하드웨어 스레드들(14(2) 및 14(3))은 (예컨대, 캐시 미스 또는 다른 지연 조건으로 인해 미사용되거나 또는 스톨(stall)되는 것으로 인해) 과소이용될 수 있다. 전력 소모를 감소시키는 것이 클러스터드 프로세서 코어(10)의 우선순위인 양상들의 경우, 단일 클러스터(16)가 양쪽 하드웨어 스레드들(14) 모두를 실행시키고 있다면 절전(power savings)이 구현될 수 있는 상황들에서 클러스터들(16(0) 및 16(1))이 각각 단일 하드웨어 스레드(14)를 실행시키고 있을 때, 차선의 부하 조건이 발생할 수 있다.
[0026] 이에 따라, 동적 부하 밸런싱 회로(12)는 소프트웨어-기반 솔루션들보다 더욱 효율적인 방식으로 하드웨어 스레드들(14) 사이의 동적 부하 밸런싱을 가능하게 하도록 제공된다. 이 점과 관련하여, 동적 부하 밸런싱 회로(12)는 제어 유닛(52)을 포함하고, 이 제어 유닛(52)은 버스(54)를 통해 클러스터(16(0))에 통신가능하게 커플링되고 버스(56)를 통해 클러스터(16(1))에 통신가능하게 커플링된다. 일부 양상들에서, 클러스터들(16(0) 및 16(1))의 부하 조건들에 관련된 부하 데이터(미도시)는 클러스터들(16(0) 및 16(1))에 의해 제어 유닛(52)에 제공될 수 있고, 그리고/또는 버스(54) 및 버스(56)를 통해 제어 유닛(52)에 의해 액티브하게 수집될 수 있다. 부하 데이터는, 비-제한적 예들로서, 프로세서 이용(utilization), 공유 클러스터 자원들(28(0) 및/또는 28(1))의 이용, 실행중인 프로세스들의 개수, 및/또는 클러스터들(16(0) 및 16(1))에 의한 전력 소모를 표시하는 데이터를 포함할 수 있다. 부하 데이터를 분석 및 비교함으로써, 제어 유닛(52)은 클러스터(16(0))의 하드웨어 스레드들(14(0) 및 14(1)) 및 클러스터(16(1))의 하드웨어 스레드들(14(2) 및 14(3))의 부하 조건들을 모니터링할 수 있다. 클러스터들(16) 사이에서의 공유 하드웨어 자원들(38)을 통한 하드웨어 스레드들(14)의 콘텐츠들의 재배치를 용이하게 하기 위하여, 제어 유닛(52)은 또한 버스(58)를 통해 공유 하드웨어 자원들(38)에 통신가능하게 커플링될 수 있다. 이러한 방식으로, 동적 부하 밸런싱 회로(12)는, 소프트웨어 스레드들을 이동시키기 위한 통상적인 소프트웨어-기반 기술들과 비교하여 더욱 신속하고 효율적으로 차선의 부하 조건들을 리졸빙할 수 있다.
[0027] 차선의 부하 조건을 검출하는 것의 결과로서 도 1의 동적 부하 밸런싱 회로(12)에 의한 하나의 클러스터(16)로부터 다른 클러스터로의 하드웨어 스레드(14)의 재배치를 더욱 잘 예시하기 위해, 도 2-도 4가 제공된다. 도 2는 차선의 부하 조건을 일으키는, 하드웨어 스레드들(14)에 의해 호스팅되는 소프트웨어 스레드들(60)의 실행 동안의 클러스터드 프로세서 코어(10)를 예시한다. 도 3은 동적 부하 밸런싱 회로(12)가 클러스터(16(0))로부터 공유 하드웨어 자원들(38)을 통해 클러스터(16(1))로 하드웨어 스레드(14(1))의 콘텐츠들을 재배치시킬 때 클러스터드 프로세서 코어(10) 내에서의 통신 흐름들을 도시한다. 도 4는 하드웨어 스레드(14(1))의 콘텐츠들의 재배치 및 차선의 부하 조건의 레졸루션 이후의 하드웨어 스레드들(14)의 콘텐츠들을 예시한다. 명확성 및 간결성을 위해, 도 2-도 4를 설명할 때 도 1의 엘리먼트들이 인용된다.
[0028] 도 2에서, 클러스터드 프로세서 코어(10)의 공유 하드웨어 자원들(38)은 하드웨어 스레드들(14) 전부에 의해 액세스가능한 데이터 캐시(62)를 포함한다. 도 2의 예에서, 하드웨어 스레드들(14(0)-14(3))은 소프트웨어 스레드들(60(0)-60(3))을 각각 호스팅하고 있다. 하드웨어 스레드들(14(0)-14(3))은, 개개의 값들 "A", "B", "C", 및 "D"를 현재 포함하는 식별자들(26(0)-26(3))과 각각 연관된다. 식별자들(26)은, 소프트웨어, 예컨대, 운영체제가 소프트웨어 스레드들(60(0)-60(3)) 각각을 대응하는 하드웨어 스레드들(14(0)-14(3))에 맵핑할 수 있게 하는 추상 계층으로서의 역할을 한다. 하드웨어 스레드(14(0))의 프라이빗 레지스터(들)(18(0))는 소프트웨어 스레드(60(0))의 현재 콘텍스트를 표현하는 콘텐츠(64(0))를 포함한다. 마찬가지로, 하드웨어 스레드(14(1))의 프라이빗 레지스터(들)(18(1))는 소프트웨어 스레드(60(1))의 현재 콘텍스트를 표현하는 콘텐츠(64(1))를 포함한다. 예시의 목적들을 위해, 콘텐츠(64(0))가 비트 값들 "101010"을 갖는 것으로서 도시되는 반면에 콘텐츠(64(1))는 비트 값들 "010101"을 갖는 것으로서 도시된다.
[0029] 소프트웨어 스레드들(60(0) 및 60(1))은 현재, 이들이 클러스터(16(0))의 하드웨어 스레드들(14(0) 및 14(1)) 상에서 각각 액티브하게 실행되고 있음을 표시하는 "온(ON)"의 스레드 상태(미도시)를 가짐이 이해되어야 한다. 그에 반해서, 클러스터(16(1))의 하드웨어 스레드들(14(2) 및 14(3)) 상의 소프트웨어 스레드들(60(2) 및 60(3))은 실행이 현재 발생하고 있지 않음을 표시하는 "오프(OFF)"의 스레드 상태를 갖는다. 예컨대, 소프트웨어 스레드들(60(2) 및 60(3)) 중 하나 또는 둘 다가 캐시 미스 또는 다른 지연 조건의 결과로서 스톨될 수 있다.
[0030] 그 결과로서, 클러스터(16(0))와 클러스터(16(1)) 사이에 차선의 부하 조건이 존재한다. 클러스터(16(0))는 하드웨어 스레드(14(0)) 상의 소프트웨어 스레드(60(0)) 및 하드웨어 스레드(14(1)) 상의 소프트웨어 스레드(60(1)) 둘 다를 멀티태스킹하도록 강요받고, 이는 공유 클러스터 자원들(28(0))의 과잉이용을 야기한다. 동시에, 클러스터(16(1))의 공유 클러스터 자원들(28(1))은 하드웨어 스레드(14(2)) 상의 소프트웨어 스레드(60(2)) 및 하드웨어 스레드(14(3)) 상의 소프트웨어 스레드(60(3))의 인액티브(inactive) 스레드 상태로 인해 과소이용된다. 클러스터(16(0))와 클러스터(16(1)) 사이의 이러한 차선의 부하 조건은 클러스터드 프로세서 코어(10)가 차선의 레벨로 동작하는 것을 야기할 수 있다.
[0031] 도 3은 클러스터(16(0))와 클러스터(16(1)) 사이의 차선의 부하 조건을 리졸빙하기 위해 동적 부하 밸런싱 회로(12)의 제어 유닛(52)에 의해 취해지는 동작들을 예시한다. 클러스터들(16(0) 및 16(1))의 부하 조건들을 모니터링(화살표들(66 및 68)에 의해 각각 표시됨)함으로써, 제어 유닛(52)은 클러스터(16(0))와 클러스터(16(1)) 사이에 차선의 부하 조건이 존재함을 결정할 수 있다. 이후, 제어 유닛(52)은, 클러스터(16(0))로부터 클러스터(16(1))로의 하드웨어 스레드(14(1))의 콘텐츠들의 재배치를 수행시키기 위해 클러스터들(16(0)) 및/또는 클러스터들(16(1))에 대한 제어 신호들(화살표들(70 및 72)에 의해 표시됨)을 발생할 수 있다. 일부 양상들에서, 제어 유닛(52)은 또한, 재배치를 용이하게 하기 위해 공유 하드웨어 자원들(38)에 대한 제어 신호들(화살표(74)에 의해 표시됨)을 발행할 수 있다.
[0032] 도 3의 예에서, 차선의 부하 조건이 존재하는 것으로 결정된 이후에, 동적 부하 밸런싱 회로(12)의 제어 유닛(52)은 프라이빗 레지스터(들)(18(1))의 콘텐츠(64(1))를 공유 하드웨어 자원들(38)(특히, 데이터 캐시(62))에 전송하도록 하드웨어 스레드(14(1))에게 지시할 수 있다. 이 전송은 화살표(76)에 의해 표현된다. 이후, 콘텐츠(64(1))는 추가로, 데이터 캐시(62)로부터 클러스터(16(1))의 하드웨어 스레드(14(2))의 프라이빗 레지스터(들)(18(2))로 전송(화살표(78)에 의해 표시됨)될 수 있다. 콘텐츠(64(1))가 소프트웨어 스레드(60(1))의 현재 콘텍스트를 표현하기 때문에, 콘텐츠(64(1))를 프라이빗 레지스터(들)(18(2))에 전송하는 것은 소프트웨어 스레드(60(1))를 하드웨어 스레드(14(2))로 효과적으로 재배치시킨다.
[0033] 프라이빗 레지스터(들)(18(1))의 콘텐츠(64(1))의 재배치가 클러스터드 프로세서 코어(10)에 의해 실행되고 있는 운영체제 소프트웨어에 투명함을 보장하기 위해, 제어 유닛(52)은 또한 하드웨어 스레드들(14(1) 및 14(2))의 식별자들(26(1) 및 26(2))을 각각 스와핑한다. 이에 따라, 도 3에 도시된 바와 같이, 하드웨어 스레드(14(1))의 식별자(26(1))의 값은 데이터 캐시(62)를 통해 하드웨어 스레드(14(2))의 식별자(26(2))의 값으로 교환된다(양방향 화살표들(80 및 82)에 의해 표시됨). 운영체제가 소프트웨어 스레드들(60)을 하드웨어 스레드들(14)에 맵핑시키기 위해 식별자들(26)의 값들을 사용하기 때문에, 운영체제는 소프트웨어 스레드들(60)이 실행되고 있는 물리적 자원들이 변경되었음을 모르는 채로 남아 있을 것이다.
[0034] 이제 도 4를 참조하면, 하드웨어 스레드(14(1))의 콘텐츠들의 재배치 이후의 하드웨어 스레드들(14) 및 소프트웨어 스레드들(60)의 상태가 도시된다. 도 4에서, 하드웨어 스레드들(14(0) 및 14(3))은, 앞서와 같이 개개의 값들 "A" 및 "D"를 갖는 식별자들(26(0) 및 26(3))과 각각 연관된다. 그러나, 하드웨어 스레드(14(1))와 연관된 식별자(26(1))가 이제 "C"의 값을 갖는 반면에 하드웨어 스레드(14(2))와 연관된 식별자(26(2))는 "B"의 값을 갖는다. 부가적으로, 하드웨어 스레드(14(2))의 프라이빗 레지스터(들)(18(2))의 콘텐츠(64(2))는 이제, 하드웨어 스레드(14(1))의 프라이빗 레지스터(들)(18(1))의 콘텐츠(64(1))에 앞서 저장된 값들을 포함한다. 그 결과, 소프트웨어 스레드(60(1))는 이제 하드웨어 스레드(14(2))에 의해 호스팅되며, 클러스터(16(1)) 내에서 실행을 계속할 수 있다. 이 지점에서, 클러스터들(16) 각각은 "온(ON)"의 스레드 상태(미도시)를 갖는 하나의 소프트웨어 스레드(60)(즉, 클러스터(16(0))의 소프트웨어 스레드(60(0)) 및 클러스터(16(1))의 소프트웨어 스레드(60(1)))를 포함한다. 각각의 클러스터(16)는 또한, "오프(OFF)"의 스레드 상태를 갖는 하나의 소프트웨어 스레드(60)(즉, 클러스터(16(0))의 소프트웨어 스레드(60(2)) 및 클러스터(16(1))의 소프트웨어 스레드(60(3)))를 포함한다. 이에 따라, 소프트웨어 스레드들(60)을 실행시키는 것으로부터 생기는 프로세싱 부하는 클러스터들(16) 사이에 더욱 균등하게 밸런싱되고, 이는 클러스터드 프로세서 코어(10)의 개선된 성능을 야기한다.
[0035] 도 2-도 4의 예들이 동적 부하 밸런싱 회로(12)가 클러스터들(16)에 걸쳐 프로세싱 부하를 더욱 균등하게 분산시키는 것을 예시하지만, 클러스터드 프로세서 코어(10)의 일부 양상들은 프로세싱 성능을 개선시키는 것보다 전력 소모의 감소가 더 높은 우선순위인 것을 제공할 수 있다. 예컨대, 일부 양상들에서, 동적 부하 밸런싱 회로(12)는 두 개의 액티브 하드웨어 스레드들(14)의 콘텐츠들(64)을 동일한 클러스터(16) 상으로 재배치시킴으로써 클러스터드 프로세싱 코어(10)의 에너지 소모의 잠재적 감소를 검출할 수 있다. 그렇게 함으로써, 동적 부하 밸런싱 회로(12)는 절전을 구현하기 위해 클러스터드 프로세서 코어(10)가 클러스터들(16) 중 하나를 셧다운시키는 것을 가능하게 할 수 있다.
[0036] 공유 하드웨어 자원들(38)을 사용하는 클러스터드 프로세서 코어들(10)의 하드웨어 스레드들(14)의 동적 부하 밸런싱을 위한 예시적 프로세스를 예시하기 위해, 도 5가 제공된다. 도 5를 설명할 때, 도 1-도 4의 엘리먼트들이 명확성을 위해 인용된다. 도 5에서, 동작들은, 동적 부하 밸런싱 회로(12)의 제어 유닛(52)이 클러스터드 프로세서 코어(10)의 제 1 클러스터(16(0))와 제 2 클러스터(16(1)) 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하는 것으로 시작한다(블록(84)). 일부 양상들에서, 차선의 부하 조건이 존재하는지의 여부를 결정하기 위한 블록(84)의 동작들은 제 2 클러스터(16(1))의 과소이용을 검출하는 것을 포함할 수 있다(블록(86)). 일부 양상들은, 차선의 부하 조건이 존재하는지의 여부를 결정하기 위한 블록(84)의 동작들이 클러스터드 프로세서 코어(10)의 에너지 소모의 잠재적 감소를 검출하는 것을 포함함을 제공할 수 있다(블록(88)).
[0037] 이후, 제어 유닛(52)은 그것의 결정에 기초하여 차선의 부하 조건이 존재하는지의 여부를 평가한다(블록(90)). 존재하지 않는다면, 클러스터드 프로세서 코어(10)의 동작들은 계속된다(블록(92)). 그러나, 블록(90)에서 차선의 부하 조건이 존재함이 결정되면, 제어 유닛(52)은 제 1 클러스터(16(0))의 제 1 하드웨어 스레드(14(1))의 하나 또는 그 초과의 프라이빗 레지스터들(18(1))의 콘텐츠(64(1))를 제 2 클러스터(16(1))의 제 2 하드웨어 스레드(14(2))의 하나 또는 그 초과의 프라이빗 레지스터들(18(2))에 전송한다(블록(94)). 전송은 제 1 하드웨어 스레드(14(1)) 및 제 2 하드웨어 스레드(14(2))에 통신가능하게 커플링된 공유 하드웨어 자원들(38)을 통해 수행된다. 제어 유닛(52)은 추가로, 공유 하드웨어 자원들(38)을 통해 제 1 하드웨어 스레드(14(1))와 연관된 제 1 식별자(26(1))를 제 2 하드웨어 스레드(14(2))와 연관된 제 2 식별자(26(2))로 교환한다(블록(96)).
[0038] 본원에 개시된 양상들에 따른 동적 부하 밸런싱 회로(12)는 임의의 프로세서-기반 디바이스에 제공되거나 또는 이에 통합될 수 있다. 예들은, 제한 없이, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크톱 컴퓨터, 퍼스널 디지털 어시스턴트(PDA;personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, 디지털 비디오 디스크(DVD;digital video disc) 플레이어, 및 휴대용 디지털 비디오 플레이어를 포함한다.
[0039] 이 점과 관련하여, 도 6은 도 1에 예시된 동적 부하 밸런싱 회로(12)를 사용할 수 있는 프로세서-기반 시스템(98)의 예를 예시한다. 이 예에서, 프로세서-기반 시스템(98)은 하나 또는 그 초과의 중앙 프로세싱 유닛(CPU)들(100)을 포함하며, 이 하나 또는 그 초과의 중앙 프로세싱 유닛(CPU)들(100) 각각은 도 1의 동적 부하 밸런싱 회로(DLBC;dynamic load balancing circuit)(12)를 포함할 수 있는 하나 또는 그 초과의 프로세서들(102)을 포함한다. CPU(들)(100)는 데이터 또는 명령들에 대한 신속한 액세스를 위해 프로세서(들)(102)에 커플링된 캐시 메모리(104)를 가질 수 있다. CPU(들)(100)는 시스템 버스(106)에 커플링되며, 프로세서-기반 시스템(98)에 포함된 마스터 및 슬래이브 디바이스들을 상호 커플링시킬 수 있다. 잘 알려진 바와 같이, CPU(들)(100)는 시스템 버스(106)를 통하여 어드레스, 제어, 및 데이터 정보를 교환함으로써 이들 다른 디바이스들과 통신한다. 예컨대, CPU(들)(100)는 메모리 유닛들(110(0)-110(N))을 제공하는 메모리 시스템(108)에 버스 트랜잭션 요청들을 통신시킬 수 있다.
[0040] 다른 마스터 및 슬래이브 디바이스들이 시스템 버스(106)에 연결될 수 있다. 도 6에 예시된 바와 같이, 이들 디바이스들은 예들로서 메모리 제어기(112), 하나 또는 그 초과의 입력 디바이스들(114), 하나 또는 그 초과의 출력 디바이스들(116), 하나 또는 그 초과의 네트워크 인터페이스 디바이스들(118), 및 하나 또는 그 초과의 디스플레이 제어기들(120)을 포함할 수 있다. 입력 디바이스(들)(114)는 입력 키들, 스위치들, 음성 프로세서들 등을 비롯한 임의의 타입의 입력 디바이스를 포함할 수 있지만, 이에 제한되지 않는다. 출력 디바이스(들)(116)는 오디오, 비디오, 다른 시각적 표시자들 등을 비롯한 임의의 타입의 출력 디바이스를 포함할 수 있지만, 이에 제한되지 않는다. 네트워크 인터페이스 디바이스(들)(118)는 네트워크(122)로의, 그리고 네트워크(122)로부터의 데이터의 교환을 허용하도록 구성된 임의의 디바이스들일 수 있다. 네트워크(122)는 유선 또는 무선 네트워크, 프라이빗 또는 공중 네트워크, 로컬 영역 네트워크(LAN;local area network), 와이드 로컬 영역 네트워크(WLAN;wide local area network), 및 인터넷을 비롯한 임의의 타입의 네트워크일 수 있지만, 이에 제한되지 않는다. 네트워크 인터페이스 디바이스(들)(118)는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다.
[0041] CPU(들)(100)는 또한, 하나 또는 그 초과의 디스플레이들(124)에 전송되는 정보를 제어하기 위해 시스템 버스(106)를 통하여 디스플레이 제어기(들)(120)에 액세스하도록 구성될 수 있다. 디스플레이 제어기(들)(120)는 하나 또는 그 초과의 비디오 프로세서들(126)을 통해 디스플레이될 정보를 디스플레이(들)(124)에 전송하고, 이 하나 또는 그 초과의 비디오 프로세서들(126)은 디스플레이될 정보를 디스플레이(들)(124)에 적절한 포맷으로 프로세싱한다. 디스플레이(들)(124)는 음극선관(CRT;cathode ray tube), 액정 디스플레이(LCD;liquid crystal display), 플라즈마 디스플레이 등을 비롯한 임의의 타입의 디스플레이를 포함할 수 있지만, 이에 제한되지 않는다.
[0042] 기술분야의 당업자들은 추가로, 본원에 개시된 양상들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 메모리 또는 다른 컴퓨터-판독가능 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스에 의해 실행되는 명령들, 또는 이 둘의 조합들로서 구현될 수 있음을 인식할 것이다. 본원에 설명된 마스터 및 슬래이브 디바이스들은 예들로서 임의의 회로, 하드웨어 컴포넌트, 집적 회로(IC;integrated circuit), 또는 IC 칩에서 사용될 수 있다. 본원에 개시된 메모리는 임의의 타입 및 사이즈의 메모리일 수 있고, 원하는 임의의 타입의 정보를 저장하도록 구성될 수 있다. 이러한 상호교환성을 명확하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그들의 기능성 면에서 위에서 설명되었다. 이러한 기능성이 어떻게 구현되는지는 특정한 애플리케이션, 설계 선택들, 및/또는 전체 시스템에 부과된 설계 제약들에 따라 좌우된다. 당업자들은 설명된 기능성을 각각의 특정한 애플리케이션에 대해 다양한 방식들로 구현할 수있지만, 이러한 구현 결정들이 본 개시 내용의 범위를 벗어나게 하는 것으로 해석되어서는 안된다.
[0043] 본원에 개시된 양상들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 프로세서, 디지털 신호 프로세서(DSP;Digital Signal Processor), 주문형 집적 회로(ASIC;Application Specific Integrated Circuit), 필드 프로그래머블 게이트 어레이(FPGA;Field Programmable Gate Array) 또는 다른 프로그래머블 논리 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 통상적인 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 연결된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0044] 본원에 개시된 양상들은 하드웨어로 그리고 하드웨어에 저장되는 명령들로 구현될 수 있고, 예컨대, 랜덤 액세스 메모리(RAM;Random Access Memory), 플래시 메모리, 판독 전용 메모리(ROM;Read Only Memory), 전기 프로그래머블 ROM(EPROM;Electrically Programmable ROM), 전기 삭제가능 프로그래머블 ROM(EEPROM;Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 탈착가능 디스크, CD-ROM, 또는 기술분야에서 알려진 임의의 다른 형태의 컴퓨터 판독가능 매체에 상주할 수 있다. 예시적 저장 매체가 프로세서에 커플링되어, 이 프로세서는 저장 매체로부터 정보를 리드하고 정보를 저장 매체에 라이트할 수 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC는 원격 스테이션에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격 스테이션, 기지국, 또는 서버에서 이산 컴포넌트들로서 상주할 수 있다.
[0045] 또한, 본원에서 예시적 양상들 중 임의의 양상에서 설명된 동작 단계들이 예들 및 논의를 제공하기 위해 설명됨이 주목된다. 설명된 동작들은 예시된 시퀀스들 이외의 많은 상이한 시퀀스들로 수행될 수 있다. 또한, 단일 동작 단계로 설명된 동작들은 실제로 다수의 상이한 단계들로 수행될 수 있다. 부가적으로, 예시적 양상들에서 논의된 하나 또는 그 초과의 동작 단계들은 결합될 수 있다. 기술분야의 당업자에게 쉽게 명백할 바와 같이, 흐름 차트 다이어그램들에서 예시된 동작 단계들이 많은 상이한 수정들의 대상일 수 있음이 이해되어야 한다. 또한, 기술분야의 당업자들은 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있음을 이해할 것이다. 예컨대, 위의 설명 전체에 걸쳐 지칭될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기 필드들 또는 입자들, 광학 필드들 또는 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
[0046] 본 개시 내용에 대한 이전 설명은 기술분야의 당업자가 본 개시 내용을 실시하거나 또는 사용하는 것을 가능하게 하기 위해 제공된다. 본 개시 내용에 대한 다양한 수정들은 기술분야의 당업자들에게 쉽게 명백할 것이고, 본 개시 내용의 사상 또는 범위로부터 벗어나지 않고, 본원에 정의된 일반적인 원리들이 다른 변형들에 적용될 수 있다. 따라서, 본 개시 내용은 본원에 설명된 예들 및 설계들로 제한되도록 의도된 것이 아니라, 본원에 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 부합할 것이다.

Claims (24)

  1. 동적 부하 밸런싱 회로로서,
    클러스터드 프로세서 코어(clustered processor core)의 하나 이상의 하드웨어 스레드들의 제 1 클러스터 및 하나 이상의 하드웨어 스레드들의 제 2 클러스터에 통신가능하게 커플링된 제어 유닛을 포함하고,
    상기 제어 유닛은,
    상기 제 1 클러스터와 상기 제 2 클러스터 사이에 차선의(suboptimal) 부하 조건이 존재하는지의 여부를 결정하고; 그리고
    상기 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로,
    상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 1 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들의 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 2 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들에, 상기 제 1 하드웨어 스레드 및 상기 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하고; 그리고
    상기 공유 하드웨어 자원들을 통해 상기 제 1 하드웨어 스레드와 연관된 제 1 식별자를 상기 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하도록
    구성되는,
    동적 부하 밸런싱 회로.
  2. 제 1 항에 있어서,
    상기 공유 하드웨어 자원들은 실행 유닛 또는 캐시, 또는 이들의 조합들을 포함하는,
    동적 부하 밸런싱 회로.
  3. 제 1 항에 있어서,
    상기 제어 유닛은, 상기 제 2 클러스터의 과소이용(underutilization)을 검출함으로써, 상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하도록 구성되는,
    동적 부하 밸런싱 회로.
  4. 제 1 항에 있어서,
    상기 제어 유닛은, 상기 클러스터드 프로세서 코어의 에너지 소모의 잠재적 감소를 검출함으로써, 상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하도록 구성되는,
    동적 부하 밸런싱 회로.
  5. 제 1 항에 있어서,
    상기 제어 유닛은, 프로세서 이용(utilization), 공유 클러스터 자원들의 이용, 실행중인 프로세스들의 개수, 또는 상기 제 1 클러스터 및 상기 제 2 클러스터에 의한 전력 소모 중 하나 또는 그 초과를 표시하는 부하 데이터에 기초하여, 상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하도록 구성되는,
    동적 부하 밸런싱 회로.
  6. 제 1 항에 있어서,
    상기 제어 유닛은, 하나 이상의 범용 레지스터(GPR;General Purpose Register)들의 콘텐츠 또는 하나 이상의 제어 레지스터들의 콘텐츠, 또는 이들의 조합들을 전송함으로써, 상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 1 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들의 상기 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 2 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들에 전송하도록 구성되는,
    동적 부하 밸런싱 회로.
  7. 제 6 항에 있어서,
    상기 하나 이상의 제어 레지스터들은 상기 제 1 하드웨어 스레드와 연관된 상기 제 1 식별자 및 상기 제 2 하드웨어 스레드와 연관된 상기 제 2 식별자를 포함하고,
    상기 제 1 하드웨어 스레드와 연관된 상기 제 1 식별자는 제 1 소프트웨어 스레드를 상기 제 1 하드웨어 스레드에 맵핑시키고, 그리고
    상기 제 2 하드웨어 스레드와 연관된 상기 제 2 식별자는 제 2 소프트웨어 스레드를 상기 제 2 하드웨어 스레드에 맵핑시키는,
    동적 부하 밸런싱 회로.
  8. 제 1 항에 있어서,
    상기 동적 부하 밸런싱 회로는 집적 회로에 통합되는,
    동적 부하 밸런싱 회로.
  9. 제 1 항에 있어서,
    상기 동적 부하 밸런싱 회로는, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크톱 컴퓨터, 퍼스널 디지털 어시스턴트(PDA;personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, 디지털 비디오 디스크(DVD;digital video disc) 플레이어, 및 휴대용 디지털 비디오 플레이어로 구성된 그룹으로부터 선택되는 디바이스에 통합되는,
    동적 부하 밸런싱 회로.
  10. 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 동적 부하 밸런싱 회로로서,
    클러스터드 프로세서 코어의 하나 이상의 하드웨어 스레드들의 제 1 클러스터와 하나 이상의 하드웨어 스레드들의 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하기 위한 수단;
    상기 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 1 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들의 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 2 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들에, 상기 제 1 하드웨어 스레드 및 상기 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하기 위한 수단; 및
    상기 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로, 상기 공유 하드웨어 자원들을 통해 상기 제 1 하드웨어 스레드와 연관된 제 1 식별자를 상기 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하기 위한 수단
    을 포함하는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 동적 부하 밸런싱 회로.
  11. 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법으로서,
    클러스터드 프로세서 코어의 하나 이상의 하드웨어 스레드들의 제 1 클러스터와 하나 이상의 하드웨어 스레드들의 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하는 단계; 및
    상기 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로,
    상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 1 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들의 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 2 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들에, 상기 제 1 하드웨어 스레드 및 상기 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하는 단계; 및
    상기 공유 하드웨어 자원들을 통해 상기 제 1 하드웨어 스레드와 연관된 제 1 식별자를 상기 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하는 단계
    를 포함하는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법.
  12. 제 11 항에 있어서,
    상기 공유 하드웨어 자원들은 실행 유닛 또는 캐시, 또는 이들의 조합들을 포함하는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법.
  13. 제 11 항에 있어서,
    상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하는 단계는 상기 제 2 클러스터의 과소이용을 검출하는 단계를 포함하는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법.
  14. 제 11 항에 있어서,
    상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하는 단계는 상기 클러스터드 프로세서 코어의 에너지 소모의 잠재적 감소를 검출하는 단계를 포함하는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법.
  15. 제 11 항에 있어서,
    상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하는 단계는 프로세서 이용, 공유 클러스터 자원들의 이용, 실행중인 프로세스들의 개수, 또는 상기 제 1 클러스터 및 상기 제 2 클러스터에 의한 전력 소모 중 하나 또는 그 초과를 표시하는 부하 데이터에 기초하는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법.
  16. 제 11 항에 있어서,
    상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 1 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들의 상기 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 2 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들에 전송하는 단계는 하나 이상의 범용 레지스터(GPR;General Purpose Register)들의 콘텐츠 또는 하나 이상의 제어 레지스터들의 콘텐츠, 또는 이들의 조합들을 전송하는 단계를 포함하는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법.
  17. 제 16 항에 있어서,
    상기 하나 이상의 제어 레지스터들은 상기 제 1 하드웨어 스레드와 연관된 상기 제 1 식별자 및 상기 제 2 하드웨어 스레드와 연관된 상기 제 2 식별자를 포함하고,
    상기 제 1 하드웨어 스레드와 연관된 상기 제 1 식별자는 제 1 소프트웨어 스레드를 상기 제 1 하드웨어 스레드에 맵핑시키고, 그리고
    상기 제 2 하드웨어 스레드와 연관된 상기 제 2 식별자는 제 2 소프트웨어 스레드를 상기 제 2 하드웨어 스레드에 맵핑시키는,
    클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱을 제공하기 위한 방법.
  18. 컴퓨터 판독가능 저장 매체로서,
    실행될 때, 프로세서로 하여금,
    클러스터드 프로세서 코어의 하나 이상의 하드웨어 스레드들의 제 1 클러스터와 하나 이상의 하드웨어 스레드들의 제 2 클러스터 사이에 차선의 부하 조건이 존재하는지의 여부를 결정하게 하고; 그리고
    상기 차선의 부하 조건이 존재함을 결정하는 것에 대한 응답으로,
    상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 1 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들의 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 제 2 하드웨어 스레드의 하나 이상의 프라이빗 레지스터들에, 상기 제 1 하드웨어 스레드 및 상기 제 2 하드웨어 스레드에 통신가능하게 커플링된 공유 하드웨어 자원들을 통해 전송하게 하고; 그리고
    상기 공유 하드웨어 자원들을 통해 상기 제 1 하드웨어 스레드와 연관된 제 1 식별자를 상기 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하게 하는
    컴퓨터 실행가능 명령들을 저장하고 있는,
    컴퓨터 판독가능 저장 매체.
  19. 제 18 항에 있어서,
    상기 프로세서로 하여금,
    상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 1 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들의 상기 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 2 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들에, 실행 유닛 또는 캐시, 또는 이들의 조합들을 통해 전송하게 하고; 그리고
    상기 실행 유닛 또는 상기 캐시, 또는 이들의 조합들을 통해 상기 제 1 하드웨어 스레드와 연관된 제 1 식별자를 상기 제 2 하드웨어 스레드와 연관된 제 2 식별자로 교환하게 하는
    컴퓨터-실행가능 명령들을 저장하고 있는,
    컴퓨터 판독가능 저장 매체.
  20. 제 18 항에 있어서,
    상기 프로세서로 하여금, 상기 제 2 클러스터의 과소이용을 검출함으로써, 상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하게 하는 컴퓨터-실행가능 명령들을 저장하고 있는,
    컴퓨터 판독가능 저장 매체.
  21. 제 18 항에 있어서,
    상기 프로세서로 하여금, 상기 클러스터드 프로세서 코어의 에너지 소모의 잠재적 감소를 검출함으로써, 상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하게 하는 컴퓨터-실행가능 명령들을 저장하고 있는,
    컴퓨터 판독가능 저장 매체.
  22. 제 18 항에 있어서,
    상기 프로세서로 하여금, 프로세서 이용, 공유 클러스터 자원들의 이용, 실행중인 프로세스들의 개수, 또는 상기 제 1 클러스터 및 상기 제 2 클러스터에 의한 전력 소모 중 하나 또는 그 초과를 표시하는 부하 데이터에 기초하여, 상기 제 1 클러스터와 상기 제 2 클러스터 사이에 상기 차선의 부하 조건이 존재하는지의 여부를 결정하게 하는 컴퓨터-실행가능 명령들을 저장하고 있는,
    컴퓨터 판독가능 저장 매체.
  23. 제 18 항에 있어서,
    상기 프로세서로 하여금, 하나 이상의 범용 레지스터(GPR;General Purpose Register)들의 콘텐츠 또는 하나 이상의 제어 레지스터들의 콘텐츠, 또는 이들의 조합들을 전송함으로써, 상기 제 1 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 1 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들의 상기 콘텐츠를 상기 제 2 클러스터의 상기 하나 이상의 하드웨어 스레드들 중 상기 제 2 하드웨어 스레드의 상기 하나 이상의 프라이빗 레지스터들에 전송하게 하는 컴퓨터-실행가능 명령들을 저장하고 있는,
    컴퓨터 판독가능 저장 매체.
  24. 제 23 항에 있어서,
    상기 프로세서로 하여금, 상기 제 1 하드웨어 스레드와 연관된 상기 제 1 식별자 및 상기 제 2 하드웨어 스레드와 연관된 상기 제 2 식별자를 포함하는 상기 하나 이상의 제어 레지스터들의 콘텐츠를 전송하게 하는 컴퓨터-실행가능 명령들을 저장하고 있고,
    상기 제 1 하드웨어 스레드와 연관된 상기 제 1 식별자는 제 1 소프트웨어 스레드를 상기 제 1 하드웨어 스레드에 맵핑시키고, 그리고
    상기 제 2 하드웨어 스레드와 연관된 상기 제 2 식별자는 제 2 소프트웨어 스레드를 상기 제 2 하드웨어 스레드에 맵핑시키는,
    컴퓨터 판독가능 저장 매체.

KR1020167030999A 2014-05-07 2015-04-20 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어 KR102239229B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/271,812 US11200058B2 (en) 2014-05-07 2014-05-07 Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media
US14/271,812 2014-05-07
PCT/US2015/026634 WO2015171295A1 (en) 2014-05-07 2015-04-20 Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media

Publications (2)

Publication Number Publication Date
KR20170002418A KR20170002418A (ko) 2017-01-06
KR102239229B1 true KR102239229B1 (ko) 2021-04-09

Family

ID=53008938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167030999A KR102239229B1 (ko) 2014-05-07 2015-04-20 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어

Country Status (6)

Country Link
US (1) US11200058B2 (ko)
EP (1) EP3140728B1 (ko)
JP (1) JP6622715B2 (ko)
KR (1) KR102239229B1 (ko)
CN (1) CN106462394B (ko)
WO (1) WO2015171295A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10331454B2 (en) * 2016-09-29 2019-06-25 Intel Corporation System and method for load balancing in out-of-order clustered decoding
CN108038006B (zh) * 2017-11-14 2022-02-08 北京小鸟看看科技有限公司 头戴显示设备的控制方法、设备及系统
CN113168389B (zh) * 2018-12-28 2023-03-31 华为技术有限公司 用于锁定具有非透明桥接的PCIe网络的装置和方法
US20210073027A1 (en) * 2019-09-11 2021-03-11 Silicon Laboratories Inc. Multi-Thread Wireless Communications Processor with Granular Thread Processes
CN111679906B (zh) * 2020-05-11 2023-07-18 长沙天仪空间科技研究院有限公司 统一分配顶层资源并复用的卫星平台和载荷复用方法
US20220171663A1 (en) * 2020-11-30 2022-06-02 Netapp, Inc. Systems and Methods for Resource Lifecycle Management
US20230099989A1 (en) * 2021-09-24 2023-03-30 Intel Corporation Scalable toggle point control circuitry for a clustered decode pipeline
CN115857418B (zh) * 2023-02-28 2023-05-02 深圳华龙讯达信息技术股份有限公司 一种基于耦合设计的可编程逻辑控制系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146513A1 (en) 2008-12-09 2010-06-10 Intel Corporation Software-based Thread Remapping for power Savings
US20110191776A1 (en) 2010-02-02 2011-08-04 International Business Machines Corporation Low overhead dynamic thermal management in many-core cluster architecture
US20140109098A1 (en) 2012-10-17 2014-04-17 Renesas Electronics Corporation Multi-thread processor

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3696901B2 (ja) 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
JP2004220070A (ja) 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
JP2006139495A (ja) 2004-11-11 2006-06-01 Seiko Epson Corp 演算処理装置
US8495649B2 (en) * 2006-07-19 2013-07-23 International Business Machines Corporation Scheduling threads having complementary functional unit usage on SMT processors
US7444459B2 (en) 2006-12-12 2008-10-28 Lsi Logic Corporation Methods and systems for load balancing of virtual machines in clustered processors using storage related load information
US8046566B2 (en) * 2007-05-14 2011-10-25 International Business Machines Corporation Method to reduce power consumption of a register file with multi SMT support
KR100962531B1 (ko) 2007-12-11 2010-06-15 한국전자통신연구원 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법
US8806491B2 (en) 2007-12-31 2014-08-12 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
CN101446910B (zh) 2008-12-08 2011-06-22 哈尔滨工程大学 基于smp的高级最早期限优先算法任务调度方法
CN101788922B (zh) * 2009-01-22 2013-12-25 国际商业机器公司 基于辅助线程实现事务存储系统的方法和装置
US8346509B2 (en) * 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
US20110055838A1 (en) 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
JP5531679B2 (ja) 2010-03-04 2014-06-25 日本電気株式会社 Smt対応cpuを有する情報処理装置の消費電力低減方法、消費電力低減装置及び消費電力低減プログラム
US8413158B2 (en) 2010-09-13 2013-04-02 International Business Machines Corporation Processor thread load balancing manager
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
US8990833B2 (en) 2011-12-20 2015-03-24 International Business Machines Corporation Indirect inter-thread communication using a shared pool of inboxes
US20130332778A1 (en) 2012-06-07 2013-12-12 Vmware, Inc. Performance-imbalance-monitoring processor features
US20140173623A1 (en) * 2012-12-17 2014-06-19 Mediatek Inc. Method for controlling task migration of task in heterogeneous multi-core system based on dynamic migration threshold and related computer readable medium
CN103617088B (zh) 2013-11-29 2018-07-24 深圳中微电科技有限公司 在不同类型线程中分配内核资源的方法、装置及其处理器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146513A1 (en) 2008-12-09 2010-06-10 Intel Corporation Software-based Thread Remapping for power Savings
US20110191776A1 (en) 2010-02-02 2011-08-04 International Business Machines Corporation Low overhead dynamic thermal management in many-core cluster architecture
US20140109098A1 (en) 2012-10-17 2014-04-17 Renesas Electronics Corporation Multi-thread processor

Also Published As

Publication number Publication date
CN106462394B (zh) 2019-04-05
EP3140728A1 (en) 2017-03-15
WO2015171295A1 (en) 2015-11-12
US20150324239A1 (en) 2015-11-12
CN106462394A (zh) 2017-02-22
JP2017515232A (ja) 2017-06-08
JP6622715B2 (ja) 2019-12-18
US11200058B2 (en) 2021-12-14
KR20170002418A (ko) 2017-01-06
EP3140728B1 (en) 2020-07-29

Similar Documents

Publication Publication Date Title
KR102239229B1 (ko) 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
TWI496076B (zh) 上下文狀態管理技術
TWI633489B (zh) 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體
US10296335B2 (en) Apparatus and method for configuring sets of interrupts
US20160259645A1 (en) Register renaming in block-based instruction set architecture
US9830163B2 (en) Control flow in a heterogeneous computer system
JP2017515232A5 (ko)
EP3224727B1 (en) Generating approximate usage measurements for shared cache memory systems
WO2016202153A1 (zh) 一种gpu资源的分配方法及系统
TWI701590B (zh) 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法
EP2856304B1 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
US20170046167A1 (en) Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)
US20240045736A1 (en) Reordering workloads to improve concurrency across threads in processor-based devices
CN116627640A (zh) 任务调度单元、晶圆级芯片、计算装置和任务调度方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant