Power management units for computer systems

Abstract: A power management unit is provided that includes a plurality of configuration registers for storing configuration information to set various operational parameters of the power management unit. A program register is mapped within the configuration space of the computer system and is utilized to store a value which sets the I/O address of the index register. The program register is written during the initialization of the power management unit, and may be associated with a predetermined default value. Once the program register has been set with a value indicating the I/O address of the index register, accesses to the configuration registers are achieved by first writing an offset value to the index register. Subsequently, configuration data may be wrritten into or read out of a designated configuration register by executing an appropriate cycle to the address of the configuration data register, which may be mapped one word location beyond that of the index register. As a result of the programmable index register, the addresses of the index register and the configuration data register within the I/O space of the computer system may be specified via software, thus allowing the system designer greater flexibility with respect to the selection of other peripheral devices incorporated within the computer system.

Description: This invention relates to computer systems and more particularly to power management units including internal configuration registers. Peripheral devices within computer systems typically include a plurality of so-called "configuration" registers. The configuration registers within a particularly peripheral device are provided to store configuration data that controls user programmable operating parameters of the device. For example, configuration registers may be utilized within DMA (direct memory access) controllers to control the direction of a pending data transfer (i.e., memory/-to-I/O or I/O-to-memory), the number of bytes to be transferred, and so on. Similarly, configuration registers may be utilized within timers to set programmable time periods and within interrupt controllers to set the priority and/or masking of various interrupt sources, among other things. The configuration registers of a particular peripheral device are typically accessed by the host processor by first writing an offset value to an index register having a predetermined address within the I/O space. The offset value designates the particular configuration register being written or read. For example, an offset value comprised of 8-bits may be used to select any one of up to 256 different configuration registers. To actually write configuration data into the designated configuration register (pointed to by the off-set value of the index register), an I/O write cycle is executed to an address location referred to as the "configuration data register" location which is typically one word location beyond that of the index register. This causes the physical configuration register pointed to by the offset value of the index register to be written. Read operations to a designated configuration register are accomplished in a similar manner. By employing such an indexing technique, a plurality of index configuration registers within the peripheral device may be selectively written or read while occupying, for example, only two word locations within the I/O addressable space of the commuter system. Power management units typically employ a plurality of configuration registers to control power management modes, time-out values, and the like. Within a typical system, the configuration registers of the power management unit are accessed by employing an indexing scheme similar to that described above. A problem results, however, if the index register address and the corresponding configuration data register address have I/O address values that conflict with the I/O mapping of other peripheral devices desired for employment within the commuter system. If such a situation arises, either the power management unit or the conflicting peripheral device must be removed from the system. This limits the overall flexibility of the computer system. A paper by Frantz G. et al entitled "The Texas Instruments TMS320C25 Digital Signal Microcomputer" IEEE MICRO, Dec. 1986, Vol. 6, No. 6, pp 10-27 discloses a microcomputer in which the memory allocation includes an auxiliary register file containing a plurality of registers that can be indirectly addressed using an auxiliary register pointer. The indirect auxiliary register addressing allows placement of the data memory address of an instruction operand into one of the auxiliary registers. The problems outlined above are in large part solved by a power management unit to be described herein and including a programmable index register for accessing configuration registers. In one embodiment, a power management unit includes a plurality of configuration registers for storing configuration information to set various operational parameters of the power management unit, such as clock control and power control parameters. A program register is mapped within the configuration space of the computer system and is utilized to store a value which indicates the I/O address of the index register. The program register is written during the initialization of the power management unit, and may be associated with a predetermined default value. Once the program register has been set with a value indicating the I/O address of the index register, accesses to the configuration registers are achieved by first writing an offset value to the index register. Subsequently, configuration data may be written into or read out of a designated configuration register by executing an appropriate cycle to the address of the configuration data register, which may be mapped one word location beyond that of the index register. As a result of the programmable index register, the addresses of the index register and the configuration data register within the I/O space of the computer system may be specified via software, thus allowing the system designer greater flexibility with respect to the selection of other peripheral devices incorporated within the computer system. Broadly speaking, we shall describe a power management unit for a computer system comprising a plurality of configuration registers capable of storing configuration information for setting a mode of operation of the power management unit. The power management unit further comprises an index decoder coupled to each of the configuration registers for enabling one of the configuration registers, and an index register coupled to the index decoder and capable of storing an index value that controls which of the configuration registers is enabled by the index decoder. The power management unit finally comprises a programm register capable of storing a value that indicates an address location of the index register, and a control unit coupled to the program register and to the index register. The control unit is capable of causing an index value to be latched within the index register in response to a write cycle to the address location of the index register. We shall describe a method for accessing a plurality of configuration registers within a power management unit of a commuter system comprising the steps of storing a value within a program register that indicates an address location of an index register, storing an index value within the index register by executing a write cycle to the address location of the index register, and enabling one of the plurality of configuration registers according to the index value. The method comprises the final step of writing configuration data into the one of the plurality of configuration registers. Other objects and advantages of the invention will become apparent upon reading the following detailed description and upon reference to the accompanying drawings in which, by way of example only: Figure 1 is a block diagram of a computer system employing a power management unit including a programmable index register for accessing configuration registers in accordance with the present invention. Figure 2 is a diagram illustrating the configuration and I/O space of a computer system employing a power management unit according to the present invention. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the scope of the appended claims. Referring now to the drawings, Figure 1 is a block diagram of a computer system 100 including a microprocessor (CPU) 102 coupled to a power management unit 104 via a system bus 106. Microprocessor 102 is a data processing unit that implements a predetermined instruction set. Exemplary processing units include the models 30386 and 30486 microprocessors, among others. System bus 106 is illustrative of, for example, a PCI local bus. It is understood, however, that other bus standards such as the ISA or EISA bus standards could be alternatively employed. Generally speaking, power management unit 104 is provided for managing the power within computer system 100. Power management unit 104 includes a system monitor 107 capable of monitoring a variety of system activities such as keyboard activities, bus activities, and interrupt activities. A power management control unit 108 is coupled to system monitor 107 and generates a set or power control and clock control signals at lines 110 and 111. The clock control signals control the generation and frequencies of, for example, a CPU clock signal and a system clock signal. The power control signals are used to control the application of power to various peripheral devices (not shown). Exemplary implementations of system monitor 107 and power management control unit 108 are described, for example, in our U.S. Patent No. 5,167,024, and in our copending European application 95301740.7 (0,676,686). Power management unit 104 further includes a configuration registers unit 120 coupled to power management control unit 108, and a control unit 122 coupled to system bus 106. A program register 124 and an index register 126 are further coupled to system bus 106. An index decoder 128 is finally shown coupled to configuration registers unit 120. Configuration registers unit 120 comprises a plurality of configuration registers 120A-120H for storing configuration information that controls the operation of power management control unit 108. It is noted that certain ones of the configuration registers 120A-120H may further be used to store information indicative of the status of power management control unit 108. For example, the configuration registers 120A-120H may be written with configuration information that controls the response of power management control unit 108 to selected system activities as detected by system monitor 106. The configuration information may further control which peripheral devices (not shown) are powered down during a particular power management mode, and may control the frequencies of selected clock signals during a particular management mode. The configuration information may also control certain time-out values associated with the power management control unit 108, such as a time-out value that controls the entrance of a power reduction mode when no system activities are detected. The configuration registers may finally store status information such as, for example, the current mode of power management control unit 108. Program register 124 is mapped at a predetermined location within the configuration space of computer system 100 and is provided to store a parameter that sets the address value of index register 126 within the I/O space of computer system 100. During initialization of computer system 100, the system programmer may write a desired address value for index register 126 into program register 124. This is accomplished by executing a write cycle to the predetermined address of the configuration space to which program register 124 is mapped. As a result of such a cycle, the IDSEL signal to power management unit 104 is driven on system bus 106 along with the corresponding address and control signals. Control unit 122 responsively provides a latching enable signal to program register 124 that causes the index address value on the data lines of system bus 106 to be latched within program register 124. Index register 126 is provided for storing an index value which controls the particular configuration register 120A-120H to which index decoder 128 points. The index register 126 may be written with an index value by executing an I/O write cycle to the address location as specified by the value within program register 124. In response to such an I/O write cycle, control unit 122 provides a latching enable signal to the index register 126 which causes the index value driven on data lines of system bus 106 to be latched within index register 126. index decoder 128 is a decoding circuit that decodes the index value of index register 128 and accordingly asserts an enable signal at one of the lines 140A-140H coupled to separate enable inputs of configuration registers 120A-120H. Once a desired index value has been stored within the index register 126, the particular configuration register 120A-120H pointed to by index decoder 128 (i.e., the enabled configuration register) may be written with configuration data by executing an I/O write cycle to an address location one word beyond that of the address of index register 126. In response to such an I/O write cycle, control unit 122 asserts a write enable signal at line 142 which causes the configuration data from system bus 106 to be stored within the designated configuration register 120A-120H. Similar I/O read cycles may be executed to cause control unit 122 to enable (via line 144) the output of a designated configuration register unit 120A-120H to thereby read the status of the configuration register. Figure 2 is a diagram that illustrates a portion of the configuration space 202 and I/O space 204 of computer system 100. As illustrated within the figure, program register 124 is mapped to a predetermined location within the configuration space of computer system 100. In the illustrated example, a value of 40 hexadecimal is stored within program register 124. Thus, this sets the I/O address of index register 126, along with the corresponding address of the configuration data register. That is, accesses to index register 126 must be made to the I/O address of 40h, while accesses to the configuration data register must be made to the I/O address of 42h. Once the value 40h is stored within program register 124, an I/O write cycle to the I/O location of 40h results in the storage of an index value within index register 126. A subsequent I/O write cycle to the address location 42h may then be executed to write configuration data to the particular configuration register 120A-120H pointed to by the index value. Status information may be read from configuration registers 120A-120H in a similar manner. By providing program register 124, the address of the index register 126 and the corresponding configuration data register (which in this embodiment is always one word location beyond the specified address of the index register) may be programmed by the user, thus allowing the system programmer to avoid conflicts with other I/O peripheral devices which occupy predetermined I/O address locations. It is noted that while the "configuration data register" address as mapped within the computer system 100 is located one word location beyond that of the programmed address of index register 126, the configuration data register location could be provided at any offset relative to the index register. Furthermore, although program register 124 is mapped within the configuration space of computer system 100, it is possible to map program register 124 within the memory or I/O space of computer system 100. It is additionally noted that computer aided design tools may be employed to reduce control unit 122 to a sequential logic circuit. Exemplary computer-aided design tools include the behavioral language Verilog as well as the VHSIC hardware description language. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. For example, it is understood that any number of configuration registers could be provided within the power management unit. It is intended that the following claims be interpreted to embrace all such variations and modifications.

Claims: A power management unit (104) for a computer system (100) comprising: a plurality of configuration registers (120A-120H) capable of storing configuration information for setting a mode of operation of said power management unit; an index decoder (128) coupled to each of said plurality of configuration registers for enabling one of said plurality of configuration registers; an index register (126) coupled to said index decoder and capable of storing an index value that controls which of said one of said plurality of configuration registers is enabled by said index decoder; a program register (124) capable of storing a value that indicates an address location of said index register; and a control unit (122) coupled to said program register and to said index register, wherein said control unit is capable of causing an index value to be latched within said index register in response to a write cycle to said address location of said index register. The power management unit as claimed in Claim 1 wherein said program register is mapped within a configuration space of said computer system. The power management unit as claimed in Claim 1 wherein said index register is mapped within an I/O space of said computer system. The power management unit as claimed in Claim 1 wherein said control unit is further capable of causing configuration data to be latched within said one of said plurality of configuration registers in response to a write cycle to a configuration data register location. The power management unit as claimed in Claim 1 further comprising a power management control unit (108) coupled to said plurality of configuration registers, wherein said power management control unit includes a plurality of clock control lines (111) for controlling frequencies of a system clock signal and a CPU clock signal. The power management unit as claimed in Claim 5 further comprising a system monitor (107) coupled to said power management control unit, wherein said system monitor is capable of detecting an occurrence of a selected system activity. The power management unit as claimed in Claim 1 wherein said control unit is further capable of asserting a latching enable signal to said program register. A computer system comprising: a processing unit (102); a system bus (106) coupled to said processing unit; and a power management unit according to any one of the preceding claims coupled to said system bus. A method for accessing a plurality of configuration registers (120A-120H) within a power management unit (104) of a computer system comprising the steps of: storing a value within a program register (124) that indicates an address location of an index register (126); storing an index value within said index register by executing a write cycle to said address location of said index register; enabling one of said plurality of configuration registers according to said index value; and writing configuration data into said one of said plurality of configuration registers. The method as claimed in Claim 9 wherein the step of storing a value within the program register includes the step of executing a write cycle within a configuration address space of the computer system. The method as claimed in Claim 10 wherein the step of storing an index value within the index register includes the step of executing a write cycle within an I/O address space of the computer system.

Inventors: O'BRIEN RITA M, WISOR MICHAEL T, O'BRIEN, RITA M., WISOR, MICHAEL T.
Applicants: ADVANCED MICRO DEVICES INC, ADVANCED MICRO DEVICES INC.
Application year: 1995
Main classification: G06F1
IPC codes: G06F1, G06F13