KR20160099587A - 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화 - Google Patents

증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화 Download PDF

Info

Publication number
KR20160099587A
KR20160099587A KR1020167017000A KR20167017000A KR20160099587A KR 20160099587 A KR20160099587 A KR 20160099587A KR 1020167017000 A KR1020167017000 A KR 1020167017000A KR 20167017000 A KR20167017000 A KR 20167017000A KR 20160099587 A KR20160099587 A KR 20160099587A
Authority
KR
South Korea
Prior art keywords
processor
processor cores
core
cores
priority
Prior art date
Application number
KR1020167017000A
Other languages
English (en)
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 KR20160099587A publication Critical patent/KR20160099587A/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Microcomputers (AREA)

Abstract

양태들은 프로세서 코어들을 마모-평준화 (wear-leveling) 함으로써 동작 수명을 증가시키고 디바이스 성능을 최대화하기 위하여, 멀티-코어 프로세싱 시스템에서 프로세서 코어들에 대한 태스크들의 배정을 조절하기 위한 디바이스들, 시스템들, 및 방법들을 포함한다. 신뢰성 엔진은 동일한 목적을 위하여 구성된 등가적인 프로세서 코어들의 그룹에 대한 열 출력 및 전류 누설, 및 이력 동작 시간의 동작 또는 내장 자체 테스트 데이터를 수집하도록 구성될 수도 있다. 수집된 데이터는 그룹에서 각각의 등가적인 프로세서 코어에 대한 우선순위들을 결정하기 위하여 가중화된 함수에 적용될 수도 있다. 신뢰성 엔진은 등가적인 프로세서 코어들의 우선순위들에 따라 가상적 프로세서 식별정보 변환 테이블을 재배열할 수도 있다. 하이 레벨 오퍼레이팅 시스템은 프로세서 코어를 특정하는 프로세스 요청을 발행할 수도 있고, 특정된 프로세서 코어는 우선순위들에 의해 기술된 프로세서 코어들의 순서에 따라 상이한 프로세서 코어로 변환될 수도 있다.

Description

