Error position determination method and device, storage medium and electronic equipment

By receiving an error report in the CXL device system, determine the source of error and obtain the bus information, solve the problem of error location identification caused by the inconsistency of the CXL device error report, and realize the position of accurate identification and processing CXL device error.

CN119356925APending Publication Date: 2025-01-24INSPUR SUZHOU INTELLIGENT TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411487599.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-10-23
Publication Date
2025-01-24

AI Technical Summary

Technical Problem

The error reporting mechanism of CXL devices is not unified, resulting in the inability to accurately identify the error location.

Method used

By receiving error reports from the target system, the error sources corresponding to the error reports are determined, including target components in the target system, memory registers in the target components and other error sources. When it is determined that the source of the error is not from other sources, the bus information of the target component is determined, and the target memory slot information of the target component is determined based on the bus information and the error source, and finally the error location corresponding to the error report is determined based on the memory slot information.

Benefits of technology

It achieves accurate identification of CXL device error locations, solves the error location identification problem caused by inconsistent CXL device error reporting mechanisms, and improves the system's error reporting accuracy and maintenance efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119356925A_ABST
    Figure CN119356925A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides an error position determining method and device, a storage medium and electronic device.The error position determining method comprises the steps that under the condition that an error report corresponding to a target system is received, an error source corresponding to the error report is determined, the error source comprises a target component in the target system, a memory register in the target component and other error sources; when it is determined that the error source is not the other error source, bus information corresponding to a target component is determined, and target memory slot position information corresponding to the target component is determined according to the bus information and the error source; and determining an error position corresponding to the error report according to the target memory slot position information.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of the present application relate to the field of computers, and in particular, to a method and device for determining an error position, a storage medium, and an electronic device. Background Art

[0002] Compute Express Link (CXL) errors usually include the following categories: One type of CXL error is: CXL's Longitudinal Redundancy Check Error (LCRC Error) refers to a longitudinal redundancy check error that occurs during CXL communication. LCRC is an error detection mechanism used to detect errors that may occur during data transmission. In a CXL environment, an LCRC error usually indicates that a data packet is damaged or lost during transmission, which may be caused by problems in the physical layer, electrical layer, or protocol layer. Another type of CXL error is CXL's Poisoned Transaction Layer Packet Error (Poisoned TLP Error), which refers to a specific type of error that occurs during CXL communication. When a TLP is marked as "poisoned", it means that the data packet has been damaged or is no longer valid, and usually needs to be discarded or specially processed. In addition, CXL errors also include Compute Express Link Memory Error (CXL MEM Error), which refers to memory-related errors during CXL communication. CXL MEM Error may occur during memory access, read / write operations, or other memory-related activities. This type of error is usually related to the memory device itself, the memory controller, or the memory access path. However, due to differences in the CXL protocol, this type of CXL error cannot reflect the specific location information of the memory device like other PCIe devices. CXL MEM Error only indicates that a problem has occurred in the corresponding channel.

[0003] Therefore, the problem that the error location cannot be accurately identified due to the inconsistent error reporting mechanism of CXL devices in the related art has not yet been effectively solved. Summary of the invention

[0004] The embodiments of the present application provide a method and device for determining an error position, a storage medium, and an electronic device, so as to at least solve the problem in the related art that the error reporting mechanism of the CXL device is not unified, resulting in the inability to accurately identify the error position.

[0005] According to an embodiment of the present application, a method for determining an error location is provided, specifically comprising: upon receiving an error report corresponding to a target system, determining an error source corresponding to the error report, wherein the error source includes: a target component in the target system, a memory register in the target component and other error sources; upon determining that the error source is not the other error source, determining bus information corresponding to the target component, and determining target memory slot information corresponding to the target component based on the bus information and the error source; and determining the error location corresponding to the error report based on the target memory slot information.

[0006] In an exemplary embodiment, the target memory slot information corresponding to the target component is determined based on the bus information and the error source, including: when it is determined that the error source is the target component, obtaining a first bus number corresponding to the target component based on the bus information; determining first memory slot information matching the first bus number in a first preset table, and determining the first memory slot information as the target memory slot information, wherein the first preset table is used to store the correspondence between the bus number of the target component and the memory slot information of the target component.

[0007] In an exemplary embodiment, the target memory slot information corresponding to the target component is determined according to the bus information and the error source, including: when it is determined that the error source is a memory register in the target component, determining the first memory slot of the first memory code corresponding to the target component, and determining the bus number range of the second bus number corresponding to the target component according to the bus information; when it is determined that the second bus number is a high-order bus number according to the bus number range, converting the first memory slot of the first memory code to the second memory slot of the second memory code according to a conversion rule; determining the second memory slot information matching the second memory slot and the second bus number in a second preset table, and determining the second memory slot information as the target memory slot information, wherein the second preset table is used to store the bus number of the target component and the correspondence between the memory slot of the target component and the memory slot information of the target component; when it is determined that the second bus number is a low-order bus number according to the bus number range, determining the third memory slot information matching the first memory slot and the second bus number in the second preset table, and determining the third memory slot information as the target memory slot information.

[0008] In an exemplary embodiment, determining the error source corresponding to the error report includes: determining a first component identifier corresponding to the target component based on the error report; determining whether there is a second component identifier consistent with the first component identifier in a preset component identifier table; if it is determined that the second component identifier does not exist in the preset component identifier table, determining that the error source is the other error source; if it is determined that the second component identifier exists in the preset component identifier table, obtaining register information corresponding to the target component, and determining whether the memory register reports an error based on the register information; if it is determined that the memory register reports an error, determining that the error source is the memory register; if it is determined that the memory register does not report an error, determining that the error source is the target component.

[0009] In an exemplary embodiment, after determining the error source corresponding to the error report, the method further includes: when determining that the error source is the other error source, detecting the target component according to a preset error detection mechanism to obtain a detection result; and determining the error position corresponding to the error report according to the detection result.

[0010] In an exemplary embodiment, after determining the error location corresponding to the error report according to the target memory slot information, the method further includes: reporting the error location to a target controller so that the target controller processes the error at the error location; and clearing the error report.

[0011] In an exemplary embodiment, before determining the bus information corresponding to the target component and the error source corresponding to the target component according to the error report, the method also includes: determining the memory slot to which each memory register in the target component is respectively mounted; and numbering the multiple memory slots to which each memory register is mounted so that the memory codes of each memory slot to which each memory register is respectively mounted are different from each other.

[0012] According to another embodiment of the present application, a device for determining an error position is provided, comprising: a first determination module, for determining, upon receiving an error report corresponding to a target system, an error source corresponding to the error report, wherein the error source comprises: a target component in the target system, a memory register in the target component and other error sources; a second determination module, for determining, upon determining that the error source is not the other error source, bus information corresponding to the target component, and determining target memory slot information corresponding to the target component based on the bus information and the error source; and a third determination module, for determining, based on the target memory slot information, the error position corresponding to the error report.

[0013] According to another embodiment of the present application, a computer-readable storage medium is provided, in which a computer program is stored, wherein the computer program is configured to execute the steps in the above method embodiment when running.

[0014] According to another embodiment of the present application, an electronic device is provided, including a memory and a processor, wherein the memory stores a computer program, and the processor is configured to run the computer program to execute the steps in the above method embodiment.

[0015] According to another embodiment of the present application, a computer program product is provided, including a computer program, and when the computer program is executed by a processor, the steps in the above method embodiment are implemented.

[0016] Through the method for determining the error position of the present application, when receiving the error report corresponding to the target system, the error source corresponding to the error report is determined, and the error source includes: the target component in the target system, the target register in the target component and other sources; when it is determined that the error source is not other sources, the bus information corresponding to the target component is determined, and the target memory slot information corresponding to the target component is determined according to the bus information and the error source; the error position corresponding to the error report is determined according to the target memory slot information. In other words, the embodiment of the present application parses the error source from the error report. If the source is the target component or the memory register area corresponding to the target component, the bus information is further read, and the specific memory slot position is determined by combining the preset correspondence between the target component and the memory slot. Through the embodiment of the present application, the problem that the error reporting mechanism of the CXL device is not unified in the related art, resulting in the inability to accurately identify the error position, can be solved. And then the error position can be accurately identified. BRIEF DESCRIPTION OF THE DRAWINGS

[0017] Figure 1 It is a hardware structure block diagram of a computer terminal of a method for determining an error position according to an embodiment of the present application;

[0018] Figure 2 is a flow chart of a method for determining an error position according to an embodiment of the present application;

[0019] Figure 3 is a topological diagram of a CXL component chip according to an optional embodiment of the present application;

[0020] Figure 4 is a flow chart of processing a CXL error according to an optional embodiment of the present application;

[0021] Figure 5 It is a structural block diagram of a device for determining an error position according to an embodiment of the present application. DETAILED DESCRIPTION

[0022] The embodiments of the present application will be described in detail below with reference to the accompanying drawings and in combination with the embodiments.

[0023] It should be noted that the terms "first", "second", etc. in the specification and claims of this application and the above-mentioned drawings are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence.

[0024] The method embodiments provided in the embodiments of the present application can be executed in a mobile terminal, a computer terminal or a similar computing device. Taking running on a computer terminal as an example, Figure 1 FIG. 1 is a hardware structure block diagram of a computer terminal of a method for determining an error position in an embodiment of the present application. Figure 1 As shown, the computer terminal may include one or more ( Figure 1 Only one is shown in the figure) a processor 102 (the processor 102 may include but is not limited to a processing device such as a microprocessor MCU or a programmable logic device FPGA) and a memory 104 for storing data, wherein the above-mentioned computer terminal may also include a transmission device 106 and an input / output device 108 for communication functions. It can be understood by those skilled in the art that Figure 1 The structure shown is only for illustration and does not limit the structure of the above-mentioned computer terminal. Figure 1 More or fewer components as shown, or with Figure 1 Different configurations are shown.

[0025] The memory 104 can be used to store computer programs, for example, software programs and modules of application software, such as the computer program corresponding to the method for determining the interactive state in the embodiment of the present application. The processor 102 executes various functional applications and data processing by running the computer program stored in the memory 104, that is, to implement the above method. The memory 104 may include a high-speed random access memory, and may also include a non-volatile memory, such as one or more magnetic storage devices, flash memory, or other non-volatile solid-state memory. In some examples, the memory 104 may further include a memory remotely arranged relative to the processor 102, and these remote memories can be connected to the computer terminal via a network. Examples of the above-mentioned network include, but are not limited to, the Internet, an intranet, a local area network, a mobile communication network, and combinations thereof.

[0026] The transmission device 106 is used to receive or send data via a network. The specific example of the above network may include a wireless network provided by a communication provider of a computer terminal. In one example, the transmission device 106 includes a network adapter (Network Interface Controller, referred to as NIC), which can be connected to other network devices through a base station so as to communicate with the Internet. In one example, the transmission device 106 can be a radio frequency (RF) module, which is used to communicate with the Internet wirelessly.

[0027] Figure 2 is a flow chart of a method for determining an error position according to an embodiment of the present application, which can be applied to Figure 1 In a computer terminal, such as Figure 2 As shown, the process includes the following steps:

[0028] Step S202, when an error report corresponding to the target system is received, determining an error source corresponding to the error report, wherein the error source includes: a target component in the target system, a memory register in the target component, and other error sources;

[0029] Step S204, when it is determined that the error source is not the other error source, determining bus information corresponding to the target component, and determining target memory slot information corresponding to the target component according to the bus information and the error source;

[0030] Step S206: determining an error position corresponding to the error report according to the target memory slot information.

[0031] Through the method for determining the error position of the present application, when receiving the error report corresponding to the target system, the error source corresponding to the error report is determined, and the error source includes: the target component in the target system, the target register in the target component and other sources; when it is determined that the error source is not other sources, the bus information corresponding to the target component is determined, and the target memory slot information corresponding to the target component is determined according to the bus information and the error source; the error position corresponding to the error report is determined according to the target memory slot information. In other words, the embodiment of the present application parses the error source from the error report. If the source is the target component or the memory register area corresponding to the target component, the bus information is further read, and the specific memory slot position is determined by combining the preset correspondence between the target component and the memory slot. Through the embodiment of the present application, the problem that the error reporting mechanism of the CXL device is not unified in the related art, resulting in the inability to accurately identify the error position, can be solved. And then the error position can be accurately identified.

[0032] Optionally, the above step S204 of determining the target memory slot information corresponding to the target component according to the bus information and the error source mainly includes the following two situations:

[0033] (1) When it is determined that the source of the error is the target component, obtaining a first bus number corresponding to the target component according to the bus information; determining first memory slot information matching the first bus number in a first preset table, and determining the first memory slot information as the target memory slot information, wherein the first preset table is used to store the correspondence between the bus number of the target component and the memory slot information of the target component.

[0034] It is understandable that, when the source of the error is determined to be the target component, the technical solution for determining the target memory slot information includes:

[0035] (1) Determine the source of the error: When the target system detects an error, it first needs to determine the source of the error. If the source of the error is a target component connected via CXL (for example, an accelerator card or memory expansion device), subsequent processing will follow a specific process to ensure that the correct memory slot information is identified.

[0036] (2) Obtaining the first bus number based on the bus information: After confirming that the error originates from the CXL component (i.e., the target component of the present application), the bus information related to the target component can be read. The bus information is usually included in the error report, or can be obtained by querying the status register of the CXL component. The obtained bus information will be converted into a specific first bus number, which is unique in the AMD (a platform) server system (i.e., the target system of the present application) and is used to identify the location of the CXL component on the PCIe bus.

[0037] (3) Determine the first memory slot information matching the first bus number in the first preset table: Establish a first preset table: In the AMD server system, it is necessary to establish a table in advance, which stores the correspondence between the bus number of the CXL component and the specific memory slot information under the target component. Since the memory slot information on the CXL component cannot be directly obtained through traditional slot identification (for example: silk screen on the motherboard), this preset table plays a key bridge role.

[0038] Among them, the first preset table lists the device ID (identification), manufacturer ID and bus number range of the CXL component, corresponding to which is the specific memory slot information, such as: DIMM0, DIMM1, etc. These memory slot information are defined according to the actual connection topology of the CXL component and the memory slot.

[0039] (4) Matching process: When the system detects an error and obtains the first bus number of the CXL component, it will query the first preset table and find the first memory slot information that matches the first bus number based on the preset rules. For example, if the first bus number is in the range of 0x00 to 0x1F, then the first bus number may correspond to the first memory slot information such as CXL_PCI0_DIMM0 or CXL_PCI0_DIMM1.

[0040] (5) Determine the target memory slot information: When the source of the error is determined to be the target component, the first memory slot information is the target memory slot information. This solves the location information identification problem caused by the special nature of the CXL device (for example, the location information cannot be obtained through the traditional slot identifier).

[0041] Through the above technical solution, AMD server systems can effectively identify and locate errors in CXL components and their memory slots, and take corresponding error handling measures. This method not only improves the accuracy of system error reporting, but also facilitates maintenance and troubleshooting, ensuring that CXL devices can operate more stably and efficiently in complex data centers and high-performance computing environments.

[0042] (ii) when it is determined that the source of the error is a memory register in the target component, determine the first memory slot of the first memory code corresponding to the target component, and determine the bus number range of the second bus number corresponding to the target component according to the bus information; when it is determined that the second bus number is a high-order bus number according to the bus number range, convert the first memory slot of the first memory code to the second memory slot of the second memory code according to the conversion rule; determine the second memory slot information matching the second memory slot and the second bus number in a second preset table, and determine the second memory slot information as the target memory slot information, wherein the second preset table is used to store the bus number of the target component and the correspondence between the memory slot of the target component and the memory slot information of the target component; when it is determined that the second bus number is a low-order bus number according to the bus number range, determine the third memory slot information matching the first memory slot and the second bus number in the second preset table, and determine the third memory slot information as the target memory slot information.

[0043] It is understandable that, when it is determined that the source of the error is a memory register in the target component, the technical solution for determining the target memory slot information includes:

[0044] (1) Determine the source of the error: When the target system detects an error, it will check whether the error comes from the memory register in the CXL device. If the error is reported in the memory register, it indicates that the error may be caused by a problem with the memory module itself, rather than the CXL component itself or other parts of the CXL component.

[0045] (2) Determine the first memory slot: Once the error source is confirmed to be the memory register, the target system reads the memory control unit of the CXL component to determine the first memory slot of the first memory code (e.g., DIMM1). The first memory slot of the first memory code may be encoded based on an encoding rule within the CXL component and may not directly correspond to the slot information of the physical location in the system.

[0046] (3) Identification and conversion of bus information: The target system will determine whether the second bus number is within the preset high bus number range based on the second bus number in the error message. A high bus number means that the CXL component is attached to a specific high BUS number (BUS number is the bus number) of the central processing unit (CPU), while a low bus number means that the CXL component is attached to a specific low BUS number of the CPU. Based on the judgment of the bus number range, the target system will perform different slot information conversions.

[0047] in:

[0048] 1) Conversion under high-order bus numbers: If the bus number is determined to be a high-order bus number, the target system will apply specific conversion rules to convert the first memory slot (which can be DIMM0 or DIMM1) to the corresponding high-order slot information (which can be DIMM2 or DIMM3). The internally encoded slot information can then be mapped to the physical slot information that the target system can identify.

[0049] 2) Direct matching under low bus number: If the bus number is determined to be a low bus number, the target system can directly search the second preset table for third memory slot information that matches the first memory slot and the second bus number without additional slot conversion.

[0050] (4) Determine the target memory slot information using a preset table: Regardless of whether it is a high-order bus number or a low-order bus number, the target system will eventually search the second preset table for the physical memory slot information that matches the second bus number and memory slot in the error message, i.e., the target memory slot information. The second preset table stores the correspondence between the bus number and memory slot of the CXL component and the actual physical memory slot information, and is the key to matching the error message with the actual physical location.

[0051] Through the above technical solution, the target system can accurately identify the specific physical location of the memory error in the CXL device, which is crucial for troubleshooting and maintenance, especially when the specific slot information cannot be directly provided in the error information of the CXL device. The above technical solution ensures that the error information of the CXL device can be unified with the error information of traditional PCIe devices or other types of memory, simplifies the complexity of error handling, and improves the maintainability of the system.

[0052] Optionally, the above-mentioned step S202 of determining the error source corresponding to the error report includes: determining a first component identifier corresponding to the target component based on the error report; determining whether there is a second component identifier consistent with the first component identifier in a preset component identifier table; when it is determined that the second component identifier does not exist in the preset component identifier table, determining that the error source is the other error source; when it is determined that the second component identifier exists in the preset component identifier table, obtaining register information corresponding to the target component, and determining whether the memory register reports an error based on the register information; when it is determined that the memory register reports an error, determining that the error source is the memory register; when it is determined that the memory register does not report an error, determining that the error source is the target component.

[0053] It is understandable that the technical solutions for determining the error source corresponding to the error report include:

[0054] (1) Determine the first component identification corresponding to the error report: The component identification may include: the device ID and the manufacturer ID corresponding to the target component. When the target system detects an error report, it will parse the error report to determine the first component identification of the component that caused the error. This usually involves extracting the device ID and the manufacturer ID from the error report, because under the CXL protocol, the device ID and the manufacturer ID can help identify the specific CXL component.

[0055] (2) Checking the Preset Component Identification Table: The target system will query a preset component identification table, which contains the device ID and manufacturer ID information of all known CXL components. It can then verify whether the first component identification in the error report is associated with a known CXL component.

[0056] If the first component identification is not in the preset component identification table, the error source is other non-CXL devices in the system, or a new CXL component that has not been recorded, ie, other sources.

[0057] (3) Determine whether the error is caused by the CXL component: If the first component identifier is consistent with the second component identifier in the preset component identifier table, the target system will further check the memory register status of the CXL component to distinguish whether the error source is caused by the problem of the CXL component itself or the problem of the memory device (i.e., memory register) mounted on the CXL component.

[0058] Specifically: After determining that the error source is a CXL component in the preset table, the target system reads the register information of the CXL component, especially the memory register information, to determine whether an error has occurred in the memory. The health of memory access or memory devices can be determined by querying the error register inside the CXL component.

[0059] (4) Determine the source of the error: If the memory register reports an error, the source of the error is the memory register. Possible errors include: memory module failure and other errors. If the memory register does not report an error, the source of the error can be determined to be the CXL component itself. Possible errors include: CXL component hardware failure or communication problems, etc.

[0060] Optionally, after determining the error source corresponding to the error report in the above step S202, the method further includes: when determining that the error source is the other error source, detecting the target component according to a preset error detection mechanism to obtain a detection result; and determining the error position corresponding to the error report according to the detection result.

[0061] It is understandable that, when the error source is determined to be other error sources, the technical solutions that can be implemented are:

[0062] When the target system detects an error report, a certain mechanism is needed to determine whether the error report comes from a CXL device. For example, this can be achieved by comparing the device ID and vendor ID information in the error report with the device ID and vendor information reserved in the CXL error handler. If the error report information matches the CXL device ID and vendor ID, then it can be determined that the error source is a CXL device. Otherwise, the error may come from a traditional PCIe device or other parts of the system, and the normal error handling process should be followed.

[0063] The conventional error handling process may be to detect the target component according to a preset error detection mechanism, and determine the error position corresponding to the error report in the detection result.

[0064] Through the above process, the present invention provides a method for uniformly and accurately detecting and locating the source and position of errors in the AMD platform CXL device system, thereby improving the stability and management efficiency of the system.

[0065] Optionally, after determining the error location corresponding to the error report according to the target memory slot information in step S206, the method further includes: reporting the error location to the target controller so that the target controller processes the error at the error location; and clearing the error report.

[0066] It is understandable that once the error location is determined, the target system can use different conversion and reporting mechanisms depending on the type of error source. For CXL component errors, the CXL component errors will be converted to error information that complies with PCIe device rules; for memory register errors in CXL components, they will be converted through additional silkscreen to comply with the error reporting rules of memory components.

[0067] The above conversion rules can ensure that the error information can be correctly understood and processed by the error handling module (eg, baseboard management controller (BMC)) in the system, thereby achieving the uniformity and compatibility of CXL device error reporting.

[0068] After reporting the error, you can also clear the error record: After the error information is reported, the target system will clear the relevant error record, which helps to avoid repeated error reports and prepare for the next possible error detection and processing.

[0069] Through the above technical solution, in the AMD server system, the error report of the CXL device can be handled by the system in a unified way, whether it is an error of the CXL component itself or an error of the memory device connected through CXL. This not only improves the accuracy of error reporting, but also simplifies the error handling process, and enhances the stability and maintenance efficiency of the system.

[0070] Optionally, before determining the bus information corresponding to the target component and the error source corresponding to the target component based on the error report, the method also includes: determining the memory slot to which each memory register in the target component is mounted; and numbering the multiple memory slots to which each memory register is mounted so that the memory codes of each memory slot to which each memory register is mounted are different from each other.

[0071] It is understandable that before determining the source of the error, multiple memory slots can be numbered, specifically:

[0072] (1) Determine the memory slots to which each memory register in the target component is mounted: the target component refers to the CXL device where the error occurs. The memory register refers to a register in the CXL component used to record memory status and error information. Each CXL component may have multiple such memory registers, each corresponding to a different memory slot.

[0073] Before handling an error, it is necessary to determine which specific memory slot is monitored by each memory register so that when an error report is received, the memory in which slot has a problem can be accurately located.

[0074] (2) Numbering the multiple memory slots mounted on each memory register: that is, assigning a unique identifier to each memory slot, which is used to uniquely identify each memory slot in the system, similar to the memory slot numbering on the motherboard. This numbering process ensures that even in the case of multiple CXL components and multiple memory slots, the specific memory slot can be quickly and accurately located through the information of the memory register.

[0075] Through the above numbering process, the memory codes of each memory slot mounted by each memory register are different from each other: wherein the memory code refers to a unique identification number assigned to each memory slot.

[0076] Each memory slot is uniquely coded, with no duplication, to avoid confusion in error reports.

[0077] By ensuring that the memory codes of each memory slot are different, the accuracy and efficiency of error location can be improved, and false alarms and confusion can be avoided, especially when there are multiple CXL devices and multiple memory slots in the system. That is, by assigning a unique code to each memory slot inside the CXL component, it is possible to quickly and accurately identify which specific memory slot has a problem when an error report is received. This not only solves the problem of memory error location in CXL devices, but also unifies the error reporting mechanism with the rules of traditional PCIe devices, making it easier to manage and maintain the system.

[0078] In order to better understand the process of the above-mentioned method for determining the error position, the implementation process of the above-mentioned method for determining the error position is described below in combination with an optional embodiment, but it is not used to limit the technical solution of the embodiment of the present application.

[0079] Before explaining how to determine the error location, we first need to further understand the high-speed interconnect protocol, specifically:

[0080] Compute Express Link (CXL) is a high-speed, low-latency interconnect protocol designed to optimize data transmission between computing, storage, and accelerator resources in data centers and high-performance computing (HPC) environments. The high-speed interconnect protocol provides an open standard solution to meet the needs of future computing architectures, especially for memory consistency, high bandwidth, and low latency. The CXL protocol focuses on three core functions: compute express link input and output (CXL.io), compute express link cache (CXL.cache), and compute express link memory (CXL.mem). These three core functions correspond to different application scenarios and requirements. Among them, CXL.io is based on the peripheral component interconnect express (PCI Express, PCIe) technology and provides a general device interconnect, similar to PCIe, but it is optimized for discovery, enumeration, and error reporting of CXL devices. CXL.io enables devices to be mounted on the PCIe bus, realizes the interconnection between the CPU and the device, supports storage and computing separation, and thus expands the CPU's access to a larger memory pool. CXL.cache is designed to address the memory gap between the CPU and the accelerator. It allows the accelerator to use the CPU's memory as a cache, thereby reducing the number of data movements and latency, improving system performance. With CXL.cache, the accelerator can directly access the CPU's cache without going through the main memory, which can significantly increase data processing speed, especially in scenarios where large amounts of data need to be accessed quickly. CXL.mem allows shared memory resources, meaning that the accelerator and CPU can share the same memory address space, enabling memory consistency and seamless access to data. This is particularly useful in multi-node or heterogeneous computing environments, where it simplifies software development, which is critical for scenarios such as machine learning and artificial intelligence. It brings significant performance and efficiency improvements to high-performance computing and data center environments by optimizing data transmission, providing memory consistency and resource pooling.

[0081] The optional embodiment of the present application proposes a method for solving the problem of inconsistent error reporting in the AMD platform CXL device system. Specifically, the method for solving the problem of inconsistent error reporting in the AMD platform CXL device system in the optional embodiment of the present application is described from the following two aspects:

[0082] (I) Design of a unified method for CXL component error reporting.

[0083] CXL component equipment belongs to the Root Complex Integrated Endpoint (RCiEP) and is a special type of equipment. It has the following characteristics:

[0084] (1) There must be a configuration space header of type 00h (a configuration space header);

[0085] (2) Configuration requests must be supported;

[0086] (3) Input / output (I / O) resources that do not need to be declared through the Base Address Register (BAR);

[0087] (4) Lock requests should not be supported;

[0088] (5) Whether acting as a completer or a requester, it must support Message Signaled Interrupt (MSI) or Message Signaled Interrupt Extended (MSI-X), or both.

[0089] If MSI is implemented, RCiEP can support 32-bit or 64-bit message address version of MSI capability structure. Link Capabilities, Link Status, Link Control, Link Capabilities 2, Link Status 2 and Link Control 2 link related registers should not be implemented in PCIe extended capabilities. It should not appear in any hierarchical domain exposed by the root complex, and must not be hot-swapped independently of the entire root complex. It should not appear in switches. Therefore, it cannot obtain slot identifier (Slot ID) information through the root bridge connection (root bridge) like conventional PCIe devices to match the slot. Reporting to the BMC after the device error requires special processing. The device ID and manufacturer ID of the CXL component can be known from the CXL component manufacturer, because the 16-channel peripheral component interconnect high-speed (×16PCIe) signals of the entire CPU are fixed to occupy the specified bus (BUS) range.

[0090] Therefore, the entire PCIe BUS can be divided into equal parts according to the physical port (PE port) of the CPU. Table 1 is a corresponding relationship table of CXL component slots, as shown in Table 1:

[0091] Table 1

[0092]

[0093] The hardware monitor in the CXL component is responsible for detecting various types of errors, such as data transmission errors and clock synchronization problems. CXL error types are divided into two categories: the first category is the mapping of memory errors on the component to the CXL component. This type of error requires identifying the memory bar error and not reporting the error information of the CXL component. The second category is the error of the component itself, which is generally a correctable error or a recovery error. These errors of CXL will be recorded in the internal error register of the component. CXL components usually use message signal interrupts to send interrupt requests to the host. Allow CXL devices to send error information to the host. After receiving the error report, the host records the error and triggers an alarm. In the alarm information here, the device ID (i.e., the first device identifier) ​​and manufacturer ID information in the alarm information are first compared with the device ID (i.e., the device identifier in the preset device identifier list) and manufacturer information reserved in the CXL error handler. If it meets the requirements, proceed to the next step. If it does not meet the requirements, it is a normal PCIe device error alarm process. The BUS information (i.e. bus information) of the CXL component is obtained from the error information, and the interval where the BUS information is located is determined. For example, if the BUS information obtained from the error information of the CXL component is 0x3E, it means that this CXL component (i.e. target component) is inserted in the CXL_PCI1 slot. The above technical solution can solve the problem that the normal PCIe device obtains the slot information through the Slot ID (slot identification), but the Slot ID information (i.e. target memory slot information) cannot be obtained because the CXL device belongs to the RCiEP type. After obtaining the slot information, the error report of the CXL component can be sent to the BMC like a regular PCLe device, solving the problem of no location information of the CXL device.

[0094] (ii) A unified solution for handling CXL memory (i.e., memory register) errors.

[0095] Since the CXL memory is transferred through the CXL component and is not on the motherboard silk screen, it is impossible to identify the memory by the motherboard silk screen memory method. The optional embodiment of the present application can solve the problem of incorrect memory identification on the CXL component. Specifically:

[0096] Since it is a memory connected to the CXL component, all the slot information is marked according to the method in Table 1 above. This can initially solve the problem of which CPU slot the error is reported in, but it has not yet solved the problem of not being able to distinguish which channel the slot is on. Therefore, it can be established Figure 3 The topology diagram of the CXL component chip is shown in FIG. Figure 3As shown, the order of a CXL chip can be defined. First, a CXL chip component is divided into two memory controllers with 2 BUS numbers (a memory controller with a low BUS number and a memory controller with a high BUS number), and a total of 4 memory slots are mounted (slot information DIMM0, slot information DIMM1, slot information DIMM2, slot information DIMM3), and each BUS manages 2 memory slots. That is, the silk screen corresponding to the memory register with a low BUS number can be defined as slot DIMM0 and slot DIMM1; the silk screen corresponding to the memory register with a high BUS number is slot DIMM2 and slot DIMM3. Then, the CXL component memory slot correspondence table in Table 2 can be obtained, as shown in Table 2:

[0097] Table 2

[0098]

[0099]

[0100] After the correspondence between the memory slots of the CXL components is specified, when the CXL system issues an error message, the error message can be processed based on the CXL error process of the optional embodiment of the present application. Figure 4 is a flow chart of processing a CXL error according to an optional embodiment of the present application, such as Figure 4 As shown:

[0101] Step S401, determining that a system (ie, a target system) has an error.

[0102] Step S402: determine whether the CXL device (ie, the target device) reports an error.

[0103] If it is determined that the CXL device reports an error, step S403 is executed. If it is determined that the CXL device does not report an error, step S412 is executed.

[0104] Step S403, determining whether the CXL memory register reports an error.

[0105] If it is determined that the CXL memory register reports an error, step S404 is executed. If it is determined that the CXL memory register does not report an error, step S409 is executed.

[0106] Step S404, capturing whether the memory register reports an error in DIMMM0 or DIMM1 (DIMM0 and DIMM1 are memory slots of the first memory code) reports an error.

[0107] Step S405, capturing the CXL BUS number (ie, bus number) to determine whether it is a high-order bus number or a low-order bus number.

[0108] If it is determined to be a high-level total number line, execute step S407; if it is determined to be a low-level total number line, execute step S406.

[0109] Step S406, matching the captured information with Table 2 (i.e., the second preset table) to obtain the memory error location (i.e., the error location);

[0110] Step S407, converting DIMM0 to DIMM2, or converting DIMM1 to DIMM3.

[0111] Step S408: Report the memory error location information to the BMC, and remove the CXL component error report.

[0112] That is, read the memory control unit in the CXL component, check whether the memory control unit reports an error under the BUS, whether it is the memory slot DIMM0 of the memory control unit, or the memory slot DIMM1 that has an error. Then read the corresponding BUS number information. If the BUS number of CXL is low, there is no need to convert the memory slot, and the captured information is the actual memory slot information. If the BUS number of CXL is high, the memory slot is converted. That is, the read DIMM0 needs to be converted to DIMM2 information, and the DIMM1 information needs to be converted to DIMM3 information. After the conversion is completed, it is directly compared with Table 2 to obtain the actual silk screen position information. Then the error reporting information of the component is not collected, and only the memory error position and detailed memory information are sent to the BMC.

[0113] Step S409: if it is determined that the CXL memory register has not reported an error, the CXL BUS number is captured.

[0114] Step S410, matching the captured information with Table 1 (ie, the first preset table) to obtain CXL component error information.

[0115] Step S411: reporting the error position of the CXL component to the BMC.

[0116] Step S412: if it is determined that the CXL device has not reported an error, report an error according to a normal BMC error reporting process.

[0117] Step S413, after the error reporting is completed, clear the error record and wait for the next error trigger.

[0118] After the reporting is completed, all error records are cleared and the next error is triggered. The above steps S401 to S413 implement the CXL component memory information error matching reporting process.

[0119] The optional embodiment of the present application proposes a method for solving the inconsistency of error reporting in AMD server systems. The device ID is used to determine whether the error is a CXL device, and then the memory register of the CXL component is read to determine whether the error is reported, so as to confirm whether it is the CXL component itself or the memory slot on the CXL. Different errors are processed separately, and the errors of the CXL component are converted into rules for PCIe components. For errors in the memory of the CXL component, a silk screen conversion and alignment is performed, and then the errors of the CXL memory are converted into memory component rules. The above technical solution solves the problem that CXL device errors cannot be unified.

[0120] Through the description of the above implementation methods, those skilled in the art can clearly understand that the method according to the above embodiment can be implemented by means of software plus a necessary general hardware platform, and of course by hardware, but in many cases the former is a better implementation method. Based on this understanding, the technical solution of the present application, or the part that contributes to the prior art, can be embodied in the form of a software product, which is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk), and includes a number of instructions for a terminal device (which can be a mobile phone, computer, server, or network device, etc.) to execute the methods described in each embodiment of the present application.

[0121] In this embodiment, a device for determining an error position is also provided, and the device is used to implement the above-mentioned embodiments and preferred implementation modes, and the descriptions that have been made will not be repeated. As used below, the term "module" can implement a combination of software and / or hardware of a predetermined function. Although the device described in the following embodiments is preferably implemented in software, the implementation of hardware, or a combination of software and hardware, is also possible and conceivable.

[0122] Figure 5 is a structural block diagram of a device for determining an error position according to an embodiment of the present application, such as Figure 5 As shown, the device comprises:

[0123] A first determination module 52 is used to determine the error source corresponding to the error report of the target system when receiving the error report of the target system, wherein the error source includes: the target component of the target system, the memory register in the target component and other error sources;

[0124] A second determination module 54 is used to determine bus information corresponding to the target component when it is determined that the error source is not the other error source, and determine target memory slot information corresponding to the target component according to the bus information and the error source;

[0125] The third determining module 56 is configured to determine an error position corresponding to the error report according to the target memory slot information.

[0126] Through the error position determination device of the present application, when receiving the error report corresponding to the target system, the error source corresponding to the error report is determined, and the error source includes: the target component in the target system, the target register in the target component and other sources; when it is determined that the error source is not other sources, the bus information corresponding to the target component is determined, and the target memory slot information corresponding to the target component is determined according to the bus information and the error source; the error position corresponding to the error report is determined according to the target memory slot information. In other words, the embodiment of the present application parses the error source from the error report. If the source is the target component or the memory register area corresponding to the target component, the bus information is further read, and the specific memory slot position is determined by combining the preset correspondence between the target component and the memory slot. Through the embodiment of the present application, the problem that the error reporting mechanism of the CXL device is not unified in the related art, resulting in the inability to accurately identify the error position, can be solved. And then the error position can be accurately identified.

[0127] In an exemplary embodiment, the second determination module 54 is also used to, when it is determined that the source of the error is the target component, obtain a first bus number corresponding to the target component based on the bus information; determine first memory slot information matching the first bus number in a first preset table, and determine the first memory slot information as the target memory slot information, wherein the first preset table is used to store the correspondence between the bus number of the target component and the memory slot information of the target component.

[0128] In an exemplary embodiment, the second determination module 54 is also used to determine the first memory slot of the first memory code corresponding to the target component when it is determined that the source of the error is a memory register in the target component, and determine the bus number range of the second bus number corresponding to the target component according to the bus information; when it is determined that the second bus number is a high-order bus number according to the bus number range, convert the first memory slot of the first memory code to the second memory slot of the second memory code according to the conversion rule; determine the second memory slot information matching the second memory slot and the second bus number in a second preset table, and determine the second memory slot information as the target memory slot information, wherein the second preset table is used to store the bus number of the target component and the correspondence between the memory slot of the target component and the memory slot information of the target component; when it is determined that the second bus number is a low-order bus number according to the bus number range, determine the third memory slot information matching the first memory slot and the second bus number in the second preset table, and determine the third memory slot information as the target memory slot information.

[0129] In an exemplary embodiment, the first determination module 52 is further used to determine the first component identifier corresponding to the target component based on the error report; determine whether there is a second component identifier consistent with the first component identifier in the preset component identifier table; when it is determined that the second component identifier does not exist in the preset component identifier table, determine that the source of the error is the other error source; when it is determined that the second component identifier exists in the preset component identifier table, obtain register information corresponding to the target component, and determine whether the memory register reports an error based on the register information; when it is determined that the memory register reports an error, determine that the source of the error is the memory register; when it is determined that the memory register does not report an error, determine that the source of the error is the target component.

[0130] In an exemplary embodiment, the first determination module 52 is further used to detect the target component according to a preset error detection mechanism to obtain a detection result when the error source is determined to be the other error source; and determine the error position corresponding to the error report according to the detection result.

[0131] In an exemplary embodiment, the third determination module 56 is further configured to report the error position to a target controller so that the target controller processes the error at the error position; and clear the error report.

[0132] In an exemplary embodiment, the first determination module 52 determines the memory slots to which each memory register in the target component is mounted respectively; and numbers the multiple memory slots to which each memory register is mounted so that the memory codes of each memory slot to which each memory register is mounted respectively are different from each other.

[0133] An embodiment of the present application further provides a computer-readable storage medium, in which a computer program is stored, wherein the computer program is configured to execute the steps in the above method embodiment when running.

[0134] In an exemplary embodiment, the computer-readable storage medium may include, but is not limited to, various media that can store computer programs, such as a USB flash drive, a read-only memory (ROM), a random access memory (RAM), a mobile hard disk, a magnetic disk or an optical disk.

[0135] Optionally, in this embodiment, the storage medium may be configured to store program codes for executing the following steps:

[0136] S1, upon receiving an error report corresponding to a target system, determining an error source corresponding to the error report, wherein the error source includes: a target component in the target system, a memory register in the target component, and other error sources;

[0137] S2, when it is determined that the error source is not the other error source, determining bus information corresponding to the target component, and determining target memory slot information corresponding to the target component according to the bus information and the error source;

[0138] S3, determining an error position corresponding to the error report according to the target memory slot information.

[0139] An embodiment of the present application further provides an electronic device, including a memory and a processor, wherein a computer program is stored in the memory, and the processor is configured to run the computer program to execute the steps in the above method embodiment.

[0140] In an exemplary embodiment, the electronic device may further include a transmission device and an input / output device, wherein the transmission device is connected to the processor, and the input / output device is connected to the processor.

[0141] Optionally, in this embodiment, the processor may be configured to perform the following steps through a computer program:

[0142] S1, upon receiving an error report corresponding to a target system, determining an error source corresponding to the error report, wherein the error source includes: a target component in the target system, a memory register in the target component, and other error sources;

[0143] S2, when it is determined that the error source is not the other error source, determining bus information corresponding to the target component, and determining target memory slot information corresponding to the target component according to the bus information and the error source;

[0144] S3, determining an error position corresponding to the error report according to the target memory slot information.

[0145] An embodiment of the present application further provides a computer program product, including a computer program, which is implemented to perform the steps in the above method embodiment when executed by a processor.

[0146] Optionally, in this embodiment, the computer program product may be executed by a processor to perform the following steps:

[0147] S1, upon receiving an error report corresponding to a target system, determining an error source corresponding to the error report, wherein the error source includes: a target component in the target system, a memory register in the target component, and other error sources;

[0148] S2, when it is determined that the error source is not the other error source, determining bus information corresponding to the target component, and determining target memory slot information corresponding to the target component according to the bus information and the error source;

[0149] S3, determining an error position corresponding to the error report according to the target memory slot information.

[0150] For specific examples in this embodiment, reference may be made to the examples described in the above embodiments and exemplary implementation modes, and this embodiment will not be described in detail herein.

[0151] Obviously, those skilled in the art should understand that the above modules or steps of the present application can be implemented by a general computing device, they can be concentrated on a single computing device, or distributed on a network composed of multiple computing devices, they can be implemented by a program code executable by a computing device, so that they can be stored in a storage device and executed by the computing device, and in some cases, the steps shown or described can be executed in a different order from that herein, or they can be made into individual integrated circuit modules, or multiple modules or steps therein can be made into a single integrated circuit module for implementation. Thus, the present application is not limited to any specific combination of hardware and software.

[0152] The above description is only the preferred embodiment of the present application and is not intended to limit the present application. For those skilled in the art, the present application may have various modifications and variations. Any modification, equivalent replacement, improvement, etc. made within the principles of the present application shall be included in the protection scope of the present application.

Claims

1. A method for determining an error position, characterized in that: include: In case of receiving an error report corresponding to the target system, determining an error source corresponding to the error report, wherein the error source includes: a target component in the target system, a memory register in the target component, and other error sources; In the case where it is determined that the error source is not the other error source, bus information corresponding to the target component is determined, and target memory slot information corresponding to the target component is determined according to the bus information and the error source; An error location corresponding to the error report is determined according to the target memory slot information.

2. The method according to claim 1, characterized in that Determining target memory slot information corresponding to the target component according to the bus information and the error source includes: When it is determined that the error source is the target component, obtaining a first bus number corresponding to the target component according to the bus information; Determine first memory slot information matching the first bus number in a first preset table, and determine the first memory slot information as the target memory slot information, wherein the first preset table is used to store the correspondence between the bus number of the target component and the memory slot information of the target component.

3. The method according to claim 1, characterized in that Determining target memory slot information corresponding to the target component according to the bus information and the error source includes: In the case where it is determined that the error source is a memory register in the target component, determining a first memory slot of a first memory code corresponding to the target component, and determining a bus number range of a second bus number corresponding to the target component according to the bus information; In the case where it is determined according to the bus number range that the second bus number is a high-order bus number, converting the first memory slot of the first memory code into the second memory slot of the second memory code according to a conversion rule; Determine in a second preset table the second memory slot information that matches the second memory slot and the second bus number, and determine the second memory slot information as the target memory slot information, wherein the second preset table is used to store the correspondence between the bus number of the target component and the memory slot of the target component and the memory slot information of the target component; When the second bus number is determined to be a low-order bus number based on the bus number range, the third memory slot information matching the first memory slot and the second bus number is determined in the second preset table, and the third memory slot information is determined as the target memory slot information.

4. The method according to claim 1, characterized in that: Determining the error source corresponding to the error report includes: Determine a first component identifier corresponding to the target component according to the error report; Determine whether there is a second component identification that is consistent with the first component identification in the preset component identification table; When it is determined that the second component identification does not exist in the preset component identification table, determining that the error source is the other error source; When it is determined that the second component identification exists in the preset component identification table, obtaining register information corresponding to the target component, and determining whether the memory register reports an error according to the register information; In the case where it is determined that the memory register reports an error, determining that the source of the error is the memory register; When it is determined that the memory register has not reported an error, the error source is determined to be the target component.

5. The method according to claim 1, characterized in that After determining the error source corresponding to the error report, the method further includes: In the case where it is determined that the error source is the other error source, detecting the target component according to a preset error detection mechanism to obtain a detection result; An error location corresponding to the error report is determined according to the detection result.

6. The method according to claim 1, characterized in that After determining the error location corresponding to the error report according to the target memory slot information, the method further includes: reporting the error location to a target controller so that the target controller processes the error at the error location; and clearing the error report.

7. The method according to claim 1, characterized in that Before determining the bus information corresponding to the target component and the error source corresponding to the target component according to the error report, the method further includes: Determining the memory slots to which each memory register in the target component is mounted respectively; The multiple memory slots to which each memory register is mounted are numbered so that the memory codes of each memory slot to which each memory register is mounted are different from each other.

8. A device for determining an error position, characterized in that: include: A first determination module is used to determine the error source corresponding to the error report when receiving the error report corresponding to the target system, wherein the error source includes: the target component in the target system, the memory register in the target component and other error sources; A second determination module is used to determine bus information corresponding to the target component when it is determined that the error source is not the other error source, and determine target memory slot information corresponding to the target component according to the bus information and the error source; A third determination module is used to determine an error position corresponding to the error report according to the target memory slot information.

9. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores a computer program, wherein the computer program implements the steps of the method according to any one of claims 1 to 7 when executed by a processor.

10. An electronic device comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that: When the processor executes the computer program, the steps of the method according to any one of claims 1 to 7 are implemented.