A basic input/output system (BIOS) evaluates a plurality of performance state data that is stored in a disposable memory to determine if one of the plurality matches a set of processor criteria, which correspond to a processor of the computer system. Each of the plurality of performance state data corresponds to one or more processors. The BIOS selects the one of the plurality that matches the criteria to some degree (e.g., exactly, nearly, etc.) and stores it in BIOS runtime memory. If there are no matches, then the BIOS may select a default performance state table or dynamically generate a performance state table.
|
24. A computer program product stored on computer readable medium operable in a computer system to:
determine whether a match exists between a processor being utilized in the computer system and performance state information for a plurality of processors; and
generate performance state data after no match is found to exist.
29. An apparatus comprising:
means for determining if performance state data stored in the computer system specifying performance states for a plurality of processors is associated with a processor being utilized in the computer system; and
means for generating performance state data if none of the performance state data is associated with the processor being utilized in the computer system.
11. A method of operating a computer system comprising:
determining if any performance state data stored in the computer system specifying performance states for a plurality of processors is associated with a processor being utilized in the computer system; and
generating performance state data if none of the performance state data is associated with the processor being utilized in the computer system.
28. An apparatus comprising:
means for evaluating information in a plurality of performance state tables, each of the performance state tables having information relating to a performance state of a processor; and
if a match is not found between one of the performance state tables and a processor being utilized in the computer system, means for determining if a near match exists and utilizing one of the performance state tables that is a near match to the processor if the near match exists.
7. A method of operating a computer system comprising:
evaluating information in a plurality of performance state tables, each of the performance state tables having information relating to a performance state of a processor; and
if a match is not found between one of the performance state tables and a processor being utilized in the computer system, determining if a near match exists and utilizing one of the performance state tables that is a near match to the processor if the near match exists.
21. A computer program product stored on computer readable medium operable in a computer system to:
determine whether a match exists between a processor being utilized in the computer system and any of a plurality of performance state data associated with respective processors; and
if a match is not found between any of the performance state tables and the processor being utilized in the computer system, the computer program product being operable to determine if a near match exists and utilize performance information from one of the performance state tables that is a near match to the processor if the near match exists.
6. A method of operating a computer system comprising:
determining if any performance state data stored in the computer system in a first area of memory specifying performance states for a plurality of processors is associated with a processor being utilized in the computer system;
if a portion of the performance state data is found to be associated with the processor being utilized in the computer system, copying the portion of the performance state data into a second area of memory; and
generating performance state data if none of the performance state data is associated with the processor being utilized in the computer system and a near match does not exist.
1. A method of operating a computer system comprising:
determining if any performance state data stored in the computer system in a first area of memory specifying performance states for a plurality of processors is associated with a processor being utilized in the computer system;
if a portion of the performance state data is found to be associated with the processor being utilized in the computer system, copying the portion of the performance state data into a second area of memory; and
if a portion of the performance state data is not found to be associated with the processor being utilized in the computer system, determining if a near match exists between a portion of the performance state data and the processor being utilized in the computer system.
16. A computer program product stored on computer readable medium operable in a computer system to:
determine whether a match exists between a processor being utilized in the computer system and performance state information stored in a first area of memory;
if a match exists, copy matching performance state information into a second area of memory, wherein the first area of memory is a memory segment utilized during power on self test (POST) processing by basic input output system (BIOS) and wherein the second area of memory is a runtime memory segment of BIOS; and
if no match is found to exist, generate performance state data after no match is found to exist between any of the performance state data and the processor being utilized in the computer system.
20. A computer program product stored on computer readable medium operable in a computer system to:
determine whether a match exists between a processor being utilized in the computer system and performance state information stored in a first area of memory;
if a match exists, copy matching performance state information into a second area of memory, wherein the first area of memory is a memory segment utilized during power on self test (POST) processing by basic input output system (BIOS) and wherein the second area of memory is a runtime memory segment of BIOS; and
determine if a near match exists and utilize performance information from performance state data that constitutes a near match to the processor if the near match exists and if the match is not found between any of the performance data and the processor being utilized in the computer system.
2. The method as recited in
3. The method as recited in
5. The method as recited in
8. The method as recited in
9. The method as recited in
10. The method as recited in
if a match is not found between one of the performance state tables and a processor being utilized in the computer system, and if the near match is determined not to exist, generating performance state data based on, at least in part, information provided in the processor.
12. The method as recited in
13. The method as recited in
14. The method as recited in
15. The method as recited in
17. The computer program product as recited in
18. The computer program product as recited in
19. The computer program product as recited in
22. The computer program product as recited in
23. The computer program product as recited in
generate the performance state data based on information provided in the processor if a match is not found between any of the performance state tables and the processor being utilized in the computer system, and if the near match is determined not to exist.
25. The computer program product as recited in
26. The computer program product as recited in
27. The computer program product as recited in
|
1. Field of the Invention
This invention relates to computer systems and more particularly to aspects of power management and BIOS.
2. Description of the Related Art
Computing systems are information handling systems which are designed to give independent computing power to one or more users. Computing systems can be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, internet terminals, notebooks and embedded systems. Personal computer (PC) systems include desk top, floor standing, or portable versions. A typical PC system is a microcomputer that includes a microprocessor, associated memory and control logic (typically on a system board) and a number of peripheral devices that provide input and/or output (I/O) for the system.
Computing systems typically include a set of built-in software routines called the basic input/output system (BIOS). The BIOS is a software interface between the system hardware and the operating system software. The BIOS facilitates programmer and user interaction with the system hardware. The BIOS is often referred to as firmware. Like software, the BIOS is a set of instructions to the computer's microprocessor. The BIOS is commonly coded using, for example, assembly language, and stored onto a non-volatile memory such as a ROM (Read Only Memory) or a PROM (Programmable ROM) such as an EPROM (Erasable PROM), an EEPROM (Electrically Erasable PROM), a flash RAM (Random Access Memory) or any other type of memory appropriate for storing BIOS.
The BIOS controls several important functions of personal computer systems. For instance, the BIOS performs various functions at power up, including testing and initializing memory, inventorying and initializing the system, and testing the system. These functions at power up are referred to as “system boot” or “booting the system” and can occur every time the system powers up or is reset. One part of power up is referred to as Power On Self Test (POST). The POST routines include testing various aspects of the system.
The BIOS also controls keystroke interpretation, display of characters, and communication via the PC ports. The operating system and application programs of a computer system access the BIOS rather than directly manipulating I/O ports, registers and control words of the specific system hardware. BIOS can be accessed through an interface of software interrupts and contains a plurality of entry points respectively corresponding to the different interrupts.
Another function supported by BIOS relates to processor performance states. Microprocessors utilized in mobile applications, i.e., those used in battery powered systems, are particularly sensitive to power considerations. That is in part due to the small, densely packed system construction that limits the ability of the mobile computer system to safely dissipate the heat generated. A particular processor may operate at a number of different performance levels to achieve power management goals.
Appropriately monitoring and controlling the processor's operating parameters is important to optimizing the computer's performance, power consumption, and in the case of a portable or notebook computer, battery life. One of the current power management techniques utilized provides a computer system that has multiple performance states. The computer system determines an appropriate performance state based on system utilization or other information, such as temperature or battery life, and adjusts the performance of the system accordingly. Each performance state is made up of a particular voltage and operating frequency. The performance states may be stored in performance state tables, which specify a plurality of voltage and frequency combinations for a particular processor. In one approach, e.g., the PowerNow!™ technology from Advanced Micro Devices, a driver utilizes the performance state tables to dynamically change performance states and saves power by operating only as fast as required by the current system utilization.
The BIOS programmer has to manually build each performance state table from information provided, e.g., in processor data sheets. Because BIOS typically has to support several different processors over the life of a product, many performance state tables may be included in a BIOS version. However, certain performance states supported by one processor may not be supported by another processor. In fact, processors may be nominally the same but be built by slightly different processes resulting in different voltages and frequencies being supported. It is undesirable to revise BIOS frequently to support additional performance states. On the other hand it is may be unwieldy for BIOS to support large numbers of performance states.
Accordingly, it would be desirable to provide a way for BIOS to effectively handle a large number of performance states without affecting runtime resources. In addition, it would be desirable to be able to suitably support a processor when none of the performance state tables in BIOS match the processor in the system.
Storing multiple performance state tables for various processors in a disposable memory segment and storing one of the multiple performance state tables in a runtime memory segment, allows the performance state table footprint in runtime memory to be reduced while facilitating a BIOS that supports multiple processors. The performance state table stored into the runtime memory segment satisfies to some degree one or more criteria that correspond to the processor of the system in which the BIOS resides. However, some embodiments of the invention provide for a default performance state table or provide for dynamic generation of a performance state table, typically when a performance state table in the disposable memory segment does not satisfy the processor criteria.
According to some embodiments of the invention, a method of operating a computer system comprises determining if any performance state data stored in the computer system in a first area of memory specifying performance states for a plurality of processors is associated with a processor being utilized in the computer system. The method also comprises copying the portion of the performance state data into a second area of memory if a portion of the performance state data is found to be associated with the processor being utilized in the computer system.
According to some embodiments of the invention, a computer program product stored on computer readable medium is operable in a computer system to determine whether a match exists between a processor being utilized in the computer system and performance state information for a plurality of processors. In addition, the computer program product is operable to generate performance state data after no match is found to exist.
According to some embodiments of the invention, an apparatus comprises means for determining if any performance state data specifying performance states for a plurality of processors, which is stored a first area of memory of a computer system utilized for system boot, is associated with a processor being utilized in the computer system. The apparatus also comprises means for copying a portion of the performance state data into a second area of memory if the portion of the performance state data is found to be associated with the processor being utilized in the computer system.
According to some embodiments of the invention, an apparatus comprises means for evaluating information in a plurality of performance state tables, each of the performance state tables having information relating to a performance state of a processor. The apparatus also comprises means for determining if a near match exists and utilizing one of the performance state tables that is a near match to the processor if the near match exists, if a match is not found between one of the performance state tables and a processor being utilized in the computer system.
According to some embodiments of the invention, an apparatus comprises means for determining if any performance state data stored in the computer system specifying performance states for a plurality of processors is associated with a processor being utilized in the computer system. The apparatus also comprises means for generating performance state data if none of the performance state data is associated with the processor being utilized in the computer system.
According to some embodiments of the invention, a computer program product stored on computer readable medium operable in a computer system to copy one of a plurality of performance state data associated with respective processors from a disposable memory segment into a runtime memory segment. The computer program product is also operable to generate an advanced configuration and power interface object based at least in part on the copied performance state data.
According to some embodiments of the invention, a computer system comprises memory that hosts a basic input/output system (BIOS) that selects a first of a plurality of performance state information from a first area of memory into a second area of memory. The first area of memory is to be utilized during power on self test (POST) processing by the BIOS, and the second area of memory is to be used for a runtime memory segment of BIOS. The computer system also comprises a processor coupled with the memory.
These and other aspects of the described invention will be better described with reference to the Detailed Description and accompanying Figures.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The use of the same reference symbols in different drawings indicates similar or identical items.
The description that follows includes exemplary systems, methods, techniques, and data structures that embody techniques of the present invention. However, it is understood that the described invention may be practiced without these specific details. In other instances, well-known protocols, structures and techniques have not been shown in detail in order not to obscure the invention.
If multiple PSTs are placed in the runtime memory segment, a single BIOS can support multiple processors. Supporting multiple processors with a single BIOS reduces maintenance burdens and increases efficiency of product maintenance and production. However, consumption of valuable memory space in the runtime memory segment, which is limited in size, can be reduced while still supporting different processors. In various realizations of the invention, a BIOS performs varying levels of screening of PSTs for multiple processors. Varying levels of screening reduces the amount of the runtime memory segment consumed by PSTs.
In some embodiments of the invention, a BIOS loads multiple PSTs into a “throw away” or disposable memory segment. The BIOS screens the throw away memory segment for an appropriate PST. The BIOS constructs a simple single-PST performance state block (PSB) at the appropriate address boundary in a runtime memory space segment.
The appropriate PST will match a set of parameters corresponding to the host processor. For example, those parameters include the CPUID, MaxFID, StartVID, and FSB clock speed. Other embodiments may utilize other parameters in place of, or in addition to those named.
If a match is found with a PST in the throw away segment, the BIOS copies that PST's information to the single PST runtime PSB. Screening available PSTs that are stored in a throw away memory segment for a parameter matching PST reduces the footprint for supporting a PSB in the runtime memory significantly. To illustrate the reduction, in some embodiments of the invention, the memory footprint can be reduced from over 500 bytes to a fixed size of only 56 bytes. The 56 byte footprint supports up to 16 power states (at 2 bytes per power state). By placing the available PSTs in the throw away memory segment, a BIOS can support a large number of pre-defined PSTs without consuming valuable memory space in runtime memory space segment.
In some embodiments, the PST support code and tables are located in the throw away memory segment of the BIOS that is only available during power-on self-test (POST). The POST is a period of time during which BIOS initializes and tests the hardware resources of a personal computer.
Separating PSTs into PSBs facilitates partitioning groups of PSTs according to some design criteria. In scanning for a parameter matching PST, in some embodiments, the BIOS determines which PSB is appropriate for the platform and scans through the multiple PSTs in that PSB looking for a PST that exactly matches the processor parameters. For example, a low voltage mobile PSB may be provided that includes PSTs that are utilized by low voltage mobile processors. When BIOS searches for an appropriate PST, that low voltage mobile processor PSB is the only PSB searched if the platform in which BIOS resides supports low voltage processors. Various realizations of the invention base selection of a PSB on various criteria (e.g., revision of a northbridge chip in a chipset).
In some embodiments, there is only one PSB in the disposable memory segment that contains all of the pre-defined PSTs. Alternatively, the BIOS may search all PSBs. After a match is found, the BIOS constructs a PSB block in the space-limited runtime area of the BIOS that contains only the PST that matches the processor being utilized in the system. As stated above, this reduces the footprint required for PSTs in the runtime area of BIOS since only a single PST is placed in the runtime memory segment. Note that other appropriate data structures may also be used to store performance state information instead of PSBs or PSTs. Furthermore, a BIOS may select multiple PSTs to load into the runtime PSB.
If, however, an exact match is not found, the BIOS can determine if a “near match” exists.
Even if no near match exists, in some circumstances, BIOS can automatically generate the PST. Note that for certain processors, e.g., small form factor processors utilized in low power desktop implementations, the power states utilize a constant voltage and vary only the frequency. This means that the PST for such a processor includes only variable frequency information. The PST can be automatically generated because the PST is constructed in runtime memory. That is especially true of PSTs that only include variable frequency. Generating PSTs automatically when an exact match is not found allows support for processors even if a matching PST cannot be found.
Referring to
For example, the lower bound for a particular system may be 5 times the FSB clock speed. The lower bound may be determined according to the type of system or processor, or may be information available in the processor or system directly. The upper bound is indicated by the MaxFID field or from some other information provided in the processor or system. The intermediate frequencies may be spaced equally between the upper and lower bound, or according to some other metric. Once the upper bound, lower bound, and intermediate frequencies have been determined, the BIOS can build the PST in the runtime memory segment. Thus, processors can be supported even if the BIOS has not been updated to specifically support that processor. Although
While changing performance states may be supported in drivers in certain embodiments, in other embodiments, the operating system (e.g. Windows XP™) requires Advanced Configuration and Power Interface (ACPI) objects to support changing between various performance states. One approach to such a scenario is to provide separately maintained PSTs and ACPI objects. However, another approach is for these objects to be dynamically generated during POST rather than appearing statically in memory, which can potentially make special methods unnecessary, since static objects require a complex set of methods to figure out which table in the ACPI space to use. The memory footprint for the static implementation is also much larger, however the footprint size is not the major consideration that it is with PST tables in runtime BIOS memory since ACPI memory space is typically at or near the top of installed system memory, above the 1 MB address. Accesses to ACPI memory space are not constrained to the 64-Kbyte segment size of the runtime PSB. The ACPI memory space is practically limitless, so the BIOS developer is not as limited as with the memory space for the runtime PSB.
Note that mapping of the runtime PST data into a predefined number of power states requires selectively including a subset of the available power states. Such selective inclusion can be implemented in a number of ways. Generally, the goal is to determine the maximum and minimum power state and fill the middle with power states spaced approximately evenly between the maximum and minimum.
The described invention may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present invention. A machine readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto-optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; electrical, optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.); or other types of medium suitable for storing electronic instructions.
While circuits and physical structures are generally presumed, it is well recognized that in modern semiconductor and design fabrication, physical structures and circuits may be embodied in computer readable descriptive form suitable for use in subsequent design, test, or fabrication stages as well as in resultant fabricated semiconductor integrated circuits. Accordingly, claims directed to traditional circuits or structure may, consistent with particular language thereof, read upon computer readable encodings and representations of same, whether embodied in media or combined with suitable reader facilities to allow fabrication, test, or design refinement of the corresponding circuits and/or structures.
The description of the invention set forth herein is illustrative, and is not intended to limit the scope of the invention as set forth in the following claims. Other variations and modifications of the embodiments disclosed herein, may be made based on the description set forth herein, without departing from the scope of the invention as set forth in the following claims.
Patent | Priority | Assignee | Title |
7617405, | Oct 03 2002 | VIA Technologies, Inc. | Microprocessor capable of dynamically reducing its power consumption in response to varying operating temperature |
7624287, | Aug 30 2006 | ATI Technologies ULC | Adaptive power state management |
7698583, | Oct 03 2002 | Via Technologies, INC | Microprocessor capable of dynamically reducing its power consumption in response to varying operating temperature |
7770042, | Oct 03 2002 | Via Technologies, INC | Microprocessor with improved performance during P-state transitions |
7774627, | Oct 03 2002 | Via Technologies, INC | Microprocessor capable of dynamically increasing its performance in response to varying operating temperature |
7814350, | Oct 03 2002 | Via Technologies, INC | Microprocessor with improved thermal monitoring and protection mechanism |
7958398, | Jul 16 2008 | International Business Machines Corporation | Reference state information generation |
8230245, | Jan 23 2009 | DELL PRODUCTS, L.P. | Method and system for operating-system-independent power management using performance verifications |
8412962, | Oct 03 2002 | VIA Technologies, Inc. | Microprocessor with improved thermal monitoring and protection mechanism |
9128729, | Sep 08 2014 | QUANTA COMPUTER INC. | System and method for automatically configuring bios performance profiles |
9336106, | Apr 17 2014 | Cisco Technology, Inc. | Dynamically limiting bios post for effective power management |
Patent | Priority | Assignee | Title |
5671435, | Aug 31 1992 | Intel Corporation | Technique for software to identify features implemented in a processor |
5835775, | Dec 12 1996 | TERADATA US, INC | Method and apparatus for executing a family generic processor specific application |
5958037, | Aug 31 1992 | Intel Corporation | Apparatus and method for identifying the features and the origin of a computer microprocessor |
20030120961, | |||
20040054936, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 10 2003 | HAMERSLEY, RICHARD ALAN | Advanced Micro Devices, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 014899 | /0087 | |
Jan 14 2004 | Advanced Micro Devices, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Oct 05 2007 | ASPN: Payor Number Assigned. |
Mar 23 2011 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Apr 08 2015 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Apr 12 2019 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 23 2010 | 4 years fee payment window open |
Apr 23 2011 | 6 months grace period start (w surcharge) |
Oct 23 2011 | patent expiry (for year 4) |
Oct 23 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 23 2014 | 8 years fee payment window open |
Apr 23 2015 | 6 months grace period start (w surcharge) |
Oct 23 2015 | patent expiry (for year 8) |
Oct 23 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 23 2018 | 12 years fee payment window open |
Apr 23 2019 | 6 months grace period start (w surcharge) |
Oct 23 2019 | patent expiry (for year 12) |
Oct 23 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |