Computer system for bandwidth allocation, bandwidth allocation method, and product

By working in tandem with the monitoring module and the baseboard management controller, server bandwidth resources are adaptively allocated, solving the problems of PCIe resource waste and identification errors, reducing development costs and improving adaptability.

WO2026045679A1PCT designated stage Publication Date: 2026-03-05INSPUR SUZHOU INTELLIGENT TECH CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/107158
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-08-27
Filing Date
2025-07-04
Publication Date
2026-03-05

AI Technical Summary

Technical Problem

In existing technologies, the PCIe x8 and PCIe x16 slots on server motherboards provide the maximum bandwidth, which makes it impossible to effectively recognize expansion cards with a small number of lanes when inserted, resulting in wasted PCIe resources and loss of CPU function. Furthermore, existing automatic bandwidth allocation methods have poor adaptability and high costs.

Method used

The monitoring module identifies application changes in the expansion unit and generates a bandwidth allocation information table. The baseboard management controller generates an option configuration file. The basic input/output system configures the CPU's bandwidth resources during startup and uses the Redfish protocol for communication to achieve adaptive bandwidth allocation.

Benefits of technology

It reduces PCIe resource waste, lowers development costs, is highly adaptable, enables adaptive bandwidth resource allocation, and reduces redundant work in each model development.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025107158_05032026_PF_FP_ABST
    Figure CN2025107158_05032026_PF_FP_ABST
Patent Text Reader

Abstract

Embodiments of the present application relate to the technical field of computer systems, and provide a computer system for bandwidth allocation, a bandwidth allocation method, and a product. When a motherboard of the computer system is powered on, a monitoring module, upon identifying a change in applications of extension units plugged into the motherboard, generates, on the basis of bandwidth configuration information corresponding to the extension units, a bandwidth allocation information table corresponding to a central processing unit; after the motherboard of the computer system is powered on, a baseboard management controller generates an option configuration file on the basis of the bandwidth allocation information table; after a main unit of the computer system is triggered, a basic input / output system is used for configuring any connection port of the central processing unit on the basis of the option configuration file during a boot process, so as to allocate bandwidth resources of the central processing unit to the extension units. The embodiments of the present application aim to automatically allocate bandwidth resources in a computer system.
Need to check novelty before this filing date? Find Prior Art

Description

A computer system, method, and product for bandwidth allocation.

[0001] Cross-references to related applications

[0002] This application claims priority to Chinese Patent Application No. 202411183104.0, filed on August 27, 2024, entitled "A Computer System for Bandwidth Allocation, a Method for Bandwidth Allocation, and a Product", the entire contents of which are incorporated herein by reference. Technical Field

[0003] This application relates to the technical field of computer systems, and more specifically, to a computer system, bandwidth allocation method, and product for bandwidth allocation. Background Technology

[0004] With the development of technology, CPUs (Central Processing Units) can also support different versions of PCIe (Peripheral Component Interconnect Express) channels. The bandwidth of PCIe is closely related to the PCIe version and the number of data lanes. Different versions of PCIe have different bandwidths. For example, the online bit transfer rate of PCIe 4.0 has been increased to 16GT / s (GigaTransfers per Second), while the online bit transfer rate of PCIe 5.0 can reach up to 32GT / s.

[0005] In addition, PCIe bandwidth is also related to the number of its data path lanes. For example, a PCIe device that requires high bandwidth will use multiple lanes; if a PCIe device does not require high bandwidth, it can be allocated one lane. Among the physical slots that connect PCIe devices, the theoretical maximum bandwidth of a PCIe x8 slot (an 8-lane PCIe interface) is 8GB / s (Gigabytes per Second); the PCIe x16 slot has the highest theoretical maximum bandwidth of 16GB / s.

[0006] Server motherboards typically use PCIe x8 and PCIe x16 slots for easy insertion of different types of expansion cards. However, since the CPU currently provides the maximum bandwidth to the PCIe x8 and PCIe x16 slots, it cannot effectively recognize expansion cards with a small number of lanes. The CPU still allocates the maximum bandwidth, resulting in wasted PCIe resources and loss of CPU functionality. Summary of the Invention

[0007] This application provides a computer system, method, and product for bandwidth allocation, which aims to automatically allocate bandwidth resources.

[0008] In a first aspect, embodiments of this application provide a bandwidth allocation computer system applied to a computer system, the computer system including a central processing unit, a monitoring module, a baseboard management controller, and a basic input / output system;

[0009] When the motherboard of the computer system is powered on, the monitoring module is used to identify when there are changes in the application of each expansion unit plugged into the motherboard. Based on the bandwidth configuration information of each expansion unit, it generates a bandwidth allocation information table corresponding to the central processing unit. The expansion unit is used to allocate the bandwidth resources of any connection port of the central processing unit to the connected device slot.

[0010] When the motherboard of the computer system is powered on, the baseboard management controller is used to generate an option configuration file based on the bandwidth allocation information table. The option configuration file includes the expansion unit connected to any connection port of the central processing unit.

[0011] After the computer system is triggered by the host, the Basic Input / Output System (BIOS) is used during the startup process to configure any connection port of the central processing unit (CPU) according to the option configuration file, so as to allocate the CPU's bandwidth resources to the various expansion units.

[0012] In some embodiments of this application, the monitoring module is further configured to:

[0013] Identify the configuration information of each expansion unit currently plugged into the motherboard;

[0014] When the configuration information of each expansion unit currently plugged into the motherboard is inconsistent with the historical configuration information of each expansion unit that was plugged in last time, it is determined that the application of each expansion unit currently plugged into the motherboard has changed.

[0015] In some embodiments of this application, when identifying the configuration information of each currently plugged-in expansion unit on the motherboard, the monitoring module is used to:

[0016] In the configuration space of the expansion unit, the bandwidth configuration information and plug-in position information of any expansion unit are obtained as the configuration information of that expansion unit.

[0017] In some embodiments of this application, when identifying the configuration information of each currently plugged-in expansion unit on the motherboard, the monitoring module is used to:

[0018] The bandwidth configuration information and plug-in location information of any expansion unit can be obtained through the integrated circuit bus or system management bus as the configuration information of that expansion unit.

[0019] In some embodiments of this application, when identifying the configuration information of each currently plugged-in expansion unit on the motherboard, the monitoring module is used to:

[0020] For any expansion unit that includes a configuration signal line, the bandwidth configuration information and plug-in position information of the expansion unit are obtained through the configuration signal line connected to the expansion unit as the configuration information of the expansion unit.

[0021] In some embodiments of this application, after identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is further configured to:

[0022] The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. If any of the currently plugged-in expansion units is a newly added expansion unit, it is determined that the application of each currently plugged-in expansion unit on the motherboard has changed.

[0023] In some embodiments of this application, after identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is further configured to:

[0024] The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. When any of the previously plugged-in expansion units is removed, it is determined that the application of each currently plugged-in expansion unit on the motherboard has changed.

[0025] In some embodiments of this application, after identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is further configured to:

[0026] The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. If the plug-in position information of any currently plugged-in expansion unit is inconsistent with the plug-in position information at the time of the last plug-in, it is determined that the application of each currently plugged-in expansion unit on the motherboard has changed.

[0027] In some embodiments of this application, during the process of generating the option configuration file based on the bandwidth allocation information table, the baseboard management controller is used to:

[0028] When the computer system's motherboard is powered on, the bandwidth allocation information table is obtained from the monitoring module;

[0029] When the bandwidth allocation information table is inconsistent with the historical bandwidth allocation information table, the bandwidth configuration strategy corresponding to each connection port of the central processing unit is generated according to the bandwidth allocation information table.

[0030] Based on the bandwidth configuration policy corresponding to each connection port of the central processing unit, an option configuration file corresponding to each connection port of the central processing unit is generated. The option configuration file is a file of key-value data format transmitted based on the management standard protocol of Hypertext Transfer Security Service.

[0031] In some embodiments of this application, the basic input / output system is used to send a first request to the baseboard management controller based on the management standard protocol of Hypertext Transfer Security Service during the startup process of the basic input / output system;

[0032] When the first response returned by the baseboard management controller after responding to the first request indicates that there is an option change, the basic input / output system uses the management standard protocol based on the Hypertext Transfer Security Service to send a second request to the baseboard management controller.

[0033] The baseboard management controller is used to send the option configuration file to the basic input / output system in response to the second request;

[0034] The Basic Input / Output System (BIOS) is used during the self-test phase to configure any connection port of the CPU to be connected to an expansion unit according to the option configuration file.

[0035] In some embodiments of this application, the monitoring module includes complex programmable logic elements integrated into the baseboard management controller.

[0036] Secondly, embodiments of this application provide a bandwidth allocation method applied to a computer system for bandwidth allocation in some embodiments of this application. The computer system includes a central processing unit, a monitoring module, a baseboard management controller, and a basic input / output system. The method includes:

[0037] When the motherboard of the computer system is powered on, the monitoring module detects changes in the application of each expansion unit plugged into the motherboard. Based on the bandwidth configuration information of each expansion unit, it generates a bandwidth allocation information table corresponding to the central processing unit. The expansion unit is used to allocate the bandwidth resources of any connection port of the central processing unit to the connected device slot.

[0038] When the motherboard of the computer system is powered on, the baseboard management controller generates an option configuration file based on the bandwidth allocation information table. The option configuration file includes the expansion unit connected to any connection port of the central processing unit.

[0039] After the host computer of the computer system is triggered, the Basic Input / Output System (BIOS) configures any connection port of the central processing unit (CPU) according to the option configuration file during the startup process, so as to allocate the CPU's bandwidth resources to each expansion unit.

[0040] Thirdly, embodiments of this application provide a computer device, including: at least one processor and a memory, the memory storing a computer program executable on the processor, wherein the processor executes the computer program and performs a bandwidth allocation method according to some embodiments of this application.

[0041] Fourthly, embodiments of this application provide a non-volatile readable storage medium storing a computer program, wherein the computer program, when executed by a processor, performs a bandwidth allocation method according to some embodiments of this application.

[0042] Fifthly, embodiments of this application provide a computer program product, including a computer program / instructions, which, when executed by a processor, implement the bandwidth allocation method of some embodiments of this application. Beneficial effects:

[0043] When the motherboard of the computer system is powered on, the monitoring module is used to identify when there are changes in the applications of each expansion unit plugged into the motherboard. Based on the bandwidth configuration information of each expansion unit, it generates a bandwidth allocation information table for the central processing unit. The expansion unit is used to allocate the bandwidth resources of any connection port of the central processing unit to the connected device slot.

[0044] When the motherboard of the computer system is powered on, the baseboard management controller generates an option configuration file based on the bandwidth allocation information table. The option configuration file includes the expansion unit connected to any connection port of the central processing unit.

[0045] After the computer system is triggered by the host, the Basic Input / Output System (BIOS) is used during the startup process to configure any connection port of the central processing unit (CPU) according to the option configuration file, so as to allocate the CPU's bandwidth resources to the various expansion units.

[0046] The computer system provided in this embodiment can allocate and change the connection port of the central processing unit for each expansion unit when changes occur, thereby adaptively allocating bandwidth resources in the server. Compared with the maximum bandwidth provided by the CPU directly to the PCIe x8 slot and PCIe x16 slot, this can reduce the waste of PCIe resources. Attached Figure Description

[0047] To more clearly illustrate the technical solutions in the embodiments of this application or the prior art, the accompanying drawings used in the description of the embodiments or the prior art will be briefly introduced below.

[0048] Figure 1 shows a schematic diagram of the architecture of a computer system for bandwidth allocation provided in an embodiment of this application;

[0049] Figure 2 shows a flowchart of the bandwidth allocation method provided in an embodiment of this application;

[0050] Figure 3 shows a schematic diagram of the computer device provided in an embodiment of this application;

[0051] Figure 4 shows a schematic diagram of a non-volatile readable storage medium provided in an embodiment of this application;

[0052] Figure 5 shows a schematic diagram of the computer program product provided in an embodiment of this application. Detailed Implementation

[0053] The technical solutions in the embodiments of this application will now be described with reference to the accompanying drawings.

[0054] To make the objectives, technical solutions, and advantages of the embodiments of this application clearer, the various embodiments of this application will be described in detail below with reference to the accompanying drawings. However, those skilled in the art will understand that many technical details have been presented in the various embodiments of this application to enable readers to better understand this application. However, even without these technical details and various changes and modifications based on the following embodiments, the technical solutions claimed in this application can be implemented. The division of the various embodiments below is for the convenience of description and should not constitute any limitation on the specific implementation of this application. The various embodiments can be combined with and referenced by each other without contradiction.

[0055] CPU: Central Processing Unit;

[0056] BIOS: Basic Input Output System;

[0057] IPMI: Intelligent Platform Management Interface;

[0058] ACL: Access Control Lists;

[0059] PCIe: Peripheral Component Interconnect Express, a high-speed serial computer expansion bus standard;

[0060] PCI: Peripheral Component Interconnect, a standard for local buses;

[0061] Redfish: A standard management protocol based on HTTPS services;

[0062] BMC: Baseboard Management Controller;

[0063] CPLD: Complex Programmable Logic Device;

[0064] GPIO: General-purpose input / output;

[0065] SMBus: System Management Bus.

[0066] A BMC (Browser Control Center) is a hardware component specifically designed for monitoring and managing servers and other computer systems. It resides on the motherboard as an independent system, possessing its own processor and memory. It can operate independently of the host system and can be remotely accessed via a network interface. The main functions and features of a BMC include:

[0067] 1. Remote monitoring and management: BMC allows administrators to remotely monitor the health status of the server, including temperature, fan speed, power status, hard drive status, and chassis cover status, and can even manage it when the operating system is not working;

[0068] 2. Fault diagnosis and alarm: When a system abnormality is detected, such as overheating, abnormal voltage, or hardware failure, the BMC can generate an alarm and send it to the management system via the network, which helps to respond quickly and troubleshoot the problem.

[0069] 3. Hardware control: The BMC can control the server's power-on, power-off, and restart operations, as well as adjust hardware configurations such as fan speed, thereby optimizing system performance and energy efficiency;

[0070] 4. Event Log Recording: Records all important events during system operation, including hardware status changes, error messages, etc., providing historical data for system maintenance;

[0071] 5. Firmware Updates: BMC itself also supports firmware updates to fix vulnerabilities, add new features, or optimize performance. Updates can usually be performed remotely over the network.

[0072] 6. Adherence to industry standards: BMC follows standards such as the Intelligent Platform Management Interface (IPMI) to ensure interoperability between hardware and management software from different manufacturers;

[0073] 7. Security Features: Considering the remote access capabilities of BMC, modern BMC designs typically include security measures such as encrypted communication, access control lists (ACLs), and authentication mechanisms to protect the server from unauthorized access and attacks.

[0074] In summary, the baseboard management controller is an indispensable part of the infrastructure of modern data centers and enterprise information technology. It significantly improves the efficiency of server maintenance and the reliability of the system by providing powerful remote management capabilities.

[0075] PCIe has undergone a fundamental transformation in its bus architecture, primarily in two aspects: first, it has changed from a parallel bus to a serial bus; second, it adopts point-to-point interconnection. Specifically, the single bus connecting devices under the bridge in the original parallel bus architecture has been transformed into a link. A link can contain one or more paths, and each path consists of two pairs of differential signal lines forming a double simplex serial transmission channel. There are no dedicated data, address, control, and clock lines; various transactions on the bus are organized into information packets for transmission. PCIe uses a point-to-point interconnection method, with each device connected by an independent link and enjoying dedicated bandwidth, thereby improving the transmission rate.

[0076] PCIe (Peripheral Component Interconnect Express) is a high-speed serial computer expansion card standard, primarily used to connect the CPU to various expansion cards, such as graphics cards, sound cards, and network adapters. The PCIe bus architecture treats a single link as a bus, thus maintaining compatibility with the traditional PCI bus in terms of address space, configuration mechanisms, and software. One PCIe device occupies one bus (link), so PCIe-based computers have a large number of bridges and buses. Traditional PCI devices can also run on the PCIe platform. Through PCIe-to-PCI (or PCI-X (Peripheral Component Interconnect eXtended, a high-performance extension of the PCI bus)) bridges, PCI (or PCI-X) buses can be routed, allowing traditional PCI devices to integrate into the PCI Express architecture. Compared to the shared parallel architecture of PCI and earlier computer buses, each device on a PCIe-based system has its own dedicated connection, eliminating the need to request bandwidth from the entire bus and enabling data transfer rates at very high frequencies, achieving bandwidth levels that PCI cannot provide.

[0077] With the development of technology, CPUs can support different versions of PCIe lanes. The bandwidth of PCIe is closely related to its version and the number of lanes. The following is detailed information on different versions of PCIe and their bandwidth:

[0078] PCIe 1.0: 2.5GB / s over the wire, using 8 / 10 encoding, therefore the bandwidth of PCIe 1.0x1 is 250MB / s (Megabytes per Second); PCIe 2.0: The over-the-wire bit rate doubles to 5GB / s, using 8 / 10 encoding, therefore the bandwidth of PCIe 2.0x1 is 500MB / s; PCIe 3.0: The over-the-wire bit rate is 8GB / s, using 128 / 130 encoding, therefore the bandwidth of PCIe 3.0x1 is 1GB / s; PCIe 4.0: The over-the-wire bit rate is increased to 16GT / s; PCIe 5.0: The over-the-wire bit rate can reach up to 32GT / s.

[0079] Furthermore, PCIe bandwidth is also related to the number of its data path lanes. For example, devices requiring high bandwidth use multiple lanes (such as graphics cards); if not particularly high bandwidth is needed, only one lane is required. Among them, the theoretical maximum bandwidth of a PCIe x1 slot is 1GB / s, suitable for devices with low data transfer requirements; the theoretical maximum bandwidth of a PCIe x4 slot is 4GB / s, suitable for devices with medium bandwidth requirements; the theoretical maximum bandwidth of a PCIe x8 slot is 8GB / s, suitable for devices with higher data transfer speed requirements; and the PCIe x16 slot has the highest theoretical maximum bandwidth of 16GB / s, widely used to connect high-performance graphics cards.

[0080] Server motherboards typically use PCIe x8 and PCIe x16 slots for their PICe interfaces, facilitating the installation of different types of expansion cards. Even if the expansion card has x2 or x4 gold fingers, it can still be plugged into a PCIe x8 or PCIe x16 slot.

[0081] However, since the CPU currently provides the maximum bandwidth directly to PCIe x8 and PCIe x16 slots, it cannot effectively recognize expansion cards with a small number of lanes. Since the CPU also allocates the maximum bandwidth, this results in wasted PCIe resources and loss of CPU functionality. For example, if two PCIe x8 devices are plugged into two PCIe x16 slots, it is impossible to support two x8 devices in one x16 slot.

[0082] While current methods exist for automatic PCIe bandwidth allocation, they employ dynamic bandwidth configuration based on GPIO expansion chips (such as the PCA9555 GPIO expansion chip) or physical detection methods using resistors on the circuit board to control current or voltage detection to determine the required bandwidth. However, these methods require adding a bandwidth allocation table to the detection program. After the expansion chip detection or physical resistor detection obtains change data, it needs to match the values ​​with the pre-set bandwidth allocation table and the corresponding Lane number. Then, the CPU analyzes the corresponding bandwidth and allocates it. Therefore, it is necessary to collect data from different expansion cards to simulate and build the table in the early stages, which is not only labor-intensive but also results in recognition errors when an expansion card without data stored in the bandwidth allocation table is inserted. Furthermore, hardware detection requires customizing different bandwidth allocation module standards for different types of servers, resulting in poor adaptability and extensive later development work, leading to high costs for the automatic PCIe bandwidth allocation process.

[0083] Therefore, in order to adaptively allocate bandwidth resources in the server while reducing the cost of the PCIe automatic bandwidth allocation process, embodiments of this application provide a computer system for bandwidth allocation.

[0084] Referring to Figure 1, a schematic diagram of the architecture of a computer system for bandwidth allocation provided in an embodiment of this application is shown. The computer system includes a central processing unit, a monitoring module, a baseboard management controller, and a basic input / output system. The computer system can be a server or other system. Multiple expansion units can be plugged into the computer system to allocate or expand the PCIe bandwidth of the central processing unit. For example, the PCIe x16 can be divided into two PCIe x8 channels through the expansion units.

[0085] The BMC in a computer system consists of two parts: the BMC chip and the BMC firmware. It independently monitors and manages the computer system, including monitoring its operation, recording events and performing fault analysis, as well as deploying and configuring the system. It also provides a range of other remote management functions.

[0086] When the motherboard of the computer system is powered on, the monitoring module is used to identify when there are changes in the application of each expansion unit plugged into the motherboard. Based on the bandwidth configuration information of each expansion unit, it generates a bandwidth allocation information table corresponding to the central processing unit. The expansion unit is used to allocate the bandwidth resources of any connection port of the central processing unit to the connected device slot.

[0087] When the motherboard of the computer system is powered on, the baseboard management controller is used to generate an option configuration file based on the bandwidth allocation information table. The option configuration file includes the expansion unit connected to any connection port of the central processing unit.

[0088] After the computer system is triggered by the host, the Basic Input / Output System (BIOS) is used during the startup process to configure any connection port of the central processing unit (CPU) according to the option configuration file, so as to allocate the CPU's bandwidth resources to the various expansion units.

[0089] Referring to Figure 2, a flowchart of a bandwidth allocation method provided in an embodiment of this application is shown. The method is applied to the computer system of this embodiment and may include the following steps:

[0090] S101: When the motherboard of the computer system is powered on, the monitoring module detects changes in the applications of each expansion unit plugged into the motherboard. Based on the bandwidth configuration information of each expansion unit, it generates a bandwidth allocation information table corresponding to the central processing unit. The expansion unit is used to allocate the bandwidth resources of any connection port of the central processing unit to the connected device slot.

[0091] Specifically, the expansion unit is used to expand any bandwidth provided by the CPU. For example, expansion unit A can connect to the CPU's PCIe x16 connection port and then divide the PCIe x16 into two PCIe x8 lanes, thereby connecting two PCIe x8 devices. Expansion unit B can connect to the CPU's PCIe x16 connection port and divide the PCIe x16 into four PCIe x4 lanes, thereby connecting four PCIe x4 devices.

[0092] Therefore, when allocating bandwidth resources to each expansion unit, the first step is to check whether the applications of each expansion unit plugged into the motherboard have changed.

[0093] In one feasible implementation, when the motherboard of the computer system is powered on, the monitoring module of the computer system identifies the configuration information of each expansion unit currently plugged into the motherboard, and then compares the configuration information of each expansion unit currently plugged into the motherboard with the historical configuration information of each expansion unit plugged into the motherboard of the computer system during the last power-on.

[0094] When the configuration information of each expansion unit currently plugged into the motherboard is inconsistent with the historical configuration information of each expansion unit that was plugged in last time, it is determined that the application of each expansion unit currently plugged into the motherboard has changed.

[0095] In actual implementation, the monitoring module can be a complex programmable logic element (CPLD) integrated in the baseboard management controller. A CPLD is a programmable device that can typically be programmed to perform complex logic functions according to requirements. In this embodiment, the CPLD is programmed through software so that it first obtains the configuration information of the expansion units plugged into the motherboard when the computer system's motherboard is powered on. In other embodiments, a separate module with software programs can also be set as the monitoring module.

[0096] In one feasible implementation, when identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module of the computer system obtains the bandwidth configuration information and plug-in position information of any expansion unit in the configuration space of the expansion unit as the configuration information of that expansion unit.

[0097] Specifically, expansion units, such as expansion cards, are PCI devices. The configuration space, i.e., the PCI configuration space, stores the bandwidth configuration information and insertion location information of the expansion units. Monitoring modules, such as CPLDs, can read the bandwidth configuration information and insertion location information of any expansion unit in the PCI configuration space.

[0098] For example, the pseudocode for the CPLD to identify any Riser card (expansion unit) in the PCI configuration space and read the configuration information of that Riser card is as follows:

[0099] In the example above, PCI_VENDOR_ID_VENDER represents the vendor ID (identification) of the Riser card manufacturer; PCI_DEVICE_ID_RISER represents the product ID of the Riser card manufacturer; the function pci_get_device is used to find a matching Riser card on the PCI bus. After finding the corresponding Riser card, identification logic is added, and the CPLD can actively identify changes to the Riser card; the above pseudocode uses a Moore state machine (Moore's finite state machine) to identify the rising edge of the line_detected signal (indicating the detection of a specific sequence or boundary signal). When the detected line signal represents a Riser card connection, the state machine enters the DETECTING state and remains in the DETECTED state after detecting the Riser card; the riser_present (extension card presence signal) output will reflect the presence of the Riser card accordingly.

[0100] In one feasible implementation, when identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module of the computer system obtains the bandwidth configuration information and plug-in position information of any expansion unit through the integrated circuit bus or system management bus as the configuration information of that expansion unit.

[0101] For example, some expansion cards include an I2C (Inter-Integrated Circuit) interface and an SMBus (System Management Bus) interface. Monitoring modules such as CPLDs can obtain the bandwidth configuration information and insertion location information of the expansion card through the integrated circuit bus or the system management bus.

[0102] In one feasible implementation, when identifying the configuration information of each expansion unit currently plugged into the motherboard, for any expansion unit containing a configuration signal line, the monitoring module of the computer system obtains the bandwidth configuration information and plug-in position information of the expansion unit through the connected configuration signal line as the configuration information of the expansion unit.

[0103] For example, some expansion cards also provide dedicated configuration signal lines for identification. Monitoring modules such as CPLDs can read the bandwidth configuration information and plug-in location information on the expansion card through the configuration signal lines.

[0104] After the computer system's monitoring module identifies the configuration information of each expansion unit currently plugged into the motherboard, it compares the configuration information of each expansion unit currently plugged into with the configuration information of each expansion unit plugged into previously. If any of the currently plugged expansion units is a newly added expansion unit, it determines that the application of each expansion unit currently plugged into the motherboard has changed.

[0105] For example, if a new expansion unit is detected during this boot, which is used to divide a PCIe x16 into two PCIe x8 lanes, then one CPU's PCIe x16 bandwidth resource needs to be allocated to this expansion unit.

[0106] The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. When any of the previously plugged-in expansion units is removed, it is determined that the application of each currently plugged-in expansion unit on the motherboard has changed.

[0107] For example, if during this power-on, it is detected that one less expansion unit has been detected compared to the last power-on, then the reduced expansion bandwidth resources need to be released, and the released bandwidth resources can be reallocated.

[0108] The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. If the plug-in position information of any currently plugged-in expansion unit is inconsistent with the plug-in position information at the time of the last plug-in, it is determined that the application of each currently plugged-in expansion unit on the motherboard has changed.

[0109] For example, if the insertion position of expansion unit A, which divides PCIe x16 into two PCIe x8 lanes, is swapped with the insertion position of expansion unit C, which divides PCIe x8 into two PCIe x4 lanes, then the expansion units connected to the CPU's connection ports need to be adjusted to avoid providing PCIe x8 bandwidth resources to expansion unit A while providing PCIe x16 bandwidth to expansion unit C, thus causing a mismatch between bandwidth resources and the bandwidth requirements of the expansion units.

[0110] When a monitoring module such as CPLD detects changes in the applications of various expansion units connected to the motherboard, it generates a bandwidth allocation information table for the central processing unit based on the bandwidth configuration information corresponding to each expansion unit. The bandwidth allocation information table includes the allocation of PCIe bandwidth resources provided by the CPU.

[0111] S102: When the motherboard of the computer system is powered on, the baseboard management controller generates an option configuration file based on the bandwidth allocation information table. The option configuration file includes the expansion unit connected to any connection port of the central processing unit.

[0112] Specifically, when the motherboard of the computer system is powered on, the BMC obtains the bandwidth allocation information table from monitoring modules such as CPLD.

[0113] In this embodiment, the CPLD is integrated into the BMC, which reduces the number of circuit boards and saves space and cost. In this integration method, the functions performed by the CPLD are completely replaced by the BMC. The BMC implements the functions of the CPLD through software control. The communication interface between the BMC and the CPLD is the I2C interface. That is, the BMC communicates with the CPLD through the I2C bus to realize the control and monitoring of the CPLD. In actual implementation, an I2C controller needs to be added to the BMC to facilitate the control and monitoring of the CPLD.

[0114] Then the BMC determines whether the current bandwidth allocation information table is consistent with the historical bandwidth allocation information table. If they are consistent, there is no need to generate a new option configuration file to change the BIOS options.

[0115] If the current bandwidth allocation information table is inconsistent with the historical bandwidth allocation information table, then it is necessary to generate the bandwidth configuration strategy corresponding to each connection port of the central processing unit, namely the PE port (Processing Element Port), according to the bandwidth allocation information table. For example, provide PCIe x16 bandwidth to the PE port with port number 1 of the CPU and allocate it to expansion unit A with a bandwidth requirement of PCIe x16; provide PCIe x16 bandwidth to the PE port with port number 2 and allocate it to expansion unit B with a bandwidth requirement of PCIe x16; provide PCIe x8 bandwidth to the PE port with port number 3 and allocate it to expansion unit A with a bandwidth requirement of PCIe x8.

[0116] Then, the BMC generates option configuration files for each connection port of the central processing unit according to the bandwidth configuration policy corresponding to each connection port of the central processing unit. The option configuration files are files in key-value pair data format transmitted based on the management standard protocol of Hypertext Transfer Security Service.

[0117] In subsequent BIOS implementations, the bandwidth configuration options are modified by synchronizing the option configuration file from the BMC. This includes, but is not limited to, other BIOS-BMC interaction methods such as H2B communication (Host-to-Bus Communication) and IPMI communication. However, in this embodiment, the BMC and BIOS communicate through the Redfish protocol, a management standard protocol based on Hypertext Transfer Security Service.

[0118] Redfish is a management standard protocol based on HTTPS (Hypertext Transfer Protocol Secure) services. It utilizes RESTful interfaces (interfaces designed based on the REST (Representational State Transfer) architectural style) to implement device management. Each HTTPS operation submits or returns a resource or result in JSON (JavaScript Object Notation) format encoded in UTF-8 (Unicode Transformation Format-8-bit). Communication between the BMC and BIOS is implemented based on the Redfish protocol. It has the advantages of reducing development complexity, being easy to implement and use, and being scalable, reserving flexibility for subsequent design.

[0119] The options configuration file generated by BMC is a JSON file. JSON is a key-value pair data format.

[0120] In actual implementation, the Redfish Hi Driver module (Redfish hardware interface driver module), Redfish Collection Driver module (Redfish resource collection driver module), Redfish JSON schema to C Structure converter module (Redfish JSON schema to C structure converter module), and Redfish DXE Driver module (Redfish UEFIDXE stage driver module) can be integrated on the BIOS side, while the Redfish host is set on the BMC side.

[0121] The Redfish Hi Driver module is used to send network requests to the BMC, receive data sent by the BMC, and push asset information data to the BIOS, similar to sending an HTTP request using a browser. The Redfish Collection Driver module is used to collect BIOS asset information, and the method of collecting asset information varies depending on the manufacturer. The Redfish JSON schema to C Structure converter module is used to convert the received BIOS asset information into JSON structure data.

[0122] The Redfish host on the BMC side is essentially a service program under a Linux system (an operating system) that manages a database (Redis (Remote Dictionary Server, a key-value store system) that stores asset information from BTOS (Blockchain Technology Operating System)). When the computer system boots up, the BIOS (Client) collects the asset information (after the Redfish DXE Driver requests data from the BMC), organizes it into JSON format, and then sends it to the BMC via network transmission using Post / Patch (add / repair) methods.

[0123] S103: After the host of the computer system is triggered, the basic input / output system configures any connection port of the central processing unit according to the option configuration file during the startup process, so as to allocate the bandwidth resources of the central processing unit to each expansion unit.

[0124] Specifically, after the computer system's host is triggered, during the startup process of the Basic Input / Output System (BIOS), the Redfish DXE Driver module on the BIOS side sends a first request to the BMC. When the first response returned by the Baseboard Management Controller (BMC) indicates a change in options, such as a Post / Patch request from the BMC, it indicates a modification of the BIOS options. Then, the BIOS sends a second request to the BMC. After responding to the second request, the BMC sends the option configuration file to the BIOS. During the BIOS's self-test (POST) phase, the expansion unit connected to any connection port of the CPU is configured according to the option configuration file. That is, the JSON file obtained from the BMC is applied to each PE port of the CPU, thereby completing the adaptive allocation of PCIe resources on the computer system's motherboard.

[0125] For example, a sample JSON file is shown below:

[0126] The bandwidth allocation method provided in this embodiment has at least the following beneficial effects:

[0127] 1. It can automatically detect expansion units and adaptively allocate bandwidth resources in the computer system at startup. Compared to the maximum bandwidth provided by the CPU directly to the PCIe x8 and PCIe x16 slots, it can reduce the waste of PCIe resources.

[0128] 2. This avoids the redundant and complex work of redeveloping the BIOS for each new computer system model to adapt to the PE port resource allocation of each model. The bandwidth allocation method provided in this embodiment only requires the development of a standard BMC module for setting BIOS bandwidth options once. The bandwidth adaptation work for each model only requires the development of the CPLD program logic to generate the bandwidth allocation information table required by the model.

[0129] 3. Compared to the traditional method where the BIOS actively retrieves bandwidth allocation information from GPIO, CPLD, or BMC, this method standardizes the design of the bandwidth allocation-related code modules of the BIOS and BMC, enabling the bandwidth allocation program module to be reused in each model.

[0130] 4. The bandwidth allocation method adopts a standardized design and is applicable to any computer system model.

[0131] Referring to FIG3, a schematic diagram of a computer device provided in an embodiment of the present application is shown. The computer device includes: at least one processor 301 and a memory 302. The memory 302 stores a computer program that can run on the processor 301, wherein the processor 301 executes the bandwidth allocation method of the embodiment when executing the computer program.

[0132] Referring to FIG4, a schematic diagram of a non-volatile readable storage medium provided in an embodiment of the present application is shown. The non-volatile readable storage medium 400 stores a computer program 401, wherein the computer program executes the bandwidth allocation method of the embodiment when executed by a processor.

[0133] Referring to FIG5, a schematic diagram of a computer program product provided in an embodiment of this application is shown. The computer program product 500 includes a computer program / instruction 501, which implements the bandwidth allocation method of the embodiment when executed by a processor.

[0134] The various embodiments in this specification are described in a progressive manner, with each embodiment focusing on the differences from other embodiments. The same or similar parts between the various embodiments can be referred to each other.

[0135] Those skilled in the art will understand that embodiments of this application can be provided as methods, apparatus, or computer program products. Therefore, embodiments of this application can take the form of entirely hardware embodiments, entirely software embodiments, or embodiments combining software and hardware aspects. Furthermore, embodiments of this application can take the form of computer program products implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM (Compact Disc Read-Only Memory), optical storage, etc.) containing computer-usable program code.

[0136] This application describes embodiments with reference to flowchart illustrations and / or block diagrams of methods, terminal devices (systems), and computer program products according to embodiments of this application. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, embedded processor, or other programmable data processing terminal device to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing terminal device, create means for implementing the functions specified in one or more blocks of the flowchart illustrations and / or one or more blocks of the block diagrams.

[0137] These computer program instructions may also be stored in a computer-readable storage medium that can direct a computer or other programmable data processing terminal device to function in a particular manner, such that the instructions stored in the computer-readable storage medium produce an article of manufacture including instruction means that implement the functions specified in one or more flowcharts and / or one or more block diagrams.

[0138] These computer program instructions may also be loaded onto a computer or other programmable data processing terminal equipment to cause a series of operational steps to be performed on the computer or other programmable terminal equipment to produce a computer-implemented process, such that the instructions, which execute on the computer or other programmable terminal equipment, provide steps for implementing the functions specified in one or more flowcharts and / or one or more block diagrams.

[0139] Although preferred embodiments of the present application have been described, those skilled in the art, upon learning the basic inventive concept, can make other changes and modifications to these embodiments. Therefore, the appended claims are intended to be interpreted as including the preferred embodiments as well as all changes and modifications falling within the scope of the embodiments of the present application.

[0140] Finally, it should be noted that in this document, relational terms such as "first" and "second" are used only to distinguish one entity or operation from another, and do not necessarily require or imply any such actual relationship or order between these entities or operations. Furthermore, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or terminal device that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or terminal device. Without further limitations, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or terminal device that includes the element.

[0141] This document uses specific examples to illustrate the principles and implementation methods of this application. The descriptions of the above embodiments are only for the purpose of helping to understand the methods and core ideas of this application. At the same time, for those skilled in the art, there will be changes in the specific implementation methods and application scope based on the ideas of this application. Therefore, the content of this specification should not be construed as a limitation of this application.

Claims

1. A computer system for bandwidth allocation, characterized in that, It is applied to a computer system, which includes a central processing unit, a monitoring module, a baseboard management controller, and a basic input / output system; When the motherboard of the computer system is powered on, the monitoring module is configured to detect when the application of each expansion unit plugged into the motherboard changes, and generate a bandwidth allocation information table corresponding to the central processing unit according to the bandwidth configuration information corresponding to each expansion unit. The expansion unit is configured to allocate the bandwidth resources of any connection port of the central processing unit to the connected device slot. When the motherboard of the computer system is powered on, the baseboard management controller is configured to generate an option configuration file according to the bandwidth allocation information table, the option configuration file including an expansion unit connected to any connection port of the central processing unit; After the host of the computer system is triggered, the basic input / output system is configured to configure any connection port of the central processing unit according to the option configuration file during the startup process, so as to allocate the bandwidth resources of the central processing unit to each expansion unit.

2. The computer system according to claim 1, characterized in that, The monitoring module is also configured to: Identify the configuration information of each expansion unit currently plugged into the motherboard; When the configuration information of each expansion unit currently plugged into the motherboard is inconsistent with the historical configuration information of each expansion unit plugged into the motherboard last time, it is determined that the application of each expansion unit currently plugged into the motherboard has changed.

3. The computer system according to claim 2, characterized in that, When identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is configured as follows: In the configuration space of the expansion unit, the bandwidth configuration information and plug-in position information of any expansion unit are obtained as the configuration information of that expansion unit.

4. The computer system according to claim 3, characterized in that, When identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is configured as follows: The bandwidth configuration information and plug-in location information of any expansion unit can be obtained through the integrated circuit bus or system management bus as the configuration information of that expansion unit.

5. The computer system according to claim 4, characterized in that, When identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is configured as follows: For any expansion unit that includes a configuration signal line, the bandwidth configuration information and plug-in position information of the expansion unit are obtained through the configuration signal line connected to the expansion unit as the configuration information of the expansion unit.

6. The computer system according to any one of claims 3-5, characterized in that, After identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is further configured to: The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. If any of the currently plugged-in expansion units is a newly added expansion unit, it is determined that the application of each currently plugged-in expansion unit on the motherboard has changed.

7. The computer system according to claim 6, characterized in that, After identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is further configured to: The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. When any previously plugged-in expansion unit is removed, it is determined that the application of each currently plugged-in expansion unit in the motherboard has changed.

8. The computer system according to claim 7, characterized in that, After identifying the configuration information of each expansion unit currently plugged into the motherboard, the monitoring module is further configured to: The configuration information of each currently plugged-in expansion unit is compared with the configuration information of each previously plugged-in expansion unit. If the plugging position information of any currently plugged-in expansion unit is inconsistent with the plugging position information at the time of the last plugging, it is determined that the application of each currently plugged-in expansion unit in the motherboard has changed.

9. The computer system according to claim 1, characterized in that, During the process of generating the option configuration file based on the bandwidth allocation information table, the baseboard management controller is configured as follows: When the motherboard of the computer system is powered on, the bandwidth allocation information table is obtained from the monitoring module; When the bandwidth allocation information table is inconsistent with the historical bandwidth allocation information table, a bandwidth configuration strategy corresponding to each connection port of the central processing unit is generated according to the bandwidth allocation information table. Based on the bandwidth configuration policy corresponding to each connection port of the central processing unit, an option configuration file corresponding to each connection port of the central processing unit is generated. The option configuration file is a key-value data format file transmitted based on the management standard protocol of Hypertext Transfer Security Service.

10. The computer system according to claim 9, characterized in that, The basic input / output system is configured to send a first request to the baseboard management controller based on the management standard protocol of Hypertext Transfer Security Service during the startup process of the basic input / output system. When the first response returned by the baseboard management controller after responding to the first request indicates that there is an option change, the basic input / output system is configured to send a second request to the baseboard management controller based on the management standard protocol of Hypertext Transfer Security Service. The baseboard management controller is configured to send the option configuration file to the basic input / output system in response to the second request; The basic input / output system is configured, during the self-test phase, to configure any connection port of the central processing unit to be connected to an expansion unit according to the option configuration file.

11. The computer system according to claim 1, characterized in that, The monitoring module includes complex programmable logic elements integrated into the baseboard management controller.

12. A bandwidth allocation method, characterized in that, A computer system for bandwidth allocation according to any one of claims 1-11, the computer system comprising a central processing unit, a monitoring module, a baseboard management controller, and a basic input / output system, the method comprising: When the motherboard of the computer system is powered on, the monitoring module detects that the application of each expansion unit plugged into the motherboard has changed. Based on the bandwidth configuration information corresponding to each expansion unit, it generates a bandwidth allocation information table corresponding to the central processing unit. The expansion unit is configured to allocate the bandwidth resources of any connection port of the central processing unit to the connected device slot. When the motherboard of the computer system is powered on, the baseboard management controller generates an option configuration file according to the bandwidth allocation information table. The option configuration file includes an expansion unit connected to any connection port of the central processing unit. After the host of the computer system is triggered, the basic input / output system configures any connection port of the central processing unit according to the option configuration file during the startup process, so as to allocate the bandwidth resources of the central processing unit to each expansion unit.

13. The method according to claim 12, characterized in that, When the motherboard of the computer system is powered on, the monitoring module detects changes in the applications of the various expansion units plugged into the motherboard, including: When the motherboard of the computer system is powered on, the monitoring module identifies the configuration information of each expansion unit currently plugged into the motherboard; The configuration information of each currently plugged-in expansion unit is compared with the historical configuration information of each expansion unit plugged into the motherboard of the computer system during the last power-on. When the configuration information of each currently plugged-in expansion unit is inconsistent with the historical configuration information of each expansion unit plugged into the motherboard of the computer system during the last power-on, it is determined that the application of each currently plugged-in expansion unit in the motherboard has changed.

14. The method according to claim 13, characterized in that, The step of identifying the configuration information of each expansion unit currently plugged into the motherboard includes: The monitoring module obtains the bandwidth configuration information and plug-in position information of any of the expansion units from the configuration space of the expansion units as the configuration information of the expansion units.

15. The method according to claim 13, characterized in that, The step of identifying the configuration information of each expansion unit currently plugged into the motherboard includes: The monitoring module obtains the bandwidth configuration information and plug-in position information of any of the expansion units via an integrated circuit bus or a system management bus, and uses this information as the configuration information of the expansion unit.

16. The method according to claim 13, characterized in that, The step of identifying the configuration information of each expansion unit currently plugged into the motherboard includes: For any expansion unit containing a configuration signal line, the monitoring module obtains the bandwidth configuration information and plug-in position information of the expansion unit as the configuration information of the expansion unit through the connected configuration signal line.

17. The method according to claim 12, characterized in that, The baseboard management controller generates an option configuration file based on the bandwidth allocation information table, including: The baseboard management controller determines whether the current bandwidth allocation information table is consistent with the historical bandwidth allocation information table. If the current bandwidth allocation information table is consistent with the historical bandwidth allocation information table, then there is no need to generate a new option configuration file; If the current bandwidth allocation information table is inconsistent with the historical bandwidth allocation information table, then the bandwidth configuration strategy corresponding to each connection port of the central processing unit is generated according to the bandwidth allocation information table. The baseboard management controller generates the option configuration file corresponding to each connection port of the central processing unit according to the bandwidth configuration strategy corresponding to each connection port of the central processing unit.

18. A computer device, characterized in that, include: At least one processor, and a memory storing a computer program executable on the processor, wherein the processor executes the computer program to perform the bandwidth allocation method according to any one of claims 12-17.

19. A non-volatile readable storage medium, characterized in that, The non-volatile readable storage medium stores a computer program, wherein the computer program, when executed by a processor, performs the bandwidth allocation method according to any one of claims 12-17.

20. A computer program product comprising a computer program / instructions, characterized in that, When the computer program / instruction is executed by the processor, it implements the bandwidth allocation method described in any of claims 12-17.

Citation Information

Patent Citations

  • PCIe bandwidth allocation method and basic input / output system

    CN114048036A

  • PCIe resource allocation method and device, electronic equipment and storage medium

    CN118034917A

  • Bus bandwidth allocation method and device, baseboard management controller and medium

    CN118093485A

  • Bandwidth allocation computer system, bandwidth allocation method and product

    CN118714015A

  • BMC-based memory resource processing device, method and apparatus, and nonvolatile readable storage medium

    WO2024139167A1