Method and apparatus for computer system communication

CN115867889BActive Publication Date: 2026-10-16PAYPAL INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180047195.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-09-04
Filing Date
2021-09-01
Publication Date
2026-10-16
Estimated Expiration
2041-09-01

Smart Images

  • Figure CN115867889B_ABST
    Figure CN115867889B_ABST
Patent Text Reader

Abstract

Techniques are disclosed that relate to a method that includes monitoring, by a sideband processor, a plurality of operating conditions of a computer system using a first set of commands. The first set of commands are sent over a particular communication bus using a particular command protocol. Further, the sideband processor can be modified to support a second set of commands. The sideband processor can receive data for a particular device in the computer system. The sideband processor can modify a first command of the first set of commands to include a second command of the second set of commands. The second command can include an address associated with the particular device and at least a portion of the data. The sideband processor can then send the modified first command to a controller hub over the particular communication bus using the particular command protocol.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates generally to the operation of computer systems, and more specifically to communication between components of a computer system to facilitate the installation of software and firmware. Background Technology

[0002] Multi-user entities can rely on enterprise computing systems to provide computing infrastructure for their users. An enterprise computing system may include one or more computer systems providing server computing capabilities and one or more databases serving these users. Each computer system typically includes a motherboard on which a processor is mounted, and in some cases, one or more peripheral devices or other devices. The processor provides computing power to the computer system, and the one or more peripheral devices may include, for example, graphics coprocessors, audio coprocessors, network interfaces, storage interfaces, etc. The processor executes an operating system (OS) to manage the various processes also executing on the computer system, as well as to manage data input, data output, data storage, and other tasks affecting the circuitry coupled to the processor. Similarly, various peripheral devices may utilize drivers that manage the operations performed by the peripheral devices.

[0003] Enterprise computing systems for a specific entity can be implemented anywhere from a single computer system to hundreds or even thousands of computer systems coupled together in a server data center. Over time, operating systems and / or drivers may be updated to implement new features, fix known bugs, increase computing bandwidth, and so on. Installing a new operating system and / or drivers on a computer system may require taking the computer system offline, preventing it from contributing to the services provided by the specific entity. Such downtime can cause the entity to lose revenue and / or efficiency due to the inability to provide services while the computer system is down. The techniques discussed in this paper describe improved methods for performing faster updates and management of all types of computer systems, which may be particularly beneficial in larger enterprise computing environments. Attached Figure Description

[0004] Figure 1 A block diagram illustrating an embodiment of a computer system including a sideband processor is shown.

[0005] Figure 2 A block diagram illustrating an embodiment of the command protocol used by the sideband processor is shown.

[0006] Figure 3 A block diagram depicts an embodiment of a computer system including a sideband processor capable of updating the operating system.

[0007] Figure 4The diagram illustrates a block diagram of a computer embodiment including a sideband processor capable of updating drivers for one or more peripheral devices.

[0008] Figure 5 A block diagram illustrating an embodiment of a computer system motherboard is shown, the motherboard including a sideband processor capable of updating the operating system and drivers for one or more peripheral devices.

[0009] Figure 6 It includes a block diagram depicting the installation of an updated operating system, including the active processes involved.

[0010] Figure 7 This includes a block diagram depicting another installation of the updated operating system, including active peripheral devices.

[0011] Figure 8 The diagram illustrates a block diagram of an embodiment of a computer system, showing the command flow for updating the operating system and drivers.

[0012] Figure 9 A flowchart depicts an embodiment of a method for implementing a sideband command protocol on a computer system.

[0013] Figure 10 A flowchart illustrating an embodiment of a method for updating an operating system installed on a processor of a computer system implementing a sideband command protocol is shown.

[0014] Figure 11 A flowchart illustrating an embodiment of a method for updating the driver of a peripheral device installed on a computer system implementing a sideband command protocol is shown.

[0015] Figure 12 This is a block diagram illustrating an example computer system according to some embodiments. Detailed Implementation

[0016] To improve the speed and efficiency of monitoring the status of computer systems, including computer systems, some computer system motherboards may include sideband processors. Such sideband processors can provide a given motherboard with various types of information, such as operating temperature, power supply signal voltage levels, operating status of peripherals mounted on or coupled to the motherboard, memory usage of volatile and non-volatile memory coupled to the motherboard, and other similar data. The sideband processor collects this information by sending memory read requests to various registers and / or memories. In various embodiments, the system administrator can access the sideband processor.

[0017] System administrators may need or expect to update the operating system (OS) version of one or more computers, or update drivers for specific devices included in said computers. Such updates can enable new features, fix known bugs, increase computing bandwidth, and so on. Traditional methods of implementing such updates may require keeping the computer being updated offline for a considerable period of time. In some cases, updates may require the system administrator to manually operate the computer being updated, or to utilize the computer's main network channel, thereby reducing the computer's communication bandwidth when delivering the new OS and / or drivers.

[0018] The inventors have recognized that, in addition to monitoring the operating conditions of a computer system, a modified sideband processor can be used to exchange additional information with the computer system, including, for example, downloading the computer system's OS software and / or driver firmware using the sideband processor. This document discloses a technique for implementing a modified command protocol for a sideband processor that allows read and write access to the processor, memory, and peripheral devices coupled to the same computer system as the sideband processor. Such a command protocol allows the sideband processor to issue a series of commands to monitor multiple operating conditions of the computer system. In response to receiving data to be sent to a specific device (e.g., memory circuitry or peripheral device), the sideband processor can modify one or more command series to include a second command for storing at least a portion of the received data to a specific address associated with the specific device. The sideband processor can then send the modified command to execute the original command in the command series, as well as the second command, to store the portion of the received data.

[0019] In various embodiments, such a command protocol can allow the installation of an updated version of the operating system (OS) for the processor and / or an updated version of the drivers for peripheral devices, while allowing the processor and peripheral devices to operate during at least a partial (e.g., full or substantially full) installation. In the example discussed below, the sideband processor can receive an updated version of the OS while the processor continues to operate. The sideband processor can install the updated version into a portion of memory that is separate from the portion where the current version of the OS is installed. The processor continues to execute the current OS while the sideband processor sends commands to install the updated version of the OS into a different portion of memory. After the updated version is installed, the sideband processor can send commands to the processor to stop executing the current version and begin executing the updated version of the OS. This can be done without performing a full reboot of the computer system. In some embodiments, a partial reboot of the computer system can be performed to initialize one or more circuits of the computer system. However, such a partial reboot can be performed in a shorter time than a full reboot.

[0020] Similarly, an updated driver for a peripheral device can be installed. For example, the sideband processor can receive an updated driver. To install the updated driver, the sideband processor sends a notification to the processor indicating that it is ready to install the update and instructs the processor to suspend the peripheral device. The sideband processor can then send a command to install the updated driver while suspending the peripheral device's use, but the processor continues to operate. After the updated driver is installed, the sideband processor sends a notification to the processor that the updated driver has been installed. In response, the processor can resume the use of the peripheral device.

[0021] An embodiment of the command protocol for the sideband controller is given below. Furthermore, examples of systems utilizing this sideband command protocol are provided, including an embodiment for updating the OS of a computer system. Another embodiment is given, in which the drivers for peripheral devices in the computer system are updated. Another embodiment illustrating how two scenarios (OS update and driver update) are handled is also given. Two scenarios of illustrated system memory usage, and examples of command and response flows into and out of the sideband processor are shown. Several embodiments of methods for performing the disclosed techniques are shown. Furthermore, an example of a computer system on which the disclosed techniques can be implemented is given.

[0022] Sideband Command Protocol Figure 1 A block diagram of an embodiment of a computing system is shown. As illustrated, the computer system 100 includes a main central processing unit (CPU) 103, a controller hub 110, a system memory 120, a sideband processor 130, a network interface controller 140, and peripheral devices 160a and 160b (collectively referred to as peripheral devices 160). The computer system 100 can be any suitable type of computer system, such as a desktop computer, a laptop computer, a rack-mount server computer, a workstation in an enterprise computer system, etc.

[0023] As shown in the figure, the main CPU 103 executes the operating system and other software processes that can be accessed via system memory 120 or other memory coupled to the computer system 100. The main CPU 103 is a central processing unit (CPU) comprising one or more processing cores, each configured to support a corresponding instruction set architecture (ISA), such as Intel x86 or ARMv8. The main CPU 103 is configured to interface with the controller hub 110 and system memory 120. In some embodiments, the main CPU 103 is coupled to the motherboard using a hardware socket configured to couple a CPU integrated circuit (IC) to the computer system 100. For example, such a socket could be a baseboard grid array (LGA) socket, such as an LGA 1150, LGA 1151, or SP3 socket. This socket allows the main CPU 103 to be physically installed in the computer system 100.

[0024] In the illustrated embodiment, controller hub 110 provides an interface between the main CPU 103 and peripheral devices 160 included on the computer system 100. For example, controller hub 110 may include one or more Peripheral Component Rapid Interconnect (PCIe) bus interfaces for communicating with compatible peripheral devices 160. Computer system 100 may include any suitable number of PCIe slots, allowing up to a corresponding number of PCIe-compatible peripheral devices to be physically installed in computer system 100 and communicate via controller hub 110. Controller hub 110 may support additional interface standards such as Universal Serial Bus (USB), Ethernet, Serial AT Accessory (SATA), etc. In some embodiments, some or all of the functions of controller hub 110 may be included in the main CPU 103. In other embodiments, the functions of controller hub 110 may be divided into two or more ICs, such as a northbridge controller and a southbridge controller.

[0025] The main CPU 103 uses system memory 120 to store instructions and other data associated with the OS, as well as other processes executed by the main CPU 103. System memory 120 includes volatile memory, such as static random access memory (SRAM) and / or dynamic random access memory (DRAM). In some embodiments, system memory 120 may include virtual RAM, such as virtual RAM implemented using non-volatile memory, such as hard disk drives, solid-state drives, embedded flash memory, etc. Some or all of system memory 120 may be included on a different circuit board than the main CPU 103 and then mounted into the computer system 100 using, for example, a dual in-line memory module (DIM) socket.

[0026] As shown in the figure, peripheral device 160 includes devices that enhance the capabilities of computer system 100 by offloading tasks that may be performed by main CPU 103 and / or performing additional tasks that main CPU 103 or other hardware within the system may not be able to perform. In various embodiments, peripheral device 160 may correspond to any suitable type of device, such as a graphics coprocessor, audio coprocessor, network interface, wireless interface, etc. Peripheral device 160 may be installed during the manufacture of computer system 100 or after manufacture, for example, by using a slot included in the motherboard of computer system 100. Although two peripheral devices are shown, computer system 100 may include any suitable number of peripheral devices (e.g., limited by the number of available PCIe slots).

[0027] According to various embodiments, a sideband processor 130 is a processor included in a computer system 100 for monitoring the operation of various circuits installed in the computer system 100 and sending status information to the computer system, for example, used by a system administrator. In various embodiments, the sideband processor 130 may be implemented as a microcontroller or other type of system-on-a-chip processor, and in some embodiments, it may be a motherboard management controller. As shown, the sideband processor 130 includes a network interface controller 140 separate from the network connection used by the main CPU 103. The network interface controller 140 allows the sideband processor 130 to communicate with the system administrator, enabling the system administrator to request specific status information and allowing the sideband processor 130 to respond to the requested information. The sideband processor 130 is capable of monitoring, for example, any one or more of the following: the operating temperature of the computer system 100, the voltage level of one or more power nodes, the current workload of the main CPU 103, the data flow through peripheral devices 160, the amount of currently available system memory 120, etc.

[0028] To perform monitoring operations, the sideband processor 130 may issue a series of commands from a first set of commands, including, for example, command 113, to the controller hub 110. These commands in the first set enable the controller hub 110 to access various circuits on the computer system 100 to obtain operating conditions monitored by the sideband processor 130. Each of the commands in the first set may include any one or more of the identifier of the circuit to be accessed (e.g., a PCIe address), the command type (e.g., read or write), the address or register ID of the memory location to be read or written, and the data to be written (in the case of a write command). In some embodiments, the command structure may be determined by a third-party entity (e.g., the manufacturer of the computer system 100, or the manufacturer of the motherboard used by the computer system 100). The first set of commands accessible to users of the computer system 100 (e.g., system administrators) may be limited to specific circuits included in the computer system 100, and in some embodiments, limited to specific addresses within a given circuit.

[0029] In some embodiments, the sideband processor 130 is configured to wait for a response from the controller hub 110 to the first command in the first set of commands before sending the second command. Therefore, in order to obtain the current operating temperature and current voltage level of the power supply, the sideband processor 130 sends the first command to determine the current operating temperature, and then waits for a first response with the current operating temperature before sending the second command to determine the voltage level of the power supply.

[0030] In other embodiments, the sideband processor 130 may send more than one command from the first group without waiting for responses in between. In such embodiments, the controller hub 110 is configured to send responses to commands in an order corresponding to the order in which commands are received from the sideband processor 130. For example, if the sideband processor 130 sends a first command to determine the current operating temperature, then a second command to determine the power supply voltage level, and then a third command to determine the current level of system memory usage, the controller hub 110 sends a first response with the current operating temperature, then a second response with the power supply voltage level, and then a third response with the current system memory usage.

[0031] To provide a wider range of commands with greater flexibility, and to enable access to circuitry installed in the computer system 100 during and after its manufacture, as shown, the sideband processor 130 is also configured to send a second set of commands to the controller hub 110 using modified commands (e.g., modified command 114), including commands to read and write to storage locations in the system memory 120, registers and / or memories included in the peripheral devices 160, and, in some embodiments, at least some registers in the main CPU 103.

[0032] Sideband processor 130 utilizes a command protocol that allows the transmission of a second set of commands without waiting for a response from controller hub 110 between consecutive commands. Using this command protocol, sideband processor 130 is configured to transmit a series of commands (including, for example, command 113) from the first set of commands via communication bus 117 to monitor one or more operating conditions of computer system 100. This series of commands may, for example, allow sideband processor 130 to perform functions of the motherboard management controller, thereby collecting information related to operating conditions, such as operating temperature, voltage levels of one or more power nodes on the motherboard, information about the status of peripheral devices 160, system memory 120 and / or main CPU 103, and other similar types of information.

[0033] As shown, the sideband processor 130 is also configured to receive data 180 from a specific one of the one or more peripheral devices 160 (e.g., peripheral device 160a) via the network interface controller 140. Data 180 corresponds to any of various types of information applicable to peripheral device 160a. Data 180 may be configuration information for placing the peripheral device in a specific operating state, a new driver (partial or complete) for operating peripheral device 160a, information to be processed by peripheral device 160a, a command requesting information from peripheral device 160a, etc. As shown, the sideband processor 130 receives data 180 from, for example, a system administrator, programmer, or other user who can access the network interface controller 140 via the network interface controller 140. For example, if data 180 is too large to be included in a single command of a second set of commands, data 180 may be subdivided into multiple parts. Therefore, each part is sized to be transmitted with a single command.

[0034] A pending specific command in the command series is modified to include an auxiliary command from the second group of commands. As shown, the modified command 114 includes commands labeled a and b. Command 114a may be a pending specific command from the first group, while command 114b is an auxiliary command from the second group. When a given command in the command series is sent to the controller hub 110, the sideband processor 130 may generate and queue one or more subsequent commands from the first group (including the pending specific command 114a) in the interface circuitry for transmission via the communication bus 117. To include the auxiliary command 114b, the sideband processor 130 uses, for example, direct memory access (DMA) circuitry to send the auxiliary command 114b to the interface circuitry during the transmission of the pending specific command 114a. After being incorporated into the modified command 114, the auxiliary command 114b includes an address associated with the peripheral device 160a and at least a portion of the data 180.

[0035] The sideband processor 130 is also configured to send the modified command 114 to the controller hub 110 via the communication bus 117 using a specific command protocol after the specific command 114a has been modified to include the auxiliary command 114b. The controller hub 110 receives the modified command 114 and executes the specific command 114a and the auxiliary command 114b. The specific command 114a and the auxiliary command 114b can be executed independently on different parts of the computer system 100. In such a case, the sideband processor 130 can receive a first response to the specific command 114a from the controller hub 110 at a first time. At a second time after the first time, the sideband processor 130 can receive a second response to the auxiliary command 114b from the controller hub 110. Since the first set of commands involves obtaining information about operating conditions, the first set of commands can usually be executed faster than the second set of commands, which typically involves transferring data to specific devices in the computer system 100 (e.g., system memory 120, peripheral device 160, etc.). Due to the difference in execution time, responses associated with commands in the first and second sets of commands can be received at different points in time.

[0036] To maintain traceability of a second set of commands that may take longer to execute, in some embodiments, the sideband processor 130 includes an identification value, such as a sequence number relative to other sent sideband commands, in the auxiliary command 114b. The controller hub 110 is configured to include this identification value in responses sent to the sideband processor 130 regarding the executed auxiliary command. The sideband processor 130 is also configured to use the identification value to determine that a second response received at a second time corresponds to auxiliary command 114b. For example, the sideband processor 130 may maintain a table with entries corresponding to commands that have been sent (but for which responses have not yet been received). Upon receiving a response corresponding to a specific entry, the corresponding entry may be cleared.

[0037] In some embodiments, in order to transmit data 180 to peripheral device 160a, an auxiliary command 114b causes that portion of data 180 to be stored in system memory 120. Instead of transmitting data 180 directly to peripheral device 160a, data 180 is first transmitted to system memory 120 using one or more commands from a second set of commands. After at least a portion of data 180 has been stored in system memory 120, the sideband processor 130 is further configured to cause peripheral device 160a to copy that portion of data 180 from system memory 120. To achieve this, the sideband processor 130 can modify pending different commands in the first set of commands to include different auxiliary commands from the second set of commands. The sideband processor 130 can then send the modified different commands to controller hub 110 via communication bus 117 using a specific command protocol. Controller hub 110 is also configured to execute the modified different commands, causing peripheral device 160a to copy that portion of data 180 from system memory 120.

[0038] In some embodiments, all data 180 may be copied to system memory 120 before peripheral device 160a copies any data 180 from system memory 120. In some embodiments, due to, for example, the lack of access to peripheral device 160a via communication bus 117 by sideband processor 130, data 180 may be transferred to peripheral device 160a via system memory 120. In other embodiments, transferring all data 180 to system memory 120 and then having peripheral device 160a copy data 180 from system memory 120 may reduce the amount of time spent transferring data and / or may allow peripheral device 160a to complete other tasks before receiving data 180.

[0039] The execution of the second set of commands by the controller hub 110 can be performed without utilizing the bandwidth of the main CPU 103. As shown, the controller hub 110 can store data in system memory 120 and / or peripheral devices 160 without interfering with the normal operation of the main CPU. For example, the main CPU 103 can perform operating system (OS) processing and / or processing related to other applications. (Except for the following...) Figure 3 Apart from the descriptions (e.g., regarding OS updates), the execution of these processes may not be interrupted by the execution of commands in the first and second sets of commands.

[0040] Note that using the command protocol described above allows access to various devices included in computer system 100 without interfering with the normal operation of computer system 100. While computer system 100 continues to perform tasks for one or more users, certain tasks for managing computer system 100 can be performed. For example, devices on computer system 100 can be reconfigured, or driver firmware can be updated. Additional software processes can be loaded into system memory for later execution by the main CPU 103, including, for example, updates to the operating system (see below). Figure 3 (Details provided). Therefore, such computer management tasks can be performed with reduced computer system downtime, thereby improving computer system performance efficiency. Furthermore, computer management tasks can be performed remotely using network interfaces coupled to sideband processors. Such remote utilization allows system administrators to manage computer systems in various locations from a central location, thereby improving system administrator productivity.

[0041] It should also be noted that Figure 1 The embodiments shown are merely examples illustrating the disclosed concepts. In other embodiments, the computer system shown may include different combinations of elements, including additional elements. For example, it may include two or more peripheral devices, such as network interface cards, power management circuitry, clock sources, etc.

[0042] Figure 1 The computer system describes a specific command protocol that allows information to be shared between sideband processors and various devices installed within the computer system. Various technologies can be used to implement the command protocol. Figure 2 The diagram illustrates details of an embodiment of the command protocol.

[0043] Go to Figure 2 The table shows an example depicting the first set of commands before and after modification. Figure 2 This includes command 113 (which depicts the first set of commands without modification) and the modified command 114 (which depicts the commands after the addition of the second set of auxiliary commands).

[0044] As shown in the figure, command 113 comprises five parts: start of frame 216, first set of commands 218, address 222 of the first command, data 224 associated with command 218, and end of frame 226. Start of frame 216 includes one or more bits to indicate the start of a new command. These bits may have the same value for all commands. Similarly, end of frame 226 includes one or more bits with specific values ​​to indicate the end of the current command. Command 218 includes multiple bits representing a specific command in the first set of commands used to monitor the operating conditions of computer system 100. Valid command 218 may include read commands, write commands, and control commands. In some embodiments, multiple versions of read and write commands may be used to indicate operands of different sizes, such as bytes, integers (e.g., 16-bit), words (e.g., 32-bit), double integers (e.g., 64-bit), etc. Control commands may be used to pause or resume operation of the target device, jump to a specific location in the firmware, enter a specific mode, etc. Address 222 may identify a specific target device on which command 218 can operate. In various embodiments, address 222 may include any one or more of a system memory address, a bus address (e.g., a PCIe device address), an address of a memory location within the target device, etc. Data 224 may include any operands of command 218, if needed or desired. For example, if command 218 is a write command, then data 224 may include one or more bytes of data to be written. If command 218 causes the target device to change its operating mode, then data 224 may indicate a specific mode that the target device should enter.

[0045] As described above, the sideband processor 130 can send a series of commands 113 to the controller hub 110 to monitor operating conditions in the computer system 100. One or more of these commands 113 can be queued in the sideband processor 130 and sent to the controller hub 110 once the communication bus 117 becomes available. After the sideband processor 130 receives data 180 to be transmitted to, for example, a peripheral device 160a, the sideband processor prepares the data 180 to be transmitted via one or more commands in a second set of commands. In order to send the second set of auxiliary commands, the sideband processor 130 identifies the commands 113 to be sent via the communication bus 117. The identified commands 113 are then modified to add auxiliary commands, thereby creating modified commands 114.

[0046] As shown in the figure, and as described above, the modified command 114 includes all parts of command 113. Five additional parts are added to the identified command 113 to create the modified command 114. These five parts include size 232, command 234 in the second group of commands, address 236 corresponding to command 234, serial number 242, and data 238 corresponding to command 234.

[0047] As shown, size 232 includes multiple bits corresponding to the size of the auxiliary command. In various embodiments, size 232 may refer to the total size of the auxiliary command, the amount of data included in the auxiliary command, or the size of any other suitable combination of these portions. Command 234 includes multiple bits representing a specific command in a second set of commands for transferring data between various devices included on computer system 100. Similar to command 218, valid command 234 may include read commands, write commands, and control commands. Similar to address 222, address 236 identifies the specific device (e.g., peripheral device 160a) to which command 234 points in computer system 100. Note that addresses 222 and 236 can be determined independently of each other, so commands 218 and 234 can point to two different devices in computer system 100.

[0048] The second data 238 includes at least a portion of the data 180 to be sent to the peripheral device 160a. The write commands of the second set of commands may be limited to a specific number of bytes. Therefore, if the data 180 is larger than that specific number, it can be divided into multiple data portions, each included in a corresponding auxiliary command. Thus, the second data 238 can represent one of these portions. In some embodiments, the sideband processor 130 may be configured to compress at least some portions of the data 180 to include more data 180 in the second data 238.

[0049] Serial number 242 includes multiple bits that determine the order of command 234 within a second set of commands used to transmit the complete dataset 180. For example, if data 180 is large enough that ten auxiliary commands are needed to transmit all bytes of data 180 to peripheral device 160a, then serial number 242 could be a value in the range of 1-10, 0-9, etc. In some embodiments, additional values ​​may be included to identify a particular set of auxiliary commands. For example, if a different dataset is received before data 180 is sent to, for example, system memory 120, then the first set of auxiliary commands could have serial numbers such as 100, 101, 102, etc. The second set of auxiliary commands for transmitting data 180 to peripheral device 160a could have serial numbers such as 200, 201, 202, etc.

[0050] In other embodiments, sequence number 242 may include an indication of the priority of the corresponding command 234. For example, data 180 may include program instructions and data values ​​of peripheral device 160a. Program instructions may be assigned a higher priority, which may then be indicated by the corresponding sequence number 242. In some embodiments, priority may be indicated based on position in the sequence, for example, lower values ​​have higher priority. In other embodiments, to increase the priority of a modified command to be sent, making it higher than the priority of already sent commands, sequence number 242 may include a specific value, such as adding a specific number at the beginning or end (e.g., adding a "9" at the beginning, such as 9200, 9201, 9203, etc.).

[0051] In some embodiments, the sequence number 242 may be implemented as a timestamp. For example, a particular sequence number 242 may indicate the number of clock cycles since a specific point in time when the corresponding modified command 114 was generated. The point in time may be based on the corresponding dataset associated with the received modified command series 114, the time when the computer system 100 and / or the sideband processor 130 was last booted or reset, an indication of the time of day, etc.

[0052] As an example of how sequence number 242 is used, sideband processor 130 sends a modified command series 114 to controller hub 110, the command series having a corresponding sequence number 242 for each included auxiliary command. After a corresponding auxiliary command included in each modified command 114 is completed, controller hub 110 sends a response back to sideband processor 130. A given response from controller hub 110 may include a corresponding sequence number 242, thereby indicating which of the sent modified commands 114 corresponds to the given response.

[0053] As described above, the second data 238 can be compressed to include more data in a modified command 114. In some embodiments, the sideband processor 130 can be alternatively or additionally configured to compress at least a portion of the auxiliary command. For example, the five elements of the auxiliary command can be compressed after generation to reduce the overall size of the modified command 114. In other embodiments, portions of the auxiliary command can be combined with similar portions of the original pending command. For example, command 234 can be combined with command 218. The number of bits used to encode the combination of command 218 and command 234 can be less than the number of bits required to hold the two commands individually.

[0054] Notice, Figure 2This is merely an example. Although command 113 and the modified command 114 are shown to have specific parts, in other embodiments, these parts may be arranged in a different order and may include different combinations of parts (e.g., in some embodiments, one or more additional parts may be added, or one or more shown parts may be omitted). In some embodiments, one or more parts of the modified command may be compressed and / or combined with parts of the original command 113 to reduce the number of bits included in the modified command 114.

[0055] Figure 1 motherboard and Figure 2 The protocol diagram illustrates how sideband technology can be used to share information with devices in a computer system. This sideband technology can be used to perform various functions. Details of one such function are as follows... Figure 3 As shown.

[0056] Update operating system Go to Figure 3 The diagram shows a block diagram of another embodiment of the computer system 100. Figure 3 Computer system 100 includes previously mentioned Figure 1 The described components include a main CPU 103, a controller hub 110, system memory 120, a sideband processor 130, and a network interface controller 140. The current OS 325 is shown stored in system memory 120 for use by the main CPU 103. The network interface controller 140 is communicatively coupled to a network 350. Updated OS 327 is received from network 350 for installation in system memory 120. As used herein, “installing” an OS into system memory involves copying one or more instructions and associated data of the OS into system memory such that a processor coupled to system memory can execute the copied instructions to implement the features of the OS.

[0057] As previously described, the main CPU 103 is configured to execute the current OS 325 from the system memory 120 coupled to the main CPU 103. The main CPU 103 can access the system memory 120 and is able to read instructions included in the current OS 325, as well as other programs that can be stored in the system memory 120.

[0058] The controller hub 110 is configured to provide an interface between the main CPU 103 and one or more peripheral devices included in the computer system 100. One such peripheral device is a sideband processor 130. As shown, the controller hub 110 manages communication between these peripheral devices, allowing the main CPU 103 to utilize more bandwidth to execute the current OS 325, rather than using a portion of its bandwidth to interact with the peripheral devices.

[0059] Sideband processor 130 is configured to monitor various conditions and states of the main CPU 103 and peripheral devices in computer system 100. As shown, sideband processor 130 is configured to communicate with a system administrator's workstation, such as in network 350, via network interface controller 140. Using sideband processor 130, the system administrator can monitor the operation of computer system 100 and identify any problems that may hinder normal operation.

[0060] While the main CPU 103 executes the current OS 325, the sideband processor 130 is configured to receive instructions for an updated OS 327. The updated OS 327 may include patches for the current OS 325 to correct bugs, or may be a completely new version with enhancements and / or new features. The updated OS 327 may be received as one or more files to be installed in system memory 120. To install the updated OS 327, the sideband processor 130 sends a modified command series 314 to the controller hub 110 to install the received instructions into one or more regions of system memory 120. System memory 120 includes one or more types of memory, and each type includes one or more memory banks that can be written to simultaneously. Therefore, the sideband processor 130 is also configured to generate a specific one of the modified commands 314 to include the corresponding portion of the received instructions for the updated OS 327. Some or all of the modified commands 314 include the corresponding portion of the updated OS 327. Each part can be stored in a different memory bank of system memory 120. In some embodiments, simultaneous writing to system memory 120 is allowed, thereby reducing the amount of time required to complete the installation.

[0061] Based on the specific command of the modified command 314, the controller hub 110 is configured to store the corresponding portion into one or more areas of the system memory 120. The controller hub 110 may complete the modified command 314 in an order different from the order in which it was received. Because the main CPU 103 actively executes the current OS 325 from the system memory 120 when installing the updated OS 327, some portions of the system memory 120 may take longer to access than others when sharing access to the memory. Due to the latency in accessing different portions of the system memory 120, the modified commands 314 may be completed in a different order even if processed by the controller hub 110 in the order they were received. The controller hub 110 may reorder the modified commands 314 to preferentially store portions of the updated OS 327 into currently accessible memory locations. For example, the system memory 120 may include four banks of memory that can be accessed simultaneously. If two of the four memory banks are currently busy completing memory commands from the main CPU 103, the controller hub 110 can process multiple of the modified commands 314 that are addressed to the locations in the other two memory banks.

[0062] As shown in the figure, in response to completing a given command, the controller hub 110 sends a given response to the sideband processor 130 for the modified command 314. The given response may indicate whether the given command was completed erroneously, or it may simply provide an indication that the given command has been processed. The controller hub 110 includes a value in the given response that provides an indication of which of the modified commands 314 corresponds to the given command. The sideband processor 130 is configured to identify the given command in the modified command series 314 corresponding to the given response. For example, the sideband processor 130 may send the modified command series 314, each command having a corresponding identification value. The given response from the controller hub 110 includes the corresponding identification value, thereby indicating which of the modified commands 314 corresponds to the given command.

[0063] In some embodiments, the identifier value may be an index value assigned to the command based on the order in which the sideband processor 130 sends the given command. For example, if the modified command 314 comprises 100 individual commands, each modified command 314 may be numbered from 1 to 100 (or 0 to 99, or any other suitable indexing convention) in the order in which they are sent. In other embodiments, the index value may include additional information about the given command, such as an indication of which part of the updated OS 327 is included in the given command. Other information may be included, such as the command's priority, the command's type (e.g., a memory access or control command), a timestamp indicating when the given command was generated, etc.

[0064] In some embodiments, the sideband processor 130 configures the updated OS 327 to correspond to the current state of the computer system 100 (e.g., setting the updated OS to allow the continuation of one or more programs that were executed by the previous OS version). While the main CPU 103 executes the current OS 325, various peripheral devices included in the computer system 100 can be placed in various operating states. Some peripheral devices can be enabled and fully operational, some peripheral devices can be placed in a reduced-power state, and others can be powered off. To prepare for the updated OS 327 executed by the main CPU 103, the sideband processor 130 can determine one or more states of these peripheral devices and store or modify values ​​and / or instructions associated with the updated OS 327 to reflect the current state. For example, a graphics controller may be installed on the computer system 100 and used by the main CPU 103 in response to instructions included in the current OS 325. The sideband processor 130 modifies values ​​associated with the updated OS 327 to indicate the current state of the graphics processor, such as a specific display mode, the position of the next image frame to be displayed, etc.

[0065] After the controller hub 110 has processed all the modified commands 314 and sent an appropriate response to the sideband processor 130, the sideband processor 130 sends an instruction to the main CPU 103, instructing it to install the updated OS 327. In some embodiments, this instruction causes the main CPU 103 to switch from executing the current OS 325 to executing the updated OS 327 without rebooting. By configuring the updated OS 327 to correspond to the current state of the computer system 100, the main CPU 103 is able to switch execution from the current OS 325 to the updated OS 327 without rebooting the computer system 100. For example, the Linux kexec command can be used to switch the main CPU 103 without rebooting. Such a command can use the updated OS 327 to boot a new kernel. The kexec command can also enable running processes associated with the current OS 325 to resume in association with the updated OS 327 without rebooting.

[0066] Using the disclosed sideband techniques to access the memory locations of devices in a computer system allows for the installation of newer versions of the operating system (OS) without performing a full reboot. As used herein, a “full reboot” refers to exiting all open processes and restarting the OS in an initialized state, whereby the OS behaves as if no processes have been started except in the typical boot sequence. For example, after a full reboot, the OS can assume that all other circuitry in the computer system is in a reset state and that no processes have been started from within the OS. A full reboot of a computer system can cause it to be offline (e.g., unable to provide online services) for several minutes. In enterprise systems supporting a large number of users, any similar system performing a high volume of operations per second can experience undesirable efficiency impacts even after several minutes of downtime. For example, if 10,000 enterprise computer systems require an OS upgrade, the downtime could be so long that additional computer systems must be added (temporarily or permanently) to accommodate the computing demands during the upgrade (and thus potentially incur costs due to lost revenue during the downtime).

[0067] By using the described sideband technology, system administrators can efficiently install updated versions of the OS remotely and avoid the associated downtime of a full reboot. In some embodiments, some limited downtime may still occur when the processor switches from the current version of the OS to a newer version. For example, a partial reboot can be performed to initialize some operational states that cannot be modified by the sideband processor. For example, by copying file descriptors from the current version of the OS to the newer version, some active processes can exit while others remain active. However, such a partial reboot may result in a much shorter downtime than a full reboot, e.g., a fraction of a second or a few seconds, rather than a delay of minutes or longer. Additional details regarding switching from the current version of the OS to a newer version will be discussed later in this disclosure.

[0068] Notice, Figure 3 The examples are used to describe the disclosed techniques. Variations of the illustrated computer system are contemplated. For example, although two modified commands 314 are shown, in other embodiments, the sideband processor can send any suitable number of commands to cause the controller hub 110 to install an updated OS. As previously mentioned, in some embodiments, the controller hub 110 may be included in the same IC as the main CPU 103.

[0069] Figure 3 This describes the use of the disclosed sideband technology to update the OS. The sideband technology can also be used to perform other functions. Figure 4 The diagram illustrates another such function involving peripheral device drivers.

[0070] Update driver firmware Advance to Figure 4 This illustrates a block diagram of another embodiment of the computer system 100. Similar to... Figure 3 The way it is described Figure 4 Computer system 100 includes previously mentioned Figure 1 and Figure 3 The described components include a main CPU 103, a controller hub 110, a sideband processor 130, a network interface controller 140, and a network 350. The computer system 100 also includes peripheral devices 160a-160c (collectively referred to as peripheral device 160). Updated drivers 467 are received from the network 350 for installation on peripheral device 160b.

[0071] As shown in the figure, the main CPU 103 is configured to execute one or more processes. These processes may be associated with an operating system and / or with other programs executed by the main CPU 103. When executing one or more processes, the one or more peripheral devices 160 may be utilized.

[0072] As shown in the figure, peripheral device 160 is configured to perform one or more operations using a corresponding driver. In various embodiments, peripheral device 160 can correspond to any suitable type of device, such as a graphics coprocessor, audio coprocessor, network interface, wireless interface, etc., and can be installed during or after the manufacture of computer system 100, for example, by using a port included in the motherboard of computer system 100. The corresponding driver enables each peripheral device 160 to perform operations associated with that device. For example, a graphics coprocessor driver enables the graphics coprocessor to receive image frames, process image frames for a specific display, and send frames to be displayed on that specific display. Such a driver can have updates available from time to time that correct bugs, enhance available features, enable new features, and / or provide other desired changes from the current driver.

[0073] The controller hub 110 and sideband processor 130 perform the tasks as previously described. Furthermore, the sideband processor is configured to receive an updated driver 467 to replace the current driver 465 while the main CPU 103 executes the one or more processes. As shown, the updated driver 467 replaces the current driver 465 currently installed in the peripheral device 160b. As shown, the peripheral device 160b includes memory for storing drivers, such as non-volatile flash memory. In other embodiments, as will be disclosed below, the computer system 100 may include non-volatile memory for storing drivers for any one or more peripheral devices 160.

[0074] Sideband processor 130 receives instructions included in updated driver 467 from network 350 via network interface controller 140 coupled to sideband processor 130. For example, a system administrator using a computer system coupled to network 350 can schedule the delivery of updated driver 467 to computer system 100 for installation on a specific date and time, or when sideband processor 130 is not busy with other tasks.

[0075] Before installing the updated driver 467 on peripheral device 160b, sideband processor 130 notifies main CPU 103 that the updated driver 467 is available for installation. In some embodiments, sending the notification includes sending a notification to controller hub 110 via one or more commands. These one or more commands cause controller hub 110 to send a notification to main CPU 103. Sideband processor 130 receives confirmation from main CPU 103 (e.g., via controller hub 110) that use of peripheral device 160b has been suspended. After suspending use of peripheral device 160b, the sideband processor can be allowed to begin installing the updated driver 467.

[0076] In the example, to install the updated driver 467, the sideband processor 130 sends a modified command 414. As shown, the sideband processor 130 sends the modified command 414 to the controller hub 110, which in turn causes the controller hub 110 to install the updated driver 467 into the non-volatile memory included in the peripheral device 160. (The above is about...) Figure 3 The sideband processor 130 can generate modified commands 414 to include a corresponding portion of the received instructions for updating the driver 467. Some or all of the modified commands 414 may include a corresponding portion of the updated driver 467. Furthermore, the sideband processor 130 includes an identification value in at least some of the modified commands 414. In response to completing one of the modified commands 414, the controller hub 110 can send a response to the sideband processor 130 indicating that the given command has been executed, the response including the identification value.

[0077] After executing the modified command 414, the sideband processor 130 notifies the peripheral device 160b that the updated driver 467 has been installed. In response to this instruction, the peripheral device 160b is configured to use the updated driver 467 to perform the one or more operations associated with the device. In some embodiments, to facilitate communication with the peripheral device 160b, the sideband processor 130 compiles a communication procedure for the peripheral device 160b and then sends the compiled communication procedure to the peripheral device 160b. Using the compiled communication procedure, the sideband processor 130 sends one or more commands to the peripheral device 160b, for example, via the controller hub 110. These one or more commands cause the peripheral device 160b to use the updated driver 467.

[0078] Peripheral device 160b may be unavailable during the installation of an updated driver. However, other devices in peripheral device 160b may remain available to the main CPU 103. After the installation of the updated driver 467 is complete, peripheral device 160b may become available without performing a system reboot. In other embodiments, a soft reboot may be performed to bring the peripheral device to a known state.

[0079] Similar to the preceding description, using the disclosed sideband technology to access the memory locations of devices within a computer system allows for the installation of updated drivers for peripheral devices included in the computer system without requiring a full system reboot. As mentioned above, a full system reboot can cause the computer system to be down for an unwanted period of time. By using the described sideband technology, system administrators can efficiently install updated drivers remotely and avoid the associated downtime and full reboot.

[0080] Notice, Figure 4 This is merely one example of a computer system. In other examples, different numbers of peripheral devices may be included. In some embodiments, an additional processor may be included. Although one network interface is shown, additional network interfaces may be included for connecting to networks other than the network 350 shown.

[0081] Figure 3 and Figure 4 The description illustrates an embodiment of updating an OS or driver in a computer system using the disclosed sideband technology. An implementation of such a computer system's motherboard, for example... Figure 5 As shown, the OS and drivers can be updated simultaneously.

[0082] Combination ability Now go to Figure 5 An embodiment of a motherboard included in a computer system supporting the disclosed sideband technology is shown. The motherboard 500 includes... Figure 1 , Figure 3 and Figure 4 The components shown include, for example, the main CPU 103, controller hub 110, system memory 120, sideband processor 130, network interface controller 140, network 350, and peripheral devices 160. The motherboard 500 also includes a processor socket 501, a memory socket 522, a peripheral device socket 562, a network interface controller 545, and non-volatile memory 570. The network interface controller 140 is coupled to a local area network 550, while the network interface 545 is coupled to a wide area network 555.

[0083] Motherboard 500 can be used to achieve Figure 1 , Figure 3 and Figure 4 The computer system 100. Various embodiments of the computer system utilize a motherboard, such as a motherboard 500, to provide a mechanism for coupling a specific processor (e.g., main CPU 103) to other circuitry included in the computer system. As shown, the motherboard 500 includes a processor socket 501 configured to receive the main CPU 103, which is in turn configured to execute the current OS 325 from system memory 120. The motherboard 500 also includes memory sockets 522 having one or more sockets configured to receive corresponding memory modules included in system memory 120. Memory sockets 522 may include one or more dual in-line memory module (DIMM) sockets configured to receive DIMM-compliant memory module boards. Peripheral device sockets 562 are included on the motherboard 500 to receive one or more peripheral devices that can enable additional features for the computer system 100 and / or offload processing functions from the main CPU 103, thereby increasing the amount of bandwidth available for the main CPU 103 to perform additional and / or more complex tasks. Peripheral device socket 562 may include, for example, one or more peripheral component fast interconnect (PCIe) sockets.

[0084] As shown in the figure, non-volatile memory 570 is included on the motherboard 500 and can be used to store boot code when the motherboard 500 restarts. As also shown, non-volatile memory 570 is used to store driver software, including the current driver 465 and an updated driver 467. In some embodiments, non-volatile memory 570 may include two or more storage devices, such as an embedded multimedia card (eMMC). In such embodiments, one eMMC may be used to store boot code (e.g., Basic Input / Output System or "BIOS" code), and another eMMC may be used to store driver code for one or more peripheral devices.

[0085] As shown in the figure, the controller hub 110 is configured to provide an interface between the processor socket 501 and the peripheral device socket 562. In a similar manner to those previously described, the controller hub 110 is also configured to receive modified commands 314 and 414 from the sideband processor 130, and based on the received modified commands 314 and 414, install the updated OS 327 and the updated driver 467. As shown in the figure, the controller hub 110 installs the updated OS 327 to OS address 575 in the system memory 120. The OS address 575 can be determined using various techniques, such as being assigned by the system administrator responsible for updating the OS 327, assigned by the main CPU 103 based on the address of the current OS 325, or assigned by the sideband processor 130 based on an analysis of the current state of the system memory 120, etc. Figure 3 The sideband technology described herein installs an updated OS 327. In order for the main CPU 103 to execute the updated OS 327, the sideband processor 130 may send a command to the controller hub 110 to cause the controller hub 110 to modify the BIOS code stored in the non-volatile memory 570 to include the OS address 577 of the updated OS 327.

[0086] In addition to the updated OS 327, the controller hub 110 can install the updated driver 467. (As mentioned above...) Figure 4 The updated driver 467 was installed into peripheral device 160b. Figure 5 In this embodiment, the updated driver 467 is installed into the non-volatile memory 570. The sideband technique used to install the updated driver 467 into the non-volatile memory 570 can be related to the above-mentioned... Figure 4 The descriptions are basically the same.

[0087] In some embodiments, the installation of the updated OS 327 and the updated driver 467 can be performed serially, with either installation starting first. In other embodiments, the installation portions can overlap, and in some cases, the entire installation can be performed simultaneously. For example, the installation of the updated driver 467 can be fully performed while the updated OS is installed into system memory 120, and vice versa.

[0088] As shown in the figure, the network interface controller 545 is a network interface card (NIC) for coupling the main CPU 103 (e.g., via controller hub 110) to the wide area network 555. The network interface controller 545 can be implemented on the motherboard 500, or on a separate circuit board mounted on the motherboard 500 or coupled to the motherboard 500, for example, using a NIC slot. In some embodiments, the network interface controller 545 may include more than one circuit, such as an Ethernet card mounted on the motherboard 500 and coupled to a wired and / or wireless router providing access to the Internet.

[0089] Similarly, network interface controller 140 may be a NIC (implemented on motherboard 500 or installed as a separate device, such as using a network card slot) for coupling sideband processor 130 to local area network 550. Local area network 550 may be a network implemented within a room, building, or campus comprising multiple buildings. For example, local area network 550 may be part of a trusted security area used by one or more system administrators to manage the operation and maintenance of enterprise computer systems, including computer system 100 (which in turn includes motherboard 500). Such a trusted security area may restrict access to sideband processor 130 to help prevent unauthorized access to it. In some embodiments, local area network 550 may also provide access to wide area network 555. In other embodiments, network interface controller 140 may be able to bypass local area network 550 and directly access wide area network 555.

[0090] As shown, the sideband processor 130 receives instructions for updating the OS 327 and separate instructions for updating the driver 467 via a network interface controller 140, which is coupled to the sideband processor 130 and decoupled from the network interface controller 545 used by the main CPU 103. Using a separate network interface (e.g., network interface controller 140) to provide updated OS software and updated driver code provides system administrators with a more secure method for delivering code updates by avoiding the use of a wide area network accessible to unauthorized users. Furthermore, using a separate network interface controller 140 avoids adding traffic to the network interface controller 545 used by the main CPU 103. In some embodiments, the motherboard 500 may be included in a server computer providing online services to multiple users. In such embodiments, the network interface controller 545 may be heavily used, and if OS and / or driver updates are also provided on the network interface controller 545, it could lead to a performance bottleneck.

[0091] Notice, Figure 5The embodiments described are merely examples. For clarity, only elements used to illustrate the disclosed concepts are shown. In other embodiments, additional or different combinations of elements may be included, such as different numbers of peripheral devices and / or additional processors.

[0092] Figure 3 An embodiment of a computer system capable of updating its operating system using the disclosed sideband communication technology is illustrated. Figure 6 The document reveals additional details about how such computer systems can switch from the current OS to a newer OS.

[0093] System memory usage examples Now go to Figure 6 The diagram illustrates a block diagram of system memory depicting embodiments of the currently installed OS and newer OSes. As shown, system memory 120 corresponds to the memory included in... Figure 1 , Figure 3 and Figure 4 Computer system 100 and Figure 5 The system memory 120 is located in the motherboard 500. The current OS 325 and the newer OS 327 are installed in the system memory 120. Furthermore, the main CPU 103 can execute processes 630 and 640, currently stored in the system memory 120, while simultaneously executing the current OS 325. (Reference) Figure 3 and Figure 6 The process of switching from the current OS 325 execution to the newer OS 327 was disclosed.

[0094] Using the disclosed sideband technology to access the memory locations of devices in computer system 100, sideband processor 130 installs the updated OS 327 into one or more regions of system memory 120, while main CPU 103 continues to execute the current OS 325. While the updated OS 327 is being installed, main CPU 103 can further execute instructions associated with processes 630 and 640. To switch main CPU 103 from executing the current OS 325 to executing the updated OS 327, the updated OS 327 is further modified to support the execution of processes 630 and 640.

[0095] To support the execution of processes 630 and 640, sideband processor 130 can send a command causing information associated with processes 630 and 640 (including file descriptors 636 and 646) to be copied to one or more areas of system memory 120 on which the updated OS 327 is installed. As shown, processes 630 and 640 each have several pieces of information related to the execution of these two processes, included in the current OS 325. Return pointers 632 and 642, variables 634 and 644, and file descriptors 636 and 646 are examples of such information. Return pointers 632 and 642 may correspond to the return address that the main CPU 103 will access after the respective process 630 or 640 completes. Variables 634 and 644 may include one or more global variables used by processes 630 and 640 and other processes executed by the main CPU 103, respectively. File descriptors 636 and 646 include one or more indications of the file or other system address from which process 630 or 640 receives information and / or to which process 630 or 640 sends information. File descriptors 636 and 646 may include filenames read and / or written by process 630 or 640. File descriptors 636 and 646 may also include indications of printers and / or displays to which information is sent and of input devices from which information is received.

