KR20050084121A - 회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및신호 지속 매체 - Google Patents

회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및신호 지속 매체 Download PDF

Info

Publication number
KR20050084121A
KR20050084121A KR1020057010024A KR20057010024A KR20050084121A KR 20050084121 A KR20050084121 A KR 20050084121A KR 1020057010024 A KR1020057010024 A KR 1020057010024A KR 20057010024 A KR20057010024 A KR 20057010024A KR 20050084121 A KR20050084121 A KR 20050084121A
Authority
KR
South Korea
Prior art keywords
register
power consumption
enable
bank
circuit device
Prior art date
Application number
KR1020057010024A
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 KR20050084121A publication Critical patent/KR20050084121A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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
    • 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
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • 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
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • 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
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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

Abstract

전력 소모를 제어하는 회로 장치 및 방법은 제공되는 클록(74), 어드레스(76), 및 데이터(78) 입력을 선택적으로 게이트 오프함으로써 사용되지 않는 레지스터 뱅크(70)를 선택적으로 디스에이블하도록 구성된 인에이블 로직(62, 82)에 커플링된 뱅크 레지스터 디자인을 통해 전력 소모 제어 능력을 갖는 레지스터 파일(60)을 이용한다.

Description

회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및 신호 지속 매체{REGISTER FILE GATING TO REDUCE MICROPROCESSOR POWER DISSIPATION}
본 발명은, 일반적으로는, 예를 들어 저전력 및 그 밖의 전력 감지 애플리케이션에서 사용되는 집적 회로의 전력 소모(power dissipation)를 제어하는 것에 관한 것이다.
흔히, 전력 소모는 많은 집적 회로(IC's) 또는 "칩"에 대해 주요한 디자인 제약 사항이다. 예를 들어, 집적 회로는 매우 다양한 휴대용 기구와, 이동 전화 및 다른 무선 통신 디바이스, 휴대용 컴퓨터, 휴대용 기기 및 게임 콘솔 등과 같은 다른 배터리 전력 공급형 애플리케이션에 점점 사용되고 있다. 또한, 배터리 수명이 중요하지 않을 수도 있는 비휴대용 애플리케이션에서조차도, 집적 회로는 쉽게 과열되어, 고가의 및/또는 대형 냉각 소자가 필요하게 되거나 감소된 IC 신뢰도가 필요하게 될 수 있다. IC에 의해 소모된 전력량은 배터리 수명 및 전자 디바이스의 발열에 중요한 역할을 한다.
또한, IC가 더 복잡해지고 더 빠른 클록 속도와 더 많은 트랜지스터를 내장함에 따라, 이들 IC에 의해 소모되는 전력량은 그에 비례하여 증가한다. 이와 같이, 상당한 개발 노력은 IC 전력 소모를 감소시키는 것에 관한 것이다.
예를 들어, 일부 노력은, IC에 있는 개별 트랜지스터의 전력 소모를, 예를 들어 트랜지스터의 레이아웃 개량 및/또는 공급 전압 감소를 통해, 감소시키는 것에 관한 것이었다. 어느 정도까지, 공급 전압 레벨에서의 트랜지스터 디자인 및 축소에 대한 개량은, 더욱 복잡하고 더 높은 성능의 IC 사용으로부터 초래되었던 전력 소모의 증가량의 일부를 오프셋하고 있다. 그렇지만, 많은 전력 감지 애플리케이션을 위해 추가 감소가 요구되고 있다.
예를 들어, 이동 애플리케이션에서 사용되는 마이크로프로세서와 같은 일부 IC는 전압 및/또는 주파수 스케일링(scaling)을 이용하여, 공급 전압 및/또는 클록 주파수를 감소시키고 그 결과 전체적인 전력 소모를 감소시킨다. 그러나, 이러한 감소는 전형적으로 IC 범위 전체에 걸쳐 적용되며, 프로세싱 성능의 감소에 대응하여 수반된다.
다른 디자인들은 특정 커맨드나 인스트럭션 또는 외부 인터럽트와 같은 이벤트에 응답하여 IC를 저전력 상태에 있게 하는 수면 모드(sleep mode)를 통합하고 있을 수도 있다. 예를 들어, 일부 마이크로프로세서는 전체 마이크로프로세서를 저전력 수면 모드에 있게 하는 WAIT 또는 HALT 인스트럭션을 지원한다. 그러나, 이러한 모드에 있을 때, 마이크로프로세서에서의 모든 효과적인 프로세싱 작용은 전형적으로 마이크로프로세서가 인터럽트 또는 다른 트리거(triggering) 이벤트에 의해 다시 각성될 때까지 정지된다.
또 다른 디자인에서, IC는 전반적인 전력 소모를 감소시키는 데 사용되지 않을 때 선택적으로 인에이블될 수 있는 상이한 회로를 구비할 수 있다. 전형적으로, 이러한 회로들은, 특히 일부 형태의 프로세서 또는 프로세싱 코어를 내장하는 IC에 대해, 컴퓨터 프로그램의 실행과 관련하여 조우(encounter)하게 되는 특정 인스트럭션의 실시에 대한 응답으로 선택적으로 인에이블되거나 또는 디스에이블된다.
예를 들어, 일부 저전력 마이크로프로세서 디자인은 개별 기능의 유닛들이 특정 "전력 저하(power down)" 인스트럭션을 그들 기능 유닛에 라우팅함으로써 선택적으로 디스에이블되는 것을 허용한다. 전력 저하 인스트럭션은 컴퓨터 프로그램의 편집(compilation) 중에 컴파일러(compiler)에 의해 삽입되어, 인스트럭션이 마이크로프로세서에 의한 컴퓨터 프로그램의 실행 중에 개별 기능 유닛에 의해 처리되게 할 것이다. 그러나, 이러한 접근법의 한 가지 단점은, 개별 인스트럭션을 특정 기능 유닛에 전송하는 것이 그러한 기능 유닛의 처리 리소스를 점유하고, 그에 따라 다른 풍부한 계산을 요구하는 작동을 다루기 위해 그러한 기능 유닛의 효용성(availability), 프로세서 파이프라인 잔여물의 효용성을 감소시킨다는 것이다.
전술한 전력 저하 인스트럭션에는, 마이크로프로세서에 의해 처리된 각 인스트럭션과 관련되고, 마이크로프로세서의 각 기능 유닛의 인에이블 상태를 동적으로 제어하는 제어 비트의 사용이 관련된다. 그러나, 이러한 유형의 디자인에는, 각 인스트럭션의 일정한 인스트럭션 디코딩이 필요한데, 이는 개별적인 기능 유닛을 선택적으로 디스에이블함으로써 얻어지는 일부 전력 소모 감소 중의 일부를 오프셋시킬 수 있다. 또한, 특정 제어 비트 세트에 응답하여 특정 기능 유닛을 디스에이블하거나 또는 인에이블하는 데 필요한 시간은 마이크로프로세서의 적합한 작동 주파수를 제한할 수도 있으며, 이에 따라 마이크로프로세서의 전체적인 성능을 제한할 수 있다. 더욱이, 각 인스트럭션으로의 제어 비트 추가는 코드의 크기를 증가시키게 되어, 저장 요건을 증가시키거나 또는 지원될 수도 있는 상이한 인스트럭션의 개수를 감소시킨다.
전술한 인스트럭션 기반 제어 방식에 대한 다른 단점은 그 방식들이 흔히 마이크로프로세서의 기능 유닛을 제어하는 것으로 제한된다는 것이다. 기능 유닛, 예를 들어, 실행 유닛, 산술 로직 유닛, 부동소수점(floating point) 유닛, 고정소수점(fixed point) 유닛 등이 마이크로프로세서에서의 전체적인 전력 소모에 상당한 비중을 차지하지만, 대부분의 디자인은, 전력 소모에도 이바지하지만 전술한 제어 방식에 의해 어드레스되지 않는 상당한 양의 추가 회로, 예를 들어, 캐시(caches), 레지스터 파일 등을 내장한다.
또 다른 디자인은 마이크로프로세서의 상이한 전력 동작을 지원하는 다수의 인스트럭션 세트를 포함할 수도 있다. 전형적으로, 이러한 디자인에서, 하나의 인스트럭션 세트는 마이크로프로세서를 충분히 이용할 수 있는 반면, 다른 인스트럭션 세트는 마이크로프로세서의 일부만을 사용하여 전력 소모를 감소시킬 수도 있다. 그러나, 이 접근법의 한 가지 단점은 제한된 수의 프로세서 활용 모드만이, 예를 들어, 완전히 지원되며 규제된다는 점이다. 또한, 코드의 복잡성, 및 그로 인한 프로세서에서의 디코딩 로직의 복잡성이 증가하여, 그 자체가 전력 소모를 증가시킬 수 있다.
관련 개발 분야에 있어서, 다수 버전의 프로그램은 상이한 전력 소모 능력을 지원하는 데 이용될 수도 있다. 그러나, 다수 버전의 프로그램을 저장하는 것은 현재 전력 요건에 따라 실행을 위한 코드 버전을 선택하는 실행시간 스케줄러(runtime scheduler)의 사용을 요구하고, 다수의 코드 버전을 저장하는 것은 더 많은 프로그램 메모리 및 스케줄러의 실행을 요구하여 전력 소모를 더욱 증가시킬 수 있다.
IC의 개별 회로를 선택적으로 인에이블하는 것과 관련하여, 이들 회로를 디스에이블하고 그에 따라 그 전력 소모를 최소화하는 다양한 방식들이 사용될 수도 있다. 예를 들어, 클록 게이팅(gating)은 흔히 회로에 대한 클로킹(clocking)을 디스에이블하는 데 사용되어, 회로의 트랜지스터의 스위칭, 실제로는 흔히 회로에서 최대량의 전력 소모를 설명하는 트랜지스터에서의 상태의 스위칭을 효율적으로 제한한다.
마이크로프로세서의 기능 유닛에 대해, 회로를 디스에이블하는 대안적인 방법은 회로로의 전력 공급을 차단(shutdown)하는 것이다. 다른 대안적인 방법은 회로에 대한 입력 신호를 비활성화시키는 것이다.
또한, 다이내믹 랜덤 액세스 메모리(DRAM) 디바이스에서 사용되는 메모리 어레이와 같은 다른 회로에 대해, 클록 신호 및 감지 증폭기가 선택적으로 게이트 오프되어 어레이에 있는 메모리 셀의 뱅크를 디스에이블시키고, 그에 따라 전체 어레이에서의 전력 소모를 감소시킨다.
마이크로프로세서 등과 같은 IC에서의 전력 소모를 제어함과 관련하여 만들어진 상당한 이득에도 불구하고, 본 분야에서의 계속적인 추가 개발이 필요하다.
예를 들어, 선택적 회로 디스에이블링 영역에서, 개선을 위한 하나의 포텐셜 영역이 IC의 프로세서 또는 프로세싱 코어(processing core)에 의해 활용되는 레지스터와 관련된 전력 소모의 제어 상태에 있다. 레지스터는 흔히 레지스터 파일로 구성되며, CMOS 래치 또는 플립-플롭을 이용하여 구현되어 비교적 큰 전력 소모 특성을 갖는다. 그러나, 많은 프로그램 실행 동안의 레지스터 활용도는 비교적 낮아서, IC에서 전력을 소모할 필요없이 레지스터 파일에 있는 많은 레지스터가 사용되지 않게 된다. 일부 환경에서는 소정의 레지스터를 디스에이블하는 것이 바람직할 수도 있으나, 메모리 셀을 디스에이블하는 통상적인 방식, 예를 들어, DRAM 등과 접속되어 사용되는 통상적인 방식은 전형적으로 감지 증폭기의 클록 게이팅 및/또는 디스에이블링을 이용하여 메모리 셀 또는 메모리 셀의 뱅크를 디스에이블한다. 이러한 기술이 레지스터 파일에 있는 레지스터를 디스에이블하는 데 사용될 수 있으나, 이러한 기술에 의해 전력 소모가 감소되는 정도는 제한된다.
본 발명을 특징화하는 이들 및 그 밖의 이점 및 특징은 본 명세서에 첨부되며 그 추가 부분을 형성하는 청구범위에서 설명된다. 그러나, 본 발명의 더 양호한 이해와, 그 사용을 통해 얻어진 이점 및 목적의 더 양호한 이해를 위해, 도면 및 본 발명의 예시적인 실시예가 설명되어 있는 첨부한 설명서를 참조해야 한다.
도 1은 본 발명에 부합되는 동적 전력 소모 제어 회로를 포함하는 미디어 프로세서의 블록도,
도 2는 도 1에서 참조되며, 본 발명에 부합되는 동적 전력 분배 제어 회로를 포함하는 중앙 프로세싱 유닛의 블록도,
도 3은 도 2에서 참조되고, 레지스터의 뱅크를 선택적으로 디스에이블하는 인에이블 로직을 포함하는 블록도,
도 4는 도 1의 미디어 프로세서에서의 전력 소모를 제어하는 데 적합한 전력 제어 인스트럭션에 대한 예시적인 인스트럭션 포맷의 블록도,
도 5는 본 발명에 부합되는 전력 소모 최적화 루틴의 프로그램 흐름을 예시한 순서도,
도 6은 도 1의 미디어 프로세서에 의한 예시적인 프로그램 처리를 예시한 블록도,
도 7은 레지스터 파일의 전력 분배를 도 2에 도시한 것으로 제어하는 대안 방식의 블록도이다.
본 발명은, 제공된 클록, 어드레스 및 데이터 입력을 선택적으로 게이트 오프하여 레지스터의 사용되지 않는 뱅크를 선택적으로 디스에이블하도록 구성된 인에이블 로직에 커플링된 뱅크 디자인을 통해, 레지스터 파일에 전력 소모 제어 능력이 제공되는 전력 소모를 제어하는 회로 장치 및 방법을 제공함으로써, 종래기술과 관련된 문제점 및 다른 문제점을 설명한다. 구체적으로, 레지스터 파일의 레지스터는 다수의 뱅크로 분할되는데, 각 뱅크는 그러한 각 뱅크에 대한 다양한 클록, 어드레스 및 데이터 입력을 선택적으로 게이트 오프하는 인에이블 로직에 의해 선택적으로 디스에이블될 수 있다.
레지스터 파일에 제공된 레지스터의 다양한 뱅크에 제공되는 클록 입력 외에도 어드레스 및 데이터 입력을 게이트 오프함으로써, 전력 소모에서 클록 입력만을 게이트 오프하는 것 이상으로 더 큰 감소가 얻어진다. 또한, 레지스터 파일이 비교적 높은 배선 커패시턴스를 특징으로 하는 CMOS 래치 또는 플립-플롭으로부터 제작된 레지스터를 이용하여 구현될 때, 전력 소모의 감소는 더욱 확언(pronounce)되는데, 이는 전형적으로 게이팅이 레지스터 파일 뱅크 내부의 긴 배선에 대한 스위칭 작용을 억제하기 때문이다.
본 발명에 부합되는 동적 전력 소모 제어는 통상적인 전력 소모 제어 기술 이상의 상당한 이점을 제공하는 두 가지 개념 중의 어느 하나 또는 두 개념 모두를 포함할 수도 있다. 제 1 개념은 프로세서 또는 프로세싱 코어에 의해 활용되는 레지스터 파일 전체에 대해 전력 소모 제어를 구현하는 데에 유일하게 적용된다. 본 발명에 부합하여, 레지스터 파일은 레지스터의 다수의 뱅크로 분할되는데, 레지스터의 각 뱅크는 클록, 데이터 및 어드레스 입력 라인을 포함한다. 인에이블 로직은 그러한 레지스터 파일에 연결되어, 레지스터 파일에 있는 레지스터의 임의의 사용되지 않는 뱅크에 대한 클록, 데이터 및 어드레스 입력 라인을 선택적으로 게이트 오프하거나 디스에이블한다.
제 2 개념은 소프트웨어 인스트럭션을 처리하는 프로세서 또는 기타의 프로그램 가능 회로를 포함하는 집적 회로에서 전력 소모를 제어하는 소프트웨어 기반 방식에 더 일반적으로 적합하다. 특히, 프로세서에 의해 실행되는 프로그램 코드에 내장된 전력 제어 인스트럭션은 두 개 이상의 전력 모드로 선택적으로 구성 가능한 다수의 하드웨어 리소스의 전력 모드를 제어하는 데 사용되는데, 하드웨어 리소스에 대한 각 모드는 그 하드웨어 리소스에 대한 특정 전력 소비 상태를 갖는다.
각 전력 제어 인스트럭션은 다수의 하드웨어 리소스의 전력 모드를 설정할 수 있는 피연산자(operand)에 배치된 전력 제어 정보를 포함한다. 또한, 일단 전력 모드가 특정 전력 제어 인스트럭션에 의해 설정되면, 설정된 전력 모드는, 예를 들어, 전력 모드가 다른 전력 제어 인스트럭션 또는 특수 이벤트(예를 들어, 외부 인터럽트)에 의해 재설정될 때까지, 후속 인스트럭션의 처리 동안 프로세서에 의해 사용된다.
이들 개념 각각은 레지스터 파일의 소프트웨어 기반 전력 소모 제어를 이용하는 프로세서 집적 회로의 예시적인 실시예에 대한 설명과 관련하여 더욱 상세히 설명될 것이다. 그러나, 이 특정 실시예를 설명하기 전에, 예시적인 하드웨어 및 소프트웨어 환경이 이하에서 더욱 상세히 설명된다.
도면을 참조하면, 동일한 번호가 여러 도면 전체에서 비슷한 부분을 나타내고 있으며, 도 1은 본 발명에 부합되는 동적 전력 소모 제어를 구현하는 미디어 프로세서(12)를 포함하는 데이터 프로세싱 시스템(10)에 대한 예시적인 하드웨어 및 소프트웨어 환경을 예시한다. 미디어 프로세서(12)는, 예를 들어 필립스 세미컨덕터로부터 입수할 수 있는 PNX1300 시리즈 3중미디어-호환가능(TriMedia-compatible) 미디어 프로세서, 또는 대안으로 Equator Map1000, TI TMS320C6xxx, BOPS ManArray 등과 같은 다른 미디어 프로세서 아키텍처로써 구현될 수도 있다. 미디어 프로세서(12)는 내부 버스(16)를 거쳐 동일한 집적 회로 디바이스에 내장된 다수의 추가 회로 소자에 커플링된 중앙 프로세싱 유닛(CPU) 또는 프로세싱 코어(14)를 포함하는 시스템-온-칩(system-on-chip: SOC) 집적 회로 디바이스이다.
예를 들어, CPU(14)는, 예를 들어 32-비트 어드레스 공간을 포함하는 VLIW 프로세서 코어 및 128개의 32-비트 범용 레지스터를 포함하는 레지스터 파일로써 구현될 수도 있다. 프로세서 코어는 16-KB 데이터 및 32-KB 인스트럭션 캐시 뿐 아니라 5개의 발생 슬롯(issue slot)을 거쳐 액세스 가능한 27개의 기능 유닛을 포함하며, 데이터 캐시는 이중-단자화(dual-ported)되어 있고, 양 캐시는 64-바이트 블록 크기와 결합하기 쉬운 8-방향 세트이다.
프로세서(12)의 작업 메모리는 주메모리 입력/출력 인터페이스 블록(20)을 거쳐 액세스되는 외부 메모리(18)(예를 들어, SDRAM 메모리)에 의해 제공되는 반면, 주변 버스(22)(예를 들어, PCI 버스)에서 외부 주변 소자들과의 연결성은 외부 버스 인터페이스 블록(24)에 의해 용이하게 된다.
다양한 미디어-프로세싱 기능을 지원하기 위해, 미디어 프로세서(12)는 비디오 인/아웃 블록(26, 28), 오디오 인/아웃 블록(30, 32), SPDIF 출력 블록(34), I2C 인터페이스 블록(36), 동기식 직렬 인터페이스 블록(38), 이미지 보조프로세서 블록(40), DVD 디스크램블러(DVDD) 블록(42), 가변 길이 디코딩(VLD) 보조프로세서 블록(44), 및 타이머 블록(46)을 포함하는 다양한 특화된 미디어 프로세싱 회로를 포함한다.
이제 도 2를 참조하면, CPU(14)가 더욱 상세히 예시되며, 내부 버스(16)를 인스트럭션 캐시(52) 및 데이터 캐시(54)에 연결하는 버스 인터페이스 유닛(BIU)(50)을 포함하는 것이 도시된다. 인스트럭션 캐시(52)로부터의 인스트럭션은 하나 이상의 디코더에 제공되는데, 디코더는 하나 이상의 기능 유닛(58), 예를 들어, 다양한 산술 로직 유닛, 부동 소수점 유닛, 하위워드(subword)-병렬 멀티미디어 작동 유닛, 로딩/저장 유닛, SIMD 멀티미디어 작동 유닛, 벡터 멀티미디어 작동 유닛, 승산기, 브랜치 유닛 등에 인스트럭션을 출력한다. 전술한 바와 같이, CPU(14)는 VLIW 인스트럭션을 지원하여, VLIW 인스트럭션으로 인코딩된 다중 연산을 다수의 기능 유닛에 동시에 라우팅하도록 VLIW 인스트럭션을 처리할 때 다수의 인스트럭션 슬롯(예를 들어, 5개)이 사용될 수도 있다.
CPU(14)는 전형적으로 로딩/저장 아키텍처로 구현되어, 여기에서는 128개의 32-비트 범용 레지스터를 포함하고 있는 레지스터 파일(60)을 기능 유닛(58)이 액세스한다. 추가 지원 레지스터는 프로그램 제어 및 상태 워드(PCSW) 레지스터(61)로서, 예를 들어 부동 소수점 연산, 바이트 섹스(byte sex)(big/little endian; 빅/리틀 엔디안), 인터럽트 인에이블, 예외(exceptions) 등에 관해, CPU에 대한 다양한 구성 세팅을 설정하는 데 사용된다. 본 발명에 부합되는 동적 전력 소모 제어를 제공하기 위해, CPU(14)는 또한 전력 제어 회로(62)를 포함하며, 이 회로 내에는 본 명세서에서 전력 모드 레지스터라고 지칭되는 지원 레지스터(64)가 예시되어 있고, 이 레지스터 내에는 미디어 프로세서에서의 전력 소모를 최소화하도록 선택적으로 디스에이블될 수 있는 미디어 프로세서(12)의 다양한 하드웨어 리소스에 대한 전력 모드 상태 정보가 저장된다. 일부 구현에 있어서, PCSW 또는 CPU의 다른 지원 레지스터에서의 전력 모드 상태 정보의 저장을 또한 지원하여, 전력 모드 상태 정보가 전력 소모 제어와 관련되지 않은 다른 상태 정보와 결합되게 하는 것이 바람직할 수도 있다.
전력 제어 회로(62)는 하나 이상의 인에이블 신호(66)를 CPU(14) 및/또는 미디어 프로세서(12)의 다양한 하드웨어 리소스에 내장된 인에이블 로직에 인가하여, CPU(14) 전체의 전력 소모, 선택적으로는 미디어 프로세서(12)의 다른 곳에서의 전력 소모를 제어한다. 이러한 경우, 하드웨어 리소스는 집적 회로에서의 전력 소모를 감소시킬 목적으로 디스에이블하는 데 유용하고 및/또는 바람직할 수 있는 집적 회로의 임의의 전자 회로를 실질적으로 나타낼 수도 있다. CPU(14)에서, 예를 들어, BIU(50), 캐시(52, 54), 인스트럭션 디코더(56), 기능 유닛(58) 및 레지스터 파일(60)은, 모두 각각의 블록 상의 인에이블 로직(참조부호 "E"로 지정함)의 존재로 인해, 선택적으로 디스에이블될 수 있는 하드웨어 리소스로서 예시된다.
예시된 실시예에서, 전력 제어 회로(62)는 전력 모드 레지스터(64)에 저장된 전력 모드 상태 정보에 대한 응답으로 인에이블 신호(66)를 선택적으로 인가한다. 이 상태 정보는 CPU(14)에 의해 실행되는 프로그램 내에 포함된 전력 제어 인스트럭션에 대한 응답으로 레지스터(64)에 저장된다. 이들 전력 제어 인스트럭션은, 다른 통상적인 레지스터가 본 분야에서 보편적으로 사용되는 인스트럭션을 저장하는 방식과 상당히 동일한 방식으로, 전형적으로는 인스트럭션 디코더(56)에 의해 디코딩되며, 전력 모드 레지스터(64)를 업데이트하는 데 사용된다.
인에이블 신호(66)가 전체 블록 또는 하드웨어 리소스를 완전히 인에이블/디스에이블하는 데 사용되거나, 또는 그러한 블록/리소스의 일부만을 인에이블/디스에이블하고 및/또는 그러한 블록/리소스 모두 또는 일부만에 대한 다수의 유효 전력 소비 상태 중에서부터 선택하는 데 사용될 수도 있음이 인지될 것이다. 예를 들어, 하드웨어 리소스는 2개 이상의 전력 모드, 예를 들어 수면 모드(sleep mode) 또는 완전 오프 모드(fully off mode), 두 개 이상의 저전력 또는 에너지 절약 모드, 및 최대 출력 모드(full power mode)를 지원할 수도 있다. 단일 라인이 도 2에서 각 인에이블 신호(66)에 대해 예시되고 있으나, 다수의 신호 경로가 각 하드웨어 리소스의 일부를 각 입도(granularity)의 변화 정도에 따라 선택적으로 인에이블하는 데 사용될 수도 있음이 인지될 것이다. 또한, 임의의 알려진 에너지 절약 기술 또는 본 분야에 알려져 있는 전력 소모 감소 기술이 본 명세서에서 설명한 전력 제어 회로의 제어 하에서 선택적으로 인에이블될 수 있는 한, 하드웨어 리소스가 실제로 그러한 기술을 활용할 수도 있음이 인지될 것이다.
이하에서 논의되는 실시예에서, 예를 들어, 레지스터 파일과 같은 하드웨어 리소스는, 개별적으로, 프로세서에 의해 실행되는 프로그램에서의 전력 제어 인스트럭션에 응답하여 선택적으로 디스에이블될 수 있는 다수의 레지스터 뱅크로 레지스터 파일을 편성하여 전력 소모를 감소시키도록 제어될 수도 있다. 이에 대해, 각 레지스터 뱅크는 그 자체가 별도의 하드웨어 리소스를 나타내는 것으로 간주될 수도 있다.
예시된 실시예에서, 각 레지스터 뱅크는, 클록 신호 뿐 아니라 각 디스에이블 레지스터 뱅크에 대한 어드레스 및 데이터 입력 신호를 게이트 오프하는 인에이블 로직을 이용한다. 이하에서 더욱 자명한 바와 같이, 흔히, 게이트 오프 클록, 어드레스 및 데이터 입력 신호는 범용 레지스터와 관련하여 사용되는 CMOS 래치 또는 플립-플롭이 흔히 더 높은 와이어 커패시턴스가 되기 때문에 최상의 에너지 절약을 총괄적으로 제공한다. 그러나, 레지스터 파일을 디스에이블하는 다른 방식이 본 발명에 부합되는 일부 실시예에 사용될 수도 있다.
또한, 전력 제어 회로(62)가 CPU(14) 내에 단독으로 배치된 하드웨어 리소스를 제어하는 데 사용되는 것으로 예시되고 있으나, 전력 제어 회로는, 예를 들어, 동일한 집적 회로에 있는 어느 장소에나 배치된 리소스(예를 들어, 도 1에 예시된 기능 블록들 모두 또는 일부) 및 다른 집적 회로 상에 배치된 하드웨어 리소스를 포함하는 본 발명에 부합되는 다른 하드웨어 리소스를 제어하는 데 사용될 수도 있음이 인지될 것이다. 사실상, 본 발명에 부합되는 전력 제어 회로는, 예를 들어 레지스터 파일, 메모리, 캐시, 발생 슬롯, 버스, 기능 유닛, 기능 블록, IO 패드 또는 핀, 버퍼, 인스트럭션 재주문 로직, 내장형 필드 프로그램 가능 게이트 어레이(FPGA's), 보조프로세서, 또는 감소된 레벨의 전력 소모를 갖는 상태로 디스에이블 및/또는 그러한 상태로 설정될 수 있는 실질적으로 임의의 유형의 전자 회로를 포함하는 매우 다양한 하드웨어 리소스와 관련하여, 전력 소모를 제어하는 데 사용될 수도 있다. 또한, 전술한 회로들 중의 임의의 회로는, 예를 들어, 그러한 회로들 중의 개별적인 부분(예를 들어, 레지스터 파일의 개별 뱅크나 레지스터, 개별적인 캐시 세트, 버스의 개별적인 라인이나 라인 그룹 등)이 선택적으로 디스에이블될 수 있도록 별도로 제어될 수 있는 다수의 하드웨어 리소스를 내장하는 것으로 간주될 수도 있다.
또한, 전력 제어 회로(62)가 CPU(14)에 배치되는 것으로 예시되고 있으나, 전력 제어 회로가 CPU 또는 다른 처리 코어로부터 기능적으로 별개일 수도 있음이 인지될 것이다. 일반적으로, 전력 소모 제어 기능이 집적 회로 상에 할당되는 특정 방식은 상이한 실시예에서 변할 수 있으며, 이와 같이, 본 발명은 본 명세서에서 논의된 특정 구현으로 한정되지 않는다.
추가적인 사항으로서, 미디어 프로세서 내의 전력 제어 회로(62)의 구현이 예로써 본 명세서에 제공된다. 전력 소모 제어, 특히 이하에서 설명되는 바와 같은 전력 제어 인스트럭션의 사용은 본 발명에 부합되는 매우 다양한 대안 집적 회로에서 활용될 수도 있다. 전력 제어 인스트럭션은, 예를 들어, VLIW, EPIC, RISC, CISC, DSP, 슈퍼스칼라(superscalar) 등을 포함하는 다양한 프로세서 아키텍처와 관련하여 사용될 수도 있다. 또한, 본 발명은 SOC 아키텍처, 또는 프로세싱 코어가 다른 지원 회로와 통합되어 있는 다른 아키텍처 내에서 사용하는 것으로 제한되지 않는다.
많은 경우, 전력 소모 감소와 관련된 상당한 이점은, 흔히 저이용성 병렬 하드웨어 리소스는 자주 프로그램 사용 요구에 따라 선택적으로 디스에이블될 수도 있다면, VLIW, EPIC, 슈퍼스칼라, 또는 프로그램 실행 동안 병렬 하드웨어 리소스가 항상 적게 이용될 수도 있는 다른 폭 넓은 발생 아키텍처와 관련하여 실현될 것이다. 그러나, 본 발명은 단지 폭 넓은 발생 아키텍처 등과 관련된 적응성(applicability)으로만 제한되지 않는다.
일반적으로, 본 명세서에서 설명한 임의의 하드웨어 기반 기능은 전형적으로는 하나 이상의 집적 회로 내에 내장된 회로 장치로 구현되며, 선택적으로는 추가의 지원 전자 소자를 포함하는 회로 장치로 구현된다는 것이 인지될 것이다. 또한, 본 분야에 잘 알려져 있는 바와 같이, 집적 회로는 전형적으로 본 명세서에서 하드웨어 지정 프로그램이라 지칭되는 하나 이상의 컴퓨터 데이터 파일을 이용하여 디자인 및 제작되는데, 지정 프로그램은 디바이스 상에 회로 장치의 레이아웃을 정의한다. 프로그램은 전형적으로 디자인 툴(tool)에 의해 생성되며, 제조 중에 순차적으로 사용되어 반도체 웨이퍼에 적용되는 회로 장치를 정의하는 레이아웃 마스크를 생성한다. 전형적으로, 프로그램은 VHDL, 베릴로그(verilog), EDIF 등과 같은 하드웨어 기술 언어(hardware definition language: HDL)를 이용하여 사전 정의된 포맷으로 제공된다. 본 발명이 전적으로 기능하는 집적 회로에 구현된 회로 장치 및 동일물을 이용하는 데이터 처리 시스템과 관계하여 설명될 것이나, 당업자라면 본 발명에 부합되는 회로 장치가 또한 다양한 형태의 프로그램 제품으로서 배포될 수 있으며 본 발명이 실질적으로 배포를 실행하는 데 사용되는 특정한 유형의 신호 지속 매체(signal bearing media)와는 상관없이 동일하게 적용된다는 것을 이해할 것이다. 신호 지속 매체의 예는 휘발성 및 비휘발성 메모리 디바이스, 플로피 및 다른 제거 가능 디스크, 하드디스크 드라이브, 자기 테이프, 광디스크(예를 들어, CD-ROMs, DVDs 등)와 같은 기록 가능 매체, 특히, 디지털 및 아날로그 통신 링크와 같은 전송 매체를 포함하고 있으나, 이러한 것으로 제한되는 것은 아니다. 본 발명에 부합되는 일부 실시예에서, 다른 집적 회로 기술, 예를 들어, FPGA 등은 또한 본 명세서에서 논의한 일부 하드웨어 기반 기능을 구현하는 데 사용될 수도 있다.
전술한 바와 같이, 전력 제어 회로(62)는 CPU(14)에 의해 실행된 프로그램 내에 내장된 전력 제어 인스트럭션을 통해 제어될 수도 있다. 이들 전력 제어 인스트럭션은 프로그래머에 의해 생성될 수도 있으며, 또는, 대안으로, 컴퓨터, 링커(linker), 최적화기(optimizer) 등에 의해 자동으로 프로그램에 추가될 수도 있다. 또한, 프로그램 제어 인스트럭션의 이러한 자동 추가는 전형적으로 실행시간 이전에 발생하며, 몇몇 실시예에서 프로그램 제어 인스트럭션의 실행시간 추가는, 예를 들어 정확한 편집/최적화(just-in-time compilation/optimization) 또는 실행시간 해석(runtime interpretation)/인스트럭션 디코딩과 관련하여, 이용될 수도 있다.
특정 구현 방식(예를 들어, 실행시간 전이나 후, 컴파일러나 최적화기에서 등)과는 상관없이, 프로그램 제어 인스트럭션의 자동 추가는 전형적으로 이하에서 더욱 상세히 설명될 하나 이상의 루틴을 사용하여 구현된다. 운용 시스템 또는 특정 애플리케이션, 소자, 프로그램, 객체, 인스트럭션의 모듈이나 시퀀스, 또는 심지어 서브세트에서 구현되든 아니든, 이들 루틴은 "컴퓨터 프로그램 코드" 또는 간단히 "프로그램 코드"라고 지칭될 것이다. 프로그램 코드는 전형적으로 컴퓨터나 데이터 처리 시스템의 다양한 메모리 및 저장 디바이스에서 몇 차례에 걸쳐 상주하는 하나 이상의 인스트럭션을 포함하며, 컴퓨터에서 하나 이상의 프로세서에 의해 판독 및 실행될 때 그 컴퓨터가 본 발명의 다양한 측면을 구체화하는 단계 또는 구성요소를 실행하는 데 필수적인 단계를 수행하게 한다. 또한, 본 발명의 소프트웨어 관련 측면이 컴퓨터 및 데이터 처리 시스템과 관련하여 설명되어 왔고 이하에서도 설명될 것이지만, 당업자라면 본 발명의 다양한 실시예들이 다양한 형태의 프로그램 제품으로서 배포될 수 있고 배포를 실질적으로 실행하는 데 사용되는 특정 유형의 신호 지속 매체와는 상관없이 본 발명이 실질적으로 적용한다는 것을 이해할 것이다.
또한, 이하에서 설명되는 다양한 프로그램은 본 발명의 특정 실시예에서 구현되는 애플리케이션에 기초하여 식별될 수도 있다. 그러나, 뒤이은 임의의 특정 프로그램 목록(program nomenclature)이 단지 편의상 사용된 것으로서, 본 발명이 그러한 목록에 의해 식별 및/또는 내포되는 임의의 특정 애플리케이션에서만 사용되는 것으로 제한되어서는 안 된다는 것을 이해해야 한다. 또한, 프로그램 기능이 전형적인 컴퓨터(예를 들어, 운용 시스템, 라이브러리, APIs, 애플리케이션, 애플릿 등) 내에 상주하는 다양한 소프트웨어 계층 중에 할당될 수도 있는 다양한 방식 뿐 아니라, 컴퓨터 프로그램이 루틴, 진행, 방법, 모듈, 객체 등으로 편성될 수도 있는 실질적으로 무한정인 방식이 주어지면, 본 발명이 본 명세서에서 설명한 프로그램 기능의 특정 편성 및 할당으로 제한되지 않는다는 것을 이해해야 한다.
당업자는 도 1 및 도 2에 예시한 예시적인 실시예가 본 발명을 제한하고자 하는 것이 아님을 인식할 것이다. 또한, 당업자는 다른 대안 하드웨어 및/또는 소프트웨어 환경이 본 발명의 범주를 벗어나지 않고서도 사용될 수도 있다는 것을 인식할 것이다.
전술한 바와 같이, 본 발명에 부합되는 동적 전력 소모 제어는, 통상의 전력 소모 제어 기술에 대해 전반적으로 실질적인 이점을 제공하는 두 가지 개념 중의 어느 하나 또는 모두를 포함할 수도 있다. 제 1 개념은 프로세서 또는 프로세싱 코어에 의해 활용된 레지스터 파일에 대한 전력 소모 제어를 구현하는 데에 유일하게 적용된다. 제 2 개념은 집적 회로에서 전력 소모를 제어하는 소프트웨어-제어 방식에 더욱 일반적으로 적용된다. 이러한 개념들 각각의 더 양호한 이해를 용이하게 하기 위해, 양 개념을 모두 내포하고 있는 예시적인 실시예가 도 3 내지 도 6과 관련하여 이하에서 설명된다. 그러나, 이하에서 논의된 두 가지 개념은 다른 실시예에서 별도로 독립적으로 이용될 수도 있고, 이와 같이, 이하에서 본 발명이 논의된 특정 구현으로 제한되는 것이 아님을 이해할 것이다.
도 3 내지 도 6은 특히 3중미디어-호환가능 미디어 프로세서에서 사용되는 레지스터 파일에서의 전력 소모의 소프트웨어 기반 제어를 예시한다. 예를 들어, 많은 프로그램 가능 아키텍처(예를 들어, VLIW, EPIC 및 슈퍼스칼라)에서 레지스터 파일은 전체적인 전력 소모에 대한 큰 기여자라는 것이 밝혀졌다. 일부 애플리케이션에서는, 레지스터 파일이 프로세싱 코어에 의해 소비되는 전력의 20%까지를 소비할 수도 있다는 것이 밝혀졌다. 미디어 프로세서에서 특히, 레지스터 파일은 흔히 비교적 크며, 흔히 많은 포트와 레지스터를 포함한다. 일부 3중미디어-호환가능 프로세서는, 예를 들어, 128개의 레지스터와 20개의 개별 포트를 구비한 레지스터 파일을 사용한다. 레지스터 파일 디자인은 배선을 위주로 하여, 기술 스케일링에 따라 상대적인 전력 소모가 증가한다. 이와 같이, 레지스터 파일에서의 전력 소모를 감소시키는 것은 흔히 미디어 프로세서에서의 에너지 소비를 실질적으로 절약하게 한다.
흔히, 임의의 프로그램 가능 아키텍처에 있는 레지스터 파일의 크기는 최고 개수의 액티브 변수를 요구하는 애플리케이션에 의해 결정되는데, 이 변수는 전형적으로 레지스터 파일에 저장된다. 그러나, 더 적은 액티브 변수를 갖는 다른 애플리케이션을 실행하는 동안에는, 레지스터 파일에 있는 많은 레지스터가 여전히 사용되지 않은 상태를 유지한다. 또한, 특정 애플리케이션 내에서, 레지스터 파일의 활용은 애플리케이션의 상이한 지점에서 실질적으로 변할 수 있다. 예로써, 3중미디어-호환가능 미디어 프로세서는 AC3 디코딩 중에 비교적 높은 피크 레지스터 활용도를 갖는 반면, 흔히, 전형적인 애플리케이션에서 다른 연산 수행 중에는 평균 레지스터 활용도가 비교적 낮다는 것이 밝혀졌다. 따라서, 운용 중인 애플리케이션의 현재 요건에 따라, 레지스터 파일의 사용되지 않은 부분을 디스에이블하여 전반적인 전력 소모를 감소시키는 것이 매우 바람직할 수도 있다.
도 3에 특히 도시한 바와 같이, 일부 레지스터 파일을 선택적으로 디스에이블하는 방식은 어드레스 공간 상의 레지스터 파일(여기에서는 도 2의 레지스터 파일(60))을 여러 개의 뱅크(70)로 분할하여, 예를 들어, 전력 제어 회로(62)(도 2)를 거쳐 뱅크에 공급되는 인에이블 신호(66)에 대한 응답으로, 이들 뱅크를 조건부로 인에이블하거나 디스에이블하는 것에 의한 것이다.
각 뱅크(70)는 레지스터 파일로 나타낸 레지스터 공간이 레지스터 세트로 분할되도록 되어 있는 다수의 레지스터를 포함할 수도 있다. 예를 들어, 128개의 레지스터를 구비한 레지스터 파일에 대해서는, 레지스터 공간을 16개의 레지스터 각자에 대해 8개의 뱅크로 분할하는 것이 바람직할 수도 있다. 레지스터를 분할하는 다른 방식이 사용될 수도 있으나, 예로써, 가장 중요한 어드레스 입력을 뱅크 선택 신호로 사용하고, 가장 덜 중요한 어드레스 입력을 사용하여 선택된 뱅크에서 특정 레지스터를 선택하는 것이 바람직할 수도 있다. 예를 들어, 레지스터 파일이 8개의 16 레지스터 뱅크로 분할되는 경우, 높은 순위 입력 3개가 뱅크 선택 신호로 사용되고 낮은 순위의 입력 4개가 레지스터 선택 신호로서 사용되는 7개의 어드레스가 사용된다.
본 분야에 잘 알려져 있는 바와 같이, 레지스터 파일(60)은, 클록 입력(74), 어드레스 인 입력(76) 및 데이터 인 입력(78) 뿐 아니라 출력 선택 로직(72)을 포함한다. 또한, 레지스터 파일(60)은 데이터 아웃 출력(80)에 데이터를 출력한다. 레지스터의 개수 및 각 레지스터의 폭 뿐 아니라 레지스터 파일에 의해 지원되는 입력/출력포트의 개수에 따라, 상이한 개수의 어드레스 인, 데이터 인 및 데이터 아웃 신호가 레지스터 파일에 제공될 수도 있음이 인지될 것이다. 또한, 입력 선택 로직(도시하지 않음)이 사용되어 다수의 기능 유닛에 의해 다수의 레지스터의 동시적 액세스를 지원하게 할 수도 있다.
레지스터의 뱅크를 선택적으로 디스에이블하기 위해, 클록, 어드레스 인 및 데이터 인 입력은 각 뱅크에 배치된 인에이블 회로(82)를 통해 각 뱅크에 제공된다. 또한, 전력 제어 회로로부터의 인에이블 신호(66)는 각 인에이블 회로(82)에 추가로 공급되어 연결된 레지스터 뱅크(70)에 대한 클록, 어드레스 인 및 데이터 인 입력을 선택적으로 게이트 오프하거나 보호한다.
각 뱅크 내의 인에이블 회로(82)는 본 발명과 부합되는 많은 방식으로 구현될 수도 있다. 예를 들어, 인에이블 회로를 구현하는 한 가지 방식은 일련의 게이트 트랜지스터의 사용에 의한 것으로서, 이러한 트랜지스터는 레지스터 뱅크에 대한 각 클록, 어드레스 인 및 데이터 인 입력에 커플링되고 그 레지스터 뱅크의 전용 인에이블 신호(66)에 의해 게이트된다.
각 뱅크에 대해 어드레스 및 데이터 입력을 게이트 오프하되 클록 입력만은 게이트 오프하지 않음으로써, 전형적으로, 비교적 큰 에너지 절약이 CMOS 래치 또는 플립-플롭(동기화된) 레지스터 구현에 연결된 비교적 높은 배선 커패시턴스로 인해 얻어지는데, 이는 게이팅이 전형적으로 레지스터 파일 뱅크 내에서 사용되는 비교적 긴 배선에 대해 스위칭 작용을 억제하기 때문이다. 그러나, 일부 구현에서, 추가의 게이팅 로직은 추가 지연을 유발하여 성능을 작은 범위로 국한시킬 수도 있음이 인지되어야 한다. 또한, 본 발명이 상이한 레지스터 구현을 이용하여 구현된 레지스터 파일과 관련하여 사용될 수도 있음이 인지될 것이다.
레지스터 파일(60)의 소프트웨어 기반 전력 소모 제어를 구현하기 위해, 전력 제어 인스트럭션은 CPU(14)의 인스트럭션 세트 아키텍처에서 지원된다. 전력 제어 인스트럭션에 대한 예시적인 포맷이 도 4의 참조번호(90)에 예시된다. 도시한 바와 같이, 전력 제어 인스트럭션(90)은 인스트럭션을 pwr_control 인스트럭션으로 식별하는 opcode(92)와, 레지스터 파일(60)에 있는 레지스터의 다양한 뱅크에 대한 전력 모드를 설정하는 데 사용되는 전력 제어 정보를 명시하는 피연산자(operand)(94)를 포함할 수도 있다. 피연산자(94)는, 예를 들어, 레지스터 파일에 있는 레지스터의 각 뱅크에 할당된 인에이블/디스에이블 비트(96)를 갖는 비트 마스크(bit mask)를 포함하는 즉시 피연산자(immediate operand)로서 구현될 수도 있다. 따라서, 예를 들어, 레지스터 파일의 8개 뱅크에 대해, 8-비트 즉시 피연산자는 인스트럭션(90)에서 지원될 수도 있다.
더욱 일반적인 수준에서, 피연산자(94)의 크기는 공식으로 명시될 수도 있다.
j는 제어될 하드웨어 리소스(여기에서는 레지스터 뱅크)의 개수이고 Modes(i)는 하드웨어 리소스 i의 전력 모드의 개수이다.
다른 인스트럭션 포맷이 대안으로 사용될 수도 있다. 예를 들어, 도 4에 도시한 바와 같이, 전력 모드 상태 정보가 저장되어 있는 레지스터를 식별하는 선택적 소스 레지스터 피연산자(97)를 지원하는 것이 바람직할 수도 있다. 따라서, 전력 제어 인스트럭션에 직접 전력 모드 상태 정보를 저장하여 즉시 연산을 수행하기보다는, 전력 모드 상태 정보가 별도의 레지스터에 보존되고, 레지스터 연산이 바람직한 전력 모드 상태 정보를 검색하는 데 사용될 수 있다. 다른 어드레싱 모드가 대안으로 지원될 수도 있다.
또한, 도 4에도 도시한 바와 같이, 가드 피연산자(guard operand)(98)를 지원하는 것이 바람직할 수도 있는데, 이 피연산자는 전력 제어 인스트럭션에 의해 명시된 전력 모드 상태 정보가 인가되기 전에 충족되어야 하는 조건을 명시하는 데 사용될 수도 있다. 실제로, 임의의 알려진 조건이 본 발명에 부합되게 사용될 수도 있다.
도 2를 참조하면, 예시된 실시예에서, 전력 제어 인스트럭션은 전력 모드 레지스터(64)를 업데이트하도록 CPU(14)에 의해 처리되고 전력 제어 정보는 전력 제어 인스트럭션에 명시된다. 이와 같이, 전력 모드 레지스터(64)가 전력 제어 인스트럭션에 대한 즉시 피연산자와 동일한 맵핑을 갖고 있어, 전력 제어 인스트럭션이 전력 모드 레지스터에 대해 즉시 쓰기로서 간단히 처리되게 하는 것이 바람직할 수도 있다.
또한, 전술한 바와 같이, 일부 경우, PCSW 레지스터와 같은 기존 레지스터를 이용하여 전력 모드 상태 정보를 저장하는 것이 바람직할 수도 있다. 이러한 경우, 전력 제어 인스트럭션은 별도의 opcode를 요구하지 않을 것이다. 대신, 기존의 적절한 레지스터에 쓰도록 이용되는 opcode가 사용될 수도 있으며, 피연산자는 전력 모드 상태 정보를 저장하는 것과 관련하여 사용되는 그러한 비트들을 업데이트한다.
전력 제어 인스트럭션은 본 발명에 부합되는 많은 방식으로 실행가능 프로그램 코드에 포함될 수도 있다. 예를 들어, 전력 제어 인스트럭션은 개발 동안 프로그래머에 의해 소스 코드에 추가될 수도 있다. 대안으로, 컴파일러, 최적화기, 링커 등은 예측된 리소스 사용을 기반으로 하여 전력 제어 인스트럭션을 삽입할 적절한 위치를 결정하기 위한 개발 하에서 프로그램의 시뮬레이션이나 정적 분석을 수행할 수도 있다.
또한, 프로그램의 프로파일(profiling), 정적 분석 또는 시뮬레이션은, 프로그램의 소정 섹션 동안, 어떤 하드웨어 리소스가 사용되어야 하고 어떤 리소스가 디스에이블되어야 하는지를 결정하는 데 사용될 수도 있다. 예를 들어, 단 10개의 레지스터만이 프로그램의 소정 섹션에서 요구되고 있으나 어떤 10개의 레지스터가 프로그램 의미(program semantics)에 중요하지 않은지가 결정된 경우, 컴파일러가 제한된 개수만의 레지스터 뱅크로부터의 레지스터를 사용한 후 적절한 전력 제어 인스트럭션을 프로그램 코드에 삽입하여 사용되지 않는 레지스터 뱅크를 디스에이블하게 하는 것이 바람직할 수도 있다. 또한, 그러한 10개의 레지스터가 초기에 여러 개의 레지스터 뱅크 전체에 분산되어 있는 경우, 레지스터를 재배치하여 감소된 개수의 레지스터 뱅크 내에 레지스터를 집중시키는 것이 바람직할 수도 있다.
도 5는, 예를 들어, 컴퓨터 프로그램의 편집 또는 최적화 중에 실행되어 최적의 전력 소모를 위한 컴퓨터 프로그램의 섹션을 최적화할 수도 있는 전력 소모 최적화 루틴(100)을 예시한다. 프로그램의 각 특정 섹션에 대해, 루틴(100)은 먼저 그 섹션을 분석하여 블록(102)에서 그 프로그램 코드 섹션에 의해 하드웨어 리소스 사용을 결정한다. 다음, 블록(104)은 선택적으로 실행되어 제한된 하드웨어 리소스 세트에 리소스 사용을 집중시키도록(예를 들어, 제한된 개수의 레지스터 뱅크로 레지스터를 한정하도록) 리소스를 재배치하게 한다. 다음, 블록(106)은 적절한 전력 제어 인스트럭션을 생성하고 프로그램 코드에 삽입하여 임의의 사용되지 않는 리소스를 디스에이블한다. 그 후, 섹션의 프로세싱이 완료된다.
또한, 루틴(100), 또는 기능적으로 유사한 루틴은 또한 실행시간 중에 예를 들어 해석(interpretation) 또는 정확한 편집과 관련하여 사용될 수도 있다. 또한, 루틴(100)이 실행시간 중에, 예를 들어 슈퍼스칼라 프로세서 아키텍처에서, 병렬 연산 및/또는 비순차(out-of-order) 연산에 예정된 인스트럭션의 생성과 관련하여 사용될 수도 있음이 인지될 것이다. 이러한 구현에서, 바람직하게는, 컴파일러 및 실행시간 하드웨어는, 예를 들어, 실행시간 추측을 제한하는 부작용(side effect)을 전력 제어 인스트럭션에 할당함으로써, 다른 추측된 인스트럭션에 대한 영향을 최소화하도록 전력 제어 인스트럭션의 재주문(reorder)을 제한해야 한다. 또 다른 실시예에서, 연산 시스템은 CPU/프로세서가 계산에 완전히 부하가 걸리지 않은 경우 전력 제어 명령을 예정/발생할 수 있다.
대안으로, 루틴(100)은 병렬 연산의 검출이 편집 중에 발생하는 경우에 VLIW 또는 EPIC 코드와 같은 명백한 병렬 인스트럭션 세트 아키텍처와 관련하여 사용될 수도 있다. 이러한 구현에서, 전력 제어 인스트럭션의 삽입은 다수의 연산을 포함하는 더 큰 VLIW 또는 EPIC 인스트럭션에 전력 제어 연산을 삽입하는 것을 포함하는 것으로 간주될 수도 있다.
전력 제어 인스트럭션이 편집 중 또는 실행시간 중에 삽입된 프로그램 코드는 하드웨어 리소스 사용에서의 변화가 바람직하게 되는 시간에만 프로그램 코드 내에 산재된 프로그램 제어 인스트럭션을 포함한다. 또한, 흔히, 단일 전력 제어 인스트럭션이 다수의 하드웨어 리소스의 인에이블/디스에이블 상태를 제어할 수 있게 하는 것이 바람직하다. 이와 같이, 최소의 추가 프로세싱 오버헤드는 전형적으로 본 발명에 부합되는 전력 제어 인스트럭션과 연결되어, 프로그램 코드에 추가 인스트럭션을 삽입하는 것으로 인한 임의의 불리한 성능 효과를 최소화시킨다.
도 6은, 예를 들어 3중미디어-호환가능 미디어 프로세서와 관련하여 사용될 수도 있는 바와 같이, 전술한 방식으로 컴파일된 프로그램의 예시적인 일부 실행을 도식적으로 예시한다. 이 예에는, 참조부호(110, 112, 114, 116, 118)로 지정된 5개의 발생 슬롯이 있으며, 각 사이클(사이클 0-4) 중에 각 발생 슬롯에서 실행되는 인스트럭션이 그 사이클에 대한 각각의 발생 슬롯에 예시된다. 또한, 레지스터 파일은 8개의 뱅크로 분할된 128개의 레지스터(r0 내지 r127로 표시)를 포함하고, 전력 제어 인스트럭션은 이진수 "1"이 선택된 뱅크와 연결된 피연산자 비트 마스크 위치에서 조우하게 될 때 그 뱅크가 인에이블되는 경우에 즉시 피연산자를 사용한다는 것을 전제로 한다. 이 예에서, pwr_control 인스트럭션의 대기시간(latency)은 1사이클이지만, pwr_control 인스트럭션이 일부 구현에서 1사이클보다 더 많은 대기시간을 갖는다는 것이 인지될 것이다.
또한, 사이클 0 동안, CPU(여기서는 발생 슬롯(112))에 의해 처리되는 인스트럭션 중의 하나가 0x1b(이진수 00011011)를 갖는 전력 제어 인스트럭션이며, 이는 레지스터 파일(즉, 레지스터 r0-r31, r48-r79)의 뱅크(1, 2, 4, 5)만을 인에이블하게 한다는 것을 전제로 한다. 이 인스트럭션의 실행 결과, 전력 모드 레지스터(64)(도 2)는 업데이트되어 0x1b(이진수 00011011) 값을 저장한다. 그 결과, 연속 사이클 동안, 레지스터 뱅크(3, 6, 7, 8)가 디스에이블된다. 그러나, 사이클 0에서 전력 제어 인스트럭션의 실행 중에, 모든 레지스터 뱅크가 다른 인스트럭션에 의한 액세스에 이용될 수 있다(모든 뱅크가 이전에 인에이블되었다는 것을 가정함)는 것에 유의하라.
사이클 1 및 2 동안에는, 어떠한 추가 전력 제어 인스트럭션도 조우하지 않게 된다. 그 결과, 레지스터 뱅크(3, 6, 7, 8)는 계속 디스에이블된 상태로 남아 있고, 모든 인스트럭션은 뱅크(1, 2, 4, 5)(r0-r31, r48-r79)로부터 레지스터를 액세스하는 것으로 제한된다.
사이클 3 동안에는, 전력 모드 레지스터(64)에 저장된 전력 모드 상태 정보는 계속해서 레지스터 뱅크(3, 6, 7, 8)를 디스에이블된 상태로 유지시킨다. 그러나, 이 사이클(발생 슬롯(118)으로 발생됨) 동안 실행된 인스트럭션 중의 하나는 0xff(이진수 11111111)의 즉시 피연산자를 갖는 전력 제어 인스트럭션으로서, 사이클 4에서 실행된 인스트럭션에 대해 레지스터 파일의 모든 8개 뱅크를 인에이블한다.
전술한 동적 전력 소모 제어 기술은 통상적인 디자인 이상의 많은 이점을 제공한다. 특정 기능 유닛에 라우팅될 인스트럭션을 필요로 하는 통상적인 디자인 또는 모든 인스트럭션에 첨부되거나 끊임없이 디코딩될 인에이블/디스에이블 커맨드를 요구하는 통상적인 디자인에 비해, 최소의 프로세싱 오버헤드를 갖는 매우 다양한 하드웨어 리소스를 제어하는 것과 관련하여 상당한 적응성(flexibility)이 제공된다.
또한, 전술한 기술은 다양한 전력 소모 관련 발생을 설명할 적응성을 제공하여, 많은 유용한 방식으로 성능 및 전력 소모를 적절하게 균형을 맞춘다. 예를 들어, 전술한 기술을 이용하여, 프로세서 성능은, 예를 들어 레지스터 또는 기능 유닛을 추가하지만 여분의 리소스가 사용되지 않는 코드에 대한 전력 소모를 증가시키지 않고서도 증대(scale up)될 수 있다. 또한, 성능이 중요하지 않은 애플리케이션에 대해, 전력 제어 인스트럭션은, 예를 들어, 연산을 제한된 리소스로 예정하지만 다른 리소스를 디스에이블함으로써, 더 낮은 전력 소비를 위해 성능을 희생시킬 수 있다.
소프트웨어 기반 전력 소모 제어에 대해, 대안 인스트럭션 포맷, 대안 편집, 최적화 및/또는 예정 루틴, 및 대안 프로세서 아키텍처가 본 발명에 부합되는 다른 실시예에서 이용될 수도 있음이 인지될 것이다. 또한, 본 명세서에서 설명한 뱅크 레지스터 파일 디자인과 관련하여 전술한 바와 다른 리소스 디스에이블 회로가 본 발명에 부합되는 소프트웨어 기반 전력 소모 제어와 관련하여 사용될 수도 있다.
또한, 본 명세서에서 설명된 뱅크 레지스터 파일 디자인과 관련하여, 본 명세서에서 설명한 소프트웨어 기반 제어 메커니즘과 다른 메커니즘이 본 발명에 부합되어 사용될 수도 있음이 인지될 것이다. 예를 들어, 하드웨어 기반 제어 메커니즘은 판독/기록 어드레스의 동적 디코딩에 따라 소정 하드웨어 리소스를 동적으로 인에이블시키는 데 사용될 수도 있다. 예로써, 도 7은 도 3의 레지스터 파일(60)과 유사한 레지스터 파일에 제공되는 클록 입력(126), 데이터 인 입력(128) 및 어드레스 인 입력(130)을 선택적으로 게이트 오프하는 데 사용되는 게이팅 로직(124)을 각각 구비하고 있는 다수의 레지스터 뱅크(122)를 포함하는 대안 레지스터 파일 디자인(120)을 예시한다. 그러나, 소프트웨어 기반 제어 회로로부터 인에이블 신호를 제공받기보다는, 레지스터 파일(120)은 다양한 사용되지 않는 레지스터 뱅크를 선택적으로 디스에이블하기 위한 개별적인 뱅크 인에이블 신호(136)를 동적으로 생성하는 어드레스 디코더(134)를 포함하는 하드웨어 기반 인에이블 로직 회로(132)를 포함한다.
어드레스 디코더(134)는, 예를 들어, 그러한 뱅크 내의 어떤 레지스터도 일반적으로 액세스되지 않는 임의의 사이클 동안 레지스터 뱅크를 선택적으로 디스에이블할 수도 있다. 특히 다수의 입력포트를 지원하는 레지스터 파일에 대해, 어떤 레지스터가 소정 사이클 동안 액세스되는지가 용이하게 결정되며, 특정 프로세서 디자인에 의해 사용된 컴파일러 및/또는 인스트럭션 세트 아키텍처에서의 임의의 변화없이 레지스터 파일에 전력 소모를 선택적으로 감소시키는 능력을 제공한다.
다양한 추가 개량은 본 분야의 당업자에게는 자명하며, 본 진술의 이점을 갖는다. 따라서, 본 발명은 이하에 첨부된 청구범위에 의거한다.

Claims (21)

  1. 회로 장치(14)에 있어서,
    (a) 다수의 뱅크(70) - 각각의 뱅크는 적어도 하나의 레지스터(82)와, 적어도 하나의 클록 입력(74), 어드레스 입력 및 데이터 입력을 포함함 - 로 분할된 레지스터 파일(60)과,
    (b) 상기 레지스터 파일에 커플링되어 있으며, 상기 클록(74), 어드레스 및 데이터 입력을 게이트 오프함으로써 상기 다수의 뱅크 중에서 적어도 하나의 사용되지 않는 뱅크(70)를 선택적으로 디스에이블하도록 구성된 인에이블 로직(66)을 포함하는
    회로 장치.
  2. 제 1 항에 있어서,
    상기 레지스터 파일의 각 레지스터는 CMOS 플립 플롭 및 CMOS 래치 중의 적어도 하나를 포함하는
    회로 장치.
  3. 제 1 항에 있어서,
    상기 인에이블 로직은 다수의 인에이블 회로(82) - 각 인에이블 회로는 상기 레지스터 파일의 레지스터 뱅크에 커플링되고, 각 인에이블 회로는 인에이블 신호에 응답하여 상기 연결된 뱅크에 제공되는 각 클록(74), 어드레스 및 데이터 입력을 게이트 오프하도록 구성됨 - 를 포함하는
    회로 장치.
  4. 제 3 항에 있어서,
    각 인에이블 회로는 다수의 게이트 트랜지스터 - 각 게이트 트랜지스터는 상기 클록, 어드레스 및 데이터 입력 중의 하나에 커플링되고, 각 게이트 트랜지스터는 상기 인에이블 회로에 제공되는 상기 인에이블 신호에 응답함 - 를 포함하는
    회로 장치.
  5. 제 1 항에 있어서,
    상기 다수의 레지스터 뱅크 각각에 커플링된 출력 선택 로직(80)을 더 포함하는
    회로 장치.
  6. 제 1 항에 있어서,
    상기 인에이블 로직(132)은 어떤 레지스터 뱅크가 사용되지 않는지를 동적으로 결정하고 상기 동적 결정에 응답하여 각 뱅크에 대한 인에이블 신호를 생성하도록 구성되는
    회로 장치.
  7. 제 6 항에 있어서,
    상기 인에이블 로직은 상기 레지스터 파일에 제공된 상기 어드레스 입력에 의해 명시된 적어도 하나의 어드레스에 응답하여 상기 인에이블 신호를 생성하도록 구성된 어드레스 디코더를 포함하는
    회로 장치.
  8. 제 1 항에 있어서,
    상기 인에이블 로직은 저장된 전력 모드 상태 정보에 응답하여 각 뱅크에 대한 인에이블 신호를 생성하도록 구성된
    회로 장치.
  9. 제 8 항에 있어서,
    상기 전력 모드 상태 정보를 저장하도록 구성된 지원 레지스터를 더 포함하되, 상태 레지스터는 프로세서에 의해 실행되는 프로그램 코드에 상주하는 전력 제어 인스트럭션에 응답하여 업데이트되도록 구성되는
    회로 장치.
  10. 제 9 항에 있어서,
    상태 레지스터는 전력 모드 레지스터를 포함하는
    회로 장치.
  11. 제 9 항에 있어서,
    상기 상태 레지스터는 전력 소모 제어에 관련되지 않은 상태 정보를 추가로 저장하는
    회로 장치.
  12. 제 1 항에 있어서,
    상기 회로 장치는 집적 회로 상에 배치되는
    회로 장치.
  13. 제 12 항에 있어서,
    상기 회로 장치는 상기 집적 회로의 프로세서에 배치되는
    회로 장치.
  14. 제 1 항의 회로 장치를 정의하는 하드웨어 정의 프로그램(hardware definition program)을 포함하는 프로그램 제품, 및 상기 하드웨어 정의 프로그램을 지속시키는 신호 지속 매체(signal bearing medium)에 있어서,
    상기 신호 지속 매체는 전송 매체 및 기록 가능 매체 중에서 적어도 하나를 포함하는
    프로그램 제품 및 신호 지속 매체.
  15. 레지스터 파일에서 전력 소모를 제어하는 방법에 있어서,
    (a) 상기 레지스터 파일에 있는 다수의 레지스터 뱅크 중의 제 1 및 제 2 레지스터 뱅크로 각각 향하는 제 1 및 제 2 인에이블 신호를 수신하되, 각 레지스터 뱅크는 적어도 하나의 레지스터와, 적어도 하나의 클록 입력, 어드레스 입력 및 데이터 입력을 포함하는 단계와,
    (b) 상기 클록, 어드레스 및 데이터 입력을 게이트 오프함으로써 상기 제 1 인에이블 신호에 응답하여 상기 제 1 레지스터 뱅크를 선택적으로 디스에이블하는 단계를 포함하는
    전력 소모 제어 방법.
  16. 제 15 항에 있어서,
    상기 레지스터 파일의 각 레지스터는 CMOS 플립 플롭 및 CMOS 래치 중에서 적어도 하나를 포함하는
    전력 소모 제어 방법.
  17. 제 15 항에 있어서,
    상기 제 1 레지스터 뱅크를 선택적으로 디스에이블하는 단계는 상기 인에이블 신호를 상기 제 1 레지스터 뱅크에 커플링된 다수의 게이트 트랜지스터 - 각 게이트 트랜지스터는 상기 클록, 어드레스 및 데이터 입력 중의 하나에 커플링됨 - 에 제공하는 단계를 포함하는
    전력 소모 제어 방법.
  18. 제 15 항에 있어서,
    상기 제 1 뱅크가 사용되지 않는 것을 동적으로 결정하는 단계와,
    그에 응답하여 상기 제 1 인에이블 신호를 생성하는 단계를 더 포함하는
    전력 소모 제어 방법.
  19. 제 18 항에 있어서,
    상기 제 1 레지스터 뱅크가 사용되지 않는 것을 동적으로 결정하는 단계는 상기 레지스터 파일에 제공된 상기 어드레스 입력에 의해 명시된 적어도 하나의 어드레스를 디코딩하는 단계를 포함하는
    전력 소모 제어 방법.
  20. 제 15 항에 있어서,
    저장된 전력 모드 상태 정보에 응답하여 상기 제 1 및 제 2 인에이블 신호를 생성하는 단계를 더 포함하는
    전력 소모 제어 방법.
  21. 제 20 항에 있어서,
    상기 저장된 전력 모드 상태 정보는 지원 레지스터에 저장되며,
    상기 방법은 프로세서에 의해 실행되는 프로그램 코드에 상주하는 전력 제어 인스트럭션에 응답하여 상기 지원 레지스터를 업데이트하는 단계를 더 포함하는
    전력 소모 제어 방법.
KR1020057010024A 2002-12-04 2003-12-03 회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및신호 지속 매체 KR20050084121A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US43088302P 2002-12-04 2002-12-04
US60/430,883 2002-12-04

Publications (1)

Publication Number Publication Date
KR20050084121A true KR20050084121A (ko) 2005-08-26

Family

ID=32469553

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057010024A KR20050084121A (ko) 2002-12-04 2003-12-03 회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및신호 지속 매체

Country Status (7)

Country Link
US (1) US7539879B2 (ko)
EP (1) EP1570334A2 (ko)
JP (1) JP2006509290A (ko)
KR (1) KR20050084121A (ko)
CN (1) CN1720494A (ko)
AU (1) AU2003292451A1 (ko)
WO (1) WO2004051449A2 (ko)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003283680A1 (en) * 2002-12-04 2004-06-23 Koninklijke Philips Electronics N.V. Software-based control of microprocessor power dissipation
JP2004318502A (ja) * 2003-04-16 2004-11-11 Matsushita Electric Ind Co Ltd 電力制御機能を備えたマイクロプロセッサ及び命令変換装置
KR100636596B1 (ko) * 2004-11-25 2006-10-23 한국전자통신연구원 고에너지 효율 병렬 처리 데이터 패스 구조
US7647481B2 (en) * 2005-02-25 2010-01-12 Qualcomm Incorporated Reducing power by shutting down portions of a stacked register file
DE102005036267B4 (de) 2005-08-02 2007-06-21 Infineon Technologies Ag Speicheranordnung und Verfahren zum Adressieren einer Speicheranordnung
US20070214374A1 (en) * 2006-03-13 2007-09-13 Mark Hempstead Ultra low power system for sensor network applications
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US8775919B2 (en) * 2006-04-25 2014-07-08 Adobe Systems Incorporated Independent actionscript analytics tools and techniques
US20080072015A1 (en) * 2006-09-18 2008-03-20 Julier Michael A Demand-based processing resource allocation
CN100442201C (zh) * 2006-11-09 2008-12-10 威盛电子股份有限公司 电源管理方法及系统
CN107368285B (zh) * 2006-11-14 2020-10-09 英特尔公司 多线程架构
US20090031107A1 (en) * 2007-07-24 2009-01-29 Via Technologies On-chip memory providing for microcode patch overlay and constant update functions
US20090031090A1 (en) * 2007-07-24 2009-01-29 Via Technologies Apparatus and method for fast one-to-many microcode patch
US20090031110A1 (en) * 2007-07-24 2009-01-29 Via Technologies Microcode patch expansion mechanism
US20090031121A1 (en) * 2007-07-24 2009-01-29 Via Technologies Apparatus and method for real-time microcode patch
US20090031108A1 (en) * 2007-07-24 2009-01-29 Via Technologies Configurable fuse mechanism for implementing microcode patches
US20090031109A1 (en) * 2007-07-24 2009-01-29 Via Technologies Apparatus and method for fast microcode patch from memory
US20090031103A1 (en) * 2007-07-24 2009-01-29 Via Technologies Mechanism for implementing a microcode patch during fabrication
US8718129B2 (en) * 2007-10-03 2014-05-06 Apple Inc. Power saving decoder architecture
US8301928B2 (en) * 2008-01-18 2012-10-30 Texas Instruments Incorporated Automatic wakeup handling on access in shared memory controller
US8356202B2 (en) * 2008-03-28 2013-01-15 Intel Corporation System and method for reducing power consumption in a device using register files
US7509511B1 (en) 2008-05-06 2009-03-24 International Business Machines Corporation Reducing register file leakage current within a processor
CN101324837B (zh) * 2008-07-21 2010-06-23 北京大学 一种微处理器内部寄存器堆的设计和访问方法
US8200949B1 (en) 2008-12-09 2012-06-12 Nvidia Corporation Policy based allocation of register file cache to threads in multi-threaded processor
US8078844B1 (en) * 2008-12-09 2011-12-13 Nvidia Corporation System, method, and computer program product for removing a register of a processor from an active state
CN101788901B (zh) * 2009-01-24 2013-09-25 世意法(北京)半导体研发有限责任公司 使用影子寄存器的高效硬件实现的设备及其方法
US9367462B2 (en) * 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
US8365131B2 (en) * 2010-01-11 2013-01-29 Empire Technology Development Llc Hardware synthesis using thermally aware scheduling and binding
CN101968678A (zh) * 2010-08-10 2011-02-09 东莞环亚高科电子有限公司 一种嵌入式Linux设备低功耗电源管理设备
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
DE102010045800A1 (de) * 2010-09-20 2012-03-22 Texas Instruments Deutschland Gmbh Elektronische Vorrichtung und Verfahren zur Datenverarbeitung unter Verwendung einer Betriebsart mit virtuellem Register
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
US10534608B2 (en) 2011-08-17 2020-01-14 International Business Machines Corporation Local computation logic embedded in a register file to accelerate programs
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
KR101703400B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US10078518B2 (en) * 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
GB2539038B (en) 2015-06-05 2020-12-23 Advanced Risc Mach Ltd Processing pipeline with first and second processing modes having different performance or energy consumption characteristics
US10372500B1 (en) 2016-02-17 2019-08-06 Apple Inc. Register allocation system
US10277390B1 (en) * 2018-01-22 2019-04-30 Arm Limited Reduced-power detection of wireless packets using decimated preamble correlation
US11144367B2 (en) 2019-02-08 2021-10-12 International Business Machines Corporation Write power optimization for hardware employing pipe-based duplicate register files
CN110609601A (zh) * 2019-08-26 2019-12-24 西安理工大学 一种低功耗的处理器寄存器堆控制方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4758945A (en) * 1979-08-09 1988-07-19 Motorola, Inc. Method for reducing power consumed by a static microprocessor
JPS6151243A (ja) * 1984-08-20 1986-03-13 Toshiba Corp レジスタ式演算処理装置
JPS63178620A (ja) * 1987-01-19 1988-07-22 Nec Corp クロツクストロ−ブ回路
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US5834961A (en) * 1996-12-27 1998-11-10 Pacific Communication Sciences, Inc. Gated-clock registers for low-power circuitry
US6301671B1 (en) * 1998-03-23 2001-10-09 International Business Machines Corporation Apparatus and method for power reduction control in a video encoder device
US6345354B1 (en) * 1999-04-29 2002-02-05 Mips Technologies, Inc. Register file access
JP2000353092A (ja) * 1999-06-09 2000-12-19 Nec Corp 情報処理装置及びそのレジスタファイル切替方法
US6564331B1 (en) * 1999-09-24 2003-05-13 Intel Corporation Low power register file
US6609209B1 (en) * 1999-12-29 2003-08-19 Intel Corporation Method and apparatus for reducing the power consumed by a processor by gating the clock signal to pipeline stages
US7206925B1 (en) * 2000-08-18 2007-04-17 Sun Microsystems, Inc. Backing Register File for processors
US6718429B1 (en) * 2000-08-22 2004-04-06 Antevista Gmbh Configurable register file with multi-range shift register support
US7089436B2 (en) * 2001-02-05 2006-08-08 Morpho Technologies Power saving method and arrangement for a configurable processor array
US6636074B2 (en) * 2002-01-22 2003-10-21 Sun Microsystems, Inc. Clock gating to reduce power consumption of control and status registers

Also Published As

Publication number Publication date
WO2004051449A3 (en) 2004-12-16
US7539879B2 (en) 2009-05-26
CN1720494A (zh) 2006-01-11
JP2006509290A (ja) 2006-03-16
EP1570334A2 (en) 2005-09-07
US20060168463A1 (en) 2006-07-27
WO2004051449A2 (en) 2004-06-17
AU2003292451A1 (en) 2004-06-23

Similar Documents

Publication Publication Date Title
US7500126B2 (en) Arrangement and method for controlling power modes of hardware resources
US7539879B2 (en) Register file gating to reduce microprocessor power dissipation
Panda et al. Memory issues in embedded systems-on-chip: optimizations and exploration
US10901492B1 (en) Power reduction in processor pipeline by detecting zeros
KR102611813B1 (ko) 바이패스 최적화, 가변 그리드 아키텍처 및 융합된 벡터 동작들을 갖는 코프로세서들
Seki et al. A fine-grain dynamic sleep control scheme in MIPS R3000
US9164570B2 (en) Dynamic re-configuration for low power in a data processor
Tabkhi et al. Application-guided power gating reducing register file static power
US20020112193A1 (en) Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile
CN116420140A (zh) 可动态配置的过度供应的微处理器
US7536485B2 (en) Processor having inactive state of operation and method thereof
JP4800582B2 (ja) 演算処理装置
Goel et al. Power reduction in VLIW processor with compiler driven bypass network
Tabkhi et al. AFReP: application-guided function-level registerfile power-gating for embedded processors
JP5928272B2 (ja) 半導体集積回路及びコンパイラ
WO2003090055A1 (en) Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile
Multanen et al. Power optimizations for transport triggered SIMD processors
Saghir et al. Reducing Power of Memory Hierarchy in General Purpose Graphics Processing Units
Panda Power Optimisation Strategies Targeting the Memory Subsystem
Alalusi et al. Variable word width computation for low power
Wang Fine-Grained Width-Aware Dynamic Supply Gating for Active Power Reduction
Indira et al. High Performance 6-Stage MIPS RISC Pipelined Processor Architecture Design
Gu et al. Loop instruction caching for energy-efficient embedded multitasking processors
Ayala et al. Compiler-Driven Power Optimizations in the Register File of Processor-Based Systems
Hsiao et al. Latency-Tolerant Virtual Cluster Architecture for VLIW DSP

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