throbber
Ulllted States Patent
`
`[19]
`
`[11] Patent Number:
`
`6,158,000
`
`Collins
`
`[45] Date of Patent:
`
`Dec. 5, 2000
`
`US006158000A
`
`54
`
`SHARED MEMORY INITIALIZATION
`METHOD FOR SYSTEM HAVING MULTIPLE
`PROCESSOR CAPABILITY
`
`[75]
`
`.
`Inventor: David L. Collins, Magnolia, Tex.
`
`[73] Assignee: Compaq Computer Corporation,
`Houston, Tex.
`
`[21] Appl. No‘: 09/158,165
`.
`Flledi
`Sell‘ 18! 1998
`[22]
`Int. Cl.7 ............................ G06F 15/177; G06F 9/00;
`[51]
`G061: 15/00
`[52] U.S. Cl.
`.................................... .. 713/1; 713/2; 712/21
`[58] Field of Search ................................ 713/1, 2; 712/21
`[56]
`References Cited
`U S PATENT DOCUMENTS
`'
`'
`11/1930 Rado et a1.
`.
`7/1994 Jewett et al.
`TCLIICR .................................. ..
`395/652
`8/1998 Nam """"" “
`....... 713/2
`5/1999 Jayakumar .
`395/553
`8/1999 Balmer ..... ..
`8/1999 Dove ......................................... .. 713/1
`OTHER PUBLICATIONS
`
`.
`
`
`
`4,235,207
`5,327,553
`
`597909850
`5,904,733
`5,933,624
`5,938,765
`
`A Technical Reference for Designing PCs and Peripherals
`for the Microsoft Windows Family of Operating Systems,
`PC98 System Design Guide, Version 1.0—Sep. 5, 1997.
`
`POWER-ON
`
`
`
`
`PROCESSORS
`RESET
`
`306
`AM I BSP?
`308
`YES
`CONF|G. MEM.
`CONTROLLER
`
`
`
`1
`311
`INITIALIZE
`BASE MEM.
`
`,vC/ECDR
`INITIALIZE AP
`332
`v
`325
`V
`GE;gE%T'jE'-R
`STAR‘ MEM.
`fir:
`TEST/CLR AP
`v
`326
`V
`TE?/|TEflg§AR
`POST SYSTEM
`COMPONENTS
`336
`323 <— v
`NO
`
`
`
`YE
`
`P '
`E
`'
`W'll'
`G
`rzmary xamLner— i
`iam rant
`Assistant Examiner—Ronald D Hartman, Jr.
`Attorney, Agent, or Firm—Conley, Rose & Tayon, P.C.;
`Michael F. Heim
`
`[57]
`
`ABSTRACT
`
`A multiprocessor computer system is provided with a BIOS
`that allows parallel execution of system initialization tasks
`by at least two processors to reduce system boot-up time. At
`power-on, one of the processors is designated as a bootstrap
`processor and the remaining processors are designates as
`afipllzatlon processodrsi Tile profiessgrs are Coupged tfliha
`s are memory mo ue y a s are
`processor
`us.
`e
`bootstrap Processor 15 Cflllflguled to msmlcl lheéppllcallon
`ptrlocegsor to test a(I:11d11nH:.‘111Ztehmt::m(t’rty locanons In the
`s are memory mo u e W i e
`e oo s rap processor pro-
`ceeds with other system initialization tasks
`‘may
`include determining the system configuration, initializing
`peripheral devices, testing the keyboard, and setting up the
`BIOS data area with configuration information. After com-
`pleting its tasks, the bootstrap processor determines whether
`the application processor has Completed the Inefnory test’
`and if so the bootstrap processor proceeds to locate and
`t
`’
`t.
`t
`It.
`t d th tt
`t.
`d
`‘.°“".‘°’?’“.‘°’.a“ °l"’””“g.SyS em"
`15. expece
`a
`‘°1Sl“.g.a“
`rrrrlralrzrrrg rrrerrrery rrr Parallel Wrllr ellrer Syelerrr rrrrlralrZa'
`tion tasks will advantageously reduce system boot-up time
`in multiprocessor systems having large memories (e.g. 1-4
`gigabytes).
`
`25 Claims, 3 Drawing Sheets
`
`2
`
`/,
`
`/
`
`
`SET UP SN“
`314
`MULTIPLE
`PROC.?
`o
`316
`POST SYSTEM
`COMPONENTS
`313
`
`
`
`
`
`TEST 3 CLEAR
`MEMORY
`320
`
`AP DONE? V
`330
`YES \\
`'
`REPORT RES.
`3227
`LOAD/RUN os
`3247
`
`STORE RES-
`333
`V
`‘\ S|GNA_ TASK
`(;oMP_ET|oN
`340
`
`HALT
`
`342
`
`APPLE 1013
`
`1
`
`APPLE 1013
`
`

`
`U.S. Patent
`
`Dec. 5,2000
`
`Sheet 1 of3
`
`6,158,000
`
`u..
`
`0.!
`
`@
`
`____===================
`
`100
`
`FIG. 1
`
`2
`
`

`
`U.S. Patent
`
`Dec. 5,2000
`
`Sheet 2 013
`
`6,158,000
`
`
` INTERRUPTBUS
`
`CPUO
`
`CPU1
`
`CPU2
`
`CPU3
`
`HO
`
`PROCESSOR BUS
`
`
`
`BRIDGE 1
`
`MEMORY
`
`BRIDGE 2
`
`116
`
`115
`
`117
`
`PRIMARY EXP. BUS 1
`
`PRIMARY EXP. BUS 2
`
`
`
`
`
`CONTROL
`
`BRIDGE
`
`
`
`
`SECONDARY EXP. B
`
`121
`
`122
`
`120
`
`SUPPLY
`
`126
`
`109
`
`108
`
`124
`
`3
`
`

`
`U.S. Patent
`
`Dec. 5,2000
`
`Sheet 3 of3
`
`6,158,000
`
`EVENT
`
`302
`
`POWE R-ON
`
`304
`
`PROCESSORS
`
`RESET
`
`306
`
`AM I BSP?
`
`NO
`
`HALT
`
`308
`
`YES
`
`310
`
`CONFIG. MEM.
`
`CONTROLLER
`
`311
`
`INITIALIZE
`
`BASE MEM.
`
`312
`
`SET UP SN“
`314
`
`YES
`
`MULTIPLE
`
`PROC.?
`
`316
`
`O
`
`III
`
`POST SYSTEM
`
`COMPONENTS
`
`318
`
`TEST & CLEAR
`
`MEMORY
`320
`
`INITIALIZE AP
`325
`
`START MEM.
`
`’
`
`,/
`
`TEST/CLR AP
`
`326
`
`POST SYSTEM
`
`COMPONENTS
`
`328
`
`AP DONE?
`
`330
`
`YES
`
`\
`
`Illgll
`
`\\ \
`
`REPORT RES.
`
`322
`
`LOAD/RUN OS
`
`VECTOR
`,4
`/ 332
`GET TEST/CLR
`
`ROUTINE
`
`334
`
`TEST & CLEAR
`
`MEMORY
`
`336
`
`STORE RES.
`
`
`
`
`
`324
`
`342
`
`4
`
`

`
`6,158,000
`
`1
`SHARED MEMORY INITIALIZATION
`METHOD FOR SYSTEM HAVING MULTIPLE
`PROCESSOR CAPABILITY
`
`CROSS-REFERENCE TO RELATED
`APPLICATIONS
`
`Not applicable.
`
`STATEMENT REGARDING FEDERALLY
`SPONSORED RESEARCH OR DEVELOPMENT
`
`Not applicable.
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`
`The present invention relates generally to multiprocessor
`computer systems that distribute system boot-up tasks
`among the processors, and in particular, to a multiprocessor
`computer system in which the memory initialization task is
`assigned to one or more processors other than the bootstrap
`processor.
`2. Description of Related Art
`Due to the advent of power management technology and
`the more recent “instant-on” efforts, there are many ways in
`which a computer may exist in the “OFF” state. Examples
`include hard off (power is disconnected), soft off (power is
`supplied only to components which monitor activity exter-
`nal to the system), suspend mode (contents of memory are
`stored on disk and current state of computer is preserved
`while power consumption is reduced to a minimum level),
`and sleep mode (the clock signal is reduced or halted to
`some or all of the system components during periods of
`inactivity). The sleep and suspend modes may each be
`invoked at various levels, depending on the particular imple-
`mentation of these modes, and recovery from these modes is
`implementation specific.
`Turning a computer “ON” from the hard-off or soft-off
`states causes the computer to begin an initialization process
`(often referred to as “boot-up”). In the initialization process,
`a system reset signal is asserted and released. After the
`de-assertion of the reset signal, many of the system periph-
`eral components initialize themselves, retrieve configuration
`information from dedicated electrically erasable program-
`mable read-only memories (EEPROMs), and enter an ini-
`tialized state. At the same time, the CPU resets itself and
`searches for instructions on how to prepare the system for
`operation. The initial instructions typically are included in
`the basic input/output system (BIOS) which is executable
`code stored in a nonvolatile memory such as a read-only
`memory (ROM). The BIOS is built-in software that contains
`low level code used to control the keyboard, display screen,
`disk drives, serial communications, and a number of mis-
`cellaneous functions. The BIOS also specifies a boot-up
`sequence for the CPU to execute to make the computer ready
`for operation. The CPU normally begins executing initial-
`ization routines from the BIOS ROM, but subsequently
`copies the BIOS code to main memory from which the BIOS
`code may thereafter be executed during normal computer
`operations.
`Typically, the first thing that the BIOS instructs the CPU
`to do is to perform what is called the Power-On Self-Test, or
`POST for short. The POST is a built-in diagnostic program
`that checks much of the computer’s hardware to ensure that
`everything is present and functioning properly, before the
`BIOS begins the actual initialization process. Some addi-
`tional tests are performed later in the boot process. If any
`
`2
`
`fatal errors are encountered, the boot process stops. After the
`initial POST, the BIOS instructs the CPU to locate the video
`system’s built in BIOS program and to execute it to initialize
`the video card. The CPU then displays the BIOS’s startup
`screen, and looks for other devices to see if any of them have
`initialization routines. If any other device initialization rou-
`tines (e.g. IDE hard drive) are found, they are executed as
`well.
`
`The CPU then does more tests on the system, including
`the memory count-up test which may be viewed on the video
`display. In one form, the memory test may be performed by
`writing a test pattern to every memory location and subse-
`quently reading every memory location to verify that the test
`pattern was correctly stored. A second test pattern may also
`be employed so that each bit gets tested in both states.
`Finally, some operating systems require that the memory be
`zeroed out prior to loading and executing the operating
`system software. Consequently, for each memory location
`there may be up to five access operations during the memory
`test (write pattern #1, read pattern #1, write pattern #2, read
`pattern #2, write zeros). For a computer with one megabyte
`of no-wait-state memory and a 12 MHz bus, the memory test
`requires less than half a second.
`If an error is encountered after the initialization of the
`
`video system, a text error message will generally be dis-
`played on the video display. As the initialization process
`continues, progress is regularly reported on the screen. The
`BIOS boot-up sequence also includes a “system inventory”
`of sorts, performing more tests to determine what sort of
`hardware is in the system. Modern BIOSes have many
`automatic settings and may, among other things, automati-
`cally determine memory timing based on what kind of
`memory it finds. Many BIOSes can also dynamically set
`hard drive parameters and access modes, and will determine
`these at roughly this time. The BIOS will also now instruct
`the CPU to search for and label logical devices (COM and
`LPT ports). If the BIOS supports the Plug and Play standard,
`the CPU will detect and configure Plug and Play devices at
`this time and display a message on the screen for each one
`it finds. The CPU will often display a summary screen about
`the system configuration and begin a search for a boot
`device. Some modern BIOSes contain a boot table that
`
`specifies the order of devices which the system should try to
`boot from. If a first target device is present and properly
`configured for booting,
`the system will boot from this
`device. If the target device that the system tries is not found,
`the CPU will then try the next device in the boot table, and
`continue until it finds a bootable device. If no boot device at
`
`all can be found, the system will normally display an error
`message and then freeze up the system.
`Having identified a target boot drive, the BIOS instructs
`the CPU to look for boot information to start the operating
`system boot process. For example, with a hard disk, the CPU
`may search for a master boot record at cylinder 0, head 0,
`sector 1 (the first sector on the disk). If the CPU finds the
`master boot record, the CPU starts the process of loading
`and executing the operating system, using the information in
`the boot sector. At this point, the code indicated by the boot
`sector takes over from the BIOS.
`
`The boot devices which are accessed during the above
`boot-up sequence may include any nonvolatile storage
`device. Floppy disks, hard disks, magnetic tape, CD-ROMs,
`Flash ROMs, and network server disks are all examples of
`devices which can serve as a boot device. In order for a
`
`it must hold a copy of an
`device to be a boot device,
`operating system, and typically it needs to include a “boot-
`sector” that informs the CPU of the operating system’s exact
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`5
`
`

`
`3
`
`4
`
`6,158,000
`
`local devices (i.e. devices
`storage location. Typically,
`included in the computer or directly connected to the
`computer) are preferred over remote devices (i.e. devices
`that need to be accessed via a network or shared commu-
`
`nications link) for booting the system. A local device is
`nearly always able to provide much quicker response when
`operating system components need to be retrieved.
`With the increasing sophistication of computers, a sub-
`stantial
`increase in the time required for booting-up a
`computer has occurred. One particular instance is the
`memory test. Many computer workstations are being pro-
`vided with 1-4 gigabytes of memory. Even with no-wait-
`state memory and 100 MHz bus speed, a conventional
`memory test may easily require over 60 seconds. When this
`is added on to the time required for other initialization tasks,
`the boot-up time may begin to annoy regular users.
`Many variations exist for the boot-up sequence conducted
`by the BIOS. In particular, efforts are being made to reduce
`the time required for a computer to boot up. Since computer
`hardware has become extremely reliable, a proposal has
`been made to eliminate POST tests from the normal boot-up
`sequence. In “Simple Boot Flag Specification: Version 1.0”,
`Microsoft has proposed the use of a register to communicate
`boot options to the system BIOS. The boot flags are PNPOS,
`BOOTING, and DIAG. The PNPOS flag is asserted if the
`operating system normally used by the computer is Plug-
`and-Play capable. If this is the case, the BIOS doesn’t need
`to spend time configuring components that the operating
`system will configure. The DIAG flag is de-asserted if
`hardware tests are considered unnecessary. In this case, the
`BIOS can skip the POST. The BOOTING flag, if asserted,
`indicates that the previous boot attempt did not successfully
`complete and the BIOS may choose to ignore the other flags
`and provide a complete system test and configuration
`sequence.
`
`In many systems, particularly those performing critical
`roles, it is desirable to reduce boot-up time without sacri-
`ficing the assurance provided by performing the POST on a
`regular basis. Thus, a computer system is needed that
`reduces the initialization time required by conventional
`system implementations.
`SUMMARY OF THE INVENTION
`
`Accordingly, there is provided herein a multiprocessor
`computer system having a bootstrap processor and an appli-
`cation processor which concurrently perform system initial-
`ization tasks to reduce the system boot-up time. In one
`embodiment, the processors are coupled to a shared memory
`module by a shared processor bus. The bootstrap processor
`is configured to instruct the application processor to test
`memory locations in the shared memory module while the
`bootstrap processor proceeds with other system initialization
`tasks which may include such tasks as determining the
`system configuration, initializing peripheral devices, testing
`the keyboard, and setting up the BIOS data area with
`configuration information. After completing its tasks,
`the
`bootstrap processor determines whether the application pro-
`cessor has completed the memory test, and if so, the boot-
`strap processor proceeds to locate and execute an operating
`system. It is expected that testing and initializing memory in
`parallel with other system initialization tasks will advanta-
`geously reduce system boot-up time in multiprocessor sys-
`tems having large memories (e.g. 1-4 gigabytes).
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`A better understanding of the present invention can be
`obtained when the following detailed description of the
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`preferred embodiment is considered in conjunction with the
`following drawing in which:
`FIG. 1 shows a computer system;
`FIG. 2 is a functional block diagram of a computer
`system; and
`FIG. 3 illustrates a method for booting-up a computer.
`While the invention is susceptible to various modifica-
`tions 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.
`In addition, certain terms are used throughout the follow-
`ing description and claims to refer to particular system
`components. This document does not intend to distinguish
`between components that differ in name but not function. In
`the following discussion and in the claims,
`the terms
`“including” and “comprising” are used in an open-ended
`fashion, and thus should be interpreted to mean “including,
`but not limited to .
`.
`. ”. Also, the term “couple” or “couples”
`is intended to mean either an indirect or direct electrical
`
`connection. Thus, if a first device couples to a second device,
`that connection may be through a direct electrical connec-
`tion or through an indirect electrical connection via other
`devices and connections.
`
`DETAILED DESCRIPTION OF PREFERRED
`EMBODIMENTS
`
`Turning now to the figures, FIG. 1 shows a multiprocessor
`computer system 100 that is advantageously configured with
`a reduced boot-up time due to distribution of initialization
`tasks to more than one processor. Computer system 100
`comprises a computer chassis 102 coupled to a display
`device 104 and a user input device 106. The computer
`chassis 102 has a power button 108 and may also have a
`power indicator 109 such as a light emitting diode (LED).
`When the power button 108 is momentarily pressed, power
`indicator 109 illuminates and computer system 100 boots
`up. Pressing power button 108 a second time places the
`computer system 100 in an OFF or SLEEP state.
`FIG. 2 illustrates an exemplary architecture of multipro-
`cessor computer system 100. Computer system 100 includes
`at least two processors. The embodiment of FIG. 2, for
`example, includes four processors 110-113 (CPU 0, CPU 1,
`CPU 2, CPU 3). Computer system 100 also includes a shared
`processor bus 114, main memory 115, a North bus bridge
`116, a primary expansion bus 118, a South bus bridge 120,
`a secondary expansion bus 121, an interrupt controller 122,
`an interrupt bus 123, a BIOS ROM 124, and a power supply
`126. Computer system 100 may further include a second
`North bridge 117, a second primary expansion bus 119, and
`a video card 125. Many other system configurations are also
`contemplated.
`Examples of suitable parts for system 100 include CPUs
`such as Intel Pentium, Pentium II, or Pentium Pro
`processors, and the North bridges 116, 117 may be RCC
`Corporation’s LE bus bridge. Examples of suitable main
`memory 115 parts include dynamic random access memory
`(DRAM) and Synchronous DRAM. Main memory 115
`preferably comprises 1-4 gigabytes (1 gigabyte=23° bytes).
`Shared processor bus 114 couples the processors 110-113
`to main memory 115 and North bridges 116, 117. Main
`
`6
`
`

`
`6,158,000
`
`5
`memory 115 is shared by the processors 110-113 for storing
`and retrieving executable programs and data. Preferably,
`processors 110-113 are Pentium Pro processors, and shared
`processor bus 114 is a Pentium Pro bus. However, bus 114
`may be any bus compatible with whatever processors are
`chosen.
`
`North bridges 116, 117 each interface the shared proces-
`sor bus 114 to a primary expansion bus 118, 119. Various
`system peripheral components may couple to either of the
`expansion busses 118, 119. Examples of such peripherals
`include graphics accelerators, video systems 125, sound
`cards, network interfaces, and external bus interfaces such as
`SCSI and IEEE 1394.
`In a preferred embodiment,
`the
`expansion busses 118, 119 are PCI busses, but they may be
`any suitable bus architecture.
`The South bus bridge 120 interfaces one of the primary
`expansion busses 118 to a secondary expansion bus 121.
`Various system components may be coupled to the second-
`ary expansion bus 121. Examples include hard disks, BIOS
`ROMs 124, and I/O controllers. In a preferred embodiment,
`the secondary expansion bus is an EISA bus, but may also
`be any other suitable bus. The South bus bridge may further
`interface with interrupt controller 122. Interrupt controller
`122 monitors interrupt signals which may be provided from
`the various system components and may communicate inter-
`rupt messages to processors 110-113 via interrupt bus 123 in
`response to assertions of the interrupt signals or other system
`events. Any of the processors 110-113 may instruct the
`interrupt controller to communicate an system management
`interrupt (SMI) message via the interrupt bus 123 by writing
`to an appropriate register in interrupt controller 122. After
`recognizing an interrupt message,
`the processors may
`receive a corresponding interrupt vector from interrupt con-
`troller 122 that
`indicates the location of an associated
`
`interrupt handler routine. The interrupt controller 122 may
`further be configured to receive an interrupt signal from
`power supply 126 and generate an interrupt message to one
`or more of the processors to warn of an impending shut-
`down. Power supply 126 provides power to all of the
`computer components shown in FIG. 2 via connections not
`specifically shown. The power supply 126 is coupled to
`interrupt controller 122, power switch 108, and power
`indicator 109, and is further coupled to an external power
`source such as an electrical outlet (not specifically shown).
`Power supply 126 includes a power converter and some
`control circuitry for turning computer system 100 on and off
`in response to operation of power switch 108. The control
`circuitry may also generate logic signals such as a reset
`signal and an interrupt signal. The reset signal is coupled to
`each of the processors 110-113 and is asserted for a prede-
`termined time after the computer system 100 is turned on.
`The reset signal is preferably also coupled to other system
`components.
`Initialization of computer system 100 preferably includes
`performing a sequence of tasks. This task sequence may
`begin with causing every system component to enter an
`initial state at power-on. The initial state is preferably
`deterministic,
`that
`is,
`the initial state is predictable and
`happens every time the system is reset. Asystem reset signal
`may be used as an override signal to initialize all registers in
`each component. The peripheral system components which
`store configuration information in nonvolatile memory will
`then proceed to initialize themselves according to that
`configuration information. For example, video card 125 may
`be configured as a PCI device. Every time the video card is
`reset, it must configure some internal registers with identi-
`fication and operational mode information.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`When processors 110-113 are reset, an instruction pointer
`register is set to provide an initial instruction address of an
`instruction for the processor to execute, and this initial
`instruction address normally addresses a basic input/output
`system (BIOS) stored in BIOS ROM 124. The processor
`consequently retrieves the BIOS from BIOS ROM 124 and
`begins executing instructions therefrom.
`The BIOS consists of multiple modules that usually
`include POST, setup, and system-related modules. One of
`the initial BIOS instructions executed by the processor
`preferably is a jump to the entry point of the POST module.
`The POST module is an executable program that may
`perform multiple functions including testing various system
`components, loading other modules into memory, and set-
`ting up system data structures in memory. The Setup module
`is an executable program which may be invoked to facilitate
`user inspection and modification of the system configura-
`tion. The System module is a set of interrupt service routines
`(ISRs) which are stored in memory and are permanently
`available while the computer is powered on. The System
`module includes code for controlling the keyboard, display
`screen, disk drives, serial communications and a number of
`miscellaneous functions.
`
`One implementation of the POST module preferably
`causes one of the processors to perform the following tasks:
`a BIOS checksum test, a keyboard controller test, a CMOS
`register test, a system timer test, a memory refresh test, a
`base memory test, a CMOS battery test, a display controller
`test, a protected mode test, an address line test, a DMA
`controller test, interrupt vector table creation, BIOS data
`area setup, keyboard test, system configuration verification,
`and bootstrap loading. The POST module may also cause the
`processor to perform the following additional tasks: a pro-
`cessor register test, a cache memory test, and a read/write
`test of conventional and extended memory.
`In conventional multiple processor systems similar to
`system 100, one processor 113 is designated as the bootstrap
`processor (BSP), and the remaining processors 110-112
`assume the role of application processors
`Upon sys-
`tem power up, each processor executes an arbitration
`scheme designed to select one of the processors as the BSP.
`Thus the arbitration scheme winner is not necessarily a
`predetermined one of the processors 110-113. The arbitra-
`tion scheme losers enter a wait state (i.e. go to sleep), while
`the winner designates itself as the BSP and executes the
`BIOS code. Conventionally, the BSP executes the above
`described POST tasks and additional tasks, and may further
`send an interprocessor interrupt (IPI) to the APs to have
`them conduct local tasks (e. g. tests of the processor registers
`and cache memory belonging to each
`The BSP con-
`cludes the POST process by executing the bootstrap loader
`to load and transfer control to the operating system.
`In accordance with a preferred embodiment
`the time
`required for system initialization is reduced by parallelizing
`the boot-up process so that one processor is not burdened
`with all of the non-local
`tasks.
`In particular, computer
`system 100 assigns at least part of the memory read/write
`test to an AP so that some memory testing may be conducted
`in parallel with other POST tasks.
`FIG. 3 is an illustrative flowchart of a boot process for a
`multiprocessor system in accordance with a preferred
`embodiment. Initially the system is in an OFF state. In step
`302 a power-on event occurs, e.g. a power button is pressed
`or a remote wake-up packet is sent. The event triggers a
`power-on step 304 in which power is supplied to the various
`system components and a system reset signal is momentarily
`
`7
`
`

`
`6,158,000
`
`7
`asserted. In response to the reset signal, the system proces-
`sors 110-113 enter an initial state in step 306. In step 308 the
`processors determine which of the processors will act as the
`bootstrap processor BSP, perhaps according to an arbitration
`process. The processors which are not the BSP halt at step
`310 and wait for instructions from the BSP. The BSP
`proceeds to steps 311 and 312 where it may perform some
`initial POST tasks including, for example, configuring the
`memory controller for memory 115 and initializing a base
`portion of memory 115. Other tasks which may be per-
`formed in steps 311 and 312 may include the system timer
`test, the memory refresh test, and a base memory test. In one
`implementation,
`the first megabyte (1048576 bytes) of
`memory is tested and cleared by the BSP. Other base
`memory sizes are also contemplated. Next, in state 314 the
`BSP enables interprocessor communication which illustra-
`tively may be implemented using system management inter-
`rupts (SMI) and designated mailboxes in the initialized
`memory.
`SMIs are software-generated interrupts for various system
`management
`functions including interprocessor
`communication, and are well known to one skilled in the art
`of multiprocessor system design. Further details on the use
`of interrupts may be found in many standard reference texts,
`including “VAX architecture handbook” published in 1981
`by Digital Equipment Corporation, and “Assembly Lan-
`guage & Systems Programming for the IBM PC and Com-
`patibles” by Karen Lemone, published in 1985 by Little,
`Brown & Company Limited.
`Mailboxes are memory locations that are “owned” by one
`of the processors. Other processors can send a message to
`the owner of the mailbox by writing the message in the
`owned memory locations. As a method of communication
`between processors that operate in parallel, mailboxes are
`well known to one skilled in the art of multiprocessor system
`design. Further details on the use of mailboxes may be found
`in many standard reference texts,
`including “Operating
`System Concepts, 2ed” by James Peterson and Abraham
`Silberschatz, reprinted in 1987 by Addison-Wesley Publish-
`ing Company, Inc.
`Atest for the presence of other processors is performed by
`the BSP in step 316. This test may take many forms,
`including sending a message to all processors asking them to
`respond by writing a message to the BSP’s mailbox. A lack
`of received messages after a suitable delay indicates that no
`other processors are present. Messages which are received
`may preferably include identification numbers of the pro-
`cessors so that the BSP can determine how many processors
`are present and where they are located. If the system does
`not include multiple processors, the BSP performs the rest of
`the POST tasks in step 318 and performs the memory
`read/write test in step 320. If no fatal errors are encountered,
`the BSP reports the results of the boot-up process in step 322
`and executes the bootstrap loader in step 324, which locates
`and executes the operating system software.
`The POST tasks of step 318 (and step 328) may include
`a variety of initialization tasks such as a processor register
`test, a BIOS checksum test, a cache memory test, a keyboard
`controller test, a CMOS register test, a CMOS battery test,
`a display controller test, a protected mode test, an address
`line test, a DMA controller test,
`interrupt vector table
`creation, BIOS data area setup, a keyboard test, peripheral
`device initialization, and system configuration verification.
`Step 328 may further include instructing other APs to
`perform tests of their registers and cache memory.
`Step 320 (and 336) may preferably include writing test
`patterns to memory 115 and reading back the contents of
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`8
`memory 115 to verify correct operation of memory 115. Step
`320 (and 336) may further include writing all-zero patterns
`to memory 115 to initialize memory 115 to a cleared state.
`In accordance with a preferred embodiment of the invention,
`computer system 100 tests main memory 115 by writing a
`known test pattern to each memory location and reading the
`contents of each memory location to verify that the value
`read from the memory is identical to the value written to the
`location. For example, a suitable memory test may include
`writing an alternating “1010 .
`.
`. ” bit pattern to that memory
`location, reading the stored value to verify that it is correct,2:
`writing the inverse alternating bit pattern “0101 .
`.
`.
`,
`reading the stored value to verify that it is correct, and
`writing an all zero bit pattern “0000 .
`.
`. ” to clear the
`memory location. To increase the speed of the memory test,
`the memory locations may be tested in groups, i.e. write the
`first pattern to each location in the group, read from each
`location in the group, write the second pattern to each
`location in the group, read from each location in the group,
`and then clear each location in the group.
`Returning to step 316, if a multiple processor environ-
`ment is detected, then in step 325 the BSP may send an IPI
`to the other APs to have them conduct local tasks (e.g. tests
`of the processor registers and cache memory belonging to
`each
`In step 326 the BSP instructs an AP to start
`performing the memory test. In one implementation, the
`BSP sends an interprocessor interrupt (IPI) to anAP with an
`interrupt vector that points to an entry point in the BIOS
`routine for performing the memory test. While the AP begins
`performing the memory test, the BSP continues with other
`POST tasks in step 328 before entering a wait loop 330. In
`wait loop 330, the BSP checks to see if the memory task is
`completed, and if so, the BSP proceeds to step 322 to do a
`summary report of the POST and memory test results.
`The AP which receives the IPI message loads the interrupt
`vector into an instruction pointer register in step 332,
`retrieves the memory test routine in step 334, and performs
`a read/write test of the memory 115 in step 336. In step 336
`the AP may also clear memory 115. In step 338 the test
`results (i.e. passed or failed with failure details) are prepared
`for communication to the BSP, which in one implementation
`may be done by storing the results in a mailbox location for
`the BSP. In step 340 the AP signals task completion to the
`BSP and halts in step 342. In a preferred embodiment, the
`AP causes a system management interrupt (SMI) to be sent
`to the BSP to cause the BSP to check its mailbox location for
`
`memory test results.
`It may be desired for the progress of the memory test to
`be displayed on the computer’s monitor. Since the BSP may
`be printing system configuration information to the display
`during the memory test, in one embodiment the AP accesses
`the video display memory directly to control a specific
`portion of the display screen.
`System 100 may illustratively have 4 GB of memory 115,
`and bus 114 may operate at 100 MHz. Although the memory
`test may consequently require approximately a minute or
`longer to complete, the test may be performed in paralle

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket