Method and system for utilizing graphics memory to provide storage for video BIOS initialization

A computer implemented method for utilizing graphics memory of a computer system to provide storage for video BIOS initialization. Video BIOS memory is accessed to execute video BIOS initialization routines. A portion of graphics memory is configured for access by the video BIOS initialization routines. Program execution data from the video BIOS initialization routines is then stored in the portion of graphics memory. The program execution data is stored prior to a completion of a video BIOS power on self test.

FIELD OF THE INVENTION

The field of the present invention pertains to digital electronic computer systems. More particularly, the present invention relates to a method and system for improving the boot sequence performance of a digital computer system.

BACKGROUND OF THE INVENTION

Digital computers are being used today to perform a wide variety of tasks. Many different areas of business, industry, government, education, entertainment, and most recently, the home, are tapping into the enormous and rapidly growing list of applications developed for today's increasingly powerful computer devices. Computers have also become a key technology for communicating ideas, data, and trends between and among business professionals.

When a digital computer system is turned on from an off state, or when the computer system is reinitialized (e.g., restarted), the computer system executes a set a initialization software routines generally referred to as BIOS routines (Basic Input Output System), or BIOS. As known by those skilled in the art, the BIOS of a computer system comprises an essential set of initialization routines of the computer system, and is most typically encountered in desktop computer systems, such as personal computers or workstations. Generally, the BIOS is stored in nonvolatile memory on a chip (e.g., ROM, flash memory, or the like) and provides an interface between the operating system and the computer system's hardware. The BIOS supports all peripheral technologies and internal services such as the realtime clock (time and date), the expansion buses, the memory buses, and the like.

On startup, the BIOS tests the computer system and prepares the computer for operation by, for example, querying its own small CMOS memory bank for drive and other configuration settings. It searches for other BIOS's on the plug-in boards and sets up pointers (interrupt vectors) in memory to access those routines. It then loads the operating system and passes control to it. Generally, the BIOS accepts requests from the drivers as well as the application programs.

Additionally, on startup, the BIOS runs one or more diagnostic tests. Before it invokes the operating system, the BIOS checks to make sure all the hardware is working. It then works with the computer's hardware components in conjunction with the operating system. The diagnostic test that the BIOS performs is referred to as a POST (power on self test), and is typically performed for the keyboard, drives, ports, chips, and all other components in the system to make sure they are working correctly.

The BIOS relies upon the display of visual information via the computer system monitor in order to provide feedback to the user regarding the status and progress of the POST. The video BIOS comprises a portion of the BIOS that initializes the basic video display capability of the computer. For example, with a PC, once the basic video capability is initialized, it is often possible to see the BIOS performing this POST during the PC's startup process. A healthy system BIOS will display information about the computer, including the amount of RAM, the number of drives, and the type of processor. If the BIOS detects a hardware problem, it will halt and display a text error messages on-screen. These messages are designed to assist the user in fixing or adjusting the BIOS configuration parameters or settings. In addition to visual feedback, audible feedback can be supplied regarding the progress of the BIOS diagnostic tests. For example, one long beep can mean the BIOS successfully completed all the hardware tests, while a combination of shorter beeps can indicate a number of different errors.

There exists a problem however, with extending the capabilities of the BIOS configuration functions and the way resulting information is communicated to the user. The standard PC architecture (e.g., the x86 PC) has evolved in many ways since its introduction in the early 1980s. As hardware tests changed and as the capabilities of the “legacy architecture” have been extended, BIOS's have been periodically updated to keep pace with new emerging peripheral technologies. For example, newer BIOSs are specifically stored on a flash memory chip that can be upgraded via software to facilitate easier updating. However each of the extensions of the BIOS capability generally conform to the basic tenets of the legacy architecture.

Among the more problematic tenets of the legacy architecture is the fact that the video BIOS software is limited in size to 64 K of addressable memory. This imposes as a severe constraint on the types of operations and capabilities that can be implemented. Even more problematic is fact that some PC architectures limit the amount of RAM available to the BIOS for temporary program execution storage (e.g., stack memory) to a mere 200 bytes.

The memory limitations function as a severe constraint on the manner in which display information can be presented by the video BIOS software and the types of functions the video BIOS software can implement. These memory limitations are typically in place until the BIOS POST is complete and the operating system is initialized. Once the operating system is initialized, a video driver for the graphics subsystem of the PC is initialized to provide full function display capability. However, the memory limitations prevent any enhanced display functionality being provided early in the computer system boot process, and restrict the functionality of the POST.

Thus, what is required is a solution that overcomes the memory limitations that constrain the functionality of the BIOS software. What is required is a solution that eliminates the memory limitations of the video BIOS execution but is still compatible with the legacy PC architecture. The present invention provides a novel solution to these requirements.

SUMMARY OF THE INVENTION

Embodiments of the present invention provide a method and system for utilizing graphics memory to provide storage for video BIOS initialization. Embodiments of the present invention overcome the memory limitations that constrain the functionality of the BIOS software. Embodiments of the present invention eliminate the memory limitations of the video BIOS execution but are still compatible with the legacy PC architecture.

In one embodiment, the present invention is implemented as a computer implemented method for utilizing graphics memory of a computer system to provide storage for video BIOS initialization. Video BIOS memory (e.g., the nonvolatile memory storing the video BIOS software) is accessed to execute video BIOS initialization routines. A portion of graphic memory (e.g., graphics RAM) is configured for access by the video BIOS initialization routines. Program execution data (e.g., stack storage, variables, and the like) from the video BIOS initialization routines is then stored in the portion of graphics memory. The program execution data is stored prior to a completion of a video BIOS power on self-test.

In another embodiment, a portion of the graphics memory is configured to provide storage for the video BIOS and that storage is configured to be preserved through the operating system boot. This embodiment includes the step of preserving at least part of the portion of the graphics memory storing program execution data during a completion of an operating system boot process such that at least part of the program execution data is available subsequent to the boot process.

In this manner, the embodiments of the present invention use the large amount of graphics memory as execution space for the video BIOS initialization routines to overcome the memory limitations associated with the legacy PC architecture. Since the legacy PC architecture does not expect to use or access any portion of the graphics memory during the legacy PC architecture boot sequence, the configuration of the graphics memory for such access is compatible with the legacy PC architecture, and thus, compatible with the legacy boot sequence. In so doing, the embodiments of the present invention can provide a very enhanced degree of video functionality early in a PC's boot sequence, prior to the initialization of an operating system or a graphics driver.

DETAILED DESCRIPTION OF THE INVENTION

Embodiments of the present invention provide a method and system for utilizing graphics memory to provide storage for video BIOS initialization. Embodiments of the present invention overcome the memory limitations that constrain the functionality of the BIOS software. Embodiments of the present invention eliminate the memory limitations of the video BIOS execution but are still compatible with the legacy PC architecture. Embodiments of the present invention and their benefits are further described below.

Notation and Nomenclature

Computer System Platform

With reference now toFIG. 1, a computer system100in accordance with one embodiment of the present invention is shown. Computer system100shows the components of a computer system in accordance with one embodiment of the present invention that provides the execution platform for implementing certain software-based functionality of the present invention. As described above, certain processes and steps of the present invention are realized, in one embodiment, as a series of instructions (e.g., software program) that reside within computer readable memory units of a computer system (e.g., system100) and are executed by the CPU of system100. When executed, the instructions cause the computer system100to implement the functionality of the present invention as described below.

In general, computer system100comprises at least one CPU101coupled to a North bridge102and a South bridge103. The North bridge102provides access to system memory115and a graphics processor unit (GPU)110. The South bridge103provides access to a plurality of coupled peripheral devices131–135as shown. Data communication is provided by the system memory bus122, the graphics bus121, and the expansion bus123(e.g., which can include PCI buses, USB buses, IEEE 1394 buses, or the like). The GPU110is coupled to a dedicated graphics memory111and is coupled to provide video information to a display112. Computer system100also shows a BIOS ROM140that stores BIOS initialization software.

EMBODIMENTS OF THE PRESENT INVENTION

FIG. 2shows a diagram of a BIOS execution sequence in accordance with one embodiment of the present invention. As depicted inFIG. 2, BIOS execution events are shown as they occur in time, with the earliest events on the left side ofFIG. 2and the later events on the right side ofFIG. 2. Time is shown progressing from left to right by the axis202. Thus, the earliest event is the initial power up201of the computer system100. After the initial power up201, BIOS execution205begins. The BIOS execution205comprises a system BIOS power on self test (POST)210, a graphics memory portion configuration220, and a video BIOS POST230. In this embodiment, the system BIOS POST210and the graphics memory portion configuration220are shown occurring at approximately the same time during the BIOS execution sequence, and the video BIOS POST230is shown completing shortly thereafter. After the BIOS execution205, the operating system invocation240is shown, followed by the graphics driver initialization250.

Referring still toFIG. 2, embodiments of the present invention function in part by utilizing graphics memory111to provide storage for video BIOS initialization routines which execute out of BIOS ROM140. In the present embodiment, the BIOS ROM140provides the Video BIOS memory (e.g., the nonvolatile memory storing the video BIOS software) that is accessed by the CPU101to execute video BIOS initialization routines. A portion of graphics memory111(e.g., graphics RAM) is configured for access by the video BIOS initialization routines. Program execution data (e.g., stack storage, variables, and the like) from the video BIOS initialization routines is then stored in the portion of graphics memory111. In the present embodiment, as shown by the diagram200, the graphics memory portion is configured to store the program execution data prior to a completion of a video BIOS POST230.

Video BIOS initialization routines in accordance with embodiments of the present invention require more storage than what is currently defined in the legacy PC architecture. The video BIOS initialization routines in accordance with embodiments of the present invention are configured to provide a greatly enhanced degree of functionality comparing to prior art. Such functionality is enabled by the memory execution space of the graphics memory111. As known by those skilled in the art, the graphics memory111is not normally available to the BIOS execution routines205prior to the initialization of the graphics driver250. Embodiments of the present invention provide a mechanism for accessing the graphics memory111prior to the initialization of the graphics driver250.

The graphics memory111is used to provide storage for program execution data. Examples of program execution data include stack storage data (e.g., the “stack”) accessed by the BIOS executing out of the BIOS ROM140. As used herein, program execution data does not include the storing of information into memory for a mere purpose of testing the memory (e.g., test bits etc.).

The particular portion of the graphics memory111used for video BIOS execution can be configured as a contiguous addressable region, providing a high degree of flexibility in its use by the video BIOS execution software routines.

In the present embodiment, the graphics memory111is configured to reduce the risk of hardware interrupts corrupting program execution data. This is due to the fact that the legacy PC architecture does not expect the graphics memory111to be available. Additionally, the legacy PC architecture does not directly access the graphics memory111without first accessing the graphics driver. Because of this, hardware interrupts which may occur during the BIOS execution sequence205cannot corrupt the graphics memory111in the same manner that they might corrupt the system memory115.

Embodiments of the present invention can be configured to retain program execution data stored in the graphics memory111and make such program execution data available after the initialization of the operating system (e.g., operating system invocation240) and the graphics driver (e.g., graphics driver initialization250). For example, a graphics driver in accordance with one embodiment of the present invention can be configured to access the portion of the graphics memory111storing the program execution data and manage the portion as required. In this manner, the program execution data stored in the graphics memory can remain available after the initialization of the graphics card driver, and any information stored therein can be used in accordance with requirements of the user or a user application.

FIG. 3shows a diagram300depicting the access of the video BIOS execution301to a plurality of registers311of a memory manager310within the GPU111. Diagram300shows one mechanism by which the video BIOS execution301is provided with access to a configured portion320of the graphics memory111.

In the present embodiment, access to the configured portion320is managed by the memory manager310of the GPU110. The video BIOS execution301, as it executes on the CPU101, places write data into the registers311. This data is subsequently loaded into the configured portion320by the memory manager310. Read data is acquired by the memory manager310and placed into the registers311where it is subsequently accessed and read by the video BIOS execution301. Accordingly, the registers311function as “ports” for writing data into and reading data out of the configured portion320. Thus, the GPU110provides the memory manager hardware310required to manage the program execution data stored in the graphics memory111. This is the same memory management hardware that is used by the graphics driver in manipulating and accessing the graphics memory111during is normal operation.

FIG. 4shows a flowchart of the steps of the process400in accordance with one embodiment of the present invention. As depicted inFIG. 4, process400shows the steps involved in configuring a portion of graphics memory to support video BIOS execution.

Process400begins in step401where video BIOS memory is accessed to begin execution of the video BIOS initialization routines. In step402, a portion320of the graphics memory111is configured for access by the video BIOS initialization routines (e.g., video BIOS execution301). As described above, the video BIOS initialization routines are configured to interact with the memory manager310of the GPU110in order to gain access to a portion320of the graphics memory111. This includes accessing the ports, or the registers311, of the memory manager310. In step403, program execution data from the video BIOS initialization routines301are stored in the configured portion320of the graphics memory111. As described above, this program execution data is stored prior to completion of the video BIOS POST230.

FIG. 5shows a flowchart of the steps of a process500in accordance with one embodiment of the present invention, wherein the program execution data stored in the configured portion of the graphics memory is retained after the operating system initialization and after the graphics driver initialization.

Process500begins in the same manner as process400ofFIG. 4. Process500begins in step501where video BIOS memory is accessed to begin execution of the video BIOS initialization routines. In step502, a portion320of the graphics memory111is configured for access by the video BIOS initialization routines. In step503, program execution data from the video BIOS initialization routines301are stored in the configured portion320of the graphics memory111. Subsequently, in step504, the portion320of the graphics memory311storing the program execution data is preserved during a completion of the operating system invocation240and a completion of the boot process such that the program execution data is available subsequent to the boot process. In addition, in step505, the portion320of the graphics memory311storing the program execution data is preserved for access by the graphics driver using graphics driver routines. The integrity of the data stored in the portion320is maintained during the graphics driver initialization250.

FIG. 6shows a flowchart of the steps of a process600in accordance with one embodiment of the present invention, wherein the program execution data stored in the configured portion of the graphics memory is used to provide compressed font support.

Process600begins in step601where video BIOS memory is accessed to begin execution of the video BIOS initialization routines, including compressed font handling routines. In step602, a portion of the graphics memory is configured for access by the video BIOS compressed font handling routines. In accordance with the present embodiment, compressed font handling routines are software routines designed to decompress data required to show different fonts on the display. Data for displaying the fonts is compressed in order to reduce the amount of space required for the storage. However, a larger amount of program execution space is required in order to handle the decompression routines. This program execution space is provided by the configured portion320of the graphics memory311in the manner described above. Subsequently, in step603, program execution data from the video BIOS compressed font handling routines is stored in the configured portion320of the graphics memory111.

FIG. 7shows a flowchart of the steps of a process700in accordance with one embodiment of the present invention, wherein the program execution data stored in the configured portion of the graphics memory is used to preserve configuration data obtained from the system BIOS initialization POST.

Process700begins in step701, where system BIOS memory is accessed to begin execution of the system BIOS initialization routines (e.g., system BIOS POST210). In step702, video BIOS memory is accessed to begin execution of the video BIOS initialization routines. In step703, the portion320of the graphics memory111is configured for access by the video BIOS initialization routines.

In step704, a system BIOS call is executed using the video BIOS initialization routines in order to obtain system BIOS configuration data. The system BIOS configuration data can include, for example, data identifying specific hardware of the computer system100, specific firmware versions of the computer system100, display specific data (e.g., maximum resolution, maximum pixel frequency, display size, manufacturer, model, etc.), or the like. In step705, the configuration data is stored in the portion of the graphics memory320. In step706, the portion320of the graphics memory311is preserved during a completion of the computer system boot process. In step707, the portion320of the graphics memory311is accessed using graphics driver routines subsequent to the boot process. In this manner, information can be obtained from the system BIOS that would otherwise not be available after the initialization of the operating system, or would otherwise be prevented by the operating system.

As a specific example, the system BIOS configuration data can include EDID (Extended Display Identification Data standard, as published by the Video Electronics Standards Association, in various releases and revisions, including Enhanced EDID). Normally, EDID is read by a computer from an external display device that stores its EDID. However, in some circumstances, such as laptop computers, the display device is not external, and it would be advantageous to obtain the EDID from the system BIOS. Hence, in laptops, the video BIOS can call the system BIOS to obtain the EDID (or the equivalent), and the video BIOS can store the EDID in graphics memory and preserve the stored data beyond boot completion, where it can be read by the video driver.

Thus, embodiments of the present invention provide a method and system for utilizing graphics memory to provide storage for video BIOS initialization. Embodiments of the present invention overcome the memory limitations that constrain the functionality of the BIOS software. Embodiments of the present invention eliminate the memory limitations of the video BIOS execution but are still compatible with the legacy PC architecture.