KR100582378B1 - 마이크로프로세서의 전력 소비를 감소시키는 방법 및 머신코드 구축기 - Google Patents

마이크로프로세서의 전력 소비를 감소시키는 방법 및 머신코드 구축기 Download PDF

Info

Publication number
KR100582378B1
KR100582378B1 KR1020030100394A KR20030100394A KR100582378B1 KR 100582378 B1 KR100582378 B1 KR 100582378B1 KR 1020030100394 A KR1020030100394 A KR 1020030100394A KR 20030100394 A KR20030100394 A KR 20030100394A KR 100582378 B1 KR100582378 B1 KR 100582378B1
Authority
KR
South Korea
Prior art keywords
resource
code
machine code
builder
execution
Prior art date
Application number
KR1020030100394A
Other languages
English (en)
Other versions
KR20040076197A (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 KR20040076197A publication Critical patent/KR20040076197A/ko
Application granted granted Critical
Publication of KR100582378B1 publication Critical patent/KR100582378B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4432Reducing the energy consumption
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)
  • Devices For Executing Special Programs (AREA)
  • Microcomputers (AREA)

Abstract

개선된 소프트웨어 제어형 프로그램 관리를 제공하는 머신 코드 구축기가 개시된다. 머신 코드 구축기는 실행전 코드를 독출하고, 실행전 코드로부터 머신 코드를 구축하여 자원이 요청되지 않는 기간을 최대화한다. 사용되지 않는 자원은 사용자 정의되거나 구축기가 실행전 코드를 분석해서 어느 자원이 요청되지 않을지를 판정할 수 있다. 구축기는 머신 코드를 재편성하여 특정 자원이 사용되지 않는 시간을 최대화한다. 성능의 손실을 방지하기 위해 자원의 전력 재인가 동안 자원 에뮬레이션 코드가 수행되게 하는 메커니즘이 제공되기도 한다.

Description

마이크로프로세서의 전력 소비를 감소시키는 방법 및 머신 코드 구축기{MACHINE CODE BUILDER DERIVED POWER CONSUMPTION REDUCTION}
도 1은 소프트웨어 제어형 전력 관리용 머신 코드 구축기를 구비한 컴퓨터 시스템의 블록도,
도 2는 도 1의 머신 코드 구축기의 블록도.
본 발명은 일반적으로 마이크로프로세서의 전력 소비에 관한 것이고, 더 상세하게는 머신 코드 구축기로부터 유도되는 마이크로프로세서의 전력 소비의 감소에 관한 것이다.
컴퓨터 시스템에서의 전력 소비는 운반형 컴퓨터의 증가 추세로 인해서 점점 더 중요해 지고 있다. 상세하게는, 컴퓨터 산업에서는 더 빠르게 동작하는 내부 회로를 가진 더 강력한 마이크로프로세서를 사용하고 있다. 그러나 배터리 기술은 현재의 이동식 컴퓨터의 증가하는 전력 소비를 따라가기에는 충분하지 않다. 이러한 문제를 해결하기 위해서, 전력 소비를 감소시키는 다양한 관리 기술이 구현되었다.
종래의 마이크로프로세서는 인스트럭션을 더 효율적으로 이용하기 위해 사용되는 다양한 특수 기능 유닛 또는 자원을 포함함으로써, 전력을 절감하고 소프트웨어의 성능을 증가시킬 수 있었다. 이러한 유닛의 예로는 부유 포인트 유닛, 코프로세서, 분기 예측 유닛(branch prediction unit) 등을 들 수 있다. 많은 전력 관리 기술은 이들 유닛의 전력 소비를 감소시키는 데 주력한다. 상세하게는, 누설 대기 전력(leakage standby power)이 전체 프로세서 전력의 더 중요한 부분이 되어감에 따라서, 가능한 한 유닛을 턴 오프하는 것이 바람직하다.
전력 관리 기술을 사용하는 두 개의 일반적인 방안이 있다. 첫 번째 방안은 하드웨어 로직을 사용해서 프로세서 유닛에 제공되는 전력을 동적으로 제어하는 것이다. 두 번째 방안은 마이크로프로세서가 아닌 소프트웨어에 전력 관리 프로세싱의 역할을 맡기는 것이다.
동적인 제어 기술에 있어서는, IBM으로부터 이용가능한 파워 PC 마이크로프로세서가 그 한가지 예인데, 여기서는 인스트럭션을 수행하는 데 필요하지 않은 인스트럭션 스트림 및 비 동작(de-activating) 유닛을 모니터함으로써 전력 소비를 동적으로 제어한다. 동적 제어에 따른 문제는 인스트럭션 스트림을 지속적으로 모니터하고 독 출(decipher)하는 전력 소비 하드웨어가 필요하다는 점이다.
Gupta 등의 미국 특허 제 5,996,083 호가 마이크로프로세서 하드웨어가 아닌 소프트웨어에 전력 관리 프로세싱의 역할을 맡기는 개선된 기술의 예이다. 여기에는, 각각의 기능 유닛의 전력 제어 레지스터와 관련된 마이크로프로세서가 개시되어 있다. 또한 소프트웨어로 각각의 기능 유닛의 전력 레지스터의 설정을 조정하는 것으로 되어 있다. 전력 레지스터는 클록 주파수 및 전압 공급을 제어함으로써 각각의 기능 유닛의 전력 소비를 제어한다. 그러나 소프트웨어는 전력 제어 레지스터에 어떤 값이 기록되어야 하는지 알고 있고, 소프트웨어가 어느 기능 유닛이 관리되어야 할지를 결정하는 방법에 대한 인스트럭션이 제공되지 않는 것으로 가정된다. 소프트웨어 제어형 전력 관리의 다른 예는 Transmeta사의 Crusoe 프로세서로, x-86 계열 CPU 칩이다. Crusoe 프로세서는 소프트웨어 번역(translation) 레이어가 x86 인스트럭션을 Crusoe 인스트럭션으로 전환하는 방법을 사용한다. 또한, 프로세서는 인스트럭션을 해석해서 반복 인스트럭션 세트로 인식한다. 번역에 사용되는 전력을 최소화하기 위해서, 번역 캐시에 정보가 저장되고, 저장된 블록이 반복 인스트럭션에 재사용될 수 있다.
소프트웨어 제어형 전력 관리와 관련된 다른 문제는 소프트웨어가 종래 속도 효율에 관한 성능만을 고려해서 만들어졌으며, 효율적인 전력 소비는 고려하지 않았다는 것이다. 예컨대, 속도면에 있어서 소프트웨어는 특정한 하나의 기능 유닛이 동작 중의 무수한 다른 시점에 호출되는 방식으로 구성되었다. 이러한 소프트웨어가 구현되면, 기능 유닛의 전력 소비는 실행 중 여러 번 조정되게 된다. 많은 경우에, 전력 소비의 이러한 연속적인 변동은 전력을 소비하며, 이는 성능을 악화시킨다. 한가지 특정 소프트웨어 최적화 기술은 성능을 개선하기 위해 프로파일 다이렉티드 컴필레이션(profile-directed compilation)을 포함한다. 피드백 컴필레이션은 기본 블록 리오더링(basic block reordering)과 같은 실행 시간 최적화를 수행해서, 예측 오류 분기 및 인스트럭션 캐시의 오류의 수를 감소시키기 위해 이전의 실행 동안 구축되는 프로파일 데이터를 사용한다. 불행하게도, 위에서 설명된 최적화 기술은 전력 소비 및 성능에 관해서는 적용되지 않았다.
종래의 전력 관리 기술의 다른 도전 과제는 성능 유지이다. 예컨대, 소프트웨어 제어형 전력 관리 방안에서 기능 유닛은 주기적으로 턴 온되고 턴 오프된다. 이는 전력 소비를 약간 감소시키지만, 자원에 전력이 재인가(re-energized)되기까지는 멀티 GHz 프로세서에서 많은 사이클이 걸리기 때문에 성능을 크게 해친다. Gupta 등은 선택된 기능 유닛이 풀 전력에 이를 때까지 마이크로프로세서의 동작을 일시적으로 중지시킴으로써 이러한 문제를 해결했다. 그러나, 이러한 해법은 자원의 전력 재인가 동안의 성능 손실을 해결하지 못했다.
전술한 점들을 고려할 때, 종래의 기술의 문제점을 해결할 수 있는 전력 관리 기술 및 아키텍쳐가 필요하다.
본 발명은 개선된 소프트웨어 제어형 전력 관리를 제공하는 머신 코드 구축기를 제공한다. 머신 코드 구축기는 실행전 코드(pre-executable code)를 독출하고 머신 코드를 만들어서 최대한 자원이 요청되지 않게 한다. 요청되지 않는 자원은 소프트웨어 개발자에 의해 지정될 수 있고, 혹은 구축기가 실행전 코드를 분석해서 어느 자원이 요청되지 않을지 여부를 결정할 수도 있다. 구축기는 머신 코드를 재구축하여 특정 자원이 사용되지 않는 시간을 최대화한다. 성능의 손실을 방지하기 위해 자원의 전력 재인가 동안 자원 에뮬레이션 코드가 실행되게 하는 메커니즘이 제공되기도 한다.
본 발명의 제 1 특징은 복수의 자원을 가진 마이크로프로세서의 전력 소비를 감소시키는 방법에 관한 것으로, 이 방법은 자원이 실행전 코드를 머신 코드 구축기에 독출시키는 단계와, 실행전 코드로부터 머신 코드를 구축하여 요청되지 않는 기간을 최대화하는 단계를 포함한다.
본 발명의 제 2 특징은 자원을 가진 마이크로프로세서의 머신 코드 구축기에 관한 것으로, 이 머신 코드 구축기는 실행전 코드를 독출하는 수단 및 실행전 코드로부터 머신 코드를 구축하여 자원이 요청되지 않는 기간을 최대화하는 수단을 포함한다.
본 발명의 제 3 특징은 머신 코드 구축 툴에 관한 것으로, 이 머신 코드 구축 툴은 실행전 코드를 독출하는 수단 및 머신 코드의 블록에서 자원을 사용하지 않는 경우에 이 블록의 실행 동안 프로세서의 자원의 전원 인가 해제(de-energize) 수단에 관한 것이다.
본 발명의 제 4 특징은 컴퓨터 독출 가능 프로그램 코드를 구현하는 컴퓨터 사용가능 매체를 포함하는 컴퓨터 프로그램 제품에 관한 것으로, 마이크로프로세서의 전력 소비를 감소시키기 위해, 프로그램 제품은 실행전 코드를 독출하도록 구성된 프로그램 코드 및 실행전 코드로부터 머신 코드를 구축하여 자원이 요청되지 않는 시간을 최대화하도록 구성된 프로그램 코드를 포함한다.
본 발명의 다른 특징은 이하의 추가적인 본 발명의 설명으로부터 자명할 것이다.
체계화하기 위해서 Ⅰ. 개요, Ⅱ. 독출-구축 A. 사용자 정의 자원 지시어, B. 구축기 유도형 자원 사용, C. 코드 재편성 Ⅲ. 절전 프로파일링 Ⅳ. 코드 블록 실행 조건 Ⅴ. 전력 재인가 중의 자원 에뮬레이션 Ⅵ. 기능 문맥 절약과 같은 타이틀을 포함한다.
Ⅰ. 개요
본 발명은 실행전 코드를 머신 코드 구축기로 독출하고, 실행전 코드로부터 머신 코드를 구축하여 자원이 요청되지 않는 시간을 최대화함으로써 전력 소비를 감소시키는 전력 관리 기술 및 관련 아키텍쳐를 포함한다.
도 1을 참조하면, 도 1은 마이크로프로세서 또는 중앙 처리 장치(CPU)를 포함하는 컴퓨터 시스템(10)의 블록도이다. 시스템(10)은 또한 메모리(14), 입출력 디바이스(I/O:16), 버스(17), 다른 하드웨어 레지스터(도시 생략)의 세트 사이에 자원 레지스터(20) 및 자원 활성화 레지스터(21)를 포함하는 스택 프레임(18) 및 절전 머신 코드 구축기(22:이하 MC 구축기라 함)를 포함한다. 프로세싱 태스크에 관련된 데이터를 저장하기 위해 데이터 베이스(23)가 제공될 수도 있다. 시스템(10)은 키보드, 디스플레이, 마우스, 네트워크 시스템, 모뎀, 스캐너, 음성 인식 시스템, 프린터, 디스크 드라이브 등(도시 생략)의 공지된 다수의 인터페이스 중 하나를 또한 포함할 수 있다. 캐시 메모리, 통신 시스템, 시스템 소프트웨어 등의 다른 구성 요소가 시스템(10) 내에 또한 포함될 수 있다. 메모리(14)는, 마이크로프로세서(12)에 의해 실행될 때, 다양한 기능을 갖는 프로그램 제품(24)을 포함한다. 또한, 메모리(14)는 기능-자원 레지스터 데이터 테이블(60)을 포함하며, 이들의 용도는 이하에 설명될 것이다. MC 구축기(22)는 도 1에서 별개의 구조체로서 도시되어 있지만, MC 구축기(22)는 하드웨어 또는 소프트웨어, 즉, 프로그램 제품으로서 MC 구축기가 적용되는 애플리케이션과는 별도로 제공될 수 있다는 것을 알아야 한다.
마이크로프로세서(12)는 다수의 자원(R1-Rn)(이하, 자원이라 함)을 또한 포함한다. 본 명세서에서 자원은 특정 기능을 실행하도록 구성된 로직 세트라고 정의한다. 예를 들어, 자원은 특정 기능을 보다 효과적으로 실행하고, 전력을 절약하고, 및/또는 성능을 증대시키도록 제공될 수 있다. 자원의 대략의 예시적인 리스트는 부동 소수점 유닛, 고정 소수점 유닛, 분기 예측 유닛, 정수 유닛, I/O, 캐시 메모리, 디지털 신호 프로세서, 레지스터 세이브 엔진, 버스, 멀티미디어 서브시스템, 코프로세서, 데이터 컨버터, 마이크로 콘트롤러, 및 전용으로 특정 용도, 기능 또는 태스크를 제공하는 다른 로직을 들 수 있다. 마이크로프로세서(12)의 일부로서 도시되어 있지만, 자원(R1-Rn)은 마이크로프로세서(12)의 외부에 있을 수 있다.
자원 레지스터(20)(RSRC_REG)와 관련하여, 각각의 레지스터(20)는 전력 소비와 관련된 자원을 나타내는 값을 저장한다. 자원 레지스터(20)의 각각의 비트는 특정 자원의 조건을 정의한다. 예를 들어, 부동 소수점 유닛(FP), 예를 들어, 자원(R1)용으로 비트 0이 유지될 수 있다. 0은 FP 유닛이 절전 모드로 있어야 한다는 것을 나타낼 수 있다. 하드웨어는 자원 레지스터(20)의 값을 이용하여 특정 자원을 턴 오프하거나 낮은 전력 모드로 스위칭할 수 있다.
도 2를 참조하면, MC 구축기(22)가 보다 상세히 도시되어 있다. 설명될 MC 구축기(22)의 동작은 현재 알고 있거나 추후에 개발될 일부 종류의 실행전 코드로부터 머신 코드를 생성하기 위한 임의의 단계에서 제공될 수 있다. 예를 들어, MC 구축기(22)는 다음의 단계 중 하나의 단계 동안, 즉, 컴파일 단계, 병합 단계(coalescing), 변환 단계, 최적화 단계, 링크 단계, 선 링크 최적화 단계 또는 실행전 코드로부터 머신 코드를 생성하기 위한 현재 알고 있거나 추후에 개발될 다른 단계 동안에 제공될 수 있다. 본 명세서에서, 실행전 코드란 소스 코드, 또는 아직 머신 코드를 실행할 수 없는 중간 유형의 코드이고, 소스 코드란 사전 컴파일된 및 사용자가 기록 가능한 코드 포맷이며, 머신 코드란 애플리케이션으로서 실행하고자 하는 최종 코드이다. 마이크로프로세서(12)(도 1)는 머신 코드(28)의 인스트럭션을 실행한다. MC 구축기(22)는 리더 유닛(32)과 구축기 유닛(34)을 포함한다. 또한, MC 구축기(22)는 프로파일러(profiler) 유닛(36), 전력 재인가 에뮬레이션 유닛(38), 코드 블록 실행 조건(EXEC.REQ.) 유닛(40) 및 기능 문맥 세이버 유닛(42)을 포함할 수 있다. 상술한 아키텍쳐의 세부사항 및 기능은 이하에 보다 상세히 설명될 것이다. MC 구축기(22)는 성능 증대를 위해서 머신 코드를 구축하는 기능을 하는 통상의 성능 최적화기/프로파일러(50)를 또한 포함할 수 있다.
Ⅱ. 독출-구축
상술한 바와 같이, 본 발명은 전력 관리 기술을 포함하며, 특히, 리더 유닛(32)(도 2)을 이용하여 실행전 코드를 MC 구축기(22)로 독출하고, 구축기 유닛(34)(도 2)을 이용하여 실행전 코드로부터 머신 코드(28)를 구축함으로써, 자원이 요청되지 않는 기간을 최대화하여 전력 소비를 감소시키는 아키텍쳐에 관한 것이다.
A. 사용자 정의 자원 지시어(User-Defined Resource Directive)
일 실시예에서, 머신 코드(28)의 적어도 하나의 블록의 실행 동안에는 필요하지 않은 자원(R1-Rn)(도 1)은 소스 코드 내의 자원 지시어(52)에 의해 식별된다. 이 경우에, 실행전 코드(26)가 소스 코드이다. 본 명세서에 사용된 바와 같이, 자원 지시어는 자원 이용 및/또는 전력 소비에 관한 소스 코드 인스트럭션이다. 특정의 코드 블록에 있어서 어느 자원이 필요하지 않은지를 알고 있는 소프트웨어 개발자에 의해 자원 지시어(52)가 소스 코드 내에 삽입될 수 있다. 구축기 유닛(34)은 이 지시어를 각각의 자원 레지스터(20)(도 1)에 기록하도록 명령하는 머신 코드(28) 내의 적절한 머신 코드 인스트럭션(이하, MC 인스트럭션)(54)로 변환하여, 자원(R1-Rn)에 대한 사용 및/또는 전력 소비를 지시한다. 각각의 자원 지시어(52)는 소스 코드 내의 어느 곳이든 배치되어 소프트웨어 개발자가 알고 있는 미사용 자원을 지정할 수 있다. 자원 지시어(52)는 소스 코드 블록 또는 기능 블록 내에 배치된 지시어가 범위를 벗어날 때까지 유효하게 유지하는 프로그램 범위 정의 규칙(program scoping rules)에 민감하다.
예시적인 자원 지시어(52)는 #resource<resource_name> = <binary_value>와 유사하고, 여기서, <resource_name>는 자원의 명칭, 예를 들어, 부동 소수점 유닛인 경우에는 FP이며, 분기 예측 유닛인 경우에는 BP이고, 고정 소수점 유닛인 경우에는 FX이다. <binary_value>은 자원이 필요하지 않은 경우에 0이며, 자원이 항상 필요한 경우에는 0이 아니다. 실제 예는 #resource FP=0, BP=0, FX2=0과 같이 나타날 수 있다. 이러한 예는 부동 소수점 유닛, 분기 예측 유닛 및 2차 고정 소수점 유닛이 필요하지 않음을 나타낸다. 구축기 유닛(34)은 이들 지시어를, 이들 자원을 전압 인가 해제, 즉 턴 오프하는 MC 인스트럭션(54)(도 2)로 변환한다. MC 인스트럭션(54)는 각각의 자원의 전력 소비 및/또는 이용을 지시하는 자원 레지스터(20)(도 1)에 기존의 알려진 방식으로 기록된다. 예를 들어, 자원 레지스터(20)는 자원에 대하여 클록 주파수를 0으로 지시하여, 구조적으로 자원의 전압 인가를 해제한다. 파워 PC 기반의 프로세서에 있어서, "mtspr" 인스트럭션이 이 기능을 제공하는데 사용될 수 있다.
B. 구축기 유도형 자원 이용
다른 제 2 실시예에서, 머신 코드(28)의 적어도 하나의 블록의 실행 중에 필요하지 않은 자원(R1-Rn)(도 1)은 구축기 유닛(34)에 의해 실행전 코드(26)로부터 결정된다. 즉, 구축기 유닛(34)은 실행전 코드를 분석하여 자원 요구 조건을 판정한다. 이 경우에, 구축기 유닛(34)은 각각의 기능 또는 블록의 범위 내에서 실행전 코드(26)를 분석하여 어느 자원(R1-Rn)(도 1)이 사용되는지 아니면 사용되지 않는지를 판정하는 메커니즘을 포함한다. 하나의 예에서, 구축기 유닛(34)은 실행전 코드(26)를 분석하여 자원 고유 코드를 포함하는 분기 코드를 찾을 수 있다. 이러한 분석을 통해서, 공통 미사용 자원(들)을 가진 머신 코드의 블록(들)이 결정될 수 있다. 유사하게, 구축기 유닛(34)은, 예를 들어, 멀티디미어의 코프로세서가 사용되고 있지 않은 실행전 코드(26)의 블록을 식별할 수 있다.
C. 코드 재편성(Re-organizing Code)
구축기 유닛(34)은 분석 방법을 이용하여 머신 코드(28)를 리오더링 또는 재편성하여, 자원이 요청되지 않는 기간을 최대화함으로써 전력 소비를 감소시킨다. 한가지 예로, 구축기 유닛(34)은, 머신 코드(28)를 재편성하여 자원이 필요하지 않은 기간을 최대화한다는 점을 제외하면 성능 최적화를 위해 일반적으로 사용되는 것과 유사한 종속성 분석(dependency analysis)을 이용할 수 있다. 다른 예에서, 구축기 유닛(34)은 공통으로 사용되지 않는 자원을 가진 머신 코드의 블록을 택하여, 이 블록들을 순차적으로 실행되도록 재편성함으로써, 미사용 자원이 요청되지 않는 기간을 최대화할 수 있다. 이것은 MC 인스트럭션(54)가 재편성되어 성능을 최대화하는 통상의 컴파일러 최적화와는 대조적이다. 구축기 유닛(34)은, 머신 코드의 하나의 블록이 프로세서의 소정 자원을 사용하지 않는 경우, 해당 블록의 실행 동안 그 자원에 전압 인가가 해제되도록 지시한다. 예를 들어, 자원(R1)이 머신 코드의 하나의 블록 동안에 사용되지 않으면, 자원(R1)은 턴 오프된다. 구축기 유닛(34)은 통상의 성능 최적화기/프로파일러(50)와 결합되어 사용자 기호에 따라서 성능 및 전력 소비를 최적화하도록 동작할 수 있다.
Ⅲ. 절전 프로파일링
본 발명의 다른 측면은 MC 구축기(22)의 일부로서 제공되는 프로파일러 유닛(36)을 포함한다. 동작시에, 구축기 유닛(34)은 실행전 코드(26)로부터 머신 코드(28)를 생성하고, 프로파일러 유닛(36)은 구축기 유닛(34)에 의해 생성된 머신 코드(28)를 실행하며, 실행 환경으로부터 실행 시간 데이터를 수집하여 자원 조건을 결정한다. 실행 시간 데이터는 구축기 유닛(34)에 의해 머신 코드(28)를 다시 재편성하여, 전력 소비를 감소시키기 위해 자원이 필요하지 않은 기간을 최대화하는 데 사용된다. 동작을 설명하기 위해서, 자원(R1)(도 1)이 누설 전류를 통해 많은 전력을 소비하고, 드물게 사용되며, 따라서 연장된 기간 동안에는 턴 오프되는 것이 바람직하다고 가정한다. 또한, 초기 분석 동안에, 구축기 유닛(34)은 각각의 기능을 실행하기 위해 자원(R1)을 호출하도록 머신 코드(28)를 구축하는 것으로 가정한다. 그러나, 프로파일러 유닛(36)을 이용한 분석은, 초기 머신 코드(28)의 실행으로부터, 자원(R1)이 요청되더라도 다른 이용가능 자원(R2, R3)이 보다 양호한 전력 효율성으로 자원(R1)과 동일한 기능을 수행할 수 있음을 표시할 수 있다. 이에 따라, 프로파일러 유닛(36)은 자원(R1)의 호출을 자원(R2, R3)의 호출로 대체하라고 적절한 인스트럭션을 사용해서 구축기 유닛(34)에 지시한다. 결과적으로, 특정 기능이 실행되면서, 자원(R1)이 장기간 오프 상태로 남게 되므로 전력 소비를 감소시킬 수 있다.
Ⅳ. 코드 블록 실행 조건
본 발명의 다른 측면에 의해, 자원 성능은 머신 코드의 블록에 대한 실시간 실행 조건을 만족하도록 조정될 수 있다. 특히, 소프트웨어 개발자가 머신 코드의 블록에 대한 실행 조건을 알고 있다면, 그 개발자는 그 조건을 구현하는 소스 코드내의 어느 곳이든, 상술한 바와 같이, 자원 지시어(52)를 제공할 수 있다. MC 구축기(22)의 코드 블록 실행 조건 유닛(40)(이하, CPER 유닛)은 실행 조건(즉, 자원 지시어(52))에 응답하여, 구축기 유닛(34)에 실행 조건을 만족하도록 자원 성능을 조정하기 위해 머신 코드(28)에 실행 조건(ER) 인스트럭션(68)을 삽입하라고 지시한다.
실행 조건은 여러 형태를 취할 수 있다. 일 실시예에서, 실행 조건은 각각의 자원(R1-Rn)에 대한 성능 레벨일 수 있다. 이와 관련하여, 머신 코드의 블록은, 예를 들어, 초당 수백만의 인스트럭션(MIPS : Million Instructions Per Second) 성능 레벨을 필요로 할 수 있다. 다른 실시예에서, 실행 조건은 시간 제한, 즉, 머신 코드의 각각의 블록이 실행되어야 하는 시간 주기일 수 있다. 이와 관련하여, 머신 코드의 블록은 알려진 실행 시간 제한을 갖는다. 예를 들어, 비디오 게임에 있어서, 그래픽의 디스플레이 프레임의 몇몇은 초 단위, 예를 들어, 초당 30회의 프레임으로 디스플레이되어야 한다. 환언하면, 시점(A) 내지 시점(B)까지로 정의되며, 일부 기능은 완료되어야 한다는 사전 설정 기간은 알려져 있다. 다른 유형의 실행 조건이 또한 가능하다.
실행 조건 구조에 관련하여, 다수의 실행 조건이 동시에 지원되도록, 각각의 자원 지시어(52)는 그와 관련된 심볼명을 가질 수 있다. 예를 들어, 시간 제한 유형의 실행 조건에 대한 지시어는 #TIME_STAMP frames_per_second(33)와 같이 나타낼 수 있다.
성능 레벨 타입 실행 조건의 구현은 성능 레벨을 간단하게 표현하기 위해 자원 지시어(52)를 요청한다. 예컨대, 일 실시예는, #PERF_STAMP(350)와 같은 자원 지시어(52)에 드라이스톤 MIPS(DMIPS)에 대응하는 값을 제공할 수 있다. 이 경우, CPER 유닛(40)은 구축기 유닛(34)에 이 값을 시스템 호출을 통해서 운영 체제에 간단하게 전송해서, 특정 성능에 맞게 운영 체제가 적절한 자원 성능 등급을 조정할 수 있도록, ER 인스트럭션(68)을 삽입하게 할 수 있다. 프로세서의 DMIPS 등급이 주파수에 비례하기 때문에, 각각의 마이크로프로세서(12)는 적절한 조정을 수행하기 위해 자체의 DMIPS/MHz 등급만을 갖는다.
시간 제한형 실행 조건을 구현하는 것은 실행 조건을 만족시키기 위해서 어떤 자원 성능 조정이 이루어져야 하는지를 결정하기 위해, "성능에 영향을 미치는 파라미터"를 분석하도록 구성된 ER 인스트럭션(68)이 필요하다. 성능에 영향을 미치는 파라미터는 예컨대, 초기 클록 주파수, 프로세서 속도, 수행되어야 하는 인스트럭션의 수, 이들 인스트럭션을 수행하는데 필요한 평균 사이클의 수 또는 성능에 영향을 미치는 임의의 다른 파라미터를 포함할 수 있다. 이러한 타입의 실행 조건을 위한 자원 지시어는 예컨대, #TIME_STAMP frame_per_second(33)으로 나타내어 질 수 있다. 지시어(52)는 동일한 "frame_per_second"를 기준으로 하는 이전의 타임 스탬프가 나타난 이후에 코드(33) 밀리초의 이 시점까지 계속 실행되어야 한다는 것을 나타내고 있다. 여기서 사용되는 타임 스탬프란 시간 제한이 시작되거나 끝나는 것을 나타내는 자원 코드 내의 포인터 또는 인디케이터이다. 실행 조건을 기준으로, CPER 유닛(40)은 구축기 유닛(34)이 필수 성능 파라미터를 분석할 수 있고, 적절한 성능 조정을 수행할 수 있는 ER 인스트럭션을 구축하게 한다. 예컨대, ER 인스트럭션(68)은 실행 조건이 초기 성능 파라미터에 맞춰질 수 있는지를 결정한다.
초기 설정이 실행 조건을 맞출 수 없으면, 파라미터는 머신 코드(28)의 각각의 블록에 대해서 조정된다. 성능 조정은 클록 주파수 조정, 전압 조정, 자원의 재할당(즉, 기능을 수행하는데 사용된 자원의 교환), 다양한 기능이 수행될 때의 "기능" 스케쥴링의 조정 또는 성능에 영향을 미치는 다른 조정 중 하나와 같은 형태를 취할 수 있다. 여기서 사용되는 기능이란, 태스크를 완성하기 위해 마이크로프로세서(12)를 호출하는 임의의 소프트웨어 애플리케이션, 사용자, 하드웨어(다른 프로세서를 포함)가 될 수 있다. 실행 조건이 과도한 경우에, ER 인스트럭션(68)은 성능의 감소, 예컨대 클록 주파수의 감소를 지시해서 프로세싱 속도를 줄여서 자원에 의한 전력 소비를 감소시킨다. 예컨대, 실행 조건이 1000만 개의 머신 코드 동안 33ms의 지속이고, ER 인스트럭션(68)은 실제 실행 시간이 20ms가 될 것인지를 판정하면, 코드 블록 동안 클록 주파수가 느려질 수 있다. 반대로, 실행 조건이 만족되지 않으면, ER 인스트럭션(68)은 예컨대, 프로세싱 속도를 증가시키기 위한 클록 주파수의 증가와 같은 성능의 증가를 지시할 수 있다.
실행 조건을 정확하게 맞출 필요는 없다는 것을 이해할 것이다. 이 경우에, 성능의 증가 및 감소량은 정확한 제어가 이루어지도록 약간의 감폭(damping) 및 이력 현상(hysteresis)은 물론 목적하는 정확한 실행의 오차율(percentage difference)도 고려해야 한다.
시간 제한형 실행 조건의 구현에 관해서, 이 시간 제한형 실행 조건이 어떻게 ER 인스트럭션에 컴파일될 수 있는지에 관한 하나의 실시예가 설명될 것이다. 그러나, 이것이 구현될 수 있는 방법은 여러 가지가 있으며, 이들은 모두 본 발명의 범주 내에 드는 것으로 생각할 수 있다는 것을 이해할 것이다. 설명을 위해, 추가적인 인스트럭션이 지원을 제공하는 이점이 있을 수 있지만, 마이크로프로세서(12)용 인스트럭션 셋 아키텍쳐(ISA)에는 어떤 추가적인 인스트럭션도 더해지지 않는다는 것으로 가정한다. 대신에, time_stamp 시스템 호출이 운영 체제 내에 정의되어서 후술하는 바와 같이 기능에 의해 사용되는 것으로 가정한다. 구축기 유닛(34)은 time_stamp를 유지하기 위해 자원 지시어(52) 내에서 심볼명으로 나타난 전역 변수인 긴 정수를 할당한다. 상기 실시예에서, frame_per_second이 심볼명이다. time_stamp는 기능에 의해 제로로 초기화되며, 즉 무효(no valid) time_stamp이다. 구축기 유닛(34)에 의해 자원 지시어(52)용으로 구축된 머신 코드(28)는 우선 현재의 타임 스탬프를 자원 레지스터(20)에 로딩한다. 이 타임 스탬프는 시간 기반 또는 실시간 클록 설비(도시 생략)에 의해 이루어진다. 다음으로, 메모리에 전역 변수로 유지되는 시간 제한의 이전 값은 다른 레지스터(20)에 로딩된다. 이전 값이 제로라면, 새로운 값이 전역 변수로 저장되고 처리는 계속된다. 이전 값이 유효 타임 스탬프라면, 이전값과 현재 값의 차가 다른 전체 상수와 함께 구축기 유닛(34)에 의해 저장되는 타겟 상수값, 즉 상기 실시예에서의 33ms과 비교된다. 오차율, 즉 ((현재값-이전값)-타겟값)/타겟이 계산되어서 시스템 호출 설비를 사용해서 운영 체제에 전송된다. 레지스터가 타임 스탬프를 유지하기에 충분하다고 가정하면, 의사(pseudo) ER 인스트럭션(68)은 다음과 같다.
Figure 112003050825456-pat00001
Ⅴ. 전력 재인가 동안의 자원 에뮬레이션
부동 소수점 유닛과 같은 자원(R1-Rn:도 1)을 전력 재인가하는 데는 멀티-GHz 프로세서에서 1000 사이클 이상 소요된다. 이러한 프로세싱 시간을 사용하기 위해, 본 발명은 전력 재인가가 이루어지는 동안 자원을 사용하지 않는 자원 에뮬레이션 코드로 머신 코드(28:도 2)가 분기할 수 있게 하는 방안을 제공한다. 상세하게는, 자원 전력 인가 레지스터(21:도 1)는 자원에 전력이 공급되어서 사용가능한지 여부를 나타내도록 정의될 수 있다. 전력 재인가 에뮬레이션 유닛(38)은 실행전 코드(26)를 분석해서 각각의 자원에 대한 인스트럭션을 포함하는 분기 코드가 존재하는지 여부를 판정한다. 자원에 대한 분기 코드가 존재하면, 전력 재인가 에뮬레이션 유닛(38)은 머신 코드(28)에 전력 재인가 인스트럭션 블록(RI 블록:70)을 삽입하도록 구축기 유닛(34)에 지시한다. RI 블록(70)은 자원이 전력 인가되어서 이용가능한지 알기 위해 실행 중에 자원 전력 인가 레지스터(21:도 1)를 체크하는 판정 인스트럭션(72)을 포함한다. 만약 테스트에서 부정적인 결과를 리턴하면, RI 블록(70)의 분기 인스트럭션(74:도 2)은 자원에 의해 수행되는 인스트럭션을 에뮬레이션할 수 있는 자원 에뮬레이션 코드(76)를 포함하는 대체 코드의 블록으로 분기한다. 자원의 전력 인가 레지스터(21:도 1)를 계속해서 테스트해서 자원이 전력 인가되었는지 알기 위해 판정 인스트럭션(72)이 주기적으로 반복된다. 자원이 전력 인가되었을 때는, 자원 전력 인가 레지스터(21)에는 유효가 마크되며, 판정 인스트럭션(72) 테스트는 긍정적인 결과를 낸다. 이 경우에, 분기 인스트럭션(74)은 자원을 사용할 머신 코드(28)에 실행 조건을 리턴한다.
Ⅵ. 기능 문맥 세이버
이미 알려진 바와 같이, 마이크로프로세서(12)는 함께 동작 중인 다양한 기능용 머신 코드(28)를 실행하기 위해 호출된다. 기능은 마이크로프로세서(12)를 호출해서 태스크를 완성하는 소프트웨어 애플리케이션, 사용자, 하드웨어(다른 프로세서를 포함)가 될 수 있다. 이들 동작을 완성하기 위해서, 마이크로프로세서(12)는 이를 사용하는 객체들 사이에서 문맥 스위칭을 실행하며, 예컨대 1ms동안 애플리케이션의 코드를 수행하고, 다음 1ms동안 다른 애플리케이션의 코드를 수행하는 등의 타임 슬라이싱을 행할 수 있다. 그러나, 각각의 기능은 다른 자원 사용 및 전력 소비를 요구할 수 있다. 따라서, 각각의 기능의 선호 자원 소비 데이터들 사이에서 빠르게 스위칭되는 성능을 가진 마이크로프로세서(12)를 제공하는 것이 유익하다. 여기서 정의되는 자원 전력 소비 데이터는 각각의 기능에 대해서, 사용되거나 사용되지 않은 자원, 각각의 사용된 자원의 전력 소비 세팅 및 자원의 전력을 관리하는 데 유용한 임의의 다른 정보를 포함할 수 있다.
이런 동작을 완성하기 위해서, MC 구축기(22)의 기능 문맥 세이버 유닛(42)은 구축기 유닛이 문맥 세이버 코드(80)를 머신 코드(28)에 삽입하도록 지시하게 구성된다. 문맥 스위치 세이버 코드(80)는 동작 중인 기능의 자원 전력 소비 데이터를 저장하는 인스트럭션 및 문맥 스위칭이 일어날 때, 즉 기능 변화가 일어날 때, 다음 기능에 대해서 자원 전력 소비 데이터를 재호출하는 인스트럭션을 포함한다. 자원 전력 소비 데이터는 다양한 형태로 저장될 수 있다. 일 실시예에서, 다수의 기능의 자원 전력 소비 데이터가 기능 자원 데이터 표(60:도 1)의 형태로 저장된다. 다음 기능이 호출될 때, 문맥 스위치 세이버 코드(80)는 호출된 기능의 자원 전력 소비 데이터를 재호출해서 자원 레지스터(20:도 1)에 적절한 값을 배치한다. 도 1에 도시된 바와 같이, 스택 프레임(18)은 자원 레지스터(20)의 스페이스를 포함하도록 연장된다. 새로운 기능에 대해서, 각각의 자원 전력 소비 데이터값이 스택 프레임(18)의 일부로서 스택에 넣어져서 자원 레지스터(20)를 형성할 것이다. 기능 문맥 세이버로, 마이크로프로세서(12)는 기능들 사이에서 빠르게 스위칭되고, 각각의 기능의 전력 관리 세팅을 재호출될 수 있다.
상기 설명에서, 여기서 설명되는 방법 단계들은 메모리에 저장된 프로그램 제품(24)의 인스트럭션을 수행해서, 시스템(10)의 CPU(12)와 같은 프로세서에 의해 실행된다. 여기서 설명되는 다양한 디바이스, 모듈, 메커니즘 및 시스템은 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있으며, 도시된 것과는 다른 별개의 것이 될 수 있다. 이들은 상기 설명된 방법을 수행하는데 적절한 타입의 컴퓨터 시스템 또는 다른 장치에 의해 구현될 수 있다. 적절한 하드웨어와 소프트웨어의 조합이 로딩되어서 수행되는 경우, 컴퓨터 시스템은 상기 설명된 방법을 수행하도록 제어하는 컴퓨터 프로그램을 구비한 다목적 컴퓨터 시스템이 될 수 있다. 다른 방안으로, 본 발명의 하나 이상의 기능 태스크를 수행하는 특정 하드웨어를 포함하는 특수 컴퓨터가 사용될 수 있다. 본 발명은 컴퓨터 프로그램 제품으로 구현될 수 있으며, 이는 여기서 설명되는 방법 및 기능의 구현을 가능하게 하는 모든 특성을 포함하며, 컴퓨터 시스템에 로딩되어서 이들 방법 및 기능을 수행할 수 있다. 본 설명의 컴퓨터 프로그램, 소프트웨어, 프로그램, 프로그램 제품 또는 소프트웨어는 각각의 기능이 바로 또는 (a) 다른 언어, 코드 또는 기호로의 변환, 및/또는 (b) 다른 자료 형태로 재생과 같은 작업을 수행한 후에, 정보 처리 성능을 가진 시스템이 특정 기능을 수행하게 하는 인스트럭션의 세트의 임의의 표현, 임의의 언어, 코드 또는 기호를 의미한다.
본 발명이 상기 개시된 특정 실시예와 관련되어서 설명되었지만, 많은 다른 방안, 수정 및 변형이 있을 것이라는 것은 당업자에게는 자명한 일이다. 따라서, 위에서 설명된 본 발명의 실시예는 예시한 것으로 한정하는 것이 아니다. 하기의 청구 범위에 정의된 본 발명의 사상과 범주를 벗어남없이 다양한 변화가 있을 수 있다.
본 발명을 통해서, 마이크로프로세서의 전력 소비를 감소시킬 수 있다.

