KR20190082822A - 전력-성능 관리를 위한 애플리케이션 프로파일링 - Google Patents

전력-성능 관리를 위한 애플리케이션 프로파일링 Download PDF

Info

Publication number
KR20190082822A
KR20190082822A KR1020197015368A KR20197015368A KR20190082822A KR 20190082822 A KR20190082822 A KR 20190082822A KR 1020197015368 A KR1020197015368 A KR 1020197015368A KR 20197015368 A KR20197015368 A KR 20197015368A KR 20190082822 A KR20190082822 A KR 20190082822A
Authority
KR
South Korea
Prior art keywords
hardware
application
parameter settings
stored
identified
Prior art date
Application number
KR1020197015368A
Other languages
English (en)
Other versions
KR102208349B1 (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 KR20190082822A publication Critical patent/KR20190082822A/ko
Application granted granted Critical
Publication of KR102208349B1 publication Critical patent/KR102208349B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • Y02D10/43

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)
  • Stored Programmes (AREA)

Abstract

복수의 애플리케이션들의 각각에 대한 하드웨어 파라미터 설정들을 저장하도록 구성된 메모리를 포함하는 프로세싱 장치가 제공된다. 프로세싱 장치는 또한, 메모리 내에 하드웨어 파라미터 설정들을 저장하고, 현재 실행되는 애플리케이션으로서 복수의 애플리케이션들 중 하나를 식별하며, 식별된 애플리케이션에 대한 저장된 하드웨어 파라미터 설정들에 따라 복수의 하드웨어 파라미터들을 튜닝함으로써 하드웨어의 동작을 제어하도록 구성된, 메모리와 통신하는 프로세서를 포함한다.

Description

