Computer systems include non-volatile memory to store the first code executed when powered on or “booted”. This non-volatile memory can be referred to as “firmware”. The code of the firmware can provide a firmware interface, such as a basic input/output system (BIOS), unified extensible firmware interface (UEFI), or the like. At least a portion of the code of the firmware can be updatable. The current state of updateable code in the firmware is referred to as an “image.” Thus, a current image of the firmware can be replaced with a new image. A firmware update process can involve erasing and reprogramming non-volatile memory of the firmware.
Modern computers often have multiple processors that provide improved processing speed and performance over a single processor system. Typically, each processor in the system has dedicated firmware that enables the processor to load an operating system (OS). The dedicated firmware is stored in a separate non-volatile memory for each of the processors. To upgrade the firmware, the updated firmware needs to be loaded into each of the memories for each of the processors.
Some embodiments of the invention are described with respect to the following figures:
Sharing firmware among agents in a computing node is described. In an example, a non-volatile memory is coupled to a bus to store firmware for a plurality of agents, which includes a plurality of central processing units (CPUs). A power sequencer implements a power-up sequence for the plurality of CPUs. A plurality of control state machines respectively controls states of the CPUs based on output of the power sequencer. A bus controller selectively couples the agents to the non-volatile memory based on state of the power control state machines. In this manner, a single non-volatile memory can be shared among a plurality of agents to store firmware. Moreover, the bus controller arbitrates access to the non-volatile memory among the CPUs based on output of the power sequencer. This coupling between the firmware access arbitration and power sequencing allows the CPUs to obtain and execute firmware when they need to based on any specific power-up sequence.
In an example, a combination of hardware and software can be used to manage shared access to a single non-volatile memory device that contains firmware used to boot multiple central processing units (CPUs). A management agent can be used to update the firmware when the non-volatile memory is not being used by any of the CPUs so that all CPUs can see the update at the same time. The non-volatile memory can be used to store firmware for other agents in the computing node. Sharing a single non-volatile memory with firmware among a plurality of agents reduces node cost and requires less real estate. Since there is only a single non-volatile memory with firmware, there is a single update point for the firmware for all agents. This can save update time. In an example, the management agent can have exclusive rights to write to the non-volatile memory in order to provide a greater level of security against corruption by malicious software running on the CPUs.
The management processor 104 can include any type of microprocessor, microcontroller, microcomputer, or the like. The management processor 104 provides an interface between a system management environment and the hardware components of the computing node 100, including the CPUs 102, the support circuits 106, the memory 108, the IO circuits 120, and/or the firmware 114. In some implementations, the management processor 104 can be referred to as a baseboard management controller (BMC). The management processor 104 and its functionality are separate from that of the CPUs 102.
The firmware 114 can include a non-volatile memory storing code for used by various devices in the node 100, including the CPUs 102. The firmware can include a BIOS, UEFI, or the like. The firmware 114 can also include code first executed by the CPUs 102 upon boot or reset referred to as “boot code”. The term “non-volatile memory” as used herein can refer to any type of non-volatile storage. Examples include read only memory (ROM), electronically eraseable and programmable ROM (EEPROM), FLASH memory, ferroelectric random access memory (F-RAM), and the like, as well as combinations of such devices.
The controller 204 can include a power sequencer 212, a plurality of power control state machines 214, and a bus controller 216. In an example, the controller 204 can be an integrated circuit, such as an application specific integrated circuit (ASIC), a programmable logic device (PLD) (e.g., a complex programmable logic device (CPLD) or field programmable gate array (FPGA)), or the like. In an example, one or more of the power sequencer 212, the plurality of power control state machines 214, and the bus controller 216 can be circuits implemented in the integrated circuit. In an example, one or more of the power sequencer 212, the control state machines 214, and the bus controller 216 can be implemented as software executed by a processor in the integrated circuit. In another example, the elements of the controller 204 can be implemented using a combination of hardware circuits and software.
The power sequencer 212 implements a power-up sequence for the CPUs 102. In an example. The power sequencer 212 selects one CPU at a time for power-up. After a given CPU has completed its power-up, the power sequencer 212 selects another CPU. In this manner, the CPUs 102 are powered-up sequentially and not all at the same time. The terms “power-on” and “power-up” are used synonymously herein. Generally, a CPU “powers-on” by looking to execute instructions starting at a particular predefined location (e.g., a reset vector).
The power control state machines 214 control states of the CPUs 102 based on output of the power sequencer 212. In an example, each of the CPUs can be in various states, such as powered-off, reset, powered-on, as well as any of various partially powered states (e.g., various sleep states). Each of the CPUs 102 includes a dedicated power control state machine 214. In an example, the power control state machines 214 hold each of the CPUs 102 that is not being powered-on in a reset state.
The bus controller 216 selectively couples the agents 202 to the non-volatile memory 206 based on state of the power control state machines 214. When a power control state machine 214 indicates that one of the CPUs 102 is to be powered-on, the bus controller 216 couples the selected CPU 102 to the non-volatile memory 206. In an example, the bus controller 216 includes a bus arbiter 218 and a bus multiplexer 220. The bus arbiter 218 selects any of the agents 202 for communication with the non-volatile memory 206 over the bus 208. That is, the bus arbiter 218 grants bus access to one agent at a time. The bus arbiter 218 can grant bus access to each CPU 102 as such CPU is powered-on based on output of the power control state machines 214 (and indirectly output of the power sequencer 212). The bus multiplexer 220 establishes a communication link between the non-volatile memory and the agent 202 selected by the bus arbiter 218. It is to be understood that the bus controller 216 may have a different configuration based on different types of known busses that can be used with the invention. In general, the bus controller 216 facilitates shared access to the non-volatile memory 206 among the plurality of agents 202. Once a CPU 102 has access to the non-volatile memory 206, the CPU 102 can retrieve its firmware and perform power-up.
The bus controller 216 can receive additional input for granting bus access to agents 202 other than the CPUs 102. For example, the bus controller 216 can service bus access requests from other agents 202 for access to the non-volatile memory 206. In an example, the management processor 104 can send such requests to the bus controller 216. The management processor 104 can request access to the non-volatile memory 206 in order to write and/or read the firmware. For example, the management processor 104 can write various image(s) of the firmware to the non-volatile memory (e.g., upgraded firmware for any of the agents 202). Any of the other agents 210 can similar request access to the non-volatile memory for writing and/or reading firmware stored therein.
At step 410, additional request(s) can be made for access to the non-volatile memory and exclusive access granted to the requesting agents. In particular, at step 412, a management processor can be granted access to the non-volatile memory to update firmware stored therein.
In the foregoing description, numerous details are set forth to provide an understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these details. While the invention has been disclosed with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover such modifications and variations as fall within the true spirit and scope of the invention.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US13/34532 | 3/29/2013 | WO | 00 |