Accessing fabric attached memory

The memory access system addresses the challenge of scaling memory reliability and latency by using a fabric switch to route data across multiple fabric-attached memory devices with data striping and redundancy, enabling efficient error correction and hot swapping to maintain system performance.

WO2025051891A1PCT designated stage expired Publication Date: 2025-03-13SCALEMEM AS

Patent Information

Application Number
PCT/EP2024/074888
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-09-05
Filing Date
2024-09-05
Publication Date
2025-03-13

AI Technical Summary

Technical Problem

As computing systems scale to meet the demands of artificial intelligence and machine learning, memory reliability and latency become significant challenges, particularly as memory capacity increases and the likelihood of memory errors grows due to signal interference.

Method used

A memory access system that utilizes a fabric switch to route data across multiple downstream fabric-attached memory devices, employing data striping and redundancy techniques to improve reliability and error correction, while also enabling hot swapping of memory devices to maintain system performance.

Benefits of technology

The solution enhances memory system reliability and scalability by distributing data across multiple memory devices, reducing the impact of errors through redundancy, and allowing for seamless replacement of faulty devices, thus maintaining system performance and availability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2024074888_13032025_PF_FP_ABST
    Figure EP2024074888_13032025_PF_FP_ABST
Patent Text Reader

Abstract

A memory access system comprising a fabric switch which is connectable to a computing device that generates memory access requests. The switch is also connectable to downstream fabric-attached memory devices. The switch comprises an upstream port connectable to the computing device, downstream ports connectable to a respective downstream fabric-attached memory device, and routing logic that routes access request data to the downstream ports. The system comprises computer logic that segments data of a memory access request into segments. The computer logic allocates each segment to a downstream port.
Need to check novelty before this filing date? Find Prior Art

Description

Accessing fabric attached memoryFIELD

[0001] The present application relates to accessing memory in computing systems, particularly accessing large memories in fabric-attached systems.BACKGROUND

[0002] As the demand for artificial intelligence (Al), machine learning (ML), and other computationally expensive applications increases, so too does the need for highly reliable computer memory systems.

[0003] Processors configured to implement computational tasks are becoming more powerful, and are able to execute instructions at increasing rates. However, optimal performance of these processors cannot be achieved without comparable performance of memory devices in the computer system. As memory capacity increases, problems with reliability become more prevalent. It is important that improvements in reliability of memory keep up with the trend of increasing processor performance.

[0004] Recent developments in interconnect technologies are enabling low-latency and high- bandwidth memory to be attached over a switching fabric.

[0005] One recent development in the field includes Compute Express Link (CXL), an open standard for high-speed and high-bandwidth connections between devices in high performance computing systems. CXL enables lower latency memory devices, such as DRAMs, to be accessible to host systems via a switching fabric. Another example of a high-speed, low-latency interconnect standard is the Ultra Accelerator Link (UAL) standard, which is discussed later herein.

[0006] CXL is designed to leverage the CXL protocols and the PCI Express 5.0 physical layer infrastructure to provide high-bandwidth, low latency connectivity between a host processor and other CXL-enabled devices.

[0007] Increasingly, computing systems, such as high-performance systems, are moving towards heterogeneous computing architectures, with application-specific accelerators being used to offload work otherwise performed by a CPU. CXL is well-suited to these environments because it supports memory cache coherency.

[0008] However, as the capacity of memory in a system scales, so too does the likelihood ofmemory errors, due to issues such as signal interference. For computer systems to remain scalable and keep up with the increasing demand for complex computing tasks, memory systems therein must also scale without becoming too slow, or too error prone, so that the processing power of the system is not severely limited by memory latency or unreliability.SUMMARY

[0009] According to a first aspect of the invention there is provided a memory access system comprising: a fabric switch connectable between a first computing device which is configured to generate memory access requests and a plurality of downstream fabric-attached memory devices which are configured to respond to memory access requests, the fabric switch comprising: an upstream port connectable to the first computing device; a plurality of downstream ports, each of which is connectable to a respective downstream fabric-attached memory device; and routing logic configured to route data of each memory access request received at the upstream port to the plurality of downstream ports based on respective port identifiers, the memory access system comprising computer logic configured to segment a data item of a memory access request received at the upstream port into a plurality of segments, wherein the computer logic is configured to allocate each of the segments of the plurality of segments to a downstream port and to assign a corresponding port identifier to each segment for use by the routing logic.

[0010] In some embodiments, the computer logic is further configured to generate from the data item a redundant data segment. The routing logic may be configured to allocate to the redundant data segment a port identifier for a downstream port connected to a redundant fabric-attached memory device.

[0011] In some embodiments, the system comprises access logic of the computer logic configured, in response to a read memory access request issued by the computing device, to access the plurality of segments from the plurality of downstream fabric-attached memory devices and to reassemble the data item.

[0012] In some embodiments, the routing logic comprises sequencing instructions configured to iteratively route each of the plurality of segments over a crossbar of the fabric switch to respective ones of the downstream ports based on the port identifier.

[0013] In some embodiments, the memory access system further comprises a write multiplexor configured to iteratively route each of the plurality of segments over the crossbar. The write multiplexor may comprise a plurality of input lines including a respective input line for each segment and the redundant data segment, and may further comprise a control line configured to iteratively select an input line from which to forward data over the crossbar based on the sequencing instructions.

[0014] In some embodiments, the fabric switch comprises a plurality of registers, the plurality of registers including a respective member register configured to store port identifiers corresponding to each of the plurality of downstream ports.

[0015] In some embodiments, wherein the plurality of registers further includes a segmentationenable register configured to indicate whether to execute the computer logic.

[0016] In some embodiments, the computer logic is further configured to, based on detection of an error in a segment accessed from a downstream fabric-attached memory device: load each of the plurality of segments into a first buffer of the upstream port; using at least the redundant data segment and one or more segments in which no error is detected, reconstruct a corrected segment corresponding to the segment in which an error is detected; for each segment in which no error is detected, forward the segment in the first buffer to a second buffer of the upstream port; and for the segment in which an error is detected, forward the corrected segment to the second buffer, wherein the computer logic is configured to reassemble the data item by applying reconstruction logic to the segments in the second buffer.

[0017] In some embodiments, the fabric switch comprises a plurality of correction multiplexors, each correction multiplexor comprising a first input line from the first buffer and a second input line for receiving a corrected segment. The computer logic may be configured to forward segments to the second buffer based on a control signal provided to each multiplexor by sequencing logic of the upstream port, the control signal indicating an input line from which data is to be forwarded to the second buffer.

[0018] In some embodiments, the fabric switch is a first fabric switch, and a first downstream port of the first fabric switch is connectable to a fabric-attached memory device via a second fabric switch,wherein the first downstream port of the first fabric switch is connectable to a second port of the second fabric switch, and wherein the second fabric switch is configured to forward memory access requests received at the upstream port of the first fabric switch to a third port of the second fabric switch, the third port connectable to a fabric-attached memory device configured to respond to the memory access requests.

[0019] In some embodiments, the redundant data segment comprises one or more of error correction codes, syndrome codes and erasure codes.

[0020] In some embodiments, the system operates in accordance with a Compute Express Link interconnect protocol.

[0021] In some embodiments, the computing device comprises a CPU, a GPU, or a DPU.

[0022] In some embodiments, the computing device comprises a GPU and the system may operate in accordance with an Ultra Accelerator Link interconnect protocol.

[0023] In some embodiments, the system comprises management software , the management software configured to implement RAIM setup, wherein implementing RAIM setup comprises the management and allocation of memory of the memory access system for use in serving memory access requests.

[0024] In some examples, the fabric switch comprises an on-chip fabric switch and the upstream port is connectable via an on-chip connection to the first computing device, wherein the memory access system operates in accordance with an AMBA protocol.

[0025] In some embodiments, the fabric switch is connectable to the downstream fabric-attached memory devices such that, on receipt of an indication that access requests from a first downstream fabric-attached memory device result in an error with a frequency exceeding an acceptable error frequency threshold, the first downstream fabric-attached memory device is removable and replaceable with a second downstream fabric -attached memory device while the system remains in operation.

[0026] According to a second aspect of the invention, there is provided a method comprising: receiving a memory access request at an upstream port of a fabric switch, the fabric switch connectable between a first computing device configured to generate the memory access request and a plurality of downstream fabric-attached memory devices configured to respond to the memory access request;segmenting, by computer logic, a data item of the memory access request received at the upstream port into a plurality of segments; allocating each of the segments of the plurality of segments to a downstream port by assigning a corresponding port identifier to each segment; and routing, by the upstream port of the fabric switch, each segment to a respective one of the plurality of downstream ports based on the allocated port identifier, each downstream port connectable to a respective downstream fabric-attached memory device.

[0027] In some embodiments, the method further comprises generating, by the computer logic, a redundant data segment from the data item, and allocating to the redundant data segment a port identifier for a downstream port connected to a redundant fabric-attached memory device.

[0028] In some embodiments, the method further comprises, in response to a read memory access request issued by the computing device, accessing the plurality of segments from the plurality of downstream fabric-attached memory devices and reassembling the data item.

[0029] In some embodiments, the method further comprises iteratively routing, by sequencing logic of the upstream port, each of the plurality of segments over a crossbar of the fabric switch to respective ones of the downstream ports based on the port identifier.

[0030] In some embodiments, the method further comprises iteratively routing, by a write multiplexor, each of the plurality of segments over the crossbar, wherein the write multiplexor comprises a plurality of input lines including a respective input line for each segment and the redundant data segment, and further comprises a control line configured to iteratively select an input line from which to forward data over the crossbar based on the sequencing instructions.

[0031] In some embodiments, the method further comprises storing port identifiers corresponding to each of the plurality of downstream ports in a plurality of registers. The plurality of registers may include a respective member register for each of the downstream ports.

[0032] In some embodiments, the method further comprises storing, in a segmentation-enable register, an indication of whether to execute the computer logic.

[0033] In some embodiments, the method further comprises, based on detection of an error in a segment accessed from a downstream fabric-attached memory device: loading each of the plurality of segments into a first buffer of the upstream port; using at least the redundant data segment and one or more segments in which an error is not detected, reconstruct a corrected segment corresponding to the segment in which an error is detectedthat does not comprise an error with respect to a corresponding segment allocated to the downstream port; for each segment in which no error is detected, forwarding the segment in the first buffer to a second buffer of the upstream port; for the segment in which an error is detected, forwarding the corrected segment to the second buffer; and reassembling the data item by applying reconstruction logic to the segments in the second buffer.

[0034] In some embodiments, the method further comprises: forwarding the segments to the second buffer based on a control signal provided to each of a plurality of correction multiplexors by sequencing logic of the upstream port. The control signal may indicate an input line from which data is to be forwarded to the second buffer, each correction multiplexor comprising a first input line from the first buffer and a second input line for receiving a corrected segment.

[0035] In some embodiments, generating the redundant data segment comprises generating one or more of error correction codes, syndrome codes and erasure codes.

[0036] In some embodiments, the method further comprises the use of a Compute Express Link interconnect protocol.

[0037] In some embodiments, the method further comprises the use of a Ultra Accelerator Link interconnect protocol.

[0038] In some embodiments, the fabric switch comprises an on-chip fabric switch and the upstream port is connectable via an on-chip connection to the first computing device, and the method comprises the use of an AMBA protocol.

[0039] According to a third aspect of the invention there is provided a transitory or non-transitory computer readable media comprising instructions which, when executed by a processor of a computing device, cause the processor to implement a method according to any of the embodiments provided above.BRIEF DESCRIPTION OF THE DRAWINGS

[0040] To assist understanding of the present disclosure and to show how embodiments may be put into effect, reference is made by way of example to the accompanying drawings in which:

[0041] Figure 1 shows a highly schematic diagram of a switched fabric computing system.

[0042] Figure 2 shows a highly schematic diagram of an exemplary switched fabric topology configurable under CXL 2.0.

[0043] Figure 3 shows a highly schematic representation of a store operation according to some examples.

[0044] Figure 4 shows a highly schematic representation of a load operation according to some examples.

[0045] Figure 5 shows a highly schematic diagram of a set of upstream port registers for implementing a fabric-attached memory system in accordance with some embodiments.

[0046] Figure 6 shows a highly schematic diagram of a store operation at a hardware level, according to some embodiments.

[0047] Figure 7 shows a highly schematic diagram of a load operation at a hardware level, according to some embodiments.

[0048] Figure 8 shows an exemplary switched fabric topology anticipated to be configurable under CXL 3.0.

[0049] Figure 9 shows a highly schematic diagram fabric attached-memory system according to some embodiments.

[0050] Figure 10 shows a highly schematic diagram of a process for regenerating data in a replacement memory device, according to some embodiments.

[0051] In the drawings, corresponding reference characters indicate corresponding components. The skilled person will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. Also, common but well-understood elements that are useful or necessary in a commercially feasible embodiment are often not depicted in order to facilitate a less obstructed view of these various example embodiments.

[0052] It will be appreciated that where reference numerals of the form xxx-a, xxx-b etc., are used to denote a particular instance of a feature of a drawing, the same reference numeral without a specified letter suffix (e.g., a, b, etc.) may denote a generic instance of the same feature.DETAILED DESCRIPTION

[0053] The present invention relates to fabric attached memory techniques in the field of high- performance computing. In this context the term ‘high-performance ‘computing does not imply anyparticular architecture, but denotes computing where access to high capacity memory is warranted. It is desirable if the memory capacity can be utilized with high reliability and low latency.

[0054] Recent developments in interconnect technologies are enabling low-latency and high- bandwidth memory to be attached over a switching fabric. It is primarily with respect to these fabric- attached memory solutions that the present disclosure is directed. Fabric attached memory devices may be DRAMs, or HBM (High Bandwidth Memory) devices, for example implemented in EDSFF modules, DIMMs, or other form factors. These devices allow direct memory access with relatively low latencies.

[0055] In particular, the present disclosure is concerned with allocation of data in fabric attached memory, and utilises data striping and memory redundancy techniques in fabric -attached memory devices to improve reliability and protect against memory errors.

[0056] Figure 1 shows a highly schematic diagram of a computing system 100 according to some embodiments of the present invention.

[0057] The system 100 comprises a host 110, which may comprise a processing unit (PU). The processing unit 110 may be a central processing unit (CPU), a graphics processing unit (GPU), a data processing unit (DPU), or any other suitable processing unit. Any reference to a host, processing unit or computing device in the examples herein may equally refer to a CPU, GPU, or DPU, for example. The host is connected to a fabric switch 120 via an upstream port 121 of the switch 120. Typically, a switch may be connected to a plurality of devices in a network, and may facilitate communication therebetween. For example, switches may comprise a plurality of multiplexing circuits configured to route data between a first device in the network and a second device in the network. CXU switches may be configured to provide this functionality, with data being transmitted according to CXU protocols. A fabric consists of one or more switches which are connected to end point devices, upstream and / or downstream, such as a host and memory devices. As above, CXU is used as an example in the present disclosure, as CXU provides protocols that support the fabric attached memory techniques described herein. In other examples, other interconnect standards may be adopted. In GPU fabric-attached memory contexts, the Ultra Accelerator Uink (UAU) standard may be leveraged. It is not excluded that CXU may be used in the context of GPUs, and similarly that UAU may be used in the context of CPUs.

[0058] In some examples, one or more end point devices (i.e. one or more downstream fabric- attached memory devices) may be a GPU. That is, the processing unit 110 may be a GPU and some or all of connected devices may be separate GPUs. In this context, the system comprises a fabric of interconnected GPUs and the switch implements logic (including the RAIM logic described below) for the interconnected GPUs. The switch may be located within the GPU interconnect.

[0059] In some examples, the fabric switch may be implemented on-chip. In such an example, the upstream port of the switch may be connectable via an on-chip connection to the computing device. That is, the computing device may be an on-chip processing unit. In on-chip switch deployments, the fabric switch may operate in accordance with an Advanced Microcontroller Bus Architecture (AMBA) protocol, such as the AMBA AXI protocol. AMBA is an interconnect standard for connection and management of on-chip components.

[0060] The present disclosure provides additional functionality in a fabric attached memory access computing system in the form of RAIM logic. A method of the present disclosure utilises data striping in memory, a technique which is referred to as ‘Redundant Array of Independent Memory’, herein ‘RAIM’ . By providing a RAIM-enabled system which splits up a memory access into separate chunks for allocation across multiple memory devices it is possible to protect against failure of any particular module in a fabric attached system. The RAIM logic may be provided in a modified switch, or elsewhere in the system, for example at the device attached to the upstream port.

[0061] A modified switch 120 according to one embodiment of the present disclosure comprises RAIM logic 124 on the upstream port 121.

[0062] The RAIM logic 124 is implemented in a state machine in the switch 120, for example in the form of a simple pipeline. As described in more detail later herein, functions such as parity generation and parity deployment, when storing and loading respectively, may be implemented by the RAIM logic state machine 124 on the upstream port 121 of the modified switch 120. The upstream port of the switch 120 further comprises registers 122 for holding information concerning data allocation. Exemplary register structures are shown in Figure 5, which is described later herein. At a hardware level, the RAIM logic 124 may comprise buffers and sequencers.

[0063] Port management, and performance of general switching and routing operations, may be a responsibility of the RAIM logic 124, in cooperation with the registers 122.

[0064] The exemplary switch 121 of Figure 1 further comprises a plurality of downstream ports 126, e.g., ports 12a-126e. Each of the downstream port 126a-126e is communicatively coupled to the upstream port 122 via respective crossbar links 128a-128e. It will be appreciated therefore that the upstream port 122 and logic unit 124 may comprise a plurality of multiplexors which are configured to send data packets along selected links 128 to appropriate downstream ports 126, for example based on software instructions executed by the routing logic. The routing logic of the switch uses port identifiers held in the registers 122 for routing data.

[0065] RAIM logic 124 at the upstream port may be configured to implement re-packetisation of data received at the upstream port. That is, the switch 120 may be configured to operate on data in a particular format. Incoming data received at the upstream port (e.g., in a write memory accessrequest from the host) may be received in a first packet format, but operations in the switch may cause re-packetisation to implement the data segmentation, parity generation, and transmission of data across a switch crossbar to the downstream ports 126. With reference briefly to Figure 3, which is described in more detail later, reference numeral 320 denotes write data. The write data 320 may be considered a pipeline state of the RAIM logic state machine 124, with write data 320 being packetized in accordance with the format of the switch 120.

[0066] Data manipulation and transmission across the switch and downstream memory devices are described in more detail later herein. Particularly with reference to Figures 4, 5, 8, and 9.

[0067] In the example of Figure 1, each downstream port is connected to a respective memory device 130. The downstream ports 126a-126e are respectively connected to memory devices 130a- 130e. As discussed briefly above, CXL technology inherently supports switched fabric topologies in which a CXL switch provides one or more downstream connections to one or more additional CXL device, such as the memory devices 130.

[0068] In the present disclosure, the function of the switch is enhanced by enabling memory redundancy. In the example of Figure 1, memory devices 130a-130e are respectively labelled ‘A’, ‘B’, ‘C’, ‘D’, and ‘P’. As described later herein, the memory devices 130 labelled A-D may be designated for data striping. Memory device 130e, labelled ‘P’, may be designated for redundancy purposes for data security in the event of memory errors. Redundancy and its use in embodiments of the present invention are described in more detail later herein. In general terms, the RAIM logic 124 may be configured to generate parity data (or other error correction data) at the upstream port for redundancy purposes.

[0069] The system 100 of Figure 1 represents a switched fabric network, wherein nodes in the system (e.g., the host 110 and the memory devices 130) are interconnected via a switch, e.g., switch 120. The memory devices 130 may therefore be considered fabric -attached memory. The physical links and software protocols by which nodes in the system communicate may enable low-latency memory access by the host.

[0070] CXL is an exemplary open standard interconnect technology which enables the above fabric-attached memory capability. Whilst the description herein refers to features of the CXL standard to exemplify embodiments of the invention, it will be appreciated that other interconnect and communication protocols may be used. For instance, in examples where the host is a GPU, the UAL standard may be adopted in the memory access system.

[0071] The techniques described herein may leverage data striping techniques, redundancy-based error management, and fabric attached memory devices to provide reliable and scalable memory systems that may operate in a wide range of topologies.

[0072] Before the exemplary embodiments of the invention are described in more detail, an overview of the CXL standard and a discussion of data striping and redundancy error mitigation is provided.

[0073] CXL | Brief Overview

[0074] CXL is an interconnect standard, which enables high-speed memory access and low-latency interconnection. Specification details for a first three iterations of CXL (CXL 1.0, CXL 2.0, and CXL 3.0) are known, but only CXL 1.0 features have yet been practically implemented.

[0075] By way of example, CXL attached memory devices may have a latency of between 170— 250 ns. For context, main memory attached to a PU may have a latency of, for example, 80-140 ns.

[0076] CXL 1. 0 further supports cache coherency, which is important in parallel and distributed computing applications. All processors in such a system have a consistent view of memory, and if one processor modifies a memory location, all other processors accessing the same location will observe the updated value.

[0077] CXL 1.0 introduces three CXL protocols: CXL.io, CXL. cache, and CXL.mem. Particular reference is made herein to the CXL.mem protocol, which provides a host processor with access to device-attached memory using load / store commands. For example, the CXL.mem protocol may be used to issue load / store requests to fabric attached memory over a switch. A load request is a memory read access request to load a data item from memory. A store request is a memory write access request to store a data item into memory.

[0078] Memory pooling between devices may also be enabled with CXL 1.0. That is, memory resources are consolidated in a central system, and components in the system such as hosts and accelerators etc. may request allocations in the pool, as and when needed. The available memory is therefore shared among different hosts, which improves efficiency of memory usage and improves scalability.

[0079] As discussed previously, CXL is an emerging technology, with many features being envisioned but not yet practically implemented. CXL 2.0 and 3.0 may, in future, enable configuration of systems that include accelerators and other types of device. By way of example, horizontal scaling of switches — i.e., switches linked to one or more further downstream switch — is also envisaged with CXL 3.0, enabling configuration of more complex topologies. CXL systems that provide memory sharing functionality are also envisaged with CXL 3.0, allowing a plurality of hosts to access a memory location at the same time and still see up-to-date information at that location.

[0080] Devices suitable for use in a CXL system may be categorised into one of three classes. Class1 devices include accelerators which do not have host-accessible memory. Class 2 devices include devices which have memory of their own (e.g., GPUs etc.). Class 3 devices include memory devices that are independent of the host’s main memory, and which can be attached via CXL to improve bandwidth and capacity. The host may access and manages device memory using the CXL.mem protocol. The present disclosure primarily relates to the use of Class 3 devices for use in providing a reliable fabric-attached memory system.

[0081] References herein to 'CXL devices’ may be understood as being CXL-enabled; i.e., devices that are equipped to operate under the CXL protocols. A CXL-enabled device may, for example, comprise CXL logic implemented on a port, such that communications from other devices under CXL protocols in a CXL-based system may be interpretable by the receiving device.

[0082] The above devices may already be connected in a system via PCIe protocol. However, the CXL protocols extend the capabilities of devices configured to operate under PCIe.

[0083] Figure 2 shows a highly schematic diagram of a computer system operating under the CXL protocols. Figure 2 does not represent a system configured to implement the fabric-attached memory techniques of the present disclosure, but rather shows a computer topology that is configurable under CXL 1.0. Figure 2 shows a host device 210 connected to a plurality of switch devices 220. CXL allows cascaded switching, and it will be appreciated that a single host may be connected to more than the two switches shown in Figure 2.

[0084] Each switch 220 in Figure 2 is shown to be connected to a plurality of fabric-attached devices 230, which may comprise memory devices, network interface cards, host devices, accelerators, or any other CXL-compatible device falling under classes 1-3 described above.

[0085] UAL Brief Overview

[0086] A second example of an interconnect standard that may support the memory access systems and techniques described herein is the Ultra Accelerator Link (UAL) standard. The UAL standard seeks to enable high-bandwidth interconnection between accelerators, with low latency. In example systems and methods herein where the computing device (i.e., the host or processing unit) is a GPU, the UAL standard may be leveraged. That is, when the computing device is a GPU, UAL provides a high-bandwidth interconnection and enables the present fabric attached memory techniques to be implemented.

[0087] Data striping and Redundancy

[0088] The present disclosure uses data striping for improving reliability of fabric-attached memory devices connected to processors (e.g., computing devices such as CPUs, GPUs, or DPUs) by a switching fabric. Data striping techniques involve segmentation of data and subsequent storage ofthe segments across multiple memory devices. Accessing striped data therefore includes access requests to the multiple memory devices. These access requests may be made simultaneously across the memory devices, such that the throughput of data to the requesting device scales with the number of memory devices that are accessed. That is, striped data segments on different memory devices can be accessed in parallel, providing a net throughput equal to a cumulative throughput of the memory devices. The read rate scales with the number of memory devices that are simultaneously sending their stored segment(s).

[0089] It will be appreciated, as discussed further with reference to Figure 5, that balancing of processor speed and memory throughput to achieve optimal performance with minimal buffering may be done by careful selection of a particular number of fabric-attached memory devices to participate in a data striping scheme. That is, a quantity of memory devices may be selected such that the throughput of the memory devices in the striped data system is optimised for the particular processing speed of the host. Nevertheless, the techniques described herein are primarily directed to improving reliability of fabric-attached memory systems.

[0090] Whilst data striping techniques may improve data access throughput, memory error rate also scales with the number of memory devices.

[0091] Error handling is important in memory systems. One source of memory errors is background radiation, in the form of alpha particles, interacting with the system and causing individual bit flips. However, such bit flips may also occur due to, for example, electrical interference (e.g., channel noise), and other external factors, and can lead to unreliable and unstable performance if there is no provision for mitigating the impact of such errors. Furthermore, memory errors may occur due to memory device degradation, as is explained in more detail later herein.

[0092] Error detection and correction mechanisms, such as parity checks, erasure codes, and error correction codes (ECCs) may be implemented to preserve data in the event of an error. However, different error handling techniques provide varying levels of protection against error. ECC is used in high-end systems, but further mitigation techniques such as redundancy may be required in larger systems, such as the aggregated fabric-attached memory systems described herein.

[0093] Redundancy techniques may be implemented in conjunction with data striping techniques to protect against the risk of data loss or corruption. The present inventors have recognized that data striping may be advantageously applied to fabric attached memory as described to address the technical problem of improving reliability in fabric attached memory.

[0094] Redundancy is the generation of overhead data to ensure data may be reconstructed in the event of an error.

[0095] Redundancy may advantageously be implemented in memory systems that use a striping algorithm. This is because memory systems that use a striping algorithm comprise multiple memory devices, and the likelihood of a memory error scales with the number of memory devices.

[0096] Generation of overhead data improves the ability of a system to reconstruct erroneous data, at the expense of providing additional memory devices. However, such a compromise may be acceptable when a memory system already comprises multiple devices, such as in systems described herein.

[0097] In some examples of the present disclosure, five memory devices may be logically bundled for data striping. In such an example, data may be striped across four of the memory devices, and the fifth device may represent a redundant memory device which holds parity data for error correction purposes.

[0098] Described below are examples of data striping and redundancy techniques being implemented by an upstream port of a switch in respect of fabric-attached memory devices.

[0099] Upstream RAIM Embodiments

[0100] Reference is now made to Figures 3 and 4, which demonstrate writing and reading operations in a RAIM system, which may be implemented in some embodiments of the invention.

[0101] Figure 3 shows a store operation 300 issued by a computing device, for example by a host such as a CPU, GPU, or DPU, in respect of a write data item 320. The write data 320 is split into portions A - D (respectively denoted 322-328), each portion being a segment of the write data 320. The write data 320 may represent a pipeline state of a RAIM logic state machine configured to segment a data packet received from the upstream host for storing. That is, the striping instruction may be executed in a pipeline state machine of an upstream port in a switch. The instruction may cause the logic unit, on execution, to segment the write data into the portions 322-328, and to allocate respective port identifiers to the segments based on configuration data held in registers of the upstream port. The port identifiers are used to address ports which are attached to respective memory devices where the segments of the striped data are to be stored. In practice, the allocation of port identifiers to the segments may comprise a re-packetisation of each segment of data into a format supported for transmission through the switch. The port identifiers are used by routing logic of the switch to route the segments through the switching fabric to the correct downstream ports and hence the correct fabric attached memory device. The ports (and their memory devices) may be configured as a subset of all the ports attached to the switch depending on the degree of striping that is to be utilised.

[0102] In the example of Figure 3, segments 322-238 of the write data 320 are respectivelyrouted to and stored in memory devices 130a-130d.

[0103] Figure 3 further represents a parity generation operation 332, which generates redundant data from the write data 320 and subsequent storage of the redundant data in a redundant data memory device 130e. A port identifier is allocated to the redundant data for routing by the routing logic of the switch to a port attached to the redundant memory device 130e.

[0104] By way of example, erasure coding may be implemented for subsequent reconstruction of data in which an error is detected. Those skilled in the art will understand that erasure coding involves the transforming of a bit string into a longer ‘word’ such that the original message may be reconstructed from a subset of the longer word. Erasure coding therefore involves the generation of redundant data, as the longer word comprises a data overhead compared to the original bit string.

[0105] In general, the redundant data may comprise a parity bit and one or more additional bit string configured for error correction. Error checking and subsequent reconstruction may be implemented on reading the data, as described with reference to Figure 4.

[0106] Note that memory devices 130a-e in Figure 3 correspond to memory devices 130a- e as represented in Figure 1.

[0107] Figure 4 represents a load operation in which data stored in a RAIM system is accessed to retrieve separately stored segments of the write data, checked for errors, optionally reconstructed if an error is detected, combined, and sent upstream to the requesting device.

[0108] Following from the store operation represented in Figure 3, a segmented data item is distributed across four exemplary memory devices 130a-130d, and an additional memory device 130e stores redundant data for error correction and data reconstruction in the event of a memory error. For example, erasure codes or the overhead data thereof may be stored in the redundant memory device 130e.

[0109] In response to a load operation issued, for example, by a host such as a CPU, GPU, or DPU, each memory device 130a-130d may be accessed and the data segment held in each memory device may be transmitted upstream to a combine buffer 420, which may be provided in the switch.

[0110] As described above, the data segments are re-packaged as they are transmitted over the switch during a store operation, and the repackaging may include provision of one or more parity / error bit.

[0111] When a load operation is instigated, responsive to a memory read request, a memorydevice which holds one of the data segments to be read may indicate an error to the switch. For example, the device may have failed such that the data it holds is no longer reliable. An error indicator is set against the relevant data segment.

[0112] In the example of Figure 4, data held in memory device 130d comprises an error, and the segment X 422 provided by memory device 130d to the memory buffer is corrupt.

[0113] In the example of Figure 4, wherein an error indicator is set on segment D, reconstruction logic may use data from the additional redundant data memory device 130e to reconstruct a corrected version 422 of segment D.

[0114] When correct versions of the each segment 322-326, 422, are available, the segments may be combined at a combine buffer 420 to assemble a read data item 410 corresponding to the data item 320 that was previously stored. Assembling the original, combined data item may further comprise re-packaging the data before transmission to the host, such that the data is in a packet format that the host is configured to operate on.

[0115] As discussed previously, combine logic may be implemented by a RAIM logic state machine, and the segments 322-326, and 422, and the read data item 410 may be considered pipeline states therein, having a distinct packet format compared to the data packet sent upstream to the host computing device.

[0116] Reference is now made to Figure 5, which shows a highly schematic diagram representing registers for configuring a fabric attached memory system according to embodiments of the present disclosure.

[0117] Figure 5 represents a register for holding a RAIM-enable bit 510, and a plurality of member registers 520, each comprising a port ID, wherein each port is connected to a corresponding fabric attached member device. For example, member registers 521-527 respectively corresponding to ports connected to fabric-attached members 1-4, and member register 529 corresponds to a port connected to fabric-attached member ‘P’.

[0118] Members 1-4 may represent respective fabric -attached memory devices, such as devices 130a-130d as shown in Figure 1. Member P may represent an additional redundancy memory device, such as device 130e of Figure 1.

[0119] The RAIM enable register 510 comprises a single bit to indicated whether or not RAIM logic is to be implemented. Only a single bit is required to indicate this binary state. The RAIM enable register 510 may be a configuration register, configured at boot and not updated during runtime.

[0120] The size, in bits, of a member register 520 must offer at least as many states as there are downstream connections on the switch. That is, if a switch comprises 8 downstream ports — for connecting to 8 respective downstream devices — each register (of which there must be 8, one for each downstream device), must comprise at least 3 bits, because 23= 8. This allows a unique identifier to be provided in each register, for each of the 8 downstream devices. This can be seen in Figure 5, wherein the member registers comprise three bits.

[0121] In some examples, other devices than the member devices 1-4 and P may be connected downstream of the switch. In such an example, additional member registers 520 may be provided in the upstream port to accommodate the additional devices. Again, as the number of downstream connections increases, so too does the minimum size of the member registers, as each register needs to hold a value that can uniquely identify a port connected to a downstream device.

[0122] Figure 5 represents a memory system comprising four memory devices across which a data item is striped, and a single additional memory device to which redundancy data is stored. Such a system may be referred to as a ‘4+1’ system.

[0123] It will be appreciated by those skilled in the art that the registers represented in Figure 5 may be altered to accommodate more, or fewer, fabric attached memory devices, with varying numbers of redundant memory devices. For example, a 3+1, 4+2, or 5+1 system may be configurable.

[0124] Reference is now made to Figure 6, which shows a highly schematic hardware diagram of the write process represented in Figure 3.

[0125] Figure 6 shows a write request 610 comprising a payload, the request 610 issued from the upstream port 121. The request 610 may be loaded into a request payload buffer 620, which may comprise segmentation of the payload by, for example, RAIM logic 124 implemented by a state machine. For clarity, the RAIM logic 124 is not shown in Figure 6.

[0126] Figure 6 shows data segments 322-328 loaded into the payload buffer 620. Each segment 322-328 may be repackaged by the RAIM logic 124 such that the segments are packetized in a format suitable for transmission across a switch crossbar 660. Each segment 322-328 may be considered a pipeline state.

[0127] The RAIM logic may further operate on the payload to generate parity 332, constructing a redundancy data packet 630 for storage in a redundant memory device (e.g., device 130e of Figure 1).

[0128] Each segment 322-328 of the payload buffer 620, and a buffer or other structure comprising the redundant data packet 630, comprises a connection to a respective input of a writemultiplexor (MUX) 640. The write MUX 640 is configured to output a single write data packet 650 along an output bus of the write MUX, the write data packet 650 being a data packed provided at one of the respective inputs to the write MUX; i.e., one of the segments 322-328 or the redundant data packet 630.

[0129] The write MUX 640 forwards a data packed provided to a particular one of the input lines, the particular input line selected based on a write sequence instruction 670 that acts as a selector signal to the write MUX 640. The sequencing instruction 670 may be issued by sequencing logic of the upstream port 121, such as by the RAIM logic 124.

[0130] The write packet 650 is transmitted across the switch crossbar 660 to a downstream port, and then to a connected downstream memory device.

[0131] The sequencing instructions 670 may iteratively change the selector signal, causing the write MUX to forward a different input segment along the output bus across the switch crossbar to the correct downstream port. That is, each of the segments 322-328 and 630 may sequentially by forwarded by the write MUX 640 to the correct downstream port via the switch crossbar. It will be understood that the exact sequence order in which segments are forwarded is trivial.

[0132] Reference is now made to Figure 7, which shows a highly schematic hardware diagram of the read process represented in Figure 4.

[0133] Figure 7 shows the upstream port 121 issuing load sequence instructions 710 to the switch crossbar 660 to iteratively access data segments and redundancy data striped across the member memory modules. The load instructions may be received at the upstream port as a single read request, and split on the upstream port into separate requests, for accessing the different memory devices across which the data to be read is striped. Address manipulation is conducted by a sequencer on the upstream port.

[0134] Based on the load sequencing instructions 710, a response data packet comprising a segment of the overall data item is transmitted across the switch crossbar 660 along an output line connected to a combine buffer 740 and a redundancy buffer or other structure 742 for holding a redundancy data packet. The response data retrieved from the crossbar 660 may be transmitted to all locations on both buffers 740, 742. However, write enable signals (controlled by member registers e.g., 520) ensure that only one corresponding location in the buffer 740, 742 is set, and therefore the read data is only loaded into the correct memory location.

[0135] The sequence instructions 710 may cause sequential accesses to be implemented at the downstream memory devices, until all of the segments and the redundancy data is loaded into the combine buffer 740 and redundancy buffer 742.

[0136] Error detection may be performed at the memory device, such that each packet output across the crossbar 660 is identified as comprising or not comprising an error. Reconstruction logic 750, controlled by error correction sequencing instructions 760 issued from the upstream port, may iteratively reconstruct data segments that are identified as comprising an error. In practice, the logic may generate multiple commands.

[0137] Corrected segments, and / or segments that did not comprise an error, may be forwarded from the combine buffer to a corrected data buffer 780 via a correction MUX array 770. That is, for each portion of the combine buffer 740, corresponding to a respective data segment accessed over the crossbar 660, a correction MUX may be provided.

[0138] Each correction MUX in the array 770 may comprise two input lines. A first input line may extend from a location in the combine buffer 740, and a second input line may extend from a memory location associated with the reconstruct logic 750, at which a corrected segment is compiled. The error correction sequencing instructions 760 may be configured to provide a selector signal to each MUX of the correction MUX array 770, selecting whether the data to be forwarded to the corrected data buffer 780 is to be provided by the first input line from the combine buffer location, or the second input line providing a reconstructed segment.

[0139] That is, the correction MUX array 770 may be provided such that segment data packets comprising no error may be forwarded direct from the combine buffer 740, as accessed across the crossbar 660. However, segment data packets that are loaded into the combine buffer with an error are not provided to the corrected data buffer 780 via the combine buffer input line. Instead, an input line providing a reconstructed, i.e., corrected, segment may instead by forwarded by the corresponding correction MUX into the corrected data buffer.

[0140] A data item 790 for forwarding to the upstream port 121 may be constructed based on the data in the corrected data buffer, using combine logic implemented by the RAIM logic state machine. That is, a re-packaging of the data may be implemented to configure the read data for transmission upstream to the host.

[0141] Reference is now made to Figures 8 and 9, which show implementation options which may be configured to operate in accordance with aspects of the present disclosure.

[0142] Figure 8 shows a computer architecture for implementing the above-described fabric-attached memory techniques, in which a horizontal scaling for switches is implemented. That is, in Figure 8 a host is connected to a first switch 220a, and the first switch 220a is connected downstream to a second switch 220b. The first switch 220a is connected downstream to three memory devices 230, denoted A, B, and C. The second switch 220b is connected downstream to two memory devices 230, denoted D and P. The downstream memory devices are coupled via crossbarlinks 128 through the switches 220a, 220b.

[0143] In a topology such as that of Figure 8, an upstream port of the first switch 220a may be configured to implement the reliable fabric-attached memory techniques described herein. The horizontal link 810 between switches may act as part of a switch crossbar, and the second switch 220b may not be responsible for implementing RAIM techniques, for example. The second switch may merely forward requests issued by the upstream port on the first switch 220a.

[0144] Figure 9 shows a larger topology that may be implemented using CXL 3.0 functionalities. Figure 9 shows a plurality of host devices 210, each device connected to a switch 220, the switch having a plurality of downstream ports connected to a respective plurality of downstream devices 230 (e.g., memory devices).

[0145] Each distinct host-switch-device domain in the system of Figure 9 may be referred to as a sub-system.

[0146] Each switch 220 in each subsystem is horizontally connected to each of the other switches 220 in the other subsystems, as is enabled by CXL 3.0. In the example of Figure 9, in which there is a plurality of hosts 210, memory pooling techniques enabled by CXL 2.0 may also be used to allocated different memory locations in different subsystems to different hosts. That is, topological flexibility and horizontal scaling between subsystems such as those of Figure 9 may enable the above techniques to be implemented in a larger computer architecture, further making use of the memory pooling capabilities enabled by CXL 2.0.

[0147] As mentioned previously herein, device degradation may cause memory failure. Device degradation may cause such errors at a rate that is higher than is caused by other external factors such as alpha radiation. In some examples, data packets read from a degraded or faulty memory device may comprise errors unacceptably regularly. Such a memory device may even cause read errors in response to every read request. The present system may be suitably configured to enable so-called ‘hot swapping’ of memory devices in a RAIM system.

[0148] Hot-swapping in the present context refers to removal and replacement of a downstream memory device without shutting down or re-booting the system. When it is determined that a downstream memory device needs to be replaced, due to an unacceptable error rate, the following process may be implemented. Note that an unacceptable error rate may be determined using a threshold value as described later. The degraded memory device is unplugged from the system. A replacement memory device is plugged in and prepared as described with reference to Figure 10. In order for a replacement memory device to be effective the data in the replacement memory device needs to be rewritten. The data can be prepared according to one example using the same reconstruct logic which was used to generate corrected data as described above. A reconstructsequencer 1000 may access all the memory devices in the group to perform a read of the data. The reconstruct sequencer may access these memory devices via the switch crossbar 660 in the example shown in Figure 10. It will be appreciated that the reconstruct sequencer may be located in other places within the system and may access the memory devices in a different way. When the reconstruct sequencer is used to access the memory devices via the switch crossbar 660, as in the example of Figure 10, a multiplexor 1012 may be inserted to allow selective access to the switch crossbar 660 of either the load sequence instruction 710 from the upstream port (as in Figure 7) or the read request from the reconstruct sequencer 1000 as shown in Figure 10. The multiplexor may be controlled by a control signal 1010 from the reconstruct sequencer itself. The reconstruct control signal 1010 can be set to allow the reconstruct sequencer to have access to the memory devices via the switch crossbar via the multiplexor 1012 when the reconstruct sequencing process is implemented. This could be done as a single process to regenerate the data in the replacement memory device, or it could be set in idle cycles of the switch. In the second case, switch operation can continue, and the reconstruct control signal 1010 may be set in unused cycles of operation.

[0149] Data is read from all of the memory devices, including the new memory device which has been plugged in. Note that it is necessary to set the error bit on the new memory device to indicate that this is the device for which regenerated data is to be provided. This may be done by the reconstruct sequencer or by some other logic in the switch which is implemented during the reconstruction process. With this error bit set, data from the other memory devices (which are assumed to be non-faulty) are supplied to the reconstruct logic 750 and the reconstructed data is supplied to the switch crossbar as shown by arrow 1014 to be written back into the new memory device.

[0150] It will be understood that the read from the new memory device in the above implementation is not needed. The data which is read from that memory device is not useful. In an alternative implementation, the reconstruct sequencer could issue only four read requests, directed to the non-faulty memory devices. That is, it would read only the memory devices from which data was needed to regenerate the data to be written back to the new memory device. In that circumstance, the combined buffer needs to be advised that there is no requirement to wait for a read request to be fulfilled from the new memory device. This could be done by setting an appropriate flag or using the error bit or in any other appropriate way.

[0151] The reconstruct sequencer may use known data scrubbing techniques to work through the addresses in the replacement memory device. The replacement / regeneration process may be transparent to the host, with the read-generate-write process being implemented without host intervention.

[0152] In practice, the system described herein may provide one or more counter registerconfigured to provide an error counter for each downstream memory device. Each time a read request to a particular downstream memory device returns a data packed in which an error is identified, a value held in a corresponding counter register for the downstream memory device may be incremented.

[0153] When a threshold value is reached in an error counter register, or incrementation occurs at an unacceptable rate, a notification may be sent upstream that notifies the RAIM logic that a memory unit is in need for replacement. The system may be configured to notify a user of the system that such a replacement is required, and may be configured to implement the hot-swap process when the user removes and replaces the faulty memory device.

[0154] In another example, the memory device 230 itself may have error flagging logic. Figure 10 illustrates a memory device 230 with error flagging logic 231. The error flagging logic indicates when it is known that there is a device failure for that memory device 230. In that case, an error flag 232 may be supplied to a controller of the system to indicate that a ’hot swap’ process as described above should be initiated. Furthermore, the memory device may predict a failure ahead of time. That is, memory devices may provide a proactive indication that replacement is required.

[0155] As described above, the hot swap process involves the reconstruction or regeneration of the data in the replacement memory device using the existing reconstruct logic of the system. It will be appreciated, however, that the data could be regenerated in other ways, using the data from the associated memory devices in the group. This could be carried out offline and separate to the RAIM system until the replacement memory device is ready to be plugged in.

[0156] It is noted that while there is a failed memory device plugged in, there is no redundancy ability in the system, but the assumption is made that the remaining memory devices in the system will function without errors until an adequate replacement is made.

[0157] Management Software

[0158] RAIM setup in the present examples may be a responsibility of fabric management software. The management software may be implemented anywhere in a system (e.g., anywhere in the system of Figure 1). In examples, however, it will be understood that the computing device (e.g., CPU, GPU, or DPU) may not comprise the management software. The management software may be located elsewhere in the system, connected within the system via the fabric switch. The management software implements high level services such as resource management and allocation, inventory management, and other services such as messaging, security, and logs.

[0159] The management software may be implemented as software, e.g., on a computing unit somewhere in the system. The management software may have a global view of the memoryaccess system, enabling it to configure RAIM. The activity of the management software may be transparent to nodes (e.g., the computing device / host and the fabric-attached memory devices) in the system.

[0160] Fabric management software may also be configured to reconfigure a RAIM system by de-allocation and subsequent re-allocation of memory addresses. For example, de-allocation and re-allocation of downstream fabric attached memory resources may be a responsibility of the fabric management software. That is, the management software may perform dynamic resource allocation. Dynamic resource allocation may be performed based on system needs indicated by orchestration tools of the system (e.g., higher level software tools of the system). A first set of memory addresses forming part of a first RAIM allocation may be de-allocated to a general memory pool. A second set of memory addresses in the general memory pool may be subsequently re-allocated by the fabric management software into a second RAIM allocation.

Claims

Claims1. A memory access system comprising: a fabric switch connectable between a first computing device which is configured to generate memory access requests and a plurality of downstream fabric-attached memory devices which are configured to respond to memory access requests, the fabric switch comprising: an upstream port connectable to the first computing device; a plurality of downstream ports, each of which is connectable to a respective downstream fabric-attached memory device; and routing logic configured to route data of each memory access request received at the upstream port to the plurality of downstream ports based on respective port identifiers, the memory access system comprising computer logic configured to segment a data item of a memory access request received at the upstream port into a plurality of segments, wherein the computer logic is configured to allocate each of the segments of the plurality of segments to a downstream port and to assign a corresponding port identifier to each segment for use by the routing logic.

2. The memory access system of claim 1, wherein the computer logic is further configured to generate from the data item a redundant data segment and wherein the routing logic is configured to allocate to the redundant data segment a port identifier for a downstream port connected to a redundant fabric -attached memory device.

3. The memory access system of claim 2, which comprises access logic of the computer logic configured, in response to a read memory access request issued by the computing device, to access the plurality of segments from the plurality of downstream fabric-attached memory devices and to reassemble the data item.

4. The memory access system of claim 2, wherein the routing logic comprises sequencing instructions configured to iteratively route each of the plurality of segments over a crossbar of the fabric switch to respective ones of the downstream ports based on the port identifier.

5. The memory access system of claim 4, further comprising a write multiplexor configured to iteratively route each of the plurality of segments over the crossbar, wherein the write multiplexor comprises a plurality of input lines including a respective input line for each segment and the redundant data segment, and further comprising a control line configured to iteratively select an input line from which to forward data over the crossbar based on the sequencing instructions.

6. The memory access system of any preceding claim, wherein the fabric switch comprises a plurality of registers, the plurality of registers including a respective member register configured to store port identifiers corresponding to each of the plurality of downstream ports.

7. The memory access system of claim 6, wherein the plurality of registers further includes a segmentation-enable register configured to indicate whether to execute the computer logic.

8. The memory access system of claim 3, wherein the computer logic is further configured to, based on detection of an error in a segment accessed from a downstream fabric-attached memory device: load each of the plurality of segments into a first buffer of the upstream port; using at least the redundant data segment and one or more segments in which no error is detected, reconstruct a corrected segment corresponding to the segment in which an error is detected; for each segment in which no error is detected, forward the segment in the first buffer to a second buffer of the upstream port; and for the segment in which an error is detected, forward the corrected segment to the second buffer, wherein the computer logic is configured to reassemble the data item by applying reconstruction logic to the segments in the second buffer.

9. The memory access system of claim 8, wherein the fabric switch comprises a plurality of correction multiplexors, each correction multiplexor comprising a first input line from the first buffer and a second input line for receiving a corrected segment, and wherein the computer logic is configured to forward segments to the second buffer based on a control signal provided to each multiplexor by sequencing logic of the upstream port, the control signal indicating an input line from which data is to be forwarded to the second buffer.

10. The memory access system of any preceding claim, wherein the fabric switch is a first fabric switch, and a first downstream port of the first fabric switch is connectable to a fabric-attached memory device via a second fabric switch, wherein the first downstream port of the first fabric switch is connectable to a second port of the second fabric switch, and wherein the second fabric switch is configured to forward memory access requests received at the upstream port of the first fabric switch to a third port of the second fabric switch, the third port connectable to a fabric-attached memory device configured to respond to the memory accessrequests.

11. The memory access system of claim 2, wherein the redundant data segment comprises one or more of error correction codes, syndrome codes and erasure codes.

12. The memory access system of any preceding claim, wherein the system operates in accordance with a Compute Express Link interconnect protocol.

13. The memory access system of any preceding claim, wherein the fabric switch is connectable to the downstream fabric-attached memory devices such that, on receipt of an indication that access requests from a first downstream fabric-attached memory device result in an error with a frequency exceeding an acceptable error frequency threshold, the first downstream fabric-attached memory device is removable and replaceable with a second downstream fabric-attached memory device while the system remains in operation.

14. The memory access system of any preceding claim, wherein the computing device comprises a CPU, GPU, or DPU.

15. The memory access system of claim 14, wherein the computing device comprises a GPU, and wherein the system operates in accordance with an Ultra Accelerator Link interconnect protocol.

16. The memory access system of any preceding claim, wherein the system comprises management software, the management software configured to implement RAIM setup, wherein implementing RAIM setup comprises the management and allocation of memory of the memory access system for use in serving memory access requests.

17. The memory access system of any of claims 1-9, wherein the fabric switch comprises an on-chip fabric switch, wherein the upstream port is connectable via an on-chip connection to the first computing device, and wherein the memory access system operates in accordance with an AMBA protocol.

18. A method comprising : receiving a memory access request at an upstream port of a fabric switch, the fabric switch connectable between a first computing device configured to generate the memory access request and a plurality of downstream fabric-attached memory devices configured to respond to the memory access request; segmenting, by computer logic, a data item of the memory access request received at the upstream port into a plurality of segments; allocating each of the segments of the plurality of segments to a downstream port by assigning a corresponding port identifier to each segment; androuting, by the upstream port of the fabric switch, each segment to a respective one of the plurality of downstream ports based on the allocated port identifier, each downstream port connectable to a respective downstream fabric-attached memory device.

19. The method of claim 18, further comprising generating, by the computer logic, a redundant data segment from the data item, and allocating to the redundant data segment a port identifier for a downstream port connected to a redundant fabric-attached memory device.

20. The method of claim 19, further comprising, in response to a read memory access request issued by the computing device, accessing the plurality of segments from the plurality of downstream fabric-attached memory devices and reassembling the data item.

21. The method of claim 19, further comprising iteratively routing, by sequencing logic of the upstream port, each of the plurality of segments over a crossbar of the fabric switch to respective ones of the downstream ports based on the port identifier.

22. The method of claim 21, further comprising iteratively routing, by a write multiplexor, each of the plurality of segments over the crossbar, wherein the write multiplexor comprises a plurality of input lines including a respective input line for each segment and the redundant data segment, and further comprises a control line configured to iteratively select an input line from which to forward data over the crossbar based on the sequencing instructions.

23. The method of any of claims 18-22, further comprising storing port identifiers corresponding to each of the plurality of downstream ports in a plurality of registers, the plurality of registers including a respective member register for each of the downstream ports.

24. The method of claim 23, further comprising storing, in a segmentation-enable register, an indication of whether to execute the computer logic.

25. The method of claim 20, further comprising, based on detection of an error in a segment accessed from a downstream fabric-attached memory device: loading each of the plurality of segments into a first buffer of the upstream port; using at least the redundant data segment and one or more segments in which an error is not detected, reconstruct a corrected segment corresponding to the segment in which an error is detected that does not comprise an error with respect to a corresponding segment allocated to the downstream port; for each segment in which no error is detected, forwarding the segment in the first buffer to a second buffer of the upstream port; for the segment in which an error is detected, forwarding the corrected segment to the secondbuffer; and reassembling the data item by applying reconstruction logic to the segments in the second buffer.

26. The method of claim 25, further comprising: forwarding the segments to the second buffer based on a control signal provided to each of a plurality of correction multiplexors by sequencing logic of the upstream port, the control signal indicating an input line from which data is to be forwarded to the second buffer, each correction multiplexor comprising a first input line from the first buffer and a second input line for receiving a corrected segment.

27. The method of claim 19, wherein generating the redundant data segment comprises generating one or more of error correction codes, syndrome codes and erasure codes.

28. The method of any of claims 18-27, further comprising the use of a Compute Express Link interconnect protocol.

29. The method of any of claims 18-27, further comprising the use of an Ultra Accelerator Link interconnect protocol.

30. The method of claim 18, wherein the fabric switch comprises an on-chip fabric switch, wherein the upstream port is connectable via an on-chip connection to the first computing device, and wherein the method comprises the use of an AMBA protocol31. A transitory or non-transitory computer readable media comprising instructions which, when executed by a processor of a computing device, cause the processor to implement a method according to any of claims 18-30.

Citation Information

Patent Citations

  • Techniques for an efficient fabric attached memory

    US20220043759A1

  • Composable infrastructure enabled by heterogeneous architecture, delivered by CXL based cached switch soc

    US20230017583A1

  • Global addressing for switch fabric

    US20230112007A1

Cited By

  • CXL host controller, data transmission method and computer

    CN120780639A

  • A CXL host controller, data transmission method and computer

    CN120780639B