`Kim et al.
`
`111111
`
`1111111111111111111111111111111111111111111111111111111111111
`US006487656Bl
`US 6,487,656 Bl
`Nov. 26, 2002
`
`(10) Patent No.:
`(45) Date of Patent:
`
`(54) SYSTEM AND METHOD FOR PROVIDING
`FUNCTIONALITIES TO SYSTEM BIOS
`
`(75)
`
`Inventors: Myungseok Kim, Irvine; Glenn E.
`Jystad, Dove Canyon, both of CA (US)
`
`(73) Assignee: Phoenix Technologies Ltd., San Jose,
`CA(US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21) Appl. No.: 09/459,060
`
`(22) Filed:
`
`Dec. 10, 1999
`
`5,307,497 A
`5,325,532 A
`5,379,431 A
`5,381,549 A
`5,418,918 A
`5,444,850 A
`5,448,741 A
`5,452,454 A
`5,463,766 A
`5,469,573 A
`5,504,905 A
`5,522,076 A
`5,526,523 A
`5,542,082 A
`5,581,740 A
`
`4/1994 Feigenbaum et a!.
`6/1994 Crosswy eta!.
`1!1995 Lemon eta!.
`1!1995 Tamura
`5/1995 Vander Kamp et a!.
`8/1995 Chang
`9/1995 Oka
`9/1995 Basu
`10/1995 Schieve et a!.
`11/1995 McGill, III et a!.
`4/1996 Cleary et a!.
`5/1996 Dewa et a!.
`6/1996 Straub et a!.
`7/1996 Solhjell
`12/1996 Jones
`
`(List continued on next page.)
`
`Int. Cl? ................................................ G06F 9/445
`(51)
`(52) U.S. Cl. ........................................................... 713/2
`(58) Field of Search .......................................... 713/1, 2
`
`Primary Examiner-Thomas M. Heckler
`
`(57)
`
`ABSTRACT
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,121,345 A
`5,128,995 A
`5,131,089 A
`5,142,680 A
`5,146,568 A
`5,214,695 A
`5,274,816 A
`5,280,627 A
`
`6/1992 Lentz
`7/1992 Arnold eta!.
`7/1992 Cole
`8/1992 Ottman eta!.
`9/1992 Flaherty et a!.
`5/1993 Arnold eta!.
`12/1993 Oka
`1!1994 Flaherty et a!.
`
`The present invention is a method and apparatus to provide
`functionalities to a system BIOS. The method comprises
`interfacing an interface module to the system BIOS, and
`receiving a request from the system BIOS to perform a task.
`System device information associated with the task is
`received from the system BIOS. The interface module
`translates the system device information to provide trans(cid:173)
`lated information. The translated information is then trans(cid:173)
`ferred to a corresponding module.
`
`27 Claims, 11 Drawing Sheets
`
`PROCESSOR INITIALIZES MEDIA DEVICES
`(e.g., GRAPHICS CONTROLLER, AUDIO CARD) WITH
`MINIMAL CONFIGURATION AS PART OF THE BIOS
`
`340
`MEDIA DEVICES OBTAIN MEDIA
`INFORMATION (GRAPHICS, SOUND)
`SUCH AS MEDIA DATA, STORAGE OR
`FILE REFERENCE, COMMANDS
`
`350
`MEDIA DEVICES PERFORM FUNCTIONS
`(GRAPHICS CONTROLLER DISPLAYS
`IMAGES ON DISPLAY SCREEN, AUDIO
`CARD GENERATES SOUND)
`
`NO
`
`1
`
`EX 1001
`IPR of Pat. No. 6,487,656
`
`
`
`US 6,487,656 Bl
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`5,586,327 A
`5,594,903 A
`5,604,890 A
`5,652,868 A
`5,652,886 A
`5,664,194 A
`5,680,547 A
`5,692,190 A
`5,694,583 A
`5,694,600 A
`5,701,477 A
`5,715,456 A
`5,717,930 A
`5,727,213 A
`5,732,268 A
`5,748,957 A
`5,754,853 A
`5,764,593 A
`5,781,758 A
`
`12/1996 Bealkowski et a!.
`1!1997 Bunnell eta!.
`2/1997 Miller
`7/1997 Williams
`7/1997 Tulpule et a!.
`9/1997 Paulsen
`10/1997 Chang
`11/1997 Williams
`12/1997 Williams et a!.
`12/1997 Khenson et a!.
`12/1997 Chejlava, Jr.
`2/1998 Bennett et a!.
`2/1998 Imai eta!.
`3/1998 Vander Kamp et a!.
`3/1998 Bizzarri
`5/1998 Klein
`5/1998 Pearce
`6/1998 Turpin eta!.
`7/1998 Morley
`
`5,790,849 A
`5,796,984 A
`5,802,363 A
`5,805,880 A
`5,805,882 A
`5,815,706 A
`5,819,063 A
`5,828,888 A
`5,832,251 A
`5,842,011 A
`5,854,905 A
`5,864,698 A
`5,887,164 A
`5,901,310 A
`5,907,679 A
`6,367,007 B1 *
`6,374,338 B1 *
`6,401,202 B1 *
`
`8/1998
`8/1998
`9/1998
`9/1998
`9/1998
`9/1998
`10/1998
`10/1998
`11/1998
`11/1998
`12/1998
`1!1999
`3/1999
`5/1999
`5/1999
`4/2002
`4/2002
`6/2002
`
`Crocker et a!.
`Pearce eta!.
`Williams et a!.
`Pearce eta!.
`Cooper eta!.
`Stewart et a!.
`Dahl eta!.
`Kozaki eta!.
`Takahashi
`Basu
`Garney
`Krau eta!.
`Gupta
`Rahman eta!.
`Hoang eta!.
`Do ................................ 713/2
`Garrey ....................... 711!170
`Abgrall ... ... ... ... .. ... ... ... .. 713/2
`
`* cited by examiner
`
`2
`
`
`
`FIG./
`
`100\
`
`CPU
`104
`
`/" 190
`
`a 194
`
`M
`
`Jr:sHI
`
`BUS
`
`)..
`J..
`.. CONTROLLER CONTROLLER
`,
`112
`116
`. ..
`
`MEMORY
`
`'f
`
`110
`
`l'f
`
`..
`,
`
`SYSTEM
`MEMORY
`124
`
`"
`
`i,140---
`
`i).
`
`128
`
`'
`
`,..
`
`;- ,-132- r 136i
`1'172
`VIDEO
`VIDEO
`I EXPANSION BUS
`1 VIDEO
`1 BIOS ~ CONTROLLER 1---- MEMORY
`I
`CONTROLLER
`L _______ -----,--J
`
`L148
`DISPLAY
`SCREEN
`
`'-144
`
`,..""'
`
`1 7 5 --:::::::,.
`176-
`180
`184
`I ~oM I I rlAsHI
`
`..
`""
`.
`,.. r 156
`~ /152
`COMMUNICATION
`MASS
`STORAGE
`INTERFACE
`
`•
`
`{1681
`
`...
`
`1/0
`DEVICE
`
`~~
`
`J
`}
`
`NETWORK
`164
`
`l_~
`EXPANSION
`MEMORY
`188
`
`d •
`\Jl
`•
`~
`~ ......
`~ = ......
`
`z
`0
`~
`N
`~~
`
`N c c
`
`N
`
`'JJ. =(cid:173)~
`~ .....
`'"""' 0 ......,
`'"""'
`'"""'
`
`e
`
`rJ'l
`0'1
`'l.
`00
`""-l
`'0-,
`(It
`0'1
`~
`1--"
`
`;
`
`~ r1
`68N
`1/0
`DEVICE
`
`3
`
`
`
`U.S. Patent
`
`Nov. 26, 2002
`
`Sheet 2 of 11
`
`US 6,487,656 Bl
`
`,-104
`A
`
`I
`PROCESSOR
`
`~
`
`,-176
`
`..(')..
`
`\
`/
`r
`
`1200
`
`,-168
`
`vt ~ AUDIO
`CARD
`1\.
`/
`r
`~
`
`R
`==>SPEAKE
`
`BIOS STORAGE
`,-210
`MINIMAL MEDIA
`INITIALIZATION
`r215
`
`t - BUS
`vA-l\ 108/128
`I NORMAL BIOS CODE I ~
`1\.
`.I
`r
`
`r132
`GRAPHICS CONTROLLER
`
`A ~
`v
`f\
`/ r
`
`,-260
`CONFIGURATION
`REGISTERS
`
`r265
`COMMAND REGISTERS
`
`~~ r148
`
`DISPLAY
`MONITOR
`
`,-220
`OPERATING SYSTEM
`LOADER
`
`,-152
`MASS STORAGE r 230 Ll ~
`.I
`OPERATING SYSTEM
`r
`
`1\.
`~
`
`,-124
`
`SYSTEM
`MEMORY
`
`0-----'\
`v'
`r'\
`
`I
`
`r-124/152/184
`MEDIA STORAGE
`r240
`I
`MEDIA DATA
`r245 Vt---\
`MEDIA MODE
`1\.
`...
`"
`(e.g., GRAPHIC
`ANIMATION)
`
`/
`
`I MEDIA COMMANDS I
`
`r250
`
`)"'
`
`"'
`
`FIG.2
`
`4
`
`
`
`U.S. Patent
`
`Nov. 26, 2002
`
`Sheet 3 of 11
`
`US 6,487,656 Bl
`
`FIG. 3
`
`START
`
`1300
`
`I SYSTEM STARTS POWER-ON RESET
`
`/'"310
`
`r320
`PROCESSOR BOOTS UP BIOS
`J
`
`J
`
`PROCESSOR INITIALIZES MEDIA DEVICES
`(e.g., GRAPHICS CONTROLLER, AUDIO CARD) WITH
`MINIMAL CONFIGURATION AS PART OF THE BIOS
`
`/'" 330
`
`/'" 345
`
`PROCESSOR CONTINUES TO
`COMPLETE THE BIOS BOOT -UP
`SEQUENCE
`
`/'" 355
`
`PROCESSOR LOADS OPERATING
`SYSTEM FROM MASS STORAGE
`TO SYSTEM MEMORY
`
`/'" 365
`OPERATING SYSTEM STARTS
`CONTROL
`
`r340
`MEDIA DEVICES OBTAIN MEDIA
`INFORMATION {GRAPHICS, SOUND)
`SUCH AS MEDIA DATA, STORAGE OR
`FILE REFERENCE, COMMANDS
`L
`t
`r 350
`MEDIA DEVICES PERFORM FUNCTIONS
`(GRAPHICS CONTROLLER DISPLAYS
`IMAGES ON DISPLAY SCREEN, AUDIO
`CARD GENERATES SOUND)
`
`360
`
`DOES
`OPERATING
`SYSTEM START
`CONTROL
`?
`YES
`
`NO
`
`END
`
`5
`
`
`
`420 422
`420
`422
`
`424
`424
`
`~400
`
`~
`
`J
`
`I
`
`I
`
`r
`
`"" )
`
`
`
`410
`410
`412
`412
`
`-
`
`414
`414
`
`416b
`416b
`416a
`416a
`416
`416
`
`--
`
`-......
`I
`
`"'
`
`I I
`
`442
`442
`
`-......
`
`444
`444
`
`440
`440
`
`~
`
`--.......
`
`1462 I r464
`I 464a
`I
`I 464b
`I
`I 464c
`I
`
`I I
`
`FIG.4A
`
`-
`
`432
`430
`434
`
`-·
`
`36
`
`r--.
`
`60
`
`r-- I-.;
`50
`
`d •
`\Jl
`•
`~
`~ ......
`~ = ......
`
`z 0
`
`~
`N
`~~
`
`N c c
`
`N
`
`
`
`cm.5.8.:23.N983952gaScmakmqamaE
`
`
`
`'JJ. =(cid:173)~
`~ .....
`
`~
`0 ......,
`'"""'
`'"""'
`
`e
`
`rJ'l
`0'1
`'l.
`00
`-....l
`'0-,
`(It
`0'1
`~
`1--"
`
`6
`
`
`
`Sept. 8, 1999, 12:00AM
`1 oooooooooooooooooooooooo 1
`II VIRUS SCAN
`I PROCESSOR
`II RAM
`I
`I
`1128MB
`
`HARD DRIVE
`
`HOD D: 4.6 GB
`HOD 1: CD-ROM
`HOD 2: 12.6 GB
`
`1 Starting ... I
`
`g Agile Computers
`
`tech support: 888-999-7777
`http:/ /www.egilecomp.com
`
`I300MHz {350MHz ACTUAL) I
`
`BIOS
`
`ABC
`TECHNOLOGIES
`
`Award BIOS V4 60 25 152 16143 134
`
`FIG.48
`
`d •
`\Jl
`•
`~
`~ ......
`~ = ......
`
`z
`0
`~
`N
`~~
`
`N c c
`
`N
`
`'JJ. =(cid:173)~
`~ .....
`Ul
`0 ......,
`"""'
`"""'
`
`e
`
`rJ'l
`0'1
`'l.
`00
`""-l
`'0-,
`(It
`0'1
`~
`1--"
`
`7
`
`
`
`INTERFACE
`MODULE
`510
`
`r512
`I HOOK DISPATCHER
`
`t ~~~ t
`•••
`
`2
`
`3
`
`4
`
`(n-1)
`
`MEDIA/SYSTEM
`DEVICE
`INFORMATION
`HANDLER 1
`
`; TTT
`
`'
`
`MEDIA/SYSTEM
`DEVICE
`INFORMATION
`HANDLER n
`
`; r-514 ;
`
`INFORMATION TRANSLATORS
`
`•
`
`INITIALIZATION
`OF ATTRIBUTE
`GENERATOR
`
`•
`
`OBJECT
`MANAGEMENT
`
`I
`
`t
`
`OTHER SERVICES
`
`MEMORY MANAGER
`CRYPTOGRAPHIC ENGINE
`DECOMPRESSION ENGINE
`
`I OBJECT
`ENUMERATOR
`
`LOADER
`
`1
`I I OBJECT l
`FIG.5A
`
`STORAGE A
`
`~5UU
`
`DATA
`PACKETS
`
`I~
`
`' "4 OBJECT
`
`MANAGEMENT
`REQUEST
`
`r530
`
`,540
`
`GENERATOR
`
`~ IMAGE
`hJ
`
`r550
`SOUND
`GENERATOR
`
`" .) "
`
`ATTRIBUTE
`GENERATOR
`
`520
`
`STORAGE 8
`
`" ..1
`
`-522
`-
`TEMPLATES
`GRAPHICS OBJECTS r--524
`SOUND OBJECTS
`526
`TEXT OBJECTS
`528
`
`"
`OBJECT
`MANAGEMENT
`
`d •
`\Jl
`•
`~
`~ ......
`~ = ......
`
`z
`0
`~
`N
`~~
`
`N c c
`
`N
`
`'JJ. =(cid:173)~
`~ .....
`
`~
`0 ......,
`'"""'
`'"""'
`
`e
`
`rJ'l
`0'1
`'l.
`00
`""-l
`'0-,
`(It
`0'1
`~
`1--"
`
`8
`
`
`
`U.S. Patent
`
`Nov. 26, 2002
`
`Sheet 7 of 11
`
`US 6,487,656 Bl
`
`FIG. 58
`
`KEYWORD
`
`OBJECT NAME
`
`PROCESSOR TYPE A
`
`NAME.EXT 1
`
`PROCESSOR TYPE 8
`
`NAME.EXT 2
`
`•
`•
`•
`
`•
`•
`•
`
`PROCESSOR TYPE M
`
`NAME.EXT 3
`
`9
`
`
`
`U.S. Patent
`
`Nov. 26, 2002
`
`Sheet 8 of 11
`
`US 6,487,656 Bl
`
`FIG. 6
`
`START
`
`/602
`
`CONDUCT POST
`• POST TASK 1
`. .
`• POST TASK 2
`.
`• POST TASK M-1
`
`/604
`INITIALIZE INTERFACE
`MODULE; LOAD
`INTERFACE
`MODULE
`INTO SYSTEM
`MEMORY
`
`/606
`
`DETECT AND INITIALIZE
`AUDIO DEVICE(S)
`
`/608
`
`DETECT AND INITIALIZE
`VIDEO ENGINE
`
`/610
`ISSUE COMMAND TO
`INTERFACE MODULE
`TO DISPLAY BACKGROUND
`GRAPHICS, IMAGES
`AND TEXT
`
`/612
`
`DETECT PROCESSOR ID
`AND SPEED
`
`l
`
`L614
`
`TRANSFER PROCESSOR ID
`AND SPEED
`INFORMATION
`TO
`INTERFACE MODULE
`
`1
`
`L616
`SIZE AND TEST SYSTEM
`(DYNAMIC) MEMORY
`
`• /618
`
`PASS SYSTEM MEMORY
`INFORMATION TO
`INTERFACE MODULE
`
`1
`
`/620
`
`DETECT SYSTEM MASS
`STORAGE DEVICES
`
`1 L624
`
`PASS SYSTEM MASS
`STORAGE DEVICE
`INFORMATION TO
`INTERFACE MODULE
`
`1 L626
`
`CONDUCT POST
`TASK M
`
`l
`
`L628
`
`BOOT OPERATING
`SYSTEM
`
`10
`
`
`
`U.S. Patent
`
`Nov. 26, 2002
`
`Sheet 9 of 11
`
`US 6,487,656 Bl
`
`FIG.7
`
`/700
`
`702
`
`VALIDATE THE FUNCTION
`NUMBER
`
`NO
`
`YES
`
`706
`
`CONVERT THE FUNCTION
`NUMBER TO THE ADDRESS
`OF THE CORRESPONDING
`HANDLER
`
`708
`
`INVOKE THE HANDLER WITH
`THE MEDIA/SYSTEM
`DEVICE INFORMATION
`
`NO
`
`714
`
`CLEAR ERROR FLAG
`
`EXIT
`
`712
`
`SET ERROR FLAG
`
`11
`
`
`
`U.S. Patent
`
`Nov. 26, 2002
`
`Sheet 10 of 11
`
`US 6,487,656 Bl
`
`OBTAIN MEDIA/SYSTEM
`DEVICE IDENTIFICATION
`
`802
`
`804
`
`OBTAIN DEVICE INFORMATION
`
`NO
`
`YES
`
`808
`
`OBTAIN CORRESPONDING
`GRAPHIC OBJECT NAME
`
`810
`
`818
`
`CREATE A CORRESPONDING
`PACKET FOR ATTRIBUTE
`GENERATOR
`
`812
`INVOKE ATTRIBUTE GENERATOR
`WITH THE DATA PACKET
`
`DISPLAY DEVICE
`INFORMATION
`
`DISPLAY DEVICE INFORMATION
`AND CORRESPONDING GRAPHICS
`
`FIG.B
`
`12
`
`
`
`U.S. Patent
`
`Nov. 26, 2002
`
`Sheet 11 of 11
`
`US 6,487,656 Bl
`
`c START)
`•
`t
`
`OBTAIN PROCESSOR
`VENDOR IDENTIFICATION CODE
`
`_e_902
`
`r9D4
`
`OBTAIN PROCESSOR
`OPERATING SPEED
`* ON-THE-FLY SPEED
`* MANUFACTURER- DETERMINED
`SPEED
`
`•
`
`L906
`OBTAIN GRAPHIC OBJECT
`NAME FOR THE CORRESPONDING
`PROCESSOR FROM PROCESSOR
`MAPPING TABLE
`r9DB
`+
`CREATE CORRESPONDING DATA
`PACKET FOR ATTRIBUTE
`GENERATOR
`
`r9to
`INVOKE ATTRIBUTE GENERATOR
`WITH THE DATE PACKET
`
`•
`
`+
`INVOKE IMAGE GENERATOR
`
`r9t2
`
`l
`
`_e_914
`
`DISPLAY PROCESSOR INFORMATION
`AND CORRESPONDING IMAGE
`+
`EXiT
`
`FIG.9
`
`13
`
`
`
`US 6,487,656 Bl
`
`1
`SYSTEM AND METHOD FOR PROVIDING
`FUNCTIONALITIES TO SYSTEM BIOS
`
`BACKGROUND
`
`1. Field of the Invention
`This invention relates to multimedia. In particular, the
`invention relates to a system and method for providing
`functionalities to a Basic Input/Output System (BIOS).
`2. Description of Related Art
`Currently, if additional functionalities are being added to
`the system BIOS, significant changes have to be imple(cid:173)
`mented. In particular, the system BIOS code has to be
`significantly revised.
`Accordingly, there is a need to provide additional func(cid:173)
`tionalities to system BIOS without having to significantly
`alter the system BIOS code. There is also a further need in
`the industry to provide and display system device informa(cid:173)
`tion simply and efficiently.
`In addition, information regarding system devices such as
`processor performance information and memory size
`information, is traditionally displayed in textual format.
`Such system device information is typically determined at
`the time of manufacture. During the boot process, the system
`device information determined at the time of manufacture is
`detected and/or retrieved by the system BIOS and displayed
`in textual format. Such information is difficult to view as the
`user has to sort through lines of text to locate the desired
`information.
`There is thus a further need in the industry to provide and
`display system device information simply and efficiently.
`
`SUMMARY
`
`The present invention is a method and apparatus to
`provide functionalities to a system BIOS. The method
`comprises interfacing an interface module to the system
`BIOS, and receiving a request from the system BIOS to
`perform a task. System device information associated with
`the task is received from the system BIOS. The interface
`module translates the system device information to provide
`translated information. The translated information is then
`transferred to a corresponding module.
`
`2
`FIG. 5B is a chart illustrating one embodiment of a
`processor mapping table.
`FIG. 6 is a flowchart illustrating one embodiment of a
`process to display information in accordance with the priu(cid:173)
`s ciples of the invention.
`FIG. 7 is a flowchart illustrating one embodiment of a
`function dispatcher process provided in accordance with the
`principles of the invention.
`FIG. 8 is a flowchart illustrating one embodiment of an
`10 information handler process provided in accordance with the
`principles of the invention.
`FIG. 9 is a flowchart illustrating one embodiment of a
`processor information and image handler process provided
`in accordance with the principles of the invention.
`
`15
`
`DESCRIPTION
`The present invention is a method and apparatus to
`provide functionalities to system BIOS in a simple, elegant
`and flexible manner. An interface module is provided, which
`20 enables various parties such as PC system manufacturers
`and motherboard manufacturers to provide additional sys(cid:173)
`tem BIOS functionalities with minimal impact to the system
`BIOS code. The method comprises interfacing an interface
`module to the system BIOS, and receiving a request from the
`2s system BIOS to perform a task. System device information
`associated with the task is received from the system BIOS.
`The interface module translates the system device inform a(cid:173)
`tion to provide translated information. The translated infor(cid:173)
`mation is then transferred to a corresponding module.
`In addition, the present invention is a method and appa(cid:173)
`ratus to provide and display system device information
`simply and efficiently.
`In the following description, for purposes of explanation,
`numerous details are set forth in order to provide a thorough
`35 understanding of the present invention. However, it will be
`apparent to one skilled in the art that these specific details
`are not required in order to practice the present invention. In
`other instances, well known electrical structures and circuits
`are shown in block diagram form in order not to obscure the
`40 present invention.
`
`30
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`The features and advantages of the present invention will
`become apparent from the following detailed description of
`the present invention in which:
`FIG. 1 illustrates an exemplary processor system or user
`computer system, which implements embodiments of the
`present invention.
`FIG. 2 illustrates one embodiment of the information
`display screen in accordance with the principles of the
`invention.
`FIG. 3 is a flowchart illustrating one embodiment of a
`process to display information in accordance with the prin(cid:173)
`ciples of the invention.
`FIG. 4A illustrates one embodiment of the information
`display screen in accordance with another aspect of the 60
`invention.
`FIG. 4B illustrates a second embodiment of the informa(cid:173)
`tion display screen in accordance with another aspect of the
`invention.
`FIG. SA is a diagram illustrating one embodiment of a 65
`system architecture of the software modules implemented in
`accordance with the principles of the invention.
`
`Definitions
`As discussed herein, a "computer system" is a product
`including circuitry capable of processing data. The computer
`45 system may include, but is not limited to, general purpose
`computer systems (e.g., server, laptop, desktop, palmtop,
`personal electronic devices, etc.), personal computers (PCs),
`hard copy equipment (e.g., printer, plotter, fax machine,
`etc.), banking equipment (e.g., an automated teller machine),
`so and the like.
`In addition, the loading of an operating system ("OS")
`refers to the initial placement of the operating system
`bootstrap loader. In one embodiment, during the OS load, a
`sector of information is typically loaded from a hard disk
`ss into the system memory. Alternatively, the bootstrap loader
`is loaded from a network into system memory. An OS "boot"
`refers to the execution of the bootstrap loader. This places
`the OS in control of the system. Some of the actions
`performed during the OS boot include system configuration,
`device detection, loading of drivers and user logins. OS
`runtime refers to the completion of the boot phase and the
`beginning of the execution of applications by the OS. In one
`embodiment, during OS runtime, the OS interacts with the
`user to execute and/or run applications.
`Power On Self Test (POS1) refers to the instructions that
`are executed to configure and test the system hardware prior
`to loading an OS.
`
`14
`
`
`
`US 6,487,656 Bl
`
`3
`System Overview
`
`A description of an exemplary system, which incorporates
`embodiments of the present invention, is hereinafter
`described.
`FIG. 1 illustrates an exemplary computer system 100 that
`implements embodiments of the present invention. Refer(cid:173)
`ring to FIG. 1, the computer system 100 comprises a
`processor or a central processing unit (CPU) 104. The
`illustrated CPU 104 includes an Arithmetic Logic Unit
`(ALU) for performing computations, a collection of regis(cid:173)
`ters for temporary storage of data and instructions, and a
`control unit for controlling operation for the system 100. In
`one embodiment, the CPU 104 includes any one of the x86,
`Pentium, Pentium II, and Pentium Pro microprocessors as
`marketed by Intel Corporation, the K-6 microprocessor as
`marketed by AMD, or the 6x86MX microprocessor as
`marketed by Cyrix Corp. Further examples include the
`Alpha processor as marketed by Digital Equipment
`Corporation, the 680XO processor as marketed by Motorola; 20
`or the Power PC processor as marketed by IBM. In addition,
`any of a variety of other processors, including those from
`Sun Microsystems, MIPS, IBM, Motorola, NEC, Cyrix,
`AMD, Nexgen and others may be used for implementing
`CPU 104. The CPU 104 is not limited to microprocessor but 25
`may take on other forms such as microcontrollers, digital
`signal processors, reduced instruction set computers (RISC),
`application specific integrated circuits, and the like.
`Although shown with one CPU 104, computer system 100
`may alternatively include multiple processing units.
`The CPU 104 is coupled to a bus controller 112 by way
`of a CPU bus 108. The bus controller 112 includes a memory
`controller 116 integrated therein, though the memory con(cid:173)
`troller 116 may be external to the bus controller 112. The
`memory controller 116 provides an interface for access by 35
`the CPU 104 or other devices to system memory 124 via
`memory bus 120. In one embodiment, the system memory
`124 includes synchronous dynamic random access memory
`(SDRAM). System memory 124 may optionally include any
`additional or alternative high speed memory device or 40
`memory circuitry. The bus controller 112 is coupled to a
`system bus 128 that may be a peripheral component inter(cid:173)
`connect (PCI) bus, Industry Standard Architecture (ISA)
`bus, etc. Coupled to the system bus 128 are a graphics
`controller, a graphics engine or a video controller 132, a 45
`mass storage device 152, a communication interface device
`156, one or more input/output (110) devices 168c168N, and
`an expansion bus controller 172. The video controller 132 is
`coupled to a video memory 136 (e.g., 8 Megabytes) and
`video BIOS 140, all of which may be integrated onto a single 50
`card or device, as designated by numeral 144. The video
`memory 136 is used to contain display data for displaying
`information on the display screen 148, and the video BIOS
`140 includes code and video services for controlling the
`video controller 132. In another embodiment, the video 55
`controller 132 is coupled to the CPU 104 through an
`Advanced Graphics Port (AGP) bus.
`The mass storage device 152 includes (but is not limited
`to) a hard disk, floppy disk, CD-ROM, DVD-ROM, tape,
`high density floppy, high capacity removable media, low
`capacity removable media, solid state memory device, etc.,
`and combinations thereof. The mass storage device 152 may
`include any other mass storage medium. The communica(cid:173)
`tion interface device 156 includes a network card, a modem
`interface, etc. for accessing network 164 via communica(cid:173)
`tions link 160. The 1!0 devices 168c168N include a
`keyboard, mouse, audio/sound card, printer, and the like.
`
`10
`
`4
`The 1!0 devices 168c168N may be a disk drive, such as a
`compact disk drive, a digital disk drive, a tape drive, a zip
`drive, a jazz drive, a digital video disk (DVD) drive, a solid
`state memory device, a magneto-optical disk drive, a high
`5 density floppy drive, a high capacity removable media drive,
`a low capacity media device, and/or any combination
`thereof. The expansion bus controller 172 is coupled to
`non-volatile memory 175, which includes system firmware
`176. The system firmware 176 includes system BIOS 82,
`which is for controlling, among other things, hardware
`devices in the computer system 100. The system firmware
`176 also includes ROM 180 and flash (or EEPROM) 184.
`The expansion bus controller 172 is also coupled to expan(cid:173)
`sion memory 188 having RAM, ROM, and/or flash memory
`15 (not shown). The system 100 may additionally include a
`memory module 190 that is coupled to the bus controller
`112. In one embodiment, the memory module 190 comprises
`a ROM 192 and flash (or EEPROM) 194.
`As is familiar to those skilled in the art, the computer
`system 100 further includes an operating system (OS) and at
`least one application program, which in one embodiment,
`are loaded into system memory 124 from mass storage
`device 152 and launched after POST. The OS may include
`any type of OS including, but not limited or restricted to,
`DOS, Windows™ (e.g., Windows 95™, Windows 98™,
`Windows NT™), Unix, Linux, OS/2, OS/9, Xenix, etc. The
`operating system is a set of one or more programs, which
`control the computer system's operation, and the allocation
`of resources. The application program is a set of one or more
`30 software programs that perform a task desired by the user.
`In accordance with the practices of persons skilled in the
`art of computer programming, the present invention is
`described below with reference to symbolic representations
`of operations that are performed by computer system 100,
`unless indicated otherwise. Such operations are sometimes
`referred to as being computer-executed. It will be appreci-
`ated that operations that are symbolically represented
`include the manipulation by CPU 104 of electrical signals
`representing data bits and the maintenance of data bits at
`memory locations in system memory 124, as well as other
`processing of signals. The memory locations where data bits
`are maintained are physical locations that have particular
`electrical, magnetic, optical, or organic properties corre(cid:173)
`sponding to the data bits.
`When implemented in software, the elements of the
`present invention are essentially the code segments to per(cid:173)
`form the necessary tasks. The program or code segments can
`be stored in a processor readable medium or transmitted by
`a computer data signal embodied in a carrier wave over a
`transmission medium or communication link. The "proces(cid:173)
`sor readable medium" may include any medium that can
`store or transfer information. Examples of the processor
`readable medium include an electronic circuit, a semicon(cid:173)
`ductor memory device, a ROM, a flash memory, an erasable
`ROM (EROM), a floppy diskette, a CD-ROM, an optical
`disk, a hard disk, a fiber optic medium, a radio frequency
`(RF) link, etc. The computer data signal may include any
`signal that can propagate over a transmission medium such
`as electronic network channels, optical fibers, air,
`60 electromagnetic, RF links, etc. The code segments may be
`downloaded via computer networks such as the Internet,
`Intranet, etc.
`The booting up of the BIOS and the loading of the
`operating system by the BIOS may take several seconds.
`65 During that time, the monitor screen merely displays BIOS
`information such as test statistics and results. In most
`situations, these results are the same and provide no useful
`
`15
`
`
`
`US 6,487,656 Bl
`
`5
`information to the user. Therefore, it is preferable to display
`other graphics such as advertisements, banners downloaded
`from the internet, or to generate sound during this time.
`These activities can be performed in the pre-boot period at
`the early stage of the BIOS booting-up sequence. A media
`device is a device that can generate graphics or sound, or
`other media information. For example, a graphics engine or
`a graphics controller typically has a set of primitives that
`allows it to display large complex images based on a small
`amount of data. The resultant display remains on the screen
`until the BIOS boot-up is completed or when the machine
`has started to do something else.
`FIG. 2 is a diagram illustrating a pre-boot media system
`200 according to one embodiment of the invention. The
`pre-boot media system 200 essentially is a subset of the
`system 100 as shown in FIG. 1. The pre-boot media system
`200 includes the processor 104, the bus 108/128, the BIOS
`storage 176, the mass storage 152, a system memory 124,
`the media storage 124/152/184, an audio card 168, the
`graphics or video controller 132, and the display monitor
`148.
`The processor 104 executes instructions in the BIOS
`storage 176 and the operating system when loaded into the
`system memory 124. In the pre-boot activities, the processor
`communicates with the audio card 168 and the graphics
`controller 132 via the bus 108/128. Upon power on reset, the
`processor 104 begins to fetch instructions starting from a
`predefined address to begin booting the BIOS from the
`BIOS storage 176.
`The BIOS storage 176 contains the BIOS which includes
`a minimal media initialization code 210, a normal BIOS
`code 815, and an operating system (OS) loader 220.
`Typically, the processor 104 executes the minimal media
`initialization code 210 first, then the normal BIOS code 215,
`and finally the OS loader 220.
`The minimal media initialization code 210 includes mini(cid:173)
`mal code that initializes the graphics controller 132 and/or
`the audio card 168 so that a pre-boot media generation can
`be performed. The initialization code 210 may include
`instructions that configure the display mode (e.g., the color
`depth and the display resolution) of the graphics controller
`132, the audio mode of the audio card 168, graphic and/or
`audio commands, addresses of graphics data and/or sound
`data. For more advanced graphics controllers, the initializa(cid:173)
`tion code 210 may include a complete code sequence that
`allows the graphics controller to generate images without or
`with very little additional graphic information. For these
`graphics controllers, the initialization code 210 may include
`commands to generate graphic primitives such as pixels,
`lines, simple shapes, shading, colors, and the specific loca(cid:173)
`tion on the display screen to display the resulting image. The
`minimal media initialization code 210 is typically performed
`at the early stage of the BIOS boot-up so that the pre-boot
`media generation can start as soon as possible. After the
`processor 104 executes the minimal media initialization
`code 210, the graphics controller 132 and/or the audio card
`168 begin to function independently of the processor 104.
`The normal BIOS code 215 includes instructions to
`perform normal BIOS tasks during a normal BIOS boot-up.
`These tasks include POST, initialization and configuration
`of peripheral devices (including the graphics controller 132
`and the audio card 168 if necessary), and other system tests.
`During this time, the graphics controller 132 continues to
`generate images to be displayed on the display monitor 132.
`The audio card 168 also continues to generate sound.
`The OS loader 220 includes instructions to load the OS
`230 from the mass storage 152 to the system memory 124.
`
`20
`
`6
`As soon as the OS is loaded into the system memory 124,
`control is passed to the OS and the processor 104 executes
`the appropriate program from the OS. During the loading
`time of the OS, the graphics controller 132 and the audio
`5 card 168 continue to generate graphics and sound. Since the
`loading time of the OS may take several seconds to
`complete, this time is used productively to display useful
`information on the monitor and/or to generate useful sound.
`When the OS takes over, the graphics and the sound activi-
`10 ties may be performed as required in the appropriate driver
`of the OS. The pre-boot media activities may be terminated
`and the normal system operations may begin.
`The mass storage 152 stores the OS 230 and other data
`and information. The OS 230 is loaded into the system
`15 memory 124 at the end of the BIOS boot-up as described
`above. Normally, only a portion of the OS 230 is resident in
`the system memory 230. Drivers or programs, data may be
`swapped in and out between the system memory 124 and the
`mass storage 152 as necessary. The OS 230 may include
`drivers that re-start the graphics controller 132 and the audio
`card 168 as appropriate. Normally, when the OS 230 begins
`execution, the pre-boot media activities are terminated.
`The system memory 124 includes random access memory
`(RAM) that contains the loaded portions of the OS 230. The
`25 system memory 124 may also include other types of
`memory such as flash memory.
`The media storage 124/152/184 stores the media infor(cid:173)
`mation to be used by the media devices if necessary. The
`media storage 124/152/184 may be part of the system
`30 memory 124, the mass storage 152, or the flash memory 184.
`The media information includes media data 240, media
`mode 245, and media commands 250. The media data 240
`are the data to be used by the media device directly for
`generating the media output. The data may be accessed
`35 directly on the media storage 124/152/184, or is referenced
`by a pointer or file name. Examples of the media data
`include graphic bitmapped data and sequence of digitized
`audio samples. The media mode 245 provides the mode of
`operation of the media device. For example, a graphic
`40 animation mode refer to a series of repetitive sequence of
`graphics frames. The media commands 250 are the specific
`commands to be used by the media device to carry out its
`function. Example of the media commands 250 include a
`command to put an image of the graphic data to a specified
`45 location on the screen, or a command to render the image in
`a certain way.
`The audio card 168 generates sound to a speaker using the
`sound data in the media data 240. The graphics controller
`132 generates images to be displayed on the display monitor
`50 148. The graphics controller 132 includes configuration
`registers 260 and command registers 265. The configuration
`registers 260 are used to configure the graphics controller
`132 to operate under specified mode. The command registers
`265 contain commands to specify the specific operation such
`55 as block filling, line drawing, etc. The processor 104 ini(cid:173)
`tializes the audio card 168 and the graphics controller 132 by
`writing configuration data and commands to the correspond(cid:173)
`ing media devices. As soon as the media device is initialized,
`it can begin to operate on its own. The audio card 168 can
`60 retrieve the audio data from the media storage 124/152/184
`to produce sound to the speaker. The graphics controller 132
`can retrieve the graphic data from the media storage 124/
`152/184 and generate images on the display screen. Addi(cid:173)
`tional commands can be obtained from the media