Claims (30)

  1. 복수의 자원을 구비한 마이크로프로세서의 전력 소비를 감소시키는 방법에 있어서,
    실행전 코드(pre-executable code)를 머신 코드 구축기(a machine code builder)로 독출하는 단계와,
    상기 실행전 코드로부터 머신 코드를 구축하여 자원이 요청되지 않는 기간을 최대화하는 단계
    를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 구축 단계는 상기 머신 코드를 재편성하여 상기 자원이 요청되지 않는 기간을 최대화하는 단계를 포함하는
    방법.
  3. 제 2 항에 있어서,
    상기 구축 단계는 상기 자원을 식별하는 사용자 정의 지시어(user-defined directive)에 의해 지시를 받는
    방법.
  4. 제 2 항에 있어서,
    상기 구축 단계는 상기 실행전 코드를 분석해서 자원 요구 조건을 판정하는 단계를 포함하는
    방법.
  5. 제 2 항에 있어서,
    상기 구축 단계는 실행전 코드를 프로파일해서 자원 요구 조건을 판정하는 단계를 포함하는
    방법.
  6. 제 5 항에 있어서,
    상기 프로파일 단계는 머신 코드를 실행하는 단계 및 머신 코드를 재편성하여 자원이 요청되지 않는 기간을 최대화하는 단계를 포함하는
    방법.
  7. 제 1 항에 있어서,
    자원의 전력 재인가(re-energizing) 동안 자원 에뮬레이션 프로그램 코드(a resource emulation program code)를 실행하는 단계를 더 포함하는
    방법.
  8. 제 7 항에 있어서,
    상기 실행전 코드가 자원 고유 코드(resource-specific code)를 구비하는 분기 코드를 포함하는 경우에, 구축 단계 동안 상기 실행 단계를 수행하도록 하는 인스트럭션을 머신 코드에 삽입하는 단계를 더 포함하는
    방법.
  9. 제 8 항에 있어서,
    상기 인스트럭션은 상기 자원의 전력 인가 여부를 판정해서 상기 자원이 전력 인가되지 않은 경우 상기 자원 에뮬레이션 코드를 실행하는
    방법.
  10. 제 1 항에 있어서,
    소정 기능용 자원 전력 소비 데이터를 세이브하는 단계를 더 포함하는
    방법.
  11. 제 10 항에 있어서,
    소정 기능이 호출된 경우에 상기 기능용 자원 전력 소비 데이터를 재호출하는 단계를 더 포함하는
    방법.
  12. 제 1 항에 있어서,
    머신 코드의 블록용 실행 조건을 식별하는 단계 및 상기 실행 조건을 만족시키도록 자원 성능을 조정하는 단계를 더 포함하는
    방법.
  13. 제 12 항에 있어서,
    상기 실행 조건은 머신 코드의 블록이 실행되어야 하는 기간 및 머신 코드의 블록의 성능 레벨 중 하나인
    방법.
  14. 제 13 항에 있어서,
    상기 자원 성능은 클록 주파수, 전압, 자원 할당량 및 기능 스케쥴 중 적어도 하나를 변화시킴으로써 조정되는
    방법.
  15. 자원을 구비한 마이크로프로세서용 머신 코드 구축기에 있어서,
    실행전 코드를 독출하는 수단과,
    상기 실행전 코드로부터의 머신 코드를 구축하여 자원이 요청되지 않는 기간을 최대화하는 수단
    을 포함하는 머신 코드 구축기.
  16. 제 15 항에 있어서,
    상기 구축 수단은 상기 머신 코드를 재편성하여 상기 자원이 요청되지 않는 기간을 최대화하는
    머신 코드 구축기.
  17. 제 16 항에 있어서,
    상기 구축 수단은 상기 실행전 코드 내의 사용자 삽입 지시어(user-inserted directive)에 응답하는
    머신 코드 구축기.
  18. 제 16 항에 있어서,
    상기 구축 수단은 상기 실행전 코드를 분석해서 자원을 판정하는
    머신 코드 구축기.
  19. 제 16 항에 있어서,
    상기 구축 수단은 상기 머신 코드를 프로파일해서 자원을 판정하는 수단을 더 포함하되, 상기 구축 수단은 상기 프로파일 수단에 응답하는
    머신 코드 구축기.
  20. 제 15 항에 있어서,
    구축하는 동안 머신 코드에 인스트럭션을 삽입하여 자원의 전력 재인가 동안 자원 에뮬레이션 코드를 실행하는 수단을 더 포함하는
    머신 코드 구축기.
  21. 제 20 항에 있어서,
    상기 인스트럭션은 상기 자원의 전력 인가 여부를 판정해서 상기 자원이 전력 인가되지 않은 경우 상기 자원 에뮬레이션 코드를 수행하는
    머신 코드 구축기.
  22. 제 15 항에 있어서,
    구축하는 동안 제 1 기능용 자원 전력 소비 데이터의 세이브를 지시하는 인스트럭션 및 제 2 기능이 호출되었을 때 상기 제 2 기능용 자원 전력 소비 데이터의 재호출을 지시하는 인스트럭션을 머신 코드에 삽입하는 수단을 더 포함하는
    머신 코드 구축기.
  23. 제 15 항에 있어서,
    상기 머신 코드에 인스트럭션을 삽입하여 자원 성능을 조정해서 실행 조건을 만족시키는 수단을 더 포함하는
    머신 코드 구축기.
  24. 제 23 항에 있어서,
    상기 실행 조건은 머신 코드의 블록이 실행되어야 하는 기간 및 머신 코드의 블록의 성능 레벨 중 하나인
    머신 코드 구축기.
  25. 제 23 항에 있어서,
    상기 자원 성능은 클록 주파수, 전압, 자원 할당량 및 기능 스케쥴 중 적어도 하나를 변화시킴으로써 조정되는
    머신 코드 구축기.
  26. 실행전 코드를 독출하는 수단과,
    머신 코드의 블록이 프로세서의 자원을 사용하지 않는 경우, 상기 블록의 실행 동안 상기 자원에 전원 인가를 해제하는 수단
    을 포함하는 머신 코드 구축 툴.
  27. 제 26 항에 있어서,
    자원의 전력 재인가 동안 자원 에뮬레이션 코드의 실행을 지시하는 수단을 더 포함하는
    머신 코드 구축 툴.
  28. 제 1 항 내지 제 14 항 중 어느 한 항에 따른 방법을 수행하는 프로그램을 구비한 컴퓨터 독출 가능 기록 매체.
  29. 삭제
  30. 삭제
KR1020030100394A 2003-02-24 2003-12-30 마이크로프로세서의 전력 소비를 감소시키는 방법 및 머신코드 구축기 KR100582378B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/248,838 2003-02-24
US10/248,838 US7185215B2 (en) 2003-02-24 2003-02-24 Machine code builder derived power consumption reduction

Publications (2)

Publication Number Publication Date
KR20040076197A KR20040076197A (ko) 2004-08-31
KR100582378B1 true KR100582378B1 (ko) 2006-05-22

Family

ID=32867804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030100394A KR100582378B1 (ko) 2003-02-24 2003-12-30 마이크로프로세서의 전력 소비를 감소시키는 방법 및 머신코드 구축기

Country Status (3)

Country Link
US (1) US7185215B2 (ko)
JP (2) JP4091922B2 (ko)
KR (1) KR100582378B1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
US20040268159A1 (en) * 2003-06-30 2004-12-30 Microsoft Corporation Power profiling
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) * 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
CN101539802A (zh) * 2005-04-27 2009-09-23 松下电器产业株式会社 信息处理装置中的功率控制装置
US7447923B2 (en) * 2005-08-19 2008-11-04 International Business Machines Corporation Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power
US20070294181A1 (en) * 2006-05-22 2007-12-20 Saurabh Chheda Flexible digital rights management with secure snippets
JP4231516B2 (ja) * 2006-08-04 2009-03-04 株式会社日立製作所 実行コードの生成方法及びプログラム
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
JP4836903B2 (ja) * 2007-09-13 2011-12-14 株式会社東芝 マイクロプロセッサ制御装置並びにその方法およびプログラム
US20090300399A1 (en) * 2008-05-29 2009-12-03 International Business Machines Corporation Profiling power consumption of a plurality of compute nodes while processing an application
US8195967B2 (en) * 2008-05-29 2012-06-05 International Business Machines Corporation Reducing power consumption during execution of an application on a plurality of compute nodes
US8458722B2 (en) * 2008-06-09 2013-06-04 International Business Machines Corporation Thread selection according to predefined power characteristics during context switching on compute nodes
US8291427B2 (en) * 2008-06-09 2012-10-16 International Business Machines Corporation Scheduling applications for execution on a plurality of compute nodes of a parallel computer to manage temperature of the nodes during execution
US8296590B2 (en) * 2008-06-09 2012-10-23 International Business Machines Corporation Budget-based power consumption for application execution on a plurality of compute nodes
US20090328036A1 (en) * 2008-06-27 2009-12-31 Oqo, Inc. Selection of virtual computing resources using hardware model presentations
US20090327495A1 (en) * 2008-06-27 2009-12-31 Oqo, Inc. Computing with local and remote resources using automated optimization
US8250389B2 (en) * 2008-07-03 2012-08-21 International Business Machines Corporation Profiling an application for power consumption during execution on a plurality of compute nodes
EP2290538A3 (en) * 2009-08-31 2011-06-22 Imec Method and device for reducing power consumption in application specific instruction set processors
WO2011054148A1 (zh) * 2009-11-06 2011-05-12 华为技术有限公司 一种资源配置方法和装置
US8436720B2 (en) 2010-04-29 2013-05-07 International Business Machines Corporation Monitoring operating parameters in a distributed computing system with active messages
US8589665B2 (en) 2010-05-27 2013-11-19 International Business Machines Corporation Instruction set architecture extensions for performing power versus performance tradeoffs
US9442773B2 (en) 2011-11-21 2016-09-13 Qualcomm Incorporated Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
JP2013228907A (ja) * 2012-04-26 2013-11-07 Semiconductor Energy Lab Co Ltd 半導体装置とその駆動方法
US9361101B2 (en) * 2012-06-29 2016-06-07 Intel Corporation Extension of CPU context-state management for micro-architecture state
US10133557B1 (en) * 2013-01-11 2018-11-20 Mentor Graphics Corporation Modifying code to reduce redundant or unnecessary power usage
US9557797B2 (en) 2014-05-20 2017-01-31 Qualcomm Incorporated Algorithm for preferred core sequencing to maximize performance and reduce chip temperature and power
KR102248787B1 (ko) 2014-08-28 2021-05-06 삼성전자 주식회사 Gpu의 리소스에 대한 전력 소비 제어방법 및 장치
US9417961B2 (en) 2014-11-18 2016-08-16 HGST Netherlands B.V. Resource allocation and deallocation for power management in devices
JP6933052B2 (ja) * 2017-08-23 2021-09-08 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195756A (ja) * 1992-12-25 1994-07-15 Canon Inc 光記録媒体
JP2000267851A (ja) * 1999-03-08 2000-09-29 Texas Instr Inc <Ti> デジタルシステムおよびその動作方法
KR20020087851A (ko) * 2001-05-16 2002-11-23 가부시키가이샤 시마노 중통 낚싯대

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2442A (en) * 1842-02-01 Floating dry-dock
US47511A (en) * 1865-05-02 Improved evaporating-pan
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5452457A (en) * 1993-01-29 1995-09-19 International Business Machines Corporation Program construct and methods/systems for optimizing assembled code for execution
EP0683451B1 (en) * 1994-05-09 2004-02-25 Canon Kabushiki Kaisha Power supply control method in multi-task environment
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
JP3520611B2 (ja) * 1995-07-06 2004-04-19 株式会社日立製作所 プロセッサの制御方法
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
GB9600854D0 (en) * 1996-01-16 1996-03-20 British Telecomm Distributed processing
US6134708A (en) * 1997-02-13 2000-10-17 Nec Corporation Program compilation execution system
US6064818A (en) * 1997-04-10 2000-05-16 International Business Machines Corporation Straight path optimization for compilers
US6161219A (en) * 1997-07-03 2000-12-12 The University Of Iowa Research Foundation System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints
DE69836902T2 (de) * 1997-10-02 2007-10-18 Koninklijke Philips Electronics N.V. Auf variable instruktionen eingestellter computer
JPH11259437A (ja) 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
US7346479B2 (en) * 1998-09-04 2008-03-18 Intel Corporation Selecting design points on parameter functions having first sum of constraint set and second sum of optimizing set to improve second sum within design constraints
US6347377B2 (en) * 1998-11-04 2002-02-12 Phoenix Technologies Ltd. Method and apparatus for providing intelligent power management
US6308320B1 (en) * 1999-01-15 2001-10-23 Hewlett-Packard Company Method and apparatus for incremental selective compilation of intermediate code files during computer system compilation and linking
US6332216B1 (en) * 1999-03-09 2001-12-18 Hewlett-Packard Company Hybrid just-in-time compiler that consumes minimal resource
US6477654B1 (en) * 1999-04-06 2002-11-05 International Business Machines Corporation Managing VT for reduced power using power setting commands in the instruction stream
US6345362B1 (en) * 1999-04-06 2002-02-05 International Business Machines Corporation Managing Vt for reduced power using a status table
US6327552B2 (en) * 1999-12-28 2001-12-04 Intel Corporation Method and system for determining optimal delay allocation to datapath blocks based on area-delay and power-delay curves
WO2001080012A2 (en) 2000-04-11 2001-10-25 Analog Devices, Inc. Non-intrusive application code profiling method and apparatus
US20020103942A1 (en) * 2000-06-02 2002-08-01 Guillaume Comeau Wireless java device
JP2002358139A (ja) * 2001-06-01 2002-12-13 Ricoh Co Ltd 低消費電力プロセッサ
FI20011947A (fi) * 2001-10-05 2003-04-06 Nokia Corp Menetelmä suorittimen toiminnan ohjaamiseksi ja suoritin

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195756A (ja) * 1992-12-25 1994-07-15 Canon Inc 光記録媒体
JP2000267851A (ja) * 1999-03-08 2000-09-29 Texas Instr Inc <Ti> デジタルシステムおよびその動作方法
KR20020087851A (ko) * 2001-05-16 2002-11-23 가부시키가이샤 시마노 중통 낚싯대

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
미국공개특허2002/0087851
미국공개특허5655124
미국등록특허6195756
일본공개특허2000-267851

