# Memory Bandwidth

## 1. Overview and Definitions

Memory bandwidth defines the maximum rate at which data can be transferred between the processor's memory subsystem and the main memory (DRAM). It is a critical performance metric for many-core processors, often serving as the primary bottleneck for data-intensive workloads. 

Bandwidth is categorized into three distinct metrics:
1. **Theoretical Peak Bandwidth**: The absolute maximum data rate dictated by the physical interface (e.g., memory bus width $\times$ clock rate $\times$ transfers per clock).
2. **Sustained Bandwidth**: The maximum achievable data rate under continuous, ideal streaming workloads, accounting for protocol overhead and DRAM timing constraints (e.g., row activation, precharge).
3. **Effective Bandwidth**: The actual data rate observed during mixed, real-world workloads, degraded by cache misses, memory-level parallelism (MLP) limitations, and coherence traffic.

## 2. RISC-V Architectural Context

The RISC-V Instruction Set Architecture (ISA) does not strictly mandate a specific memory bandwidth, but several standard extensions and privileged architecture features directly influence memory access patterns and bandwidth requirements:

* **Vector Extension (RVV)**: The `V` extension enables wide SIMD operations. While it improves compute-to-memory ratios for strided accesses, it significantly increases burst bandwidth demands for unit-stride loads and stores.
* **Cache Management Extensions (Zicbom, Zicbop, Zicboz)**: These extensions allow software to explicitly manage cache blocks. Explicit cache clean/invalidation operations generate additional write-back traffic to main memory, impacting effective bandwidth.
* **Privileged Architecture and Virtual Memory**: The RISC-V Privileged Specification defines virtual memory schemes (Sv39, Sv48, Sv57). Deep page table hierarchies (e.g., Sv57 requires 5 levels) increase the bandwidth consumed by page table walks during TLB misses.
* **Physical Memory Protection (PMP)**: PMP checks occur on memory accesses. While primarily a security feature, complex PMP configurations can introduce pipeline stalls that indirectly affect the rate at which memory requests are issued.

## 3. The 128-Core Scalability Challenge

Scaling to 128 cores exacerbates the "memory wall." The aggregate memory demand of 128 cores can easily exceed the physical limits of standard memory interfaces.

### Quantitative Analysis of Bandwidth Demand
Assume the XH-1 operates at a core frequency of 2.0 GHz. 
* If each core experiences one Last-Level Cache (LLC) miss every 50 cycles, the aggregate miss rate is $128 \times (1/50) = 2.56$ misses per cycle.
* Assuming a 64-byte cache line, the required memory bandwidth is:
  $2.56 \text{ misses/cycle} \times 64 \text{ bytes/miss} \times 2.0 \text{ GHz} = 327.68 \text{ GB/s}$.

If the workload is highly memory-intensive (e.g., 1 miss every 10 cycles), the demand spikes to $1,638 \text{ GB/s}$ ($1.6 \text{ TB/s}$), which far exceeds the capacity of standard DDR5 interfaces and necessitates High Bandwidth Memory (HBM) or massive multi-channel DDR configurations.

### Scalability Problems
1. **Pin Bandwidth Limits**: Standard package pin counts limit the number of DDR channels. A 128-core chip requires immense I/O bandwidth, pushing the limits of standard organic substrates.
2. **DRAM Row Buffer Thrashing**: With 128 cores issuing requests to disparate memory addresses, the probability of row buffer conflicts increases, degrading sustained bandwidth toward theoretical minimums.
3. **Interconnect Congestion**: The Network-on-Chip (NoC) must route requests from 128 cores to the memory controllers without saturating internal router buffers.

## 4. Implementation Approaches and Alternatives

To satisfy the bandwidth requirements of 128 cores, the physical memory interface must be carefully selected.

### Approach A: Multi-Channel DDR5/LPDDR5X [PROPOSAL]
* **Description**: Implement 8 to 16 independent DDR5 or LPDDR5X channels, each managed by a distributed Memory Controller (MC).
* **Bandwidth**: A single DDR5-4800 channel provides $\sim 38.4 \text{ GB/s}$. 8 channels yield $\sim 307 \text{ GB/s}$; 16 channels yield $\sim 614 \text{ GB/s}$.
* **Advantages**: Lower cost per gigabyte, mature ecosystem, high capacity scalability.
* **Disadvantages**: High pin count requirement, higher latency compared to HBM, larger physical footprint on the package.

### Approach B: High Bandwidth Memory (HBM3) [PROPOSAL]
* **Description**: Integrate 2 to 4 stacks of HBM3 via silicon interposer.
* **Bandwidth**: A single HBM3 stack (1024-bit interface) provides $\sim 819 \text{ GB/s}$ (at 6.4 Gbps). Two stacks yield $\sim 1.6 \text{ TB/s}$.
* **Advantages**: Massive bandwidth density, lower energy per bit, minimal package pin count.
* **Disadvantages**: Extremely high cost, limited capacity per stack, requires advanced 2.5D/3D packaging, higher thermal density.

### Rejected Alternative: Shared Memory Bus
A shared bus architecture is entirely unsuitable for 128 cores due to severe arbitration latency and bandwidth serialization. It is rejected for the XH-1.

## 5. Subsystem Interactions

Memory bandwidth does not exist in isolation; it deeply interacts with all major subsystems of the XH-1.

### Pipeline
Memory bandwidth limitations manifest as pipeline stalls. If the memory system cannot supply data at the rate the out-of-order execution engine consumes it, the Reorder Buffer (ROB) will fill, halting instruction fetch and decode. The size of the ROB and the number of Load/Store units must be balanced against the expected memory bandwidth to prevent over-provisioning the frontend.

### Cache Hierarchy
The LLC acts as the primary filter for main memory bandwidth. 
* **Capacity vs. Bandwidth**: A larger LLC reduces main memory bandwidth demand but increases hit latency. 
* **Slice Distribution**: To prevent memory controller bottlenecks, the LLC must be sliced and distributed across the 128 cores, ensuring that memory requests are load-balanced across all available Memory Controllers.

### Memory System (DRAM)
The Memory Controllers must implement advanced DRAM scheduling algorithms (e.g., FR-FCFS - First Ready First Come First Serve) to maximize row buffer hits. For 128 cores, open-page policies may cause severe thrashing; a closed-page or hybrid policy is generally required to maintain predictable latency and sustained bandwidth.

### Interconnect
The NoC bandwidth must strictly exceed the aggregate memory controller bandwidth to prevent the interconnect from becoming the bottleneck. If the memory subsystem can accept 1 TB/s, the NoC must be provisioned for at least 1.2 TB/s to account for coherence traffic and routing overhead.

### Coherence
Directory-based cache coherence generates traffic that consumes memory bandwidth indirectly. While coherence messages primarily traverse the NoC, dirty cache line evictions, cache flushes (e.g., during context switches or DMA operations), and directory evictions spill into main memory. The coherence protocol must minimize unnecessary write-backs to preserve main memory bandwidth for actual capacity misses.

### Interrupts and Operating System
* **Interrupts**: High-frequency I/O interrupts trigger DMA operations. The DMA engines consume memory bandwidth to transfer data. If not throttled, DMA can starve the 128 cores of memory bandwidth.
* **Operating System**: OS activities such as page fault handling, zeroing pages (via `zicboz` or software loops), and TLB shootdowns generate significant memory traffic. The OS must be aware of the memory bandwidth topology (NUMA awareness) to allocate pages locally to the memory controllers serving the faulting core.

### Verification
Verifying memory bandwidth requires rigorous stress testing. Formal verification is necessary for the Memory Controller state machines and NoC routing protocols to ensure deadlock freedom under maximum bandwidth saturation. Simulation must include "bandwidth torture tests" where all 128 cores issue continuous, conflicting memory requests to validate arbitration fairness and QoS (Quality of Service) mechanisms.

### Performance
The Roofline model [1] is essential for analyzing XH-1 performance. By plotting the achievable memory bandwidth (y-axis) against computational intensity (x-axis), architects can identify whether a workload is compute-bound or memory-bound. For a 128-core processor, the "ridge point" (where compute performance equals memory bandwidth performance) will be shifted significantly to the right compared to single-core designs, meaning many workloads will be memory-bound.

## 6. Advantages and Disadvantages of Proposed Approaches

| Feature | Multi-Channel DDR5 [PROPOSAL] | HBM3 [PROPOSAL] |
| :--- | :--- | :--- |
| **Peak Bandwidth** | Moderate (300 - 600 GB/s) | Very High (1.6 - 3.2 TB/s) |
| **Cost** | Low to Moderate | Very High |
| **Packaging** | Standard organic substrate | 2.5D Silicon Interposer required |
| **Capacity** | High (Terabytes) | Low to Moderate (Tens of Gigabytes) |
| **Power Efficiency** | Moderate (pJ/bit) | High (lower pJ/bit) |
| **Scalability** | Limited by package pins | Limited by interposer area/thermal |

## 7. Unresolved Design Questions

1. **Target Memory Technology**: Has the XH-1 project secured a packaging partner for 2.5D interposer integration (required for HBM), or is the design constrained to standard organic packaging (mandating DDR5)?
2. **NUMA Topology**: With distributed memory controllers, the XH-1 will inherently exhibit Non-Uniform Memory Access (NUMA) characteristics. What is the proposed hardware support for NUMA (e.g., hardware affinity hints, remote memory access latency hiding)?
3. **Memory Compression**: Should the Memory Controllers implement transparent hardware memory compression (e.g., using a lightweight dictionary or run-length encoding) to artificially inflate effective bandwidth? This adds area and verification complexity.
4. **QoS and Bandwidth Partitioning**: How will the memory controllers enforce Quality of Service to prevent a subset of cores (or DMA engines) from monopolizing the memory bandwidth?

## 8. Recommendations

Based on established industry practices for many-core processors and the quantitative analysis of 128-core bandwidth demands:

1. **Distributed Memory Controllers**: It is strongly recommended to distribute Memory Controllers evenly across the die floorplan, rather than centralizing them. This minimizes NoC hop counts and balances interconnect congestion.
2. **Hardware Bandwidth Throttling**: Implement hardware-level bandwidth allocation and throttling at the Memory Controller level. This is a proven technique to ensure fairness and prevent DMA or specific core clusters from starving the rest of the 128-core complex.
3. **Roofline-Driven Sizing**: Use the Roofline model early in the design phase to size the LLC and memory interface. If target workloads are strictly memory-bound, investing silicon area into deeper out-of-order execution windows will yield diminishing returns compared to investing in memory bandwidth.

***

**References**

[1] S. Williams, A. Waterman, and D. Patterson, "Roofline: An Insightful Visual Performance Model for Multicore Architectures," in *Communications of the ACM*, vol. 52, no. 4, pp. 65-76, 2009.

[2] RISC-V International, "The RISC-V Instruction Set Manual, Volume I: Unprivileged ISA," Document Version 20211203, Dec. 2021.

[3] RISC-V International, "The RISC-V Instruction Set Manual, Volume II: Privileged Architecture," Document Version 20211203, Dec. 2021.

[4] JEDEC Solid State Technology Association, "JESD238: High Bandwidth Memory (HBM3) Standard," 2022.