증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화{RUNTIME OPTIMIZATION OF MULTI-CORE SYSTEM DESIGNS FOR INCREASED OPERATING LIFE AND MAXIMIZED PERFORMANCE}
관련된 출원들
이 출원은, 그 전체 내용들이 모든 목적들을 위하여 참조에 의해 본원에 편입되는, 2013 년 12 월 18 일자로 출원된 "Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance (증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화)" 라는 명칭의 미국 가출원 제 61/917,487 호에 대한 우선권의 이익을 주장한다.
고성능 디지털 시스템의 동작 수명은 부분적으로, 시스템의 컴포넌트들의 가열 및 냉각 사이클들의 함수이다. 시스템의 컴포넌트들의 고장은 시스템을 무력하게 할 수 있거나 동작불가능하게 할 수 있다. 하나의 이러한 컴포넌트는 멀티-코어 프로세서의 개별적인 프로세서 코어들을 포함하는 시스템의 프로세서이다. 일정한 그리고 극단적인 열 사이클링 (thermal cycling) 이 발생할 때, 시스템의 컴포넌트들의 동작 수명은 컴포넌트의 다이 (die), 패키징 (packaging), 또는 본드 (bond) 들에 대한 물리적 손상의 결과로 감소될 수 있다.
대형 제조 로트 (manufacturing lot) 들에서 생산되는 프로세서들과 같은 전자 컴포넌트들은 소정의 동작 상태에 대해 단위 시간 당 이용되는 전류의 양에 있어서 차이들로 이어지는 그 내부 저항에 있어서의 차이들을 나타내는 경향이 있다. 이러한 제조 가변성으로 인해, 컴퓨팅 디바이스에서 하나를 초과하는 이러한 컴포넌트가 있을 경우, 이들 중의 하나 또는 몇몇은 다른 것들보다 더 큰 전류 사용량 (current usage) 을 가질 가능성이 있고, 따라서, 본원에서는 "더 높은 누설 컴포넌트들" 로서 지칭된다. 더 높은 누설 컴포넌트들은 그 더 낮은 누설 대응부들에 비해 더 낮은 성능 레벨들을 나타내는 경향이 있다. 더 높은 누설 컴포넌트들은 또한, 더 높은 내부 저항으로 인해 더 낮은 누설 컴포넌트들보다 더 높은 온도들에서 실행되는 경향이 있다. 더 높은 누설 컴포넌트들의 더 높은 온도들은 더 낮은 누설 컴포넌트들에 비해 감소된 동작 수명으로 이어질 수도 있다. 열 사이클링은 시간 경과에 따라 컴포넌트들의 누설 특성들을 변경할 수도 있고, 이에 따라, 동작 온도 및 동작 수명에 있어서의 차이들은 컴퓨팅 디바이스가 노후화됨에 따라 증가할 수도 있다.
다양한 양태들의 방법들 및 장치들은 멀티-코어 프로세서의 동작 수명을 연장하기 위하여 프로세싱 태스크 (processing task) 들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하기 위한 회로들 및 방법들을 제공한다. 양태의 방법들은 멀티-코어 프로세서 내의 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 단계, 마모에 관련된 획득된 정보에 기초하여 프로세서 코어들의 각각에 대한 우선순위를 계산하는 단계, 및 계산된 우선순위에 기초하여 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 단계를 포함할 수도 있다. 일 양태에서, 멀티-코어 프로세서 내의 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 단계는, 정상 동작들 하에서 프로세서 코어들의 온도, 누적 사용량, 및 전류 누설 중의 하나 이상을 측정하는 단계를 포함할 수도 있다. 일 양태에서, 멀티-코어 프로세서 내의 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 단계는, 프로세서 코어들이 활성인지 여부를 결정하는 단계, 프로세서 코어들이 비활성인 것으로 결정하는 것에 응답하여, 테스트 작업부하 (test workload) 를 프로세서 코어들의 각각에 제공하는 단계, 테스트 작업부하를 제공하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 테스트 작업부하 하에서 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 단계, 프로세서 코어들이 활성인 것으로 결정하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 정상 동작 하에서 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 단계, 및 프로세서 코어들의 각각에 대한 이력 동작 시간을 취출 (retrieve) 하는 단계를 포함할 수도 있다.
일 양태에서, 마모에 관련된 획득된 정보에 기초하여 프로세서 코어들의 각각에 대한 우선순위를 계산하는 단계는, 가중화 인자들을, 측정된 열 출력, 측정된 전류 누설, 및 이력 동작 시간과 승산함으로써, 그리고 곱셈들을 합산함으로써, 프로세서 코어들의 각각에 대한 우선순위를 계산하는 단계를 포함할 수도 있다. 일 양태의 방법은 네트워크 접속 상에서 업데이트된 가중화 인자들을 수신하는 단계, 및 업데이트된 가중화 인자들로 프로세서 코어들의 각각에 대한 우선순위를 계산할 시에 이용된 가중화 인자들을 업데이트하는 단계를 포함할 수도 있다.
일 양태에서, 계산된 우선순위에 기초하여 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 단계는, 제 1 프로세서 코어에 대한 제 1 가상적 식별자 (virtual identifier) 를 특정하는 하이 레벨 오퍼레이팅 시스템 (high level operating system) 으로부터 프로세스 요청을 수신하는 단계, 프로세스 요청을 제 2 프로세서 코어에 맵핑하는 단계, 및 제 1 프로세서 코어가 프로세스 요청의 결과를 생성한 것처럼, 프로세스 요청의 결과를 하이 레벨 오퍼레이팅 시스템에 반환하는 단계를 포함할 수도 있다.
일 양태의 방법은 프로세서 코어들 중의 임의의 것에 대한 이력 동작 시간이 동작 시간 임계점을 초과하는지 여부를 결정하는 단계, 동작 시간 임계점을 초과하는 그 프로세서 코어들을 프로세서 코어들의 제 1 그룹으로 그룹화하고, 동작 시간 임계점을 초과하지 않는 그 프로세서 코어들을 프로세서 코어들의 제 2 그룹으로 그룹화하는 단계, 및 프로세서 코어들의 제 2 그룹에 대한 연관성들과는 별도로, 프로세서 코어들의 제 1 그룹에 대한 프로세서 코어들의 각각에 대해 계산된 우선순위들에 따라 프로세서 코어들의 각각에 대한 가상적 식별자들과, 프로세서 코어들의 각각과의 사이의 연관성들을 순서화하는 단계를 포함할 수도 있다.
일 양태에서, 계산된 우선순위에 기초하여 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 단계는, 프로세서 코어들의 각각에 대해 계산된 우선순위들에 따라 프로세서 코어들의 각각에 대한 가상적 식별자들과 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하는 단계, 프로세서 코어들의 각각에 대한 가상적 식별자들과 물리적 식별자들 사이의 순서화된 연관성들에 따라 하이 레벨 오퍼레이팅 시스템으로부터 수신된 프로세스 요청들을 맵핑하는 단계, 및 하이 레벨 오퍼레이팅 시스템에 의해 식별된 프로세서 코어들이 프로세스 요청들의 결과들을 생성하였던 것처럼, 프로세스 요청의 결과들을 하이 레벨 오퍼레이팅 시스템에 반환하는 단계를 포함할 수도 있다.
일 양태의 방법은 프로세서 코어들 중의 임의의 것에 대한 이력 동작 시간이 동작 시간 임계점을 초과하는지 여부를 결정하는 단계, 및 동작 시간 임계점을 초과하는 그 프로세서 코어들을 프로세서 코어들의 제 1 그룹으로 그룹화하고, 동작 시간 임계점을 초과하지 않는 그 프로세서 코어들을 프로세서 코어들의 제 2 그룹으로 그룹화하는 단계를 포함할 수도 있고, 프로세서 코어들의 각각에 대해 계산된 우선순위들에 따라 프로세서 코어들의 각각에 대한 가상적 식별자들과, 프로세서 코어들의 각각에 대한 물리적 식별자들과의 사이의 연관성들을 순서화하는 단계는, 프로세서 코어들의 제 2 그룹에 대한 연관성들과 별도로 프로세서 코어들의 제 1 그룹에 대한 연관성들을 순서화하는 단계를 포함한다.
일 양태는 멀티-코어 프로세서가 상기 설명된 양태의 방법들 중의 하나 이상의 방법의 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는 다수의 프로세서 코어들을 가지는 멀티-코어 프로세서를 포함하는 장치를 포함한다.
일 양태는 상기 설명된 양태의 방법들 중의 하나 이상의 방법의 기능들을 수행하기 위한 수단을 포함하는 다수의 프로세서 코어들을 갖는 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스를 포함한다.
일 양태는 멀티-코어 프로세서로 하여금, 상기 설명된 양태의 방법들 중의 하나 이상의 방법의 동작들을 수행하게 하도록 구성된 프로세서-실행가능 명령들을 저장한 비-일시적 프로세서-판독가능 매체를 포함한다.
본원에 편입되며 이 명세서의 일부를 구성하는 첨부한 도면들은 발명의 일 예의 양태들을 예시하고, 위에서 주어진 일반적인 설명 및 이하에서 주어진 상세한 설명과 함께, 발명의 특징들을 설명하도록 작용한다.
도 1 은 일 양태를 구현하기 위해 적당한 일 예의 컴퓨팅 디바이스의 컴포넌트 블록도이다.
도 2 는 일 양태를 구현하기 위해 적당한 일 예의 멀티-코어 프로세서의 컴포넌트 블록도이다.
도 3 은 일 양태를 구현하기 위해 적당한 시스템-온-칩 (system-on-chip) 의 기능 및 컴포넌트 블록도이다.
도 4 는 일 양태에 따라, 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화를 위하여, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 하드웨어 프로세서 코어 우선순위에 관련시키는 일 예의 표이다.
도 5 는 프로세서 코어들에 대한 우선순위들을 결정하기 위한 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 6 은 프로세서 코어 우선순위들을 언제 업데이트할 것인지를 결정하기 위한 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 7 은 테스트/동작 데이터를 수집하고 프로세서 코어 우선순위들을 계산하기 위한 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 8 은 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 하드웨어 프로세서 코어 우선순위로 변환하기 위한 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 9 는 동작 경험에 기초하여 코어 우선순위들을 결정할 시에 이용하기 위한 가중화 값들을 업데이트하기 위한 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 10 은 동작 경험에 기초하여 코어 우선순위들을 결정할 시에 이용하기 위한 가중화 값들을 업데이트하기 위한 일 양태의 방법을 예시하는 프로세스 흐름도이다.
도 11 은 다양한 양태들과 함께 이용하기 위해 적당한 컴퓨팅 디바이스의 예를 예시하는 컴포넌트 블록도이다.
도 12 는 다양한 양태들과 함께 이용하기 위해 적당한 또 다른 예의 컴퓨팅 디바이스를 예시하는 컴포넌트 블록도이다.
도 13 은 다양한 양태들과 함께 이용하기 위해 적당한 일 예의 서버 디바이스를 예시하는 컴포넌트 블록도이다.
다양한 양태들은 첨부한 도면들을 참조하여 상세하게 설명될 것이다. 가능한 경우마다, 동일한 참조 번호들은 동일하거나 유사한 부분들을 지칭하기 위하여 도면들의 전반에 걸쳐 이용될 것이다. 특정한 예들 및 구현예들에 대해 행해진 참조들은 예시적인 목적들을 위한 것이고, 발명 또는 청구항들의 범위를 제한하도록 의도된 것은 아니다.
용어들 "컴퓨팅 디바이스" 는 셀룰러 전화들, 스마트폰들, 개인용 또는 이동 멀티-미디어 플레이어들, 개인 정보 단말 (personal data assistant; PDA) 들, 개인용 컴퓨터들, 랩톱 컴퓨터 (laptop computer) 들, 태블릿 컴퓨터 (tablet computer) 들, 스마트북 (smartbook) 들, 울트라북 (ultrabook) 들, 팜-톱 컴퓨터 (palm-top computer) 들, 무선 전자 메일 수신기들, 데스크톱 컴퓨터 (desktop computer) 들, 연산 서버들, 데이터 서버들, 통신 기반구조 랙 서버 (telecommunication infrastructure rack server) 들, 비디오 분배 서버들, 애플리케이션 특정 서버들과, 메모리, 및 하나 이상의 프로그래밍가능 멀티-코어 프로세서들을 포함하는 유사한 개인용 또는 상업용 전자 디바이스들 중의 임의의 하나 또는 전부를 지칭하기 위하여 본원에서 이용된다.
용어들 "시스템-온-칩" (SoC) 및 "집적 회로" 는 전형적으로, 그러나 배타적이지는 않게, 다수의 하드웨어 코어들, 메모리, 및 통신 인터페이스를 포함하는 상호접속된 전자 회로들의 세트를 지칭하기 위하여 본원에서 상호 교환가능하게 이용된다. 하드웨어 코어들은 범용 멀티-코어 프로세서, 멀티-코어 중앙 프로세싱 유닛 (central processing unit; CPU), 멀티-코어 디지털 신호 프로세서 (digital signal processor; DSP), 멀티-코어 그래픽 프로세싱 유닛 (graphics processing unit; GPU), 멀티-코어 가속된 프로세싱 유닛 (accelerated processing unit; APU), 및 멀티-코어 보조 프로세서와 같은 다양한 상이한 타입들의 프로세서들을 포함할 수도 있다. 하드웨어 코어는 필드 프로그래밍가능 게이트 어레이 (field programmable gate array; FPGA), 애플리케이션-특정 집적 회로 (application-specific integrated circuit; ASIC), 다른 프로그래밍가능 로직 디바이스, 개별 게이트 로직, 트랜지스터 로직, 성능 모니터링 하드웨어, 와치도그 하드웨어 (watchdog hardware), 및 시간 기준들과 같은 다른 하드웨어 및 하드웨어 조합들을 추가로 구체화할 수도 있다. 집적 회로들은 집적 회로의 컴포넌트들이 실리콘 (silicon) 과 같은 반도체 재료의 단일 피스 (piece) 상에 상주하도록 구성될 수도 있다. 이러한 구성은 또한, 단일 칩 상에 있는 IC 컴포넌트들로서 지칭될 수도 있다.
컴퓨팅 디바이스는 다수의 등가적인 프로세서 코어들을 포함할 수도 있어서, 각각의 코어는 동일한 목적들을 위하여, 및/또는 동일한 능력들을 가지도록 구성된다. 단일 멀티-코어 프로세서 칩 내에서도, 등가적인 프로세서 코어들은 등가적인 프로세서 코어들의 컴포넌트 재료들에서의 본질적인 자연적 변동들로 인해 약간 상이한 물리적 및 성능 특성들을 가질 수도 있다. 이 차이들은 컴퓨팅 디바이스에서의 각각의 프로세서 코어의 프로세싱 속력, 전력 소비, 및 열 성능에서의 가변성을 도입할 수도 있다. 프로세서 코어들은 가변적인 사용량, 열 사이클링, 및 그 특징적인 전류 누설로 인한 동작 온도로 인해 시간 경과에 따라 상이하게 마모될 수도 있다. 하나 이상의 프로세서 코어들 상의 과도한 마모는 모든 프로세서 코어들이 고장나지 않았더라도, 컴퓨팅 디바이스로 하여금 고장나게 할 수도 있다.
모든 등가적인 프로세서 코어들이 항상 동시에 실행되지 않을 수도 있는 컴퓨팅 디바이스에서는, 그 사용량 이력뿐만 아니라 현재의 성능 특성들에 의해 결정된 우선순위 순서로 코어들에 대한 태스크들을 지시함으로써, 양태들이 등가적인 프로세서 코어들, 및 이에 따라, 컴퓨팅 디바이스의 동작 수명을 증가시키는 것을 가능하게 한다. 양태는 또한, 이러한 방식으로 코어들에 대한 태스크들을 지시함으로써 시스템의 성능을 개선시킬 수도 있다. 프로세서 코어들의 특성들은 이들이 시간 경과와 함께 마모됨에 따라 변동될 수도 있고, 따라서, 제조자 데이터는 신뢰성이 없을 수도 있다. 프로세서 코어들의 현재의 특성들은 정상적으로 동작하는 프로세서 코어들에 대해, 또는 현재의 특성들을 결정하기 위하여 필요한 결과들을 생성하기 위해 지정된 내장 자체 테스트 (built in self test) 하의 프로세서 코어들에 대해 열 출력 및/또는 전류 누설을 측정함으로써 결정될 수도 있다. 프로세서 코어들에 대한 이력 동작 시간이 또한 취출될 수도 있다. 현재의 특성 데이터는 프로세서 코어들에 대한 우선순위들을 생성하기 위하여 가중화된 함수에 적용될 수도 있다. 우선순위들은 그 마모의 레벨에 기초하여 프로세스들 및 프로세싱 태스크들을 프로세서 코어들에 배정하기 위하여 이용될 수도 있다. 예를 들어, 최소의 마모를 갖는 프로세서 코어들은 이들이 고장날 가능성이 더 적기 때문에 더 많은 프로세스들을 실행하기 위하여 우선순위화될 수도 있다.
일 양태에서, 프로세서 코어들의 우선순위들을 결정하기 위한 함수에서 이용된 가중화된 인자들은 오디 디 에어 (over the air) 로 업데이트될 수도 있으므로, 주문자 상표부착 생산자 (original equipment manufacturer; OEM) 들, 무선 서비스 제공자들, 또는 칩셋 공급자들은 이 가중화된 인자들을 변경할 수 있고 필드 테스트된 유닛들에서의 시스템 신뢰성 및 성능을 개선시킬 수 있다. 가중화된 인자들을 업데이트하는 것은 반환된 상품 (예컨대, 보증 기간 내에 고장난 디바이스들) 을 검사하는 것으로부터 획득된 정보뿐만 아니라, 필드 테스트된 유닛들로부터의 동작 및 테스트 데이터에 기초할 수도 있다.
도 1 은 프로세서 제조자 서버 (50) 와 통신하는 컴퓨팅 디바이스 (10) 를 가지는 시스템을 예시한다. 컴퓨팅 디바이스 (10) 는 프로세서 (14), 메모리 (16), 통신 인터페이스 (18), 및 저장 인터페이스 (20) 를 갖는 SoC (12) 를 포함할 수도 있다. 컴퓨팅 디바이스는 유선 또는 무선 모뎀과 같은 통신 컴포넌트 (22), 저장 컴포넌트 (24), 무선 네트워크 (30) 로의 무선 접속 (32) 을 확립하기 위한 안테나 (26), 및/또는 인터넷 (40) 으로의 유선 접속 (44) 에 접속하기 위한 네트워크 인터페이스 (28) 를 더 포함할 수도 있다. 프로세서 (14) 는 위에서 설명된 바와 같은 다양한 하드웨어 코어들 중의 임의의 것을 포함할 수도 있다. 프로세서 (14) 는 다수의 프로세서 코어들을 더 포함할 수도 있다. SoC (12) 는 하나 이상의 프로세서들 (14) 을 포함할 수도 있다. 컴퓨팅 디바이스 (10) 는 하나 이상의 SoC 들 (12) 을 포함할 수도 있음으로써, 프로세서들 (14) 및 프로세서 코어들의 수를 증가시킬 수도 있다. 컴퓨팅 디바이스 (10) 는 또한, SoC (12) 와 연관되는 프로세서 코어들 (14) 을 포함할 수도 있다. 프로세서들 (14) 은 각각, 컴퓨팅 디바이스 (10) 의 다른 프로세서들 (14) 과 동일하거나 상이할 수도 있는 특정 목적들을 위해 구성될 수도 있다. 동일한 목적을 위해 구성된 프로세서들 (14) 은 등가적인 프로세서들로 고려될 수도 있다. 또한, 등가적인 프로세서들 (14) 은 유사한 성능 특성들을 가지도록 구성될 수도 있다. 또한, 개별적인 프로세서들 (14) 은 도 2 를 참조하여 이하에서 설명된 바와 같은 멀티-코어 프로세서들일 수도 있다.
SoC (12) 의 메모리 (16) 는 프로세서 (14) 에 의한 액세스를 위한 데이터 및 프로세서-실행가능 코드를 저장하기 위해 구성된 휘발성 또는 비-휘발성 메모리일 수도 있다. 일 양태에서, 메모리 (16) 는 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 하드웨어 프로세서 코어 우선순위에 관련시키고 이 둘 사이에서 변환하기 위하여, 도 4 를 참조하여 이하에서 설명된 표와 같은 데이터 구조를 적어도 일시적으로 저장하도록 구성될 수도 있다. 이하에서 더욱 상세하게 논의된 바와 같이, 프로세서 (14) 의 프로세서 코어들의 각각은 우선순위화될 수도 있거나, 컴퓨팅 디바이스 (10) 상에서 실행되는 하이 레벨 오퍼레이팅 시스템과 공유되는 식별정보 값을 부여받을 수도 있다.
컴퓨팅 디바이스 (10) 및/또는 SoC (12) 는 다양한 목적들을 위해 구성된 하나 이상의 메모리들 (16) 을 포함할 수도 있다. 일 양태에서, 하나 이상의 메모리들 (16) 은 코어 우선순위 정보를 저장하기 위한 데이터 구조를 저장하는 것에 전용되도록 구성될 수도 있어서, 데이터 구조의 정보는 하나 이상의 프로세서들 (14) 에 의해 액세스될 수도 있다. 데이터 구조를 저장하는 메모리 (15) 가 비-휘발성일 때, 메모리 (16) 는 컴퓨팅 디바이스 (10) 의 전력이 차단된 후에도 데이터 구조의 정보를 유지할 수도 있다. 전력이 다시 온 (on) 으로 되고 컴퓨팅 디바이스 (10) 가 재부팅할 때, 메모리 (16) 는 데이터 구조의 정보를 제공하기 위하여 컴퓨팅 디바이스 (10) 에 의해 이용가능할 수도 있다. 또 다른 양태에서, 메모리 (16) 는 또한, 가중화 값들과, 하드웨어 프로세서 코어 우선순위들을 배정하거나 가중화 값들을 업데이트할 시의 이용을 위해 프로세서 코어 제조자 (28) 에게 전송하기 위하여 이용될 수도 있는 이력 프로세서 코어 동작 및/또는 데스트 데이터를 저장하고 유지할 수도 있다.
통신 인터페이스 (18), 통신 컴포넌트 (22), 안테나 (26), 및/또는 네트워크 인터페이스 (28) 는 컴퓨팅 디바이스 (10) 가 무선 접속 (32) 을 통한 무선 네트워크 (30), 및/또는 프로세서 코어 제조자 서버 (50) 를 갖는 유선 네트워크 (44) 상에서 통신하는 것을 가능하게 하기 위하여 함께 작동할 수도 있다. 무선 네트워크 (30) 는, 컴퓨팅 디바이스 (10) 가 프로세서 코어 제조자 서버 (50) 와 데이터를 교환할 수도 있도록 하는 인터넷 (40) 으로의 접속을 컴퓨팅 디바이스 (10) 에 제공하기 위하여, 무선 통신들을 위해 이용된 예를 들어, 라디오 주파수 스펙트럼을 포함하는 다양한 무선 통신 기술들을 이용하여 구현될 수도 있다. 일 양태에서, 무선 네트워크 (30) 및/또는 인터넷 (40) 으로의 유선 접속 (44) 은 컴퓨팅 디바이스 (10) 의 동작 데이터 및/또는 데스트 데이터를 프로세서 코어 제조자 서버 (50) 로 통신하기 위하여 이용될 수도 있다. 또 다른 양태에서, 무선 네트워크 (30) 및/또는 인터넷 (40) 으로의 유선 접속 (44) 은 하드웨어 프로세서 코어 우선순위들을 배정할 시에 이용하기 위한 업데이트된 가중화 값들을 프로세서 코어 제조자 서버 (50) 로부터 컴퓨팅 디바이스 (10) 로 통신하기 위하여 이용될 수도 있다.
저장 인터페이스 (20) 및 저장 컴포넌트 (24) 는 컴퓨팅 디바이스 (10) 가 비-휘발성 저장 매체 상에 데이터를 저장하도록 하기 위하여 함께 작동할 수도 있다. 저장 컴포넌트 (24) 는 저장 컴포넌트 (24) 가 데이터 구조를 저장할 수도 있는 메모리 (16) 의 양태와 매우 유사하게 구성될 수도 있어서, 데이터 구조의 정보는 하나 이상의 프로세서들 (14) 에 의해 액세스될 수도 있다. 비-휘발성인 저장 컴포넌트 (24) 는 컴퓨팅 디바이스 (10) 의 전력이 차단된 후에도 데이터 구조의 정보를 유지할 수도 있다. 전력이 다시 턴온되고 컴퓨팅 디바이스 (10) 가 재부팅할 때, 저장 컴포넌트 (24) 는 데이터 구조의 정보를 제공하기 위하여 컴퓨팅 디바이스 (10) 에 의해 이용가능할 수도 있다. 또 다른 양태에서, 저장 컴포넌트 (24) 는 또한, 가중화 값들과, 하드웨어 프로세서 코어 우선순위들을 배정하거나 가중화 값들을 업데이트할 시의 이용을 위해 프로세서 코어 제조자 (28) 에게 전송하기 위하여 이용될 수도 있는 이력 프로세서 코어 동작 및/또는 데스트 데이터를 저장하고 유지할 수도 있다. 저장 인터페이스 (20) 는 저장 디바이스 (24) 를 액세스하는 것을 제어할 수도 있고, 프로세서 (14) 가 저장 디바이스 (24) 로부터 데이터를 판독하고 데이터를 저장 디바이스 (24) 에 기록하도록 할 수도 있다.
컴퓨팅 디바이스 (10) 의 컴포넌트들 중의 일부 또는 전부는 필요한 기능들을 여전히 제공하면서 상이하게 배열되고 및/또는 조합될 수도 있다는 것에 주목해야 한다. 또한, 컴퓨팅 디바이스 (10) 는 컴포넌트들의 각각의 하나로 제한되지 않을 수도 있고, 다양한 구성들에서, 각각의 컴포넌트의 다수의 사례들은 컴퓨팅 디바이스 (10) 내에 포함될 수도 있다.
도 2 는 일 양태를 구현하기 위해 적당한 멀티-코어 프로세서 (14) 를 예시한다. 멀티-코어 프로세서 (14) 는 복수의 등가적인 프로세서 코어들 (200, 201, 202, 203) 을 가질 수도 있다. 본원에서 추가로 설명된 바와 같이, 프로세서 코어들 (200, 201, 202, 203) 은, 단일 프로세서 (14) 의 프로세서 코어들 (200, 201, 202, 203) 이 동일한 목적을 위해, 그리고 동일한 성능 특성들을 가지도록 구성될 수도 있다는 점에서 등가적이다. 예를 들어, 프로세서 (14) 는 범용 프로세서일 수도 있고, 프로세서 코어들 (200, 201, 202, 203) 은 등가적인 범용 프로세서 코어들일 수도 있다. 대안적으로, 프로세서 (14) 는 그래픽 프로세싱 유닛 또는 디지털 신호 프로세서일 수도 있고, 프로세서 코어들 (200, 201, 202, 203) 은 각각 등가적인 그래픽 프로세서 코어들 또는 디지털 신호 프로세서 코어들일 수도 있다. 제조 프로세스 및 재료들에 있어서의 변동들을 통해, 프로세서 코어들 (200, 201, 202, 203) 의 성능 특성들은 동일한 멀티-코어 프로세서 (14) 내에서, 또는 동일한 지정된 프로세서 코어들을 이용하는 또 다른 멀티-코어 프로세서 (14) 에서, 프로세서 코어마다 상이할 수도 있다는 점이 발생할 수도 있다. 도 2 에서 예시된 예에서, 멀티-코어 프로세서 (14) 는 4 개의 프로세서 코어들 (200, 201, 202, 203) (즉, 프로세서 코어 0, 프로세서 코어 1, 프로세서 코어 2, 및 프로세서 코어 3) 을 포함한다. 설명의 용이함을 위하여, 본원에서의 예들은 도 2 에서 예시된 4 개의 프로세서 코어들 (200, 201, 202, 203) 을 지칭할 수도 있다. 그러나, 도 2 및 본원에서 예시되고 설명된 4 개의 프로세서 코어들 (200, 201, 202, 203) 은 결코 제한하도록 의도된 것은 아니라는 것에 주목해야 한다. 컴퓨팅 디바이스 (10), SoC (12), 또는 멀티-코어 프로세서 (14) 는 개별적으로 또는 조합하여, 4 개의 프로세서 코어들 (200, 201, 202, 203) 보다 더 적거나 더 많은 것을 포함할 수도 있다.
도 3 은 일 양태에 따라, 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화를 위한 다수의 프로세서 코어들 (320, 321, 322, 324, 326) 및 신뢰성 엔진 (302) 을 포함하는 SoC (12) 를 가지는 컴퓨팅 디바이스 (10) 를 예시한다. 컴퓨팅 디바이스 (10) 는, 프로세서 코어들 (320, 321, 322, 324, 326) 뿐만 아니라, 가상적 프로세서 식별정보 변환 테이블 (300) 및 신뢰성 엔진 (302) 을 가지는 SoC (12) 를 포함할 수도 있다. 컴퓨팅 디바이스 (10) 는 또한, SoC (12) 의 컴포넌트들과 통신하도록 구성될 수도 있는 소프트웨어 애플리케이션들 (304) 및 하이 레벨 오퍼레이팅 시스템 (306) 을 포함할 수도 있다.
도 3 에서는, (도면에서 "고전력 CPU 코어" 로서 지칭된) 고성능/고누설 멀티-코어 범용/중앙 프로세싱 유닛 (CPU) (320), (도면에서 "저전력 CPU 코어" 로서 지칭된) 저성능/저누설 멀티-코어 범용/중앙 프로세싱 유닛 (CPU) (321), 멀티-코어 그래픽 프로세싱 유닛 (GPU) (322), 멀티-코어 디지털 신호 프로세서 (DSP) (324), 및 다른 멀티-코어 연산 유닛들 (326) 을 포함하는 다양한 타입들의 멀티-코어 프로세서들이 예시되어 있다. 최신 컴퓨팅 디바이스 아키텍처들은, 고성능을 나타내지만 높은 전류 누설을 희생하는 범용 CPU 들의 클러스터 (cluster) 와, 더 낮은 성능, 그러나 더 낮은 전류 누설을 나타내는 CPU 들의 또 다른 클러스터를 포함하고 있다. CPU 들의 2 개의 클러스터들은 일관성 있는 캐시 (cache) 들을 유지할 수도 있고, 그러므로, CPU 들의 양자의 클러스터들은 동시에 작동될 수도 있다. 이 개시물의 목적들을 위하여, CPU 들의 각각의 클러스터는 독립적으로 우선순위화될 수도 있다. 또한, 이 개시물의 목적들을 위하여, 유사한 특성들을 갖는 연산 엘리먼트들은 일반적으로 함께 그룹화되고; 그러나, 이것이 요건은 아니다. 예를 들어, DSP 클러스터들은 유사한 방식으로 구별될 수도 있고, 이에 따라, 양태들은 유사한 프로세싱 엘리먼트들을 구별하기 위하여 다른 축들 상에서 컴퓨팅 디바이스들을 구별하는 것을 포함한다.
도 3 은 또한, 프로세싱 능력의 확장 또는 개량과 같이, 또는 컴퓨팅 디바이스에 대한 업데이트로서, 프로세싱 코어들 (326) 이 컴퓨팅 디바이스가 판매된 후에 컴퓨팅 디바이스에서 설치될 수도 있다는 것을 예시한다. 프로세싱 능력들의 애프터-마켓 (after-market) 확장들은 중앙 프로세서 코어들로 제한되지 않고, 예를 들어, 그 임의의 것이 (예컨대, SoC 상에서) 단일-칩-멀티-코어 모듈들 또는 프로세서들의 클러스터들로서 설치될 수도 있는, 추가적인, 업데이트된, 또는 대체 모뎀 프로세서들, 추가적인 또는 대체 그래픽 프로세서 (GPU) 들, 추가적인 또는 대체 오디오 프로세서들, 및 추가적인 또는 대체 DSP 들을 포함하는 컴퓨팅 시스템에서 추가되거나 대체될 수도 있는 임의의 타입의 컴퓨팅 모듈일 수도 있다. 또한, 서버들에서, 이러한 추가되거나 대체된 프로세서 컴포넌트들은 리셉터클 (receptable) 및 와이어링 하네스 인터페이스 (wiring harness interface) 로 플러깅되는 프로세싱 모듈들 (또는 블레이드 (blade) 들) 로서 설치될 수도 있다. 추가적인 또는 대체 프로세서 코어들을 컴퓨팅 디바이스에 추가하는 것의 의미들은 도 6 을 참조하여 이하에서 논의된다.
도 3 에서 예시된 프로세서 코어들의 그룹들의 각각은 위에서 설명된 바와 같은 멀티-코어 프로세서 (14) 의 일부일 수도 있다. 또한, 이 5 개의 예의 멀티-코어 프로세서들 (또는 프로세서 코어들의 그룹들) 은 제한하도록 의도된 것이 아니고, 컴퓨팅 디바이스 (10) 또는 SoC (12) 는 개별적으로 또는 조합하여, 도 3 에서 표시되지 않은 타입들을 포함하는 5 개의 멀티-코어 프로세서들 (320, 321, 322, 324, 326) (또는 프로세서 코어들의 그룹들) 보다 더 적거나 더 많은 것을 포함할 수도 있다.
신뢰성 엔진 (302) 은 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수도 있다. 신뢰성 엔진은 다양한 프로세서 코어들 (320, 321, 322, 324, 326) 에 관한 데이터를 분석하고, 다양한 프로세서 코어들 (320, 321, 322, 324, 326) 및, 이것에 의해, 컴퓨팅 디바이스 (10) 의 동작 수명 및 최대화된 성능을 증가시키기 위하여 하드웨어 프로세서 코어 우선순위들을 수정하도록 구성될 수도 있다. 위에서 설명된 바와 같이, 멀티-코어 프로세서들 내의 프로세서 코어들은 불균등하게 마모될 수도 있다. 프로세서, SoC, 및/또는 컴퓨팅 디바이스 설계에 의한 어떤 프로세서 코어들은 동일한 컴퓨팅 디바이스 (10) 에서의 다른 동작 코어들로부터의 상이한 동작 조건들을 받을 수도 있다. 일 양태에서, 프로세서 코어들의 열 사이클링은 프로세서 코어들의 컴포넌트들을 약화시킬 수도 있어서, 이들이 고장나게 할 수도 있다. 일부의 프로세서 코어들은, 이들이 더 뜨겁고 더 차가운 온도들 사이에서 더 큰 열의 레이트 및/또는 정도를 경험하도록 컴퓨팅 디바이스 내에 위치될 수도 있다. 열 사이클링에서의 차이들은 또한, 일부의 프로세서 코어들이 다른 것들보다 더 많이 이용될 때의 이용으로부터 기인할 수도 있다. 이것은 컴퓨팅 디바이스 (10) 상에서 실행된 프로세스들의 타입들과, 소프트웨어 (302) 및 하이 레벨 오퍼레이팅 시스템 (304) 이 어떤 프로세서 코어들을 특정하기 위하여 어떻게 구성되는지로부터 기인할 수도 있다. 또한, 더 높은 전류 누설을 갖는 프로세서 코어들은 더 낮은 전류 누설 프로세서 코어들에 비해, 더 높은 온도들에서 실행된다. 더 높은 전류 누설 프로세서 코어들은 또한, 그 더 낮은 전류 누설 대응부들에 비해 더 낮은 성능 레벨들에서 실행된다. 열 사이클링은 시간 경과에 따라 프로세서 코어들의 전류 누설 특성들을 변경한다.
열 사이클링에 의해 야기된 잠재적인 손상을 지연시키기 위하여, 신뢰성 엔진 (302) 은 멀티-코어 프로세서들 (320, 321, 322, 324, 326) 에서의 프로세서 코어들의 각각에 관한 데이터를 분석할 수도 있고, 하드웨어 프로세서 코어 우선순위들을 수정할 수도 있어서, 어떤 프로세서 코어들이 이용되는 주파수를 변경할 수도 있다. 하드웨어 프로세서 코어 우선순위들은 또한, 프로세서 코어들에 대한 물리적 식별자들로서 작용할 수도 있다.
프로세서 코어들에 관한 데이터는 변동되는 조건들 하에서 상이할 수도 있고, 일반적으로 프로세서 코어들 상의 마모로 인해 시간 경과에 따라 변경될 수도 있으므로, 프로세서 코어들에 대한 제조자 데이터에 의존하는 것이 불충분할 수도 있다. 신뢰성 엔진 (302) 은 멀티-코어 프로세서들 (320, 321, 322, 324, 326) 에서, 또는 그에 근접하여 위치된 센서들에 의해 캡처된 센서 데이터를 포함하는 다양한 프로세서 코어들의 측정된 데이터를 이용할 수도 있다. 일 양태에서, 측정된 데이터는 멀티-코어 프로세서들 (320, 321, 322, 324, 326) 의 정상 동작 동안에 캡처될 수도 있다. 또 다른 양태에서, 프로세서 코어들이 아이들 (idel) 이거나, 컴퓨팅 디바이스 (10) 의 부트 시간 동안과 같은 중단 상태에 있을 때, 컴퓨팅 디바이스는 선택된 프로세서 코어들에 대한 내장 자체 테스트를 실행할 수도 있다. 내장 자체 테스트는 테스트되고 있는 프로세서 코어 상에서 사전설정된 (preset) 루틴 또는 작업부하를 로딩할 수도 있고, 프로세싱 시간, 전압 강하, 전류 인출 (current draw), 온도 상승 등과 같은 다양한 성능 파라미터들을 측정할 수도 있다. 정상 동작 또는 자체 테스트의 어느 하나에서, 프로세서 코어들의 열 출력 및 전류 누설은 적어도 선택된 프로세서 코어들에 대해 캡처될 수도 있다. 프로세서 코어들에 관련된 다른 데이터는 메모리 (16), 저장 컴포넌트 (24), 또는 개별적인 프로세서 코어들의 동작 시간 및 가중화 인자들을 유지하거나 결정하기 위한 다른 전용 컴포넌트들로부터 취출될 수도 있다.
프로세서 코어들에 관련된 데이터를 이용하면, 신뢰성 엔진 (302) 은 선택된 프로세서 코어들에 대한 새로운 하드웨어 프로세서 코어 우선순위들을 계산할 수도 있다. 각각의 프로세서 코어에 대한 하드웨어 프로세서 코어 우선순위는 개별적인 프로세서 코어에 대한 열 출력, 전류 누설 및 동작 시간 중의 하나 이상과, 그 각각의 가중화 인자들의 함수일 수도 있다. 우선순위들을 프로세서 코어들에 배정하기 위해 이용된 함수 또는 알고리즘에서 이용되어야 할 데이터의 타입들은 선택된 타입들만을 이용하는 열 출력, 전류 누설, 및 동작 시간을 포함할 수도 있거나, 모든 타입들이 이용될 수도 있고, 어떤 타입들은 의도되지 않은 타입에 대해 제로 (zero) 의 가중화 인자를 이용함으로써 무관한 것으로 될 수도 있다. 우선순위들을 계산하기 위한 함수 또는 알고리즘은 예를 들어, 각각의 타입을 그 각각의 가중화 인자에 의해 먼저 승산함으로써 증강된 데이터의 타입들 중의 하나 이상의 타입의 합산과 같을 수도 있다. 데이터의 각각의 타입들에 대한 단위들은 변동될 수도 있고, 동작 시간은 멀티-코어 프로세서 (14) 가 동작하는 동안에 프로세서 코어가 동작하는 시간의 백분율로 표현될 수도 있다. 각각의 프로세서 코어에 대한 함수 또는 알고리즘의 결과들은 비교될 수도 있고, 우선순위들은 함수의 결과들의 수치 순서에 따라 결정될 수도 있다. 예를 들어, 최저 값의 결과를 갖는 프로세서 코어는 최저 마모의 양을 표시할 수도 있고, 최고 우선순위를 부여받을 수도 있다. 다음 최저 값의 결과는 다음 최소 마모의 양을 표시할 수도 있고, 연관된 프로세서 코어는 다음 최고 우선순위를 부여받을 수도 있고, 함수 결과가 계산되는 프로세서 코어들의 전부에 대해 이하 등등과 같다. 프로세서 코어들은 등가적인 프로세서 코어들의 그룹들로 선택될 수도 있고, 하드웨어 프로세서 코어 우선순위들은 그룹들 내에서 적용되기만 할 수도 있다.
가상적 프로세서 식별정보 변환 테이블 (300) 은 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수도 있다. 가상적 프로세서 식별정보 변환 테이블 (300) 은 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 하드웨어 프로세서 코어 우선순위에 관련시키도록 구성될 수도 있다. 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보 (또는 코어 ID) 는 소프트웨어 애플리케이션들 (304) 및 하이 레벨 오퍼레이팅 시스템 (306) 이 특정 프로세싱 요청들, 스레드 (thread) 들, 또는 태스크들을 처리할 프로세서 코어들을 식별하는 방법이다. 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보는 프로세서 코어들을 위한 가상적 식별자로서 작용할 수도 있다. 일 양태에서, 소프트웨어 애플리케이션들 (304) 및 하이 레벨 오퍼레이팅 시스템 (306) 은 어떤 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보들에 의해 어떤 프로세서 코어들을 식별하도록 프로그래밍될 수도 있다. 또 다른 양태에서, 컴퓨팅 디바이스 (10) 를 부팅하거나, 소프트웨어 애플리케이션들 (304) 또는 하이 레벨 오퍼레이팅 시스템 (306) 을 시작할 시에, 컴퓨팅 디바이스는 어느 프로세서 코어들이 어느 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보들과 연관되는지에 대해 소프트웨어 애플리케이션들 (304) 및 하이 레벨 오퍼레이팅 시스템 (306) 에 지시할 수도 있다. 이 연관성들은 정적일 수도 있고, 컴퓨팅 디바이스 (10) 의 BIOS 와 같은 펌웨어 내로 프로그래밍될 수도 있다. 이에 따라, 소프트웨어 애플리케이션들 (304) 및 하이 레벨 오퍼레이팅 시스템 (306) 이 특정한 프로세서 코어에 대한 프로세스 요청을 행할 때, 이들은 특정한 프로세서 코어에 대한 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 특정함으로써 그렇게 행할 수도 있다.
그러나, 컴퓨팅 디바이스 (10) 는 이하에서 더욱 설명된 바와 같이, 프로세서 코어들의 우선순위들을 변경할 수도 있다. 컴퓨팅 디바이스 (10) 는 동작 수명을 증가시키고 프로세서 코어들의 성능을 최대화하기 위하여 우선순위들을 변경할 수도 있다. 프로세서 코어들의 우선순위들을 변경하는 것은, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보가 컴퓨팅 디바이스 (10) 가 요청된 프로세스를 실행할 것을 의도하지 않는 프로세서 코어와 연관되는 것으로 귀착될 수도 있다. 가상적 프로세서 식별정보 변환 테이블 (300) 은 프로세서 코어들의 우선순위들에서의 변경들을 추적할 수도 있고, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보들을 적절하게 우선순위화된 프로세서 코어와 연관시킬 수도 있다. 이것을 달성하기 위하여, 가상적 프로세서 식별정보 변환 테이블 (300) 은 신뢰성 엔진 (302) 에 의해 계산된 업데이트된 하드웨어 프로세서 코어 우선순위들을 수신할 수도 있다. 가상적 프로세서 식별정보 변환 테이블 (300) 은 또한, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보들을 대응하는 하드웨어 프로세서 코어 우선순위와 연관시킬 수도 있고, 하드웨어 프로세서 코어 우선순위들이 변경됨에 따라 연관성들을 업데이트할 수도 있다. 특정한 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 특정하는 프로세스 요청이 수신될 때, 컴퓨팅 디바이스는 프로세스를 적절하게 우선순위화된 프로세서 코어에 배정하기 위하여 가상적 프로세서 식별정보 변환 테이블 (300) 을 이용할 수도 있다. 표는 컴퓨팅 디바이스 (10) 의 이 고장을 설명하기 위하여 본원에서 이용되지만, 가상적 프로세서 식별정보 변환은 위에서 설명된 것과 동일한 기능을 달성할 수도 있는 다양한 상이한 하드웨어, 데이터 구조들, 및 소프트웨어 알고리즘들을 이용하여 구현될 수도 있다. 일 양태에서, 하나 이상의 가상적 프로세서 식별정보 변환 테이블들 (300) 은 프로세서 코어들의 여러 그룹들에 대해 구현될 수도 있다. 예를 들어, 멀티-코어 범용 CPU (320, 321), 멀티-코어 GPU (322), 멀티-코어 DSP (324), 및 다른 멀티-코어 연산 유닛들 (326) 과 같은 일 타입의 프로세서 코어들의 각각의 그룹은 다양한 구성들에서 조합될 수도 있거나, 하나 이상의 가상적 프로세서 식별정보 변환 테이블들 (300) 로 분리될 수도 있다.
도 4 는 일 양태에 따라, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 하드웨어 프로세서 코어 우선순위에 관련시키는 일 예의 표 (400) 를 예시한다. 표 (400) 는 도 2 에서 예시된 4 개의 프로세서 코어들 (프로세서 코어들 0 내지 3) 의 예를 계속한다. 좌측 열 (column; 402) 은 표 (400) 에서 나타낸 그룹 내에 있는 것으로 선택된 프로세서 코어들 (예컨대, 프로세서 코어들 0 내지 3) 의 각각에 대한 가상적 식별자들로서 이용될 수도 있는 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보들을 나타낸다. 우측 열 (404) 은, 표 (400) 에서 나타낸 그룹 내에 있는 것으로 선택된 프로세서 코어들 (프로세서 코어들 0 내지 3) 을 순서화하기 위하여, 그리고 이 프로세서 코어들의 각각에 대한 물리적 식별자들로서 이용될 수도 있는 각각의 프로세서 코어에 배정된 우선순위들을 열거할 수도 있는 프로세서 코어 식별정보들/우선순위들을 나타낸다.
표 (400) 의 각각의 행 (406, 408, 410, 412) 은 프로세서 코어들 중의 하나와 관련 있다. 예를 들어, 제 1 행 (406) 은 하이 레벨 오퍼레이팅 시스템에 의해 식별될 때에 프로세서 코어 0 과 관련 있다. 그러나, 이 예에서, 프로세서 코어들의 우선순위들은 위에서 설명된 신뢰성 엔진에 의해 행해진 데이터 수집 및 계산들에 기초하여 섞였다. 이에 따라, 이 예는 제 1 행 (406) 에서, 프로세서 코어 2 가 최고 우선순위를 가지므로, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보 프로세서 코어 0 이 하드웨어 프로세서 코어 식별정보 프로세서 코어 2 와 연관되는 것을 보여준다. 유사하게, 제 2 행 (408) 에서, 프로세서 코어 0 이 다음 우선순위를 가지므로, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보 프로세서 코어 1 은 하드웨어 프로세서 코어 식별정보 프로세서 코어 0 과 연관된다. 동일한 사항은 제 3 행 (410) 및 제 4 행 (412) 에서, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보들 프로세서 코어 2 및 프로세서 코어 3 과, 하드웨어 프로세서 코어 식별정보들 프로세서 코어 3 및 프로세서 코어 1 에 각각 적용된다.
일 양태에서, 하이 레벨 오퍼레이팅 시스템에 관한 한, 그것이 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 특정하는 동작 요청을 행할 때, 하이 레벨 오퍼레이팅 시스템은 동작이 특정된 프로세서 코어에 의해 실행될 것을 예상한다. 그러나, 특정된 프로세서 코어는 프로세서 코어들의 우선순위들이 신뢰성 엔진에 의해 행해진 수집된 데이터 및 계산들에 따라 섞였을 때에 요청된 프로세스를 실행할 수도 있거나 실행하지 않을 수도 있다. 요청된 프로세스를 실행하는 프로세서 코어는 표 (400) 에서 연관된 하드웨어 프로세서 코어 식별정보를 가지는 프로세서 코어일 수도 있다. 프로세싱의 결과는 하이 레벨 오퍼레이팅 시스템 특정된 프로세서 코어가 요청된 프로세스를 실행하였을 경우와 동일할 수도 있다. 하이 레벨 오퍼레이팅 시스템은 그것이 특정한 것과는 상이한 프로세서 코어가 요청된 프로세스를 실행하였을 수도 있다는 가능성을 의식할 수도 있다.
가상적 식별자들, 물리적 식별자들, 및 우선순위들은 프로세서 코어들의 그룹들과 연관될 수도 있고 프로세서 코어들의 그룹들에 대해 계산될 수도 있어서, 표 (400) 의 행은 단일 프로세서 코어가 아니라, 프로세서 코어들의 그룹을 나타낼 수도 있다.
프로세서 코어들의 우선순위들을 결정하고 우선순위 순서에 따라 프로세싱 태스크들을 맵핑/재배정하는 결과는 프로세서 코어들이 시간 경과에 따라 더욱 균등하게 마모되는 것일 수도 있다. 프로세서 코어에 관련된 수집된 데이터를 분석함으로써 더 큰 마모를 입증하는 프로세서 코어의 우선순위를 감소시킴으로써, 더 적은 프로세스들 및 스레드들이 프로세서 코어에 의해 수행될 것이다. 프로세서 코어가 더 적은 작업을 수행하도록 태스킹될수록, 그것은 더 적은 열 사이클들을 경험할 것이어서, 코어가 노후화하는 레이트를 감소시킨다. 더 높은 우선순위의 프로세서 코어들에는 더 많은 요청된 프로세스들 또는 스레드들이 배정될 수도 있고, 그 결과, 더 많은 열 사이클들을 경험할 수도 있고, 이것은 더 높은 우선순위의 프로세서 코어들의 컴포넌트들 상에서 더 큰 마모를 야기시킬 수도 있다. 더 높은 우선순위의 프로세서 코어들이 더 많은 마모를 나타내므로 (또는 경험하도록 계산됨), 양태의 방법에 의해 프로세서 코어들에 배정된 우선순위들은 정상화하기 시작할 것이어서, 요청된 프로세스들의 더욱 균등한 스케줄링으로 귀착될 것이다. 이러한 방식으로 프로세서 코어들에 걸쳐 요청된 프로세스들을 확산시키는 것은 모든 프로세서 코어들의 더욱 균등한 마모로 귀착될 수도 있어서, 하나의 프로세서 코어에 다른 코어들보다 더 많은 태스크가 배정되었거나, 더 높은 누설 코어가 다른 코어들과 동일하게 태스킹되고, 이것이 하나의 코어 마모와 다른 코어들 이전의 고장으로 이어질 수 있을 경우, 컴퓨팅 디바이스가 더 높은 용량에서 더 오래 기능하도록 할 수도 있다.
도 5 는 프로세서 코어들로부터 수집된 정보에 기초하여 프로세서 코어 우선순위들을 계산하기 위한 일 양태의 방법 (500) 을 예시한다. 신뢰성 엔진을 실행하는 프로세서는 방법 (500) 을 실행할 수도 있다. 블록 (502) 에서, 프로세서는 등가적인 프로세서 코어들의 클러스터 또는 그룹을 선택할 수도 있다. 이전에 설명된 바와 같이, 성능 특성들은 제조 가변성으로 인해 변동될 수도 있지만, 등가적인 프로세서 코어들은 동일한 목적을 위하여, 그리고 동일한 성능 특성들을 가지도록 구성될 수도 있다. 이에 따라, 프로세서는 동일한 목적을 위해 구성된 프로세서 코어들의 그룹을 선택할 수도 있다. 예를 들어, 프로세서는 범용 프로세서 코어들의 그룹, 또는 그래픽 또는 디지털 시그널링 프로세서 코어들의 그룹들을 각각 선택할 수도 있다. 다수의 등가적인 프로세서들이 있을 때, 등가적인 프로세서 코어들의 그룹은 다수의 등가적인 프로세서들에 걸쳐 연장될 수도 있거나, 그룹은 단일 프로세서의 등가적인 프로세서 코어들로 한정될 수도 있다.
결정 블록 (504) 에서, 프로세서는 선택된 프로세서 코어들이 비활성이거나, 아이들이거나, 또는 중단 상태에 있는지 여부를 결정할 수도 있다. 이 결정은 프로세서가 프로세서 코어들의 데이터 수집 및 우선순위화를 어떻게 구현하는지에 영향을 줄 수도 있다. 코어들이 활성일 때에는, 프로세서 코어들의 정상 활동으로부터 측정된 프로세서 코어들에 관한 정보가 충분할 수도 있으므로, 테스트를 실행할 필요성이 없을 수도 있다. 또한, 활성 프로세서 코어들이 특정한 프로세서 코어가 태스크들을 실행하기 위하여 이용가능한 것을 예상할 수도 있는 다른 컴포넌트들과 상호작용할 수도 있으므로, 활성 프로세서 코어들을 우선순위화하는 것은 더욱 복잡한 프로세스일 수도 있다. 프로세서가 선택된 프로세서 코어들이 활성인 것으로 결정할 때 (즉, 결정 블록 (504) = "아니오"), 프로세서는 블록 (506) 에서, 선택된 활성 코어들에 대한 동작 데이터를 수집할 수도 있다. 다시 말해서, 프로세서는 선택된 프로세서 코어들에 대하여 관련된 데이터에 대한 판독들을 획득하기 위하여 별도의 테스트를 실행하지 않으면서, 센서들을 모니터링하고 선택된 프로세서 코어들의 정상 동작으로부터 데이터를 수집할 수도 있다. 예를 들어, 프로세서는 정상 동작 동안에 선택된 프로세서 코어들의 열 출력 및 전류 누설을 모니터링할 수도 있다.
임의적인 블록 (507) 에서, 이 수집된 동작 데이터 및 관련된 정보는 컴퓨팅 디바이스의 플래시 (FLASH) 메모리, 이 정보를 저장하도록 구성된 저장 컴포넌트, 또는 프로세서 코어 동작 데이터 및 누적 동작 시간에 관한 데이터를 추적하고 저장하는 것에 전용인 또 다른 컴포넌트를 포함하는, 프로세서에 의해 액세스가능한 임의의 비-휘발성 메모리 내에 저장될 수도 있다. 비-휘발성 메모리 내에 저장된 동작 데이터는 초기 프로세서 코어 우선순위들 및 맵핑들을 설정하기 위하여 부트 시간에서 이용될 수도 있다. 블록 (507) 에서 저장된 데이터의 일부로서, 프로세서 코어의 동작 시간 또는 사용량은 빈번하게 업데이트된 데이터 필드 내에 저장될 수도 있다. 이에 따라, 블록 (506) 에서의 동작들의 일부로서, 프로세서는 이 메모리로부터, 선택된 프로세서 코어에 대한 동작 시간 (즉, 총 또는 상대적 활성 시간) 을 취출할 수도 있다.
블록 (508) 에서, 프로세서는 수집된 동작 데이터 및 동작 이력에 기초하여 선택된 프로세서 코어들의 각각에 대한 우선순위들을 계산할 수도 있다. 프로세서는 선택된 프로세서 코어들의 각각에 대하여, 데이터의 타입들의 각각에 대한 가중화 인자들과 함께, 함수 또는 알고리즘을 수집된 데이터에 적용할 수도 있어서, 선택된 코어들에 대한 새로운 우선순위 값들을 계산할 수도 있다. 우선순위들을 계산하기 위해 이용된 함수 또는 알고리즘은 변동될 수도 있다. 다양한 양태들에서, 열 출력, 전류 누설 및 동작 시간, 및 그 가중화 인자들 중의 하나 이상의 상이한 조합들은 코어 우선순위들을 계산하기 위하여 이용될 수도 있다. 일 양태에서, 3 개의 타입들의 수집된 데이터는 그 각각의 가중화 인자들에 의해 승산될 수도 있고, 결과들은 각각의 프로세서 코어에 대한 우선순위 값을 생성하기 위하여 함께 합산될 수도 있다. 또 다른 양태에서, 데이터의 타입들 중의 하나가 무시되어야 할 때, 가중화 값이 제로로 설정될 수도 있거나, 무시된 타입의 데이터가 함수 또는 알고리즘으로부터 제거될 수도 있다.
블록 (510) 에서, 컴퓨팅 디바이스는 선택된 프로세서 코어들이 비활성으로 되는 것을 대기할 수도 있다. 위에서 설명된 바와 같이, 활성 코어들을 우선순위화하는 것은 컴퓨팅 디바이스의 컴포넌트들이 특정한 프로세서 코어들이 어떤 태스크들을 실행하기 위하여 이용가능한 것을 예상할 때에 문제들을 제기할 수도 있다. 그러나, 예상된 프로세서 코어가 예상된 것과 상이하게 우선순위화될 때, 그것은 프로세서 코어를 갖지 않는 컴포넌트들이 예상된 태스크를 실행하도록 내버려 둘 수도 있어서, 컴퓨팅 디바이스의 동작에 있어서 잠재적인 에러들로 이어질 수도 있다. 이에 따라, 다른 컴포넌트들에 부정적으로 영향을 주는 것을 회피하기 위하여 프로세서 코어들의 우선순위를 변경하기 전에, 프로세서 코어들에 대한 스케줄링되거나 예상된 태스크들이 없을 때, 컴퓨팅 디바이스는 프로세서 코어들이 비활성으로 되는 것을 대기할 수도 있다.
또 다른 양태에서, 임의적인 블록 (512) 에서는, 프로세서가 선택된 프로세서 코어들의 현재 및 예상된 프로세스들 및 데이터를 하나 이상의 다른 프로세서 코어들로 마이그레이팅 (migrating) 할 수도 있다. 선택된 프로세서 코어들이 비활성으로 되는 것을 대기하는 것이 아니라, 프로세서는 현재 및 스케줄링된 프로세스들과 관련된 데이터를 선택된 프로세서 코어들로부터, 이용가능한 다른 프로세서 코어들로 재배정할 수도 있다. 이 양태에서, 컴퓨팅 디바이스의 컴포넌트들은 상이한 프로세서 코어들에 맵핑된 프로세스들 및 데이터로 예상된 바와 같이 동작하는 것을 계속할 수도 있어서, 본질적으로, 컴퓨팅 디바이스에 관한 프로세싱 수요가 모든 프로세서 코어들보다 더 적은 것을 요구할 때, 선택된 프로세서 코어들을 중단 상태로 강제할 수도 있다.
어느 하나의 양태에서, 선택된 프로세서 코어들이 비활성으로 되는 것을 대기하든지, 프로세스들을 더 낮은 우선순위의 프로세서 코어들로부터 멀어지도록 마이그레이팅하든지, 블록 (526) 에서, 프로세서는 가상적 프로세서 식별정보 변환 테이블에서 하드웨어 프로세서 코어 우선순위를 업데이트할 수도 있다. 위에서 설명된 바와 같이, 선택된 프로세서 코어들의 우선순위들을 업데이트하는 것은 그 우선순위 값들에 따라 하드웨어 프로세서 코어 식별정보들을 순서화하거나 재순서화하는 것으로부터 기인한다. 결과적인 우선순위 값들의 수치 순서는 선택된 프로세서 코어들의 상대적인 우선순위들을 결정할 수도 있다. 일 양태에서, 제 1 또는 최고 우선순위 값을 갖는 선택된 프로세서 코어는 가상적 프로세서 식별정보 변환 테이블의 상단으로 이동될 수도 있고 제 1 행에서 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보와 연관될 수도 있다. 제 2 우선순위 값을 갖는 선택된 프로세서 코어는 가상적 프로세서 식별정보 변환 테이블의 제 2 행으로 이동될 수도 있고, 제 2 행에서 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보와 연관될 수도 있고, 선택된 프로세서 코어들의 전부에 대하여, 이하 등등과 같다.
프로세서가 선택된 프로세서 코어들이 비활성인 것으로 결정할 때 (즉, 결정 블록 (504) = "예"), 프로세서는 블록 (514) 에서, 선택된 프로세서 코어들에 대한 내장 자체 테스트를 실행할 수도 있다. 내장 자체 테스트는 프로세서가 프로세서 코어들에 대한 우선순위들을 계산하기 위해 관련되는 선택된 프로세서 코어들로부터 열 출력 및 전류 누설 데이터를 수집할 수도 있도록 실행하기 위하여, 선택된 프로세서 코어들에 대한 작업부하를 제공할 수도 있다. 내장 자체 테스트는 선택된 프로세서 코어들이 이와 다르게 비활성이거나, 아이들이거나, 또는 중단 상태에 있는 동안에 실행될 수도 있다. 일 양태에서, 내장 자체 테스트는 컴퓨팅 디바이스의 부트 프로세스 동안에 (프로세서 코어들의 디폴트 그룹 (default group) 으로서 사전선택될 수도 있는) 선택된 프로세서 코어들에 대해 실행될 수도 있다. 블록 (516) 에서, 프로세서는 내장 자체 테스트 동안에 획득된 선택된 프로세서 코어들에 대한 관련된 데이터를 수집할 수도 있다.
임의적인 블록 (517) 에서, 자체 테스트 데이터는 블록 (507) 에서 수집된 동작 데이터를 저장하기 위하여 이용된 비-휘발성 메모리와 같이, 프로세서에 의해 액세스가능한 비-휘발성 메모리 내에 저장될 수도 있다. 자체 테스트 데이터를 비-휘발성 메모리 내에 저장하는 것은 초기 프로세서 코어 우선순위들 및 맵핑들을 설정하기 위하여 이 정보가 부트 시간에서 이용되는 것을 가능하게 할 수도 있다.
프로세서는 또한, 내장 자체 테스트 데이터를 수집하는 것의 일부로서 선택된 프로세서 코어들에 대한 동작 시간 데이터를 취출할 수도 있다. 블록 (518) 에서, 프로세서는 블록 (508) 에서와 동일한 방식으로, 수집된 동작 데이터 및 동작 이력에 기초하여 선택된 프로세서 코어들의 각각에 대한 우선순위들을 계산할 수도 있다. 블록 (526) 에서, 프로세서는 위에서 설명된 바와 같이, 가상적 프로세서 식별정보 변환 테이블에서 하드웨어 프로세서 코어 우선순위를 업데이트할 수도 있다.
또 다른 양태에서, 프로세서가 선택된 프로세서 코어들이 비활성인 것으로 결정할 때 (즉, 결정 블록 (504) = "예"), 임의적인 결정 블록 (520) 에서, 프로세서는 컴퓨팅 디바이스가 콜드 부트 (cold boot) 상태에 있고, 블록 (514) 에서 선택된 프로세서 코어들에 대한 내장 자체 테스트를 실행하는 것이 아니라, 신속하게 부팅하도록 구성되는지 여부를 임의적으로 결정할 수도 있다. 콜드 부트는 컴퓨팅 디바이스가 전력 차단 상태로부터 부팅할 때에 발생할 수도 있다. 프로세서가 컴퓨팅 디바이스가 콜드 부트 상태에 있지 않거나, 콜드 부트 상태에 있지만 고속으로 부팅하도록 구성되는 것으로 결정할 때 (즉, 임의적인 결정 블록 (520) = "아니오"), 프로세서는 블록 (514) 에서, 선택된 프로세서 코어들에 대한 내장 자체 테스트를 실행할 수도 있고, 위에서 설명된 바와 같이 진행할 수도 있다.
프로세서가 컴퓨팅 디바이스가 콜드 부트 상태에 있고 고속으로 부팅하도록 구성되는 것으로 결정할 때 (즉, 임의적인 결정 블록 (520) = "예"), 프로세서는 임의적인 블록 (522) 에서, 비-휘발성 메모리로부터 저장된 내장 자체 테스트 데이터 또는 저장된 동작 데이터와, 선택된 프로세서 코어들에 대한 동작 이력을 취출할 수도 있다. 비-휘발성 메모리는 블록 (507) 에서 수집된 동작 데이터를 저장하기 위해 이용된 동일한 메모리, 및/또는 블록 (517) 에서 자체 테스트 데이터를 저장하기 위해 이용된 동일한 메모리일 수도 있다. 일 양태에서, 프로세서가 선택된 프로세서 코어들에 대한 저장된 내장 자체 테스트 데이터 및 동작 데이터의 조합을 취출하는 것이 가능할 수도 있다. 예를 들어, 선택된 프로세서 코어들에 대한 저장된 내장 자체 테스트 데이터 또는 동작 데이터는 불완전할 수도 있고, 프로세서는 손실 데이터를, 다른 타입의 데이터가 이용가능할 때에 다른 타입의 데이터로 보충할 수도 있다. 프로세서는 또한, 프로세서 코어들의 우선순위들을 계산할 시에 이용된, 데이터의 타입들 중의 하나 이상에 대한 내장 자체 테스트 데이터 또는 동작 데이터 중의 하나가 더 최신일 수도 있다는 결정을 행할 수도 있고, 데이터의 하나 이상의 타입들에 대한 사용자에게 더 최신 데이터를 결정할 수도 있다.
임의적인 블록 (524) 에서, 프로세서는 위에서 설명된 바와 같이 블록들 (508 및 518) 에서와 동일한 방식으로, 취출된 저장된 데이터 및 동작 이력에 기초하여 선택된 프로세서 코어들의 각각에 대한 우선순위들을 계산할 수도 있다. 블록 (526) 에서, 프로세서는 위에서 설명된 바와 같이, 가상적 프로세서 식별정보 변환 테이블에서 하드웨어 프로세서 코어 우선순위를 업데이트할 수도 있다.
대안적인 양태들에서, 컴퓨팅 디바이스 또는 시스템은 프로세서가 프로세서 코어들을 어떻게 재우선순위화할 것인지를 결정하기 위하여 자체 테스트들 또는 실행 시간 측정들을 이용하기만 하도록 구성될 수도 있다. 자체 테스트들을 이용하기만 하는 양태들에서는, 블록들 (504 내지 512) 의 동작들이 수행되지 않을 수도 있고, (517) 에서 메모리 내에 저장된 자체 테스트들의 결과들은 이전에 설명된 바와 같이, 최초의 자체 테스트가 수행될 수 있기 전에 초기 프로세서 우선순위들을 설정하기 위하여 부트 시간에서 이용될 수도 있다. 프로세서 코어들을 재우선순위화하기 위하여 실행 시간 측정들을 이용하기만 하는 양태들에서는, 블록 (514 내지 524) 의 동작들이 수행되지 않을 수도 있고, 실행 시간 측정들의 결과들은 결과들이 추후의 부트 사이클들에서, 또는 실행 시간 동안에 참조될 수 있도록 비-휘발성 저장장치 내에 저장될 수도 있다. 이러한 양태들에서, 프로세서는 충분한 실행 시간 측정들이 메모리 내에 저장되었기 전에 초기 부트 사이클 시에 이용될 수도 있는 디폴트 프로세서 코어 맵핑 (예컨대, 0=0, 1=1, 2=2, 3=3) 으로 구성될 수도 있다.
도 6 은 업데이트된 하드웨어를 포함하는 시스템에 대한 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화를 위한 일 양태의 방법 (600) 을 예시한다. 신뢰성 엔진을 실행하는 프로세서는 방법 (600) 을 실행할 수도 있다.
도 3 에서 예시된 확장, 업그레이드된, 대체된, 또는 추후에 추가된 프로세서 코어들 (326) (예컨대, 모뎀 프로세서들, 추가 또는 대체 그래픽 프로세서들 (GPU 들), 추가 또는 대체 오디오 프로세서들, 및 추가 또는 대체 DSP 들) 과 같이, 컴퓨팅 디바이스에 대한 새로운 프로세서 코어들을 포함하는 새로운 프로세싱 하드웨어의 추가는 새로운 프로세서 코어들과 더 이전의 프로세서 코어들 사이의 마모 레벨들에서의 불균형을 생성할 수도 있다. 프로세서 코어들의 이러한 추후-추가된/대체된/업그레이드된 세트는 컴퓨팅 디바이스의 판매 후에 언젠가 임의적으로 추가될 수도 있는 (예컨대, 사전-존재하는 인터페이스 슬롯으로 플러깅됨) 제 2 CPU 클러스터 (326) 와 유사할 수 있다. 불균형은 프로세서 코어들 상의 마모를 평탄화하기 위한 시도로 더 이전의 프로세서 코어들에 비해 새로운 프로세서 코어들을 대폭 우선순위화할 정도로 클 수도 있다. 그러나, 이것은 새로운 하드웨어를 추가하는 목적을 무산시킬 수도 있는데, 이는 보충적인 하드웨어를 추가함으로써, 새로운 하드웨어가 컴퓨팅 디바이스의 성능을 증가시키기 위하여 종종 추가되기 때문이다. 하드웨어 이용 레벨들이 안정될 때까지 새로운 하드웨어를 이전 하드웨어 위에 우선순위화하는 것은 그것을 보충하는 것이 아니라 시간의 주기에 대해 이전 하드웨어를 대체하는 의도되지 않은 효과를 가질 수도 있다. 이에 따라, 새로운 하드웨어에 너무 과중하게 의존하는 것을 회피하기 위하여, 블록 (602) 에서, 신뢰성 엔진을 실행하는 프로세서는 선택된 코어들에 대한 이력 동작 시간을 동작 시간 임계점과 비교할 수도 있다. 동작 시간 임계점은 새로운 그리고 이전 프로세서 코어들에 대한 동작 시간 데이터에 기초하여 미리 결정되거나 계산될 수도 있다. 동작 시간 임계점은 새로운 프로세서 코어들이 언제 이전 프로세서 코어들과 동일하게 다루어질 수도 있는지에 대한 구분 라인을 제공할 수도 있다. 결정 블록 (604) 에서, 프로세서는 선택된 프로세서 코어들의 이력 동작 시간의 임의의 것이 동작 시간 임계점을 초과하는지 여부를 결정할 수도 있다. 다시 말해서, 프로세서는 새로운 프로세서 코어들 중의 임의의 것이 너무 새로워서 이들이 등가적인 프로세서 코어들의 우선순위를 결정하는 목적들을 위하여 더 이전의 프로세서 코어들과 혼합되도록 아직 충분하게 실행되지 않았는지 여부를 알아 볼 것을 검사할 수도 있다.
프로세서 코어가 적어도 하나의 프로세서 코어의 이력 동작 시간이 동작 시간 임계점을 초과하는 것으로 결정할 때 (즉, 결정 블록 "604" = 예), 블록 (606) 에서, 프로세서는 선택된 프로세서 코어들을 임계점 초과 (또는 새로운) 프로세서 코어들, 및 임계점 미만 (또는 이전) 프로세서 코어들로 그룹화할 수도 있다. 블록 (608) 에서, 프로세서는 다른 그룹에 관계 없이 선택된 프로세서 코어들의 임계점 초과 및 임계점 미만 그룹들의 각각에 대하여 방법 (500) 을 실행할 수도 있다. 이에 따라, 예를 들어, 블록 (602) 에서, 프로세서는 선택된 프로세서 코어들의 임계점 초과 또는 임계점 미만 그룹들의 어느 하나를 선택할 수도 있고, 위에서 설명된 바와 같이 나머지 블록들을 실행할 수도 있다. 프로세서는 최초에 선택되지 않았던 그룹에 대해 동일한 사항을 행할 수도 있다. 이 양태에서, 이전 및 새로운 프로세서 코어들은 별도로 우선순위화되고, 유사한 물품의 다른 프로세서 코어들과 오직 비교된다. 이에 따라, 이전 및 새로운 그룹들의 양자에서의 프로세서 코어들에는, 하이 레벨 오퍼레이팅 시스템으로부터의 프로세싱 요청들이 배정될 수도 있다. 프로세서가 프로세서 코어의 이력 동작 시간의 어느 것도 동작 시간 임계점을 초과하지 않는 것으로 결정할 때 (즉, 결정 블록 "604" = 아니오), 블록 (610) 에서, 프로세서는 선택된 프로세서 코어들의 전부에 대해 함께 방법 (500) 을 실행할 수도 있다.
방법 (600) 은 서버의 멀티-코어 프로세서들의 동작 시간들이 소비자 디바이스에서보다 종종 더 높은 서버 환경에서 특히 유용할 수도 있다. 서버들은 서버 가동시간이 서버에 의해 지원된 기능들에 중요할 수도 있는 상업적 세팅에서 종종 채용되므로, 멀티-코어 프로세서들에 대한 수요는 일정한 것에 근접할 수도 있다. 서버들은 또한, 프로세싱 하드웨어를 추가하고, 제거하고, 대체함으로써 이용들 및 수요의 레벨들을 변동시키기 위해 신축성 있게 재구성되도록 종종 구성된다. 멀티-코어 프로세서들을 추가하거나 대체하는 것과 같은, 서버에서의 프로세싱 하드웨어의 추가 및 대체는 서버들이 새로운 태스크들인, 동일한 태스크들의 더 많은 것을 수행하거나, 추가들 전보다 더욱 양호하게 태스크들을 수행하도록 한다. 서버의 멀티-코어 프로세서들의 높은 동작 시간은 현재 채용된 멀티-코어 프로세서들과 새롭게 도입된 멀티-코어 프로세서들 사이의 큰 격차들로 귀착될 수도 있다. 위에서 언급된 바와 같이, 서버 시스템들은 연산 서버들, 데이터 서버들, 통신 기반구조 랙 서버들, 비디오 분배 서버들, 애플리케이션 특정 서버들 등을 포함할 수도 있다. 서버 환경에서 방법 (600) 을 구현하는 것은 더 높은 가동시간으로 귀착되는 서버들의 신뢰성을 증가시킬 수도 있고, 이것은 서버 서비스 제공자들과, 서버 액세스에 의존하는 그러한 사람들을 위한 중요한 양태이다.
도 7 은 테스트/동작 데이터를 수집하고 프로세서 코어 우선순위들을 계산하기 위한 일 양태의 방법 (700) 을 예시한다. 신뢰성 엔진을 실행하는 프로세서는 방법 (700) 을 실행할 수도 있다. 이 방법 (700) 은 도 5 를 참조하여 위에서 설명된 방법 (500) 의 블록들 (506, 508, 514, 및 516) 에서 테스트/동작 데이터를 수집하고 프로세서 코어 우선순위들을 계산하기 위한 동작들을 설명한다. 프로세서가 결정 블록 (504) 에서, 선택된 프로세서 코어들이 비활성인 것으로 결정할 때 (즉, 방법 (500) 에서의 결정 블록 (504) = "예"), 프로세서는 블록 (702) 에서, 테스트 작업부하를 선택된 프로세서 코어들에 적용할 수도 있다. 테스트 작업부하는 프로세서 코어들에서 어떤 거동들을 야기시키도록 설계된 미리 결정된 작업부하일 수도 있다. 예를 들어, 테스트 작업부하는 정상 작업부하를 제공함으로써 프로세서 코어들로부터 정상 작업 응답을 유발하는 것을 시도할 수도 있다. 유사하게, 테스트 작업부하는 태스크들의 과중한 작업부하를 프로세서 코어들에 제공함으로써 프로세서 코어들로부터 과중한 작업 응답을 유발하는 것을 시도할 수도 있다. 상이한 작업부하들은 그래픽 프로세서 코어들에 대한 그래픽 프로세싱 작업부하와 같은 상이한 타입들의 프로세서 코어들에 대해 지정될 수도 있다.
블록 (704) 에서, 프로세서는 블록 (702) 에서의 자체 테스트 동안에 수집된 데이터에 기초하여, 또는 코어들이 활성일 때 (즉, 방법 (500) 에서의 결정 블록 (504) = "아니오") 에 프로세서 코어들의 정상 동작들로부터 수집된 데이터에 기초하여, 각각의 선택된 프로세서 코어의 열 출력을 측정할 수도 있다. 예를 들어, 온도 데이터는 프로세서 코어들을 포함하는 멀티-코어 프로세서들의 다이 (die) 상에 전략적으로 배치될 수도 있는 열 센서들로부터 획득될 수도 있다. 다수의 센서들로부터의 온도 데이터의 분석은 개별적인 프로세서 코어들의 열 출력을 계산하기 위하여 이용될 수도 있다. 프로세서 코어들이 아주 근접하게 함께 배치되어, 프로세서 코어들 중의 하나 이상의 프로세서 코어의 열 출력이 프로세서 코어들 중의 또 다른 것에 영향을 주는 양태에서는, 각각의 프로세서 코어를 개별적으로가 아니라, 프로세서 코어들의 그룹의 열 출력을 관찰하는 것이 충분할 수도 있다. 이러한 양태에서는, 열 출력을 관찰하기 위하여 프로세서 코어 당 요구된 열 센서들의 수를 감소시키는 것이 가능할 수도 있다.
블록 (706) 에서, 프로세서는 각각의 선택된 프로세서 코어의 전류 누설을 측정할 수도 있다. 코어를 통한 전압 강하, 또는 코어에 의해 소비된 전류의 양이 관찰되고 레코딩될 수도 있도록, 전류 또는 전압 센서들은 프로세서 코어들을 포함하는 멀티-코어 프로세서들의 다이 상에 전략적으로 배치될 수도 있다. 전류 누설은 또한, 온도 센서들을 이용하여 관찰될 수도 있는 개별적인 프로세서 코어들의 열 출력에 기초하여 계산될 수도 있다.
블록 (708) 에서, 프로세서는 각각의 선택된 프로세서 코어의 이력 동작 시간을 취출할 수도 있다. 위에서 설명된 바와 같이, 이력 동작 시간은 메모리, 저장 컴포넌트, 멀티-코어 프로세서, 또는 프로세서 코어들의 이력 동작 시간을 추적하고 레코딩하는 것에 전용인 일부의 다른 컴포넌트로부터 취출될 수도 있다. 이력 동작 시간은 다수의 상이한 방식들로 제시될 수도 있다. 일 양태에서, 이력 동작 시간은 (본원에서 "활성 시간" 으로서 지칭된) 프로세서 코어가 활성이었던 시간의 양의 카운트 값을 포함할 수도 있다. 일 양태에서, 이력 동작 시간은 다른 등가적인 프로세서 코어들의 활성 시간의 양과 비교된 코어 상의 활성 시간의 비교 (또는 상대적 척도) 에 기초하는 프로세서 코어에 대한 상대적인 활성 시간 값을 포함할 수도 있다. 예를 들어, 이력 동작 시간은 특정한 동작 코어가 활성이었던 등가적인 프로세서 코어들의 전부의 총 동작 시간의 백분율일 수도 있다.
블록 (710) 에서, 프로세서는 열 출력 가중화 인자를, 선택된 프로세서 코어들의 각각의 프로세서 코어의 측정된 열 출력에 적용할 수도 있다. 블록 (712) 에서, 프로세서는 전류 누설 가중화 인자를, 선택된 프로세서 코어들의 각각의 프로세서 코어의 측정된 전류 누설에 적용할 수도 있다. 블록 (714) 에서, 프로세서는 동작 시간 가중화 인자를, 선택된 프로세서 코어들의 각각의 프로세서 코어의 이력 동작 시간에 적용할 수도 있다. 가중화 인자들의 각각에 대하여, 가중화 인자는 등가적인 프로세서 코어들에 걸쳐 동일하게 유지될 수도 있다. 예를 들어, 열 출력 가중화 인자는 등가적인 프로세서 코어들의 각각에 대해 동일할 수도 있다. 일 양태에서, 가중화 인자들은 동일할 수도 있거나, 비-등가적인 (nonequivalent) 프로세서 코어들에 대해 변동될 수도 있다. 예를 들어, 열 출력 가중화 인자는 그래픽 프로세서 코어와 비교하여 일반적인 프로세서 코어에 대해 동일할 수도 있거나 동일하지 않을 수도 있다. 다양한 양태들에서, 가중화 인자를 측정된 또는 이력 값들에 적용하는 것은 임의의 수의 수학적 연산들 중의 하나 이상을 이용하는 것을 포함할 수도 있다. 예를 들어, 측정된 또는 이력 값들은 그 각각의 가중화 인자들과 승산될 수도 있다.
블록 (716) 에서, 프로세서는 각각의 선택된 프로세서 코어의 가중화된 열 출력, 가중화된 전류 누설, 및/또는 가중화된 이력 동작 시간을 개별적으로 조합할 수도 있어서, 각각의 선택된 프로세서 코어에 대한 우선순위 값으로 귀착될 수도 있다. 위에서 설명된 바와 같이, 이 값들의 조합은 다양한 형태들로 달성될 수도 있다. 다양한 양태들에서, 이 값들의 일부 또는 전부는 각각의 선택된 프로세서 코어에 대한 우선순위 값들을 생성하기 위하여 조합될 수도 있다. 일부의 양태들에서, 값들의 일부는 수학적 연산을 통해 폐기된 값을 다른 값들과 조합하지 않음으로써, 또는 그 각각의 가중화 인자를 이용하여 값을 상쇄시키는 것에 의해 값을 무시함으로써, 조합 내에 포함되지 않을 수도 있다.
프로세서 코어들에 관한 동작 정보의 상이한 타입들은 독립적일 수도 있고 이에 따라, 반드시 동작들이 도 7 에서 예시되는 순서가 아니라, 임의의 순서로 획득되고 프로세싱될 수도 있다는 것에 주목해야 한다. 예를 들어, 프로세서는 부트 업 (boot up) 또는 시스템 초기화 시에만 전류 누설을 샘플링할 수 있고, 그 후에 주기적으로 (예컨대, 1 시간마다), 그리고 정상 동작들의 일부로서 온도/열 측정들을 획득할 수 있다. 그러므로, 도 7 에서 예시된 동작들의 시퀀스는 예시의 목적들만을 위한 것이고, 청구항들의 범위를 제한하도록 의도된 것이 아니다.
도 8 은 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 하드웨어 프로세서 코어 우선순위로 변환하기 위한 일 양태의 방법 (800) 을 예시한다. 신뢰성 엔진을 실행하는 프로세서는 방법 (800) 을 실행할 수도 있다. 블록 (802) 에서, 프로세서는 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 특정하는 하이 레벨 오퍼레이팅 시스템으로부터 프로세스 요청을 수신할 수도 있다. 그렇게 행함에 있어서, 하이 레벨 오퍼레이팅 시스템은, 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보에 의해 식별된 프로세서 코어에는 프로세스 요청이 배정될 것이라는 것을 예상하고 있다. 예를 들어, 가상적 및 물리적 프로세서 코어 식별자들의 원래의 쌍은 가상적 식별자 프로세서 코어 0 을 물리적 식별자 프로세서 코어 0 과 쌍을 이룰 수도 있다. 그러나, 프로세서 코어들이 도 4 에서의 우선순위들 표에서 예시된 바와 같이 우선순위화될 경우, 가상 식별자 프로세서 코어 0 은 물리적 식별자 프로세서 코어 2 와 쌍을 이루게 될 수도 있다.
블록 (804) 에서, 프로세서는 그 우선순위에 따라 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보를 대응하는 하드웨어 프로세서 코어 식별정보와 일치시킬 수도 있다. 프로세서 코어들이 우선순위화되고 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보의 그 원래의 쌍과 더 이상 일치되지 않을 때, 하이 레벨 오퍼레이팅 시스템에 의해 행해진 프로세스 요청이 프로세서 코어, 그리고 더욱 구체적으로, 적절한 프로세서 코어에 맵핑되도록, 프로세서는 하이 레벨 오퍼레이팅 시스템 프로세서 코어 식별정보와 새롭게 우선순위화된 프로세서 코어들 사이의 연결을 행할 수도 있다. 그러나, 적절한 프로세서 코어는 이제 더 이상, 하이 레벨 오퍼레이팅 시스템이 예상하는 프로세서 코어가 아닐 수도 있다.
블록 (806) 에서, 프로세서는 특정된 프로세서 코어 식별정보에 대한 하이 레벨 오퍼레이팅 시스템으로부터의 프로세스 요청을, 대응하는 하드웨어 프로세서 코어 식별정보가 배정된 프로세서 코어에 맵핑할 수도 있다. 프로세서는 프로세싱 요청을, 요청된 가상적 프로세서 코어 식별자와 지금 연관된 프로세서 코어에 맵핑할 수도 있다. 연관된 프로세서 코어는 프로세스 요청을 실행하기 위한 프로세서 코어일 수도 있다.
블록 (808) 에서, 프로세서는 프로세스 요청이 프로세스 요청에서 하이 레벨 오퍼레이팅 시스템에 의해 식별된 프로세서 코어에 의해 실행되었던 것처럼, 프로세스 요청의 결과를 하이 레벨 오퍼레이팅 시스템으로 반환할 수도 있다. 프로세서 코어들의 우선순위들의 변경을 하이 레벨 오퍼레이팅 시스템에 통지하지 않음으로써, 그리고 하이 레벨 오퍼레이팅 시스템이 변경들에 대해 조절할 필요 없이 프로세스 요청들을 관리함으로써, 하이 레벨 동작 시스템에서 복잡도의 계층을 제거할 수도 있고, 오퍼레이팅 시스템에서 양태들을 구현하기 위하여 이와 다르게 필요할 수도 있는 비용들을 감소시킬 수도 있다.
도 9 는 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화에서 이용하기 위한 가중화 값들을 업데이트하기 위한 일 양태의 방법 (900) 을 예시한다. 제조자 내의 컴퓨터는 방법 (900) 의 적어도 일부의 동작들을 실행할 수도 있다. 제조자들은 제조하는 동안에 프로세서 코어들의 성능 특성들에 대해 학습할 수도 있고, 그 다음으로, 프로세서 코어들의 테스팅 단계들 동안에 검출되지 않았던, 비효율들 및 불균등한 열 사이클링과 같은 쟁점들을 고치기 위한 이용 시에 프로세서 코어들을 조절하기 위하여 데이터를 이용할 수도 있다. 예를 들어, 제조자가 새로운 프로세스에서 집적 회로들의 생산을 늘릴 때, 제조자는 전형적으로, 웨이퍼 제조 프로세스의 튜닝 (tuning) 동안에 프로세서 코어들의 가변성 및 성능에 대한 것들을 학습한다. 이러한 학습은 예컨대, 이전에 제조된 로트들로부터 집적 회로를 구현하는 컴퓨팅 디바이스들을 위한 오버-디-에어 업데이트들에서 업데이트된 파라미터들을 송신함으로써, 제조자가 이미 필드 테스트된 디바이스들을 수정하는 것을 안내할 수도 있다. 또 다른 예로서, 고장난 소비자 제품들은 예컨대, 잘 알려진 반환 상품 허가 (Return Merchandise Authorization; RMA) 프로세스에 따라 제조자에게 반환될 수도 있다. 반환된 상품은 상품 반환들을 촉발하였던 디바이스 고장들로 이어지는 쟁점들의 패턴을 탐색하기 위하여 분석될 수도 있다. 반환된 상품에서의 고장들의 분석을 통해, 제조자는 프로세서 코어들 상의 마모를 변경하기 위하여 가중화 값들을 업데이트함으로써, 그것이 그 프로세서 코어들의 고장률 (failure rate) 들 및 장수명 (longevity) 을 개선시킬 수 있는 것으로 결정할 수도 있다.
블록 (902) 에서, 제조자는 고장들의 원인들 및 고장률 데이터를 결정하기 위하여 반환된 상품을 수납하고 이를 분석할 수도 있다. 이 데이터는 RMA 프로세스에 의하여 획득된 잠재적으로 결함있거나 파손된 프로세서 코어들의 고객 논평들 및 기술적 분석을 포함할 수도 있다. 일 양태에서, 블록 (904) 에서는, 제조자가 또한, 유선 또는 무선 접속 상에서 통신들을 통해 기능하는 컴퓨팅 디바이스들로부터 프로세서 코어들의 동작 및 테스트 데이터를 수신할 수도 있다.
블록 (906) 에서, 제조자는 컴포넌트 고장들의 원인들을 결정하기 위하여 수신될 경우에 반환 상품 분석 데이터와, 동작 및 테스트 데이터를 분석할 수도 있다. 블록 (908) 에서, 제조자는 컴포넌트들의 고장들의 원인들을 회피할 수도 있는 수신된 데이터를 이용하여 프로세서 코어들에 대한 가중화 인자들 중의 하나 이상에 대한 업데이트들을 결정할 수도 있다. 가중화 인자들은 프로세서 코어들의 더 양호하거나 더 균등한 마모로 이어질 것으로 예상되는 방식으로 코어들의 우선순위화를 비스듬하게 하기 위하여, 프로세서 코어들에 관한 데이터의 하나 이상에 대해 더 크거나 더 적은 중요도를 설정하도록 수정될 수도 있다.
블록 (910) 에서, 제조자는 예컨대, 컴퓨팅 디바이스에 대한 오버-디-에어 업데이트, 기술자에 의해 달성된 점포내 (in-store) 업데이트, 또는 인터넷으로의 유선 또는 무선 네트워크 접속 상에서 인터넷 서버로부터 컴퓨팅 디바이스 (예컨대, 데스크톱 또는 랩톱 컴퓨터) 로 다운로딩되는 업데이트의 형태로, 유선 또는 무선 접속 상에서 업데이트된 가중화 인자들을 컴퓨팅 디바이스로 전송할 수도 있다. 이러한 업데이트들을 전송하는 것은 컴퓨팅 디바이스로의 데이터의 타겟화된 또는 브로드캐스팅된 푸시 (push) 를 이용하여 달성될 수도 있거나, 컴퓨팅 디바이스는 업데이트를 통지받을 수도 있고 인터넷 서버로부터 업데이트를 다운로딩 (즉, 풀링 (pull)) 하도록 요청받을 수도 있다.
도 10 은 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화에서 이용하기 위한 가중화 값들을 업데이트하기 위한 일 양태의 방법을 예시하는 프로세스 흐름도이다. 연관된 방법 (1000) 내지 방법 (900) 에서는, 컴퓨팅 디바이스가 가중화 값들을 업데이트하기 위하여 데이터를 제조자에게 전송할 수도 있고 데이터를 수신할 수도 있다.
블록 (1002) 에서, 컴퓨팅 디바이스는 무선 접속 상에서 동작 및 테스트 데이터를 제조자에게 전송할 수도 있다. 컴퓨팅 디바이스 및/또는 제조자의 어느 하나는 이 데이터의 송신을 위한 셋업이 아니므로, 이 데이터를 전송하는 것은 임의적일 수도 있거나, 컴퓨팅 디바이스 상에서의 사용자 옵션 (option) 으로서 임의적일 수도 있다.
블록 (1004) 에서, 컴퓨팅 디바이스는 열 출력, 전류 누설, 및 동작 시간 중의 하나 이상에 대한 업데이트된 가중화 인자들을 수신할 수도 있다. 수신된 업데이트된 가중화 인자들은 컴퓨팅 디바이스로 전송되거나 컴퓨팅 디바이스에 의해 이용가능하게 된 업데이트된 가중화 인자들에 종속적일 수도 있고, 및/또는 업데이트된 가중화 인자들은 컴퓨팅 디바이스 및/또는 사용자에 의해 수용될 수도 있다.
블록 (1006) 에서, 신뢰성 엔진을 실행하는 프로세서는 가중화 인자들을 업데이트 가중화 인자들로 대체할 수도 있다. 일 양태에서, 이전 가중화 인자들의 일부 또는 전부는 새로운 가중화 인자들로 업데이트될 때, 삭제될 수도 있거나, 그 포인터들로부터 분리될 수도 있거나, 겹쳐쓰기될 수도 있다. 업데이트된 인자들은 프로세서 코어들이 우선순위화되는 다음 시간에 이용될 수도 있다.
도 11 은 스마트폰의 형태로 다양한 양태들을 구현하기 위해 적당한 컴퓨팅 디바이스의 예를 예시한다. 스마트폰 컴퓨팅 디바이스 (1100) 는 터치 스크린 제어기 (1104) 및 내부 메모리 (1106) 에 결합된 멀티-코어 프로세서 (1102) 를 포함할 수도 있다. 멀티-코어 프로세서 (1102) 는 일반적인 또는 특정 프로세싱 태스크들에 대해 지정된 하나 이상의 멀티-코어 집적 회로들일 수도 있다. 내부 메모리 (1106) 는 휘발성 또는 비-휘발성 메모리일 수도 있고, 또한, 보안 및/또는 암호화된 메모리, 또는 비보안 및/또는 비암호화된 메모리, 또는 그 임의의 조합일 수도 있다. 터치스크린 제어기 (1104) 및 멀티-코어 프로세서 (1102) 는 또한, 저항-감지 터치스크린 (resistive-sensing touchscreen), 용량-감지 터치스크린 (capacitive-sensing touchscreen), 적외선 감지 터치스크린 (infrared sensing touchscreen) 등과 같은 터치스크린 패널 (1112) 에 결합될 수도 있다. 추가적으로, 컴퓨팅 디바이스 (1100) 의 디스플레이는 터치 스크린 기능을 가질 필요가 없다.
스마트폰 컴퓨팅 디바이스 (1100) 는, 서로 및/또는 멀티-코어 프로세서 (1102) 에 결합된, 통신들을 전송하고 수신하기 위한 하나 이상의 라디오 신호 트랜시버들 (1108) (예컨대, Peanut, Bluetooth, Zigbee, Wi-Fi, RF 라디오) 및 안테나들 (1110) 을 가질 수도 있다. 트랜시버들 (1108) 및 안테나들 (1110) 은 다양한 무선 송신 프로토콜 스택 (wireless transmission protocol stack) 들 및 인터페이스들을 구현하기 위하여 상기 언급된 회로부와 함께 이용될 수도 있다. 스마트폰 컴퓨팅 디바이스 (1100) 는, 셀룰러 네트워크를 통한 통신을 가능하게 하고 프로세서에 결합되는 셀룰러 네트워크 무선 모뎀 칩 (1116) 을 포함할 수도 있다.
스마트폰 컴퓨팅 디바이스 (1100) 는 멀티-코어 프로세서 (1102) 에 결합된 주변 디바이스 접속 인터페이스 (1118) 를 포함할 수도 있다. 주변 디바이스 접속 인터페이스 (1118) 는 하나의 타입의 접속을 수용하도록 단수로 구성될 수도 있거나, USB, 파이어와이어 (FireWire), 썬더볼트 (Thunderbolt), 또는 PCIe 와 같은, 공통 또는 전용인, 다양한 타입들의 물리적 및 통신 접속들을 수용하도록 구성될 수도 있다. 주변 디바이스 접속 인터페이스 (1118) 는 또한, 유사하게 구성된 주변 디바이스 접속 포트 (도시되지 않음) 에 결합될 수도 있다.
스마트폰 컴퓨팅 디바이스 (1100) 는 또한, 오디오 출력들을 제공하기 위한 스피커들 (1114) 을 포함할 수도 있다. 스마트폰 컴퓨팅 디바이스 (1100) 는 또한, 본원에서 논의된 컴포넌트들의 전부 또는 일부를 포함하기 위한, 플라스틱, 금속, 또는 재료들의 조합으로 구성된 하우징 (1120) 을 포함할 수도 있다. 스마트폰 컴퓨팅 디바이스 (1100) 는 1 회용 또는 재충전가능한 배터리와 같이, 멀티-코어 프로세서 (1102) 에 결합된 전원 (1122) 을 포함할 수도 있다. 재충전가능한 배터리는 또한, 스마트폰 컴퓨팅 디바이스 (1100) 의 외부의 소스로부터 충전 전류를 수신하기 위하여 주변 디바이스 접속 포트에 결합될 수도 있다. 스마트폰 컴퓨팅 디바이스 (1100) 는 또한, 사용자 입력들을 수신하기 위한 물리적 버튼 (1124) 을 포함할 수도 있다. 스마트폰 컴퓨팅 디바이스 (1100) 는 또한, 스마트폰 컴퓨팅 디바이스 (1100) 를 온 (on) 및 오프 (off) 로 하기 위한 전원 버튼 (1126) 을 포함할 수도 있다.
위에서 설명된 다양한 양태들은 또한, 도 12 에서 예시된 랩톱 컴퓨터 (1200) 와 같은 다양한 다른 컴퓨팅 디바이스들 내에서 구현될 수도 있다. 다수의 랩톱 컴퓨터들은, 컴퓨터의 포인팅 디바이스로서 작용하고, 이에 따라, 터치 스크린 디스플레이를 구비한, 그리고 위에서 설명된 컴퓨팅 디바이스들 상에서 구현된 것들과 유사한 드래그 (drag), 스크롤 (scroll), 및 플릭 (flick) 제스처들을 수신할 수도 있는 터치패드 터치 표면 (1217) 을 포함한다. 랩톱 컴퓨터 (1200) 는 전형적으로, 휘발성 메모리 (1212) 와, 플래시 메모리의 디스크 드라이브 (1213) 와 같은 대용량 비-휘발성 메모리에 결합된 멀티-코어 프로세서 (1211) 를 포함할 것이다. 추가적으로, 컴퓨터 (1200) 는, 무선 데이터 링크, 및/또는 멀티-코어 프로세서 (1211) 에 결합된 셀룰러 전화 트랜시버 (1216) 에 접속될 수도 있는, 전자기 복사를 전송하고 수신하기 위한 하나 이상의 안테나 (1208) 를 가질 수도 있다. 컴퓨터 (1200) 는 또한, 멀티-코어 프로세서 (1211) 에 결합된 플로피 디스크 (floppy disc) 드라이브 (1214) 및 컴팩트 디스크 (CD) 드라이브 (1215) 를 포함할 수도 있다. 노트북 구성에서, 컴퓨터 하우징은 멀티-코어 프로세서 (1211) 에 모두 결합된 터치패드 (1217), 키보드 (1218), 및 디스플레이 (1219) 를 포함한다. 컴퓨팅 디바이스의 다른 구성들은 다양한 양태들과 함께 또한 이용될 수도 있는, 잘 알려진 바와 같이 (예컨대, USB 입력을 통해) 프로세서에 결합된 컴퓨터 마우스 또는 트랙볼 (trackball) 을 포함할 수도 있다. 데스크톱 컴퓨터는 컴포넌트들을 하나 이상의 별도의, 그러나 접속한 부분들로 분리하는 것과 컴포넌트들을 조합하는 것을 포함하는 다양한 구성들에서 이 컴퓨팅 디바이스 컴포넌트들을 유사하게 포함할 수도 있다.
다양한 양태들은 또한, 도 13 에서 예시된 서버 (1300) 와 같은, 다양한 상업적으로 입수가능한 서버 디바이스들 중의 임의의 것 상에서 구현될 수도 있다. 이러한 서버 (1300) 는 전형적으로, 휘발성 메모리 (1302) 및, 디스크 드라이브 (1304) 와 같은 대용량 비-휘발성 메모리에 결합된 하나 이상의 멀티-코어 프로세서 어셈블리들 (1301) 을 포함한다. 도 13 에서 예시된 바와 같이, 멀티-코어 프로세서 어셈블리들 (1301) 은 이들을 어셈블리의 랙 (rack) 들 내로 삽입함으로써 서버 (1300) 에 추가될 수도 있다. 서버 (1300) 는 또한, 프로세서 (1301) 에 결합된 플로피 디스크 드라이브, 컴팩트 디스크 (CD) 또는 DVD 디스크 드라이브 (1306) 를 포함할 수도 있다. 서버 (1300) 는 또한, 다른 브로드캐스트 시스템 컴퓨터들 및 서버들에 결합된 로컬 영역 네트워크, 인터넷, 공중 교환 전화 네트워크, 및/또는 셀룰러 데이터 네트워크 (예컨대, CDMA, TDMA, GSM, PCS, 3G, 4G, LTE, 또는 임의의 다른 타입의 셀룰러 데이터 네트워크) 와 같은 네트워크 (1305) 과 네트워크 인터페이스 접속들을 확립하기 위한 멀티-코어 프로세서 어셈블리들 (1301) 에 결합된 네트워크 액세스 포트들 (1303) 을 포함할 수도 있다.
다양한 양태들의 동작들을 수행하기 위한 프로그래밍가능 프로세서 상에서의 실행을 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드" 는 C, C++, C#, 스몰토크 (Smalltalk), 자바 (Java), 자바스크립트 (JavaScript), 비쥬얼 베이직 (Visual Basic), 구조화 질의어 (Structured Query Language) (예컨대, 트랜잭트-SQL (Transact-SQL)), 펄 (Perl), 또는 다양한 다른 프로그래밍 언어들과 같은 하이 레벨 프로그래밍 언어로 기재될 수도 있다. 이 출원에서 이용된 바와 같은 컴퓨터 판독가능 저장 매체 상에 저장된 프로그램 코드 또는 프로그램들은 그 포맷이 프로세서에 의해 이해가능한 (오브젝트 코드와 같은) 머신 언어 코드를 지칭할 수도 있다.
시스템 커널들을 동작시키는 다수의 컴퓨팅 디바이스들은 (비-특권부여된 (non-privileged) 코드가 실행되는) 사용자 공간 및 (특권부여된 코드가 실행되는) 커널 공간 (kernel space) 으로 편성된다. 이 분리는, 커널 공간의 일부인 코드가 GPL 라이센싱되어야 하는 반면, 사용자-공간에서 실행되는 코드는 GPL 라이센싱되지 않을 수도 있는 안드로이드 (Android) 및 다른 일반 공중 라이선스 (general public license; GPL) 환경들에서 특히 중요하다. 여기에서 논의된 다양한 소프트웨어 컴포넌트들/모듈들은 이와 다르게 명시적으로 기재되지 않으면, 커널 공간 또는 사용자 공간의 어느 하나에서 구현될 수도 있다는 것이 이해되어야 한다.
상기한 방법 설명들 및 프로세스 흐름도들은 예시적인 예들에 불과한 것으로서 제공되고, 다양한 양태들의 동작들이 제시된 순서로 수행되어야 하는 것을 요구하거나 암시하도록 의도된 것이 아니다. 당해 분야의 당업자에 의해 인식되는 바와 같이, 상기한 양태들에서의 동작들의 순서는 임의의 순서로 수행될 수도 있다. "그 후", "다음으로", "다음" 등과 같은 단어들은 동작들의 순서를 제한하도록 의도된 것이 아니고; 이 단어들은 방법들의 설명을 통해 독자를 안내하기 위하여 간단하게 이용된다. 또한, 예를 들어, 관사들 "a", "an", 또는 "the" 를 이용하는 단수인 청구항 구성요소들에 대한 임의의 참조는 구성요소를 단수로 제한하는 것으로 해석되지 않아야 한다.
다양한 양태들과 관련하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 동작들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수도 있다. 하드웨어 및 소프트웨어의 이 교환가능성을 명확하게 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 동작들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션과, 전체 시스템에 부과된 설계 제약들에 종속된다. 숙련된 기술자들은 각각의 특정한 애플리케이션을 위한 다양한 방법들로 설명된 기능성을 구현할 수도 있지만, 이러한 구현 판단들은 본 발명의 범위로부터의 이탈을 야기시키는 것으로서 해석되지 않아야 한다.
본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리적 블록들, 모듈들, 및 회로들을 구현하기 위하여 이용된 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 애플리케이션 특정 집적 회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 그 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 기존의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신 (state machine) 일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예컨대, DSP 및 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 함께 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성의 조합으로서 구현될 수도 있다. 대안적으로, 일부의 동작들 또는 방법들은 소정의 기능에 특정적인 회로부에 의해 수행될 수도 있다.
하나 이상의 양태들에서는, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현될 경우, 기능들은 비-일시적인 컴퓨터-판독가능 매체 또는 비-일시적 프로세서-판독가능 매체 상에서 하나 이상의 명령들 또는 코드로서 저장될 수도 있다. 본원에서 개시된 방법 또는 알고리즘의 동작들은 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체 상에서 상주할 수도 있는 프로세서-실행가능 소프트웨어 모듈에서 구체화될 수도 있다. 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체들일 수도 있다. 제한이 아닌 예로서, 이러한 비-일시적 컴퓨터-판독가능 또는 프로세서-판독가능 매체들은 RAM, ROM, EEPROM, FLASH 메모리, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 희망하는 프로그램 코드를 저장하기 위해 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 이용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광학 디스크 (optical disc), 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크 (blu-ray disc) 를 포함하고, 여기서, 디스크 (disk) 들은 통상 데이터를 자기적으로 재생하는 반면, 디스크 (disc) 들은 데이터를 레이저들로 광학적으로 재생한다. 상기의 조합들은 또한, 비-일시적 컴퓨터-판독가능 및 프로세서-판독가능 매체들의 범위 내에 포함된다. 추가적으로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 제품 내로 편입될 수도 있는 비-일시적 프로세서-판독가능 매체 및/또는 컴퓨터-판독가능 매체 상에 코드들 및/또는 명령들 중의 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
개시된 양태들의 선행하는 설명은 당해 분야의 당업자가 본 발명을 제조하거나 이용하는 것을 가능하게 하도록 제공된다. 이 양태들에 대한 다양한 수정들은 당해 분야의 당업자들에게 용이하게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 발명의 사상 또는 범위로부터 이탈하지 않으면서 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본원에서 도시된 양태들로 제한되도록 의도된 것이 아니라, 다음의 청구항들 및 본원에서 개시된 원리들 및 신규한 특징들과 일관되는 가장 넓은 범위를 따르도록 하기 위한 것이다.