[0096] Before the main CPU 103 switches to execute the updated OS 327, any one or more of the return pointers 632 and 642, variables 634 and 644, file descriptors 636 and 646, and other information associated with processes 630 and 640 can be copied to the location in system memory 120 associated with the updated OS 327. Using commands sent to the controller hub 110, the sideband processor 130 can identify a valid process, such as a process that remains operational in the foreground or background of the current OS 325, further identify information associated with the valid process, and then copy the associated data to the memory region associated with the updated OS 327. After the updated OS 327 has been modified, the sideband processor 130 can then send an instruction to the main CPU 103 to execute the updated OS 327. In some embodiments, the sideband processor 130 can utilize the kexec command (e.g., in a Linux™ environment, or the exec command in a UNIX environment) to switch the main CPU 103 to the updated OS 327. The updated OS 327 can then use file descriptors 636 and 646, as well as processes 630 and 640, which were previously used by the current OS 325.

[0097] Notice, Figure 6The system memory is an example used to demonstrate the disclosed concepts. In other embodiments, a different number of processes may be included. In some embodiments, different sets of information associated with processes may be included and copied to a newer OS.

[0098] Figure 6 This describes information associated with the process of copying from the current version of the OS to a newer version of the OS. In some embodiments, to switch to a newer version of the OS, information associated with the operation of peripheral devices installed on the computer system can be used to modify the newer version of the OS. Figure 7 An example of such an embodiment is illustrated.

[0099] Now proceed to Figure 7 This diagram illustrates a block diagram of system memory depicting embodiments of the currently installed OS and newer OSes. It is similar to... Figure 6 As shown, the system memory 120 corresponds to the memory included in Figure 1 , Figure 3 and Figure 4 Computer system 100 and Figure 5 The system memory 120 is located in the motherboard 500. The current OS 325 and the newer OS 327 are installed in the system memory 120. Furthermore, peripheral devices 750 and 760 are included in the computer system 100. Various memory locations associated with the current OS 325 include values ​​associated with the use of peripheral devices 750 and 760. Reference Figure 3 and Figure 7 The procedure for switching from the execution of the current OS 325 to the newer OS 327 while maintaining the operation of peripheral devices 750 and 760 is disclosed.

[0100] While the main CPU 103 is executing the current OS 325, the sideband processor 130 uses the disclosed sideband technology to install an updated OS 327 into one or more regions of the system memory 120. As shown, switching the main CPU 103 from executing the current OS 325 to executing the updated OS 327 includes transferring values ​​associated with peripheral devices 750 and 760 to the updated OS 327. Peripheral devices 750 and 760 may independently include one or more registers and / or buffers. These registers and buffers may be implemented in circuitry included in peripheral devices 750 and 760, respectively, and / or may be included in driver software for operating the peripheral devices. In some embodiments, the current OS 325 maintains a local copy of the last known values ​​of these registers and buffers. These registers and buffers include control registers 752 and 762, status registers 754 and 764, and buffers 756 and 766. The current OS 325 can use control registers 752 and 762 to operate peripheral devices 750 and 760. For example, in some embodiments, peripheral device 750 may be a network interface card (NIC) for communicating with other computer systems. Therefore, control register 752 may allow the main CPU 103 to configure the NIC for a specific data rate (e.g., 480 Mbps or 1.0 Gbps), a specific communication protocol (e.g., 802.11a or 802.11n), to select a specific power mode (e.g., always on, sleep when idle), and other such settings. Similarly, status register 754 may indicate specific conditions of the NIC, such as an idle communication channel, completion of data packet transmission, reception of data packets, etc. Buffer 756 may include a transmit buffer and a receive buffer for storing data packets before transmission and reception, respectively.

[0101] In such an embodiment, switching from the current OS 325 to the updated OS 327 includes stopping the main CPU 103 in a safe state, determining the current state of peripheral devices 750 and 760, and then modifying the instructions of the updated OS 327 to correspond to the current state of peripheral devices 750 and 760. For example, the sideband processor 130 may send a command to pause the operation of the main CPU 103. In some embodiments, the pause operation allows the sideband processor 130 to determine the current state of peripheral devices 750 and 760. The sideband processor 130 may read registers and buffers directly from the peripheral devices and / or from the system memory 120 associated with the current OS 325 by sending a command to the controller hub 110. After reading the values ​​in the registers and buffers, the sideband processor 130 may copy these values ​​to an area of ​​the system memory 120 associated with the updated OS 327, and / or may modify some instructions of the updated OS 327 to correspond to the current state of peripheral devices 750 and 760.

[0102] Notice, Figure 7 The embodiment described is one example. Other embodiments may include a different number of peripheral devices. In some embodiments, different groups of registers and buffers may be included for each peripheral device.

[0103] Figure 1-5 The system and technology for enabling sideband communication to computer systems are described. Figure 8 The illustration shows an example of how the command flow occurs when the OS version and driver version are updated.

[0104] Command and response flow Go to Figure 8 The illustration depicts an embodiment of a computer system supporting sideband commands. Computer system 100 includes a depiction of a command flow for updating peripheral device drivers and OS versions. Computer system 100 includes the previously described elements, including a sideband processor 130, a controller hub 110, system memory 120, and non-volatile memory 570. Sideband processor 130 sends command series 813 and command series 814 to controller hub 110. Command series 813 includes three commands (OS1, OS2, and OS3) for installing updated OS 327, while command series 814 includes three commands for installing updated drivers 467 for peripheral devices (DR4, DR5, and DR6).

[0105] According to an embodiment, the sideband processor 130 receives an updated OS 327 and an updated driver 467 from, for example, a system administrator via a network interface controller 140. The sideband processor 130 prepares command series 813 and 814 by generating specific commands for each command series to include corresponding portions of the received instructions. For example, command OS2 may cause the controller hub 110 to store a corresponding portion of the updated OS 327 into one or more regions of system memory 120. Similarly, command DR5 may cause the controller hub 110 to store a corresponding portion of the updated driver 467 into a portion of non-volatile memory 570 associated with a specific peripheral device related to the updated driver 467.

[0106] Generating each command series may include setting a corresponding identifier value for each command in each series. As shown, each of the commands in command series 813 is indexed by the distinct numbers 1, 2, and 3. Similarly, each of the commands in command series 814 is indexed by the distinct numbers 4, 5, and 6. Although integer values ​​are used in this example, any suitable method can be used to generate the identifier values. For example, alphabetic characters and compound identifiers can be used. In some embodiments, the first value may represent a particular command sequence, and the second value may represent a specific command within that sequence; for example, A1, A2, and A3 are used for commands OS1, OS2, and OS3, and B1, B2, and B3 are used for commands DR4, DR5, and DR6. The sideband processor 130 sends the generated commands to the controller hub 110. In some embodiments, the sideband processor 130 may recognize that command series 813 may require some time to complete transmission, thus overlapping the transmission of commands so that one or more commands in command series 814 are sent before the last command in command series 813 is sent.

[0107] Upon receiving one or more commands from command series 813, the controller hub 110 decodes the received commands and prepares command series 815 for transmission to system memory 120. In some embodiments, the command structure between the sideband processor 130 and the controller hub 110 may differ from the command structure between the controller hub 110 and the various memories or devices coupled to the controller hub 110. For example, command series 815 transmitted from the controller hub 110 to system memory 120 may include six commands, while the corresponding command series 813 may include three commands.

[0108] To process command series 813, controller hub 110 generates one or more commands for each command in command series 815. As shown, controller hub 110 generates commands OS1a and OS1b to execute command OS1 in command series 813. It generates command OS2a to execute command OS2 in series 813. It generates commands OS3a, OS3b, and OS3c to execute command OS3 in series 813. Commands in command series 815 may store portions of the updated OS 327 instructions into corresponding locations in system memory 120, and / or may include control commands for system memory 120 related to storing the updated OS 327.

[0109] To reduce the time required to execute command series 815, controller hub 110 can process commands in a different order than the order in which they are received. As shown, the sideband processor is configured to send command series 813 to controller hub 110 in a first order: OS1, OS2, and then OS3. However, controller hub 110 can complete command series 815 in a different order than the order in which command series 813 is received. In this example, OS1a is sent to system memory 120 first, followed by OS2a, OS3a, OS1b, OS3b, and OS3c. Therefore, command series 813 can be completed in the order of OS2 first, then OS1, and then OS3. Furthermore, after receiving command series 814, controller hub 110 generates a single command 816 (DR456) to store the updated driver 467 in non-volatile memory 570. Controller hub 110 can send DR456 to non-volatile memory 570 before completing command series 815. As shown in the figure, command DR456 is completed after command OS1b and before command OS3c, so that commands of series 813 and 814 are completed in the order of OS2, OS1, DR4, DR5, DR6, and then OS3.

[0110] According to an embodiment, after a given command has been processed, the controller hub 110 sends a corresponding command response 817 to the sideband processor 130. The command response 817 can provide an indication that the corresponding command sent by the sideband processor 130 has been completed. In some cases, a particular command response 817 may include additional information, such as whether the corresponding command was successfully completed. In some cases, the command from the sideband processor 130 may include a request for data or other information (e.g., the status of a given command or series of commands, or a request for a checksum or other values ​​that can be used to confirm the successful completion of a previously sent command).

[0111] As shown, the sideband processor 130 receives command responses 817 corresponding to multiple commands in command series 813 and 814. The controller hub 110 includes a specific identifier value in each command response 817 that identifies the corresponding one in the command series. For example, the controller hub 110 may include in a given command response 817 the same index value used by the sideband processor 130 in the corresponding one of command series 813 and 814, such as adding "2" to the command response corresponding to command OS2.

[0112] Sideband processor 130 receives a given command response 817 from controller hub 110 and determines the corresponding command from a series of commands 813 or 814 corresponding to the given command response. To determine the corresponding command for the received command response, sideband processor 130 may match included index values ​​with index values ​​used for the corresponding command. Therefore, sideband processor 130 may be configured to maintain a list of transmitted commands and their corresponding index values, at least until a corresponding response indicating that the transmitted command has been successfully executed is received.

[0113] Notice, Figure 8 This is an example of how a computer system executes a flow of commands from a sideband processor to the controller hub. Figure 8 Only elements used to demonstrate the disclosed concepts are depicted. Other embodiments may include a different number of destinations for commands sent by the sideband processor 130. For example, in some embodiments, updated drivers may be sent to peripheral devices (instead of non-volatile memory 570 or other devices besides non-volatile memory 570).

[0114] Figure 1-8 The diagram illustrates a computer system that implements sideband communication technology for processing commands related to computer system administration. Such a system can perform the disclosed tasks using various methods. Figure 9-11 Three such methods are illustrated.

[0115] Exemplary methods Go to Figure 9 The diagram illustrates a flowchart of an embodiment of a method for implementing a sideband command protocol in a computer system. Method 900 can be executed by a computer system, for example... Figure 1 , Figure 3-5 and Figure 8 The computer system 100. More specifically, method 900 can be executed by a sideband processor 130 in the computer system 100 by, for example, accessing a non-transitory computer-readable medium on which program instructions are stored, which can be executed by the sideband processor 130 to cause [something related to] Figure 9 The described operation. Also refer to... Figure 1 and Figure 9 Method 900 starts from box 910.

[0116] Method 900 includes block 910, whereby a sideband processor 130 uses a first set of commands to monitor multiple operating conditions of a computer system 100, wherein the first set of commands is transmitted via a communication bus 117 using a specific command protocol. Using the first set of commands, the sideband processor 130 can monitor, for example, any one or more of the following: the operating temperature of the computer system 100, the voltage level of one or more power supply nodes, the current workload of the main CPU 103, the data flow through peripheral devices 160, the amount of currently available system memory 120, etc. To monitor operating conditions, the sideband processor 130 uses the first set of commands, which, when executed by the controller hub 110, causes values ​​representing various operating conditions to be received by the controller hub 110, which then transmits the received values ​​back to the sideband processor 130. The individual commands in the first set are transmitted serially by the sideband processor 130 to the controller hub 110. A response, including values ​​representing the corresponding operating conditions, can then be received from the controller hub 110 in an order corresponding to the order in which the commands were transmitted.

[0117] At block 920, method 900 also includes receiving data 180 from a specific device (e.g., peripheral device 160a) in computer system 100 by sideband processor 130. Sideband processor 130 is modified to support a second set of commands in addition to the first set. This modification of the sideband processor can be performed by the manufacturer of computer system 100, the manufacturer of the motherboard included in computer system 100, the entity that owns and / or operates computer system 100, or any other qualified entity. (Refer to the above) Figure 1 The second set of commands can increase the ability of the sideband processor 130 to access the memory and / or registers of various devices included in the computer system 100. The first set of commands, used to monitor the operating conditions of the computer system 100, provides limited access to the memory and registers of various devices. In some embodiments, the first set of commands may be limited to accessing specific set values ​​associated with devices installed by the manufacturer on the motherboard included in the computer system 100. By modifying the sideband processor 130 to execute the second set of commands, the sideband processor 130 can access a large number of devices in the computer system 100, and can also access more memory locations included in these devices.

[0118] The received data 180 may include more data than a single command in the second set of commands can include. In such a case, the sideband processor 130 may divide the data 180 into multiple parts, each part being included in a command in the second set. In addition to dividing the data 180 into multiple parts, or instead of dividing the data 180 into multiple parts, the sideband processor 130 may compress all or part of the data 180 as a technique to include more data in the second set of commands.

[0119] Sideband processor 130 can receive data 180 from the system administrator via network interface controller 140. Network interface controller 140 may be a different network interface card than that used by the main CPU 103. Therefore, the system administrator can send data from a remote location to one or more devices of computer system 100. This further allows the system administrator to perform similar tasks on computer systems located at various remote locations.

[0120] In block 930, method 900 includes modifying a first command in a first set of commands by sideband processor 130 to include a second command in a second set of commands, wherein the second command includes an address associated with peripheral device 160a and at least a portion of data 180. Method 900 includes sending data 180 to peripheral device 160a without interfering with the monitoring operation of sideband processor 130. The primary function of sideband processor 130 may be to monitor the operating conditions of computer system 100. Therefore, execution of commands in the second set of commands can be performed in a manner that does not interfere with the execution of the first set of commands. To execute the second set of commands, sideband processor 130 utilizes the first set of commands, modifies the pending first command of the first set to include information associated with the second set of commands, sends it as a single command to controller hub 110, and utilizes existing communication protocols for commands in the first set of commands. The above-mentioned... Figure 2 The technique described is used to modify the first command to include the second command.

[0121] In some embodiments, modifying the first command to include the second command involves using the direct memory access (DMA) circuitry of the sideband processor 130. For example, a pending first command may be queued in the interface circuitry of the sideband processor 130. This interface circuitry may queue commands sent to the controller hub 110 via the communication bus 117. The sideband processor 130 uses DMA to send data associated with the second command along with the first command to the queue of the interface circuitry, storing the data of the second command in a manner that modifies the first command to include the second command. The interface circuitry can then treat the modified first command as a single command. In some embodiments, the sideband processor may further compress at least a portion of the second command before or simultaneously with modifying the first command.

[0122] In block 940, method 900 includes sending a modified command 114 from sideband processor 130 to controller hub 110 via communication bus 117 using a specific command protocol. As described above, the interface circuitry of sideband processor 130 can send the modified first command via the specific communication bus. The described sideband technology can exclude the main CPU 103 from processing the modified first command, thereby reducing or avoiding performance impact on the user of computer system 100 due to the transfer of data 180 from sideband processor 130 to peripheral device 160a.

[0123] In some embodiments, the second command causes that portion of data 180 to be stored in the system memory 120 of the computer system 100. In such an embodiment, method 900 may include modifying a third command in the first set of commands by the sideband processor 130 using the techniques just described to include a fourth command in the second set of commands. The sideband processor 130 may then send the modified third command to the controller hub 110 via the communication bus 117 using a specific command protocol. When the fourth command is executed, the peripheral device 160a may copy that portion of data 180 from the system memory 120.

[0124] After executing the first command, the controller hub 110 sends a first response to the first command to the sideband processor 130 at a first opportune time. Similarly, after executing the second command at a second opportune time following the first opportune time, the controller hub 110 sends a second response to the second command to the sideband processor 130. The sideband processor 130 can determine that the second response corresponds to the second command by using an identifier value corresponding to the second command included in the second response.

[0125] Note that method 900 is an example of a method for implementing a sideband command protocol. This method can return to block 910, where the sideband processor 130 continues to monitor the one or more operating conditions. The remainder of method 900 can be repeated in response to receiving another set of data from a specific device in computer system 100. Although four blocks are included in the description of method 900, any suitable number of blocks can be performed. For example, in other embodiments, additional blocks for splitting data 180 into multiple parts and / or compressing data 180 can be included as separate blocks.

[0126] Advance to Figure 10 The diagram illustrates a flowchart of an embodiment of a method for updating the operating system of a computer system using a sideband command protocol. Method 1000 can be implemented by a computer system (e.g., Figure 1 , Figure 3-5 and Figure 8The computer system 100 can execute the commands. In a similar manner to the above, the computer system 100 can access a non-transitory computer-readable medium on which program instructions are stored, which can be executed by the computer system 100 to cause [actions related to]... Figure 10 The operations described. In some embodiments, method 1000 may utilize one or more operations of method 900 to perform at least a portion of the operations described. Also refer to Figure 3 and Figure 10 The operation of method 1000 begins in box 1010.

[0127] In block 1010, method 1000 includes the execution of a current OS 325 from system memory 120 coupled to the main CPU 103 of computer system 100 by the main CPU 103. The main CPU 103 has access to system memory 120 and is able to read instructions included in the current OS 325, as well as other programs that may be stored in system memory 120. The current OS 325 may correspond to any suitable operating system, such as Windows™ or Linux™.

[0128] Method 1000 also includes, at block 1020, receiving instructions via network 350 from the sideband processor 130 of computer system 100 for an updated version of the OS (updated OS 327). The updated OS 327 may be a completely new operating system with different features, a new version of the current OS 325 with new and / or enhanced features, or a patch to fix bugs in the current OS 325. In some cases, for example, the updated OS 327 may be a rollback of an older version of the current OS 325 to address operational problems with the current OS 325. The updated OS 327 may be received as one or more files for installation in system memory 120.

[0129] In block 1030, method 1000 further includes, while the main CPU 103 is executing the current OS 325, a modified command series 314 is sent by the sideband processor 130 to the controller hub 110, causing the controller hub 110 to store the received instructions into one or more regions of the system memory 120. To install the updated OS 327, the sideband processor 130 sends the modified commands 314 to the controller hub 110. As described above, some or all of the modified commands 314 may include corresponding portions of the updated OS 327. Each portion may be stored in a different memory bank of the system memory 120, and in some embodiments, simultaneous writes to the system memory 120 are allowed, thereby reducing the amount of time required to complete the installation. (See also: Regarding...) Figure 8As shown, the modified command 314 causes the controller hub 110 to perform actions in one or more areas associated with the updated OS 327, including installing the updated OS 327 into the system memory 120.

[0130] In block 1040, method 1000 further includes the sideband processor 130 switching the main CPU 103 from executing the current OS 325 to executing the updated OS 327 without rebooting. After the controller hub 110 has sent a response to the sideband processor 130 indicating that all modified command 314 has been completed, the sideband processor 130 sends an indication to the main CPU 103 that the updated OS 327 has been installed. In response to this indication, the main CPU 103 can switch from executing the current OS 325 to executing the updated OS 327 without rebooting. As described above, the main CPU 103 can switch from executing the current OS 325 to executing the updated OS 327 without rebooting the computer system 100. For example, the Linux kexec command can be used to switch the main CPU 103 to the updated OS 327 without rebooting. The kexec command can also cause processes executing with the current OS 325 to instead execute with the updated OS 327 without rebooting.

[0131] Notice, Figure 10 The method shown is an example. Method 1000 may end after the operation in box 1040 is completed, or it may repeat the installation of another updated version of the OS. Although shown in sequence, two or more operations of method 1000 may be performed in a different order or in an overlapping manner. For example, the operation in box 1020 may continue (e.g., receiving instructions for an updated version of the OS may continue) while the operation in box 1030 is initiated (e.g., sending commands for installing an updated version of the OS).

[0132] Now go to Figure 11 The diagram illustrates a flowchart of an embodiment of a method for updating a peripheral device driver using a sideband command protocol. Method 1100 can be, for example... Figure 1 , Figure 3-5 and Figure 8 Computer systems such as computer system 100 execute in a manner disclosed above, for example. For instance, computer system 100 can access a non-transitory computer-readable medium on which program instructions are stored, which can be executed by computer system 100 to cause [actions related to] [the following]. Figure 11 The operations described. In a manner similar to that described for method 1000, method 1100 may utilize one or more operations of method 900 to perform at least a portion of the described operations. See also... Figure 5 and Figure 11 Method 1100 starts from box 1110.

[0133] In box 1110, method 1100 includes executing one or more processes by the main CPU 103 of computer system 100. The executed processes may be associated with the current OS 325 and / or with other programs executed by the main CPU 103. For example, the main CPU 103 may execute... Figure 6 Processes 630 and 640 are shown. When one or more processes are executed, the main CPU 103 may also utilize the one or more peripheral devices 160.

[0134] In box 1120, method 1100 includes the use by main CPU 103 of a specific one of peripheral devices 160 coupled to computer system 100, wherein peripheral device 160 utilizes a specific version of a corresponding driver. The corresponding driver enables each peripheral device 160 to perform operations associated with each device. Such drivers may be updated from time to time. These updates (e.g., updated driver 467) correct bugs, enhance available features, enable new features, and / or provide other desired changes from current drivers, such as current driver 465.

[0135] Method 1100 also includes, at block 1130, instructions received by a sideband processor 130 included in computer system 100 via local area network 550 to replace the current driver 465. As shown, the updated driver 467 will replace the currently installed driver 465 used by one of the peripheral devices 160 (e.g., peripheral device 160c). As shown, computer system 100 includes non-volatile memory 570 for storing drivers for any one or more peripheral devices 160. Sideband processor 130 can receive instructions included in the updated driver 467 from local area network 550 via network interface controller 140. For example, a system administrator using a computer system coupled to local area network 550 can send the updated driver 467 to computer system 100 for installation.

[0136] In block 1140, method 1100 includes having the main CPU 103 suspend use of peripheral device 160c by the sideband processor 130. The sideband processor 130 may notify the main CPU 103 that an updated driver 467 is available for installation, for example, by sending a notification to the controller hub 110 via one or more commands. These one or more commands may cause the controller hub 110 to send a notification to the main CPU 103. The sideband processor 130 receives confirmation from the main CPU 103 (e.g., via the controller hub 110) that use of peripheral device 160c has been suspended. In response to receiving this confirmation, the sideband processor may begin installing the updated driver 467.

[0137] In block 1150, method 1100 further includes, while the main CPU 103 executes the one or more processes, the sideband processor 130 sends a modified command series 414 to install instructions for updating the driver 467. The sideband processor 130 sends the modified command 414 to the controller hub 110, which in turn causes the controller hub 110 to install the updated driver 467 into non-volatile memory 570. (As stated above regarding...) Figure 8 In this manner, the sideband processor 130 can generate modified commands 414 to include a corresponding portion of the received instruction from the updated driver 467. Some or all of the modified commands 414 may include a corresponding portion of the updated driver 467. As previously described, an identification value may be included in at least some of the modified commands 414, and the response from the controller hub 110 may include this identification value, such that the sideband processor 130 can identify a specific one of the modified commands 414 corresponding to a given response from the controller hub 110.

[0138] The sideband processor 130 can also notify the peripheral device 160c that an updated driver 467 has been installed after executing the modified command 414. In response to this notification, the peripheral device 160c can utilize the updated driver 467 to perform the one or more operations associated with the device. In some embodiments, to communicate with the peripheral device 160c, the sideband processor 130 compiles a communication procedure and then sends the compiled communication procedure to the peripheral device 160c, thereby enabling communication. In some embodiments, using the compiled communication procedure, the sideband processor 130 sends one or more commands to the peripheral device 160c via the controller hub 110. These one or more commands cause the peripheral device 160c to use the updated driver 467.

[0139] In block 1160, method 1100 further includes sideband processor 130 notifying main CPU 103 that peripheral device 160c is available. Peripheral device 160c may be unavailable during the installation of updated driver 467. In some embodiments, other peripheral devices among peripheral devices 160 may remain available to main CPU 103. Peripheral device 160c becomes available after the instructions for updated driver 467 have been installed in non-volatile memory 570. In some embodiments, updated driver 467 is installed without performing a system reboot, while in other embodiments, a partial reboot is performed to bring peripheral device 160c to a known state. After peripheral device 160c is determined to be available, sideband processor 130 sends a notification to main CPU 103 that peripheral device 160c is available (e.g., via a command sent to controller hub 110).

[0140] Notice, Figure 11 Method 1100 is merely an example demonstrating the disclosed concepts. In some embodiments, method 1100 may repeatedly install another updated version of the driver. In some embodiments, two or more operations of method 1100 may be performed in different orders or in an overlapping manner. For example, while performing the operation of block 1140, the operation of block 1130 may continue to be performed, thereby allowing the sideband processor to send a request requesting the processor to suspend the use of peripheral devices while continuing to receive instructions for the updated version of the driver.

[0141] Exemplary computer system Now for reference Figure 12 A block diagram of an example computer system 1200 is depicted, which can implement one or more computing devices, such as... Figure 1 , Figure 3-5 and Figure 8 Computer system 100. Computer system 1200 includes a processor subsystem 1220 coupled to system memory 1240 and I / O interface 1260 via interconnect 1280 (e.g., system bus). I / O interface 1260 is coupled to one or more I / O devices 1270. Computer system 1200 can be any of various types of devices, including but not limited to server computer systems, personal computer systems, desktop computers, laptop or notebook computers, mainframe computer systems, server computer systems operating in data center facilities, tablet computers, handheld computers, workstations, network computers, etc. Although for convenience, Figure 12 A single computer system 1200 is shown, but computer system 1200 can also be implemented as two or more computer systems operating together.

[0142] The processor subsystem 1220 may include one or more processors or processing units (e.g., main CPU 103), and in some embodiments may include... Figure 1 , Figure 3 , Figure 4-5 The sideband processor 130. In various embodiments of the computer system 1200, multiple instances of the processor subsystem 1220 may be coupled to the interconnect 1280. In various embodiments, the processor subsystem 1220 (or each processor unit within 1220) may include cache or other forms of on-board memory.

[0143] System memory 1240 may be used to store program instructions executable by processor subsystem 1220 to cause computer system 1200 to perform the various operations described herein. In some embodiments, system memory 1240 corresponds to or includes Figure 1 , Figure 3 and Figure 5-8 System memory 120. System memory 1240 can be implemented using various physical, non-transitory storage media, such as hard disk storage, floppy disk storage, removable disk storage, flash memory, random access memory (RAM-SRAM, EDO RAM, SDRAM, DDR SDRAM, RAMBUS RAM, etc.), read-only memory (PROM, EEPROM, etc.), and so on. The memory in computer system 1200 is not limited to, for example, the main memory of system memory 1240. More precisely, computer system 1200 may also include other forms of storage, such as buffer memory in processor subsystem 1220 and auxiliary storage on I / O devices 1270 (e.g., hard disk drivers, storage arrays, etc.). In some embodiments, these other forms of storage may also store program instructions executable by processor subsystem 1220.

[0144] As shown, I / O interface 1260 can be any of various types of interfaces configured to couple to and communicate with other devices. In some embodiments, I / O interface 1260 corresponds to Figure 1 , Figure 3-5 and Figure 8 The controller hub 110. I / O interface 1260 can be coupled to one or more I / O devices 1270 via one or more corresponding buses or other interfaces. Examples of I / O devices 1270 include storage devices (hard disk drivers, optical drives, removable flash memory drivers, storage arrays, SANs, or their associated controllers), network interface devices (e.g., such as… Figure 5The network interface controllers 140 and 545 shown may be used, or other devices (e.g., graphics, user interface devices, etc.). In one embodiment, I / O device 1270 includes a network interface device (e.g., configured to communicate via WiFi, Bluetooth, Ethernet, etc.), and computer system 1200 is coupled to a network via the network interface device.

[0145] Implementations of the subject matter of this application include, but are not limited to, the following examples 1 to 40.

[0146] 1. A method comprising: A specific operating system (OS) is executed by the processor of a computer system from system memory coupled to the processor. The computer system's sideband processor receives instructions via a network for updating the OS version; When the processor executes a specific OS, the sideband processor sends a series of commands to the controller hub, causing the controller hub to store the received instructions into one or more areas of system memory; and The sideband processor enables the processor to switch from executing the specific OS to executing the updated version of the OS without rebooting.

[0147] 2. The method according to Example 1, wherein causing the processor to execute an updated version of the OS includes modifying the non-volatile boot memory to include the address of the updated version of the OS.

[0148] 3. The method described in Example 1, wherein switching the processor without rebooting includes using the Linuxkexec command.

[0149] 4. The method described in Example 1 further includes the use of file descriptors and processes previously used by a particular OS by a newer version of the OS.

[0150] 5. The method according to Example 1, wherein causing the processor to execute an updated version of the OS includes: Stop the processor in a safe state; Determine the current state of peripheral devices included in the computer system; and Modify the instructions used to update the OS version to correspond to the current state of the peripheral devices.

[0151] 6. The method according to Example 1 further includes generating a specific command in the command family to include a corresponding portion of the received instruction, wherein the specific command causes the controller hub to store the corresponding portion in one or more areas of the system memory.

[0152] 7. The method according to Example 1, wherein sending the command series to store the received instructions includes sending the command series and a corresponding identifier value for each command; and The sideband processor receives responses to a plurality of the command series, wherein a particular response includes a corresponding identifier value that identifies a specific command in the command series.

[0153] 8. The method according to Example 1, wherein receiving instructions for updating the OS includes receiving instructions via a network interface card coupled to the sideband processor and separate from the network interface card used by the processor.

[0154] 9. A non-transitory computer-readable medium having instructions stored thereon, the instructions being executable by a sideband processor included in a computer system to perform operations, the operations including: At the same time, this includes the processor in the computer system executing a specific operating system (OS): Receive instructions for updating the OS; and Send a series of commands to store the received instructions into one or more regions of system memory coupled to the processor; Configure an updated version of the OS to correspond to the current state of the computer system; and This causes the processor to execute an updated version of the OS from one or more regions of the system memory.

[0155] 10. The non-transitory computer-readable medium according to Example 9, wherein sending the series of commands includes sending the series of commands to a controller hub, wherein the series of commands is configured to cause the controller hub to store the received instructions into one or more areas of the system memory.

[0156] 11. The non-transitory computer-readable medium according to Example 10 further includes generating a specific command in the command series to include a corresponding portion of a received instruction, wherein the specific command is configured to cause the controller hub to store the corresponding portion into one or more regions of the system memory.

[0157] 12. The non-transitory computer-readable medium according to Example 10 further includes: Receive a given response from the controller hub; and Determine the corresponding command in the series that corresponds to the given response.

[0158] 13. The non-transitory computer-readable medium according to Example 9 further includes acquiring the operational status of one or more peripheral devices of the computer system.

[0159] 14. The non-transitory computer-readable medium according to Example 13, wherein configuring an updated version of the OS includes modifying one or more instructions of the updated version of the OS to correspond to the operational state of the one or more peripheral devices.

[0160] 15. An apparatus comprising: A motherboard system, comprising: A processor socket configured to receive a processor, the processor being configured to execute a specific operating system (OS) from system memory coupled to the processor socket. A controller hub configured to provide an interface between a processor socket and one or more peripheral sockets configured to receive corresponding peripheral devices; and Included in the motherboard system, the sideband processor is configured as follows: When the processor is running a specific OS: Receive instructions for updating the OS; Send a series of commands to the controller hub to install the received instructions into one or more areas of the system memory; and Send an instruction to the processor socket that an updated version of the OS has been installed.

[0161] 16. The apparatus according to Example 15 further includes a network interface controller coupled to the sideband processor, wherein the sideband processor is further configured to receive instructions for the updated version of the OS via the network interface controller.

[0162] 17. The apparatus according to Example 16 further includes a different network interface controller coupled to the processor socket.

[0163] 18. The apparatus according to Example 15, wherein the processor is further configured to execute the updated version of the OS in response to the instruction.

[0164] 19. The apparatus according to Example 15, wherein the sideband processor is further configured to generate a specific command in the command series to include a corresponding portion of a received instruction; and The controller hub is also configured to store the corresponding portion into one or more areas of the system memory based on the specific command.

[0165] 20. The apparatus according to Example 15, wherein the controller hub is further configured to: To complete the series of commands in a different order than the order in which they were received; and In response to completing a given command, a given response to the series of given commands is sent to the sideband processor; and The sideband processor is further configured to identify a given command in a command family corresponding to a given response.

[0166] 21. A method comprising: One or more processes are executed by the processor of a computer system; The processor uses peripheral devices coupled to the computer system, where the peripheral devices utilize specific versions of drivers; The sideband processor included in the computer system receives instructions via a network to update the driver version, replacing the specific driver version. The sideband processor causes the processor to suspend the use of peripheral devices. While the processor executes one or more of the processes, the sideband processor sends a series of commands to install instructions for updating the driver version; and The sideband processor notifies the processor that peripheral devices are available.

[0167] 22. The method according to embodiment 21 further includes: The communication process for peripheral devices is compiled by the sideband processor; and The compiled communication process is sent to the peripheral device.

[0168] 23. The method according to embodiment 22 further includes sending one or more commands to a peripheral device by the sideband processor using a compiled communication process, wherein the one or more commands cause the peripheral device to use an updated version of the driver.

[0169] 24. The method according to embodiment 21 further includes: The controller hub receives a series of commands from the sideband processor; and The controller hub stores the instructions of the updated driver version into a non-volatile memory included in the peripheral device based on the command series.

[0170] 25. The method according to embodiment 24, wherein suspending the use of peripheral devices by the processor and notifying the processor that peripheral devices are available includes sending a command from the sideband processor to the processor via the controller hub.

[0171] 26. The method according to Example 21, wherein the peripheral device is unavailable during the instruction to install the updated driver; and After the installation of the updated driver is complete, the peripheral devices become available without a system restart.

[0172] 27. The method according to Example 21, wherein receiving instructions for updating the driver via a network includes receiving instructions via a network interface card coupled to the sideband processor and decoupled from the network interface card used by the processor.

[0173] 28. The method according to embodiment 21, wherein sending the command series includes: setting a corresponding identifier value for each command in the command series; and The sideband processor receives responses to a plurality of the command series, wherein a particular response includes a specific identifier value that identifies a corresponding command in the command series.

[0174] 29. A non-transitory computer-readable medium having instructions stored thereon, the instructions being executable by a sideband processor included in a computer system to perform operations, the operations including: When a computer system's processor executes a specific operating system (OS): Receive updated driver versions via the network to replace specific versions of drivers installed for peripheral devices of the computer system; Send a series of commands to install an updated version of the driver; and Notify that an updated driver version is available for the peripheral device.

[0175] 30. The non-transitory computer-readable medium according to Example 29 further includes: The notification processor has an updated driver version available for installation; and Receive confirmation from the processor that the use of peripheral devices has been suspended.

[0176] 31. The non-transitory computer-readable medium according to Example 29 further includes: Compile the communication procedures for peripheral devices; Send the compiled communication process to the peripheral device; and A compiled communication process is used to send one or more commands to a peripheral device, wherein the one or more commands cause the peripheral device to use an updated version of the driver.

[0177] 32. The non-transitory computer-readable medium according to Example 29, wherein sending the series of commands includes sending the series of commands to a controller hub, wherein the series of commands is configured to cause the controller hub to install the updated version of the driver.

[0178] 33. The non-transitory computer-readable medium according to Example 32 further includes: Receive a given response from the controller hub; and Determine the corresponding command in the series that corresponds to the given response.

[0179] 34. The non-transitory computer-readable medium according to Example 33, wherein determining a corresponding one includes adding a corresponding identifier value to at least some commands in the series prior to transmission, wherein the given response includes a given identifier value identifying a corresponding one in the series of commands corresponding to the given response.

[0180] 35. An apparatus comprising: Motherboard system, the motherboard system comprising: A processor socket configured to receive a processor configured to execute one or more processes; Non-volatile memory; A peripheral device interface configured to receive a peripheral device, said peripheral device being configured to perform one or more operations from non-volatile memory using a specific version of a driver; and The sideband processor is configured as follows: When the processor executes one or more of the processes: Receive updated driver versions to replace specific driver versions; Send a series of commands to install the updated driver into non-volatile memory; and Sends a notification to the peripheral device port that an updated driver version has been installed.

[0181] 36. The apparatus according to Example 35 further includes a controller hub, the controller hub being configured to: Provides an interface between the processor socket and the peripheral device socket; Receive command series from the sideband processor; and Based on the received command, the updated driver version is installed into the non-volatile memory.

[0182] 37. The apparatus according to Example 36, wherein the sideband processor is further configured to send the command sequence to the controller hub in a first order; and The controller hub is further configured as follows: To complete the series of commands in a different order than the order in which they were received; and In response to the completion of a specific command, a specific response to the specific command in the series is sent to the sideband processor; and The sideband processor is also configured to identify a specific command corresponding to a specific response.

[0183] 38. The apparatus according to Example 35 further includes a network interface controller for coupling a network interface controller to the sideband processor, wherein the sideband processor is further configured to receive the updated version of the driver via the network interface controller mounted in the network interface.

[0184] 39. The apparatus according to Example 38 further includes different network jacks for coupling different network interface controllers to the processor jacks.

[0185] 40. The apparatus according to Example 35, wherein the peripheral device is further configured to perform the one or more operations using the updated version of the driver in response to the instruction.

[0186] This disclosure includes references to “exemplary embodiments,” which are non-limiting implementations of the disclosed concepts. References to “exemplary embodiment,” “one embodiment,” “specific embodiment,” “some embodiments,” “various embodiments,” etc., do not necessarily refer to the same embodiment. Numerous possible embodiments are contemplated, including specific embodiments described in detail, as well as modifications or alternatives falling within the spirit or scope of this disclosure. Not all embodiments necessarily exhibit any or all of the potential advantages described herein.

[0187] Unless otherwise stated, the specific embodiments are not intended to limit the scope of the claims drafted based on this disclosure to the disclosed form, even if only a single example with respect to a particular feature is described. Therefore, in the absence of any statement to the contrary, the disclosed embodiments are intended to be illustrative rather than limiting. This application is intended to cover such alternatives, modifications, and equivalents that will be apparent to those skilled in the art upon which this disclosure benefits.

[0188] Specific features, structures, or characteristics may be combined in any suitable manner consistent with this disclosure. Therefore, this disclosure is intended to include any feature or combination of features disclosed herein (expressly or implicitly), or any generalization thereof. Thus, during the examination of this application (or an application claiming priority thereto), new claims may be made for any such combination of features. In particular, with reference to the appended claims, features of dependent claims may be combined with features of independent claims, and features of corresponding independent claims may be combined in any suitable manner, not merely the specific combinations listed in the appended claims.

[0189] For example, while the appended dependent claims are drafted such that each dependent claim is subordinate to a single other claim, additional dependent relationships are also contemplated. Where appropriate, it is also contemplated that a claim drafted in one statutory type (e.g., apparatus) implies a corresponding claim in another statutory type (e.g., method).

[0190] As this disclosure is a legal document, various terms and phrases may be subject to administrative and judicial interpretation. Therefore, it is hereby announced that the definitions provided in the following paragraphs and throughout this disclosure will be used to determine how the claims drafted based on this disclosure should be interpreted.

[0191] References to the singular forms such as “a,” “an,” and “the” are intended to mean “one or more” unless the context clearly specifies otherwise. Therefore, referencing “item” in a claim does not exclude other instances of that item.

[0192] The word “may” used in this article is in a permissive sense (i.e., possible, able) rather than in a mandatory sense (i.e., required).

[0193] The term "including" and its forms are open-ended, meaning "including but not limited to".

[0194] When the term “or” is used in this disclosure with respect to a list of options, it will generally be understood to be used in an inclusive sense unless the context otherwise specifies. Thus, a statement of “x or y” is equivalent to “x or y, or both,” encompassing x but not y, y but not x, and both x and y. On the other hand, phrases such as “one of x or y, but not both” clearly indicate that “or” is used in an exclusive sense.

[0195] The statement “w, x, y, or z, or any combination thereof” or “at least one of w, x, y, and z” is intended to cover all possibilities, from a single element to all elements in the set. For example, given the set [w, x, y, z], these phrases cover any single element of the set (e.g., w, but excluding x, y, or z), any two elements (e.g., w and x, but excluding y or z), any three elements (e.g., w, x, and y, but excluding z), and all four elements. The phrase “at least one of w, x, y, and z” therefore refers to at least one element in the set [w, x, y, z], thus covering all possible combinations in the list of options. This phrase should not be interpreted as requiring the existence of at least one instance of w, at least one instance of x, at least one instance of y, and at least one instance of z.

[0196] In this disclosure, various “labels” may modify nouns. Unless the context otherwise specifies, different labels used for a feature (e.g., “first circuit,” “second circuit,” “specific circuit,” “given circuit,” etc.) refer to different instances of that feature. When applied to a specific feature, the labels “first,” “second,” and “third” do not imply any type of ordering (e.g., spatial, temporal, logical, etc.) unless otherwise stated.

[0197] In this disclosure, different entities (which may be referred to differently as “units,” “circuits,” other components, etc.) may be described or required to be “configured” to perform one or more tasks or operations. The expression “an entity configured to [perform one or more tasks]” is used herein to refer to a structure (i.e., something physical). More specifically, this expression is used to indicate that the structure is arranged to perform said one or more tasks during operation. A structure may be said to be “configured” to perform some task even if the structure is not currently being operated. Therefore, an entity described or stated as “configured” to perform a task refers to a physical thing, such as a device, circuit, memory storing program instructions executable to perform that task, etc. This phrase is not used herein to refer to intangible things.

[0198] The term "configured as" does not mean "configurable as". For example, an unprogrammed FPGA is not considered "configured as" to perform certain functions. However, such an unprogrammed FPGA can be "configurable" to perform that function.

[0199] The phrase "based on" is used to describe one or more factors that influence the determination. This term does not exclude the possibility that other factors might influence the determination. That is, the determination can be based solely on the specified factors or on the specified factors along with other unspecified factors. Consider the phrase "A is determined based on B." This phrase specifies that B is a factor used to determine A or a factor influencing the determination of A. This phrase does not exclude the possibility that the determination of A may also be based on other factors, such as C. This phrase is also intended to cover embodiments where A is determined solely based on B. As used herein, the phrase "based on" is synonymous with the phrase "at least partially based on."

[0200] The phrase "in response to" describes one or more factors that trigger an effect. This phrase does not exclude the possibility that other factors may influence or trigger the effect. That is, the effect may respond only to those factors, or it may respond to the specified factors as well as other unspecified factors. Consider the phrase "A is executed in response to B." This phrase specifies that B is the factor that triggers the execution of A. This phrase does not exclude that the execution of A may also be in response to some other factor, such as C. This phrase is also intended to cover instances where A is executed only in response to B.

Claims

1. A method for communication in a computer system, comprising: The sideband processor uses a first set of commands to monitor multiple operating conditions of the computer system, wherein the first set of commands is sent via a specific communication bus using a specific command protocol; The sideband processor receives data from a specific device in the computer system, wherein the sideband processor has been modified to support a second set of commands; The sideband processor modifies the first command in the first set of commands to include the second command in the second set of commands, wherein the second command includes an address associated with the specific device and at least a portion of the data; The sideband processor sends a modified first command to the controller hub via the specific communication bus using the specific command protocol. At the first moment, the sideband processor receives a response to the first command from the controller hub; and At a second time following the first time, the sideband processor receives a response to the second command from the controller hub.

2. The method according to claim 1, wherein, The second command includes an identifier value, and wherein receiving a response to the second command includes using the identifier value to determine that the response corresponds to the second command.

3. The method according to claim 1, further comprising sending the first command to the specific communication bus via an interface circuit, wherein, The first command is modified to include the second command, which includes sending the second command to the interface circuit using the direct memory access circuitry of the sideband processor during the transmission of the first command.

4. The method of claim 1, further comprising compressing at least a portion of the second command by the sideband processor.

5. The method according to claim 1, wherein, The second command causes a portion of the data from the specific device to be stored in the system memory of the computer system.

6. The method of claim 5, further comprising the sideband processor sending the received data to the specific device in the following manner: The sideband processor modifies the third command in the first group of commands to include the fourth command in the second group of commands, wherein, The fourth command causes the specific device to copy a portion of the data from the system memory; as well as The sideband processor sends a modified third command to the controller hub via the specific communication bus using the specific command protocol.

7. The method according to claim 1, wherein, The computer system's main central processing unit (CPU) is excluded from processing the modified first command.

8. The method according to claim 7, wherein, Receiving data from the specific device includes receiving the data from the system administrator by the sideband processor via a first network interface card, which is a second network interface card used by a different network interface card than the main central processing unit (CPU).

9. An apparatus for communication in a computer system, comprising: The communication bus is configured to support a specific command protocol; A controller hub, coupled to a main central processing unit (CPU) and one or more peripheral devices, wherein the controller hub is coupled to the communication bus and configured to receive a first set of commands using the specific command protocol; A sideband processor, coupled to the communication bus, is configured to: Send a series of commands from the first set of commands via the communication bus to monitor one or more operating conditions of the device; Receive data from a specific peripheral device among the one or more peripheral devices via a network interface; Modify a specific pending command in the series of commands to include an auxiliary command in the second set of commands, wherein the auxiliary command includes an address associated with the specific peripheral device and at least a portion of the data; Using the specific command protocol, a modified command is sent to the controller hub via the communication bus; and At different times, different responses to the specific command and the auxiliary command are received from the controller hub.

10. The apparatus according to claim 9, wherein, The sideband processor is also configured to: At the first moment, receive a first response to the specific command from the controller hub; and At a second time following the first time, a second response to the auxiliary command is received from the controller hub.

11. The apparatus according to claim 10, wherein, The sideband processor is also configured to: The auxiliary command includes an identifier value; and The identifier value is used to determine that the second response corresponds to the auxiliary command.

12. The apparatus of claim 9, further comprising a system memory, wherein, The auxiliary command causes a portion of the data to be stored in the system memory.

13. The apparatus according to claim 12, wherein, The sideband processor is also configured to: Modify the pending different commands in the first set of commands to include different auxiliary commands in the second set of commands, wherein the different auxiliary commands cause the specific peripheral device to copy a portion of the data from the system memory; and Using the specific command protocol, modified commands are sent to the controller hub via the communication bus.

14. The apparatus according to claim 12, wherein, Some of the data is stored in the system memory without utilizing the bandwidth of the main central processing unit (CPU).

15. A non-transitory computer-readable medium having instructions stored thereon, the instructions being executable by a sideband processor included in a computer system to perform operations, the operations including: The computer system is monitored using a first set of commands, wherein the first set of commands is sent via a communication bus using a specific command protocol; Receive data from a specific device in the computer system; The first command in the first set of commands is modified to include a second command in a second set of commands that is different from the first set of commands, wherein the second command causes at least a portion of the data to be sent to the specific device; The modified first command is sent to the controller central control via the interface circuit through the communication bus using the specific command protocol; and At different times, different responses to the first command and the second command are received from the controller hub.

16. The non-transitory computer-readable medium of claim 15, further comprising: The system receives a response to the first command from the controller center immediately. as well as At a second time following the first time, a response to the second command is received from the controller hub.

17. The non-transitory computer-readable medium according to claim 15, wherein, The first command is modified to include the second command, which includes sending the second command to the interface circuit during the transmission of the first command.

18. The non-transitory computer-readable medium of claim 15, further comprising generating the second command such that a portion of the data is stored in the system memory of the computer system.

19. The non-transitory computer-readable medium of claim 18, further comprising: Modify the third command in the first set of commands to include the fourth command in the second set of commands, wherein the fourth command causes the specific device to copy a portion of the data from the system memory; and Using the specific command protocol, a modified third command is sent to the controller hub via the communication bus.

Citation Information

Patent Citations

  • Method and apparatus for updating new versions of firmware in the background

    US20020092008A1

  • Firmware updates for multiple product configurations

    US20140344797A1