Abstract:
A variable speed data processor includes a clock generator generating a plurality of clocks at different clock rates. Clock select circuitry synchronously selects one of the clocks as an output clock signal to data processing circuitry, based on a data activity indication. Activity logic generates the data activity indication based at least in part on the existence of data processing activity targeted to the data processing circuitry. When the data processing circuitry experiences bursty data processing activity, the clock rate can shift rapidly between the multiple clock rates, conserving power without substantially diminishing the availability of the data processing circuitry.

Description:
BACKGROUND  
       [0001]     The present disclosure relates generally to information handling systems, and more particularly to an apparatus and method for operating such a system or component thereof at multiple clock speeds.  
         [0002]     As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option is an information handling system. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes. Because technology and information handling needs and requirements may vary between different applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.  
         [0003]     Information handling systems use one or more integrated circuits to process and/or store data. Integrated circuits typically contain thousands—and in many cases millions—of transistors and other elements arranged in logical blocks. Many such logical blocks are formed using arrangements of, e.g., field-effect transistors (FETs), which consume power when switched, and consume little or no power in a stable state.  
         [0004]     The logical blocks in an integrated circuit often operate according to a reference clock signal that controls the flow of data through the circuit in an orderly and predictable fashion. As the clock rate of the reference signal is increased, the integrated circuit can process data faster (up to a point where thermal or minimum timing budgets can no longer be met). But because the logical blocks switch more times per second at a higher clock rate, the power dissipated by the integrated circuit increases as a function of the clock rate.  
         [0005]     Others have recognized that in some applications, power consumption can be reduced by tailoring the speed to the processing load. For instance, some mobile processors use a technology that can temporarily halt a processor core, change the processor clock rate, and then resume the processor core, when the mobile processor switches between external power and battery power.  
         [0006]     One known system describes an integrated circuit clocking system using two voltage-controlled oscillators (VCOs). The first VCO functions in a phase-locked loop (PLL) that maintains a desired frequency relationship to an input reference clock. The control voltage supplied by the PLL to the first VCO is also supplied to a second VCO, which actually supplies the core clock signal to the integrated circuit after an initialization period.  
         [0007]     A mixer allows the control voltage to be offset at the input to the second VCO by one of several selectable voltages. A controller can step between the selectable voltages to slew the VCO frequency in small frequency increments, to decrease the core clock signal by up to 25% in steps when appropriate. Thus power consumption can be tailored over time to sensed current, power, temperature, or processing load without stalling the processor.  
       SUMMARY  
       [0008]     A data processor comprises a clock generator, clock select circuitry, data processing circuitry, and activity logic. The clock generator simultaneously generates a plurality of reference clock signals at different clock rates. The clock select circuitry synchronously selects one of the reference clock signals as an output clock signal, based on a data activity indication. The data processing circuitry operates based on the output clock signal. The activity logic generates the data activity indication based at least in part on the existence of data processing activity targeted to the data processing circuitry.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0009]      FIG. 1  shows a prior art information handling system that can be adapted to include an embodiment described herein;  
         [0010]      FIG. 2  contains a timing diagram for operation according to an embodiment;  
         [0011]      FIG. 3  illustrates, in block diagram form, some elements of a graphics processor according to an embodiment; and  
         [0012]      FIG. 4  illustrates another embodiment with multiple variable speed logic sections that have independently variable clock rates.  
     
    
     DETAILED DESCRIPTION  
       [0013]     For purposes of this disclosure, an information handling system may include any instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, entertainment, or other purposes. For example, an information handling system may be a personal computer, a PDA, a consumer electronic device, a network server or storage device, a switch router or other network communication device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include memory, one or more processing resources such as a central processing unit (CPU) or hardware or software control logic. Additional components of the information handling system may include one or more storage devices, one or more communications ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, and a video display. The information handling system may also include one or more buses operable to transmit communications between the various hardware components.  
         [0014]     In one embodiment, information handling system  100 ,  FIG. 1 , is a computer system that include at least one processor  120 , which is connected to a bus FSB. Bus FSB serves as a connection between processor  120  and other components of computer system  100 . In the illustrated configuration, bus FSB connects processor  120  to a North Bridge  130 , part of a “chipset” that also includes a South Bridge  140 .  
         [0015]     In addition to interfacing with processor  120 , North Bridge  130  maintains three interfaces to other system components. North Bridge  130  interfaces with high-speed memory  150 , e.g., Synchronous Dynamic Random Access Memory (SDRAM), across a memory bus  155 . North Bridge  130  interfaces with a graphics processor  160  across a graphics bus, which in this case is shown as a PCI Express bus (“PCIE bus”)  165  conforming to the Peripheral Component Interconnect Express specification “PCI Express Base Specification 1.0a” promulgated by the PCI Special Interest Group (SIG). North Bridge  130  interfaces with South Bridge  140  across a second PCIE bus  145 .  
         [0016]     South Bridge  140  connects to other buses and peripherals that can exist in various computer systems. These other buses can include parallel and/or serial ATA buses or SCSI buses for connection to mass storage devices such as hard disks, optical disks, magneto-optical drives, floppy drives, and the like. Other PCIE or PCI buses can connect to network interface cards, flash memory, video/audio capture devices, and other peripherals. Universal Serial Bus, IEEE 1394, serial bus, parallel bus, and other bus ports can connect directly to south bridge  140 , or be bridged by other devices. Such bus ports can provide connections for input devices such as a keyboard, a touchscreen, and pointing devices such as a mouse, trackball, or trackpad.  
         [0017]     A display  170  is typically connected to graphics processor  160  to provide visual program output for computer programs running on processor  120 .  
         [0018]     A clock generator  180  supplies a system clock to, e.g., processor  120 , North Bridge  130 , South Bridge  140 , memory  150 , and graphics processor  160 . Clock generator  180  generally provides a stable reference for other system components to phase-lock with, and to base their bus transfer rates on.  
         [0019]     This description is not intended to be all-inclusive, but to provide common examples of computer system configuration. Not all computer systems use the basic chipset configuration shown herein, and many such systems include fewer or more components.  
         [0020]     It is recognized herein that some processors, such as graphics processors, contain circuitry that could benefit from a different form of variable clocking than that provided by the prior art. Such processors may contain some functions that are sometimes used sporadically, but that may require fast response and/or high throughput when active, such as a three-dimensional (3D) graphics processing engine. It would be advantageous to provide for different clock rates for such an engine, depending on whether graphics activity is currently targeted to the 3D graphics engine. But because graphics latency is undesirable, a variable clocking method would be much more attractive were it possible to provide near-instantaneous switching between the clock rates. Also, such a capability could allow frequent clock rate switching at the edges of graphics activity bursts.  
         [0021]     Of particular interest in describing a first embodiment is the method in which computer system  100  produces displayable output to a user on display  170 . Many programs have features that allow users to display text and stationary graphics or images on one or more displays  170 . Some programs have features that display video and animated graphics. In many information handling systems, processor  120  relies on graphics processor  160  to produce much of this displayable output, freeing the processor to perform other tasks, and generally providing a more fluid graphics experience than would exist if the processor had to render all graphics itself.  
         [0022]     For stationary graphics and text, graphics processor  160  provides graphics functions that can be requested by processor  120 . Typical functions include line-drawing, block-filling (or, more generally, polygon-filling), shading, block translation, and copy-block-from-memory functions that can be invoked and executed without further processor intervention. Graphics processor  160  may directly access graphical elements stored in memory  150  to build the requested graphics to an internal frame buffer. The contents of the internal frame buffer are read in an appropriate video format to display  170  at a desired frame rate. Processor  120  sends graphics requests to graphics processor  160  over PCIE bus  165 .  
         [0023]     For video and animated graphics, graphics processor can provide even more powerful capabilities. Digital video is stored in a compressed format that cannot be displayed until decoded with an appropriate codec (coder/decoder). Graphics processors can provide a video codec, or some subfunctions of such a codec, to aid processor  120  in displaying digital video. Graphics processors can also provide a 3D pipeline to render three-dimensional images and animation, e.g., for computer-aided design, gaming, etc. The 3D pipeline may provide such functions as z-buffering, polygon fill and texture application, lighting, shading, anti-aliasing, etc. Typically, the graphics processor will retain recently used texture maps and polygon data in its onboard memory, and obtains other maps and data from memory  150  when needed, by interacting directly with North Bridge  130  over PCIE bus  165 .  
         [0024]      FIG. 2  contains a timing diagram for a graphics processor embodiment  300  illustrated in  FIG. 3 . Briefly, graphics processor  300  comprises a clock generator  310 , clock select circuitry  320 , PCIE bus logic  330 , and a GPU pipeline  340 .  
         [0025]     Clock generator  310  comprises a phase-locked loop (PLL)  312  and two post-divide circuits P 1  and P 2 . PLL  312  receives an external system clock signal and creates an internal reference clock RCLK based on the system clock, e.g., in phase with the system clock and related to the system clock by a ratio N:M, where N and M are integers.  
         [0026]     Post-divide circuits P 1  and P 2  further divide RCLK to produce two clock signals CLK 1  and CLK 2 . In  FIG. 2 , CLK 1  is shown half the rate of RCLK and CLK 2  is one-eighth the rate of RCLK, although any two appropriate ratios (including 1:1 for CLK 1 ) can be selected for CLK 1  and CLK 2 . Circuits P 1  and P 2  can be implemented, for instance, using counters.  
         [0027]     Clock select circuit  320  comprises a multiplexer (MUX)  322 , a clock switch synchronizer  324 , and speed select logic  326 . Multiplexer  322  receives CLK 1  and CLK 2 , and selects one of the two clocks as an output clock OCLK. The multiplexer contains a selection input that receives a synchronized selection signal SEL_SYNC from clock switch synchronizer  324 . SEL_SYNC can switch OCLK between CLK 1  and CLK 2  at certain times, as will be explored further below.  
         [0028]     Clock switch synchronizer  324  produces SEL_SYNC in response to a CLK_SEL signal supplied by speed select logic  326 . The task of synchronizer  324  is to apply CLK_SEL to MUX  322  at a time that will not produce a timing glitch, i.e., an interval between two OCLK clock transitions that is substantially shorter than a standard CLK 1  clock transition. One way to accomplish this task is to latch CLK_SEL to SEL_SYNC near a time when CLK 1  and CLK 2  both have positive clock edges or both have negative clock edges that are closely aligned. For instance, synchronizer  324  generates an internal SEL_LAT latch signal (not shown in  FIG. 3 ) based on CLK 1  and CLK 2  each time a positive transition of CLK 1  coincides with a positive transition of CLK 2 . Thus the CLK_SEL signal is re-timed to produce an OCLK clock signal that cleanly varies between CLK 1  and CLK 2  as requested.  
         [0029]     The complexity of clock switch synchronizer  324  may depend on the relationship between CLK 1  and CLK 2 . When the CLK 1  clock rate is an integer multiple of the CLK 2  clock rate (with positive edges aligned as shown), the positive edge of CLK 2  can be used as the SEL_LAT signal. With appropriate logic, clock select transitions in a specific direction could be allowed according to other schemes as well, e.g., from CLK 2  to CLK 1  on any negative edge of CLK 1 .  
         [0030]     The embodiments are not limited to integer CLK 1 /CLK 2  multiples. Generally, two edge-triggered short pulse generators based respectively on CLK 1  and CLK 2  latches can be used to determine when CLK 1  and CLK 2  edges are sufficiently aligned to allow a transition. The pulse duration and SEL_LAT can be based, e.g., on RCLK.  
         [0031]     Speed select logic  326  bases CLK_SEL on knowledge of the activity level of data processing circuitry in graphics processor  300 , e.g., GPU pipeline  340 . For instance, GPU pipeline  340  can contain activity logic that asserts the GPU pipeline activity signal when either: a) a shader execution unit is processing shader instructions, data references, or state changes; b) shader instructions, context, state information, or data (vertex descriptions, texture data, pixel descriptors such as color, alpha, depth, etc.) are being loaded or unloaded from the pipeline&#39;s buffers or registers; and/or c) such operations are imminent, e.g., the operations are queued in buffers ready for execution as soon as a needed resource becomes available. When none of these conditions are true, GPU pipeline  340  deasserts the GPU pipeline activity signal.  
         [0032]     In many instances, it may be possible for PCIE bus logic  330  to become aware that GPU pipeline activity is imminent, even before GPU pipeline  340  receives instructions. The PCIE bus uses packet-based communications to perform data transfers. Each packet can be classified as either a Link Layer Transaction Packet (LLTP) or a Data Link Layer Packet (DLLP). The DLLPs relate to the state of the PCIE bus entities themselves, and are consumed by PCIE bus logic  330 . The LLTPs contain data payloads, some of which may be targeted to GPU pipeline  340 , and some of which may be targeted to other data units (not shown) in the graphics processor. Each LLTP encapsulates a Transaction Layer Packet (TLP), which contains a header, encapsulated data or payload, and a digest field. The header encodes whether the data represents a Memory, I/O, Configuration, or Message packet. Of these types, only Memory TLPs represent data targeted for pipeline  340 . The header address field of a Memory TLP will determine whether the data represents pipeline configuration, status, shader instructions, textures, vertex streams, etc. In one embodiment, then, PCIE bus logic  330  contains activity logic to assert a Receive Bus Activity signal to speed select logic  326  when it receives an LLTP containing a valid TLP, the TLP contains a reference targeted to GPU pipeline  340 , and bus logic  330  is ready to transmit the TLP contents to GPU pipeline  340 . As shown in  FIG. 2 , PCIE bus activity directed to the GPU pipeline causes the assertion of the Receive Bus Activity signal, and other PCIE bus activity does not.  
         [0033]     In one embodiment, speed select logic  326  uses both the Receive Bus Activity signal and the GPU Pipeline Activity signal to determine what value of OCLK to supply to GPU pipeline  340 . Speed select logic  326  ORs the two activity signals to generate CLK_SEL. It is noted that periods of activity in an actual processor generally span many more clock periods than are illustrated in  FIG. 2 , but the concept is illustrated over even a few clock periods.  
         [0034]     In some embodiments, the GPU pipeline activity logic may determine that even though it is not quiesced, it does not require the higher clock rate to perform the tasks it has been assigned. For instance, a given combination of frame rate, graphics image size, number of active polygons, and shading method may be met by GPU pipeline  340  at the CLK 2  rate. In this case, GPU pipeline  340  can indicate low activity, even though it is not quiesced. The activity signal can also have more than two states in some embodiments, allowing MUX  322  to select between more than two clock references.  
         [0035]     In some embodiments, an override signal can be provided (not shown) that forces speed select logic  326  to select either the CLK 1  rate or the CLK 2  rate, regardless of the state of the receive bus activity and GPU pipeline activity signals, or forces the state of one or both of the receive bus activity and GPU pipeline activity signals. For instance, a user can be provided with a power management control panel that allows the user to select, for a given power mode, either a high graphics/high power setting, a low graphics/low power setting, or a power-managed high graphics setting. The first two settings force MUX  322  to select, respectively, CLK 1  and CLK 2 , and do not vary clock speed with activity indication. The third setting allows speed selection as explained above. Although a user setting is one example, other system or software conditions could provide an override as well, such as a computer game that requires maximum GPU availability, and therefore activates the override when the game is active.  
         [0036]      FIG. 4  shows a data processor  400  including multiple variable speed logic units. A clock generator  410  receives a system clock and generates two clocks CLK 1  and CLK 2 , e.g., similar to clock generator  310  of  FIG. 3 . High-speed clock CLK 1  is applied to a high-speed logic block  450 , and to three clock select circuits  420 A,  420 B, and  420 C. Low-speed clock CLK 2  is supplied to low speed logic  460  and to clock select circuits  420 A,  420 B, and  420 C.  
         [0037]     Clock select circuits  420 A,  420 B, and  420 C generate respective output clock signals OCLK 1 , OCLK 2 , and OCLK 3  to three variable speed logic units  440 A,  440 B, and  440 C. Variable speed logic  440 A,  440 B, and  440 C can operate independently through high-speed logic  450 , or can be chained serially such that logic  440 B operates on an output of logic  440 A and logic  440 C operates on an output of logic  440 B. Each clock select circuit selects CLK 1  or CLK 2  for the clock rate of its assigned variable speed logic unit based on unit activity. Clock select circuit  420 A bases its output clock rate on the unit activity of logic  440 A and receive bus activity (for logic  440 A) from PCIE bus logic  430 . Clock select circuit  420 B bases its output clock rate on the unit activity of logic  440 B, receive bus activity for logic  440 B, and on an imminent activity signal from logic  440 A when the units are chained serially. Likewise, clock select circuit  420 C bases its output clock rate on the unit activity of logic  440 C, receive bus activity for logic  440 C, and on an imminent activity signal from logic  440 B when the units are chained serially. Thus each variable speed logic unit can be sped up and slowed down independent of the other variable speed logic units, according to the near-term processing requirements of each logic unit.  
         [0038]     Although graphics processors have been used in exemplary embodiments, the principles disclosed herein are applicable to other data processors. For instance, packet processors can be partitioned such that the clock rate of individual engines on a processor can be tailored to the activity of each engine. Those skilled in the art will recognize after reading this disclosure that a variety of logic circuits other than those specifically disclosed are available for implementing the functions described herein. For instance, stage outputs of a common multi-stage counter can be used to implement the multiple clock outputs of the clock generator in some embodiments. Activity logic will generally depend on the characteristics of the data processor for which the variable speed clock is supplied.  
         [0039]     Although illustrative embodiments have been shown and described, a wide range of modification, change and substitution is contemplated in the foregoing disclosure and in some instances, some features of the embodiments may be employed without a corresponding use of other features. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the embodiments disclosed herein.