전력-성능 관리를 위한 애플리케이션 프로파일링
관련 출원에 대한 상호 참조
본 출원은 2016년 11월 18일자로 출원된 미국 특허 출원 번호 제15/355,569호에 대한 이익을 주장하며, 이는 그 전체가 완전하게 기술되는 것처럼 본원에 참조로서 포함된다.
일부 프로세싱 디바이스들의 하드웨어는, 하드웨어의 동작을 제어하기 위하여 사용되는 디바이스(예를 들어, 펌웨어)에 저장된 하드웨어 파라미터들에 의해 관리된다. 이러한 파라미터들에 대한 설정들(예를 들어, 동적 전력 관리(dynamic power management; DPM) 설정들)은 애플리케이션들을 실행하는 것과 같은 다양한 기능들을 수행하기 위하여 하드웨어에 의해 소비되는 전력뿐만 아니라 하드웨어의 성능 둘 모두에 영향을 준다. 추가로, 성능과 전력 소비는 상호 의존적이다. 예를 들어, 하드웨어 성능 레벨의 증가는 흔히 증가된 전력 소비를 포함한다. DPM 설정들은 역사적으로 드라이버 소프트웨어에 하드코딩(hardcode)되어 왔지만, 그러나, 이는 드라이버 소프트웨어를 수정하지 않고는 변경될 수 없다.
더 상세한 이해는 첨부된 도면들과 함께 예시적으로 주어지는 다음의 설명으로부터 얻어질 수 있다.
도 1은 전력-성능 관리를 위한 애플리케이션 프로파일링이 구현되는 예시적인 디바이스의 블록도이다.
도 2는 도 1에 도시된 가속 프로세싱 디바이스 상에서의 프로세싱 태스크(task)들의 실행과 관련된 추가적인 세부사항들을 예시하는 블록도이다.
도 3은 예시적인 전력-성능 관리 시스템 내의 예시적인 상호연결 및 정보 흐름을 예시하는 블록도이다.
도 4는 전력-성능을 관리하기 위한 하드웨어 파라미터 설정들을 수신하는 예시적인 방법을 예시하는 순서도이다. 그리고
도 5는 애플리케이션 실행시간에서의 전력-성능 관리의 예시적인 방법을 예시하는 순서도이다.
애플리케이션-특정 집적 회로(application-specific integrated circuit; ASIC)와 같은 특정 집적 회로(IC)에 대한 전역 DPM 설정들을 제공하기 위한 노력들이 이루어져 왔다. 그러나 이러한 전역 설정들은 가변적인 성능 레벨들을 야기한다. 예를 들어, 전역 설정들에서 IC 상에서 실행되는 애플리케이션은 제 1 레벨의 성능(예를 들어, 고 품질의 비디오 디스플레이를 렌더링(render)하는 성능 레벨)으로 수행되며, 반면 IC 상에서 실행되는 다른 애플리케이션은 제 2 레벨의 성능(예를 들어, 저 품질의 비디오 디스플레이를 렌더링하는 성능 레벨)으로 수행된다.
본 출원은, 디바이스 상에서 실행될 각각의 애플리케이션에 대하여 맞춤화된 하드웨어 파라미터 설정들을 사용함으로써 전력 및 성능을 관리하는 장치 및 방법을 개시한다. 맞춤화는 또한 디바이스의 각각의 프로세서 및 각각의 애플리케이션 프로그래밍 인터페이스(application programming interface; API)에 대한 하드웨어 파라미터 설정들을 포함한다. 하드웨어 파라미터 설정들은, 디바이스 드라이버를 변경하지 않고 드라이버 스택의 구성 파일을 변경(즉, 오버라이팅)함으로써 각각의 애플리케이션에 대하여 맞춤화된다. 애플리케이션에 대한 하드웨어 파라미터 설정들은, 다른 애플리케이션들을 실행할 때의 성능에 영향을 주지 않으면서 성능의 레벨을 유지하고 애플리케이션을 실행하기 위한 하드웨어에 의해 소비되는 전력을 제어하기 위하여 디바이스의 펌웨어 상에 저장된 하드웨어 파라미터들(예를 들어, 하드웨어 파라미터들의 설정 값들)을 튜닝(tune)하기 위하여 사용된다.
본 출원은 복수의 애플리케이션들의 각각에 대한 하드웨어 파라미터 설정들을 저장하도록 구성된 메모리를 포함하는 프로세싱 장치를 제공한다. 프로세싱 장치는 또한, 메모리 내에 하드웨어 파라미터 설정들을 저장하고, 현재 실행되는 애플리케이션으로서 복수의 애플리케이션들 중 하나를 식별하며, 식별된 애플리케이션에 대한 저장된 하드웨어 파라미터 설정들에 따라 복수의 하드웨어 파라미터들을 튜닝함으로써 하드웨어의 동작을 제어하도록 구성된, 메모리와 통신하는 프로세서를 포함한다.
본 출원은 전력-성능 관리의 컴퓨터 구현형 방법을 제공한다. 방법은, 복수의 애플리케이션들의 각각에 대한 하드웨어 파라미터 설정들을 수신하는 단계, 하드웨어 파라미터 설정들을 저장하는 단계, 복수의 애플리케이션들 중 하나의 애플리케이션을 실행하는 단계, 실행되는 애플리케이션을 식별하는 단계, 및 식별된 실행되는 애플리케이션에 대한 저장된 하드웨어 파라미터 설정들에 따라 하드웨어 파라미터들을 튜닝함으로써 하드웨어의 동작을 제어하는 단계를 포함한다.
본 출원은 컴퓨터가 전력-성능 관리를 실행하게끔 하기 위한 명령어들을 포함하는 비-일시적인 컴퓨터 판독가능 매체를 제공한다. 명령어들은, 복수의 애플리케이션들의 각각에 대한 하드웨어 파라미터 설정들을 저장하는 것, 복수의 애플리케이션들 중 하나의 애플리케이션을 실행하는 것, 실행되는 애플리케이션을 식별하는 것, 및 식별된 실행되는 애플리케이션에 대한 저장된 하드웨어 파라미터 설정들에 따라 하드웨어 파라미터들을 튜닝함으로써 하드웨어의 동작을 제어하는 것을 포함한다.
본원에서 사용될 때, 프로그램들은 절차들 또는 루틴들(예를 들어, 동작들, 계산들, 기능들, 프로세스들, 잡(job)들)을 수행하기 위하여 하나 이상의 프로세서들을 사용하여 실행된 명령어들의 임의의 시퀀스를 포함한다. 본원에서 사용될 때, 프로세서 상에서의 프로그래밍된 명령어들(예를 들어, 애플리케이션들, 드라이버들, 운영 시스템들 또는 다른 소프트웨어)의 실행은 복수의 스테이지들 중 임의의 스테이지, 예컨대 비제한적으로, 프로그래밍된 명령어들의 페칭(fetching), 디코딩, 실행을 위한 스케줄링, 실행의 개시 및 특정 부분의 실행(예를 들어, 풀 스크린 상에서의 비디오의 렌더링)을 포함한다. 프로그래밍된 명령어들은, 하드웨어의 동작을 제어하기 위하여 사용되는 튜닝가능(즉, 변경가능) 값들을 갖는 파라미터 설정들(예를 들어, 하드웨어 파라미터 설정들) 및 파라미터들(예를 들어, 하드웨어 파라미터들)을 포함한다.
도 1은 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는, 예를 들어, 컴퓨터, 게이밍 디바이스, 핸드헬드 디바이스, 셋-탑 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함한다. 도 1에 도시된 바와 같이, 예시적인 디바이스(100)는 프로세서(102), 메모리(104), 저장부(106), 하나 이상의 입력 디바이스들(108), 하나 이상의 출력 디바이스들(110), 입력 드라이버(112) 및 출력 드라이버(114)를 포함한다. 디바이스(100)가 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다는 것이 이해되어야 한다.
프로세서(102)에 대한 예시적인 프로세서 유형은, CPU, GPU, 동일한 다이 상에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함하며, 여기에서 각각의 프로세서 코어는 CPU 또는 GPU이다. 메모리(104)는, 예를 들어, 프로세서(102)와 동일한 다이 상에 위치되거나, 또는 프로세서(102)와 별개로 위치된다. 메모리(104)에 대한 예시적인 메모리 유형들은, 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시) 및, 이하에서 상세하게 설명되는 바와 같이 하드웨어 파라미터들을 포함하는, 예를 들어, 펌웨어를 저장하도록 구성된 비-휘발성 메모리(예를 들어, 하드-디스크, 마더보드 부트 판독 전용 메모리(ROM), 및 BIOS 메모리)를 포함한다.
저장부(106)에 대한 예시적인 저장부 유형들은, 고정형 또는 착탈가능 저장부, 예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브, 광 디스크, 또는 플래시 디바이스를 포함한다. 입력 디바이스(108)에 대한 예시적인 입력 디바이스 유형들은, 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크, 가속도계, 자이로스코프, 생체인식 스캐너, 또는 네트워크 연결부(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 근거리 영역 네트워크 카드)를 포함한다. 출력 디바이스들(110)에 대한 예시적인 출력 디바이스 유형들은, 디스플레이, 스피커, 프린터, 촉각 피드백 디바이스, 하나 이상의 조명들, 안테나, 또는 네트워크 연결부(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 근거리 영역 네트워크 카드)를 포함한다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하며, 프로세서(102)가 입력 디바이스들(108)로부터의 입력을 수신하는 것을 가능하게 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스들(110)과 통신하며, 프로세서(102)가 출력 디바이스들(110)로 출력을 전송하는 것을 가능하게 한다. 입력 드라이버(112) 및 출력 드라이버(114)가 선택적인 컴포넌트이며, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우 디바이스(100)가 동일한 방식으로 동작할 것임을 주의해야 한다.
도 1에 도시된 바와 같이, 출력 드라이버(114)(예를 들어, 그래픽 카드)는 디스플레이 디바이스(118)에 결합된 가속 프로세싱 디바이스(accelerated processing device; APD)(116)를 포함한다. APD(116)는, 프로세서(102)로부터 컴퓨팅 명령들 및 그래픽 렌더링 명령들을 수리하고, 이러한 컴퓨팅 및 그래픽 렌더링 명령들을 프로세싱하며, 디스플레이를 위하여 디스플레이 디바이스(118)로 픽셀 출력을 제공하도록 구성된다. 이하에서 더 상세하게 설명되는 바와 같이, APD(116)는, 단일-명령-다중-데이터(single-instruction-multiple-data; SIMD) 패러다임에 따라 계산들을 수행하도록 구성된 하나 이상의 병렬 프로세싱 유닛들을 포함한다. 다양한 기능이 본원에서 APD(116)에 의해 또는 이와 관련되어 수행되는 것으로 설명되지만, APD(116)에 의해 수행되는 것으로서 설명되는 기능은 또한 디스플레이 디바이스(118)로 그래픽 출력을 제공하도록 구성되고 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않는 유사한 성능을 갖는 다른 컴퓨팅 디바이스들에 의해 수행된다. 본원에서 설명되는 기능은, 예를 들어, SIMD 패러다임에 따라 프로세싱 태스크들을 수행하는 임의의 프로세싱 시스템에 의해 수행된다. 대안적으로, 본원에서 설명되는 기능은, SIMD 패러다임에 따라 프로세싱 태스크들을 수행하지 않는 컴퓨팅 시스템들에 의해 수행된다.
도 2는 도 1에 도시된 디바이스(100)의 APD(116) 상에서의 프로세싱 태스크들의 실행과 관련된 추가적인 세부사항들을 예시하는 블록도이다. 프로세서(102)는, 프로세서(102)에 의한 실행을 위한 프로그래밍된 명령어들을 포함하는 하나 이상의 제어 로직 모듈들을 시스템 메모리(104) 내에 유지한다. 프로그래밍된 명령어들은 또한 프로세서(102)(예를 들어, CPU) 내에 포함될 수 있다. 제어 로직 모듈들은, 운영 시스템(120), 디바이스 드라이버(122)(예를 들어, 커널 모드 드라이버, 사용자 모드 드라이버, 유니버셜 모드 드라이버), APD(116) 상에서 실행되는 애플리케이션들(126) 및 각각의 실행가능 애플리케이션(126)에 대한 미리 결정된 하드웨어 파라미터 설정들을 저장하는 구성 명령어들(124)(예를 들어, 구성 파일, 블랍(blob) 파일, 확장 파일, 및 유사한 것 내의 명령어들)을 포함한다. 도 2에 도시된 바와 같이, 디바이스 드라이버(122), 및 구성 명령어들(124)은 드라이버 스택(125)의 부분이다. 드라이버 스택(125)은 또한, 예를 들어, 각각의 애플리케이션의 실행 동안 하드웨어에 의한 전력 소비를 관리하기 위하여 하드웨어 파라미터들(예를 들어, 클럭 속도 파라미터들, 클럭 전압 파라미터들, 클럭 게이팅 파라미터들)을 튜닝하는 것을 지원하는 프로그래밍된 명령어들을 포함한다.
이러한 제어 로직 모듈들은 APD(116) 및 프로세서(102)의 동작의 다양한 측면들을 제어한다. 예를 들어, 운영 시스템(120)은 하드웨어(예를 들어, CPU, GPU 및 컴퓨팅 유닛들(132))과 직접적으로 통신하며, 프로세서(102) 상에서 실행되는 다른 소프트웨어 또는 하드웨어에 대한 인터페이스를 제공한다. 디바이스 드라이버(122)는, 예를 들어, APD(116)의 다양한 기능을 액세스하기 위하여 프로세서(102) 상에서 실행되는 소프트웨어(예를 들어, 애플리케이션들(126))에 대한 API를 제공함으로써, APD(116)의 동작을 제어한다. 디바이스 드라이버(122)는 또한, APD(116)의 프로세싱 컴포넌트들에 의한 실행을 위해 프로그램들을 컴파일링하는 적시(just-in-time) 컴파일러를 포함한다.
APD(116)는, 예를 들어, 병렬 프로세싱을 수행하기에 적절한 그래픽 동작들 및 비-그래픽 동작들과 같은 선택된 기능들에 대한 프로그램들 및 명령들을 실행한다. APD(116)는, 예를 들어, 프로세서(102)로부터 수신된 명령들에 기초하여 디스플레이 디바이스(118)로의 그래픽 파이프라인 동작들 예컨대 픽셀 동작들, 기하학적 계산들, 및 이미지의 렌더링을 실행하기 위하여 사용된다. APD(116)는 또한 프로세서(102)로부터 수신된 명령들에 기초하여, 비디오, 물리학 시뮬레이션들, 전산 유체 역학, 또는 다른 임무들과 관련된 동작들과 같은 그래픽 동작들과 직접적으로 관련되지 않은 컴퓨팅 프로세싱 동작들을 실행한다.
APD(116)에 대한 예시적인 프로세서 유형은, CPU, GPU, 동일한 다이 상에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들(즉, 컴퓨팅 유닛들)(132)을 포함하며, 여기에서 각각의 프로세서 코어는 CPU 또는 GPU이다. 각각의 컴퓨팅 유닛(즉, 컴퓨팅 코어)(132)은 각기 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청에서 동작들을 수행하도록 구성된 하나 이상의 SIMD 유닛들(138)을 포함한다. SIMD 패러다임은, 다수의 프로세싱 엘리먼트들이 단일 프로그래밍 제어 흐름 유닛 및 프로그래밍 카운터를 공유하며 그에 따라 동일한 프로그램을 실행하지만 상이한 데이터를 가지고 그 프로그램을 실행할 수 있는 패러다임이다. 일 예에 있어서, 각각의 SIMD 유닛(138)은 16개의 레인(lane)들을 포함하며, 여기에서 각각의 레인은 SIMD 유닛(138) 내의 다른 레인들과 동일한 시간에 동일한 명령어를 실행하지만, 상이한 데이터를 가지고 그 명령어를 실행할 수 있다. 레인들은, 주어진 명령어를 실행하는데 모든 레인들이 필요하지는 않는 경우, 예측(predication)을 가지고 스위치 오프될 수 있다. 예측은 또한 발산 제어 흐름을 가지고 프로그램들을 실행하기 위하여 사용될 수 있다. 보다 더 구체적으로, 조건부 브랜치들 또는 제어 흐름이 개별적인 레인에 의해 수행되는 계산들에 기초하는 다른 명령어들을 갖는 프로그램들에 대하여, 제어 흐름 경로들에 대응하는 레인들의 예측은 동시에 실행되지 않으며, 상이한 제어 흐름 경로들의 직렬 실행이 임의적인 제어 흐름을 가능하게 한다.
스케줄러(136)는, 상이한 컴퓨팅 유닛들(132) 및 SIMD 유닛들(138) 상에서의 실행의 다양한 유닛들(예를 들어, 작업 그룹들 및 파두(wavefront)들)을 스케줄링하는 것과 관련된 동작들을 수행하도록 구성된다. APD(116) 상에서의 프로세싱 태스크들의 실행은 그래픽 관련 동작들 예컨대 픽셀 값 계산들, 꼭지점 변환들, 및 다른 그래픽 동작들에 대하여 적절하다. 따라서, 프로세서(102)로부터 그래픽 프로세싱 명령들을 수리하는 그래픽 파이프라인(134)은 병렬로 실행하기 위하여 컴퓨팅 유닛들(132)에 계산 태스크들을 제공할 수 있다.
컴퓨팅 유닛들(132)은 또한, 그래픽 파이프라인(134)의 "정상적인" 동작의 부분으로서 수행되지 않거나 또는 그래픽과 관련되지 않은 계산 태스크들(예를 들어, 그래픽 파이프라인(134)의 동작에 대하여 수행되는 보충 프로세싱을 수행하기 위한 커스텀 동작들)을 수행하기 위하여 사용된다. 프로세서(102) 상에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는, 실행을 위하여 이러한 계산 태스크들을 정의하는 프로그램들을 APD(116)로 송신한다.
도 3은 예시적인 전력-성능 관리 시스템 내의 예시적인 상호연결 및 정보 흐름을 예시하는 블록도(300)이다. 도 3에 도시된 바와 같이, 시스템은, (하나 이상의 API들을 나타내는) API(302)가 구비된 애플리케이션(126), 디바이스 드라이버(122) 및 구성 명령어들(124)을 포함하는 드라이버 스택(125), 및 디바이스(304)에서 실행하도록 구성된 펌웨어(306)를 포함하는 디바이스(304)(예를 들어, 도 1에 도시된 출력 드라이버(114))를 포함한다.
드라이버 스택(125)은, 운영 시스템(120) 및 펌웨어(306) 및 구성 명령어들(124) 사이에서 인터페이싱하기 위하여 사용되는 디바이스 드라이버(122)를 포함한다. 구성 명령어들(124)은, 프로세싱될 각각의 애플리케이션(126)에 대하여, 각각의 애플리케이션(126)의 실행 동안 하드웨어의 동작을 제어하도록 구성된 복수의 하드웨어 파라미터들을 튜닝하기 위하여 사용되는 미리 결정된(예를 들어, 애플리케이션 실행시간 이전에 결정된) 하드웨어 파라미터 설정들을 포함한다.
펌웨어(306)는, 디바이스(304)(예를 들어, 그래픽 카드)의 하드웨어의 동작을 제어하고 디바이스 드라이버(122)와 디바이스(304)의 하드웨어(예를 들어, APD(116)) 사이에 인터페이스를 제공하기 위한 하드웨어 파라미터들 및 연관된 값들을 포함한다. 이상에서 설명된 바와 같이, 펌웨어는 비-휘발성 메모리(예를 들어, 하드-디스크, 마더보드 부트 판독 전용 메모리(ROM), 및 BIOS 메모리) 내에 저장된다. 프로세서(102)는 실행되는 애플리케이션을 식별하도록 구성된다. 예를 들어, 디바이스(304)(예를 들어 출력 드라이버(114))에서 APD(116) 상에서 실행되는 애플리케이션이 식별되며, 도 3에 도시된 바와 같이, 디바이스(304)에서 프로세싱될 펌웨어(306)가 비-휘발성 메모리(예를 들어, 메모리(104)의 부분)로부터 판독된다. 대안적으로, 출력 드라이버를 포함하지 않는, 디바이스(100)에서 프로세서 상에서 실행되는 애플리케이션이 식별된다. 펌웨어(306)는 하드웨어(예를 들어, 인코더들, 디코더들, 메모리 셀들 및 회로부(미도시)뿐만 아니라 디바이스(100)의 하나 이상의 다른 프로세서들, 출력 드라이버(114)의 APD(116))의 동작을 제어하기 위하여 디바이스 드라이버(122)와 함께 사용된다.
하드웨어 파라미터들의 예들은, 동적 전력 관리(dynamic power management; DPM) 파라미터들(예를 들어, 클럭 속도 파라미터들, 클럭 전압 파라미터들, 및 클럭 게이팅 파라미터들), 메모리 타이밍 파라미터들, 식별된 애플리케이션을 실행하기 위한 전력 분배를 제어하기 위하여 사용되는 열 생성(예를 들어, 열적 설계 전력(thermal design power; TDP)) 및 다른 파라미터들을 포함한다. APD(116)는, 예를 들어, 운영 시스템(120), 디바이스 드라이버(122) 및 구성 명령어들(124)을 사용하여 애플리케이션(126)을 실행(예를 들어, 실행을 위한 스케줄링, 실행)하도록 구성된다. 예를 들어, 운영 시스템(120)은 펌웨어(306)와 통신하며, APD(116) 상에서 실행되는 애플리케이션(126)에 대한 하드웨어에 대한 인터페이스를 제공한다. 디바이스 드라이버(122)는, 예를 들어, APD(116)의 다양한 기능을 액세스하기 위하여 APD(116) 상에서 실행되는 애플리케이션들(126)에 대한 API(302)를 제공함으로써, APD(116)의 동작을 제어한다.
프로세서(102)는, 예를 들어, 애플리케이션 명칭을 통해 디바이스(304)에서 실행되고 있는 애플리케이션을 식별한다. 프로세서(102)는 또한, 애플리케이션(126)에 의해 사용되는 API(302)를 식별하는 API 식별자를 통해 실행되는 애플리케이션(126)을 식별하도록 구성된다. API(302)는, 예를 들어, 디바이스 드라이버(122)를 인터페이싱하기 위하여(예를 들어, 요청들을 만들기 위하여) 사용되는 명령어들을 포함한다. API들의 예들은 비제한적으로, 개방형 컴퓨팅 언어(open computing language; OpenCL), 개방형 그래픽 라이브러리(open graphics library; OpenGL) 및 DirectX API들을 포함한다.
애플리케이션(126)에 대한 하드웨어 파라미터 설정들은 구성 명령어들(124) 내에 저장된다. 특정 프로세서 또는 디바이스(예를 들어, 그래픽 카드)에 의한 실행을 위하여 새로운 애플리케이션이 이용이 가능해질 때(예를 들어, 실행을 위하여 이용이 가능해질 때), 제공된 API(302)를 사용하여 애플리케이션(126)이 상이한 파라미터 설정들을 가지고 디바이스에 대하여 테스트(예를 들어, 실행)되어 상이한 레벨들의 전력 소비 및 성능을 야기한다. 각각의 디바이스(예를 들어, 디바이스(100), 출력 드라이버(114), 디바이스(304))는 하드웨어(예를 들어, IC, 프로세서 예컨대 프로세서(102) 또는 APD(116), 메모리 셀들, 인코더, 디코더 및 회로부))를 포함한다. 하드웨어는, 예를 들어 하드웨어 식별자(예를 들어, 디바이스 ID 또는 리비전(revision) ID)를 사용하여 식별된다. 새로운 애플리케이션(126)에 대하여 식별된 하드웨어에 대한 하드웨어 파라미터 설정들이 결정될 때, 설정들은, 예를 들어, 네트워크(미도시)를 통해 업데이트된 구성 명령어들(예를 들어, 구성 파일, 블랍 파일 또는 다른 파일)의 부분으로서 전송된다. 설정들은 (예를 들어, 디바이스(예를 들어, 출력 드라이버(114), 디바이스(304)) 및 하드웨어(예를 들어, APD(116))를 포함하는 디바이스(100)에서) 수신된다. 업데이트된 구성 명령어들이 디바이스(100)에서 수신될 때, 새로운 애플리케이션(126)에 대한 파라미터 설정들은 디바이스 드라이버(122)를 변경하지 않고 드라이버 스택(125)의 구성 명령어들(124)을 오버라이팅함으로써 디바이스(100)에서 휘발성 메모리(예를 들어, 메모리(104)의 휘발성 부분) 내에 (예를 들어, 프로세서(102)를 통해) 저장된다.
실행되는 애플리케이션(126)이 식별될 때, 프로세서(102)는, (예를 들어, 디바이스(304)에서) 펌웨어(306)를 실행하고 실행되는 애플리케이션(126)에 대응하는 구성 명령어들(124) 내의 저장된 하드웨어 파라미터 설정들에 따라 복수의 하드웨어 파라미터들(예를 들어, 클럭 전압)을 튜닝함으로써, 하드웨어의 동작을 제어한다. 튜닝은 구성 명령어들(124) 내에 저장된 하드웨어 파라미터 설정들에 따라 하드웨어 파라미터들과 연관된 값들을 설정함으로써 수행된다. 예를 들어, 실행되는 애플리케이션(126)이 식별될 때, 디바이스 드라이버(122)는 구성 명령어들(124)을 파싱(parse)하고, 식별된 애플리케이션(126) 및 API(302)에 대한 설정들을 구성 명령어들(124)로부터 판독한다. 저장된 데이터는 디바이스 드라이버(122)(예를 들어, 커널 모드 드라이버) 및 전력 및 성능을 관리하기 위하여 저장된 설정들을 지원하는 추가적인 구조들로 전달된다.
저장된 설정들은, 예를 들어, 활동 레벨 문턱 파라미터의 값에 대한 하드웨어의 활동 레벨의 비교에 기초하여 클럭 전압 파라미터의 값을 증가시키는 것 또는 감소시키는 것을 포함한다. 하드웨어의 활동 레벨 및 활동 레벨 문턱 파라미터의 값은, 예를 들어, 샘플링 간격(예를 들어, 10 ms) 동안 프로세서가 실행하는 시간의 퍼센트 또는 분율, 샘플링 간격 동안 프로세서가 실행하는 횟수, 또는 샘플링 간격 동안 프로세서가 실행하는 활동 레벨을 측정하기 위한 다른 메트릭(metric)에 대응한다. 예를 들어, 샘플링 간격 동안의 하드웨어의 활동 레벨이 활동 레벨 문턱 파라미터의 값보다 더 작은 경우 클럭 전압 파라미터의 값이 감소되며, 샘플링 간격 동안의 하드웨어의 활동 레벨이 활동 레벨 문턱 파라미터의 값과 동일하거나 또는 더 큰 경우 클럭 전압 파라미터의 값이 증가된다. 설정들은 또한, 예를 들어, 클럭 전압 파라미터의 값에 대한 한계를 설정하는 것을 포함한다.
도 4는 전력-성능 관리를 위한 하드웨어 파라미터 설정들을 수신하는 예시적인 방법을 예시하는 순서도(400)이다.
도 4의 블록(402)에 도시된 바와 같이, 방법(400)은 (예를 들어, 디바이스 식별자를 통해) 하드웨어의 동작을 제어하기 위하여 사용되는 복수의 하드웨어 파라미터들에 대한 하드웨어 파라미터 설정들을 디바이스에서 수신하는 단계를 포함한다. 맞춤화된 하드웨어 설정들은, 예를 들어, 현재 저장된 구성 명령어들을 업데이트하기 위하여 네트워크(미도시)를 통해 구성 명령어들의 세트(예를 들어, 구성 파일)의 부분으로서 디바이스에서 수신된다.
구성 파일은 방법(400)의 블록(404)에서 업데이트된다. 구성 명령어들을 업데이트하는 것은, 예를 들어, 구성 파일의 각각의 부분을 오버라이팅하는 것(즉, 파일 자체를 오버라이팅하는 것), 구성 파일의 하나 이상의 부분들을 오버라이팅하는 것(즉, 하나 이상의 애플리케이션들에 대하여 이전에 수신된 설정들에 대한 하드웨어 파라미터 설정들을 업데이트하는 것), 및 하나 이상의 새롭게 테스트된 애플리케이션들에 대한 하드웨어 파라미터 설정들을 추가하는 것을 포함한다. 현재 저장된 파라미터 설정들(예를 들어, 하나 이상의 애플리케이션들에 대하여 이전에 수신된 설정들)은, 예를 들어, 애플리케이션 명칭 또는 API 식별자들을 통해 식별된다. 명령어들은, 디바이스 드라이버를 오버라이팅하거나 또는 변경하지 않고 구성 명령어들을 오버라이팅함으로써 저장된다. 즉, 설정들이 디바이스 드라이버 내에 하드코딩되지 않으며, 디바이스 드라이버를 수정하지 않고 변경될 수 있다.
업데이트된 구성 명령어들은 비-휘발성 메모리(예를 들어, 하드-디스크, 마더보드 부트 ROM, 및 유사한 것) 내에 (예를 들어, 펌웨어로서) 저장된다. 식별자들(예를 들어, 애플리케이션 명칭들 및 API 식별자들)이 또한 대응하는 애플리케이션 명칭들 및 애플리케이션들에 대하여 제공된 API 식별자들을 가지고 하드웨어 파라미터 설정들을 식별하기 위하여 저장된다. 애플리케이션이 실행될 때, 대응하는 애플리케이션에 대한 식별된 하드웨어 파라미터 설정들을 포함하는 명령어들이 디바이스에서 메모리를 통해 실행된다.
도 5는 애플리케이션 실행시간에서의 전력-성능 관리의 예시적인 방법을 예시하는 순서도(500)이다.
도 5의 블록(502)에 도시된 바와 같이, 방법(500)은 애플리케이션을 실행하는 단계를 포함한다. 애플리케이션은, 예를 들어, 애플리케이션을 페칭하고, 애플리케이션을 디코딩하며, 실행을 위하여 애플리케이션을 스케줄링하고, 애플리케이션의 실행을 개시하며, 애플리케이션의 특정 부분(예를 들어, 풀 스크린 상의 비디오의 렌더링)을 실행함으로써 실행된다.
도 5의 블록(504)에 도시된 바와 같이, 방법(500)은 실행되는 애플리케이션을 식별하는 단계를 포함한다. 애플리케이션은, 예를 들어, 애플리케이션을 식별하는 애플리케이션 식별자 및 애플리케이션에 대하여 제공된 API를 식별하는 API 식별자에 의해 식별된다. 각각의 애플리케이션 및 각각의 API가 동일한 전력 분배 값들을 사용하여 상이한 성능 레벨을 야기할 수 있기 때문에, 설정들은, 다른 애플리케이션을 실행할 때의 성능에 영향을 주지 않으면서 성능의 레벨을 유지하고 애플리케이션을 실행하기 위하여 하드웨어에 의해 소비되는 전력을 제어하기 위하여 각각의 애플리케이션 및 각각의 API에 대하여 맞춤화된다.
도 5의 결정 블록(506)에 도시된 바와 같이, 방법은, 식별된 애플리케이션에 대하여 저장된 하드웨어 파라미터 설정들이 존재하는지 여부를 결정하는 단계를 포함한다. 예를 들어, 식별된 애플리케이션에 대한 하드웨어 파라미터 설정들이 도 4에서 설명된 구성 파일 내에 저장되어 있는지 여부가 결정된다. 파라미터 설정들이 존재할 때, 하드웨어 파라미터 설정들은 식별된 애플리케이션에 대하여 저장된다.
도 5에서 방법(500)의 블록(508)에 도시된 바와 같이, (예를 들어, 애플리케이션 식별자 및 API 식별자를 통해) 식별된 애플리케이션에 대한 하드웨어 파라미터 설정들이 저장되어 있는 것으로 결정될 때, 하드웨어 파라미터들은 식별된 애플리케이션에 대해 저장된 하드웨어 파라미터 설정들에 따라 애플리케이션을 실행하기 위하여 튜닝된다. 설정들은 디바이스에서 메모리를 통해 실행된다. 튜닝은, 실행의 레벨을 유지하면서 식별된 애플리케이션을 실행하기 위하여 하드웨어에 의해 소비되는 전력을 제어하는 것과 같이, 하드웨어의 동작을 제어하기 위하여 사용된다. 예를 들어, 전력 분배는, 샘플링 간격 동안의 활동 레벨 문턱 파라미터의 값에 대한 샘플링 간격 동안의 하드웨어의 활동 레벨의 비교에 기초하여 클럭 전압 파라미터를 튜닝함으로써(예를 들어, 클럭 전압 파라미터의 값을 변경함으로써) 관리된다. 도 5의 방법(500)의 블록(510)에 도시된 바와 같이, 식별된 애플리케이션에 대한 하드웨어 파라미터 설정들이 저장되어 있지 않은 것으로 결정될 때(예를 들어, 식별된 애플리케이션에 대한 하드웨어 파라미터 설정들이 아직 수신되지 않았을 때), 하드웨어 설정들은 저장된 전역(global) 하드웨어 파라미터 설정들에 따라 애플리케이션을 실행하기 위하여 튜닝된다.
본원의 개시에 기초하여 다수의 변형들이 가능하다는 것이 이해되어야 한다. 특징들 및 엘리먼트들이 이상에서 특정 조합들로 설명되었지만, 각각의 특징 또는 엘리먼트는 다른 특징들 및 엘리먼트들 없이 단독으로 또는 다른 특징들 및 엘리먼트들과 또는 이들 없이 다양한 조합들로 사용될 수 있다.
제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어 내의 구현예를 포함한다. 적절한 프로세서들은, 예로서, 범용 프로세서, 전용 프로세서, 통상의 프로세서, 디지털 신호 프로세스(DSP), 복수의 마이크로프로세서들, DSP 코어와 연관된 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, 응용 특정 집적 회로(ASIC)들, 필드 프로그램가능 게이트 어레이(FPGA) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 머신을 포함한다. 이러한 프로세서들은, 프로세싱된 넷리스트(netlist)들을 포함하는 다른 매개 데이터 및 하드웨어 기술 언어(hardware description language; HDL) 명령들(이러한 명령들은 컴퓨터 판독가능 매체 상에 저장될 수 있음)의 결과들을 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과들은, 그런 다음 전력-성능 관리를 위한 애플리케이션 프로파일링을 구현하는 프로세서를 제조하기 위해 반도체 제조 프로세서에서 사용되는 마스크워크(maskwork)들일 수 있다.
본원에서 제공된 방법들 또는 순서도들이, 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비-일시적인 컴퓨터-판독가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어로 구현될 수 있다. 비-일시적인 컴퓨터-판독가능 매체들의 예들은, ROM, 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스들, 내부적 하드 디스크들 및 착탈가능 디스크들과 같은 자기 매체들, 자기-광 매체들, 및 CD-ROM 디스크들 및 디지털 다기능 디스크(DVD)들과 같은 광 매체들을 포함한다.