Claims (30)

  1. 멀티-코어 프로세서의 동작 수명을 연장하기 위하여 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법으로서,
    상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 단계;
    마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하는 단계; 및
    상기 계산된 우선순위에 기초하여 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 단계를 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  2. 제 1 항에 있어서,
    상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 단계는, 정상 동작들 하에서 상기 프로세서 코어들의 온도, 누적 사용량, 및 전류 누설 중의 하나 이상을 측정하는 단계를 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  3. 제 1 항에 있어서,
    상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 단계는,
    상기 프로세서 코어들이 활성인지 여부를 결정하는 단계;
    상기 프로세서 코어들이 비활성인 것으로 결정하는 것에 응답하여, 테스트 작업부하를 상기 프로세서 코어들의 각각에 제공하는 단계;
    상기 테스트 작업부하를 제공하는 것에 응답하여, 개별적으로 또는 상기 프로세서 코어들의 그룹들에 대하여 상기 테스트 작업부하 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 단계;
    상기 프로세서 코어들이 활성인 것으로 결정하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 정상 동작 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 단계; 및
    상기 프로세서 코어들의 각각에 대한 이력 동작 시간을 취출하는 단계를 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  4. 제 3 항에 있어서,
    마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하는 단계는, 가중화 인자들을, 상기 측정된 열 출력, 상기 측정된 전류 누설, 및 상기 이력 동작 시간과 승산함으로써, 그리고 그 곱들을 합산함으로써, 상기 프로세서 코어들의 각각에 대한 상기 우선순위를 계산하는 단계를 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  5. 제 4 항에 있어서,
    네트워크 접속을 통해 업데이트된 가중화 인자들을 수신하는 단계; 및
    상기 업데이트된 가중화 인자들로 상기 프로세서 코어들의 각각에 대한 우선순위를 계산할 시에 이용된 상기 가중화 인자들을 업데이트하는 단계를 더 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  6. 제 1 항에 있어서,
    상기 계산된 우선순위에 기초하여, 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 단계는,
    제 1 프로세서 코어에 대한 제 1 가상적 식별자를 특정하는 하이 레벨 오퍼레이팅 시스템으로부터 프로세스 요청을 수신하는 단계;
    상기 프로세스 요청을 제 2 프로세서 코어에 맵핑하는 단계; 및
    상기 제 1 프로세서 코어가 상기 프로세스 요청의 결과를 생성하였던 것처럼, 상기 프로세스 요청의 결과를 상기 하이 레벨 오퍼레이팅 시스템에 반환하는 단계를 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  7. 제 6 항에 있어서,
    상기 프로세서 코어들 중의 임의의 것에 대한 이력 동작 시간이 동작 시간 임계점을 초과하는지 여부를 결정하는 단계;
    상기 동작 시간 임계점을 초과하는 그 프로세서 코어들을 프로세서 코어들의 제 1 그룹으로 그룹화하고, 상기 동작 시간 임계점을 초과하지 않는 그 프로세서 코어들을 프로세서 코어들의 제 2 그룹으로 그룹화하는 단계; 및
    프로세서 코어들의 상기 제 2 그룹에 대한 연관성들과는 별도로, 프로세서 코어들의 상기 제 1 그룹에 대한 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과, 상기 프로세서 코어들의 각각과의 사이의 연관성들을 순서화하는 단계를 더 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  8. 제 1 항에 있어서,
    상기 계산된 우선순위에 기초하여, 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 단계는,
    상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하는 단계;
    상기 프로세서 코어들의 각각에 대한 상기 가상적 식별자들과 상기 물리적 식별자들 사이의 상기 순서화된 연관성들에 따라 하이 레벨 오퍼레이팅 시스템으로부터 수신된 프로세스 요청들을 맵핑하는 단계; 및
    상기 하이 레벨 오퍼레이팅 시스템에 의해 식별된 상기 프로세서 코어들이 상기 프로세스 요청들의 결과들을 생성하였던 것처럼, 프로세스 요청의 결과들을 상기 하이 레벨 오퍼레이팅 시스템에 반환하는 단계를 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  9. 제 8 항에 있어서,
    상기 프로세서 코어들 중의 임의의 것에 대한 이력 동작 시간이 동작 시간 임계점을 초과하는지 여부를 결정하는 단계; 및
    상기 동작 시간 임계점을 초과하는 그 프로세서 코어들을 프로세서 코어들의 제 1 그룹으로 그룹화하고, 상기 동작 시간 임계점을 초과하지 않는 그 프로세서 코어들을 프로세서 코어들의 제 2 그룹으로 그룹화하는 단계를 더 포함하고,
    상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과, 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하는 단계는, 프로세서 코어들의 상기 제 2 그룹에 대한 연관성들과는 별도로, 프로세서 코어들의 상기 제 1 그룹에 대한 연관성들을 순서화하는 단계를 포함하는, 프로세싱 태스크들을 멀티-코어 프로세서 내의 프로세서 코어들에 배정하는 방법.
  10. 다수의 프로세서 코어들을 가지는 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스로서,
    상기 멀티-코어 프로세서는,
    상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 것;
    마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하는 것; 및
    상기 계산된 우선순위에 기초하여 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 것을 포함하는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  11. 제 10 항에 있어서,
    상기 멀티-코어 프로세서는, 상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 것이,
    상기 프로세서 코어들이 활성인지 여부를 결정하는 것;
    상기 프로세서 코어들이 비활성인 것으로 결정하는 것에 응답하여, 테스트 작업부하를 상기 프로세서 코어들의 각각에 제공하는 것;
    상기 테스트 작업부하를 제공하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 상기 테스트 작업부하 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 것;
    상기 프로세서 코어들이 활성인 것으로 결정하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 정상 동작 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 것; 및
    상기 프로세서 코어들의 각각에 대한 이력 동작 시간을 취출하는 것을 포함하도록, 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  12. 제 11 항에 있어서,
    상기 멀티-코어 프로세서는, 마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하는 것이, 가중화 인자들을, 상기 측정된 열 출력, 상기 측정된 전류 누설, 및 상기 이력 동작 시간과 승산함으로써, 그리고 그 곱들을 합산함으로써, 상기 프로세서 코어들의 각각에 대한 상기 우선순위를 계산하는 것을 포함하도록, 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  13. 제 12 항에 있어서,
    상기 멀티-코어 프로세서는,
    네트워크 접속을 통해 업데이트된 가중화 인자들을 수신하는 것; 및
    상기 업데이트된 가중화 인자들로 상기 프로세서 코어들의 각각에 대한 우선순위를 계산할 시에 이용된 상기 가중화 인자들을 업데이트하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  14. 제 10 항에 있어서,
    상기 멀티-코어 프로세서는,
    제 2 프로세서 코어에 대한 계산된 우선순위에 따라, 제 1 프로세서 코어에 대한 제 1 가상적 식별자를 제 2 프로세서 코어와 연관시키는 것;
    상기 제 1 프로세서 코어에 대한 상기 제 1 가상적 식별자를 특정하는 하이 레벨 오퍼레이팅 시스템으로부터 프로세스 요청을 수신하는 것;
    상기 프로세스 요청을 상기 제 2 프로세서 코어에 맵핑하는 것; 및
    상기 제 1 프로세서 코어가 상기 프로세스 요청의 결과를 생성하였던 것처럼, 상기 프로세스 요청의 결과를 상기 하이 레벨 오퍼레이팅 시스템에 반환하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  15. 제 14 항에 있어서,
    상기 멀티-코어 프로세서는, 상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되고,
    상기 제 2 프로세서 코어에 대한 상기 계산된 우선순위에 따라, 제 1 프로세서 코어에 대한 제 1 가상적 식별자를 제 2 프로세서 코어와 연관시키는 것은, 상기 제 1 프로세서 코어에 대한 상기 제 1 가상적 식별자를 상기 제 2 프로세서 코어에 대한 물리적 식별자와 연관시키는 것을 포함하고, 그리고
    상기 프로세스 요청을 상기 제 2 프로세서 코어에 맵핑하는 것은, 상기 프로세서 코어들의 각각에 대한 상기 가상적 식별자들과 상기 물리적 식별자들 사이의 상기 순서화된 연관성들에 따라 상기 하이 레벨 오퍼레이팅 시스템으로부터 수신된 프로세스 요청들을 맵핑하는 것을 포함하는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  16. 제 15 항에 있어서,
    상기 멀티-코어 프로세서는,
    상기 프로세서 코어들 중의 임의의 것에 대한 이력 동작 시간이 동작 시간 임계점을 초과하는지 여부를 결정하는 것; 및
    상기 동작 시간 임계점을 초과하는 그 프로세서 코어들을 프로세서 코어들의 제 1 그룹으로 그룹화하고, 상기 동작 시간 임계점을 초과하지 않는 그 프로세서 코어들을 프로세서 코어들의 제 2 그룹으로 그룹화하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능 명령들로 구성되고,
    상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과, 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하는 것은, 프로세서 코어들의 상기 제 2 그룹에 대한 연관성들과는 별도로, 프로세서 코어들의 상기 제 1 그룹에 대한 연관성들을 순서화하는 것을 포함하는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  17. 다수의 프로세서 코어들을 갖는 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스로서,
    상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하기 위한 수단;
    마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하기 위한 수단; 및
    상기 계산된 우선순위에 기초하여 프로세서 요청들을 특정 프로세서 코어들에 재배정하기 위한 수단을 포함하는, 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스.
  18. 제 17 항에 있어서,
    상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하기 위한 수단은,
    상기 프로세서 코어들이 활성인지 여부를 결정하기 위한 수단;
    상기 프로세서 코어들이 비활성인 것으로 결정하는 것에 응답하여, 테스트 작업부하를 상기 프로세서 코어들의 각각에 제공하기 위한 수단;
    상기 테스트 작업부하를 제공하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 상기 테스트 작업부하 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하기 위한 수단;
    상기 프로세서 코어들이 활성인 것으로 결정하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 정상 동작 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하기 위한 수단; 및
    상기 프로세서 코어들의 각각에 대한 이력 동작 시간을 취출하기 위한 수단을 포함하는, 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스.
  19. 제 18 항에 있어서,
    마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하기 위한 수단은, 가중화 인자들을, 상기 측정된 열 출력, 상기 측정된 전류 누설, 및 상기 이력 동작 시간과 승산함으로써, 그리고 그 곱들을 합산함으로써, 상기 프로세서 코어들의 각각에 대한 상기 우선순위를 계산하기 위한 수단을 포함하는, 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스.
  20. 제 19 항에 있어서,
    네트워크 접속을 통해 업데이트된 가중화 인자들을 수신하기 위한 수단; 및
    상기 업데이트된 가중화 인자들로 상기 프로세서 코어들의 각각에 대한 우선순위를 계산할 시에 이용된 상기 가중화 인자들을 업데이트하기 위한 수단을 더 포함하는, 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스.
  21. 제 17 항에 있어서,
    제 2 프로세서 코어에 대한 계산된 우선순위에 따라, 제 1 프로세서 코어에 대한 제 1 가상적 식별자를 제 2 프로세서 코어와 연관시키기 위한 수단;
    상기 제 1 프로세서 코어에 대한 상기 제 1 가상적 식별자를 특정하는 하이 레벨 오퍼레이팅 시스템으로부터 프로세스 요청을 수신하기 위한 수단;
    상기 프로세스 요청을 상기 제 2 프로세서 코어에 맵핑하기 위한 수단; 및
    상기 제 1 프로세서 코어가 상기 프로세스 요청의 결과를 생성하였던 것처럼, 상기 프로세스 요청의 결과를 상기 하이 레벨 오퍼레이팅 시스템에 반환하기 위한 수단을 더 포함하는, 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스.
  22. 제 21 항에 있어서,
    상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하기 위한 수단을 더 포함하고,
    상기 제 2 프로세서 코어에 대한 상기 계산된 우선순위에 따라, 제 1 프로세서 코어에 대한 제 1 가상적 식별자를 제 2 프로세서 코어와 연관시키기 위한 수단은, 상기 제 1 프로세서 코어에 대한 상기 제 1 가상적 식별자를 상기 제 2 프로세서 코어에 대한 물리적 식별자와 연관시키기 위한 수단을 포함하고, 그리고
    상기 프로세스 요청을 상기 제 2 프로세서 코어에 맵핑하기 위한 수단은, 상기 프로세서 코어들의 각각에 대한 상기 가상적 식별자들과 상기 물리적 식별자들 사이의 상기 순서화된 연관성들에 따라 상기 하이 레벨 오퍼레이팅 시스템으로부터 수신된 프로세스 요청들을 맵핑하기 위한 수단을 포함하는, 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스.
  23. 제 22 항에 있어서,
    상기 프로세서 코어들 중의 임의의 것에 대한 이력 동작 시간이 동작 시간 임계점을 초과하는지 여부를 결정하기 위한 수단; 및
    상기 동작 시간 임계점을 초과하는 그 프로세서 코어들을 프로세서 코어들의 제 1 그룹으로 그룹화하고, 상기 동작 시간 임계점을 초과하지 않는 그 프로세서 코어들을 프로세서 코어들의 제 2 그룹으로 그룹화하기 위한 수단을 더 포함하고,
    상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과, 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하기 위한 수단은, 프로세서 코어들의 상기 제 2 그룹에 대한 연관성들과는 별도로, 프로세서 코어들의 상기 제 1 그룹에 대한 연관성들을 순서화하기 위한 수단을 포함하는, 멀티-코어 프로세서를 가지는 컴퓨팅 디바이스.
  24. 프로세서-실행가능 명령들을 저장한 비-일시적 프로세서-판독가능 매체로서,
    상기 프로세서-실행가능 명령들은, 멀티-코어 프로세서로 하여금,
    상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 것;
    마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하는 것; 및
    상기 계산된 우선순위에 기초하여 프로세서 요청들을 특정 프로세서 코어들에 재배정하는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  25. 제 24 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 멀티-코어 프로세서로 하여금, 상기 멀티-코어 프로세서 내의 상기 프로세서 코어들의 각각에 관한 마모에 관련된 정보를 획득하는 것이,
    상기 프로세서 코어들이 활성인지 여부를 결정하는 것;
    상기 프로세서 코어들이 비활성인 것으로 결정하는 것에 응답하여, 테스트 작업부하를 상기 프로세서 코어들의 각각에 제공하는 것;
    상기 테스트 작업부하를 제공하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 상기 테스트 작업부하 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 것;
    상기 프로세서 코어들이 활성인 것으로 결정하는 것에 응답하여, 개별적으로 또는 프로세서 코어들의 그룹들에 대하여 정상 동작 하에서 상기 프로세서 코어들의 열 출력 및 전류 누설 중의 하나 이상을 측정하는 것; 및
    상기 프로세서 코어들의 각각에 대한 이력 동작 시간을 취출하는 것을 포함하도록, 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  26. 제 25 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 멀티-코어 프로세서로 하여금, 마모에 관련된 상기 획득된 정보에 기초하여 상기 프로세서 코어들의 각각에 대한 우선순위를 계산하는 것이, 가중화 인자들을, 상기 측정된 열 출력, 상기 측정된 전류 누설, 및 상기 이력 동작 시간과 승산함으로써, 그리고 그 곱들을 합산함으로써, 상기 프로세서 코어들의 각각에 대한 상기 우선순위를 계산하는 것을 포함하도록, 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  27. 제 26 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 멀티-코어 프로세서로 하여금,
    네트워크 접속을 통해 업데이트된 가중화 인자들을 수신하는 것; 및
    상기 업데이트된 가중화 인자들로 상기 프로세서 코어들의 각각에 대한 우선순위를 계산할 시에 이용된 상기 가중화 인자들을 업데이트하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  28. 제 24 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 멀티-코어 프로세서로 하여금,
    제 2 프로세서 코어에 대한 계산된 우선순위에 따라, 제 1 프로세서 코어에 대한 제 1 가상적 식별자를 제 2 프로세서 코어와 연관시키는 것;
    상기 제 1 프로세서 코어에 대한 상기 제 1 가상적 식별자를 특정하는 하이 레벨 오퍼레이팅 시스템으로부터 프로세스 요청을 수신하는 것;
    상기 프로세스 요청을 상기 제 2 프로세서 코어에 맵핑하는 것; 및
    상기 제 1 프로세서 코어가 상기 프로세스 요청의 결과를 생성하였던 것처럼, 상기 프로세스 요청의 결과를 상기 하이 레벨 오퍼레이팅 시스템에 반환하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적 프로세서-판독가능 매체.
  29. 제 28 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 멀티-코어 프로세서로 하여금, 상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되고,
    상기 제 2 프로세서 코어에 대한 상기 계산된 우선순위에 따라, 제 1 프로세서 코어에 대한 제 1 가상적 식별자를 제 2 프로세서 코어와 연관시키는 것은, 상기 제 1 프로세서 코어에 대한 상기 제 1 가상적 식별자를 상기 제 2 프로세서 코어에 대한 물리적 식별자와 연관시키는 것을 포함하고, 그리고
    상기 프로세스 요청을 상기 제 2 프로세서 코어에 맵핑하는 것은, 상기 프로세서 코어들의 각각에 대한 상기 가상적 식별자들과 상기 물리적 식별자들 사이의 상기 순서화된 연관성들에 따라 상기 하이 레벨 오퍼레이팅 시스템으로부터 수신된 프로세스 요청들을 맵핑하는 것을 포함하는, 비-일시적 프로세서-판독가능 매체.
  30. 제 29 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 멀티-코어 프로세서로 하여금,
    상기 프로세서 코어들 중의 임의의 것에 대한 이력 동작 시간이 동작 시간 임계점을 초과하는지 여부를 결정하는 것; 및
    상기 동작 시간 임계점을 초과하는 그 프로세서 코어들을 프로세서 코어들의 제 1 그룹으로 그룹화하고, 상기 동작 시간 임계점을 초과하지 않는 그 프로세서 코어들을 프로세서 코어들의 제 2 그룹으로 그룹화하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되고,
    상기 프로세서 코어들의 각각에 대해 계산된 상기 우선순위들에 따라 상기 프로세서 코어들의 각각에 대한 가상적 식별자들과, 상기 프로세서 코어들의 각각에 대한 물리적 식별자들 사이의 연관성들을 순서화하는 것은, 프로세서 코어들의 상기 제 2 그룹에 대한 연관성들과는 별도로, 프로세서 코어들의 상기 제 1 그룹에 대한 연관성들을 순서화하는 것을 포함하는, 비-일시적 프로세서-판독가능 매체.
KR1020167017000A 2013-12-18 2014-12-09 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화 KR20160099587A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361917487P 2013-12-18 2013-12-18
US61/917,487 2013-12-18
US14/166,984 2014-01-29
US14/166,984 US9606843B2 (en) 2013-12-18 2014-01-29 Runtime optimization of multi-core system designs for increased operating life and maximized performance
PCT/US2014/069380 WO2015094820A2 (en) 2013-12-18 2014-12-09 Runtime optimization of multi-core system designs for increased operating life and maximized performance

Publications (1)

Publication Number Publication Date
KR20160099587A true KR20160099587A (ko) 2016-08-22

Family

ID=53368558

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017000A KR20160099587A (ko) 2013-12-18 2014-12-09 증가된 동작 수명 및 최대화된 성능을 위한 멀티-코어 시스템 설계들의 실행시간 최적화

Country Status (7)

Country Link
US (1) US9606843B2 (ko)
EP (1) EP3084606A2 (ko)
JP (1) JP2017506773A (ko)
KR (1) KR20160099587A (ko)
CN (1) CN105830034A (ko)
BR (1) BR112016013999A2 (ko)
WO (1) WO2015094820A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200041154A (ko) 2018-10-11 2020-04-21 연세대학교 산학협력단 드롭아웃이 적용된 다층 퍼셉트론 구조에서 연산코어의 오류 검출 방법 및 장치

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261875B2 (en) 2013-12-18 2019-04-16 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
JP6295113B2 (ja) * 2014-03-17 2018-03-14 ルネサスエレクトロニクス株式会社 自己診断装置及び自己診断方法
US9411408B2 (en) * 2014-04-30 2016-08-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Load optimization using cable-associated voltage drop
US9904339B2 (en) * 2014-09-10 2018-02-27 Intel Corporation Providing lifetime statistical information for a processor
US10218779B1 (en) * 2015-02-26 2019-02-26 Google Llc Machine level resource distribution
US9842082B2 (en) * 2015-02-27 2017-12-12 Intel Corporation Dynamically updating logical identifiers of cores of a processor
US11204871B2 (en) * 2015-06-30 2021-12-21 Advanced Micro Devices, Inc. System performance management using prioritized compute units
US9811389B2 (en) 2015-09-23 2017-11-07 Intel Corporation Task assignment for processor cores based on a statistical power and frequency model
US9983966B2 (en) * 2015-11-30 2018-05-29 Oracle International Corporation Detecting degraded core performance in multicore processors
CN105573495B (zh) * 2015-12-14 2020-06-23 联想(北京)有限公司 一种信息处理方法及穿戴式设备
CN106201715A (zh) * 2016-06-30 2016-12-07 北京奇艺世纪科技有限公司 一种任务调度方法和装置
CN106227604A (zh) * 2016-07-27 2016-12-14 李媛媛 芯片中温度降低方法及系统
WO2018018448A1 (zh) * 2016-07-27 2018-02-01 李媛媛 芯片中温度降低方法及系统
US10488911B2 (en) * 2016-11-01 2019-11-26 National Taiwan University Method and computing system of allocating registers
US11551990B2 (en) 2017-08-11 2023-01-10 Advanced Micro Devices, Inc. Method and apparatus for providing thermal wear leveling
US11742038B2 (en) * 2017-08-11 2023-08-29 Advanced Micro Devices, Inc. Method and apparatus for providing wear leveling
US10664278B2 (en) * 2017-08-17 2020-05-26 Huawei Technologies Co., Ltd. Method and apparatus for hardware acceleration in heterogeneous distributed computing
CN110413210B (zh) * 2018-04-28 2023-05-30 伊姆西Ip控股有限责任公司 用于处理数据的方法、设备和计算机程序产品
CN111065077B (zh) * 2018-10-17 2023-08-18 阿里巴巴集团控股有限公司 蓝牙Mesh网络及其通信方法、设备与存储介质
KR102639095B1 (ko) * 2018-10-29 2024-02-23 삼성전자주식회사 열화도를 관리하기 위한 전자 장치
US10997029B2 (en) * 2019-03-07 2021-05-04 International Business Machines Corporation Core repair with failure analysis and recovery probe
WO2021010124A1 (ja) * 2019-07-17 2021-01-21 住友電気工業株式会社 車載装置、車両管理システム、リソース管理方法およびリソース管理プログラム
CN112416475A (zh) * 2020-11-20 2021-02-26 清华大学 触发方法
CN115048194A (zh) * 2021-03-09 2022-09-13 华为技术有限公司 一种任务分配方法及装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000235505A (ja) * 1999-02-17 2000-08-29 Nippon Telegr & Teleph Corp <Ntt> 高速オブジェクト間通信装置
US6658449B1 (en) 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
US7275180B2 (en) 2003-04-17 2007-09-25 International Business Machines Corporation Transparent replacement of a failing processor
US9063785B2 (en) 2004-11-03 2015-06-23 Intel Corporation Temperature-based thread scheduling
US8621458B2 (en) 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US7694175B2 (en) 2005-02-18 2010-04-06 Hewlett-Packard Development Company, L.P. Methods and systems for conducting processor health-checks
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US20070288738A1 (en) 2006-06-09 2007-12-13 Dale Jason N System and method for selecting a random processor to boot on a multiprocessor system
US8230425B2 (en) 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US8055822B2 (en) 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
US7941699B2 (en) 2008-03-24 2011-05-10 Intel Corporation Determining a set of processor cores to boot
US8892916B2 (en) 2008-08-06 2014-11-18 International Business Machines Corporation Dynamic core pool management
US8219994B2 (en) 2008-10-23 2012-07-10 Globalfoundries Inc. Work balancing scheduler for processor cores and methods thereof
US8549363B2 (en) 2010-01-08 2013-10-01 International Business Machines Corporation Reliability and performance of a system-on-a-chip by predictive wear-out based activation of functional components
US8484495B2 (en) 2010-03-25 2013-07-09 International Business Machines Corporation Power management in a multi-processor computer system
TWI590179B (zh) 2010-10-27 2017-07-01 緯創資通股份有限公司 電子系統、壽命管理電路及壽命管理方法
US8910177B2 (en) * 2011-04-14 2014-12-09 Advanced Micro Devices, Inc. Dynamic mapping of logical cores
US8793686B2 (en) 2011-06-08 2014-07-29 Microsoft Corporation Operating system decoupled heterogeneous computing
US8954017B2 (en) 2011-08-17 2015-02-10 Broadcom Corporation Clock signal multiplication to reduce noise coupled onto a transmission communication signal of a communications device
US8688883B2 (en) 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
US20130086395A1 (en) 2011-09-30 2013-04-04 Qualcomm Incorporated Multi-Core Microprocessor Reliability Optimization
US8959224B2 (en) * 2011-11-17 2015-02-17 International Business Machines Corporation Network data packet processing
US8892919B2 (en) 2011-12-14 2014-11-18 Ati Technologies Ulc Method and apparatus for power management of a processor in a virtual environment
WO2013126066A1 (en) 2012-02-24 2013-08-29 Hewlett-Packard Development Company, L.P. Wear-leveling cores of a multi-core processor
US9298504B1 (en) 2012-06-11 2016-03-29 Amazon Technologies, Inc. Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system
US9052932B2 (en) 2012-12-17 2015-06-09 International Business Machines Corporation Hybrid virtual machine configuration management
US9311148B2 (en) 2012-12-20 2016-04-12 Telefonaktiebolaget L M Ericsson (Publ) Pseudo-random hardware resource allocation through the plurality of resource controller based on non-repeating sequence of index list entries
US9087146B2 (en) 2012-12-21 2015-07-21 Intel Corporation Wear-out equalization techniques for multiple functional units
US9329900B2 (en) 2012-12-28 2016-05-03 Intel Corporation Hetergeneous processor apparatus and method
US20150169363A1 (en) 2013-12-18 2015-06-18 Qualcomm Incorporated Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200041154A (ko) 2018-10-11 2020-04-21 연세대학교 산학협력단 드롭아웃이 적용된 다층 퍼셉트론 구조에서 연산코어의 오류 검출 방법 및 장치

Also Published As

Publication number Publication date
CN105830034A (zh) 2016-08-03
EP3084606A2 (en) 2016-10-26
BR112016013999A2 (pt) 2017-08-08
JP2017506773A (ja) 2017-03-09
US9606843B2 (en) 2017-03-28
US20150169382A1 (en) 2015-06-18
WO2015094820A2 (en) 2015-06-25
WO2015094820A3 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
US9606843B2 (en) Runtime optimization of multi-core system designs for increased operating life and maximized performance
US20150169363A1 (en) Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance
US10261875B2 (en) Runtime optimization of multi-core system designs for increased operating life and maximized performance
JP6162350B1 (ja) 性能を最大化し、チップ温度および電力を低減する好ましいコア順序付けのためのアルゴリズム
JP6005895B1 (ja) ワット当たりの最適パフォーマンスのためのインテリジェントマルチコア制御
US9442774B2 (en) Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
US20170017576A1 (en) Self-adaptive Cache Architecture Based on Run-time Hardware Counters and Offline Profiling of Applications
US8996902B2 (en) Modal workload scheduling in a heterogeneous multi-processor system on a chip
US8595525B2 (en) On-chip thermal management techniques using inter-processor time dependent power density data for indentification of thermal aggressors
EP3472684B1 (en) Wake lock aware system wide job scheduling for energy efficiency on mobile devices
US20140089700A1 (en) Performance management methods for electronic devices with mutiple central processing units
WO2018017245A1 (en) Performance provisioning using machine learning based automated workload classification
US10585826B2 (en) Using processor types for processing interrupts in a computing device
US20160117199A1 (en) Computing system with thermal mechanism and method of operation thereof
CN113900913B (zh) 确定功耗方法、装置、计算机设备及计算机可读存储介质
Krzywaniak et al. Extended investigation of performance-energy trade-offs under power capping in HPC environments
US10209749B2 (en) Workload allocation based on downstream thermal impacts
WO2018190989A1 (en) Runtime optimization of multi-core system designs for increased operating life and maximized performance
CN104508587A (zh) 基于气流优先级分配工作负荷
Abdelhafez et al. Characterizing variability in heterogeneous edge systems: A methodology & case study
Vaddina et al. Experimental workflow for energy and temperature profiling on HPC systems
CN113900912B (zh) 测试方法、测试装置、计算机设备及计算机可读存储介质
Nuessle et al. Benchmarking Databases" On-The-Go"

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid