KR20050084121A - Register file gating to reduce microprocessor power dissipation - Google Patents

Register file gating to reduce microprocessor power dissipation 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
Korean (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 KR20050084121A publication Critical patent/KR20050084121A/en

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

A circuit arrangement and method of controlling power dissipation utilize a register file (60) with power dissipation control capabilities through a banked register design coupled with enable logic (62, 82) that is configured to selectively disable unused banks (70) of registers by selectively gating off clock (74), address (76) and data (78) inputs supplied thereto.

Description

회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및 신호 지속 매체{REGISTER FILE GATING TO REDUCE MICROPROCESSOR POWER DISSIPATION}Circuit device, power consumption control method, program storage medium and signal persistence medium {REGISTER FILE GATING TO REDUCE MICROPROCESSOR POWER DISSIPATION}

본 발명은, 일반적으로는, 예를 들어 저전력 및 그 밖의 전력 감지 애플리케이션에서 사용되는 집적 회로의 전력 소모(power dissipation)를 제어하는 것에 관한 것이다.The present invention generally relates to controlling power dissipation of integrated circuits used in low power and other power sensing applications, for example.

흔히, 전력 소모는 많은 집적 회로(IC's) 또는 "칩"에 대해 주요한 디자인 제약 사항이다. 예를 들어, 집적 회로는 매우 다양한 휴대용 기구와, 이동 전화 및 다른 무선 통신 디바이스, 휴대용 컴퓨터, 휴대용 기기 및 게임 콘솔 등과 같은 다른 배터리 전력 공급형 애플리케이션에 점점 사용되고 있다. 또한, 배터리 수명이 중요하지 않을 수도 있는 비휴대용 애플리케이션에서조차도, 집적 회로는 쉽게 과열되어, 고가의 및/또는 대형 냉각 소자가 필요하게 되거나 감소된 IC 신뢰도가 필요하게 될 수 있다. IC에 의해 소모된 전력량은 배터리 수명 및 전자 디바이스의 발열에 중요한 역할을 한다.Often, power consumption is a major design constraint for many integrated circuits (IC's) or "chips." For example, integrated circuits are increasingly being used in a wide variety of portable devices and other battery powered applications such as mobile phones and other wireless communication devices, portable computers, portable devices and game consoles. In addition, even in non-portable applications where battery life may not be critical, integrated circuits can easily overheat, requiring expensive and / or large cooling elements or requiring reduced IC reliability. The amount of power consumed by the IC plays an important role in battery life and heat generation of the electronic device.

또한, IC가 더 복잡해지고 더 빠른 클록 속도와 더 많은 트랜지스터를 내장함에 따라, 이들 IC에 의해 소모되는 전력량은 그에 비례하여 증가한다. 이와 같이, 상당한 개발 노력은 IC 전력 소모를 감소시키는 것에 관한 것이다.In addition, as ICs become more complex and incorporate faster clock speeds and more transistors, the amount of power consumed by these ICs increases proportionally. As such, significant development efforts are directed to reducing IC power consumption.

예를 들어, 일부 노력은, IC에 있는 개별 트랜지스터의 전력 소모를, 예를 들어 트랜지스터의 레이아웃 개량 및/또는 공급 전압 감소를 통해, 감소시키는 것에 관한 것이었다. 어느 정도까지, 공급 전압 레벨에서의 트랜지스터 디자인 및 축소에 대한 개량은, 더욱 복잡하고 더 높은 성능의 IC 사용으로부터 초래되었던 전력 소모의 증가량의 일부를 오프셋하고 있다. 그렇지만, 많은 전력 감지 애플리케이션을 위해 추가 감소가 요구되고 있다.For example, some efforts have been directed to reducing the power consumption of individual transistors in an IC, for example, through improved layout of the transistors and / or reduced supply voltages. To some extent, improvements in transistor design and shrinkage at the supply voltage level offset some of the increase in power consumption resulting from the use of more complex and higher performance ICs. However, further reductions are required for many power sensing applications.

예를 들어, 이동 애플리케이션에서 사용되는 마이크로프로세서와 같은 일부 IC는 전압 및/또는 주파수 스케일링(scaling)을 이용하여, 공급 전압 및/또는 클록 주파수를 감소시키고 그 결과 전체적인 전력 소모를 감소시킨다. 그러나, 이러한 감소는 전형적으로 IC 범위 전체에 걸쳐 적용되며, 프로세싱 성능의 감소에 대응하여 수반된다.For example, some ICs, such as microprocessors used in mobile applications, utilize voltage and / or frequency scaling to reduce the supply voltage and / or clock frequency and consequently reduce overall power consumption. However, this reduction is typically applied throughout the IC range and is accompanied by a reduction in processing performance.

다른 디자인들은 특정 커맨드나 인스트럭션 또는 외부 인터럽트와 같은 이벤트에 응답하여 IC를 저전력 상태에 있게 하는 수면 모드(sleep mode)를 통합하고 있을 수도 있다. 예를 들어, 일부 마이크로프로세서는 전체 마이크로프로세서를 저전력 수면 모드에 있게 하는 WAIT 또는 HALT 인스트럭션을 지원한다. 그러나, 이러한 모드에 있을 때, 마이크로프로세서에서의 모든 효과적인 프로세싱 작용은 전형적으로 마이크로프로세서가 인터럽트 또는 다른 트리거(triggering) 이벤트에 의해 다시 각성될 때까지 정지된다.Other designs may incorporate a sleep mode that puts the IC in a low power state in response to events such as specific commands or instructions or external interrupts. For example, some microprocessors support WAIT or HALT instructions that put the entire microprocessor in low power sleep mode. However, when in this mode, all effective processing operations at the microprocessor are typically stopped until the microprocessor is reawakened by an interrupt or other triggering event.

또 다른 디자인에서, IC는 전반적인 전력 소모를 감소시키는 데 사용되지 않을 때 선택적으로 인에이블될 수 있는 상이한 회로를 구비할 수 있다. 전형적으로, 이러한 회로들은, 특히 일부 형태의 프로세서 또는 프로세싱 코어를 내장하는 IC에 대해, 컴퓨터 프로그램의 실행과 관련하여 조우(encounter)하게 되는 특정 인스트럭션의 실시에 대한 응답으로 선택적으로 인에이블되거나 또는 디스에이블된다.In another design, the IC can have different circuits that can be selectively enabled when not used to reduce overall power consumption. Typically, such circuits are selectively enabled or disabled in response to the implementation of certain instructions that are encountered in connection with the execution of a computer program, especially for ICs that incorporate some form of processor or processing core. Is enabled.

예를 들어, 일부 저전력 마이크로프로세서 디자인은 개별 기능의 유닛들이 특정 "전력 저하(power down)" 인스트럭션을 그들 기능 유닛에 라우팅함으로써 선택적으로 디스에이블되는 것을 허용한다. 전력 저하 인스트럭션은 컴퓨터 프로그램의 편집(compilation) 중에 컴파일러(compiler)에 의해 삽입되어, 인스트럭션이 마이크로프로세서에 의한 컴퓨터 프로그램의 실행 중에 개별 기능 유닛에 의해 처리되게 할 것이다. 그러나, 이러한 접근법의 한 가지 단점은, 개별 인스트럭션을 특정 기능 유닛에 전송하는 것이 그러한 기능 유닛의 처리 리소스를 점유하고, 그에 따라 다른 풍부한 계산을 요구하는 작동을 다루기 위해 그러한 기능 유닛의 효용성(availability), 프로세서 파이프라인 잔여물의 효용성을 감소시킨다는 것이다.For example, some low power microprocessor designs allow individual functional units to be selectively disabled by routing certain "power down" instructions to their functional units. The power reduction instructions will be inserted by the compiler during compilation of the computer program, causing the instructions to be processed by individual functional units during execution of the computer program by the microprocessor. However, one disadvantage of this approach is that the ability to send individual instructions to a particular functional unit occupies the processing resources of that functional unit, thus dealing with operations that require other rich calculations. This reduces the effectiveness of processor pipeline residues.

전술한 전력 저하 인스트럭션에는, 마이크로프로세서에 의해 처리된 각 인스트럭션과 관련되고, 마이크로프로세서의 각 기능 유닛의 인에이블 상태를 동적으로 제어하는 제어 비트의 사용이 관련된다. 그러나, 이러한 유형의 디자인에는, 각 인스트럭션의 일정한 인스트럭션 디코딩이 필요한데, 이는 개별적인 기능 유닛을 선택적으로 디스에이블함으로써 얻어지는 일부 전력 소모 감소 중의 일부를 오프셋시킬 수 있다. 또한, 특정 제어 비트 세트에 응답하여 특정 기능 유닛을 디스에이블하거나 또는 인에이블하는 데 필요한 시간은 마이크로프로세서의 적합한 작동 주파수를 제한할 수도 있으며, 이에 따라 마이크로프로세서의 전체적인 성능을 제한할 수 있다. 더욱이, 각 인스트럭션으로의 제어 비트 추가는 코드의 크기를 증가시키게 되어, 저장 요건을 증가시키거나 또는 지원될 수도 있는 상이한 인스트럭션의 개수를 감소시킨다.The aforementioned power reduction instructions are associated with each instruction processed by the microprocessor and the use of control bits to dynamically control the enable state of each functional unit of the microprocessor. However, this type of design requires constant instruction decoding of each instruction, which may offset some of the reduction in some power consumption obtained by selectively disabling the individual functional units. In addition, the time required to disable or enable a particular functional unit in response to a particular set of control bits may limit the appropriate operating frequency of the microprocessor, thereby limiting the overall performance of the microprocessor. Moreover, adding control bits to each instruction increases the size of the code, increasing storage requirements or reducing the number of different instructions that may be supported.

전술한 인스트럭션 기반 제어 방식에 대한 다른 단점은 그 방식들이 흔히 마이크로프로세서의 기능 유닛을 제어하는 것으로 제한된다는 것이다. 기능 유닛, 예를 들어, 실행 유닛, 산술 로직 유닛, 부동소수점(floating point) 유닛, 고정소수점(fixed point) 유닛 등이 마이크로프로세서에서의 전체적인 전력 소모에 상당한 비중을 차지하지만, 대부분의 디자인은, 전력 소모에도 이바지하지만 전술한 제어 방식에 의해 어드레스되지 않는 상당한 양의 추가 회로, 예를 들어, 캐시(caches), 레지스터 파일 등을 내장한다.Another disadvantage of the above instruction-based control schemes is that they are often limited to controlling the functional units of the microprocessor. Although functional units such as execution units, arithmetic logic units, floating point units, fixed point units, etc., make up a significant portion of the overall power consumption in the microprocessor, most designs It also contributes to power consumption but incorporates a significant amount of additional circuitry, such as caches, register files, and the like, which are not addressed by the control scheme described above.

또 다른 디자인은 마이크로프로세서의 상이한 전력 동작을 지원하는 다수의 인스트럭션 세트를 포함할 수도 있다. 전형적으로, 이러한 디자인에서, 하나의 인스트럭션 세트는 마이크로프로세서를 충분히 이용할 수 있는 반면, 다른 인스트럭션 세트는 마이크로프로세서의 일부만을 사용하여 전력 소모를 감소시킬 수도 있다. 그러나, 이 접근법의 한 가지 단점은 제한된 수의 프로세서 활용 모드만이, 예를 들어, 완전히 지원되며 규제된다는 점이다. 또한, 코드의 복잡성, 및 그로 인한 프로세서에서의 디코딩 로직의 복잡성이 증가하여, 그 자체가 전력 소모를 증가시킬 수 있다.Another design may include multiple instruction sets that support different power operations of the microprocessor. Typically, in such a design, one instruction set can fully utilize a microprocessor, while another instruction set may use only a portion of the microprocessor to reduce power consumption. However, one disadvantage of this approach is that only a limited number of processor utilization modes are fully supported and regulated, for example. In addition, the complexity of the code, and consequently the complexity of the decoding logic in the processor, can itself increase power consumption.

관련 개발 분야에 있어서, 다수 버전의 프로그램은 상이한 전력 소모 능력을 지원하는 데 이용될 수도 있다. 그러나, 다수 버전의 프로그램을 저장하는 것은 현재 전력 요건에 따라 실행을 위한 코드 버전을 선택하는 실행시간 스케줄러(runtime scheduler)의 사용을 요구하고, 다수의 코드 버전을 저장하는 것은 더 많은 프로그램 메모리 및 스케줄러의 실행을 요구하여 전력 소모를 더욱 증가시킬 수 있다.In related development fields, multiple versions of programs may be used to support different power consumption capabilities. However, storing multiple versions of a program requires the use of a runtime scheduler to select code versions for execution according to current power requirements, and storing multiple code versions results in more program memory and scheduler. It is possible to further increase power consumption by requiring the execution of.

IC의 개별 회로를 선택적으로 인에이블하는 것과 관련하여, 이들 회로를 디스에이블하고 그에 따라 그 전력 소모를 최소화하는 다양한 방식들이 사용될 수도 있다. 예를 들어, 클록 게이팅(gating)은 흔히 회로에 대한 클로킹(clocking)을 디스에이블하는 데 사용되어, 회로의 트랜지스터의 스위칭, 실제로는 흔히 회로에서 최대량의 전력 소모를 설명하는 트랜지스터에서의 상태의 스위칭을 효율적으로 제한한다.In connection with selectively enabling individual circuits of the IC, various ways of disabling these circuits and thus minimizing their power consumption may be used. For example, clock gating is often used to disable clocking for a circuit, such that switching of the transistors in the circuit, in fact switching of states in the transistor, often often accounts for the maximum amount of power consumption in the circuit. Effectively restricts

마이크로프로세서의 기능 유닛에 대해, 회로를 디스에이블하는 대안적인 방법은 회로로의 전력 공급을 차단(shutdown)하는 것이다. 다른 대안적인 방법은 회로에 대한 입력 신호를 비활성화시키는 것이다.For the functional unit of the microprocessor, an alternative way to disable the circuit is to shut down the power supply to the circuit. Another alternative is to deactivate the input signal to the circuit.

또한, 다이내믹 랜덤 액세스 메모리(DRAM) 디바이스에서 사용되는 메모리 어레이와 같은 다른 회로에 대해, 클록 신호 및 감지 증폭기가 선택적으로 게이트 오프되어 어레이에 있는 메모리 셀의 뱅크를 디스에이블시키고, 그에 따라 전체 어레이에서의 전력 소모를 감소시킨다.In addition, for other circuits, such as memory arrays used in dynamic random access memory (DRAM) devices, the clock signal and sense amplifiers are selectively gated off to disable banks of memory cells in the array and thus in the entire array. Reduces power consumption.

마이크로프로세서 등과 같은 IC에서의 전력 소모를 제어함과 관련하여 만들어진 상당한 이득에도 불구하고, 본 분야에서의 계속적인 추가 개발이 필요하다.Despite the significant gains made in controlling power consumption in ICs such as microprocessors, further development in the field is needed.

예를 들어, 선택적 회로 디스에이블링 영역에서, 개선을 위한 하나의 포텐셜 영역이 IC의 프로세서 또는 프로세싱 코어(processing core)에 의해 활용되는 레지스터와 관련된 전력 소모의 제어 상태에 있다. 레지스터는 흔히 레지스터 파일로 구성되며, CMOS 래치 또는 플립-플롭을 이용하여 구현되어 비교적 큰 전력 소모 특성을 갖는다. 그러나, 많은 프로그램 실행 동안의 레지스터 활용도는 비교적 낮아서, IC에서 전력을 소모할 필요없이 레지스터 파일에 있는 많은 레지스터가 사용되지 않게 된다. 일부 환경에서는 소정의 레지스터를 디스에이블하는 것이 바람직할 수도 있으나, 메모리 셀을 디스에이블하는 통상적인 방식, 예를 들어, DRAM 등과 접속되어 사용되는 통상적인 방식은 전형적으로 감지 증폭기의 클록 게이팅 및/또는 디스에이블링을 이용하여 메모리 셀 또는 메모리 셀의 뱅크를 디스에이블한다. 이러한 기술이 레지스터 파일에 있는 레지스터를 디스에이블하는 데 사용될 수 있으나, 이러한 기술에 의해 전력 소모가 감소되는 정도는 제한된다.For example, in the selective circuit disabling area, one potential area for improvement is in the control state of power consumption associated with the registers utilized by the processor or processing core of the IC. Registers are often composed of register files and are implemented using CMOS latches or flip-flops, resulting in relatively high power consumption. However, register utilization during many program executions is relatively low, so that many registers in the register file are not used without having to consume power at the IC. In some circumstances it may be desirable to disable certain registers, but conventional ways of disabling memory cells, such as those used in connection with DRAMs, are typically clock gating and / or sensing amplifiers. Disabling is used to disable the memory cell or bank of memory cells. This technique can be used to disable registers in a register file, but the extent to which power consumption is reduced by such techniques is limited.

본 발명을 특징화하는 이들 및 그 밖의 이점 및 특징은 본 명세서에 첨부되며 그 추가 부분을 형성하는 청구범위에서 설명된다. 그러나, 본 발명의 더 양호한 이해와, 그 사용을 통해 얻어진 이점 및 목적의 더 양호한 이해를 위해, 도면 및 본 발명의 예시적인 실시예가 설명되어 있는 첨부한 설명서를 참조해야 한다.These and other advantages and features that characterize the invention are described in the claims appended hereto and forming additional parts thereof. However, for a better understanding of the invention and for a better understanding of the advantages and objects obtained through its use, reference should be made to the accompanying drawings, in which the drawings and exemplary embodiments of the invention are described.

도 1은 본 발명에 부합되는 동적 전력 소모 제어 회로를 포함하는 미디어 프로세서의 블록도,1 is a block diagram of a media processor including a dynamic power consumption control circuit in accordance with the present invention;

도 2는 도 1에서 참조되며, 본 발명에 부합되는 동적 전력 분배 제어 회로를 포함하는 중앙 프로세싱 유닛의 블록도,2 is a block diagram of a central processing unit, referenced in FIG. 1, comprising a dynamic power distribution control circuit in accordance with the present invention;

도 3은 도 2에서 참조되고, 레지스터의 뱅크를 선택적으로 디스에이블하는 인에이블 로직을 포함하는 블록도,3 is a block diagram referenced in FIG. 2 and including enable logic to selectively disable a bank of registers;

도 4는 도 1의 미디어 프로세서에서의 전력 소모를 제어하는 데 적합한 전력 제어 인스트럭션에 대한 예시적인 인스트럭션 포맷의 블록도,4 is a block diagram of an exemplary instruction format for a power control instruction suitable for controlling power consumption in the media processor of FIG. 1;

도 5는 본 발명에 부합되는 전력 소모 최적화 루틴의 프로그램 흐름을 예시한 순서도,5 is a flow chart illustrating a program flow of a power consumption optimization routine consistent with the present invention;

도 6은 도 1의 미디어 프로세서에 의한 예시적인 프로그램 처리를 예시한 블록도,6 is a block diagram illustrating exemplary program processing by the media processor of FIG. 1;

도 7은 레지스터 파일의 전력 분배를 도 2에 도시한 것으로 제어하는 대안 방식의 블록도이다.7 is a block diagram of an alternative manner of controlling the power distribution of a register file as shown in FIG.

본 발명은, 제공된 클록, 어드레스 및 데이터 입력을 선택적으로 게이트 오프하여 레지스터의 사용되지 않는 뱅크를 선택적으로 디스에이블하도록 구성된 인에이블 로직에 커플링된 뱅크 디자인을 통해, 레지스터 파일에 전력 소모 제어 능력이 제공되는 전력 소모를 제어하는 회로 장치 및 방법을 제공함으로써, 종래기술과 관련된 문제점 및 다른 문제점을 설명한다. 구체적으로, 레지스터 파일의 레지스터는 다수의 뱅크로 분할되는데, 각 뱅크는 그러한 각 뱅크에 대한 다양한 클록, 어드레스 및 데이터 입력을 선택적으로 게이트 오프하는 인에이블 로직에 의해 선택적으로 디스에이블될 수 있다.The present invention provides a power consumption control capability in a register file through a bank design coupled to enable logic configured to selectively gate off provided clock, address and data inputs to selectively disable unused banks of registers. By providing a circuit arrangement and method for controlling the power consumption provided, the problems associated with the prior art and other problems are described. Specifically, registers in a register file are divided into a number of banks, each of which can be selectively disabled by enable logic to selectively gate off various clock, address, and data inputs for each such bank.

레지스터 파일에 제공된 레지스터의 다양한 뱅크에 제공되는 클록 입력 외에도 어드레스 및 데이터 입력을 게이트 오프함으로써, 전력 소모에서 클록 입력만을 게이트 오프하는 것 이상으로 더 큰 감소가 얻어진다. 또한, 레지스터 파일이 비교적 높은 배선 커패시턴스를 특징으로 하는 CMOS 래치 또는 플립-플롭으로부터 제작된 레지스터를 이용하여 구현될 때, 전력 소모의 감소는 더욱 확언(pronounce)되는데, 이는 전형적으로 게이팅이 레지스터 파일 뱅크 내부의 긴 배선에 대한 스위칭 작용을 억제하기 때문이다.By gateping off the address and data inputs in addition to the clock inputs provided to the various banks of registers provided in the register file, a greater reduction is achieved in power consumption than to gate off only the clock inputs. Also, when the register file is implemented using a resistor fabricated from a CMOS latch or flip-flop that features relatively high wiring capacitance, the reduction in power consumption is more pronounced, which is typically due to gating being a register file bank. This is because the switching action on the internal long wiring is suppressed.

본 발명에 부합되는 동적 전력 소모 제어는 통상적인 전력 소모 제어 기술 이상의 상당한 이점을 제공하는 두 가지 개념 중의 어느 하나 또는 두 개념 모두를 포함할 수도 있다. 제 1 개념은 프로세서 또는 프로세싱 코어에 의해 활용되는 레지스터 파일 전체에 대해 전력 소모 제어를 구현하는 데에 유일하게 적용된다. 본 발명에 부합하여, 레지스터 파일은 레지스터의 다수의 뱅크로 분할되는데, 레지스터의 각 뱅크는 클록, 데이터 및 어드레스 입력 라인을 포함한다. 인에이블 로직은 그러한 레지스터 파일에 연결되어, 레지스터 파일에 있는 레지스터의 임의의 사용되지 않는 뱅크에 대한 클록, 데이터 및 어드레스 입력 라인을 선택적으로 게이트 오프하거나 디스에이블한다.Dynamic power consumption control consistent with the present invention may include either or both of the two concepts that provide significant advantages over conventional power consumption control techniques. The first concept is uniquely applicable to implementing power consumption control over the entire register file utilized by the processor or processing core. In accordance with the present invention, a register file is divided into a number of banks of registers, each bank of registers comprising a clock, data, and address input line. The enable logic is coupled to such a register file to selectively gate off or disable the clock, data, and address input lines for any unused bank of registers in the register file.

제 2 개념은 소프트웨어 인스트럭션을 처리하는 프로세서 또는 기타의 프로그램 가능 회로를 포함하는 집적 회로에서 전력 소모를 제어하는 소프트웨어 기반 방식에 더 일반적으로 적합하다. 특히, 프로세서에 의해 실행되는 프로그램 코드에 내장된 전력 제어 인스트럭션은 두 개 이상의 전력 모드로 선택적으로 구성 가능한 다수의 하드웨어 리소스의 전력 모드를 제어하는 데 사용되는데, 하드웨어 리소스에 대한 각 모드는 그 하드웨어 리소스에 대한 특정 전력 소비 상태를 갖는다.The second concept is more generally suitable for a software based approach to controlling power consumption in integrated circuits, including processors or other programmable circuits that process software instructions. In particular, power control instructions embedded in program code executed by a processor are used to control the power mode of a number of hardware resources that are selectively configurable into two or more power modes, each of which is a hardware resource. Has a specific power consumption state for.

각 전력 제어 인스트럭션은 다수의 하드웨어 리소스의 전력 모드를 설정할 수 있는 피연산자(operand)에 배치된 전력 제어 정보를 포함한다. 또한, 일단 전력 모드가 특정 전력 제어 인스트럭션에 의해 설정되면, 설정된 전력 모드는, 예를 들어, 전력 모드가 다른 전력 제어 인스트럭션 또는 특수 이벤트(예를 들어, 외부 인터럽트)에 의해 재설정될 때까지, 후속 인스트럭션의 처리 동안 프로세서에 의해 사용된다. Each power control instruction includes power control information disposed in an operand that can set the power mode of a plurality of hardware resources. In addition, once a power mode is set by a particular power control instruction, the set power mode is followed by, for example, until the power mode is reset by another power control instruction or a special event (eg, an external interrupt). Used by the processor during the processing of an instruction.

이들 개념 각각은 레지스터 파일의 소프트웨어 기반 전력 소모 제어를 이용하는 프로세서 집적 회로의 예시적인 실시예에 대한 설명과 관련하여 더욱 상세히 설명될 것이다. 그러나, 이 특정 실시예를 설명하기 전에, 예시적인 하드웨어 및 소프트웨어 환경이 이하에서 더욱 상세히 설명된다.Each of these concepts will be described in greater detail in connection with the description of an exemplary embodiment of a processor integrated circuit using software based power consumption control of a register file. However, before describing this particular embodiment, exemplary hardware and software environments are described in greater detail below.

도면을 참조하면, 동일한 번호가 여러 도면 전체에서 비슷한 부분을 나타내고 있으며, 도 1은 본 발명에 부합되는 동적 전력 소모 제어를 구현하는 미디어 프로세서(12)를 포함하는 데이터 프로세싱 시스템(10)에 대한 예시적인 하드웨어 및 소프트웨어 환경을 예시한다. 미디어 프로세서(12)는, 예를 들어 필립스 세미컨덕터로부터 입수할 수 있는 PNX1300 시리즈 3중미디어-호환가능(TriMedia-compatible) 미디어 프로세서, 또는 대안으로 Equator Map1000, TI TMS320C6xxx, BOPS ManArray 등과 같은 다른 미디어 프로세서 아키텍처로써 구현될 수도 있다. 미디어 프로세서(12)는 내부 버스(16)를 거쳐 동일한 집적 회로 디바이스에 내장된 다수의 추가 회로 소자에 커플링된 중앙 프로세싱 유닛(CPU) 또는 프로세싱 코어(14)를 포함하는 시스템-온-칩(system-on-chip: SOC) 집적 회로 디바이스이다.Referring to the drawings, like numerals indicate similar parts throughout the several views, and FIG. 1 illustrates an example of a data processing system 10 including a media processor 12 that implements dynamic power consumption control consistent with the present invention. Illustrates a typical hardware and software environment. The media processor 12 may be, for example, a PNX1300 series trimedia-compatible media processor available from Philips Semiconductors, or alternatively another media processor such as Equator Map1000, TI TMS320C6xxx, BOPS ManArray, etc. It may be implemented as an architecture. The media processor 12 includes a system-on-chip comprising a central processing unit (CPU) or processing core 14 coupled via an internal bus 16 to a number of additional circuit elements embedded in the same integrated circuit device. system-on-chip (SOC) integrated circuit devices.

예를 들어, CPU(14)는, 예를 들어 32-비트 어드레스 공간을 포함하는 VLIW 프로세서 코어 및 128개의 32-비트 범용 레지스터를 포함하는 레지스터 파일로써 구현될 수도 있다. 프로세서 코어는 16-KB 데이터 및 32-KB 인스트럭션 캐시 뿐 아니라 5개의 발생 슬롯(issue slot)을 거쳐 액세스 가능한 27개의 기능 유닛을 포함하며, 데이터 캐시는 이중-단자화(dual-ported)되어 있고, 양 캐시는 64-바이트 블록 크기와 결합하기 쉬운 8-방향 세트이다.For example, the CPU 14 may be implemented as a register file comprising, for example, a VLIW processor core comprising a 32-bit address space and 128 32-bit general purpose registers. The processor core includes 27 functional units accessible via five issue slots as well as 16-KB data and 32-KB instruction caches, the data cache being dual-ported, Both caches are eight-way sets that are easy to combine with 64-byte block sizes.

프로세서(12)의 작업 메모리는 주메모리 입력/출력 인터페이스 블록(20)을 거쳐 액세스되는 외부 메모리(18)(예를 들어, SDRAM 메모리)에 의해 제공되는 반면, 주변 버스(22)(예를 들어, PCI 버스)에서 외부 주변 소자들과의 연결성은 외부 버스 인터페이스 블록(24)에 의해 용이하게 된다.The working memory of processor 12 is provided by external memory 18 (e.g., SDRAM memory) accessed via main memory input / output interface block 20, while peripheral bus 22 (e.g. Connectivity to external peripherals in a PCI bus is facilitated by an external bus interface block 24.

다양한 미디어-프로세싱 기능을 지원하기 위해, 미디어 프로세서(12)는 비디오 인/아웃 블록(26, 28), 오디오 인/아웃 블록(30, 32), SPDIF 출력 블록(34), I2C 인터페이스 블록(36), 동기식 직렬 인터페이스 블록(38), 이미지 보조프로세서 블록(40), DVD 디스크램블러(DVDD) 블록(42), 가변 길이 디코딩(VLD) 보조프로세서 블록(44), 및 타이머 블록(46)을 포함하는 다양한 특화된 미디어 프로세싱 회로를 포함한다.To support various media-processing functions, the media processor 12 may include video in / out blocks 26 and 28, audio in / out blocks 30 and 32, SPDIF output block 34, and I2C interface block 36. ), A synchronous serial interface block 38, an image coprocessor block 40, a DVD descrambler (DVDD) block 42, a variable length decoding (VLD) coprocessor block 44, and a timer block 46. Various specialized media processing circuits.

이제 도 2를 참조하면, CPU(14)가 더욱 상세히 예시되며, 내부 버스(16)를 인스트럭션 캐시(52) 및 데이터 캐시(54)에 연결하는 버스 인터페이스 유닛(BIU)(50)을 포함하는 것이 도시된다. 인스트럭션 캐시(52)로부터의 인스트럭션은 하나 이상의 디코더에 제공되는데, 디코더는 하나 이상의 기능 유닛(58), 예를 들어, 다양한 산술 로직 유닛, 부동 소수점 유닛, 하위워드(subword)-병렬 멀티미디어 작동 유닛, 로딩/저장 유닛, SIMD 멀티미디어 작동 유닛, 벡터 멀티미디어 작동 유닛, 승산기, 브랜치 유닛 등에 인스트럭션을 출력한다. 전술한 바와 같이, CPU(14)는 VLIW 인스트럭션을 지원하여, VLIW 인스트럭션으로 인코딩된 다중 연산을 다수의 기능 유닛에 동시에 라우팅하도록 VLIW 인스트럭션을 처리할 때 다수의 인스트럭션 슬롯(예를 들어, 5개)이 사용될 수도 있다.Referring now to FIG. 2, the CPU 14 is illustrated in more detail, including a bus interface unit (BIU) 50 connecting the internal bus 16 to the instruction cache 52 and the data cache 54. Shown. Instructions from the instruction cache 52 are provided to one or more decoders, which may include one or more functional units 58, such as various arithmetic logic units, floating point units, subword-parallel multimedia operating units, Instructions are output to the loading / storage unit, SIMD multimedia operating unit, vector multimedia operating unit, multiplier, branch unit and the like. As mentioned above, the CPU 14 supports VLIW instructions, so that multiple instruction slots (e.g., five) when processing a VLIW instruction to route multiple operations encoded with the VLIW instruction to multiple functional units simultaneously. May be used.

CPU(14)는 전형적으로 로딩/저장 아키텍처로 구현되어, 여기에서는 128개의 32-비트 범용 레지스터를 포함하고 있는 레지스터 파일(60)을 기능 유닛(58)이 액세스한다. 추가 지원 레지스터는 프로그램 제어 및 상태 워드(PCSW) 레지스터(61)로서, 예를 들어 부동 소수점 연산, 바이트 섹스(byte sex)(big/little endian; 빅/리틀 엔디안), 인터럽트 인에이블, 예외(exceptions) 등에 관해, CPU에 대한 다양한 구성 세팅을 설정하는 데 사용된다. 본 발명에 부합되는 동적 전력 소모 제어를 제공하기 위해, CPU(14)는 또한 전력 제어 회로(62)를 포함하며, 이 회로 내에는 본 명세서에서 전력 모드 레지스터라고 지칭되는 지원 레지스터(64)가 예시되어 있고, 이 레지스터 내에는 미디어 프로세서에서의 전력 소모를 최소화하도록 선택적으로 디스에이블될 수 있는 미디어 프로세서(12)의 다양한 하드웨어 리소스에 대한 전력 모드 상태 정보가 저장된다. 일부 구현에 있어서, PCSW 또는 CPU의 다른 지원 레지스터에서의 전력 모드 상태 정보의 저장을 또한 지원하여, 전력 모드 상태 정보가 전력 소모 제어와 관련되지 않은 다른 상태 정보와 결합되게 하는 것이 바람직할 수도 있다.The CPU 14 is typically implemented with a load / store architecture, where the functional unit 58 accesses a register file 60 containing 128 32-bit general purpose registers. Additional support registers are program control and status word (PCSW) registers 61, for example floating point operations, byte sex (big / little endian), interrupt enable, exceptions. Are used to set various configuration settings for the CPU. In order to provide dynamic power consumption control consistent with the present invention, the CPU 14 also includes a power control circuit 62 in which a support register 64, referred to herein as a power mode register, is illustrated. In this register, power mode state information is stored for various hardware resources of the media processor 12 that can be selectively disabled to minimize power consumption in the media processor. In some implementations, it may be desirable to also support the storage of power mode state information in the PCSW or other support registers of the CPU so that the power mode state information is combined with other state information not related to power consumption control.

전력 제어 회로(62)는 하나 이상의 인에이블 신호(66)를 CPU(14) 및/또는 미디어 프로세서(12)의 다양한 하드웨어 리소스에 내장된 인에이블 로직에 인가하여, CPU(14) 전체의 전력 소모, 선택적으로는 미디어 프로세서(12)의 다른 곳에서의 전력 소모를 제어한다. 이러한 경우, 하드웨어 리소스는 집적 회로에서의 전력 소모를 감소시킬 목적으로 디스에이블하는 데 유용하고 및/또는 바람직할 수 있는 집적 회로의 임의의 전자 회로를 실질적으로 나타낼 수도 있다. CPU(14)에서, 예를 들어, BIU(50), 캐시(52, 54), 인스트럭션 디코더(56), 기능 유닛(58) 및 레지스터 파일(60)은, 모두 각각의 블록 상의 인에이블 로직(참조부호 "E"로 지정함)의 존재로 인해, 선택적으로 디스에이블될 수 있는 하드웨어 리소스로서 예시된다.The power control circuit 62 applies one or more enable signals 66 to enable logic embedded in the various hardware resources of the CPU 14 and / or the media processor 12 to power consumption of the entire CPU 14. Optionally, control power consumption elsewhere in the media processor 12. In such a case, the hardware resource may substantially represent any electronic circuit of the integrated circuit that may be useful and / or desirable to disable for the purpose of reducing power consumption in the integrated circuit. In the CPU 14, for example, the BIU 50, the caches 52, 54, the instruction decoder 56, the functional unit 58, and the register file 60 are all enabled logic on each block. Due to the presence of reference numeral "E", it is illustrated as a hardware resource that can be selectively disabled.

예시된 실시예에서, 전력 제어 회로(62)는 전력 모드 레지스터(64)에 저장된 전력 모드 상태 정보에 대한 응답으로 인에이블 신호(66)를 선택적으로 인가한다. 이 상태 정보는 CPU(14)에 의해 실행되는 프로그램 내에 포함된 전력 제어 인스트럭션에 대한 응답으로 레지스터(64)에 저장된다. 이들 전력 제어 인스트럭션은, 다른 통상적인 레지스터가 본 분야에서 보편적으로 사용되는 인스트럭션을 저장하는 방식과 상당히 동일한 방식으로, 전형적으로는 인스트럭션 디코더(56)에 의해 디코딩되며, 전력 모드 레지스터(64)를 업데이트하는 데 사용된다.In the illustrated embodiment, the power control circuit 62 selectively applies the enable signal 66 in response to the power mode state information stored in the power mode register 64. This state information is stored in the register 64 in response to power control instructions contained within the program executed by the CPU 14. These power control instructions are typically decoded by the instruction decoder 56 and update the power mode register 64 in much the same way that other conventional registers store instructions commonly used in the art. Used to.

인에이블 신호(66)가 전체 블록 또는 하드웨어 리소스를 완전히 인에이블/디스에이블하는 데 사용되거나, 또는 그러한 블록/리소스의 일부만을 인에이블/디스에이블하고 및/또는 그러한 블록/리소스 모두 또는 일부만에 대한 다수의 유효 전력 소비 상태 중에서부터 선택하는 데 사용될 수도 있음이 인지될 것이다. 예를 들어, 하드웨어 리소스는 2개 이상의 전력 모드, 예를 들어 수면 모드(sleep mode) 또는 완전 오프 모드(fully off mode), 두 개 이상의 저전력 또는 에너지 절약 모드, 및 최대 출력 모드(full power mode)를 지원할 수도 있다. 단일 라인이 도 2에서 각 인에이블 신호(66)에 대해 예시되고 있으나, 다수의 신호 경로가 각 하드웨어 리소스의 일부를 각 입도(granularity)의 변화 정도에 따라 선택적으로 인에이블하는 데 사용될 수도 있음이 인지될 것이다. 또한, 임의의 알려진 에너지 절약 기술 또는 본 분야에 알려져 있는 전력 소모 감소 기술이 본 명세서에서 설명한 전력 제어 회로의 제어 하에서 선택적으로 인에이블될 수 있는 한, 하드웨어 리소스가 실제로 그러한 기술을 활용할 수도 있음이 인지될 것이다.Enable signal 66 is used to fully enable / disable an entire block or hardware resource, or enable / disable only a portion of such block / resource and / or for all or only part of such block / resource It will be appreciated that it may be used to select from among a number of active power consumption states. For example, a hardware resource may have two or more power modes, such as sleep mode or fully off mode, two or more low power or energy saving modes, and full power mode. It can also support. Although a single line is illustrated for each enable signal 66 in FIG. 2, it is noted that multiple signal paths may be used to selectively enable some of each hardware resource depending on the degree of change in each granularity. Will be recognized. In addition, it is recognized that hardware resources may actually utilize such technology as long as any known energy saving technology or power consumption reduction technology known in the art can be selectively enabled under the control of the power control circuit described herein. Will be.

이하에서 논의되는 실시예에서, 예를 들어, 레지스터 파일과 같은 하드웨어 리소스는, 개별적으로, 프로세서에 의해 실행되는 프로그램에서의 전력 제어 인스트럭션에 응답하여 선택적으로 디스에이블될 수 있는 다수의 레지스터 뱅크로 레지스터 파일을 편성하여 전력 소모를 감소시키도록 제어될 수도 있다. 이에 대해, 각 레지스터 뱅크는 그 자체가 별도의 하드웨어 리소스를 나타내는 것으로 간주될 수도 있다.In the embodiments discussed below, for example, hardware resources, such as register files, are individually registered into multiple register banks that can be selectively disabled in response to power control instructions in a program executed by a processor. It may be controlled to organize the file to reduce power consumption. In this regard, each register bank may itself be considered to represent a separate hardware resource.

예시된 실시예에서, 각 레지스터 뱅크는, 클록 신호 뿐 아니라 각 디스에이블 레지스터 뱅크에 대한 어드레스 및 데이터 입력 신호를 게이트 오프하는 인에이블 로직을 이용한다. 이하에서 더욱 자명한 바와 같이, 흔히, 게이트 오프 클록, 어드레스 및 데이터 입력 신호는 범용 레지스터와 관련하여 사용되는 CMOS 래치 또는 플립-플롭이 흔히 더 높은 와이어 커패시턴스가 되기 때문에 최상의 에너지 절약을 총괄적으로 제공한다. 그러나, 레지스터 파일을 디스에이블하는 다른 방식이 본 발명에 부합되는 일부 실시예에 사용될 수도 있다.In the illustrated embodiment, each register bank utilizes enable logic to gate off the address and data input signals for each disable register bank as well as the clock signal. As is more apparent below, gate off clock, address, and data input signals often provide the best energy savings collectively because CMOS latches or flip-flops used in conjunction with general purpose registers often result in higher wire capacitance. . However, other ways of disabling the register file may be used in some embodiments consistent with the present invention.

또한, 전력 제어 회로(62)가 CPU(14) 내에 단독으로 배치된 하드웨어 리소스를 제어하는 데 사용되는 것으로 예시되고 있으나, 전력 제어 회로는, 예를 들어, 동일한 집적 회로에 있는 어느 장소에나 배치된 리소스(예를 들어, 도 1에 예시된 기능 블록들 모두 또는 일부) 및 다른 집적 회로 상에 배치된 하드웨어 리소스를 포함하는 본 발명에 부합되는 다른 하드웨어 리소스를 제어하는 데 사용될 수도 있음이 인지될 것이다. 사실상, 본 발명에 부합되는 전력 제어 회로는, 예를 들어 레지스터 파일, 메모리, 캐시, 발생 슬롯, 버스, 기능 유닛, 기능 블록, IO 패드 또는 핀, 버퍼, 인스트럭션 재주문 로직, 내장형 필드 프로그램 가능 게이트 어레이(FPGA's), 보조프로세서, 또는 감소된 레벨의 전력 소모를 갖는 상태로 디스에이블 및/또는 그러한 상태로 설정될 수 있는 실질적으로 임의의 유형의 전자 회로를 포함하는 매우 다양한 하드웨어 리소스와 관련하여, 전력 소모를 제어하는 데 사용될 수도 있다. 또한, 전술한 회로들 중의 임의의 회로는, 예를 들어, 그러한 회로들 중의 개별적인 부분(예를 들어, 레지스터 파일의 개별 뱅크나 레지스터, 개별적인 캐시 세트, 버스의 개별적인 라인이나 라인 그룹 등)이 선택적으로 디스에이블될 수 있도록 별도로 제어될 수 있는 다수의 하드웨어 리소스를 내장하는 것으로 간주될 수도 있다.In addition, although the power control circuit 62 is illustrated as being used to control hardware resources disposed solely within the CPU 14, the power control circuitry may be located anywhere in the same integrated circuit, for example. It will be appreciated that it may be used to control other hardware resources consistent with the present invention, including resources (eg, all or some of the functional blocks illustrated in FIG. 1) and hardware resources disposed on other integrated circuits. . In fact, the power control circuitry in accordance with the present invention may include, for example, register files, memory, caches, slots of occurrence, buses, functional units, functional blocks, IO pads or pins, buffers, instruction reorder logic, embedded field programmable gate arrays. With respect to a wide variety of hardware resources, including (FPGA's), coprocessors, or substantially any type of electronic circuitry that can be disabled and / or set to such a state with reduced levels of power consumption. Can also be used to control consumption. In addition, any of the circuits described above may be selected, for example, by individual portions of such circuits (e.g., individual banks or registers of register files, individual cache sets, individual lines or groups of buses, etc.). It can also be considered to embed a number of hardware resources that can be controlled separately so that they can be disabled.

또한, 전력 제어 회로(62)가 CPU(14)에 배치되는 것으로 예시되고 있으나, 전력 제어 회로가 CPU 또는 다른 처리 코어로부터 기능적으로 별개일 수도 있음이 인지될 것이다. 일반적으로, 전력 소모 제어 기능이 집적 회로 상에 할당되는 특정 방식은 상이한 실시예에서 변할 수 있으며, 이와 같이, 본 발명은 본 명세서에서 논의된 특정 구현으로 한정되지 않는다.Further, while power control circuit 62 is illustrated as being disposed in CPU 14, it will be appreciated that power control circuitry may be functionally separate from the CPU or other processing cores. In general, the particular manner in which the power consumption control function is allocated on the integrated circuit may vary in different embodiments, and as such, the invention is not limited to the specific implementations discussed herein.

추가적인 사항으로서, 미디어 프로세서 내의 전력 제어 회로(62)의 구현이 예로써 본 명세서에 제공된다. 전력 소모 제어, 특히 이하에서 설명되는 바와 같은 전력 제어 인스트럭션의 사용은 본 발명에 부합되는 매우 다양한 대안 집적 회로에서 활용될 수도 있다. 전력 제어 인스트럭션은, 예를 들어, VLIW, EPIC, RISC, CISC, DSP, 슈퍼스칼라(superscalar) 등을 포함하는 다양한 프로세서 아키텍처와 관련하여 사용될 수도 있다. 또한, 본 발명은 SOC 아키텍처, 또는 프로세싱 코어가 다른 지원 회로와 통합되어 있는 다른 아키텍처 내에서 사용하는 것으로 제한되지 않는다.In addition, an implementation of the power control circuit 62 in the media processor is provided herein by way of example. Power consumption control, in particular the use of power control instructions as described below, may be utilized in a wide variety of alternative integrated circuits consistent with the present invention. Power control instructions may be used in connection with various processor architectures including, for example, VLIW, EPIC, RISC, CISC, DSP, superscalar, and the like. In addition, the present invention is not limited to use within an SOC architecture or other architecture in which the processing core is integrated with other support circuitry.

많은 경우, 전력 소모 감소와 관련된 상당한 이점은, 흔히 저이용성 병렬 하드웨어 리소스는 자주 프로그램 사용 요구에 따라 선택적으로 디스에이블될 수도 있다면, VLIW, EPIC, 슈퍼스칼라, 또는 프로그램 실행 동안 병렬 하드웨어 리소스가 항상 적게 이용될 수도 있는 다른 폭 넓은 발생 아키텍처와 관련하여 실현될 것이다. 그러나, 본 발명은 단지 폭 넓은 발생 아키텍처 등과 관련된 적응성(applicability)으로만 제한되지 않는다.In many cases, the significant benefit associated with reduced power consumption is that low-availability parallel hardware resources can often be selectively disabled depending on program usage needs, so that parallel hardware resources are always low during VLIW, EPIC, superscalar, or program execution. It will be realized in connection with other broad generation architectures that may be used. However, the present invention is not limited only to applicability related to a wide range of generation architectures and the like.

일반적으로, 본 명세서에서 설명한 임의의 하드웨어 기반 기능은 전형적으로는 하나 이상의 집적 회로 내에 내장된 회로 장치로 구현되며, 선택적으로는 추가의 지원 전자 소자를 포함하는 회로 장치로 구현된다는 것이 인지될 것이다. 또한, 본 분야에 잘 알려져 있는 바와 같이, 집적 회로는 전형적으로 본 명세서에서 하드웨어 지정 프로그램이라 지칭되는 하나 이상의 컴퓨터 데이터 파일을 이용하여 디자인 및 제작되는데, 지정 프로그램은 디바이스 상에 회로 장치의 레이아웃을 정의한다. 프로그램은 전형적으로 디자인 툴(tool)에 의해 생성되며, 제조 중에 순차적으로 사용되어 반도체 웨이퍼에 적용되는 회로 장치를 정의하는 레이아웃 마스크를 생성한다. 전형적으로, 프로그램은 VHDL, 베릴로그(verilog), EDIF 등과 같은 하드웨어 기술 언어(hardware definition language: HDL)를 이용하여 사전 정의된 포맷으로 제공된다. 본 발명이 전적으로 기능하는 집적 회로에 구현된 회로 장치 및 동일물을 이용하는 데이터 처리 시스템과 관계하여 설명될 것이나, 당업자라면 본 발명에 부합되는 회로 장치가 또한 다양한 형태의 프로그램 제품으로서 배포될 수 있으며 본 발명이 실질적으로 배포를 실행하는 데 사용되는 특정한 유형의 신호 지속 매체(signal bearing media)와는 상관없이 동일하게 적용된다는 것을 이해할 것이다. 신호 지속 매체의 예는 휘발성 및 비휘발성 메모리 디바이스, 플로피 및 다른 제거 가능 디스크, 하드디스크 드라이브, 자기 테이프, 광디스크(예를 들어, CD-ROMs, DVDs 등)와 같은 기록 가능 매체, 특히, 디지털 및 아날로그 통신 링크와 같은 전송 매체를 포함하고 있으나, 이러한 것으로 제한되는 것은 아니다. 본 발명에 부합되는 일부 실시예에서, 다른 집적 회로 기술, 예를 들어, FPGA 등은 또한 본 명세서에서 논의한 일부 하드웨어 기반 기능을 구현하는 데 사용될 수도 있다.In general, it will be appreciated that any hardware-based functionality described herein is typically implemented as a circuit device embedded within one or more integrated circuits, and optionally as a circuit device that includes additional support electronics. In addition, as is well known in the art, integrated circuits are typically designed and fabricated using one or more computer data files, referred to herein as hardware designated programs, which designate the layout of circuit devices on the device. do. The program is typically generated by a design tool, which is used sequentially during manufacturing to create a layout mask that defines the circuit arrangement applied to the semiconductor wafer. Typically, a program is provided in a predefined format using hardware definition language (HDL) such as VHDL, verilog, EDIF, and the like. Although the present invention will be described with reference to circuit devices implemented in fully functional integrated circuits and data processing systems using the same, those skilled in the art can also distribute circuit devices in accordance with the present invention as various types of program products and It will be understood that the invention applies substantially the same regardless of the particular type of signal bearing media used to implement the distribution. Examples of signal persistent media include recordable media such as volatile and nonvolatile memory devices, floppy and other removable disks, hard disk drives, magnetic tapes, optical disks (eg, CD-ROMs, DVDs, etc.), in particular digital and Transmission media such as, but not limited to, analog communication links. In some embodiments consistent with the present invention, other integrated circuit technologies, such as FPGAs, may also be used to implement some hardware-based functionality discussed herein.

전술한 바와 같이, 전력 제어 회로(62)는 CPU(14)에 의해 실행된 프로그램 내에 내장된 전력 제어 인스트럭션을 통해 제어될 수도 있다. 이들 전력 제어 인스트럭션은 프로그래머에 의해 생성될 수도 있으며, 또는, 대안으로, 컴퓨터, 링커(linker), 최적화기(optimizer) 등에 의해 자동으로 프로그램에 추가될 수도 있다. 또한, 프로그램 제어 인스트럭션의 이러한 자동 추가는 전형적으로 실행시간 이전에 발생하며, 몇몇 실시예에서 프로그램 제어 인스트럭션의 실행시간 추가는, 예를 들어 정확한 편집/최적화(just-in-time compilation/optimization) 또는 실행시간 해석(runtime interpretation)/인스트럭션 디코딩과 관련하여, 이용될 수도 있다.As described above, the power control circuit 62 may be controlled through power control instructions embedded in a program executed by the CPU 14. These power control instructions may be generated by the programmer or, alternatively, may be automatically added to the program by a computer, linker, optimizer, or the like. In addition, such automatic addition of program control instructions typically occurs before runtime, and in some embodiments, runtime addition of program control instructions may, for example, require just-in-time compilation / optimization or In connection with runtime interpretation / instruction decoding, it may be used.

특정 구현 방식(예를 들어, 실행시간 전이나 후, 컴파일러나 최적화기에서 등)과는 상관없이, 프로그램 제어 인스트럭션의 자동 추가는 전형적으로 이하에서 더욱 상세히 설명될 하나 이상의 루틴을 사용하여 구현된다. 운용 시스템 또는 특정 애플리케이션, 소자, 프로그램, 객체, 인스트럭션의 모듈이나 시퀀스, 또는 심지어 서브세트에서 구현되든 아니든, 이들 루틴은 "컴퓨터 프로그램 코드" 또는 간단히 "프로그램 코드"라고 지칭될 것이다. 프로그램 코드는 전형적으로 컴퓨터나 데이터 처리 시스템의 다양한 메모리 및 저장 디바이스에서 몇 차례에 걸쳐 상주하는 하나 이상의 인스트럭션을 포함하며, 컴퓨터에서 하나 이상의 프로세서에 의해 판독 및 실행될 때 그 컴퓨터가 본 발명의 다양한 측면을 구체화하는 단계 또는 구성요소를 실행하는 데 필수적인 단계를 수행하게 한다. 또한, 본 발명의 소프트웨어 관련 측면이 컴퓨터 및 데이터 처리 시스템과 관련하여 설명되어 왔고 이하에서도 설명될 것이지만, 당업자라면 본 발명의 다양한 실시예들이 다양한 형태의 프로그램 제품으로서 배포될 수 있고 배포를 실질적으로 실행하는 데 사용되는 특정 유형의 신호 지속 매체와는 상관없이 본 발명이 실질적으로 적용한다는 것을 이해할 것이다.Regardless of the particular implementation (eg, before or after runtime, in a compiler or optimizer, etc.), the automatic addition of program control instructions is typically implemented using one or more routines, which will be described in more detail below. Whether implemented in an operating system or in a module or sequence, or even a subset, of a particular application, element, program, object, instruction, these routines will be referred to as "computer program code" or simply "program code." Program code typically includes one or more instructions that reside several times in various memories and storage devices of a computer or data processing system, and when the computer reads and executes the data on one or more processors, the computer may modify various aspects of the invention. Allows you to perform the steps necessary to specify or implement the components. In addition, although software-related aspects of the present invention have been described with reference to computers and data processing systems and will be described below, those skilled in the art can distribute the various embodiments of the present invention as various types of program products and substantially execute the distribution. It will be appreciated that the present invention is practically applicable irrespective of the particular type of signal sustaining medium used to do so.

또한, 이하에서 설명되는 다양한 프로그램은 본 발명의 특정 실시예에서 구현되는 애플리케이션에 기초하여 식별될 수도 있다. 그러나, 뒤이은 임의의 특정 프로그램 목록(program nomenclature)이 단지 편의상 사용된 것으로서, 본 발명이 그러한 목록에 의해 식별 및/또는 내포되는 임의의 특정 애플리케이션에서만 사용되는 것으로 제한되어서는 안 된다는 것을 이해해야 한다. 또한, 프로그램 기능이 전형적인 컴퓨터(예를 들어, 운용 시스템, 라이브러리, APIs, 애플리케이션, 애플릿 등) 내에 상주하는 다양한 소프트웨어 계층 중에 할당될 수도 있는 다양한 방식 뿐 아니라, 컴퓨터 프로그램이 루틴, 진행, 방법, 모듈, 객체 등으로 편성될 수도 있는 실질적으로 무한정인 방식이 주어지면, 본 발명이 본 명세서에서 설명한 프로그램 기능의 특정 편성 및 할당으로 제한되지 않는다는 것을 이해해야 한다.In addition, the various programs described below may be identified based on an application implemented in a particular embodiment of the invention. However, it should be understood that any particular program nomenclature that follows is merely used for convenience, and the present invention should not be limited to being used only in any particular application identified and / or implied by such a list. In addition, computer programs may be used in routines, processes, methods, modules, as well as in various ways, in which program functions may be assigned among the various software layers residing within a typical computer (eg, operating system, libraries, APIs, applications, applets, etc.). Given a substantially infinite manner, which may be organized into objects, objects, and the like, it is to be understood that the invention is not limited to the specific organization and assignment of program functions described herein.

당업자는 도 1 및 도 2에 예시한 예시적인 실시예가 본 발명을 제한하고자 하는 것이 아님을 인식할 것이다. 또한, 당업자는 다른 대안 하드웨어 및/또는 소프트웨어 환경이 본 발명의 범주를 벗어나지 않고서도 사용될 수도 있다는 것을 인식할 것이다.Those skilled in the art will appreciate that the exemplary embodiments illustrated in FIGS. 1 and 2 are not intended to limit the invention. Those skilled in the art will also recognize that other alternative hardware and / or software environments may be used without departing from the scope of the present invention.

전술한 바와 같이, 본 발명에 부합되는 동적 전력 소모 제어는, 통상의 전력 소모 제어 기술에 대해 전반적으로 실질적인 이점을 제공하는 두 가지 개념 중의 어느 하나 또는 모두를 포함할 수도 있다. 제 1 개념은 프로세서 또는 프로세싱 코어에 의해 활용된 레지스터 파일에 대한 전력 소모 제어를 구현하는 데에 유일하게 적용된다. 제 2 개념은 집적 회로에서 전력 소모를 제어하는 소프트웨어-제어 방식에 더욱 일반적으로 적용된다. 이러한 개념들 각각의 더 양호한 이해를 용이하게 하기 위해, 양 개념을 모두 내포하고 있는 예시적인 실시예가 도 3 내지 도 6과 관련하여 이하에서 설명된다. 그러나, 이하에서 논의된 두 가지 개념은 다른 실시예에서 별도로 독립적으로 이용될 수도 있고, 이와 같이, 이하에서 본 발명이 논의된 특정 구현으로 제한되는 것이 아님을 이해할 것이다.As noted above, dynamic power consumption control consistent with the present invention may include any or both of the two concepts that provide a substantial overall benefit over conventional power consumption control techniques. The first concept is uniquely applied to implementing power consumption control for register files utilized by a processor or processing core. The second concept applies more generally to software-controlled schemes for controlling power consumption in integrated circuits. In order to facilitate a better understanding of each of these concepts, an exemplary embodiment that incorporates both concepts is described below with respect to FIGS. However, it will be appreciated that the two concepts discussed below may be used independently in other embodiments, and as such, the invention is not limited to the specific implementations discussed below.

도 3 내지 도 6은 특히 3중미디어-호환가능 미디어 프로세서에서 사용되는 레지스터 파일에서의 전력 소모의 소프트웨어 기반 제어를 예시한다. 예를 들어, 많은 프로그램 가능 아키텍처(예를 들어, VLIW, EPIC 및 슈퍼스칼라)에서 레지스터 파일은 전체적인 전력 소모에 대한 큰 기여자라는 것이 밝혀졌다. 일부 애플리케이션에서는, 레지스터 파일이 프로세싱 코어에 의해 소비되는 전력의 20%까지를 소비할 수도 있다는 것이 밝혀졌다. 미디어 프로세서에서 특히, 레지스터 파일은 흔히 비교적 크며, 흔히 많은 포트와 레지스터를 포함한다. 일부 3중미디어-호환가능 프로세서는, 예를 들어, 128개의 레지스터와 20개의 개별 포트를 구비한 레지스터 파일을 사용한다. 레지스터 파일 디자인은 배선을 위주로 하여, 기술 스케일링에 따라 상대적인 전력 소모가 증가한다. 이와 같이, 레지스터 파일에서의 전력 소모를 감소시키는 것은 흔히 미디어 프로세서에서의 에너지 소비를 실질적으로 절약하게 한다.3 through 6 illustrate software based control of power consumption in a register file used in particular in a triple media-compatible media processor. For example, in many programmable architectures (eg, VLIW, EPIC, and superscalar), register files have been found to be a big contributor to overall power consumption. In some applications, it has been found that register files may consume up to 20% of the power consumed by the processing core. Especially in media processors, register files are often relatively large and often contain many ports and registers. Some triple media-compatible processors use, for example, register files with 128 registers and 20 individual ports. Register file design is wire-oriented, and relative power consumption increases with technology scaling. As such, reducing power consumption in a register file often results in substantial savings of energy consumption in the media processor.

흔히, 임의의 프로그램 가능 아키텍처에 있는 레지스터 파일의 크기는 최고 개수의 액티브 변수를 요구하는 애플리케이션에 의해 결정되는데, 이 변수는 전형적으로 레지스터 파일에 저장된다. 그러나, 더 적은 액티브 변수를 갖는 다른 애플리케이션을 실행하는 동안에는, 레지스터 파일에 있는 많은 레지스터가 여전히 사용되지 않은 상태를 유지한다. 또한, 특정 애플리케이션 내에서, 레지스터 파일의 활용은 애플리케이션의 상이한 지점에서 실질적으로 변할 수 있다. 예로써, 3중미디어-호환가능 미디어 프로세서는 AC3 디코딩 중에 비교적 높은 피크 레지스터 활용도를 갖는 반면, 흔히, 전형적인 애플리케이션에서 다른 연산 수행 중에는 평균 레지스터 활용도가 비교적 낮다는 것이 밝혀졌다. 따라서, 운용 중인 애플리케이션의 현재 요건에 따라, 레지스터 파일의 사용되지 않은 부분을 디스에이블하여 전반적인 전력 소모를 감소시키는 것이 매우 바람직할 수도 있다.Often, the size of a register file in any programmable architecture is determined by the application requiring the highest number of active variables, which are typically stored in a register file. However, while running other applications with fewer active variables, many of the registers in the register file still remain unused. In addition, within a particular application, the utilization of the register file may vary substantially at different points in the application. By way of example, triple media-compatible media processors have been found to have relatively high peak register utilization during AC3 decoding, while often average register utilization is relatively low during other computations in typical applications. Thus, depending on the current requirements of the application in operation, it may be highly desirable to disable the unused portion of the register file to reduce the overall power consumption.

도 3에 특히 도시한 바와 같이, 일부 레지스터 파일을 선택적으로 디스에이블하는 방식은 어드레스 공간 상의 레지스터 파일(여기에서는 도 2의 레지스터 파일(60))을 여러 개의 뱅크(70)로 분할하여, 예를 들어, 전력 제어 회로(62)(도 2)를 거쳐 뱅크에 공급되는 인에이블 신호(66)에 대한 응답으로, 이들 뱅크를 조건부로 인에이블하거나 디스에이블하는 것에 의한 것이다.As shown in particular in FIG. 3, a method of selectively disabling some register files may be performed by dividing a register file on the address space (here, register file 60 in FIG. 2) into several banks 70, for example. For example, in response to the enable signal 66 supplied to the banks via the power control circuit 62 (FIG. 2), by conditionally enabling or disabling these banks.

각 뱅크(70)는 레지스터 파일로 나타낸 레지스터 공간이 레지스터 세트로 분할되도록 되어 있는 다수의 레지스터를 포함할 수도 있다. 예를 들어, 128개의 레지스터를 구비한 레지스터 파일에 대해서는, 레지스터 공간을 16개의 레지스터 각자에 대해 8개의 뱅크로 분할하는 것이 바람직할 수도 있다. 레지스터를 분할하는 다른 방식이 사용될 수도 있으나, 예로써, 가장 중요한 어드레스 입력을 뱅크 선택 신호로 사용하고, 가장 덜 중요한 어드레스 입력을 사용하여 선택된 뱅크에서 특정 레지스터를 선택하는 것이 바람직할 수도 있다. 예를 들어, 레지스터 파일이 8개의 16 레지스터 뱅크로 분할되는 경우, 높은 순위 입력 3개가 뱅크 선택 신호로 사용되고 낮은 순위의 입력 4개가 레지스터 선택 신호로서 사용되는 7개의 어드레스가 사용된다.Each bank 70 may include a number of registers in which the register space represented by the register file is divided into register sets. For example, for a register file with 128 registers, it may be desirable to divide the register space into eight banks for each of the 16 registers. Other ways of partitioning registers may be used, but it may be desirable, for example, to use the most significant address input as the bank select signal and select the particular register in the selected bank using the least significant address input. For example, when a register file is divided into eight 16 register banks, seven addresses are used in which three high rank inputs are used as bank select signals and four low rank inputs are used as register select signals.

본 분야에 잘 알려져 있는 바와 같이, 레지스터 파일(60)은, 클록 입력(74), 어드레스 인 입력(76) 및 데이터 인 입력(78) 뿐 아니라 출력 선택 로직(72)을 포함한다. 또한, 레지스터 파일(60)은 데이터 아웃 출력(80)에 데이터를 출력한다. 레지스터의 개수 및 각 레지스터의 폭 뿐 아니라 레지스터 파일에 의해 지원되는 입력/출력포트의 개수에 따라, 상이한 개수의 어드레스 인, 데이터 인 및 데이터 아웃 신호가 레지스터 파일에 제공될 수도 있음이 인지될 것이다. 또한, 입력 선택 로직(도시하지 않음)이 사용되어 다수의 기능 유닛에 의해 다수의 레지스터의 동시적 액세스를 지원하게 할 수도 있다.As is well known in the art, register file 60 includes output selection logic 72 as well as clock input 74, address in input 76 and data in input 78. The register file 60 also outputs data to the data out output 80. It will be appreciated that depending on the number of registers and the width of each register as well as the number of input / output ports supported by the register file, different numbers of address in, data in and data out signals may be provided in the register file. In addition, input selection logic (not shown) may be used to support simultaneous access of multiple registers by multiple functional units.

레지스터의 뱅크를 선택적으로 디스에이블하기 위해, 클록, 어드레스 인 및 데이터 인 입력은 각 뱅크에 배치된 인에이블 회로(82)를 통해 각 뱅크에 제공된다. 또한, 전력 제어 회로로부터의 인에이블 신호(66)는 각 인에이블 회로(82)에 추가로 공급되어 연결된 레지스터 뱅크(70)에 대한 클록, 어드레스 인 및 데이터 인 입력을 선택적으로 게이트 오프하거나 보호한다.To selectively disable banks of registers, clock, address in and data in inputs are provided to each bank through enable circuits 82 disposed in each bank. In addition, an enable signal 66 from the power control circuit is further supplied to each enable circuit 82 to selectively gate off or protect the clock, address in and data in inputs for the connected resistor bank 70. .

각 뱅크 내의 인에이블 회로(82)는 본 발명과 부합되는 많은 방식으로 구현될 수도 있다. 예를 들어, 인에이블 회로를 구현하는 한 가지 방식은 일련의 게이트 트랜지스터의 사용에 의한 것으로서, 이러한 트랜지스터는 레지스터 뱅크에 대한 각 클록, 어드레스 인 및 데이터 인 입력에 커플링되고 그 레지스터 뱅크의 전용 인에이블 신호(66)에 의해 게이트된다.The enable circuit 82 in each bank may be implemented in many ways consistent with the present invention. For example, one way of implementing an enable circuit is by using a series of gate transistors, which are coupled to the respective clock, address in and data in inputs to the register bank and dedicated to the register bank. Gated by the enable signal 66.

각 뱅크에 대해 어드레스 및 데이터 입력을 게이트 오프하되 클록 입력만은 게이트 오프하지 않음으로써, 전형적으로, 비교적 큰 에너지 절약이 CMOS 래치 또는 플립-플롭(동기화된) 레지스터 구현에 연결된 비교적 높은 배선 커패시턴스로 인해 얻어지는데, 이는 게이팅이 전형적으로 레지스터 파일 뱅크 내에서 사용되는 비교적 긴 배선에 대해 스위칭 작용을 억제하기 때문이다. 그러나, 일부 구현에서, 추가의 게이팅 로직은 추가 지연을 유발하여 성능을 작은 범위로 국한시킬 수도 있음이 인지되어야 한다. 또한, 본 발명이 상이한 레지스터 구현을 이용하여 구현된 레지스터 파일과 관련하여 사용될 수도 있음이 인지될 것이다.Gate off the address and data inputs for each bank, but not the clock inputs only, typically due to the relatively high wiring capacitance connected to the CMOS latch or flip-flop (synchronized) register implementation. This is obtained because gating typically inhibits switching action for relatively long interconnects used within register file banks. However, it should be appreciated that in some implementations, additional gating logic may cause additional delays to limit performance to a small range. It will also be appreciated that the present invention may be used in connection with register files implemented using different register implementations.

레지스터 파일(60)의 소프트웨어 기반 전력 소모 제어를 구현하기 위해, 전력 제어 인스트럭션은 CPU(14)의 인스트럭션 세트 아키텍처에서 지원된다. 전력 제어 인스트럭션에 대한 예시적인 포맷이 도 4의 참조번호(90)에 예시된다. 도시한 바와 같이, 전력 제어 인스트럭션(90)은 인스트럭션을 pwr_control 인스트럭션으로 식별하는 opcode(92)와, 레지스터 파일(60)에 있는 레지스터의 다양한 뱅크에 대한 전력 모드를 설정하는 데 사용되는 전력 제어 정보를 명시하는 피연산자(operand)(94)를 포함할 수도 있다. 피연산자(94)는, 예를 들어, 레지스터 파일에 있는 레지스터의 각 뱅크에 할당된 인에이블/디스에이블 비트(96)를 갖는 비트 마스크(bit mask)를 포함하는 즉시 피연산자(immediate operand)로서 구현될 수도 있다. 따라서, 예를 들어, 레지스터 파일의 8개 뱅크에 대해, 8-비트 즉시 피연산자는 인스트럭션(90)에서 지원될 수도 있다.In order to implement software based power consumption control of register file 60, power control instructions are supported in the instruction set architecture of CPU 14. An exemplary format for power control instructions is illustrated at 90 in FIG. 4. As shown, the power control instruction 90 contains an opcode 92 that identifies the instruction as a pwr_control instruction and power control information used to set the power mode for the various banks of registers in the register file 60. It may also include an operand 94 that specifies. Operand 94 may be implemented as an immediate operand, including, for example, a bit mask with enable / disable bit 96 assigned to each bank of registers in a register file. It may be. Thus, for example, for eight banks of register file, an 8-bit immediate operand may be supported in instruction 90.

더욱 일반적인 수준에서, 피연산자(94)의 크기는 공식으로 명시될 수도 있다.At a more general level, the size of operand 94 may be specified by a formula.

j는 제어될 하드웨어 리소스(여기에서는 레지스터 뱅크)의 개수이고 Modes(i)는 하드웨어 리소스 i의 전력 모드의 개수이다.j is the number of hardware resources to be controlled (here register banks) and Modes (i) is the number of power modes of hardware resource i.

다른 인스트럭션 포맷이 대안으로 사용될 수도 있다. 예를 들어, 도 4에 도시한 바와 같이, 전력 모드 상태 정보가 저장되어 있는 레지스터를 식별하는 선택적 소스 레지스터 피연산자(97)를 지원하는 것이 바람직할 수도 있다. 따라서, 전력 제어 인스트럭션에 직접 전력 모드 상태 정보를 저장하여 즉시 연산을 수행하기보다는, 전력 모드 상태 정보가 별도의 레지스터에 보존되고, 레지스터 연산이 바람직한 전력 모드 상태 정보를 검색하는 데 사용될 수 있다. 다른 어드레싱 모드가 대안으로 지원될 수도 있다.Other instruction formats may alternatively be used. For example, as shown in FIG. 4, it may be desirable to support an optional source register operand 97 that identifies a register in which power mode state information is stored. Thus, rather than storing the power mode state information directly in the power control instructions to perform the operation immediately, the power mode state information is stored in a separate register, and the register operation can be used to retrieve the desired power mode state information. Other addressing modes may alternatively be supported.

또한, 도 4에도 도시한 바와 같이, 가드 피연산자(guard operand)(98)를 지원하는 것이 바람직할 수도 있는데, 이 피연산자는 전력 제어 인스트럭션에 의해 명시된 전력 모드 상태 정보가 인가되기 전에 충족되어야 하는 조건을 명시하는 데 사용될 수도 있다. 실제로, 임의의 알려진 조건이 본 발명에 부합되게 사용될 수도 있다.In addition, as shown in FIG. 4, it may be desirable to support a guard operand 98, which specifies a condition that must be met before the power mode state information specified by the power control instruction is applied. Can also be used to specify. Indeed, any known condition may be used in accordance with the present invention.

도 2를 참조하면, 예시된 실시예에서, 전력 제어 인스트럭션은 전력 모드 레지스터(64)를 업데이트하도록 CPU(14)에 의해 처리되고 전력 제어 정보는 전력 제어 인스트럭션에 명시된다. 이와 같이, 전력 모드 레지스터(64)가 전력 제어 인스트럭션에 대한 즉시 피연산자와 동일한 맵핑을 갖고 있어, 전력 제어 인스트럭션이 전력 모드 레지스터에 대해 즉시 쓰기로서 간단히 처리되게 하는 것이 바람직할 수도 있다.2, in the illustrated embodiment, power control instructions are processed by the CPU 14 to update the power mode register 64 and power control information is specified in the power control instructions. As such, it may be desirable for the power mode register 64 to have the same mapping as the immediate operands to the power control instructions so that the power control instructions are simply processed as an immediate write to the power mode register.

또한, 전술한 바와 같이, 일부 경우, PCSW 레지스터와 같은 기존 레지스터를 이용하여 전력 모드 상태 정보를 저장하는 것이 바람직할 수도 있다. 이러한 경우, 전력 제어 인스트럭션은 별도의 opcode를 요구하지 않을 것이다. 대신, 기존의 적절한 레지스터에 쓰도록 이용되는 opcode가 사용될 수도 있으며, 피연산자는 전력 모드 상태 정보를 저장하는 것과 관련하여 사용되는 그러한 비트들을 업데이트한다.In addition, as noted above, in some cases it may be desirable to store power mode state information using an existing register, such as a PCSW register. In such a case, the power control instruction will not require a separate opcode. Instead, an opcode used to write to an existing appropriate register may be used, with the operand updating those bits used in connection with storing power mode state information.

전력 제어 인스트럭션은 본 발명에 부합되는 많은 방식으로 실행가능 프로그램 코드에 포함될 수도 있다. 예를 들어, 전력 제어 인스트럭션은 개발 동안 프로그래머에 의해 소스 코드에 추가될 수도 있다. 대안으로, 컴파일러, 최적화기, 링커 등은 예측된 리소스 사용을 기반으로 하여 전력 제어 인스트럭션을 삽입할 적절한 위치를 결정하기 위한 개발 하에서 프로그램의 시뮬레이션이나 정적 분석을 수행할 수도 있다.The power control instructions may be included in the executable program code in many ways consistent with the present invention. For example, power control instructions may be added to source code by a programmer during development. Alternatively, compilers, optimizers, linkers, etc. may perform simulation or static analysis of the program under development to determine the appropriate location to insert power control instructions based on the predicted resource usage.

또한, 프로그램의 프로파일(profiling), 정적 분석 또는 시뮬레이션은, 프로그램의 소정 섹션 동안, 어떤 하드웨어 리소스가 사용되어야 하고 어떤 리소스가 디스에이블되어야 하는지를 결정하는 데 사용될 수도 있다. 예를 들어, 단 10개의 레지스터만이 프로그램의 소정 섹션에서 요구되고 있으나 어떤 10개의 레지스터가 프로그램 의미(program semantics)에 중요하지 않은지가 결정된 경우, 컴파일러가 제한된 개수만의 레지스터 뱅크로부터의 레지스터를 사용한 후 적절한 전력 제어 인스트럭션을 프로그램 코드에 삽입하여 사용되지 않는 레지스터 뱅크를 디스에이블하게 하는 것이 바람직할 수도 있다. 또한, 그러한 10개의 레지스터가 초기에 여러 개의 레지스터 뱅크 전체에 분산되어 있는 경우, 레지스터를 재배치하여 감소된 개수의 레지스터 뱅크 내에 레지스터를 집중시키는 것이 바람직할 수도 있다.In addition, profiling, static analysis, or simulation of a program may be used to determine which hardware resources should be used and which resources should be disabled during certain sections of the program. For example, if only ten registers are required in a section of a program but it is determined which ten registers are not important for program semantics, the compiler uses registers from a limited number of register banks. It may then be desirable to insert appropriate power control instructions into the program code to disable unused register banks. Also, if such ten registers are initially distributed across several register banks, it may be desirable to rearrange the registers to concentrate the registers within a reduced number of register banks.

도 5는, 예를 들어, 컴퓨터 프로그램의 편집 또는 최적화 중에 실행되어 최적의 전력 소모를 위한 컴퓨터 프로그램의 섹션을 최적화할 수도 있는 전력 소모 최적화 루틴(100)을 예시한다. 프로그램의 각 특정 섹션에 대해, 루틴(100)은 먼저 그 섹션을 분석하여 블록(102)에서 그 프로그램 코드 섹션에 의해 하드웨어 리소스 사용을 결정한다. 다음, 블록(104)은 선택적으로 실행되어 제한된 하드웨어 리소스 세트에 리소스 사용을 집중시키도록(예를 들어, 제한된 개수의 레지스터 뱅크로 레지스터를 한정하도록) 리소스를 재배치하게 한다. 다음, 블록(106)은 적절한 전력 제어 인스트럭션을 생성하고 프로그램 코드에 삽입하여 임의의 사용되지 않는 리소스를 디스에이블한다. 그 후, 섹션의 프로세싱이 완료된다.FIG. 5 illustrates a power consumption optimization routine 100 that may be executed, for example, during editing or optimization of a computer program to optimize sections of the computer program for optimal power consumption. For each particular section of the program, the routine 100 first analyzes the section to determine hardware resource usage by the program code section at block 102. Next, block 104 is optionally executed to relocate resources to focus resource usage (e.g., to confine registers to a limited number of register banks) to a limited set of hardware resources. Block 106 then generates the appropriate power control instructions and inserts them into the program code to disable any unused resources. Thereafter, processing of the section is completed.

또한, 루틴(100), 또는 기능적으로 유사한 루틴은 또한 실행시간 중에 예를 들어 해석(interpretation) 또는 정확한 편집과 관련하여 사용될 수도 있다. 또한, 루틴(100)이 실행시간 중에, 예를 들어 슈퍼스칼라 프로세서 아키텍처에서, 병렬 연산 및/또는 비순차(out-of-order) 연산에 예정된 인스트럭션의 생성과 관련하여 사용될 수도 있음이 인지될 것이다. 이러한 구현에서, 바람직하게는, 컴파일러 및 실행시간 하드웨어는, 예를 들어, 실행시간 추측을 제한하는 부작용(side effect)을 전력 제어 인스트럭션에 할당함으로써, 다른 추측된 인스트럭션에 대한 영향을 최소화하도록 전력 제어 인스트럭션의 재주문(reorder)을 제한해야 한다. 또 다른 실시예에서, 연산 시스템은 CPU/프로세서가 계산에 완전히 부하가 걸리지 않은 경우 전력 제어 명령을 예정/발생할 수 있다.In addition, routine 100, or a functionally similar routine, may also be used at runtime, for example in connection with interpretation or precise editing. It will also be appreciated that the routine 100 may be used at runtime, for example in a superscalar processor architecture, in connection with the generation of instructions intended for parallel and / or out-of-order operations. . In such an implementation, the compiler and runtime hardware preferably provides power control to minimize the impact on other speculated instructions, for example by assigning side effects to the power control instructions that limit runtime speculation. You must limit the reordering of instructions. In another embodiment, the computing system may schedule / generate power control instructions when the CPU / processor is not fully loaded with the calculations.

대안으로, 루틴(100)은 병렬 연산의 검출이 편집 중에 발생하는 경우에 VLIW 또는 EPIC 코드와 같은 명백한 병렬 인스트럭션 세트 아키텍처와 관련하여 사용될 수도 있다. 이러한 구현에서, 전력 제어 인스트럭션의 삽입은 다수의 연산을 포함하는 더 큰 VLIW 또는 EPIC 인스트럭션에 전력 제어 연산을 삽입하는 것을 포함하는 것으로 간주될 수도 있다.Alternatively, the routine 100 may be used in connection with an explicit parallel instruction set architecture such as VLIW or EPIC code when the detection of parallel operations occurs during editing. In such implementations, insertion of power control instructions may be considered to include inserting power control operations into a larger VLIW or EPIC instruction that includes multiple operations.

전력 제어 인스트럭션이 편집 중 또는 실행시간 중에 삽입된 프로그램 코드는 하드웨어 리소스 사용에서의 변화가 바람직하게 되는 시간에만 프로그램 코드 내에 산재된 프로그램 제어 인스트럭션을 포함한다. 또한, 흔히, 단일 전력 제어 인스트럭션이 다수의 하드웨어 리소스의 인에이블/디스에이블 상태를 제어할 수 있게 하는 것이 바람직하다. 이와 같이, 최소의 추가 프로세싱 오버헤드는 전형적으로 본 발명에 부합되는 전력 제어 인스트럭션과 연결되어, 프로그램 코드에 추가 인스트럭션을 삽입하는 것으로 인한 임의의 불리한 성능 효과를 최소화시킨다.Program code inserted while the power control instructions are being edited or during runtime includes program control instructions interspersed within the program code only at a time when a change in hardware resource usage is desired. In addition, it is often desirable for a single power control instruction to be able to control the enable / disable state of multiple hardware resources. As such, minimal additional processing overhead is typically associated with power control instructions consistent with the present invention to minimize any adverse performance effects due to inserting additional instructions into program code.

도 6은, 예를 들어 3중미디어-호환가능 미디어 프로세서와 관련하여 사용될 수도 있는 바와 같이, 전술한 방식으로 컴파일된 프로그램의 예시적인 일부 실행을 도식적으로 예시한다. 이 예에는, 참조부호(110, 112, 114, 116, 118)로 지정된 5개의 발생 슬롯이 있으며, 각 사이클(사이클 0-4) 중에 각 발생 슬롯에서 실행되는 인스트럭션이 그 사이클에 대한 각각의 발생 슬롯에 예시된다. 또한, 레지스터 파일은 8개의 뱅크로 분할된 128개의 레지스터(r0 내지 r127로 표시)를 포함하고, 전력 제어 인스트럭션은 이진수 "1"이 선택된 뱅크와 연결된 피연산자 비트 마스크 위치에서 조우하게 될 때 그 뱅크가 인에이블되는 경우에 즉시 피연산자를 사용한다는 것을 전제로 한다. 이 예에서, pwr_control 인스트럭션의 대기시간(latency)은 1사이클이지만, pwr_control 인스트럭션이 일부 구현에서 1사이클보다 더 많은 대기시간을 갖는다는 것이 인지될 것이다.6 diagrammatically illustrates some exemplary executions of a program compiled in the manner described above, as may be used, for example, in connection with a triple media-compatible media processor. In this example, there are five occurrence slots designated by reference numerals 110, 112, 114, 116, and 118, and an instruction executed in each occurrence slot during each cycle (cycles 0-4) causes each occurrence for that cycle. Illustrated in the slot. In addition, the register file contains 128 registers (denoted r0 to r127) divided into eight banks, and the power control instructions indicate that when the binary " 1 " encounters at the operand bit mask location associated with the selected bank. It is assumed that the operand is used immediately when it is enabled. In this example, the latency of the pwr_control instruction is one cycle, but it will be appreciated that the pwr_control instruction has more than one cycle in some implementations.

또한, 사이클 0 동안, CPU(여기서는 발생 슬롯(112))에 의해 처리되는 인스트럭션 중의 하나가 0x1b(이진수 00011011)를 갖는 전력 제어 인스트럭션이며, 이는 레지스터 파일(즉, 레지스터 r0-r31, r48-r79)의 뱅크(1, 2, 4, 5)만을 인에이블하게 한다는 것을 전제로 한다. 이 인스트럭션의 실행 결과, 전력 모드 레지스터(64)(도 2)는 업데이트되어 0x1b(이진수 00011011) 값을 저장한다. 그 결과, 연속 사이클 동안, 레지스터 뱅크(3, 6, 7, 8)가 디스에이블된다. 그러나, 사이클 0에서 전력 제어 인스트럭션의 실행 중에, 모든 레지스터 뱅크가 다른 인스트럭션에 의한 액세스에 이용될 수 있다(모든 뱅크가 이전에 인에이블되었다는 것을 가정함)는 것에 유의하라.Also, during cycle 0, one of the instructions processed by the CPU (here generation slot 112) is a power control instruction with 0x1b (binary 00011011), which is a register file (i.e. registers r0-r31, r48-r79). It is assumed that only banks 1, 2, 4, and 5 are enabled. As a result of the execution of this instruction, the power mode register 64 (FIG. 2) is updated to store the value 0x1b (binary 00011011). As a result, during successive cycles, register banks 3, 6, 7, 8 are disabled. However, note that during the execution of the power control instruction in cycle 0, all register banks may be used for access by other instructions (assuming all banks have been previously enabled).

사이클 1 및 2 동안에는, 어떠한 추가 전력 제어 인스트럭션도 조우하지 않게 된다. 그 결과, 레지스터 뱅크(3, 6, 7, 8)는 계속 디스에이블된 상태로 남아 있고, 모든 인스트럭션은 뱅크(1, 2, 4, 5)(r0-r31, r48-r79)로부터 레지스터를 액세스하는 것으로 제한된다.During cycles 1 and 2, no additional power control instructions are encountered. As a result, register banks 3, 6, 7, and 8 remain disabled, and all instructions access registers from banks 1, 2, 4, and 5 (r0-r31, r48-r79). It is limited to.

사이클 3 동안에는, 전력 모드 레지스터(64)에 저장된 전력 모드 상태 정보는 계속해서 레지스터 뱅크(3, 6, 7, 8)를 디스에이블된 상태로 유지시킨다. 그러나, 이 사이클(발생 슬롯(118)으로 발생됨) 동안 실행된 인스트럭션 중의 하나는 0xff(이진수 11111111)의 즉시 피연산자를 갖는 전력 제어 인스트럭션으로서, 사이클 4에서 실행된 인스트럭션에 대해 레지스터 파일의 모든 8개 뱅크를 인에이블한다.During cycle 3, the power mode state information stored in power mode register 64 continues to keep register banks 3, 6, 7, and 8 disabled. However, one of the instructions executed during this cycle (generated into occurrence slot 118) is a power control instruction with an immediate operand of 0xff (binary 11111111), for all eight banks of the register file for the instruction executed in cycle 4. Enable.

전술한 동적 전력 소모 제어 기술은 통상적인 디자인 이상의 많은 이점을 제공한다. 특정 기능 유닛에 라우팅될 인스트럭션을 필요로 하는 통상적인 디자인 또는 모든 인스트럭션에 첨부되거나 끊임없이 디코딩될 인에이블/디스에이블 커맨드를 요구하는 통상적인 디자인에 비해, 최소의 프로세싱 오버헤드를 갖는 매우 다양한 하드웨어 리소스를 제어하는 것과 관련하여 상당한 적응성(flexibility)이 제공된다.The dynamic power consumption control technique described above offers many advantages over conventional designs. Compared to a conventional design requiring an instruction to be routed to a specific functional unit or a conventional design requiring an enable / disable command to be attached or constantly decoded to all instructions, there is a large variety of hardware resources with minimal processing overhead. Significant flexibility is provided with regard to controlling.

또한, 전술한 기술은 다양한 전력 소모 관련 발생을 설명할 적응성을 제공하여, 많은 유용한 방식으로 성능 및 전력 소모를 적절하게 균형을 맞춘다. 예를 들어, 전술한 기술을 이용하여, 프로세서 성능은, 예를 들어 레지스터 또는 기능 유닛을 추가하지만 여분의 리소스가 사용되지 않는 코드에 대한 전력 소모를 증가시키지 않고서도 증대(scale up)될 수 있다. 또한, 성능이 중요하지 않은 애플리케이션에 대해, 전력 제어 인스트럭션은, 예를 들어, 연산을 제한된 리소스로 예정하지만 다른 리소스를 디스에이블함으로써, 더 낮은 전력 소비를 위해 성능을 희생시킬 수 있다.In addition, the foregoing techniques provide the adaptability to account for various power consumption related occurrences, so as to balance performance and power consumption in a number of useful ways. For example, using the techniques described above, processor performance may be scaled up without, for example, increasing power consumption for code that adds registers or functional units but does not use extra resources. . Also, for applications where performance is not critical, power control instructions may sacrifice performance for lower power consumption, for example by scheduling operations as limited resources but disabling other resources.

소프트웨어 기반 전력 소모 제어에 대해, 대안 인스트럭션 포맷, 대안 편집, 최적화 및/또는 예정 루틴, 및 대안 프로세서 아키텍처가 본 발명에 부합되는 다른 실시예에서 이용될 수도 있음이 인지될 것이다. 또한, 본 명세서에서 설명한 뱅크 레지스터 파일 디자인과 관련하여 전술한 바와 다른 리소스 디스에이블 회로가 본 발명에 부합되는 소프트웨어 기반 전력 소모 제어와 관련하여 사용될 수도 있다.It will be appreciated that for software based power consumption control, alternative instruction formats, alternative editing, optimization and / or scheduled routines, and alternative processor architectures may be used in other embodiments consistent with the present invention. In addition, other resource disable circuits as described above in connection with the bank register file design described herein may be used in connection with software based power consumption control consistent with the present invention.

또한, 본 명세서에서 설명된 뱅크 레지스터 파일 디자인과 관련하여, 본 명세서에서 설명한 소프트웨어 기반 제어 메커니즘과 다른 메커니즘이 본 발명에 부합되어 사용될 수도 있음이 인지될 것이다. 예를 들어, 하드웨어 기반 제어 메커니즘은 판독/기록 어드레스의 동적 디코딩에 따라 소정 하드웨어 리소스를 동적으로 인에이블시키는 데 사용될 수도 있다. 예로써, 도 7은 도 3의 레지스터 파일(60)과 유사한 레지스터 파일에 제공되는 클록 입력(126), 데이터 인 입력(128) 및 어드레스 인 입력(130)을 선택적으로 게이트 오프하는 데 사용되는 게이팅 로직(124)을 각각 구비하고 있는 다수의 레지스터 뱅크(122)를 포함하는 대안 레지스터 파일 디자인(120)을 예시한다. 그러나, 소프트웨어 기반 제어 회로로부터 인에이블 신호를 제공받기보다는, 레지스터 파일(120)은 다양한 사용되지 않는 레지스터 뱅크를 선택적으로 디스에이블하기 위한 개별적인 뱅크 인에이블 신호(136)를 동적으로 생성하는 어드레스 디코더(134)를 포함하는 하드웨어 기반 인에이블 로직 회로(132)를 포함한다.It will also be appreciated that with respect to the bank register file design described herein, other mechanisms than the software based control mechanism described herein may be used in accordance with the present invention. For example, a hardware based control mechanism may be used to dynamically enable certain hardware resources in accordance with the dynamic decoding of read / write addresses. By way of example, FIG. 7 is a gating used to selectively gate off clock input 126, data in input 128, and address in input 130 provided in a register file similar to register file 60 of FIG. Illustrates an alternative register file design 120 that includes a plurality of register banks 122 each having logic 124. However, rather than being provided with enable signals from software-based control circuitry, register file 120 may use an address decoder (dynamically generated) to generate individual bank enable signals 136 for selectively disabling various unused register banks. Hardware-based enable logic circuit 132 including 134.

어드레스 디코더(134)는, 예를 들어, 그러한 뱅크 내의 어떤 레지스터도 일반적으로 액세스되지 않는 임의의 사이클 동안 레지스터 뱅크를 선택적으로 디스에이블할 수도 있다. 특히 다수의 입력포트를 지원하는 레지스터 파일에 대해, 어떤 레지스터가 소정 사이클 동안 액세스되는지가 용이하게 결정되며, 특정 프로세서 디자인에 의해 사용된 컴파일러 및/또는 인스트럭션 세트 아키텍처에서의 임의의 변화없이 레지스터 파일에 전력 소모를 선택적으로 감소시키는 능력을 제공한다.The address decoder 134 may, for example, selectively disable a register bank during any cycle in which no registers in such a bank are generally accessed. Especially for register files that support multiple input ports, it is easy to determine which registers are accessed for a given cycle, and to register files without any change in compiler and / or instruction set architecture used by a particular processor design. It provides the ability to selectively reduce power consumption.

다양한 추가 개량은 본 분야의 당업자에게는 자명하며, 본 진술의 이점을 갖는다. 따라서, 본 발명은 이하에 첨부된 청구범위에 의거한다.Various further improvements will be apparent to those skilled in the art and have the benefit of this statement. Accordingly, the invention is subject to the claims appended hereto.

Claims (21)

회로 장치(14)에 있어서,In the circuit device 14, (a) 다수의 뱅크(70) - 각각의 뱅크는 적어도 하나의 레지스터(82)와, 적어도 하나의 클록 입력(74), 어드레스 입력 및 데이터 입력을 포함함 - 로 분할된 레지스터 파일(60)과,(a) a register file 60 divided into a plurality of banks 70, each bank comprising at least one register 82, at least one clock input 74, an address input and a data input; , (b) 상기 레지스터 파일에 커플링되어 있으며, 상기 클록(74), 어드레스 및 데이터 입력을 게이트 오프함으로써 상기 다수의 뱅크 중에서 적어도 하나의 사용되지 않는 뱅크(70)를 선택적으로 디스에이블하도록 구성된 인에이블 로직(66)을 포함하는(b) an coupling coupled to the register file and configured to selectively disable at least one unused bank 70 of the plurality of banks by gate-off of the clock 74, address and data inputs Including logic 66 회로 장치.Circuit device. 제 1 항에 있어서,The method of claim 1, 상기 레지스터 파일의 각 레지스터는 CMOS 플립 플롭 및 CMOS 래치 중의 적어도 하나를 포함하는Each register in the register file includes at least one of a CMOS flip flop and a CMOS latch. 회로 장치.Circuit device. 제 1 항에 있어서,The method of claim 1, 상기 인에이블 로직은 다수의 인에이블 회로(82) - 각 인에이블 회로는 상기 레지스터 파일의 레지스터 뱅크에 커플링되고, 각 인에이블 회로는 인에이블 신호에 응답하여 상기 연결된 뱅크에 제공되는 각 클록(74), 어드레스 및 데이터 입력을 게이트 오프하도록 구성됨 - 를 포함하는The enable logic is a plurality of enable circuits 82-each enable circuit is coupled to a register bank of the register file, and each enable circuit is provided for each clock provided to the connected bank in response to an enable signal. 74), configured to gate off an address and data input. 회로 장치.Circuit device. 제 3 항에 있어서,The method of claim 3, wherein 각 인에이블 회로는 다수의 게이트 트랜지스터 - 각 게이트 트랜지스터는 상기 클록, 어드레스 및 데이터 입력 중의 하나에 커플링되고, 각 게이트 트랜지스터는 상기 인에이블 회로에 제공되는 상기 인에이블 신호에 응답함 - 를 포함하는Each enable circuit includes a plurality of gate transistors, each gate transistor coupled to one of the clock, address, and data inputs, each gate transistor responsive to the enable signal provided to the enable circuit. 회로 장치.Circuit device. 제 1 항에 있어서,The method of claim 1, 상기 다수의 레지스터 뱅크 각각에 커플링된 출력 선택 로직(80)을 더 포함하는Further comprising output selection logic 80 coupled to each of the plurality of register banks; 회로 장치.Circuit device. 제 1 항에 있어서,The method of claim 1, 상기 인에이블 로직(132)은 어떤 레지스터 뱅크가 사용되지 않는지를 동적으로 결정하고 상기 동적 결정에 응답하여 각 뱅크에 대한 인에이블 신호를 생성하도록 구성되는The enable logic 132 is configured to dynamically determine which register bank is not used and generate an enable signal for each bank in response to the dynamic decision. 회로 장치.Circuit device. 제 6 항에 있어서,The method of claim 6, 상기 인에이블 로직은 상기 레지스터 파일에 제공된 상기 어드레스 입력에 의해 명시된 적어도 하나의 어드레스에 응답하여 상기 인에이블 신호를 생성하도록 구성된 어드레스 디코더를 포함하는The enable logic includes an address decoder configured to generate the enable signal in response to at least one address specified by the address input provided in the register file. 회로 장치.Circuit device. 제 1 항에 있어서,The method of claim 1, 상기 인에이블 로직은 저장된 전력 모드 상태 정보에 응답하여 각 뱅크에 대한 인에이블 신호를 생성하도록 구성된The enable logic is configured to generate an enable signal for each bank in response to the stored power mode state information. 회로 장치.Circuit device. 제 8 항에 있어서,The method of claim 8, 상기 전력 모드 상태 정보를 저장하도록 구성된 지원 레지스터를 더 포함하되, 상태 레지스터는 프로세서에 의해 실행되는 프로그램 코드에 상주하는 전력 제어 인스트럭션에 응답하여 업데이트되도록 구성되는And a support register configured to store the power mode state information, wherein the status register is configured to be updated in response to a power control instruction residing in program code executed by a processor. 회로 장치.Circuit device. 제 9 항에 있어서,The method of claim 9, 상태 레지스터는 전력 모드 레지스터를 포함하는The status register includes a power mode register 회로 장치.Circuit device. 제 9 항에 있어서,The method of claim 9, 상기 상태 레지스터는 전력 소모 제어에 관련되지 않은 상태 정보를 추가로 저장하는The status register further stores status information not related to power consumption control. 회로 장치.Circuit device. 제 1 항에 있어서,The method of claim 1, 상기 회로 장치는 집적 회로 상에 배치되는The circuit device is disposed on an integrated circuit 회로 장치.Circuit device. 제 12 항에 있어서,The method of claim 12, 상기 회로 장치는 상기 집적 회로의 프로세서에 배치되는The circuit device is arranged in the processor of the integrated circuit 회로 장치.Circuit device. 제 1 항의 회로 장치를 정의하는 하드웨어 정의 프로그램(hardware definition program)을 포함하는 프로그램 제품, 및 상기 하드웨어 정의 프로그램을 지속시키는 신호 지속 매체(signal bearing medium)에 있어서,A program product comprising a hardware definition program defining a circuit arrangement of claim 1, and a signal bearing medium for sustaining the hardware definition program, comprising: 상기 신호 지속 매체는 전송 매체 및 기록 가능 매체 중에서 적어도 하나를 포함하는The signal persistent medium includes at least one of a transmission medium and a recordable medium. 프로그램 제품 및 신호 지속 매체.Program product and signal persistence medium. 레지스터 파일에서 전력 소모를 제어하는 방법에 있어서,A method for controlling power consumption in a register file, (a) 상기 레지스터 파일에 있는 다수의 레지스터 뱅크 중의 제 1 및 제 2 레지스터 뱅크로 각각 향하는 제 1 및 제 2 인에이블 신호를 수신하되, 각 레지스터 뱅크는 적어도 하나의 레지스터와, 적어도 하나의 클록 입력, 어드레스 입력 및 데이터 입력을 포함하는 단계와,(a) receive first and second enable signals directed to first and second register banks, respectively, of the plurality of register banks in the register file, each register bank having at least one register and at least one clock input; Including address input and data input, (b) 상기 클록, 어드레스 및 데이터 입력을 게이트 오프함으로써 상기 제 1 인에이블 신호에 응답하여 상기 제 1 레지스터 뱅크를 선택적으로 디스에이블하는 단계를 포함하는(b) selectively disabling the first register bank in response to the first enable signal by gateing off the clock, address, and data inputs; 전력 소모 제어 방법.Power consumption control method. 제 15 항에 있어서,The method of claim 15, 상기 레지스터 파일의 각 레지스터는 CMOS 플립 플롭 및 CMOS 래치 중에서 적어도 하나를 포함하는Each register in the register file includes at least one of a CMOS flip flop and a CMOS latch. 전력 소모 제어 방법.Power consumption control method. 제 15 항에 있어서,The method of claim 15, 상기 제 1 레지스터 뱅크를 선택적으로 디스에이블하는 단계는 상기 인에이블 신호를 상기 제 1 레지스터 뱅크에 커플링된 다수의 게이트 트랜지스터 - 각 게이트 트랜지스터는 상기 클록, 어드레스 및 데이터 입력 중의 하나에 커플링됨 - 에 제공하는 단계를 포함하는Selectively disabling the first register bank comprises: a plurality of gate transistors coupled to the enable signal to the first register bank, each gate transistor coupled to one of the clock, address, and data inputs. Comprising the steps of providing 전력 소모 제어 방법.Power consumption control method. 제 15 항에 있어서,The method of claim 15, 상기 제 1 뱅크가 사용되지 않는 것을 동적으로 결정하는 단계와, Dynamically determining that the first bank is not used; 그에 응답하여 상기 제 1 인에이블 신호를 생성하는 단계를 더 포함하는In response thereto, generating the first enable signal. 전력 소모 제어 방법.Power consumption control method. 제 18 항에 있어서,The method of claim 18, 상기 제 1 레지스터 뱅크가 사용되지 않는 것을 동적으로 결정하는 단계는 상기 레지스터 파일에 제공된 상기 어드레스 입력에 의해 명시된 적어도 하나의 어드레스를 디코딩하는 단계를 포함하는Dynamically determining that the first register bank is not used comprises decoding at least one address specified by the address input provided in the register file. 전력 소모 제어 방법.Power consumption control method. 제 15 항에 있어서,The method of claim 15, 저장된 전력 모드 상태 정보에 응답하여 상기 제 1 및 제 2 인에이블 신호를 생성하는 단계를 더 포함하는Generating the first and second enable signals in response to stored power mode state information. 전력 소모 제어 방법.Power consumption control method. 제 20 항에 있어서,The method of claim 20, 상기 저장된 전력 모드 상태 정보는 지원 레지스터에 저장되며, The stored power mode state information is stored in a support register, 상기 방법은 프로세서에 의해 실행되는 프로그램 코드에 상주하는 전력 제어 인스트럭션에 응답하여 상기 지원 레지스터를 업데이트하는 단계를 더 포함하는The method further includes updating the support register in response to a power control instruction residing in program code executed by a processor. 전력 소모 제어 방법.Power consumption control method.
KR1020057010024A 2002-12-04 2003-12-03 Register file gating to reduce microprocessor power dissipation KR20050084121A (en)

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 (en) 2005-08-26

Family

ID=32469553

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057010024A KR20050084121A (en) 2002-12-04 2003-12-03 Register file gating to reduce microprocessor power dissipation

Country Status (7)

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

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050085281A (en) * 2002-12-04 2005-08-29 코닌클리즈케 필립스 일렉트로닉스 엔.브이. Software-based control of microprocessor power dissipation
JP2004318502A (en) * 2003-04-16 2004-11-11 Matsushita Electric Ind Co Ltd Microprocessor with power control function, and device for converting instruction
KR100636596B1 (en) * 2004-11-25 2006-10-23 한국전자통신연구원 Parallel Data Path Architecture for High Energy Efficient
US7647481B2 (en) * 2005-02-25 2010-01-12 Qualcomm Incorporated Reducing power by shutting down portions of a stacked register file
DE102005036267B4 (en) 2005-08-02 2007-06-21 Infineon Technologies Ag Memory arrangement and method for addressing a memory arrangement
US20070214374A1 (en) * 2006-03-13 2007-09-13 Mark Hempstead Ultra low power system for sensor network applications
CN103646009B (en) 2006-04-12 2016-08-17 索夫特机械公司 The apparatus and method that the instruction matrix of specifying parallel and dependent operations is processed
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 (en) * 2006-11-09 2008-12-10 威盛电子股份有限公司 Power managing method and system
CN101627365B (en) * 2006-11-14 2017-03-29 索夫特机械公司 Multi-threaded architecture
US20090031110A1 (en) * 2007-07-24 2009-01-29 Via Technologies Microcode patch expansion mechanism
US20090031107A1 (en) * 2007-07-24 2009-01-29 Via Technologies On-chip memory providing for microcode patch overlay and constant update functions
US20090031121A1 (en) * 2007-07-24 2009-01-29 Via Technologies Apparatus and method for real-time microcode patch
US20090031090A1 (en) * 2007-07-24 2009-01-29 Via Technologies Apparatus and method for fast one-to-many microcode patch
US20090031103A1 (en) * 2007-07-24 2009-01-29 Via Technologies Mechanism for implementing a microcode patch during fabrication
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
US8718129B2 (en) * 2007-10-03 2014-05-06 Apple Inc. Power saving decoder architecture
US8683134B2 (en) * 2008-01-18 2014-03-25 Texas Instruments Incorporated Upgrade of low priority prefetch requests to high priority real requests 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 (en) * 2008-07-21 2010-06-23 北京大学 Design and access method of microprocessor internal register stack
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
US8200949B1 (en) 2008-12-09 2012-06-12 Nvidia Corporation Policy based allocation of register file cache to threads in multi-threaded processor
CN101788901B (en) * 2009-01-24 2013-09-25 世意法(北京)半导体研发有限责任公司 Device and method for implementing high-efficiency hardware using shadow register
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 (en) * 2010-08-10 2011-02-09 东莞环亚高科电子有限公司 Low-power consumption power supply management equipment for embedded Linux equipment
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 (en) * 2010-09-20 2012-03-22 Texas Instruments Deutschland Gmbh Electronic device for data processing, has control stage that controls switch for connecting one of feedback paths if data output of execution unit in operation of execution unit is utilized as operand
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103635875B (en) 2011-03-25 2018-02-16 英特尔公司 For by using by can subregion engine instance the memory segment that is performed come support code block of virtual core
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
TWI603198B (en) 2011-05-20 2017-10-21 英特爾股份有限公司 Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101639854B1 (en) 2011-05-20 2016-07-14 소프트 머신즈, 인크. An interconnect structure to support the execution of instruction sequences by a plurality of engines
US10534608B2 (en) 2011-08-17 2020-01-14 International Business Machines Corporation Local computation logic embedded in a register file to accelerate programs
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
KR101703401B1 (en) 2011-11-22 2017-02-06 소프트 머신즈, 인크. An accelerated code optimizer for a multiengine microprocessor
US10078518B2 (en) * 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
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
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR101708591B1 (en) 2013-03-15 2017-02-20 소프트 머신즈, 인크. A method for executing multithreaded instructions grouped onto blocks
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
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
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
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
KR102083390B1 (en) 2013-03-15 2020-03-02 인텔 코포레이션 A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
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 (en) * 2019-08-26 2019-12-24 西安理工大学 Low-power-consumption processor register file control method

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 (en) * 1984-08-20 1986-03-13 Toshiba Corp Register type operation processor
JPS63178620A (en) * 1987-01-19 1988-07-22 Nec Corp Clock strobe circuit
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 (en) * 1999-06-09 2000-12-19 Nec Corp Information processor and register file switching method for the processor
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
WO2002017071A1 (en) * 2000-08-22 2002-02-28 Theis Jean Paul A 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
AU2003292451A1 (en) 2004-06-23
US20060168463A1 (en) 2006-07-27
JP2006509290A (en) 2006-03-16
CN1720494A (en) 2006-01-11
US7539879B2 (en) 2009-05-26
WO2004051449A2 (en) 2004-06-17
EP1570334A2 (en) 2005-09-07
WO2004051449A3 (en) 2004-12-16

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 (en) Coprocessors with bypass optimization, variable grid architecture, and fused vector operations
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
Tripathy et al. Slumber: static-power management for gpgpu register files
CN116420140A (en) Dynamically configurable over-provisioned microprocessor
US7536485B2 (en) Processor having inactive state of operation and method thereof
JP4800582B2 (en) Arithmetic processing unit
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 (en) Semiconductor integrated circuit and compiler
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