Abstract:
A system and method for providing information regarding system support capabilities to a processor. A computer system includes a processing unit, a main memory and a first plurality of peripherals coupled to a first bus. A bus bridge couples the first bus to a second bus and a second plurality of support peripherals are coupled to the second bus. The processing unit is capable of providing requests for system support information to the bus bridge and the first and second plurality support peripherals. The peripherals are configured to provide responses to the request. The processing unit stores the responses and uses the information received to enable and disable its functional units or the peripheral&#39;s functional units accordingly. In one embodiment, the requests and information are provided along a dedicated serial interface. In another, the requests and information are provided as specialized bus cycles along the CPU bus.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to computer systems and more particularly to a computer system in which a microprocessor and system support logic can communicate with one another concerning system attributes. 
     2. Description of the Related Art 
     Personal computer systems require a microprocessor and a variety of system support logic. Support logic can include memory and cache controllers, bus controllers, DMA controllers, interrupt controllers, serial and parallel port controllers, floppy and hard disk drive controllers, timers, keyboard controllers, chip select and reset controller, and bus controllers. FIG. 1 illustrates a typical computer system 100. A CPU 102 and a main memory 104 are coupled to a CPU bus 106. CPU bus 106 in turn is coupled by way of a bus bridge 108 to an expansion bus 110. Various components of system support logic 112 are coupled to expansion bus 110 and/or CPU bus 106. In the figure shown, system support logic 112 is illustrated as a single integrated circuit but may be embodied in differing degrees of integration. 
     There is an increasing trend toward upgradability of computer systems wherein a succeeding generation of microprocessor is compatible with the preceding generation. In this way the user can operate his computer system by replacing one microprocessor with another. However, while the computer system may be upgraded by replacing one processor with another, the system support logic may not support all of the added functionality of the new processor. Similarly, the processor might not support all of the functions supported by the system support logic. For example, the cache support logic may not support a write-back cache, or have differing cache line sizes or snooping attributes than are supported by the upgrade processor. By way of additional example, the memory support logic may not provide the same port, speed, width, capacity, burst length or refresh attributes. Further, the support logic or the processor might support only a limited number of parallel and/or serial ports and chip selects. Thus, the new processor may not function correctly with the old set of system logic. 
     Accordingly, there is a need for a mechanism whereby a processor may query the system logic as to its support functionality and the processor can enable and disable those functions that are supported or not supported by the system support logic. 
     There is similarly a need for a mechanism whereby a processor can disable system support logic whose functions the processor itself does not support, thereby optimizing system performance. 
     SUMMARY OF THE INVENTION 
     Accordingly, there is provided a standard method by which system CPU support attributes may be reported to the CPU and ultimately the software running on the system. Those functions of the CPU not supported by the system support logic may be deactivated. Similarly, those functions which the system logic might support that are not supported by the CPU may be disabled. A computer system in accordance with one aspect of the invention includes a CPU and a main memory coupled to a CPU bus and a bus bridge coupling the CPU bus to an expansion bus. System support logic further may be coupled to the expansion bus and/or the CPU bus. A serial interface couples the CPU to the system support logic. The CPU interrogates the system support logic via the serial bus to determine its support functions. The system logic, which also includes a serial interface, responds to the queries with information concerning its functionality. The CPU then enables or disables its functionality according to its system support logic. The CPU stores the information concerning the support logic capabilities in a special set of machine specific registers. 
     According to an alternate embodiment of the present invention, the CPU and the system support logic include circuitry for generating and decoding a special bus cycle, whereby the CPU can query the system support logic as to the system attributes. The support logic responds to the special bus cycle with information concerning its capabilities. The CPU then stores information regarding system capabilities in a special set of machine specific registers while disabling those capabilities that are not supported by the logic. Once it has disabled its own capabilities, the CPU will enable or disable those functions of the system logic which it does not support. 
     Broadly speaking, the present invention contemplates a computer system including a central processing unit (CPU) and a peripheral device configured to provide information to the CPU of whether the CPU supports a predetermined function of the CPU. The CPU includes a control circuit coupled to receive the information from the peripheral device and configured to disable the function if the information indicates that the peripheral device does not support the function. 
     A method in accordance with one aspect of the present invention includes the steps of transmitting a request for system support capabilities from a processor to system support logic, providing the information to the processor and storing it. The method further includes the steps of accessing the information and enabling or disabling the functional units of the processor responsive to the information received. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A better understanding of the present invention can be obtained when the following detailed description of the preferred embodiment is considered in conjunction with the following drawings, in which: 
     FIG. 1 is a block diagram of a computer system according to the prior art. 
     FIG. 2 is a block diagram of a computer system according to one aspect of the present invention. 
     FIG. 3 is a block diagram of another aspect of the embodiment of the present invention shown in FIG. 2. 
     FIG. 4 is a more detailed block diagram of an aspect of the present invention. 
     FIG. 5 is a block diagram of another embodiment of the present invention. 
     FIG. 6 is a block diagram of a still further embodiment of the present invention. 
     FIG. 7 is a flow chart illustrating a method according to an embodiment of 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 spirit and scope of the present invention as defined by the appended claims. 
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Turning now to the drawings and with particular attention to FIG. 2, there is shown a computer system 200 according to one embodiment of the present invention. A CPU 202 is coupled to a CPU bus 206. CPU 202 may be any of a variety of commonly available processors, including those compatible with the 386, 486, Pentium, and PowerPC instruction sets. A memory/cache controller 228 couples a cache 230 and a main memory 204 to CPU bus 206. Cache memory 230 provides for increased data throughput by holding duplicate copies of data in static random access memory (SRAM). Memory/cache controller 228 may be part of system support logic 212. In the embodiment shown, system support logic 212 includes a bus bridge 208 coupling CPU bus 206 to expansion bus 210. Various components of system support logic 212 are coupled to expansion bus 210. However, it is noted that various components may alternatively be coupled to CPU bus 206. 
     Bus bridge 208 provides for control of expansion bus 210 as well as any buffering required for data transfers between the two buses. Expansion bus 210 may be any of a number of commonly available expansion buses, including the Industry Standard Architecture (ISA), the Extended Industry Standard Architecture (EISA), the Microchannel Architecture (MCA), or the Peripheral Component Interface (PCI) bus architecture. As mentioned previously, system support logic 212 may include a memory/cache controller 208 coupled to CPU bus 206, main memory 204 and cache 230. Memory/cache controller 208 supports the external cache as well as the main memory 204, and includes, among other things, snooping control and control of the memory configuration registers. System support logic 212 may further include a keyboard controller 224, a DMA controller 226, an interrupt controller 222, a timer control 230, and a general I/O controller 214. Keyboard controller 224 may be configured to provide support for both keyboard and mouse and is generally compatible with the 8042 and 8051 keyboard controllers. DMA controller 226 provides for the direct transfer by external devices of data from main memory 204. Interrupt controller 222 is configured to receive interrupts from external devices, and process and prioritize them, before delivering them to the CPU 202. Timer control circuit 230 is configured to provide any necessary timing and clock signals. Finally, general I/O controller 212 is configured to provide controls for serial and parallel ports, CD ROM drives, floppy disk drives, IDE interface, game port interface, chips selects and fast reset/A20 control. It is noted that the various support components of system support logic 212 may be integrated together or integrated in various combinations. Thus, FIG. 2 is exemplary only. 
     Computer system 200 further includes a serial bus 216 coupling system support logic 212 to CPU 202. Serial bus 216 is used to transmit system support information from the system support logic 212 to the CPU 202. Thus, CPU 202 includes a serial bus interface 219 and registers or storage units 218 configured to receive data transmitted along serial bus 216. System support logic 212 also includes a serial bus interface 220. Registers or storage locations 218 in CPU 202 are used to store system configuration information to make such information available to device drivers via a software application programming interface (API). Upon reset, microcode in CPU 202 will inquire along serial bus 216 as to system support logic 212&#39;s CPU support capabilities. 
     As discussed above, a variety of functionality may be provided to system support logic 212. Thus, each component may, in a predetermined fashion, transmit its capabilities along serial bus 216. For example, memory/cache controller 228 may provide information concerning which processors it will support and whether it will provide support for serial or parallel, write though or write back cache, and whether it will provide support for predetermined or programmable cache line size. The memory/cache controller 228 may further provide information concerning memory capacity, memory speed, memory width, burst length (typically 2, 4, 8 or 16 double words), memory attributes (such as write protect), and refresh support. Interrupt controller 222 may provide information concerning its characteristics. Further, general I/O controller 214 may provide information on its various functionalities. For example, general I/O controller 214 may provide information concerning the number and type of parallel ports it supports. These can include uni- and bi-directional parallel ports and any of the enhanced or extended capabilities parallel ports currently available. 
     System support logic 212 will respond to the CPU 202 by providing this data to the CPU 202 across the serial bus 216. The CPU 202 will store this support information in machine specific registers 218. CPU 202 will then configure its internal functionality according to the information it has received. CPU 202 will also enable or disable the system support logic depending on whether the CPU supports its functions. 
     As noted above, a variety of system support logic configurations are available. For example, turning now to FIG. 3, a block diagram is shown of a computer system employing a lesser degree of system support logic integration. Computer system 300 includes a CPU 302 coupled to a CPU bus 306. A bus bridge 308 couples CPU bus 306 to an expansion bus 310. A memory controller 322 is coupled to main memory 304 and CPU bus 322. A keyboard controller 328, a floppy disk controller 332, an interrupt controller 334, and an I/O Interface logic 312 are coupled to expansion bus 310. A serial bus 350 couples CPU 302 to each support peripheral. Thus, CPU 302, memory controller 322, keyboard controller 328, I/O interface logic 312, floppy disk controller 332, bus bridge 308, and interrupt controller 334 are each configured with a serial interface 328, 324, 330, 320, 336, 326, and 338, respectively. As discussed above, the CPU 302 is configured to query the support logic along the serial bus 350 as to its support capabilities. The various support peripherals will respond to the query by identifying their functionality. The CPU 302 will store the configuration information in dedicated storage units or dedicated memory. The CPU 302 will then enable or disable its functional units, or the system&#39;s functional units, in accordance with the stored configuration information. 
     For example, turning now to FIG. 4, an exemplary system identification mechanism is shown. A CPU 1000 is coupled to a peripheral device 1002 by way of a serial bus 1006. CPU 1000 includes a serial bus control unit 1004. Similar control unit 1008 is included in peripheral device 1002. Peripheral device 1002 includes a support identification circuit 1012 coupled to bus control 1008. Support identification circuit 1012 is configured to supply information along serial bus 1006 as to peripheral device 1002&#39;s support capabilities. CPU 1000 further includes a support control circuit 1011 coupled to serial bus control 1004. Support control circuit 1011 is coupled to functional unit 1010 and, in response to CPU microcode, is configured to inquire along serial bus 1006 as to whether peripheral 1002 supports that functional unit. Functional unit 1010 may be a burst control circuit, which controls, inter alia, burst length and capacity. If, for example, peripheral device 1002 supports a burst length of only eight double words, this information will be stored in or otherwise provided to support identification circuit 1012. Upon reset, CPU 1000 will inquire along serial bus 1006 via support control circuit 1011 as to the burst length supported by peripheral 1002. This information will be provided from support identification circuit 1012. Support control circuit 1011 will receive this information from serial bus 1006. Assuming, for example, that CPU 1000 can support burst lengths of up to 16 doublewords, support control circuit 1011 will disable this aspect of CPU 1000&#39;s functionality. Thus, CPU 1000 will support only burst lengths of eight doublewords, thereby maintaining compatibility with peripheral device 1002. If the peripheral device supported additional features not supported by CPU 100, support control unit 1011 would cause those functional units on peripheral device 1002 to be disabled. 
     In an alternate embodiment, the computer system may be configured to allow the transfer of system support information across various interfaces using specially defined cycles which are transferred across one or more of the buses incorporated within the system. This will best be understood with reference to FIG. 5. FIG. 5 is a block diagram of a computer system as generally represented in FIG. 2 but without the serial bus and interface. Computer system 400 includes a CPU 402 and a main memory 404 coupled to a CPU bus 406. CPU 402 includes bus cycle encoder/decoder 419. CPU bus 406 in turn is coupled to bus bridge 408 and expansion bus 410. System support logic 412 includes bus cycle encoder/decoder 420. System support logic 412 is coupled to expansion bus 410. CPU 402 is provided with control circuitry to generate a specialized bus cycle or a memory or I/O cycle to a dedicated memory location querying system support logic 412 as to its support capabilities. System support logic 412 is configured with control circuitry to decode these bus cycles and to generate a specialized bus cycle or cycles identifying its capabilities in response. 
     CPU 402 is configured to issue the specialized bus cycles upon system reset to system support logic 412. System support logic 412 responds with data cycles of its own indicating its system support capabilities. In response to the information received, CPU 402 stores the system capabilities in configuration device specific registers or storage units 418. Software APIs may be used to access the storage units in the manner described with respect to FIG. 2, and the CPU may enable or disable its functional units or the functional units of the system logic itself accordingly. It is further noted, again, that system support logic can be embedded in a lesser degree of integration. Thus, FIG. 6 illustrates a block diagram on a computer system employing system support logic having discrete components as in FIG. 3. Similar to the embodiment shown in FIG. 3, each component of support logic includes a bus cycle coder/decoder to generate system support information on the bus for the CPU to read. The CPU includes an encoder/decoder to generate bus cycles querying the system support logic as to their capabilities, as well as circuitry configured to command the disabling of system logic functional units. 
     Turning now to FIG. 7, there is shown a flow diagram of a method for determining system support functionality and configuring the CPU in response thereto. Initially the CPU, upon reset, will read the hardware (step 1000). This can occur either via a specific serial bus or through special CPU and expansion bus cycles. Once the hardware configuration has been read, the CPU determines which of its functional units the hardware will support (step 1002). If not supported, the CPU will disable the functional unit (step 1004). The fact that the functional unit has been disabled is stored in machine specific registers within the CPU in step 1006. If, however, in step 1002 the hardware has been determined to be able to support the functional unit, the functional unit will be enabled (step 1008). This information is then stored in machine specific registers in step 1010. The process will proceed for each component of support logic. Once the enabling/disabling of the CPU functional units is completed, a global optimization procedure 1013 is initiated so as to tune or balance system performance. This can include disabling functional units on the support logic that are not supported by the CPU. 
     In accordance with the computer system described above, upgradeability and hence compatibility across generations of computers is achieved. System support functionality is provided either by way of specialized bus cycles or by way of a dedicated serial interface between the CPU and the system support logic. In this manner, users may be assured that a processor upgrade will not require replacement of system logic as well. 
     Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.