Claims (20)

  1. 프로세싱 장치로서,
    복수의 애플리케이션들의 각각에 대한 하드웨어 파라미터 설정들을 저장하도록 구성된 메모리;
    상기 메모리와 통신하는 프로세서를 포함하며, 상기 프로세서는:
    상기 메모리 내에 상기 하드웨어 파라미터 설정들을 저장하고;
    현재 실행되는 애플리케이션으로서 상기 복수의 애플리케이션들 중 하나의 애플리케이션을 식별하며; 및
    상기 식별된 하나의 애플리케이션에 대한 상기 저장된 하드웨어 파라미터 설정들에 따라 복수의 하드웨어 파라미터들을 튜닝함으로써 하드웨어의 동작을 제어하도록 구성되는, 프로세싱 장치.
  2. 제1항에 있어서,
    상기 하드웨어는, 상기 애플리케이션을 실행하도록 구성되는, 복수의 프로세서 유형들을 포함하는, 가속 프로세싱 디바이스를 포함하는, 프로세싱 장치.
  3. 제1항에 있어서,
    상기 프로세서는, 상기 실행되는 애플리케이션을 식별하는 애플리케이션 식별자 및 상기 실행되는 애플리케이션에 제공된 애플리케이션 프로그래밍 인터페이스를 식별하는 애플리케이션 프로그래밍 인터페이스 식별자를 통해 상기 하드웨어 상에서 실행되는 상기 애플리케이션을 식별하도록 더 구성되는, 프로세싱 장치.
  4. 제1항에 있어서,
    상기 하드웨어는 하드웨어 식별자를 포함하며, 상기 하드웨어 파라미터 설정들은 상기 하드웨어 식별자에 의해 식별된 상기 하드웨어의 동작을 제어하기 위하여 사용되는, 프로세싱 장치.
  5. 제1항에 있어서,
    상기 복수의 하드웨어 파라미터들은, 실행의 성능 레벨을 유지하면서 상기 식별된 하나의 애플리케이션을 실행하기 위하여 상기 하드웨어에 의해 소비되는 전력의 양을 제어하도록 구성된 전력 관리 파라미터들이며,
    상기 프로세서는 상기 식별된 하나의 애플리케이션에 대한 상기 저장된 하드웨어 파라미터 설정들에 따라 상기 복수의 전력 관리 파라미터들을 튜닝함으로써 상기 하드웨어에 의해 소비되는 상기 전력의 양을 제어하도록 더 구성되는, 프로세싱 장치.
  6. 제5항에 있어서,
    상기 전력 관리 파라미터들은 샘플링 간격 동안의 활동 레벨 문턱 파라미터 및 클럭 전압 파라미터를 포함하며,
    상기 프로세서는:
    상기 샘플링 간격 동안의 상기 하드웨어의 활동 레벨과 상기 샘플링 간격 동안의 상기 활동 레벨 문턱 파라미터를 비교하는 것; 및
    상기 샘플링 간격 동안의 상기 활동 레벨 문턱 파라미터에 대한 상기 샘플링 간격 동안의 상기 하드웨어의 활동 레벨의 비교에 기초하여 상기 클럭 전압 파라미터의 값을 변경하는 것에 의해 상기 클럭 전압 파라미터를 튜닝하도록 더 구성되는, 프로세싱 장치.
  7. 제1항에 있어서,
    상기 프로세서는:
    상기 식별된 하나의 애플리케이션에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있는지 여부를 결정하고;
    상기 식별된 하나의 애플리케이션에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있는 것으로 결정될 때, 상기 애플리케이션을 실행하기 위한 상기 하드웨어 파라미터들을 상기 식별된 하나의 애플리케이션에 대한 상기 저장된 하드웨어 파라미터 설정들에 따라 튜닝하며; 및
    상기 식별된 하나의 애플리케이션에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있지 않은 것으로 결정될 때, 상기 애플리케이션을 실행하기 위한 상기 하드웨어 파라미터들을 저장된 전역 하드웨어 파라미터 설정들에 따라 튜닝하도록 더 구성되는, 프로세싱 장치.
  8. 제1항에 있어서,
    상기 프로세서는, 구성 파일을 사용함으로써 상기 하드웨어의 동작을 제어하도록 구성된 디바이스 드라이버와는 별개의 상기 구성 파일 내에 상기 하드웨어 파라미터 설정들을 저장하도록 더 구성되는, 프로세싱 장치.
  9. 제8항에 있어서,
    상기 프로세서는, 상기 애플리케이션들 중 하나 이상에 대한 새로운 파라미터 설정들이 수신될 때, 상기 디바이스 드라이버를 수정하지 않고 상기 구성 파일을 업데이트하도록 더 구성되는, 프로세싱 장치.
  10. 제1항에 있어서,
    상기 메모리는 실행가능 디바이스 드라이버를 저장하도록 더 구성되며, 상기 프로세서는,
    상기 하드웨어 파라미터 설정들을 비-실행가능 구성 파일 내에 저장하고; 및
    상기 비-실행가능 구성 파일 내에 저장된 상기 저장된 하드웨어 파라미터 설정들에 따라 상기 복수의 하드웨어 파라미터들을 튜닝하기 위하여 상기 실행가능 디바이스 드라이버를 사용함으로써 상기 하드웨어의 동작을 제어하도록 더 구성되는, 프로세싱 장치.
  11. 전력-성능 관리의 컴퓨터 구현형 방법으로서,
    복수의 애플리케이션들의 각각에 대한 하드웨어 파라미터 설정들을 수신하는 단계;
    상기 하드웨어 파라미터 설정들을 저장하는 단계;
    상기 복수의 애플리케이션들 중 하나의 애플리케이션을 실행하는 단계;
    상기 실행되는 애플리케이션을 식별하는 단계; 및
    상기 식별된 실행되는 애플리케이션에 대한 상기 저장된 하드웨어 파라미터 설정들에 따라 상기 하드웨어 파라미터들을 튜닝함으로써 하드웨어의 동작을 제어하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 방법은,
    상기 식별된 실행되는 애플리케이션에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있는지 여부를 결정하는 단계;
    상기 식별된 실행되는 애플리케이션에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있는 것으로 결정될 때, 상기 애플리케이션을 실행하기 위한 상기 하드웨어 파라미터들을 상기 식별된 실행되는 애플리케이션에 대한 상기 저장된 하드웨어 파라미터 설정들에 따라 튜닝하는 단계; 및
    상기 식별된 실행되는 애플리케이션에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있지 않은 것으로 결정될 때, 상기 애플리케이션을 실행하기 위한 상기 하드웨어 파라미터들을 저장된 전역 하드웨어 파라미터 설정들에 따라 튜닝하는 단계를 더 포함하는, 방법.
  13. 제11항에 있어서,
    상기 방법은 상기 실행되는 애플리케이션에 하나 이상의 애플리케이션 프로그래밍 인터페이스를 제공하는 단계를 더 포함하며, 상기 실행되는 애플리케이션을 식별하는 단계는 상기 실행되는 애플리케이션에 제공된 상기 하나 이상의 애플리케이션 프로그래밍 인터페이스를 식별하는 단계를 포함하는, 방법.
  14. 제11항에 있어서,
    상기 방법은, 구성 파일 내에 저장된 상기 하드웨어 파라미터 설정들을 사용함으로써 상기 하드웨어의 동작을 제어하도록 구성된 디바이스 드라이버와는 별개의 상기 구성 파일 내에 상기 하드웨어 파라미터 설정들을 저장하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서,
    상기 방법은, 상기 복수의 애플리케이션들의 각각에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있을 때, 상기 디바이스 드라이버를 수정하지 않고 상기 구성 파일을 업데이트하는 단계를 더 포함하는, 방법.
  16. 제11항에 있어서,
    상기 복수의 하드웨어 파라미터들은, 실행의 성능 레벨을 유지하면서 상기 식별된 실행되는 애플리케이션을 실행하기 위하여 상기 하드웨어에 의해 소비되는 전력의 양을 제어하도록 구성된 전력 관리 파라미터들이며,
    상기 방법은, 상기 저장된 하드웨어 파라미터 설정들에 따라 상기 복수의 전력 관리 파라미터들을 튜닝함으로써 상기 하드웨어에 의해 소비되는 상기 전력의 양을 제어하는 단계를 더 포함하는, 방법.
  17. 제16항에 있어서,
    상기 전력 관리 파라미터들은 샘플링 간격 동안의 활동 레벨 문턱 파라미터 및 클럭 전압 파라미터를 포함하며,
    상기 방법은:
    상기 샘플링 간격 동안의 상기 하드웨어의 활동 레벨과 상기 샘플링 간격 동안의 상기 활동 레벨 문턱 파라미터를 비교하는 것; 및
    상기 샘플링 간격 동안의 상기 활동 레벨 문턱 파라미터에 대한 상기 샘플링 간격 동안의 상기 하드웨어의 활동 레벨의 비교에 기초하여 상기 클럭 전압 파라미터의 값을 변경하는 것에 의해 상기 클럭 전압 파라미터를 튜닝하는 단계를 더 포함하는, 방법.
  18. 제17항에 있어서,
    상기 방법은,
    상기 하드웨어의 동작을 제어하기 위한 명령어들을 포함하는 실행가능 디바이스 드라이버를 저장하는 단계;
    상기 하드웨어 파라미터 설정들을 비-실행가능 구성 파일 내에 저장하는 단계; 및
    상기 비-실행가능 구성 파일 내에 저장된 상기 저장된 하드웨어 파라미터 설정들에 따라 상기 복수의 하드웨어 파라미터들을 튜닝하기 위하여 상기 실행가능 디바이스 드라이버를 사용하여 상기 하드웨어의 동작을 제어하는 단계를 더 포함하는, 방법.
  19. 컴퓨터가 전력-성능 관리를 실행하게끔 하기 위한 명령어들을 포함하는 비-일시적인 컴퓨터 판독가능 매체로서, 상기 명령어들은,
    복수의 애플리케이션들의 각각에 대한 하드웨어 파라미터 설정들을 저장하는 것;
    상기 복수의 애플리케이션들 중 하나의 애플리케이션을 실행하는 것;
    상기 실행되는 애플리케이션을 식별하는 것; 및
    상기 식별된 실행되는 애플리케이션에 대한 상기 저장된 하드웨어 파라미터 설정들에 따라 상기 하드웨어 파라미터들을 튜닝함으로써 하드웨어의 동작을 제어하는 것을 포함하는, 비-일시적인 컴퓨터 판독가능 매체.
  20. 제19항에 있어서,
    상기 명령어들은,
    상기 복수의 애플리케이션들의 각각에 대하여, 구성 파일 내에 저장된 상기 하드웨어 파라미터 설정들을 사용함으로써 상기 하드웨어의 동작을 제어하도록 구성된 디바이스 드라이버와는 별개의 상기 구성 파일 내에 상기 하드웨어 파라미터 설정들을 저장하는 것; 및
    상기 복수의 애플리케이션들의 각각에 대한 상기 하드웨어 파라미터 설정들이 저장되어 있을 때, 상기 디바이스 드라이버를 수정하지 않고 상기 구성 파일을 업데이트하는 것을 더 포함하는, 비-일시적인 컴퓨터 판독가능 매체.
KR1020197015368A 2016-11-18 2017-11-07 전력-성능 관리를 위한 애플리케이션 프로파일링 KR102208349B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/355,569 2016-11-18
US15/355,569 US10877547B2 (en) 2016-11-18 2016-11-18 Application profiling for power-performance management
PCT/CA2017/051322 WO2018090130A1 (en) 2016-11-18 2017-11-07 Application profiling for power-performance management

Publications (2)

Publication Number Publication Date
KR20190082822A true KR20190082822A (ko) 2019-07-10
KR102208349B1 KR102208349B1 (ko) 2021-01-27

Family

ID=62144941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197015368A KR102208349B1 (ko) 2016-11-18 2017-11-07 전력-성능 관리를 위한 애플리케이션 프로파일링

Country Status (6)

Country Link
US (3) US10877547B2 (ko)
EP (1) EP3542245A4 (ko)
JP (1) JP6909290B2 (ko)
KR (1) KR102208349B1 (ko)
CN (1) CN109923498B (ko)
WO (1) WO2018090130A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11079945B2 (en) 2018-09-20 2021-08-03 Ati Technologies Ulc Dynamic configuration of memory timing parameters
TWI706246B (zh) * 2018-12-27 2020-10-01 技嘉科技股份有限公司 效能管理系統、提供效能設定參數組合的方法、更新效能參數的方法、電腦軟體以及儲存媒體
US11068295B2 (en) * 2019-04-12 2021-07-20 Ghost Locomotion Inc. Device operation across multiple operating system modalities
CN111832738B (zh) * 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
CN112543375A (zh) * 2019-09-20 2021-03-23 青岛海信传媒网络技术有限公司 一种电视耗能管理方法及相关设备
US20230108234A1 (en) * 2021-09-28 2023-04-06 Advanced Micro Devices, Inc. Synchronous labeling of operational state for workloads
US11953965B2 (en) 2021-12-21 2024-04-09 Ati Technologies Ulc Adaptive power management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010256939A (ja) * 2009-03-17 2010-11-11 Toshiba Corp 情報処理装置及び省電力設定方法
KR20110110737A (ko) * 2010-04-01 2011-10-07 인텔 코오퍼레이션 인터럽트 전력 관리를 위한 장치 및 방법
KR20150131186A (ko) * 2013-03-15 2015-11-24 퀄컴 인코포레이티드 메모리 디바이스의 타이밍 파라미터를 동적으로 결정하기 위한 시스템 및 방법

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0901063A3 (en) 1997-09-05 2000-05-24 Texas Instruments Incorporated Power management methods
US6167567A (en) * 1998-05-05 2000-12-26 3Com Corporation Technique for automatically updating software stored on a client computer in a networked client-server environment
TWI237793B (en) * 2004-03-12 2005-08-11 Abit Comp Corp Method for automatically changing configured values of hardware in computer system in accordance with executing application program
US7636921B2 (en) 2004-09-01 2009-12-22 Ati Technologies Inc. Software and methods for previewing parameter changes for a graphics display driver
US20060080867A1 (en) 2004-10-18 2006-04-20 Fang-Lin Chi Shoe heel with liquid received therein
US8276133B1 (en) 2007-12-11 2012-09-25 Nvidia Corporation System, method, and computer program product for determining a plurality of application settings utilizing a mathematical function
CN101751299B (zh) * 2008-12-17 2012-05-23 恩斯迈电子(深圳)有限公司 具有自动调整硬件参数值的计算机主机板
US9798370B2 (en) * 2009-03-30 2017-10-24 Lenovo (Singapore) Pte. Ltd. Dynamic memory voltage scaling for power management
WO2011004221A1 (en) * 2009-07-08 2011-01-13 Nokia Corporation Method and apparatus for application power management
CN101778164A (zh) * 2010-01-06 2010-07-14 宇龙计算机通信科技(深圳)有限公司 一种移动终端及其功率参数调整的方法
US8352759B2 (en) * 2010-01-11 2013-01-08 Qualcomm Incorporated System and method of monitoring a central processing unit in real time
AU2012392518B2 (en) * 2012-10-16 2016-04-21 Razer (Asia-Pacific) Pte.Ltd. Computing systems and methods for controlling a computing system
US20140281592A1 (en) 2013-03-18 2014-09-18 Advanced Micro Devices, Inc. Global Efficient Application Power Management
US9063782B2 (en) * 2013-04-04 2015-06-23 Harris Corporation Changing resource allocation among a plurality of concurrently executing applications in a portable multimode communication device in response to a change in usage scenario
US10409353B2 (en) 2013-04-17 2019-09-10 Qualcomm Incorporated Dynamic clock voltage scaling (DCVS) based on application performance in a system-on-a-chip (SOC), and related methods and processor-based systems
US9021439B2 (en) * 2013-04-25 2015-04-28 Centurylink Intellectual Property Llc Green software applications
JP6244785B2 (ja) 2013-09-30 2017-12-13 日本電気株式会社 It機器
US9639465B2 (en) * 2014-04-30 2017-05-02 Qualcomm Innovation Center, Inc. Dynamic cachable memory interface frequency scaling
CN104007806B (zh) 2014-06-20 2017-10-24 中科创达软件股份有限公司 一种安卓***中的cpu频率的控制方法、装置和设备
WO2016090187A1 (en) * 2014-12-05 2016-06-09 Tso Logic Inc Power state adjustment
US10108520B2 (en) * 2015-10-27 2018-10-23 Tata Consultancy Services Limited Systems and methods for service demand based performance prediction with varying workloads
US20170228849A1 (en) * 2016-02-05 2017-08-10 Mediatek Inc. Apparatuses and methods for activity-based resource management, and storage medium thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010256939A (ja) * 2009-03-17 2010-11-11 Toshiba Corp 情報処理装置及び省電力設定方法
KR20110110737A (ko) * 2010-04-01 2011-10-07 인텔 코오퍼레이션 인터럽트 전력 관리를 위한 장치 및 방법
KR20150131186A (ko) * 2013-03-15 2015-11-24 퀄컴 인코포레이티드 메모리 디바이스의 타이밍 파라미터를 동적으로 결정하기 위한 시스템 및 방법

Also Published As

Publication number Publication date
WO2018090130A1 (en) 2018-05-24
EP3542245A4 (en) 2020-06-17
CN109923498B (zh) 2023-08-15
EP3542245A1 (en) 2019-09-25
US20230333624A1 (en) 2023-10-19
JP2020513613A (ja) 2020-05-14
US11703931B2 (en) 2023-07-18
US20180143680A1 (en) 2018-05-24
US10877547B2 (en) 2020-12-29
KR102208349B1 (ko) 2021-01-27
JP6909290B2 (ja) 2021-07-28
US20210116987A1 (en) 2021-04-22
CN109923498A (zh) 2019-06-21

Similar Documents

Publication Publication Date Title
US11703931B2 (en) Application profiling for power-performance management
TWI725086B (zh) 動態更新處理器的電源管理政策
TWI575370B (zh) 在多核心處理器中執行電源管理
US11119932B2 (en) Operation of a multi-slice processor implementing adaptive prefetch control
US20180373562A1 (en) Controlling operation of a gpu
US10877548B2 (en) Context switches with processor performance states
US20160147577A1 (en) System and method for adaptive thread control in a portable computing device (pcd)
CN113728312A (zh) 用于控制应用的执行的方法、电子装置及其存储介质
US20160080284A1 (en) Method and apparatus for executing application based on open computing language
US10353591B2 (en) Fused shader programs
US20220334888A1 (en) Methods and apparatus to synchronize threads
US20220113757A1 (en) Apparatus, systems, and methods for intelligent tuning of overclocking frequency
US11996166B2 (en) Adaptable allocation of SRAM based on power
US20220100543A1 (en) Feedback mechanism for improved bandwidth and performance in virtual environment usecases
CN117859114A (zh) 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法
US20200379820A1 (en) Synchronization mechanism for workgroups
US20230205680A1 (en) Emulating performance of prior generation platforms
US20230145253A1 (en) Reducing latency in highly scalable hpc applications via accelerator-resident runtime management
US20230136365A1 (en) Methods and apparatus to allocate accelerator usage
US11934248B2 (en) Performance and power tuning user interface
US11953965B2 (en) Adaptive power management
TW202333046A (zh) 用於系統更新之動態資源判定技術
CN118235116A (zh) 经由加速器驻留运行时管理减少高度可扩展的hpc应用程序中的延迟

Legal Events

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