US20050273601A1 - Processing capacity on demand - Google Patents
Processing capacity on demand Download PDFInfo
- Publication number
- US20050273601A1 US20050273601A1 US10/848,387 US84838704A US2005273601A1 US 20050273601 A1 US20050273601 A1 US 20050273601A1 US 84838704 A US84838704 A US 84838704A US 2005273601 A1 US2005273601 A1 US 2005273601A1
- Authority
- US
- United States
- Prior art keywords
- processor
- authorized
- processing elements
- processing
- become active
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Definitions
- capacity on demand refers generally to adding resources on an as-needed basis. In particular, processing capacity could be added on demand.
- latent processing capacity that is unused until a need for extra capacity arises. When a need arises, the latent processing capacity may be tapped, and then allowed to again become unused when the need passes.
- latent processing capacity could be added to a high-end server in a data network such as the Internet, and called upon only during periods of peak traffic. Letting the processing capacity be unused until needed reduces costs, since agreements may be made with capacity providers that only capacity that is actually used will be paid for.
- latent or reserve processing capacity may be provided in processor packages that are added to a system's hardware platform.
- the processor packages may be brought into use at a platform level, in a manner analogous to using a relay to connect power to a circuit to bring the circuit into use.
- reserve capacity when used in this way, it involves adding the capacity in bulk form, that is, in units of one or more entire processor packages. Finer granularity is not possible, in that individual processing elements on a processor package cannot be selectively brought into use. Such an approach may be wasteful if all processing elements on a processor package are not needed.
- FIG. 1 shows a processor package according to embodiments of the present invention
- FIGS. 2-4 , 4 A and 5 show process flows according to embodiments of the present invention.
- FIG. 6 shows a system according to embodiments of the present invention.
- One embodiment of the present invention relates to performing a process to check authorization information corresponding to available reserve processing capacity to determine if the reserve processing capacity is authorized for use, and if the authorization information indicates that the reserve processing capacity is authorized for use, using the reserve processing capacity.
- the check may be inserted in a non-intrusive way into standard firmware initialization routines, making implementation comparatively inexpensive.
- the reserve processing capacity need not be made continuously visible to an operating system, reducing security concerns.
- the reserve processing capacity may be processing elements on a processor package, and the authorization information may be contained in a data storage area on the processor package.
- the data storage area could be, for example, a register to store an authorization status for each processing element. Based on a respective status for each processing element, the processing elements may be brought into use selectively and individually.
- FIG. 1 shows an example of a processor package 100 according to embodiments of the present invention.
- the processor package 100 may comprise a plurality of processing elements 101 .
- One or more of the processing elements 101 may be reserve processing elements 101 . 1 that are not used unless there is a demand for increased capacity, while others of the processing elements may be regularly-used processing elements 101 . 2 .
- the processor package 100 may further include a cache 102 and a region 103 distinct from the processing elements containing, for example, bus interface logic.
- the region 103 may further include a storage area for authorization information 104 .
- the storage area 104 could be implemented, for example, as a register having a bit corresponding to each processing element.
- a status of each bit could indicate whether a corresponding processing element was authorized for use. For example, a bit with a logic value of “1” could indicate that a corresponding processing element was authorized for use, while a bit with a logic value of “0” could indicate that a corresponding processing element was not authorized for use.
- reserve processing elements may be activated for use on demand to add to the processing capacity provided by the regular-use processing elements.
- the authorization information could be set by any of a number of secure mechanisms.
- many high-end server platforms include a service controller that can be coupled to platform components and used to program the components.
- a service controller could, for example, be used by an authorized person to set bits in the register 104 to activate one or more of the reserve processing elements during a period of increased demand.
- the bits could be automatically set by secure software based on certain triggering events, such as a demand threshold being met or exceeded.
- a processor package 100 shipped by a vendor to a user could have a set of regular processing elements that would ordinarily be active, and a set of reserve processing elements that would be inactive unless called on by increased demand for processing capacity. There could be an agreement between the vendor and the user wherein, for example, the user could selectively activate reserve processing elements and make a corresponding per-use payment to the vendor.
- the processing elements are processor cores and the processor is a multi-core processor.
- FIG. 2 shows a process flow according to embodiments of the present invention for adding reserve processing elements to the processing capacity of a processor package 100 .
- the processor package could be placed into use with the regular processing elements active and the reserve processing elements initially inactive.
- the processor package could have been placed into use in a server system in a data network that began to experience increased traffic. Accordingly, the system could receive a request for additional processing capacity, as shown in block 201 .
- the authorization information for the inactive processing elements could be updated, as shown in block 202 .
- This could be performed by a secure operation as described above.
- the secure operation could cause one or more bits in a register 104 of the processing package to be set to the appropriate logic value.
- One or more of the previously inactive processing elements could then be signaled to become active, as shown in block 203 .
- a previously inactive processing element may check the authorization information to determine if it is authorized to become active, as shown in block 204 . If authorized to become active, the previously inactive processing element may become active, as shown in block 205 .
- Becoming active may involve executing initialization processes, including known BIOS (Basic I/O System) routines, to become ready to come “online” for use.
- BIOS Basic I/O System
- Operations associated with reaching the state illustrated by block 200 may involve initialization operations.
- One such initialization operation is sometimes termed a “cold reset” and involves an initial power-up of a hardware device.
- a cold reset a plurality of processing elements on a processor package may elect a single bootstrap processing element by a known election process.
- the bootstrap processing element is responsible for executing bootstrap routines and bringing the non-bootstrap processing elements online.
- FIG. 3 shows a process associated with a cold reset according to embodiments of the present invention. Following a cold reset as shown in block 300 , a plurality of processing elements may elect a bootstrap processing element as shown in block 301 .
- the non-elected processing elements may enter an inactive state, as shown in block 302 .
- Known processing systems may include firmware to create such an inactive state.
- the firmware for example, may be stored in read-only memory (ROM) and be specific to a particular processor architecture.
- the firmware may also be referred to as “micro-code” or “micro-instructions” and may be contained on the processor in hard coded or other format in some embodiments.
- the inactive state may be a “Wait_for_SIPI” (Wait_for_Startup Inter-Processor Interrupt) state as known in Intel® x86 processor architecture.
- the bootstrap processing element may then read authorization information in register 104 .
- the firmware could be, for example, firmware of the Intel® x86 processor architecture. If the authorization information indicates that the bootstrap processor is authorized for use, the bootstrap processing element may proceed with the rest of its initialization, as shown in block 304 . Otherwise, the bootstrap processor may enter an inactive state along with the rest of the processing elements. In the latter situation, the entire processor package would be inactive.
- processing element k of N total processing elements on a processor package may be inactive.
- this inactive state may be a Wait_for_SIPI state that may have been entered following a cold reset, as illustrated by the flow of blocks 300 - 302 (see FIG. 3 ) discussed above.
- the bootstrap processing element might then issue a signal 404 to processing element k to cause it to leave the inactive state.
- the signal 404 may be a “Startup Inter-Processor Interrupt” (SIPI) of the known Intel® x86 processor architecture.
- SIPI Starttup Inter-Processor Interrupt
- a SIPI signal may cause a processing element in the Wait_for_SIPI state to leave or “wake up” from the Wait_for_SIPI state.
- the SIPI could cause processing element k to leave the inactive state and check the authorization information, as shown in block 401 . If authorized, processing element k may proceed to complete its initialization, as shown in block 403 . Otherwise, processing element k may return to an inactive state, as shown in block 402 .
- the process of FIG. 4 could be performed for each of the N processing elements.
- the authorization information would determine which of the N processing elements was brought into use. As noted earlier, there could be a regular-use set of processing elements designated in the authorization information, and a set of reserve processing elements designated in the authorization information.
- a check of the authorization information as represented by block 303 ( FIG. 3 ) and block 401 ( FIG. 4 ) may also be performed pursuant to a “warm reset” (e.g., a reset such as that caused by assertion of an INIT pin on an Intel® x86 processor) as opposed to a cold reset (e.g., assertion of a RESET pin) as in FIG. 3 .
- a warm reset there may be no initial powering-up of hardware.
- FIG. 4A A process according to embodiments of the present invention corresponding to a warm reset is shown in FIG. 4A .
- the processing element may read the authorization information, as shown in block 451 .
- the firmware could be, for example, firmware of the Intel® x86 processor architecture. If authorized, the processing element may proceed to complete its initialization, as shown in block 453 . Otherwise, the processing element may enter an inactive state, as shown in block 452 .
- a system including a processor package may reach the state shown in block 200 of FIG. 2 .
- the process of FIG. 4 may be further used to implement other operations shown in FIG. 2 . More specifically, after a request for additional processing capacity (block 201 , FIG. 2 ) and a corresponding update of the authorization information (block 202 , FIG. 2 ) to authorize one or more of the reserve processing elements for use, a signal to become active (e.g., a SIPI) may be issued to a previously inactive processing element (e.g., a processing element in a Wait_for_SIPI state) as shown in block 400 and signal 404 ( FIG. 4 ).
- a signal to become active e.g., a SIPI
- a previously inactive processing element e.g., a processing element in a Wait_for_SIPI state
- the previously inactive processing element may then check the authorization information to determine if it is authorized to become active as shown in corresponding blocks 401 ( FIG. 4 ) and 204 ( FIG. 2 ). If it is authorized, the previously inactive processing element may become active, as shown in corresponding blocks 403 ( FIG. 4 ) and 205 ( FIG. 2 ).
- a processing element need not enter an inactive state only following a cold reset.
- a processing element could be placed into an inactive state after a period of activity, by causing the associated operating system and BIOS to no longer recognize the processing element as active or available. This could include placing the processing element in a Wait_for_SIPI state. Then, the authorization information could be correspondingly updated. Then, the processing element could be again made active, and again inactive, based on demand.
- FIG. 5 shows operations that could occur on an “up-and-running” system as variations in the level of demand for processing capacity were experienced, and the authorization information was correspondingly modified.
- a first distribution of processing elements in a processor package may be defined in the authorization information, where the first distribution defines a set of processing elements authorized to be active and a set of processing elements not authorized to be active.
- the set of processing elements authorized to be active according to the first distribution may be used, while the unauthorized set remains inactive.
- the authorization information may be modified to define a second distribution of the processing elements different from the first distribution.
- the second distribution may define more processing elements authorized to be active than does the first distribution.
- the second distribution may define fewer processing elements authorized to be active than does the first distribution.
- the authorization information may be checked by respective processing elements to determine their authorization statuses, as shown in block 503 . Based on their respective authorization statuses, one or more processing elements may become active, or become inactive, as shown in block 504 . As a result, the system may be used with the second distribution of processing elements, as shown in block 505 .
- embodiments of the present invention may realize economies of implementation in that straightforward checks for authorization may be inserted in standard system firmware as described above.
- Other standard software also meshes well with operations according to embodiments of the invention.
- block 203 FIG. 2
- standard firmware operations (not illustrated) associated with detecting a device newly added to system hardware and making the device recognized to an operating system.
- An example of a suitable firmware process of this kind is known in some systems as a “Processor Online Flow.”
- a Processor Online Flow could include or culminate in a signal to a previously inactive reserve processing element to become active as shown in block 203 .
- “becoming active” as shown in block 205 could include notifying an operating system of the presence of a newly initialized processing element and bringing it online via industry standard ACPI (Advanced Configuration and Power Interface; Version 2.0c, Aug. 25, 2003 by Intel Corp. et al.) operations for interfacing between a BIOS (Basic Input/Output System) and an operating system.
- ACPI Advanced Configuration and Power Interface
- BIOS Basic Input/Output System
- FIG. 6 is a block diagram of a computer system, which may include an architectural state, including one or more processor packages and memory for use in accordance with an embodiment of the present invention.
- a computer system 600 may include one or more processor packages 610 ( 1 )- 610 ( n ) coupled to a processor bus 620 , which may be coupled to a system logic 630 .
- Each of the one or more processor packages 610 ( 1 )- 610 ( n ) may be N-bit processor packages and may include a decoder (not shown) and one or more N-bit registers (not shown).
- System logic 630 may be coupled to a system memory 640 through a bus 650 and coupled to a non-volatile memory 670 and one or more peripheral devices 680 ( 1 )- 680 ( m ) through a peripheral bus 660 .
- Peripheral bus 660 may represent, for example, one or more Peripheral Component Interconnect (PCI) buses, PCI Special Interest Group (SIG) PCI Local Bus Specification, Revision 2.2., published Dec. 18, 1998; industry standard architecture (ISA) buses; Extended ISA (EISA) buses, BCPR Services Inc. EISA Specification, Version 3.12, 1992, published 1992; universal serial bus (USB), USB Specification, Version 1.1, published Sep. 23, 1998; and comparable peripheral buses.
- PCI Peripheral Component Interconnect
- SIG PCI Special Interest Group
- EISA Extended ISA
- USB universal serial bus
- USB USB Specification
- Non-volatile memory 670 may be a static memory device such as a read only memory (ROM) or a flash memory.
- Peripheral devices 680 ( 1 )- 680 ( m ) may include, for example, a keyboard; a mouse or other pointing devices; mass storage devices such as hard disk drives, compact disc (CD) drives, optical disks, and digital video disc (DVD) drives; displays and the like.
- micro-code for executing processes according to embodiments of the present invention could be stored on a machine-readable medium such as ROM.
- the micro-code could also be stored on readily portable machine-readable media such as magnetic tape, diskette, CD-ROM and the like.
Abstract
Description
- The term “capacity on demand” as it relates to computer systems refers generally to adding resources on an as-needed basis. In particular, processing capacity could be added on demand.
- Known arrangements for adding processing capacity on demand involve providing latent processing capacity that is unused until a need for extra capacity arises. When a need arises, the latent processing capacity may be tapped, and then allowed to again become unused when the need passes. For example, latent processing capacity could be added to a high-end server in a data network such as the Internet, and called upon only during periods of peak traffic. Letting the processing capacity be unused until needed reduces costs, since agreements may be made with capacity providers that only capacity that is actually used will be paid for.
- In some known arrangements, latent or reserve processing capacity may be provided in processor packages that are added to a system's hardware platform. The processor packages may be brought into use at a platform level, in a manner analogous to using a relay to connect power to a circuit to bring the circuit into use. When reserve capacity is used in this way, it involves adding the capacity in bulk form, that is, in units of one or more entire processor packages. Finer granularity is not possible, in that individual processing elements on a processor package cannot be selectively brought into use. Such an approach may be wasteful if all processing elements on a processor package are not needed.
- Other known arrangements may be able to selectively activate individual processing elements on a processor package for added capacity. Such arrangements may use a form of power management to regulate how many processing elements are active. In this power management approach, processing elements not in use may be placed into a low power state to conserve energy, and then placed into a higher power state when put into use. Additionally, known power management techniques typically require that managed devices be made continuously “visible” (in an understood operating system software sense) to associated BIOS (Basic Input/Output System) and operating system software.
-
FIG. 1 shows a processor package according to embodiments of the present invention; -
FIGS. 2-4 , 4A and 5 show process flows according to embodiments of the present invention; and -
FIG. 6 shows a system according to embodiments of the present invention. - One embodiment of the present invention relates to performing a process to check authorization information corresponding to available reserve processing capacity to determine if the reserve processing capacity is authorized for use, and if the authorization information indicates that the reserve processing capacity is authorized for use, using the reserve processing capacity. The check may be inserted in a non-intrusive way into standard firmware initialization routines, making implementation comparatively inexpensive. Moreover, the reserve processing capacity need not be made continuously visible to an operating system, reducing security concerns.
- In embodiments, the reserve processing capacity may be processing elements on a processor package, and the authorization information may be contained in a data storage area on the processor package. The data storage area could be, for example, a register to store an authorization status for each processing element. Based on a respective status for each processing element, the processing elements may be brought into use selectively and individually.
-
FIG. 1 shows an example of aprocessor package 100 according to embodiments of the present invention. Theprocessor package 100 may comprise a plurality ofprocessing elements 101. One or more of theprocessing elements 101 may be reserve processing elements 101.1 that are not used unless there is a demand for increased capacity, while others of the processing elements may be regularly-used processing elements 101.2. As is typical for many known processor packages, theprocessor package 100 may further include acache 102 and aregion 103 distinct from the processing elements containing, for example, bus interface logic. According to embodiments of the present invention, theregion 103 may further include a storage area forauthorization information 104. Thestorage area 104 could be implemented, for example, as a register having a bit corresponding to each processing element. A status of each bit could indicate whether a corresponding processing element was authorized for use. For example, a bit with a logic value of “1” could indicate that a corresponding processing element was authorized for use, while a bit with a logic value of “0” could indicate that a corresponding processing element was not authorized for use. Based on the authorization information in theregister 104, reserve processing elements may be activated for use on demand to add to the processing capacity provided by the regular-use processing elements. - The authorization information could be set by any of a number of secure mechanisms. For example, many high-end server platforms include a service controller that can be coupled to platform components and used to program the components. Such a service controller could, for example, be used by an authorized person to set bits in the
register 104 to activate one or more of the reserve processing elements during a period of increased demand. Or, for example, the bits could be automatically set by secure software based on certain triggering events, such as a demand threshold being met or exceeded. - A
processor package 100 shipped by a vendor to a user could have a set of regular processing elements that would ordinarily be active, and a set of reserve processing elements that would be inactive unless called on by increased demand for processing capacity. There could be an agreement between the vendor and the user wherein, for example, the user could selectively activate reserve processing elements and make a corresponding per-use payment to the vendor. In one embodiment, the processing elements are processor cores and the processor is a multi-core processor. -
FIG. 2 shows a process flow according to embodiments of the present invention for adding reserve processing elements to the processing capacity of aprocessor package 100. As shown in block 200, the processor package could be placed into use with the regular processing elements active and the reserve processing elements initially inactive. - Then, a need for increased processing capacity could arise in the user's system. For example, the processor package could have been placed into use in a server system in a data network that began to experience increased traffic. Accordingly, the system could receive a request for additional processing capacity, as shown in
block 201. - Based on the request for additional capacity, the authorization information for the inactive processing elements could be updated, as shown in
block 202. This could be performed by a secure operation as described above. The secure operation could cause one or more bits in aregister 104 of the processing package to be set to the appropriate logic value. - One or more of the previously inactive processing elements could then be signaled to become active, as shown in
block 203. If signaled to become active, a previously inactive processing element may check the authorization information to determine if it is authorized to become active, as shown in block 204. If authorized to become active, the previously inactive processing element may become active, as shown in block 205. Becoming active may involve executing initialization processes, including known BIOS (Basic I/O System) routines, to become ready to come “online” for use. When the previously inactive processing element is ready to come online, an operating system of whatever hardware platform the previously inactive processing element is installed on may be notified of the availability of the previously inactive processing element and begin to use it. - Operations associated with reaching the state illustrated by block 200, above, may involve initialization operations. One such initialization operation is sometimes termed a “cold reset” and involves an initial power-up of a hardware device. In known systems, following a cold reset, a plurality of processing elements on a processor package may elect a single bootstrap processing element by a known election process. The bootstrap processing element is responsible for executing bootstrap routines and bringing the non-bootstrap processing elements online.
FIG. 3 shows a process associated with a cold reset according to embodiments of the present invention. Following a cold reset as shown inblock 300, a plurality of processing elements may elect a bootstrap processing element as shown inblock 301. - The non-elected processing elements may enter an inactive state, as shown in
block 302. Known processing systems may include firmware to create such an inactive state. The firmware, for example, may be stored in read-only memory (ROM) and be specific to a particular processor architecture. The firmware may also be referred to as “micro-code” or “micro-instructions” and may be contained on the processor in hard coded or other format in some embodiments. In some embodiments, the inactive state may be a “Wait_for_SIPI” (Wait_for_Startup Inter-Processor Interrupt) state as known in Intel® x86 processor architecture. As shown inblock 303, as part of the execution of firmware according to embodiments of the present invention pursuant to a cold reset, the bootstrap processing element may then read authorization information inregister 104. The firmware could be, for example, firmware of the Intel® x86 processor architecture. If the authorization information indicates that the bootstrap processor is authorized for use, the bootstrap processing element may proceed with the rest of its initialization, as shown inblock 304. Otherwise, the bootstrap processor may enter an inactive state along with the rest of the processing elements. In the latter situation, the entire processor package would be inactive. - More typically, however, there may be a set of processing elements authorized for regular use in the authorization information. After the bootstrap processing element of this regular-use set was initialized, the bootstrap processing element might begin to bring others of the regular-use processing elements into use. A process for this according to embodiments of the present invention is shown in
FIG. 4 . As shown inblock 400, processing element k of N total processing elements on a processor package may be inactive. In embodiments, this inactive state may be a Wait_for_SIPI state that may have been entered following a cold reset, as illustrated by the flow of blocks 300-302 (seeFIG. 3 ) discussed above. - The bootstrap processing element might then issue a
signal 404 to processing element k to cause it to leave the inactive state. In embodiments, thesignal 404 may be a “Startup Inter-Processor Interrupt” (SIPI) of the known Intel® x86 processor architecture. A SIPI signal may cause a processing element in the Wait_for_SIPI state to leave or “wake up” from the Wait_for_SIPI state. The SIPI could cause processing element k to leave the inactive state and check the authorization information, as shown inblock 401. If authorized, processing element k may proceed to complete its initialization, as shown in block 403. Otherwise, processing element k may return to an inactive state, as shown inblock 402. - Following a cold reset, the process of
FIG. 4 could be performed for each of the N processing elements. The authorization information would determine which of the N processing elements was brought into use. As noted earlier, there could be a regular-use set of processing elements designated in the authorization information, and a set of reserve processing elements designated in the authorization information. - According to embodiments of the present invention, a check of the authorization information as represented by block 303 (
FIG. 3 ) and block 401 (FIG. 4 ) may also be performed pursuant to a “warm reset” (e.g., a reset such as that caused by assertion of an INIT pin on an Intel® x86 processor) as opposed to a cold reset (e.g., assertion of a RESET pin) as inFIG. 3 . In a warm reset, there may be no initial powering-up of hardware. A process according to embodiments of the present invention corresponding to a warm reset is shown inFIG. 4A . Following a warm reset of a processing element as shown inblock 450, as part of the execution of firmware according to embodiments of the present invention pursuant to a warm reset, the processing element may read the authorization information, as shown inblock 451. The firmware could be, for example, firmware of the Intel® x86 processor architecture. If authorized, the processing element may proceed to complete its initialization, as shown in block 453. Otherwise, the processing element may enter an inactive state, as shown inblock 452. - Following execution of the processes of
FIGS. 3 and 4 , a system including a processor package according to embodiments of the present invention may reach the state shown in block 200 ofFIG. 2 . The process ofFIG. 4 may be further used to implement other operations shown inFIG. 2 . More specifically, after a request for additional processing capacity (block 201,FIG. 2 ) and a corresponding update of the authorization information (block 202,FIG. 2 ) to authorize one or more of the reserve processing elements for use, a signal to become active (e.g., a SIPI) may be issued to a previously inactive processing element (e.g., a processing element in a Wait_for_SIPI state) as shown inblock 400 and signal 404 (FIG. 4 ). The previously inactive processing element may then check the authorization information to determine if it is authorized to become active as shown in corresponding blocks 401 (FIG. 4 ) and 204 (FIG. 2 ). If it is authorized, the previously inactive processing element may become active, as shown in corresponding blocks 403 (FIG. 4 ) and 205 (FIG. 2 ). - It should be understood that a processing element need not enter an inactive state only following a cold reset. A processing element could be placed into an inactive state after a period of activity, by causing the associated operating system and BIOS to no longer recognize the processing element as active or available. This could include placing the processing element in a Wait_for_SIPI state. Then, the authorization information could be correspondingly updated. Then, the processing element could be again made active, and again inactive, based on demand. Such a process is illustrated generally in
FIG. 5 .FIG. 5 shows operations that could occur on an “up-and-running” system as variations in the level of demand for processing capacity were experienced, and the authorization information was correspondingly modified. As shown inblock 500, a first distribution of processing elements in a processor package may be defined in the authorization information, where the first distribution defines a set of processing elements authorized to be active and a set of processing elements not authorized to be active. As shown in block 501, the set of processing elements authorized to be active according to the first distribution may be used, while the unauthorized set remains inactive. - As shown in
block 502, based on a change in demand for processing capacity, the authorization information may be modified to define a second distribution of the processing elements different from the first distribution. The second distribution may define more processing elements authorized to be active than does the first distribution. On the other hand, the second distribution may define fewer processing elements authorized to be active than does the first distribution. Pursuant to the modification of the authorization information, the authorization information may be checked by respective processing elements to determine their authorization statuses, as shown in block 503. Based on their respective authorization statuses, one or more processing elements may become active, or become inactive, as shown in block 504. As a result, the system may be used with the second distribution of processing elements, as shown in block 505. - As noted earlier, embodiments of the present invention may realize economies of implementation in that straightforward checks for authorization may be inserted in standard system firmware as described above. Other standard software also meshes well with operations according to embodiments of the invention. For example, block 203 (
FIG. 2 ) could be preceded by standard firmware operations (not illustrated) associated with detecting a device newly added to system hardware and making the device recognized to an operating system. An example of a suitable firmware process of this kind is known in some systems as a “Processor Online Flow.” A Processor Online Flow could include or culminate in a signal to a previously inactive reserve processing element to become active as shown inblock 203. Along similar lines, “becoming active” as shown in block 205 could include notifying an operating system of the presence of a newly initialized processing element and bringing it online via industry standard ACPI (Advanced Configuration and Power Interface; Version 2.0c, Aug. 25, 2003 by Intel Corp. et al.) operations for interfacing between a BIOS (Basic Input/Output System) and an operating system. -
FIG. 6 is a block diagram of a computer system, which may include an architectural state, including one or more processor packages and memory for use in accordance with an embodiment of the present invention. InFIG. 6 , acomputer system 600 may include one or more processor packages 610(1)-610(n) coupled to aprocessor bus 620, which may be coupled to asystem logic 630. Each of the one or more processor packages 610(1)-610(n) may be N-bit processor packages and may include a decoder (not shown) and one or more N-bit registers (not shown).System logic 630 may be coupled to asystem memory 640 through abus 650 and coupled to anon-volatile memory 670 and one or more peripheral devices 680(1)-680(m) through aperipheral bus 660.Peripheral bus 660 may represent, for example, one or more Peripheral Component Interconnect (PCI) buses, PCI Special Interest Group (SIG) PCI Local Bus Specification, Revision 2.2., published Dec. 18, 1998; industry standard architecture (ISA) buses; Extended ISA (EISA) buses, BCPR Services Inc. EISA Specification, Version 3.12, 1992, published 1992; universal serial bus (USB), USB Specification, Version 1.1, published Sep. 23, 1998; and comparable peripheral buses.Non-volatile memory 670 may be a static memory device such as a read only memory (ROM) or a flash memory. Peripheral devices 680(1)-680(m) may include, for example, a keyboard; a mouse or other pointing devices; mass storage devices such as hard disk drives, compact disc (CD) drives, optical disks, and digital video disc (DVD) drives; displays and the like. - Further, as noted earlier, micro-code for executing processes according to embodiments of the present invention could be stored on a machine-readable medium such as ROM. The micro-code could also be stored on readily portable machine-readable media such as magnetic tape, diskette, CD-ROM and the like.
- Several embodiments of the present invention are specifically illustrated and/or described herein. However, it will be appreciated that modifications and variations of the present invention are covered by the above teachings and within the purview of the appended claims without departing from the spirit and intended scope of the invention.
Claims (24)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/848,387 US7979699B2 (en) | 2004-05-19 | 2004-05-19 | Processing capacity on demand |
PCT/US2005/015885 WO2005116831A2 (en) | 2004-05-19 | 2005-05-06 | Processing capacity on demand |
TW094114732A TWI279728B (en) | 2004-05-19 | 2005-05-06 | Method for providing processing capacity on demand, microprocessor, and computing system |
US13/162,464 US20110246750A1 (en) | 2004-05-19 | 2011-06-16 | Processing capacity on demand |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/848,387 US7979699B2 (en) | 2004-05-19 | 2004-05-19 | Processing capacity on demand |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/162,464 Continuation US20110246750A1 (en) | 2004-05-19 | 2011-06-16 | Processing capacity on demand |
Publications (2)
Publication Number | Publication Date |
---|---|
US20050273601A1 true US20050273601A1 (en) | 2005-12-08 |
US7979699B2 US7979699B2 (en) | 2011-07-12 |
Family
ID=34970156
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/848,387 Expired - Fee Related US7979699B2 (en) | 2004-05-19 | 2004-05-19 | Processing capacity on demand |
US13/162,464 Abandoned US20110246750A1 (en) | 2004-05-19 | 2011-06-16 | Processing capacity on demand |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/162,464 Abandoned US20110246750A1 (en) | 2004-05-19 | 2011-06-16 | Processing capacity on demand |
Country Status (3)
Country | Link |
---|---|
US (2) | US7979699B2 (en) |
TW (1) | TWI279728B (en) |
WO (1) | WO2005116831A2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060080523A1 (en) * | 2004-10-07 | 2006-04-13 | Cepulis Darren J | Method and apparatus for managing processor availability using a microcode patch |
US20100318973A1 (en) * | 2009-06-10 | 2010-12-16 | Tino Rautiainen | Method and apparatus for providing dynamic activation of virtual platform sub-modules |
US20140115368A1 (en) * | 2011-09-30 | 2014-04-24 | Rajeev Muralidhar | Constrained boot techniques in multi-core platforms |
US20140328178A1 (en) * | 2011-11-14 | 2014-11-06 | Alcatel Lucent | Baseband signal processing cluster |
US20200226092A1 (en) * | 2017-07-18 | 2020-07-16 | Robert Bosch Gmbh | Method and device for the initial programming of a secondary computer |
US20200249957A1 (en) * | 2017-12-25 | 2020-08-06 | Intel Corporation | Pre-memory initialization multithread parallel computing platform |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484498B2 (en) | 2010-08-26 | 2013-07-09 | Advanced Micro Devices | Method and apparatus for demand-based control of processing node performance |
US8862909B2 (en) | 2011-12-02 | 2014-10-14 | Advanced Micro Devices, Inc. | System and method for determining a power estimate for an I/O controller based on monitored activity levels and adjusting power limit of processing units by comparing the power estimate with an assigned power limit for the I/O controller |
US8924758B2 (en) | 2011-12-13 | 2014-12-30 | Advanced Micro Devices, Inc. | Method for SOC performance and power optimization |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742759A (en) * | 1995-08-18 | 1998-04-21 | Sun Microsystems, Inc. | Method and system for facilitating access control to system resources in a distributed computer system |
US5884089A (en) * | 1997-10-14 | 1999-03-16 | Motorola, Inc. | Method for calculating an L1 norm and parallel computer processor |
US20010025312A1 (en) * | 2000-01-27 | 2001-09-27 | Toshinori Obata | Information processing system |
US20040199632A1 (en) * | 2003-03-21 | 2004-10-07 | Romero Francisco J. | Assembly and method for balancing processors in a partitioned server |
US20050091473A1 (en) * | 2003-09-25 | 2005-04-28 | International Business Machines Corporation | System and method for managing a plurality of processors as devices |
US7130986B2 (en) * | 2003-06-30 | 2006-10-31 | Intel Corporation | Determining if a register is ready to exchange data with a processing element |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765388B2 (en) * | 2003-09-17 | 2010-07-27 | Broadcom Corporation | Interrupt verification support mechanism |
US7194614B2 (en) * | 2004-03-09 | 2007-03-20 | Inventec Corporation | Boot swap method for multiple processor computer systems |
-
2004
- 2004-05-19 US US10/848,387 patent/US7979699B2/en not_active Expired - Fee Related
-
2005
- 2005-05-06 WO PCT/US2005/015885 patent/WO2005116831A2/en active Application Filing
- 2005-05-06 TW TW094114732A patent/TWI279728B/en not_active IP Right Cessation
-
2011
- 2011-06-16 US US13/162,464 patent/US20110246750A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742759A (en) * | 1995-08-18 | 1998-04-21 | Sun Microsystems, Inc. | Method and system for facilitating access control to system resources in a distributed computer system |
US5884089A (en) * | 1997-10-14 | 1999-03-16 | Motorola, Inc. | Method for calculating an L1 norm and parallel computer processor |
US20010025312A1 (en) * | 2000-01-27 | 2001-09-27 | Toshinori Obata | Information processing system |
US20040199632A1 (en) * | 2003-03-21 | 2004-10-07 | Romero Francisco J. | Assembly and method for balancing processors in a partitioned server |
US7130986B2 (en) * | 2003-06-30 | 2006-10-31 | Intel Corporation | Determining if a register is ready to exchange data with a processing element |
US20050091473A1 (en) * | 2003-09-25 | 2005-04-28 | International Business Machines Corporation | System and method for managing a plurality of processors as devices |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060080523A1 (en) * | 2004-10-07 | 2006-04-13 | Cepulis Darren J | Method and apparatus for managing processor availability using a microcode patch |
US7353375B2 (en) * | 2004-10-07 | 2008-04-01 | Hewlett-Packard Development Company, L.P. | Method and apparatus for managing processor availability using a microcode patch |
US20100318973A1 (en) * | 2009-06-10 | 2010-12-16 | Tino Rautiainen | Method and apparatus for providing dynamic activation of virtual platform sub-modules |
WO2010143038A1 (en) * | 2009-06-10 | 2010-12-16 | Nokia Corporation | Method and apparatus for providing dynamic activation of virtual platform sub-modules |
US20140115368A1 (en) * | 2011-09-30 | 2014-04-24 | Rajeev Muralidhar | Constrained boot techniques in multi-core platforms |
US9552039B2 (en) * | 2011-09-30 | 2017-01-24 | Intel Corporation | Constrained boot techniques in multi-core platforms |
US20140328178A1 (en) * | 2011-11-14 | 2014-11-06 | Alcatel Lucent | Baseband signal processing cluster |
US10159012B2 (en) * | 2011-11-14 | 2018-12-18 | Alcatel Lucent | Baseband signal processing cluster |
US20200226092A1 (en) * | 2017-07-18 | 2020-07-16 | Robert Bosch Gmbh | Method and device for the initial programming of a secondary computer |
US11200195B2 (en) * | 2017-07-18 | 2021-12-14 | Robert Bosch Gmbh | Method and device for the initial programming of a secondary computer |
US20200249957A1 (en) * | 2017-12-25 | 2020-08-06 | Intel Corporation | Pre-memory initialization multithread parallel computing platform |
US11354135B2 (en) * | 2017-12-25 | 2022-06-07 | Intel Corporation | Pre-memory initialization multithread parallel computing platform |
Also Published As
Publication number | Publication date |
---|---|
US7979699B2 (en) | 2011-07-12 |
WO2005116831A3 (en) | 2006-04-06 |
TW200606721A (en) | 2006-02-16 |
TWI279728B (en) | 2007-04-21 |
US20110246750A1 (en) | 2011-10-06 |
WO2005116831A2 (en) | 2005-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110246750A1 (en) | Processing capacity on demand | |
US7904903B2 (en) | Selective register save and restore upon context switch using trap | |
USRE42936E1 (en) | Method and apparatus to minimize computer apparatus initial program load and exit/shut down processing | |
CN106415575B (en) | Hardware configuration reporting system | |
US7500095B2 (en) | Chipset-independent method for locally and remotely updating and configuring system BIOS | |
CN101120324B (en) | Memory management device and method for setting reserve area in memory device | |
US7949850B2 (en) | Methods and appratus for demand-based memory mirroring | |
US9563439B2 (en) | Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS) | |
CN103455733A (en) | Processor resource and execution protection methods and apparatus | |
CN103119602A (en) | Providing fast non-volatile storage in a secure environment | |
US7581037B2 (en) | Effecting a processor operating mode change to execute device code | |
US9836378B2 (en) | Methods for managing performance states in an information handling system | |
EP1256055A2 (en) | Computer system including a memory access controller for using non-system memory storage resources during system boot time | |
US7290128B2 (en) | Fault resilient boot method for multi-rail processors in a computer system by disabling processor with the failed voltage regulator to control rebooting of the processors | |
CN102077175A (en) | Method and system for execution of applications in conjunction with distributed raid | |
US6725396B2 (en) | Identifying field replaceable units responsible for faults detected with processor timeouts utilizing IPL boot progress indicator status | |
US7281127B2 (en) | Concurrent processing of operations in a boot sequence to initialize a storage device including an operating system loader to load | |
US8078858B2 (en) | Manufacturing boot process with minimal component initialization | |
EP2817714B1 (en) | Hiding logical processors from an operating system on a computer | |
US11295000B1 (en) | Static configuration of accelerator card security modes | |
US20060156291A1 (en) | System and method for managing processor execution in a multiprocessor system | |
US7143280B2 (en) | Methods and apparatus to provide conditional legacy support through a compatibility support module stored on a secure area or network | |
US7631178B2 (en) | Independent main partition reset | |
US20240004668A1 (en) | System-on-chip management controller | |
WO2003003204A1 (en) | Service processor surveillance with multiple partitions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BUCH, DEEP K.;KAUSHIK, SHIVNANDAN;REEL/FRAME:015354/0269;SIGNING DATES FROM 20040420 TO 20040426 Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BUCH, DEEP K.;KAUSHIK, SHIVNANDAN;SIGNING DATES FROM 20040420 TO 20040426;REEL/FRAME:015354/0269 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20190712 |