Also Published As

Publication number Publication date
JP4091922B2 (ja) 2008-05-28
JP4496255B2 (ja) 2010-07-07
US20040168097A1 (en) 2004-08-26
US7185215B2 (en) 2007-02-27
JP2004259274A (ja) 2004-09-16
JP2008165815A (ja) 2008-07-17
KR20040076197A (ko) 2004-08-31

Similar Documents

Publication Publication Date Title
KR100582378B1 (ko) 마이크로프로세서의 전력 소비를 감소시키는 방법 및 머신코드 구축기
Gheorghita et al. System-scenario-based design of dynamic embedded systems
Xie et al. Compile-time dynamic voltage scaling settings: Opportunities and limits
US9098309B2 (en) Power consumption optimized translation of object code partitioned for hardware component based on identified operations
JP5735714B2 (ja) コンピューティングデバイス用の動的な電力最適化
Markovskiy et al. Analysis of quasi-static scheduling techniques in a virtualized reconfigurable machine
US6795781B2 (en) Method and apparatus for compiler assisted power management
US5339445A (en) Method of autonomously reducing power consumption in a computer sytem by compiling a history of power consumption
US7577860B2 (en) Processor specific BIOS interface for power management
RU2503987C2 (ru) Энергосберегающее планирование потоков и динамическое использование процессоров
KR101471303B1 (ko) 그래픽 처리 장치를 위한 전력 관리 장치 및 방법
US8108850B2 (en) Power-aware compiling method
US20040073822A1 (en) Data processing system and method
JP2007507048A (ja) マルチスレッディングのためのコンパイラが生成したヘルパースレッドの方法および装置
US8166321B2 (en) Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
Devadas et al. DFR-EDF: A unified energy management framework for real-time systems
US20050108687A1 (en) Context and content sensitive distributed application acceleration framework
Gheorghita et al. Intra-task scenario-aware voltage scheduling
Simunic Energy efficient system design and utilization
Kim et al. Power-Aware Resource Management Techniques for Low-Power Embedded Systems.
So et al. Procedure cloning and integration for converting parallelism from coarse to fine grain
Wen et al. Dspbooster: Offloading unmodified mobile applications to dsps for power-performance optimal execution
Tewary A Framework for Energy-Aware Scheduling, Compilation, And Execution Of Hard-Real-Time Java Programs
Zhang Maximizing Performance in Power-Constrained Computing Systems
Li et al. Trace-based leakage energy optimisations at link time

Legal Events

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

Payment date: 20120427

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee